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

; 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
@c_n1 = external hidden global i64, align 8
@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@c_true = external hidden global i64, align 8
@.str.2 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@c_b17 = external hidden global double, align 8
@c_b18 = external hidden global double, align 8
@c__12 = external hidden global i64, align 8
@.str.6 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [2 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local i32 @dlaqr3_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef %13, ptr noundef %14, ptr noundef %15, ptr noundef %16, ptr noundef %17, ptr noundef %18, ptr noundef %19, ptr noundef %20, ptr noundef %21, ptr noundef %22, ptr noundef %23, ptr noundef %24, ptr noundef %25) #0 {
  %27 = alloca i32, align 4
  %28 = alloca ptr, align 8
  %29 = alloca ptr, align 8
  %30 = alloca ptr, align 8
  %31 = alloca ptr, align 8
  %32 = alloca ptr, align 8
  %33 = alloca ptr, align 8
  %34 = alloca ptr, align 8
  %35 = alloca ptr, align 8
  %36 = alloca ptr, align 8
  %37 = alloca ptr, align 8
  %38 = alloca ptr, align 8
  %39 = alloca ptr, align 8
  %40 = alloca ptr, align 8
  %41 = alloca ptr, align 8
  %42 = alloca ptr, align 8
  %43 = alloca ptr, align 8
  %44 = alloca ptr, align 8
  %45 = alloca ptr, align 8
  %46 = alloca ptr, align 8
  %47 = alloca ptr, align 8
  %48 = alloca ptr, align 8
  %49 = alloca ptr, align 8
  %50 = alloca ptr, align 8
  %51 = alloca ptr, align 8
  %52 = alloca ptr, align 8
  %53 = alloca ptr, align 8
  %54 = alloca i64, align 8
  %55 = alloca i64, align 8
  %56 = alloca i64, align 8
  %57 = alloca i64, align 8
  %58 = alloca i64, align 8
  %59 = alloca i64, align 8
  %60 = alloca i64, align 8
  %61 = alloca i64, align 8
  %62 = alloca i64, align 8
  %63 = alloca i64, align 8
  %64 = alloca i64, align 8
  %65 = alloca i64, align 8
  %66 = alloca i64, align 8
  %67 = alloca i64, align 8
  %68 = alloca double, align 8
  %69 = alloca double, align 8
  %70 = alloca double, align 8
  %71 = alloca double, align 8
  %72 = alloca double, align 8
  %73 = alloca double, align 8
  %74 = alloca i64, align 8
  %75 = alloca i64, align 8
  %76 = alloca i64, align 8
  %77 = alloca double, align 8
  %78 = alloca double, align 8
  %79 = alloca double, align 8
  %80 = alloca double, align 8
  %81 = alloca double, align 8
  %82 = alloca double, align 8
  %83 = alloca double, align 8
  %84 = alloca i64, align 8
  %85 = alloca double, align 8
  %86 = alloca double, align 8
  %87 = alloca double, align 8
  %88 = alloca i64, align 8
  %89 = alloca double, align 8
  %90 = alloca double, align 8
  %91 = alloca i64, align 8
  %92 = alloca i64, align 8
  %93 = alloca i64, align 8
  %94 = alloca double, align 8
  %95 = alloca i64, align 8
  %96 = alloca i64, align 8
  %97 = alloca i64, align 8
  %98 = alloca i64, align 8
  %99 = alloca i64, align 8
  %100 = alloca i64, align 8
  %101 = alloca i64, align 8
  %102 = alloca i64, align 8
  %103 = alloca i64, align 8
  %104 = alloca i64, align 8
  %105 = alloca i64, align 8
  %106 = alloca double, align 8
  %107 = alloca double, align 8
  %108 = alloca i64, align 8
  %109 = alloca double, align 8
  %110 = alloca i64, align 8
  %111 = alloca i32, align 4
  store ptr %0, ptr %28, align 8, !tbaa !5
  store ptr %1, ptr %29, align 8, !tbaa !5
  store ptr %2, ptr %30, align 8, !tbaa !5
  store ptr %3, ptr %31, align 8, !tbaa !5
  store ptr %4, ptr %32, align 8, !tbaa !5
  store ptr %5, ptr %33, align 8, !tbaa !5
  store ptr %6, ptr %34, align 8, !tbaa !5
  store ptr %7, ptr %35, align 8, !tbaa !5
  store ptr %8, ptr %36, align 8, !tbaa !5
  store ptr %9, ptr %37, align 8, !tbaa !5
  store ptr %10, ptr %38, align 8, !tbaa !5
  store ptr %11, ptr %39, align 8, !tbaa !5
  store ptr %12, ptr %40, align 8, !tbaa !5
  store ptr %13, ptr %41, align 8, !tbaa !5
  store ptr %14, ptr %42, align 8, !tbaa !5
  store ptr %15, ptr %43, align 8, !tbaa !5
  store ptr %16, ptr %44, align 8, !tbaa !5
  store ptr %17, ptr %45, align 8, !tbaa !5
  store ptr %18, ptr %46, align 8, !tbaa !5
  store ptr %19, ptr %47, align 8, !tbaa !5
  store ptr %20, ptr %48, align 8, !tbaa !5
  store ptr %21, ptr %49, align 8, !tbaa !5
  store ptr %22, ptr %50, align 8, !tbaa !5
  store ptr %23, ptr %51, align 8, !tbaa !5
  store ptr %24, ptr %52, align 8, !tbaa !5
  store ptr %25, ptr %53, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %80) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %81) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %82) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %83) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %84) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %85) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %86) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %87) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %88) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %89) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %90) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %91) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %92) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %93) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %94) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %95) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %96) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %97) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %98) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %99) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %100) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %101) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %102) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %103) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %104) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %105) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %106) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %107) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %108) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %109) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %110) #5
  %112 = load ptr, ptr %35, align 8, !tbaa !5
  %113 = load i64, ptr %112, align 8, !tbaa !9
  store i64 %113, ptr %54, align 8, !tbaa !9
  %114 = load i64, ptr %54, align 8, !tbaa !9
  %115 = add nsw i64 1, %114
  store i64 %115, ptr %55, align 8, !tbaa !9
  %116 = load i64, ptr %55, align 8, !tbaa !9
  %117 = load ptr, ptr %34, align 8, !tbaa !5
  %118 = sub i64 0, %116
  %119 = getelementptr inbounds double, ptr %117, i64 %118
  store ptr %119, ptr %34, align 8, !tbaa !5
  %120 = load ptr, ptr %39, align 8, !tbaa !5
  %121 = load i64, ptr %120, align 8, !tbaa !9
  store i64 %121, ptr %62, align 8, !tbaa !9
  %122 = load i64, ptr %62, align 8, !tbaa !9
  %123 = add nsw i64 1, %122
  store i64 %123, ptr %63, align 8, !tbaa !9
  %124 = load i64, ptr %63, align 8, !tbaa !9
  %125 = load ptr, ptr %38, align 8, !tbaa !5
  %126 = sub i64 0, %124
  %127 = getelementptr inbounds double, ptr %125, i64 %126
  store ptr %127, ptr %38, align 8, !tbaa !5
  %128 = load ptr, ptr %42, align 8, !tbaa !5
  %129 = getelementptr inbounds double, ptr %128, i32 -1
  store ptr %129, ptr %42, align 8, !tbaa !5
  %130 = load ptr, ptr %43, align 8, !tbaa !5
  %131 = getelementptr inbounds double, ptr %130, i32 -1
  store ptr %131, ptr %43, align 8, !tbaa !5
  %132 = load ptr, ptr %45, align 8, !tbaa !5
  %133 = load i64, ptr %132, align 8, !tbaa !9
  store i64 %133, ptr %58, align 8, !tbaa !9
  %134 = load i64, ptr %58, align 8, !tbaa !9
  %135 = add nsw i64 1, %134
  store i64 %135, ptr %59, align 8, !tbaa !9
  %136 = load i64, ptr %59, align 8, !tbaa !9
  %137 = load ptr, ptr %44, align 8, !tbaa !5
  %138 = sub i64 0, %136
  %139 = getelementptr inbounds double, ptr %137, i64 %138
  store ptr %139, ptr %44, align 8, !tbaa !5
  %140 = load ptr, ptr %48, align 8, !tbaa !5
  %141 = load i64, ptr %140, align 8, !tbaa !9
  store i64 %141, ptr %56, align 8, !tbaa !9
  %142 = load i64, ptr %56, align 8, !tbaa !9
  %143 = add nsw i64 1, %142
  store i64 %143, ptr %57, align 8, !tbaa !9
  %144 = load i64, ptr %57, align 8, !tbaa !9
  %145 = load ptr, ptr %47, align 8, !tbaa !5
  %146 = sub i64 0, %144
  %147 = getelementptr inbounds double, ptr %145, i64 %146
  store ptr %147, ptr %47, align 8, !tbaa !5
  %148 = load ptr, ptr %51, align 8, !tbaa !5
  %149 = load i64, ptr %148, align 8, !tbaa !9
  store i64 %149, ptr %60, align 8, !tbaa !9
  %150 = load i64, ptr %60, align 8, !tbaa !9
  %151 = add nsw i64 1, %150
  store i64 %151, ptr %61, align 8, !tbaa !9
  %152 = load i64, ptr %61, align 8, !tbaa !9
  %153 = load ptr, ptr %50, align 8, !tbaa !5
  %154 = sub i64 0, %152
  %155 = getelementptr inbounds double, ptr %153, i64 %154
  store ptr %155, ptr %50, align 8, !tbaa !5
  %156 = load ptr, ptr %52, align 8, !tbaa !5
  %157 = getelementptr inbounds double, ptr %156, i32 -1
  store ptr %157, ptr %52, align 8, !tbaa !5
  %158 = load ptr, ptr %33, align 8, !tbaa !5
  %159 = load i64, ptr %158, align 8, !tbaa !9
  store i64 %159, ptr %64, align 8, !tbaa !9
  %160 = load ptr, ptr %32, align 8, !tbaa !5
  %161 = load i64, ptr %160, align 8, !tbaa !9
  %162 = load ptr, ptr %31, align 8, !tbaa !5
  %163 = load i64, ptr %162, align 8, !tbaa !9
  %164 = sub nsw i64 %161, %163
  %165 = add nsw i64 %164, 1
  store i64 %165, ptr %65, align 8, !tbaa !9
  %166 = load i64, ptr %64, align 8, !tbaa !9
  %167 = load i64, ptr %65, align 8, !tbaa !9
  %168 = icmp sle i64 %166, %167
  br i1 %168, label %169, label %171

169:                                              ; preds = %26
  %170 = load i64, ptr %64, align 8, !tbaa !9
  br label %173

171:                                              ; preds = %26
  %172 = load i64, ptr %65, align 8, !tbaa !9
  br label %173

173:                                              ; preds = %171, %169
  %174 = phi i64 [ %170, %169 ], [ %172, %171 ]
  store i64 %174, ptr %84, align 8, !tbaa !9
  %175 = load i64, ptr %84, align 8, !tbaa !9
  %176 = icmp sle i64 %175, 2
  br i1 %176, label %177, label %178

177:                                              ; preds = %173
  store i64 1, ptr %110, align 8, !tbaa !9
  br label %252

178:                                              ; preds = %173
  %179 = load i64, ptr %84, align 8, !tbaa !9
  %180 = sub nsw i64 %179, 1
  store i64 %180, ptr %64, align 8, !tbaa !9
  %181 = load ptr, ptr %47, align 8, !tbaa !5
  %182 = load i64, ptr %57, align 8, !tbaa !9
  %183 = getelementptr inbounds double, ptr %181, i64 %182
  %184 = load ptr, ptr %48, align 8, !tbaa !5
  %185 = load ptr, ptr %52, align 8, !tbaa !5
  %186 = getelementptr inbounds double, ptr %185, i64 1
  %187 = load ptr, ptr %52, align 8, !tbaa !5
  %188 = getelementptr inbounds double, ptr %187, i64 1
  %189 = call i32 @dgehrd_(ptr noundef %84, ptr noundef @c__1, ptr noundef %64, ptr noundef %183, ptr noundef %184, ptr noundef %186, ptr noundef %188, ptr noundef @c_n1, ptr noundef %97)
  %190 = load ptr, ptr %52, align 8, !tbaa !5
  %191 = getelementptr inbounds double, ptr %190, i64 1
  %192 = load double, ptr %191, align 8, !tbaa !11
  %193 = fptosi double %192 to i64
  store i64 %193, ptr %91, align 8, !tbaa !9
  %194 = load i64, ptr %84, align 8, !tbaa !9
  %195 = sub nsw i64 %194, 1
  store i64 %195, ptr %64, align 8, !tbaa !9
  %196 = load ptr, ptr %47, align 8, !tbaa !5
  %197 = load i64, ptr %57, align 8, !tbaa !9
  %198 = getelementptr inbounds double, ptr %196, i64 %197
  %199 = load ptr, ptr %48, align 8, !tbaa !5
  %200 = load ptr, ptr %52, align 8, !tbaa !5
  %201 = getelementptr inbounds double, ptr %200, i64 1
  %202 = load ptr, ptr %44, align 8, !tbaa !5
  %203 = load i64, ptr %59, align 8, !tbaa !9
  %204 = getelementptr inbounds double, ptr %202, i64 %203
  %205 = load ptr, ptr %45, align 8, !tbaa !5
  %206 = load ptr, ptr %52, align 8, !tbaa !5
  %207 = getelementptr inbounds double, ptr %206, i64 1
  %208 = call i32 @dormhr_(ptr noundef @.str, ptr noundef @.str.1, ptr noundef %84, ptr noundef %84, ptr noundef @c__1, ptr noundef %64, ptr noundef %198, ptr noundef %199, ptr noundef %201, ptr noundef %204, ptr noundef %205, ptr noundef %207, ptr noundef @c_n1, ptr noundef %97)
  %209 = load ptr, ptr %52, align 8, !tbaa !5
  %210 = getelementptr inbounds double, ptr %209, i64 1
  %211 = load double, ptr %210, align 8, !tbaa !11
  %212 = fptosi double %211 to i64
  store i64 %212, ptr %92, align 8, !tbaa !9
  %213 = load ptr, ptr %47, align 8, !tbaa !5
  %214 = load i64, ptr %57, align 8, !tbaa !9
  %215 = getelementptr inbounds double, ptr %213, i64 %214
  %216 = load ptr, ptr %48, align 8, !tbaa !5
  %217 = load ptr, ptr %42, align 8, !tbaa !5
  %218 = getelementptr inbounds double, ptr %217, i64 1
  %219 = load ptr, ptr %43, align 8, !tbaa !5
  %220 = getelementptr inbounds double, ptr %219, i64 1
  %221 = load ptr, ptr %44, align 8, !tbaa !5
  %222 = load i64, ptr %59, align 8, !tbaa !9
  %223 = getelementptr inbounds double, ptr %221, i64 %222
  %224 = load ptr, ptr %45, align 8, !tbaa !5
  %225 = load ptr, ptr %52, align 8, !tbaa !5
  %226 = getelementptr inbounds double, ptr %225, i64 1
  %227 = call i32 @dlaqr4_(ptr noundef @c_true, ptr noundef @c_true, ptr noundef %84, ptr noundef @c__1, ptr noundef %84, ptr noundef %215, ptr noundef %216, ptr noundef %218, ptr noundef %220, ptr noundef @c__1, ptr noundef %84, ptr noundef %223, ptr noundef %224, ptr noundef %226, ptr noundef @c_n1, ptr noundef %104)
  %228 = load ptr, ptr %52, align 8, !tbaa !5
  %229 = getelementptr inbounds double, ptr %228, i64 1
  %230 = load double, ptr %229, align 8, !tbaa !11
  %231 = fptosi double %230 to i64
  store i64 %231, ptr %93, align 8, !tbaa !9
  %232 = load i64, ptr %84, align 8, !tbaa !9
  %233 = load i64, ptr %91, align 8, !tbaa !9
  %234 = load i64, ptr %92, align 8, !tbaa !9
  %235 = icmp sge i64 %233, %234
  br i1 %235, label %236, label %238

236:                                              ; preds = %178
  %237 = load i64, ptr %91, align 8, !tbaa !9
  br label %240

238:                                              ; preds = %178
  %239 = load i64, ptr %92, align 8, !tbaa !9
  br label %240

240:                                              ; preds = %238, %236
  %241 = phi i64 [ %237, %236 ], [ %239, %238 ]
  %242 = add nsw i64 %232, %241
  store i64 %242, ptr %64, align 8, !tbaa !9
  %243 = load i64, ptr %64, align 8, !tbaa !9
  %244 = load i64, ptr %93, align 8, !tbaa !9
  %245 = icmp sge i64 %243, %244
  br i1 %245, label %246, label %248

246:                                              ; preds = %240
  %247 = load i64, ptr %64, align 8, !tbaa !9
  br label %250

248:                                              ; preds = %240
  %249 = load i64, ptr %93, align 8, !tbaa !9
  br label %250

250:                                              ; preds = %248, %246
  %251 = phi i64 [ %247, %246 ], [ %249, %248 ]
  store i64 %251, ptr %110, align 8, !tbaa !9
  br label %252

252:                                              ; preds = %250, %177
  %253 = load ptr, ptr %53, align 8, !tbaa !5
  %254 = load i64, ptr %253, align 8, !tbaa !9
  %255 = icmp eq i64 %254, -1
  br i1 %255, label %256, label %261

256:                                              ; preds = %252
  %257 = load i64, ptr %110, align 8, !tbaa !9
  %258 = sitofp i64 %257 to double
  %259 = load ptr, ptr %52, align 8, !tbaa !5
  %260 = getelementptr inbounds double, ptr %259, i64 1
  store double %258, ptr %260, align 8, !tbaa !11
  store i32 0, ptr %27, align 4
  store i32 1, ptr %111, align 4
  br label %1670

261:                                              ; preds = %252
  %262 = load ptr, ptr %40, align 8, !tbaa !5
  store i64 0, ptr %262, align 8, !tbaa !9
  %263 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 0, ptr %263, align 8, !tbaa !9
  %264 = load ptr, ptr %52, align 8, !tbaa !5
  %265 = getelementptr inbounds double, ptr %264, i64 1
  store double 1.000000e+00, ptr %265, align 8, !tbaa !11
  %266 = load ptr, ptr %31, align 8, !tbaa !5
  %267 = load i64, ptr %266, align 8, !tbaa !9
  %268 = load ptr, ptr %32, align 8, !tbaa !5
  %269 = load i64, ptr %268, align 8, !tbaa !9
  %270 = icmp sgt i64 %267, %269
  br i1 %270, label %271, label %272

271:                                              ; preds = %261
  store i32 0, ptr %27, align 4
  store i32 1, ptr %111, align 4
  br label %1670

272:                                              ; preds = %261
  %273 = load ptr, ptr %33, align 8, !tbaa !5
  %274 = load i64, ptr %273, align 8, !tbaa !9
  %275 = icmp slt i64 %274, 1
  br i1 %275, label %276, label %277

276:                                              ; preds = %272
  store i32 0, ptr %27, align 4
  store i32 1, ptr %111, align 4
  br label %1670

277:                                              ; preds = %272
  %278 = call double @dlamch_(ptr noundef @.str.2)
  store double %278, ptr %106, align 8, !tbaa !11
  %279 = load double, ptr %106, align 8, !tbaa !11
  %280 = fdiv double 1.000000e+00, %279
  store double %280, ptr %107, align 8, !tbaa !11
  %281 = call i32 @dlabad_(ptr noundef %106, ptr noundef %107)
  %282 = call double @dlamch_(ptr noundef @.str.3)
  store double %282, ptr %90, align 8, !tbaa !11
  %283 = load double, ptr %106, align 8, !tbaa !11
  %284 = load ptr, ptr %30, align 8, !tbaa !5
  %285 = load i64, ptr %284, align 8, !tbaa !9
  %286 = sitofp i64 %285 to double
  %287 = load double, ptr %90, align 8, !tbaa !11
  %288 = fdiv double %286, %287
  %289 = fmul double %283, %288
  store double %289, ptr %109, align 8, !tbaa !11
  %290 = load ptr, ptr %33, align 8, !tbaa !5
  %291 = load i64, ptr %290, align 8, !tbaa !9
  store i64 %291, ptr %64, align 8, !tbaa !9
  %292 = load ptr, ptr %32, align 8, !tbaa !5
  %293 = load i64, ptr %292, align 8, !tbaa !9
  %294 = load ptr, ptr %31, align 8, !tbaa !5
  %295 = load i64, ptr %294, align 8, !tbaa !9
  %296 = sub nsw i64 %293, %295
  %297 = add nsw i64 %296, 1
  store i64 %297, ptr %65, align 8, !tbaa !9
  %298 = load i64, ptr %64, align 8, !tbaa !9
  %299 = load i64, ptr %65, align 8, !tbaa !9
  %300 = icmp sle i64 %298, %299
  br i1 %300, label %301, label %303

301:                                              ; preds = %277
  %302 = load i64, ptr %64, align 8, !tbaa !9
  br label %305

303:                                              ; preds = %277
  %304 = load i64, ptr %65, align 8, !tbaa !9
  br label %305

305:                                              ; preds = %303, %301
  %306 = phi i64 [ %302, %301 ], [ %304, %303 ]
  store i64 %306, ptr %84, align 8, !tbaa !9
  %307 = load ptr, ptr %32, align 8, !tbaa !5
  %308 = load i64, ptr %307, align 8, !tbaa !9
  %309 = load i64, ptr %84, align 8, !tbaa !9
  %310 = sub nsw i64 %308, %309
  %311 = add nsw i64 %310, 1
  store i64 %311, ptr %105, align 8, !tbaa !9
  %312 = load i64, ptr %105, align 8, !tbaa !9
  %313 = load ptr, ptr %31, align 8, !tbaa !5
  %314 = load i64, ptr %313, align 8, !tbaa !9
  %315 = icmp eq i64 %312, %314
  br i1 %315, label %316, label %317

