; LLVM IR from OpenMathLib/OpenBLAS :: lapack-netlib/SRC (dlaexc)

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

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

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

88:                                               ; preds = %11
  %89 = load ptr, ptr %19, align 8, !tbaa !5
  %90 = load i32, ptr %89, align 4, !tbaa !9
  %91 = icmp eq i32 %90, 0
  br i1 %91, label %96, label %92

92:                                               ; preds = %88
  %93 = load ptr, ptr %20, align 8, !tbaa !5
  %94 = load i32, ptr %93, align 4, !tbaa !9
  %95 = icmp eq i32 %94, 0
  br i1 %95, label %96, label %97

96:                                               ; preds = %92, %88, %11
  store i32 1, ptr %61, align 4
  br label %1145

97:                                               ; preds = %92
  %98 = load ptr, ptr %18, align 8, !tbaa !5
  %99 = load i32, ptr %98, align 4, !tbaa !9
  %100 = load ptr, ptr %19, align 8, !tbaa !5
  %101 = load i32, ptr %100, align 4, !tbaa !9
  %102 = add nsw i32 %99, %101
  %103 = load ptr, ptr %13, align 8, !tbaa !5
  %104 = load i32, ptr %103, align 4, !tbaa !9
  %105 = icmp sgt i32 %102, %104
  br i1 %105, label %106, label %107

106:                                              ; preds = %97
  store i32 1, ptr %61, align 4
  br label %1145

107:                                              ; preds = %97
  %108 = load ptr, ptr %18, align 8, !tbaa !5
  %109 = load i32, ptr %108, align 4, !tbaa !9
  %110 = add nsw i32 %109, 1
  store i32 %110, ptr %39, align 4, !tbaa !9
  %111 = load ptr, ptr %18, align 8, !tbaa !5
  %112 = load i32, ptr %111, align 4, !tbaa !9
  %113 = add nsw i32 %112, 2
  store i32 %113, ptr %40, align 4, !tbaa !9
  %114 = load ptr, ptr %18, align 8, !tbaa !5
  %115 = load i32, ptr %114, align 4, !tbaa !9
  %116 = add nsw i32 %115, 3
  store i32 %116, ptr %41, align 4, !tbaa !9
  %117 = load ptr, ptr %19, align 8, !tbaa !5
  %118 = load i32, ptr %117, align 4, !tbaa !9
  %119 = icmp eq i32 %118, 1
  br i1 %119, label %120, label %247

120:                                              ; preds = %107
  %121 = load ptr, ptr %20, align 8, !tbaa !5
  %122 = load i32, ptr %121, align 4, !tbaa !9
  %123 = icmp eq i32 %122, 1
  br i1 %123, label %124, label %247

124:                                              ; preds = %120
  %125 = load ptr, ptr %14, align 8, !tbaa !5
  %126 = load ptr, ptr %18, align 8, !tbaa !5
  %127 = load i32, ptr %126, align 4, !tbaa !9
  %128 = load ptr, ptr %18, align 8, !tbaa !5
  %129 = load i32, ptr %128, align 4, !tbaa !9
  %130 = load i32, ptr %25, align 4, !tbaa !9
  %131 = mul nsw i32 %129, %130
  %132 = add nsw i32 %127, %131
  %133 = sext i32 %132 to i64
  %134 = getelementptr inbounds double, ptr %125, i64 %133
  %135 = load double, ptr %134, align 8, !tbaa !11
  store double %135, ptr %47, align 8, !tbaa !11
  %136 = load ptr, ptr %14, align 8, !tbaa !5
  %137 = load i32, ptr %39, align 4, !tbaa !9
  %138 = load i32, ptr %39, align 4, !tbaa !9
  %139 = load i32, ptr %25, align 4, !tbaa !9
  %140 = mul nsw i32 %138, %139
  %141 = add nsw i32 %137, %140
  %142 = sext i32 %141 to i64
  %143 = getelementptr inbounds double, ptr %136, i64 %142
  %144 = load double, ptr %143, align 8, !tbaa !11
  store double %144, ptr %48, align 8, !tbaa !11
  %145 = load double, ptr %48, align 8, !tbaa !11
  %146 = load double, ptr %47, align 8, !tbaa !11
  %147 = fsub double %145, %146
  store double %147, ptr %28, align 8, !tbaa !11
  %148 = load ptr, ptr %14, align 8, !tbaa !5
  %149 = load ptr, ptr %18, align 8, !tbaa !5
  %150 = load i32, ptr %149, align 4, !tbaa !9
  %151 = load i32, ptr %39, align 4, !tbaa !9
  %152 = load i32, ptr %25, align 4, !tbaa !9
  %153 = mul nsw i32 %151, %152
  %154 = add nsw i32 %150, %153
  %155 = sext i32 %154 to i64
  %156 = getelementptr inbounds double, ptr %148, i64 %155
  call void @dlartg_(ptr noundef %156, ptr noundef %28, ptr noundef %46, ptr noundef %50, ptr noundef %32)
  %157 = load i32, ptr %40, align 4, !tbaa !9
  %158 = load ptr, ptr %13, align 8, !tbaa !5
  %159 = load i32, ptr %158, align 4, !tbaa !9
  %160 = icmp sle i32 %157, %159
  br i1 %160, label %161, label %187

161:                                              ; preds = %124
  %162 = load ptr, ptr %13, align 8, !tbaa !5
  %163 = load i32, ptr %162, align 4, !tbaa !9
  %164 = load ptr, ptr %18, align 8, !tbaa !5
  %165 = load i32, ptr %164, align 4, !tbaa !9
  %166 = sub nsw i32 %163, %165
  %167 = sub nsw i32 %166, 1
  store i32 %167, ptr %27, align 4, !tbaa !9
  %168 = load ptr, ptr %14, align 8, !tbaa !5
  %169 = load ptr, ptr %18, align 8, !tbaa !5
  %170 = load i32, ptr %169, align 4, !tbaa !9
  %171 = load i32, ptr %40, align 4, !tbaa !9
  %172 = load i32, ptr %25, align 4, !tbaa !9
  %173 = mul nsw i32 %171, %172
  %174 = add nsw i32 %170, %173
  %175 = sext i32 %174 to i64
  %176 = getelementptr inbounds double, ptr %168, i64 %175
  %177 = load ptr, ptr %15, align 8, !tbaa !5
  %178 = load ptr, ptr %14, align 8, !tbaa !5
  %179 = load i32, ptr %39, align 4, !tbaa !9
  %180 = load i32, ptr %40, align 4, !tbaa !9
  %181 = load i32, ptr %25, align 4, !tbaa !9
  %182 = mul nsw i32 %180, %181
  %183 = add nsw i32 %179, %182
  %184 = sext i32 %183 to i64
  %185 = getelementptr inbounds double, ptr %178, i64 %184
  %186 = load ptr, ptr %15, align 8, !tbaa !5
  call void @drot_(ptr noundef %27, ptr noundef %176, ptr noundef %177, ptr noundef %185, ptr noundef %186, ptr noundef %46, ptr noundef %50)
  br label %187

187:                                              ; preds = %161, %124
  %188 = load ptr, ptr %18, align 8, !tbaa !5
  %189 = load i32, ptr %188, align 4, !tbaa !9
  %190 = sub nsw i32 %189, 1
  store i32 %190, ptr %27, align 4, !tbaa !9
  %191 = load ptr, ptr %14, align 8, !tbaa !5
  %192 = load ptr, ptr %18, align 8, !tbaa !5
  %193 = load i32, ptr %192, align 4, !tbaa !9
  %194 = load i32, ptr %25, align 4, !tbaa !9
  %195 = mul nsw i32 %193, %194
  %196 = add nsw i32 %195, 1
  %197 = sext i32 %196 to i64
  %198 = getelementptr inbounds double, ptr %191, i64 %197
  %199 = load ptr, ptr %14, align 8, !tbaa !5
  %200 = load i32, ptr %39, align 4, !tbaa !9
  %201 = load i32, ptr %25, align 4, !tbaa !9
  %202 = mul nsw i32 %200, %201
  %203 = add nsw i32 %202, 1
  %204 = sext i32 %203 to i64
  %205 = getelementptr inbounds double, ptr %199, i64 %204
  call void @drot_(ptr noundef %27, ptr noundef %198, ptr noundef @c__1, ptr noundef %205, ptr noundef @c__1, ptr noundef %46, ptr noundef %50)
  %206 = load double, ptr %48, align 8, !tbaa !11
  %207 = load ptr, ptr %14, align 8, !tbaa !5
  %208 = load ptr, ptr %18, align 8, !tbaa !5
  %209 = load i32, ptr %208, align 4, !tbaa !9
  %210 = load ptr, ptr %18, align 8, !tbaa !5
  %211 = load i32, ptr %210, align 4, !tbaa !9
  %212 = load i32, ptr %25, align 4, !tbaa !9
  %213 = mul nsw i32 %211, %212
  %214 = add nsw i32 %209, %213
  %215 = sext i32 %214 to i64
  %216 = getelementptr inbounds double, ptr %207, i64 %215
  store double %206, ptr %216, align 8, !tbaa !11
  %217 = load double, ptr %47, align 8, !tbaa !11
  %218 = load ptr, ptr %14, align 8, !tbaa !5
  %219 = load i32, ptr %39, align 4, !tbaa !9
  %220 = load i32, ptr %39, align 4, !tbaa !9
  %221 = load i32, ptr %25, align 4, !tbaa !9
  %222 = mul nsw i32 %220, %221
  %223 = add nsw i32 %219, %222
  %224 = sext i32 %223 to i64
  %225 = getelementptr inbounds double, ptr %218, i64 %224
  store double %217, ptr %225, align 8, !tbaa !11
  %226 = load ptr, ptr %12, align 8, !tbaa !5
  %227 = load i32, ptr %226, align 4, !tbaa !9
  %228 = icmp ne i32 %227, 0
  br i1 %228, label %229, label %246

229:                                              ; preds = %187
  %230 = load ptr, ptr %13, align 8, !tbaa !5
  %231 = load ptr, ptr %16, align 8, !tbaa !5
  %232 = load ptr, ptr %18, align 8, !tbaa !5
  %233 = load i32, ptr %232, align 4, !tbaa !9
  %234 = load i32, ptr %23, align 4, !tbaa !9
  %235 = mul nsw i32 %233, %234
  %236 = add nsw i32 %235, 1
  %237 = sext i32 %236 to i64
  %238 = getelementptr inbounds double, ptr %231, i64 %237
  %239 = load ptr, ptr %16, align 8, !tbaa !5
  %240 = load i32, ptr %39, align 4, !tbaa !9
  %241 = load i32, ptr %23, align 4, !tbaa !9
  %242 = mul nsw i32 %240, %241
  %243 = add nsw i32 %242, 1
  %244 = sext i32 %243 to i64
  %245 = getelementptr inbounds double, ptr %239, i64 %244
  call void @drot_(ptr noundef %230, ptr noundef %238, ptr noundef @c__1, ptr noundef %245, ptr noundef @c__1, ptr noundef %46, ptr noundef %50)
  br label %246

246:                                              ; preds = %229, %187
  br label %1142

247:                                              ; preds = %120, %107
  %248 = load ptr, ptr %19, align 8, !tbaa !5
  %249 = load i32, ptr %248, align 4, !tbaa !9
  %250 = load ptr, ptr %20, align 8, !tbaa !5
  %251 = load i32, ptr %250, align 4, !tbaa !9
  %252 = add nsw i32 %249, %251
  store i32 %252, ptr %45, align 4, !tbaa !9
  %253 = load ptr, ptr %14, align 8, !tbaa !5
  %254 = load ptr, ptr %18, align 8, !tbaa !5
  %255 = load i32, ptr %254, align 4, !tbaa !9
  %256 = load ptr, ptr %18, align 8, !tbaa !5
  %257 = load i32, ptr %256, align 4, !tbaa !9
  %258 = load i32, ptr %25, align 4, !tbaa !9
  %259 = mul nsw i32 %257, %258
  %260 = add nsw i32 %255, %259
  %261 = sext i32 %260 to i64
  %262 = getelementptr inbounds double, ptr %253, i64 %261
  %263 = load ptr, ptr %15, align 8, !tbaa !5
  %264 = getelementptr inbounds [16 x double], ptr %33, i64 0, i64 0
  call void @dlacpy_(ptr noundef @.str, ptr noundef %45, ptr noundef %45, ptr noundef %262, ptr noundef %263, ptr noundef %264, ptr noundef @c__4)
  %265 = getelementptr inbounds [16 x double], ptr %33, i64 0, i64 0
  %266 = load ptr, ptr %21, align 8, !tbaa !5
  %267 = getelementptr inbounds double, ptr %266, i64 1
  %268 = call double @dlange_(ptr noundef @.str.1, ptr noundef %45, ptr noundef %45, ptr noundef %265, ptr noundef @c__4, ptr noundef %267)
  store double %268, ptr %38, align 8, !tbaa !11
  %269 = call double @dlamch_(ptr noundef @.str.2)
  store double %269, ptr %57, align 8, !tbaa !11
  %270 = call double @dlamch_(ptr noundef @.str.3)
  %271 = load double, ptr %57, align 8, !tbaa !11
  %272 = fdiv double %270, %271
  store double %272, ptr %52, align 8, !tbaa !11
  %273 = load double, ptr %57, align 8, !tbaa !11
  %274 = fmul double %273, 1.000000e+01
  %275 = load double, ptr %38, align 8, !tbaa !11
  %276 = fmul double %274, %275
  store double %276, ptr %28, align 8, !tbaa !11
  %277 = load double, ptr %28, align 8, !tbaa !11
  %278 = load double, ptr %52, align 8, !tbaa !11
  %279 = fcmp oge double %277, %278
  br i1 %279, label %280, label %282

280:                                              ; preds = %247
  %281 = load double, ptr %28, align 8, !tbaa !11
  br label %284

282:                                              ; preds = %247
  %283 = load double, ptr %52, align 8, !tbaa !11
  br label %284

