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

; 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"

@c__1 = external hidden global i64, align 8
@.str = external hidden unnamed_addr constant [5 x i8], align 1
@c__4 = external hidden global i64, align 8
@.str.1 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@c_false = external hidden global i64, align 8
@c_n1 = external hidden global i64, align 8
@c__2 = external hidden global i64, align 8
@c__3 = external hidden global i64, align 8
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1

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

85:                                               ; preds = %11
  %86 = load ptr, ptr %20, align 8, !tbaa !5
  %87 = load i64, ptr %86, align 8, !tbaa !9
  %88 = icmp eq i64 %87, 0
  br i1 %88, label %93, label %89

89:                                               ; preds = %85
  %90 = load ptr, ptr %21, align 8, !tbaa !5
  %91 = load i64, ptr %90, align 8, !tbaa !9
  %92 = icmp eq i64 %91, 0
  br i1 %92, label %93, label %94

93:                                               ; preds = %89, %85, %11
  store i32 0, ptr %12, align 4
  store i32 1, ptr %62, align 4
  br label %1122

94:                                               ; preds = %89
  %95 = load ptr, ptr %19, align 8, !tbaa !5
  %96 = load i64, ptr %95, align 8, !tbaa !9
  %97 = load ptr, ptr %20, align 8, !tbaa !5
  %98 = load i64, ptr %97, align 8, !tbaa !9
  %99 = add nsw i64 %96, %98
  %100 = load ptr, ptr %14, align 8, !tbaa !5
  %101 = load i64, ptr %100, align 8, !tbaa !9
  %102 = icmp sgt i64 %99, %101
  br i1 %102, label %103, label %104

103:                                              ; preds = %94
  store i32 0, ptr %12, align 4
  store i32 1, ptr %62, align 4
  br label %1122

104:                                              ; preds = %94
  %105 = load ptr, ptr %19, align 8, !tbaa !5
  %106 = load i64, ptr %105, align 8, !tbaa !9
  %107 = add nsw i64 %106, 1
  store i64 %107, ptr %36, align 8, !tbaa !9
  %108 = load ptr, ptr %19, align 8, !tbaa !5
  %109 = load i64, ptr %108, align 8, !tbaa !9
  %110 = add nsw i64 %109, 2
  store i64 %110, ptr %37, align 8, !tbaa !9
  %111 = load ptr, ptr %19, align 8, !tbaa !5
  %112 = load i64, ptr %111, align 8, !tbaa !9
  %113 = add nsw i64 %112, 3
  store i64 %113, ptr %38, align 8, !tbaa !9
  %114 = load ptr, ptr %20, align 8, !tbaa !5
  %115 = load i64, ptr %114, align 8, !tbaa !9
  %116 = icmp eq i64 %115, 1
  br i1 %116, label %117, label %237

117:                                              ; preds = %104
  %118 = load ptr, ptr %21, align 8, !tbaa !5
  %119 = load i64, ptr %118, align 8, !tbaa !9
  %120 = icmp eq i64 %119, 1
  br i1 %120, label %121, label %237

121:                                              ; preds = %117
  %122 = load ptr, ptr %15, align 8, !tbaa !5
  %123 = load ptr, ptr %19, align 8, !tbaa !5
  %124 = load i64, ptr %123, align 8, !tbaa !9
  %125 = load ptr, ptr %19, align 8, !tbaa !5
  %126 = load i64, ptr %125, align 8, !tbaa !9
  %127 = load i64, ptr %26, align 8, !tbaa !9
  %128 = mul nsw i64 %126, %127
  %129 = add nsw i64 %124, %128
  %130 = getelementptr inbounds double, ptr %122, i64 %129
  %131 = load double, ptr %130, align 8, !tbaa !11
  store double %131, ptr %43, align 8, !tbaa !11
  %132 = load ptr, ptr %15, align 8, !tbaa !5
  %133 = load i64, ptr %36, align 8, !tbaa !9
  %134 = load i64, ptr %36, align 8, !tbaa !9
  %135 = load i64, ptr %26, align 8, !tbaa !9
  %136 = mul nsw i64 %134, %135
  %137 = add nsw i64 %133, %136
  %138 = getelementptr inbounds double, ptr %132, i64 %137
  %139 = load double, ptr %138, align 8, !tbaa !11
  store double %139, ptr %44, align 8, !tbaa !11
  %140 = load double, ptr %44, align 8, !tbaa !11
  %141 = load double, ptr %43, align 8, !tbaa !11
  %142 = fsub double %140, %141
  store double %142, ptr %29, align 8, !tbaa !11
  %143 = load ptr, ptr %15, align 8, !tbaa !5
  %144 = load ptr, ptr %19, align 8, !tbaa !5
  %145 = load i64, ptr %144, align 8, !tbaa !9
  %146 = load i64, ptr %36, align 8, !tbaa !9
  %147 = load i64, ptr %26, align 8, !tbaa !9
  %148 = mul nsw i64 %146, %147
  %149 = add nsw i64 %145, %148
  %150 = getelementptr inbounds double, ptr %143, i64 %149
  %151 = call i32 @dlartg_(ptr noundef %150, ptr noundef %29, ptr noundef %42, ptr noundef %46, ptr noundef %56)
  %152 = load i64, ptr %37, align 8, !tbaa !9
  %153 = load ptr, ptr %14, align 8, !tbaa !5
  %154 = load i64, ptr %153, align 8, !tbaa !9
  %155 = icmp sle i64 %152, %154
  br i1 %155, label %156, label %181

156:                                              ; preds = %121
  %157 = load ptr, ptr %14, align 8, !tbaa !5
  %158 = load i64, ptr %157, align 8, !tbaa !9
  %159 = load ptr, ptr %19, align 8, !tbaa !5
  %160 = load i64, ptr %159, align 8, !tbaa !9
  %161 = sub nsw i64 %158, %160
  %162 = sub nsw i64 %161, 1
  store i64 %162, ptr %28, align 8, !tbaa !9
  %163 = load ptr, ptr %15, align 8, !tbaa !5
  %164 = load ptr, ptr %19, align 8, !tbaa !5
  %165 = load i64, ptr %164, align 8, !tbaa !9
  %166 = load i64, ptr %37, align 8, !tbaa !9
  %167 = load i64, ptr %26, align 8, !tbaa !9
  %168 = mul nsw i64 %166, %167
  %169 = add nsw i64 %165, %168
  %170 = getelementptr inbounds double, ptr %163, i64 %169
  %171 = load ptr, ptr %16, align 8, !tbaa !5
  %172 = load ptr, ptr %15, align 8, !tbaa !5
  %173 = load i64, ptr %36, align 8, !tbaa !9
  %174 = load i64, ptr %37, align 8, !tbaa !9
  %175 = load i64, ptr %26, align 8, !tbaa !9
  %176 = mul nsw i64 %174, %175
  %177 = add nsw i64 %173, %176
  %178 = getelementptr inbounds double, ptr %172, i64 %177
  %179 = load ptr, ptr %16, align 8, !tbaa !5
  %180 = call i32 @f2c_drot(ptr noundef %28, ptr noundef %170, ptr noundef %171, ptr noundef %178, ptr noundef %179, ptr noundef %42, ptr noundef %46)
  br label %181

181:                                              ; preds = %156, %121
  %182 = load ptr, ptr %19, align 8, !tbaa !5
  %183 = load i64, ptr %182, align 8, !tbaa !9
  %184 = sub nsw i64 %183, 1
  store i64 %184, ptr %28, align 8, !tbaa !9
  %185 = load ptr, ptr %15, align 8, !tbaa !5
  %186 = load ptr, ptr %19, align 8, !tbaa !5
  %187 = load i64, ptr %186, align 8, !tbaa !9
  %188 = load i64, ptr %26, align 8, !tbaa !9
  %189 = mul nsw i64 %187, %188
  %190 = add nsw i64 %189, 1
  %191 = getelementptr inbounds double, ptr %185, i64 %190
  %192 = load ptr, ptr %15, align 8, !tbaa !5
  %193 = load i64, ptr %36, align 8, !tbaa !9
  %194 = load i64, ptr %26, align 8, !tbaa !9
  %195 = mul nsw i64 %193, %194
  %196 = add nsw i64 %195, 1
  %197 = getelementptr inbounds double, ptr %192, i64 %196
  %198 = call i32 @f2c_drot(ptr noundef %28, ptr noundef %191, ptr noundef @c__1, ptr noundef %197, ptr noundef @c__1, ptr noundef %42, ptr noundef %46)
  %199 = load double, ptr %44, align 8, !tbaa !11
  %200 = load ptr, ptr %15, align 8, !tbaa !5
  %201 = load ptr, ptr %19, align 8, !tbaa !5
  %202 = load i64, ptr %201, align 8, !tbaa !9
  %203 = load ptr, ptr %19, align 8, !tbaa !5
  %204 = load i64, ptr %203, align 8, !tbaa !9
  %205 = load i64, ptr %26, align 8, !tbaa !9
  %206 = mul nsw i64 %204, %205
  %207 = add nsw i64 %202, %206
  %208 = getelementptr inbounds double, ptr %200, i64 %207
  store double %199, ptr %208, align 8, !tbaa !11
  %209 = load double, ptr %43, align 8, !tbaa !11
  %210 = load ptr, ptr %15, align 8, !tbaa !5
  %211 = load i64, ptr %36, align 8, !tbaa !9
  %212 = load i64, ptr %36, align 8, !tbaa !9
  %213 = load i64, ptr %26, align 8, !tbaa !9
  %214 = mul nsw i64 %212, %213
  %215 = add nsw i64 %211, %214
  %216 = getelementptr inbounds double, ptr %210, i64 %215
  store double %209, ptr %216, align 8, !tbaa !11
  %217 = load ptr, ptr %13, align 8, !tbaa !5
  %218 = load i64, ptr %217, align 8, !tbaa !9
  %219 = icmp ne i64 %218, 0
  br i1 %219, label %220, label %236

220:                                              ; preds = %181
  %221 = load ptr, ptr %14, align 8, !tbaa !5
  %222 = load ptr, ptr %17, align 8, !tbaa !5
  %223 = load ptr, ptr %19, align 8, !tbaa !5
  %224 = load i64, ptr %223, align 8, !tbaa !9
  %225 = load i64, ptr %24, align 8, !tbaa !9
  %226 = mul nsw i64 %224, %225
  %227 = add nsw i64 %226, 1
  %228 = getelementptr inbounds double, ptr %222, i64 %227
  %229 = load ptr, ptr %17, align 8, !tbaa !5
  %230 = load i64, ptr %36, align 8, !tbaa !9
  %231 = load i64, ptr %24, align 8, !tbaa !9
  %232 = mul nsw i64 %230, %231
  %233 = add nsw i64 %232, 1
  %234 = getelementptr inbounds double, ptr %229, i64 %233
  %235 = call i32 @f2c_drot(ptr noundef %221, ptr noundef %228, ptr noundef @c__1, ptr noundef %234, ptr noundef @c__1, ptr noundef %42, ptr noundef %46)
  br label %236

236:                                              ; preds = %220, %181
  br label %1119

237:                                              ; preds = %117, %104
  %238 = load ptr, ptr %20, align 8, !tbaa !5
  %239 = load i64, ptr %238, align 8, !tbaa !9
  %240 = load ptr, ptr %21, align 8, !tbaa !5
  %241 = load i64, ptr %240, align 8, !tbaa !9
  %242 = add nsw i64 %239, %241
  store i64 %242, ptr %41, align 8, !tbaa !9
  %243 = load ptr, ptr %15, align 8, !tbaa !5
  %244 = load ptr, ptr %19, align 8, !tbaa !5
  %245 = load i64, ptr %244, align 8, !tbaa !9
  %246 = load ptr, ptr %19, align 8, !tbaa !5
  %247 = load i64, ptr %246, align 8, !tbaa !9
  %248 = load i64, ptr %26, align 8, !tbaa !9
  %249 = mul nsw i64 %247, %248
  %250 = add nsw i64 %245, %249
  %251 = getelementptr inbounds double, ptr %243, i64 %250
  %252 = load ptr, ptr %16, align 8, !tbaa !5
  %253 = getelementptr inbounds [16 x double], ptr %32, i64 0, i64 0
  %254 = call i32 @dlacpy_(ptr noundef @.str, ptr noundef %41, ptr noundef %41, ptr noundef %251, ptr noundef %252, ptr noundef %253, ptr noundef @c__4)
  %255 = getelementptr inbounds [16 x double], ptr %32, i64 0, i64 0
  %256 = load ptr, ptr %22, align 8, !tbaa !5
  %257 = getelementptr inbounds double, ptr %256, i64 1
  %258 = call double @dlange_(ptr noundef @.str.1, ptr noundef %41, ptr noundef %41, ptr noundef %255, ptr noundef @c__4, ptr noundef %257)
  store double %258, ptr %58, align 8, !tbaa !11
  %259 = call double @dlamch_(ptr noundef @.str.2)
  store double %259, ptr %51, align 8, !tbaa !11
  %260 = call double @dlamch_(ptr noundef @.str.3)
  %261 = load double, ptr %51, align 8, !tbaa !11
  %262 = fdiv double %260, %261
  store double %262, ptr %61, align 8, !tbaa !11
  %263 = load double, ptr %51, align 8, !tbaa !11
  %264 = fmul double %263, 1.000000e+01
  %265 = load double, ptr %58, align 8, !tbaa !11
  %266 = fmul double %264, %265
  store double %266, ptr %29, align 8, !tbaa !11
  %267 = load double, ptr %29, align 8, !tbaa !11
  %268 = load double, ptr %61, align 8, !tbaa !11
  %269 = fcmp oge double %267, %268
  br i1 %269, label %270, label %272

270:                                              ; preds = %237
  %271 = load double, ptr %29, align 8, !tbaa !11
  br label %274

272:                                              ; preds = %237
  %273 = load double, ptr %61, align 8, !tbaa !11
  br label %274