316:                                              ; preds = %305
  store double 0.000000e+00, ptr %77, align 8, !tbaa !11
  br label %327

317:                                              ; preds = %305
  %318 = load ptr, ptr %34, align 8, !tbaa !5
  %319 = load i64, ptr %105, align 8, !tbaa !9
  %320 = load i64, ptr %105, align 8, !tbaa !9
  %321 = sub nsw i64 %320, 1
  %322 = load i64, ptr %54, align 8, !tbaa !9
  %323 = mul nsw i64 %321, %322
  %324 = add nsw i64 %319, %323
  %325 = getelementptr inbounds double, ptr %318, i64 %324
  %326 = load double, ptr %325, align 8, !tbaa !11
  store double %326, ptr %77, align 8, !tbaa !11
  br label %327

327:                                              ; preds = %317, %316
  %328 = load ptr, ptr %32, align 8, !tbaa !5
  %329 = load i64, ptr %328, align 8, !tbaa !9
  %330 = load i64, ptr %105, align 8, !tbaa !9
  %331 = icmp eq i64 %329, %330
  br i1 %331, label %332, label %408

332:                                              ; preds = %327
  %333 = load ptr, ptr %34, align 8, !tbaa !5
  %334 = load i64, ptr %105, align 8, !tbaa !9
  %335 = load i64, ptr %105, align 8, !tbaa !9
  %336 = load i64, ptr %54, align 8, !tbaa !9
  %337 = mul nsw i64 %335, %336
  %338 = add nsw i64 %334, %337
  %339 = getelementptr inbounds double, ptr %333, i64 %338
  %340 = load double, ptr %339, align 8, !tbaa !11
  %341 = load ptr, ptr %42, align 8, !tbaa !5
  %342 = load i64, ptr %105, align 8, !tbaa !9
  %343 = getelementptr inbounds double, ptr %341, i64 %342
  store double %340, ptr %343, align 8, !tbaa !11
  %344 = load ptr, ptr %43, align 8, !tbaa !5
  %345 = load i64, ptr %105, align 8, !tbaa !9
  %346 = getelementptr inbounds double, ptr %344, i64 %345
  store double 0.000000e+00, ptr %346, align 8, !tbaa !11
  %347 = load ptr, ptr %40, align 8, !tbaa !5
  store i64 1, ptr %347, align 8, !tbaa !9
  %348 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 0, ptr %348, align 8, !tbaa !9
  %349 = load double, ptr %109, align 8, !tbaa !11
  store double %349, ptr %69, align 8, !tbaa !11
  %350 = load double, ptr %90, align 8, !tbaa !11
  %351 = load ptr, ptr %34, align 8, !tbaa !5
  %352 = load i64, ptr %105, align 8, !tbaa !9
  %353 = load i64, ptr %105, align 8, !tbaa !9
  %354 = load i64, ptr %54, align 8, !tbaa !9
  %355 = mul nsw i64 %353, %354
  %356 = add nsw i64 %352, %355
  %357 = getelementptr inbounds double, ptr %351, i64 %356
  %358 = load double, ptr %357, align 8, !tbaa !11
  store double %358, ptr %68, align 8, !tbaa !11
  %359 = load double, ptr %68, align 8, !tbaa !11
  %360 = fcmp oge double %359, 0.000000e+00
  br i1 %360, label %361, label %363

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

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

366:                                              ; preds = %363, %361
  %367 = phi double [ %362, %361 ], [ %365, %363 ]
  %368 = fmul double %350, %367
  store double %368, ptr %70, align 8, !tbaa !11
  %369 = load double, ptr %77, align 8, !tbaa !11
  %370 = fcmp oge double %369, 0.000000e+00
  br i1 %370, label %371, label %373

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

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

376:                                              ; preds = %373, %371
  %377 = phi double [ %372, %371 ], [ %375, %373 ]
  %378 = load double, ptr %69, align 8, !tbaa !11
  %379 = load double, ptr %70, align 8, !tbaa !11
  %380 = fcmp oge double %378, %379
  br i1 %380, label %381, label %383

381:                                              ; preds = %376
  %382 = load double, ptr %69, align 8, !tbaa !11
  br label %385

383:                                              ; preds = %376
  %384 = load double, ptr %70, align 8, !tbaa !11
  br label %385

385:                                              ; preds = %383, %381
  %386 = phi double [ %382, %381 ], [ %384, %383 ]
  %387 = fcmp ole double %377, %386
  br i1 %387, label %388, label %405

388:                                              ; preds = %385
  %389 = load ptr, ptr %40, align 8, !tbaa !5
  store i64 0, ptr %389, align 8, !tbaa !9
  %390 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 1, ptr %390, align 8, !tbaa !9
  %391 = load i64, ptr %105, align 8, !tbaa !9
  %392 = load ptr, ptr %31, align 8, !tbaa !5
  %393 = load i64, ptr %392, align 8, !tbaa !9
  %394 = icmp sgt i64 %391, %393
  br i1 %394, label %395, label %404

395:                                              ; preds = %388
  %396 = load ptr, ptr %34, align 8, !tbaa !5
  %397 = load i64, ptr %105, align 8, !tbaa !9
  %398 = load i64, ptr %105, align 8, !tbaa !9
  %399 = sub nsw i64 %398, 1
  %400 = load i64, ptr %54, align 8, !tbaa !9
  %401 = mul nsw i64 %399, %400
  %402 = add nsw i64 %397, %401
  %403 = getelementptr inbounds double, ptr %396, i64 %402
  store double 0.000000e+00, ptr %403, align 8, !tbaa !11
  br label %404

404:                                              ; preds = %395, %388
  br label %405

405:                                              ; preds = %404, %385
  %406 = load ptr, ptr %52, align 8, !tbaa !5
  %407 = getelementptr inbounds double, ptr %406, i64 1
  store double 1.000000e+00, ptr %407, align 8, !tbaa !11
  store i32 0, ptr %27, align 4
  store i32 1, ptr %111, align 4
  br label %1670

408:                                              ; preds = %327
  %409 = load ptr, ptr %34, align 8, !tbaa !5
  %410 = load i64, ptr %105, align 8, !tbaa !9
  %411 = load i64, ptr %105, align 8, !tbaa !9
  %412 = load i64, ptr %54, align 8, !tbaa !9
  %413 = mul nsw i64 %411, %412
  %414 = add nsw i64 %410, %413
  %415 = getelementptr inbounds double, ptr %409, i64 %414
  %416 = load ptr, ptr %35, align 8, !tbaa !5
  %417 = load ptr, ptr %47, align 8, !tbaa !5
  %418 = load i64, ptr %57, align 8, !tbaa !9
  %419 = getelementptr inbounds double, ptr %417, i64 %418
  %420 = load ptr, ptr %48, align 8, !tbaa !5
  %421 = call i32 @dlacpy_(ptr noundef @.str.4, ptr noundef %84, ptr noundef %84, ptr noundef %415, ptr noundef %416, ptr noundef %419, ptr noundef %420)
  %422 = load i64, ptr %84, align 8, !tbaa !9
  %423 = sub nsw i64 %422, 1
  store i64 %423, ptr %64, align 8, !tbaa !9
  %424 = load ptr, ptr %35, align 8, !tbaa !5
  %425 = load i64, ptr %424, align 8, !tbaa !9
  %426 = add nsw i64 %425, 1
  store i64 %426, ptr %65, align 8, !tbaa !9
  %427 = load ptr, ptr %48, align 8, !tbaa !5
  %428 = load i64, ptr %427, align 8, !tbaa !9
  %429 = add nsw i64 %428, 1
  store i64 %429, ptr %66, align 8, !tbaa !9
  %430 = load ptr, ptr %34, align 8, !tbaa !5
  %431 = load i64, ptr %105, align 8, !tbaa !9
  %432 = add nsw i64 %431, 1
  %433 = load i64, ptr %105, align 8, !tbaa !9
  %434 = load i64, ptr %54, align 8, !tbaa !9
  %435 = mul nsw i64 %433, %434
  %436 = add nsw i64 %432, %435
  %437 = getelementptr inbounds double, ptr %430, i64 %436
  %438 = load ptr, ptr %47, align 8, !tbaa !5
  %439 = load i64, ptr %56, align 8, !tbaa !9
  %440 = add nsw i64 %439, 2
  %441 = getelementptr inbounds double, ptr %438, i64 %440
  %442 = call i32 @f2c_dcopy(ptr noundef %64, ptr noundef %437, ptr noundef %65, ptr noundef %441, ptr noundef %66)
  %443 = load ptr, ptr %44, align 8, !tbaa !5
  %444 = load i64, ptr %59, align 8, !tbaa !9
  %445 = getelementptr inbounds double, ptr %443, i64 %444
  %446 = load ptr, ptr %45, align 8, !tbaa !5
  %447 = call i32 @dlaset_(ptr noundef @.str.5, ptr noundef %84, ptr noundef %84, ptr noundef @c_b17, ptr noundef @c_b18, ptr noundef %445, ptr noundef %446)
  %448 = load ptr, ptr %53, align 8, !tbaa !5
  %449 = call i64 @ilaenv_(ptr noundef @c__12, ptr noundef @.str.6, ptr noundef @.str.7, ptr noundef %84, ptr noundef @c__1, ptr noundef %84, ptr noundef %448)
  store i64 %449, ptr %98, align 8, !tbaa !9
  %450 = load i64, ptr %84, align 8, !tbaa !9
  %451 = load i64, ptr %98, align 8, !tbaa !9
  %452 = icmp sgt i64 %450, %451
  br i1 %452, label %453, label %472

453:                                              ; preds = %408
  %454 = load ptr, ptr %47, align 8, !tbaa !5
  %455 = load i64, ptr %57, align 8, !tbaa !9
  %456 = getelementptr inbounds double, ptr %454, i64 %455
  %457 = load ptr, ptr %48, align 8, !tbaa !5
  %458 = load ptr, ptr %42, align 8, !tbaa !5
  %459 = load i64, ptr %105, align 8, !tbaa !9
  %460 = getelementptr inbounds double, ptr %458, i64 %459
  %461 = load ptr, ptr %43, align 8, !tbaa !5
  %462 = load i64, ptr %105, align 8, !tbaa !9
  %463 = getelementptr inbounds double, ptr %461, i64 %462
  %464 = load ptr, ptr %44, align 8, !tbaa !5
  %465 = load i64, ptr %59, align 8, !tbaa !9
  %466 = getelementptr inbounds double, ptr %464, i64 %465
  %467 = load ptr, ptr %45, align 8, !tbaa !5
  %468 = load ptr, ptr %52, align 8, !tbaa !5
  %469 = getelementptr inbounds double, ptr %468, i64 1
  %470 = load ptr, ptr %53, align 8, !tbaa !5
  %471 = call i32 @dlaqr4_(ptr noundef @c_true, ptr noundef @c_true, ptr noundef %84, ptr noundef @c__1, ptr noundef %84, ptr noundef %456, ptr noundef %457, ptr noundef %460, ptr noundef %463, ptr noundef @c__1, ptr noundef %84, ptr noundef %466, ptr noundef %467, ptr noundef %469, ptr noundef %470, ptr noundef %104)
  br label %488

472:                                              ; preds = %408
  %473 = load ptr, ptr %47, align 8, !tbaa !5
  %474 = load i64, ptr %57, align 8, !tbaa !9
  %475 = getelementptr inbounds double, ptr %473, i64 %474
  %476 = load ptr, ptr %48, align 8, !tbaa !5
  %477 = load ptr, ptr %42, align 8, !tbaa !5
  %478 = load i64, ptr %105, align 8, !tbaa !9
  %479 = getelementptr inbounds double, ptr %477, i64 %478
  %480 = load ptr, ptr %43, align 8, !tbaa !5
  %481 = load i64, ptr %105, align 8, !tbaa !9
  %482 = getelementptr inbounds double, ptr %480, i64 %481
  %483 = load ptr, ptr %44, align 8, !tbaa !5
  %484 = load i64, ptr %59, align 8, !tbaa !9
  %485 = getelementptr inbounds double, ptr %483, i64 %484
  %486 = load ptr, ptr %45, align 8, !tbaa !5
  %487 = call i32 @dlahqr_(ptr noundef @c_true, ptr noundef @c_true, ptr noundef %84, ptr noundef @c__1, ptr noundef %84, ptr noundef %475, ptr noundef %476, ptr noundef %479, ptr noundef %482, ptr noundef @c__1, ptr noundef %84, ptr noundef %485, ptr noundef %486, ptr noundef %104)
  br label %488

488:                                              ; preds = %472, %453
  %489 = load i64, ptr %84, align 8, !tbaa !9
  %490 = sub nsw i64 %489, 3
  store i64 %490, ptr %64, align 8, !tbaa !9
  store i64 1, ptr %75, align 8, !tbaa !9
  br label %491

491:                                              ; preds = %512, %488
  %492 = load i64, ptr %75, align 8, !tbaa !9
  %493 = load i64, ptr %64, align 8, !tbaa !9
  %494 = icmp sle i64 %492, %493
  br i1 %494, label %495, label %515

495:                                              ; preds = %491
  %496 = load ptr, ptr %47, align 8, !tbaa !5
  %497 = load i64, ptr %75, align 8, !tbaa !9
  %498 = add nsw i64 %497, 2
  %499 = load i64, ptr %75, align 8, !tbaa !9
  %500 = load i64, ptr %56, align 8, !tbaa !9
  %501 = mul nsw i64 %499, %500
  %502 = add nsw i64 %498, %501
  %503 = getelementptr inbounds double, ptr %496, i64 %502
  store double 0.000000e+00, ptr %503, align 8, !tbaa !11
  %504 = load ptr, ptr %47, align 8, !tbaa !5
  %505 = load i64, ptr %75, align 8, !tbaa !9
  %506 = add nsw i64 %505, 3
  %507 = load i64, ptr %75, align 8, !tbaa !9
  %508 = load i64, ptr %56, align 8, !tbaa !9
  %509 = mul nsw i64 %507, %508
  %510 = add nsw i64 %506, %509
  %511 = getelementptr inbounds double, ptr %504, i64 %510
  store double 0.000000e+00, ptr %511, align 8, !tbaa !11
  br label %512

512:                                              ; preds = %495
  %513 = load i64, ptr %75, align 8, !tbaa !9
  %514 = add nsw i64 %513, 1
  store i64 %514, ptr %75, align 8, !tbaa !9
  br label %491, !llvm.loop !13

515:                                              ; preds = %491
  %516 = load i64, ptr %84, align 8, !tbaa !9
  %517 = icmp sgt i64 %516, 2
  br i1 %517, label %518, label %527

518:                                              ; preds = %515
  %519 = load ptr, ptr %47, align 8, !tbaa !5
  %520 = load i64, ptr %84, align 8, !tbaa !9
  %521 = load i64, ptr %84, align 8, !tbaa !9
  %522 = sub nsw i64 %521, 2
  %523 = load i64, ptr %56, align 8, !tbaa !9
  %524 = mul nsw i64 %522, %523
  %525 = add nsw i64 %520, %524
  %526 = getelementptr inbounds double, ptr %519, i64 %525
  store double 0.000000e+00, ptr %526, align 8, !tbaa !11
  br label %527

527:                                              ; preds = %518, %515
  %528 = load i64, ptr %84, align 8, !tbaa !9
  %529 = load ptr, ptr %40, align 8, !tbaa !5
  store i64 %528, ptr %529, align 8, !tbaa !9
  %530 = load i64, ptr %104, align 8, !tbaa !9
  %531 = add nsw i64 %530, 1
  store i64 %531, ptr %100, align 8, !tbaa !9
  br label %532

532:                                              ; preds = %806, %527
  %533 = load i64, ptr %100, align 8, !tbaa !9
  %534 = load ptr, ptr %40, align 8, !tbaa !5
  %535 = load i64, ptr %534, align 8, !tbaa !9
  %536 = icmp sle i64 %533, %535
  br i1 %536, label %537, label %807

537:                                              ; preds = %532
  %538 = load ptr, ptr %40, align 8, !tbaa !5
  %539 = load i64, ptr %538, align 8, !tbaa !9
  %540 = icmp eq i64 %539, 1
  br i1 %540, label %541, label %542

541:                                              ; preds = %537
  store i64 0, ptr %103, align 8, !tbaa !9
  br label %557

542:                                              ; preds = %537
  %543 = load ptr, ptr %47, align 8, !tbaa !5
  %544 = load ptr, ptr %40, align 8, !tbaa !5
  %545 = load i64, ptr %544, align 8, !tbaa !9
  %546 = load ptr, ptr %40, align 8, !tbaa !5
  %547 = load i64, ptr %546, align 8, !tbaa !9
  %548 = sub nsw i64 %547, 1
  %549 = load i64, ptr %56, align 8, !tbaa !9
  %550 = mul nsw i64 %548, %549
  %551 = add nsw i64 %545, %550
  %552 = getelementptr inbounds double, ptr %543, i64 %551
  %553 = load double, ptr %552, align 8, !tbaa !11
  %554 = fcmp une double %553, 0.000000e+00
  %555 = zext i1 %554 to i32
  %556 = sext i32 %555 to i64
  store i64 %556, ptr %103, align 8, !tbaa !9
  br label %557

557:                                              ; preds = %542, %541
  %558 = load i64, ptr %103, align 8, !tbaa !9
  %559 = icmp ne i64 %558, 0
  br i1 %559, label %647, label %560

560:                                              ; preds = %557
  %561 = load ptr, ptr %47, align 8, !tbaa !5
  %562 = load ptr, ptr %40, align 8, !tbaa !5
  %563 = load i64, ptr %562, align 8, !tbaa !9
  %564 = load ptr, ptr %40, align 8, !tbaa !5
  %565 = load i64, ptr %564, align 8, !tbaa !9
  %566 = load i64, ptr %56, align 8, !tbaa !9
  %567 = mul nsw i64 %565, %566
  %568 = add nsw i64 %563, %567
  %569 = getelementptr inbounds double, ptr %561, i64 %568
  %570 = load double, ptr %569, align 8, !tbaa !11
  store double %570, ptr %68, align 8, !tbaa !11
  %571 = load double, ptr %68, align 8, !tbaa !11
  %572 = fcmp oge double %571, 0.000000e+00
  br i1 %572, label %573, label %575

573:                                              ; preds = %560
  %574 = load double, ptr %68, align 8, !tbaa !11
  br label %578

575:                                              ; preds = %560
  %576 = load double, ptr %68, align 8, !tbaa !11
  %577 = fneg double %576
  br label %578

578:                                              ; preds = %575, %573
  %579 = phi double [ %574, %573 ], [ %577, %575 ]
  store double %579, ptr %87, align 8, !tbaa !11
  %580 = load double, ptr %87, align 8, !tbaa !11
  %581 = fcmp oeq double %580, 0.000000e+00
  br i1 %581, label %582, label %592

582:                                              ; preds = %578
  %583 = load double, ptr %77, align 8, !tbaa !11
  %584 = fcmp oge double %583, 0.000000e+00
  br i1 %584, label %585, label %587

585:                                              ; preds = %582
  %586 = load double, ptr %77, align 8, !tbaa !11
  br label %590

587:                                              ; preds = %582
  %588 = load double, ptr %77, align 8, !tbaa !11
  %589 = fneg double %588
  br label %590

590:                                              ; preds = %587, %585
  %591 = phi double [ %586, %585 ], [ %589, %587 ]
  store double %591, ptr %87, align 8, !tbaa !11
  br label %592

592:                                              ; preds = %590, %578
  %593 = load double, ptr %109, align 8, !tbaa !11
  store double %593, ptr %69, align 8, !tbaa !11
  %594 = load double, ptr %90, align 8, !tbaa !11
  %595 = load double, ptr %87, align 8, !tbaa !11
  %596 = fmul double %594, %595
  store double %596, ptr %70, align 8, !tbaa !11
  %597 = load double, ptr %77, align 8, !tbaa !11
  %598 = load ptr, ptr %44, align 8, !tbaa !5
  %599 = load ptr, ptr %40, align 8, !tbaa !5
  %600 = load i64, ptr %599, align 8, !tbaa !9
  %601 = load i64, ptr %58, align 8, !tbaa !9
  %602 = mul nsw i64 %600, %601
  %603 = add nsw i64 %602, 1
  %604 = getelementptr inbounds double, ptr %598, i64 %603
  %605 = load double, ptr %604, align 8, !tbaa !11
  %606 = fmul double %597, %605
  store double %606, ptr %68, align 8, !tbaa !11
  %607 = load double, ptr %68, align 8, !tbaa !11
  %608 = fcmp oge double %607, 0.000000e+00
  br i1 %608, label %609, label %611

609:                                              ; preds = %592
  %610 = load double, ptr %68, align 8, !tbaa !11
  br label %614

611:                                              ; preds = %592
  %612 = load double, ptr %68, align 8, !tbaa !11
  %613 = fneg double %612
  br label %614

614:                                              ; preds = %611, %609
  %615 = phi double [ %610, %609 ], [ %613, %611 ]
  %616 = load double, ptr %69, align 8, !tbaa !11
  %617 = load double, ptr %70, align 8, !tbaa !11
  %618 = fcmp oge double %616, %617
  br i1 %618, label %619, label %621

619:                                              ; preds = %614
  %620 = load double, ptr %69, align 8, !tbaa !11
  br label %623

621:                                              ; preds = %614
  %622 = load double, ptr %70, align 8, !tbaa !11
  br label %623