284:                                              ; preds = %282, %280
  %285 = phi double [ %281, %280 ], [ %283, %282 ]
  store double %285, ptr %51, align 8, !tbaa !11
  %286 = load ptr, ptr %19, align 8, !tbaa !5
  %287 = load ptr, ptr %20, align 8, !tbaa !5
  %288 = getelementptr inbounds [16 x double], ptr %33, i64 0, i64 0
  %289 = load ptr, ptr %19, align 8, !tbaa !5
  %290 = load i32, ptr %289, align 4, !tbaa !9
  %291 = add nsw i32 %290, 1
  %292 = load ptr, ptr %19, align 8, !tbaa !5
  %293 = load i32, ptr %292, align 4, !tbaa !9
  %294 = add nsw i32 %293, 1
  %295 = shl i32 %294, 2
  %296 = add nsw i32 %291, %295
  %297 = sub nsw i32 %296, 5
  %298 = sext i32 %297 to i64
  %299 = getelementptr inbounds [16 x double], ptr %33, i64 0, i64 %298
  %300 = load ptr, ptr %19, align 8, !tbaa !5
  %301 = load i32, ptr %300, align 4, !tbaa !9
  %302 = add nsw i32 %301, 1
  %303 = shl i32 %302, 2
  %304 = sub nsw i32 %303, 4
  %305 = sext i32 %304 to i64
  %306 = getelementptr inbounds [16 x double], ptr %33, i64 0, i64 %305
  %307 = getelementptr inbounds [4 x double], ptr %37, i64 0, i64 0
  call void @dlasy2_(ptr noundef @c_false, ptr noundef @c_false, ptr noundef @c_n1, ptr noundef %286, ptr noundef %287, ptr noundef %288, ptr noundef @c__4, ptr noundef %299, ptr noundef @c__4, ptr noundef %306, ptr noundef @c__4, ptr noundef %36, ptr noundef %307, ptr noundef @c__2, ptr noundef %42, ptr noundef %31)
  %308 = load ptr, ptr %19, align 8, !tbaa !5
  %309 = load i32, ptr %308, align 4, !tbaa !9
  %310 = load ptr, ptr %19, align 8, !tbaa !5
  %311 = load i32, ptr %310, align 4, !tbaa !9
  %312 = add nsw i32 %309, %311
  %313 = load ptr, ptr %20, align 8, !tbaa !5
  %314 = load i32, ptr %313, align 4, !tbaa !9
  %315 = add nsw i32 %312, %314
  %316 = sub nsw i32 %315, 3
  store i32 %316, ptr %34, align 4, !tbaa !9
  %317 = load i32, ptr %34, align 4, !tbaa !9
  switch i32 %317, label %321 [
    i32 1, label %318
    i32 2, label %319
    i32 3, label %320
  ]

318:                                              ; preds = %284
  br label %322

319:                                              ; preds = %284
  br label %488

320:                                              ; preds = %284
  br label %655

321:                                              ; preds = %284
  br label %322

322:                                              ; preds = %321, %318
  %323 = load double, ptr %36, align 8, !tbaa !11
  %324 = getelementptr inbounds [3 x double], ptr %35, i64 0, i64 0
  store double %323, ptr %324, align 16, !tbaa !11
  %325 = getelementptr inbounds [4 x double], ptr %37, i64 0, i64 0
  %326 = load double, ptr %325, align 16, !tbaa !11
  %327 = getelementptr inbounds [3 x double], ptr %35, i64 0, i64 1
  store double %326, ptr %327, align 8, !tbaa !11
  %328 = getelementptr inbounds [4 x double], ptr %37, i64 0, i64 2
  %329 = load double, ptr %328, align 16, !tbaa !11
  %330 = getelementptr inbounds [3 x double], ptr %35, i64 0, i64 2
  store double %329, ptr %330, align 16, !tbaa !11
  %331 = getelementptr inbounds [3 x double], ptr %35, i64 0, i64 2
  %332 = getelementptr inbounds [3 x double], ptr %35, i64 0, i64 0
  call void @dlarfg_(ptr noundef @c__3, ptr noundef %331, ptr noundef %332, ptr noundef @c__1, ptr noundef %58)
  %333 = getelementptr inbounds [3 x double], ptr %35, i64 0, i64 2
  store double 1.000000e+00, ptr %333, align 16, !tbaa !11
  %334 = load ptr, ptr %14, align 8, !tbaa !5
  %335 = load ptr, ptr %18, align 8, !tbaa !5
  %336 = load i32, ptr %335, align 4, !tbaa !9
  %337 = load ptr, ptr %18, align 8, !tbaa !5
  %338 = load i32, ptr %337, align 4, !tbaa !9
  %339 = load i32, ptr %25, align 4, !tbaa !9
  %340 = mul nsw i32 %338, %339
  %341 = add nsw i32 %336, %340
  %342 = sext i32 %341 to i64
  %343 = getelementptr inbounds double, ptr %334, i64 %342
  %344 = load double, ptr %343, align 8, !tbaa !11
  store double %344, ptr %47, align 8, !tbaa !11
  %345 = getelementptr inbounds [3 x double], ptr %35, i64 0, i64 0
  %346 = getelementptr inbounds [16 x double], ptr %33, i64 0, i64 0
  %347 = load ptr, ptr %21, align 8, !tbaa !5
  %348 = getelementptr inbounds double, ptr %347, i64 1
  call void @dlarfx_(ptr noundef @.str.4, ptr noundef @c__3, ptr noundef @c__3, ptr noundef %345, ptr noundef %58, ptr noundef %346, ptr noundef @c__4, ptr noundef %348)
  %349 = getelementptr inbounds [3 x double], ptr %35, i64 0, i64 0
  %350 = getelementptr inbounds [16 x double], ptr %33, i64 0, i64 0
  %351 = load ptr, ptr %21, align 8, !tbaa !5
  %352 = getelementptr inbounds double, ptr %351, i64 1
  call void @dlarfx_(ptr noundef @.str.5, ptr noundef @c__3, ptr noundef @c__3, ptr noundef %349, ptr noundef %58, ptr noundef %350, ptr noundef @c__4, ptr noundef %352)
  %353 = getelementptr inbounds [16 x double], ptr %33, i64 0, i64 2
  %354 = load double, ptr %353, align 16, !tbaa !11
  %355 = fcmp oge double %354, 0.000000e+00
  br i1 %355, label %356, label %359

356:                                              ; preds = %322
  %357 = getelementptr inbounds [16 x double], ptr %33, i64 0, i64 2
  %358 = load double, ptr %357, align 16, !tbaa !11
  br label %363

359:                                              ; preds = %322
  %360 = getelementptr inbounds [16 x double], ptr %33, i64 0, i64 2
  %361 = load double, ptr %360, align 16, !tbaa !11
  %362 = fneg double %361
  br label %363

363:                                              ; preds = %359, %356
  %364 = phi double [ %358, %356 ], [ %362, %359 ]
  store double %364, ptr %29, align 8, !tbaa !11
  %365 = getelementptr inbounds [16 x double], ptr %33, i64 0, i64 6
  %366 = load double, ptr %365, align 16, !tbaa !11
  %367 = fcmp oge double %366, 0.000000e+00
  br i1 %367, label %368, label %371

368:                                              ; preds = %363
  %369 = getelementptr inbounds [16 x double], ptr %33, i64 0, i64 6
  %370 = load double, ptr %369, align 16, !tbaa !11
  br label %375

371:                                              ; preds = %363
  %372 = getelementptr inbounds [16 x double], ptr %33, i64 0, i64 6
  %373 = load double, ptr %372, align 16, !tbaa !11
  %374 = fneg double %373
  br label %375

375:                                              ; preds = %371, %368
  %376 = phi double [ %370, %368 ], [ %374, %371 ]
  store double %376, ptr %30, align 8, !tbaa !11
  %377 = load double, ptr %29, align 8, !tbaa !11
  %378 = load double, ptr %30, align 8, !tbaa !11
  %379 = fcmp oge double %377, %378
  br i1 %379, label %380, label %382

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

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

384:                                              ; preds = %382, %380
  %385 = phi double [ %381, %380 ], [ %383, %382 ]
  store double %385, ptr %29, align 8, !tbaa !11
  %386 = getelementptr inbounds [16 x double], ptr %33, i64 0, i64 10
  %387 = load double, ptr %386, align 16, !tbaa !11
  %388 = load double, ptr %47, align 8, !tbaa !11
  %389 = fsub double %387, %388
  store double %389, ptr %28, align 8, !tbaa !11
  %390 = load double, ptr %28, align 8, !tbaa !11
  %391 = fcmp oge double %390, 0.000000e+00
  br i1 %391, label %392, label %394

392:                                              ; preds = %384
  %393 = load double, ptr %28, align 8, !tbaa !11
  br label %397

394:                                              ; preds = %384
  %395 = load double, ptr %28, align 8, !tbaa !11
  %396 = fneg double %395
  br label %397

397:                                              ; preds = %394, %392
  %398 = phi double [ %393, %392 ], [ %396, %394 ]
  store double %398, ptr %30, align 8, !tbaa !11
  %399 = load double, ptr %29, align 8, !tbaa !11
  %400 = load double, ptr %30, align 8, !tbaa !11
  %401 = fcmp oge double %399, %400
  br i1 %401, label %402, label %404

402:                                              ; preds = %397
  %403 = load double, ptr %29, align 8, !tbaa !11
  br label %406

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

406:                                              ; preds = %404, %402
  %407 = phi double [ %403, %402 ], [ %405, %404 ]
  %408 = load double, ptr %51, align 8, !tbaa !11
  %409 = fcmp ogt double %407, %408
  br i1 %409, label %410, label %411

410:                                              ; preds = %406
  br label %1143

411:                                              ; preds = %406
  %412 = load ptr, ptr %13, align 8, !tbaa !5
  %413 = load i32, ptr %412, align 4, !tbaa !9
  %414 = load ptr, ptr %18, align 8, !tbaa !5
  %415 = load i32, ptr %414, align 4, !tbaa !9
  %416 = sub nsw i32 %413, %415
  %417 = add nsw i32 %416, 1
  store i32 %417, ptr %27, align 4, !tbaa !9
  %418 = getelementptr inbounds [3 x double], ptr %35, i64 0, i64 0
  %419 = load ptr, ptr %14, align 8, !tbaa !5
  %420 = load ptr, ptr %18, align 8, !tbaa !5
  %421 = load i32, ptr %420, align 4, !tbaa !9
  %422 = load ptr, ptr %18, align 8, !tbaa !5
  %423 = load i32, ptr %422, align 4, !tbaa !9
  %424 = load i32, ptr %25, align 4, !tbaa !9
  %425 = mul nsw i32 %423, %424
  %426 = add nsw i32 %421, %425
  %427 = sext i32 %426 to i64
  %428 = getelementptr inbounds double, ptr %419, i64 %427
  %429 = load ptr, ptr %15, align 8, !tbaa !5
  %430 = load ptr, ptr %21, align 8, !tbaa !5
  %431 = getelementptr inbounds double, ptr %430, i64 1
  call void @dlarfx_(ptr noundef @.str.4, ptr noundef @c__3, ptr noundef %27, ptr noundef %418, ptr noundef %58, ptr noundef %428, ptr noundef %429, ptr noundef %431)
  %432 = getelementptr inbounds [3 x double], ptr %35, i64 0, i64 0
  %433 = load ptr, ptr %14, align 8, !tbaa !5
  %434 = load ptr, ptr %18, align 8, !tbaa !5
  %435 = load i32, ptr %434, align 4, !tbaa !9
  %436 = load i32, ptr %25, align 4, !tbaa !9
  %437 = mul nsw i32 %435, %436
  %438 = add nsw i32 %437, 1
  %439 = sext i32 %438 to i64
  %440 = getelementptr inbounds double, ptr %433, i64 %439
  %441 = load ptr, ptr %15, align 8, !tbaa !5
  %442 = load ptr, ptr %21, align 8, !tbaa !5
  %443 = getelementptr inbounds double, ptr %442, i64 1
  call void @dlarfx_(ptr noundef @.str.5, ptr noundef %39, ptr noundef @c__3, ptr noundef %432, ptr noundef %58, ptr noundef %440, ptr noundef %441, ptr noundef %443)
  %444 = load ptr, ptr %14, align 8, !tbaa !5
  %445 = load i32, ptr %40, align 4, !tbaa !9
  %446 = load ptr, ptr %18, align 8, !tbaa !5
  %447 = load i32, ptr %446, align 4, !tbaa !9
  %448 = load i32, ptr %25, align 4, !tbaa !9
  %449 = mul nsw i32 %447, %448
  %450 = add nsw i32 %445, %449
  %451 = sext i32 %450 to i64
  %452 = getelementptr inbounds double, ptr %444, i64 %451
  store double 0.000000e+00, ptr %452, align 8, !tbaa !11
  %453 = load ptr, ptr %14, align 8, !tbaa !5
  %454 = load i32, ptr %40, align 4, !tbaa !9
  %455 = load i32, ptr %39, align 4, !tbaa !9
  %456 = load i32, ptr %25, align 4, !tbaa !9
  %457 = mul nsw i32 %455, %456
  %458 = add nsw i32 %454, %457
  %459 = sext i32 %458 to i64
  %460 = getelementptr inbounds double, ptr %453, i64 %459
  store double 0.000000e+00, ptr %460, align 8, !tbaa !11
  %461 = load double, ptr %47, align 8, !tbaa !11
  %462 = load ptr, ptr %14, align 8, !tbaa !5
  %463 = load i32, ptr %40, align 4, !tbaa !9
  %464 = load i32, ptr %40, align 4, !tbaa !9
  %465 = load i32, ptr %25, align 4, !tbaa !9
  %466 = mul nsw i32 %464, %465
  %467 = add nsw i32 %463, %466
  %468 = sext i32 %467 to i64
  %469 = getelementptr inbounds double, ptr %462, i64 %468
  store double %461, ptr %469, align 8, !tbaa !11
  %470 = load ptr, ptr %12, align 8, !tbaa !5
  %471 = load i32, ptr %470, align 4, !tbaa !9
  %472 = icmp ne i32 %471, 0
  br i1 %472, label %473, label %487

473:                                              ; preds = %411
  %474 = load ptr, ptr %13, align 8, !tbaa !5
  %475 = getelementptr inbounds [3 x double], ptr %35, i64 0, i64 0
  %476 = load ptr, ptr %16, align 8, !tbaa !5
  %477 = load ptr, ptr %18, align 8, !tbaa !5
  %478 = load i32, ptr %477, align 4, !tbaa !9
  %479 = load i32, ptr %23, align 4, !tbaa !9
  %480 = mul nsw i32 %478, %479
  %481 = add nsw i32 %480, 1
  %482 = sext i32 %481 to i64
  %483 = getelementptr inbounds double, ptr %476, i64 %482
  %484 = load ptr, ptr %17, align 8, !tbaa !5
  %485 = load ptr, ptr %21, align 8, !tbaa !5
  %486 = getelementptr inbounds double, ptr %485, i64 1
  call void @dlarfx_(ptr noundef @.str.5, ptr noundef %474, ptr noundef @c__3, ptr noundef %475, ptr noundef %58, ptr noundef %483, ptr noundef %484, ptr noundef %486)
  br label %487