274:                                              ; preds = %272, %270
  %275 = phi double [ %271, %270 ], [ %273, %272 ]
  store double %275, ptr %60, align 8, !tbaa !11
  %276 = load ptr, ptr %20, align 8, !tbaa !5
  %277 = load ptr, ptr %21, align 8, !tbaa !5
  %278 = getelementptr inbounds [16 x double], ptr %32, i64 0, i64 0
  %279 = load ptr, ptr %20, align 8, !tbaa !5
  %280 = load i64, ptr %279, align 8, !tbaa !9
  %281 = add nsw i64 %280, 1
  %282 = load ptr, ptr %20, align 8, !tbaa !5
  %283 = load i64, ptr %282, align 8, !tbaa !9
  %284 = add nsw i64 %283, 1
  %285 = shl i64 %284, 2
  %286 = add nsw i64 %281, %285
  %287 = sub nsw i64 %286, 5
  %288 = getelementptr inbounds [16 x double], ptr %32, i64 0, i64 %287
  %289 = load ptr, ptr %20, align 8, !tbaa !5
  %290 = load i64, ptr %289, align 8, !tbaa !9
  %291 = add nsw i64 %290, 1
  %292 = shl i64 %291, 2
  %293 = sub nsw i64 %292, 4
  %294 = getelementptr inbounds [16 x double], ptr %32, i64 0, i64 %293
  %295 = getelementptr inbounds [4 x double], ptr %35, i64 0, i64 0
  %296 = call i32 @dlasy2_(ptr noundef @c_false, ptr noundef @c_false, ptr noundef @c_n1, ptr noundef %276, ptr noundef %277, ptr noundef %278, ptr noundef @c__4, ptr noundef %288, ptr noundef @c__4, ptr noundef %294, ptr noundef @c__4, ptr noundef %57, ptr noundef %295, ptr noundef @c__2, ptr noundef %59, ptr noundef %55)
  %297 = load ptr, ptr %20, align 8, !tbaa !5
  %298 = load i64, ptr %297, align 8, !tbaa !9
  %299 = load ptr, ptr %20, align 8, !tbaa !5
  %300 = load i64, ptr %299, align 8, !tbaa !9
  %301 = add nsw i64 %298, %300
  %302 = load ptr, ptr %21, align 8, !tbaa !5
  %303 = load i64, ptr %302, align 8, !tbaa !9
  %304 = add nsw i64 %301, %303
  %305 = sub nsw i64 %304, 3
  store i64 %305, ptr %33, align 8, !tbaa !9
  %306 = load i64, ptr %33, align 8, !tbaa !9
  switch i64 %306, label %310 [
    i64 1, label %307
    i64 2, label %308
    i64 3, label %309
  ]

307:                                              ; preds = %274
  br label %311

308:                                              ; preds = %274
  br label %476

309:                                              ; preds = %274
  br label %642

310:                                              ; preds = %274
  br label %311

311:                                              ; preds = %310, %307
  %312 = load double, ptr %57, align 8, !tbaa !11
  %313 = getelementptr inbounds [3 x double], ptr %34, i64 0, i64 0
  store double %312, ptr %313, align 16, !tbaa !11
  %314 = getelementptr inbounds [4 x double], ptr %35, i64 0, i64 0
  %315 = load double, ptr %314, align 16, !tbaa !11
  %316 = getelementptr inbounds [3 x double], ptr %34, i64 0, i64 1
  store double %315, ptr %316, align 8, !tbaa !11
  %317 = getelementptr inbounds [4 x double], ptr %35, i64 0, i64 2
  %318 = load double, ptr %317, align 16, !tbaa !11
  %319 = getelementptr inbounds [3 x double], ptr %34, i64 0, i64 2
  store double %318, ptr %319, align 16, !tbaa !11
  %320 = getelementptr inbounds [3 x double], ptr %34, i64 0, i64 2
  %321 = getelementptr inbounds [3 x double], ptr %34, i64 0, i64 0
  %322 = call i32 @dlarfg_(ptr noundef @c__3, ptr noundef %320, ptr noundef %321, ptr noundef @c__1, ptr noundef %52)
  %323 = getelementptr inbounds [3 x double], ptr %34, i64 0, i64 2
  store double 1.000000e+00, ptr %323, align 16, !tbaa !11
  %324 = load ptr, ptr %15, align 8, !tbaa !5
  %325 = load ptr, ptr %19, align 8, !tbaa !5
  %326 = load i64, ptr %325, align 8, !tbaa !9
  %327 = load ptr, ptr %19, align 8, !tbaa !5
  %328 = load i64, ptr %327, align 8, !tbaa !9
  %329 = load i64, ptr %26, align 8, !tbaa !9
  %330 = mul nsw i64 %328, %329
  %331 = add nsw i64 %326, %330
  %332 = getelementptr inbounds double, ptr %324, i64 %331
  %333 = load double, ptr %332, align 8, !tbaa !11
  store double %333, ptr %43, align 8, !tbaa !11
  %334 = getelementptr inbounds [3 x double], ptr %34, i64 0, i64 0
  %335 = getelementptr inbounds [16 x double], ptr %32, i64 0, i64 0
  %336 = load ptr, ptr %22, align 8, !tbaa !5
  %337 = getelementptr inbounds double, ptr %336, i64 1
  %338 = call i32 @dlarfx_(ptr noundef @.str.4, ptr noundef @c__3, ptr noundef @c__3, ptr noundef %334, ptr noundef %52, ptr noundef %335, ptr noundef @c__4, ptr noundef %337)
  %339 = getelementptr inbounds [3 x double], ptr %34, i64 0, i64 0
  %340 = getelementptr inbounds [16 x double], ptr %32, i64 0, i64 0
  %341 = load ptr, ptr %22, align 8, !tbaa !5
  %342 = getelementptr inbounds double, ptr %341, i64 1
  %343 = call i32 @dlarfx_(ptr noundef @.str.5, ptr noundef @c__3, ptr noundef @c__3, ptr noundef %339, ptr noundef %52, ptr noundef %340, ptr noundef @c__4, ptr noundef %342)
  %344 = getelementptr inbounds [16 x double], ptr %32, i64 0, i64 2
  %345 = load double, ptr %344, align 16, !tbaa !11
  %346 = fcmp oge double %345, 0.000000e+00
  br i1 %346, label %347, label %350

347:                                              ; preds = %311
  %348 = getelementptr inbounds [16 x double], ptr %32, i64 0, i64 2
  %349 = load double, ptr %348, align 16, !tbaa !11
  br label %354

350:                                              ; preds = %311
  %351 = getelementptr inbounds [16 x double], ptr %32, i64 0, i64 2
  %352 = load double, ptr %351, align 16, !tbaa !11
  %353 = fneg double %352
  br label %354

354:                                              ; preds = %350, %347
  %355 = phi double [ %349, %347 ], [ %353, %350 ]
  store double %355, ptr %30, align 8, !tbaa !11
  %356 = getelementptr inbounds [16 x double], ptr %32, i64 0, i64 6
  %357 = load double, ptr %356, align 16, !tbaa !11
  %358 = fcmp oge double %357, 0.000000e+00
  br i1 %358, label %359, label %362

359:                                              ; preds = %354
  %360 = getelementptr inbounds [16 x double], ptr %32, i64 0, i64 6
  %361 = load double, ptr %360, align 16, !tbaa !11
  br label %366

362:                                              ; preds = %354
  %363 = getelementptr inbounds [16 x double], ptr %32, i64 0, i64 6
  %364 = load double, ptr %363, align 16, !tbaa !11
  %365 = fneg double %364
  br label %366

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

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

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

375:                                              ; preds = %373, %371
  %376 = phi double [ %372, %371 ], [ %374, %373 ]
  store double %376, ptr %30, align 8, !tbaa !11
  %377 = getelementptr inbounds [16 x double], ptr %32, i64 0, i64 10
  %378 = load double, ptr %377, align 16, !tbaa !11
  %379 = load double, ptr %43, align 8, !tbaa !11
  %380 = fsub double %378, %379
  store double %380, ptr %29, align 8, !tbaa !11
  %381 = load double, ptr %29, align 8, !tbaa !11
  %382 = fcmp oge double %381, 0.000000e+00
  br i1 %382, label %383, label %385

383:                                              ; preds = %375
  %384 = load double, ptr %29, align 8, !tbaa !11
  br label %388

385:                                              ; preds = %375
  %386 = load double, ptr %29, align 8, !tbaa !11
  %387 = fneg double %386
  br label %388

388:                                              ; preds = %385, %383
  %389 = phi double [ %384, %383 ], [ %387, %385 ]
  store double %389, ptr %31, align 8, !tbaa !11
  %390 = load double, ptr %30, align 8, !tbaa !11
  %391 = load double, ptr %31, align 8, !tbaa !11
  %392 = fcmp oge double %390, %391
  br i1 %392, label %393, label %395

393:                                              ; preds = %388
  %394 = load double, ptr %30, align 8, !tbaa !11
  br label %397

395:                                              ; preds = %388
  %396 = load double, ptr %31, align 8, !tbaa !11
  br label %397

397:                                              ; preds = %395, %393
  %398 = phi double [ %394, %393 ], [ %396, %395 ]
  %399 = load double, ptr %60, align 8, !tbaa !11
  %400 = fcmp ogt double %398, %399
  br i1 %400, label %401, label %402

401:                                              ; preds = %397
  br label %1120

402:                                              ; preds = %397
  %403 = load ptr, ptr %14, align 8, !tbaa !5
  %404 = load i64, ptr %403, align 8, !tbaa !9
  %405 = load ptr, ptr %19, align 8, !tbaa !5
  %406 = load i64, ptr %405, align 8, !tbaa !9
  %407 = sub nsw i64 %404, %406
  %408 = add nsw i64 %407, 1
  store i64 %408, ptr %28, align 8, !tbaa !9
  %409 = getelementptr inbounds [3 x double], ptr %34, i64 0, i64 0
  %410 = load ptr, ptr %15, align 8, !tbaa !5
  %411 = load ptr, ptr %19, align 8, !tbaa !5
  %412 = load i64, ptr %411, align 8, !tbaa !9
  %413 = load ptr, ptr %19, align 8, !tbaa !5
  %414 = load i64, ptr %413, align 8, !tbaa !9
  %415 = load i64, ptr %26, align 8, !tbaa !9
  %416 = mul nsw i64 %414, %415
  %417 = add nsw i64 %412, %416
  %418 = getelementptr inbounds double, ptr %410, i64 %417
  %419 = load ptr, ptr %16, align 8, !tbaa !5
  %420 = load ptr, ptr %22, align 8, !tbaa !5
  %421 = getelementptr inbounds double, ptr %420, i64 1
  %422 = call i32 @dlarfx_(ptr noundef @.str.4, ptr noundef @c__3, ptr noundef %28, ptr noundef %409, ptr noundef %52, ptr noundef %418, ptr noundef %419, ptr noundef %421)
  %423 = getelementptr inbounds [3 x double], ptr %34, i64 0, i64 0
  %424 = load ptr, ptr %15, align 8, !tbaa !5
  %425 = load ptr, ptr %19, align 8, !tbaa !5
  %426 = load i64, ptr %425, align 8, !tbaa !9
  %427 = load i64, ptr %26, align 8, !tbaa !9
  %428 = mul nsw i64 %426, %427
  %429 = add nsw i64 %428, 1
  %430 = getelementptr inbounds double, ptr %424, i64 %429
  %431 = load ptr, ptr %16, align 8, !tbaa !5
  %432 = load ptr, ptr %22, align 8, !tbaa !5
  %433 = getelementptr inbounds double, ptr %432, i64 1
  %434 = call i32 @dlarfx_(ptr noundef @.str.5, ptr noundef %36, ptr noundef @c__3, ptr noundef %423, ptr noundef %52, ptr noundef %430, ptr noundef %431, ptr noundef %433)
  %435 = load ptr, ptr %15, align 8, !tbaa !5
  %436 = load i64, ptr %37, align 8, !tbaa !9
  %437 = load ptr, ptr %19, align 8, !tbaa !5
  %438 = load i64, ptr %437, align 8, !tbaa !9
  %439 = load i64, ptr %26, align 8, !tbaa !9
  %440 = mul nsw i64 %438, %439
  %441 = add nsw i64 %436, %440
  %442 = getelementptr inbounds double, ptr %435, i64 %441
  store double 0.000000e+00, ptr %442, align 8, !tbaa !11
  %443 = load ptr, ptr %15, align 8, !tbaa !5
  %444 = load i64, ptr %37, align 8, !tbaa !9
  %445 = load i64, ptr %36, align 8, !tbaa !9
  %446 = load i64, ptr %26, align 8, !tbaa !9
  %447 = mul nsw i64 %445, %446
  %448 = add nsw i64 %444, %447
  %449 = getelementptr inbounds double, ptr %443, i64 %448
  store double 0.000000e+00, ptr %449, align 8, !tbaa !11
  %450 = load double, ptr %43, align 8, !tbaa !11
  %451 = load ptr, ptr %15, align 8, !tbaa !5
  %452 = load i64, ptr %37, align 8, !tbaa !9
  %453 = load i64, ptr %37, align 8, !tbaa !9
  %454 = load i64, ptr %26, align 8, !tbaa !9
  %455 = mul nsw i64 %453, %454
  %456 = add nsw i64 %452, %455
  %457 = getelementptr inbounds double, ptr %451, i64 %456
  store double %450, ptr %457, align 8, !tbaa !11
  %458 = load ptr, ptr %13, align 8, !tbaa !5
  %459 = load i64, ptr %458, align 8, !tbaa !9
  %460 = icmp ne i64 %459, 0
  br i1 %460, label %461, label %475

461:                                              ; preds = %402
  %462 = load ptr, ptr %14, align 8, !tbaa !5
  %463 = getelementptr inbounds [3 x double], ptr %34, i64 0, i64 0
  %464 = load ptr, ptr %17, align 8, !tbaa !5
  %465 = load ptr, ptr %19, align 8, !tbaa !5
  %466 = load i64, ptr %465, align 8, !tbaa !9
  %467 = load i64, ptr %24, align 8, !tbaa !9
  %468 = mul nsw i64 %466, %467
  %469 = add nsw i64 %468, 1
  %470 = getelementptr inbounds double, ptr %464, i64 %469
  %471 = load ptr, ptr %18, align 8, !tbaa !5
  %472 = load ptr, ptr %22, align 8, !tbaa !5
  %473 = getelementptr inbounds double, ptr %472, i64 1
  %474 = call i32 @dlarfx_(ptr noundef @.str.5, ptr noundef %462, ptr noundef @c__3, ptr noundef %463, ptr noundef %52, ptr noundef %470, ptr noundef %471, ptr noundef %473)
  br label %475

475:                                              ; preds = %461, %402
  br label %909