623:                                              ; preds = %621, %619
  %624 = phi double [ %620, %619 ], [ %622, %621 ]
  %625 = fcmp ole double %615, %624
  br i1 %625, label %626, label %630

626:                                              ; preds = %623
  %627 = load ptr, ptr %40, align 8, !tbaa !5
  %628 = load i64, ptr %627, align 8, !tbaa !9
  %629 = add nsw i64 %628, -1
  store i64 %629, ptr %627, align 8, !tbaa !9
  br label %646

630:                                              ; preds = %623
  %631 = load ptr, ptr %40, align 8, !tbaa !5
  %632 = load i64, ptr %631, align 8, !tbaa !9
  store i64 %632, ptr %99, align 8, !tbaa !9
  %633 = load ptr, ptr %47, align 8, !tbaa !5
  %634 = load i64, ptr %57, align 8, !tbaa !9
  %635 = getelementptr inbounds double, ptr %633, i64 %634
  %636 = load ptr, ptr %48, align 8, !tbaa !5
  %637 = load ptr, ptr %44, align 8, !tbaa !5
  %638 = load i64, ptr %59, align 8, !tbaa !9
  %639 = getelementptr inbounds double, ptr %637, i64 %638
  %640 = load ptr, ptr %45, align 8, !tbaa !5
  %641 = load ptr, ptr %52, align 8, !tbaa !5
  %642 = getelementptr inbounds double, ptr %641, i64 1
  %643 = call i32 @dtrexc_(ptr noundef @.str.8, ptr noundef %84, ptr noundef %635, ptr noundef %636, ptr noundef %639, ptr noundef %640, ptr noundef %99, ptr noundef %100, ptr noundef %642, ptr noundef %97)
  %644 = load i64, ptr %100, align 8, !tbaa !9
  %645 = add nsw i64 %644, 1
  store i64 %645, ptr %100, align 8, !tbaa !9
  br label %646

646:                                              ; preds = %630, %626
  br label %806

647:                                              ; preds = %557
  %648 = load ptr, ptr %47, align 8, !tbaa !5
  %649 = load ptr, ptr %40, align 8, !tbaa !5
  %650 = load i64, ptr %649, align 8, !tbaa !9
  %651 = load ptr, ptr %40, align 8, !tbaa !5
  %652 = load i64, ptr %651, align 8, !tbaa !9
  %653 = load i64, ptr %56, align 8, !tbaa !9
  %654 = mul nsw i64 %652, %653
  %655 = add nsw i64 %650, %654
  %656 = getelementptr inbounds double, ptr %648, i64 %655
  %657 = load double, ptr %656, align 8, !tbaa !11
  store double %657, ptr %70, align 8, !tbaa !11
  %658 = load double, ptr %70, align 8, !tbaa !11
  %659 = fcmp oge double %658, 0.000000e+00
  br i1 %659, label %660, label %662

660:                                              ; preds = %647
  %661 = load double, ptr %70, align 8, !tbaa !11
  br label %665

662:                                              ; preds = %647
  %663 = load double, ptr %70, align 8, !tbaa !11
  %664 = fneg double %663
  br label %665

665:                                              ; preds = %662, %660
  %666 = phi double [ %661, %660 ], [ %664, %662 ]
  %667 = load ptr, ptr %47, align 8, !tbaa !5
  %668 = load ptr, ptr %40, align 8, !tbaa !5
  %669 = load i64, ptr %668, align 8, !tbaa !9
  %670 = load ptr, ptr %40, align 8, !tbaa !5
  %671 = load i64, ptr %670, align 8, !tbaa !9
  %672 = sub nsw i64 %671, 1
  %673 = load i64, ptr %56, align 8, !tbaa !9
  %674 = mul nsw i64 %672, %673
  %675 = add nsw i64 %669, %674
  %676 = getelementptr inbounds double, ptr %667, i64 %675
  %677 = load double, ptr %676, align 8, !tbaa !11
  store double %677, ptr %68, align 8, !tbaa !11
  %678 = load double, ptr %68, align 8, !tbaa !11
  %679 = fcmp oge double %678, 0.000000e+00
  br i1 %679, label %680, label %682

680:                                              ; preds = %665
  %681 = load double, ptr %68, align 8, !tbaa !11
  br label %685

682:                                              ; preds = %665
  %683 = load double, ptr %68, align 8, !tbaa !11
  %684 = fneg double %683
  br label %685

685:                                              ; preds = %682, %680
  %686 = phi double [ %681, %680 ], [ %684, %682 ]
  %687 = call double @sqrt(double noundef %686) #5
  %688 = load ptr, ptr %47, align 8, !tbaa !5
  %689 = load ptr, ptr %40, align 8, !tbaa !5
  %690 = load i64, ptr %689, align 8, !tbaa !9
  %691 = sub nsw i64 %690, 1
  %692 = load ptr, ptr %40, align 8, !tbaa !5
  %693 = load i64, ptr %692, align 8, !tbaa !9
  %694 = load i64, ptr %56, align 8, !tbaa !9
  %695 = mul nsw i64 %693, %694
  %696 = add nsw i64 %691, %695
  %697 = getelementptr inbounds double, ptr %688, i64 %696
  %698 = load double, ptr %697, align 8, !tbaa !11
  store double %698, ptr %69, align 8, !tbaa !11
  %699 = load double, ptr %69, align 8, !tbaa !11
  %700 = fcmp oge double %699, 0.000000e+00
  br i1 %700, label %701, label %703

701:                                              ; preds = %685
  %702 = load double, ptr %69, align 8, !tbaa !11
  br label %706

703:                                              ; preds = %685
  %704 = load double, ptr %69, align 8, !tbaa !11
  %705 = fneg double %704
  br label %706

706:                                              ; preds = %703, %701
  %707 = phi double [ %702, %701 ], [ %705, %703 ]
  %708 = call double @sqrt(double noundef %707) #5
  %709 = call double @llvm.fmuladd.f64(double %687, double %708, double %666)
  store double %709, ptr %87, align 8, !tbaa !11
  %710 = load double, ptr %87, align 8, !tbaa !11
  %711 = fcmp oeq double %710, 0.000000e+00
  br i1 %711, label %712, label %722

712:                                              ; preds = %706
  %713 = load double, ptr %77, align 8, !tbaa !11
  %714 = fcmp oge double %713, 0.000000e+00
  br i1 %714, label %715, label %717

715:                                              ; preds = %712
  %716 = load double, ptr %77, align 8, !tbaa !11
  br label %720

717:                                              ; preds = %712
  %718 = load double, ptr %77, align 8, !tbaa !11
  %719 = fneg double %718
  br label %720

720:                                              ; preds = %717, %715
  %721 = phi double [ %716, %715 ], [ %719, %717 ]
  store double %721, ptr %87, align 8, !tbaa !11
  br label %722

722:                                              ; preds = %720, %706
  %723 = load double, ptr %77, align 8, !tbaa !11
  %724 = load ptr, ptr %44, align 8, !tbaa !5
  %725 = load ptr, ptr %40, align 8, !tbaa !5
  %726 = load i64, ptr %725, align 8, !tbaa !9
  %727 = load i64, ptr %58, align 8, !tbaa !9
  %728 = mul nsw i64 %726, %727
  %729 = add nsw i64 %728, 1
  %730 = getelementptr inbounds double, ptr %724, i64 %729
  %731 = load double, ptr %730, align 8, !tbaa !11
  %732 = fmul double %723, %731
  store double %732, ptr %68, align 8, !tbaa !11
  %733 = load double, ptr %68, align 8, !tbaa !11
  %734 = fcmp oge double %733, 0.000000e+00
  br i1 %734, label %735, label %737

735:                                              ; preds = %722
  %736 = load double, ptr %68, align 8, !tbaa !11
  br label %740

737:                                              ; preds = %722
  %738 = load double, ptr %68, align 8, !tbaa !11
  %739 = fneg double %738
  br label %740

740:                                              ; preds = %737, %735
  %741 = phi double [ %736, %735 ], [ %739, %737 ]
  store double %741, ptr %70, align 8, !tbaa !11
  %742 = load double, ptr %77, align 8, !tbaa !11
  %743 = load ptr, ptr %44, align 8, !tbaa !5
  %744 = load ptr, ptr %40, align 8, !tbaa !5
  %745 = load i64, ptr %744, align 8, !tbaa !9
  %746 = sub nsw i64 %745, 1
  %747 = load i64, ptr %58, align 8, !tbaa !9
  %748 = mul nsw i64 %746, %747
  %749 = add nsw i64 %748, 1
  %750 = getelementptr inbounds double, ptr %743, i64 %749
  %751 = load double, ptr %750, align 8, !tbaa !11
  %752 = fmul double %742, %751
  store double %752, ptr %69, align 8, !tbaa !11
  %753 = load double, ptr %69, align 8, !tbaa !11
  %754 = fcmp oge double %753, 0.000000e+00
  br i1 %754, label %755, label %757

755:                                              ; preds = %740
  %756 = load double, ptr %69, align 8, !tbaa !11
  br label %760

757:                                              ; preds = %740
  %758 = load double, ptr %69, align 8, !tbaa !11
  %759 = fneg double %758
  br label %760

760:                                              ; preds = %757, %755
  %761 = phi double [ %756, %755 ], [ %759, %757 ]
  store double %761, ptr %71, align 8, !tbaa !11
  %762 = load double, ptr %109, align 8, !tbaa !11
  store double %762, ptr %72, align 8, !tbaa !11
  %763 = load double, ptr %90, align 8, !tbaa !11
  %764 = load double, ptr %87, align 8, !tbaa !11
  %765 = fmul double %763, %764
  store double %765, ptr %73, align 8, !tbaa !11
  %766 = load double, ptr %70, align 8, !tbaa !11
  %767 = load double, ptr %71, align 8, !tbaa !11
  %768 = fcmp oge double %766, %767
  br i1 %768, label %769, label %771

769:                                              ; preds = %760
  %770 = load double, ptr %70, align 8, !tbaa !11
  br label %773

771:                                              ; preds = %760
  %772 = load double, ptr %71, align 8, !tbaa !11
  br label %773

773:                                              ; preds = %771, %769
  %774 = phi double [ %770, %769 ], [ %772, %771 ]
  %775 = load double, ptr %72, align 8, !tbaa !11
  %776 = load double, ptr %73, align 8, !tbaa !11
  %777 = fcmp oge double %775, %776
  br i1 %777, label %778, label %780

778:                                              ; preds = %773
  %779 = load double, ptr %72, align 8, !tbaa !11
  br label %782

780:                                              ; preds = %773
  %781 = load double, ptr %73, align 8, !tbaa !11
  br label %782

782:                                              ; preds = %780, %778
  %783 = phi double [ %779, %778 ], [ %781, %780 ]
  %784 = fcmp ole double %774, %783
  br i1 %784, label %785, label %789

785:                                              ; preds = %782
  %786 = load ptr, ptr %40, align 8, !tbaa !5
  %787 = load i64, ptr %786, align 8, !tbaa !9
  %788 = add nsw i64 %787, -2
  store i64 %788, ptr %786, align 8, !tbaa !9
  br label %805

789:                                              ; preds = %782
  %790 = load ptr, ptr %40, align 8, !tbaa !5
  %791 = load i64, ptr %790, align 8, !tbaa !9
  store i64 %791, ptr %99, align 8, !tbaa !9
  %792 = load ptr, ptr %47, align 8, !tbaa !5
  %793 = load i64, ptr %57, align 8, !tbaa !9
  %794 = getelementptr inbounds double, ptr %792, i64 %793
  %795 = load ptr, ptr %48, align 8, !tbaa !5
  %796 = load ptr, ptr %44, align 8, !tbaa !5
  %797 = load i64, ptr %59, align 8, !tbaa !9
  %798 = getelementptr inbounds double, ptr %796, i64 %797
  %799 = load ptr, ptr %45, align 8, !tbaa !5
  %800 = load ptr, ptr %52, align 8, !tbaa !5
  %801 = getelementptr inbounds double, ptr %800, i64 1
  %802 = call i32 @dtrexc_(ptr noundef @.str.8, ptr noundef %84, ptr noundef %794, ptr noundef %795, ptr noundef %798, ptr noundef %799, ptr noundef %99, ptr noundef %100, ptr noundef %801, ptr noundef %97)
  %803 = load i64, ptr %100, align 8, !tbaa !9
  %804 = add nsw i64 %803, 2
  store i64 %804, ptr %100, align 8, !tbaa !9
  br label %805

805:                                              ; preds = %789, %785
  br label %806

806:                                              ; preds = %805, %646
  br label %532

807:                                              ; preds = %532
  %808 = load ptr, ptr %40, align 8, !tbaa !5
  %809 = load i64, ptr %808, align 8, !tbaa !9
  %810 = icmp eq i64 %809, 0
  br i1 %810, label %811, label %812

811:                                              ; preds = %807
  store double 0.000000e+00, ptr %77, align 8, !tbaa !11
  br label %812

812:                                              ; preds = %811, %807
  %813 = load ptr, ptr %40, align 8, !tbaa !5
  %814 = load i64, ptr %813, align 8, !tbaa !9
  %815 = load i64, ptr %84, align 8, !tbaa !9
  %816 = icmp slt i64 %814, %815
  br i1 %816, label %817, label %1104

817:                                              ; preds = %812
  store i64 0, ptr %108, align 8, !tbaa !9
  %818 = load ptr, ptr %40, align 8, !tbaa !5
  %819 = load i64, ptr %818, align 8, !tbaa !9
  %820 = add nsw i64 %819, 1
  store i64 %820, ptr %74, align 8, !tbaa !9
  br label %821

821:                                              ; preds = %1102, %817
  %822 = load i64, ptr %108, align 8, !tbaa !9
  %823 = icmp ne i64 %822, 0
  br i1 %823, label %824, label %825

824:                                              ; preds = %821
  br label %1103

825:                                              ; preds = %821
  store i64 1, ptr %108, align 8, !tbaa !9
  %826 = load i64, ptr %74, align 8, !tbaa !9
  %827 = sub nsw i64 %826, 1
  store i64 %827, ptr %95, align 8, !tbaa !9
  %828 = load i64, ptr %104, align 8, !tbaa !9
  %829 = add nsw i64 %828, 1
  store i64 %829, ptr %74, align 8, !tbaa !9
  %830 = load i64, ptr %74, align 8, !tbaa !9
  %831 = load ptr, ptr %40, align 8, !tbaa !5
  %832 = load i64, ptr %831, align 8, !tbaa !9
  %833 = icmp eq i64 %830, %832
  br i1 %833, label %834, label %837

834:                                              ; preds = %825
  %835 = load i64, ptr %74, align 8, !tbaa !9
  %836 = add nsw i64 %835, 1
  store i64 %836, ptr %76, align 8, !tbaa !9
  br label %855

837:                                              ; preds = %825
  %838 = load ptr, ptr %47, align 8, !tbaa !5
  %839 = load i64, ptr %74, align 8, !tbaa !9
  %840 = add nsw i64 %839, 1
  %841 = load i64, ptr %74, align 8, !tbaa !9
  %842 = load i64, ptr %56, align 8, !tbaa !9
  %843 = mul nsw i64 %841, %842
  %844 = add nsw i64 %840, %843
  %845 = getelementptr inbounds double, ptr %838, i64 %844
  %846 = load double, ptr %845, align 8, !tbaa !11
  %847 = fcmp oeq double %846, 0.000000e+00
  br i1 %847, label %848, label %851

848:                                              ; preds = %837
  %849 = load i64, ptr %74, align 8, !tbaa !9
  %850 = add nsw i64 %849, 1
  store i64 %850, ptr %76, align 8, !tbaa !9
  br label %854

851:                                              ; preds = %837
  %852 = load i64, ptr %74, align 8, !tbaa !9
  %853 = add nsw i64 %852, 2
  store i64 %853, ptr %76, align 8, !tbaa !9
  br label %854

854:                                              ; preds = %851, %848
  br label %855

855:                                              ; preds = %854, %834
  br label %856

856:                                              ; preds = %1101, %855
  %857 = load i64, ptr %76, align 8, !tbaa !9
  %858 = load i64, ptr %95, align 8, !tbaa !9
  %859 = icmp sle i64 %857, %858
  br i1 %859, label %860, label %1102

860:                                              ; preds = %856
  %861 = load i64, ptr %76, align 8, !tbaa !9
  %862 = load i64, ptr %74, align 8, !tbaa !9
  %863 = add nsw i64 %862, 1
  %864 = icmp eq i64 %861, %863
  br i1 %864, label %865, label %883

865:                                              ; preds = %860
  %866 = load ptr, ptr %47, align 8, !tbaa !5
  %867 = load i64, ptr %74, align 8, !tbaa !9
  %868 = load i64, ptr %74, align 8, !tbaa !9
  %869 = load i64, ptr %56, align 8, !tbaa !9
  %870 = mul nsw i64 %868, %869
  %871 = add nsw i64 %867, %870
  %872 = getelementptr inbounds double, ptr %866, i64 %871
  %873 = load double, ptr %872, align 8, !tbaa !11
  store double %873, ptr %68, align 8, !tbaa !11
  %874 = load double, ptr %68, align 8, !tbaa !11
  %875 = fcmp oge double %874, 0.000000e+00
  br i1 %875, label %876, label %878

876:                                              ; preds = %865
  %877 = load double, ptr %68, align 8, !tbaa !11
  br label %881

878:                                              ; preds = %865
  %879 = load double, ptr %68, align 8, !tbaa !11
  %880 = fneg double %879
  br label %881

881:                                              ; preds = %878, %876
  %882 = phi double [ %877, %876 ], [ %880, %878 ]
  store double %882, ptr %85, align 8, !tbaa !11
  br label %940

883:                                              ; preds = %860
  %884 = load ptr, ptr %47, align 8, !tbaa !5
  %885 = load i64, ptr %74, align 8, !tbaa !9
  %886 = load i64, ptr %74, align 8, !tbaa !9
  %887 = load i64, ptr %56, align 8, !tbaa !9
  %888 = mul nsw i64 %886, %887
  %889 = add nsw i64 %885, %888
  %890 = getelementptr inbounds double, ptr %884, i64 %889
  %891 = load double, ptr %890, align 8, !tbaa !11
  store double %891, ptr %70, align 8, !tbaa !11
  %892 = load double, ptr %70, align 8, !tbaa !11
  %893 = fcmp oge double %892, 0.000000e+00
  br i1 %893, label %894, label %896

894:                                              ; preds = %883
  %895 = load double, ptr %70, align 8, !tbaa !11
  br label %899

896:                                              ; preds = %883
  %897 = load double, ptr %70, align 8, !tbaa !11
  %898 = fneg double %897
  br label %899

899:                                              ; preds = %896, %894
  %900 = phi double [ %895, %894 ], [ %898, %896 ]
  %901 = load ptr, ptr %47, align 8, !tbaa !5
  %902 = load i64, ptr %74, align 8, !tbaa !9
  %903 = add nsw i64 %902, 1
  %904 = load i64, ptr %74, align 8, !tbaa !9
  %905 = load i64, ptr %56, align 8, !tbaa !9
  %906 = mul nsw i64 %904, %905
  %907 = add nsw i64 %903, %906
  %908 = getelementptr inbounds double, ptr %901, i64 %907
  %909 = load double, ptr %908, align 8, !tbaa !11
  store double %909, ptr %68, align 8, !tbaa !11
  %910 = load double, ptr %68, align 8, !tbaa !11
  %911 = fcmp oge double %910, 0.000000e+00
  br i1 %911, label %912, label %914

912:                                              ; preds = %899
  %913 = load double, ptr %68, align 8, !tbaa !11
  br label %917

914:                                              ; preds = %899
  %915 = load double, ptr %68, align 8, !tbaa !11
  %916 = fneg double %915
  br label %917

917:                                              ; preds = %914, %912
  %918 = phi double [ %913, %912 ], [ %916, %914 ]
  %919 = call double @sqrt(double noundef %918) #5
  %920 = load ptr, ptr %47, align 8, !tbaa !5
  %921 = load i64, ptr %74, align 8, !tbaa !9
  %922 = load i64, ptr %74, align 8, !tbaa !9
  %923 = add nsw i64 %922, 1
  %924 = load i64, ptr %56, align 8, !tbaa !9
  %925 = mul nsw i64 %923, %924
  %926 = add nsw i64 %921, %925
  %927 = getelementptr inbounds double, ptr %920, i64 %926
  %928 = load double, ptr %927, align 8, !tbaa !11
  store double %928, ptr %69, align 8, !tbaa !11
  %929 = load double, ptr %69, align 8, !tbaa !11
  %930 = fcmp oge double %929, 0.000000e+00
  br i1 %930, label %931, label %933

931:                                              ; preds = %917
  %932 = load double, ptr %69, align 8, !tbaa !11
  br label %936

933:                                              ; preds = %917
  %934 = load double, ptr %69, align 8, !tbaa !11
  %935 = fneg double %934
  br label %936

936:                                              ; preds = %933, %931
  %937 = phi double [ %932, %931 ], [ %935, %933 ]
  %938 = call double @sqrt(double noundef %937) #5
  %939 = call double @llvm.fmuladd.f64(double %919, double %938, double %900)
  store double %939, ptr %85, align 8, !tbaa !11
  br label %940

940:                                              ; preds = %936, %881
  %941 = load i64, ptr %76, align 8, !tbaa !9
  %942 = load i64, ptr %95, align 8, !tbaa !9
  %943 = icmp eq i64 %941, %942
  br i1 %943, label %944, label %962