487:                                              ; preds = %473, %411
  br label %920

488:                                              ; preds = %319
  %489 = getelementptr inbounds [4 x double], ptr %37, i64 0, i64 0
  %490 = load double, ptr %489, align 16, !tbaa !11
  %491 = fneg double %490
  %492 = getelementptr inbounds [3 x double], ptr %35, i64 0, i64 0
  store double %491, ptr %492, align 16, !tbaa !11
  %493 = getelementptr inbounds [4 x double], ptr %37, i64 0, i64 1
  %494 = load double, ptr %493, align 8, !tbaa !11
  %495 = fneg double %494
  %496 = getelementptr inbounds [3 x double], ptr %35, i64 0, i64 1
  store double %495, ptr %496, align 8, !tbaa !11
  %497 = load double, ptr %36, align 8, !tbaa !11
  %498 = getelementptr inbounds [3 x double], ptr %35, i64 0, i64 2
  store double %497, ptr %498, align 16, !tbaa !11
  %499 = getelementptr inbounds [3 x double], ptr %35, i64 0, i64 0
  %500 = getelementptr inbounds [3 x double], ptr %35, i64 0, i64 1
  call void @dlarfg_(ptr noundef @c__3, ptr noundef %499, ptr noundef %500, ptr noundef @c__1, ptr noundef %58)
  %501 = getelementptr inbounds [3 x double], ptr %35, i64 0, i64 0
  store double 1.000000e+00, ptr %501, align 16, !tbaa !11
  %502 = load ptr, ptr %14, align 8, !tbaa !5
  %503 = load i32, ptr %40, align 4, !tbaa !9
  %504 = load i32, ptr %40, align 4, !tbaa !9
  %505 = load i32, ptr %25, align 4, !tbaa !9
  %506 = mul nsw i32 %504, %505
  %507 = add nsw i32 %503, %506
  %508 = sext i32 %507 to i64
  %509 = getelementptr inbounds double, ptr %502, i64 %508
  %510 = load double, ptr %509, align 8, !tbaa !11
  store double %510, ptr %49, align 8, !tbaa !11
  %511 = getelementptr inbounds [3 x double], ptr %35, i64 0, i64 0
  %512 = getelementptr inbounds [16 x double], ptr %33, i64 0, i64 0
  %513 = load ptr, ptr %21, align 8, !tbaa !5
  %514 = getelementptr inbounds double, ptr %513, i64 1
  call void @dlarfx_(ptr noundef @.str.4, ptr noundef @c__3, ptr noundef @c__3, ptr noundef %511, ptr noundef %58, ptr noundef %512, ptr noundef @c__4, ptr noundef %514)
  %515 = getelementptr inbounds [3 x double], ptr %35, i64 0, i64 0
  %516 = getelementptr inbounds [16 x double], ptr %33, i64 0, i64 0
  %517 = load ptr, ptr %21, align 8, !tbaa !5
  %518 = getelementptr inbounds double, ptr %517, i64 1
  call void @dlarfx_(ptr noundef @.str.5, ptr noundef @c__3, ptr noundef @c__3, ptr noundef %515, ptr noundef %58, ptr noundef %516, ptr noundef @c__4, ptr noundef %518)
  %519 = getelementptr inbounds [16 x double], ptr %33, i64 0, i64 1
  %520 = load double, ptr %519, align 8, !tbaa !11
  %521 = fcmp oge double %520, 0.000000e+00
  br i1 %521, label %522, label %525

522:                                              ; preds = %488
  %523 = getelementptr inbounds [16 x double], ptr %33, i64 0, i64 1
  %524 = load double, ptr %523, align 8, !tbaa !11
  br label %529

525:                                              ; preds = %488
  %526 = getelementptr inbounds [16 x double], ptr %33, i64 0, i64 1
  %527 = load double, ptr %526, align 8, !tbaa !11
  %528 = fneg double %527
  br label %529

529:                                              ; preds = %525, %522
  %530 = phi double [ %524, %522 ], [ %528, %525 ]
  store double %530, ptr %29, align 8, !tbaa !11
  %531 = getelementptr inbounds [16 x double], ptr %33, i64 0, i64 2
  %532 = load double, ptr %531, align 16, !tbaa !11
  %533 = fcmp oge double %532, 0.000000e+00
  br i1 %533, label %534, label %537

534:                                              ; preds = %529
  %535 = getelementptr inbounds [16 x double], ptr %33, i64 0, i64 2
  %536 = load double, ptr %535, align 16, !tbaa !11
  br label %541

537:                                              ; preds = %529
  %538 = getelementptr inbounds [16 x double], ptr %33, i64 0, i64 2
  %539 = load double, ptr %538, align 16, !tbaa !11
  %540 = fneg double %539
  br label %541

541:                                              ; preds = %537, %534
  %542 = phi double [ %536, %534 ], [ %540, %537 ]
  store double %542, ptr %30, align 8, !tbaa !11
  %543 = load double, ptr %29, align 8, !tbaa !11
  %544 = load double, ptr %30, align 8, !tbaa !11
  %545 = fcmp oge double %543, %544
  br i1 %545, label %546, label %548

546:                                              ; preds = %541
  %547 = load double, ptr %29, align 8, !tbaa !11
  br label %550

548:                                              ; preds = %541
  %549 = load double, ptr %30, align 8, !tbaa !11
  br label %550

550:                                              ; preds = %548, %546
  %551 = phi double [ %547, %546 ], [ %549, %548 ]
  store double %551, ptr %29, align 8, !tbaa !11
  %552 = getelementptr inbounds [16 x double], ptr %33, i64 0, i64 0
  %553 = load double, ptr %552, align 16, !tbaa !11
  %554 = load double, ptr %49, align 8, !tbaa !11
  %555 = fsub double %553, %554
  store double %555, ptr %28, align 8, !tbaa !11
  %556 = load double, ptr %28, align 8, !tbaa !11
  %557 = fcmp oge double %556, 0.000000e+00
  br i1 %557, label %558, label %560

558:                                              ; preds = %550
  %559 = load double, ptr %28, align 8, !tbaa !11
  br label %563

560:                                              ; preds = %550
  %561 = load double, ptr %28, align 8, !tbaa !11
  %562 = fneg double %561
  br label %563

563:                                              ; preds = %560, %558
  %564 = phi double [ %559, %558 ], [ %562, %560 ]
  store double %564, ptr %30, align 8, !tbaa !11
  %565 = load double, ptr %29, align 8, !tbaa !11
  %566 = load double, ptr %30, align 8, !tbaa !11
  %567 = fcmp oge double %565, %566
  br i1 %567, label %568, label %570

568:                                              ; preds = %563
  %569 = load double, ptr %29, align 8, !tbaa !11
  br label %572

570:                                              ; preds = %563
  %571 = load double, ptr %30, align 8, !tbaa !11
  br label %572

572:                                              ; preds = %570, %568
  %573 = phi double [ %569, %568 ], [ %571, %570 ]
  %574 = load double, ptr %51, align 8, !tbaa !11
  %575 = fcmp ogt double %573, %574
  br i1 %575, label %576, label %577

576:                                              ; preds = %572
  br label %1143

577:                                              ; preds = %572
  %578 = getelementptr inbounds [3 x double], ptr %35, i64 0, i64 0
  %579 = load ptr, ptr %14, align 8, !tbaa !5
  %580 = load ptr, ptr %18, align 8, !tbaa !5
  %581 = load i32, ptr %580, align 4, !tbaa !9
  %582 = load i32, ptr %25, align 4, !tbaa !9
  %583 = mul nsw i32 %581, %582
  %584 = add nsw i32 %583, 1
  %585 = sext i32 %584 to i64
  %586 = getelementptr inbounds double, ptr %579, i64 %585
  %587 = load ptr, ptr %15, align 8, !tbaa !5
  %588 = load ptr, ptr %21, align 8, !tbaa !5
  %589 = getelementptr inbounds double, ptr %588, i64 1
  call void @dlarfx_(ptr noundef @.str.5, ptr noundef %40, ptr noundef @c__3, ptr noundef %578, ptr noundef %58, ptr noundef %586, ptr noundef %587, ptr noundef %589)
  %590 = load ptr, ptr %13, align 8, !tbaa !5
  %591 = load i32, ptr %590, align 4, !tbaa !9
  %592 = load ptr, ptr %18, align 8, !tbaa !5
  %593 = load i32, ptr %592, align 4, !tbaa !9
  %594 = sub nsw i32 %591, %593
  store i32 %594, ptr %27, align 4, !tbaa !9
  %595 = getelementptr inbounds [3 x double], ptr %35, i64 0, i64 0
  %596 = load ptr, ptr %14, align 8, !tbaa !5
  %597 = load ptr, ptr %18, align 8, !tbaa !5
  %598 = load i32, ptr %597, align 4, !tbaa !9
  %599 = load i32, ptr %39, align 4, !tbaa !9
  %600 = load i32, ptr %25, align 4, !tbaa !9
  %601 = mul nsw i32 %599, %600
  %602 = add nsw i32 %598, %601
  %603 = sext i32 %602 to i64
  %604 = getelementptr inbounds double, ptr %596, i64 %603
  %605 = load ptr, ptr %15, align 8, !tbaa !5
  %606 = load ptr, ptr %21, align 8, !tbaa !5
  %607 = getelementptr inbounds double, ptr %606, i64 1
  call void @dlarfx_(ptr noundef @.str.4, ptr noundef @c__3, ptr noundef %27, ptr noundef %595, ptr noundef %58, ptr noundef %604, ptr noundef %605, ptr noundef %607)
  %608 = load double, ptr %49, align 8, !tbaa !11
  %609 = load ptr, ptr %14, align 8, !tbaa !5
  %610 = load ptr, ptr %18, align 8, !tbaa !5
  %611 = load i32, ptr %610, align 4, !tbaa !9
  %612 = load ptr, ptr %18, align 8, !tbaa !5
  %613 = load i32, ptr %612, align 4, !tbaa !9
  %614 = load i32, ptr %25, align 4, !tbaa !9
  %615 = mul nsw i32 %613, %614
  %616 = add nsw i32 %611, %615
  %617 = sext i32 %616 to i64
  %618 = getelementptr inbounds double, ptr %609, i64 %617
  store double %608, ptr %618, align 8, !tbaa !11
  %619 = load ptr, ptr %14, align 8, !tbaa !5
  %620 = load i32, ptr %39, align 4, !tbaa !9
  %621 = load ptr, ptr %18, align 8, !tbaa !5
  %622 = load i32, ptr %621, align 4, !tbaa !9
  %623 = load i32, ptr %25, align 4, !tbaa !9
  %624 = mul nsw i32 %622, %623
  %625 = add nsw i32 %620, %624
  %626 = sext i32 %625 to i64
  %627 = getelementptr inbounds double, ptr %619, i64 %626
  store double 0.000000e+00, ptr %627, align 8, !tbaa !11
  %628 = load ptr, ptr %14, align 8, !tbaa !5
  %629 = load i32, ptr %40, align 4, !tbaa !9
  %630 = load ptr, ptr %18, align 8, !tbaa !5
  %631 = load i32, ptr %630, align 4, !tbaa !9
  %632 = load i32, ptr %25, align 4, !tbaa !9
  %633 = mul nsw i32 %631, %632
  %634 = add nsw i32 %629, %633
  %635 = sext i32 %634 to i64
  %636 = getelementptr inbounds double, ptr %628, i64 %635
  store double 0.000000e+00, ptr %636, align 8, !tbaa !11
  %637 = load ptr, ptr %12, align 8, !tbaa !5
  %638 = load i32, ptr %637, align 4, !tbaa !9
  %639 = icmp ne i32 %638, 0
  br i1 %639, label %640, label %654

640:                                              ; preds = %577
  %641 = load ptr, ptr %13, align 8, !tbaa !5
  %642 = getelementptr inbounds [3 x double], ptr %35, i64 0, i64 0
  %643 = load ptr, ptr %16, align 8, !tbaa !5
  %644 = load ptr, ptr %18, align 8, !tbaa !5
  %645 = load i32, ptr %644, align 4, !tbaa !9
  %646 = load i32, ptr %23, align 4, !tbaa !9
  %647 = mul nsw i32 %645, %646
  %648 = add nsw i32 %647, 1
  %649 = sext i32 %648 to i64
  %650 = getelementptr inbounds double, ptr %643, i64 %649
  %651 = load ptr, ptr %17, align 8, !tbaa !5
  %652 = load ptr, ptr %21, align 8, !tbaa !5
  %653 = getelementptr inbounds double, ptr %652, i64 1
  call void @dlarfx_(ptr noundef @.str.5, ptr noundef %641, ptr noundef @c__3, ptr noundef %642, ptr noundef %58, ptr noundef %650, ptr noundef %651, ptr noundef %653)
  br label %654

654:                                              ; preds = %640, %577
  br label %920