476:                                              ; preds = %308
  %477 = getelementptr inbounds [4 x double], ptr %35, i64 0, i64 0
  %478 = load double, ptr %477, align 16, !tbaa !11
  %479 = fneg double %478
  %480 = getelementptr inbounds [3 x double], ptr %34, i64 0, i64 0
  store double %479, ptr %480, align 16, !tbaa !11
  %481 = getelementptr inbounds [4 x double], ptr %35, i64 0, i64 1
  %482 = load double, ptr %481, align 8, !tbaa !11
  %483 = fneg double %482
  %484 = getelementptr inbounds [3 x double], ptr %34, i64 0, i64 1
  store double %483, ptr %484, align 8, !tbaa !11
  %485 = load double, ptr %57, align 8, !tbaa !11
  %486 = getelementptr inbounds [3 x double], ptr %34, i64 0, i64 2
  store double %485, ptr %486, align 16, !tbaa !11
  %487 = getelementptr inbounds [3 x double], ptr %34, i64 0, i64 0
  %488 = getelementptr inbounds [3 x double], ptr %34, i64 0, i64 1
  %489 = call i32 @dlarfg_(ptr noundef @c__3, ptr noundef %487, ptr noundef %488, ptr noundef @c__1, ptr noundef %52)
  %490 = getelementptr inbounds [3 x double], ptr %34, i64 0, i64 0
  store double 1.000000e+00, ptr %490, align 16, !tbaa !11
  %491 = load ptr, ptr %15, align 8, !tbaa !5
  %492 = load i64, ptr %37, align 8, !tbaa !9
  %493 = load i64, ptr %37, align 8, !tbaa !9
  %494 = load i64, ptr %26, align 8, !tbaa !9
  %495 = mul nsw i64 %493, %494
  %496 = add nsw i64 %492, %495
  %497 = getelementptr inbounds double, ptr %491, i64 %496
  %498 = load double, ptr %497, align 8, !tbaa !11
  store double %498, ptr %45, align 8, !tbaa !11
  %499 = getelementptr inbounds [3 x double], ptr %34, i64 0, i64 0
  %500 = getelementptr inbounds [16 x double], ptr %32, i64 0, i64 0
  %501 = load ptr, ptr %22, align 8, !tbaa !5
  %502 = getelementptr inbounds double, ptr %501, i64 1
  %503 = call i32 @dlarfx_(ptr noundef @.str.4, ptr noundef @c__3, ptr noundef @c__3, ptr noundef %499, ptr noundef %52, ptr noundef %500, ptr noundef @c__4, ptr noundef %502)
  %504 = getelementptr inbounds [3 x double], ptr %34, i64 0, i64 0
  %505 = getelementptr inbounds [16 x double], ptr %32, i64 0, i64 0
  %506 = load ptr, ptr %22, align 8, !tbaa !5
  %507 = getelementptr inbounds double, ptr %506, i64 1
  %508 = call i32 @dlarfx_(ptr noundef @.str.5, ptr noundef @c__3, ptr noundef @c__3, ptr noundef %504, ptr noundef %52, ptr noundef %505, ptr noundef @c__4, ptr noundef %507)
  %509 = getelementptr inbounds [16 x double], ptr %32, i64 0, i64 1
  %510 = load double, ptr %509, align 8, !tbaa !11
  %511 = fcmp oge double %510, 0.000000e+00
  br i1 %511, label %512, label %515

512:                                              ; preds = %476
  %513 = getelementptr inbounds [16 x double], ptr %32, i64 0, i64 1
  %514 = load double, ptr %513, align 8, !tbaa !11
  br label %519

515:                                              ; preds = %476
  %516 = getelementptr inbounds [16 x double], ptr %32, i64 0, i64 1
  %517 = load double, ptr %516, align 8, !tbaa !11
  %518 = fneg double %517
  br label %519

519:                                              ; preds = %515, %512
  %520 = phi double [ %514, %512 ], [ %518, %515 ]
  store double %520, ptr %30, align 8, !tbaa !11
  %521 = getelementptr inbounds [16 x double], ptr %32, i64 0, i64 2
  %522 = load double, ptr %521, align 16, !tbaa !11
  %523 = fcmp oge double %522, 0.000000e+00
  br i1 %523, label %524, label %527

524:                                              ; preds = %519
  %525 = getelementptr inbounds [16 x double], ptr %32, i64 0, i64 2
  %526 = load double, ptr %525, align 16, !tbaa !11
  br label %531

527:                                              ; preds = %519
  %528 = getelementptr inbounds [16 x double], ptr %32, i64 0, i64 2
  %529 = load double, ptr %528, align 16, !tbaa !11
  %530 = fneg double %529
  br label %531

531:                                              ; preds = %527, %524
  %532 = phi double [ %526, %524 ], [ %530, %527 ]
  store double %532, ptr %31, align 8, !tbaa !11
  %533 = load double, ptr %30, align 8, !tbaa !11
  %534 = load double, ptr %31, align 8, !tbaa !11
  %535 = fcmp oge double %533, %534
  br i1 %535, label %536, label %538

536:                                              ; preds = %531
  %537 = load double, ptr %30, align 8, !tbaa !11
  br label %540

538:                                              ; preds = %531
  %539 = load double, ptr %31, align 8, !tbaa !11
  br label %540

540:                                              ; preds = %538, %536
  %541 = phi double [ %537, %536 ], [ %539, %538 ]
  store double %541, ptr %30, align 8, !tbaa !11
  %542 = getelementptr inbounds [16 x double], ptr %32, i64 0, i64 0
  %543 = load double, ptr %542, align 16, !tbaa !11
  %544 = load double, ptr %45, align 8, !tbaa !11
  %545 = fsub double %543, %544
  store double %545, ptr %29, align 8, !tbaa !11
  %546 = load double, ptr %29, align 8, !tbaa !11
  %547 = fcmp oge double %546, 0.000000e+00
  br i1 %547, label %548, label %550

548:                                              ; preds = %540
  %549 = load double, ptr %29, align 8, !tbaa !11
  br label %553

550:                                              ; preds = %540
  %551 = load double, ptr %29, align 8, !tbaa !11
  %552 = fneg double %551
  br label %553

553:                                              ; preds = %550, %548
  %554 = phi double [ %549, %548 ], [ %552, %550 ]
  store double %554, ptr %31, align 8, !tbaa !11
  %555 = load double, ptr %30, align 8, !tbaa !11
  %556 = load double, ptr %31, align 8, !tbaa !11
  %557 = fcmp oge double %555, %556
  br i1 %557, label %558, label %560

558:                                              ; preds = %553
  %559 = load double, ptr %30, align 8, !tbaa !11
  br label %562

560:                                              ; preds = %553
  %561 = load double, ptr %31, align 8, !tbaa !11
  br label %562

562:                                              ; preds = %560, %558
  %563 = phi double [ %559, %558 ], [ %561, %560 ]
  %564 = load double, ptr %60, align 8, !tbaa !11
  %565 = fcmp ogt double %563, %564
  br i1 %565, label %566, label %567

566:                                              ; preds = %562
  br label %1120

567:                                              ; preds = %562
  %568 = getelementptr inbounds [3 x double], ptr %34, i64 0, i64 0
  %569 = load ptr, ptr %15, align 8, !tbaa !5
  %570 = load ptr, ptr %19, align 8, !tbaa !5
  %571 = load i64, ptr %570, align 8, !tbaa !9
  %572 = load i64, ptr %26, align 8, !tbaa !9
  %573 = mul nsw i64 %571, %572
  %574 = add nsw i64 %573, 1
  %575 = getelementptr inbounds double, ptr %569, i64 %574
  %576 = load ptr, ptr %16, align 8, !tbaa !5
  %577 = load ptr, ptr %22, align 8, !tbaa !5
  %578 = getelementptr inbounds double, ptr %577, i64 1
  %579 = call i32 @dlarfx_(ptr noundef @.str.5, ptr noundef %37, ptr noundef @c__3, ptr noundef %568, ptr noundef %52, ptr noundef %575, ptr noundef %576, ptr noundef %578)
  %580 = load ptr, ptr %14, align 8, !tbaa !5
  %581 = load i64, ptr %580, align 8, !tbaa !9
  %582 = load ptr, ptr %19, align 8, !tbaa !5
  %583 = load i64, ptr %582, align 8, !tbaa !9
  %584 = sub nsw i64 %581, %583
  store i64 %584, ptr %28, align 8, !tbaa !9
  %585 = getelementptr inbounds [3 x double], ptr %34, i64 0, i64 0
  %586 = load ptr, ptr %15, align 8, !tbaa !5
  %587 = load ptr, ptr %19, align 8, !tbaa !5
  %588 = load i64, ptr %587, align 8, !tbaa !9
  %589 = load i64, ptr %36, align 8, !tbaa !9
  %590 = load i64, ptr %26, align 8, !tbaa !9
  %591 = mul nsw i64 %589, %590
  %592 = add nsw i64 %588, %591
  %593 = getelementptr inbounds double, ptr %586, i64 %592
  %594 = load ptr, ptr %16, align 8, !tbaa !5
  %595 = load ptr, ptr %22, align 8, !tbaa !5
  %596 = getelementptr inbounds double, ptr %595, i64 1
  %597 = call i32 @dlarfx_(ptr noundef @.str.4, ptr noundef @c__3, ptr noundef %28, ptr noundef %585, ptr noundef %52, ptr noundef %593, ptr noundef %594, ptr noundef %596)
  %598 = load double, ptr %45, align 8, !tbaa !11
  %599 = load ptr, ptr %15, align 8, !tbaa !5
  %600 = load ptr, ptr %19, align 8, !tbaa !5
  %601 = load i64, ptr %600, align 8, !tbaa !9
  %602 = load ptr, ptr %19, align 8, !tbaa !5
  %603 = load i64, ptr %602, align 8, !tbaa !9
  %604 = load i64, ptr %26, align 8, !tbaa !9
  %605 = mul nsw i64 %603, %604
  %606 = add nsw i64 %601, %605
  %607 = getelementptr inbounds double, ptr %599, i64 %606
  store double %598, ptr %607, align 8, !tbaa !11
  %608 = load ptr, ptr %15, align 8, !tbaa !5
  %609 = load i64, ptr %36, align 8, !tbaa !9
  %610 = load ptr, ptr %19, align 8, !tbaa !5
  %611 = load i64, ptr %610, align 8, !tbaa !9
  %612 = load i64, ptr %26, align 8, !tbaa !9
  %613 = mul nsw i64 %611, %612
  %614 = add nsw i64 %609, %613
  %615 = getelementptr inbounds double, ptr %608, i64 %614
  store double 0.000000e+00, ptr %615, align 8, !tbaa !11
  %616 = load ptr, ptr %15, align 8, !tbaa !5
  %617 = load i64, ptr %37, align 8, !tbaa !9
  %618 = load ptr, ptr %19, align 8, !tbaa !5
  %619 = load i64, ptr %618, align 8, !tbaa !9
  %620 = load i64, ptr %26, align 8, !tbaa !9
  %621 = mul nsw i64 %619, %620
  %622 = add nsw i64 %617, %621
  %623 = getelementptr inbounds double, ptr %616, i64 %622
  store double 0.000000e+00, ptr %623, align 8, !tbaa !11
  %624 = load ptr, ptr %13, align 8, !tbaa !5
  %625 = load i64, ptr %624, align 8, !tbaa !9
  %626 = icmp ne i64 %625, 0
  br i1 %626, label %627, label %641

627:                                              ; preds = %567
  %628 = load ptr, ptr %14, align 8, !tbaa !5
  %629 = getelementptr inbounds [3 x double], ptr %34, i64 0, i64 0
  %630 = load ptr, ptr %17, align 8, !tbaa !5
  %631 = load ptr, ptr %19, align 8, !tbaa !5
  %632 = load i64, ptr %631, align 8, !tbaa !9
  %633 = load i64, ptr %24, align 8, !tbaa !9
  %634 = mul nsw i64 %632, %633
  %635 = add nsw i64 %634, 1
  %636 = getelementptr inbounds double, ptr %630, i64 %635
  %637 = load ptr, ptr %18, align 8, !tbaa !5
  %638 = load ptr, ptr %22, align 8, !tbaa !5
  %639 = getelementptr inbounds double, ptr %638, i64 1
  %640 = call i32 @dlarfx_(ptr noundef @.str.5, ptr noundef %628, ptr noundef @c__3, ptr noundef %629, ptr noundef %52, ptr noundef %636, ptr noundef %637, ptr noundef %639)
  br label %641

641:                                              ; preds = %627, %567
  br label %909