944:                                              ; preds = %940
  %945 = load ptr, ptr %47, align 8, !tbaa !5
  %946 = load i64, ptr %76, align 8, !tbaa !9
  %947 = load i64, ptr %76, align 8, !tbaa !9
  %948 = load i64, ptr %56, align 8, !tbaa !9
  %949 = mul nsw i64 %947, %948
  %950 = add nsw i64 %946, %949
  %951 = getelementptr inbounds double, ptr %945, i64 %950
  %952 = load double, ptr %951, align 8, !tbaa !11
  store double %952, ptr %68, align 8, !tbaa !11
  %953 = load double, ptr %68, align 8, !tbaa !11
  %954 = fcmp oge double %953, 0.000000e+00
  br i1 %954, label %955, label %957

955:                                              ; preds = %944
  %956 = load double, ptr %68, align 8, !tbaa !11
  br label %960

957:                                              ; preds = %944
  %958 = load double, ptr %68, align 8, !tbaa !11
  %959 = fneg double %958
  br label %960

960:                                              ; preds = %957, %955
  %961 = phi double [ %956, %955 ], [ %959, %957 ]
  store double %961, ptr %86, align 8, !tbaa !11
  br label %1049

962:                                              ; preds = %940
  %963 = load ptr, ptr %47, align 8, !tbaa !5
  %964 = load i64, ptr %76, align 8, !tbaa !9
  %965 = add nsw i64 %964, 1
  %966 = load i64, ptr %76, align 8, !tbaa !9
  %967 = load i64, ptr %56, align 8, !tbaa !9
  %968 = mul nsw i64 %966, %967
  %969 = add nsw i64 %965, %968
  %970 = getelementptr inbounds double, ptr %963, i64 %969
  %971 = load double, ptr %970, align 8, !tbaa !11
  %972 = fcmp oeq double %971, 0.000000e+00
  br i1 %972, label %973, label %991

973:                                              ; preds = %962
  %974 = load ptr, ptr %47, align 8, !tbaa !5
  %975 = load i64, ptr %76, align 8, !tbaa !9
  %976 = load i64, ptr %76, align 8, !tbaa !9
  %977 = load i64, ptr %56, align 8, !tbaa !9
  %978 = mul nsw i64 %976, %977
  %979 = add nsw i64 %975, %978
  %980 = getelementptr inbounds double, ptr %974, i64 %979
  %981 = load double, ptr %980, align 8, !tbaa !11
  store double %981, ptr %68, align 8, !tbaa !11
  %982 = load double, ptr %68, align 8, !tbaa !11
  %983 = fcmp oge double %982, 0.000000e+00
  br i1 %983, label %984, label %986

984:                                              ; preds = %973
  %985 = load double, ptr %68, align 8, !tbaa !11
  br label %989

986:                                              ; preds = %973
  %987 = load double, ptr %68, align 8, !tbaa !11
  %988 = fneg double %987
  br label %989

989:                                              ; preds = %986, %984
  %990 = phi double [ %985, %984 ], [ %988, %986 ]
  store double %990, ptr %86, align 8, !tbaa !11
  br label %1048

991:                                              ; preds = %962
  %992 = load ptr, ptr %47, align 8, !tbaa !5
  %993 = load i64, ptr %76, align 8, !tbaa !9
  %994 = load i64, ptr %76, align 8, !tbaa !9
  %995 = load i64, ptr %56, align 8, !tbaa !9
  %996 = mul nsw i64 %994, %995
  %997 = add nsw i64 %993, %996
  %998 = getelementptr inbounds double, ptr %992, i64 %997
  %999 = load double, ptr %998, align 8, !tbaa !11
  store double %999, ptr %70, align 8, !tbaa !11
  %1000 = load double, ptr %70, align 8, !tbaa !11
  %1001 = fcmp oge double %1000, 0.000000e+00
  br i1 %1001, label %1002, label %1004

1002:                                             ; preds = %991
  %1003 = load double, ptr %70, align 8, !tbaa !11
  br label %1007

1004:                                             ; preds = %991
  %1005 = load double, ptr %70, align 8, !tbaa !11
  %1006 = fneg double %1005
  br label %1007

1007:                                             ; preds = %1004, %1002
  %1008 = phi double [ %1003, %1002 ], [ %1006, %1004 ]
  %1009 = load ptr, ptr %47, align 8, !tbaa !5
  %1010 = load i64, ptr %76, align 8, !tbaa !9
  %1011 = add nsw i64 %1010, 1
  %1012 = load i64, ptr %76, align 8, !tbaa !9
  %1013 = load i64, ptr %56, align 8, !tbaa !9
  %1014 = mul nsw i64 %1012, %1013
  %1015 = add nsw i64 %1011, %1014
  %1016 = getelementptr inbounds double, ptr %1009, i64 %1015
  %1017 = load double, ptr %1016, align 8, !tbaa !11
  store double %1017, ptr %68, align 8, !tbaa !11
  %1018 = load double, ptr %68, align 8, !tbaa !11
  %1019 = fcmp oge double %1018, 0.000000e+00
  br i1 %1019, label %1020, label %1022

1020:                                             ; preds = %1007
  %1021 = load double, ptr %68, align 8, !tbaa !11
  br label %1025

1022:                                             ; preds = %1007
  %1023 = load double, ptr %68, align 8, !tbaa !11
  %1024 = fneg double %1023
  br label %1025

1025:                                             ; preds = %1022, %1020
  %1026 = phi double [ %1021, %1020 ], [ %1024, %1022 ]
  %1027 = call double @sqrt(double noundef %1026) #5
  %1028 = load ptr, ptr %47, align 8, !tbaa !5
  %1029 = load i64, ptr %76, align 8, !tbaa !9
  %1030 = load i64, ptr %76, align 8, !tbaa !9
  %1031 = add nsw i64 %1030, 1
  %1032 = load i64, ptr %56, align 8, !tbaa !9
  %1033 = mul nsw i64 %1031, %1032
  %1034 = add nsw i64 %1029, %1033
  %1035 = getelementptr inbounds double, ptr %1028, i64 %1034
  %1036 = load double, ptr %1035, align 8, !tbaa !11
  store double %1036, ptr %69, align 8, !tbaa !11
  %1037 = load double, ptr %69, align 8, !tbaa !11
  %1038 = fcmp oge double %1037, 0.000000e+00
  br i1 %1038, label %1039, label %1041

1039:                                             ; preds = %1025
  %1040 = load double, ptr %69, align 8, !tbaa !11
  br label %1044

1041:                                             ; preds = %1025
  %1042 = load double, ptr %69, align 8, !tbaa !11
  %1043 = fneg double %1042
  br label %1044

1044:                                             ; preds = %1041, %1039
  %1045 = phi double [ %1040, %1039 ], [ %1043, %1041 ]
  %1046 = call double @sqrt(double noundef %1045) #5
  %1047 = call double @llvm.fmuladd.f64(double %1027, double %1046, double %1008)
  store double %1047, ptr %86, align 8, !tbaa !11
  br label %1048

1048:                                             ; preds = %1044, %989
  br label %1049

1049:                                             ; preds = %1048, %960
  %1050 = load double, ptr %85, align 8, !tbaa !11
  %1051 = load double, ptr %86, align 8, !tbaa !11
  %1052 = fcmp oge double %1050, %1051
  br i1 %1052, label %1053, label %1055

1053:                                             ; preds = %1049
  %1054 = load i64, ptr %76, align 8, !tbaa !9
  store i64 %1054, ptr %74, align 8, !tbaa !9
  br label %1076

1055:                                             ; preds = %1049
  store i64 0, ptr %108, align 8, !tbaa !9
  %1056 = load i64, ptr %74, align 8, !tbaa !9
  store i64 %1056, ptr %99, align 8, !tbaa !9
  %1057 = load i64, ptr %76, align 8, !tbaa !9
  store i64 %1057, ptr %100, align 8, !tbaa !9
  %1058 = load ptr, ptr %47, align 8, !tbaa !5
  %1059 = load i64, ptr %57, align 8, !tbaa !9
  %1060 = getelementptr inbounds double, ptr %1058, i64 %1059
  %1061 = load ptr, ptr %48, align 8, !tbaa !5
  %1062 = load ptr, ptr %44, align 8, !tbaa !5
  %1063 = load i64, ptr %59, align 8, !tbaa !9
  %1064 = getelementptr inbounds double, ptr %1062, i64 %1063
  %1065 = load ptr, ptr %45, align 8, !tbaa !5
  %1066 = load ptr, ptr %52, align 8, !tbaa !5
  %1067 = getelementptr inbounds double, ptr %1066, i64 1
  %1068 = call i32 @dtrexc_(ptr noundef @.str.8, ptr noundef %84, ptr noundef %1060, ptr noundef %1061, ptr noundef %1064, ptr noundef %1065, ptr noundef %99, ptr noundef %100, ptr noundef %1067, ptr noundef %97)
  %1069 = load i64, ptr %97, align 8, !tbaa !9
  %1070 = icmp eq i64 %1069, 0
  br i1 %1070, label %1071, label %1073

1071:                                             ; preds = %1055
  %1072 = load i64, ptr %100, align 8, !tbaa !9
  store i64 %1072, ptr %74, align 8, !tbaa !9
  br label %1075

1073:                                             ; preds = %1055
  %1074 = load i64, ptr %76, align 8, !tbaa !9
  store i64 %1074, ptr %74, align 8, !tbaa !9
  br label %1075

1075:                                             ; preds = %1073, %1071
  br label %1076

1076:                                             ; preds = %1075, %1053
  %1077 = load i64, ptr %74, align 8, !tbaa !9
  %1078 = load i64, ptr %95, align 8, !tbaa !9
  %1079 = icmp eq i64 %1077, %1078
  br i1 %1079, label %1080, label %1083

1080:                                             ; preds = %1076
  %1081 = load i64, ptr %74, align 8, !tbaa !9
  %1082 = add nsw i64 %1081, 1
  store i64 %1082, ptr %76, align 8, !tbaa !9
  br label %1101

1083:                                             ; preds = %1076
  %1084 = load ptr, ptr %47, align 8, !tbaa !5
  %1085 = load i64, ptr %74, align 8, !tbaa !9
  %1086 = add nsw i64 %1085, 1
  %1087 = load i64, ptr %74, align 8, !tbaa !9
  %1088 = load i64, ptr %56, align 8, !tbaa !9
  %1089 = mul nsw i64 %1087, %1088
  %1090 = add nsw i64 %1086, %1089
  %1091 = getelementptr inbounds double, ptr %1084, i64 %1090
  %1092 = load double, ptr %1091, align 8, !tbaa !11
  %1093 = fcmp oeq double %1092, 0.000000e+00
  br i1 %1093, label %1094, label %1097

1094:                                             ; preds = %1083
  %1095 = load i64, ptr %74, align 8, !tbaa !9
  %1096 = add nsw i64 %1095, 1
  store i64 %1096, ptr %76, align 8, !tbaa !9
  br label %1100

1097:                                             ; preds = %1083
  %1098 = load i64, ptr %74, align 8, !tbaa !9
  %1099 = add nsw i64 %1098, 2
  store i64 %1099, ptr %76, align 8, !tbaa !9
  br label %1100

1100:                                             ; preds = %1097, %1094
  br label %1101

1101:                                             ; preds = %1100, %1080
  br label %856

1102:                                             ; preds = %856
  br label %821

1103:                                             ; preds = %824
  br label %1104

1104:                                             ; preds = %1103, %812
  %1105 = load i64, ptr %84, align 8, !tbaa !9
  store i64 %1105, ptr %74, align 8, !tbaa !9
  br label %1106

1106:                                             ; preds = %1238, %1104
  %1107 = load i64, ptr %74, align 8, !tbaa !9
  %1108 = load i64, ptr %104, align 8, !tbaa !9
  %1109 = add nsw i64 %1108, 1
  %1110 = icmp sge i64 %1107, %1109
  br i1 %1110, label %1111, label %1239

1111:                                             ; preds = %1106
  %1112 = load i64, ptr %74, align 8, !tbaa !9
  %1113 = load i64, ptr %104, align 8, !tbaa !9
  %1114 = add nsw i64 %1113, 1
  %1115 = icmp eq i64 %1112, %1114
  br i1 %1115, label %1116, label %1139

1116:                                             ; preds = %1111
  %1117 = load ptr, ptr %47, align 8, !tbaa !5
  %1118 = load i64, ptr %74, align 8, !tbaa !9
  %1119 = load i64, ptr %74, align 8, !tbaa !9
  %1120 = load i64, ptr %56, align 8, !tbaa !9
  %1121 = mul nsw i64 %1119, %1120
  %1122 = add nsw i64 %1118, %1121
  %1123 = getelementptr inbounds double, ptr %1117, i64 %1122
  %1124 = load double, ptr %1123, align 8, !tbaa !11
  %1125 = load ptr, ptr %42, align 8, !tbaa !5
  %1126 = load i64, ptr %105, align 8, !tbaa !9
  %1127 = load i64, ptr %74, align 8, !tbaa !9
  %1128 = add nsw i64 %1126, %1127
  %1129 = sub nsw i64 %1128, 1
  %1130 = getelementptr inbounds double, ptr %1125, i64 %1129
  store double %1124, ptr %1130, align 8, !tbaa !11
  %1131 = load ptr, ptr %43, align 8, !tbaa !5
  %1132 = load i64, ptr %105, align 8, !tbaa !9
  %1133 = load i64, ptr %74, align 8, !tbaa !9
  %1134 = add nsw i64 %1132, %1133
  %1135 = sub nsw i64 %1134, 1
  %1136 = getelementptr inbounds double, ptr %1131, i64 %1135
  store double 0.000000e+00, ptr %1136, align 8, !tbaa !11
  %1137 = load i64, ptr %74, align 8, !tbaa !9
  %1138 = add nsw i64 %1137, -1
  store i64 %1138, ptr %74, align 8, !tbaa !9
  br label %1238

1139:                                             ; preds = %1111
  %1140 = load ptr, ptr %47, align 8, !tbaa !5
  %1141 = load i64, ptr %74, align 8, !tbaa !9
  %1142 = load i64, ptr %74, align 8, !tbaa !9
  %1143 = sub nsw i64 %1142, 1
  %1144 = load i64, ptr %56, align 8, !tbaa !9
  %1145 = mul nsw i64 %1143, %1144
  %1146 = add nsw i64 %1141, %1145
  %1147 = getelementptr inbounds double, ptr %1140, i64 %1146
  %1148 = load double, ptr %1147, align 8, !tbaa !11
  %1149 = fcmp oeq double %1148, 0.000000e+00
  br i1 %1149, label %1150, label %1173

1150:                                             ; preds = %1139
  %1151 = load ptr, ptr %47, align 8, !tbaa !5
  %1152 = load i64, ptr %74, align 8, !tbaa !9
  %1153 = load i64, ptr %74, align 8, !tbaa !9
  %1154 = load i64, ptr %56, align 8, !tbaa !9
  %1155 = mul nsw i64 %1153, %1154
  %1156 = add nsw i64 %1152, %1155
  %1157 = getelementptr inbounds double, ptr %1151, i64 %1156
  %1158 = load double, ptr %1157, align 8, !tbaa !11
  %1159 = load ptr, ptr %42, align 8, !tbaa !5
  %1160 = load i64, ptr %105, align 8, !tbaa !9
  %1161 = load i64, ptr %74, align 8, !tbaa !9
  %1162 = add nsw i64 %1160, %1161
  %1163 = sub nsw i64 %1162, 1
  %1164 = getelementptr inbounds double, ptr %1159, i64 %1163
  store double %1158, ptr %1164, align 8, !tbaa !11
  %1165 = load ptr, ptr %43, align 8, !tbaa !5
  %1166 = load i64, ptr %105, align 8, !tbaa !9
  %1167 = load i64, ptr %74, align 8, !tbaa !9
  %1168 = add nsw i64 %1166, %1167
  %1169 = sub nsw i64 %1168, 1
  %1170 = getelementptr inbounds double, ptr %1165, i64 %1169
  store double 0.000000e+00, ptr %1170, align 8, !tbaa !11
  %1171 = load i64, ptr %74, align 8, !tbaa !9
  %1172 = add nsw i64 %1171, -1
  store i64 %1172, ptr %74, align 8, !tbaa !9
  br label %1237

1173:                                             ; preds = %1139
  %1174 = load ptr, ptr %47, align 8, !tbaa !5
  %1175 = load i64, ptr %74, align 8, !tbaa !9
  %1176 = sub nsw i64 %1175, 1
  %1177 = load i64, ptr %74, align 8, !tbaa !9
  %1178 = sub nsw i64 %1177, 1
  %1179 = load i64, ptr %56, align 8, !tbaa !9
  %1180 = mul nsw i64 %1178, %1179
  %1181 = add nsw i64 %1176, %1180
  %1182 = getelementptr inbounds double, ptr %1174, i64 %1181
  %1183 = load double, ptr %1182, align 8, !tbaa !11
  store double %1183, ptr %78, align 8, !tbaa !11
  %1184 = load ptr, ptr %47, align 8, !tbaa !5
  %1185 = load i64, ptr %74, align 8, !tbaa !9
  %1186 = load i64, ptr %74, align 8, !tbaa !9
  %1187 = sub nsw i64 %1186, 1
  %1188 = load i64, ptr %56, align 8, !tbaa !9
  %1189 = mul nsw i64 %1187, %1188
  %1190 = add nsw i64 %1185, %1189
  %1191 = getelementptr inbounds double, ptr %1184, i64 %1190
  %1192 = load double, ptr %1191, align 8, !tbaa !11
  store double %1192, ptr %80, align 8, !tbaa !11
  %1193 = load ptr, ptr %47, align 8, !tbaa !5
  %1194 = load i64, ptr %74, align 8, !tbaa !9
  %1195 = sub nsw i64 %1194, 1
  %1196 = load i64, ptr %74, align 8, !tbaa !9
  %1197 = load i64, ptr %56, align 8, !tbaa !9
  %1198 = mul nsw i64 %1196, %1197
  %1199 = add nsw i64 %1195, %1198
  %1200 = getelementptr inbounds double, ptr %1193, i64 %1199
  %1201 = load double, ptr %1200, align 8, !tbaa !11
  store double %1201, ptr %79, align 8, !tbaa !11
  %1202 = load ptr, ptr %47, align 8, !tbaa !5
  %1203 = load i64, ptr %74, align 8, !tbaa !9
  %1204 = load i64, ptr %74, align 8, !tbaa !9
  %1205 = load i64, ptr %56, align 8, !tbaa !9
  %1206 = mul nsw i64 %1204, %1205
  %1207 = add nsw i64 %1203, %1206
  %1208 = getelementptr inbounds double, ptr %1202, i64 %1207
  %1209 = load double, ptr %1208, align 8, !tbaa !11
  store double %1209, ptr %81, align 8, !tbaa !11
  %1210 = load ptr, ptr %42, align 8, !tbaa !5
  %1211 = load i64, ptr %105, align 8, !tbaa !9
  %1212 = load i64, ptr %74, align 8, !tbaa !9
  %1213 = add nsw i64 %1211, %1212
  %1214 = sub nsw i64 %1213, 2
  %1215 = getelementptr inbounds double, ptr %1210, i64 %1214
  %1216 = load ptr, ptr %43, align 8, !tbaa !5
  %1217 = load i64, ptr %105, align 8, !tbaa !9
  %1218 = load i64, ptr %74, align 8, !tbaa !9
  %1219 = add nsw i64 %1217, %1218
  %1220 = sub nsw i64 %1219, 2
  %1221 = getelementptr inbounds double, ptr %1216, i64 %1220
  %1222 = load ptr, ptr %42, align 8, !tbaa !5
  %1223 = load i64, ptr %105, align 8, !tbaa !9
  %1224 = load i64, ptr %74, align 8, !tbaa !9
  %1225 = add nsw i64 %1223, %1224
  %1226 = sub nsw i64 %1225, 1
  %1227 = getelementptr inbounds double, ptr %1222, i64 %1226
  %1228 = load ptr, ptr %43, align 8, !tbaa !5
  %1229 = load i64, ptr %105, align 8, !tbaa !9
  %1230 = load i64, ptr %74, align 8, !tbaa !9
  %1231 = add nsw i64 %1229, %1230
  %1232 = sub nsw i64 %1231, 1
  %1233 = getelementptr inbounds double, ptr %1228, i64 %1232
  %1234 = call i32 @dlanv2_(ptr noundef %78, ptr noundef %79, ptr noundef %80, ptr noundef %81, ptr noundef %1215, ptr noundef %1221, ptr noundef %1227, ptr noundef %1233, ptr noundef %82, ptr noundef %83)
  %1235 = load i64, ptr %74, align 8, !tbaa !9
  %1236 = add nsw i64 %1235, -2
  store i64 %1236, ptr %74, align 8, !tbaa !9
  br label %1237

1237:                                             ; preds = %1173, %1150
  br label %1238

1238:                                             ; preds = %1237, %1116
  br label %1106

1239:                                             ; preds = %1106
  %1240 = load ptr, ptr %40, align 8, !tbaa !5
  %1241 = load i64, ptr %1240, align 8, !tbaa !9
  %1242 = load i64, ptr %84, align 8, !tbaa !9
  %1243 = icmp slt i64 %1241, %1242
  br i1 %1243, label %1247, label %1244

1244:                                             ; preds = %1239
  %1245 = load double, ptr %77, align 8, !tbaa !11
  %1246 = fcmp oeq double %1245, 0.000000e+00
  br i1 %1246, label %1247, label %1656

1247:                                             ; preds = %1244, %1239
  %1248 = load ptr, ptr %40, align 8, !tbaa !5
  %1249 = load i64, ptr %1248, align 8, !tbaa !9
  %1250 = icmp sgt i64 %1249, 1
  br i1 %1250, label %1251, label %1335

1251:                                             ; preds = %1247
  %1252 = load double, ptr %77, align 8, !tbaa !11
  %1253 = fcmp une double %1252, 0.000000e+00
  br i1 %1253, label %1254, label %1335