655:                                              ; preds = %320
  %656 = getelementptr inbounds [4 x double], ptr %37, i64 0, i64 0
  %657 = load double, ptr %656, align 16, !tbaa !11
  %658 = fneg double %657
  %659 = getelementptr inbounds [3 x double], ptr %43, i64 0, i64 0
  store double %658, ptr %659, align 16, !tbaa !11
  %660 = getelementptr inbounds [4 x double], ptr %37, i64 0, i64 1
  %661 = load double, ptr %660, align 8, !tbaa !11
  %662 = fneg double %661
  %663 = getelementptr inbounds [3 x double], ptr %43, i64 0, i64 1
  store double %662, ptr %663, align 8, !tbaa !11
  %664 = load double, ptr %36, align 8, !tbaa !11
  %665 = getelementptr inbounds [3 x double], ptr %43, i64 0, i64 2
  store double %664, ptr %665, align 16, !tbaa !11
  %666 = getelementptr inbounds [3 x double], ptr %43, i64 0, i64 0
  %667 = getelementptr inbounds [3 x double], ptr %43, i64 0, i64 1
  call void @dlarfg_(ptr noundef @c__3, ptr noundef %666, ptr noundef %667, ptr noundef @c__1, ptr noundef %59)
  %668 = getelementptr inbounds [3 x double], ptr %43, i64 0, i64 0
  store double 1.000000e+00, ptr %668, align 16, !tbaa !11
  %669 = load double, ptr %59, align 8, !tbaa !11
  %670 = fneg double %669
  %671 = getelementptr inbounds [4 x double], ptr %37, i64 0, i64 2
  %672 = load double, ptr %671, align 16, !tbaa !11
  %673 = getelementptr inbounds [3 x double], ptr %43, i64 0, i64 1
  %674 = load double, ptr %673, align 8, !tbaa !11
  %675 = getelementptr inbounds [4 x double], ptr %37, i64 0, i64 3
  %676 = load double, ptr %675, align 8, !tbaa !11
  %677 = call double @llvm.fmuladd.f64(double %674, double %676, double %672)
  %678 = fmul double %670, %677
  store double %678, ptr %32, align 8, !tbaa !11
  %679 = load double, ptr %32, align 8, !tbaa !11
  %680 = fneg double %679
  %681 = getelementptr inbounds [3 x double], ptr %43, i64 0, i64 1
  %682 = load double, ptr %681, align 8, !tbaa !11
  %683 = getelementptr inbounds [4 x double], ptr %37, i64 0, i64 3
  %684 = load double, ptr %683, align 8, !tbaa !11
  %685 = fneg double %684
  %686 = call double @llvm.fmuladd.f64(double %680, double %682, double %685)
  %687 = getelementptr inbounds [3 x double], ptr %44, i64 0, i64 0
  store double %686, ptr %687, align 16, !tbaa !11
  %688 = load double, ptr %32, align 8, !tbaa !11
  %689 = fneg double %688
  %690 = getelementptr inbounds [3 x double], ptr %43, i64 0, i64 2
  %691 = load double, ptr %690, align 16, !tbaa !11
  %692 = fmul double %689, %691
  %693 = getelementptr inbounds [3 x double], ptr %44, i64 0, i64 1
  store double %692, ptr %693, align 8, !tbaa !11
  %694 = load double, ptr %36, align 8, !tbaa !11
  %695 = getelementptr inbounds [3 x double], ptr %44, i64 0, i64 2
  store double %694, ptr %695, align 16, !tbaa !11
  %696 = getelementptr inbounds [3 x double], ptr %44, i64 0, i64 0
  %697 = getelementptr inbounds [3 x double], ptr %44, i64 0, i64 1
  call void @dlarfg_(ptr noundef @c__3, ptr noundef %696, ptr noundef %697, ptr noundef @c__1, ptr noundef %60)
  %698 = getelementptr inbounds [3 x double], ptr %44, i64 0, i64 0
  store double 1.000000e+00, ptr %698, align 16, !tbaa !11
  %699 = getelementptr inbounds [3 x double], ptr %43, i64 0, i64 0
  %700 = getelementptr inbounds [16 x double], ptr %33, i64 0, i64 0
  %701 = load ptr, ptr %21, align 8, !tbaa !5
  %702 = getelementptr inbounds double, ptr %701, i64 1
  call void @dlarfx_(ptr noundef @.str.4, ptr noundef @c__3, ptr noundef @c__4, ptr noundef %699, ptr noundef %59, ptr noundef %700, ptr noundef @c__4, ptr noundef %702)
  %703 = getelementptr inbounds [3 x double], ptr %43, i64 0, i64 0
  %704 = getelementptr inbounds [16 x double], ptr %33, i64 0, i64 0
  %705 = load ptr, ptr %21, align 8, !tbaa !5
  %706 = getelementptr inbounds double, ptr %705, i64 1
  call void @dlarfx_(ptr noundef @.str.5, ptr noundef @c__4, ptr noundef @c__3, ptr noundef %703, ptr noundef %59, ptr noundef %704, ptr noundef @c__4, ptr noundef %706)
  %707 = getelementptr inbounds [3 x double], ptr %44, i64 0, i64 0
  %708 = getelementptr inbounds [16 x double], ptr %33, i64 0, i64 1
  %709 = load ptr, ptr %21, align 8, !tbaa !5
  %710 = getelementptr inbounds double, ptr %709, i64 1
  call void @dlarfx_(ptr noundef @.str.4, ptr noundef @c__3, ptr noundef @c__4, ptr noundef %707, ptr noundef %60, ptr noundef %708, ptr noundef @c__4, ptr noundef %710)
  %711 = getelementptr inbounds [3 x double], ptr %44, i64 0, i64 0
  %712 = getelementptr inbounds [16 x double], ptr %33, i64 0, i64 4
  %713 = load ptr, ptr %21, align 8, !tbaa !5
  %714 = getelementptr inbounds double, ptr %713, i64 1
  call void @dlarfx_(ptr noundef @.str.5, ptr noundef @c__4, ptr noundef @c__3, ptr noundef %711, ptr noundef %60, ptr noundef %712, ptr noundef @c__4, ptr noundef %714)
  %715 = getelementptr inbounds [16 x double], ptr %33, i64 0, i64 2
  %716 = load double, ptr %715, align 16, !tbaa !11
  %717 = fcmp oge double %716, 0.000000e+00
  br i1 %717, label %718, label %721

718:                                              ; preds = %655
  %719 = getelementptr inbounds [16 x double], ptr %33, i64 0, i64 2
  %720 = load double, ptr %719, align 16, !tbaa !11
  br label %725

721:                                              ; preds = %655
  %722 = getelementptr inbounds [16 x double], ptr %33, i64 0, i64 2
  %723 = load double, ptr %722, align 16, !tbaa !11
  %724 = fneg double %723
  br label %725

725:                                              ; preds = %721, %718
  %726 = phi double [ %720, %718 ], [ %724, %721 ]
  store double %726, ptr %28, align 8, !tbaa !11
  %727 = getelementptr inbounds [16 x double], ptr %33, i64 0, i64 6
  %728 = load double, ptr %727, align 16, !tbaa !11
  %729 = fcmp oge double %728, 0.000000e+00
  br i1 %729, label %730, label %733

730:                                              ; preds = %725
  %731 = getelementptr inbounds [16 x double], ptr %33, i64 0, i64 6
  %732 = load double, ptr %731, align 16, !tbaa !11
  br label %737

733:                                              ; preds = %725
  %734 = getelementptr inbounds [16 x double], ptr %33, i64 0, i64 6
  %735 = load double, ptr %734, align 16, !tbaa !11
  %736 = fneg double %735
  br label %737

737:                                              ; preds = %733, %730
  %738 = phi double [ %732, %730 ], [ %736, %733 ]
  store double %738, ptr %29, align 8, !tbaa !11
  %739 = load double, ptr %28, align 8, !tbaa !11
  %740 = load double, ptr %29, align 8, !tbaa !11
  %741 = fcmp oge double %739, %740
  br i1 %741, label %742, label %744

742:                                              ; preds = %737
  %743 = load double, ptr %28, align 8, !tbaa !11
  br label %746

744:                                              ; preds = %737
  %745 = load double, ptr %29, align 8, !tbaa !11
  br label %746

746:                                              ; preds = %744, %742
  %747 = phi double [ %743, %742 ], [ %745, %744 ]
  store double %747, ptr %28, align 8, !tbaa !11
  %748 = getelementptr inbounds [16 x double], ptr %33, i64 0, i64 3
  %749 = load double, ptr %748, align 8, !tbaa !11
  %750 = fcmp oge double %749, 0.000000e+00
  br i1 %750, label %751, label %754

751:                                              ; preds = %746
  %752 = getelementptr inbounds [16 x double], ptr %33, i64 0, i64 3
  %753 = load double, ptr %752, align 8, !tbaa !11
  br label %758

754:                                              ; preds = %746
  %755 = getelementptr inbounds [16 x double], ptr %33, i64 0, i64 3
  %756 = load double, ptr %755, align 8, !tbaa !11
  %757 = fneg double %756
  br label %758

758:                                              ; preds = %754, %751
  %759 = phi double [ %753, %751 ], [ %757, %754 ]
  store double %759, ptr %29, align 8, !tbaa !11
  %760 = load double, ptr %28, align 8, !tbaa !11
  %761 = load double, ptr %29, align 8, !tbaa !11
  %762 = fcmp oge double %760, %761
  br i1 %762, label %763, label %765

763:                                              ; preds = %758
  %764 = load double, ptr %28, align 8, !tbaa !11
  br label %767

765:                                              ; preds = %758
  %766 = load double, ptr %29, align 8, !tbaa !11
  br label %767

767:                                              ; preds = %765, %763
  %768 = phi double [ %764, %763 ], [ %766, %765 ]
  store double %768, ptr %28, align 8, !tbaa !11
  %769 = getelementptr inbounds [16 x double], ptr %33, i64 0, i64 7
  %770 = load double, ptr %769, align 8, !tbaa !11
  %771 = fcmp oge double %770, 0.000000e+00
  br i1 %771, label %772, label %775

772:                                              ; preds = %767
  %773 = getelementptr inbounds [16 x double], ptr %33, i64 0, i64 7
  %774 = load double, ptr %773, align 8, !tbaa !11
  br label %779

775:                                              ; preds = %767
  %776 = getelementptr inbounds [16 x double], ptr %33, i64 0, i64 7
  %777 = load double, ptr %776, align 8, !tbaa !11
  %778 = fneg double %777
  br label %779

779:                                              ; preds = %775, %772
  %780 = phi double [ %774, %772 ], [ %778, %775 ]
  store double %780, ptr %29, align 8, !tbaa !11
  %781 = load double, ptr %28, align 8, !tbaa !11
  %782 = load double, ptr %29, align 8, !tbaa !11
  %783 = fcmp oge double %781, %782
  br i1 %783, label %784, label %786

784:                                              ; preds = %779
  %785 = load double, ptr %28, align 8, !tbaa !11
  br label %788

786:                                              ; preds = %779
  %787 = load double, ptr %29, align 8, !tbaa !11
  br label %788

788:                                              ; preds = %786, %784
  %789 = phi double [ %785, %784 ], [ %787, %786 ]
  %790 = load double, ptr %51, align 8, !tbaa !11
  %791 = fcmp ogt double %789, %790
  br i1 %791, label %792, label %793

792:                                              ; preds = %788
  br label %1143

793:                                              ; preds = %788
  %794 = load ptr, ptr %13, align 8, !tbaa !5
  %795 = load i32, ptr %794, align 4, !tbaa !9
  %796 = load ptr, ptr %18, align 8, !tbaa !5
  %797 = load i32, ptr %796, align 4, !tbaa !9
  %798 = sub nsw i32 %795, %797
  %799 = add nsw i32 %798, 1
  store i32 %799, ptr %27, align 4, !tbaa !9
  %800 = getelementptr inbounds [3 x double], ptr %43, i64 0, i64 0
  %801 = load ptr, ptr %14, align 8, !tbaa !5
  %802 = load ptr, ptr %18, align 8, !tbaa !5
  %803 = load i32, ptr %802, align 4, !tbaa !9
  %804 = load ptr, ptr %18, align 8, !tbaa !5
  %805 = load i32, ptr %804, align 4, !tbaa !9
  %806 = load i32, ptr %25, align 4, !tbaa !9
  %807 = mul nsw i32 %805, %806
  %808 = add nsw i32 %803, %807
  %809 = sext i32 %808 to i64
  %810 = getelementptr inbounds double, ptr %801, i64 %809
  %811 = load ptr, ptr %15, align 8, !tbaa !5
  %812 = load ptr, ptr %21, align 8, !tbaa !5
  %813 = getelementptr inbounds double, ptr %812, i64 1
  call void @dlarfx_(ptr noundef @.str.4, ptr noundef @c__3, ptr noundef %27, ptr noundef %800, ptr noundef %59, ptr noundef %810, ptr noundef %811, ptr noundef %813)
  %814 = getelementptr inbounds [3 x double], ptr %43, i64 0, i64 0
  %815 = load ptr, ptr %14, align 8, !tbaa !5
  %816 = load ptr, ptr %18, align 8, !tbaa !5
  %817 = load i32, ptr %816, align 4, !tbaa !9
  %818 = load i32, ptr %25, align 4, !tbaa !9
  %819 = mul nsw i32 %817, %818
  %820 = add nsw i32 %819, 1
  %821 = sext i32 %820 to i64
  %822 = getelementptr inbounds double, ptr %815, i64 %821
  %823 = load ptr, ptr %15, align 8, !tbaa !5
  %824 = load ptr, ptr %21, align 8, !tbaa !5
  %825 = getelementptr inbounds double, ptr %824, i64 1
  call void @dlarfx_(ptr noundef @.str.5, ptr noundef %41, ptr noundef @c__3, ptr noundef %814, ptr noundef %59, ptr noundef %822, ptr noundef %823, ptr noundef %825)
  %826 = load ptr, ptr %13, align 8, !tbaa !5
  %827 = load i32, ptr %826, align 4, !tbaa !9
  %828 = load ptr, ptr %18, align 8, !tbaa !5
  %829 = load i32, ptr %828, align 4, !tbaa !9
  %830 = sub nsw i32 %827, %829
  %831 = add nsw i32 %830, 1
  store i32 %831, ptr %27, align 4, !tbaa !9
  %832 = getelementptr inbounds [3 x double], ptr %44, i64 0, i64 0
  %833 = load ptr, ptr %14, align 8, !tbaa !5
  %834 = load i32, ptr %39, align 4, !tbaa !9
  %835 = load ptr, ptr %18, align 8, !tbaa !5
  %836 = load i32, ptr %835, align 4, !tbaa !9
  %837 = load i32, ptr %25, align 4, !tbaa !9
  %838 = mul nsw i32 %836, %837
  %839 = add nsw i32 %834, %838
  %840 = sext i32 %839 to i64
  %841 = getelementptr inbounds double, ptr %833, i64 %840
  %842 = load ptr, ptr %15, align 8, !tbaa !5
  %843 = load ptr, ptr %21, align 8, !tbaa !5
  %844 = getelementptr inbounds double, ptr %843, i64 1
  call void @dlarfx_(ptr noundef @.str.4, ptr noundef @c__3, ptr noundef %27, ptr noundef %832, ptr noundef %60, ptr noundef %841, ptr noundef %842, ptr noundef %844)
  %845 = getelementptr inbounds [3 x double], ptr %44, i64 0, i64 0
  %846 = load ptr, ptr %14, align 8, !tbaa !5
  %847 = load i32, ptr %39, align 4, !tbaa !9
  %848 = load i32, ptr %25, align 4, !tbaa !9
  %849 = mul nsw i32 %847, %848
  %850 = add nsw i32 %849, 1
  %851 = sext i32 %850 to i64
  %852 = getelementptr inbounds double, ptr %846, i64 %851
  %853 = load ptr, ptr %15, align 8, !tbaa !5
  %854 = load ptr, ptr %21, align 8, !tbaa !5
  %855 = getelementptr inbounds double, ptr %854, i64 1
  call void @dlarfx_(ptr noundef @.str.5, ptr noundef %41, ptr noundef @c__3, ptr noundef %845, ptr noundef %60, ptr noundef %852, ptr noundef %853, ptr noundef %855)
  %856 = load ptr, ptr %14, align 8, !tbaa !5
  %857 = load i32, ptr %40, align 4, !tbaa !9
  %858 = load ptr, ptr %18, align 8, !tbaa !5
  %859 = load i32, ptr %858, align 4, !tbaa !9
  %860 = load i32, ptr %25, align 4, !tbaa !9
  %861 = mul nsw i32 %859, %860
  %862 = add nsw i32 %857, %861
  %863 = sext i32 %862 to i64
  %864 = getelementptr inbounds double, ptr %856, i64 %863
  store double 0.000000e+00, ptr %864, align 8, !tbaa !11
  %865 = load ptr, ptr %14, align 8, !tbaa !5
  %866 = load i32, ptr %40, align 4, !tbaa !9
  %867 = load i32, ptr %39, align 4, !tbaa !9
  %868 = load i32, ptr %25, align 4, !tbaa !9
  %869 = mul nsw i32 %867, %868
  %870 = add nsw i32 %866, %869
  %871 = sext i32 %870 to i64
  %872 = getelementptr inbounds double, ptr %865, i64 %871
  store double 0.000000e+00, ptr %872, align 8, !tbaa !11
  %873 = load ptr, ptr %14, align 8, !tbaa !5
  %874 = load i32, ptr %41, align 4, !tbaa !9
  %875 = load ptr, ptr %18, align 8, !tbaa !5
  %876 = load i32, ptr %875, align 4, !tbaa !9
  %877 = load i32, ptr %25, align 4, !tbaa !9
  %878 = mul nsw i32 %876, %877
  %879 = add nsw i32 %874, %878
  %880 = sext i32 %879 to i64
  %881 = getelementptr inbounds double, ptr %873, i64 %880
  store double 0.000000e+00, ptr %881, align 8, !tbaa !11
  %882 = load ptr, ptr %14, align 8, !tbaa !5
  %883 = load i32, ptr %41, align 4, !tbaa !9
  %884 = load i32, ptr %39, align 4, !tbaa !9
  %885 = load i32, ptr %25, align 4, !tbaa !9
  %886 = mul nsw i32 %884, %885
  %887 = add nsw i32 %883, %886
  %888 = sext i32 %887 to i64
  %889 = getelementptr inbounds double, ptr %882, i64 %888
  store double 0.000000e+00, ptr %889, align 8, !tbaa !11
  %890 = load ptr, ptr %12, align 8, !tbaa !5
  %891 = load i32, ptr %890, align 4, !tbaa !9
  %892 = icmp ne i32 %891, 0
  br i1 %892, label %893, label %919