642:                                              ; preds = %309
  %643 = getelementptr inbounds [4 x double], ptr %35, i64 0, i64 0
  %644 = load double, ptr %643, align 16, !tbaa !11
  %645 = fneg double %644
  %646 = getelementptr inbounds [3 x double], ptr %39, i64 0, i64 0
  store double %645, ptr %646, align 16, !tbaa !11
  %647 = getelementptr inbounds [4 x double], ptr %35, i64 0, i64 1
  %648 = load double, ptr %647, align 8, !tbaa !11
  %649 = fneg double %648
  %650 = getelementptr inbounds [3 x double], ptr %39, i64 0, i64 1
  store double %649, ptr %650, align 8, !tbaa !11
  %651 = load double, ptr %57, align 8, !tbaa !11
  %652 = getelementptr inbounds [3 x double], ptr %39, i64 0, i64 2
  store double %651, ptr %652, align 16, !tbaa !11
  %653 = getelementptr inbounds [3 x double], ptr %39, i64 0, i64 0
  %654 = getelementptr inbounds [3 x double], ptr %39, i64 0, i64 1
  %655 = call i32 @dlarfg_(ptr noundef @c__3, ptr noundef %653, ptr noundef %654, ptr noundef @c__1, ptr noundef %53)
  %656 = getelementptr inbounds [3 x double], ptr %39, i64 0, i64 0
  store double 1.000000e+00, ptr %656, align 16, !tbaa !11
  %657 = load double, ptr %53, align 8, !tbaa !11
  %658 = fneg double %657
  %659 = getelementptr inbounds [4 x double], ptr %35, i64 0, i64 2
  %660 = load double, ptr %659, align 16, !tbaa !11
  %661 = getelementptr inbounds [3 x double], ptr %39, i64 0, i64 1
  %662 = load double, ptr %661, align 8, !tbaa !11
  %663 = getelementptr inbounds [4 x double], ptr %35, i64 0, i64 3
  %664 = load double, ptr %663, align 8, !tbaa !11
  %665 = call double @llvm.fmuladd.f64(double %662, double %664, double %660)
  %666 = fmul double %658, %665
  store double %666, ptr %56, align 8, !tbaa !11
  %667 = load double, ptr %56, align 8, !tbaa !11
  %668 = fneg double %667
  %669 = getelementptr inbounds [3 x double], ptr %39, i64 0, i64 1
  %670 = load double, ptr %669, align 8, !tbaa !11
  %671 = getelementptr inbounds [4 x double], ptr %35, i64 0, i64 3
  %672 = load double, ptr %671, align 8, !tbaa !11
  %673 = fneg double %672
  %674 = call double @llvm.fmuladd.f64(double %668, double %670, double %673)
  %675 = getelementptr inbounds [3 x double], ptr %40, i64 0, i64 0
  store double %674, ptr %675, align 16, !tbaa !11
  %676 = load double, ptr %56, align 8, !tbaa !11
  %677 = fneg double %676
  %678 = getelementptr inbounds [3 x double], ptr %39, i64 0, i64 2
  %679 = load double, ptr %678, align 16, !tbaa !11
  %680 = fmul double %677, %679
  %681 = getelementptr inbounds [3 x double], ptr %40, i64 0, i64 1
  store double %680, ptr %681, align 8, !tbaa !11
  %682 = load double, ptr %57, align 8, !tbaa !11
  %683 = getelementptr inbounds [3 x double], ptr %40, i64 0, i64 2
  store double %682, ptr %683, align 16, !tbaa !11
  %684 = getelementptr inbounds [3 x double], ptr %40, i64 0, i64 0
  %685 = getelementptr inbounds [3 x double], ptr %40, i64 0, i64 1
  %686 = call i32 @dlarfg_(ptr noundef @c__3, ptr noundef %684, ptr noundef %685, ptr noundef @c__1, ptr noundef %54)
  %687 = getelementptr inbounds [3 x double], ptr %40, i64 0, i64 0
  store double 1.000000e+00, ptr %687, align 16, !tbaa !11
  %688 = getelementptr inbounds [3 x double], ptr %39, i64 0, i64 0
  %689 = getelementptr inbounds [16 x double], ptr %32, i64 0, i64 0
  %690 = load ptr, ptr %22, align 8, !tbaa !5
  %691 = getelementptr inbounds double, ptr %690, i64 1
  %692 = call i32 @dlarfx_(ptr noundef @.str.4, ptr noundef @c__3, ptr noundef @c__4, ptr noundef %688, ptr noundef %53, ptr noundef %689, ptr noundef @c__4, ptr noundef %691)
  %693 = getelementptr inbounds [3 x double], ptr %39, i64 0, i64 0
  %694 = getelementptr inbounds [16 x double], ptr %32, i64 0, i64 0
  %695 = load ptr, ptr %22, align 8, !tbaa !5
  %696 = getelementptr inbounds double, ptr %695, i64 1
  %697 = call i32 @dlarfx_(ptr noundef @.str.5, ptr noundef @c__4, ptr noundef @c__3, ptr noundef %693, ptr noundef %53, ptr noundef %694, ptr noundef @c__4, ptr noundef %696)
  %698 = getelementptr inbounds [3 x double], ptr %40, i64 0, i64 0
  %699 = getelementptr inbounds [16 x double], ptr %32, i64 0, i64 1
  %700 = load ptr, ptr %22, align 8, !tbaa !5
  %701 = getelementptr inbounds double, ptr %700, i64 1
  %702 = call i32 @dlarfx_(ptr noundef @.str.4, ptr noundef @c__3, ptr noundef @c__4, ptr noundef %698, ptr noundef %54, ptr noundef %699, ptr noundef @c__4, ptr noundef %701)
  %703 = getelementptr inbounds [3 x double], ptr %40, i64 0, i64 0
  %704 = getelementptr inbounds [16 x double], ptr %32, i64 0, i64 4
  %705 = load ptr, ptr %22, align 8, !tbaa !5
  %706 = getelementptr inbounds double, ptr %705, i64 1
  %707 = call i32 @dlarfx_(ptr noundef @.str.5, ptr noundef @c__4, ptr noundef @c__3, ptr noundef %703, ptr noundef %54, ptr noundef %704, ptr noundef @c__4, ptr noundef %706)
  %708 = getelementptr inbounds [16 x double], ptr %32, i64 0, i64 2
  %709 = load double, ptr %708, align 16, !tbaa !11
  %710 = fcmp oge double %709, 0.000000e+00
  br i1 %710, label %711, label %714

711:                                              ; preds = %642
  %712 = getelementptr inbounds [16 x double], ptr %32, i64 0, i64 2
  %713 = load double, ptr %712, align 16, !tbaa !11
  br label %718

714:                                              ; preds = %642
  %715 = getelementptr inbounds [16 x double], ptr %32, i64 0, i64 2
  %716 = load double, ptr %715, align 16, !tbaa !11
  %717 = fneg double %716
  br label %718

718:                                              ; preds = %714, %711
  %719 = phi double [ %713, %711 ], [ %717, %714 ]
  store double %719, ptr %29, align 8, !tbaa !11
  %720 = getelementptr inbounds [16 x double], ptr %32, i64 0, i64 6
  %721 = load double, ptr %720, align 16, !tbaa !11
  %722 = fcmp oge double %721, 0.000000e+00
  br i1 %722, label %723, label %726

723:                                              ; preds = %718
  %724 = getelementptr inbounds [16 x double], ptr %32, i64 0, i64 6
  %725 = load double, ptr %724, align 16, !tbaa !11
  br label %730

726:                                              ; preds = %718
  %727 = getelementptr inbounds [16 x double], ptr %32, i64 0, i64 6
  %728 = load double, ptr %727, align 16, !tbaa !11
  %729 = fneg double %728
  br label %730

730:                                              ; preds = %726, %723
  %731 = phi double [ %725, %723 ], [ %729, %726 ]
  store double %731, ptr %30, align 8, !tbaa !11
  %732 = load double, ptr %29, align 8, !tbaa !11
  %733 = load double, ptr %30, align 8, !tbaa !11
  %734 = fcmp oge double %732, %733
  br i1 %734, label %735, label %737

735:                                              ; preds = %730
  %736 = load double, ptr %29, align 8, !tbaa !11
  br label %739

737:                                              ; preds = %730
  %738 = load double, ptr %30, align 8, !tbaa !11
  br label %739

739:                                              ; preds = %737, %735
  %740 = phi double [ %736, %735 ], [ %738, %737 ]
  store double %740, ptr %29, align 8, !tbaa !11
  %741 = getelementptr inbounds [16 x double], ptr %32, i64 0, i64 3
  %742 = load double, ptr %741, align 8, !tbaa !11
  %743 = fcmp oge double %742, 0.000000e+00
  br i1 %743, label %744, label %747

744:                                              ; preds = %739
  %745 = getelementptr inbounds [16 x double], ptr %32, i64 0, i64 3
  %746 = load double, ptr %745, align 8, !tbaa !11
  br label %751

747:                                              ; preds = %739
  %748 = getelementptr inbounds [16 x double], ptr %32, i64 0, i64 3
  %749 = load double, ptr %748, align 8, !tbaa !11
  %750 = fneg double %749
  br label %751

751:                                              ; preds = %747, %744
  %752 = phi double [ %746, %744 ], [ %750, %747 ]
  store double %752, ptr %30, align 8, !tbaa !11
  %753 = load double, ptr %29, align 8, !tbaa !11
  %754 = load double, ptr %30, align 8, !tbaa !11
  %755 = fcmp oge double %753, %754
  br i1 %755, label %756, label %758

756:                                              ; preds = %751
  %757 = load double, ptr %29, align 8, !tbaa !11
  br label %760

758:                                              ; preds = %751
  %759 = load double, ptr %30, align 8, !tbaa !11
  br label %760

760:                                              ; preds = %758, %756
  %761 = phi double [ %757, %756 ], [ %759, %758 ]
  store double %761, ptr %29, align 8, !tbaa !11
  %762 = getelementptr inbounds [16 x double], ptr %32, i64 0, i64 7
  %763 = load double, ptr %762, align 8, !tbaa !11
  %764 = fcmp oge double %763, 0.000000e+00
  br i1 %764, label %765, label %768

765:                                              ; preds = %760
  %766 = getelementptr inbounds [16 x double], ptr %32, i64 0, i64 7
  %767 = load double, ptr %766, align 8, !tbaa !11
  br label %772

768:                                              ; preds = %760
  %769 = getelementptr inbounds [16 x double], ptr %32, i64 0, i64 7
  %770 = load double, ptr %769, align 8, !tbaa !11
  %771 = fneg double %770
  br label %772

772:                                              ; preds = %768, %765
  %773 = phi double [ %767, %765 ], [ %771, %768 ]
  store double %773, ptr %30, align 8, !tbaa !11
  %774 = load double, ptr %29, align 8, !tbaa !11
  %775 = load double, ptr %30, align 8, !tbaa !11
  %776 = fcmp oge double %774, %775
  br i1 %776, label %777, label %779

777:                                              ; preds = %772
  %778 = load double, ptr %29, align 8, !tbaa !11
  br label %781

779:                                              ; preds = %772
  %780 = load double, ptr %30, align 8, !tbaa !11
  br label %781

781:                                              ; preds = %779, %777
  %782 = phi double [ %778, %777 ], [ %780, %779 ]
  %783 = load double, ptr %60, align 8, !tbaa !11
  %784 = fcmp ogt double %782, %783
  br i1 %784, label %785, label %786

785:                                              ; preds = %781
  br label %1120

786:                                              ; preds = %781
  %787 = load ptr, ptr %14, align 8, !tbaa !5
  %788 = load i64, ptr %787, align 8, !tbaa !9
  %789 = load ptr, ptr %19, align 8, !tbaa !5
  %790 = load i64, ptr %789, align 8, !tbaa !9
  %791 = sub nsw i64 %788, %790
  %792 = add nsw i64 %791, 1
  store i64 %792, ptr %28, align 8, !tbaa !9
  %793 = getelementptr inbounds [3 x double], ptr %39, i64 0, i64 0
  %794 = load ptr, ptr %15, align 8, !tbaa !5
  %795 = load ptr, ptr %19, align 8, !tbaa !5
  %796 = load i64, ptr %795, align 8, !tbaa !9
  %797 = load ptr, ptr %19, align 8, !tbaa !5
  %798 = load i64, ptr %797, align 8, !tbaa !9
  %799 = load i64, ptr %26, align 8, !tbaa !9
  %800 = mul nsw i64 %798, %799
  %801 = add nsw i64 %796, %800
  %802 = getelementptr inbounds double, ptr %794, i64 %801
  %803 = load ptr, ptr %16, align 8, !tbaa !5
  %804 = load ptr, ptr %22, align 8, !tbaa !5
  %805 = getelementptr inbounds double, ptr %804, i64 1
  %806 = call i32 @dlarfx_(ptr noundef @.str.4, ptr noundef @c__3, ptr noundef %28, ptr noundef %793, ptr noundef %53, ptr noundef %802, ptr noundef %803, ptr noundef %805)
  %807 = getelementptr inbounds [3 x double], ptr %39, i64 0, i64 0
  %808 = load ptr, ptr %15, align 8, !tbaa !5
  %809 = load ptr, ptr %19, align 8, !tbaa !5
  %810 = load i64, ptr %809, align 8, !tbaa !9
  %811 = load i64, ptr %26, align 8, !tbaa !9
  %812 = mul nsw i64 %810, %811
  %813 = add nsw i64 %812, 1
  %814 = getelementptr inbounds double, ptr %808, i64 %813
  %815 = load ptr, ptr %16, align 8, !tbaa !5
  %816 = load ptr, ptr %22, align 8, !tbaa !5
  %817 = getelementptr inbounds double, ptr %816, i64 1
  %818 = call i32 @dlarfx_(ptr noundef @.str.5, ptr noundef %38, ptr noundef @c__3, ptr noundef %807, ptr noundef %53, ptr noundef %814, ptr noundef %815, ptr noundef %817)
  %819 = load ptr, ptr %14, align 8, !tbaa !5
  %820 = load i64, ptr %819, align 8, !tbaa !9
  %821 = load ptr, ptr %19, align 8, !tbaa !5
  %822 = load i64, ptr %821, align 8, !tbaa !9
  %823 = sub nsw i64 %820, %822
  %824 = add nsw i64 %823, 1
  store i64 %824, ptr %28, align 8, !tbaa !9
  %825 = getelementptr inbounds [3 x double], ptr %40, i64 0, i64 0
  %826 = load ptr, ptr %15, align 8, !tbaa !5
  %827 = load i64, ptr %36, align 8, !tbaa !9
  %828 = load ptr, ptr %19, align 8, !tbaa !5
  %829 = load i64, ptr %828, align 8, !tbaa !9
  %830 = load i64, ptr %26, align 8, !tbaa !9
  %831 = mul nsw i64 %829, %830
  %832 = add nsw i64 %827, %831
  %833 = getelementptr inbounds double, ptr %826, i64 %832
  %834 = load ptr, ptr %16, align 8, !tbaa !5
  %835 = load ptr, ptr %22, align 8, !tbaa !5
  %836 = getelementptr inbounds double, ptr %835, i64 1
  %837 = call i32 @dlarfx_(ptr noundef @.str.4, ptr noundef @c__3, ptr noundef %28, ptr noundef %825, ptr noundef %54, ptr noundef %833, ptr noundef %834, ptr noundef %836)
  %838 = getelementptr inbounds [3 x double], ptr %40, i64 0, i64 0
  %839 = load ptr, ptr %15, align 8, !tbaa !5
  %840 = load i64, ptr %36, align 8, !tbaa !9
  %841 = load i64, ptr %26, align 8, !tbaa !9
  %842 = mul nsw i64 %840, %841
  %843 = add nsw i64 %842, 1
  %844 = getelementptr inbounds double, ptr %839, i64 %843
  %845 = load ptr, ptr %16, align 8, !tbaa !5
  %846 = load ptr, ptr %22, align 8, !tbaa !5
  %847 = getelementptr inbounds double, ptr %846, i64 1
  %848 = call i32 @dlarfx_(ptr noundef @.str.5, ptr noundef %38, ptr noundef @c__3, ptr noundef %838, ptr noundef %54, ptr noundef %844, ptr noundef %845, ptr noundef %847)
  %849 = load ptr, ptr %15, align 8, !tbaa !5
  %850 = load i64, ptr %37, align 8, !tbaa !9
  %851 = load ptr, ptr %19, align 8, !tbaa !5
  %852 = load i64, ptr %851, align 8, !tbaa !9
  %853 = load i64, ptr %26, align 8, !tbaa !9
  %854 = mul nsw i64 %852, %853
  %855 = add nsw i64 %850, %854
  %856 = getelementptr inbounds double, ptr %849, i64 %855
  store double 0.000000e+00, ptr %856, align 8, !tbaa !11
  %857 = load ptr, ptr %15, align 8, !tbaa !5
  %858 = load i64, ptr %37, align 8, !tbaa !9
  %859 = load i64, ptr %36, align 8, !tbaa !9
  %860 = load i64, ptr %26, align 8, !tbaa !9
  %861 = mul nsw i64 %859, %860
  %862 = add nsw i64 %858, %861
  %863 = getelementptr inbounds double, ptr %857, i64 %862
  store double 0.000000e+00, ptr %863, align 8, !tbaa !11
  %864 = load ptr, ptr %15, align 8, !tbaa !5
  %865 = load i64, ptr %38, align 8, !tbaa !9
  %866 = load ptr, ptr %19, align 8, !tbaa !5
  %867 = load i64, ptr %866, align 8, !tbaa !9
  %868 = load i64, ptr %26, align 8, !tbaa !9
  %869 = mul nsw i64 %867, %868
  %870 = add nsw i64 %865, %869
  %871 = getelementptr inbounds double, ptr %864, i64 %870
  store double 0.000000e+00, ptr %871, align 8, !tbaa !11
  %872 = load ptr, ptr %15, align 8, !tbaa !5
  %873 = load i64, ptr %38, align 8, !tbaa !9
  %874 = load i64, ptr %36, align 8, !tbaa !9
  %875 = load i64, ptr %26, align 8, !tbaa !9
  %876 = mul nsw i64 %874, %875
  %877 = add nsw i64 %873, %876
  %878 = getelementptr inbounds double, ptr %872, i64 %877
  store double 0.000000e+00, ptr %878, align 8, !tbaa !11
  %879 = load ptr, ptr %13, align 8, !tbaa !5
  %880 = load i64, ptr %879, align 8, !tbaa !9
  %881 = icmp ne i64 %880, 0
  br i1 %881, label %882, label %908