1254:                                             ; preds = %1251
  %1255 = load ptr, ptr %40, align 8, !tbaa !5
  %1256 = load ptr, ptr %44, align 8, !tbaa !5
  %1257 = load i64, ptr %59, align 8, !tbaa !9
  %1258 = getelementptr inbounds double, ptr %1256, i64 %1257
  %1259 = load ptr, ptr %45, align 8, !tbaa !5
  %1260 = load ptr, ptr %52, align 8, !tbaa !5
  %1261 = getelementptr inbounds double, ptr %1260, i64 1
  %1262 = call i32 @f2c_dcopy(ptr noundef %1255, ptr noundef %1258, ptr noundef %1259, ptr noundef %1261, ptr noundef @c__1)
  %1263 = load ptr, ptr %52, align 8, !tbaa !5
  %1264 = getelementptr inbounds double, ptr %1263, i64 1
  %1265 = load double, ptr %1264, align 8, !tbaa !11
  store double %1265, ptr %94, align 8, !tbaa !11
  %1266 = load ptr, ptr %40, align 8, !tbaa !5
  %1267 = load ptr, ptr %52, align 8, !tbaa !5
  %1268 = getelementptr inbounds double, ptr %1267, i64 2
  %1269 = call i32 @dlarfg_(ptr noundef %1266, ptr noundef %94, ptr noundef %1268, ptr noundef @c__1, ptr noundef %89)
  %1270 = load ptr, ptr %52, align 8, !tbaa !5
  %1271 = getelementptr inbounds double, ptr %1270, i64 1
  store double 1.000000e+00, ptr %1271, align 8, !tbaa !11
  %1272 = load i64, ptr %84, align 8, !tbaa !9
  %1273 = sub nsw i64 %1272, 2
  store i64 %1273, ptr %64, align 8, !tbaa !9
  %1274 = load i64, ptr %84, align 8, !tbaa !9
  %1275 = sub nsw i64 %1274, 2
  store i64 %1275, ptr %65, align 8, !tbaa !9
  %1276 = load ptr, ptr %47, align 8, !tbaa !5
  %1277 = load i64, ptr %56, align 8, !tbaa !9
  %1278 = add nsw i64 %1277, 3
  %1279 = getelementptr inbounds double, ptr %1276, i64 %1278
  %1280 = load ptr, ptr %48, align 8, !tbaa !5
  %1281 = call i32 @dlaset_(ptr noundef @.str.9, ptr noundef %64, ptr noundef %65, ptr noundef @c_b17, ptr noundef @c_b17, ptr noundef %1279, ptr noundef %1280)
  %1282 = load ptr, ptr %40, align 8, !tbaa !5
  %1283 = load ptr, ptr %52, align 8, !tbaa !5
  %1284 = getelementptr inbounds double, ptr %1283, i64 1
  %1285 = load ptr, ptr %47, align 8, !tbaa !5
  %1286 = load i64, ptr %57, align 8, !tbaa !9
  %1287 = getelementptr inbounds double, ptr %1285, i64 %1286
  %1288 = load ptr, ptr %48, align 8, !tbaa !5
  %1289 = load ptr, ptr %52, align 8, !tbaa !5
  %1290 = load i64, ptr %84, align 8, !tbaa !9
  %1291 = add nsw i64 %1290, 1
  %1292 = getelementptr inbounds double, ptr %1289, i64 %1291
  %1293 = call i32 @dlarf_(ptr noundef @.str.9, ptr noundef %1282, ptr noundef %84, ptr noundef %1284, ptr noundef @c__1, ptr noundef %89, ptr noundef %1287, ptr noundef %1288, ptr noundef %1292)
  %1294 = load ptr, ptr %40, align 8, !tbaa !5
  %1295 = load ptr, ptr %40, align 8, !tbaa !5
  %1296 = load ptr, ptr %52, align 8, !tbaa !5
  %1297 = getelementptr inbounds double, ptr %1296, i64 1
  %1298 = load ptr, ptr %47, align 8, !tbaa !5
  %1299 = load i64, ptr %57, align 8, !tbaa !9
  %1300 = getelementptr inbounds double, ptr %1298, i64 %1299
  %1301 = load ptr, ptr %48, align 8, !tbaa !5
  %1302 = load ptr, ptr %52, align 8, !tbaa !5
  %1303 = load i64, ptr %84, align 8, !tbaa !9
  %1304 = add nsw i64 %1303, 1
  %1305 = getelementptr inbounds double, ptr %1302, i64 %1304
  %1306 = call i32 @dlarf_(ptr noundef @.str, ptr noundef %1294, ptr noundef %1295, ptr noundef %1297, ptr noundef @c__1, ptr noundef %89, ptr noundef %1300, ptr noundef %1301, ptr noundef %1305)
  %1307 = load ptr, ptr %40, align 8, !tbaa !5
  %1308 = load ptr, ptr %52, align 8, !tbaa !5
  %1309 = getelementptr inbounds double, ptr %1308, i64 1
  %1310 = load ptr, ptr %44, align 8, !tbaa !5
  %1311 = load i64, ptr %59, align 8, !tbaa !9
  %1312 = getelementptr inbounds double, ptr %1310, i64 %1311
  %1313 = load ptr, ptr %45, align 8, !tbaa !5
  %1314 = load ptr, ptr %52, align 8, !tbaa !5
  %1315 = load i64, ptr %84, align 8, !tbaa !9
  %1316 = add nsw i64 %1315, 1
  %1317 = getelementptr inbounds double, ptr %1314, i64 %1316
  %1318 = call i32 @dlarf_(ptr noundef @.str, ptr noundef %84, ptr noundef %1307, ptr noundef %1309, ptr noundef @c__1, ptr noundef %89, ptr noundef %1312, ptr noundef %1313, ptr noundef %1317)
  %1319 = load ptr, ptr %53, align 8, !tbaa !5
  %1320 = load i64, ptr %1319, align 8, !tbaa !9
  %1321 = load i64, ptr %84, align 8, !tbaa !9
  %1322 = sub nsw i64 %1320, %1321
  store i64 %1322, ptr %64, align 8, !tbaa !9
  %1323 = load ptr, ptr %40, align 8, !tbaa !5
  %1324 = load ptr, ptr %47, align 8, !tbaa !5
  %1325 = load i64, ptr %57, align 8, !tbaa !9
  %1326 = getelementptr inbounds double, ptr %1324, i64 %1325
  %1327 = load ptr, ptr %48, align 8, !tbaa !5
  %1328 = load ptr, ptr %52, align 8, !tbaa !5
  %1329 = getelementptr inbounds double, ptr %1328, i64 1
  %1330 = load ptr, ptr %52, align 8, !tbaa !5
  %1331 = load i64, ptr %84, align 8, !tbaa !9
  %1332 = add nsw i64 %1331, 1
  %1333 = getelementptr inbounds double, ptr %1330, i64 %1332
  %1334 = call i32 @dgehrd_(ptr noundef %84, ptr noundef @c__1, ptr noundef %1323, ptr noundef %1326, ptr noundef %1327, ptr noundef %1329, ptr noundef %1333, ptr noundef %64, ptr noundef %97)
  br label %1335

1335:                                             ; preds = %1254, %1251, %1247
  %1336 = load i64, ptr %105, align 8, !tbaa !9
  %1337 = icmp sgt i64 %1336, 1
  br i1 %1337, label %1338, label %1354

1338:                                             ; preds = %1335
  %1339 = load double, ptr %77, align 8, !tbaa !11
  %1340 = load ptr, ptr %44, align 8, !tbaa !5
  %1341 = load i64, ptr %58, align 8, !tbaa !9
  %1342 = add nsw i64 %1341, 1
  %1343 = getelementptr inbounds double, ptr %1340, i64 %1342
  %1344 = load double, ptr %1343, align 8, !tbaa !11
  %1345 = fmul double %1339, %1344
  %1346 = load ptr, ptr %34, align 8, !tbaa !5
  %1347 = load i64, ptr %105, align 8, !tbaa !9
  %1348 = load i64, ptr %105, align 8, !tbaa !9
  %1349 = sub nsw i64 %1348, 1
  %1350 = load i64, ptr %54, align 8, !tbaa !9
  %1351 = mul nsw i64 %1349, %1350
  %1352 = add nsw i64 %1347, %1351
  %1353 = getelementptr inbounds double, ptr %1346, i64 %1352
  store double %1345, ptr %1353, align 8, !tbaa !11
  br label %1354

1354:                                             ; preds = %1338, %1335
  %1355 = load ptr, ptr %47, align 8, !tbaa !5
  %1356 = load i64, ptr %57, align 8, !tbaa !9
  %1357 = getelementptr inbounds double, ptr %1355, i64 %1356
  %1358 = load ptr, ptr %48, align 8, !tbaa !5
  %1359 = load ptr, ptr %34, align 8, !tbaa !5
  %1360 = load i64, ptr %105, align 8, !tbaa !9
  %1361 = load i64, ptr %105, align 8, !tbaa !9
  %1362 = load i64, ptr %54, align 8, !tbaa !9
  %1363 = mul nsw i64 %1361, %1362
  %1364 = add nsw i64 %1360, %1363
  %1365 = getelementptr inbounds double, ptr %1359, i64 %1364
  %1366 = load ptr, ptr %35, align 8, !tbaa !5
  %1367 = call i32 @dlacpy_(ptr noundef @.str.4, ptr noundef %84, ptr noundef %84, ptr noundef %1357, ptr noundef %1358, ptr noundef %1365, ptr noundef %1366)
  %1368 = load i64, ptr %84, align 8, !tbaa !9
  %1369 = sub nsw i64 %1368, 1
  store i64 %1369, ptr %64, align 8, !tbaa !9
  %1370 = load ptr, ptr %48, align 8, !tbaa !5
  %1371 = load i64, ptr %1370, align 8, !tbaa !9
  %1372 = add nsw i64 %1371, 1
  store i64 %1372, ptr %65, align 8, !tbaa !9
  %1373 = load ptr, ptr %35, align 8, !tbaa !5
  %1374 = load i64, ptr %1373, align 8, !tbaa !9
  %1375 = add nsw i64 %1374, 1
  store i64 %1375, ptr %66, align 8, !tbaa !9
  %1376 = load ptr, ptr %47, align 8, !tbaa !5
  %1377 = load i64, ptr %56, align 8, !tbaa !9
  %1378 = add nsw i64 %1377, 2
  %1379 = getelementptr inbounds double, ptr %1376, i64 %1378
  %1380 = load ptr, ptr %34, align 8, !tbaa !5
  %1381 = load i64, ptr %105, align 8, !tbaa !9
  %1382 = add nsw i64 %1381, 1
  %1383 = load i64, ptr %105, align 8, !tbaa !9
  %1384 = load i64, ptr %54, align 8, !tbaa !9
  %1385 = mul nsw i64 %1383, %1384
  %1386 = add nsw i64 %1382, %1385
  %1387 = getelementptr inbounds double, ptr %1380, i64 %1386
  %1388 = call i32 @f2c_dcopy(ptr noundef %64, ptr noundef %1379, ptr noundef %65, ptr noundef %1387, ptr noundef %66)
  %1389 = load ptr, ptr %40, align 8, !tbaa !5
  %1390 = load i64, ptr %1389, align 8, !tbaa !9
  %1391 = icmp sgt i64 %1390, 1
  br i1 %1391, label %1392, label %1417

1392:                                             ; preds = %1354
  %1393 = load double, ptr %77, align 8, !tbaa !11
  %1394 = fcmp une double %1393, 0.000000e+00
  br i1 %1394, label %1395, label %1417

1395:                                             ; preds = %1392
  %1396 = load ptr, ptr %53, align 8, !tbaa !5
  %1397 = load i64, ptr %1396, align 8, !tbaa !9
  %1398 = load i64, ptr %84, align 8, !tbaa !9
  %1399 = sub nsw i64 %1397, %1398
  store i64 %1399, ptr %64, align 8, !tbaa !9
  %1400 = load ptr, ptr %40, align 8, !tbaa !5
  %1401 = load ptr, ptr %40, align 8, !tbaa !5
  %1402 = load ptr, ptr %47, align 8, !tbaa !5
  %1403 = load i64, ptr %57, align 8, !tbaa !9
  %1404 = getelementptr inbounds double, ptr %1402, i64 %1403
  %1405 = load ptr, ptr %48, align 8, !tbaa !5
  %1406 = load ptr, ptr %52, align 8, !tbaa !5
  %1407 = getelementptr inbounds double, ptr %1406, i64 1
  %1408 = load ptr, ptr %44, align 8, !tbaa !5
  %1409 = load i64, ptr %59, align 8, !tbaa !9
  %1410 = getelementptr inbounds double, ptr %1408, i64 %1409
  %1411 = load ptr, ptr %45, align 8, !tbaa !5
  %1412 = load ptr, ptr %52, align 8, !tbaa !5
  %1413 = load i64, ptr %84, align 8, !tbaa !9
  %1414 = add nsw i64 %1413, 1
  %1415 = getelementptr inbounds double, ptr %1412, i64 %1414
  %1416 = call i32 @dormhr_(ptr noundef @.str, ptr noundef @.str.1, ptr noundef %84, ptr noundef %1400, ptr noundef @c__1, ptr noundef %1401, ptr noundef %1404, ptr noundef %1405, ptr noundef %1407, ptr noundef %1410, ptr noundef %1411, ptr noundef %1415, ptr noundef %64, ptr noundef %97)
  br label %1417

1417:                                             ; preds = %1395, %1392, %1354
  %1418 = load ptr, ptr %28, align 8, !tbaa !5
  %1419 = load i64, ptr %1418, align 8, !tbaa !9
  %1420 = icmp ne i64 %1419, 0
  br i1 %1420, label %1421, label %1422

1421:                                             ; preds = %1417
  store i64 1, ptr %101, align 8, !tbaa !9
  br label %1425

1422:                                             ; preds = %1417
  %1423 = load ptr, ptr %31, align 8, !tbaa !5
  %1424 = load i64, ptr %1423, align 8, !tbaa !9
  store i64 %1424, ptr %101, align 8, !tbaa !9
  br label %1425

1425:                                             ; preds = %1422, %1421
  %1426 = load i64, ptr %105, align 8, !tbaa !9
  %1427 = sub nsw i64 %1426, 1
  store i64 %1427, ptr %64, align 8, !tbaa !9
  %1428 = load ptr, ptr %49, align 8, !tbaa !5
  %1429 = load i64, ptr %1428, align 8, !tbaa !9
  store i64 %1429, ptr %65, align 8, !tbaa !9
  %1430 = load i64, ptr %101, align 8, !tbaa !9
  store i64 %1430, ptr %102, align 8, !tbaa !9
  br label %1431

1431:                                             ; preds = %1492, %1425
  %1432 = load i64, ptr %65, align 8, !tbaa !9
  %1433 = icmp slt i64 %1432, 0
  br i1 %1433, label %1434, label %1439

1434:                                             ; preds = %1431
  %1435 = load i64, ptr %102, align 8, !tbaa !9
  %1436 = load i64, ptr %64, align 8, !tbaa !9
  %1437 = icmp sge i64 %1435, %1436
  %1438 = zext i1 %1437 to i32
  br label %1444

1439:                                             ; preds = %1431
  %1440 = load i64, ptr %102, align 8, !tbaa !9
  %1441 = load i64, ptr %64, align 8, !tbaa !9
  %1442 = icmp sle i64 %1440, %1441
  %1443 = zext i1 %1442 to i32
  br label %1444

1444:                                             ; preds = %1439, %1434
  %1445 = phi i32 [ %1438, %1434 ], [ %1443, %1439 ]
  %1446 = icmp ne i32 %1445, 0
  br i1 %1446, label %1447, label %1496

1447:                                             ; preds = %1444
  %1448 = load ptr, ptr %49, align 8, !tbaa !5
  %1449 = load i64, ptr %1448, align 8, !tbaa !9
  store i64 %1449, ptr %66, align 8, !tbaa !9
  %1450 = load i64, ptr %105, align 8, !tbaa !9
  %1451 = load i64, ptr %102, align 8, !tbaa !9
  %1452 = sub nsw i64 %1450, %1451
  store i64 %1452, ptr %67, align 8, !tbaa !9
  %1453 = load i64, ptr %66, align 8, !tbaa !9
  %1454 = load i64, ptr %67, align 8, !tbaa !9
  %1455 = icmp sle i64 %1453, %1454
  br i1 %1455, label %1456, label %1458

1456:                                             ; preds = %1447
  %1457 = load i64, ptr %66, align 8, !tbaa !9
  br label %1460

1458:                                             ; preds = %1447
  %1459 = load i64, ptr %67, align 8, !tbaa !9
  br label %1460

1460:                                             ; preds = %1458, %1456
  %1461 = phi i64 [ %1457, %1456 ], [ %1459, %1458 ]
  store i64 %1461, ptr %88, align 8, !tbaa !9
  %1462 = load ptr, ptr %34, align 8, !tbaa !5
  %1463 = load i64, ptr %102, align 8, !tbaa !9
  %1464 = load i64, ptr %105, align 8, !tbaa !9
  %1465 = load i64, ptr %54, align 8, !tbaa !9
  %1466 = mul nsw i64 %1464, %1465
  %1467 = add nsw i64 %1463, %1466
  %1468 = getelementptr inbounds double, ptr %1462, i64 %1467
  %1469 = load ptr, ptr %35, align 8, !tbaa !5
  %1470 = load ptr, ptr %44, align 8, !tbaa !5
  %1471 = load i64, ptr %59, align 8, !tbaa !9
  %1472 = getelementptr inbounds double, ptr %1470, i64 %1471
  %1473 = load ptr, ptr %45, align 8, !tbaa !5
  %1474 = load ptr, ptr %50, align 8, !tbaa !5
  %1475 = load i64, ptr %61, align 8, !tbaa !9
  %1476 = getelementptr inbounds double, ptr %1474, i64 %1475
  %1477 = load ptr, ptr %51, align 8, !tbaa !5
  %1478 = call i32 @f2c_dgemm(ptr noundef @.str.1, ptr noundef @.str.1, ptr noundef %88, ptr noundef %84, ptr noundef %84, ptr noundef @c_b18, ptr noundef %1468, ptr noundef %1469, ptr noundef %1472, ptr noundef %1473, ptr noundef @c_b17, ptr noundef %1476, ptr noundef %1477)
  %1479 = load ptr, ptr %50, align 8, !tbaa !5
  %1480 = load i64, ptr %61, align 8, !tbaa !9
  %1481 = getelementptr inbounds double, ptr %1479, i64 %1480
  %1482 = load ptr, ptr %51, align 8, !tbaa !5
  %1483 = load ptr, ptr %34, align 8, !tbaa !5
  %1484 = load i64, ptr %102, align 8, !tbaa !9
  %1485 = load i64, ptr %105, align 8, !tbaa !9
  %1486 = load i64, ptr %54, align 8, !tbaa !9
  %1487 = mul nsw i64 %1485, %1486
  %1488 = add nsw i64 %1484, %1487
  %1489 = getelementptr inbounds double, ptr %1483, i64 %1488
  %1490 = load ptr, ptr %35, align 8, !tbaa !5
  %1491 = call i32 @dlacpy_(ptr noundef @.str.5, ptr noundef %88, ptr noundef %84, ptr noundef %1481, ptr noundef %1482, ptr noundef %1489, ptr noundef %1490)
  br label %1492

1492:                                             ; preds = %1460
  %1493 = load i64, ptr %65, align 8, !tbaa !9
  %1494 = load i64, ptr %102, align 8, !tbaa !9
  %1495 = add nsw i64 %1494, %1493
  store i64 %1495, ptr %102, align 8, !tbaa !9
  br label %1431, !llvm.loop !15

1496:                                             ; preds = %1444
  %1497 = load ptr, ptr %28, align 8, !tbaa !5
  %1498 = load i64, ptr %1497, align 8, !tbaa !9
  %1499 = icmp ne i64 %1498, 0
  br i1 %1499, label %1500, label %1576

1500:                                             ; preds = %1496
  %1501 = load ptr, ptr %30, align 8, !tbaa !5
  %1502 = load i64, ptr %1501, align 8, !tbaa !9
  store i64 %1502, ptr %65, align 8, !tbaa !9
  %1503 = load ptr, ptr %46, align 8, !tbaa !5
  %1504 = load i64, ptr %1503, align 8, !tbaa !9
  store i64 %1504, ptr %64, align 8, !tbaa !9
  %1505 = load ptr, ptr %32, align 8, !tbaa !5
  %1506 = load i64, ptr %1505, align 8, !tbaa !9
  %1507 = add nsw i64 %1506, 1
  store i64 %1507, ptr %96, align 8, !tbaa !9
  br label %1508

1508:                                             ; preds = %1571, %1500
  %1509 = load i64, ptr %64, align 8, !tbaa !9
  %1510 = icmp slt i64 %1509, 0
  br i1 %1510, label %1511, label %1516

1511:                                             ; preds = %1508
  %1512 = load i64, ptr %96, align 8, !tbaa !9
  %1513 = load i64, ptr %65, align 8, !tbaa !9
  %1514 = icmp sge i64 %1512, %1513
  %1515 = zext i1 %1514 to i32
  br label %1521

1516:                                             ; preds = %1508
  %1517 = load i64, ptr %96, align 8, !tbaa !9
  %1518 = load i64, ptr %65, align 8, !tbaa !9
  %1519 = icmp sle i64 %1517, %1518
  %1520 = zext i1 %1519 to i32
  br label %1521

1521:                                             ; preds = %1516, %1511
  %1522 = phi i32 [ %1515, %1511 ], [ %1520, %1516 ]
  %1523 = icmp ne i32 %1522, 0
  br i1 %1523, label %1524, label %1575