893:                                              ; preds = %793
  %894 = load ptr, ptr %13, align 8, !tbaa !5
  %895 = getelementptr inbounds [3 x double], ptr %43, i64 0, i64 0
  %896 = load ptr, ptr %16, align 8, !tbaa !5
  %897 = load ptr, ptr %18, align 8, !tbaa !5
  %898 = load i32, ptr %897, align 4, !tbaa !9
  %899 = load i32, ptr %23, align 4, !tbaa !9
  %900 = mul nsw i32 %898, %899
  %901 = add nsw i32 %900, 1
  %902 = sext i32 %901 to i64
  %903 = getelementptr inbounds double, ptr %896, i64 %902
  %904 = load ptr, ptr %17, align 8, !tbaa !5
  %905 = load ptr, ptr %21, align 8, !tbaa !5
  %906 = getelementptr inbounds double, ptr %905, i64 1
  call void @dlarfx_(ptr noundef @.str.5, ptr noundef %894, ptr noundef @c__3, ptr noundef %895, ptr noundef %59, ptr noundef %903, ptr noundef %904, ptr noundef %906)
  %907 = load ptr, ptr %13, align 8, !tbaa !5
  %908 = getelementptr inbounds [3 x double], ptr %44, i64 0, i64 0
  %909 = load ptr, ptr %16, align 8, !tbaa !5
  %910 = load i32, ptr %39, align 4, !tbaa !9
  %911 = load i32, ptr %23, align 4, !tbaa !9
  %912 = mul nsw i32 %910, %911
  %913 = add nsw i32 %912, 1
  %914 = sext i32 %913 to i64
  %915 = getelementptr inbounds double, ptr %909, i64 %914
  %916 = load ptr, ptr %17, align 8, !tbaa !5
  %917 = load ptr, ptr %21, align 8, !tbaa !5
  %918 = getelementptr inbounds double, ptr %917, i64 1
  call void @dlarfx_(ptr noundef @.str.5, ptr noundef %907, ptr noundef @c__3, ptr noundef %908, ptr noundef %60, ptr noundef %915, ptr noundef %916, ptr noundef %918)
  br label %919

919:                                              ; preds = %893, %793
  br label %920

920:                                              ; preds = %919, %654, %487
  %921 = load ptr, ptr %20, align 8, !tbaa !5
  %922 = load i32, ptr %921, align 4, !tbaa !9
  %923 = icmp eq i32 %922, 2
  br i1 %923, label %924, label %1029

924:                                              ; preds = %920
  %925 = load ptr, ptr %14, align 8, !tbaa !5
  %926 = load ptr, ptr %18, align 8, !tbaa !5
  %927 = load i32, ptr %926, align 4, !tbaa !9
  %928 = load ptr, ptr %18, align 8, !tbaa !5
  %929 = load i32, ptr %928, align 4, !tbaa !9
  %930 = load i32, ptr %25, align 4, !tbaa !9
  %931 = mul nsw i32 %929, %930
  %932 = add nsw i32 %927, %931
  %933 = sext i32 %932 to i64
  %934 = getelementptr inbounds double, ptr %925, i64 %933
  %935 = load ptr, ptr %14, align 8, !tbaa !5
  %936 = load ptr, ptr %18, align 8, !tbaa !5
  %937 = load i32, ptr %936, align 4, !tbaa !9
  %938 = load i32, ptr %39, align 4, !tbaa !9
  %939 = load i32, ptr %25, align 4, !tbaa !9
  %940 = mul nsw i32 %938, %939
  %941 = add nsw i32 %937, %940
  %942 = sext i32 %941 to i64
  %943 = getelementptr inbounds double, ptr %935, i64 %942
  %944 = load ptr, ptr %14, align 8, !tbaa !5
  %945 = load i32, ptr %39, align 4, !tbaa !9
  %946 = load ptr, ptr %18, align 8, !tbaa !5
  %947 = load i32, ptr %946, align 4, !tbaa !9
  %948 = load i32, ptr %25, align 4, !tbaa !9
  %949 = mul nsw i32 %947, %948
  %950 = add nsw i32 %945, %949
  %951 = sext i32 %950 to i64
  %952 = getelementptr inbounds double, ptr %944, i64 %951
  %953 = load ptr, ptr %14, align 8, !tbaa !5
  %954 = load i32, ptr %39, align 4, !tbaa !9
  %955 = load i32, ptr %39, align 4, !tbaa !9
  %956 = load i32, ptr %25, align 4, !tbaa !9
  %957 = mul nsw i32 %955, %956
  %958 = add nsw i32 %954, %957
  %959 = sext i32 %958 to i64
  %960 = getelementptr inbounds double, ptr %953, i64 %959
  call void @dlanv2_(ptr noundef %934, ptr noundef %943, ptr noundef %952, ptr noundef %960, ptr noundef %55, ptr noundef %53, ptr noundef %56, ptr noundef %54, ptr noundef %46, ptr noundef %50)
  %961 = load ptr, ptr %13, align 8, !tbaa !5
  %962 = load i32, ptr %961, align 4, !tbaa !9
  %963 = load ptr, ptr %18, align 8, !tbaa !5
  %964 = load i32, ptr %963, align 4, !tbaa !9
  %965 = sub nsw i32 %962, %964
  %966 = sub nsw i32 %965, 1
  store i32 %966, ptr %27, align 4, !tbaa !9
  %967 = load ptr, ptr %14, align 8, !tbaa !5
  %968 = load ptr, ptr %18, align 8, !tbaa !5
  %969 = load i32, ptr %968, align 4, !tbaa !9
  %970 = load ptr, ptr %18, align 8, !tbaa !5
  %971 = load i32, ptr %970, align 4, !tbaa !9
  %972 = add nsw i32 %971, 2
  %973 = load i32, ptr %25, align 4, !tbaa !9
  %974 = mul nsw i32 %972, %973
  %975 = add nsw i32 %969, %974
  %976 = sext i32 %975 to i64
  %977 = getelementptr inbounds double, ptr %967, i64 %976
  %978 = load ptr, ptr %15, align 8, !tbaa !5
  %979 = load ptr, ptr %14, align 8, !tbaa !5
  %980 = load i32, ptr %39, align 4, !tbaa !9
  %981 = load ptr, ptr %18, align 8, !tbaa !5
  %982 = load i32, ptr %981, align 4, !tbaa !9
  %983 = add nsw i32 %982, 2
  %984 = load i32, ptr %25, align 4, !tbaa !9
  %985 = mul nsw i32 %983, %984
  %986 = add nsw i32 %980, %985
  %987 = sext i32 %986 to i64
  %988 = getelementptr inbounds double, ptr %979, i64 %987
  %989 = load ptr, ptr %15, align 8, !tbaa !5
  call void @drot_(ptr noundef %27, ptr noundef %977, ptr noundef %978, ptr noundef %988, ptr noundef %989, ptr noundef %46, ptr noundef %50)
  %990 = load ptr, ptr %18, align 8, !tbaa !5
  %991 = load i32, ptr %990, align 4, !tbaa !9
  %992 = sub nsw i32 %991, 1
  store i32 %992, ptr %27, align 4, !tbaa !9
  %993 = load ptr, ptr %14, align 8, !tbaa !5
  %994 = load ptr, ptr %18, align 8, !tbaa !5
  %995 = load i32, ptr %994, align 4, !tbaa !9
  %996 = load i32, ptr %25, align 4, !tbaa !9
  %997 = mul nsw i32 %995, %996
  %998 = add nsw i32 %997, 1
  %999 = sext i32 %998 to i64
  %1000 = getelementptr inbounds double, ptr %993, i64 %999
  %1001 = load ptr, ptr %14, align 8, !tbaa !5
  %1002 = load i32, ptr %39, align 4, !tbaa !9
  %1003 = load i32, ptr %25, align 4, !tbaa !9
  %1004 = mul nsw i32 %1002, %1003
  %1005 = add nsw i32 %1004, 1
  %1006 = sext i32 %1005 to i64
  %1007 = getelementptr inbounds double, ptr %1001, i64 %1006
  call void @drot_(ptr noundef %27, ptr noundef %1000, ptr noundef @c__1, ptr noundef %1007, ptr noundef @c__1, ptr noundef %46, ptr noundef %50)
  %1008 = load ptr, ptr %12, align 8, !tbaa !5
  %1009 = load i32, ptr %1008, align 4, !tbaa !9
  %1010 = icmp ne i32 %1009, 0
  br i1 %1010, label %1011, label %1028

1011:                                             ; preds = %924
  %1012 = load ptr, ptr %13, align 8, !tbaa !5
  %1013 = load ptr, ptr %16, align 8, !tbaa !5
  %1014 = load ptr, ptr %18, align 8, !tbaa !5
  %1015 = load i32, ptr %1014, align 4, !tbaa !9
  %1016 = load i32, ptr %23, align 4, !tbaa !9
  %1017 = mul nsw i32 %1015, %1016
  %1018 = add nsw i32 %1017, 1
  %1019 = sext i32 %1018 to i64
  %1020 = getelementptr inbounds double, ptr %1013, i64 %1019
  %1021 = load ptr, ptr %16, align 8, !tbaa !5
  %1022 = load i32, ptr %39, align 4, !tbaa !9
  %1023 = load i32, ptr %23, align 4, !tbaa !9
  %1024 = mul nsw i32 %1022, %1023
  %1025 = add nsw i32 %1024, 1
  %1026 = sext i32 %1025 to i64
  %1027 = getelementptr inbounds double, ptr %1021, i64 %1026
  call void @drot_(ptr noundef %1012, ptr noundef %1020, ptr noundef @c__1, ptr noundef %1027, ptr noundef @c__1, ptr noundef %46, ptr noundef %50)
  br label %1028

1028:                                             ; preds = %1011, %924
  br label %1029

1029:                                             ; preds = %1028, %920
  %1030 = load ptr, ptr %19, align 8, !tbaa !5
  %1031 = load i32, ptr %1030, align 4, !tbaa !9
  %1032 = icmp eq i32 %1031, 2
  br i1 %1032, label %1033, label %1141