882:                                              ; preds = %786
  %883 = load ptr, ptr %14, align 8, !tbaa !5
  %884 = getelementptr inbounds [3 x double], ptr %39, i64 0, i64 0
  %885 = load ptr, ptr %17, align 8, !tbaa !5
  %886 = load ptr, ptr %19, align 8, !tbaa !5
  %887 = load i64, ptr %886, align 8, !tbaa !9
  %888 = load i64, ptr %24, align 8, !tbaa !9
  %889 = mul nsw i64 %887, %888
  %890 = add nsw i64 %889, 1
  %891 = getelementptr inbounds double, ptr %885, i64 %890
  %892 = load ptr, ptr %18, align 8, !tbaa !5
  %893 = load ptr, ptr %22, align 8, !tbaa !5
  %894 = getelementptr inbounds double, ptr %893, i64 1
  %895 = call i32 @dlarfx_(ptr noundef @.str.5, ptr noundef %883, ptr noundef @c__3, ptr noundef %884, ptr noundef %53, ptr noundef %891, ptr noundef %892, ptr noundef %894)
  %896 = load ptr, ptr %14, align 8, !tbaa !5
  %897 = getelementptr inbounds [3 x double], ptr %40, i64 0, i64 0
  %898 = load ptr, ptr %17, align 8, !tbaa !5
  %899 = load i64, ptr %36, align 8, !tbaa !9
  %900 = load i64, ptr %24, align 8, !tbaa !9
  %901 = mul nsw i64 %899, %900
  %902 = add nsw i64 %901, 1
  %903 = getelementptr inbounds double, ptr %898, i64 %902
  %904 = load ptr, ptr %18, align 8, !tbaa !5
  %905 = load ptr, ptr %22, align 8, !tbaa !5
  %906 = getelementptr inbounds double, ptr %905, i64 1
  %907 = call i32 @dlarfx_(ptr noundef @.str.5, ptr noundef %896, ptr noundef @c__3, ptr noundef %897, ptr noundef %54, ptr noundef %903, ptr noundef %904, ptr noundef %906)
  br label %908

908:                                              ; preds = %882, %786
  br label %909

909:                                              ; preds = %908, %641, %475
  %910 = load ptr, ptr %21, align 8, !tbaa !5
  %911 = load i64, ptr %910, align 8, !tbaa !9
  %912 = icmp eq i64 %911, 2
  br i1 %912, label %913, label %1012

913:                                              ; preds = %909
  %914 = load ptr, ptr %15, align 8, !tbaa !5
  %915 = load ptr, ptr %19, align 8, !tbaa !5
  %916 = load i64, ptr %915, align 8, !tbaa !9
  %917 = load ptr, ptr %19, align 8, !tbaa !5
  %918 = load i64, ptr %917, align 8, !tbaa !9
  %919 = load i64, ptr %26, align 8, !tbaa !9
  %920 = mul nsw i64 %918, %919
  %921 = add nsw i64 %916, %920
  %922 = getelementptr inbounds double, ptr %914, i64 %921
  %923 = load ptr, ptr %15, align 8, !tbaa !5
  %924 = load ptr, ptr %19, align 8, !tbaa !5
  %925 = load i64, ptr %924, align 8, !tbaa !9
  %926 = load i64, ptr %36, align 8, !tbaa !9
  %927 = load i64, ptr %26, align 8, !tbaa !9
  %928 = mul nsw i64 %926, %927
  %929 = add nsw i64 %925, %928
  %930 = getelementptr inbounds double, ptr %923, i64 %929
  %931 = load ptr, ptr %15, align 8, !tbaa !5
  %932 = load i64, ptr %36, align 8, !tbaa !9
  %933 = load ptr, ptr %19, align 8, !tbaa !5
  %934 = load i64, ptr %933, align 8, !tbaa !9
  %935 = load i64, ptr %26, align 8, !tbaa !9
  %936 = mul nsw i64 %934, %935
  %937 = add nsw i64 %932, %936
  %938 = getelementptr inbounds double, ptr %931, i64 %937
  %939 = load ptr, ptr %15, align 8, !tbaa !5
  %940 = load i64, ptr %36, align 8, !tbaa !9
  %941 = load i64, ptr %36, align 8, !tbaa !9
  %942 = load i64, ptr %26, align 8, !tbaa !9
  %943 = mul nsw i64 %941, %942
  %944 = add nsw i64 %940, %943
  %945 = getelementptr inbounds double, ptr %939, i64 %944
  %946 = call i32 @dlanv2_(ptr noundef %922, ptr noundef %930, ptr noundef %938, ptr noundef %945, ptr noundef %49, ptr noundef %47, ptr noundef %50, ptr noundef %48, ptr noundef %42, ptr noundef %46)
  %947 = load ptr, ptr %14, align 8, !tbaa !5
  %948 = load i64, ptr %947, align 8, !tbaa !9
  %949 = load ptr, ptr %19, align 8, !tbaa !5
  %950 = load i64, ptr %949, align 8, !tbaa !9
  %951 = sub nsw i64 %948, %950
  %952 = sub nsw i64 %951, 1
  store i64 %952, ptr %28, align 8, !tbaa !9
  %953 = load ptr, ptr %15, align 8, !tbaa !5
  %954 = load ptr, ptr %19, align 8, !tbaa !5
  %955 = load i64, ptr %954, align 8, !tbaa !9
  %956 = load ptr, ptr %19, align 8, !tbaa !5
  %957 = load i64, ptr %956, align 8, !tbaa !9
  %958 = add nsw i64 %957, 2
  %959 = load i64, ptr %26, align 8, !tbaa !9
  %960 = mul nsw i64 %958, %959
  %961 = add nsw i64 %955, %960
  %962 = getelementptr inbounds double, ptr %953, i64 %961
  %963 = load ptr, ptr %16, align 8, !tbaa !5
  %964 = load ptr, ptr %15, align 8, !tbaa !5
  %965 = load i64, ptr %36, align 8, !tbaa !9
  %966 = load ptr, ptr %19, align 8, !tbaa !5
  %967 = load i64, ptr %966, align 8, !tbaa !9
  %968 = add nsw i64 %967, 2
  %969 = load i64, ptr %26, align 8, !tbaa !9
  %970 = mul nsw i64 %968, %969
  %971 = add nsw i64 %965, %970
  %972 = getelementptr inbounds double, ptr %964, i64 %971
  %973 = load ptr, ptr %16, align 8, !tbaa !5
  %974 = call i32 @f2c_drot(ptr noundef %28, ptr noundef %962, ptr noundef %963, ptr noundef %972, ptr noundef %973, ptr noundef %42, ptr noundef %46)
  %975 = load ptr, ptr %19, align 8, !tbaa !5
  %976 = load i64, ptr %975, align 8, !tbaa !9
  %977 = sub nsw i64 %976, 1
  store i64 %977, ptr %28, align 8, !tbaa !9
  %978 = load ptr, ptr %15, align 8, !tbaa !5
  %979 = load ptr, ptr %19, align 8, !tbaa !5
  %980 = load i64, ptr %979, align 8, !tbaa !9
  %981 = load i64, ptr %26, align 8, !tbaa !9
  %982 = mul nsw i64 %980, %981
  %983 = add nsw i64 %982, 1
  %984 = getelementptr inbounds double, ptr %978, i64 %983
  %985 = load ptr, ptr %15, align 8, !tbaa !5
  %986 = load i64, ptr %36, align 8, !tbaa !9
  %987 = load i64, ptr %26, align 8, !tbaa !9
  %988 = mul nsw i64 %986, %987
  %989 = add nsw i64 %988, 1
  %990 = getelementptr inbounds double, ptr %985, i64 %989
  %991 = call i32 @f2c_drot(ptr noundef %28, ptr noundef %984, ptr noundef @c__1, ptr noundef %990, ptr noundef @c__1, ptr noundef %42, ptr noundef %46)
  %992 = load ptr, ptr %13, align 8, !tbaa !5
  %993 = load i64, ptr %992, align 8, !tbaa !9
  %994 = icmp ne i64 %993, 0
  br i1 %994, label %995, label %1011

995:                                              ; preds = %913
  %996 = load ptr, ptr %14, align 8, !tbaa !5
  %997 = load ptr, ptr %17, align 8, !tbaa !5
  %998 = load ptr, ptr %19, align 8, !tbaa !5
  %999 = load i64, ptr %998, align 8, !tbaa !9
  %1000 = load i64, ptr %24, align 8, !tbaa !9
  %1001 = mul nsw i64 %999, %1000
  %1002 = add nsw i64 %1001, 1
  %1003 = getelementptr inbounds double, ptr %997, i64 %1002
  %1004 = load ptr, ptr %17, align 8, !tbaa !5
  %1005 = load i64, ptr %36, align 8, !tbaa !9
  %1006 = load i64, ptr %24, align 8, !tbaa !9
  %1007 = mul nsw i64 %1005, %1006
  %1008 = add nsw i64 %1007, 1
  %1009 = getelementptr inbounds double, ptr %1004, i64 %1008
  %1010 = call i32 @f2c_drot(ptr noundef %996, ptr noundef %1003, ptr noundef @c__1, ptr noundef %1009, ptr noundef @c__1, ptr noundef %42, ptr noundef %46)
  br label %1011

1011:                                             ; preds = %995, %913
  br label %1012

1012:                                             ; preds = %1011, %909
  %1013 = load ptr, ptr %20, align 8, !tbaa !5
  %1014 = load i64, ptr %1013, align 8, !tbaa !9
  %1015 = icmp eq i64 %1014, 2
  br i1 %1015, label %1016, label %1118

1016:                                             ; preds = %1012
  %1017 = load ptr, ptr %19, align 8, !tbaa !5
  %1018 = load i64, ptr %1017, align 8, !tbaa !9
  %1019 = load ptr, ptr %21, align 8, !tbaa !5
  %1020 = load i64, ptr %1019, align 8, !tbaa !9
  %1021 = add nsw i64 %1018, %1020
  store i64 %1021, ptr %37, align 8, !tbaa !9
  %1022 = load i64, ptr %37, align 8, !tbaa !9
  %1023 = add nsw i64 %1022, 1
  store i64 %1023, ptr %38, align 8, !tbaa !9
  %1024 = load ptr, ptr %15, align 8, !tbaa !5
  %1025 = load i64, ptr %37, align 8, !tbaa !9
  %1026 = load i64, ptr %37, align 8, !tbaa !9
  %1027 = load i64, ptr %26, align 8, !tbaa !9
  %1028 = mul nsw i64 %1026, %1027
  %1029 = add nsw i64 %1025, %1028
  %1030 = getelementptr inbounds double, ptr %1024, i64 %1029
  %1031 = load ptr, ptr %15, align 8, !tbaa !5
  %1032 = load i64, ptr %37, align 8, !tbaa !9
  %1033 = load i64, ptr %38, align 8, !tbaa !9
  %1034 = load i64, ptr %26, align 8, !tbaa !9
  %1035 = mul nsw i64 %1033, %1034
  %1036 = add nsw i64 %1032, %1035
  %1037 = getelementptr inbounds double, ptr %1031, i64 %1036
  %1038 = load ptr, ptr %15, align 8, !tbaa !5
  %1039 = load i64, ptr %38, align 8, !tbaa !9
  %1040 = load i64, ptr %37, align 8, !tbaa !9
  %1041 = load i64, ptr %26, align 8, !tbaa !9
  %1042 = mul nsw i64 %1040, %1041
  %1043 = add nsw i64 %1039, %1042
  %1044 = getelementptr inbounds double, ptr %1038, i64 %1043
  %1045 = load ptr, ptr %15, align 8, !tbaa !5
  %1046 = load i64, ptr %38, align 8, !tbaa !9
  %1047 = load i64, ptr %38, align 8, !tbaa !9
  %1048 = load i64, ptr %26, align 8, !tbaa !9
  %1049 = mul nsw i64 %1047, %1048
  %1050 = add nsw i64 %1046, %1049
  %1051 = getelementptr inbounds double, ptr %1045, i64 %1050
  %1052 = call i32 @dlanv2_(ptr noundef %1030, ptr noundef %1037, ptr noundef %1044, ptr noundef %1051, ptr noundef %49, ptr noundef %47, ptr noundef %50, ptr noundef %48, ptr noundef %42, ptr noundef %46)
  %1053 = load i64, ptr %37, align 8, !tbaa !9
  %1054 = add nsw i64 %1053, 2
  %1055 = load ptr, ptr %14, align 8, !tbaa !5
  %1056 = load i64, ptr %1055, align 8, !tbaa !9
  %1057 = icmp sle i64 %1054, %1056
  br i1 %1057, label %1058, label %1083