1524:                                             ; preds = %1521
  %1525 = load ptr, ptr %46, align 8, !tbaa !5
  %1526 = load i64, ptr %1525, align 8, !tbaa !9
  store i64 %1526, ptr %66, align 8, !tbaa !9
  %1527 = load ptr, ptr %30, align 8, !tbaa !5
  %1528 = load i64, ptr %1527, align 8, !tbaa !9
  %1529 = load i64, ptr %96, align 8, !tbaa !9
  %1530 = sub nsw i64 %1528, %1529
  %1531 = add nsw i64 %1530, 1
  store i64 %1531, ptr %67, align 8, !tbaa !9
  %1532 = load i64, ptr %66, align 8, !tbaa !9
  %1533 = load i64, ptr %67, align 8, !tbaa !9
  %1534 = icmp sle i64 %1532, %1533
  br i1 %1534, label %1535, label %1537

1535:                                             ; preds = %1524
  %1536 = load i64, ptr %66, align 8, !tbaa !9
  br label %1539

1537:                                             ; preds = %1524
  %1538 = load i64, ptr %67, align 8, !tbaa !9
  br label %1539

1539:                                             ; preds = %1537, %1535
  %1540 = phi i64 [ %1536, %1535 ], [ %1538, %1537 ]
  store i64 %1540, ptr %88, align 8, !tbaa !9
  %1541 = load ptr, ptr %44, align 8, !tbaa !5
  %1542 = load i64, ptr %59, align 8, !tbaa !9
  %1543 = getelementptr inbounds double, ptr %1541, i64 %1542
  %1544 = load ptr, ptr %45, align 8, !tbaa !5
  %1545 = load ptr, ptr %34, align 8, !tbaa !5
  %1546 = load i64, ptr %105, align 8, !tbaa !9
  %1547 = load i64, ptr %96, align 8, !tbaa !9
  %1548 = load i64, ptr %54, align 8, !tbaa !9
  %1549 = mul nsw i64 %1547, %1548
  %1550 = add nsw i64 %1546, %1549
  %1551 = getelementptr inbounds double, ptr %1545, i64 %1550
  %1552 = load ptr, ptr %35, align 8, !tbaa !5
  %1553 = load ptr, ptr %47, align 8, !tbaa !5
  %1554 = load i64, ptr %57, align 8, !tbaa !9
  %1555 = getelementptr inbounds double, ptr %1553, i64 %1554
  %1556 = load ptr, ptr %48, align 8, !tbaa !5
  %1557 = call i32 @f2c_dgemm(ptr noundef @.str.10, ptr noundef @.str.1, ptr noundef %84, ptr noundef %88, ptr noundef %84, ptr noundef @c_b18, ptr noundef %1543, ptr noundef %1544, ptr noundef %1551, ptr noundef %1552, ptr noundef @c_b17, ptr noundef %1555, ptr noundef %1556)
  %1558 = load ptr, ptr %47, align 8, !tbaa !5
  %1559 = load i64, ptr %57, align 8, !tbaa !9
  %1560 = getelementptr inbounds double, ptr %1558, i64 %1559
  %1561 = load ptr, ptr %48, align 8, !tbaa !5
  %1562 = load ptr, ptr %34, align 8, !tbaa !5
  %1563 = load i64, ptr %105, align 8, !tbaa !9
  %1564 = load i64, ptr %96, align 8, !tbaa !9
  %1565 = load i64, ptr %54, align 8, !tbaa !9
  %1566 = mul nsw i64 %1564, %1565
  %1567 = add nsw i64 %1563, %1566
  %1568 = getelementptr inbounds double, ptr %1562, i64 %1567
  %1569 = load ptr, ptr %35, align 8, !tbaa !5
  %1570 = call i32 @dlacpy_(ptr noundef @.str.5, ptr noundef %84, ptr noundef %88, ptr noundef %1560, ptr noundef %1561, ptr noundef %1568, ptr noundef %1569)
  br label %1571

1571:                                             ; preds = %1539
  %1572 = load i64, ptr %64, align 8, !tbaa !9
  %1573 = load i64, ptr %96, align 8, !tbaa !9
  %1574 = add nsw i64 %1573, %1572
  store i64 %1574, ptr %96, align 8, !tbaa !9
  br label %1508, !llvm.loop !16

1575:                                             ; preds = %1521
  br label %1576

1576:                                             ; preds = %1575, %1496
  %1577 = load ptr, ptr %29, align 8, !tbaa !5
  %1578 = load i64, ptr %1577, align 8, !tbaa !9
  %1579 = icmp ne i64 %1578, 0
  br i1 %1579, label %1580, label %1655

1580:                                             ; preds = %1576
  %1581 = load ptr, ptr %37, align 8, !tbaa !5
  %1582 = load i64, ptr %1581, align 8, !tbaa !9
  store i64 %1582, ptr %64, align 8, !tbaa !9
  %1583 = load ptr, ptr %49, align 8, !tbaa !5
  %1584 = load i64, ptr %1583, align 8, !tbaa !9
  store i64 %1584, ptr %65, align 8, !tbaa !9
  %1585 = load ptr, ptr %36, align 8, !tbaa !5
  %1586 = load i64, ptr %1585, align 8, !tbaa !9
  store i64 %1586, ptr %102, align 8, !tbaa !9
  br label %1587

1587:                                             ; preds = %1650, %1580
  %1588 = load i64, ptr %65, align 8, !tbaa !9
  %1589 = icmp slt i64 %1588, 0
  br i1 %1589, label %1590, label %1595

1590:                                             ; preds = %1587
  %1591 = load i64, ptr %102, align 8, !tbaa !9
  %1592 = load i64, ptr %64, align 8, !tbaa !9
  %1593 = icmp sge i64 %1591, %1592
  %1594 = zext i1 %1593 to i32
  br label %1600

1595:                                             ; preds = %1587
  %1596 = load i64, ptr %102, align 8, !tbaa !9
  %1597 = load i64, ptr %64, align 8, !tbaa !9
  %1598 = icmp sle i64 %1596, %1597
  %1599 = zext i1 %1598 to i32
  br label %1600

1600:                                             ; preds = %1595, %1590
  %1601 = phi i32 [ %1594, %1590 ], [ %1599, %1595 ]
  %1602 = icmp ne i32 %1601, 0
  br i1 %1602, label %1603, label %1654

1603:                                             ; preds = %1600
  %1604 = load ptr, ptr %49, align 8, !tbaa !5
  %1605 = load i64, ptr %1604, align 8, !tbaa !9
  store i64 %1605, ptr %66, align 8, !tbaa !9
  %1606 = load ptr, ptr %37, align 8, !tbaa !5
  %1607 = load i64, ptr %1606, align 8, !tbaa !9
  %1608 = load i64, ptr %102, align 8, !tbaa !9
  %1609 = sub nsw i64 %1607, %1608
  %1610 = add nsw i64 %1609, 1
  store i64 %1610, ptr %67, align 8, !tbaa !9
  %1611 = load i64, ptr %66, align 8, !tbaa !9
  %1612 = load i64, ptr %67, align 8, !tbaa !9
  %1613 = icmp sle i64 %1611, %1612
  br i1 %1613, label %1614, label %1616

1614:                                             ; preds = %1603
  %1615 = load i64, ptr %66, align 8, !tbaa !9
  br label %1618

1616:                                             ; preds = %1603
  %1617 = load i64, ptr %67, align 8, !tbaa !9
  br label %1618

1618:                                             ; preds = %1616, %1614
  %1619 = phi i64 [ %1615, %1614 ], [ %1617, %1616 ]
  store i64 %1619, ptr %88, align 8, !tbaa !9
  %1620 = load ptr, ptr %38, align 8, !tbaa !5
  %1621 = load i64, ptr %102, align 8, !tbaa !9
  %1622 = load i64, ptr %105, align 8, !tbaa !9
  %1623 = load i64, ptr %62, align 8, !tbaa !9
  %1624 = mul nsw i64 %1622, %1623
  %1625 = add nsw i64 %1621, %1624
  %1626 = getelementptr inbounds double, ptr %1620, i64 %1625
  %1627 = load ptr, ptr %39, align 8, !tbaa !5
  %1628 = load ptr, ptr %44, align 8, !tbaa !5
  %1629 = load i64, ptr %59, align 8, !tbaa !9
  %1630 = getelementptr inbounds double, ptr %1628, i64 %1629
  %1631 = load ptr, ptr %45, align 8, !tbaa !5
  %1632 = load ptr, ptr %50, align 8, !tbaa !5
  %1633 = load i64, ptr %61, align 8, !tbaa !9
  %1634 = getelementptr inbounds double, ptr %1632, i64 %1633
  %1635 = load ptr, ptr %51, align 8, !tbaa !5
  %1636 = call i32 @f2c_dgemm(ptr noundef @.str.1, ptr noundef @.str.1, ptr noundef %88, ptr noundef %84, ptr noundef %84, ptr noundef @c_b18, ptr noundef %1626, ptr noundef %1627, ptr noundef %1630, ptr noundef %1631, ptr noundef @c_b17, ptr noundef %1634, ptr noundef %1635)
  %1637 = load ptr, ptr %50, align 8, !tbaa !5
  %1638 = load i64, ptr %61, align 8, !tbaa !9
  %1639 = getelementptr inbounds double, ptr %1637, i64 %1638
  %1640 = load ptr, ptr %51, align 8, !tbaa !5
  %1641 = load ptr, ptr %38, align 8, !tbaa !5
  %1642 = load i64, ptr %102, align 8, !tbaa !9
  %1643 = load i64, ptr %105, align 8, !tbaa !9
  %1644 = load i64, ptr %62, align 8, !tbaa !9
  %1645 = mul nsw i64 %1643, %1644
  %1646 = add nsw i64 %1642, %1645
  %1647 = getelementptr inbounds double, ptr %1641, i64 %1646
  %1648 = load ptr, ptr %39, align 8, !tbaa !5
  %1649 = call i32 @dlacpy_(ptr noundef @.str.5, ptr noundef %88, ptr noundef %84, ptr noundef %1639, ptr noundef %1640, ptr noundef %1647, ptr noundef %1648)
  br label %1650

1650:                                             ; preds = %1618
  %1651 = load i64, ptr %65, align 8, !tbaa !9
  %1652 = load i64, ptr %102, align 8, !tbaa !9
  %1653 = add nsw i64 %1652, %1651
  store i64 %1653, ptr %102, align 8, !tbaa !9
  br label %1587, !llvm.loop !17

1654:                                             ; preds = %1600
  br label %1655

1655:                                             ; preds = %1654, %1576
  br label %1656

1656:                                             ; preds = %1655, %1244
  %1657 = load i64, ptr %84, align 8, !tbaa !9
  %1658 = load ptr, ptr %40, align 8, !tbaa !5
  %1659 = load i64, ptr %1658, align 8, !tbaa !9
  %1660 = sub nsw i64 %1657, %1659
  %1661 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 %1660, ptr %1661, align 8, !tbaa !9
  %1662 = load i64, ptr %104, align 8, !tbaa !9
  %1663 = load ptr, ptr %40, align 8, !tbaa !5
  %1664 = load i64, ptr %1663, align 8, !tbaa !9
  %1665 = sub nsw i64 %1664, %1662
  store i64 %1665, ptr %1663, align 8, !tbaa !9
  %1666 = load i64, ptr %110, align 8, !tbaa !9
  %1667 = sitofp i64 %1666 to double
  %1668 = load ptr, ptr %52, align 8, !tbaa !5
  %1669 = getelementptr inbounds double, ptr %1668, i64 1
  store double %1667, ptr %1669, align 8, !tbaa !11
  store i32 0, ptr %27, align 4
  store i32 1, ptr %111, align 4
  br label %1670

1670:                                             ; preds = %1656, %405, %276, %271, %256
  call void @llvm.lifetime.end.p0(i64 8, ptr %110) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %109) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %108) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %107) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %106) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #5
  %1671 = load i32, ptr %27, align 4
  ret i32 %1671
}

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

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