1033:                                             ; preds = %1029
  %1034 = load ptr, ptr %18, align 8, !tbaa !5
  %1035 = load i32, ptr %1034, align 4, !tbaa !9
  %1036 = load ptr, ptr %20, align 8, !tbaa !5
  %1037 = load i32, ptr %1036, align 4, !tbaa !9
  %1038 = add nsw i32 %1035, %1037
  store i32 %1038, ptr %40, align 4, !tbaa !9
  %1039 = load i32, ptr %40, align 4, !tbaa !9
  %1040 = add nsw i32 %1039, 1
  store i32 %1040, ptr %41, align 4, !tbaa !9
  %1041 = load ptr, ptr %14, align 8, !tbaa !5
  %1042 = load i32, ptr %40, align 4, !tbaa !9
  %1043 = load i32, ptr %40, align 4, !tbaa !9
  %1044 = load i32, ptr %25, align 4, !tbaa !9
  %1045 = mul nsw i32 %1043, %1044
  %1046 = add nsw i32 %1042, %1045
  %1047 = sext i32 %1046 to i64
  %1048 = getelementptr inbounds double, ptr %1041, i64 %1047
  %1049 = load ptr, ptr %14, align 8, !tbaa !5
  %1050 = load i32, ptr %40, align 4, !tbaa !9
  %1051 = load i32, ptr %41, align 4, !tbaa !9
  %1052 = load i32, ptr %25, align 4, !tbaa !9
  %1053 = mul nsw i32 %1051, %1052
  %1054 = add nsw i32 %1050, %1053
  %1055 = sext i32 %1054 to i64
  %1056 = getelementptr inbounds double, ptr %1049, i64 %1055
  %1057 = load ptr, ptr %14, align 8, !tbaa !5
  %1058 = load i32, ptr %41, align 4, !tbaa !9
  %1059 = load i32, ptr %40, align 4, !tbaa !9
  %1060 = load i32, ptr %25, align 4, !tbaa !9
  %1061 = mul nsw i32 %1059, %1060
  %1062 = add nsw i32 %1058, %1061
  %1063 = sext i32 %1062 to i64
  %1064 = getelementptr inbounds double, ptr %1057, i64 %1063
  %1065 = load ptr, ptr %14, align 8, !tbaa !5
  %1066 = load i32, ptr %41, align 4, !tbaa !9
  %1067 = load i32, ptr %41, align 4, !tbaa !9
  %1068 = load i32, ptr %25, align 4, !tbaa !9
  %1069 = mul nsw i32 %1067, %1068
  %1070 = add nsw i32 %1066, %1069
  %1071 = sext i32 %1070 to i64
  %1072 = getelementptr inbounds double, ptr %1065, i64 %1071
  call void @dlanv2_(ptr noundef %1048, ptr noundef %1056, ptr noundef %1064, ptr noundef %1072, ptr noundef %55, ptr noundef %53, ptr noundef %56, ptr noundef %54, ptr noundef %46, ptr noundef %50)
  %1073 = load i32, ptr %40, align 4, !tbaa !9
  %1074 = add nsw i32 %1073, 2
  %1075 = load ptr, ptr %13, align 8, !tbaa !5
  %1076 = load i32, ptr %1075, align 4, !tbaa !9
  %1077 = icmp sle i32 %1074, %1076
  br i1 %1077, label %1078, label %1104

1078:                                             ; preds = %1033
  %1079 = load ptr, ptr %13, align 8, !tbaa !5
  %1080 = load i32, ptr %1079, align 4, !tbaa !9
  %1081 = load i32, ptr %40, align 4, !tbaa !9
  %1082 = sub nsw i32 %1080, %1081
  %1083 = sub nsw i32 %1082, 1
  store i32 %1083, ptr %27, align 4, !tbaa !9
  %1084 = load ptr, ptr %14, align 8, !tbaa !5
  %1085 = load i32, ptr %40, align 4, !tbaa !9
  %1086 = load i32, ptr %40, align 4, !tbaa !9
  %1087 = add nsw i32 %1086, 2
  %1088 = load i32, ptr %25, align 4, !tbaa !9
  %1089 = mul nsw i32 %1087, %1088
  %1090 = add nsw i32 %1085, %1089
  %1091 = sext i32 %1090 to i64
  %1092 = getelementptr inbounds double, ptr %1084, i64 %1091
  %1093 = load ptr, ptr %15, align 8, !tbaa !5
  %1094 = load ptr, ptr %14, align 8, !tbaa !5
  %1095 = load i32, ptr %41, align 4, !tbaa !9
  %1096 = load i32, ptr %40, align 4, !tbaa !9
  %1097 = add nsw i32 %1096, 2
  %1098 = load i32, ptr %25, align 4, !tbaa !9
  %1099 = mul nsw i32 %1097, %1098
  %1100 = add nsw i32 %1095, %1099
  %1101 = sext i32 %1100 to i64
  %1102 = getelementptr inbounds double, ptr %1094, i64 %1101
  %1103 = load ptr, ptr %15, align 8, !tbaa !5
  call void @drot_(ptr noundef %27, ptr noundef %1092, ptr noundef %1093, ptr noundef %1102, ptr noundef %1103, ptr noundef %46, ptr noundef %50)
  br label %1104

1104:                                             ; preds = %1078, %1033
  %1105 = load i32, ptr %40, align 4, !tbaa !9
  %1106 = sub nsw i32 %1105, 1
  store i32 %1106, ptr %27, align 4, !tbaa !9
  %1107 = load ptr, ptr %14, align 8, !tbaa !5
  %1108 = load i32, ptr %40, align 4, !tbaa !9
  %1109 = load i32, ptr %25, align 4, !tbaa !9
  %1110 = mul nsw i32 %1108, %1109
  %1111 = add nsw i32 %1110, 1
  %1112 = sext i32 %1111 to i64
  %1113 = getelementptr inbounds double, ptr %1107, i64 %1112
  %1114 = load ptr, ptr %14, align 8, !tbaa !5
  %1115 = load i32, ptr %41, align 4, !tbaa !9
  %1116 = load i32, ptr %25, align 4, !tbaa !9
  %1117 = mul nsw i32 %1115, %1116
  %1118 = add nsw i32 %1117, 1
  %1119 = sext i32 %1118 to i64
  %1120 = getelementptr inbounds double, ptr %1114, i64 %1119
  call void @drot_(ptr noundef %27, ptr noundef %1113, ptr noundef @c__1, ptr noundef %1120, ptr noundef @c__1, ptr noundef %46, ptr noundef %50)
  %1121 = load ptr, ptr %12, align 8, !tbaa !5
  %1122 = load i32, ptr %1121, align 4, !tbaa !9
  %1123 = icmp ne i32 %1122, 0
  br i1 %1123, label %1124, label %1140

1124:                                             ; preds = %1104
  %1125 = load ptr, ptr %13, align 8, !tbaa !5
  %1126 = load ptr, ptr %16, align 8, !tbaa !5
  %1127 = load i32, ptr %40, align 4, !tbaa !9
  %1128 = load i32, ptr %23, align 4, !tbaa !9
  %1129 = mul nsw i32 %1127, %1128
  %1130 = add nsw i32 %1129, 1
  %1131 = sext i32 %1130 to i64
  %1132 = getelementptr inbounds double, ptr %1126, i64 %1131
  %1133 = load ptr, ptr %16, align 8, !tbaa !5
  %1134 = load i32, ptr %41, align 4, !tbaa !9
  %1135 = load i32, ptr %23, align 4, !tbaa !9
  %1136 = mul nsw i32 %1134, %1135
  %1137 = add nsw i32 %1136, 1
  %1138 = sext i32 %1137 to i64
  %1139 = getelementptr inbounds double, ptr %1133, i64 %1138
  call void @drot_(ptr noundef %1125, ptr noundef %1132, ptr noundef @c__1, ptr noundef %1139, ptr noundef @c__1, ptr noundef %46, ptr noundef %50)
  br label %1140

1140:                                             ; preds = %1124, %1104
  br label %1141

1141:                                             ; preds = %1140, %1029
  br label %1142

1142:                                             ; preds = %1141, %246
  store i32 1, ptr %61, align 4
  br label %1145

1143:                                             ; preds = %792, %576, %410
  %1144 = load ptr, ptr %22, align 8, !tbaa !5
  store i32 1, ptr %1144, align 4, !tbaa !9
  store i32 1, ptr %61, align 4
  br label %1145

1145:                                             ; preds = %1143, %1142, %106, %96
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 24, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 24, ptr %43) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #4
  call void @llvm.lifetime.end.p0(i64 24, ptr %35) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #4
  call void @llvm.lifetime.end.p0(i64 128, ptr %33) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #4
  ret void
}

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

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

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

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

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

declare double @dlamch_(ptr noundef) #2

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

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

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

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

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

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

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

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

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


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

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

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

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

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

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

54:                                               ; preds = %50
  %55 = add nsw i32 %51, 1
  store i32 %55, ptr %20, align 4, !tbaa !5
  %56 = add nsw i32 %51, 2
  store i32 %56, ptr %21, align 4, !tbaa !5
  %57 = add nsw i32 %51, 3
  store i32 %57, ptr %22, align 4, !tbaa !5
  %58 = icmp eq i32 %45, 1
  %59 = icmp eq i32 %48, 1
  %or.cond = and i1 %58, %59
  br i1 %or.cond, label %60, label %111

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

76:                                               ; preds = %60
  %77 = load i32, ptr %6, align 4, !tbaa !5
  %78 = xor i32 %77, -1
  %79 = add i32 %75, %78
  store i32 %79, ptr %12, align 4, !tbaa !5
  %80 = mul nsw i32 %56, %36
  %81 = add nsw i32 %77, %80
  %82 = sext i32 %81 to i64
  %83 = getelementptr inbounds double, ptr %38, i64 %82
  %84 = add nsw i32 %55, %80
  %85 = sext i32 %84 to i64
  %86 = getelementptr inbounds double, ptr %38, i64 %85
  call void @drot_(ptr noundef nonnull %12, ptr noundef %83, ptr noundef nonnull %3, ptr noundef %86, ptr noundef nonnull %3, ptr noundef nonnull %27, ptr noundef nonnull %28) #4
  br label %87

87:                                               ; preds = %76, %60
  %88 = load i32, ptr %6, align 4, !tbaa !5
  %89 = add nsw i32 %88, -1
  store i32 %89, ptr %12, align 4, !tbaa !5
  %90 = mul nsw i32 %88, %36
  %91 = sext i32 %90 to i64
  %92 = getelementptr double, ptr %38, i64 %91
  %93 = getelementptr i8, ptr %92, i64 8
  %94 = sext i32 %71 to i64
  %95 = getelementptr double, ptr %38, i64 %94
  %96 = getelementptr i8, ptr %95, i64 8
  call void @drot_(ptr noundef nonnull %12, ptr noundef %93, ptr noundef nonnull @c__1, ptr noundef %96, ptr noundef nonnull @c__1, ptr noundef nonnull %27, ptr noundef nonnull %28) #4
  %97 = load i32, ptr %6, align 4, !tbaa !5
  %98 = mul i32 %97, %61
  %99 = sext i32 %98 to i64
  %100 = getelementptr inbounds double, ptr %38, i64 %99
  store double %69, ptr %100, align 8, !tbaa !9
  store double %65, ptr %68, align 8, !tbaa !9
  %101 = load i32, ptr %0, align 4, !tbaa !5
  %.not306 = icmp eq i32 %101, 0
  br i1 %.not306, label %479, label %102

102:                                              ; preds = %87
  %103 = mul nsw i32 %97, %39
  %104 = sext i32 %103 to i64
  %105 = getelementptr double, ptr %41, i64 %104
  %106 = getelementptr i8, ptr %105, i64 8
  %107 = mul nsw i32 %55, %39
  %108 = sext i32 %107 to i64
  %109 = getelementptr double, ptr %41, i64 %108
  %110 = getelementptr i8, ptr %109, i64 8
  call void @drot_(ptr noundef nonnull %1, ptr noundef %106, ptr noundef nonnull @c__1, ptr noundef %110, ptr noundef nonnull @c__1, ptr noundef nonnull %27, ptr noundef nonnull %28) #4
  br label %479

111:                                              ; preds = %54
  %112 = add nsw i32 %48, %45
  store i32 %112, ptr %26, align 4, !tbaa !5
  %113 = add i32 %36, 1
  %114 = mul i32 %51, %113
  %115 = sext i32 %114 to i64
  %116 = getelementptr inbounds double, ptr %38, i64 %115
  call void @dlacpy_(ptr noundef nonnull @.str, ptr noundef nonnull %26, ptr noundef nonnull %26, ptr noundef %116, ptr noundef nonnull %3, ptr noundef nonnull %16, ptr noundef nonnull @c__4) #4
  %117 = call double @dlange_(ptr noundef nonnull @.str.1, ptr noundef nonnull %26, ptr noundef nonnull %26, ptr noundef nonnull %16, ptr noundef nonnull @c__4, ptr noundef %9) #4
  %118 = call double @dlamch_(ptr noundef nonnull @.str.2) #4
  %119 = call double @dlamch_(ptr noundef nonnull @.str.3) #4
  %120 = fdiv double %119, %118
  %121 = fmul double %118, 1.000000e+01
  %122 = fmul double %117, %121
  %123 = fcmp oge double %122, %120
  %124 = select i1 %123, double %122, double %120
  %125 = load i32, ptr %7, align 4, !tbaa !5
  %126 = add nsw i32 %125, 1
  %127 = shl i32 %126, 2
  %128 = mul i32 %126, 5
  %129 = add nsw i32 %128, -5
  %130 = sext i32 %129 to i64
  %131 = getelementptr inbounds [16 x double], ptr %16, i64 0, i64 %130
  %132 = add nsw i32 %127, -4
  %133 = sext i32 %132 to i64
  %134 = getelementptr inbounds [16 x double], ptr %16, i64 0, i64 %133
  call void @dlasy2_(ptr noundef nonnull @c_false, ptr noundef nonnull @c_false, ptr noundef nonnull @c_n1, ptr noundef nonnull %7, ptr noundef nonnull %8, ptr noundef nonnull %16, ptr noundef nonnull @c__4, ptr noundef nonnull %131, ptr noundef nonnull @c__4, ptr noundef nonnull %134, ptr noundef nonnull @c__4, ptr noundef nonnull %18, ptr noundef nonnull %19, ptr noundef nonnull @c__2, ptr noundef nonnull %23, ptr noundef nonnull %14) #4
  %135 = load i32, ptr %7, align 4, !tbaa !5
  %136 = shl nsw i32 %135, 1
  %137 = load i32, ptr %8, align 4, !tbaa !5
  %138 = add nsw i32 %136, %137
  switch i32 %138, label %139 [
    i32 6, label %262
    i32 5, label %204
  ]