1058:                                             ; preds = %1016
  %1059 = load ptr, ptr %14, align 8, !tbaa !5
  %1060 = load i64, ptr %1059, align 8, !tbaa !9
  %1061 = load i64, ptr %37, align 8, !tbaa !9
  %1062 = sub nsw i64 %1060, %1061
  %1063 = sub nsw i64 %1062, 1
  store i64 %1063, ptr %28, align 8, !tbaa !9
  %1064 = load ptr, ptr %15, align 8, !tbaa !5
  %1065 = load i64, ptr %37, align 8, !tbaa !9
  %1066 = load i64, ptr %37, align 8, !tbaa !9
  %1067 = add nsw i64 %1066, 2
  %1068 = load i64, ptr %26, align 8, !tbaa !9
  %1069 = mul nsw i64 %1067, %1068
  %1070 = add nsw i64 %1065, %1069
  %1071 = getelementptr inbounds double, ptr %1064, i64 %1070
  %1072 = load ptr, ptr %16, align 8, !tbaa !5
  %1073 = load ptr, ptr %15, align 8, !tbaa !5
  %1074 = load i64, ptr %38, align 8, !tbaa !9
  %1075 = load i64, ptr %37, align 8, !tbaa !9
  %1076 = add nsw i64 %1075, 2
  %1077 = load i64, ptr %26, align 8, !tbaa !9
  %1078 = mul nsw i64 %1076, %1077
  %1079 = add nsw i64 %1074, %1078
  %1080 = getelementptr inbounds double, ptr %1073, i64 %1079
  %1081 = load ptr, ptr %16, align 8, !tbaa !5
  %1082 = call i32 @f2c_drot(ptr noundef %28, ptr noundef %1071, ptr noundef %1072, ptr noundef %1080, ptr noundef %1081, ptr noundef %42, ptr noundef %46)
  br label %1083

1083:                                             ; preds = %1058, %1016
  %1084 = load i64, ptr %37, align 8, !tbaa !9
  %1085 = sub nsw i64 %1084, 1
  store i64 %1085, ptr %28, align 8, !tbaa !9
  %1086 = load ptr, ptr %15, align 8, !tbaa !5
  %1087 = load i64, ptr %37, align 8, !tbaa !9
  %1088 = load i64, ptr %26, align 8, !tbaa !9
  %1089 = mul nsw i64 %1087, %1088
  %1090 = add nsw i64 %1089, 1
  %1091 = getelementptr inbounds double, ptr %1086, i64 %1090
  %1092 = load ptr, ptr %15, align 8, !tbaa !5
  %1093 = load i64, ptr %38, align 8, !tbaa !9
  %1094 = load i64, ptr %26, align 8, !tbaa !9
  %1095 = mul nsw i64 %1093, %1094
  %1096 = add nsw i64 %1095, 1
  %1097 = getelementptr inbounds double, ptr %1092, i64 %1096
  %1098 = call i32 @f2c_drot(ptr noundef %28, ptr noundef %1091, ptr noundef @c__1, ptr noundef %1097, ptr noundef @c__1, ptr noundef %42, ptr noundef %46)
  %1099 = load ptr, ptr %13, align 8, !tbaa !5
  %1100 = load i64, ptr %1099, align 8, !tbaa !9
  %1101 = icmp ne i64 %1100, 0
  br i1 %1101, label %1102, label %1117

1102:                                             ; preds = %1083
  %1103 = load ptr, ptr %14, align 8, !tbaa !5
  %1104 = load ptr, ptr %17, align 8, !tbaa !5
  %1105 = load i64, ptr %37, align 8, !tbaa !9
  %1106 = load i64, ptr %24, align 8, !tbaa !9
  %1107 = mul nsw i64 %1105, %1106
  %1108 = add nsw i64 %1107, 1
  %1109 = getelementptr inbounds double, ptr %1104, i64 %1108
  %1110 = load ptr, ptr %17, align 8, !tbaa !5
  %1111 = load i64, ptr %38, align 8, !tbaa !9
  %1112 = load i64, ptr %24, align 8, !tbaa !9
  %1113 = mul nsw i64 %1111, %1112
  %1114 = add nsw i64 %1113, 1
  %1115 = getelementptr inbounds double, ptr %1110, i64 %1114
  %1116 = call i32 @f2c_drot(ptr noundef %1103, ptr noundef %1109, ptr noundef @c__1, ptr noundef %1115, ptr noundef @c__1, ptr noundef %42, ptr noundef %46)
  br label %1117

1117:                                             ; preds = %1102, %1083
  br label %1118

1118:                                             ; preds = %1117, %1012
  br label %1119

1119:                                             ; preds = %1118, %236
  store i32 0, ptr %12, align 4
  store i32 1, ptr %62, align 4
  br label %1122

1120:                                             ; preds = %785, %566, %401
  %1121 = load ptr, ptr %23, align 8, !tbaa !5
  store i64 1, ptr %1121, align 8, !tbaa !9
  store i32 0, ptr %12, align 4
  store i32 1, ptr %62, align 4
  br label %1122

1122:                                             ; preds = %1120, %1119, %103, %93
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #4
  call void @llvm.lifetime.end.p0(i64 24, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 24, ptr %39) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr %35) #4
  call void @llvm.lifetime.end.p0(i64 24, ptr %34) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #4
  call void @llvm.lifetime.end.p0(i64 128, ptr %32) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #4
  %1123 = load i32, ptr %12, align 4
  ret i32 %1123
}

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

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

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

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

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

declare double @dlamch_(ptr noundef) #2

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

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

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

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

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

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

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

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

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


; 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"

@c__1 = external hidden global i64, align 8
@.str = external hidden unnamed_addr constant [5 x i8], align 1
@c__4 = external hidden global i64, align 8
@.str.1 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@c_false = external hidden global i64, align 8
@c_n1 = external hidden global i64, align 8
@c__2 = external hidden global i64, align 8
@c__3 = external hidden global i64, align 8
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @dlaexc_(ptr nocapture noundef readonly %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr nocapture noundef readonly %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr nocapture noundef writeonly %10) local_unnamed_addr #0 {
  %12 = alloca i64, align 8
  %13 = alloca double, align 8
  %14 = alloca [16 x double], align 16
  %15 = alloca [3 x double], align 16
  %16 = alloca [4 x double], align 16
  %17 = alloca i64, align 8
  %18 = alloca i64, align 8
  %19 = alloca i64, align 8
  %20 = alloca [3 x double], align 16
  %21 = alloca [3 x double], align 16
  %22 = alloca i64, align 8
  %23 = alloca double, align 8
  %24 = alloca double, align 8
  %25 = alloca double, align 8
  %26 = alloca double, align 8
  %27 = alloca double, align 8
  %28 = alloca double, align 8
  %29 = alloca double, align 8
  %30 = alloca double, align 8
  %31 = alloca double, align 8
  %32 = alloca i64, align 8
  %33 = alloca double, align 8
  %34 = alloca double, align 8
  %35 = alloca double, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #4
  call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %14) #4
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %15) #4
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %16) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #4
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %20) #4
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %21) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %34) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #4
  %36 = load i64, ptr %3, align 8, !tbaa !5
  %37 = xor i64 %36, -1
  %38 = getelementptr inbounds double, ptr %2, i64 %37
  %39 = load i64, ptr %5, align 8, !tbaa !5
  %40 = xor i64 %39, -1
  %41 = getelementptr inbounds double, ptr %4, i64 %40
  store i64 0, ptr %10, align 8, !tbaa !5
  %42 = load i64, ptr %1, align 8, !tbaa !5
  %43 = icmp eq i64 %42, 0
  br i1 %43, label %453, label %44

44:                                               ; preds = %11
  %45 = load i64, ptr %7, align 8, !tbaa !5
  %46 = icmp eq i64 %45, 0
  br i1 %46, label %453, label %47

47:                                               ; preds = %44
  %48 = load i64, ptr %8, align 8, !tbaa !5
  %49 = icmp eq i64 %48, 0
  br i1 %49, label %453, label %50

50:                                               ; preds = %47
  %51 = load i64, ptr %6, align 8, !tbaa !5
  %52 = add nsw i64 %51, %45
  %53 = icmp sgt i64 %52, %42
  br i1 %53, label %453, label %54

54:                                               ; preds = %50
  %55 = add nsw i64 %51, 1
  store i64 %55, ptr %17, align 8, !tbaa !5
  %56 = add nsw i64 %51, 2
  store i64 %56, ptr %18, align 8, !tbaa !5
  %57 = add nsw i64 %51, 3
  store i64 %57, ptr %19, align 8, !tbaa !5
  %58 = icmp eq i64 %45, 1
  %59 = icmp eq i64 %48, 1
  %or.cond = and i1 %58, %59
  br i1 %or.cond, label %60, label %105

60:                                               ; preds = %54
  %61 = add i64 %36, 1
  %62 = mul i64 %51, %61
  %63 = getelementptr inbounds double, ptr %38, i64 %62
  %64 = load double, ptr %63, align 8, !tbaa !9
  %65 = mul i64 %55, %61
  %66 = getelementptr inbounds double, ptr %38, i64 %65
  %67 = load double, ptr %66, align 8, !tbaa !9
  %68 = fsub double %67, %64
  store double %68, ptr %13, align 8, !tbaa !9
  %69 = mul nsw i64 %55, %36
  %70 = getelementptr double, ptr %38, i64 %51
  %71 = getelementptr double, ptr %70, i64 %69
  %72 = call i32 @dlartg_(ptr noundef %71, ptr noundef nonnull %13, ptr noundef nonnull %23, ptr noundef nonnull %24, ptr noundef nonnull %33) #4
  %73 = load i64, ptr %1, align 8, !tbaa !5
  %.not305 = icmp sgt i64 %56, %73
  br i1 %.not305, label %84, label %74

74:                                               ; preds = %60
  %75 = load i64, ptr %6, align 8, !tbaa !5
  %76 = xor i64 %75, -1
  %77 = add i64 %73, %76
  store i64 %77, ptr %12, align 8, !tbaa !5
  %78 = mul nsw i64 %56, %36
  %79 = getelementptr double, ptr %38, i64 %75
  %80 = getelementptr double, ptr %79, i64 %78
  %81 = getelementptr double, ptr %38, i64 %55
  %82 = getelementptr double, ptr %81, i64 %78
  %83 = call i32 @f2c_drot(ptr noundef nonnull %12, ptr noundef %80, ptr noundef nonnull %3, ptr noundef %82, ptr noundef nonnull %3, ptr noundef nonnull %23, ptr noundef nonnull %24) #4
  br label %84

84:                                               ; preds = %74, %60
  %85 = load i64, ptr %6, align 8, !tbaa !5
  %86 = add nsw i64 %85, -1
  store i64 %86, ptr %12, align 8, !tbaa !5
  %87 = mul nsw i64 %85, %36
  %88 = getelementptr double, ptr %38, i64 %87
  %89 = getelementptr i8, ptr %88, i64 8
  %90 = getelementptr double, ptr %38, i64 %69
  %91 = getelementptr i8, ptr %90, i64 8
  %92 = call i32 @f2c_drot(ptr noundef nonnull %12, ptr noundef %89, ptr noundef nonnull @c__1, ptr noundef %91, ptr noundef nonnull @c__1, ptr noundef nonnull %23, ptr noundef nonnull %24) #4
  %93 = load i64, ptr %6, align 8, !tbaa !5
  %94 = mul i64 %93, %61
  %95 = getelementptr inbounds double, ptr %38, i64 %94
  store double %67, ptr %95, align 8, !tbaa !9
  store double %64, ptr %66, align 8, !tbaa !9
  %96 = load i64, ptr %0, align 8, !tbaa !5
  %.not306 = icmp eq i64 %96, 0
  br i1 %.not306, label %453, label %97

97:                                               ; preds = %84
  %98 = mul nsw i64 %93, %39
  %99 = getelementptr double, ptr %41, i64 %98
  %100 = getelementptr i8, ptr %99, i64 8
  %101 = mul nsw i64 %55, %39
  %102 = getelementptr double, ptr %41, i64 %101
  %103 = getelementptr i8, ptr %102, i64 8
  %104 = call i32 @f2c_drot(ptr noundef nonnull %1, ptr noundef %100, ptr noundef nonnull @c__1, ptr noundef %103, ptr noundef nonnull @c__1, ptr noundef nonnull %23, ptr noundef nonnull %24) #4
  br label %453

105:                                              ; preds = %54
  %106 = add nsw i64 %48, %45
  store i64 %106, ptr %22, align 8, !tbaa !5
  %107 = add i64 %36, 1
  %108 = mul i64 %51, %107
  %109 = getelementptr inbounds double, ptr %38, i64 %108
  %110 = call i32 @dlacpy_(ptr noundef nonnull @.str, ptr noundef nonnull %22, ptr noundef nonnull %22, ptr noundef %109, ptr noundef nonnull %3, ptr noundef nonnull %14, ptr noundef nonnull @c__4) #4
  %111 = call double @dlange_(ptr noundef nonnull @.str.1, ptr noundef nonnull %22, ptr noundef nonnull %22, ptr noundef nonnull %14, ptr noundef nonnull @c__4, ptr noundef %9) #4
  %112 = call double @dlamch_(ptr noundef nonnull @.str.2) #4
  %113 = call double @dlamch_(ptr noundef nonnull @.str.3) #4
  %114 = fdiv double %113, %112
  %115 = fmul double %112, 1.000000e+01
  %116 = fmul double %111, %115
  %117 = fcmp oge double %116, %114
  %118 = select i1 %117, double %116, double %114
  %119 = load i64, ptr %7, align 8, !tbaa !5
  %120 = add nsw i64 %119, 1
  %121 = shl i64 %120, 2
  %122 = mul i64 %120, 5
  %123 = add nsw i64 %122, -5
  %124 = getelementptr inbounds [16 x double], ptr %14, i64 0, i64 %123
  %125 = add nsw i64 %121, -4
  %126 = getelementptr inbounds [16 x double], ptr %14, i64 0, i64 %125
  %127 = call i32 @dlasy2_(ptr noundef nonnull @c_false, ptr noundef nonnull @c_false, ptr noundef nonnull @c_n1, ptr noundef nonnull %7, ptr noundef nonnull %8, ptr noundef nonnull %14, ptr noundef nonnull @c__4, ptr noundef nonnull %124, ptr noundef nonnull @c__4, ptr noundef nonnull %126, ptr noundef nonnull @c__4, ptr noundef nonnull %34, ptr noundef nonnull %16, ptr noundef nonnull @c__2, ptr noundef nonnull %35, ptr noundef nonnull %32) #4
  %128 = load i64, ptr %7, align 8, !tbaa !5
  %129 = shl nsw i64 %128, 1
  %130 = load i64, ptr %8, align 8, !tbaa !5
  %131 = add nsw i64 %129, %130
  switch i64 %131, label %132 [
    i64 6, label %252
    i64 5, label %195
  ]