declare i32 @dormhr_(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 @dlaqr4_(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 double @dlamch_(ptr noundef) #2

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

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

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

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

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

declare i32 @dlahqr_(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 @dtrexc_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

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

declare i32 @dlanv2_(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 @dlarf_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

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

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

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

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


; 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
@c_n1 = external hidden global i64, align 8
@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@c_true = external hidden global i64, align 8
@.str.2 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@c_b17 = external hidden global double, align 8
@c_b18 = external hidden global double, align 8
@c__12 = external hidden global i64, align 8
@.str.6 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [2 x i8], align 1

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

67:                                               ; preds = %26
  %68 = add nsw i64 %65, -1
  store i64 %68, ptr %27, align 8, !tbaa !5
  %69 = call i32 @dgehrd_(ptr noundef nonnull %36, ptr noundef nonnull @c__1, ptr noundef nonnull %27, ptr noundef %19, ptr noundef nonnull %20, ptr noundef %24, ptr noundef %24, ptr noundef nonnull @c_n1, ptr noundef nonnull %40) #6
  %70 = load double, ptr %24, align 8, !tbaa !9
  %71 = fptosi double %70 to i64
  %72 = load i64, ptr %36, align 8, !tbaa !5
  %73 = add nsw i64 %72, -1
  store i64 %73, ptr %27, align 8, !tbaa !5
  %74 = call i32 @dormhr_(ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, ptr noundef nonnull %36, ptr noundef nonnull %36, ptr noundef nonnull @c__1, ptr noundef nonnull %27, ptr noundef %19, ptr noundef nonnull %20, ptr noundef nonnull %24, ptr noundef %16, ptr noundef nonnull %17, ptr noundef nonnull %24, ptr noundef nonnull @c_n1, ptr noundef nonnull %40) #6
  %75 = load double, ptr %24, align 8, !tbaa !9
  %76 = fptosi double %75 to i64
  %77 = call i32 @dlaqr4_(ptr noundef nonnull @c_true, ptr noundef nonnull @c_true, ptr noundef nonnull %36, ptr noundef nonnull @c__1, ptr noundef nonnull %36, ptr noundef %19, ptr noundef nonnull %20, ptr noundef %14, ptr noundef %15, ptr noundef nonnull @c__1, ptr noundef nonnull %36, ptr noundef %16, ptr noundef nonnull %17, ptr noundef nonnull %24, ptr noundef nonnull @c_n1, ptr noundef nonnull %43) #6
  %78 = load double, ptr %24, align 8, !tbaa !9
  %79 = fptosi double %78 to i64
  %80 = load i64, ptr %36, align 8, !tbaa !5
  %81 = call i64 @llvm.smax.i64(i64 %71, i64 %76)
  %82 = add nsw i64 %80, %81
  store i64 %82, ptr %27, align 8, !tbaa !5
  %83 = call i64 @llvm.smax.i64(i64 %82, i64 %79)
  br label %84

84:                                               ; preds = %26, %67
  %.0 = phi i64 [ %83, %67 ], [ 1, %26 ]
  %85 = load i64, ptr %25, align 8, !tbaa !5
  %86 = icmp eq i64 %85, -1
  br i1 %86, label %87, label %89

87:                                               ; preds = %84
  %88 = sitofp i64 %.0 to double
  br label %.sink.split

89:                                               ; preds = %84
  store i64 0, ptr %12, align 8, !tbaa !5
  store i64 0, ptr %13, align 8, !tbaa !5
  store double 1.000000e+00, ptr %24, align 8, !tbaa !9
  %90 = load i64, ptr %3, align 8, !tbaa !5
  %91 = load i64, ptr %4, align 8, !tbaa !5
  %92 = icmp sgt i64 %90, %91
  br i1 %92, label %572, label %93

93:                                               ; preds = %89
  %94 = load i64, ptr %5, align 8, !tbaa !5
  %95 = icmp slt i64 %94, 1
  br i1 %95, label %572, label %96

96:                                               ; preds = %93
  %97 = call double @dlamch_(ptr noundef nonnull @.str.2) #6
  store double %97, ptr %44, align 8, !tbaa !9
  %98 = fdiv double 1.000000e+00, %97
  store double %98, ptr %45, align 8, !tbaa !9
  %99 = call i32 @dlabad_(ptr noundef nonnull %44, ptr noundef nonnull %45) #6
  %100 = call double @dlamch_(ptr noundef nonnull @.str.3) #6
  %101 = load double, ptr %44, align 8, !tbaa !9
  %102 = load i64, ptr %2, align 8, !tbaa !5
  %103 = sitofp i64 %102 to double
  %104 = fdiv double %103, %100
  %105 = fmul double %101, %104
  %106 = load i64, ptr %5, align 8, !tbaa !5
  store i64 %106, ptr %27, align 8, !tbaa !5
  %107 = load i64, ptr %4, align 8, !tbaa !5
  %108 = load i64, ptr %3, align 8, !tbaa !5
  %109 = sub nsw i64 %107, %108
  %110 = add nsw i64 %109, 1
  store i64 %110, ptr %28, align 8, !tbaa !5
  %111 = call i64 @llvm.smin.i64(i64 %106, i64 %110)
  store i64 %111, ptr %36, align 8, !tbaa !5
  %112 = sub nsw i64 %107, %111
  %113 = add nsw i64 %112, 1
  %114 = icmp eq i64 %113, %108
  br i1 %114, label %120, label %115

115:                                              ; preds = %96
  %116 = mul nsw i64 %112, %46
  %117 = getelementptr double, ptr %48, i64 %113
  %118 = getelementptr double, ptr %117, i64 %116
  %119 = load double, ptr %118, align 8, !tbaa !9
  br label %120

120:                                              ; preds = %96, %115
  %.0631 = phi double [ %119, %115 ], [ 0.000000e+00, %96 ]
  %121 = icmp eq i64 %107, %113
  br i1 %121, label %122, label %146

122:                                              ; preds = %120
  %123 = add i64 %46, 1
  %124 = mul i64 %107, %123
  %125 = getelementptr inbounds double, ptr %48, i64 %124
  %126 = load double, ptr %125, align 8, !tbaa !9
  %127 = getelementptr double, ptr %14, i64 %112
  store double %126, ptr %127, align 8, !tbaa !9
  %128 = getelementptr double, ptr %15, i64 %112
  store double 0.000000e+00, ptr %128, align 8, !tbaa !9
  store i64 1, ptr %12, align 8, !tbaa !5
  store i64 0, ptr %13, align 8, !tbaa !5
  %129 = load double, ptr %125, align 8, !tbaa !9
  %130 = fcmp oge double %129, 0.000000e+00
  %131 = fneg double %129
  %132 = select i1 %130, double %129, double %131
  %133 = fmul double %100, %132
  %134 = fcmp oge double %.0631, 0.000000e+00
  %135 = fneg double %.0631
  %136 = select i1 %134, double %.0631, double %135
  %137 = fcmp oge double %105, %133
  %138 = select i1 %137, double %105, double %133
  %139 = fcmp ugt double %136, %138
  br i1 %139, label %.sink.split, label %140

140:                                              ; preds = %122
  store i64 0, ptr %12, align 8, !tbaa !5
  store i64 1, ptr %13, align 8, !tbaa !5
  %141 = load i64, ptr %3, align 8, !tbaa !5
  %.not669 = icmp slt i64 %112, %141
  br i1 %.not669, label %.sink.split, label %142

142:                                              ; preds = %140
  %143 = mul nsw i64 %112, %46
  %144 = getelementptr double, ptr %48, i64 %107
  %145 = getelementptr double, ptr %144, i64 %143
  store double 0.000000e+00, ptr %145, align 8, !tbaa !9
  br label %.sink.split

146:                                              ; preds = %120
  %147 = mul nsw i64 %113, %46
  %148 = getelementptr double, ptr %48, i64 %113
  %149 = getelementptr double, ptr %148, i64 %147
  %150 = call i32 @dlacpy_(ptr noundef nonnull @.str.4, ptr noundef nonnull %36, ptr noundef nonnull %36, ptr noundef %149, ptr noundef nonnull %7, ptr noundef %19, ptr noundef nonnull %20) #6
  %151 = load i64, ptr %36, align 8, !tbaa !5
  %152 = add nsw i64 %151, -1
  store i64 %152, ptr %27, align 8, !tbaa !5
  %153 = load i64, ptr %7, align 8, !tbaa !5
  %154 = add nsw i64 %153, 1
  store i64 %154, ptr %28, align 8, !tbaa !5
  %155 = load i64, ptr %20, align 8, !tbaa !5
  %156 = add nsw i64 %155, 1
  store i64 %156, ptr %29, align 8, !tbaa !5
  %157 = getelementptr double, ptr %48, i64 %112
  %158 = getelementptr i8, ptr %157, i64 16
  %159 = getelementptr double, ptr %158, i64 %147
  %160 = getelementptr inbounds i8, ptr %19, i64 8
  %161 = call i32 @f2c_dcopy(ptr noundef nonnull %27, ptr noundef %159, ptr noundef nonnull %28, ptr noundef nonnull %160, ptr noundef nonnull %29) #6
  %162 = call i32 @dlaset_(ptr noundef nonnull @.str.5, ptr noundef nonnull %36, ptr noundef nonnull %36, ptr noundef nonnull @c_b17, ptr noundef nonnull @c_b18, ptr noundef %16, ptr noundef nonnull %17) #6
  %163 = call i64 @ilaenv_(ptr noundef nonnull @c__12, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, ptr noundef nonnull %36, ptr noundef nonnull @c__1, ptr noundef nonnull %36, ptr noundef nonnull %25) #6
  %164 = load i64, ptr %36, align 8, !tbaa !5
  %165 = icmp sgt i64 %164, %163
  %166 = getelementptr double, ptr %14, i64 %112
  %167 = getelementptr double, ptr %15, i64 %112
  br i1 %165, label %168, label %170

168:                                              ; preds = %146
  %169 = call i32 @dlaqr4_(ptr noundef nonnull @c_true, ptr noundef nonnull @c_true, ptr noundef nonnull %36, ptr noundef nonnull @c__1, ptr noundef nonnull %36, ptr noundef %19, ptr noundef nonnull %20, ptr noundef %166, ptr noundef %167, ptr noundef nonnull @c__1, ptr noundef nonnull %36, ptr noundef %16, ptr noundef nonnull %17, ptr noundef nonnull %24, ptr noundef nonnull %25, ptr noundef nonnull %43) #6
  br label %172

170:                                              ; preds = %146
  %171 = call i32 @dlahqr_(ptr noundef nonnull @c_true, ptr noundef nonnull @c_true, ptr noundef nonnull %36, ptr noundef nonnull @c__1, ptr noundef nonnull %36, ptr noundef %19, ptr noundef nonnull %20, ptr noundef %166, ptr noundef %167, ptr noundef nonnull @c__1, ptr noundef nonnull %36, ptr noundef %16, ptr noundef nonnull %17, ptr noundef nonnull %43) #6
  br label %172

172:                                              ; preds = %170, %168
  %173 = load i64, ptr %36, align 8, !tbaa !5
  %174 = add nsw i64 %173, -3
  store i64 %174, ptr %27, align 8, !tbaa !5
  %.not675 = icmp slt i64 %173, 4
  br i1 %.not675, label %._crit_edge, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %172
  %175 = add nsw i64 %173, -3
  %176 = add nsw i64 %173, -4
  %xtraiter = and i64 %175, 3
  %177 = icmp ult i64 %176, 3
  br i1 %177, label %._crit_edge.loopexit.unr-lcssa, label %.lr.ph.preheader.new

.lr.ph.preheader.new:                             ; preds = %.lr.ph.preheader
  %unroll_iter = and i64 %175, -4
  %invariant.gep735 = getelementptr i8, ptr %59, i64 16
  %invariant.gep737 = getelementptr i8, ptr %59, i64 16
  %invariant.gep739 = getelementptr i8, ptr %59, i64 16
  %invariant.gep741 = getelementptr i8, ptr %59, i64 16
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph, %.lr.ph.preheader.new
  %.0636676 = phi i64 [ 1, %.lr.ph.preheader.new ], [ %189, %.lr.ph ]
  %niter = phi i64 [ 0, %.lr.ph.preheader.new ], [ %niter.next.3, %.lr.ph ]
  %178 = mul nsw i64 %.0636676, %57
  %gep736 = getelementptr double, ptr %invariant.gep735, i64 %.0636676
  %179 = getelementptr double, ptr %gep736, i64 %178
  store <2 x double> zeroinitializer, ptr %179, align 8, !tbaa !9
  %180 = add nuw nsw i64 %.0636676, 1
  %181 = mul nsw i64 %180, %57
  %gep738 = getelementptr double, ptr %invariant.gep737, i64 %180
  %182 = getelementptr double, ptr %gep738, i64 %181
  store <2 x double> zeroinitializer, ptr %182, align 8, !tbaa !9
  %183 = add nuw nsw i64 %.0636676, 2
  %184 = mul nsw i64 %183, %57
  %gep740 = getelementptr double, ptr %invariant.gep739, i64 %183
  %185 = getelementptr double, ptr %gep740, i64 %184
  store <2 x double> zeroinitializer, ptr %185, align 8, !tbaa !9
  %186 = add nuw i64 %.0636676, 3
  %187 = mul nsw i64 %186, %57
  %gep742 = getelementptr double, ptr %invariant.gep741, i64 %186
  %188 = getelementptr double, ptr %gep742, i64 %187
  store <2 x double> zeroinitializer, ptr %188, align 8, !tbaa !9
  %189 = add nuw i64 %.0636676, 4
  %niter.next.3 = add nuw i64 %niter, 4
  %niter.ncmp.3 = icmp eq i64 %niter.next.3, %unroll_iter
  br i1 %niter.ncmp.3, label %._crit_edge.loopexit.unr-lcssa, label %.lr.ph, !llvm.loop !11

._crit_edge.loopexit.unr-lcssa:                   ; preds = %.lr.ph, %.lr.ph.preheader
  %.0636676.unr = phi i64 [ 1, %.lr.ph.preheader ], [ %189, %.lr.ph ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge, label %.lr.ph.epil.preheader

.lr.ph.epil.preheader:                            ; preds = %._crit_edge.loopexit.unr-lcssa
  %invariant.gep733 = getelementptr i8, ptr %59, i64 16
  br label %.lr.ph.epil

.lr.ph.epil:                                      ; preds = %.lr.ph.epil, %.lr.ph.epil.preheader
  %.0636676.epil = phi i64 [ %192, %.lr.ph.epil ], [ %.0636676.unr, %.lr.ph.epil.preheader ]
  %epil.iter = phi i64 [ %epil.iter.next, %.lr.ph.epil ], [ 0, %.lr.ph.epil.preheader ]
  %190 = mul nsw i64 %.0636676.epil, %57
  %gep734 = getelementptr double, ptr %invariant.gep733, i64 %.0636676.epil
  %191 = getelementptr double, ptr %gep734, i64 %190
  store <2 x double> zeroinitializer, ptr %191, align 8, !tbaa !9
  %192 = add nuw i64 %.0636676.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter
  br i1 %epil.iter.cmp.not, label %._crit_edge, label %.lr.ph.epil, !llvm.loop !13

._crit_edge:                                      ; preds = %._crit_edge.loopexit.unr-lcssa, %.lr.ph.epil, %172
  %193 = icmp sgt i64 %173, 2
  br i1 %193, label %194, label %199

194:                                              ; preds = %._crit_edge
  %195 = add nsw i64 %173, -2
  %196 = mul nsw i64 %195, %57
  %197 = getelementptr double, ptr %59, i64 %173
  %198 = getelementptr double, ptr %197, i64 %196
  store double 0.000000e+00, ptr %198, align 8, !tbaa !9
  br label %199

199:                                              ; preds = %194, %._crit_edge
  store i64 %173, ptr %12, align 8, !tbaa !5
  %200 = load i64, ptr %43, align 8, !tbaa !5
  %201 = add nsw i64 %200, 1
  store i64 %201, ptr %42, align 8, !tbaa !5
  %invariant.gep = getelementptr i8, ptr %59, i64 -8
  %invariant.gep677 = getelementptr i8, ptr %56, i64 8
  %.not656683.not = icmp slt i64 %200, %173
  br i1 %.not656683.not, label %.lr.ph685, label %._crit_edge686.thread

._crit_edge686.thread:                            ; preds = %199
  %202 = icmp eq i64 %173, 0
  %.1632725 = select i1 %202, double 0.000000e+00, double %.0631
  br label %.loopexit674

.lr.ph685:                                        ; preds = %199
  %203 = add i64 %57, 1
  %204 = fcmp oge double %.0631, 0.000000e+00
  %205 = fneg double %.0631
  %206 = select i1 %204, double %.0631, double %205
  %207 = insertelement <2 x double> poison, double %.0631, i64 0
  %208 = shufflevector <2 x double> %207, <2 x double> poison, <2 x i32> zeroinitializer
  br label %209

209:                                              ; preds = %.lr.ph685, %290
  %210 = phi i64 [ %201, %.lr.ph685 ], [ %291, %290 ]
  %211 = phi i64 [ %173, %.lr.ph685 ], [ %.pr, %290 ]
  %212 = icmp eq i64 %211, 1
  br i1 %212, label %.thread, label %213

213:                                              ; preds = %209
  %214 = add nsw i64 %211, -1
  %215 = mul nsw i64 %214, %57
  %216 = getelementptr double, ptr %59, i64 %211
  %217 = getelementptr double, ptr %216, i64 %215
  %218 = load double, ptr %217, align 8, !tbaa !9
  %219 = fcmp oeq double %218, 0.000000e+00
  br i1 %219, label %.thread, label %243

.thread:                                          ; preds = %209, %213
  %220 = mul i64 %211, %203
  %221 = getelementptr inbounds double, ptr %59, i64 %220
  %222 = load double, ptr %221, align 8, !tbaa !9
  %223 = fcmp oge double %222, 0.000000e+00
  %224 = fneg double %222
  %225 = select i1 %223, double %222, double %224
  %226 = fcmp oeq double %222, 0.000000e+00
  %.0627 = select i1 %226, double %206, double %225
  %227 = fmul double %100, %.0627
  %228 = mul nsw i64 %211, %54
  %gep682 = getelementptr double, ptr %invariant.gep677, i64 %228
  %229 = load double, ptr %gep682, align 8, !tbaa !9
  %230 = fmul double %.0631, %229
  %231 = fcmp oge double %230, 0.000000e+00
  %232 = fneg double %230
  %233 = select i1 %231, double %230, double %232
  %234 = fcmp oge double %105, %227
  %235 = select i1 %234, double %105, double %227
  %236 = fcmp ugt double %233, %235
  br i1 %236, label %239, label %237

237:                                              ; preds = %.thread
  %238 = add nsw i64 %211, -1
  store i64 %238, ptr %12, align 8, !tbaa !5
  br label %290

239:                                              ; preds = %.thread
  store i64 %211, ptr %41, align 8, !tbaa !5
  %240 = call i32 @dtrexc_(ptr noundef nonnull @.str.8, ptr noundef nonnull %36, ptr noundef nonnull %19, ptr noundef nonnull %20, ptr noundef nonnull %16, ptr noundef nonnull %17, ptr noundef nonnull %41, ptr noundef nonnull %42, ptr noundef nonnull %24, ptr noundef nonnull %40) #6
  %241 = load i64, ptr %42, align 8, !tbaa !5
  %242 = add nsw i64 %241, 1
  store i64 %242, ptr %42, align 8, !tbaa !5
  br label %290

243:                                              ; preds = %213
  %244 = mul i64 %211, %203
  %245 = getelementptr inbounds double, ptr %59, i64 %244
  %246 = load double, ptr %245, align 8, !tbaa !9
  %247 = fcmp oge double %246, 0.000000e+00
  %248 = fneg double %246
  %249 = select i1 %247, double %246, double %248
  %250 = fcmp oge double %218, 0.000000e+00
  %251 = fneg double %218
  %252 = select i1 %250, double %218, double %251
  %253 = call double @sqrt(double noundef %252) #6
  %254 = load i64, ptr %12, align 8, !tbaa !5
  %255 = mul nsw i64 %254, %57
  %gep = getelementptr double, ptr %invariant.gep, i64 %254
  %256 = getelementptr double, ptr %gep, i64 %255
  %257 = load double, ptr %256, align 8, !tbaa !9
  %258 = fcmp oge double %257, 0.000000e+00
  %259 = fneg double %257
  %260 = select i1 %258, double %257, double %259
  %261 = call double @sqrt(double noundef %260) #6
  %262 = call double @llvm.fmuladd.f64(double %253, double %261, double %249)
  %263 = fcmp oeq double %262, 0.000000e+00
  %.1628 = select i1 %263, double %206, double %262
  %264 = load i64, ptr %12, align 8, !tbaa !5
  %265 = mul nsw i64 %264, %54
  %gep678 = getelementptr double, ptr %invariant.gep677, i64 %265
  %266 = load double, ptr %gep678, align 8, !tbaa !9
  %267 = add nsw i64 %264, -1
  %268 = mul nsw i64 %267, %54
  %gep680 = getelementptr double, ptr %invariant.gep677, i64 %268
  %269 = load double, ptr %gep680, align 8, !tbaa !9
  %270 = insertelement <2 x double> poison, double %266, i64 0
  %271 = insertelement <2 x double> %270, double %269, i64 1
  %272 = fmul <2 x double> %208, %271
  %273 = fcmp oge <2 x double> %272, zeroinitializer
  %274 = fneg <2 x double> %272
  %275 = select <2 x i1> %273, <2 x double> %272, <2 x double> %274
  %276 = fmul double %100, %.1628
  %277 = extractelement <2 x double> %275, i64 0
  %278 = extractelement <2 x double> %275, i64 1
  %279 = fcmp oge double %277, %278
  %280 = select i1 %279, double %277, double %278
  %281 = fcmp oge double %105, %276
  %282 = select i1 %281, double %105, double %276
  %283 = fcmp ugt double %280, %282
  br i1 %283, label %286, label %284

284:                                              ; preds = %243
  %285 = add nsw i64 %264, -2
  store i64 %285, ptr %12, align 8, !tbaa !5
  %.pre = load i64, ptr %42, align 8, !tbaa !5
  br label %290

286:                                              ; preds = %243
  store i64 %264, ptr %41, align 8, !tbaa !5
  %287 = call i32 @dtrexc_(ptr noundef nonnull @.str.8, ptr noundef nonnull %36, ptr noundef nonnull %19, ptr noundef nonnull %20, ptr noundef nonnull %16, ptr noundef nonnull %17, ptr noundef nonnull %41, ptr noundef nonnull %42, ptr noundef nonnull %24, ptr noundef nonnull %40) #6
  %288 = load i64, ptr %42, align 8, !tbaa !5
  %289 = add nsw i64 %288, 2
  store i64 %289, ptr %42, align 8, !tbaa !5
  br label %290

290:                                              ; preds = %284, %286, %237, %239
  %291 = phi i64 [ %.pre, %284 ], [ %289, %286 ], [ %210, %237 ], [ %242, %239 ]
  %.pr = load i64, ptr %12, align 8, !tbaa !5
  %.not656 = icmp sgt i64 %291, %.pr
  br i1 %.not656, label %._crit_edge686, label %209

._crit_edge686:                                   ; preds = %290
  %.pre719 = load i64, ptr %36, align 8, !tbaa !5
  %292 = icmp eq i64 %.pr, 0
  %.1632 = select i1 %292, double 0.000000e+00, double %.0631
  %293 = icmp slt i64 %.pr, %.pre719
  br i1 %293, label %294, label %.loopexit674

294:                                              ; preds = %._crit_edge686
  %295 = add nsw i64 %.pr, 1
  %296 = add i64 %57, 1
  br label %297

.loopexit673:                                     ; preds = %387, %389
  %.not657 = icmp eq i64 %.2, 0
  br i1 %.not657, label %297, label %.loopexit674.loopexit

297:                                              ; preds = %294, %.loopexit673
  %.0637695 = phi i64 [ %295, %294 ], [ %.2639, %.loopexit673 ]
  %298 = add nsw i64 %.0637695, -1
  %299 = load i64, ptr %43, align 8, !tbaa !5
  %300 = add nsw i64 %299, 1
  %301 = load i64, ptr %12, align 8, !tbaa !5
  %302 = icmp eq i64 %300, %301
  %303 = add nsw i64 %299, 2
  br i1 %302, label %312, label %304

304:                                              ; preds = %297
  %305 = mul nsw i64 %300, %57
  %306 = getelementptr double, ptr %59, i64 %303
  %307 = getelementptr double, ptr %306, i64 %305
  %308 = load double, ptr %307, align 8, !tbaa !9
  %309 = fcmp oeq double %308, 0.000000e+00
  br i1 %309, label %312, label %310

310:                                              ; preds = %304
  %311 = add nsw i64 %299, 3
  br label %312

312:                                              ; preds = %297, %304, %310
  %.0633 = phi i64 [ %311, %310 ], [ %303, %304 ], [ %303, %297 ]
  %.not658.not687 = icmp slt i64 %.0633, %.0637695
  br i1 %.not658.not687, label %.lr.ph692.preheader, label %.loopexit674.loopexit

.lr.ph692.preheader:                              ; preds = %312
  %313 = mul i64 %298, %296
  %314 = getelementptr inbounds double, ptr %59, i64 %313
  br label %.lr.ph692

.lr.ph692:                                        ; preds = %.lr.ph692.preheader, %389
  %.1690 = phi i64 [ %.2, %389 ], [ 1, %.lr.ph692.preheader ]
  %.1634689 = phi i64 [ %.2635, %389 ], [ %.0633, %.lr.ph692.preheader ]
  %.1638688 = phi i64 [ %.2639, %389 ], [ %300, %.lr.ph692.preheader ]
  %315 = add nsw i64 %.1638688, 1
  %316 = icmp eq i64 %.1634689, %315
  br i1 %316, label %317, label %324

317:                                              ; preds = %.lr.ph692
  %318 = mul i64 %.1638688, %296
  %319 = getelementptr inbounds double, ptr %59, i64 %318
  %320 = load double, ptr %319, align 8, !tbaa !9
  %321 = fcmp oge double %320, 0.000000e+00
  %322 = fneg double %320
  %323 = select i1 %321, double %320, double %322
  br label %347

324:                                              ; preds = %.lr.ph692
  %325 = mul nsw i64 %.1638688, %57
  %326 = getelementptr double, ptr %59, i64 %.1638688
  %327 = getelementptr double, ptr %326, i64 %325
  %328 = load double, ptr %327, align 8, !tbaa !9
  %329 = fcmp oge double %328, 0.000000e+00
  %330 = fneg double %328
  %331 = select i1 %329, double %328, double %330
  %332 = getelementptr double, ptr %59, i64 %315
  %333 = getelementptr double, ptr %332, i64 %325
  %334 = load double, ptr %333, align 8, !tbaa !9
  %335 = fcmp oge double %334, 0.000000e+00
  %336 = fneg double %334
  %337 = select i1 %335, double %334, double %336
  %338 = call double @sqrt(double noundef %337) #6
  %339 = mul nsw i64 %315, %57
  %340 = getelementptr double, ptr %326, i64 %339
  %341 = load double, ptr %340, align 8, !tbaa !9
  %342 = fcmp oge double %341, 0.000000e+00
  %343 = fneg double %341
  %344 = select i1 %342, double %341, double %343
  %345 = call double @sqrt(double noundef %344) #6
  %346 = call double @llvm.fmuladd.f64(double %338, double %345, double %331)
  br label %347

347:                                              ; preds = %324, %317
  %.0630 = phi double [ %323, %317 ], [ %346, %324 ]
  %348 = icmp eq i64 %.1634689, %298
  br i1 %348, label %349, label %354

349:                                              ; preds = %347
  %350 = load double, ptr %314, align 8, !tbaa !9
  %351 = fcmp oge double %350, 0.000000e+00
  %352 = fneg double %350
  %353 = select i1 %351, double %350, double %352
  br label %380

354:                                              ; preds = %347
  %355 = add nsw i64 %.1634689, 1
  %356 = mul nsw i64 %.1634689, %57
  %357 = getelementptr double, ptr %59, i64 %355
  %358 = getelementptr double, ptr %357, i64 %356
  %359 = load double, ptr %358, align 8, !tbaa !9
  %360 = fcmp oeq double %359, 0.000000e+00
  %361 = getelementptr double, ptr %59, i64 %.1634689
  %362 = getelementptr double, ptr %361, i64 %356
  %363 = load double, ptr %362, align 8, !tbaa !9
  %364 = fcmp oge double %363, 0.000000e+00
  %365 = fneg double %363
  %366 = select i1 %364, double %363, double %365
  br i1 %360, label %380, label %367

367:                                              ; preds = %354
  %368 = fcmp oge double %359, 0.000000e+00
  %369 = fneg double %359
  %370 = select i1 %368, double %359, double %369
  %371 = call double @sqrt(double noundef %370) #6
  %372 = mul nsw i64 %355, %57
  %373 = getelementptr double, ptr %361, i64 %372
  %374 = load double, ptr %373, align 8, !tbaa !9
  %375 = fcmp oge double %374, 0.000000e+00
  %376 = fneg double %374
  %377 = select i1 %375, double %374, double %376
  %378 = call double @sqrt(double noundef %377) #6
  %379 = call double @llvm.fmuladd.f64(double %371, double %378, double %366)
  br label %380

380:                                              ; preds = %354, %367, %349
  %.0629 = phi double [ %353, %349 ], [ %379, %367 ], [ %366, %354 ]
  %381 = fcmp ult double %.0630, %.0629
  br i1 %381, label %382, label %387

382:                                              ; preds = %380
  store i64 %.1638688, ptr %41, align 8, !tbaa !5
  store i64 %.1634689, ptr %42, align 8, !tbaa !5
  %383 = call i32 @dtrexc_(ptr noundef nonnull @.str.8, ptr noundef nonnull %36, ptr noundef nonnull %19, ptr noundef nonnull %20, ptr noundef %16, ptr noundef nonnull %17, ptr noundef nonnull %41, ptr noundef nonnull %42, ptr noundef nonnull %24, ptr noundef nonnull %40) #6
  %384 = load i64, ptr %40, align 8, !tbaa !5
  %385 = icmp eq i64 %384, 0
  %386 = load i64, ptr %42, align 8
  %spec.select = select i1 %385, i64 %386, i64 %.1634689
  br label %387

387:                                              ; preds = %382, %380
  %.2639 = phi i64 [ %.1634689, %380 ], [ %spec.select, %382 ]
  %.2 = phi i64 [ %.1690, %380 ], [ 0, %382 ]
  %388 = icmp eq i64 %.2639, %298
  br i1 %388, label %.loopexit673, label %389

389:                                              ; preds = %387
  %390 = add nsw i64 %.2639, 1
  %391 = mul nsw i64 %.2639, %57
  %392 = getelementptr double, ptr %59, i64 %390
  %393 = getelementptr double, ptr %392, i64 %391
  %394 = load double, ptr %393, align 8, !tbaa !9
  %395 = fcmp oeq double %394, 0.000000e+00
  %396 = add nsw i64 %.2639, 2
  %.2635 = select i1 %395, i64 %390, i64 %396
  %.not658.not = icmp slt i64 %.2635, %.0637695
  br i1 %.not658.not, label %.lr.ph692, label %.loopexit673

.loopexit674.loopexit:                            ; preds = %312, %.loopexit673
  %.pre720 = load i64, ptr %36, align 8, !tbaa !5
  br label %.loopexit674

.loopexit674:                                     ; preds = %._crit_edge686.thread, %.loopexit674.loopexit, %._crit_edge686
  %.1632726 = phi double [ %.1632, %.loopexit674.loopexit ], [ %.1632, %._crit_edge686 ], [ %.1632725, %._crit_edge686.thread ]
  %397 = phi i64 [ %.pre720, %.loopexit674.loopexit ], [ %.pre719, %._crit_edge686 ], [ %173, %._crit_edge686.thread ]
  %398 = load i64, ptr %43, align 8, !tbaa !5
  %.not659.not696 = icmp sgt i64 %397, %398
  br i1 %.not659.not696, label %.lr.ph699, label %._crit_edge700

.lr.ph699:                                        ; preds = %.loopexit674
  %399 = add i64 %112, -1
  %400 = add i64 %57, 1
  br label %401

401:                                              ; preds = %.lr.ph699, %444
  %402 = phi i64 [ %398, %.lr.ph699 ], [ %445, %444 ]
  %.3697 = phi i64 [ %397, %.lr.ph699 ], [ %.4, %444 ]
  %403 = add nsw i64 %402, 1
  %404 = icmp eq i64 %.3697, %403
  br i1 %404, label %405, label %413

405:                                              ; preds = %401
  %406 = mul i64 %.3697, %400
  %407 = getelementptr inbounds double, ptr %59, i64 %406
  %408 = load double, ptr %407, align 8, !tbaa !9
  %409 = add i64 %.3697, %112
  %410 = getelementptr inbounds double, ptr %52, i64 %409
  store double %408, ptr %410, align 8, !tbaa !9
  %411 = getelementptr inbounds double, ptr %53, i64 %409
  store double 0.000000e+00, ptr %411, align 8, !tbaa !9
  %412 = add nsw i64 %.3697, -1
  br label %444

413:                                              ; preds = %401
  %414 = add nsw i64 %.3697, -1
  %415 = mul nsw i64 %414, %57
  %416 = getelementptr double, ptr %59, i64 %.3697
  %417 = getelementptr double, ptr %416, i64 %415
  %418 = load double, ptr %417, align 8, !tbaa !9
  %419 = fcmp oeq double %418, 0.000000e+00
  br i1 %419, label %420, label %427

420:                                              ; preds = %413
  %421 = mul i64 %.3697, %400
  %422 = getelementptr inbounds double, ptr %59, i64 %421
  %423 = load double, ptr %422, align 8, !tbaa !9
  %424 = add i64 %.3697, %112
  %425 = getelementptr inbounds double, ptr %52, i64 %424
  store double %423, ptr %425, align 8, !tbaa !9
  %426 = getelementptr inbounds double, ptr %53, i64 %424
  store double 0.000000e+00, ptr %426, align 8, !tbaa !9
  br label %444

427:                                              ; preds = %413
  %428 = getelementptr double, ptr %59, i64 %414
  %429 = getelementptr double, ptr %428, i64 %415
  %430 = load double, ptr %429, align 8, !tbaa !9
  store double %430, ptr %30, align 8, !tbaa !9
  store double %418, ptr %32, align 8, !tbaa !9
  %431 = mul nsw i64 %.3697, %57
  %432 = getelementptr double, ptr %428, i64 %431
  %433 = load double, ptr %432, align 8, !tbaa !9
  store double %433, ptr %31, align 8, !tbaa !9
  %434 = getelementptr double, ptr %416, i64 %431
  %435 = load double, ptr %434, align 8, !tbaa !9
  store double %435, ptr %33, align 8, !tbaa !9
  %436 = add i64 %399, %.3697
  %437 = getelementptr inbounds double, ptr %52, i64 %436
  %438 = getelementptr inbounds double, ptr %53, i64 %436
  %439 = add i64 %.3697, %112
  %440 = getelementptr inbounds double, ptr %52, i64 %439
  %441 = getelementptr inbounds double, ptr %53, i64 %439
  %442 = call i32 @dlanv2_(ptr noundef nonnull %30, ptr noundef nonnull %31, ptr noundef nonnull %32, ptr noundef nonnull %33, ptr noundef nonnull %437, ptr noundef nonnull %438, ptr noundef nonnull %440, ptr noundef nonnull %441, ptr noundef nonnull %34, ptr noundef nonnull %35) #6
  %443 = add nsw i64 %.3697, -2
  %.pre721 = load i64, ptr %43, align 8, !tbaa !5
  br label %444

444:                                              ; preds = %420, %427, %405
  %445 = phi i64 [ %402, %405 ], [ %402, %420 ], [ %.pre721, %427 ]
  %.4 = phi i64 [ %412, %405 ], [ %414, %420 ], [ %443, %427 ]
  %.not659.not = icmp sgt i64 %.4, %445
  br i1 %.not659.not, label %401, label %._crit_edge700.loopexit

._crit_edge700.loopexit:                          ; preds = %444
  %.pre722 = load i64, ptr %36, align 8, !tbaa !5
  br label %._crit_edge700

._crit_edge700:                                   ; preds = %._crit_edge700.loopexit, %.loopexit674
  %446 = phi i64 [ %.pre722, %._crit_edge700.loopexit ], [ %397, %.loopexit674 ]
  %447 = load i64, ptr %12, align 8, !tbaa !5
  %448 = icmp slt i64 %447, %446
  %449 = fcmp oeq double %.1632726, 0.000000e+00
  %or.cond = select i1 %448, i1 true, i1 %449
  br i1 %or.cond, label %450, label %.loopexit

450:                                              ; preds = %._crit_edge700
  %451 = icmp sgt i64 %447, 1
  %452 = fcmp une double %.1632726, 0.000000e+00
  %or.cond3 = select i1 %451, i1 %452, i1 false
  br i1 %or.cond3, label %453, label %476

453:                                              ; preds = %450
  %454 = call i32 @f2c_dcopy(ptr noundef nonnull %12, ptr noundef %16, ptr noundef nonnull %17, ptr noundef nonnull %24, ptr noundef nonnull @c__1) #6
  %455 = load double, ptr %24, align 8, !tbaa !9
  store double %455, ptr %39, align 8, !tbaa !9
  %456 = getelementptr inbounds i8, ptr %24, i64 8
  %457 = call i32 @dlarfg_(ptr noundef nonnull %12, ptr noundef nonnull %39, ptr noundef nonnull %456, ptr noundef nonnull @c__1, ptr noundef nonnull %38) #6
  store double 1.000000e+00, ptr %24, align 8, !tbaa !9
  %458 = load i64, ptr %36, align 8, !tbaa !5
  %459 = add nsw i64 %458, -2
  store i64 %459, ptr %27, align 8, !tbaa !5
  store i64 %459, ptr %28, align 8, !tbaa !5
  %460 = getelementptr inbounds i8, ptr %19, i64 16
  %461 = call i32 @dlaset_(ptr noundef nonnull @.str.9, ptr noundef nonnull %27, ptr noundef nonnull %28, ptr noundef nonnull @c_b17, ptr noundef nonnull @c_b17, ptr noundef nonnull %460, ptr noundef nonnull %20) #6
  %462 = load i64, ptr %36, align 8, !tbaa !5
  %463 = getelementptr double, ptr %24, i64 %462
  %464 = call i32 @dlarf_(ptr noundef nonnull @.str.9, ptr noundef nonnull %12, ptr noundef nonnull %36, ptr noundef nonnull %24, ptr noundef nonnull @c__1, ptr noundef nonnull %38, ptr noundef %19, ptr noundef nonnull %20, ptr noundef %463) #6
  %465 = load i64, ptr %36, align 8, !tbaa !5
  %466 = getelementptr double, ptr %24, i64 %465
  %467 = call i32 @dlarf_(ptr noundef nonnull @.str, ptr noundef nonnull %12, ptr noundef nonnull %12, ptr noundef nonnull %24, ptr noundef nonnull @c__1, ptr noundef nonnull %38, ptr noundef %19, ptr noundef nonnull %20, ptr noundef %466) #6
  %468 = load i64, ptr %36, align 8, !tbaa !5
  %469 = getelementptr double, ptr %24, i64 %468
  %470 = call i32 @dlarf_(ptr noundef nonnull @.str, ptr noundef nonnull %36, ptr noundef nonnull %12, ptr noundef nonnull %24, ptr noundef nonnull @c__1, ptr noundef nonnull %38, ptr noundef %16, ptr noundef nonnull %17, ptr noundef %469) #6
  %471 = load i64, ptr %25, align 8, !tbaa !5
  %472 = load i64, ptr %36, align 8, !tbaa !5
  %473 = sub nsw i64 %471, %472
  store i64 %473, ptr %27, align 8, !tbaa !5
  %474 = getelementptr double, ptr %24, i64 %472
  %475 = call i32 @dgehrd_(ptr noundef nonnull %36, ptr noundef nonnull @c__1, ptr noundef nonnull %12, ptr noundef %19, ptr noundef nonnull %20, ptr noundef nonnull %24, ptr noundef %474, ptr noundef nonnull %27, ptr noundef nonnull %40) #6
  br label %476

476:                                              ; preds = %453, %450
  %477 = icmp sgt i64 %112, 0
  br i1 %477, label %478, label %483

478:                                              ; preds = %476
  %479 = load double, ptr %16, align 8, !tbaa !9
  %480 = fmul double %.1632726, %479
  %481 = mul nsw i64 %112, %46
  %482 = getelementptr double, ptr %148, i64 %481
  store double %480, ptr %482, align 8, !tbaa !9
  br label %483

483:                                              ; preds = %478, %476
  %484 = call i32 @dlacpy_(ptr noundef nonnull @.str.4, ptr noundef nonnull %36, ptr noundef nonnull %36, ptr noundef %19, ptr noundef nonnull %20, ptr noundef %149, ptr noundef nonnull %7) #6
  %485 = load i64, ptr %36, align 8, !tbaa !5
  %486 = add nsw i64 %485, -1
  store i64 %486, ptr %27, align 8, !tbaa !5
  %487 = load i64, ptr %20, align 8, !tbaa !5
  %488 = add nsw i64 %487, 1
  store i64 %488, ptr %28, align 8, !tbaa !5
  %489 = load i64, ptr %7, align 8, !tbaa !5
  %490 = add nsw i64 %489, 1
  store i64 %490, ptr %29, align 8, !tbaa !5
  %491 = call i32 @f2c_dcopy(ptr noundef nonnull %27, ptr noundef nonnull %160, ptr noundef nonnull %28, ptr noundef %159, ptr noundef nonnull %29) #6
  %492 = load i64, ptr %12, align 8, !tbaa !5
  %493 = icmp sgt i64 %492, 1
  %or.cond5 = select i1 %493, i1 %452, i1 false
  br i1 %or.cond5, label %494, label %500

494:                                              ; preds = %483
  %495 = load i64, ptr %25, align 8, !tbaa !5
  %496 = load i64, ptr %36, align 8, !tbaa !5
  %497 = sub nsw i64 %495, %496
  store i64 %497, ptr %27, align 8, !tbaa !5
  %498 = getelementptr double, ptr %24, i64 %496
  %499 = call i32 @dormhr_(ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, ptr noundef nonnull %36, ptr noundef nonnull %12, ptr noundef nonnull @c__1, ptr noundef nonnull %12, ptr noundef %19, ptr noundef nonnull %20, ptr noundef nonnull %24, ptr noundef %16, ptr noundef nonnull %17, ptr noundef %498, ptr noundef nonnull %27, ptr noundef nonnull %40) #6
  br label %500

500:                                              ; preds = %494, %483
  %501 = load i64, ptr %0, align 8, !tbaa !5
  %.not660 = icmp eq i64 %501, 0
  br i1 %.not660, label %502, label %504

502:                                              ; preds = %500
  %503 = load i64, ptr %3, align 8, !tbaa !5
  br label %504

504:                                              ; preds = %500, %502
  %.0625 = phi i64 [ %503, %502 ], [ 1, %500 ]
  store i64 %112, ptr %27, align 8, !tbaa !5
  %505 = load i64, ptr %21, align 8, !tbaa !5
  store i64 %505, ptr %28, align 8, !tbaa !5
  %invariant.gep701 = getelementptr double, ptr %48, i64 %147
  %506 = icmp slt i64 %505, 0
  %507 = icmp sge i64 %.0625, %112
  %508 = icmp sle i64 %.0625, %112
  %.in703 = select i1 %506, i1 %507, i1 %508
  br i1 %.in703, label %.lr.ph706, label %._crit_edge707

.lr.ph706:                                        ; preds = %504, %.lr.ph706
  %.0623704 = phi i64 [ %515, %.lr.ph706 ], [ %.0625, %504 ]
  %509 = load i64, ptr %21, align 8, !tbaa !5
  store i64 %509, ptr %29, align 8, !tbaa !5
  %510 = sub nsw i64 %113, %.0623704
  %511 = call i64 @llvm.smin.i64(i64 %509, i64 %510)
  store i64 %511, ptr %37, align 8, !tbaa !5
  %gep702 = getelementptr double, ptr %invariant.gep701, i64 %.0623704
  %512 = call i32 @f2c_dgemm(ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.1, ptr noundef nonnull %37, ptr noundef nonnull %36, ptr noundef nonnull %36, ptr noundef nonnull @c_b18, ptr noundef %gep702, ptr noundef nonnull %7, ptr noundef %16, ptr noundef nonnull %17, ptr noundef nonnull @c_b17, ptr noundef %22, ptr noundef %23) #6
  %513 = call i32 @dlacpy_(ptr noundef nonnull @.str.5, ptr noundef nonnull %37, ptr noundef nonnull %36, ptr noundef %22, ptr noundef %23, ptr noundef %gep702, ptr noundef nonnull %7) #6
  %514 = load i64, ptr %28, align 8, !tbaa !5
  %515 = add nsw i64 %514, %.0623704
  %516 = icmp slt i64 %514, 0
  %517 = load i64, ptr %27, align 8
  %518 = icmp sge i64 %515, %517
  %519 = icmp sle i64 %515, %517
  %.in = select i1 %516, i1 %518, i1 %519
  br i1 %.in, label %.lr.ph706, label %._crit_edge707.loopexit, !llvm.loop !15

._crit_edge707.loopexit:                          ; preds = %.lr.ph706
  %.pre723 = load i64, ptr %0, align 8, !tbaa !5
  br label %._crit_edge707

._crit_edge707:                                   ; preds = %._crit_edge707.loopexit, %504
  %520 = phi i64 [ %.pre723, %._crit_edge707.loopexit ], [ %501, %504 ]
  %.not661 = icmp eq i64 %520, 0
  br i1 %.not661, label %.loopexit672, label %521

521:                                              ; preds = %._crit_edge707
  %522 = load i64, ptr %2, align 8, !tbaa !5
  store i64 %522, ptr %28, align 8, !tbaa !5
  %523 = load i64, ptr %18, align 8, !tbaa !5
  store i64 %523, ptr %27, align 8, !tbaa !5
  %524 = load i64, ptr %4, align 8, !tbaa !5
  %525 = add nsw i64 %524, 1
  %526 = icmp slt i64 %523, 0
  %527 = icmp sge i64 %525, %522
  %528 = icmp slt i64 %524, %522
  %.in662708 = select i1 %526, i1 %527, i1 %528
  br i1 %.in662708, label %.lr.ph711, label %.loopexit672

.lr.ph711:                                        ; preds = %521, %.lr.ph711
  %.0626709 = phi i64 [ %538, %.lr.ph711 ], [ %525, %521 ]
  %529 = load i64, ptr %18, align 8, !tbaa !5
  store i64 %529, ptr %29, align 8, !tbaa !5
  %530 = load i64, ptr %2, align 8, !tbaa !5
  %reass.sub = sub i64 %530, %.0626709
  %531 = add i64 %reass.sub, 1
  %532 = call i64 @llvm.smin.i64(i64 %529, i64 %531)
  store i64 %532, ptr %37, align 8, !tbaa !5
  %533 = mul nsw i64 %.0626709, %46
  %534 = getelementptr double, ptr %148, i64 %533
  %535 = call i32 @f2c_dgemm(ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.1, ptr noundef nonnull %36, ptr noundef nonnull %37, ptr noundef nonnull %36, ptr noundef nonnull @c_b18, ptr noundef %16, ptr noundef nonnull %17, ptr noundef %534, ptr noundef nonnull %7, ptr noundef nonnull @c_b17, ptr noundef %19, ptr noundef nonnull %20) #6
  %536 = call i32 @dlacpy_(ptr noundef nonnull @.str.5, ptr noundef nonnull %36, ptr noundef nonnull %37, ptr noundef %19, ptr noundef nonnull %20, ptr noundef %534, ptr noundef nonnull %7) #6
  %537 = load i64, ptr %27, align 8, !tbaa !5
  %538 = add nsw i64 %537, %.0626709
  %539 = icmp slt i64 %537, 0
  %540 = load i64, ptr %28, align 8
  %541 = icmp sge i64 %538, %540
  %542 = icmp sle i64 %538, %540
  %.in662 = select i1 %539, i1 %541, i1 %542
  br i1 %.in662, label %.lr.ph711, label %.loopexit672, !llvm.loop !16

.loopexit672:                                     ; preds = %.lr.ph711, %521, %._crit_edge707
  %543 = load i64, ptr %1, align 8, !tbaa !5
  %.not663 = icmp eq i64 %543, 0
  br i1 %.not663, label %.loopexit, label %544

544:                                              ; preds = %.loopexit672
  %545 = load i64, ptr %9, align 8, !tbaa !5
  store i64 %545, ptr %27, align 8, !tbaa !5
  %546 = load i64, ptr %21, align 8, !tbaa !5
  store i64 %546, ptr %28, align 8, !tbaa !5
  %547 = load i64, ptr %8, align 8, !tbaa !5
  %548 = icmp slt i64 %546, 0
  %549 = icmp sge i64 %547, %545
  %550 = icmp sle i64 %547, %545
  %.in664712 = select i1 %548, i1 %549, i1 %550
  br i1 %.in664712, label %.lr.ph715, label %.loopexit

.lr.ph715:                                        ; preds = %544
  %551 = mul nsw i64 %113, %49
  %invariant.gep716 = getelementptr double, ptr %51, i64 %551
  br label %552

552:                                              ; preds = %.lr.ph715, %552
  %.1624713 = phi i64 [ %547, %.lr.ph715 ], [ %560, %552 ]
  %553 = load i64, ptr %21, align 8, !tbaa !5
  store i64 %553, ptr %29, align 8, !tbaa !5
  %554 = load i64, ptr %9, align 8, !tbaa !5
  %reass.sub718 = sub i64 %554, %.1624713
  %555 = add i64 %reass.sub718, 1
  %556 = call i64 @llvm.smin.i64(i64 %553, i64 %555)
  store i64 %556, ptr %37, align 8, !tbaa !5
  %gep717 = getelementptr double, ptr %invariant.gep716, i64 %.1624713
  %557 = call i32 @f2c_dgemm(ptr noundef nonnull @.str.1, ptr noundef nonnull @.str.1, ptr noundef nonnull %37, ptr noundef nonnull %36, ptr noundef nonnull %36, ptr noundef nonnull @c_b18, ptr noundef %gep717, ptr noundef nonnull %11, ptr noundef %16, ptr noundef nonnull %17, ptr noundef nonnull @c_b17, ptr noundef %22, ptr noundef nonnull %23) #6
  %558 = call i32 @dlacpy_(ptr noundef nonnull @.str.5, ptr noundef nonnull %37, ptr noundef nonnull %36, ptr noundef %22, ptr noundef nonnull %23, ptr noundef %gep717, ptr noundef nonnull %11) #6
  %559 = load i64, ptr %28, align 8, !tbaa !5
  %560 = add nsw i64 %559, %.1624713
  %561 = icmp slt i64 %559, 0
  %562 = load i64, ptr %27, align 8
  %563 = icmp sge i64 %560, %562
  %564 = icmp sle i64 %560, %562
  %.in664 = select i1 %561, i1 %563, i1 %564
  br i1 %.in664, label %552, label %.loopexit, !llvm.loop !17

.loopexit:                                        ; preds = %552, %544, %.loopexit672, %._crit_edge700
  %565 = load i64, ptr %36, align 8, !tbaa !5
  %566 = load i64, ptr %12, align 8, !tbaa !5
  %567 = sub nsw i64 %565, %566
  store i64 %567, ptr %13, align 8, !tbaa !5
  %568 = load i64, ptr %43, align 8, !tbaa !5
  %569 = load i64, ptr %12, align 8, !tbaa !5
  %570 = sub nsw i64 %569, %568
  store i64 %570, ptr %12, align 8, !tbaa !5
  %571 = sitofp i64 %.0 to double
  br label %.sink.split

.sink.split:                                      ; preds = %122, %142, %140, %87, %.loopexit
  %.sink = phi double [ %571, %.loopexit ], [ %88, %87 ], [ 1.000000e+00, %140 ], [ 1.000000e+00, %142 ], [ 1.000000e+00, %122 ]
  store double %.sink, ptr %24, align 8, !tbaa !9
  br label %572

572:                                              ; preds = %.sink.split, %93, %89
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %45) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %44) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #6
  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 @dgehrd_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare i32 @dormhr_(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 @dlaqr4_(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 double @dlamch_(ptr noundef) local_unnamed_addr #2

declare i32 @dlabad_(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 i32 @f2c_dcopy(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

declare i32 @dlahqr_(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 @dtrexc_(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 nofree nounwind willreturn memory(write)
declare double @sqrt(double noundef) local_unnamed_addr #3

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

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

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

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

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

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

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

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

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

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

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


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