139:                                              ; preds = %111
  %140 = load double, ptr %18, align 8, !tbaa !9
  store double %140, ptr %17, align 16, !tbaa !9
  %141 = load double, ptr %19, align 16, !tbaa !9
  %142 = getelementptr inbounds i8, ptr %17, i64 8
  store double %141, ptr %142, align 8, !tbaa !9
  %143 = getelementptr inbounds i8, ptr %19, i64 16
  %144 = load double, ptr %143, align 16, !tbaa !9
  %145 = getelementptr inbounds i8, ptr %17, i64 16
  store double %144, ptr %145, align 16, !tbaa !9
  call void @dlarfg_(ptr noundef nonnull @c__3, ptr noundef nonnull %145, ptr noundef nonnull %17, ptr noundef nonnull @c__1, ptr noundef nonnull %33) #4
  store double 1.000000e+00, ptr %145, align 16, !tbaa !9
  %146 = load i32, ptr %6, align 4, !tbaa !5
  %147 = mul i32 %146, %113
  %148 = sext i32 %147 to i64
  %149 = getelementptr inbounds double, ptr %38, i64 %148
  %150 = load double, ptr %149, align 8, !tbaa !9
  call void @dlarfx_(ptr noundef nonnull @.str.4, ptr noundef nonnull @c__3, ptr noundef nonnull @c__3, ptr noundef nonnull %17, ptr noundef nonnull %33, ptr noundef nonnull %16, ptr noundef nonnull @c__4, ptr noundef %9) #4
  call void @dlarfx_(ptr noundef nonnull @.str.5, ptr noundef nonnull @c__3, ptr noundef nonnull @c__3, ptr noundef nonnull %17, ptr noundef nonnull %33, ptr noundef nonnull %16, ptr noundef nonnull @c__4, ptr noundef %9) #4
  %151 = getelementptr inbounds i8, ptr %16, i64 16
  %152 = load double, ptr %151, align 16
  %153 = fcmp oge double %152, 0.000000e+00
  %154 = fneg double %152
  %155 = select i1 %153, double %152, double %154
  %156 = getelementptr inbounds i8, ptr %16, i64 48
  %157 = load double, ptr %156, align 16
  %158 = fcmp oge double %157, 0.000000e+00
  %159 = fneg double %157
  %160 = select i1 %158, double %157, double %159
  %161 = fcmp oge double %155, %160
  %162 = select i1 %161, double %155, double %160
  %163 = getelementptr inbounds i8, ptr %16, i64 80
  %164 = load double, ptr %163, align 16, !tbaa !9
  %165 = fsub double %164, %150
  %166 = fcmp oge double %165, 0.000000e+00
  %167 = fneg double %165
  %168 = select i1 %166, double %165, double %167
  %169 = fcmp oge double %162, %168
  %170 = select i1 %169, double %162, double %168
  %171 = fcmp ogt double %170, %124
  br i1 %171, label %478, label %172

172:                                              ; preds = %139
  %173 = load i32, ptr %1, align 4, !tbaa !5
  %174 = load i32, ptr %6, align 4, !tbaa !5
  %175 = add i32 %173, 1
  %176 = sub i32 %175, %174
  store i32 %176, ptr %12, align 4, !tbaa !5
  %177 = mul i32 %174, %113
  %178 = sext i32 %177 to i64
  %179 = getelementptr inbounds double, ptr %38, i64 %178
  call void @dlarfx_(ptr noundef nonnull @.str.4, ptr noundef nonnull @c__3, ptr noundef nonnull %12, ptr noundef nonnull %17, ptr noundef nonnull %33, ptr noundef %179, ptr noundef nonnull %3, ptr noundef %9) #4
  %180 = load i32, ptr %6, align 4, !tbaa !5
  %181 = mul nsw i32 %180, %36
  %182 = sext i32 %181 to i64
  %183 = getelementptr double, ptr %38, i64 %182
  %184 = getelementptr i8, ptr %183, i64 8
  call void @dlarfx_(ptr noundef nonnull @.str.5, ptr noundef nonnull %20, ptr noundef nonnull @c__3, ptr noundef nonnull %17, ptr noundef nonnull %33, ptr noundef %184, ptr noundef nonnull %3, ptr noundef %9) #4
  %185 = load i32, ptr %6, align 4, !tbaa !5
  %186 = mul nsw i32 %185, %36
  %187 = add nsw i32 %186, %56
  %188 = sext i32 %187 to i64
  %189 = getelementptr inbounds double, ptr %38, i64 %188
  store double 0.000000e+00, ptr %189, align 8, !tbaa !9
  %190 = load i32, ptr %20, align 4, !tbaa !5
  %191 = mul nsw i32 %190, %36
  %192 = add nsw i32 %191, %56
  %193 = sext i32 %192 to i64
  %194 = getelementptr inbounds double, ptr %38, i64 %193
  store double 0.000000e+00, ptr %194, align 8, !tbaa !9
  %195 = mul i32 %56, %113
  %196 = sext i32 %195 to i64
  %197 = getelementptr inbounds double, ptr %38, i64 %196
  store double %150, ptr %197, align 8, !tbaa !9
  %198 = load i32, ptr %0, align 4, !tbaa !5
  %.not301 = icmp eq i32 %198, 0
  br i1 %.not301, label %362, label %199

199:                                              ; preds = %172
  %200 = mul nsw i32 %185, %39
  %201 = sext i32 %200 to i64
  %202 = getelementptr double, ptr %41, i64 %201
  %203 = getelementptr i8, ptr %202, i64 8
  call void @dlarfx_(ptr noundef nonnull @.str.5, ptr noundef nonnull %1, ptr noundef nonnull @c__3, ptr noundef nonnull %17, ptr noundef nonnull %33, ptr noundef %203, ptr noundef nonnull %5, ptr noundef %9) #4
  br label %362

204:                                              ; preds = %111
  %205 = getelementptr inbounds i8, ptr %17, i64 8
  %206 = load <2 x double>, ptr %19, align 16, !tbaa !9
  %207 = fneg <2 x double> %206
  store <2 x double> %207, ptr %17, align 16, !tbaa !9
  %208 = load double, ptr %18, align 8, !tbaa !9
  %209 = getelementptr inbounds i8, ptr %17, i64 16
  store double %208, ptr %209, align 16, !tbaa !9
  call void @dlarfg_(ptr noundef nonnull @c__3, ptr noundef nonnull %17, ptr noundef nonnull %205, ptr noundef nonnull @c__1, ptr noundef nonnull %33) #4
  store double 1.000000e+00, ptr %17, align 16, !tbaa !9
  %210 = mul i32 %56, %113
  %211 = sext i32 %210 to i64
  %212 = getelementptr inbounds double, ptr %38, i64 %211
  %213 = load double, ptr %212, align 8, !tbaa !9
  call void @dlarfx_(ptr noundef nonnull @.str.4, ptr noundef nonnull @c__3, ptr noundef nonnull @c__3, ptr noundef nonnull %17, ptr noundef nonnull %33, ptr noundef nonnull %16, ptr noundef nonnull @c__4, ptr noundef %9) #4
  call void @dlarfx_(ptr noundef nonnull @.str.5, ptr noundef nonnull @c__3, ptr noundef nonnull @c__3, ptr noundef nonnull %17, ptr noundef nonnull %33, ptr noundef nonnull %16, ptr noundef nonnull @c__4, ptr noundef %9) #4
  %214 = getelementptr inbounds i8, ptr %16, i64 8
  %215 = load <2 x double>, ptr %214, align 8
  %216 = fcmp oge <2 x double> %215, zeroinitializer
  %217 = fneg <2 x double> %215
  %218 = select <2 x i1> %216, <2 x double> %215, <2 x double> %217
  %219 = extractelement <2 x double> %218, i64 0
  %220 = extractelement <2 x double> %218, i64 1
  %221 = fcmp oge double %219, %220
  %222 = select i1 %221, double %219, double %220
  %223 = load double, ptr %16, align 16, !tbaa !9
  %224 = fsub double %223, %213
  %225 = fcmp oge double %224, 0.000000e+00
  %226 = fneg double %224
  %227 = select i1 %225, double %224, double %226
  %228 = fcmp oge double %222, %227
  %229 = select i1 %228, double %222, double %227
  %230 = fcmp ogt double %229, %124
  br i1 %230, label %478, label %231

231:                                              ; preds = %204
  %232 = load i32, ptr %6, align 4, !tbaa !5
  %233 = mul nsw i32 %232, %36
  %234 = sext i32 %233 to i64
  %235 = getelementptr double, ptr %38, i64 %234
  %236 = getelementptr i8, ptr %235, i64 8
  call void @dlarfx_(ptr noundef nonnull @.str.5, ptr noundef nonnull %21, ptr noundef nonnull @c__3, ptr noundef nonnull %17, ptr noundef nonnull %33, ptr noundef %236, ptr noundef nonnull %3, ptr noundef %9) #4
  %237 = load i32, ptr %1, align 4, !tbaa !5
  %238 = load i32, ptr %6, align 4, !tbaa !5
  %239 = sub nsw i32 %237, %238
  store i32 %239, ptr %12, align 4, !tbaa !5
  %240 = mul nsw i32 %55, %36
  %241 = add nsw i32 %240, %238
  %242 = sext i32 %241 to i64
  %243 = getelementptr inbounds double, ptr %38, i64 %242
  call void @dlarfx_(ptr noundef nonnull @.str.4, ptr noundef nonnull @c__3, ptr noundef nonnull %12, ptr noundef nonnull %17, ptr noundef nonnull %33, ptr noundef %243, ptr noundef nonnull %3, ptr noundef %9) #4
  %244 = load i32, ptr %6, align 4, !tbaa !5
  %245 = mul i32 %244, %113
  %246 = sext i32 %245 to i64
  %247 = getelementptr inbounds double, ptr %38, i64 %246
  store double %213, ptr %247, align 8, !tbaa !9
  %248 = mul nsw i32 %244, %36
  %249 = add nsw i32 %55, %248
  %250 = sext i32 %249 to i64
  %251 = getelementptr inbounds double, ptr %38, i64 %250
  store double 0.000000e+00, ptr %251, align 8, !tbaa !9
  %252 = load i32, ptr %21, align 4, !tbaa !5
  %253 = add nsw i32 %252, %248
  %254 = sext i32 %253 to i64
  %255 = getelementptr inbounds double, ptr %38, i64 %254
  store double 0.000000e+00, ptr %255, align 8, !tbaa !9
  %256 = load i32, ptr %0, align 4, !tbaa !5
  %.not = icmp eq i32 %256, 0
  br i1 %.not, label %362, label %257

257:                                              ; preds = %231
  %258 = mul nsw i32 %244, %39
  %259 = sext i32 %258 to i64
  %260 = getelementptr double, ptr %41, i64 %259
  %261 = getelementptr i8, ptr %260, i64 8
  call void @dlarfx_(ptr noundef nonnull @.str.5, ptr noundef nonnull %1, ptr noundef nonnull @c__3, ptr noundef nonnull %17, ptr noundef nonnull %33, ptr noundef %261, ptr noundef nonnull %5, ptr noundef %9) #4
  br label %362

262:                                              ; preds = %111
  %263 = getelementptr inbounds i8, ptr %24, i64 8
  %264 = load <2 x double>, ptr %19, align 16, !tbaa !9
  %265 = fneg <2 x double> %264
  store <2 x double> %265, ptr %24, align 16, !tbaa !9
  %266 = load double, ptr %18, align 8, !tbaa !9
  %267 = getelementptr inbounds i8, ptr %24, i64 16
  store double %266, ptr %267, align 16, !tbaa !9
  call void @dlarfg_(ptr noundef nonnull @c__3, ptr noundef nonnull %24, ptr noundef nonnull %263, ptr noundef nonnull @c__1, ptr noundef nonnull %34) #4
  store double 1.000000e+00, ptr %24, align 16, !tbaa !9
  %268 = load double, ptr %34, align 8, !tbaa !9
  %269 = getelementptr inbounds i8, ptr %19, i64 16
  %270 = load double, ptr %269, align 16, !tbaa !9
  %271 = load double, ptr %263, align 8, !tbaa !9
  %272 = getelementptr inbounds i8, ptr %19, i64 24
  %273 = load double, ptr %272, align 8, !tbaa !9
  %274 = call double @llvm.fmuladd.f64(double %271, double %273, double %270)
  %275 = fmul double %274, %268
  %276 = fneg double %273
  %277 = call double @llvm.fmuladd.f64(double %275, double %271, double %276)
  store double %277, ptr %25, align 16, !tbaa !9
  %278 = load double, ptr %267, align 16, !tbaa !9
  %279 = fmul double %278, %275
  %280 = getelementptr inbounds i8, ptr %25, i64 8
  store double %279, ptr %280, align 8, !tbaa !9
  %281 = load double, ptr %18, align 8, !tbaa !9
  %282 = getelementptr inbounds i8, ptr %25, i64 16
  store double %281, ptr %282, align 16, !tbaa !9
  call void @dlarfg_(ptr noundef nonnull @c__3, ptr noundef nonnull %25, ptr noundef nonnull %280, ptr noundef nonnull @c__1, ptr noundef nonnull %35) #4
  store double 1.000000e+00, ptr %25, align 16, !tbaa !9
  call void @dlarfx_(ptr noundef nonnull @.str.4, ptr noundef nonnull @c__3, ptr noundef nonnull @c__4, ptr noundef nonnull %24, ptr noundef nonnull %34, ptr noundef nonnull %16, ptr noundef nonnull @c__4, ptr noundef %9) #4
  call void @dlarfx_(ptr noundef nonnull @.str.5, ptr noundef nonnull @c__4, ptr noundef nonnull @c__3, ptr noundef nonnull %24, ptr noundef nonnull %34, ptr noundef nonnull %16, ptr noundef nonnull @c__4, ptr noundef %9) #4
  %283 = getelementptr inbounds i8, ptr %16, i64 8
  call void @dlarfx_(ptr noundef nonnull @.str.4, ptr noundef nonnull @c__3, ptr noundef nonnull @c__4, ptr noundef nonnull %25, ptr noundef nonnull %35, ptr noundef nonnull %283, ptr noundef nonnull @c__4, ptr noundef %9) #4
  %284 = getelementptr inbounds i8, ptr %16, i64 32
  call void @dlarfx_(ptr noundef nonnull @.str.5, ptr noundef nonnull @c__4, ptr noundef nonnull @c__3, ptr noundef nonnull %25, ptr noundef nonnull %35, ptr noundef nonnull %284, ptr noundef nonnull @c__4, ptr noundef %9) #4
  %285 = getelementptr inbounds i8, ptr %16, i64 16
  %286 = load double, ptr %285, align 16
  %287 = fcmp oge double %286, 0.000000e+00
  %288 = fneg double %286
  %289 = select i1 %287, double %286, double %288
  %290 = getelementptr inbounds i8, ptr %16, i64 48
  %291 = load double, ptr %290, align 16
  %292 = fcmp oge double %291, 0.000000e+00
  %293 = fneg double %291
  %294 = select i1 %292, double %291, double %293
  %295 = fcmp oge double %289, %294
  %296 = select i1 %295, double %289, double %294
  %297 = getelementptr inbounds i8, ptr %16, i64 24
  %298 = load double, ptr %297, align 8
  %299 = fcmp oge double %298, 0.000000e+00
  %300 = fneg double %298
  %301 = select i1 %299, double %298, double %300
  %302 = fcmp oge double %296, %301
  %303 = select i1 %302, double %296, double %301
  %304 = getelementptr inbounds i8, ptr %16, i64 56
  %305 = load double, ptr %304, align 8
  %306 = fcmp oge double %305, 0.000000e+00
  %307 = fneg double %305
  %308 = select i1 %306, double %305, double %307
  %309 = fcmp oge double %303, %308
  %310 = select i1 %309, double %303, double %308
  %311 = fcmp ogt double %310, %124
  br i1 %311, label %478, label %312