132:                                              ; preds = %105
  %133 = load double, ptr %34, align 8, !tbaa !9
  store double %133, ptr %15, align 16, !tbaa !9
  %134 = load double, ptr %16, align 16, !tbaa !9
  %135 = getelementptr inbounds i8, ptr %15, i64 8
  store double %134, ptr %135, align 8, !tbaa !9
  %136 = getelementptr inbounds i8, ptr %16, i64 16
  %137 = load double, ptr %136, align 16, !tbaa !9
  %138 = getelementptr inbounds i8, ptr %15, i64 16
  store double %137, ptr %138, align 16, !tbaa !9
  %139 = call i32 @dlarfg_(ptr noundef nonnull @c__3, ptr noundef nonnull %138, ptr noundef nonnull %15, ptr noundef nonnull @c__1, ptr noundef nonnull %29) #4
  store double 1.000000e+00, ptr %138, align 16, !tbaa !9
  %140 = load i64, ptr %6, align 8, !tbaa !5
  %141 = mul i64 %140, %107
  %142 = getelementptr inbounds double, ptr %38, i64 %141
  %143 = load double, ptr %142, align 8, !tbaa !9
  %144 = call i32 @dlarfx_(ptr noundef nonnull @.str.4, ptr noundef nonnull @c__3, ptr noundef nonnull @c__3, ptr noundef nonnull %15, ptr noundef nonnull %29, ptr noundef nonnull %14, ptr noundef nonnull @c__4, ptr noundef %9) #4
  %145 = call i32 @dlarfx_(ptr noundef nonnull @.str.5, ptr noundef nonnull @c__3, ptr noundef nonnull @c__3, ptr noundef nonnull %15, ptr noundef nonnull %29, ptr noundef nonnull %14, ptr noundef nonnull @c__4, ptr noundef %9) #4
  %146 = getelementptr inbounds i8, ptr %14, i64 16
  %147 = load double, ptr %146, align 16
  %148 = fcmp oge double %147, 0.000000e+00
  %149 = fneg double %147
  %150 = select i1 %148, double %147, double %149
  %151 = getelementptr inbounds i8, ptr %14, i64 48
  %152 = load double, ptr %151, align 16
  %153 = fcmp oge double %152, 0.000000e+00
  %154 = fneg double %152
  %155 = select i1 %153, double %152, double %154
  %156 = fcmp oge double %150, %155
  %157 = select i1 %156, double %150, double %155
  %158 = getelementptr inbounds i8, ptr %14, i64 80
  %159 = load double, ptr %158, align 16, !tbaa !9
  %160 = fsub double %159, %143
  %161 = fcmp oge double %160, 0.000000e+00
  %162 = fneg double %160
  %163 = select i1 %161, double %160, double %162
  %164 = fcmp oge double %157, %163
  %165 = select i1 %164, double %157, double %163
  %166 = fcmp ogt double %165, %118
  br i1 %166, label %452, label %167

167:                                              ; preds = %132
  %168 = load i64, ptr %1, align 8, !tbaa !5
  %169 = load i64, ptr %6, align 8, !tbaa !5
  %170 = add i64 %168, 1
  %171 = sub i64 %170, %169
  store i64 %171, ptr %12, align 8, !tbaa !5
  %172 = mul i64 %169, %107
  %173 = getelementptr inbounds double, ptr %38, i64 %172
  %174 = call i32 @dlarfx_(ptr noundef nonnull @.str.4, ptr noundef nonnull @c__3, ptr noundef nonnull %12, ptr noundef nonnull %15, ptr noundef nonnull %29, ptr noundef %173, ptr noundef nonnull %3, ptr noundef %9) #4
  %175 = load i64, ptr %6, align 8, !tbaa !5
  %176 = mul nsw i64 %175, %36
  %177 = getelementptr double, ptr %38, i64 %176
  %178 = getelementptr i8, ptr %177, i64 8
  %179 = call i32 @dlarfx_(ptr noundef nonnull @.str.5, ptr noundef nonnull %17, ptr noundef nonnull @c__3, ptr noundef nonnull %15, ptr noundef nonnull %29, ptr noundef %178, ptr noundef nonnull %3, ptr noundef %9) #4
  %180 = load i64, ptr %6, align 8, !tbaa !5
  %181 = mul nsw i64 %180, %36
  %182 = getelementptr double, ptr %38, i64 %56
  %183 = getelementptr double, ptr %182, i64 %181
  store double 0.000000e+00, ptr %183, align 8, !tbaa !9
  %184 = load i64, ptr %17, align 8, !tbaa !5
  %185 = mul nsw i64 %184, %36
  %186 = getelementptr double, ptr %182, i64 %185
  store double 0.000000e+00, ptr %186, align 8, !tbaa !9
  %187 = mul i64 %56, %107
  %188 = getelementptr inbounds double, ptr %38, i64 %187
  store double %143, ptr %188, align 8, !tbaa !9
  %189 = load i64, ptr %0, align 8, !tbaa !5
  %.not301 = icmp eq i64 %189, 0
  br i1 %.not301, label %352, label %190

190:                                              ; preds = %167
  %191 = mul nsw i64 %180, %39
  %192 = getelementptr double, ptr %41, i64 %191
  %193 = getelementptr i8, ptr %192, i64 8
  %194 = call i32 @dlarfx_(ptr noundef nonnull @.str.5, ptr noundef nonnull %1, ptr noundef nonnull @c__3, ptr noundef nonnull %15, ptr noundef nonnull %29, ptr noundef %193, ptr noundef nonnull %5, ptr noundef %9) #4
  br label %352

195:                                              ; preds = %105
  %196 = getelementptr inbounds i8, ptr %15, i64 8
  %197 = load <2 x double>, ptr %16, align 16, !tbaa !9
  %198 = fneg <2 x double> %197
  store <2 x double> %198, ptr %15, align 16, !tbaa !9
  %199 = load double, ptr %34, align 8, !tbaa !9
  %200 = getelementptr inbounds i8, ptr %15, i64 16
  store double %199, ptr %200, align 16, !tbaa !9
  %201 = call i32 @dlarfg_(ptr noundef nonnull @c__3, ptr noundef nonnull %15, ptr noundef nonnull %196, ptr noundef nonnull @c__1, ptr noundef nonnull %29) #4
  store double 1.000000e+00, ptr %15, align 16, !tbaa !9
  %202 = mul i64 %56, %107
  %203 = getelementptr inbounds double, ptr %38, i64 %202
  %204 = load double, ptr %203, align 8, !tbaa !9
  %205 = call i32 @dlarfx_(ptr noundef nonnull @.str.4, ptr noundef nonnull @c__3, ptr noundef nonnull @c__3, ptr noundef nonnull %15, ptr noundef nonnull %29, ptr noundef nonnull %14, ptr noundef nonnull @c__4, ptr noundef %9) #4
  %206 = call i32 @dlarfx_(ptr noundef nonnull @.str.5, ptr noundef nonnull @c__3, ptr noundef nonnull @c__3, ptr noundef nonnull %15, ptr noundef nonnull %29, ptr noundef nonnull %14, ptr noundef nonnull @c__4, ptr noundef %9) #4
  %207 = getelementptr inbounds i8, ptr %14, i64 8
  %208 = load <2 x double>, ptr %207, align 8
  %209 = fcmp oge <2 x double> %208, zeroinitializer
  %210 = fneg <2 x double> %208
  %211 = select <2 x i1> %209, <2 x double> %208, <2 x double> %210
  %212 = extractelement <2 x double> %211, i64 0
  %213 = extractelement <2 x double> %211, i64 1
  %214 = fcmp oge double %212, %213
  %215 = select i1 %214, double %212, double %213
  %216 = load double, ptr %14, align 16, !tbaa !9
  %217 = fsub double %216, %204
  %218 = fcmp oge double %217, 0.000000e+00
  %219 = fneg double %217
  %220 = select i1 %218, double %217, double %219
  %221 = fcmp oge double %215, %220
  %222 = select i1 %221, double %215, double %220
  %223 = fcmp ogt double %222, %118
  br i1 %223, label %452, label %224

224:                                              ; preds = %195
  %225 = load i64, ptr %6, align 8, !tbaa !5
  %226 = mul nsw i64 %225, %36
  %227 = getelementptr double, ptr %38, i64 %226
  %228 = getelementptr i8, ptr %227, i64 8
  %229 = call i32 @dlarfx_(ptr noundef nonnull @.str.5, ptr noundef nonnull %18, ptr noundef nonnull @c__3, ptr noundef nonnull %15, ptr noundef nonnull %29, ptr noundef %228, ptr noundef nonnull %3, ptr noundef %9) #4
  %230 = load i64, ptr %1, align 8, !tbaa !5
  %231 = load i64, ptr %6, align 8, !tbaa !5
  %232 = sub nsw i64 %230, %231
  store i64 %232, ptr %12, align 8, !tbaa !5
  %233 = mul nsw i64 %55, %36
  %234 = getelementptr double, ptr %38, i64 %231
  %235 = getelementptr double, ptr %234, i64 %233
  %236 = call i32 @dlarfx_(ptr noundef nonnull @.str.4, ptr noundef nonnull @c__3, ptr noundef nonnull %12, ptr noundef nonnull %15, ptr noundef nonnull %29, ptr noundef %235, ptr noundef nonnull %3, ptr noundef %9) #4
  %237 = load i64, ptr %6, align 8, !tbaa !5
  %238 = mul i64 %237, %107
  %239 = getelementptr inbounds double, ptr %38, i64 %238
  store double %204, ptr %239, align 8, !tbaa !9
  %240 = mul nsw i64 %237, %36
  %241 = getelementptr double, ptr %38, i64 %55
  %242 = getelementptr double, ptr %241, i64 %240
  store double 0.000000e+00, ptr %242, align 8, !tbaa !9
  %243 = load i64, ptr %18, align 8, !tbaa !5
  %244 = getelementptr double, ptr %38, i64 %243
  %245 = getelementptr double, ptr %244, i64 %240
  store double 0.000000e+00, ptr %245, align 8, !tbaa !9
  %246 = load i64, ptr %0, align 8, !tbaa !5
  %.not = icmp eq i64 %246, 0
  br i1 %.not, label %352, label %247

247:                                              ; preds = %224
  %248 = mul nsw i64 %237, %39
  %249 = getelementptr double, ptr %41, i64 %248
  %250 = getelementptr i8, ptr %249, i64 8
  %251 = call i32 @dlarfx_(ptr noundef nonnull @.str.5, ptr noundef nonnull %1, ptr noundef nonnull @c__3, ptr noundef nonnull %15, ptr noundef nonnull %29, ptr noundef %250, ptr noundef nonnull %5, ptr noundef %9) #4
  br label %352

252:                                              ; preds = %105
  %253 = getelementptr inbounds i8, ptr %20, i64 8
  %254 = load <2 x double>, ptr %16, align 16, !tbaa !9
  %255 = fneg <2 x double> %254
  store <2 x double> %255, ptr %20, align 16, !tbaa !9
  %256 = load double, ptr %34, align 8, !tbaa !9
  %257 = getelementptr inbounds i8, ptr %20, i64 16
  store double %256, ptr %257, align 16, !tbaa !9
  %258 = call i32 @dlarfg_(ptr noundef nonnull @c__3, ptr noundef nonnull %20, ptr noundef nonnull %253, ptr noundef nonnull @c__1, ptr noundef nonnull %30) #4
  store double 1.000000e+00, ptr %20, align 16, !tbaa !9
  %259 = load double, ptr %30, align 8, !tbaa !9
  %260 = getelementptr inbounds i8, ptr %16, i64 16
  %261 = load double, ptr %260, align 16, !tbaa !9
  %262 = load double, ptr %253, align 8, !tbaa !9
  %263 = getelementptr inbounds i8, ptr %16, i64 24
  %264 = load double, ptr %263, align 8, !tbaa !9
  %265 = call double @llvm.fmuladd.f64(double %262, double %264, double %261)
  %266 = fmul double %265, %259
  %267 = fneg double %264
  %268 = call double @llvm.fmuladd.f64(double %266, double %262, double %267)
  store double %268, ptr %21, align 16, !tbaa !9
  %269 = load double, ptr %257, align 16, !tbaa !9
  %270 = fmul double %269, %266
  %271 = getelementptr inbounds i8, ptr %21, i64 8
  store double %270, ptr %271, align 8, !tbaa !9
  %272 = load double, ptr %34, align 8, !tbaa !9
  %273 = getelementptr inbounds i8, ptr %21, i64 16
  store double %272, ptr %273, align 16, !tbaa !9
  %274 = call i32 @dlarfg_(ptr noundef nonnull @c__3, ptr noundef nonnull %21, ptr noundef nonnull %271, ptr noundef nonnull @c__1, ptr noundef nonnull %31) #4
  store double 1.000000e+00, ptr %21, align 16, !tbaa !9
  %275 = call i32 @dlarfx_(ptr noundef nonnull @.str.4, ptr noundef nonnull @c__3, ptr noundef nonnull @c__4, ptr noundef nonnull %20, ptr noundef nonnull %30, ptr noundef nonnull %14, ptr noundef nonnull @c__4, ptr noundef %9) #4
  %276 = call i32 @dlarfx_(ptr noundef nonnull @.str.5, ptr noundef nonnull @c__4, ptr noundef nonnull @c__3, ptr noundef nonnull %20, ptr noundef nonnull %30, ptr noundef nonnull %14, ptr noundef nonnull @c__4, ptr noundef %9) #4
  %277 = getelementptr inbounds i8, ptr %14, i64 8
  %278 = call i32 @dlarfx_(ptr noundef nonnull @.str.4, ptr noundef nonnull @c__3, ptr noundef nonnull @c__4, ptr noundef nonnull %21, ptr noundef nonnull %31, ptr noundef nonnull %277, ptr noundef nonnull @c__4, ptr noundef %9) #4
  %279 = getelementptr inbounds i8, ptr %14, i64 32
  %280 = call i32 @dlarfx_(ptr noundef nonnull @.str.5, ptr noundef nonnull @c__4, ptr noundef nonnull @c__3, ptr noundef nonnull %21, ptr noundef nonnull %31, ptr noundef nonnull %279, ptr noundef nonnull @c__4, ptr noundef %9) #4
  %281 = getelementptr inbounds i8, ptr %14, i64 16
  %282 = load double, ptr %281, align 16
  %283 = fcmp oge double %282, 0.000000e+00
  %284 = fneg double %282
  %285 = select i1 %283, double %282, double %284
  %286 = getelementptr inbounds i8, ptr %14, i64 48
  %287 = load double, ptr %286, align 16
  %288 = fcmp oge double %287, 0.000000e+00
  %289 = fneg double %287
  %290 = select i1 %288, double %287, double %289
  %291 = fcmp oge double %285, %290
  %292 = select i1 %291, double %285, double %290
  %293 = getelementptr inbounds i8, ptr %14, i64 24
  %294 = load double, ptr %293, align 8
  %295 = fcmp oge double %294, 0.000000e+00
  %296 = fneg double %294
  %297 = select i1 %295, double %294, double %296
  %298 = fcmp oge double %292, %297
  %299 = select i1 %298, double %292, double %297
  %300 = getelementptr inbounds i8, ptr %14, i64 56
  %301 = load double, ptr %300, align 8
  %302 = fcmp oge double %301, 0.000000e+00
  %303 = fneg double %301
  %304 = select i1 %302, double %301, double %303
  %305 = fcmp oge double %299, %304
  %306 = select i1 %305, double %299, double %304
  %307 = fcmp ogt double %306, %118
  br i1 %307, label %452, label %308

308:                                              ; preds = %252
  %309 = load i64, ptr %1, align 8, !tbaa !5
  %310 = load i64, ptr %6, align 8, !tbaa !5
  %311 = add i64 %309, 1
  %312 = sub i64 %311, %310
  store i64 %312, ptr %12, align 8, !tbaa !5
  %313 = mul i64 %310, %107
  %314 = getelementptr inbounds double, ptr %38, i64 %313
  %315 = call i32 @dlarfx_(ptr noundef nonnull @.str.4, ptr noundef nonnull @c__3, ptr noundef nonnull %12, ptr noundef nonnull %20, ptr noundef nonnull %30, ptr noundef %314, ptr noundef nonnull %3, ptr noundef %9) #4
  %316 = load i64, ptr %6, align 8, !tbaa !5
  %317 = mul nsw i64 %316, %36
  %318 = getelementptr double, ptr %38, i64 %317
  %319 = getelementptr i8, ptr %318, i64 8
  %320 = call i32 @dlarfx_(ptr noundef nonnull @.str.5, ptr noundef nonnull %19, ptr noundef nonnull @c__3, ptr noundef nonnull %20, ptr noundef nonnull %30, ptr noundef %319, ptr noundef nonnull %3, ptr noundef %9) #4
  %321 = load i64, ptr %1, align 8, !tbaa !5
  %322 = load i64, ptr %6, align 8, !tbaa !5
  %323 = add i64 %321, 1
  %324 = sub i64 %323, %322
  store i64 %324, ptr %12, align 8, !tbaa !5
  %325 = mul nsw i64 %322, %36
  %326 = getelementptr double, ptr %38, i64 %55
  %327 = getelementptr double, ptr %326, i64 %325
  %328 = call i32 @dlarfx_(ptr noundef nonnull @.str.4, ptr noundef nonnull @c__3, ptr noundef nonnull %12, ptr noundef nonnull %21, ptr noundef nonnull %31, ptr noundef %327, ptr noundef nonnull %3, ptr noundef %9) #4
  %329 = mul nsw i64 %55, %36
  %330 = getelementptr double, ptr %38, i64 %329
  %331 = getelementptr i8, ptr %330, i64 8
  %332 = call i32 @dlarfx_(ptr noundef nonnull @.str.5, ptr noundef nonnull %19, ptr noundef nonnull @c__3, ptr noundef nonnull %21, ptr noundef nonnull %31, ptr noundef %331, ptr noundef nonnull %3, ptr noundef %9) #4
  %333 = load i64, ptr %6, align 8, !tbaa !5
  %334 = mul nsw i64 %333, %36
  %335 = getelementptr double, ptr %38, i64 %56
  %336 = getelementptr double, ptr %335, i64 %334
  store double 0.000000e+00, ptr %336, align 8, !tbaa !9
  %337 = getelementptr double, ptr %335, i64 %329
  store double 0.000000e+00, ptr %337, align 8, !tbaa !9
  %338 = load i64, ptr %19, align 8, !tbaa !5
  %339 = getelementptr double, ptr %38, i64 %338
  %340 = getelementptr double, ptr %339, i64 %334
  store double 0.000000e+00, ptr %340, align 8, !tbaa !9
  %341 = getelementptr double, ptr %339, i64 %329
  store double 0.000000e+00, ptr %341, align 8, !tbaa !9
  %342 = load i64, ptr %0, align 8, !tbaa !5
  %.not300 = icmp eq i64 %342, 0
  br i1 %.not300, label %352, label %343

343:                                              ; preds = %308
  %344 = mul nsw i64 %333, %39
  %345 = getelementptr double, ptr %41, i64 %344
  %346 = getelementptr i8, ptr %345, i64 8
  %347 = call i32 @dlarfx_(ptr noundef nonnull @.str.5, ptr noundef nonnull %1, ptr noundef nonnull @c__3, ptr noundef nonnull %20, ptr noundef nonnull %30, ptr noundef %346, ptr noundef nonnull %5, ptr noundef %9) #4
  %348 = mul nsw i64 %55, %39
  %349 = getelementptr double, ptr %41, i64 %348
  %350 = getelementptr i8, ptr %349, i64 8
  %351 = call i32 @dlarfx_(ptr noundef nonnull @.str.5, ptr noundef nonnull %1, ptr noundef nonnull @c__3, ptr noundef nonnull %21, ptr noundef nonnull %31, ptr noundef %350, ptr noundef nonnull %5, ptr noundef %9) #4
  br label %352

352:                                              ; preds = %308, %343, %224, %247, %167, %190
  %353 = load i64, ptr %8, align 8, !tbaa !5
  %354 = icmp eq i64 %353, 2
  br i1 %354, label %355, label %400

355:                                              ; preds = %352
  %356 = load i64, ptr %6, align 8, !tbaa !5
  %357 = mul nsw i64 %356, %36
  %358 = getelementptr double, ptr %38, i64 %356
  %359 = getelementptr double, ptr %358, i64 %357
  %360 = load i64, ptr %17, align 8, !tbaa !5
  %361 = mul nsw i64 %360, %36
  %362 = getelementptr double, ptr %358, i64 %361
  %363 = getelementptr double, ptr %38, i64 %360
  %364 = getelementptr double, ptr %363, i64 %357
  %365 = getelementptr double, ptr %363, i64 %361
  %366 = call i32 @dlanv2_(ptr noundef %359, ptr noundef %362, ptr noundef %364, ptr noundef %365, ptr noundef nonnull %27, ptr noundef nonnull %25, ptr noundef nonnull %28, ptr noundef nonnull %26, ptr noundef nonnull %23, ptr noundef nonnull %24) #4
  %367 = load i64, ptr %1, align 8, !tbaa !5
  %368 = load i64, ptr %6, align 8, !tbaa !5
  %369 = xor i64 %368, -1
  %370 = add i64 %367, %369
  store i64 %370, ptr %12, align 8, !tbaa !5
  %371 = add nsw i64 %368, 2
  %372 = mul nsw i64 %371, %36
  %373 = getelementptr double, ptr %38, i64 %368
  %374 = getelementptr double, ptr %373, i64 %372
  %375 = load i64, ptr %17, align 8, !tbaa !5
  %376 = getelementptr double, ptr %38, i64 %375
  %377 = getelementptr double, ptr %376, i64 %372
  %378 = call i32 @f2c_drot(ptr noundef nonnull %12, ptr noundef %374, ptr noundef nonnull %3, ptr noundef %377, ptr noundef nonnull %3, ptr noundef nonnull %23, ptr noundef nonnull %24) #4
  %379 = load i64, ptr %6, align 8, !tbaa !5
  %380 = add nsw i64 %379, -1
  store i64 %380, ptr %12, align 8, !tbaa !5
  %381 = mul nsw i64 %379, %36
  %382 = getelementptr double, ptr %38, i64 %381
  %383 = getelementptr i8, ptr %382, i64 8
  %384 = load i64, ptr %17, align 8, !tbaa !5
  %385 = mul nsw i64 %384, %36
  %386 = getelementptr double, ptr %38, i64 %385
  %387 = getelementptr i8, ptr %386, i64 8
  %388 = call i32 @f2c_drot(ptr noundef nonnull %12, ptr noundef %383, ptr noundef nonnull @c__1, ptr noundef %387, ptr noundef nonnull @c__1, ptr noundef nonnull %23, ptr noundef nonnull %24) #4
  %389 = load i64, ptr %0, align 8, !tbaa !5
  %.not302 = icmp eq i64 %389, 0
  br i1 %.not302, label %400, label %390

390:                                              ; preds = %355
  %391 = load i64, ptr %6, align 8, !tbaa !5
  %392 = mul nsw i64 %391, %39
  %393 = getelementptr double, ptr %41, i64 %392
  %394 = getelementptr i8, ptr %393, i64 8
  %395 = load i64, ptr %17, align 8, !tbaa !5
  %396 = mul nsw i64 %395, %39
  %397 = getelementptr double, ptr %41, i64 %396
  %398 = getelementptr i8, ptr %397, i64 8
  %399 = call i32 @f2c_drot(ptr noundef nonnull %1, ptr noundef %394, ptr noundef nonnull @c__1, ptr noundef %398, ptr noundef nonnull @c__1, ptr noundef nonnull %23, ptr noundef nonnull %24) #4
  br label %400

400:                                              ; preds = %355, %390, %352
  %401 = load i64, ptr %7, align 8, !tbaa !5
  %402 = icmp eq i64 %401, 2
  br i1 %402, label %403, label %453

403:                                              ; preds = %400
  %404 = load i64, ptr %6, align 8, !tbaa !5
  %405 = load i64, ptr %8, align 8, !tbaa !5
  %406 = add nsw i64 %405, %404
  store i64 %406, ptr %18, align 8, !tbaa !5
  %407 = add nsw i64 %406, 1
  store i64 %407, ptr %19, align 8, !tbaa !5
  %408 = mul nsw i64 %406, %36
  %409 = getelementptr double, ptr %38, i64 %406
  %410 = getelementptr double, ptr %409, i64 %408
  %411 = mul nsw i64 %407, %36
  %412 = getelementptr double, ptr %409, i64 %411
  %413 = getelementptr double, ptr %38, i64 %407
  %414 = getelementptr double, ptr %413, i64 %408
  %415 = getelementptr double, ptr %413, i64 %411
  %416 = call i32 @dlanv2_(ptr noundef %410, ptr noundef %412, ptr noundef %414, ptr noundef %415, ptr noundef nonnull %27, ptr noundef nonnull %25, ptr noundef nonnull %28, ptr noundef nonnull %26, ptr noundef nonnull %23, ptr noundef nonnull %24) #4
  %417 = load i64, ptr %18, align 8, !tbaa !5
  %418 = add nsw i64 %417, 2
  %419 = load i64, ptr %1, align 8, !tbaa !5
  %.not303 = icmp sgt i64 %418, %419
  br i1 %.not303, label %430, label %420

420:                                              ; preds = %403
  %421 = xor i64 %417, -1
  %422 = add i64 %419, %421
  store i64 %422, ptr %12, align 8, !tbaa !5
  %423 = mul nsw i64 %418, %36
  %424 = getelementptr double, ptr %38, i64 %417
  %425 = getelementptr double, ptr %424, i64 %423
  %426 = load i64, ptr %19, align 8, !tbaa !5
  %427 = getelementptr double, ptr %38, i64 %426
  %428 = getelementptr double, ptr %427, i64 %423
  %429 = call i32 @f2c_drot(ptr noundef nonnull %12, ptr noundef %425, ptr noundef nonnull %3, ptr noundef %428, ptr noundef nonnull %3, ptr noundef nonnull %23, ptr noundef nonnull %24) #4
  %.pre = load i64, ptr %18, align 8, !tbaa !5
  br label %430

430:                                              ; preds = %420, %403
  %431 = phi i64 [ %.pre, %420 ], [ %417, %403 ]
  %432 = add nsw i64 %431, -1
  store i64 %432, ptr %12, align 8, !tbaa !5
  %433 = mul nsw i64 %431, %36
  %434 = getelementptr double, ptr %38, i64 %433
  %435 = getelementptr i8, ptr %434, i64 8
  %436 = load i64, ptr %19, align 8, !tbaa !5
  %437 = mul nsw i64 %436, %36
  %438 = getelementptr double, ptr %38, i64 %437
  %439 = getelementptr i8, ptr %438, i64 8
  %440 = call i32 @f2c_drot(ptr noundef nonnull %12, ptr noundef %435, ptr noundef nonnull @c__1, ptr noundef %439, ptr noundef nonnull @c__1, ptr noundef nonnull %23, ptr noundef nonnull %24) #4
  %441 = load i64, ptr %0, align 8, !tbaa !5
  %.not304 = icmp eq i64 %441, 0
  br i1 %.not304, label %453, label %442

442:                                              ; preds = %430
  %443 = load i64, ptr %18, align 8, !tbaa !5
  %444 = mul nsw i64 %443, %39
  %445 = getelementptr double, ptr %41, i64 %444
  %446 = getelementptr i8, ptr %445, i64 8
  %447 = load i64, ptr %19, align 8, !tbaa !5
  %448 = mul nsw i64 %447, %39
  %449 = getelementptr double, ptr %41, i64 %448
  %450 = getelementptr i8, ptr %449, i64 8
  %451 = call i32 @f2c_drot(ptr noundef nonnull %1, ptr noundef %446, ptr noundef nonnull @c__1, ptr noundef %450, ptr noundef nonnull @c__1, ptr noundef nonnull %23, ptr noundef nonnull %24) #4
  br label %453

452:                                              ; preds = %252, %195, %132
  store i64 1, ptr %10, align 8, !tbaa !5
  br label %453

453:                                              ; preds = %97, %84, %430, %442, %400, %50, %11, %44, %47, %452
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #4
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %21) #4
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %20) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #4
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15) #4
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %14) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #4
  ret i32 0
}

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

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

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

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

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

declare double @dlamch_(ptr noundef) local_unnamed_addr #2

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

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

declare i32 @dlarfx_(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 speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, double) #3

declare i32 @dlanv2_(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

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

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

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


; Effective O3 passes: DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,PostOrderFunctionAttrsPass,ReassociatePass,SLPVectorizerPass,SROAPass,SimplifyCFGPass