312:                                              ; preds = %262
  %313 = load i32, ptr %1, align 4, !tbaa !5
  %314 = load i32, ptr %6, align 4, !tbaa !5
  %315 = add i32 %313, 1
  %316 = sub i32 %315, %314
  store i32 %316, ptr %12, align 4, !tbaa !5
  %317 = mul i32 %314, %113
  %318 = sext i32 %317 to i64
  %319 = getelementptr inbounds double, ptr %38, i64 %318
  call void @dlarfx_(ptr noundef nonnull @.str.4, ptr noundef nonnull @c__3, ptr noundef nonnull %12, ptr noundef nonnull %24, ptr noundef nonnull %34, ptr noundef %319, ptr noundef nonnull %3, ptr noundef %9) #4
  %320 = load i32, ptr %6, align 4, !tbaa !5
  %321 = mul nsw i32 %320, %36
  %322 = sext i32 %321 to i64
  %323 = getelementptr double, ptr %38, i64 %322
  %324 = getelementptr i8, ptr %323, i64 8
  call void @dlarfx_(ptr noundef nonnull @.str.5, ptr noundef nonnull %22, ptr noundef nonnull @c__3, ptr noundef nonnull %24, ptr noundef nonnull %34, ptr noundef %324, ptr noundef nonnull %3, ptr noundef %9) #4
  %325 = load i32, ptr %1, align 4, !tbaa !5
  %326 = load i32, ptr %6, align 4, !tbaa !5
  %327 = add i32 %325, 1
  %328 = sub i32 %327, %326
  store i32 %328, ptr %12, align 4, !tbaa !5
  %329 = mul nsw i32 %326, %36
  %330 = add nsw i32 %55, %329
  %331 = sext i32 %330 to i64
  %332 = getelementptr inbounds double, ptr %38, i64 %331
  call void @dlarfx_(ptr noundef nonnull @.str.4, ptr noundef nonnull @c__3, ptr noundef nonnull %12, ptr noundef nonnull %25, ptr noundef nonnull %35, ptr noundef %332, ptr noundef nonnull %3, ptr noundef %9) #4
  %333 = mul nsw i32 %55, %36
  %334 = sext i32 %333 to i64
  %335 = getelementptr double, ptr %38, i64 %334
  %336 = getelementptr i8, ptr %335, i64 8
  call void @dlarfx_(ptr noundef nonnull @.str.5, ptr noundef nonnull %22, ptr noundef nonnull @c__3, ptr noundef nonnull %25, ptr noundef nonnull %35, ptr noundef %336, ptr noundef nonnull %3, ptr noundef %9) #4
  %337 = load i32, ptr %6, align 4, !tbaa !5
  %338 = mul nsw i32 %337, %36
  %339 = add nsw i32 %338, %56
  %340 = sext i32 %339 to i64
  %341 = getelementptr inbounds double, ptr %38, i64 %340
  store double 0.000000e+00, ptr %341, align 8, !tbaa !9
  %342 = add nsw i32 %333, %56
  %343 = sext i32 %342 to i64
  %344 = getelementptr inbounds double, ptr %38, i64 %343
  store double 0.000000e+00, ptr %344, align 8, !tbaa !9
  %345 = load i32, ptr %22, align 4, !tbaa !5
  %346 = add nsw i32 %345, %338
  %347 = sext i32 %346 to i64
  %348 = getelementptr inbounds double, ptr %38, i64 %347
  store double 0.000000e+00, ptr %348, align 8, !tbaa !9
  %349 = add nsw i32 %345, %333
  %350 = sext i32 %349 to i64
  %351 = getelementptr inbounds double, ptr %38, i64 %350
  store double 0.000000e+00, ptr %351, align 8, !tbaa !9
  %352 = load i32, ptr %0, align 4, !tbaa !5
  %.not300 = icmp eq i32 %352, 0
  br i1 %.not300, label %362, label %353

353:                                              ; preds = %312
  %354 = mul nsw i32 %337, %39
  %355 = sext i32 %354 to i64
  %356 = getelementptr double, ptr %41, i64 %355
  %357 = getelementptr i8, ptr %356, i64 8
  call void @dlarfx_(ptr noundef nonnull @.str.5, ptr noundef nonnull %1, ptr noundef nonnull @c__3, ptr noundef nonnull %24, ptr noundef nonnull %34, ptr noundef %357, ptr noundef nonnull %5, ptr noundef %9) #4
  %358 = mul nsw i32 %55, %39
  %359 = sext i32 %358 to i64
  %360 = getelementptr double, ptr %41, i64 %359
  %361 = getelementptr i8, ptr %360, i64 8
  call void @dlarfx_(ptr noundef nonnull @.str.5, ptr noundef nonnull %1, ptr noundef nonnull @c__3, ptr noundef nonnull %25, ptr noundef nonnull %35, ptr noundef %361, ptr noundef nonnull %5, ptr noundef %9) #4
  br label %362

362:                                              ; preds = %312, %353, %231, %257, %172, %199
  %363 = load i32, ptr %8, align 4, !tbaa !5
  %364 = icmp eq i32 %363, 2
  br i1 %364, label %365, label %418

365:                                              ; preds = %362
  %366 = load i32, ptr %6, align 4, !tbaa !5
  %367 = mul nsw i32 %366, %36
  %368 = add nsw i32 %367, %366
  %369 = sext i32 %368 to i64
  %370 = getelementptr inbounds double, ptr %38, i64 %369
  %371 = load i32, ptr %20, align 4, !tbaa !5
  %372 = mul nsw i32 %371, %36
  %373 = add nsw i32 %372, %366
  %374 = sext i32 %373 to i64
  %375 = getelementptr inbounds double, ptr %38, i64 %374
  %376 = add nsw i32 %371, %367
  %377 = sext i32 %376 to i64
  %378 = getelementptr inbounds double, ptr %38, i64 %377
  %379 = add nsw i32 %372, %371
  %380 = sext i32 %379 to i64
  %381 = getelementptr inbounds double, ptr %38, i64 %380
  call void @dlanv2_(ptr noundef %370, ptr noundef %375, ptr noundef %378, ptr noundef %381, ptr noundef nonnull %31, ptr noundef nonnull %29, ptr noundef nonnull %32, ptr noundef nonnull %30, ptr noundef nonnull %27, ptr noundef nonnull %28) #4
  %382 = load i32, ptr %1, align 4, !tbaa !5
  %383 = load i32, ptr %6, align 4, !tbaa !5
  %384 = xor i32 %383, -1
  %385 = add i32 %382, %384
  store i32 %385, ptr %12, align 4, !tbaa !5
  %386 = add nsw i32 %383, 2
  %387 = mul nsw i32 %386, %36
  %388 = add nsw i32 %387, %383
  %389 = sext i32 %388 to i64
  %390 = getelementptr inbounds double, ptr %38, i64 %389
  %391 = load i32, ptr %20, align 4, !tbaa !5
  %392 = add nsw i32 %391, %387
  %393 = sext i32 %392 to i64
  %394 = getelementptr inbounds double, ptr %38, i64 %393
  call void @drot_(ptr noundef nonnull %12, ptr noundef %390, ptr noundef nonnull %3, ptr noundef %394, ptr noundef nonnull %3, ptr noundef nonnull %27, ptr noundef nonnull %28) #4
  %395 = load i32, ptr %6, align 4, !tbaa !5
  %396 = add nsw i32 %395, -1
  store i32 %396, ptr %12, align 4, !tbaa !5
  %397 = mul nsw i32 %395, %36
  %398 = sext i32 %397 to i64
  %399 = getelementptr double, ptr %38, i64 %398
  %400 = getelementptr i8, ptr %399, i64 8
  %401 = load i32, ptr %20, align 4, !tbaa !5
  %402 = mul nsw i32 %401, %36
  %403 = sext i32 %402 to i64
  %404 = getelementptr double, ptr %38, i64 %403
  %405 = getelementptr i8, ptr %404, i64 8
  call void @drot_(ptr noundef nonnull %12, ptr noundef %400, ptr noundef nonnull @c__1, ptr noundef %405, ptr noundef nonnull @c__1, ptr noundef nonnull %27, ptr noundef nonnull %28) #4
  %406 = load i32, ptr %0, align 4, !tbaa !5
  %.not302 = icmp eq i32 %406, 0
  br i1 %.not302, label %418, label %407

407:                                              ; preds = %365
  %408 = load i32, ptr %6, align 4, !tbaa !5
  %409 = mul nsw i32 %408, %39
  %410 = sext i32 %409 to i64
  %411 = getelementptr double, ptr %41, i64 %410
  %412 = getelementptr i8, ptr %411, i64 8
  %413 = load i32, ptr %20, align 4, !tbaa !5
  %414 = mul nsw i32 %413, %39
  %415 = sext i32 %414 to i64
  %416 = getelementptr double, ptr %41, i64 %415
  %417 = getelementptr i8, ptr %416, i64 8
  call void @drot_(ptr noundef nonnull %1, ptr noundef %412, ptr noundef nonnull @c__1, ptr noundef %417, ptr noundef nonnull @c__1, ptr noundef nonnull %27, ptr noundef nonnull %28) #4
  br label %418

418:                                              ; preds = %365, %407, %362
  %419 = load i32, ptr %7, align 4, !tbaa !5
  %420 = icmp eq i32 %419, 2
  br i1 %420, label %421, label %479

421:                                              ; preds = %418
  %422 = load i32, ptr %6, align 4, !tbaa !5
  %423 = load i32, ptr %8, align 4, !tbaa !5
  %424 = add nsw i32 %423, %422
  store i32 %424, ptr %21, align 4, !tbaa !5
  %425 = add nsw i32 %424, 1
  store i32 %425, ptr %22, align 4, !tbaa !5
  %426 = mul nsw i32 %424, %36
  %427 = add nsw i32 %426, %424
  %428 = sext i32 %427 to i64
  %429 = getelementptr inbounds double, ptr %38, i64 %428
  %430 = mul nsw i32 %425, %36
  %431 = add nsw i32 %430, %424
  %432 = sext i32 %431 to i64
  %433 = getelementptr inbounds double, ptr %38, i64 %432
  %434 = add nsw i32 %425, %426
  %435 = sext i32 %434 to i64
  %436 = getelementptr inbounds double, ptr %38, i64 %435
  %437 = add nsw i32 %430, %425
  %438 = sext i32 %437 to i64
  %439 = getelementptr inbounds double, ptr %38, i64 %438
  call void @dlanv2_(ptr noundef %429, ptr noundef %433, ptr noundef %436, ptr noundef %439, ptr noundef nonnull %31, ptr noundef nonnull %29, ptr noundef nonnull %32, ptr noundef nonnull %30, ptr noundef nonnull %27, ptr noundef nonnull %28) #4
  %440 = load i32, ptr %21, align 4, !tbaa !5
  %441 = add nsw i32 %440, 2
  %442 = load i32, ptr %1, align 4, !tbaa !5
  %.not303 = icmp sgt i32 %441, %442
  br i1 %.not303, label %454, label %443

443:                                              ; preds = %421
  %444 = xor i32 %440, -1
  %445 = add i32 %442, %444
  store i32 %445, ptr %12, align 4, !tbaa !5
  %446 = mul nsw i32 %441, %36
  %447 = add nsw i32 %446, %440
  %448 = sext i32 %447 to i64
  %449 = getelementptr inbounds double, ptr %38, i64 %448
  %450 = load i32, ptr %22, align 4, !tbaa !5
  %451 = add nsw i32 %450, %446
  %452 = sext i32 %451 to i64
  %453 = getelementptr inbounds double, ptr %38, i64 %452
  call void @drot_(ptr noundef nonnull %12, ptr noundef %449, ptr noundef nonnull %3, ptr noundef %453, ptr noundef nonnull %3, ptr noundef nonnull %27, ptr noundef nonnull %28) #4
  %.pre = load i32, ptr %21, align 4, !tbaa !5
  br label %454

454:                                              ; preds = %443, %421
  %455 = phi i32 [ %.pre, %443 ], [ %440, %421 ]
  %456 = add nsw i32 %455, -1
  store i32 %456, ptr %12, align 4, !tbaa !5
  %457 = mul nsw i32 %455, %36
  %458 = sext i32 %457 to i64
  %459 = getelementptr double, ptr %38, i64 %458
  %460 = getelementptr i8, ptr %459, i64 8
  %461 = load i32, ptr %22, align 4, !tbaa !5
  %462 = mul nsw i32 %461, %36
  %463 = sext i32 %462 to i64
  %464 = getelementptr double, ptr %38, i64 %463
  %465 = getelementptr i8, ptr %464, i64 8
  call void @drot_(ptr noundef nonnull %12, ptr noundef %460, ptr noundef nonnull @c__1, ptr noundef %465, ptr noundef nonnull @c__1, ptr noundef nonnull %27, ptr noundef nonnull %28) #4
  %466 = load i32, ptr %0, align 4, !tbaa !5
  %.not304 = icmp eq i32 %466, 0
  br i1 %.not304, label %479, label %467

467:                                              ; preds = %454
  %468 = load i32, ptr %21, align 4, !tbaa !5
  %469 = mul nsw i32 %468, %39
  %470 = sext i32 %469 to i64
  %471 = getelementptr double, ptr %41, i64 %470
  %472 = getelementptr i8, ptr %471, i64 8
  %473 = load i32, ptr %22, align 4, !tbaa !5
  %474 = mul nsw i32 %473, %39
  %475 = sext i32 %474 to i64
  %476 = getelementptr double, ptr %41, i64 %475
  %477 = getelementptr i8, ptr %476, i64 8
  call void @drot_(ptr noundef nonnull %1, ptr noundef %472, ptr noundef nonnull @c__1, ptr noundef %477, ptr noundef nonnull @c__1, ptr noundef nonnull %27, ptr noundef nonnull %28) #4
  br label %479

478:                                              ; preds = %262, %204, %139
  store i32 1, ptr %10, align 4, !tbaa !5
  br label %479

479:                                              ; preds = %102, %87, %454, %467, %418, %50, %11, %44, %47, %478
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %26) #4
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %25) #4
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %24) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #4
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %17) #4
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %16) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #4
  ret void
}

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

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

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

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

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

declare double @dlamch_(ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

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

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

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


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