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

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

@.str = external hidden unnamed_addr constant [13 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [4 x i8], align 1
@c_b7 = external hidden global double, align 8
@c_b8 = external hidden global double, align 8
@c__3 = external hidden global i64, align 8
@c__1 = external hidden global i64, align 8
@c__2 = external hidden global i64, align 8
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [2 x i8], align 1

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

180:                                              ; preds = %25
  store i32 0, ptr %26, align 4
  store i32 1, ptr %124, align 4
  br label %3605

181:                                              ; preds = %25
  %182 = load ptr, ptr %31, align 8, !tbaa !5
  %183 = load i64, ptr %182, align 8, !tbaa !9
  %184 = load ptr, ptr %32, align 8, !tbaa !5
  %185 = load i64, ptr %184, align 8, !tbaa !9
  %186 = icmp sge i64 %183, %185
  br i1 %186, label %187, label %188

187:                                              ; preds = %181
  store i32 0, ptr %26, align 4
  store i32 1, ptr %124, align 4
  br label %3605

188:                                              ; preds = %181
  %189 = load ptr, ptr %33, align 8, !tbaa !5
  %190 = load i64, ptr %189, align 8, !tbaa !9
  %191 = sub nsw i64 %190, 2
  store i64 %191, ptr %64, align 8, !tbaa !9
  store i64 1, ptr %76, align 8, !tbaa !9
  br label %192

192:                                              ; preds = %262, %188
  %193 = load i64, ptr %76, align 8, !tbaa !9
  %194 = load i64, ptr %64, align 8, !tbaa !9
  %195 = icmp sle i64 %193, %194
  br i1 %195, label %196, label %265

196:                                              ; preds = %192
  %197 = load ptr, ptr %35, align 8, !tbaa !5
  %198 = load i64, ptr %76, align 8, !tbaa !9
  %199 = getelementptr inbounds double, ptr %197, i64 %198
  %200 = load double, ptr %199, align 8, !tbaa !11
  %201 = load ptr, ptr %35, align 8, !tbaa !5
  %202 = load i64, ptr %76, align 8, !tbaa !9
  %203 = add nsw i64 %202, 1
  %204 = getelementptr inbounds double, ptr %201, i64 %203
  %205 = load double, ptr %204, align 8, !tbaa !11
  %206 = fneg double %205
  %207 = fcmp une double %200, %206
  br i1 %207, label %208, label %261

208:                                              ; preds = %196
  %209 = load ptr, ptr %34, align 8, !tbaa !5
  %210 = load i64, ptr %76, align 8, !tbaa !9
  %211 = getelementptr inbounds double, ptr %209, i64 %210
  %212 = load double, ptr %211, align 8, !tbaa !11
  store double %212, ptr %109, align 8, !tbaa !11
  %213 = load ptr, ptr %34, align 8, !tbaa !5
  %214 = load i64, ptr %76, align 8, !tbaa !9
  %215 = add nsw i64 %214, 1
  %216 = getelementptr inbounds double, ptr %213, i64 %215
  %217 = load double, ptr %216, align 8, !tbaa !11
  %218 = load ptr, ptr %34, align 8, !tbaa !5
  %219 = load i64, ptr %76, align 8, !tbaa !9
  %220 = getelementptr inbounds double, ptr %218, i64 %219
  store double %217, ptr %220, align 8, !tbaa !11
  %221 = load ptr, ptr %34, align 8, !tbaa !5
  %222 = load i64, ptr %76, align 8, !tbaa !9
  %223 = add nsw i64 %222, 2
  %224 = getelementptr inbounds double, ptr %221, i64 %223
  %225 = load double, ptr %224, align 8, !tbaa !11
  %226 = load ptr, ptr %34, align 8, !tbaa !5
  %227 = load i64, ptr %76, align 8, !tbaa !9
  %228 = add nsw i64 %227, 1
  %229 = getelementptr inbounds double, ptr %226, i64 %228
  store double %225, ptr %229, align 8, !tbaa !11
  %230 = load double, ptr %109, align 8, !tbaa !11
  %231 = load ptr, ptr %34, align 8, !tbaa !5
  %232 = load i64, ptr %76, align 8, !tbaa !9
  %233 = add nsw i64 %232, 2
  %234 = getelementptr inbounds double, ptr %231, i64 %233
  store double %230, ptr %234, align 8, !tbaa !11
  %235 = load ptr, ptr %35, align 8, !tbaa !5
  %236 = load i64, ptr %76, align 8, !tbaa !9
  %237 = getelementptr inbounds double, ptr %235, i64 %236
  %238 = load double, ptr %237, align 8, !tbaa !11
  store double %238, ptr %109, align 8, !tbaa !11
  %239 = load ptr, ptr %35, align 8, !tbaa !5
  %240 = load i64, ptr %76, align 8, !tbaa !9
  %241 = add nsw i64 %240, 1
  %242 = getelementptr inbounds double, ptr %239, i64 %241
  %243 = load double, ptr %242, align 8, !tbaa !11
  %244 = load ptr, ptr %35, align 8, !tbaa !5
  %245 = load i64, ptr %76, align 8, !tbaa !9
  %246 = getelementptr inbounds double, ptr %244, i64 %245
  store double %243, ptr %246, align 8, !tbaa !11
  %247 = load ptr, ptr %35, align 8, !tbaa !5
  %248 = load i64, ptr %76, align 8, !tbaa !9
  %249 = add nsw i64 %248, 2
  %250 = getelementptr inbounds double, ptr %247, i64 %249
  %251 = load double, ptr %250, align 8, !tbaa !11
  %252 = load ptr, ptr %35, align 8, !tbaa !5
  %253 = load i64, ptr %76, align 8, !tbaa !9
  %254 = add nsw i64 %253, 1
  %255 = getelementptr inbounds double, ptr %252, i64 %254
  store double %251, ptr %255, align 8, !tbaa !11
  %256 = load double, ptr %109, align 8, !tbaa !11
  %257 = load ptr, ptr %35, align 8, !tbaa !5
  %258 = load i64, ptr %76, align 8, !tbaa !9
  %259 = add nsw i64 %258, 2
  %260 = getelementptr inbounds double, ptr %257, i64 %259
  store double %256, ptr %260, align 8, !tbaa !11
  br label %261

261:                                              ; preds = %208, %196
  br label %262

262:                                              ; preds = %261
  %263 = load i64, ptr %76, align 8, !tbaa !9
  %264 = add nsw i64 %263, 2
  store i64 %264, ptr %76, align 8, !tbaa !9
  br label %192, !llvm.loop !13

265:                                              ; preds = %192
  %266 = load ptr, ptr %33, align 8, !tbaa !5
  %267 = load i64, ptr %266, align 8, !tbaa !9
  %268 = load ptr, ptr %33, align 8, !tbaa !5
  %269 = load i64, ptr %268, align 8, !tbaa !9
  %270 = srem i64 %269, 2
  %271 = sub nsw i64 %267, %270
  store i64 %271, ptr %90, align 8, !tbaa !9
  %272 = call double @dlamch_(ptr noundef @.str)
  store double %272, ptr %119, align 8, !tbaa !11
  %273 = load double, ptr %119, align 8, !tbaa !11
  %274 = fdiv double 1.000000e+00, %273
  store double %274, ptr %120, align 8, !tbaa !11
  %275 = call i32 @dlabad_(ptr noundef %119, ptr noundef %120)
  %276 = call double @dlamch_(ptr noundef @.str.1)
  store double %276, ptr %96, align 8, !tbaa !11
  %277 = load double, ptr %119, align 8, !tbaa !11
  %278 = load ptr, ptr %30, align 8, !tbaa !5
  %279 = load i64, ptr %278, align 8, !tbaa !9
  %280 = sitofp i64 %279 to double
  %281 = load double, ptr %96, align 8, !tbaa !11
  %282 = fdiv double %280, %281
  %283 = fmul double %277, %282
  store double %283, ptr %123, align 8, !tbaa !11
  %284 = load ptr, ptr %29, align 8, !tbaa !5
  %285 = load i64, ptr %284, align 8, !tbaa !9
  %286 = icmp eq i64 %285, 1
  br i1 %286, label %291, label %287

287:                                              ; preds = %265
  %288 = load ptr, ptr %29, align 8, !tbaa !5
  %289 = load i64, ptr %288, align 8, !tbaa !9
  %290 = icmp eq i64 %289, 2
  br label %291

291:                                              ; preds = %287, %265
  %292 = phi i1 [ true, %265 ], [ %290, %287 ]
  %293 = zext i1 %292 to i32
  %294 = sext i32 %293 to i64
  store i64 %294, ptr %114, align 8, !tbaa !9
  %295 = load i64, ptr %90, align 8, !tbaa !9
  %296 = icmp sgt i64 %295, 2
  br i1 %296, label %297, label %301

297:                                              ; preds = %291
  %298 = load ptr, ptr %29, align 8, !tbaa !5
  %299 = load i64, ptr %298, align 8, !tbaa !9
  %300 = icmp eq i64 %299, 2
  br label %301

301:                                              ; preds = %297, %291
  %302 = phi i1 [ false, %291 ], [ %300, %297 ]
  %303 = zext i1 %302 to i32
  %304 = sext i32 %303 to i64
  store i64 %304, ptr %102, align 8, !tbaa !9
  %305 = load ptr, ptr %31, align 8, !tbaa !5
  %306 = load i64, ptr %305, align 8, !tbaa !9
  %307 = add nsw i64 %306, 2
  %308 = load ptr, ptr %32, align 8, !tbaa !5
  %309 = load i64, ptr %308, align 8, !tbaa !9
  %310 = icmp sle i64 %307, %309
  br i1 %310, label %311, label %322

311:                                              ; preds = %301
  %312 = load ptr, ptr %36, align 8, !tbaa !5
  %313 = load ptr, ptr %31, align 8, !tbaa !5
  %314 = load i64, ptr %313, align 8, !tbaa !9
  %315 = add nsw i64 %314, 2
  %316 = load ptr, ptr %31, align 8, !tbaa !5
  %317 = load i64, ptr %316, align 8, !tbaa !9
  %318 = load i64, ptr %52, align 8, !tbaa !9
  %319 = mul nsw i64 %317, %318
  %320 = add nsw i64 %315, %319
  %321 = getelementptr inbounds double, ptr %312, i64 %320
  store double 0.000000e+00, ptr %321, align 8, !tbaa !11
  br label %322

322:                                              ; preds = %311, %301
  %323 = load i64, ptr %90, align 8, !tbaa !9
  %324 = sdiv i64 %323, 2
  store i64 %324, ptr %118, align 8, !tbaa !9
  %325 = load i64, ptr %118, align 8, !tbaa !9
  %326 = mul nsw i64 %325, 6
  %327 = sub nsw i64 %326, 3
  store i64 %327, ptr %94, align 8, !tbaa !9
  %328 = load ptr, ptr %32, align 8, !tbaa !5
  %329 = load i64, ptr %328, align 8, !tbaa !9
  %330 = sub nsw i64 %329, 2
  store i64 %330, ptr %64, align 8, !tbaa !9
  %331 = load i64, ptr %118, align 8, !tbaa !9
  %332 = mul nsw i64 %331, 3
  %333 = sub nsw i64 %332, 2
  store i64 %333, ptr %65, align 8, !tbaa !9
  %334 = load i64, ptr %118, align 8, !tbaa !9
  %335 = sub nsw i64 1, %334
  %336 = mul nsw i64 %335, 3
  %337 = load ptr, ptr %31, align 8, !tbaa !5
  %338 = load i64, ptr %337, align 8, !tbaa !9
  %339 = add nsw i64 %336, %338
  %340 = sub nsw i64 %339, 1
  store i64 %340, ptr %116, align 8, !tbaa !9
  br label %341

341:                                              ; preds = %3600, %322
  %342 = load i64, ptr %65, align 8, !tbaa !9
  %343 = icmp slt i64 %342, 0
  br i1 %343, label %344, label %349

344:                                              ; preds = %341
  %345 = load i64, ptr %116, align 8, !tbaa !9
  %346 = load i64, ptr %64, align 8, !tbaa !9
  %347 = icmp sge i64 %345, %346
  %348 = zext i1 %347 to i32
  br label %354

349:                                              ; preds = %341
  %350 = load i64, ptr %116, align 8, !tbaa !9
  %351 = load i64, ptr %64, align 8, !tbaa !9
  %352 = icmp sle i64 %350, %351
  %353 = zext i1 %352 to i32
  br label %354

354:                                              ; preds = %349, %344
  %355 = phi i32 [ %348, %344 ], [ %353, %349 ]
  %356 = icmp ne i32 %355, 0
  br i1 %356, label %357, label %3604

357:                                              ; preds = %354
  %358 = load i64, ptr %116, align 8, !tbaa !9
  %359 = load i64, ptr %94, align 8, !tbaa !9
  %360 = add nsw i64 %358, %359
  store i64 %360, ptr %115, align 8, !tbaa !9
  %361 = load i64, ptr %114, align 8, !tbaa !9
  %362 = icmp ne i64 %361, 0
  br i1 %362, label %363, label %369

363:                                              ; preds = %357
  %364 = load ptr, ptr %44, align 8, !tbaa !5
  %365 = load i64, ptr %55, align 8, !tbaa !9
  %366 = getelementptr inbounds double, ptr %364, i64 %365
  %367 = load ptr, ptr %45, align 8, !tbaa !5
  %368 = call i32 @dlaset_(ptr noundef @.str.2, ptr noundef %94, ptr noundef %94, ptr noundef @c_b7, ptr noundef @c_b8, ptr noundef %366, ptr noundef %367)
  br label %369

369:                                              ; preds = %363, %357
  %370 = load i64, ptr %116, align 8, !tbaa !9
  %371 = load i64, ptr %118, align 8, !tbaa !9
  %372 = mul nsw i64 %371, 3
  %373 = add nsw i64 %370, %372
  %374 = sub nsw i64 %373, 3
  store i64 %374, ptr %67, align 8, !tbaa !9
  %375 = load ptr, ptr %32, align 8, !tbaa !5
  %376 = load i64, ptr %375, align 8, !tbaa !9
  %377 = sub nsw i64 %376, 2
  store i64 %377, ptr %68, align 8, !tbaa !9
  %378 = load i64, ptr %67, align 8, !tbaa !9
  %379 = load i64, ptr %68, align 8, !tbaa !9
  %380 = icmp sle i64 %378, %379
  br i1 %380, label %381, label %383

381:                                              ; preds = %369
  %382 = load i64, ptr %67, align 8, !tbaa !9
  br label %385

383:                                              ; preds = %369
  %384 = load i64, ptr %68, align 8, !tbaa !9
  br label %385

385:                                              ; preds = %383, %381
  %386 = phi i64 [ %382, %381 ], [ %384, %383 ]
  store i64 %386, ptr %66, align 8, !tbaa !9
  %387 = load i64, ptr %116, align 8, !tbaa !9
  store i64 %387, ptr %117, align 8, !tbaa !9
  br label %388

388:                                              ; preds = %2635, %385
  %389 = load i64, ptr %117, align 8, !tbaa !9
  %390 = load i64, ptr %66, align 8, !tbaa !9
  %391 = icmp sle i64 %389, %390
  br i1 %391, label %392, label %2638

392:                                              ; preds = %388
  store i64 1, ptr %67, align 8, !tbaa !9
  %393 = load ptr, ptr %31, align 8, !tbaa !5
  %394 = load i64, ptr %393, align 8, !tbaa !9
  %395 = sub nsw i64 %394, 1
  %396 = load i64, ptr %117, align 8, !tbaa !9
  %397 = sub nsw i64 %395, %396
  %398 = add nsw i64 %397, 2
  %399 = sdiv i64 %398, 3
  %400 = add nsw i64 %399, 1
  store i64 %400, ptr %68, align 8, !tbaa !9
  %401 = load i64, ptr %67, align 8, !tbaa !9
  %402 = load i64, ptr %68, align 8, !tbaa !9
  %403 = icmp sge i64 %401, %402
  br i1 %403, label %404, label %406

404:                                              ; preds = %392
  %405 = load i64, ptr %67, align 8, !tbaa !9
  br label %408

406:                                              ; preds = %392
  %407 = load i64, ptr %68, align 8, !tbaa !9
  br label %408

408:                                              ; preds = %406, %404
  %409 = phi i64 [ %405, %404 ], [ %407, %406 ]
  store i64 %409, ptr %112, align 8, !tbaa !9
  %410 = load i64, ptr %118, align 8, !tbaa !9
  store i64 %410, ptr %67, align 8, !tbaa !9
  %411 = load ptr, ptr %32, align 8, !tbaa !5
  %412 = load i64, ptr %411, align 8, !tbaa !9
  %413 = load i64, ptr %117, align 8, !tbaa !9
  %414 = sub nsw i64 %412, %413
  %415 = sdiv i64 %414, 3
  store i64 %415, ptr %68, align 8, !tbaa !9
  %416 = load i64, ptr %67, align 8, !tbaa !9
  %417 = load i64, ptr %68, align 8, !tbaa !9
  %418 = icmp sle i64 %416, %417
  br i1 %418, label %419, label %421

419:                                              ; preds = %408
  %420 = load i64, ptr %67, align 8, !tbaa !9
  br label %423

421:                                              ; preds = %408
  %422 = load i64, ptr %68, align 8, !tbaa !9
  br label %423

423:                                              ; preds = %421, %419
  %424 = phi i64 [ %420, %419 ], [ %422, %421 ]
  store i64 %424, ptr %108, align 8, !tbaa !9
  %425 = load i64, ptr %108, align 8, !tbaa !9
  %426 = add nsw i64 %425, 1
  store i64 %426, ptr %89, align 8, !tbaa !9
  %427 = load i64, ptr %108, align 8, !tbaa !9
  %428 = load i64, ptr %118, align 8, !tbaa !9
  %429 = icmp slt i64 %427, %428
  br i1 %429, label %430, label %440

430:                                              ; preds = %423
  %431 = load i64, ptr %117, align 8, !tbaa !9
  %432 = load i64, ptr %89, align 8, !tbaa !9
  %433 = sub nsw i64 %432, 1
  %434 = mul nsw i64 %433, 3
  %435 = add nsw i64 %431, %434
  %436 = load ptr, ptr %32, align 8, !tbaa !5
  %437 = load i64, ptr %436, align 8, !tbaa !9
  %438 = sub nsw i64 %437, 2
  %439 = icmp eq i64 %435, %438
  br label %440

440:                                              ; preds = %430, %423
  %441 = phi i1 [ false, %423 ], [ %439, %430 ]
  %442 = zext i1 %441 to i32
  %443 = sext i32 %442 to i64
  store i64 %443, ptr %103, align 8, !tbaa !9
  %444 = load i64, ptr %108, align 8, !tbaa !9
  store i64 %444, ptr %67, align 8, !tbaa !9
  %445 = load i64, ptr %112, align 8, !tbaa !9
  store i64 %445, ptr %79, align 8, !tbaa !9
  br label %446

446:                                              ; preds = %868, %440
  %447 = load i64, ptr %79, align 8, !tbaa !9
  %448 = load i64, ptr %67, align 8, !tbaa !9
  %449 = icmp sle i64 %447, %448
  br i1 %449, label %450, label %871

450:                                              ; preds = %446
  %451 = load i64, ptr %117, align 8, !tbaa !9
  %452 = load i64, ptr %79, align 8, !tbaa !9
  %453 = sub nsw i64 %452, 1
  %454 = mul nsw i64 %453, 3
  %455 = add nsw i64 %451, %454
  store i64 %455, ptr %78, align 8, !tbaa !9
  %456 = load i64, ptr %78, align 8, !tbaa !9
  %457 = load ptr, ptr %31, align 8, !tbaa !5
  %458 = load i64, ptr %457, align 8, !tbaa !9
  %459 = sub nsw i64 %458, 1
  %460 = icmp eq i64 %456, %459
  br i1 %460, label %461, label %517

461:                                              ; preds = %450
  %462 = load ptr, ptr %36, align 8, !tbaa !5
  %463 = load ptr, ptr %31, align 8, !tbaa !5
  %464 = load i64, ptr %463, align 8, !tbaa !9
  %465 = load ptr, ptr %31, align 8, !tbaa !5
  %466 = load i64, ptr %465, align 8, !tbaa !9
  %467 = load i64, ptr %52, align 8, !tbaa !9
  %468 = mul nsw i64 %466, %467
  %469 = add nsw i64 %464, %468
  %470 = getelementptr inbounds double, ptr %462, i64 %469
  %471 = load ptr, ptr %37, align 8, !tbaa !5
  %472 = load ptr, ptr %34, align 8, !tbaa !5
  %473 = load i64, ptr %79, align 8, !tbaa !9
  %474 = shl i64 %473, 1
  %475 = sub nsw i64 %474, 1
  %476 = getelementptr inbounds double, ptr %472, i64 %475
  %477 = load ptr, ptr %35, align 8, !tbaa !5
  %478 = load i64, ptr %79, align 8, !tbaa !9
  %479 = shl i64 %478, 1
  %480 = sub nsw i64 %479, 1
  %481 = getelementptr inbounds double, ptr %477, i64 %480
  %482 = load ptr, ptr %34, align 8, !tbaa !5
  %483 = load i64, ptr %79, align 8, !tbaa !9
  %484 = mul nsw i64 %483, 2
  %485 = getelementptr inbounds double, ptr %482, i64 %484
  %486 = load ptr, ptr %35, align 8, !tbaa !5
  %487 = load i64, ptr %79, align 8, !tbaa !9
  %488 = mul nsw i64 %487, 2
  %489 = getelementptr inbounds double, ptr %486, i64 %488
  %490 = load ptr, ptr %42, align 8, !tbaa !5
  %491 = load i64, ptr %79, align 8, !tbaa !9
  %492 = load i64, ptr %56, align 8, !tbaa !9
  %493 = mul nsw i64 %491, %492
  %494 = add nsw i64 %493, 1
  %495 = getelementptr inbounds double, ptr %490, i64 %494
  %496 = call i32 @dlaqr1_(ptr noundef @c__3, ptr noundef %470, ptr noundef %471, ptr noundef %476, ptr noundef %481, ptr noundef %485, ptr noundef %489, ptr noundef %495)
  %497 = load ptr, ptr %42, align 8, !tbaa !5
  %498 = load i64, ptr %79, align 8, !tbaa !9
  %499 = load i64, ptr %56, align 8, !tbaa !9
  %500 = mul nsw i64 %498, %499
  %501 = add nsw i64 %500, 1
  %502 = getelementptr inbounds double, ptr %497, i64 %501
  %503 = load double, ptr %502, align 8, !tbaa !11
  store double %503, ptr %113, align 8, !tbaa !11
  %504 = load ptr, ptr %42, align 8, !tbaa !5
  %505 = load i64, ptr %79, align 8, !tbaa !9
  %506 = load i64, ptr %56, align 8, !tbaa !9
  %507 = mul nsw i64 %505, %506
  %508 = add nsw i64 %507, 2
  %509 = getelementptr inbounds double, ptr %504, i64 %508
  %510 = load ptr, ptr %42, align 8, !tbaa !5
  %511 = load i64, ptr %79, align 8, !tbaa !9
  %512 = load i64, ptr %56, align 8, !tbaa !9
  %513 = mul nsw i64 %511, %512
  %514 = add nsw i64 %513, 1
  %515 = getelementptr inbounds double, ptr %510, i64 %514
  %516 = call i32 @dlarfg_(ptr noundef @c__3, ptr noundef %113, ptr noundef %509, ptr noundef @c__1, ptr noundef %515)
  br label %867

517:                                              ; preds = %450
  %518 = load ptr, ptr %36, align 8, !tbaa !5
  %519 = load i64, ptr %78, align 8, !tbaa !9
  %520 = add nsw i64 %519, 1
  %521 = load i64, ptr %78, align 8, !tbaa !9
  %522 = load i64, ptr %52, align 8, !tbaa !9
  %523 = mul nsw i64 %521, %522
  %524 = add nsw i64 %520, %523
  %525 = getelementptr inbounds double, ptr %518, i64 %524
  %526 = load double, ptr %525, align 8, !tbaa !11
  store double %526, ptr %101, align 8, !tbaa !11
  %527 = load ptr, ptr %36, align 8, !tbaa !5
  %528 = load i64, ptr %78, align 8, !tbaa !9
  %529 = add nsw i64 %528, 2
  %530 = load i64, ptr %78, align 8, !tbaa !9
  %531 = load i64, ptr %52, align 8, !tbaa !9
  %532 = mul nsw i64 %530, %531
  %533 = add nsw i64 %529, %532
  %534 = getelementptr inbounds double, ptr %527, i64 %533
  %535 = load double, ptr %534, align 8, !tbaa !11
  %536 = load ptr, ptr %42, align 8, !tbaa !5
  %537 = load i64, ptr %79, align 8, !tbaa !9
  %538 = load i64, ptr %56, align 8, !tbaa !9
  %539 = mul nsw i64 %537, %538
  %540 = add nsw i64 %539, 2
  %541 = getelementptr inbounds double, ptr %536, i64 %540
  store double %535, ptr %541, align 8, !tbaa !11
  %542 = load ptr, ptr %36, align 8, !tbaa !5
  %543 = load i64, ptr %78, align 8, !tbaa !9
  %544 = add nsw i64 %543, 3
  %545 = load i64, ptr %78, align 8, !tbaa !9
  %546 = load i64, ptr %52, align 8, !tbaa !9
  %547 = mul nsw i64 %545, %546
  %548 = add nsw i64 %544, %547
  %549 = getelementptr inbounds double, ptr %542, i64 %548
  %550 = load double, ptr %549, align 8, !tbaa !11
  %551 = load ptr, ptr %42, align 8, !tbaa !5
  %552 = load i64, ptr %79, align 8, !tbaa !9
  %553 = load i64, ptr %56, align 8, !tbaa !9
  %554 = mul nsw i64 %552, %553
  %555 = add nsw i64 %554, 3
  %556 = getelementptr inbounds double, ptr %551, i64 %555
  store double %550, ptr %556, align 8, !tbaa !11
  %557 = load ptr, ptr %42, align 8, !tbaa !5
  %558 = load i64, ptr %79, align 8, !tbaa !9
  %559 = load i64, ptr %56, align 8, !tbaa !9
  %560 = mul nsw i64 %558, %559
  %561 = add nsw i64 %560, 2
  %562 = getelementptr inbounds double, ptr %557, i64 %561
  %563 = load ptr, ptr %42, align 8, !tbaa !5
  %564 = load i64, ptr %79, align 8, !tbaa !9
  %565 = load i64, ptr %56, align 8, !tbaa !9
  %566 = mul nsw i64 %564, %565
  %567 = add nsw i64 %566, 1
  %568 = getelementptr inbounds double, ptr %563, i64 %567
  %569 = call i32 @dlarfg_(ptr noundef @c__3, ptr noundef %101, ptr noundef %562, ptr noundef @c__1, ptr noundef %568)
  %570 = load ptr, ptr %36, align 8, !tbaa !5
  %571 = load i64, ptr %78, align 8, !tbaa !9
  %572 = add nsw i64 %571, 3
  %573 = load i64, ptr %78, align 8, !tbaa !9
  %574 = load i64, ptr %52, align 8, !tbaa !9
  %575 = mul nsw i64 %573, %574
  %576 = add nsw i64 %572, %575
  %577 = getelementptr inbounds double, ptr %570, i64 %576
  %578 = load double, ptr %577, align 8, !tbaa !11
  %579 = fcmp une double %578, 0.000000e+00
  br i1 %579, label %604, label %580

580:                                              ; preds = %517
  %581 = load ptr, ptr %36, align 8, !tbaa !5
  %582 = load i64, ptr %78, align 8, !tbaa !9
  %583 = add nsw i64 %582, 3
  %584 = load i64, ptr %78, align 8, !tbaa !9
  %585 = add nsw i64 %584, 1
  %586 = load i64, ptr %52, align 8, !tbaa !9
  %587 = mul nsw i64 %585, %586
  %588 = add nsw i64 %583, %587
  %589 = getelementptr inbounds double, ptr %581, i64 %588
  %590 = load double, ptr %589, align 8, !tbaa !11
  %591 = fcmp une double %590, 0.000000e+00
  br i1 %591, label %604, label %592

592:                                              ; preds = %580
  %593 = load ptr, ptr %36, align 8, !tbaa !5
  %594 = load i64, ptr %78, align 8, !tbaa !9
  %595 = add nsw i64 %594, 3
  %596 = load i64, ptr %78, align 8, !tbaa !9
  %597 = add nsw i64 %596, 2
  %598 = load i64, ptr %52, align 8, !tbaa !9
  %599 = mul nsw i64 %597, %598
  %600 = add nsw i64 %595, %599
  %601 = getelementptr inbounds double, ptr %593, i64 %600
  %602 = load double, ptr %601, align 8, !tbaa !11
  %603 = fcmp oeq double %602, 0.000000e+00
  br i1 %603, label %604, label %630

604:                                              ; preds = %592, %580, %517
  %605 = load double, ptr %101, align 8, !tbaa !11
  %606 = load ptr, ptr %36, align 8, !tbaa !5
  %607 = load i64, ptr %78, align 8, !tbaa !9
  %608 = add nsw i64 %607, 1
  %609 = load i64, ptr %78, align 8, !tbaa !9
  %610 = load i64, ptr %52, align 8, !tbaa !9
  %611 = mul nsw i64 %609, %610
  %612 = add nsw i64 %608, %611
  %613 = getelementptr inbounds double, ptr %606, i64 %612
  store double %605, ptr %613, align 8, !tbaa !11
  %614 = load ptr, ptr %36, align 8, !tbaa !5
  %615 = load i64, ptr %78, align 8, !tbaa !9
  %616 = add nsw i64 %615, 2
  %617 = load i64, ptr %78, align 8, !tbaa !9
  %618 = load i64, ptr %52, align 8, !tbaa !9
  %619 = mul nsw i64 %617, %618
  %620 = add nsw i64 %616, %619
  %621 = getelementptr inbounds double, ptr %614, i64 %620
  store double 0.000000e+00, ptr %621, align 8, !tbaa !11
  %622 = load ptr, ptr %36, align 8, !tbaa !5
  %623 = load i64, ptr %78, align 8, !tbaa !9
  %624 = add nsw i64 %623, 3
  %625 = load i64, ptr %78, align 8, !tbaa !9
  %626 = load i64, ptr %52, align 8, !tbaa !9
  %627 = mul nsw i64 %625, %626
  %628 = add nsw i64 %624, %627
  %629 = getelementptr inbounds double, ptr %622, i64 %628
  store double 0.000000e+00, ptr %629, align 8, !tbaa !11
  br label %866

630:                                              ; preds = %592
  %631 = load ptr, ptr %36, align 8, !tbaa !5
  %632 = load i64, ptr %78, align 8, !tbaa !9
  %633 = add nsw i64 %632, 1
  %634 = load i64, ptr %78, align 8, !tbaa !9
  %635 = add nsw i64 %634, 1
  %636 = load i64, ptr %52, align 8, !tbaa !9
  %637 = mul nsw i64 %635, %636
  %638 = add nsw i64 %633, %637
  %639 = getelementptr inbounds double, ptr %631, i64 %638
  %640 = load ptr, ptr %37, align 8, !tbaa !5
  %641 = load ptr, ptr %34, align 8, !tbaa !5
  %642 = load i64, ptr %79, align 8, !tbaa !9
  %643 = shl i64 %642, 1
  %644 = sub nsw i64 %643, 1
  %645 = getelementptr inbounds double, ptr %641, i64 %644
  %646 = load ptr, ptr %35, align 8, !tbaa !5
  %647 = load i64, ptr %79, align 8, !tbaa !9
  %648 = shl i64 %647, 1
  %649 = sub nsw i64 %648, 1
  %650 = getelementptr inbounds double, ptr %646, i64 %649
  %651 = load ptr, ptr %34, align 8, !tbaa !5
  %652 = load i64, ptr %79, align 8, !tbaa !9
  %653 = mul nsw i64 %652, 2
  %654 = getelementptr inbounds double, ptr %651, i64 %653
  %655 = load ptr, ptr %35, align 8, !tbaa !5
  %656 = load i64, ptr %79, align 8, !tbaa !9
  %657 = mul nsw i64 %656, 2
  %658 = getelementptr inbounds double, ptr %655, i64 %657
  %659 = getelementptr inbounds [3 x double], ptr %92, i64 0, i64 0
  %660 = call i32 @dlaqr1_(ptr noundef @c__3, ptr noundef %639, ptr noundef %640, ptr noundef %645, ptr noundef %650, ptr noundef %654, ptr noundef %658, ptr noundef %659)
  %661 = getelementptr inbounds [3 x double], ptr %92, i64 0, i64 0
  %662 = load double, ptr %661, align 16, !tbaa !11
  store double %662, ptr %113, align 8, !tbaa !11
  %663 = getelementptr inbounds [3 x double], ptr %92, i64 0, i64 1
  %664 = getelementptr inbounds [3 x double], ptr %92, i64 0, i64 0
  %665 = call i32 @dlarfg_(ptr noundef @c__3, ptr noundef %113, ptr noundef %663, ptr noundef @c__1, ptr noundef %664)
  %666 = getelementptr inbounds [3 x double], ptr %92, i64 0, i64 0
  %667 = load double, ptr %666, align 16, !tbaa !11
  %668 = load ptr, ptr %36, align 8, !tbaa !5
  %669 = load i64, ptr %78, align 8, !tbaa !9
  %670 = add nsw i64 %669, 1
  %671 = load i64, ptr %78, align 8, !tbaa !9
  %672 = load i64, ptr %52, align 8, !tbaa !9
  %673 = mul nsw i64 %671, %672
  %674 = add nsw i64 %670, %673
  %675 = getelementptr inbounds double, ptr %668, i64 %674
  %676 = load double, ptr %675, align 8, !tbaa !11
  %677 = getelementptr inbounds [3 x double], ptr %92, i64 0, i64 1
  %678 = load double, ptr %677, align 8, !tbaa !11
  %679 = load ptr, ptr %36, align 8, !tbaa !5
  %680 = load i64, ptr %78, align 8, !tbaa !9
  %681 = add nsw i64 %680, 2
  %682 = load i64, ptr %78, align 8, !tbaa !9
  %683 = load i64, ptr %52, align 8, !tbaa !9
  %684 = mul nsw i64 %682, %683
  %685 = add nsw i64 %681, %684
  %686 = getelementptr inbounds double, ptr %679, i64 %685
  %687 = load double, ptr %686, align 8, !tbaa !11
  %688 = call double @llvm.fmuladd.f64(double %678, double %687, double %676)
  %689 = fmul double %667, %688
  store double %689, ptr %121, align 8, !tbaa !11
  %690 = load ptr, ptr %36, align 8, !tbaa !5
  %691 = load i64, ptr %78, align 8, !tbaa !9
  %692 = add nsw i64 %691, 2
  %693 = load i64, ptr %78, align 8, !tbaa !9
  %694 = load i64, ptr %52, align 8, !tbaa !9
  %695 = mul nsw i64 %693, %694
  %696 = add nsw i64 %692, %695
  %697 = getelementptr inbounds double, ptr %690, i64 %696
  %698 = load double, ptr %697, align 8, !tbaa !11
  %699 = load double, ptr %121, align 8, !tbaa !11
  %700 = getelementptr inbounds [3 x double], ptr %92, i64 0, i64 1
  %701 = load double, ptr %700, align 8, !tbaa !11
  %702 = fneg double %699
  %703 = call double @llvm.fmuladd.f64(double %702, double %701, double %698)
  store double %703, ptr %71, align 8, !tbaa !11
  %704 = load double, ptr %71, align 8, !tbaa !11
  %705 = fcmp oge double %704, 0.000000e+00
  br i1 %705, label %706, label %708

706:                                              ; preds = %630
  %707 = load double, ptr %71, align 8, !tbaa !11
  br label %711

708:                                              ; preds = %630
  %709 = load double, ptr %71, align 8, !tbaa !11
  %710 = fneg double %709
  br label %711

711:                                              ; preds = %708, %706
  %712 = phi double [ %707, %706 ], [ %710, %708 ]
  %713 = load double, ptr %121, align 8, !tbaa !11
  %714 = getelementptr inbounds [3 x double], ptr %92, i64 0, i64 2
  %715 = load double, ptr %714, align 16, !tbaa !11
  %716 = fmul double %713, %715
  store double %716, ptr %72, align 8, !tbaa !11
  %717 = load double, ptr %72, align 8, !tbaa !11
  %718 = fcmp oge double %717, 0.000000e+00
  br i1 %718, label %719, label %721

719:                                              ; preds = %711
  %720 = load double, ptr %72, align 8, !tbaa !11
  br label %724

721:                                              ; preds = %711
  %722 = load double, ptr %72, align 8, !tbaa !11
  %723 = fneg double %722
  br label %724

724:                                              ; preds = %721, %719
  %725 = phi double [ %720, %719 ], [ %723, %721 ]
  %726 = fadd double %712, %725
  %727 = load double, ptr %96, align 8, !tbaa !11
  %728 = load ptr, ptr %36, align 8, !tbaa !5
  %729 = load i64, ptr %78, align 8, !tbaa !9
  %730 = load i64, ptr %78, align 8, !tbaa !9
  %731 = load i64, ptr %52, align 8, !tbaa !9
  %732 = mul nsw i64 %730, %731
  %733 = add nsw i64 %729, %732
  %734 = getelementptr inbounds double, ptr %728, i64 %733
  %735 = load double, ptr %734, align 8, !tbaa !11
  store double %735, ptr %73, align 8, !tbaa !11
  %736 = load double, ptr %73, align 8, !tbaa !11
  %737 = fcmp oge double %736, 0.000000e+00
  br i1 %737, label %738, label %740

738:                                              ; preds = %724
  %739 = load double, ptr %73, align 8, !tbaa !11
  br label %743

740:                                              ; preds = %724
  %741 = load double, ptr %73, align 8, !tbaa !11
  %742 = fneg double %741
  br label %743

743:                                              ; preds = %740, %738
  %744 = phi double [ %739, %738 ], [ %742, %740 ]
  %745 = load ptr, ptr %36, align 8, !tbaa !5
  %746 = load i64, ptr %78, align 8, !tbaa !9
  %747 = add nsw i64 %746, 1
  %748 = load i64, ptr %78, align 8, !tbaa !9
  %749 = add nsw i64 %748, 1
  %750 = load i64, ptr %52, align 8, !tbaa !9
  %751 = mul nsw i64 %749, %750
  %752 = add nsw i64 %747, %751
  %753 = getelementptr inbounds double, ptr %745, i64 %752
  %754 = load double, ptr %753, align 8, !tbaa !11
  store double %754, ptr %74, align 8, !tbaa !11
  %755 = load double, ptr %74, align 8, !tbaa !11
  %756 = fcmp oge double %755, 0.000000e+00
  br i1 %756, label %757, label %759

757:                                              ; preds = %743
  %758 = load double, ptr %74, align 8, !tbaa !11
  br label %762

759:                                              ; preds = %743
  %760 = load double, ptr %74, align 8, !tbaa !11
  %761 = fneg double %760
  br label %762

762:                                              ; preds = %759, %757
  %763 = phi double [ %758, %757 ], [ %761, %759 ]
  %764 = fadd double %744, %763
  %765 = load ptr, ptr %36, align 8, !tbaa !5
  %766 = load i64, ptr %78, align 8, !tbaa !9
  %767 = add nsw i64 %766, 2
  %768 = load i64, ptr %78, align 8, !tbaa !9
  %769 = add nsw i64 %768, 2
  %770 = load i64, ptr %52, align 8, !tbaa !9
  %771 = mul nsw i64 %769, %770
  %772 = add nsw i64 %767, %771
  %773 = getelementptr inbounds double, ptr %765, i64 %772
  %774 = load double, ptr %773, align 8, !tbaa !11
  store double %774, ptr %75, align 8, !tbaa !11
  %775 = load double, ptr %75, align 8, !tbaa !11
  %776 = fcmp oge double %775, 0.000000e+00
  br i1 %776, label %777, label %779

777:                                              ; preds = %762
  %778 = load double, ptr %75, align 8, !tbaa !11
  br label %782

779:                                              ; preds = %762
  %780 = load double, ptr %75, align 8, !tbaa !11
  %781 = fneg double %780
  br label %782

782:                                              ; preds = %779, %777
  %783 = phi double [ %778, %777 ], [ %781, %779 ]
  %784 = fadd double %764, %783
  %785 = fmul double %727, %784
  %786 = fcmp ogt double %726, %785
  br i1 %786, label %787, label %813

787:                                              ; preds = %782
  %788 = load double, ptr %101, align 8, !tbaa !11
  %789 = load ptr, ptr %36, align 8, !tbaa !5
  %790 = load i64, ptr %78, align 8, !tbaa !9
  %791 = add nsw i64 %790, 1
  %792 = load i64, ptr %78, align 8, !tbaa !9
  %793 = load i64, ptr %52, align 8, !tbaa !9
  %794 = mul nsw i64 %792, %793
  %795 = add nsw i64 %791, %794
  %796 = getelementptr inbounds double, ptr %789, i64 %795
  store double %788, ptr %796, align 8, !tbaa !11
  %797 = load ptr, ptr %36, align 8, !tbaa !5
  %798 = load i64, ptr %78, align 8, !tbaa !9
  %799 = add nsw i64 %798, 2
  %800 = load i64, ptr %78, align 8, !tbaa !9
  %801 = load i64, ptr %52, align 8, !tbaa !9
  %802 = mul nsw i64 %800, %801
  %803 = add nsw i64 %799, %802
  %804 = getelementptr inbounds double, ptr %797, i64 %803
  store double 0.000000e+00, ptr %804, align 8, !tbaa !11
  %805 = load ptr, ptr %36, align 8, !tbaa !5
  %806 = load i64, ptr %78, align 8, !tbaa !9
  %807 = add nsw i64 %806, 3
  %808 = load i64, ptr %78, align 8, !tbaa !9
  %809 = load i64, ptr %52, align 8, !tbaa !9
  %810 = mul nsw i64 %808, %809
  %811 = add nsw i64 %807, %810
  %812 = getelementptr inbounds double, ptr %805, i64 %811
  store double 0.000000e+00, ptr %812, align 8, !tbaa !11
  br label %865

813:                                              ; preds = %782
  %814 = load double, ptr %121, align 8, !tbaa !11
  %815 = load ptr, ptr %36, align 8, !tbaa !5
  %816 = load i64, ptr %78, align 8, !tbaa !9
  %817 = add nsw i64 %816, 1
  %818 = load i64, ptr %78, align 8, !tbaa !9
  %819 = load i64, ptr %52, align 8, !tbaa !9
  %820 = mul nsw i64 %818, %819
  %821 = add nsw i64 %817, %820
  %822 = getelementptr inbounds double, ptr %815, i64 %821
  %823 = load double, ptr %822, align 8, !tbaa !11
  %824 = fsub double %823, %814
  store double %824, ptr %822, align 8, !tbaa !11
  %825 = load ptr, ptr %36, align 8, !tbaa !5
  %826 = load i64, ptr %78, align 8, !tbaa !9
  %827 = add nsw i64 %826, 2
  %828 = load i64, ptr %78, align 8, !tbaa !9
  %829 = load i64, ptr %52, align 8, !tbaa !9
  %830 = mul nsw i64 %828, %829
  %831 = add nsw i64 %827, %830
  %832 = getelementptr inbounds double, ptr %825, i64 %831
  store double 0.000000e+00, ptr %832, align 8, !tbaa !11
  %833 = load ptr, ptr %36, align 8, !tbaa !5
  %834 = load i64, ptr %78, align 8, !tbaa !9
  %835 = add nsw i64 %834, 3
  %836 = load i64, ptr %78, align 8, !tbaa !9
  %837 = load i64, ptr %52, align 8, !tbaa !9
  %838 = mul nsw i64 %836, %837
  %839 = add nsw i64 %835, %838
  %840 = getelementptr inbounds double, ptr %833, i64 %839
  store double 0.000000e+00, ptr %840, align 8, !tbaa !11
  %841 = getelementptr inbounds [3 x double], ptr %92, i64 0, i64 0
  %842 = load double, ptr %841, align 16, !tbaa !11
  %843 = load ptr, ptr %42, align 8, !tbaa !5
  %844 = load i64, ptr %79, align 8, !tbaa !9
  %845 = load i64, ptr %56, align 8, !tbaa !9
  %846 = mul nsw i64 %844, %845
  %847 = add nsw i64 %846, 1
  %848 = getelementptr inbounds double, ptr %843, i64 %847
  store double %842, ptr %848, align 8, !tbaa !11
  %849 = getelementptr inbounds [3 x double], ptr %92, i64 0, i64 1
  %850 = load double, ptr %849, align 8, !tbaa !11
  %851 = load ptr, ptr %42, align 8, !tbaa !5
  %852 = load i64, ptr %79, align 8, !tbaa !9
  %853 = load i64, ptr %56, align 8, !tbaa !9
  %854 = mul nsw i64 %852, %853
  %855 = add nsw i64 %854, 2
  %856 = getelementptr inbounds double, ptr %851, i64 %855
  store double %850, ptr %856, align 8, !tbaa !11
  %857 = getelementptr inbounds [3 x double], ptr %92, i64 0, i64 2
  %858 = load double, ptr %857, align 16, !tbaa !11
  %859 = load ptr, ptr %42, align 8, !tbaa !5
  %860 = load i64, ptr %79, align 8, !tbaa !9
  %861 = load i64, ptr %56, align 8, !tbaa !9
  %862 = mul nsw i64 %860, %861
  %863 = add nsw i64 %862, 3
  %864 = getelementptr inbounds double, ptr %859, i64 %863
  store double %858, ptr %864, align 8, !tbaa !11
  br label %865

865:                                              ; preds = %813, %787
  br label %866

866:                                              ; preds = %865, %604
  br label %867

867:                                              ; preds = %866, %461
  br label %868

868:                                              ; preds = %867
  %869 = load i64, ptr %79, align 8, !tbaa !9
  %870 = add nsw i64 %869, 1
  store i64 %870, ptr %79, align 8, !tbaa !9
  br label %446, !llvm.loop !15

871:                                              ; preds = %446
  %872 = load i64, ptr %117, align 8, !tbaa !9
  %873 = load i64, ptr %89, align 8, !tbaa !9
  %874 = sub nsw i64 %873, 1
  %875 = mul nsw i64 %874, 3
  %876 = add nsw i64 %872, %875
  store i64 %876, ptr %78, align 8, !tbaa !9
  %877 = load i64, ptr %103, align 8, !tbaa !9
  %878 = icmp ne i64 %877, 0
  br i1 %878, label %879, label %997

879:                                              ; preds = %871
  %880 = load i64, ptr %78, align 8, !tbaa !9
  %881 = load ptr, ptr %31, align 8, !tbaa !5
  %882 = load i64, ptr %881, align 8, !tbaa !9
  %883 = sub nsw i64 %882, 1
  %884 = icmp eq i64 %880, %883
  br i1 %884, label %885, label %941

885:                                              ; preds = %879
  %886 = load ptr, ptr %36, align 8, !tbaa !5
  %887 = load i64, ptr %78, align 8, !tbaa !9
  %888 = add nsw i64 %887, 1
  %889 = load i64, ptr %78, align 8, !tbaa !9
  %890 = add nsw i64 %889, 1
  %891 = load i64, ptr %52, align 8, !tbaa !9
  %892 = mul nsw i64 %890, %891
  %893 = add nsw i64 %888, %892
  %894 = getelementptr inbounds double, ptr %886, i64 %893
  %895 = load ptr, ptr %37, align 8, !tbaa !5
  %896 = load ptr, ptr %34, align 8, !tbaa !5
  %897 = load i64, ptr %89, align 8, !tbaa !9
  %898 = shl i64 %897, 1
  %899 = sub nsw i64 %898, 1
  %900 = getelementptr inbounds double, ptr %896, i64 %899
  %901 = load ptr, ptr %35, align 8, !tbaa !5
  %902 = load i64, ptr %89, align 8, !tbaa !9
  %903 = shl i64 %902, 1
  %904 = sub nsw i64 %903, 1
  %905 = getelementptr inbounds double, ptr %901, i64 %904
  %906 = load ptr, ptr %34, align 8, !tbaa !5
  %907 = load i64, ptr %89, align 8, !tbaa !9
  %908 = mul nsw i64 %907, 2
  %909 = getelementptr inbounds double, ptr %906, i64 %908
  %910 = load ptr, ptr %35, align 8, !tbaa !5
  %911 = load i64, ptr %89, align 8, !tbaa !9
  %912 = mul nsw i64 %911, 2
  %913 = getelementptr inbounds double, ptr %910, i64 %912
  %914 = load ptr, ptr %42, align 8, !tbaa !5
  %915 = load i64, ptr %89, align 8, !tbaa !9
  %916 = load i64, ptr %56, align 8, !tbaa !9
  %917 = mul nsw i64 %915, %916
  %918 = add nsw i64 %917, 1
  %919 = getelementptr inbounds double, ptr %914, i64 %918
  %920 = call i32 @dlaqr1_(ptr noundef @c__2, ptr noundef %894, ptr noundef %895, ptr noundef %900, ptr noundef %905, ptr noundef %909, ptr noundef %913, ptr noundef %919)
  %921 = load ptr, ptr %42, align 8, !tbaa !5
  %922 = load i64, ptr %89, align 8, !tbaa !9
  %923 = load i64, ptr %56, align 8, !tbaa !9
  %924 = mul nsw i64 %922, %923
  %925 = add nsw i64 %924, 1
  %926 = getelementptr inbounds double, ptr %921, i64 %925
  %927 = load double, ptr %926, align 8, !tbaa !11
  store double %927, ptr %101, align 8, !tbaa !11
  %928 = load ptr, ptr %42, align 8, !tbaa !5
  %929 = load i64, ptr %89, align 8, !tbaa !9
  %930 = load i64, ptr %56, align 8, !tbaa !9
  %931 = mul nsw i64 %929, %930
  %932 = add nsw i64 %931, 2
  %933 = getelementptr inbounds double, ptr %928, i64 %932
  %934 = load ptr, ptr %42, align 8, !tbaa !5
  %935 = load i64, ptr %89, align 8, !tbaa !9
  %936 = load i64, ptr %56, align 8, !tbaa !9
  %937 = mul nsw i64 %935, %936
  %938 = add nsw i64 %937, 1
  %939 = getelementptr inbounds double, ptr %934, i64 %938
  %940 = call i32 @dlarfg_(ptr noundef @c__2, ptr noundef %101, ptr noundef %933, ptr noundef @c__1, ptr noundef %939)
  br label %996

941:                                              ; preds = %879
  %942 = load ptr, ptr %36, align 8, !tbaa !5
  %943 = load i64, ptr %78, align 8, !tbaa !9
  %944 = add nsw i64 %943, 1
  %945 = load i64, ptr %78, align 8, !tbaa !9
  %946 = load i64, ptr %52, align 8, !tbaa !9
  %947 = mul nsw i64 %945, %946
  %948 = add nsw i64 %944, %947
  %949 = getelementptr inbounds double, ptr %942, i64 %948
  %950 = load double, ptr %949, align 8, !tbaa !11
  store double %950, ptr %101, align 8, !tbaa !11
  %951 = load ptr, ptr %36, align 8, !tbaa !5
  %952 = load i64, ptr %78, align 8, !tbaa !9
  %953 = add nsw i64 %952, 2
  %954 = load i64, ptr %78, align 8, !tbaa !9
  %955 = load i64, ptr %52, align 8, !tbaa !9
  %956 = mul nsw i64 %954, %955
  %957 = add nsw i64 %953, %956
  %958 = getelementptr inbounds double, ptr %951, i64 %957
  %959 = load double, ptr %958, align 8, !tbaa !11
  %960 = load ptr, ptr %42, align 8, !tbaa !5
  %961 = load i64, ptr %89, align 8, !tbaa !9
  %962 = load i64, ptr %56, align 8, !tbaa !9
  %963 = mul nsw i64 %961, %962
  %964 = add nsw i64 %963, 2
  %965 = getelementptr inbounds double, ptr %960, i64 %964
  store double %959, ptr %965, align 8, !tbaa !11
  %966 = load ptr, ptr %42, align 8, !tbaa !5
  %967 = load i64, ptr %89, align 8, !tbaa !9
  %968 = load i64, ptr %56, align 8, !tbaa !9
  %969 = mul nsw i64 %967, %968
  %970 = add nsw i64 %969, 2
  %971 = getelementptr inbounds double, ptr %966, i64 %970
  %972 = load ptr, ptr %42, align 8, !tbaa !5
  %973 = load i64, ptr %89, align 8, !tbaa !9
  %974 = load i64, ptr %56, align 8, !tbaa !9
  %975 = mul nsw i64 %973, %974
  %976 = add nsw i64 %975, 1
  %977 = getelementptr inbounds double, ptr %972, i64 %976
  %978 = call i32 @dlarfg_(ptr noundef @c__2, ptr noundef %101, ptr noundef %971, ptr noundef @c__1, ptr noundef %977)
  %979 = load double, ptr %101, align 8, !tbaa !11
  %980 = load ptr, ptr %36, align 8, !tbaa !5
  %981 = load i64, ptr %78, align 8, !tbaa !9
  %982 = add nsw i64 %981, 1
  %983 = load i64, ptr %78, align 8, !tbaa !9
  %984 = load i64, ptr %52, align 8, !tbaa !9
  %985 = mul nsw i64 %983, %984
  %986 = add nsw i64 %982, %985
  %987 = getelementptr inbounds double, ptr %980, i64 %986
  store double %979, ptr %987, align 8, !tbaa !11
  %988 = load ptr, ptr %36, align 8, !tbaa !5
  %989 = load i64, ptr %78, align 8, !tbaa !9
  %990 = add nsw i64 %989, 2
  %991 = load i64, ptr %78, align 8, !tbaa !9
  %992 = load i64, ptr %52, align 8, !tbaa !9
  %993 = mul nsw i64 %991, %992
  %994 = add nsw i64 %990, %993
  %995 = getelementptr inbounds double, ptr %988, i64 %994
  store double 0.000000e+00, ptr %995, align 8, !tbaa !11
  br label %996

996:                                              ; preds = %941, %885
  br label %997

997:                                              ; preds = %996, %871
  %998 = load i64, ptr %114, align 8, !tbaa !9
  %999 = icmp ne i64 %998, 0
  br i1 %999, label %1000, label %1012

1000:                                             ; preds = %997
  %1001 = load i64, ptr %115, align 8, !tbaa !9
  %1002 = load ptr, ptr %32, align 8, !tbaa !5
  %1003 = load i64, ptr %1002, align 8, !tbaa !9
  %1004 = icmp sle i64 %1001, %1003
  br i1 %1004, label %1005, label %1007

1005:                                             ; preds = %1000
  %1006 = load i64, ptr %115, align 8, !tbaa !9
  br label %1010

1007:                                             ; preds = %1000
  %1008 = load ptr, ptr %32, align 8, !tbaa !5
  %1009 = load i64, ptr %1008, align 8, !tbaa !9
  br label %1010

1010:                                             ; preds = %1007, %1005
  %1011 = phi i64 [ %1006, %1005 ], [ %1009, %1007 ]
  store i64 %1011, ptr %107, align 8, !tbaa !9
  br label %1023

1012:                                             ; preds = %997
  %1013 = load ptr, ptr %27, align 8, !tbaa !5
  %1014 = load i64, ptr %1013, align 8, !tbaa !9
  %1015 = icmp ne i64 %1014, 0
  br i1 %1015, label %1016, label %1019

1016:                                             ; preds = %1012
  %1017 = load ptr, ptr %30, align 8, !tbaa !5
  %1018 = load i64, ptr %1017, align 8, !tbaa !9
  store i64 %1018, ptr %107, align 8, !tbaa !9
  br label %1022

1019:                                             ; preds = %1012
  %1020 = load ptr, ptr %32, align 8, !tbaa !5
  %1021 = load i64, ptr %1020, align 8, !tbaa !9
  store i64 %1021, ptr %107, align 8, !tbaa !9
  br label %1022

1022:                                             ; preds = %1019, %1016
  br label %1023

1023:                                             ; preds = %1022, %1010
  %1024 = load i64, ptr %107, align 8, !tbaa !9
  store i64 %1024, ptr %67, align 8, !tbaa !9
  %1025 = load ptr, ptr %31, align 8, !tbaa !5
  %1026 = load i64, ptr %1025, align 8, !tbaa !9
  %1027 = load i64, ptr %117, align 8, !tbaa !9
  %1028 = icmp sge i64 %1026, %1027
  br i1 %1028, label %1029, label %1032

1029:                                             ; preds = %1023
  %1030 = load ptr, ptr %31, align 8, !tbaa !5
  %1031 = load i64, ptr %1030, align 8, !tbaa !9
  br label %1034

1032:                                             ; preds = %1023
  %1033 = load i64, ptr %117, align 8, !tbaa !9
  br label %1034

1034:                                             ; preds = %1032, %1029
  %1035 = phi i64 [ %1031, %1029 ], [ %1033, %1032 ]
  store i64 %1035, ptr %77, align 8, !tbaa !9
  br label %1036

1036:                                             ; preds = %1172, %1034
  %1037 = load i64, ptr %77, align 8, !tbaa !9
  %1038 = load i64, ptr %67, align 8, !tbaa !9
  %1039 = icmp sle i64 %1037, %1038
  br i1 %1039, label %1040, label %1175

1040:                                             ; preds = %1036
  %1041 = load i64, ptr %108, align 8, !tbaa !9
  store i64 %1041, ptr %68, align 8, !tbaa !9
  %1042 = load i64, ptr %77, align 8, !tbaa !9
  %1043 = load i64, ptr %117, align 8, !tbaa !9
  %1044 = sub nsw i64 %1042, %1043
  %1045 = add nsw i64 %1044, 2
  %1046 = sdiv i64 %1045, 3
  store i64 %1046, ptr %69, align 8, !tbaa !9
  %1047 = load i64, ptr %68, align 8, !tbaa !9
  %1048 = load i64, ptr %69, align 8, !tbaa !9
  %1049 = icmp sle i64 %1047, %1048
  br i1 %1049, label %1050, label %1052

1050:                                             ; preds = %1040
  %1051 = load i64, ptr %68, align 8, !tbaa !9
  br label %1054

1052:                                             ; preds = %1040
  %1053 = load i64, ptr %69, align 8, !tbaa !9
  br label %1054

1054:                                             ; preds = %1052, %1050
  %1055 = phi i64 [ %1051, %1050 ], [ %1053, %1052 ]
  store i64 %1055, ptr %104, align 8, !tbaa !9
  %1056 = load i64, ptr %104, align 8, !tbaa !9
  store i64 %1056, ptr %68, align 8, !tbaa !9
  %1057 = load i64, ptr %112, align 8, !tbaa !9
  store i64 %1057, ptr %79, align 8, !tbaa !9
  br label %1058

1058:                                             ; preds = %1168, %1054
  %1059 = load i64, ptr %79, align 8, !tbaa !9
  %1060 = load i64, ptr %68, align 8, !tbaa !9
  %1061 = icmp sle i64 %1059, %1060
  br i1 %1061, label %1062, label %1171

1062:                                             ; preds = %1058
  %1063 = load i64, ptr %117, align 8, !tbaa !9
  %1064 = load i64, ptr %79, align 8, !tbaa !9
  %1065 = sub nsw i64 %1064, 1
  %1066 = mul nsw i64 %1065, 3
  %1067 = add nsw i64 %1063, %1066
  store i64 %1067, ptr %78, align 8, !tbaa !9
  %1068 = load ptr, ptr %42, align 8, !tbaa !5
  %1069 = load i64, ptr %79, align 8, !tbaa !9
  %1070 = load i64, ptr %56, align 8, !tbaa !9
  %1071 = mul nsw i64 %1069, %1070
  %1072 = add nsw i64 %1071, 1
  %1073 = getelementptr inbounds double, ptr %1068, i64 %1072
  %1074 = load double, ptr %1073, align 8, !tbaa !11
  %1075 = load ptr, ptr %36, align 8, !tbaa !5
  %1076 = load i64, ptr %78, align 8, !tbaa !9
  %1077 = add nsw i64 %1076, 1
  %1078 = load i64, ptr %77, align 8, !tbaa !9
  %1079 = load i64, ptr %52, align 8, !tbaa !9
  %1080 = mul nsw i64 %1078, %1079
  %1081 = add nsw i64 %1077, %1080
  %1082 = getelementptr inbounds double, ptr %1075, i64 %1081
  %1083 = load double, ptr %1082, align 8, !tbaa !11
  %1084 = load ptr, ptr %42, align 8, !tbaa !5
  %1085 = load i64, ptr %79, align 8, !tbaa !9
  %1086 = load i64, ptr %56, align 8, !tbaa !9
  %1087 = mul nsw i64 %1085, %1086
  %1088 = add nsw i64 %1087, 2
  %1089 = getelementptr inbounds double, ptr %1084, i64 %1088
  %1090 = load double, ptr %1089, align 8, !tbaa !11
  %1091 = load ptr, ptr %36, align 8, !tbaa !5
  %1092 = load i64, ptr %78, align 8, !tbaa !9
  %1093 = add nsw i64 %1092, 2
  %1094 = load i64, ptr %77, align 8, !tbaa !9
  %1095 = load i64, ptr %52, align 8, !tbaa !9
  %1096 = mul nsw i64 %1094, %1095
  %1097 = add nsw i64 %1093, %1096
  %1098 = getelementptr inbounds double, ptr %1091, i64 %1097
  %1099 = load double, ptr %1098, align 8, !tbaa !11
  %1100 = call double @llvm.fmuladd.f64(double %1090, double %1099, double %1083)
  %1101 = load ptr, ptr %42, align 8, !tbaa !5
  %1102 = load i64, ptr %79, align 8, !tbaa !9
  %1103 = load i64, ptr %56, align 8, !tbaa !9
  %1104 = mul nsw i64 %1102, %1103
  %1105 = add nsw i64 %1104, 3
  %1106 = getelementptr inbounds double, ptr %1101, i64 %1105
  %1107 = load double, ptr %1106, align 8, !tbaa !11
  %1108 = load ptr, ptr %36, align 8, !tbaa !5
  %1109 = load i64, ptr %78, align 8, !tbaa !9
  %1110 = add nsw i64 %1109, 3
  %1111 = load i64, ptr %77, align 8, !tbaa !9
  %1112 = load i64, ptr %52, align 8, !tbaa !9
  %1113 = mul nsw i64 %1111, %1112
  %1114 = add nsw i64 %1110, %1113
  %1115 = getelementptr inbounds double, ptr %1108, i64 %1114
  %1116 = load double, ptr %1115, align 8, !tbaa !11
  %1117 = call double @llvm.fmuladd.f64(double %1107, double %1116, double %1100)
  %1118 = fmul double %1074, %1117
  store double %1118, ptr %121, align 8, !tbaa !11
  %1119 = load double, ptr %121, align 8, !tbaa !11
  %1120 = load ptr, ptr %36, align 8, !tbaa !5
  %1121 = load i64, ptr %78, align 8, !tbaa !9
  %1122 = add nsw i64 %1121, 1
  %1123 = load i64, ptr %77, align 8, !tbaa !9
  %1124 = load i64, ptr %52, align 8, !tbaa !9
  %1125 = mul nsw i64 %1123, %1124
  %1126 = add nsw i64 %1122, %1125
  %1127 = getelementptr inbounds double, ptr %1120, i64 %1126
  %1128 = load double, ptr %1127, align 8, !tbaa !11
  %1129 = fsub double %1128, %1119
  store double %1129, ptr %1127, align 8, !tbaa !11
  %1130 = load double, ptr %121, align 8, !tbaa !11
  %1131 = load ptr, ptr %42, align 8, !tbaa !5
  %1132 = load i64, ptr %79, align 8, !tbaa !9
  %1133 = load i64, ptr %56, align 8, !tbaa !9
  %1134 = mul nsw i64 %1132, %1133
  %1135 = add nsw i64 %1134, 2
  %1136 = getelementptr inbounds double, ptr %1131, i64 %1135
  %1137 = load double, ptr %1136, align 8, !tbaa !11
  %1138 = load ptr, ptr %36, align 8, !tbaa !5
  %1139 = load i64, ptr %78, align 8, !tbaa !9
  %1140 = add nsw i64 %1139, 2
  %1141 = load i64, ptr %77, align 8, !tbaa !9
  %1142 = load i64, ptr %52, align 8, !tbaa !9
  %1143 = mul nsw i64 %1141, %1142
  %1144 = add nsw i64 %1140, %1143
  %1145 = getelementptr inbounds double, ptr %1138, i64 %1144
  %1146 = load double, ptr %1145, align 8, !tbaa !11
  %1147 = fneg double %1130
  %1148 = call double @llvm.fmuladd.f64(double %1147, double %1137, double %1146)
  store double %1148, ptr %1145, align 8, !tbaa !11
  %1149 = load double, ptr %121, align 8, !tbaa !11
  %1150 = load ptr, ptr %42, align 8, !tbaa !5
  %1151 = load i64, ptr %79, align 8, !tbaa !9
  %1152 = load i64, ptr %56, align 8, !tbaa !9
  %1153 = mul nsw i64 %1151, %1152
  %1154 = add nsw i64 %1153, 3
  %1155 = getelementptr inbounds double, ptr %1150, i64 %1154
  %1156 = load double, ptr %1155, align 8, !tbaa !11
  %1157 = load ptr, ptr %36, align 8, !tbaa !5
  %1158 = load i64, ptr %78, align 8, !tbaa !9
  %1159 = add nsw i64 %1158, 3
  %1160 = load i64, ptr %77, align 8, !tbaa !9
  %1161 = load i64, ptr %52, align 8, !tbaa !9
  %1162 = mul nsw i64 %1160, %1161
  %1163 = add nsw i64 %1159, %1162
  %1164 = getelementptr inbounds double, ptr %1157, i64 %1163
  %1165 = load double, ptr %1164, align 8, !tbaa !11
  %1166 = fneg double %1149
  %1167 = call double @llvm.fmuladd.f64(double %1166, double %1156, double %1165)
  store double %1167, ptr %1164, align 8, !tbaa !11
  br label %1168

1168:                                             ; preds = %1062
  %1169 = load i64, ptr %79, align 8, !tbaa !9
  %1170 = add nsw i64 %1169, 1
  store i64 %1170, ptr %79, align 8, !tbaa !9
  br label %1058, !llvm.loop !16

1171:                                             ; preds = %1058
  br label %1172

1172:                                             ; preds = %1171
  %1173 = load i64, ptr %77, align 8, !tbaa !9
  %1174 = add nsw i64 %1173, 1
  store i64 %1174, ptr %77, align 8, !tbaa !9
  br label %1036, !llvm.loop !17

1175:                                             ; preds = %1036
  %1176 = load i64, ptr %103, align 8, !tbaa !9
  %1177 = icmp ne i64 %1176, 0
  br i1 %1177, label %1178, label %1271

1178:                                             ; preds = %1175
  %1179 = load i64, ptr %117, align 8, !tbaa !9
  %1180 = load i64, ptr %89, align 8, !tbaa !9
  %1181 = sub nsw i64 %1180, 1
  %1182 = mul nsw i64 %1181, 3
  %1183 = add nsw i64 %1179, %1182
  store i64 %1183, ptr %78, align 8, !tbaa !9
  %1184 = load i64, ptr %78, align 8, !tbaa !9
  %1185 = add nsw i64 %1184, 1
  store i64 %1185, ptr %67, align 8, !tbaa !9
  %1186 = load i64, ptr %107, align 8, !tbaa !9
  store i64 %1186, ptr %68, align 8, !tbaa !9
  %1187 = load i64, ptr %67, align 8, !tbaa !9
  %1188 = load ptr, ptr %31, align 8, !tbaa !5
  %1189 = load i64, ptr %1188, align 8, !tbaa !9
  %1190 = icmp sge i64 %1187, %1189
  br i1 %1190, label %1191, label %1193

1191:                                             ; preds = %1178
  %1192 = load i64, ptr %67, align 8, !tbaa !9
  br label %1196

1193:                                             ; preds = %1178
  %1194 = load ptr, ptr %31, align 8, !tbaa !5
  %1195 = load i64, ptr %1194, align 8, !tbaa !9
  br label %1196

1196:                                             ; preds = %1193, %1191
  %1197 = phi i64 [ %1192, %1191 ], [ %1195, %1193 ]
  store i64 %1197, ptr %77, align 8, !tbaa !9
  br label %1198

1198:                                             ; preds = %1267, %1196
  %1199 = load i64, ptr %77, align 8, !tbaa !9
  %1200 = load i64, ptr %68, align 8, !tbaa !9
  %1201 = icmp sle i64 %1199, %1200
  br i1 %1201, label %1202, label %1270

1202:                                             ; preds = %1198
  %1203 = load ptr, ptr %42, align 8, !tbaa !5
  %1204 = load i64, ptr %89, align 8, !tbaa !9
  %1205 = load i64, ptr %56, align 8, !tbaa !9
  %1206 = mul nsw i64 %1204, %1205
  %1207 = add nsw i64 %1206, 1
  %1208 = getelementptr inbounds double, ptr %1203, i64 %1207
  %1209 = load double, ptr %1208, align 8, !tbaa !11
  %1210 = load ptr, ptr %36, align 8, !tbaa !5
  %1211 = load i64, ptr %78, align 8, !tbaa !9
  %1212 = add nsw i64 %1211, 1
  %1213 = load i64, ptr %77, align 8, !tbaa !9
  %1214 = load i64, ptr %52, align 8, !tbaa !9
  %1215 = mul nsw i64 %1213, %1214
  %1216 = add nsw i64 %1212, %1215
  %1217 = getelementptr inbounds double, ptr %1210, i64 %1216
  %1218 = load double, ptr %1217, align 8, !tbaa !11
  %1219 = load ptr, ptr %42, align 8, !tbaa !5
  %1220 = load i64, ptr %89, align 8, !tbaa !9
  %1221 = load i64, ptr %56, align 8, !tbaa !9
  %1222 = mul nsw i64 %1220, %1221
  %1223 = add nsw i64 %1222, 2
  %1224 = getelementptr inbounds double, ptr %1219, i64 %1223
  %1225 = load double, ptr %1224, align 8, !tbaa !11
  %1226 = load ptr, ptr %36, align 8, !tbaa !5
  %1227 = load i64, ptr %78, align 8, !tbaa !9
  %1228 = add nsw i64 %1227, 2
  %1229 = load i64, ptr %77, align 8, !tbaa !9
  %1230 = load i64, ptr %52, align 8, !tbaa !9
  %1231 = mul nsw i64 %1229, %1230
  %1232 = add nsw i64 %1228, %1231
  %1233 = getelementptr inbounds double, ptr %1226, i64 %1232
  %1234 = load double, ptr %1233, align 8, !tbaa !11
  %1235 = call double @llvm.fmuladd.f64(double %1225, double %1234, double %1218)
  %1236 = fmul double %1209, %1235
  store double %1236, ptr %121, align 8, !tbaa !11
  %1237 = load double, ptr %121, align 8, !tbaa !11
  %1238 = load ptr, ptr %36, align 8, !tbaa !5
  %1239 = load i64, ptr %78, align 8, !tbaa !9
  %1240 = add nsw i64 %1239, 1
  %1241 = load i64, ptr %77, align 8, !tbaa !9
  %1242 = load i64, ptr %52, align 8, !tbaa !9
  %1243 = mul nsw i64 %1241, %1242
  %1244 = add nsw i64 %1240, %1243
  %1245 = getelementptr inbounds double, ptr %1238, i64 %1244
  %1246 = load double, ptr %1245, align 8, !tbaa !11
  %1247 = fsub double %1246, %1237
  store double %1247, ptr %1245, align 8, !tbaa !11
  %1248 = load double, ptr %121, align 8, !tbaa !11
  %1249 = load ptr, ptr %42, align 8, !tbaa !5
  %1250 = load i64, ptr %89, align 8, !tbaa !9
  %1251 = load i64, ptr %56, align 8, !tbaa !9
  %1252 = mul nsw i64 %1250, %1251
  %1253 = add nsw i64 %1252, 2
  %1254 = getelementptr inbounds double, ptr %1249, i64 %1253
  %1255 = load double, ptr %1254, align 8, !tbaa !11
  %1256 = load ptr, ptr %36, align 8, !tbaa !5
  %1257 = load i64, ptr %78, align 8, !tbaa !9
  %1258 = add nsw i64 %1257, 2
  %1259 = load i64, ptr %77, align 8, !tbaa !9
  %1260 = load i64, ptr %52, align 8, !tbaa !9
  %1261 = mul nsw i64 %1259, %1260
  %1262 = add nsw i64 %1258, %1261
  %1263 = getelementptr inbounds double, ptr %1256, i64 %1262
  %1264 = load double, ptr %1263, align 8, !tbaa !11
  %1265 = fneg double %1248
  %1266 = call double @llvm.fmuladd.f64(double %1265, double %1255, double %1264)
  store double %1266, ptr %1263, align 8, !tbaa !11
  br label %1267

1267:                                             ; preds = %1202
  %1268 = load i64, ptr %77, align 8, !tbaa !9
  %1269 = add nsw i64 %1268, 1
  store i64 %1269, ptr %77, align 8, !tbaa !9
  br label %1198, !llvm.loop !18

1270:                                             ; preds = %1198
  br label %1271

1271:                                             ; preds = %1270, %1175
  %1272 = load i64, ptr %114, align 8, !tbaa !9
  %1273 = icmp ne i64 %1272, 0
  br i1 %1273, label %1274, label %1286

1274:                                             ; preds = %1271
  %1275 = load ptr, ptr %31, align 8, !tbaa !5
  %1276 = load i64, ptr %1275, align 8, !tbaa !9
  %1277 = load i64, ptr %116, align 8, !tbaa !9
  %1278 = icmp sge i64 %1276, %1277
  br i1 %1278, label %1279, label %1282

1279:                                             ; preds = %1274
  %1280 = load ptr, ptr %31, align 8, !tbaa !5
  %1281 = load i64, ptr %1280, align 8, !tbaa !9
  br label %1284

1282:                                             ; preds = %1274
  %1283 = load i64, ptr %116, align 8, !tbaa !9
  br label %1284

1284:                                             ; preds = %1282, %1279
  %1285 = phi i64 [ %1281, %1279 ], [ %1283, %1282 ]
  store i64 %1285, ptr %110, align 8, !tbaa !9
  br label %1295

1286:                                             ; preds = %1271
  %1287 = load ptr, ptr %27, align 8, !tbaa !5
  %1288 = load i64, ptr %1287, align 8, !tbaa !9
  %1289 = icmp ne i64 %1288, 0
  br i1 %1289, label %1290, label %1291

1290:                                             ; preds = %1286
  store i64 1, ptr %110, align 8, !tbaa !9
  br label %1294

1291:                                             ; preds = %1286
  %1292 = load ptr, ptr %31, align 8, !tbaa !5
  %1293 = load i64, ptr %1292, align 8, !tbaa !9
  store i64 %1293, ptr %110, align 8, !tbaa !9
  br label %1294

1294:                                             ; preds = %1291, %1290
  br label %1295

1295:                                             ; preds = %1294, %1284
  %1296 = load i64, ptr %108, align 8, !tbaa !9
  store i64 %1296, ptr %68, align 8, !tbaa !9
  %1297 = load i64, ptr %112, align 8, !tbaa !9
  store i64 %1297, ptr %79, align 8, !tbaa !9
  br label %1298

1298:                                             ; preds = %1690, %1295
  %1299 = load i64, ptr %79, align 8, !tbaa !9
  %1300 = load i64, ptr %68, align 8, !tbaa !9
  %1301 = icmp sle i64 %1299, %1300
  br i1 %1301, label %1302, label %1693

1302:                                             ; preds = %1298
  %1303 = load ptr, ptr %42, align 8, !tbaa !5
  %1304 = load i64, ptr %79, align 8, !tbaa !9
  %1305 = load i64, ptr %56, align 8, !tbaa !9
  %1306 = mul nsw i64 %1304, %1305
  %1307 = add nsw i64 %1306, 1
  %1308 = getelementptr inbounds double, ptr %1303, i64 %1307
  %1309 = load double, ptr %1308, align 8, !tbaa !11
  %1310 = fcmp une double %1309, 0.000000e+00
  br i1 %1310, label %1311, label %1689

1311:                                             ; preds = %1302
  %1312 = load i64, ptr %117, align 8, !tbaa !9
  %1313 = load i64, ptr %79, align 8, !tbaa !9
  %1314 = sub nsw i64 %1313, 1
  %1315 = mul nsw i64 %1314, 3
  %1316 = add nsw i64 %1312, %1315
  store i64 %1316, ptr %78, align 8, !tbaa !9
  %1317 = load ptr, ptr %32, align 8, !tbaa !5
  %1318 = load i64, ptr %1317, align 8, !tbaa !9
  store i64 %1318, ptr %69, align 8, !tbaa !9
  %1319 = load i64, ptr %78, align 8, !tbaa !9
  %1320 = add nsw i64 %1319, 3
  store i64 %1320, ptr %70, align 8, !tbaa !9
  %1321 = load i64, ptr %69, align 8, !tbaa !9
  %1322 = load i64, ptr %70, align 8, !tbaa !9
  %1323 = icmp sle i64 %1321, %1322
  br i1 %1323, label %1324, label %1326

1324:                                             ; preds = %1311
  %1325 = load i64, ptr %69, align 8, !tbaa !9
  br label %1328

1326:                                             ; preds = %1311
  %1327 = load i64, ptr %70, align 8, !tbaa !9
  br label %1328

1328:                                             ; preds = %1326, %1324
  %1329 = phi i64 [ %1325, %1324 ], [ %1327, %1326 ]
  store i64 %1329, ptr %67, align 8, !tbaa !9
  %1330 = load i64, ptr %110, align 8, !tbaa !9
  store i64 %1330, ptr %77, align 8, !tbaa !9
  br label %1331

1331:                                             ; preds = %1436, %1328
  %1332 = load i64, ptr %77, align 8, !tbaa !9
  %1333 = load i64, ptr %67, align 8, !tbaa !9
  %1334 = icmp sle i64 %1332, %1333
  br i1 %1334, label %1335, label %1439

1335:                                             ; preds = %1331
  %1336 = load ptr, ptr %42, align 8, !tbaa !5
  %1337 = load i64, ptr %79, align 8, !tbaa !9
  %1338 = load i64, ptr %56, align 8, !tbaa !9
  %1339 = mul nsw i64 %1337, %1338
  %1340 = add nsw i64 %1339, 1
  %1341 = getelementptr inbounds double, ptr %1336, i64 %1340
  %1342 = load double, ptr %1341, align 8, !tbaa !11
  %1343 = load ptr, ptr %36, align 8, !tbaa !5
  %1344 = load i64, ptr %77, align 8, !tbaa !9
  %1345 = load i64, ptr %78, align 8, !tbaa !9
  %1346 = add nsw i64 %1345, 1
  %1347 = load i64, ptr %52, align 8, !tbaa !9
  %1348 = mul nsw i64 %1346, %1347
  %1349 = add nsw i64 %1344, %1348
  %1350 = getelementptr inbounds double, ptr %1343, i64 %1349
  %1351 = load double, ptr %1350, align 8, !tbaa !11
  %1352 = load ptr, ptr %42, align 8, !tbaa !5
  %1353 = load i64, ptr %79, align 8, !tbaa !9
  %1354 = load i64, ptr %56, align 8, !tbaa !9
  %1355 = mul nsw i64 %1353, %1354
  %1356 = add nsw i64 %1355, 2
  %1357 = getelementptr inbounds double, ptr %1352, i64 %1356
  %1358 = load double, ptr %1357, align 8, !tbaa !11
  %1359 = load ptr, ptr %36, align 8, !tbaa !5
  %1360 = load i64, ptr %77, align 8, !tbaa !9
  %1361 = load i64, ptr %78, align 8, !tbaa !9
  %1362 = add nsw i64 %1361, 2
  %1363 = load i64, ptr %52, align 8, !tbaa !9
  %1364 = mul nsw i64 %1362, %1363
  %1365 = add nsw i64 %1360, %1364
  %1366 = getelementptr inbounds double, ptr %1359, i64 %1365
  %1367 = load double, ptr %1366, align 8, !tbaa !11
  %1368 = call double @llvm.fmuladd.f64(double %1358, double %1367, double %1351)
  %1369 = load ptr, ptr %42, align 8, !tbaa !5
  %1370 = load i64, ptr %79, align 8, !tbaa !9
  %1371 = load i64, ptr %56, align 8, !tbaa !9
  %1372 = mul nsw i64 %1370, %1371
  %1373 = add nsw i64 %1372, 3
  %1374 = getelementptr inbounds double, ptr %1369, i64 %1373
  %1375 = load double, ptr %1374, align 8, !tbaa !11
  %1376 = load ptr, ptr %36, align 8, !tbaa !5
  %1377 = load i64, ptr %77, align 8, !tbaa !9
  %1378 = load i64, ptr %78, align 8, !tbaa !9
  %1379 = add nsw i64 %1378, 3
  %1380 = load i64, ptr %52, align 8, !tbaa !9
  %1381 = mul nsw i64 %1379, %1380
  %1382 = add nsw i64 %1377, %1381
  %1383 = getelementptr inbounds double, ptr %1376, i64 %1382
  %1384 = load double, ptr %1383, align 8, !tbaa !11
  %1385 = call double @llvm.fmuladd.f64(double %1375, double %1384, double %1368)
  %1386 = fmul double %1342, %1385
  store double %1386, ptr %121, align 8, !tbaa !11
  %1387 = load double, ptr %121, align 8, !tbaa !11
  %1388 = load ptr, ptr %36, align 8, !tbaa !5
  %1389 = load i64, ptr %77, align 8, !tbaa !9
  %1390 = load i64, ptr %78, align 8, !tbaa !9
  %1391 = add nsw i64 %1390, 1
  %1392 = load i64, ptr %52, align 8, !tbaa !9
  %1393 = mul nsw i64 %1391, %1392
  %1394 = add nsw i64 %1389, %1393
  %1395 = getelementptr inbounds double, ptr %1388, i64 %1394
  %1396 = load double, ptr %1395, align 8, !tbaa !11
  %1397 = fsub double %1396, %1387
  store double %1397, ptr %1395, align 8, !tbaa !11
  %1398 = load double, ptr %121, align 8, !tbaa !11
  %1399 = load ptr, ptr %42, align 8, !tbaa !5
  %1400 = load i64, ptr %79, align 8, !tbaa !9
  %1401 = load i64, ptr %56, align 8, !tbaa !9
  %1402 = mul nsw i64 %1400, %1401
  %1403 = add nsw i64 %1402, 2
  %1404 = getelementptr inbounds double, ptr %1399, i64 %1403
  %1405 = load double, ptr %1404, align 8, !tbaa !11
  %1406 = load ptr, ptr %36, align 8, !tbaa !5
  %1407 = load i64, ptr %77, align 8, !tbaa !9
  %1408 = load i64, ptr %78, align 8, !tbaa !9
  %1409 = add nsw i64 %1408, 2
  %1410 = load i64, ptr %52, align 8, !tbaa !9
  %1411 = mul nsw i64 %1409, %1410
  %1412 = add nsw i64 %1407, %1411
  %1413 = getelementptr inbounds double, ptr %1406, i64 %1412
  %1414 = load double, ptr %1413, align 8, !tbaa !11
  %1415 = fneg double %1398
  %1416 = call double @llvm.fmuladd.f64(double %1415, double %1405, double %1414)
  store double %1416, ptr %1413, align 8, !tbaa !11
  %1417 = load double, ptr %121, align 8, !tbaa !11
  %1418 = load ptr, ptr %42, align 8, !tbaa !5
  %1419 = load i64, ptr %79, align 8, !tbaa !9
  %1420 = load i64, ptr %56, align 8, !tbaa !9
  %1421 = mul nsw i64 %1419, %1420
  %1422 = add nsw i64 %1421, 3
  %1423 = getelementptr inbounds double, ptr %1418, i64 %1422
  %1424 = load double, ptr %1423, align 8, !tbaa !11
  %1425 = load ptr, ptr %36, align 8, !tbaa !5
  %1426 = load i64, ptr %77, align 8, !tbaa !9
  %1427 = load i64, ptr %78, align 8, !tbaa !9
  %1428 = add nsw i64 %1427, 3
  %1429 = load i64, ptr %52, align 8, !tbaa !9
  %1430 = mul nsw i64 %1428, %1429
  %1431 = add nsw i64 %1426, %1430
  %1432 = getelementptr inbounds double, ptr %1425, i64 %1431
  %1433 = load double, ptr %1432, align 8, !tbaa !11
  %1434 = fneg double %1417
  %1435 = call double @llvm.fmuladd.f64(double %1434, double %1424, double %1433)
  store double %1435, ptr %1432, align 8, !tbaa !11
  br label %1436

1436:                                             ; preds = %1335
  %1437 = load i64, ptr %77, align 8, !tbaa !9
  %1438 = add nsw i64 %1437, 1
  store i64 %1438, ptr %77, align 8, !tbaa !9
  br label %1331, !llvm.loop !19

1439:                                             ; preds = %1331
  %1440 = load i64, ptr %114, align 8, !tbaa !9
  %1441 = icmp ne i64 %1440, 0
  br i1 %1441, label %1442, label %1569

1442:                                             ; preds = %1439
  %1443 = load i64, ptr %78, align 8, !tbaa !9
  %1444 = load i64, ptr %116, align 8, !tbaa !9
  %1445 = sub nsw i64 %1443, %1444
  store i64 %1445, ptr %95, align 8, !tbaa !9
  store i64 1, ptr %67, align 8, !tbaa !9
  %1446 = load ptr, ptr %31, align 8, !tbaa !5
  %1447 = load i64, ptr %1446, align 8, !tbaa !9
  %1448 = load i64, ptr %116, align 8, !tbaa !9
  %1449 = sub nsw i64 %1447, %1448
  store i64 %1449, ptr %69, align 8, !tbaa !9
  %1450 = load i64, ptr %94, align 8, !tbaa !9
  store i64 %1450, ptr %70, align 8, !tbaa !9
  %1451 = load i64, ptr %67, align 8, !tbaa !9
  %1452 = load i64, ptr %69, align 8, !tbaa !9
  %1453 = icmp sge i64 %1451, %1452
  br i1 %1453, label %1454, label %1456

1454:                                             ; preds = %1442
  %1455 = load i64, ptr %67, align 8, !tbaa !9
  br label %1458

1456:                                             ; preds = %1442
  %1457 = load i64, ptr %69, align 8, !tbaa !9
  br label %1458

1458:                                             ; preds = %1456, %1454
  %1459 = phi i64 [ %1455, %1454 ], [ %1457, %1456 ]
  store i64 %1459, ptr %77, align 8, !tbaa !9
  br label %1460

1460:                                             ; preds = %1565, %1458
  %1461 = load i64, ptr %77, align 8, !tbaa !9
  %1462 = load i64, ptr %70, align 8, !tbaa !9
  %1463 = icmp sle i64 %1461, %1462
  br i1 %1463, label %1464, label %1568

1464:                                             ; preds = %1460
  %1465 = load ptr, ptr %42, align 8, !tbaa !5
  %1466 = load i64, ptr %79, align 8, !tbaa !9
  %1467 = load i64, ptr %56, align 8, !tbaa !9
  %1468 = mul nsw i64 %1466, %1467
  %1469 = add nsw i64 %1468, 1
  %1470 = getelementptr inbounds double, ptr %1465, i64 %1469
  %1471 = load double, ptr %1470, align 8, !tbaa !11
  %1472 = load ptr, ptr %44, align 8, !tbaa !5
  %1473 = load i64, ptr %77, align 8, !tbaa !9
  %1474 = load i64, ptr %95, align 8, !tbaa !9
  %1475 = add nsw i64 %1474, 1
  %1476 = load i64, ptr %54, align 8, !tbaa !9
  %1477 = mul nsw i64 %1475, %1476
  %1478 = add nsw i64 %1473, %1477
  %1479 = getelementptr inbounds double, ptr %1472, i64 %1478
  %1480 = load double, ptr %1479, align 8, !tbaa !11
  %1481 = load ptr, ptr %42, align 8, !tbaa !5
  %1482 = load i64, ptr %79, align 8, !tbaa !9
  %1483 = load i64, ptr %56, align 8, !tbaa !9
  %1484 = mul nsw i64 %1482, %1483
  %1485 = add nsw i64 %1484, 2
  %1486 = getelementptr inbounds double, ptr %1481, i64 %1485
  %1487 = load double, ptr %1486, align 8, !tbaa !11
  %1488 = load ptr, ptr %44, align 8, !tbaa !5
  %1489 = load i64, ptr %77, align 8, !tbaa !9
  %1490 = load i64, ptr %95, align 8, !tbaa !9
  %1491 = add nsw i64 %1490, 2
  %1492 = load i64, ptr %54, align 8, !tbaa !9
  %1493 = mul nsw i64 %1491, %1492
  %1494 = add nsw i64 %1489, %1493
  %1495 = getelementptr inbounds double, ptr %1488, i64 %1494
  %1496 = load double, ptr %1495, align 8, !tbaa !11
  %1497 = call double @llvm.fmuladd.f64(double %1487, double %1496, double %1480)
  %1498 = load ptr, ptr %42, align 8, !tbaa !5
  %1499 = load i64, ptr %79, align 8, !tbaa !9
  %1500 = load i64, ptr %56, align 8, !tbaa !9
  %1501 = mul nsw i64 %1499, %1500
  %1502 = add nsw i64 %1501, 3
  %1503 = getelementptr inbounds double, ptr %1498, i64 %1502
  %1504 = load double, ptr %1503, align 8, !tbaa !11
  %1505 = load ptr, ptr %44, align 8, !tbaa !5
  %1506 = load i64, ptr %77, align 8, !tbaa !9
  %1507 = load i64, ptr %95, align 8, !tbaa !9
  %1508 = add nsw i64 %1507, 3
  %1509 = load i64, ptr %54, align 8, !tbaa !9
  %1510 = mul nsw i64 %1508, %1509
  %1511 = add nsw i64 %1506, %1510
  %1512 = getelementptr inbounds double, ptr %1505, i64 %1511
  %1513 = load double, ptr %1512, align 8, !tbaa !11
  %1514 = call double @llvm.fmuladd.f64(double %1504, double %1513, double %1497)
  %1515 = fmul double %1471, %1514
  store double %1515, ptr %121, align 8, !tbaa !11
  %1516 = load double, ptr %121, align 8, !tbaa !11
  %1517 = load ptr, ptr %44, align 8, !tbaa !5
  %1518 = load i64, ptr %77, align 8, !tbaa !9
  %1519 = load i64, ptr %95, align 8, !tbaa !9
  %1520 = add nsw i64 %1519, 1
  %1521 = load i64, ptr %54, align 8, !tbaa !9
  %1522 = mul nsw i64 %1520, %1521
  %1523 = add nsw i64 %1518, %1522
  %1524 = getelementptr inbounds double, ptr %1517, i64 %1523
  %1525 = load double, ptr %1524, align 8, !tbaa !11
  %1526 = fsub double %1525, %1516
  store double %1526, ptr %1524, align 8, !tbaa !11
  %1527 = load double, ptr %121, align 8, !tbaa !11
  %1528 = load ptr, ptr %42, align 8, !tbaa !5
  %1529 = load i64, ptr %79, align 8, !tbaa !9
  %1530 = load i64, ptr %56, align 8, !tbaa !9
  %1531 = mul nsw i64 %1529, %1530
  %1532 = add nsw i64 %1531, 2
  %1533 = getelementptr inbounds double, ptr %1528, i64 %1532
  %1534 = load double, ptr %1533, align 8, !tbaa !11
  %1535 = load ptr, ptr %44, align 8, !tbaa !5
  %1536 = load i64, ptr %77, align 8, !tbaa !9
  %1537 = load i64, ptr %95, align 8, !tbaa !9
  %1538 = add nsw i64 %1537, 2
  %1539 = load i64, ptr %54, align 8, !tbaa !9
  %1540 = mul nsw i64 %1538, %1539
  %1541 = add nsw i64 %1536, %1540
  %1542 = getelementptr inbounds double, ptr %1535, i64 %1541
  %1543 = load double, ptr %1542, align 8, !tbaa !11
  %1544 = fneg double %1527
  %1545 = call double @llvm.fmuladd.f64(double %1544, double %1534, double %1543)
  store double %1545, ptr %1542, align 8, !tbaa !11
  %1546 = load double, ptr %121, align 8, !tbaa !11
  %1547 = load ptr, ptr %42, align 8, !tbaa !5
  %1548 = load i64, ptr %79, align 8, !tbaa !9
  %1549 = load i64, ptr %56, align 8, !tbaa !9
  %1550 = mul nsw i64 %1548, %1549
  %1551 = add nsw i64 %1550, 3
  %1552 = getelementptr inbounds double, ptr %1547, i64 %1551
  %1553 = load double, ptr %1552, align 8, !tbaa !11
  %1554 = load ptr, ptr %44, align 8, !tbaa !5
  %1555 = load i64, ptr %77, align 8, !tbaa !9
  %1556 = load i64, ptr %95, align 8, !tbaa !9
  %1557 = add nsw i64 %1556, 3
  %1558 = load i64, ptr %54, align 8, !tbaa !9
  %1559 = mul nsw i64 %1557, %1558
  %1560 = add nsw i64 %1555, %1559
  %1561 = getelementptr inbounds double, ptr %1554, i64 %1560
  %1562 = load double, ptr %1561, align 8, !tbaa !11
  %1563 = fneg double %1546
  %1564 = call double @llvm.fmuladd.f64(double %1563, double %1553, double %1562)
  store double %1564, ptr %1561, align 8, !tbaa !11
  br label %1565

1565:                                             ; preds = %1464
  %1566 = load i64, ptr %77, align 8, !tbaa !9
  %1567 = add nsw i64 %1566, 1
  store i64 %1567, ptr %77, align 8, !tbaa !9
  br label %1460, !llvm.loop !20

1568:                                             ; preds = %1460
  br label %1688

1569:                                             ; preds = %1439
  %1570 = load ptr, ptr %28, align 8, !tbaa !5
  %1571 = load i64, ptr %1570, align 8, !tbaa !9
  %1572 = icmp ne i64 %1571, 0
  br i1 %1572, label %1573, label %1687

1573:                                             ; preds = %1569
  %1574 = load ptr, ptr %39, align 8, !tbaa !5
  %1575 = load i64, ptr %1574, align 8, !tbaa !9
  store i64 %1575, ptr %70, align 8, !tbaa !9
  %1576 = load ptr, ptr %38, align 8, !tbaa !5
  %1577 = load i64, ptr %1576, align 8, !tbaa !9
  store i64 %1577, ptr %77, align 8, !tbaa !9
  br label %1578

1578:                                             ; preds = %1683, %1573
  %1579 = load i64, ptr %77, align 8, !tbaa !9
  %1580 = load i64, ptr %70, align 8, !tbaa !9
  %1581 = icmp sle i64 %1579, %1580
  br i1 %1581, label %1582, label %1686

1582:                                             ; preds = %1578
  %1583 = load ptr, ptr %42, align 8, !tbaa !5
  %1584 = load i64, ptr %79, align 8, !tbaa !9
  %1585 = load i64, ptr %56, align 8, !tbaa !9
  %1586 = mul nsw i64 %1584, %1585
  %1587 = add nsw i64 %1586, 1
  %1588 = getelementptr inbounds double, ptr %1583, i64 %1587
  %1589 = load double, ptr %1588, align 8, !tbaa !11
  %1590 = load ptr, ptr %40, align 8, !tbaa !5
  %1591 = load i64, ptr %77, align 8, !tbaa !9
  %1592 = load i64, ptr %78, align 8, !tbaa !9
  %1593 = add nsw i64 %1592, 1
  %1594 = load i64, ptr %62, align 8, !tbaa !9
  %1595 = mul nsw i64 %1593, %1594
  %1596 = add nsw i64 %1591, %1595
  %1597 = getelementptr inbounds double, ptr %1590, i64 %1596
  %1598 = load double, ptr %1597, align 8, !tbaa !11
  %1599 = load ptr, ptr %42, align 8, !tbaa !5
  %1600 = load i64, ptr %79, align 8, !tbaa !9
  %1601 = load i64, ptr %56, align 8, !tbaa !9
  %1602 = mul nsw i64 %1600, %1601
  %1603 = add nsw i64 %1602, 2
  %1604 = getelementptr inbounds double, ptr %1599, i64 %1603
  %1605 = load double, ptr %1604, align 8, !tbaa !11
  %1606 = load ptr, ptr %40, align 8, !tbaa !5
  %1607 = load i64, ptr %77, align 8, !tbaa !9
  %1608 = load i64, ptr %78, align 8, !tbaa !9
  %1609 = add nsw i64 %1608, 2
  %1610 = load i64, ptr %62, align 8, !tbaa !9
  %1611 = mul nsw i64 %1609, %1610
  %1612 = add nsw i64 %1607, %1611
  %1613 = getelementptr inbounds double, ptr %1606, i64 %1612
  %1614 = load double, ptr %1613, align 8, !tbaa !11
  %1615 = call double @llvm.fmuladd.f64(double %1605, double %1614, double %1598)
  %1616 = load ptr, ptr %42, align 8, !tbaa !5
  %1617 = load i64, ptr %79, align 8, !tbaa !9
  %1618 = load i64, ptr %56, align 8, !tbaa !9
  %1619 = mul nsw i64 %1617, %1618
  %1620 = add nsw i64 %1619, 3
  %1621 = getelementptr inbounds double, ptr %1616, i64 %1620
  %1622 = load double, ptr %1621, align 8, !tbaa !11
  %1623 = load ptr, ptr %40, align 8, !tbaa !5
  %1624 = load i64, ptr %77, align 8, !tbaa !9
  %1625 = load i64, ptr %78, align 8, !tbaa !9
  %1626 = add nsw i64 %1625, 3
  %1627 = load i64, ptr %62, align 8, !tbaa !9
  %1628 = mul nsw i64 %1626, %1627
  %1629 = add nsw i64 %1624, %1628
  %1630 = getelementptr inbounds double, ptr %1623, i64 %1629
  %1631 = load double, ptr %1630, align 8, !tbaa !11
  %1632 = call double @llvm.fmuladd.f64(double %1622, double %1631, double %1615)
  %1633 = fmul double %1589, %1632
  store double %1633, ptr %121, align 8, !tbaa !11
  %1634 = load double, ptr %121, align 8, !tbaa !11
  %1635 = load ptr, ptr %40, align 8, !tbaa !5
  %1636 = load i64, ptr %77, align 8, !tbaa !9
  %1637 = load i64, ptr %78, align 8, !tbaa !9
  %1638 = add nsw i64 %1637, 1
  %1639 = load i64, ptr %62, align 8, !tbaa !9
  %1640 = mul nsw i64 %1638, %1639
  %1641 = add nsw i64 %1636, %1640
  %1642 = getelementptr inbounds double, ptr %1635, i64 %1641
  %1643 = load double, ptr %1642, align 8, !tbaa !11
  %1644 = fsub double %1643, %1634
  store double %1644, ptr %1642, align 8, !tbaa !11
  %1645 = load double, ptr %121, align 8, !tbaa !11
  %1646 = load ptr, ptr %42, align 8, !tbaa !5
  %1647 = load i64, ptr %79, align 8, !tbaa !9
  %1648 = load i64, ptr %56, align 8, !tbaa !9
  %1649 = mul nsw i64 %1647, %1648
  %1650 = add nsw i64 %1649, 2
  %1651 = getelementptr inbounds double, ptr %1646, i64 %1650
  %1652 = load double, ptr %1651, align 8, !tbaa !11
  %1653 = load ptr, ptr %40, align 8, !tbaa !5
  %1654 = load i64, ptr %77, align 8, !tbaa !9
  %1655 = load i64, ptr %78, align 8, !tbaa !9
  %1656 = add nsw i64 %1655, 2
  %1657 = load i64, ptr %62, align 8, !tbaa !9
  %1658 = mul nsw i64 %1656, %1657
  %1659 = add nsw i64 %1654, %1658
  %1660 = getelementptr inbounds double, ptr %1653, i64 %1659
  %1661 = load double, ptr %1660, align 8, !tbaa !11
  %1662 = fneg double %1645
  %1663 = call double @llvm.fmuladd.f64(double %1662, double %1652, double %1661)
  store double %1663, ptr %1660, align 8, !tbaa !11
  %1664 = load double, ptr %121, align 8, !tbaa !11
  %1665 = load ptr, ptr %42, align 8, !tbaa !5
  %1666 = load i64, ptr %79, align 8, !tbaa !9
  %1667 = load i64, ptr %56, align 8, !tbaa !9
  %1668 = mul nsw i64 %1666, %1667
  %1669 = add nsw i64 %1668, 3
  %1670 = getelementptr inbounds double, ptr %1665, i64 %1669
  %1671 = load double, ptr %1670, align 8, !tbaa !11
  %1672 = load ptr, ptr %40, align 8, !tbaa !5
  %1673 = load i64, ptr %77, align 8, !tbaa !9
  %1674 = load i64, ptr %78, align 8, !tbaa !9
  %1675 = add nsw i64 %1674, 3
  %1676 = load i64, ptr %62, align 8, !tbaa !9
  %1677 = mul nsw i64 %1675, %1676
  %1678 = add nsw i64 %1673, %1677
  %1679 = getelementptr inbounds double, ptr %1672, i64 %1678
  %1680 = load double, ptr %1679, align 8, !tbaa !11
  %1681 = fneg double %1664
  %1682 = call double @llvm.fmuladd.f64(double %1681, double %1671, double %1680)
  store double %1682, ptr %1679, align 8, !tbaa !11
  br label %1683

1683:                                             ; preds = %1582
  %1684 = load i64, ptr %77, align 8, !tbaa !9
  %1685 = add nsw i64 %1684, 1
  store i64 %1685, ptr %77, align 8, !tbaa !9
  br label %1578, !llvm.loop !21

1686:                                             ; preds = %1578
  br label %1687

1687:                                             ; preds = %1686, %1569
  br label %1688

1688:                                             ; preds = %1687, %1568
  br label %1689

1689:                                             ; preds = %1688, %1302
  br label %1690

1690:                                             ; preds = %1689
  %1691 = load i64, ptr %79, align 8, !tbaa !9
  %1692 = add nsw i64 %1691, 1
  store i64 %1692, ptr %79, align 8, !tbaa !9
  br label %1298, !llvm.loop !22

1693:                                             ; preds = %1298
  %1694 = load i64, ptr %117, align 8, !tbaa !9
  %1695 = load i64, ptr %89, align 8, !tbaa !9
  %1696 = sub nsw i64 %1695, 1
  %1697 = mul nsw i64 %1696, 3
  %1698 = add nsw i64 %1694, %1697
  store i64 %1698, ptr %78, align 8, !tbaa !9
  %1699 = load i64, ptr %103, align 8, !tbaa !9
  %1700 = icmp ne i64 %1699, 0
  br i1 %1700, label %1701, label %1975

1701:                                             ; preds = %1693
  %1702 = load ptr, ptr %42, align 8, !tbaa !5
  %1703 = load i64, ptr %89, align 8, !tbaa !9
  %1704 = load i64, ptr %56, align 8, !tbaa !9
  %1705 = mul nsw i64 %1703, %1704
  %1706 = add nsw i64 %1705, 1
  %1707 = getelementptr inbounds double, ptr %1702, i64 %1706
  %1708 = load double, ptr %1707, align 8, !tbaa !11
  %1709 = fcmp une double %1708, 0.000000e+00
  br i1 %1709, label %1710, label %1975

1710:                                             ; preds = %1701
  %1711 = load ptr, ptr %32, align 8, !tbaa !5
  %1712 = load i64, ptr %1711, align 8, !tbaa !9
  store i64 %1712, ptr %70, align 8, !tbaa !9
  %1713 = load i64, ptr %78, align 8, !tbaa !9
  %1714 = add nsw i64 %1713, 3
  store i64 %1714, ptr %67, align 8, !tbaa !9
  %1715 = load i64, ptr %70, align 8, !tbaa !9
  %1716 = load i64, ptr %67, align 8, !tbaa !9
  %1717 = icmp sle i64 %1715, %1716
  br i1 %1717, label %1718, label %1720

1718:                                             ; preds = %1710
  %1719 = load i64, ptr %70, align 8, !tbaa !9
  br label %1722

1720:                                             ; preds = %1710
  %1721 = load i64, ptr %67, align 8, !tbaa !9
  br label %1722

1722:                                             ; preds = %1720, %1718
  %1723 = phi i64 [ %1719, %1718 ], [ %1721, %1720 ]
  store i64 %1723, ptr %68, align 8, !tbaa !9
  %1724 = load i64, ptr %110, align 8, !tbaa !9
  store i64 %1724, ptr %77, align 8, !tbaa !9
  br label %1725

1725:                                             ; preds = %1794, %1722
  %1726 = load i64, ptr %77, align 8, !tbaa !9
  %1727 = load i64, ptr %68, align 8, !tbaa !9
  %1728 = icmp sle i64 %1726, %1727
  br i1 %1728, label %1729, label %1797

1729:                                             ; preds = %1725
  %1730 = load ptr, ptr %42, align 8, !tbaa !5
  %1731 = load i64, ptr %89, align 8, !tbaa !9
  %1732 = load i64, ptr %56, align 8, !tbaa !9
  %1733 = mul nsw i64 %1731, %1732
  %1734 = add nsw i64 %1733, 1
  %1735 = getelementptr inbounds double, ptr %1730, i64 %1734
  %1736 = load double, ptr %1735, align 8, !tbaa !11
  %1737 = load ptr, ptr %36, align 8, !tbaa !5
  %1738 = load i64, ptr %77, align 8, !tbaa !9
  %1739 = load i64, ptr %78, align 8, !tbaa !9
  %1740 = add nsw i64 %1739, 1
  %1741 = load i64, ptr %52, align 8, !tbaa !9
  %1742 = mul nsw i64 %1740, %1741
  %1743 = add nsw i64 %1738, %1742
  %1744 = getelementptr inbounds double, ptr %1737, i64 %1743
  %1745 = load double, ptr %1744, align 8, !tbaa !11
  %1746 = load ptr, ptr %42, align 8, !tbaa !5
  %1747 = load i64, ptr %89, align 8, !tbaa !9
  %1748 = load i64, ptr %56, align 8, !tbaa !9
  %1749 = mul nsw i64 %1747, %1748
  %1750 = add nsw i64 %1749, 2
  %1751 = getelementptr inbounds double, ptr %1746, i64 %1750
  %1752 = load double, ptr %1751, align 8, !tbaa !11
  %1753 = load ptr, ptr %36, align 8, !tbaa !5
  %1754 = load i64, ptr %77, align 8, !tbaa !9
  %1755 = load i64, ptr %78, align 8, !tbaa !9
  %1756 = add nsw i64 %1755, 2
  %1757 = load i64, ptr %52, align 8, !tbaa !9
  %1758 = mul nsw i64 %1756, %1757
  %1759 = add nsw i64 %1754, %1758
  %1760 = getelementptr inbounds double, ptr %1753, i64 %1759
  %1761 = load double, ptr %1760, align 8, !tbaa !11
  %1762 = call double @llvm.fmuladd.f64(double %1752, double %1761, double %1745)
  %1763 = fmul double %1736, %1762
  store double %1763, ptr %121, align 8, !tbaa !11
  %1764 = load double, ptr %121, align 8, !tbaa !11
  %1765 = load ptr, ptr %36, align 8, !tbaa !5
  %1766 = load i64, ptr %77, align 8, !tbaa !9
  %1767 = load i64, ptr %78, align 8, !tbaa !9
  %1768 = add nsw i64 %1767, 1
  %1769 = load i64, ptr %52, align 8, !tbaa !9
  %1770 = mul nsw i64 %1768, %1769
  %1771 = add nsw i64 %1766, %1770
  %1772 = getelementptr inbounds double, ptr %1765, i64 %1771
  %1773 = load double, ptr %1772, align 8, !tbaa !11
  %1774 = fsub double %1773, %1764
  store double %1774, ptr %1772, align 8, !tbaa !11
  %1775 = load double, ptr %121, align 8, !tbaa !11
  %1776 = load ptr, ptr %42, align 8, !tbaa !5
  %1777 = load i64, ptr %89, align 8, !tbaa !9
  %1778 = load i64, ptr %56, align 8, !tbaa !9
  %1779 = mul nsw i64 %1777, %1778
  %1780 = add nsw i64 %1779, 2
  %1781 = getelementptr inbounds double, ptr %1776, i64 %1780
  %1782 = load double, ptr %1781, align 8, !tbaa !11
  %1783 = load ptr, ptr %36, align 8, !tbaa !5
  %1784 = load i64, ptr %77, align 8, !tbaa !9
  %1785 = load i64, ptr %78, align 8, !tbaa !9
  %1786 = add nsw i64 %1785, 2
  %1787 = load i64, ptr %52, align 8, !tbaa !9
  %1788 = mul nsw i64 %1786, %1787
  %1789 = add nsw i64 %1784, %1788
  %1790 = getelementptr inbounds double, ptr %1783, i64 %1789
  %1791 = load double, ptr %1790, align 8, !tbaa !11
  %1792 = fneg double %1775
  %1793 = call double @llvm.fmuladd.f64(double %1792, double %1782, double %1791)
  store double %1793, ptr %1790, align 8, !tbaa !11
  br label %1794

1794:                                             ; preds = %1729
  %1795 = load i64, ptr %77, align 8, !tbaa !9
  %1796 = add nsw i64 %1795, 1
  store i64 %1796, ptr %77, align 8, !tbaa !9
  br label %1725, !llvm.loop !23

1797:                                             ; preds = %1725
  %1798 = load i64, ptr %114, align 8, !tbaa !9
  %1799 = icmp ne i64 %1798, 0
  br i1 %1799, label %1800, label %1891

1800:                                             ; preds = %1797
  %1801 = load i64, ptr %78, align 8, !tbaa !9
  %1802 = load i64, ptr %116, align 8, !tbaa !9
  %1803 = sub nsw i64 %1801, %1802
  store i64 %1803, ptr %95, align 8, !tbaa !9
  store i64 1, ptr %68, align 8, !tbaa !9
  %1804 = load ptr, ptr %31, align 8, !tbaa !5
  %1805 = load i64, ptr %1804, align 8, !tbaa !9
  %1806 = load i64, ptr %116, align 8, !tbaa !9
  %1807 = sub nsw i64 %1805, %1806
  store i64 %1807, ptr %70, align 8, !tbaa !9
  %1808 = load i64, ptr %94, align 8, !tbaa !9
  store i64 %1808, ptr %67, align 8, !tbaa !9
  %1809 = load i64, ptr %68, align 8, !tbaa !9
  %1810 = load i64, ptr %70, align 8, !tbaa !9
  %1811 = icmp sge i64 %1809, %1810
  br i1 %1811, label %1812, label %1814

1812:                                             ; preds = %1800
  %1813 = load i64, ptr %68, align 8, !tbaa !9
  br label %1816

1814:                                             ; preds = %1800
  %1815 = load i64, ptr %70, align 8, !tbaa !9
  br label %1816

1816:                                             ; preds = %1814, %1812
  %1817 = phi i64 [ %1813, %1812 ], [ %1815, %1814 ]
  store i64 %1817, ptr %77, align 8, !tbaa !9
  br label %1818

1818:                                             ; preds = %1887, %1816
  %1819 = load i64, ptr %77, align 8, !tbaa !9
  %1820 = load i64, ptr %67, align 8, !tbaa !9
  %1821 = icmp sle i64 %1819, %1820
  br i1 %1821, label %1822, label %1890

1822:                                             ; preds = %1818
  %1823 = load ptr, ptr %42, align 8, !tbaa !5
  %1824 = load i64, ptr %89, align 8, !tbaa !9
  %1825 = load i64, ptr %56, align 8, !tbaa !9
  %1826 = mul nsw i64 %1824, %1825
  %1827 = add nsw i64 %1826, 1
  %1828 = getelementptr inbounds double, ptr %1823, i64 %1827
  %1829 = load double, ptr %1828, align 8, !tbaa !11
  %1830 = load ptr, ptr %44, align 8, !tbaa !5
  %1831 = load i64, ptr %77, align 8, !tbaa !9
  %1832 = load i64, ptr %95, align 8, !tbaa !9
  %1833 = add nsw i64 %1832, 1
  %1834 = load i64, ptr %54, align 8, !tbaa !9
  %1835 = mul nsw i64 %1833, %1834
  %1836 = add nsw i64 %1831, %1835
  %1837 = getelementptr inbounds double, ptr %1830, i64 %1836
  %1838 = load double, ptr %1837, align 8, !tbaa !11
  %1839 = load ptr, ptr %42, align 8, !tbaa !5
  %1840 = load i64, ptr %89, align 8, !tbaa !9
  %1841 = load i64, ptr %56, align 8, !tbaa !9
  %1842 = mul nsw i64 %1840, %1841
  %1843 = add nsw i64 %1842, 2
  %1844 = getelementptr inbounds double, ptr %1839, i64 %1843
  %1845 = load double, ptr %1844, align 8, !tbaa !11
  %1846 = load ptr, ptr %44, align 8, !tbaa !5
  %1847 = load i64, ptr %77, align 8, !tbaa !9
  %1848 = load i64, ptr %95, align 8, !tbaa !9
  %1849 = add nsw i64 %1848, 2
  %1850 = load i64, ptr %54, align 8, !tbaa !9
  %1851 = mul nsw i64 %1849, %1850
  %1852 = add nsw i64 %1847, %1851
  %1853 = getelementptr inbounds double, ptr %1846, i64 %1852
  %1854 = load double, ptr %1853, align 8, !tbaa !11
  %1855 = call double @llvm.fmuladd.f64(double %1845, double %1854, double %1838)
  %1856 = fmul double %1829, %1855
  store double %1856, ptr %121, align 8, !tbaa !11
  %1857 = load double, ptr %121, align 8, !tbaa !11
  %1858 = load ptr, ptr %44, align 8, !tbaa !5
  %1859 = load i64, ptr %77, align 8, !tbaa !9
  %1860 = load i64, ptr %95, align 8, !tbaa !9
  %1861 = add nsw i64 %1860, 1
  %1862 = load i64, ptr %54, align 8, !tbaa !9
  %1863 = mul nsw i64 %1861, %1862
  %1864 = add nsw i64 %1859, %1863
  %1865 = getelementptr inbounds double, ptr %1858, i64 %1864
  %1866 = load double, ptr %1865, align 8, !tbaa !11
  %1867 = fsub double %1866, %1857
  store double %1867, ptr %1865, align 8, !tbaa !11
  %1868 = load double, ptr %121, align 8, !tbaa !11
  %1869 = load ptr, ptr %42, align 8, !tbaa !5
  %1870 = load i64, ptr %89, align 8, !tbaa !9
  %1871 = load i64, ptr %56, align 8, !tbaa !9
  %1872 = mul nsw i64 %1870, %1871
  %1873 = add nsw i64 %1872, 2
  %1874 = getelementptr inbounds double, ptr %1869, i64 %1873
  %1875 = load double, ptr %1874, align 8, !tbaa !11
  %1876 = load ptr, ptr %44, align 8, !tbaa !5
  %1877 = load i64, ptr %77, align 8, !tbaa !9
  %1878 = load i64, ptr %95, align 8, !tbaa !9
  %1879 = add nsw i64 %1878, 2
  %1880 = load i64, ptr %54, align 8, !tbaa !9
  %1881 = mul nsw i64 %1879, %1880
  %1882 = add nsw i64 %1877, %1881
  %1883 = getelementptr inbounds double, ptr %1876, i64 %1882
  %1884 = load double, ptr %1883, align 8, !tbaa !11
  %1885 = fneg double %1868
  %1886 = call double @llvm.fmuladd.f64(double %1885, double %1875, double %1884)
  store double %1886, ptr %1883, align 8, !tbaa !11
  br label %1887

1887:                                             ; preds = %1822
  %1888 = load i64, ptr %77, align 8, !tbaa !9
  %1889 = add nsw i64 %1888, 1
  store i64 %1889, ptr %77, align 8, !tbaa !9
  br label %1818, !llvm.loop !24

1890:                                             ; preds = %1818
  br label %1974

1891:                                             ; preds = %1797
  %1892 = load ptr, ptr %28, align 8, !tbaa !5
  %1893 = load i64, ptr %1892, align 8, !tbaa !9
  %1894 = icmp ne i64 %1893, 0
  br i1 %1894, label %1895, label %1973

1895:                                             ; preds = %1891
  %1896 = load ptr, ptr %39, align 8, !tbaa !5
  %1897 = load i64, ptr %1896, align 8, !tbaa !9
  store i64 %1897, ptr %67, align 8, !tbaa !9
  %1898 = load ptr, ptr %38, align 8, !tbaa !5
  %1899 = load i64, ptr %1898, align 8, !tbaa !9
  store i64 %1899, ptr %77, align 8, !tbaa !9
  br label %1900

1900:                                             ; preds = %1969, %1895
  %1901 = load i64, ptr %77, align 8, !tbaa !9
  %1902 = load i64, ptr %67, align 8, !tbaa !9
  %1903 = icmp sle i64 %1901, %1902
  br i1 %1903, label %1904, label %1972

1904:                                             ; preds = %1900
  %1905 = load ptr, ptr %42, align 8, !tbaa !5
  %1906 = load i64, ptr %89, align 8, !tbaa !9
  %1907 = load i64, ptr %56, align 8, !tbaa !9
  %1908 = mul nsw i64 %1906, %1907
  %1909 = add nsw i64 %1908, 1
  %1910 = getelementptr inbounds double, ptr %1905, i64 %1909
  %1911 = load double, ptr %1910, align 8, !tbaa !11
  %1912 = load ptr, ptr %40, align 8, !tbaa !5
  %1913 = load i64, ptr %77, align 8, !tbaa !9
  %1914 = load i64, ptr %78, align 8, !tbaa !9
  %1915 = add nsw i64 %1914, 1
  %1916 = load i64, ptr %62, align 8, !tbaa !9
  %1917 = mul nsw i64 %1915, %1916
  %1918 = add nsw i64 %1913, %1917
  %1919 = getelementptr inbounds double, ptr %1912, i64 %1918
  %1920 = load double, ptr %1919, align 8, !tbaa !11
  %1921 = load ptr, ptr %42, align 8, !tbaa !5
  %1922 = load i64, ptr %89, align 8, !tbaa !9
  %1923 = load i64, ptr %56, align 8, !tbaa !9
  %1924 = mul nsw i64 %1922, %1923
  %1925 = add nsw i64 %1924, 2
  %1926 = getelementptr inbounds double, ptr %1921, i64 %1925
  %1927 = load double, ptr %1926, align 8, !tbaa !11
  %1928 = load ptr, ptr %40, align 8, !tbaa !5
  %1929 = load i64, ptr %77, align 8, !tbaa !9
  %1930 = load i64, ptr %78, align 8, !tbaa !9
  %1931 = add nsw i64 %1930, 2
  %1932 = load i64, ptr %62, align 8, !tbaa !9
  %1933 = mul nsw i64 %1931, %1932
  %1934 = add nsw i64 %1929, %1933
  %1935 = getelementptr inbounds double, ptr %1928, i64 %1934
  %1936 = load double, ptr %1935, align 8, !tbaa !11
  %1937 = call double @llvm.fmuladd.f64(double %1927, double %1936, double %1920)
  %1938 = fmul double %1911, %1937
  store double %1938, ptr %121, align 8, !tbaa !11
  %1939 = load double, ptr %121, align 8, !tbaa !11
  %1940 = load ptr, ptr %40, align 8, !tbaa !5
  %1941 = load i64, ptr %77, align 8, !tbaa !9
  %1942 = load i64, ptr %78, align 8, !tbaa !9
  %1943 = add nsw i64 %1942, 1
  %1944 = load i64, ptr %62, align 8, !tbaa !9
  %1945 = mul nsw i64 %1943, %1944
  %1946 = add nsw i64 %1941, %1945
  %1947 = getelementptr inbounds double, ptr %1940, i64 %1946
  %1948 = load double, ptr %1947, align 8, !tbaa !11
  %1949 = fsub double %1948, %1939
  store double %1949, ptr %1947, align 8, !tbaa !11
  %1950 = load double, ptr %121, align 8, !tbaa !11
  %1951 = load ptr, ptr %42, align 8, !tbaa !5
  %1952 = load i64, ptr %89, align 8, !tbaa !9
  %1953 = load i64, ptr %56, align 8, !tbaa !9
  %1954 = mul nsw i64 %1952, %1953
  %1955 = add nsw i64 %1954, 2
  %1956 = getelementptr inbounds double, ptr %1951, i64 %1955
  %1957 = load double, ptr %1956, align 8, !tbaa !11
  %1958 = load ptr, ptr %40, align 8, !tbaa !5
  %1959 = load i64, ptr %77, align 8, !tbaa !9
  %1960 = load i64, ptr %78, align 8, !tbaa !9
  %1961 = add nsw i64 %1960, 2
  %1962 = load i64, ptr %62, align 8, !tbaa !9
  %1963 = mul nsw i64 %1961, %1962
  %1964 = add nsw i64 %1959, %1963
  %1965 = getelementptr inbounds double, ptr %1958, i64 %1964
  %1966 = load double, ptr %1965, align 8, !tbaa !11
  %1967 = fneg double %1950
  %1968 = call double @llvm.fmuladd.f64(double %1967, double %1957, double %1966)
  store double %1968, ptr %1965, align 8, !tbaa !11
  br label %1969

1969:                                             ; preds = %1904
  %1970 = load i64, ptr %77, align 8, !tbaa !9
  %1971 = add nsw i64 %1970, 1
  store i64 %1971, ptr %77, align 8, !tbaa !9
  br label %1900, !llvm.loop !25

1972:                                             ; preds = %1900
  br label %1973

1973:                                             ; preds = %1972, %1891
  br label %1974

1974:                                             ; preds = %1973, %1890
  br label %1975

1975:                                             ; preds = %1974, %1701, %1693
  %1976 = load i64, ptr %112, align 8, !tbaa !9
  store i64 %1976, ptr %122, align 8, !tbaa !9
  %1977 = load i64, ptr %117, align 8, !tbaa !9
  %1978 = load i64, ptr %122, align 8, !tbaa !9
  %1979 = sub nsw i64 %1978, 1
  %1980 = mul nsw i64 %1979, 3
  %1981 = add nsw i64 %1977, %1980
  %1982 = load ptr, ptr %31, align 8, !tbaa !5
  %1983 = load i64, ptr %1982, align 8, !tbaa !9
  %1984 = icmp slt i64 %1981, %1983
  br i1 %1984, label %1985, label %1988

1985:                                             ; preds = %1975
  %1986 = load i64, ptr %122, align 8, !tbaa !9
  %1987 = add nsw i64 %1986, 1
  store i64 %1987, ptr %122, align 8, !tbaa !9
  br label %1988

1988:                                             ; preds = %1985, %1975
  %1989 = load i64, ptr %108, align 8, !tbaa !9
  store i64 %1989, ptr %104, align 8, !tbaa !9
  %1990 = load i64, ptr %103, align 8, !tbaa !9
  %1991 = icmp ne i64 %1990, 0
  br i1 %1991, label %1992, label %1995

1992:                                             ; preds = %1988
  %1993 = load i64, ptr %104, align 8, !tbaa !9
  %1994 = add nsw i64 %1993, 1
  store i64 %1994, ptr %104, align 8, !tbaa !9
  br label %1995

1995:                                             ; preds = %1992, %1988
  %1996 = load i64, ptr %117, align 8, !tbaa !9
  %1997 = load ptr, ptr %32, align 8, !tbaa !5
  %1998 = load i64, ptr %1997, align 8, !tbaa !9
  %1999 = sub nsw i64 %1998, 2
  %2000 = icmp eq i64 %1996, %1999
  br i1 %2000, label %2001, label %2004

2001:                                             ; preds = %1995
  %2002 = load i64, ptr %104, align 8, !tbaa !9
  %2003 = add nsw i64 %2002, 1
  store i64 %2003, ptr %104, align 8, !tbaa !9
  br label %2004

2004:                                             ; preds = %2001, %1995
  %2005 = load i64, ptr %104, align 8, !tbaa !9
  store i64 %2005, ptr %67, align 8, !tbaa !9
  %2006 = load i64, ptr %122, align 8, !tbaa !9
  store i64 %2006, ptr %79, align 8, !tbaa !9
  br label %2007

2007:                                             ; preds = %2523, %2004
  %2008 = load i64, ptr %79, align 8, !tbaa !9
  %2009 = load i64, ptr %67, align 8, !tbaa !9
  %2010 = icmp sle i64 %2008, %2009
  br i1 %2010, label %2011, label %2526

2011:                                             ; preds = %2007
  %2012 = load ptr, ptr %32, align 8, !tbaa !5
  %2013 = load i64, ptr %2012, align 8, !tbaa !9
  %2014 = sub nsw i64 %2013, 1
  store i64 %2014, ptr %68, align 8, !tbaa !9
  %2015 = load i64, ptr %117, align 8, !tbaa !9
  %2016 = load i64, ptr %79, align 8, !tbaa !9
  %2017 = sub nsw i64 %2016, 1
  %2018 = mul nsw i64 %2017, 3
  %2019 = add nsw i64 %2015, %2018
  store i64 %2019, ptr %70, align 8, !tbaa !9
  %2020 = load i64, ptr %68, align 8, !tbaa !9
  %2021 = load i64, ptr %70, align 8, !tbaa !9
  %2022 = icmp sle i64 %2020, %2021
  br i1 %2022, label %2023, label %2025

2023:                                             ; preds = %2011
  %2024 = load i64, ptr %68, align 8, !tbaa !9
  br label %2027

2025:                                             ; preds = %2011
  %2026 = load i64, ptr %70, align 8, !tbaa !9
  br label %2027

2027:                                             ; preds = %2025, %2023
  %2028 = phi i64 [ %2024, %2023 ], [ %2026, %2025 ]
  store i64 %2028, ptr %78, align 8, !tbaa !9
  %2029 = load ptr, ptr %36, align 8, !tbaa !5
  %2030 = load i64, ptr %78, align 8, !tbaa !9
  %2031 = add nsw i64 %2030, 1
  %2032 = load i64, ptr %78, align 8, !tbaa !9
  %2033 = load i64, ptr %52, align 8, !tbaa !9
  %2034 = mul nsw i64 %2032, %2033
  %2035 = add nsw i64 %2031, %2034
  %2036 = getelementptr inbounds double, ptr %2029, i64 %2035
  %2037 = load double, ptr %2036, align 8, !tbaa !11
  %2038 = fcmp une double %2037, 0.000000e+00
  br i1 %2038, label %2039, label %2522

2039:                                             ; preds = %2027
  %2040 = load ptr, ptr %36, align 8, !tbaa !5
  %2041 = load i64, ptr %78, align 8, !tbaa !9
  %2042 = load i64, ptr %78, align 8, !tbaa !9
  %2043 = load i64, ptr %52, align 8, !tbaa !9
  %2044 = mul nsw i64 %2042, %2043
  %2045 = add nsw i64 %2041, %2044
  %2046 = getelementptr inbounds double, ptr %2040, i64 %2045
  %2047 = load double, ptr %2046, align 8, !tbaa !11
  store double %2047, ptr %71, align 8, !tbaa !11
  %2048 = load double, ptr %71, align 8, !tbaa !11
  %2049 = fcmp oge double %2048, 0.000000e+00
  br i1 %2049, label %2050, label %2052

2050:                                             ; preds = %2039
  %2051 = load double, ptr %71, align 8, !tbaa !11
  br label %2055

2052:                                             ; preds = %2039
  %2053 = load double, ptr %71, align 8, !tbaa !11
  %2054 = fneg double %2053
  br label %2055

2055:                                             ; preds = %2052, %2050
  %2056 = phi double [ %2051, %2050 ], [ %2054, %2052 ]
  %2057 = load ptr, ptr %36, align 8, !tbaa !5
  %2058 = load i64, ptr %78, align 8, !tbaa !9
  %2059 = add nsw i64 %2058, 1
  %2060 = load i64, ptr %78, align 8, !tbaa !9
  %2061 = add nsw i64 %2060, 1
  %2062 = load i64, ptr %52, align 8, !tbaa !9
  %2063 = mul nsw i64 %2061, %2062
  %2064 = add nsw i64 %2059, %2063
  %2065 = getelementptr inbounds double, ptr %2057, i64 %2064
  %2066 = load double, ptr %2065, align 8, !tbaa !11
  store double %2066, ptr %72, align 8, !tbaa !11
  %2067 = load double, ptr %72, align 8, !tbaa !11
  %2068 = fcmp oge double %2067, 0.000000e+00
  br i1 %2068, label %2069, label %2071

2069:                                             ; preds = %2055
  %2070 = load double, ptr %72, align 8, !tbaa !11
  br label %2074

2071:                                             ; preds = %2055
  %2072 = load double, ptr %72, align 8, !tbaa !11
  %2073 = fneg double %2072
  br label %2074

2074:                                             ; preds = %2071, %2069
  %2075 = phi double [ %2070, %2069 ], [ %2073, %2071 ]
  %2076 = fadd double %2056, %2075
  store double %2076, ptr %99, align 8, !tbaa !11
  %2077 = load double, ptr %99, align 8, !tbaa !11
  %2078 = fcmp oeq double %2077, 0.000000e+00
  br i1 %2078, label %2079, label %2245

2079:                                             ; preds = %2074
  %2080 = load i64, ptr %78, align 8, !tbaa !9
  %2081 = load ptr, ptr %31, align 8, !tbaa !5
  %2082 = load i64, ptr %2081, align 8, !tbaa !9
  %2083 = add nsw i64 %2082, 1
  %2084 = icmp sge i64 %2080, %2083
  br i1 %2084, label %2085, label %2106

2085:                                             ; preds = %2079
  %2086 = load ptr, ptr %36, align 8, !tbaa !5
  %2087 = load i64, ptr %78, align 8, !tbaa !9
  %2088 = load i64, ptr %78, align 8, !tbaa !9
  %2089 = sub nsw i64 %2088, 1
  %2090 = load i64, ptr %52, align 8, !tbaa !9
  %2091 = mul nsw i64 %2089, %2090
  %2092 = add nsw i64 %2087, %2091
  %2093 = getelementptr inbounds double, ptr %2086, i64 %2092
  %2094 = load double, ptr %2093, align 8, !tbaa !11
  store double %2094, ptr %71, align 8, !tbaa !11
  %2095 = load double, ptr %71, align 8, !tbaa !11
  %2096 = fcmp oge double %2095, 0.000000e+00
  br i1 %2096, label %2097, label %2099

2097:                                             ; preds = %2085
  %2098 = load double, ptr %71, align 8, !tbaa !11
  br label %2102

2099:                                             ; preds = %2085
  %2100 = load double, ptr %71, align 8, !tbaa !11
  %2101 = fneg double %2100
  br label %2102

2102:                                             ; preds = %2099, %2097
  %2103 = phi double [ %2098, %2097 ], [ %2101, %2099 ]
  %2104 = load double, ptr %99, align 8, !tbaa !11
  %2105 = fadd double %2104, %2103
  store double %2105, ptr %99, align 8, !tbaa !11
  br label %2106

2106:                                             ; preds = %2102, %2079
  %2107 = load i64, ptr %78, align 8, !tbaa !9
  %2108 = load ptr, ptr %31, align 8, !tbaa !5
  %2109 = load i64, ptr %2108, align 8, !tbaa !9
  %2110 = add nsw i64 %2109, 2
  %2111 = icmp sge i64 %2107, %2110
  br i1 %2111, label %2112, label %2133

2112:                                             ; preds = %2106
  %2113 = load ptr, ptr %36, align 8, !tbaa !5
  %2114 = load i64, ptr %78, align 8, !tbaa !9
  %2115 = load i64, ptr %78, align 8, !tbaa !9
  %2116 = sub nsw i64 %2115, 2
  %2117 = load i64, ptr %52, align 8, !tbaa !9
  %2118 = mul nsw i64 %2116, %2117
  %2119 = add nsw i64 %2114, %2118
  %2120 = getelementptr inbounds double, ptr %2113, i64 %2119
  %2121 = load double, ptr %2120, align 8, !tbaa !11
  store double %2121, ptr %71, align 8, !tbaa !11
  %2122 = load double, ptr %71, align 8, !tbaa !11
  %2123 = fcmp oge double %2122, 0.000000e+00
  br i1 %2123, label %2124, label %2126

2124:                                             ; preds = %2112
  %2125 = load double, ptr %71, align 8, !tbaa !11
  br label %2129

2126:                                             ; preds = %2112
  %2127 = load double, ptr %71, align 8, !tbaa !11
  %2128 = fneg double %2127
  br label %2129

2129:                                             ; preds = %2126, %2124
  %2130 = phi double [ %2125, %2124 ], [ %2128, %2126 ]
  %2131 = load double, ptr %99, align 8, !tbaa !11
  %2132 = fadd double %2131, %2130
  store double %2132, ptr %99, align 8, !tbaa !11
  br label %2133

2133:                                             ; preds = %2129, %2106
  %2134 = load i64, ptr %78, align 8, !tbaa !9
  %2135 = load ptr, ptr %31, align 8, !tbaa !5
  %2136 = load i64, ptr %2135, align 8, !tbaa !9
  %2137 = add nsw i64 %2136, 3
  %2138 = icmp sge i64 %2134, %2137
  br i1 %2138, label %2139, label %2160

2139:                                             ; preds = %2133
  %2140 = load ptr, ptr %36, align 8, !tbaa !5
  %2141 = load i64, ptr %78, align 8, !tbaa !9
  %2142 = load i64, ptr %78, align 8, !tbaa !9
  %2143 = sub nsw i64 %2142, 3
  %2144 = load i64, ptr %52, align 8, !tbaa !9
  %2145 = mul nsw i64 %2143, %2144
  %2146 = add nsw i64 %2141, %2145
  %2147 = getelementptr inbounds double, ptr %2140, i64 %2146
  %2148 = load double, ptr %2147, align 8, !tbaa !11
  store double %2148, ptr %71, align 8, !tbaa !11
  %2149 = load double, ptr %71, align 8, !tbaa !11
  %2150 = fcmp oge double %2149, 0.000000e+00
  br i1 %2150, label %2151, label %2153

2151:                                             ; preds = %2139
  %2152 = load double, ptr %71, align 8, !tbaa !11
  br label %2156

2153:                                             ; preds = %2139
  %2154 = load double, ptr %71, align 8, !tbaa !11
  %2155 = fneg double %2154
  br label %2156

2156:                                             ; preds = %2153, %2151
  %2157 = phi double [ %2152, %2151 ], [ %2155, %2153 ]
  %2158 = load double, ptr %99, align 8, !tbaa !11
  %2159 = fadd double %2158, %2157
  store double %2159, ptr %99, align 8, !tbaa !11
  br label %2160

2160:                                             ; preds = %2156, %2133
  %2161 = load i64, ptr %78, align 8, !tbaa !9
  %2162 = load ptr, ptr %32, align 8, !tbaa !5
  %2163 = load i64, ptr %2162, align 8, !tbaa !9
  %2164 = sub nsw i64 %2163, 2
  %2165 = icmp sle i64 %2161, %2164
  br i1 %2165, label %2166, label %2188

2166:                                             ; preds = %2160
  %2167 = load ptr, ptr %36, align 8, !tbaa !5
  %2168 = load i64, ptr %78, align 8, !tbaa !9
  %2169 = add nsw i64 %2168, 2
  %2170 = load i64, ptr %78, align 8, !tbaa !9
  %2171 = add nsw i64 %2170, 1
  %2172 = load i64, ptr %52, align 8, !tbaa !9
  %2173 = mul nsw i64 %2171, %2172
  %2174 = add nsw i64 %2169, %2173
  %2175 = getelementptr inbounds double, ptr %2167, i64 %2174
  %2176 = load double, ptr %2175, align 8, !tbaa !11
  store double %2176, ptr %71, align 8, !tbaa !11
  %2177 = load double, ptr %71, align 8, !tbaa !11
  %2178 = fcmp oge double %2177, 0.000000e+00
  br i1 %2178, label %2179, label %2181

2179:                                             ; preds = %2166
  %2180 = load double, ptr %71, align 8, !tbaa !11
  br label %2184

2181:                                             ; preds = %2166
  %2182 = load double, ptr %71, align 8, !tbaa !11
  %2183 = fneg double %2182
  br label %2184

2184:                                             ; preds = %2181, %2179
  %2185 = phi double [ %2180, %2179 ], [ %2183, %2181 ]
  %2186 = load double, ptr %99, align 8, !tbaa !11
  %2187 = fadd double %2186, %2185
  store double %2187, ptr %99, align 8, !tbaa !11
  br label %2188

2188:                                             ; preds = %2184, %2160
  %2189 = load i64, ptr %78, align 8, !tbaa !9
  %2190 = load ptr, ptr %32, align 8, !tbaa !5
  %2191 = load i64, ptr %2190, align 8, !tbaa !9
  %2192 = sub nsw i64 %2191, 3
  %2193 = icmp sle i64 %2189, %2192
  br i1 %2193, label %2194, label %2216

2194:                                             ; preds = %2188
  %2195 = load ptr, ptr %36, align 8, !tbaa !5
  %2196 = load i64, ptr %78, align 8, !tbaa !9
  %2197 = add nsw i64 %2196, 3
  %2198 = load i64, ptr %78, align 8, !tbaa !9
  %2199 = add nsw i64 %2198, 1
  %2200 = load i64, ptr %52, align 8, !tbaa !9
  %2201 = mul nsw i64 %2199, %2200
  %2202 = add nsw i64 %2197, %2201
  %2203 = getelementptr inbounds double, ptr %2195, i64 %2202
  %2204 = load double, ptr %2203, align 8, !tbaa !11
  store double %2204, ptr %71, align 8, !tbaa !11
  %2205 = load double, ptr %71, align 8, !tbaa !11
  %2206 = fcmp oge double %2205, 0.000000e+00
  br i1 %2206, label %2207, label %2209

2207:                                             ; preds = %2194
  %2208 = load double, ptr %71, align 8, !tbaa !11
  br label %2212

2209:                                             ; preds = %2194
  %2210 = load double, ptr %71, align 8, !tbaa !11
  %2211 = fneg double %2210
  br label %2212

2212:                                             ; preds = %2209, %2207
  %2213 = phi double [ %2208, %2207 ], [ %2211, %2209 ]
  %2214 = load double, ptr %99, align 8, !tbaa !11
  %2215 = fadd double %2214, %2213
  store double %2215, ptr %99, align 8, !tbaa !11
  br label %2216

2216:                                             ; preds = %2212, %2188
  %2217 = load i64, ptr %78, align 8, !tbaa !9
  %2218 = load ptr, ptr %32, align 8, !tbaa !5
  %2219 = load i64, ptr %2218, align 8, !tbaa !9
  %2220 = sub nsw i64 %2219, 4
  %2221 = icmp sle i64 %2217, %2220
  br i1 %2221, label %2222, label %2244

2222:                                             ; preds = %2216
  %2223 = load ptr, ptr %36, align 8, !tbaa !5
  %2224 = load i64, ptr %78, align 8, !tbaa !9
  %2225 = add nsw i64 %2224, 4
  %2226 = load i64, ptr %78, align 8, !tbaa !9
  %2227 = add nsw i64 %2226, 1
  %2228 = load i64, ptr %52, align 8, !tbaa !9
  %2229 = mul nsw i64 %2227, %2228
  %2230 = add nsw i64 %2225, %2229
  %2231 = getelementptr inbounds double, ptr %2223, i64 %2230
  %2232 = load double, ptr %2231, align 8, !tbaa !11
  store double %2232, ptr %71, align 8, !tbaa !11
  %2233 = load double, ptr %71, align 8, !tbaa !11
  %2234 = fcmp oge double %2233, 0.000000e+00
  br i1 %2234, label %2235, label %2237

2235:                                             ; preds = %2222
  %2236 = load double, ptr %71, align 8, !tbaa !11
  br label %2240

2237:                                             ; preds = %2222
  %2238 = load double, ptr %71, align 8, !tbaa !11
  %2239 = fneg double %2238
  br label %2240

2240:                                             ; preds = %2237, %2235
  %2241 = phi double [ %2236, %2235 ], [ %2239, %2237 ]
  %2242 = load double, ptr %99, align 8, !tbaa !11
  %2243 = fadd double %2242, %2241
  store double %2243, ptr %99, align 8, !tbaa !11
  br label %2244

2244:                                             ; preds = %2240, %2216
  br label %2245

2245:                                             ; preds = %2244, %2074
  %2246 = load double, ptr %123, align 8, !tbaa !11
  store double %2246, ptr %72, align 8, !tbaa !11
  %2247 = load double, ptr %96, align 8, !tbaa !11
  %2248 = load double, ptr %99, align 8, !tbaa !11
  %2249 = fmul double %2247, %2248
  store double %2249, ptr %73, align 8, !tbaa !11
  %2250 = load ptr, ptr %36, align 8, !tbaa !5
  %2251 = load i64, ptr %78, align 8, !tbaa !9
  %2252 = add nsw i64 %2251, 1
  %2253 = load i64, ptr %78, align 8, !tbaa !9
  %2254 = load i64, ptr %52, align 8, !tbaa !9
  %2255 = mul nsw i64 %2253, %2254
  %2256 = add nsw i64 %2252, %2255
  %2257 = getelementptr inbounds double, ptr %2250, i64 %2256
  %2258 = load double, ptr %2257, align 8, !tbaa !11
  store double %2258, ptr %71, align 8, !tbaa !11
  %2259 = load double, ptr %71, align 8, !tbaa !11
  %2260 = fcmp oge double %2259, 0.000000e+00
  br i1 %2260, label %2261, label %2263

2261:                                             ; preds = %2245
  %2262 = load double, ptr %71, align 8, !tbaa !11
  br label %2266

2263:                                             ; preds = %2245
  %2264 = load double, ptr %71, align 8, !tbaa !11
  %2265 = fneg double %2264
  br label %2266

2266:                                             ; preds = %2263, %2261
  %2267 = phi double [ %2262, %2261 ], [ %2265, %2263 ]
  %2268 = load double, ptr %72, align 8, !tbaa !11
  %2269 = load double, ptr %73, align 8, !tbaa !11
  %2270 = fcmp oge double %2268, %2269
  br i1 %2270, label %2271, label %2273

2271:                                             ; preds = %2266
  %2272 = load double, ptr %72, align 8, !tbaa !11
  br label %2275

2273:                                             ; preds = %2266
  %2274 = load double, ptr %73, align 8, !tbaa !11
  br label %2275

2275:                                             ; preds = %2273, %2271
  %2276 = phi double [ %2272, %2271 ], [ %2274, %2273 ]
  %2277 = fcmp ole double %2267, %2276
  br i1 %2277, label %2278, label %2521

2278:                                             ; preds = %2275
  %2279 = load ptr, ptr %36, align 8, !tbaa !5
  %2280 = load i64, ptr %78, align 8, !tbaa !9
  %2281 = add nsw i64 %2280, 1
  %2282 = load i64, ptr %78, align 8, !tbaa !9
  %2283 = load i64, ptr %52, align 8, !tbaa !9
  %2284 = mul nsw i64 %2282, %2283
  %2285 = add nsw i64 %2281, %2284
  %2286 = getelementptr inbounds double, ptr %2279, i64 %2285
  %2287 = load double, ptr %2286, align 8, !tbaa !11
  store double %2287, ptr %71, align 8, !tbaa !11
  %2288 = load double, ptr %71, align 8, !tbaa !11
  %2289 = fcmp oge double %2288, 0.000000e+00
  br i1 %2289, label %2290, label %2292

2290:                                             ; preds = %2278
  %2291 = load double, ptr %71, align 8, !tbaa !11
  br label %2295

2292:                                             ; preds = %2278
  %2293 = load double, ptr %71, align 8, !tbaa !11
  %2294 = fneg double %2293
  br label %2295

2295:                                             ; preds = %2292, %2290
  %2296 = phi double [ %2291, %2290 ], [ %2294, %2292 ]
  store double %2296, ptr %73, align 8, !tbaa !11
  %2297 = load ptr, ptr %36, align 8, !tbaa !5
  %2298 = load i64, ptr %78, align 8, !tbaa !9
  %2299 = load i64, ptr %78, align 8, !tbaa !9
  %2300 = add nsw i64 %2299, 1
  %2301 = load i64, ptr %52, align 8, !tbaa !9
  %2302 = mul nsw i64 %2300, %2301
  %2303 = add nsw i64 %2298, %2302
  %2304 = getelementptr inbounds double, ptr %2297, i64 %2303
  %2305 = load double, ptr %2304, align 8, !tbaa !11
  store double %2305, ptr %72, align 8, !tbaa !11
  %2306 = load double, ptr %72, align 8, !tbaa !11
  %2307 = fcmp oge double %2306, 0.000000e+00
  br i1 %2307, label %2308, label %2310

2308:                                             ; preds = %2295
  %2309 = load double, ptr %72, align 8, !tbaa !11
  br label %2313

2310:                                             ; preds = %2295
  %2311 = load double, ptr %72, align 8, !tbaa !11
  %2312 = fneg double %2311
  br label %2313

2313:                                             ; preds = %2310, %2308
  %2314 = phi double [ %2309, %2308 ], [ %2312, %2310 ]
  store double %2314, ptr %74, align 8, !tbaa !11
  %2315 = load double, ptr %73, align 8, !tbaa !11
  %2316 = load double, ptr %74, align 8, !tbaa !11
  %2317 = fcmp oge double %2315, %2316
  br i1 %2317, label %2318, label %2320

2318:                                             ; preds = %2313
  %2319 = load double, ptr %73, align 8, !tbaa !11
  br label %2322

2320:                                             ; preds = %2313
  %2321 = load double, ptr %74, align 8, !tbaa !11
  br label %2322

2322:                                             ; preds = %2320, %2318
  %2323 = phi double [ %2319, %2318 ], [ %2321, %2320 ]
  store double %2323, ptr %86, align 8, !tbaa !11
  %2324 = load ptr, ptr %36, align 8, !tbaa !5
  %2325 = load i64, ptr %78, align 8, !tbaa !9
  %2326 = add nsw i64 %2325, 1
  %2327 = load i64, ptr %78, align 8, !tbaa !9
  %2328 = load i64, ptr %52, align 8, !tbaa !9
  %2329 = mul nsw i64 %2327, %2328
  %2330 = add nsw i64 %2326, %2329
  %2331 = getelementptr inbounds double, ptr %2324, i64 %2330
  %2332 = load double, ptr %2331, align 8, !tbaa !11
  store double %2332, ptr %71, align 8, !tbaa !11
  %2333 = load double, ptr %71, align 8, !tbaa !11
  %2334 = fcmp oge double %2333, 0.000000e+00
  br i1 %2334, label %2335, label %2337

2335:                                             ; preds = %2322
  %2336 = load double, ptr %71, align 8, !tbaa !11
  br label %2340

2337:                                             ; preds = %2322
  %2338 = load double, ptr %71, align 8, !tbaa !11
  %2339 = fneg double %2338
  br label %2340

2340:                                             ; preds = %2337, %2335
  %2341 = phi double [ %2336, %2335 ], [ %2339, %2337 ]
  store double %2341, ptr %73, align 8, !tbaa !11
  %2342 = load ptr, ptr %36, align 8, !tbaa !5
  %2343 = load i64, ptr %78, align 8, !tbaa !9
  %2344 = load i64, ptr %78, align 8, !tbaa !9
  %2345 = add nsw i64 %2344, 1
  %2346 = load i64, ptr %52, align 8, !tbaa !9
  %2347 = mul nsw i64 %2345, %2346
  %2348 = add nsw i64 %2343, %2347
  %2349 = getelementptr inbounds double, ptr %2342, i64 %2348
  %2350 = load double, ptr %2349, align 8, !tbaa !11
  store double %2350, ptr %72, align 8, !tbaa !11
  %2351 = load double, ptr %72, align 8, !tbaa !11
  %2352 = fcmp oge double %2351, 0.000000e+00
  br i1 %2352, label %2353, label %2355

2353:                                             ; preds = %2340
  %2354 = load double, ptr %72, align 8, !tbaa !11
  br label %2358

2355:                                             ; preds = %2340
  %2356 = load double, ptr %72, align 8, !tbaa !11
  %2357 = fneg double %2356
  br label %2358

2358:                                             ; preds = %2355, %2353
  %2359 = phi double [ %2354, %2353 ], [ %2357, %2355 ]
  store double %2359, ptr %74, align 8, !tbaa !11
  %2360 = load double, ptr %73, align 8, !tbaa !11
  %2361 = load double, ptr %74, align 8, !tbaa !11
  %2362 = fcmp ole double %2360, %2361
  br i1 %2362, label %2363, label %2365

2363:                                             ; preds = %2358
  %2364 = load double, ptr %73, align 8, !tbaa !11
  br label %2367

2365:                                             ; preds = %2358
  %2366 = load double, ptr %74, align 8, !tbaa !11
  br label %2367

2367:                                             ; preds = %2365, %2363
  %2368 = phi double [ %2364, %2363 ], [ %2366, %2365 ]
  store double %2368, ptr %87, align 8, !tbaa !11
  %2369 = load ptr, ptr %36, align 8, !tbaa !5
  %2370 = load i64, ptr %78, align 8, !tbaa !9
  %2371 = add nsw i64 %2370, 1
  %2372 = load i64, ptr %78, align 8, !tbaa !9
  %2373 = add nsw i64 %2372, 1
  %2374 = load i64, ptr %52, align 8, !tbaa !9
  %2375 = mul nsw i64 %2373, %2374
  %2376 = add nsw i64 %2371, %2375
  %2377 = getelementptr inbounds double, ptr %2369, i64 %2376
  %2378 = load double, ptr %2377, align 8, !tbaa !11
  store double %2378, ptr %71, align 8, !tbaa !11
  %2379 = load double, ptr %71, align 8, !tbaa !11
  %2380 = fcmp oge double %2379, 0.000000e+00
  br i1 %2380, label %2381, label %2383

2381:                                             ; preds = %2367
  %2382 = load double, ptr %71, align 8, !tbaa !11
  br label %2386

2383:                                             ; preds = %2367
  %2384 = load double, ptr %71, align 8, !tbaa !11
  %2385 = fneg double %2384
  br label %2386

2386:                                             ; preds = %2383, %2381
  %2387 = phi double [ %2382, %2381 ], [ %2385, %2383 ]
  store double %2387, ptr %73, align 8, !tbaa !11
  %2388 = load ptr, ptr %36, align 8, !tbaa !5
  %2389 = load i64, ptr %78, align 8, !tbaa !9
  %2390 = load i64, ptr %78, align 8, !tbaa !9
  %2391 = load i64, ptr %52, align 8, !tbaa !9
  %2392 = mul nsw i64 %2390, %2391
  %2393 = add nsw i64 %2389, %2392
  %2394 = getelementptr inbounds double, ptr %2388, i64 %2393
  %2395 = load double, ptr %2394, align 8, !tbaa !11
  %2396 = load ptr, ptr %36, align 8, !tbaa !5
  %2397 = load i64, ptr %78, align 8, !tbaa !9
  %2398 = add nsw i64 %2397, 1
  %2399 = load i64, ptr %78, align 8, !tbaa !9
  %2400 = add nsw i64 %2399, 1
  %2401 = load i64, ptr %52, align 8, !tbaa !9
  %2402 = mul nsw i64 %2400, %2401
  %2403 = add nsw i64 %2398, %2402
  %2404 = getelementptr inbounds double, ptr %2396, i64 %2403
  %2405 = load double, ptr %2404, align 8, !tbaa !11
  %2406 = fsub double %2395, %2405
  store double %2406, ptr %72, align 8, !tbaa !11
  %2407 = load double, ptr %72, align 8, !tbaa !11
  %2408 = fcmp oge double %2407, 0.000000e+00
  br i1 %2408, label %2409, label %2411

2409:                                             ; preds = %2386
  %2410 = load double, ptr %72, align 8, !tbaa !11
  br label %2414

2411:                                             ; preds = %2386
  %2412 = load double, ptr %72, align 8, !tbaa !11
  %2413 = fneg double %2412
  br label %2414

2414:                                             ; preds = %2411, %2409
  %2415 = phi double [ %2410, %2409 ], [ %2413, %2411 ]
  store double %2415, ptr %74, align 8, !tbaa !11
  %2416 = load double, ptr %73, align 8, !tbaa !11
  %2417 = load double, ptr %74, align 8, !tbaa !11
  %2418 = fcmp oge double %2416, %2417
  br i1 %2418, label %2419, label %2421

2419:                                             ; preds = %2414
  %2420 = load double, ptr %73, align 8, !tbaa !11
  br label %2423

2421:                                             ; preds = %2414
  %2422 = load double, ptr %74, align 8, !tbaa !11
  br label %2423

2423:                                             ; preds = %2421, %2419
  %2424 = phi double [ %2420, %2419 ], [ %2422, %2421 ]
  store double %2424, ptr %85, align 8, !tbaa !11
  %2425 = load ptr, ptr %36, align 8, !tbaa !5
  %2426 = load i64, ptr %78, align 8, !tbaa !9
  %2427 = add nsw i64 %2426, 1
  %2428 = load i64, ptr %78, align 8, !tbaa !9
  %2429 = add nsw i64 %2428, 1
  %2430 = load i64, ptr %52, align 8, !tbaa !9
  %2431 = mul nsw i64 %2429, %2430
  %2432 = add nsw i64 %2427, %2431
  %2433 = getelementptr inbounds double, ptr %2425, i64 %2432
  %2434 = load double, ptr %2433, align 8, !tbaa !11
  store double %2434, ptr %71, align 8, !tbaa !11
  %2435 = load double, ptr %71, align 8, !tbaa !11
  %2436 = fcmp oge double %2435, 0.000000e+00
  br i1 %2436, label %2437, label %2439

2437:                                             ; preds = %2423
  %2438 = load double, ptr %71, align 8, !tbaa !11
  br label %2442

2439:                                             ; preds = %2423
  %2440 = load double, ptr %71, align 8, !tbaa !11
  %2441 = fneg double %2440
  br label %2442

2442:                                             ; preds = %2439, %2437
  %2443 = phi double [ %2438, %2437 ], [ %2441, %2439 ]
  store double %2443, ptr %73, align 8, !tbaa !11
  %2444 = load ptr, ptr %36, align 8, !tbaa !5
  %2445 = load i64, ptr %78, align 8, !tbaa !9
  %2446 = load i64, ptr %78, align 8, !tbaa !9
  %2447 = load i64, ptr %52, align 8, !tbaa !9
  %2448 = mul nsw i64 %2446, %2447
  %2449 = add nsw i64 %2445, %2448
  %2450 = getelementptr inbounds double, ptr %2444, i64 %2449
  %2451 = load double, ptr %2450, align 8, !tbaa !11
  %2452 = load ptr, ptr %36, align 8, !tbaa !5
  %2453 = load i64, ptr %78, align 8, !tbaa !9
  %2454 = add nsw i64 %2453, 1
  %2455 = load i64, ptr %78, align 8, !tbaa !9
  %2456 = add nsw i64 %2455, 1
  %2457 = load i64, ptr %52, align 8, !tbaa !9
  %2458 = mul nsw i64 %2456, %2457
  %2459 = add nsw i64 %2454, %2458
  %2460 = getelementptr inbounds double, ptr %2452, i64 %2459
  %2461 = load double, ptr %2460, align 8, !tbaa !11
  %2462 = fsub double %2451, %2461
  store double %2462, ptr %72, align 8, !tbaa !11
  %2463 = load double, ptr %72, align 8, !tbaa !11
  %2464 = fcmp oge double %2463, 0.000000e+00
  br i1 %2464, label %2465, label %2467

2465:                                             ; preds = %2442
  %2466 = load double, ptr %72, align 8, !tbaa !11
  br label %2470

2467:                                             ; preds = %2442
  %2468 = load double, ptr %72, align 8, !tbaa !11
  %2469 = fneg double %2468
  br label %2470

2470:                                             ; preds = %2467, %2465
  %2471 = phi double [ %2466, %2465 ], [ %2469, %2467 ]
  store double %2471, ptr %74, align 8, !tbaa !11
  %2472 = load double, ptr %73, align 8, !tbaa !11
  %2473 = load double, ptr %74, align 8, !tbaa !11
  %2474 = fcmp ole double %2472, %2473
  br i1 %2474, label %2475, label %2477

2475:                                             ; preds = %2470
  %2476 = load double, ptr %73, align 8, !tbaa !11
  br label %2479

2477:                                             ; preds = %2470
  %2478 = load double, ptr %74, align 8, !tbaa !11
  br label %2479

2479:                                             ; preds = %2477, %2475
  %2480 = phi double [ %2476, %2475 ], [ %2478, %2477 ]
  store double %2480, ptr %88, align 8, !tbaa !11
  %2481 = load double, ptr %85, align 8, !tbaa !11
  %2482 = load double, ptr %86, align 8, !tbaa !11
  %2483 = fadd double %2481, %2482
  store double %2483, ptr %93, align 8, !tbaa !11
  %2484 = load double, ptr %88, align 8, !tbaa !11
  %2485 = load double, ptr %85, align 8, !tbaa !11
  %2486 = load double, ptr %93, align 8, !tbaa !11
  %2487 = fdiv double %2485, %2486
  %2488 = fmul double %2484, %2487
  store double %2488, ptr %100, align 8, !tbaa !11
  %2489 = load double, ptr %123, align 8, !tbaa !11
  store double %2489, ptr %71, align 8, !tbaa !11
  %2490 = load double, ptr %96, align 8, !tbaa !11
  %2491 = load double, ptr %100, align 8, !tbaa !11
  %2492 = fmul double %2490, %2491
  store double %2492, ptr %72, align 8, !tbaa !11
  %2493 = load double, ptr %100, align 8, !tbaa !11
  %2494 = fcmp oeq double %2493, 0.000000e+00
  br i1 %2494, label %2511, label %2495

2495:                                             ; preds = %2479
  %2496 = load double, ptr %87, align 8, !tbaa !11
  %2497 = load double, ptr %86, align 8, !tbaa !11
  %2498 = load double, ptr %93, align 8, !tbaa !11
  %2499 = fdiv double %2497, %2498
  %2500 = fmul double %2496, %2499
  %2501 = load double, ptr %71, align 8, !tbaa !11
  %2502 = load double, ptr %72, align 8, !tbaa !11
  %2503 = fcmp oge double %2501, %2502
  br i1 %2503, label %2504, label %2506

2504:                                             ; preds = %2495
  %2505 = load double, ptr %71, align 8, !tbaa !11
  br label %2508

2506:                                             ; preds = %2495
  %2507 = load double, ptr %72, align 8, !tbaa !11
  br label %2508

2508:                                             ; preds = %2506, %2504
  %2509 = phi double [ %2505, %2504 ], [ %2507, %2506 ]
  %2510 = fcmp ole double %2500, %2509
  br i1 %2510, label %2511, label %2520

2511:                                             ; preds = %2508, %2479
  %2512 = load ptr, ptr %36, align 8, !tbaa !5
  %2513 = load i64, ptr %78, align 8, !tbaa !9
  %2514 = add nsw i64 %2513, 1
  %2515 = load i64, ptr %78, align 8, !tbaa !9
  %2516 = load i64, ptr %52, align 8, !tbaa !9
  %2517 = mul nsw i64 %2515, %2516
  %2518 = add nsw i64 %2514, %2517
  %2519 = getelementptr inbounds double, ptr %2512, i64 %2518
  store double 0.000000e+00, ptr %2519, align 8, !tbaa !11
  br label %2520

2520:                                             ; preds = %2511, %2508
  br label %2521

2521:                                             ; preds = %2520, %2275
  br label %2522

2522:                                             ; preds = %2521, %2027
  br label %2523

2523:                                             ; preds = %2522
  %2524 = load i64, ptr %79, align 8, !tbaa !9
  %2525 = add nsw i64 %2524, 1
  store i64 %2525, ptr %79, align 8, !tbaa !9
  br label %2007, !llvm.loop !26

2526:                                             ; preds = %2007
  %2527 = load i64, ptr %118, align 8, !tbaa !9
  store i64 %2527, ptr %67, align 8, !tbaa !9
  %2528 = load ptr, ptr %32, align 8, !tbaa !5
  %2529 = load i64, ptr %2528, align 8, !tbaa !9
  %2530 = load i64, ptr %117, align 8, !tbaa !9
  %2531 = sub nsw i64 %2529, %2530
  %2532 = sub nsw i64 %2531, 1
  %2533 = sdiv i64 %2532, 3
  store i64 %2533, ptr %68, align 8, !tbaa !9
  %2534 = load i64, ptr %67, align 8, !tbaa !9
  %2535 = load i64, ptr %68, align 8, !tbaa !9
  %2536 = icmp sle i64 %2534, %2535
  br i1 %2536, label %2537, label %2539

2537:                                             ; preds = %2526
  %2538 = load i64, ptr %67, align 8, !tbaa !9
  br label %2541

2539:                                             ; preds = %2526
  %2540 = load i64, ptr %68, align 8, !tbaa !9
  br label %2541

2541:                                             ; preds = %2539, %2537
  %2542 = phi i64 [ %2538, %2537 ], [ %2540, %2539 ]
  store i64 %2542, ptr %104, align 8, !tbaa !9
  %2543 = load i64, ptr %104, align 8, !tbaa !9
  store i64 %2543, ptr %67, align 8, !tbaa !9
  %2544 = load i64, ptr %112, align 8, !tbaa !9
  store i64 %2544, ptr %79, align 8, !tbaa !9
  br label %2545

2545:                                             ; preds = %2631, %2541
  %2546 = load i64, ptr %79, align 8, !tbaa !9
  %2547 = load i64, ptr %67, align 8, !tbaa !9
  %2548 = icmp sle i64 %2546, %2547
  br i1 %2548, label %2549, label %2634

2549:                                             ; preds = %2545
  %2550 = load i64, ptr %117, align 8, !tbaa !9
  %2551 = load i64, ptr %79, align 8, !tbaa !9
  %2552 = sub nsw i64 %2551, 1
  %2553 = mul nsw i64 %2552, 3
  %2554 = add nsw i64 %2550, %2553
  store i64 %2554, ptr %78, align 8, !tbaa !9
  %2555 = load ptr, ptr %42, align 8, !tbaa !5
  %2556 = load i64, ptr %79, align 8, !tbaa !9
  %2557 = load i64, ptr %56, align 8, !tbaa !9
  %2558 = mul nsw i64 %2556, %2557
  %2559 = add nsw i64 %2558, 1
  %2560 = getelementptr inbounds double, ptr %2555, i64 %2559
  %2561 = load double, ptr %2560, align 8, !tbaa !11
  %2562 = load ptr, ptr %42, align 8, !tbaa !5
  %2563 = load i64, ptr %79, align 8, !tbaa !9
  %2564 = load i64, ptr %56, align 8, !tbaa !9
  %2565 = mul nsw i64 %2563, %2564
  %2566 = add nsw i64 %2565, 3
  %2567 = getelementptr inbounds double, ptr %2562, i64 %2566
  %2568 = load double, ptr %2567, align 8, !tbaa !11
  %2569 = fmul double %2561, %2568
  %2570 = load ptr, ptr %36, align 8, !tbaa !5
  %2571 = load i64, ptr %78, align 8, !tbaa !9
  %2572 = add nsw i64 %2571, 4
  %2573 = load i64, ptr %78, align 8, !tbaa !9
  %2574 = add nsw i64 %2573, 3
  %2575 = load i64, ptr %52, align 8, !tbaa !9
  %2576 = mul nsw i64 %2574, %2575
  %2577 = add nsw i64 %2572, %2576
  %2578 = getelementptr inbounds double, ptr %2570, i64 %2577
  %2579 = load double, ptr %2578, align 8, !tbaa !11
  %2580 = fmul double %2569, %2579
  store double %2580, ptr %121, align 8, !tbaa !11
  %2581 = load double, ptr %121, align 8, !tbaa !11
  %2582 = fneg double %2581
  %2583 = load ptr, ptr %36, align 8, !tbaa !5
  %2584 = load i64, ptr %78, align 8, !tbaa !9
  %2585 = add nsw i64 %2584, 4
  %2586 = load i64, ptr %78, align 8, !tbaa !9
  %2587 = add nsw i64 %2586, 1
  %2588 = load i64, ptr %52, align 8, !tbaa !9
  %2589 = mul nsw i64 %2587, %2588
  %2590 = add nsw i64 %2585, %2589
  %2591 = getelementptr inbounds double, ptr %2583, i64 %2590
  store double %2582, ptr %2591, align 8, !tbaa !11
  %2592 = load double, ptr %121, align 8, !tbaa !11
  %2593 = fneg double %2592
  %2594 = load ptr, ptr %42, align 8, !tbaa !5
  %2595 = load i64, ptr %79, align 8, !tbaa !9
  %2596 = load i64, ptr %56, align 8, !tbaa !9
  %2597 = mul nsw i64 %2595, %2596
  %2598 = add nsw i64 %2597, 2
  %2599 = getelementptr inbounds double, ptr %2594, i64 %2598
  %2600 = load double, ptr %2599, align 8, !tbaa !11
  %2601 = fmul double %2593, %2600
  %2602 = load ptr, ptr %36, align 8, !tbaa !5
  %2603 = load i64, ptr %78, align 8, !tbaa !9
  %2604 = add nsw i64 %2603, 4
  %2605 = load i64, ptr %78, align 8, !tbaa !9
  %2606 = add nsw i64 %2605, 2
  %2607 = load i64, ptr %52, align 8, !tbaa !9
  %2608 = mul nsw i64 %2606, %2607
  %2609 = add nsw i64 %2604, %2608
  %2610 = getelementptr inbounds double, ptr %2602, i64 %2609
  store double %2601, ptr %2610, align 8, !tbaa !11
  %2611 = load double, ptr %121, align 8, !tbaa !11
  %2612 = load ptr, ptr %42, align 8, !tbaa !5
  %2613 = load i64, ptr %79, align 8, !tbaa !9
  %2614 = load i64, ptr %56, align 8, !tbaa !9
  %2615 = mul nsw i64 %2613, %2614
  %2616 = add nsw i64 %2615, 3
  %2617 = getelementptr inbounds double, ptr %2612, i64 %2616
  %2618 = load double, ptr %2617, align 8, !tbaa !11
  %2619 = load ptr, ptr %36, align 8, !tbaa !5
  %2620 = load i64, ptr %78, align 8, !tbaa !9
  %2621 = add nsw i64 %2620, 4
  %2622 = load i64, ptr %78, align 8, !tbaa !9
  %2623 = add nsw i64 %2622, 3
  %2624 = load i64, ptr %52, align 8, !tbaa !9
  %2625 = mul nsw i64 %2623, %2624
  %2626 = add nsw i64 %2621, %2625
  %2627 = getelementptr inbounds double, ptr %2619, i64 %2626
  %2628 = load double, ptr %2627, align 8, !tbaa !11
  %2629 = fneg double %2611
  %2630 = call double @llvm.fmuladd.f64(double %2629, double %2618, double %2628)
  store double %2630, ptr %2627, align 8, !tbaa !11
  br label %2631

2631:                                             ; preds = %2549
  %2632 = load i64, ptr %79, align 8, !tbaa !9
  %2633 = add nsw i64 %2632, 1
  store i64 %2633, ptr %79, align 8, !tbaa !9
  br label %2545, !llvm.loop !27

2634:                                             ; preds = %2545
  br label %2635

2635:                                             ; preds = %2634
  %2636 = load i64, ptr %117, align 8, !tbaa !9
  %2637 = add nsw i64 %2636, 1
  store i64 %2637, ptr %117, align 8, !tbaa !9
  br label %388, !llvm.loop !28

2638:                                             ; preds = %388
  %2639 = load i64, ptr %114, align 8, !tbaa !9
  %2640 = icmp ne i64 %2639, 0
  br i1 %2640, label %2641, label %3599

2641:                                             ; preds = %2638
  %2642 = load ptr, ptr %27, align 8, !tbaa !5
  %2643 = load i64, ptr %2642, align 8, !tbaa !9
  %2644 = icmp ne i64 %2643, 0
  br i1 %2644, label %2645, label %2648

2645:                                             ; preds = %2641
  store i64 1, ptr %110, align 8, !tbaa !9
  %2646 = load ptr, ptr %30, align 8, !tbaa !5
  %2647 = load i64, ptr %2646, align 8, !tbaa !9
  store i64 %2647, ptr %107, align 8, !tbaa !9
  br label %2653

2648:                                             ; preds = %2641
  %2649 = load ptr, ptr %31, align 8, !tbaa !5
  %2650 = load i64, ptr %2649, align 8, !tbaa !9
  store i64 %2650, ptr %110, align 8, !tbaa !9
  %2651 = load ptr, ptr %32, align 8, !tbaa !5
  %2652 = load i64, ptr %2651, align 8, !tbaa !9
  store i64 %2652, ptr %107, align 8, !tbaa !9
  br label %2653

2653:                                             ; preds = %2648, %2645
  %2654 = load i64, ptr %102, align 8, !tbaa !9
  %2655 = icmp ne i64 %2654, 0
  br i1 %2655, label %2656, label %2669

2656:                                             ; preds = %2653
  %2657 = load i64, ptr %116, align 8, !tbaa !9
  %2658 = load ptr, ptr %31, align 8, !tbaa !5
  %2659 = load i64, ptr %2658, align 8, !tbaa !9
  %2660 = icmp slt i64 %2657, %2659
  br i1 %2660, label %2669, label %2661

2661:                                             ; preds = %2656
  %2662 = load i64, ptr %115, align 8, !tbaa !9
  %2663 = load ptr, ptr %32, align 8, !tbaa !5
  %2664 = load i64, ptr %2663, align 8, !tbaa !9
  %2665 = icmp sgt i64 %2662, %2664
  br i1 %2665, label %2669, label %2666

2666:                                             ; preds = %2661
  %2667 = load i64, ptr %90, align 8, !tbaa !9
  %2668 = icmp sle i64 %2667, 2
  br i1 %2668, label %2669, label %2977

2669:                                             ; preds = %2666, %2661, %2656, %2653
  store i64 1, ptr %66, align 8, !tbaa !9
  %2670 = load ptr, ptr %31, align 8, !tbaa !5
  %2671 = load i64, ptr %2670, align 8, !tbaa !9
  %2672 = load i64, ptr %116, align 8, !tbaa !9
  %2673 = sub nsw i64 %2671, %2672
  store i64 %2673, ptr %67, align 8, !tbaa !9
  %2674 = load i64, ptr %66, align 8, !tbaa !9
  %2675 = load i64, ptr %67, align 8, !tbaa !9
  %2676 = icmp sge i64 %2674, %2675
  br i1 %2676, label %2677, label %2679

2677:                                             ; preds = %2669
  %2678 = load i64, ptr %66, align 8, !tbaa !9
  br label %2681

2679:                                             ; preds = %2669
  %2680 = load i64, ptr %67, align 8, !tbaa !9
  br label %2681

2681:                                             ; preds = %2679, %2677
  %2682 = phi i64 [ %2678, %2677 ], [ %2680, %2679 ]
  store i64 %2682, ptr %84, align 8, !tbaa !9
  store i64 0, ptr %66, align 8, !tbaa !9
  %2683 = load i64, ptr %115, align 8, !tbaa !9
  %2684 = load ptr, ptr %32, align 8, !tbaa !5
  %2685 = load i64, ptr %2684, align 8, !tbaa !9
  %2686 = sub nsw i64 %2683, %2685
  store i64 %2686, ptr %67, align 8, !tbaa !9
  %2687 = load i64, ptr %94, align 8, !tbaa !9
  %2688 = load i64, ptr %66, align 8, !tbaa !9
  %2689 = load i64, ptr %67, align 8, !tbaa !9
  %2690 = icmp sge i64 %2688, %2689
  br i1 %2690, label %2691, label %2693

2691:                                             ; preds = %2681
  %2692 = load i64, ptr %66, align 8, !tbaa !9
  br label %2695

2693:                                             ; preds = %2681
  %2694 = load i64, ptr %67, align 8, !tbaa !9
  br label %2695

2695:                                             ; preds = %2693, %2691
  %2696 = phi i64 [ %2692, %2691 ], [ %2694, %2693 ]
  %2697 = sub nsw i64 %2687, %2696
  %2698 = load i64, ptr %84, align 8, !tbaa !9
  %2699 = sub nsw i64 %2697, %2698
  %2700 = add nsw i64 %2699, 1
  store i64 %2700, ptr %91, align 8, !tbaa !9
  %2701 = load i64, ptr %107, align 8, !tbaa !9
  store i64 %2701, ptr %66, align 8, !tbaa !9
  %2702 = load ptr, ptr %49, align 8, !tbaa !5
  %2703 = load i64, ptr %2702, align 8, !tbaa !9
  store i64 %2703, ptr %67, align 8, !tbaa !9
  %2704 = load i64, ptr %115, align 8, !tbaa !9
  %2705 = load ptr, ptr %32, align 8, !tbaa !5
  %2706 = load i64, ptr %2705, align 8, !tbaa !9
  %2707 = icmp sle i64 %2704, %2706
  br i1 %2707, label %2708, label %2710

2708:                                             ; preds = %2695
  %2709 = load i64, ptr %115, align 8, !tbaa !9
  br label %2713

2710:                                             ; preds = %2695
  %2711 = load ptr, ptr %32, align 8, !tbaa !5
  %2712 = load i64, ptr %2711, align 8, !tbaa !9
  br label %2713

2713:                                             ; preds = %2710, %2708
  %2714 = phi i64 [ %2709, %2708 ], [ %2712, %2710 ]
  %2715 = add nsw i64 %2714, 1
  store i64 %2715, ptr %105, align 8, !tbaa !9
  br label %2716

2716:                                             ; preds = %2786, %2713
  %2717 = load i64, ptr %67, align 8, !tbaa !9
  %2718 = icmp slt i64 %2717, 0
  br i1 %2718, label %2719, label %2724

2719:                                             ; preds = %2716
  %2720 = load i64, ptr %105, align 8, !tbaa !9
  %2721 = load i64, ptr %66, align 8, !tbaa !9
  %2722 = icmp sge i64 %2720, %2721
  %2723 = zext i1 %2722 to i32
  br label %2729

2724:                                             ; preds = %2716
  %2725 = load i64, ptr %105, align 8, !tbaa !9
  %2726 = load i64, ptr %66, align 8, !tbaa !9
  %2727 = icmp sle i64 %2725, %2726
  %2728 = zext i1 %2727 to i32
  br label %2729

2729:                                             ; preds = %2724, %2719
  %2730 = phi i32 [ %2723, %2719 ], [ %2728, %2724 ]
  %2731 = icmp ne i32 %2730, 0
  br i1 %2731, label %2732, label %2790

2732:                                             ; preds = %2729
  %2733 = load ptr, ptr %49, align 8, !tbaa !5
  %2734 = load i64, ptr %2733, align 8, !tbaa !9
  store i64 %2734, ptr %68, align 8, !tbaa !9
  %2735 = load i64, ptr %107, align 8, !tbaa !9
  %2736 = load i64, ptr %105, align 8, !tbaa !9
  %2737 = sub nsw i64 %2735, %2736
  %2738 = add nsw i64 %2737, 1
  store i64 %2738, ptr %70, align 8, !tbaa !9
  %2739 = load i64, ptr %68, align 8, !tbaa !9
  %2740 = load i64, ptr %70, align 8, !tbaa !9
  %2741 = icmp sle i64 %2739, %2740
  br i1 %2741, label %2742, label %2744

2742:                                             ; preds = %2732
  %2743 = load i64, ptr %68, align 8, !tbaa !9
  br label %2746

2744:                                             ; preds = %2732
  %2745 = load i64, ptr %70, align 8, !tbaa !9
  br label %2746

2746:                                             ; preds = %2744, %2742
  %2747 = phi i64 [ %2743, %2742 ], [ %2745, %2744 ]
  store i64 %2747, ptr %106, align 8, !tbaa !9
  %2748 = load ptr, ptr %44, align 8, !tbaa !5
  %2749 = load i64, ptr %84, align 8, !tbaa !9
  %2750 = load i64, ptr %84, align 8, !tbaa !9
  %2751 = load i64, ptr %54, align 8, !tbaa !9
  %2752 = mul nsw i64 %2750, %2751
  %2753 = add nsw i64 %2749, %2752
  %2754 = getelementptr inbounds double, ptr %2748, i64 %2753
  %2755 = load ptr, ptr %45, align 8, !tbaa !5
  %2756 = load ptr, ptr %36, align 8, !tbaa !5
  %2757 = load i64, ptr %116, align 8, !tbaa !9
  %2758 = load i64, ptr %84, align 8, !tbaa !9
  %2759 = add nsw i64 %2757, %2758
  %2760 = load i64, ptr %105, align 8, !tbaa !9
  %2761 = load i64, ptr %52, align 8, !tbaa !9
  %2762 = mul nsw i64 %2760, %2761
  %2763 = add nsw i64 %2759, %2762
  %2764 = getelementptr inbounds double, ptr %2756, i64 %2763
  %2765 = load ptr, ptr %37, align 8, !tbaa !5
  %2766 = load ptr, ptr %50, align 8, !tbaa !5
  %2767 = load i64, ptr %59, align 8, !tbaa !9
  %2768 = getelementptr inbounds double, ptr %2766, i64 %2767
  %2769 = load ptr, ptr %51, align 8, !tbaa !5
  %2770 = call i32 @f2c_dgemm(ptr noundef @.str.3, ptr noundef @.str.4, ptr noundef %91, ptr noundef %106, ptr noundef %91, ptr noundef @c_b8, ptr noundef %2754, ptr noundef %2755, ptr noundef %2764, ptr noundef %2765, ptr noundef @c_b7, ptr noundef %2768, ptr noundef %2769)
  %2771 = load ptr, ptr %50, align 8, !tbaa !5
  %2772 = load i64, ptr %59, align 8, !tbaa !9
  %2773 = getelementptr inbounds double, ptr %2771, i64 %2772
  %2774 = load ptr, ptr %51, align 8, !tbaa !5
  %2775 = load ptr, ptr %36, align 8, !tbaa !5
  %2776 = load i64, ptr %116, align 8, !tbaa !9
  %2777 = load i64, ptr %84, align 8, !tbaa !9
  %2778 = add nsw i64 %2776, %2777
  %2779 = load i64, ptr %105, align 8, !tbaa !9
  %2780 = load i64, ptr %52, align 8, !tbaa !9
  %2781 = mul nsw i64 %2779, %2780
  %2782 = add nsw i64 %2778, %2781
  %2783 = getelementptr inbounds double, ptr %2775, i64 %2782
  %2784 = load ptr, ptr %37, align 8, !tbaa !5
  %2785 = call i32 @dlacpy_(ptr noundef @.str.2, ptr noundef %91, ptr noundef %106, ptr noundef %2773, ptr noundef %2774, ptr noundef %2783, ptr noundef %2784)
  br label %2786

2786:                                             ; preds = %2746
  %2787 = load i64, ptr %67, align 8, !tbaa !9
  %2788 = load i64, ptr %105, align 8, !tbaa !9
  %2789 = add nsw i64 %2788, %2787
  store i64 %2789, ptr %105, align 8, !tbaa !9
  br label %2716, !llvm.loop !29

2790:                                             ; preds = %2729
  %2791 = load ptr, ptr %31, align 8, !tbaa !5
  %2792 = load i64, ptr %2791, align 8, !tbaa !9
  %2793 = load i64, ptr %116, align 8, !tbaa !9
  %2794 = icmp sge i64 %2792, %2793
  br i1 %2794, label %2795, label %2798

2795:                                             ; preds = %2790
  %2796 = load ptr, ptr %31, align 8, !tbaa !5
  %2797 = load i64, ptr %2796, align 8, !tbaa !9
  br label %2800

2798:                                             ; preds = %2790
  %2799 = load i64, ptr %116, align 8, !tbaa !9
  br label %2800

2800:                                             ; preds = %2798, %2795
  %2801 = phi i64 [ %2797, %2795 ], [ %2799, %2798 ]
  %2802 = sub nsw i64 %2801, 1
  store i64 %2802, ptr %67, align 8, !tbaa !9
  %2803 = load ptr, ptr %46, align 8, !tbaa !5
  %2804 = load i64, ptr %2803, align 8, !tbaa !9
  store i64 %2804, ptr %66, align 8, !tbaa !9
  %2805 = load i64, ptr %110, align 8, !tbaa !9
  store i64 %2805, ptr %111, align 8, !tbaa !9
  br label %2806

2806:                                             ; preds = %2885, %2800
  %2807 = load i64, ptr %66, align 8, !tbaa !9
  %2808 = icmp slt i64 %2807, 0
  br i1 %2808, label %2809, label %2814

2809:                                             ; preds = %2806
  %2810 = load i64, ptr %111, align 8, !tbaa !9
  %2811 = load i64, ptr %67, align 8, !tbaa !9
  %2812 = icmp sge i64 %2810, %2811
  %2813 = zext i1 %2812 to i32
  br label %2819

2814:                                             ; preds = %2806
  %2815 = load i64, ptr %111, align 8, !tbaa !9
  %2816 = load i64, ptr %67, align 8, !tbaa !9
  %2817 = icmp sle i64 %2815, %2816
  %2818 = zext i1 %2817 to i32
  br label %2819

2819:                                             ; preds = %2814, %2809
  %2820 = phi i32 [ %2813, %2809 ], [ %2818, %2814 ]
  %2821 = icmp ne i32 %2820, 0
  br i1 %2821, label %2822, label %2889

2822:                                             ; preds = %2819
  %2823 = load ptr, ptr %46, align 8, !tbaa !5
  %2824 = load i64, ptr %2823, align 8, !tbaa !9
  store i64 %2824, ptr %68, align 8, !tbaa !9
  %2825 = load ptr, ptr %31, align 8, !tbaa !5
  %2826 = load i64, ptr %2825, align 8, !tbaa !9
  %2827 = load i64, ptr %116, align 8, !tbaa !9
  %2828 = icmp sge i64 %2826, %2827
  br i1 %2828, label %2829, label %2832

2829:                                             ; preds = %2822
  %2830 = load ptr, ptr %31, align 8, !tbaa !5
  %2831 = load i64, ptr %2830, align 8, !tbaa !9
  br label %2834

2832:                                             ; preds = %2822
  %2833 = load i64, ptr %116, align 8, !tbaa !9
  br label %2834

2834:                                             ; preds = %2832, %2829
  %2835 = phi i64 [ %2831, %2829 ], [ %2833, %2832 ]
  %2836 = load i64, ptr %111, align 8, !tbaa !9
  %2837 = sub nsw i64 %2835, %2836
  store i64 %2837, ptr %70, align 8, !tbaa !9
  %2838 = load i64, ptr %68, align 8, !tbaa !9
  %2839 = load i64, ptr %70, align 8, !tbaa !9
  %2840 = icmp sle i64 %2838, %2839
  br i1 %2840, label %2841, label %2843

2841:                                             ; preds = %2834
  %2842 = load i64, ptr %68, align 8, !tbaa !9
  br label %2845

2843:                                             ; preds = %2834
  %2844 = load i64, ptr %70, align 8, !tbaa !9
  br label %2845

2845:                                             ; preds = %2843, %2841
  %2846 = phi i64 [ %2842, %2841 ], [ %2844, %2843 ]
  store i64 %2846, ptr %106, align 8, !tbaa !9
  %2847 = load ptr, ptr %36, align 8, !tbaa !5
  %2848 = load i64, ptr %111, align 8, !tbaa !9
  %2849 = load i64, ptr %116, align 8, !tbaa !9
  %2850 = load i64, ptr %84, align 8, !tbaa !9
  %2851 = add nsw i64 %2849, %2850
  %2852 = load i64, ptr %52, align 8, !tbaa !9
  %2853 = mul nsw i64 %2851, %2852
  %2854 = add nsw i64 %2848, %2853
  %2855 = getelementptr inbounds double, ptr %2847, i64 %2854
  %2856 = load ptr, ptr %37, align 8, !tbaa !5
  %2857 = load ptr, ptr %44, align 8, !tbaa !5
  %2858 = load i64, ptr %84, align 8, !tbaa !9
  %2859 = load i64, ptr %84, align 8, !tbaa !9
  %2860 = load i64, ptr %54, align 8, !tbaa !9
  %2861 = mul nsw i64 %2859, %2860
  %2862 = add nsw i64 %2858, %2861
  %2863 = getelementptr inbounds double, ptr %2857, i64 %2862
  %2864 = load ptr, ptr %45, align 8, !tbaa !5
  %2865 = load ptr, ptr %47, align 8, !tbaa !5
  %2866 = load i64, ptr %61, align 8, !tbaa !9
  %2867 = getelementptr inbounds double, ptr %2865, i64 %2866
  %2868 = load ptr, ptr %48, align 8, !tbaa !5
  %2869 = call i32 @f2c_dgemm(ptr noundef @.str.4, ptr noundef @.str.4, ptr noundef %106, ptr noundef %91, ptr noundef %91, ptr noundef @c_b8, ptr noundef %2855, ptr noundef %2856, ptr noundef %2863, ptr noundef %2864, ptr noundef @c_b7, ptr noundef %2867, ptr noundef %2868)
  %2870 = load ptr, ptr %47, align 8, !tbaa !5
  %2871 = load i64, ptr %61, align 8, !tbaa !9
  %2872 = getelementptr inbounds double, ptr %2870, i64 %2871
  %2873 = load ptr, ptr %48, align 8, !tbaa !5
  %2874 = load ptr, ptr %36, align 8, !tbaa !5
  %2875 = load i64, ptr %111, align 8, !tbaa !9
  %2876 = load i64, ptr %116, align 8, !tbaa !9
  %2877 = load i64, ptr %84, align 8, !tbaa !9
  %2878 = add nsw i64 %2876, %2877
  %2879 = load i64, ptr %52, align 8, !tbaa !9
  %2880 = mul nsw i64 %2878, %2879
  %2881 = add nsw i64 %2875, %2880
  %2882 = getelementptr inbounds double, ptr %2874, i64 %2881
  %2883 = load ptr, ptr %37, align 8, !tbaa !5
  %2884 = call i32 @dlacpy_(ptr noundef @.str.2, ptr noundef %106, ptr noundef %91, ptr noundef %2872, ptr noundef %2873, ptr noundef %2882, ptr noundef %2883)
  br label %2885

2885:                                             ; preds = %2845
  %2886 = load i64, ptr %66, align 8, !tbaa !9
  %2887 = load i64, ptr %111, align 8, !tbaa !9
  %2888 = add nsw i64 %2887, %2886
  store i64 %2888, ptr %111, align 8, !tbaa !9
  br label %2806, !llvm.loop !30

2889:                                             ; preds = %2819
  %2890 = load ptr, ptr %28, align 8, !tbaa !5
  %2891 = load i64, ptr %2890, align 8, !tbaa !9
  %2892 = icmp ne i64 %2891, 0
  br i1 %2892, label %2893, label %2976

2893:                                             ; preds = %2889
  %2894 = load ptr, ptr %39, align 8, !tbaa !5
  %2895 = load i64, ptr %2894, align 8, !tbaa !9
  store i64 %2895, ptr %66, align 8, !tbaa !9
  %2896 = load ptr, ptr %46, align 8, !tbaa !5
  %2897 = load i64, ptr %2896, align 8, !tbaa !9
  store i64 %2897, ptr %67, align 8, !tbaa !9
  %2898 = load ptr, ptr %38, align 8, !tbaa !5
  %2899 = load i64, ptr %2898, align 8, !tbaa !9
  store i64 %2899, ptr %111, align 8, !tbaa !9
  br label %2900

2900:                                             ; preds = %2971, %2893
  %2901 = load i64, ptr %67, align 8, !tbaa !9
  %2902 = icmp slt i64 %2901, 0
  br i1 %2902, label %2903, label %2908

2903:                                             ; preds = %2900
  %2904 = load i64, ptr %111, align 8, !tbaa !9
  %2905 = load i64, ptr %66, align 8, !tbaa !9
  %2906 = icmp sge i64 %2904, %2905
  %2907 = zext i1 %2906 to i32
  br label %2913

2908:                                             ; preds = %2900
  %2909 = load i64, ptr %111, align 8, !tbaa !9
  %2910 = load i64, ptr %66, align 8, !tbaa !9
  %2911 = icmp sle i64 %2909, %2910
  %2912 = zext i1 %2911 to i32
  br label %2913

2913:                                             ; preds = %2908, %2903
  %2914 = phi i32 [ %2907, %2903 ], [ %2912, %2908 ]
  %2915 = icmp ne i32 %2914, 0
  br i1 %2915, label %2916, label %2975

2916:                                             ; preds = %2913
  %2917 = load ptr, ptr %46, align 8, !tbaa !5
  %2918 = load i64, ptr %2917, align 8, !tbaa !9
  store i64 %2918, ptr %68, align 8, !tbaa !9
  %2919 = load ptr, ptr %39, align 8, !tbaa !5
  %2920 = load i64, ptr %2919, align 8, !tbaa !9
  %2921 = load i64, ptr %111, align 8, !tbaa !9
  %2922 = sub nsw i64 %2920, %2921
  %2923 = add nsw i64 %2922, 1
  store i64 %2923, ptr %70, align 8, !tbaa !9
  %2924 = load i64, ptr %68, align 8, !tbaa !9
  %2925 = load i64, ptr %70, align 8, !tbaa !9
  %2926 = icmp sle i64 %2924, %2925
  br i1 %2926, label %2927, label %2929

2927:                                             ; preds = %2916
  %2928 = load i64, ptr %68, align 8, !tbaa !9
  br label %2931

2929:                                             ; preds = %2916
  %2930 = load i64, ptr %70, align 8, !tbaa !9
  br label %2931

2931:                                             ; preds = %2929, %2927
  %2932 = phi i64 [ %2928, %2927 ], [ %2930, %2929 ]
  store i64 %2932, ptr %106, align 8, !tbaa !9
  %2933 = load ptr, ptr %40, align 8, !tbaa !5
  %2934 = load i64, ptr %111, align 8, !tbaa !9
  %2935 = load i64, ptr %116, align 8, !tbaa !9
  %2936 = load i64, ptr %84, align 8, !tbaa !9
  %2937 = add nsw i64 %2935, %2936
  %2938 = load i64, ptr %62, align 8, !tbaa !9
  %2939 = mul nsw i64 %2937, %2938
  %2940 = add nsw i64 %2934, %2939
  %2941 = getelementptr inbounds double, ptr %2933, i64 %2940
  %2942 = load ptr, ptr %41, align 8, !tbaa !5
  %2943 = load ptr, ptr %44, align 8, !tbaa !5
  %2944 = load i64, ptr %84, align 8, !tbaa !9
  %2945 = load i64, ptr %84, align 8, !tbaa !9
  %2946 = load i64, ptr %54, align 8, !tbaa !9
  %2947 = mul nsw i64 %2945, %2946
  %2948 = add nsw i64 %2944, %2947
  %2949 = getelementptr inbounds double, ptr %2943, i64 %2948
  %2950 = load ptr, ptr %45, align 8, !tbaa !5
  %2951 = load ptr, ptr %47, align 8, !tbaa !5
  %2952 = load i64, ptr %61, align 8, !tbaa !9
  %2953 = getelementptr inbounds double, ptr %2951, i64 %2952
  %2954 = load ptr, ptr %48, align 8, !tbaa !5
  %2955 = call i32 @f2c_dgemm(ptr noundef @.str.4, ptr noundef @.str.4, ptr noundef %106, ptr noundef %91, ptr noundef %91, ptr noundef @c_b8, ptr noundef %2941, ptr noundef %2942, ptr noundef %2949, ptr noundef %2950, ptr noundef @c_b7, ptr noundef %2953, ptr noundef %2954)
  %2956 = load ptr, ptr %47, align 8, !tbaa !5
  %2957 = load i64, ptr %61, align 8, !tbaa !9
  %2958 = getelementptr inbounds double, ptr %2956, i64 %2957
  %2959 = load ptr, ptr %48, align 8, !tbaa !5
  %2960 = load ptr, ptr %40, align 8, !tbaa !5
  %2961 = load i64, ptr %111, align 8, !tbaa !9
  %2962 = load i64, ptr %116, align 8, !tbaa !9
  %2963 = load i64, ptr %84, align 8, !tbaa !9
  %2964 = add nsw i64 %2962, %2963
  %2965 = load i64, ptr %62, align 8, !tbaa !9
  %2966 = mul nsw i64 %2964, %2965
  %2967 = add nsw i64 %2961, %2966
  %2968 = getelementptr inbounds double, ptr %2960, i64 %2967
  %2969 = load ptr, ptr %41, align 8, !tbaa !5
  %2970 = call i32 @dlacpy_(ptr noundef @.str.2, ptr noundef %106, ptr noundef %91, ptr noundef %2958, ptr noundef %2959, ptr noundef %2968, ptr noundef %2969)
  br label %2971

2971:                                             ; preds = %2931
  %2972 = load i64, ptr %67, align 8, !tbaa !9
  %2973 = load i64, ptr %111, align 8, !tbaa !9
  %2974 = add nsw i64 %2973, %2972
  store i64 %2974, ptr %111, align 8, !tbaa !9
  br label %2900, !llvm.loop !31

2975:                                             ; preds = %2913
  br label %2976

2976:                                             ; preds = %2975, %2889
  br label %3598

2977:                                             ; preds = %2666
  %2978 = load i64, ptr %94, align 8, !tbaa !9
  %2979 = add nsw i64 %2978, 1
  %2980 = sdiv i64 %2979, 2
  store i64 %2980, ptr %80, align 8, !tbaa !9
  %2981 = load i64, ptr %94, align 8, !tbaa !9
  store i64 %2981, ptr %82, align 8, !tbaa !9
  %2982 = load i64, ptr %82, align 8, !tbaa !9
  %2983 = load i64, ptr %80, align 8, !tbaa !9
  %2984 = sub nsw i64 %2982, %2983
  store i64 %2984, ptr %81, align 8, !tbaa !9
  %2985 = load i64, ptr %94, align 8, !tbaa !9
  store i64 %2985, ptr %83, align 8, !tbaa !9
  %2986 = load i64, ptr %83, align 8, !tbaa !9
  %2987 = load i64, ptr %81, align 8, !tbaa !9
  %2988 = sub nsw i64 %2986, %2987
  %2989 = load i64, ptr %90, align 8, !tbaa !9
  %2990 = add nsw i64 %2989, 1
  %2991 = sub nsw i64 %2988, %2990
  store i64 %2991, ptr %98, align 8, !tbaa !9
  %2992 = load i64, ptr %90, align 8, !tbaa !9
  %2993 = add nsw i64 %2992, 1
  store i64 %2993, ptr %97, align 8, !tbaa !9
  %2994 = load i64, ptr %107, align 8, !tbaa !9
  store i64 %2994, ptr %67, align 8, !tbaa !9
  %2995 = load ptr, ptr %49, align 8, !tbaa !5
  %2996 = load i64, ptr %2995, align 8, !tbaa !9
  store i64 %2996, ptr %66, align 8, !tbaa !9
  %2997 = load i64, ptr %115, align 8, !tbaa !9
  %2998 = load ptr, ptr %32, align 8, !tbaa !5
  %2999 = load i64, ptr %2998, align 8, !tbaa !9
  %3000 = icmp sle i64 %2997, %2999
  br i1 %3000, label %3001, label %3003

3001:                                             ; preds = %2977
  %3002 = load i64, ptr %115, align 8, !tbaa !9
  br label %3006

3003:                                             ; preds = %2977
  %3004 = load ptr, ptr %32, align 8, !tbaa !5
  %3005 = load i64, ptr %3004, align 8, !tbaa !9
  br label %3006

3006:                                             ; preds = %3003, %3001
  %3007 = phi i64 [ %3002, %3001 ], [ %3005, %3003 ]
  %3008 = add nsw i64 %3007, 1
  store i64 %3008, ptr %105, align 8, !tbaa !9
  br label %3009

3009:                                             ; preds = %3183, %3006
  %3010 = load i64, ptr %66, align 8, !tbaa !9
  %3011 = icmp slt i64 %3010, 0
  br i1 %3011, label %3012, label %3017

3012:                                             ; preds = %3009
  %3013 = load i64, ptr %105, align 8, !tbaa !9
  %3014 = load i64, ptr %67, align 8, !tbaa !9
  %3015 = icmp sge i64 %3013, %3014
  %3016 = zext i1 %3015 to i32
  br label %3022

3017:                                             ; preds = %3009
  %3018 = load i64, ptr %105, align 8, !tbaa !9
  %3019 = load i64, ptr %67, align 8, !tbaa !9
  %3020 = icmp sle i64 %3018, %3019
  %3021 = zext i1 %3020 to i32
  br label %3022

3022:                                             ; preds = %3017, %3012
  %3023 = phi i32 [ %3016, %3012 ], [ %3021, %3017 ]
  %3024 = icmp ne i32 %3023, 0
  br i1 %3024, label %3025, label %3187

3025:                                             ; preds = %3022
  %3026 = load ptr, ptr %49, align 8, !tbaa !5
  %3027 = load i64, ptr %3026, align 8, !tbaa !9
  store i64 %3027, ptr %68, align 8, !tbaa !9
  %3028 = load i64, ptr %107, align 8, !tbaa !9
  %3029 = load i64, ptr %105, align 8, !tbaa !9
  %3030 = sub nsw i64 %3028, %3029
  %3031 = add nsw i64 %3030, 1
  store i64 %3031, ptr %70, align 8, !tbaa !9
  %3032 = load i64, ptr %68, align 8, !tbaa !9
  %3033 = load i64, ptr %70, align 8, !tbaa !9
  %3034 = icmp sle i64 %3032, %3033
  br i1 %3034, label %3035, label %3037

3035:                                             ; preds = %3025
  %3036 = load i64, ptr %68, align 8, !tbaa !9
  br label %3039

3037:                                             ; preds = %3025
  %3038 = load i64, ptr %70, align 8, !tbaa !9
  br label %3039

3039:                                             ; preds = %3037, %3035
  %3040 = phi i64 [ %3036, %3035 ], [ %3038, %3037 ]
  store i64 %3040, ptr %106, align 8, !tbaa !9
  %3041 = load ptr, ptr %36, align 8, !tbaa !5
  %3042 = load i64, ptr %116, align 8, !tbaa !9
  %3043 = add nsw i64 %3042, 1
  %3044 = load i64, ptr %81, align 8, !tbaa !9
  %3045 = add nsw i64 %3043, %3044
  %3046 = load i64, ptr %105, align 8, !tbaa !9
  %3047 = load i64, ptr %52, align 8, !tbaa !9
  %3048 = mul nsw i64 %3046, %3047
  %3049 = add nsw i64 %3045, %3048
  %3050 = getelementptr inbounds double, ptr %3041, i64 %3049
  %3051 = load ptr, ptr %37, align 8, !tbaa !5
  %3052 = load ptr, ptr %50, align 8, !tbaa !5
  %3053 = load i64, ptr %98, align 8, !tbaa !9
  %3054 = add nsw i64 %3053, 1
  %3055 = load i64, ptr %58, align 8, !tbaa !9
  %3056 = add nsw i64 %3054, %3055
  %3057 = getelementptr inbounds double, ptr %3052, i64 %3056
  %3058 = load ptr, ptr %51, align 8, !tbaa !5
  %3059 = call i32 @dlacpy_(ptr noundef @.str.2, ptr noundef %97, ptr noundef %106, ptr noundef %3050, ptr noundef %3051, ptr noundef %3057, ptr noundef %3058)
  %3060 = load ptr, ptr %50, align 8, !tbaa !5
  %3061 = load i64, ptr %59, align 8, !tbaa !9
  %3062 = getelementptr inbounds double, ptr %3060, i64 %3061
  %3063 = load ptr, ptr %51, align 8, !tbaa !5
  %3064 = call i32 @dlaset_(ptr noundef @.str.2, ptr noundef %98, ptr noundef %106, ptr noundef @c_b7, ptr noundef @c_b7, ptr noundef %3062, ptr noundef %3063)
  %3065 = load ptr, ptr %44, align 8, !tbaa !5
  %3066 = load i64, ptr %81, align 8, !tbaa !9
  %3067 = add nsw i64 %3066, 1
  %3068 = load i64, ptr %98, align 8, !tbaa !9
  %3069 = add nsw i64 %3068, 1
  %3070 = load i64, ptr %54, align 8, !tbaa !9
  %3071 = mul nsw i64 %3069, %3070
  %3072 = add nsw i64 %3067, %3071
  %3073 = getelementptr inbounds double, ptr %3065, i64 %3072
  %3074 = load ptr, ptr %45, align 8, !tbaa !5
  %3075 = load ptr, ptr %50, align 8, !tbaa !5
  %3076 = load i64, ptr %98, align 8, !tbaa !9
  %3077 = add nsw i64 %3076, 1
  %3078 = load i64, ptr %58, align 8, !tbaa !9
  %3079 = add nsw i64 %3077, %3078
  %3080 = getelementptr inbounds double, ptr %3075, i64 %3079
  %3081 = load ptr, ptr %51, align 8, !tbaa !5
  %3082 = call i32 @f2c_dtrmm(ptr noundef @.str.5, ptr noundef @.str.6, ptr noundef @.str.3, ptr noundef @.str.4, ptr noundef %97, ptr noundef %106, ptr noundef @c_b8, ptr noundef %3073, ptr noundef %3074, ptr noundef %3080, ptr noundef %3081)
  %3083 = load ptr, ptr %44, align 8, !tbaa !5
  %3084 = load i64, ptr %55, align 8, !tbaa !9
  %3085 = getelementptr inbounds double, ptr %3083, i64 %3084
  %3086 = load ptr, ptr %45, align 8, !tbaa !5
  %3087 = load ptr, ptr %36, align 8, !tbaa !5
  %3088 = load i64, ptr %116, align 8, !tbaa !9
  %3089 = add nsw i64 %3088, 1
  %3090 = load i64, ptr %105, align 8, !tbaa !9
  %3091 = load i64, ptr %52, align 8, !tbaa !9
  %3092 = mul nsw i64 %3090, %3091
  %3093 = add nsw i64 %3089, %3092
  %3094 = getelementptr inbounds double, ptr %3087, i64 %3093
  %3095 = load ptr, ptr %37, align 8, !tbaa !5
  %3096 = load ptr, ptr %50, align 8, !tbaa !5
  %3097 = load i64, ptr %59, align 8, !tbaa !9
  %3098 = getelementptr inbounds double, ptr %3096, i64 %3097
  %3099 = load ptr, ptr %51, align 8, !tbaa !5
  %3100 = call i32 @f2c_dgemm(ptr noundef @.str.3, ptr noundef @.str.4, ptr noundef %80, ptr noundef %106, ptr noundef %81, ptr noundef @c_b8, ptr noundef %3085, ptr noundef %3086, ptr noundef %3094, ptr noundef %3095, ptr noundef @c_b8, ptr noundef %3098, ptr noundef %3099)
  %3101 = load ptr, ptr %36, align 8, !tbaa !5
  %3102 = load i64, ptr %116, align 8, !tbaa !9
  %3103 = add nsw i64 %3102, 1
  %3104 = load i64, ptr %105, align 8, !tbaa !9
  %3105 = load i64, ptr %52, align 8, !tbaa !9
  %3106 = mul nsw i64 %3104, %3105
  %3107 = add nsw i64 %3103, %3106
  %3108 = getelementptr inbounds double, ptr %3101, i64 %3107
  %3109 = load ptr, ptr %37, align 8, !tbaa !5
  %3110 = load ptr, ptr %50, align 8, !tbaa !5
  %3111 = load i64, ptr %80, align 8, !tbaa !9
  %3112 = add nsw i64 %3111, 1
  %3113 = load i64, ptr %58, align 8, !tbaa !9
  %3114 = add nsw i64 %3112, %3113
  %3115 = getelementptr inbounds double, ptr %3110, i64 %3114
  %3116 = load ptr, ptr %51, align 8, !tbaa !5
  %3117 = call i32 @dlacpy_(ptr noundef @.str.2, ptr noundef %81, ptr noundef %106, ptr noundef %3108, ptr noundef %3109, ptr noundef %3115, ptr noundef %3116)
  %3118 = load ptr, ptr %44, align 8, !tbaa !5
  %3119 = load i64, ptr %80, align 8, !tbaa !9
  %3120 = add nsw i64 %3119, 1
  %3121 = load i64, ptr %54, align 8, !tbaa !9
  %3122 = mul nsw i64 %3120, %3121
  %3123 = add nsw i64 %3122, 1
  %3124 = getelementptr inbounds double, ptr %3118, i64 %3123
  %3125 = load ptr, ptr %45, align 8, !tbaa !5
  %3126 = load ptr, ptr %50, align 8, !tbaa !5
  %3127 = load i64, ptr %80, align 8, !tbaa !9
  %3128 = add nsw i64 %3127, 1
  %3129 = load i64, ptr %58, align 8, !tbaa !9
  %3130 = add nsw i64 %3128, %3129
  %3131 = getelementptr inbounds double, ptr %3126, i64 %3130
  %3132 = load ptr, ptr %51, align 8, !tbaa !5
  %3133 = call i32 @f2c_dtrmm(ptr noundef @.str.5, ptr noundef @.str.5, ptr noundef @.str.3, ptr noundef @.str.4, ptr noundef %81, ptr noundef %106, ptr noundef @c_b8, ptr noundef %3124, ptr noundef %3125, ptr noundef %3131, ptr noundef %3132)
  %3134 = load i64, ptr %82, align 8, !tbaa !9
  %3135 = load i64, ptr %80, align 8, !tbaa !9
  %3136 = sub nsw i64 %3134, %3135
  store i64 %3136, ptr %68, align 8, !tbaa !9
  %3137 = load i64, ptr %83, align 8, !tbaa !9
  %3138 = load i64, ptr %81, align 8, !tbaa !9
  %3139 = sub nsw i64 %3137, %3138
  store i64 %3139, ptr %70, align 8, !tbaa !9
  %3140 = load ptr, ptr %44, align 8, !tbaa !5
  %3141 = load i64, ptr %81, align 8, !tbaa !9
  %3142 = add nsw i64 %3141, 1
  %3143 = load i64, ptr %80, align 8, !tbaa !9
  %3144 = add nsw i64 %3143, 1
  %3145 = load i64, ptr %54, align 8, !tbaa !9
  %3146 = mul nsw i64 %3144, %3145
  %3147 = add nsw i64 %3142, %3146
  %3148 = getelementptr inbounds double, ptr %3140, i64 %3147
  %3149 = load ptr, ptr %45, align 8, !tbaa !5
  %3150 = load ptr, ptr %36, align 8, !tbaa !5
  %3151 = load i64, ptr %116, align 8, !tbaa !9
  %3152 = add nsw i64 %3151, 1
  %3153 = load i64, ptr %81, align 8, !tbaa !9
  %3154 = add nsw i64 %3152, %3153
  %3155 = load i64, ptr %105, align 8, !tbaa !9
  %3156 = load i64, ptr %52, align 8, !tbaa !9
  %3157 = mul nsw i64 %3155, %3156
  %3158 = add nsw i64 %3154, %3157
  %3159 = getelementptr inbounds double, ptr %3150, i64 %3158
  %3160 = load ptr, ptr %37, align 8, !tbaa !5
  %3161 = load ptr, ptr %50, align 8, !tbaa !5
  %3162 = load i64, ptr %80, align 8, !tbaa !9
  %3163 = add nsw i64 %3162, 1
  %3164 = load i64, ptr %58, align 8, !tbaa !9
  %3165 = add nsw i64 %3163, %3164
  %3166 = getelementptr inbounds double, ptr %3161, i64 %3165
  %3167 = load ptr, ptr %51, align 8, !tbaa !5
  %3168 = call i32 @f2c_dgemm(ptr noundef @.str.3, ptr noundef @.str.4, ptr noundef %68, ptr noundef %106, ptr noundef %70, ptr noundef @c_b8, ptr noundef %3148, ptr noundef %3149, ptr noundef %3159, ptr noundef %3160, ptr noundef @c_b8, ptr noundef %3166, ptr noundef %3167)
  %3169 = load ptr, ptr %50, align 8, !tbaa !5
  %3170 = load i64, ptr %59, align 8, !tbaa !9
  %3171 = getelementptr inbounds double, ptr %3169, i64 %3170
  %3172 = load ptr, ptr %51, align 8, !tbaa !5
  %3173 = load ptr, ptr %36, align 8, !tbaa !5
  %3174 = load i64, ptr %116, align 8, !tbaa !9
  %3175 = add nsw i64 %3174, 1
  %3176 = load i64, ptr %105, align 8, !tbaa !9
  %3177 = load i64, ptr %52, align 8, !tbaa !9
  %3178 = mul nsw i64 %3176, %3177
  %3179 = add nsw i64 %3175, %3178
  %3180 = getelementptr inbounds double, ptr %3173, i64 %3179
  %3181 = load ptr, ptr %37, align 8, !tbaa !5
  %3182 = call i32 @dlacpy_(ptr noundef @.str.2, ptr noundef %94, ptr noundef %106, ptr noundef %3171, ptr noundef %3172, ptr noundef %3180, ptr noundef %3181)
  br label %3183

3183:                                             ; preds = %3039
  %3184 = load i64, ptr %66, align 8, !tbaa !9
  %3185 = load i64, ptr %105, align 8, !tbaa !9
  %3186 = add nsw i64 %3185, %3184
  store i64 %3186, ptr %105, align 8, !tbaa !9
  br label %3009, !llvm.loop !32

3187:                                             ; preds = %3022
  %3188 = load i64, ptr %116, align 8, !tbaa !9
  %3189 = load ptr, ptr %31, align 8, !tbaa !5
  %3190 = load i64, ptr %3189, align 8, !tbaa !9
  %3191 = icmp sge i64 %3188, %3190
  br i1 %3191, label %3192, label %3194

3192:                                             ; preds = %3187
  %3193 = load i64, ptr %116, align 8, !tbaa !9
  br label %3197

3194:                                             ; preds = %3187
  %3195 = load ptr, ptr %31, align 8, !tbaa !5
  %3196 = load i64, ptr %3195, align 8, !tbaa !9
  br label %3197

3197:                                             ; preds = %3194, %3192
  %3198 = phi i64 [ %3193, %3192 ], [ %3196, %3194 ]
  %3199 = sub nsw i64 %3198, 1
  store i64 %3199, ptr %66, align 8, !tbaa !9
  %3200 = load ptr, ptr %46, align 8, !tbaa !5
  %3201 = load i64, ptr %3200, align 8, !tbaa !9
  store i64 %3201, ptr %67, align 8, !tbaa !9
  %3202 = load i64, ptr %110, align 8, !tbaa !9
  store i64 %3202, ptr %111, align 8, !tbaa !9
  br label %3203

3203:                                             ; preds = %3394, %3197
  %3204 = load i64, ptr %67, align 8, !tbaa !9
  %3205 = icmp slt i64 %3204, 0
  br i1 %3205, label %3206, label %3211

3206:                                             ; preds = %3203
  %3207 = load i64, ptr %111, align 8, !tbaa !9
  %3208 = load i64, ptr %66, align 8, !tbaa !9
  %3209 = icmp sge i64 %3207, %3208
  %3210 = zext i1 %3209 to i32
  br label %3216

3211:                                             ; preds = %3203
  %3212 = load i64, ptr %111, align 8, !tbaa !9
  %3213 = load i64, ptr %66, align 8, !tbaa !9
  %3214 = icmp sle i64 %3212, %3213
  %3215 = zext i1 %3214 to i32
  br label %3216

3216:                                             ; preds = %3211, %3206
  %3217 = phi i32 [ %3210, %3206 ], [ %3215, %3211 ]
  %3218 = icmp ne i32 %3217, 0
  br i1 %3218, label %3219, label %3398

3219:                                             ; preds = %3216
  %3220 = load ptr, ptr %46, align 8, !tbaa !5
  %3221 = load i64, ptr %3220, align 8, !tbaa !9
  store i64 %3221, ptr %68, align 8, !tbaa !9
  %3222 = load i64, ptr %116, align 8, !tbaa !9
  %3223 = load ptr, ptr %31, align 8, !tbaa !5
  %3224 = load i64, ptr %3223, align 8, !tbaa !9
  %3225 = icmp sge i64 %3222, %3224
  br i1 %3225, label %3226, label %3228

3226:                                             ; preds = %3219
  %3227 = load i64, ptr %116, align 8, !tbaa !9
  br label %3231

3228:                                             ; preds = %3219
  %3229 = load ptr, ptr %31, align 8, !tbaa !5
  %3230 = load i64, ptr %3229, align 8, !tbaa !9
  br label %3231

3231:                                             ; preds = %3228, %3226
  %3232 = phi i64 [ %3227, %3226 ], [ %3230, %3228 ]
  %3233 = load i64, ptr %111, align 8, !tbaa !9
  %3234 = sub nsw i64 %3232, %3233
  store i64 %3234, ptr %70, align 8, !tbaa !9
  %3235 = load i64, ptr %68, align 8, !tbaa !9
  %3236 = load i64, ptr %70, align 8, !tbaa !9
  %3237 = icmp sle i64 %3235, %3236
  br i1 %3237, label %3238, label %3240

3238:                                             ; preds = %3231
  %3239 = load i64, ptr %68, align 8, !tbaa !9
  br label %3242

3240:                                             ; preds = %3231
  %3241 = load i64, ptr %70, align 8, !tbaa !9
  br label %3242

3242:                                             ; preds = %3240, %3238
  %3243 = phi i64 [ %3239, %3238 ], [ %3241, %3240 ]
  store i64 %3243, ptr %106, align 8, !tbaa !9
  %3244 = load ptr, ptr %36, align 8, !tbaa !5
  %3245 = load i64, ptr %111, align 8, !tbaa !9
  %3246 = load i64, ptr %116, align 8, !tbaa !9
  %3247 = add nsw i64 %3246, 1
  %3248 = load i64, ptr %81, align 8, !tbaa !9
  %3249 = add nsw i64 %3247, %3248
  %3250 = load i64, ptr %52, align 8, !tbaa !9
  %3251 = mul nsw i64 %3249, %3250
  %3252 = add nsw i64 %3245, %3251
  %3253 = getelementptr inbounds double, ptr %3244, i64 %3252
  %3254 = load ptr, ptr %37, align 8, !tbaa !5
  %3255 = load ptr, ptr %47, align 8, !tbaa !5
  %3256 = load i64, ptr %98, align 8, !tbaa !9
  %3257 = add nsw i64 %3256, 1
  %3258 = load i64, ptr %60, align 8, !tbaa !9
  %3259 = mul nsw i64 %3257, %3258
  %3260 = add nsw i64 %3259, 1
  %3261 = getelementptr inbounds double, ptr %3255, i64 %3260
  %3262 = load ptr, ptr %48, align 8, !tbaa !5
  %3263 = call i32 @dlacpy_(ptr noundef @.str.2, ptr noundef %106, ptr noundef %97, ptr noundef %3253, ptr noundef %3254, ptr noundef %3261, ptr noundef %3262)
  %3264 = load ptr, ptr %47, align 8, !tbaa !5
  %3265 = load i64, ptr %61, align 8, !tbaa !9
  %3266 = getelementptr inbounds double, ptr %3264, i64 %3265
  %3267 = load ptr, ptr %48, align 8, !tbaa !5
  %3268 = call i32 @dlaset_(ptr noundef @.str.2, ptr noundef %106, ptr noundef %98, ptr noundef @c_b7, ptr noundef @c_b7, ptr noundef %3266, ptr noundef %3267)
  %3269 = load ptr, ptr %44, align 8, !tbaa !5
  %3270 = load i64, ptr %81, align 8, !tbaa !9
  %3271 = add nsw i64 %3270, 1
  %3272 = load i64, ptr %98, align 8, !tbaa !9
  %3273 = add nsw i64 %3272, 1
  %3274 = load i64, ptr %54, align 8, !tbaa !9
  %3275 = mul nsw i64 %3273, %3274
  %3276 = add nsw i64 %3271, %3275
  %3277 = getelementptr inbounds double, ptr %3269, i64 %3276
  %3278 = load ptr, ptr %45, align 8, !tbaa !5
  %3279 = load ptr, ptr %47, align 8, !tbaa !5
  %3280 = load i64, ptr %98, align 8, !tbaa !9
  %3281 = add nsw i64 %3280, 1
  %3282 = load i64, ptr %60, align 8, !tbaa !9
  %3283 = mul nsw i64 %3281, %3282
  %3284 = add nsw i64 %3283, 1
  %3285 = getelementptr inbounds double, ptr %3279, i64 %3284
  %3286 = load ptr, ptr %48, align 8, !tbaa !5
  %3287 = call i32 @f2c_dtrmm(ptr noundef @.str.7, ptr noundef @.str.6, ptr noundef @.str.4, ptr noundef @.str.4, ptr noundef %106, ptr noundef %97, ptr noundef @c_b8, ptr noundef %3277, ptr noundef %3278, ptr noundef %3285, ptr noundef %3286)
  %3288 = load ptr, ptr %36, align 8, !tbaa !5
  %3289 = load i64, ptr %111, align 8, !tbaa !9
  %3290 = load i64, ptr %116, align 8, !tbaa !9
  %3291 = add nsw i64 %3290, 1
  %3292 = load i64, ptr %52, align 8, !tbaa !9
  %3293 = mul nsw i64 %3291, %3292
  %3294 = add nsw i64 %3289, %3293
  %3295 = getelementptr inbounds double, ptr %3288, i64 %3294
  %3296 = load ptr, ptr %37, align 8, !tbaa !5
  %3297 = load ptr, ptr %44, align 8, !tbaa !5
  %3298 = load i64, ptr %55, align 8, !tbaa !9
  %3299 = getelementptr inbounds double, ptr %3297, i64 %3298
  %3300 = load ptr, ptr %45, align 8, !tbaa !5
  %3301 = load ptr, ptr %47, align 8, !tbaa !5
  %3302 = load i64, ptr %61, align 8, !tbaa !9
  %3303 = getelementptr inbounds double, ptr %3301, i64 %3302
  %3304 = load ptr, ptr %48, align 8, !tbaa !5
  %3305 = call i32 @f2c_dgemm(ptr noundef @.str.4, ptr noundef @.str.4, ptr noundef %106, ptr noundef %80, ptr noundef %81, ptr noundef @c_b8, ptr noundef %3295, ptr noundef %3296, ptr noundef %3299, ptr noundef %3300, ptr noundef @c_b8, ptr noundef %3303, ptr noundef %3304)
  %3306 = load ptr, ptr %36, align 8, !tbaa !5
  %3307 = load i64, ptr %111, align 8, !tbaa !9
  %3308 = load i64, ptr %116, align 8, !tbaa !9
  %3309 = add nsw i64 %3308, 1
  %3310 = load i64, ptr %52, align 8, !tbaa !9
  %3311 = mul nsw i64 %3309, %3310
  %3312 = add nsw i64 %3307, %3311
  %3313 = getelementptr inbounds double, ptr %3306, i64 %3312
  %3314 = load ptr, ptr %37, align 8, !tbaa !5
  %3315 = load ptr, ptr %47, align 8, !tbaa !5
  %3316 = load i64, ptr %80, align 8, !tbaa !9
  %3317 = add nsw i64 %3316, 1
  %3318 = load i64, ptr %60, align 8, !tbaa !9
  %3319 = mul nsw i64 %3317, %3318
  %3320 = add nsw i64 %3319, 1
  %3321 = getelementptr inbounds double, ptr %3315, i64 %3320
  %3322 = load ptr, ptr %48, align 8, !tbaa !5
  %3323 = call i32 @dlacpy_(ptr noundef @.str.2, ptr noundef %106, ptr noundef %81, ptr noundef %3313, ptr noundef %3314, ptr noundef %3321, ptr noundef %3322)
  %3324 = load i64, ptr %82, align 8, !tbaa !9
  %3325 = load i64, ptr %80, align 8, !tbaa !9
  %3326 = sub nsw i64 %3324, %3325
  store i64 %3326, ptr %68, align 8, !tbaa !9
  %3327 = load ptr, ptr %44, align 8, !tbaa !5
  %3328 = load i64, ptr %80, align 8, !tbaa !9
  %3329 = add nsw i64 %3328, 1
  %3330 = load i64, ptr %54, align 8, !tbaa !9
  %3331 = mul nsw i64 %3329, %3330
  %3332 = add nsw i64 %3331, 1
  %3333 = getelementptr inbounds double, ptr %3327, i64 %3332
  %3334 = load ptr, ptr %45, align 8, !tbaa !5
  %3335 = load ptr, ptr %47, align 8, !tbaa !5
  %3336 = load i64, ptr %80, align 8, !tbaa !9
  %3337 = add nsw i64 %3336, 1
  %3338 = load i64, ptr %60, align 8, !tbaa !9
  %3339 = mul nsw i64 %3337, %3338
  %3340 = add nsw i64 %3339, 1
  %3341 = getelementptr inbounds double, ptr %3335, i64 %3340
  %3342 = load ptr, ptr %48, align 8, !tbaa !5
  %3343 = call i32 @f2c_dtrmm(ptr noundef @.str.7, ptr noundef @.str.5, ptr noundef @.str.4, ptr noundef @.str.4, ptr noundef %106, ptr noundef %68, ptr noundef @c_b8, ptr noundef %3333, ptr noundef %3334, ptr noundef %3341, ptr noundef %3342)
  %3344 = load i64, ptr %82, align 8, !tbaa !9
  %3345 = load i64, ptr %80, align 8, !tbaa !9
  %3346 = sub nsw i64 %3344, %3345
  store i64 %3346, ptr %68, align 8, !tbaa !9
  %3347 = load i64, ptr %83, align 8, !tbaa !9
  %3348 = load i64, ptr %81, align 8, !tbaa !9
  %3349 = sub nsw i64 %3347, %3348
  store i64 %3349, ptr %70, align 8, !tbaa !9
  %3350 = load ptr, ptr %36, align 8, !tbaa !5
  %3351 = load i64, ptr %111, align 8, !tbaa !9
  %3352 = load i64, ptr %116, align 8, !tbaa !9
  %3353 = add nsw i64 %3352, 1
  %3354 = load i64, ptr %81, align 8, !tbaa !9
  %3355 = add nsw i64 %3353, %3354
  %3356 = load i64, ptr %52, align 8, !tbaa !9
  %3357 = mul nsw i64 %3355, %3356
  %3358 = add nsw i64 %3351, %3357
  %3359 = getelementptr inbounds double, ptr %3350, i64 %3358
  %3360 = load ptr, ptr %37, align 8, !tbaa !5
  %3361 = load ptr, ptr %44, align 8, !tbaa !5
  %3362 = load i64, ptr %81, align 8, !tbaa !9
  %3363 = add nsw i64 %3362, 1
  %3364 = load i64, ptr %80, align 8, !tbaa !9
  %3365 = add nsw i64 %3364, 1
  %3366 = load i64, ptr %54, align 8, !tbaa !9
  %3367 = mul nsw i64 %3365, %3366
  %3368 = add nsw i64 %3363, %3367
  %3369 = getelementptr inbounds double, ptr %3361, i64 %3368
  %3370 = load ptr, ptr %45, align 8, !tbaa !5
  %3371 = load ptr, ptr %47, align 8, !tbaa !5
  %3372 = load i64, ptr %80, align 8, !tbaa !9
  %3373 = add nsw i64 %3372, 1
  %3374 = load i64, ptr %60, align 8, !tbaa !9
  %3375 = mul nsw i64 %3373, %3374
  %3376 = add nsw i64 %3375, 1
  %3377 = getelementptr inbounds double, ptr %3371, i64 %3376
  %3378 = load ptr, ptr %48, align 8, !tbaa !5
  %3379 = call i32 @f2c_dgemm(ptr noundef @.str.4, ptr noundef @.str.4, ptr noundef %106, ptr noundef %68, ptr noundef %70, ptr noundef @c_b8, ptr noundef %3359, ptr noundef %3360, ptr noundef %3369, ptr noundef %3370, ptr noundef @c_b8, ptr noundef %3377, ptr noundef %3378)
  %3380 = load ptr, ptr %47, align 8, !tbaa !5
  %3381 = load i64, ptr %61, align 8, !tbaa !9
  %3382 = getelementptr inbounds double, ptr %3380, i64 %3381
  %3383 = load ptr, ptr %48, align 8, !tbaa !5
  %3384 = load ptr, ptr %36, align 8, !tbaa !5
  %3385 = load i64, ptr %111, align 8, !tbaa !9
  %3386 = load i64, ptr %116, align 8, !tbaa !9
  %3387 = add nsw i64 %3386, 1
  %3388 = load i64, ptr %52, align 8, !tbaa !9
  %3389 = mul nsw i64 %3387, %3388
  %3390 = add nsw i64 %3385, %3389
  %3391 = getelementptr inbounds double, ptr %3384, i64 %3390
  %3392 = load ptr, ptr %37, align 8, !tbaa !5
  %3393 = call i32 @dlacpy_(ptr noundef @.str.2, ptr noundef %106, ptr noundef %94, ptr noundef %3382, ptr noundef %3383, ptr noundef %3391, ptr noundef %3392)
  br label %3394

3394:                                             ; preds = %3242
  %3395 = load i64, ptr %67, align 8, !tbaa !9
  %3396 = load i64, ptr %111, align 8, !tbaa !9
  %3397 = add nsw i64 %3396, %3395
  store i64 %3397, ptr %111, align 8, !tbaa !9
  br label %3203, !llvm.loop !33

3398:                                             ; preds = %3216
  %3399 = load ptr, ptr %28, align 8, !tbaa !5
  %3400 = load i64, ptr %3399, align 8, !tbaa !9
  %3401 = icmp ne i64 %3400, 0
  br i1 %3401, label %3402, label %3597

3402:                                             ; preds = %3398
  %3403 = load ptr, ptr %39, align 8, !tbaa !5
  %3404 = load i64, ptr %3403, align 8, !tbaa !9
  store i64 %3404, ptr %67, align 8, !tbaa !9
  %3405 = load ptr, ptr %46, align 8, !tbaa !5
  %3406 = load i64, ptr %3405, align 8, !tbaa !9
  store i64 %3406, ptr %66, align 8, !tbaa !9
  %3407 = load ptr, ptr %38, align 8, !tbaa !5
  %3408 = load i64, ptr %3407, align 8, !tbaa !9
  store i64 %3408, ptr %111, align 8, !tbaa !9
  br label %3409

3409:                                             ; preds = %3592, %3402
  %3410 = load i64, ptr %66, align 8, !tbaa !9
  %3411 = icmp slt i64 %3410, 0
  br i1 %3411, label %3412, label %3417

3412:                                             ; preds = %3409
  %3413 = load i64, ptr %111, align 8, !tbaa !9
  %3414 = load i64, ptr %67, align 8, !tbaa !9
  %3415 = icmp sge i64 %3413, %3414
  %3416 = zext i1 %3415 to i32
  br label %3422

3417:                                             ; preds = %3409
  %3418 = load i64, ptr %111, align 8, !tbaa !9
  %3419 = load i64, ptr %67, align 8, !tbaa !9
  %3420 = icmp sle i64 %3418, %3419
  %3421 = zext i1 %3420 to i32
  br label %3422

3422:                                             ; preds = %3417, %3412
  %3423 = phi i32 [ %3416, %3412 ], [ %3421, %3417 ]
  %3424 = icmp ne i32 %3423, 0
  br i1 %3424, label %3425, label %3596

3425:                                             ; preds = %3422
  %3426 = load ptr, ptr %46, align 8, !tbaa !5
  %3427 = load i64, ptr %3426, align 8, !tbaa !9
  store i64 %3427, ptr %68, align 8, !tbaa !9
  %3428 = load ptr, ptr %39, align 8, !tbaa !5
  %3429 = load i64, ptr %3428, align 8, !tbaa !9
  %3430 = load i64, ptr %111, align 8, !tbaa !9
  %3431 = sub nsw i64 %3429, %3430
  %3432 = add nsw i64 %3431, 1
  store i64 %3432, ptr %70, align 8, !tbaa !9
  %3433 = load i64, ptr %68, align 8, !tbaa !9
  %3434 = load i64, ptr %70, align 8, !tbaa !9
  %3435 = icmp sle i64 %3433, %3434
  br i1 %3435, label %3436, label %3438

3436:                                             ; preds = %3425
  %3437 = load i64, ptr %68, align 8, !tbaa !9
  br label %3440

3438:                                             ; preds = %3425
  %3439 = load i64, ptr %70, align 8, !tbaa !9
  br label %3440

3440:                                             ; preds = %3438, %3436
  %3441 = phi i64 [ %3437, %3436 ], [ %3439, %3438 ]
  store i64 %3441, ptr %106, align 8, !tbaa !9
  %3442 = load ptr, ptr %40, align 8, !tbaa !5
  %3443 = load i64, ptr %111, align 8, !tbaa !9
  %3444 = load i64, ptr %116, align 8, !tbaa !9
  %3445 = add nsw i64 %3444, 1
  %3446 = load i64, ptr %81, align 8, !tbaa !9
  %3447 = add nsw i64 %3445, %3446
  %3448 = load i64, ptr %62, align 8, !tbaa !9
  %3449 = mul nsw i64 %3447, %3448
  %3450 = add nsw i64 %3443, %3449
  %3451 = getelementptr inbounds double, ptr %3442, i64 %3450
  %3452 = load ptr, ptr %41, align 8, !tbaa !5
  %3453 = load ptr, ptr %47, align 8, !tbaa !5
  %3454 = load i64, ptr %98, align 8, !tbaa !9
  %3455 = add nsw i64 %3454, 1
  %3456 = load i64, ptr %60, align 8, !tbaa !9
  %3457 = mul nsw i64 %3455, %3456
  %3458 = add nsw i64 %3457, 1
  %3459 = getelementptr inbounds double, ptr %3453, i64 %3458
  %3460 = load ptr, ptr %48, align 8, !tbaa !5
  %3461 = call i32 @dlacpy_(ptr noundef @.str.2, ptr noundef %106, ptr noundef %97, ptr noundef %3451, ptr noundef %3452, ptr noundef %3459, ptr noundef %3460)
  %3462 = load ptr, ptr %47, align 8, !tbaa !5
  %3463 = load i64, ptr %61, align 8, !tbaa !9
  %3464 = getelementptr inbounds double, ptr %3462, i64 %3463
  %3465 = load ptr, ptr %48, align 8, !tbaa !5
  %3466 = call i32 @dlaset_(ptr noundef @.str.2, ptr noundef %106, ptr noundef %98, ptr noundef @c_b7, ptr noundef @c_b7, ptr noundef %3464, ptr noundef %3465)
  %3467 = load ptr, ptr %44, align 8, !tbaa !5
  %3468 = load i64, ptr %81, align 8, !tbaa !9
  %3469 = add nsw i64 %3468, 1
  %3470 = load i64, ptr %98, align 8, !tbaa !9
  %3471 = add nsw i64 %3470, 1
  %3472 = load i64, ptr %54, align 8, !tbaa !9
  %3473 = mul nsw i64 %3471, %3472
  %3474 = add nsw i64 %3469, %3473
  %3475 = getelementptr inbounds double, ptr %3467, i64 %3474
  %3476 = load ptr, ptr %45, align 8, !tbaa !5
  %3477 = load ptr, ptr %47, align 8, !tbaa !5
  %3478 = load i64, ptr %98, align 8, !tbaa !9
  %3479 = add nsw i64 %3478, 1
  %3480 = load i64, ptr %60, align 8, !tbaa !9
  %3481 = mul nsw i64 %3479, %3480
  %3482 = add nsw i64 %3481, 1
  %3483 = getelementptr inbounds double, ptr %3477, i64 %3482
  %3484 = load ptr, ptr %48, align 8, !tbaa !5
  %3485 = call i32 @f2c_dtrmm(ptr noundef @.str.7, ptr noundef @.str.6, ptr noundef @.str.4, ptr noundef @.str.4, ptr noundef %106, ptr noundef %97, ptr noundef @c_b8, ptr noundef %3475, ptr noundef %3476, ptr noundef %3483, ptr noundef %3484)
  %3486 = load ptr, ptr %40, align 8, !tbaa !5
  %3487 = load i64, ptr %111, align 8, !tbaa !9
  %3488 = load i64, ptr %116, align 8, !tbaa !9
  %3489 = add nsw i64 %3488, 1
  %3490 = load i64, ptr %62, align 8, !tbaa !9
  %3491 = mul nsw i64 %3489, %3490
  %3492 = add nsw i64 %3487, %3491
  %3493 = getelementptr inbounds double, ptr %3486, i64 %3492
  %3494 = load ptr, ptr %41, align 8, !tbaa !5
  %3495 = load ptr, ptr %44, align 8, !tbaa !5
  %3496 = load i64, ptr %55, align 8, !tbaa !9
  %3497 = getelementptr inbounds double, ptr %3495, i64 %3496
  %3498 = load ptr, ptr %45, align 8, !tbaa !5
  %3499 = load ptr, ptr %47, align 8, !tbaa !5
  %3500 = load i64, ptr %61, align 8, !tbaa !9
  %3501 = getelementptr inbounds double, ptr %3499, i64 %3500
  %3502 = load ptr, ptr %48, align 8, !tbaa !5
  %3503 = call i32 @f2c_dgemm(ptr noundef @.str.4, ptr noundef @.str.4, ptr noundef %106, ptr noundef %80, ptr noundef %81, ptr noundef @c_b8, ptr noundef %3493, ptr noundef %3494, ptr noundef %3497, ptr noundef %3498, ptr noundef @c_b8, ptr noundef %3501, ptr noundef %3502)
  %3504 = load ptr, ptr %40, align 8, !tbaa !5
  %3505 = load i64, ptr %111, align 8, !tbaa !9
  %3506 = load i64, ptr %116, align 8, !tbaa !9
  %3507 = add nsw i64 %3506, 1
  %3508 = load i64, ptr %62, align 8, !tbaa !9
  %3509 = mul nsw i64 %3507, %3508
  %3510 = add nsw i64 %3505, %3509
  %3511 = getelementptr inbounds double, ptr %3504, i64 %3510
  %3512 = load ptr, ptr %41, align 8, !tbaa !5
  %3513 = load ptr, ptr %47, align 8, !tbaa !5
  %3514 = load i64, ptr %80, align 8, !tbaa !9
  %3515 = add nsw i64 %3514, 1
  %3516 = load i64, ptr %60, align 8, !tbaa !9
  %3517 = mul nsw i64 %3515, %3516
  %3518 = add nsw i64 %3517, 1
  %3519 = getelementptr inbounds double, ptr %3513, i64 %3518
  %3520 = load ptr, ptr %48, align 8, !tbaa !5
  %3521 = call i32 @dlacpy_(ptr noundef @.str.2, ptr noundef %106, ptr noundef %81, ptr noundef %3511, ptr noundef %3512, ptr noundef %3519, ptr noundef %3520)
  %3522 = load i64, ptr %82, align 8, !tbaa !9
  %3523 = load i64, ptr %80, align 8, !tbaa !9
  %3524 = sub nsw i64 %3522, %3523
  store i64 %3524, ptr %68, align 8, !tbaa !9
  %3525 = load ptr, ptr %44, align 8, !tbaa !5
  %3526 = load i64, ptr %80, align 8, !tbaa !9
  %3527 = add nsw i64 %3526, 1
  %3528 = load i64, ptr %54, align 8, !tbaa !9
  %3529 = mul nsw i64 %3527, %3528
  %3530 = add nsw i64 %3529, 1
  %3531 = getelementptr inbounds double, ptr %3525, i64 %3530
  %3532 = load ptr, ptr %45, align 8, !tbaa !5
  %3533 = load ptr, ptr %47, align 8, !tbaa !5
  %3534 = load i64, ptr %80, align 8, !tbaa !9
  %3535 = add nsw i64 %3534, 1
  %3536 = load i64, ptr %60, align 8, !tbaa !9
  %3537 = mul nsw i64 %3535, %3536
  %3538 = add nsw i64 %3537, 1
  %3539 = getelementptr inbounds double, ptr %3533, i64 %3538
  %3540 = load ptr, ptr %48, align 8, !tbaa !5
  %3541 = call i32 @f2c_dtrmm(ptr noundef @.str.7, ptr noundef @.str.5, ptr noundef @.str.4, ptr noundef @.str.4, ptr noundef %106, ptr noundef %68, ptr noundef @c_b8, ptr noundef %3531, ptr noundef %3532, ptr noundef %3539, ptr noundef %3540)
  %3542 = load i64, ptr %82, align 8, !tbaa !9
  %3543 = load i64, ptr %80, align 8, !tbaa !9
  %3544 = sub nsw i64 %3542, %3543
  store i64 %3544, ptr %68, align 8, !tbaa !9
  %3545 = load i64, ptr %83, align 8, !tbaa !9
  %3546 = load i64, ptr %81, align 8, !tbaa !9
  %3547 = sub nsw i64 %3545, %3546
  store i64 %3547, ptr %70, align 8, !tbaa !9
  %3548 = load ptr, ptr %40, align 8, !tbaa !5
  %3549 = load i64, ptr %111, align 8, !tbaa !9
  %3550 = load i64, ptr %116, align 8, !tbaa !9
  %3551 = add nsw i64 %3550, 1
  %3552 = load i64, ptr %81, align 8, !tbaa !9
  %3553 = add nsw i64 %3551, %3552
  %3554 = load i64, ptr %62, align 8, !tbaa !9
  %3555 = mul nsw i64 %3553, %3554
  %3556 = add nsw i64 %3549, %3555
  %3557 = getelementptr inbounds double, ptr %3548, i64 %3556
  %3558 = load ptr, ptr %41, align 8, !tbaa !5
  %3559 = load ptr, ptr %44, align 8, !tbaa !5
  %3560 = load i64, ptr %81, align 8, !tbaa !9
  %3561 = add nsw i64 %3560, 1
  %3562 = load i64, ptr %80, align 8, !tbaa !9
  %3563 = add nsw i64 %3562, 1
  %3564 = load i64, ptr %54, align 8, !tbaa !9
  %3565 = mul nsw i64 %3563, %3564
  %3566 = add nsw i64 %3561, %3565
  %3567 = getelementptr inbounds double, ptr %3559, i64 %3566
  %3568 = load ptr, ptr %45, align 8, !tbaa !5
  %3569 = load ptr, ptr %47, align 8, !tbaa !5
  %3570 = load i64, ptr %80, align 8, !tbaa !9
  %3571 = add nsw i64 %3570, 1
  %3572 = load i64, ptr %60, align 8, !tbaa !9
  %3573 = mul nsw i64 %3571, %3572
  %3574 = add nsw i64 %3573, 1
  %3575 = getelementptr inbounds double, ptr %3569, i64 %3574
  %3576 = load ptr, ptr %48, align 8, !tbaa !5
  %3577 = call i32 @f2c_dgemm(ptr noundef @.str.4, ptr noundef @.str.4, ptr noundef %106, ptr noundef %68, ptr noundef %70, ptr noundef @c_b8, ptr noundef %3557, ptr noundef %3558, ptr noundef %3567, ptr noundef %3568, ptr noundef @c_b8, ptr noundef %3575, ptr noundef %3576)
  %3578 = load ptr, ptr %47, align 8, !tbaa !5
  %3579 = load i64, ptr %61, align 8, !tbaa !9
  %3580 = getelementptr inbounds double, ptr %3578, i64 %3579
  %3581 = load ptr, ptr %48, align 8, !tbaa !5
  %3582 = load ptr, ptr %40, align 8, !tbaa !5
  %3583 = load i64, ptr %111, align 8, !tbaa !9
  %3584 = load i64, ptr %116, align 8, !tbaa !9
  %3585 = add nsw i64 %3584, 1
  %3586 = load i64, ptr %62, align 8, !tbaa !9
  %3587 = mul nsw i64 %3585, %3586
  %3588 = add nsw i64 %3583, %3587
  %3589 = getelementptr inbounds double, ptr %3582, i64 %3588
  %3590 = load ptr, ptr %41, align 8, !tbaa !5
  %3591 = call i32 @dlacpy_(ptr noundef @.str.2, ptr noundef %106, ptr noundef %94, ptr noundef %3580, ptr noundef %3581, ptr noundef %3589, ptr noundef %3590)
  br label %3592

3592:                                             ; preds = %3440
  %3593 = load i64, ptr %66, align 8, !tbaa !9
  %3594 = load i64, ptr %111, align 8, !tbaa !9
  %3595 = add nsw i64 %3594, %3593
  store i64 %3595, ptr %111, align 8, !tbaa !9
  br label %3409, !llvm.loop !34

3596:                                             ; preds = %3422
  br label %3597

3597:                                             ; preds = %3596, %3398
  br label %3598

3598:                                             ; preds = %3597, %2976
  br label %3599

3599:                                             ; preds = %3598, %2638
  br label %3600

3600:                                             ; preds = %3599
  %3601 = load i64, ptr %65, align 8, !tbaa !9
  %3602 = load i64, ptr %116, align 8, !tbaa !9
  %3603 = add nsw i64 %3602, %3601
  store i64 %3603, ptr %116, align 8, !tbaa !9
  br label %341, !llvm.loop !35

3604:                                             ; preds = %354
  store i32 0, ptr %26, align 4
  store i32 1, ptr %124, align 4
  br label %3605

3605:                                             ; preds = %3604, %187, %180
  call void @llvm.lifetime.end.p0(i64 8, ptr %123) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %122) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %121) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %120) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %119) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %118) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %117) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %116) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %115) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %114) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %113) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %112) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %111) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %110) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %109) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %108) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %107) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %106) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #4
  call void @llvm.lifetime.end.p0(i64 24, ptr %92) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #4
  %3606 = load i32, ptr %26, align 4
  ret i32 %3606
}

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

declare double @dlamch_(ptr noundef) #2

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

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

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

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

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"long", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = distinct !{!13, !14}
!14 = !{!"llvm.loop.mustprogress"}
!15 = distinct !{!15, !14}
!16 = distinct !{!16, !14}
!17 = distinct !{!17, !14}
!18 = distinct !{!18, !14}
!19 = distinct !{!19, !14}
!20 = distinct !{!20, !14}
!21 = distinct !{!21, !14}
!22 = distinct !{!22, !14}
!23 = distinct !{!23, !14}
!24 = distinct !{!24, !14}
!25 = distinct !{!25, !14}
!26 = distinct !{!26, !14}
!27 = distinct !{!27, !14}
!28 = distinct !{!28, !14}
!29 = distinct !{!29, !14}
!30 = distinct !{!30, !14}
!31 = distinct !{!31, !14}
!32 = distinct !{!32, !14}
!33 = distinct !{!33, !14}
!34 = distinct !{!34, !14}
!35 = distinct !{!35, !14}


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

@.str = external hidden unnamed_addr constant [13 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [4 x i8], align 1
@c_b7 = external hidden global double, align 8
@c_b8 = external hidden global double, align 8
@c__3 = external hidden global i64, align 8
@c__1 = external hidden global i64, align 8
@c__2 = external hidden global i64, align 8
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [2 x i8], align 1

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

59:                                               ; preds = %25
  %60 = load i64, ptr %4, align 8, !tbaa !5
  %61 = load i64, ptr %5, align 8, !tbaa !5
  %.not = icmp slt i64 %60, %61
  br i1 %.not, label %62, label %.loopexit1512

62:                                               ; preds = %59
  %63 = add nsw i64 %57, -2
  %.not14271513 = icmp eq i64 %57, 2
  br i1 %.not14271513, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %62, %80
  %.013841514 = phi i64 [ %.pre-phi, %80 ], [ 1, %62 ]
  %64 = getelementptr inbounds double, ptr %41, i64 %.013841514
  %65 = load double, ptr %64, align 8, !tbaa !9
  %66 = getelementptr double, ptr %8, i64 %.013841514
  %67 = load double, ptr %66, align 8, !tbaa !9
  %68 = fneg double %67
  %69 = fcmp une double %65, %68
  br i1 %69, label %70, label %.lr.ph._crit_edge

.lr.ph._crit_edge:                                ; preds = %.lr.ph
  %.pre1688 = add nuw nsw i64 %.013841514, 2
  br label %80

70:                                               ; preds = %.lr.ph
  %71 = getelementptr inbounds double, ptr %40, i64 %.013841514
  %72 = load double, ptr %71, align 8, !tbaa !9
  %73 = getelementptr double, ptr %7, i64 %.013841514
  %74 = add nuw nsw i64 %.013841514, 2
  %75 = getelementptr inbounds double, ptr %40, i64 %74
  %76 = load <2 x double>, ptr %73, align 8, !tbaa !9
  store <2 x double> %76, ptr %71, align 8, !tbaa !9
  store double %72, ptr %75, align 8, !tbaa !9
  %77 = load double, ptr %64, align 8, !tbaa !9
  %78 = getelementptr inbounds double, ptr %41, i64 %74
  %79 = load <2 x double>, ptr %66, align 8, !tbaa !9
  store <2 x double> %79, ptr %64, align 8, !tbaa !9
  store double %77, ptr %78, align 8, !tbaa !9
  br label %80

80:                                               ; preds = %.lr.ph._crit_edge, %70
  %.pre-phi = phi i64 [ %.pre1688, %.lr.ph._crit_edge ], [ %74, %70 ]
  %.not1427 = icmp sgt i64 %.pre-phi, %63
  br i1 %.not1427, label %._crit_edge, label %.lr.ph, !llvm.loop !11

._crit_edge:                                      ; preds = %80, %62
  %81 = and i64 %57, 9223372036854775806
  %82 = tail call double @dlamch_(ptr noundef nonnull @.str) #5
  store double %82, ptr %38, align 8, !tbaa !9
  %83 = fdiv double 1.000000e+00, %82
  store double %83, ptr %39, align 8, !tbaa !9
  %84 = call i32 @dlabad_(ptr noundef nonnull %38, ptr noundef nonnull %39) #5
  %85 = call double @dlamch_(ptr noundef nonnull @.str.1) #5
  %86 = load double, ptr %38, align 8, !tbaa !9
  %87 = load i64, ptr %3, align 8, !tbaa !5
  %88 = sitofp i64 %87 to double
  %89 = fdiv double %88, %85
  %90 = fmul double %86, %89
  %91 = load i64, ptr %2, align 8, !tbaa !5
  %92 = icmp ugt i64 %81, 2
  %93 = icmp eq i64 %91, 2
  %spec.select = select i1 %92, i1 %93, i1 false
  %94 = load i64, ptr %4, align 8, !tbaa !5
  %95 = add nsw i64 %94, 2
  %96 = load i64, ptr %5, align 8, !tbaa !5
  %.not1428 = icmp sgt i64 %95, %96
  br i1 %.not1428, label %101, label %97

97:                                               ; preds = %._crit_edge
  %98 = mul nsw i64 %94, %42
  %99 = getelementptr double, ptr %44, i64 %95
  %100 = getelementptr double, ptr %99, i64 %98
  store double 0.000000e+00, ptr %100, align 8, !tbaa !9
  br label %101

101:                                              ; preds = %97, %._crit_edge
  %102 = lshr i64 %57, 1
  %103 = mul nuw nsw i64 %102, 6
  %104 = add nsw i64 %103, -3
  store i64 %104, ptr %32, align 8, !tbaa !5
  %105 = add nsw i64 %96, -2
  %106 = mul nuw i64 %102, 3
  %107 = add i64 %106, -2
  %108 = sub nsw i64 1, %102
  %109 = mul nsw i64 %108, 3
  %110 = add i64 %109, -1
  %111 = add i64 %110, %94
  %invariant.gep1655 = getelementptr i8, ptr %44, i64 8
  %.not15031657 = icmp sgt i64 %111, %105
  br i1 %.not15031657, label %.loopexit1512, label %.lr.ph1661

.lr.ph1661:                                       ; preds = %101
  %.off = add i64 %91, -1
  %switch = icmp ult i64 %.off, 2
  %112 = add nsw i64 %106, -3
  %invariant.gep1578 = getelementptr i8, ptr %44, i64 16
  %113 = getelementptr inbounds i8, ptr %31, i64 8
  %114 = getelementptr inbounds i8, ptr %31, i64 16
  %115 = add i64 %42, 1
  %invariant.gep1571 = getelementptr i8, ptr %44, i64 32
  %116 = or i64 %57, 1
  %invariant.gep1585 = getelementptr i8, ptr %53, i64 8
  %invariant.gep1596 = getelementptr i8, ptr %56, i64 8
  %117 = add i64 %51, 1
  %118 = add i64 %94, 5
  %119 = sub i64 %118, %106
  %scevgep = getelementptr i8, ptr %17, i64 -8
  %scevgep1701 = getelementptr i8, ptr %17, i64 -8
  %scevgep1704 = getelementptr i8, ptr %15, i64 16
  %120 = shl i64 %48, 3
  %scevgep1728 = getelementptr i8, ptr %13, i64 -8
  %121 = shl i64 %94, 3
  %122 = add i64 %121, 16
  %123 = mul i64 %102, 24
  %124 = sub i64 %122, %123
  %125 = add i64 %123, -16
  %scevgep1733 = getelementptr i8, ptr %13, i64 -8
  %126 = add i64 %121, 24
  %127 = sub i64 %126, %123
  %scevgep1736 = getelementptr i8, ptr %15, i64 16
  %128 = shl i64 %48, 3
  %scevgep1780 = getelementptr i8, ptr %9, i64 -8
  %129 = shl i64 %94, 3
  %130 = add i64 %129, 16
  %131 = mul i64 %102, 24
  %132 = sub i64 %130, %131
  %133 = add i64 %131, -16
  %scevgep1783 = getelementptr i8, ptr %9, i64 -8
  %134 = add i64 %129, 24
  %135 = sub i64 %134, %131
  %scevgep1786 = getelementptr i8, ptr %15, i64 16
  %136 = shl i64 %48, 3
  %scevgep1830 = getelementptr i8, ptr %17, i64 -8
  %137 = mul i64 %51, 24
  %scevgep1833 = getelementptr i8, ptr %17, i64 -8
  %scevgep1836 = getelementptr i8, ptr %17, i64 -8
  %scevgep1840 = getelementptr i8, ptr %15, i64 8
  %scevgep1842 = getelementptr i8, ptr %15, i64 8
  %scevgep1844 = getelementptr i8, ptr %15, i64 16
  %scevgep1846 = getelementptr i8, ptr %15, i64 16
  %scevgep1848 = getelementptr i8, ptr %15, i64 24
  %138 = shl i64 %94, 3
  %139 = add i64 %138, -8
  %140 = mul i64 %102, 24
  %141 = sub i64 %139, %140
  %142 = add i64 %140, -16
  %143 = mul i64 %45, 24
  %144 = sub i64 %138, %140
  %145 = add i64 %138, 8
  %146 = sub i64 %145, %140
  %scevgep1964 = getelementptr i8, ptr %15, i64 8
  %147 = shl i64 %48, 3
  %scevgep1966 = getelementptr i8, ptr %15, i64 8
  %scevgep1968 = getelementptr i8, ptr %15, i64 16
  %scevgep1970 = getelementptr i8, ptr %15, i64 16
  %scevgep1972 = getelementptr i8, ptr %15, i64 24
  %148 = shl i64 %94, 3
  %149 = add i64 %148, -8
  %150 = mul i64 %102, 24
  %151 = sub i64 %149, %150
  %152 = add i64 %150, -16
  %153 = mul i64 %42, 24
  %154 = sub i64 %148, %150
  %155 = add i64 %148, 8
  %156 = sub i64 %155, %150
  %scevgep2069 = getelementptr i8, ptr %15, i64 8
  %157 = shl i64 %48, 3
  %scevgep2071 = getelementptr i8, ptr %15, i64 8
  %scevgep2073 = getelementptr i8, ptr %15, i64 16
  %scevgep2075 = getelementptr i8, ptr %15, i64 16
  %scevgep2077 = getelementptr i8, ptr %15, i64 24
  %158 = shl i64 %94, 3
  %159 = add i64 %158, 8
  %160 = shl i64 %42, 3
  %161 = mul i64 %102, 24
  %162 = add i64 %160, %161
  %163 = sub i64 %159, %162
  %164 = add i64 %161, -16
  %165 = shl i64 %42, 3
  %166 = shl i64 %42, 3
  %167 = add i64 %160, %161
  %168 = sub i64 %158, %167
  %169 = add i64 %158, -8
  %170 = add i64 %160, %161
  %171 = sub i64 %169, %170
  %172 = shl i64 %94, 3
  %173 = add i64 %172, -8
  %174 = shl i64 %42, 3
  %175 = mul i64 %102, 24
  %176 = add i64 %174, %175
  %177 = sub i64 %173, %176
  %178 = add i64 %175, -16
  %179 = shl i64 %42, 3
  %180 = shl i64 %42, 3
  %181 = add i64 %172, 16
  %182 = add i64 %174, %175
  %183 = sub i64 %181, %182
  %scevgep2178 = getelementptr i8, ptr %15, i64 16
  %scevgep2180 = getelementptr i8, ptr %15, i64 16
  %scevgep2183 = getelementptr i8, ptr %15, i64 8
  %scevgep2185 = getelementptr i8, ptr %15, i64 8
  %184 = add i64 %158, 8
  %185 = sub i64 %184, %161
  %186 = getelementptr i8, ptr %9, i64 %185
  %187 = getelementptr i8, ptr %9, i64 %177
  %188 = getelementptr i8, ptr %9, i64 %183
  %189 = getelementptr i8, ptr %9, i64 %163
  %190 = getelementptr i8, ptr %9, i64 %168
  %191 = getelementptr i8, ptr %9, i64 %171
  %ident.check.not = icmp eq i64 %42, 1
  %invariant.gep2230 = getelementptr i8, ptr %9, i64 -8
  %invariant.gep2232 = getelementptr i8, ptr %9, i64 -8
  %invariant.gep2234 = getelementptr i8, ptr %9, i64 -8
  %invariant.gep2236 = getelementptr i8, ptr %13, i64 -8
  %invariant.gep2238 = getelementptr i8, ptr %13, i64 -8
  %invariant.gep2240 = getelementptr i8, ptr %13, i64 -8
  %stride.check2089 = icmp slt i64 %157, 0
  %stride.check2128 = icmp slt i64 %157, 0
  %stride.check1984 = icmp slt i64 %147, 0
  %stride.check2023 = icmp slt i64 %147, 0
  %stride.check1857 = icmp slt i64 %137, 0
  %192 = or i64 %137, %136
  %193 = icmp slt i64 %192, 0
  %194 = or i64 %137, %136
  %195 = icmp slt i64 %194, 0
  %196 = or i64 %137, %136
  %197 = icmp slt i64 %196, 0
  %198 = or i64 %137, %136
  %199 = icmp slt i64 %198, 0
  %200 = or i64 %137, %136
  %201 = icmp slt i64 %200, 0
  %202 = or i64 %137, %136
  %203 = icmp slt i64 %202, 0
  %204 = or i64 %137, %136
  %205 = icmp slt i64 %204, 0
  %206 = or i64 %137, %136
  %207 = icmp slt i64 %206, 0
  %208 = or i64 %137, %136
  %209 = icmp slt i64 %208, 0
  br label %210

210:                                              ; preds = %.lr.ph1661, %.loopexit1510
  %indvar1729 = phi i64 [ 0, %.lr.ph1661 ], [ %indvar.next1730, %.loopexit1510 ]
  %indvars.iv1671 = phi i64 [ %119, %.lr.ph1661 ], [ %indvars.iv.next1672, %.loopexit1510 ]
  %.013701658 = phi i64 [ %111, %.lr.ph1661 ], [ %1481, %.loopexit1510 ]
  %211 = mul i64 %164, %indvar1729
  %212 = mul i64 %178, %indvar1729
  %213 = mul i64 %164, %indvar1729
  %214 = mul i64 %152, %indvar1729
  %215 = add i64 %151, %214
  %216 = add i64 %154, %214
  %217 = add i64 %156, %214
  %218 = mul i64 %142, %indvar1729
  %219 = add i64 %141, %218
  %220 = add i64 %144, %218
  %221 = add i64 %146, %218
  %222 = mul i64 %133, %indvar1729
  %223 = add i64 %132, %222
  %224 = add i64 %135, %222
  %225 = mul i64 %125, %indvar1729
  %226 = add i64 %124, %225
  %227 = add i64 %127, %225
  %228 = load i64, ptr %32, align 8, !tbaa !5
  %229 = add nsw i64 %228, %.013701658
  br i1 %switch, label %230, label %232

230:                                              ; preds = %210
  %231 = call i32 @dlaset_(ptr noundef nonnull @.str.2, ptr noundef nonnull %32, ptr noundef nonnull %32, ptr noundef nonnull @c_b7, ptr noundef nonnull @c_b8, ptr noundef %17, ptr noundef nonnull %18) #5
  br label %232

232:                                              ; preds = %210, %230
  %233 = add i64 %112, %.013701658
  %234 = load i64, ptr %5, align 8, !tbaa !5
  %235 = add nsw i64 %234, -2
  store i64 %235, ptr %26, align 8, !tbaa !5
  %236 = call i64 @llvm.smin.i64(i64 %233, i64 %235)
  %.not14301580 = icmp sgt i64 %.013701658, %236
  br i1 %.not14301580, label %._crit_edge1584, label %.lr.ph1583.preheader

.lr.ph1583.preheader:                             ; preds = %232
  %.pre = load i64, ptr %4, align 8, !tbaa !5
  %237 = getelementptr i8, ptr %186, i64 %211
  %238 = getelementptr i8, ptr %187, i64 %212
  %239 = getelementptr i8, ptr %188, i64 %212
  %240 = getelementptr i8, ptr %189, i64 %213
  %241 = getelementptr i8, ptr %190, i64 %213
  %242 = getelementptr i8, ptr %191, i64 %213
  br label %.lr.ph1583

.lr.ph1583:                                       ; preds = %.lr.ph1583.preheader, %._crit_edge1577
  %indvar = phi i64 [ 0, %.lr.ph1583.preheader ], [ %indvar.next, %._crit_edge1577 ]
  %243 = phi i64 [ %234, %.lr.ph1583.preheader ], [ %1053, %._crit_edge1577 ]
  %244 = phi i64 [ %.pre, %.lr.ph1583.preheader ], [ %444, %._crit_edge1577 ]
  %indvars.iv1673 = phi i64 [ %indvars.iv1671, %.lr.ph1583.preheader ], [ %indvars.iv.next1674, %._crit_edge1577 ]
  %.013691581 = phi i64 [ %.013701658, %.lr.ph1583.preheader ], [ %1226, %._crit_edge1577 ]
  %245 = shl i64 %indvar, 3
  %scevgep2220 = getelementptr i8, ptr %237, i64 %245
  %246 = shl i64 %indvar, 3
  %247 = shl i64 %indvar, 3
  %248 = shl i64 %indvar, 3
  %249 = add i64 %215, %248
  %250 = add i64 %216, %248
  %251 = add i64 %217, %248
  %252 = shl i64 %indvar, 3
  %253 = add i64 %219, %252
  %254 = add i64 %220, %252
  %255 = add i64 %221, %252
  %256 = shl i64 %indvar, 3
  %257 = add i64 %256, -24
  %258 = add i64 %256, -16
  %259 = add i64 %256, -8
  %260 = shl i64 %indvar, 3
  %261 = add i64 %223, %260
  %262 = add i64 %224, %260
  %263 = shl i64 %indvar, 3
  %264 = add i64 %226, %263
  %265 = add i64 %227, %263
  %266 = shl i64 %indvar, 3
  %267 = add i64 %266, 8
  %268 = xor i64 %.013691581, -1
  %269 = add i64 %244, %268
  %270 = add nsw i64 %269, 2
  %271 = sdiv i64 %270, 3
  %272 = add nsw i64 %271, 1
  %273 = icmp slt i64 %269, 1
  %274 = select i1 %273, i64 1, i64 %272
  %275 = sub nsw i64 %243, %.013691581
  %276 = sdiv i64 %275, 3
  store i64 %276, ptr %26, align 8, !tbaa !5
  %277 = call i64 @llvm.smin.i64(i64 %102, i64 %276)
  %278 = add nsw i64 %277, 1
  %279 = icmp slt i64 %276, %102
  br i1 %279, label %280, label %285

280:                                              ; preds = %.lr.ph1583
  %281 = mul nsw i64 %277, 3
  %282 = add nsw i64 %281, %.013691581
  %283 = add nsw i64 %243, -2
  %284 = icmp eq i64 %282, %283
  br label %285

285:                                              ; preds = %280, %.lr.ph1583
  %286 = phi i1 [ false, %.lr.ph1583 ], [ %284, %280 ]
  %.not14531515 = icmp sgt i64 %274, %277
  br i1 %.not14531515, label %._crit_edge1519, label %.lr.ph1518

.lr.ph1518:                                       ; preds = %285
  %287 = add i64 %.013691581, -3
  %288 = getelementptr double, ptr %44, i64 %.013691581
  br label %289

289:                                              ; preds = %.lr.ph1518, %396
  %.013911516 = phi i64 [ %274, %.lr.ph1518 ], [ %397, %396 ]
  %290 = mul i64 %.013911516, 3
  %291 = add i64 %287, %290
  %292 = load i64, ptr %4, align 8, !tbaa !5
  %293 = add nsw i64 %292, -1
  %294 = icmp eq i64 %291, %293
  br i1 %294, label %295, label %311

295:                                              ; preds = %289
  %296 = mul i64 %292, %115
  %297 = getelementptr inbounds double, ptr %44, i64 %296
  %298 = shl i64 %.013911516, 1
  %299 = add nsw i64 %298, -1
  %300 = getelementptr inbounds double, ptr %40, i64 %299
  %301 = getelementptr inbounds double, ptr %41, i64 %299
  %302 = getelementptr inbounds double, ptr %40, i64 %298
  %303 = getelementptr inbounds double, ptr %41, i64 %298
  %304 = mul nsw i64 %.013911516, %48
  %305 = getelementptr double, ptr %50, i64 %304
  %306 = getelementptr i8, ptr %305, i64 8
  %307 = call i32 @dlaqr1_(ptr noundef nonnull @c__3, ptr noundef %297, ptr noundef nonnull %10, ptr noundef nonnull %300, ptr noundef nonnull %301, ptr noundef nonnull %302, ptr noundef nonnull %303, ptr noundef %306) #5
  %308 = load double, ptr %306, align 8, !tbaa !9
  store double %308, ptr %37, align 8, !tbaa !9
  %309 = getelementptr i8, ptr %305, i64 16
  %310 = call i32 @dlarfg_(ptr noundef nonnull @c__3, ptr noundef nonnull %37, ptr noundef %309, ptr noundef nonnull @c__1, ptr noundef nonnull %306) #5
  br label %396

311:                                              ; preds = %289
  %312 = add nsw i64 %291, 1
  %313 = mul nsw i64 %291, %42
  %314 = getelementptr double, ptr %44, i64 %312
  %315 = getelementptr double, ptr %314, i64 %313
  %316 = load double, ptr %315, align 8, !tbaa !9
  store double %316, ptr %35, align 8, !tbaa !9
  %317 = add nsw i64 %291, 2
  %318 = getelementptr double, ptr %44, i64 %317
  %319 = getelementptr double, ptr %318, i64 %313
  %320 = load double, ptr %319, align 8, !tbaa !9
  %321 = mul nsw i64 %.013911516, %48
  %322 = getelementptr double, ptr %50, i64 %321
  %323 = getelementptr i8, ptr %322, i64 16
  store double %320, ptr %323, align 8, !tbaa !9
  %324 = getelementptr double, ptr %288, i64 %290
  %325 = getelementptr double, ptr %324, i64 %313
  %326 = load double, ptr %325, align 8, !tbaa !9
  %327 = getelementptr i8, ptr %322, i64 24
  store double %326, ptr %327, align 8, !tbaa !9
  %328 = getelementptr i8, ptr %322, i64 8
  %329 = call i32 @dlarfg_(ptr noundef nonnull @c__3, ptr noundef nonnull %35, ptr noundef nonnull %323, ptr noundef nonnull @c__1, ptr noundef %328) #5
  %330 = load double, ptr %325, align 8, !tbaa !9
  %331 = fcmp une double %330, 0.000000e+00
  br i1 %331, label %342, label %332

332:                                              ; preds = %311
  %333 = mul nsw i64 %312, %42
  %334 = getelementptr double, ptr %324, i64 %333
  %335 = load double, ptr %334, align 8, !tbaa !9
  %336 = fcmp une double %335, 0.000000e+00
  br i1 %336, label %342, label %337

337:                                              ; preds = %332
  %338 = mul nsw i64 %317, %42
  %339 = getelementptr double, ptr %324, i64 %338
  %340 = load double, ptr %339, align 8, !tbaa !9
  %341 = fcmp oeq double %340, 0.000000e+00
  br i1 %341, label %342, label %344

342:                                              ; preds = %337, %332, %311
  %343 = load double, ptr %35, align 8, !tbaa !9
  store double %343, ptr %315, align 8, !tbaa !9
  store double 0.000000e+00, ptr %319, align 8, !tbaa !9
  store double 0.000000e+00, ptr %325, align 8, !tbaa !9
  br label %396

344:                                              ; preds = %337
  %345 = getelementptr double, ptr %314, i64 %333
  %346 = shl i64 %.013911516, 1
  %347 = add nsw i64 %346, -1
  %348 = getelementptr inbounds double, ptr %40, i64 %347
  %349 = getelementptr inbounds double, ptr %41, i64 %347
  %350 = getelementptr inbounds double, ptr %40, i64 %346
  %351 = getelementptr inbounds double, ptr %41, i64 %346
  %352 = call i32 @dlaqr1_(ptr noundef nonnull @c__3, ptr noundef %345, ptr noundef nonnull %10, ptr noundef nonnull %348, ptr noundef nonnull %349, ptr noundef nonnull %350, ptr noundef nonnull %351, ptr noundef nonnull %31) #5
  %353 = load double, ptr %31, align 16, !tbaa !9
  store double %353, ptr %37, align 8, !tbaa !9
  %354 = call i32 @dlarfg_(ptr noundef nonnull @c__3, ptr noundef nonnull %37, ptr noundef nonnull %113, ptr noundef nonnull @c__1, ptr noundef nonnull %31) #5
  %355 = load double, ptr %315, align 8, !tbaa !9
  %356 = load <2 x double>, ptr %31, align 16, !tbaa !9
  %357 = load double, ptr %319, align 8, !tbaa !9
  %358 = extractelement <2 x double> %356, i64 1
  %359 = call double @llvm.fmuladd.f64(double %358, double %357, double %355)
  %360 = extractelement <2 x double> %356, i64 0
  %361 = fmul double %360, %359
  %362 = fneg double %361
  %363 = call double @llvm.fmuladd.f64(double %362, double %358, double %357)
  %364 = load double, ptr %114, align 16, !tbaa !9
  %365 = fmul double %364, %361
  %366 = insertelement <2 x double> poison, double %363, i64 0
  %367 = insertelement <2 x double> %366, double %365, i64 1
  %368 = fcmp oge <2 x double> %367, zeroinitializer
  %369 = fneg <2 x double> %367
  %370 = select <2 x i1> %368, <2 x double> %367, <2 x double> %369
  %shift = shufflevector <2 x double> %370, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %371 = fadd <2 x double> %370, %shift
  %372 = extractelement <2 x double> %371, i64 0
  %373 = getelementptr double, ptr %44, i64 %291
  %374 = getelementptr double, ptr %373, i64 %313
  %375 = load double, ptr %374, align 8, !tbaa !9
  %376 = fcmp oge double %375, 0.000000e+00
  %377 = fneg double %375
  %378 = select i1 %376, double %375, double %377
  %379 = load double, ptr %345, align 8, !tbaa !9
  %380 = fcmp oge double %379, 0.000000e+00
  %381 = fneg double %379
  %382 = select i1 %380, double %379, double %381
  %383 = fadd double %378, %382
  %384 = getelementptr double, ptr %318, i64 %338
  %385 = load double, ptr %384, align 8, !tbaa !9
  %386 = fcmp oge double %385, 0.000000e+00
  %387 = fneg double %385
  %388 = select i1 %386, double %385, double %387
  %389 = fadd double %383, %388
  %390 = fmul double %85, %389
  %391 = fcmp ogt double %372, %390
  br i1 %391, label %392, label %394

392:                                              ; preds = %344
  %393 = load double, ptr %35, align 8, !tbaa !9
  store double %393, ptr %315, align 8, !tbaa !9
  store double 0.000000e+00, ptr %319, align 8, !tbaa !9
  store double 0.000000e+00, ptr %325, align 8, !tbaa !9
  br label %396

394:                                              ; preds = %344
  %395 = fsub double %355, %361
  store double %395, ptr %315, align 8, !tbaa !9
  store double 0.000000e+00, ptr %319, align 8, !tbaa !9
  store double 0.000000e+00, ptr %325, align 8, !tbaa !9
  store <2 x double> %356, ptr %328, align 8, !tbaa !9
  store double %364, ptr %327, align 8, !tbaa !9
  br label %396

396:                                              ; preds = %295, %392, %394, %342
  %397 = add i64 %.013911516, 1
  %exitcond.not = icmp eq i64 %.013911516, %277
  br i1 %exitcond.not, label %._crit_edge1519, label %289, !llvm.loop !13

._crit_edge1519:                                  ; preds = %396, %285
  %398 = mul nsw i64 %277, 3
  %399 = add nsw i64 %398, %.013691581
  br i1 %286, label %400, label %434

400:                                              ; preds = %._crit_edge1519
  %401 = load i64, ptr %4, align 8, !tbaa !5
  %402 = add nsw i64 %401, -1
  %403 = icmp eq i64 %399, %402
  %404 = mul nsw i64 %278, %48
  %405 = getelementptr double, ptr %50, i64 %404
  br i1 %403, label %406, label %421

406:                                              ; preds = %400
  %407 = add nsw i64 %399, 1
  %408 = mul i64 %407, %115
  %409 = getelementptr inbounds double, ptr %44, i64 %408
  %410 = shl nsw i64 %278, 1
  %411 = add nsw i64 %410, -1
  %412 = getelementptr inbounds double, ptr %40, i64 %411
  %413 = getelementptr inbounds double, ptr %41, i64 %411
  %414 = getelementptr inbounds double, ptr %40, i64 %410
  %415 = getelementptr inbounds double, ptr %41, i64 %410
  %416 = getelementptr i8, ptr %405, i64 8
  %417 = call i32 @dlaqr1_(ptr noundef nonnull @c__2, ptr noundef %409, ptr noundef nonnull %10, ptr noundef nonnull %412, ptr noundef nonnull %413, ptr noundef nonnull %414, ptr noundef nonnull %415, ptr noundef %416) #5
  %418 = load double, ptr %416, align 8, !tbaa !9
  store double %418, ptr %35, align 8, !tbaa !9
  %419 = getelementptr i8, ptr %405, i64 16
  %420 = call i32 @dlarfg_(ptr noundef nonnull @c__2, ptr noundef nonnull %35, ptr noundef %419, ptr noundef nonnull @c__1, ptr noundef nonnull %416) #5
  br label %434

421:                                              ; preds = %400
  %422 = mul nsw i64 %399, %42
  %423 = getelementptr double, ptr %44, i64 %399
  %424 = getelementptr i8, ptr %423, i64 8
  %425 = getelementptr double, ptr %424, i64 %422
  %426 = load double, ptr %425, align 8, !tbaa !9
  store double %426, ptr %35, align 8, !tbaa !9
  %427 = getelementptr i8, ptr %423, i64 16
  %428 = getelementptr double, ptr %427, i64 %422
  %429 = load double, ptr %428, align 8, !tbaa !9
  %430 = getelementptr i8, ptr %405, i64 16
  store double %429, ptr %430, align 8, !tbaa !9
  %431 = getelementptr i8, ptr %405, i64 8
  %432 = call i32 @dlarfg_(ptr noundef nonnull @c__2, ptr noundef nonnull %35, ptr noundef nonnull %430, ptr noundef nonnull @c__1, ptr noundef %431) #5
  %433 = load double, ptr %35, align 8, !tbaa !9
  store double %433, ptr %425, align 8, !tbaa !9
  store double 0.000000e+00, ptr %428, align 8, !tbaa !9
  br label %434

434:                                              ; preds = %406, %421, %._crit_edge1519
  br i1 %switch, label %435, label %437

435:                                              ; preds = %434
  %436 = load i64, ptr %5, align 8, !tbaa !5
  %. = call i64 @llvm.smin.i64(i64 %229, i64 %436)
  br label %443

437:                                              ; preds = %434
  %438 = load i64, ptr %0, align 8, !tbaa !5
  %.not1454 = icmp eq i64 %438, 0
  br i1 %.not1454, label %441, label %439

439:                                              ; preds = %437
  %440 = load i64, ptr %3, align 8, !tbaa !5
  br label %443

441:                                              ; preds = %437
  %442 = load i64, ptr %5, align 8, !tbaa !5
  br label %443

443:                                              ; preds = %439, %441, %435
  %.01374 = phi i64 [ %., %435 ], [ %440, %439 ], [ %442, %441 ]
  %444 = load i64, ptr %4, align 8, !tbaa !5
  %.01369. = call i64 @llvm.smax.i64(i64 %444, i64 %.013691581)
  %.not14571525 = icmp sgt i64 %.01369., %.01374
  br i1 %.not14571525, label %593, label %.lr.ph1528

.lr.ph1528:                                       ; preds = %443
  %445 = getelementptr double, ptr %44, i64 %.013691581
  %446 = mul i64 %165, %.01369.
  %447 = mul i64 %274, 24
  %448 = mul i64 %179, %.01369.
  %449 = mul i64 %274, 24
  %450 = shl i64 %274, 3
  %451 = add i64 %450, -8
  %452 = mul i64 %48, %451
  %scevgep2179 = getelementptr i8, ptr %scevgep2178, i64 %452
  %scevgep2184 = getelementptr i8, ptr %scevgep2183, i64 %452
  %scevgep2190 = getelementptr i8, ptr %15, i64 %452
  %453 = getelementptr i8, ptr %238, i64 %246
  %454 = getelementptr i8, ptr %453, i64 %448
  %455 = getelementptr i8, ptr %454, i64 %449
  %456 = getelementptr i8, ptr %239, i64 %246
  %457 = getelementptr i8, ptr %456, i64 %448
  %458 = getelementptr i8, ptr %240, i64 %247
  %459 = getelementptr i8, ptr %458, i64 %446
  %460 = getelementptr i8, ptr %459, i64 %447
  %461 = getelementptr i8, ptr %241, i64 %247
  %462 = getelementptr i8, ptr %461, i64 %446
  %463 = getelementptr i8, ptr %462, i64 %447
  %464 = getelementptr i8, ptr %242, i64 %247
  %465 = getelementptr i8, ptr %464, i64 %446
  %466 = getelementptr i8, ptr %465, i64 %447
  br label %467

467:                                              ; preds = %.lr.ph1528, %._crit_edge1524
  %indvar2163 = phi i64 [ 0, %.lr.ph1528 ], [ %indvar.next2164, %._crit_edge1524 ]
  %.013851526 = phi i64 [ %.01369., %.lr.ph1528 ], [ %592, %._crit_edge1524 ]
  %468 = mul i64 %180, %indvar2163
  %scevgep2175 = getelementptr i8, ptr %455, i64 %468
  %scevgep2176 = getelementptr i8, ptr %457, i64 %468
  %469 = mul i64 %166, %indvar2163
  %scevgep2165 = getelementptr i8, ptr %460, i64 %469
  %scevgep2166 = getelementptr i8, ptr %463, i64 %469
  %scevgep2170 = getelementptr i8, ptr %466, i64 %469
  %reass.sub = sub i64 %.013851526, %.013691581
  %470 = add i64 %reass.sub, 2
  %471 = sdiv i64 %470, 3
  %472 = call i64 @llvm.smin.i64(i64 %277, i64 %471)
  %.not14841520 = icmp sgt i64 %274, %472
  br i1 %.not14841520, label %._crit_edge1524, label %.lr.ph1523

.lr.ph1523:                                       ; preds = %467
  %473 = mul nsw i64 %.013851526, %42
  %invariant.gep = getelementptr double, ptr %445, i64 %473
  %reass.sub2222 = sub i64 %472, %274
  %474 = add i64 %reass.sub2222, 1
  %min.iters.check2208 = icmp ult i64 %474, 64
  br i1 %min.iters.check2208, label %scalar.ph2207.preheader, label %vector.scevcheck

vector.scevcheck:                                 ; preds = %.lr.ph1523
  %475 = sub i64 %472, %274
  %mul = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %475, i64 24)
  %mul.result = extractvalue { i64, i1 } %mul, 0
  %mul.overflow = extractvalue { i64, i1 } %mul, 1
  %476 = getelementptr i8, ptr %scevgep2165, i64 %mul.result
  %477 = icmp ult ptr %476, %scevgep2165
  %478 = or i1 %477, %mul.overflow
  %mul2167 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %475, i64 24)
  %mul.result2168 = extractvalue { i64, i1 } %mul2167, 0
  %mul.overflow2169 = extractvalue { i64, i1 } %mul2167, 1
  %479 = getelementptr i8, ptr %scevgep2166, i64 %mul.result2168
  %480 = icmp ult ptr %479, %scevgep2166
  %481 = or i1 %480, %mul.overflow2169
  %mul2171 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %475, i64 24)
  %mul.result2172 = extractvalue { i64, i1 } %mul2171, 0
  %mul.overflow2173 = extractvalue { i64, i1 } %mul2171, 1
  %482 = getelementptr i8, ptr %scevgep2170, i64 %mul.result2172
  %483 = icmp ult ptr %482, %scevgep2170
  %484 = or i1 %483, %mul.overflow2173
  %485 = or i1 %478, %481
  %486 = or i1 %485, %484
  br i1 %486, label %scalar.ph2207.preheader, label %vector.memcheck2174

vector.memcheck2174:                              ; preds = %vector.scevcheck
  %487 = mul i64 %472, 24
  %scevgep2177 = getelementptr i8, ptr %scevgep2176, i64 %487
  %488 = shl i64 %472, 3
  %489 = add i64 %488, -8
  %490 = mul i64 %48, %489
  %scevgep2181 = getelementptr i8, ptr %scevgep2180, i64 %490
  %491 = icmp ult ptr %scevgep2179, %scevgep2181
  %umin = select i1 %491, ptr %scevgep2179, ptr %scevgep2181
  %492 = icmp ugt ptr %scevgep2179, %scevgep2181
  %umax = select i1 %492, ptr %scevgep2179, ptr %scevgep2181
  %scevgep2182 = getelementptr i8, ptr %umax, i64 8
  %scevgep2186 = getelementptr i8, ptr %scevgep2185, i64 %490
  %493 = icmp ult ptr %scevgep2184, %scevgep2186
  %umin2187 = select i1 %493, ptr %scevgep2184, ptr %scevgep2186
  %494 = icmp ugt ptr %scevgep2184, %scevgep2186
  %umax2188 = select i1 %494, ptr %scevgep2184, ptr %scevgep2186
  %scevgep2189 = getelementptr i8, ptr %umax2188, i64 8
  %scevgep2191 = getelementptr i8, ptr %15, i64 %490
  %495 = icmp ult ptr %scevgep2190, %scevgep2191
  %umin2192 = select i1 %495, ptr %scevgep2190, ptr %scevgep2191
  %496 = icmp ugt ptr %scevgep2190, %scevgep2191
  %umax2193 = select i1 %496, ptr %scevgep2190, ptr %scevgep2191
  %scevgep2194 = getelementptr i8, ptr %umax2193, i64 8
  %bound02195 = icmp ult ptr %scevgep2175, %scevgep2182
  %bound12196 = icmp ult ptr %umin, %scevgep2177
  %found.conflict2197 = and i1 %bound02195, %bound12196
  %bound02198 = icmp ult ptr %scevgep2175, %scevgep2189
  %bound12199 = icmp ult ptr %umin2187, %scevgep2177
  %found.conflict2200 = and i1 %bound02198, %bound12199
  %conflict.rdx2201 = or i1 %found.conflict2197, %found.conflict2200
  %bound02202 = icmp ult ptr %scevgep2175, %scevgep2194
  %bound12203 = icmp ult ptr %umin2192, %scevgep2177
  %found.conflict2204 = and i1 %bound02202, %bound12203
  %conflict.rdx2205 = or i1 %conflict.rdx2201, %found.conflict2204
  br i1 %conflict.rdx2205, label %scalar.ph2207.preheader, label %vector.ph2209

vector.ph2209:                                    ; preds = %vector.memcheck2174
  %n.vec2211 = and i64 %474, -2
  %ind.end2212 = add i64 %274, %n.vec2211
  br label %vector.body2214

vector.body2214:                                  ; preds = %vector.body2214, %vector.ph2209
  %index2215 = phi i64 [ 0, %vector.ph2209 ], [ %index.next2217, %vector.body2214 ]
  %offset.idx2216 = add i64 %274, %index2215
  %497 = add i64 %offset.idx2216, 1
  %498 = mul i64 %offset.idx2216, 3
  %499 = mul i64 %497, 3
  %500 = mul nsw i64 %offset.idx2216, %48
  %501 = mul nsw i64 %497, %48
  %502 = getelementptr double, ptr %50, i64 %500
  %503 = getelementptr double, ptr %50, i64 %501
  %504 = getelementptr i8, ptr %502, i64 8
  %505 = getelementptr i8, ptr %503, i64 8
  %506 = load double, ptr %504, align 8, !tbaa !9, !alias.scope !14
  %507 = load double, ptr %505, align 8, !tbaa !9, !alias.scope !14
  %508 = insertelement <2 x double> poison, double %506, i64 0
  %509 = insertelement <2 x double> %508, double %507, i64 1
  %510 = getelementptr double, ptr %445, i64 %498
  %511 = getelementptr double, ptr %445, i64 %499
  %512 = getelementptr i8, ptr %510, i64 -16
  %513 = getelementptr i8, ptr %511, i64 -16
  %514 = getelementptr double, ptr %512, i64 %473
  %515 = getelementptr double, ptr %513, i64 %473
  %516 = load double, ptr %514, align 8, !tbaa !9, !alias.scope !17, !noalias !19
  %517 = load double, ptr %515, align 8, !tbaa !9, !alias.scope !17, !noalias !19
  %518 = insertelement <2 x double> poison, double %516, i64 0
  %519 = insertelement <2 x double> %518, double %517, i64 1
  %520 = getelementptr i8, ptr %502, i64 16
  %521 = getelementptr i8, ptr %503, i64 16
  %522 = load double, ptr %520, align 8, !tbaa !9, !alias.scope !22
  %523 = load double, ptr %521, align 8, !tbaa !9, !alias.scope !22
  %524 = insertelement <2 x double> poison, double %522, i64 0
  %525 = insertelement <2 x double> %524, double %523, i64 1
  %526 = getelementptr i8, ptr %510, i64 -8
  %527 = getelementptr i8, ptr %511, i64 -8
  %528 = getelementptr double, ptr %526, i64 %473
  %529 = getelementptr double, ptr %527, i64 %473
  %530 = load double, ptr %528, align 8, !tbaa !9, !alias.scope !17, !noalias !19
  %531 = load double, ptr %529, align 8, !tbaa !9, !alias.scope !17, !noalias !19
  %532 = insertelement <2 x double> poison, double %530, i64 0
  %533 = insertelement <2 x double> %532, double %531, i64 1
  %534 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %525, <2 x double> %533, <2 x double> %519)
  %535 = getelementptr i8, ptr %502, i64 24
  %536 = getelementptr i8, ptr %503, i64 24
  %537 = load double, ptr %535, align 8, !tbaa !9, !alias.scope !23
  %538 = load double, ptr %536, align 8, !tbaa !9, !alias.scope !23
  %539 = insertelement <2 x double> poison, double %537, i64 0
  %540 = insertelement <2 x double> %539, double %538, i64 1
  %541 = getelementptr double, ptr %invariant.gep, i64 %498
  %542 = getelementptr double, ptr %invariant.gep, i64 %499
  %543 = load double, ptr %541, align 8, !tbaa !9, !alias.scope !17, !noalias !19
  %544 = load double, ptr %542, align 8, !tbaa !9, !alias.scope !17, !noalias !19
  %545 = insertelement <2 x double> poison, double %543, i64 0
  %546 = insertelement <2 x double> %545, double %544, i64 1
  %547 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %540, <2 x double> %546, <2 x double> %534)
  %548 = fmul <2 x double> %509, %547
  %549 = fsub <2 x double> %519, %548
  %550 = load double, ptr %520, align 8, !tbaa !9, !alias.scope !22
  %551 = load double, ptr %521, align 8, !tbaa !9, !alias.scope !22
  %552 = insertelement <2 x double> poison, double %550, i64 0
  %553 = insertelement <2 x double> %552, double %551, i64 1
  %554 = fneg <2 x double> %548
  %555 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %554, <2 x double> %553, <2 x double> %533)
  %556 = load double, ptr %535, align 8, !tbaa !9, !alias.scope !23
  %557 = load double, ptr %536, align 8, !tbaa !9, !alias.scope !23
  %558 = insertelement <2 x double> poison, double %556, i64 0
  %559 = insertelement <2 x double> %558, double %557, i64 1
  %560 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %554, <2 x double> %559, <2 x double> %546)
  %561 = getelementptr i8, ptr %541, i64 -16
  %562 = shufflevector <2 x double> %549, <2 x double> %555, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
  %563 = shufflevector <2 x double> %560, <2 x double> poison, <4 x i32> <i32 0, i32 1, i32 poison, i32 poison>
  %interleaved.vec = shufflevector <4 x double> %562, <4 x double> %563, <6 x i32> <i32 0, i32 2, i32 4, i32 1, i32 3, i32 5>
  store <6 x double> %interleaved.vec, ptr %561, align 8, !tbaa !9
  %index.next2217 = add nuw i64 %index2215, 2
  %564 = icmp eq i64 %index.next2217, %n.vec2211
  br i1 %564, label %middle.block2206, label %vector.body2214, !llvm.loop !24

middle.block2206:                                 ; preds = %vector.body2214
  %cmp.n2218 = icmp eq i64 %474, %n.vec2211
  br i1 %cmp.n2218, label %._crit_edge1524, label %scalar.ph2207.preheader

scalar.ph2207.preheader:                          ; preds = %middle.block2206, %vector.memcheck2174, %vector.scevcheck, %.lr.ph1523
  %.113921521.ph = phi i64 [ %274, %vector.memcheck2174 ], [ %274, %vector.scevcheck ], [ %274, %.lr.ph1523 ], [ %ind.end2212, %middle.block2206 ]
  br label %scalar.ph2207

scalar.ph2207:                                    ; preds = %scalar.ph2207.preheader, %scalar.ph2207
  %.113921521 = phi i64 [ %591, %scalar.ph2207 ], [ %.113921521.ph, %scalar.ph2207.preheader ]
  %565 = mul i64 %.113921521, 3
  %566 = mul nsw i64 %.113921521, %48
  %567 = getelementptr double, ptr %50, i64 %566
  %568 = getelementptr i8, ptr %567, i64 8
  %569 = load double, ptr %568, align 8, !tbaa !9
  %570 = getelementptr double, ptr %445, i64 %565
  %571 = getelementptr i8, ptr %570, i64 -16
  %572 = getelementptr double, ptr %571, i64 %473
  %573 = load double, ptr %572, align 8, !tbaa !9
  %574 = getelementptr i8, ptr %567, i64 16
  %575 = load double, ptr %574, align 8, !tbaa !9
  %576 = getelementptr i8, ptr %570, i64 -8
  %577 = getelementptr double, ptr %576, i64 %473
  %578 = load double, ptr %577, align 8, !tbaa !9
  %579 = call double @llvm.fmuladd.f64(double %575, double %578, double %573)
  %580 = getelementptr i8, ptr %567, i64 24
  %581 = load double, ptr %580, align 8, !tbaa !9
  %gep = getelementptr double, ptr %invariant.gep, i64 %565
  %582 = load double, ptr %gep, align 8, !tbaa !9
  %583 = call double @llvm.fmuladd.f64(double %581, double %582, double %579)
  %584 = fmul double %569, %583
  %585 = fsub double %573, %584
  store double %585, ptr %572, align 8, !tbaa !9
  %586 = load double, ptr %574, align 8, !tbaa !9
  %587 = fneg double %584
  %588 = call double @llvm.fmuladd.f64(double %587, double %586, double %578)
  store double %588, ptr %577, align 8, !tbaa !9
  %589 = load double, ptr %580, align 8, !tbaa !9
  %590 = call double @llvm.fmuladd.f64(double %587, double %589, double %582)
  store double %590, ptr %gep, align 8, !tbaa !9
  %591 = add i64 %.113921521, 1
  %exitcond1667.not = icmp eq i64 %.113921521, %472
  br i1 %exitcond1667.not, label %._crit_edge1524, label %scalar.ph2207, !llvm.loop !27

._crit_edge1524:                                  ; preds = %scalar.ph2207, %middle.block2206, %467
  %592 = add nsw i64 %.013851526, 1
  %.not1457.not = icmp slt i64 %.013851526, %.01374
  %indvar.next2164 = add i64 %indvar2163, 1
  br i1 %.not1457.not, label %467, label %._crit_edge1529, !llvm.loop !28

._crit_edge1529:                                  ; preds = %._crit_edge1524
  store i64 %472, ptr %26, align 8, !tbaa !5
  br label %593

593:                                              ; preds = %._crit_edge1529, %443
  br i1 %286, label %594, label %.loopexit1509

594:                                              ; preds = %593
  %595 = add nsw i64 %399, 1
  %.1485 = call i64 @llvm.smax.i64(i64 %595, i64 %444)
  %.not14591530 = icmp sgt i64 %.1485, %.01374
  br i1 %.not14591530, label %.loopexit1509, label %.lver.check

.lver.check:                                      ; preds = %594
  %596 = mul nsw i64 %278, %48
  %597 = getelementptr double, ptr %50, i64 %596
  %598 = getelementptr i8, ptr %597, i64 8
  %599 = getelementptr double, ptr %44, i64 %595
  %600 = getelementptr i8, ptr %597, i64 16
  %gep1579 = getelementptr double, ptr %invariant.gep1578, i64 %399
  br i1 %ident.check.not, label %.ph, label %.ph.lver.orig

.ph.lver.orig:                                    ; preds = %.lver.check, %.ph.lver.orig
  %.113861531.lver.orig = phi i64 [ %614, %.ph.lver.orig ], [ %.1485, %.lver.check ]
  %601 = load double, ptr %598, align 8, !tbaa !9
  %602 = mul nsw i64 %.113861531.lver.orig, %42
  %603 = getelementptr double, ptr %599, i64 %602
  %604 = load double, ptr %603, align 8, !tbaa !9
  %605 = load double, ptr %600, align 8, !tbaa !9
  %606 = getelementptr double, ptr %gep1579, i64 %602
  %607 = load double, ptr %606, align 8, !tbaa !9
  %608 = call double @llvm.fmuladd.f64(double %605, double %607, double %604)
  %609 = fmul double %601, %608
  %610 = fsub double %604, %609
  store double %610, ptr %603, align 8, !tbaa !9
  %611 = load double, ptr %600, align 8, !tbaa !9
  %612 = fneg double %609
  %613 = call double @llvm.fmuladd.f64(double %612, double %611, double %607)
  store double %613, ptr %606, align 8, !tbaa !9
  %614 = add nsw i64 %.113861531.lver.orig, 1
  %.not1459.not.lver.orig = icmp slt i64 %.113861531.lver.orig, %.01374
  br i1 %.not1459.not.lver.orig, label %.ph.lver.orig, label %.loopexit1509, !llvm.loop !29

.ph:                                              ; preds = %.lver.check
  %615 = mul i64 %277, 24
  %616 = shl i64 %.1485, 3
  %617 = getelementptr i8, ptr %scevgep2220, i64 %615
  %scevgep2221 = getelementptr i8, ptr %617, i64 %616
  %load_initial = load double, ptr %scevgep2221, align 8
  br label %618

618:                                              ; preds = %.ph, %618
  %store_forwarded = phi double [ %load_initial, %.ph ], [ %630, %618 ]
  %.113861531 = phi i64 [ %.1485, %.ph ], [ %631, %618 ]
  %619 = load double, ptr %598, align 8, !tbaa !9
  %620 = mul nuw nsw i64 %.113861531, %42
  %621 = getelementptr double, ptr %599, i64 %620
  %622 = load double, ptr %600, align 8, !tbaa !9
  %623 = getelementptr double, ptr %gep1579, i64 %620
  %624 = load double, ptr %623, align 8, !tbaa !9
  %625 = call double @llvm.fmuladd.f64(double %622, double %624, double %store_forwarded)
  %626 = fmul double %619, %625
  %627 = fsub double %store_forwarded, %626
  store double %627, ptr %621, align 8, !tbaa !9
  %628 = load double, ptr %600, align 8, !tbaa !9
  %629 = fneg double %626
  %630 = call double @llvm.fmuladd.f64(double %629, double %628, double %624)
  store double %630, ptr %623, align 8, !tbaa !9
  %631 = add nsw i64 %.113861531, 1
  %.not1459.not = icmp slt i64 %.113861531, %.01374
  br i1 %.not1459.not, label %618, label %.loopexit1509, !llvm.loop !29

.loopexit1509:                                    ; preds = %.ph.lver.orig, %618, %594, %593
  br i1 %switch, label %632, label %633

632:                                              ; preds = %.loopexit1509
  %.01370. = call i64 @llvm.smax.i64(i64 %444, i64 %.013701658)
  br label %635

633:                                              ; preds = %.loopexit1509
  %634 = load i64, ptr %0, align 8, !tbaa !5
  %.not1460 = icmp eq i64 %634, 0
  %spec.select1502 = select i1 %.not1460, i64 %444, i64 1
  br label %635

635:                                              ; preds = %633, %632
  %.01372 = phi i64 [ %.01370., %632 ], [ %spec.select1502, %633 ]
  br i1 %.not14531515, label %._crit_edge1551, label %.lr.ph1550

.lr.ph1550:                                       ; preds = %635
  %636 = add i64 %.013691581, -3
  %637 = sub i64 %444, %.013701658
  %638 = load i64, ptr %32, align 8
  %639 = call i64 @llvm.smax.i64(i64 %637, i64 1)
  %.not14821543 = icmp sgt i64 %639, %638
  %640 = mul i64 %274, 3
  %641 = add i64 %.013691581, %640
  %642 = mul i64 %274, 24
  %643 = add i64 %257, %642
  %644 = mul i64 %51, %643
  %645 = shl i64 %639, 3
  %646 = getelementptr i8, ptr %scevgep1830, i64 %644
  %scevgep1831 = getelementptr i8, ptr %646, i64 %645
  %647 = mul i64 %277, 24
  %648 = add i64 %257, %647
  %649 = mul i64 %51, %648
  %650 = shl i64 %638, 3
  %651 = getelementptr i8, ptr %17, i64 %649
  %scevgep1832 = getelementptr i8, ptr %651, i64 %650
  %652 = add i64 %258, %642
  %653 = mul i64 %51, %652
  %654 = getelementptr i8, ptr %scevgep1833, i64 %653
  %scevgep1834 = getelementptr i8, ptr %654, i64 %645
  %655 = add i64 %258, %647
  %656 = mul i64 %51, %655
  %657 = getelementptr i8, ptr %17, i64 %656
  %scevgep1835 = getelementptr i8, ptr %657, i64 %650
  %658 = add i64 %259, %642
  %659 = mul i64 %51, %658
  %660 = getelementptr i8, ptr %scevgep1836, i64 %659
  %scevgep1837 = getelementptr i8, ptr %660, i64 %645
  %661 = add i64 %259, %647
  %662 = mul i64 %51, %661
  %663 = getelementptr i8, ptr %17, i64 %662
  %scevgep1838 = getelementptr i8, ptr %663, i64 %650
  %664 = shl i64 %274, 3
  %665 = add i64 %664, -8
  %666 = mul i64 %48, %665
  %scevgep1839 = getelementptr i8, ptr %15, i64 %666
  %667 = shl i64 %277, 3
  %668 = add i64 %667, -8
  %669 = mul i64 %48, %668
  %scevgep1841 = getelementptr i8, ptr %scevgep1840, i64 %669
  %scevgep1843 = getelementptr i8, ptr %scevgep1842, i64 %666
  %scevgep1845 = getelementptr i8, ptr %scevgep1844, i64 %669
  %scevgep1847 = getelementptr i8, ptr %scevgep1846, i64 %666
  %scevgep1849 = getelementptr i8, ptr %scevgep1848, i64 %669
  %670 = add i64 %638, 1
  %671 = sub i64 %670, %639
  %672 = mul i64 %274, 24
  %673 = add i64 %253, %672
  %674 = mul i64 %45, %673
  %675 = add i64 %254, %672
  %676 = mul i64 %45, %675
  %677 = add i64 %255, %672
  %678 = mul i64 %45, %677
  %679 = shl i64 %274, 3
  %680 = add i64 %679, -8
  %681 = mul i64 %48, %680
  %scevgep1963 = getelementptr i8, ptr %15, i64 %681
  %682 = shl i64 %277, 3
  %683 = add i64 %682, -8
  %684 = mul i64 %48, %683
  %scevgep1965 = getelementptr i8, ptr %scevgep1964, i64 %684
  %scevgep1967 = getelementptr i8, ptr %scevgep1966, i64 %681
  %scevgep1969 = getelementptr i8, ptr %scevgep1968, i64 %684
  %scevgep1971 = getelementptr i8, ptr %scevgep1970, i64 %681
  %scevgep1973 = getelementptr i8, ptr %scevgep1972, i64 %684
  %685 = mul i64 %274, 24
  %686 = add i64 %249, %685
  %687 = mul i64 %42, %686
  %688 = shl i64 %.01372, 3
  %689 = add i64 %250, %685
  %690 = mul i64 %42, %689
  %691 = add i64 %251, %685
  %692 = mul i64 %42, %691
  %693 = shl i64 %274, 3
  %694 = add i64 %693, -8
  %695 = mul i64 %48, %694
  %scevgep2068 = getelementptr i8, ptr %15, i64 %695
  %696 = shl i64 %277, 3
  %697 = add i64 %696, -8
  %698 = mul i64 %48, %697
  %scevgep2070 = getelementptr i8, ptr %scevgep2069, i64 %698
  %scevgep2072 = getelementptr i8, ptr %scevgep2071, i64 %695
  %scevgep2074 = getelementptr i8, ptr %scevgep2073, i64 %698
  %scevgep2076 = getelementptr i8, ptr %scevgep2075, i64 %695
  %scevgep2078 = getelementptr i8, ptr %scevgep2077, i64 %698
  %gep2231 = getelementptr i8, ptr %invariant.gep2230, i64 %687
  %699 = getelementptr i8, ptr %gep2231, i64 %688
  %700 = getelementptr i8, ptr %9, i64 %687
  %gep2233 = getelementptr i8, ptr %invariant.gep2232, i64 %690
  %701 = getelementptr i8, ptr %gep2233, i64 %688
  %702 = getelementptr i8, ptr %9, i64 %690
  %gep2235 = getelementptr i8, ptr %invariant.gep2234, i64 %692
  %703 = getelementptr i8, ptr %gep2235, i64 %688
  %704 = getelementptr i8, ptr %9, i64 %692
  %gep2237 = getelementptr i8, ptr %invariant.gep2236, i64 %674
  %705 = getelementptr i8, ptr %13, i64 %674
  %gep2239 = getelementptr i8, ptr %invariant.gep2238, i64 %676
  %706 = getelementptr i8, ptr %13, i64 %676
  %gep2241 = getelementptr i8, ptr %invariant.gep2240, i64 %678
  %707 = getelementptr i8, ptr %13, i64 %678
  %708 = getelementptr double, ptr %44, i64 %.01372
  %min.iters.check1922 = icmp ult i64 %671, 14
  %bound01850 = icmp ult ptr %scevgep1831, %scevgep1835
  %bound11851 = icmp ult ptr %scevgep1834, %scevgep1832
  %found.conflict1852 = and i1 %bound01850, %bound11851
  %bound01854 = icmp ult ptr %scevgep1831, %scevgep1838
  %bound11855 = icmp ult ptr %scevgep1837, %scevgep1832
  %found.conflict1856 = and i1 %bound01854, %bound11855
  %709 = or i1 %found.conflict1856, %stride.check1857
  %conflict.rdx1859 = or i1 %found.conflict1852, %709
  %bound01860 = icmp ult ptr %scevgep1831, %scevgep1841
  %bound11861 = icmp ult ptr %scevgep1839, %scevgep1832
  %found.conflict1862 = and i1 %bound01860, %bound11861
  %710 = or i1 %found.conflict1862, %193
  %conflict.rdx1865 = or i1 %conflict.rdx1859, %710
  %bound01866 = icmp ult ptr %scevgep1831, %scevgep1845
  %bound11867 = icmp ult ptr %scevgep1843, %scevgep1832
  %found.conflict1868 = and i1 %bound01866, %bound11867
  %711 = or i1 %found.conflict1868, %195
  %conflict.rdx1871 = or i1 %conflict.rdx1865, %711
  %bound01872 = icmp ult ptr %scevgep1831, %scevgep1849
  %bound11873 = icmp ult ptr %scevgep1847, %scevgep1832
  %found.conflict1874 = and i1 %bound01872, %bound11873
  %712 = or i1 %found.conflict1874, %197
  %conflict.rdx1877 = or i1 %conflict.rdx1871, %712
  %bound01878 = icmp ult ptr %scevgep1834, %scevgep1838
  %bound11879 = icmp ult ptr %scevgep1837, %scevgep1835
  %found.conflict1880 = and i1 %bound01878, %bound11879
  %conflict.rdx1883 = or i1 %found.conflict1880, %conflict.rdx1877
  %bound01884 = icmp ult ptr %scevgep1834, %scevgep1841
  %bound11885 = icmp ult ptr %scevgep1839, %scevgep1835
  %found.conflict1886 = and i1 %bound01884, %bound11885
  %713 = or i1 %found.conflict1886, %199
  %conflict.rdx1889 = or i1 %conflict.rdx1883, %713
  %bound01890 = icmp ult ptr %scevgep1834, %scevgep1845
  %bound11891 = icmp ult ptr %scevgep1843, %scevgep1835
  %found.conflict1892 = and i1 %bound01890, %bound11891
  %714 = or i1 %found.conflict1892, %201
  %conflict.rdx1895 = or i1 %conflict.rdx1889, %714
  %bound01896 = icmp ult ptr %scevgep1834, %scevgep1849
  %bound11897 = icmp ult ptr %scevgep1847, %scevgep1835
  %found.conflict1898 = and i1 %bound01896, %bound11897
  %715 = or i1 %found.conflict1898, %203
  %conflict.rdx1901 = or i1 %conflict.rdx1895, %715
  %bound01902 = icmp ult ptr %scevgep1837, %scevgep1841
  %bound11903 = icmp ult ptr %scevgep1839, %scevgep1838
  %found.conflict1904 = and i1 %bound01902, %bound11903
  %716 = or i1 %found.conflict1904, %205
  %conflict.rdx1907 = or i1 %conflict.rdx1901, %716
  %bound01908 = icmp ult ptr %scevgep1837, %scevgep1845
  %bound11909 = icmp ult ptr %scevgep1843, %scevgep1838
  %found.conflict1910 = and i1 %bound01908, %bound11909
  %717 = or i1 %found.conflict1910, %207
  %conflict.rdx1913 = or i1 %conflict.rdx1907, %717
  %bound01914 = icmp ult ptr %scevgep1837, %scevgep1849
  %bound11915 = icmp ult ptr %scevgep1847, %scevgep1838
  %found.conflict1916 = and i1 %bound01914, %bound11915
  %718 = or i1 %found.conflict1916, %209
  %conflict.rdx1919 = or i1 %conflict.rdx1913, %718
  %n.vec1925 = and i64 %671, -2
  %ind.end1926 = add i64 %639, %n.vec1925
  %719 = getelementptr double, ptr %53, i64 %639
  %cmp.n1947 = icmp eq i64 %671, %n.vec1925
  br label %720

720:                                              ; preds = %.lr.ph1550, %.loopexit
  %indvar1949 = phi i64 [ 0, %.lr.ph1550 ], [ %indvar.next1950, %.loopexit ]
  %indvars.iv = phi i64 [ %641, %.lr.ph1550 ], [ %indvars.iv.next, %.loopexit ]
  %.213931548 = phi i64 [ %274, %.lr.ph1550 ], [ %891, %.loopexit ]
  %721 = mul i64 %153, %indvar1949
  %scevgep2059 = getelementptr i8, ptr %699, i64 %721
  %scevgep2060 = getelementptr i8, ptr %700, i64 %721
  %scevgep2062 = getelementptr i8, ptr %701, i64 %721
  %scevgep2063 = getelementptr i8, ptr %702, i64 %721
  %scevgep2065 = getelementptr i8, ptr %703, i64 %721
  %scevgep2066 = getelementptr i8, ptr %704, i64 %721
  %722 = mul i64 %143, %indvar1949
  %scevgep1951 = getelementptr i8, ptr %gep2237, i64 %722
  %scevgep1953 = getelementptr i8, ptr %705, i64 %722
  %scevgep1955 = getelementptr i8, ptr %gep2239, i64 %722
  %scevgep1957 = getelementptr i8, ptr %706, i64 %722
  %scevgep1959 = getelementptr i8, ptr %gep2241, i64 %722
  %scevgep1961 = getelementptr i8, ptr %707, i64 %722
  %723 = mul nsw i64 %.213931548, %48
  %724 = getelementptr double, ptr %50, i64 %723
  %725 = getelementptr i8, ptr %724, i64 8
  %726 = load double, ptr %725, align 8, !tbaa !9
  %727 = fcmp une double %726, 0.000000e+00
  br i1 %727, label %728, label %.loopexit

728:                                              ; preds = %720
  %729 = mul i64 %.213931548, 3
  %730 = add i64 %636, %729
  %731 = load i64, ptr %5, align 8, !tbaa !5
  %732 = add i64 %729, %.013691581
  store i64 %732, ptr %27, align 8, !tbaa !5
  %733 = call i64 @llvm.smin.i64(i64 %731, i64 %732)
  %.not14791534 = icmp sgt i64 %.01372, %733
  br i1 %.not14791534, label %._crit_edge1538, label %.lr.ph1537

.lr.ph1537:                                       ; preds = %728
  %734 = add nsw i64 %730, 1
  %735 = mul nsw i64 %734, %42
  %736 = getelementptr i8, ptr %724, i64 16
  %737 = add nsw i64 %730, 2
  %738 = mul nsw i64 %737, %42
  %739 = getelementptr i8, ptr %724, i64 24
  %740 = mul nsw i64 %732, %42
  %smin = call i64 @llvm.smin.i64(i64 %731, i64 %indvars.iv)
  %reass.sub2223 = sub i64 %smin, %.01372
  %741 = add i64 %reass.sub2223, 1
  %min.iters.check2137 = icmp ult i64 %741, 10
  br i1 %min.iters.check2137, label %scalar.ph2136.preheader, label %vector.memcheck2058

vector.memcheck2058:                              ; preds = %.lr.ph1537
  %742 = shl i64 %smin, 3
  %scevgep2061 = getelementptr i8, ptr %scevgep2060, i64 %742
  %scevgep2064 = getelementptr i8, ptr %scevgep2063, i64 %742
  %scevgep2067 = getelementptr i8, ptr %scevgep2066, i64 %742
  %bound02079 = icmp ult ptr %scevgep2059, %scevgep2064
  %bound12080 = icmp ult ptr %scevgep2062, %scevgep2061
  %found.conflict2081 = and i1 %bound02079, %bound12080
  %bound02082 = icmp ult ptr %scevgep2059, %scevgep2067
  %bound12083 = icmp ult ptr %scevgep2065, %scevgep2061
  %found.conflict2084 = and i1 %bound02082, %bound12083
  %conflict.rdx2085 = or i1 %found.conflict2081, %found.conflict2084
  %bound02086 = icmp ult ptr %scevgep2059, %scevgep2070
  %bound12087 = icmp ult ptr %scevgep2068, %scevgep2061
  %found.conflict2088 = and i1 %bound02086, %bound12087
  %743 = or i1 %found.conflict2088, %stride.check2089
  %conflict.rdx2090 = or i1 %conflict.rdx2085, %743
  %bound02091 = icmp ult ptr %scevgep2059, %scevgep2074
  %bound12092 = icmp ult ptr %scevgep2072, %scevgep2061
  %found.conflict2093 = and i1 %bound02091, %bound12092
  %conflict.rdx2095 = or i1 %found.conflict2093, %conflict.rdx2090
  %bound02096 = icmp ult ptr %scevgep2059, %scevgep2078
  %bound12097 = icmp ult ptr %scevgep2076, %scevgep2061
  %found.conflict2098 = and i1 %bound02096, %bound12097
  %conflict.rdx2100 = or i1 %found.conflict2098, %conflict.rdx2095
  %bound02101 = icmp ult ptr %scevgep2062, %scevgep2067
  %bound12102 = icmp ult ptr %scevgep2065, %scevgep2064
  %found.conflict2103 = and i1 %bound02101, %bound12102
  %conflict.rdx2104 = or i1 %conflict.rdx2100, %found.conflict2103
  %bound02105 = icmp ult ptr %scevgep2062, %scevgep2070
  %bound12106 = icmp ult ptr %scevgep2068, %scevgep2064
  %found.conflict2107 = and i1 %bound02105, %bound12106
  %conflict.rdx2109 = or i1 %found.conflict2107, %conflict.rdx2104
  %bound02110 = icmp ult ptr %scevgep2062, %scevgep2074
  %bound12111 = icmp ult ptr %scevgep2072, %scevgep2064
  %found.conflict2112 = and i1 %bound02110, %bound12111
  %conflict.rdx2114 = or i1 %found.conflict2112, %conflict.rdx2109
  %bound02115 = icmp ult ptr %scevgep2062, %scevgep2078
  %bound12116 = icmp ult ptr %scevgep2076, %scevgep2064
  %found.conflict2117 = and i1 %bound02115, %bound12116
  %conflict.rdx2119 = or i1 %found.conflict2117, %conflict.rdx2114
  %bound02120 = icmp ult ptr %scevgep2065, %scevgep2070
  %bound12121 = icmp ult ptr %scevgep2068, %scevgep2067
  %found.conflict2122 = and i1 %bound02120, %bound12121
  %conflict.rdx2124 = or i1 %found.conflict2122, %conflict.rdx2119
  %bound02125 = icmp ult ptr %scevgep2065, %scevgep2074
  %bound12126 = icmp ult ptr %scevgep2072, %scevgep2067
  %found.conflict2127 = and i1 %bound02125, %bound12126
  %744 = or i1 %found.conflict2127, %stride.check2128
  %conflict.rdx2129 = or i1 %conflict.rdx2124, %744
  %bound02130 = icmp ult ptr %scevgep2065, %scevgep2078
  %bound12131 = icmp ult ptr %scevgep2076, %scevgep2067
  %found.conflict2132 = and i1 %bound02130, %bound12131
  %conflict.rdx2134 = or i1 %found.conflict2132, %conflict.rdx2129
  br i1 %conflict.rdx2134, label %scalar.ph2136.preheader, label %vector.ph2138

vector.ph2138:                                    ; preds = %vector.memcheck2058
  %n.vec2140 = and i64 %741, -2
  %ind.end2141 = add i64 %.01372, %n.vec2140
  %745 = load double, ptr %725, align 8, !tbaa !9, !alias.scope !30
  %broadcast.splatinsert2153 = insertelement <2 x double> poison, double %745, i64 0
  %broadcast.splat2154 = shufflevector <2 x double> %broadcast.splatinsert2153, <2 x double> poison, <2 x i32> zeroinitializer
  %746 = load double, ptr %736, align 8, !tbaa !9, !alias.scope !33
  %broadcast.splatinsert2148 = insertelement <2 x double> poison, double %746, i64 0
  %broadcast.splat2149 = shufflevector <2 x double> %broadcast.splatinsert2148, <2 x double> poison, <2 x i32> zeroinitializer
  %747 = load double, ptr %739, align 8, !tbaa !9, !alias.scope !35
  %broadcast.splatinsert2151 = insertelement <2 x double> poison, double %747, i64 0
  %broadcast.splat2152 = shufflevector <2 x double> %broadcast.splatinsert2151, <2 x double> poison, <2 x i32> zeroinitializer
  %748 = load double, ptr %736, align 8, !tbaa !9, !alias.scope !33
  %broadcast.splatinsert2156 = insertelement <2 x double> poison, double %748, i64 0
  %broadcast.splat2157 = shufflevector <2 x double> %broadcast.splatinsert2156, <2 x double> poison, <2 x i32> zeroinitializer
  %749 = load double, ptr %739, align 8, !tbaa !9, !alias.scope !35
  %broadcast.splatinsert2159 = insertelement <2 x double> poison, double %749, i64 0
  %broadcast.splat2160 = shufflevector <2 x double> %broadcast.splatinsert2159, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body2143

vector.body2143:                                  ; preds = %vector.body2143, %vector.ph2138
  %index2144 = phi i64 [ 0, %vector.ph2138 ], [ %index.next2161, %vector.body2143 ]
  %750 = getelementptr double, ptr %708, i64 %index2144
  %751 = getelementptr double, ptr %750, i64 %735
  %wide.load2146 = load <2 x double>, ptr %751, align 8, !tbaa !9, !alias.scope !37, !noalias !39
  %752 = getelementptr double, ptr %750, i64 %738
  %wide.load2147 = load <2 x double>, ptr %752, align 8, !tbaa !9, !alias.scope !42, !noalias !43
  %753 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat2149, <2 x double> %wide.load2147, <2 x double> %wide.load2146)
  %754 = getelementptr double, ptr %750, i64 %740
  %wide.load2150 = load <2 x double>, ptr %754, align 8, !tbaa !9, !alias.scope !44, !noalias !45
  %755 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat2152, <2 x double> %wide.load2150, <2 x double> %753)
  %756 = fmul <2 x double> %broadcast.splat2154, %755
  %757 = fsub <2 x double> %wide.load2146, %756
  store <2 x double> %757, ptr %751, align 8, !tbaa !9, !alias.scope !37, !noalias !39
  %wide.load2155 = load <2 x double>, ptr %752, align 8, !tbaa !9, !alias.scope !42, !noalias !43
  %758 = fneg <2 x double> %756
  %759 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %758, <2 x double> %broadcast.splat2157, <2 x double> %wide.load2155)
  store <2 x double> %759, ptr %752, align 8, !tbaa !9, !alias.scope !42, !noalias !43
  %wide.load2158 = load <2 x double>, ptr %754, align 8, !tbaa !9, !alias.scope !44, !noalias !45
  %760 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %758, <2 x double> %broadcast.splat2160, <2 x double> %wide.load2158)
  store <2 x double> %760, ptr %754, align 8, !tbaa !9, !alias.scope !44, !noalias !45
  %index.next2161 = add nuw i64 %index2144, 2
  %761 = icmp eq i64 %index.next2161, %n.vec2140
  br i1 %761, label %middle.block2135, label %vector.body2143, !llvm.loop !46

middle.block2135:                                 ; preds = %vector.body2143
  %cmp.n2162 = icmp eq i64 %741, %n.vec2140
  br i1 %cmp.n2162, label %._crit_edge1538, label %scalar.ph2136.preheader

scalar.ph2136.preheader:                          ; preds = %middle.block2135, %vector.memcheck2058, %.lr.ph1537
  %.213871535.ph = phi i64 [ %.01372, %vector.memcheck2058 ], [ %.01372, %.lr.ph1537 ], [ %ind.end2141, %middle.block2135 ]
  br label %scalar.ph2136

scalar.ph2136:                                    ; preds = %scalar.ph2136.preheader, %scalar.ph2136
  %.213871535 = phi i64 [ %783, %scalar.ph2136 ], [ %.213871535.ph, %scalar.ph2136.preheader ]
  %762 = load double, ptr %725, align 8, !tbaa !9
  %763 = getelementptr double, ptr %44, i64 %.213871535
  %764 = getelementptr double, ptr %763, i64 %735
  %765 = load double, ptr %764, align 8, !tbaa !9
  %766 = load double, ptr %736, align 8, !tbaa !9
  %767 = getelementptr double, ptr %763, i64 %738
  %768 = load double, ptr %767, align 8, !tbaa !9
  %769 = call double @llvm.fmuladd.f64(double %766, double %768, double %765)
  %770 = load double, ptr %739, align 8, !tbaa !9
  %771 = getelementptr double, ptr %763, i64 %740
  %772 = load double, ptr %771, align 8, !tbaa !9
  %773 = call double @llvm.fmuladd.f64(double %770, double %772, double %769)
  %774 = fmul double %762, %773
  %775 = fsub double %765, %774
  store double %775, ptr %764, align 8, !tbaa !9
  %776 = load double, ptr %736, align 8, !tbaa !9
  %777 = load double, ptr %767, align 8, !tbaa !9
  %778 = fneg double %774
  %779 = call double @llvm.fmuladd.f64(double %778, double %776, double %777)
  store double %779, ptr %767, align 8, !tbaa !9
  %780 = load double, ptr %739, align 8, !tbaa !9
  %781 = load double, ptr %771, align 8, !tbaa !9
  %782 = call double @llvm.fmuladd.f64(double %778, double %780, double %781)
  store double %782, ptr %771, align 8, !tbaa !9
  %783 = add i64 %.213871535, 1
  %exitcond1668.not = icmp eq i64 %.213871535, %smin
  br i1 %exitcond1668.not, label %._crit_edge1538, label %scalar.ph2136, !llvm.loop !47

._crit_edge1538:                                  ; preds = %scalar.ph2136, %middle.block2135, %728
  br i1 %switch, label %784, label %833

784:                                              ; preds = %._crit_edge1538
  store i64 %638, ptr %27, align 8, !tbaa !5
  br i1 %.not14821543, label %.loopexit, label %.lr.ph1546

.lr.ph1546:                                       ; preds = %784
  %785 = sub nsw i64 %730, %.013701658
  %786 = add nsw i64 %785, 1
  %787 = mul nsw i64 %786, %51
  %788 = getelementptr i8, ptr %724, i64 16
  %789 = add nsw i64 %785, 2
  %790 = mul nsw i64 %789, %51
  %791 = getelementptr i8, ptr %724, i64 24
  %792 = add nsw i64 %785, 3
  %793 = mul nsw i64 %792, %51
  %brmerge = select i1 %min.iters.check1922, i1 true, i1 %conflict.rdx1919
  br i1 %brmerge, label %scalar.ph1921.preheader, label %vector.ph1923

vector.ph1923:                                    ; preds = %.lr.ph1546
  %794 = load double, ptr %725, align 8, !tbaa !9, !alias.scope !48
  %broadcast.splatinsert1938 = insertelement <2 x double> poison, double %794, i64 0
  %broadcast.splat1939 = shufflevector <2 x double> %broadcast.splatinsert1938, <2 x double> poison, <2 x i32> zeroinitializer
  %795 = load double, ptr %788, align 8, !tbaa !9, !alias.scope !51
  %broadcast.splatinsert1933 = insertelement <2 x double> poison, double %795, i64 0
  %broadcast.splat1934 = shufflevector <2 x double> %broadcast.splatinsert1933, <2 x double> poison, <2 x i32> zeroinitializer
  %796 = load double, ptr %791, align 8, !tbaa !9, !alias.scope !53
  %broadcast.splatinsert1936 = insertelement <2 x double> poison, double %796, i64 0
  %broadcast.splat1937 = shufflevector <2 x double> %broadcast.splatinsert1936, <2 x double> poison, <2 x i32> zeroinitializer
  %797 = load double, ptr %788, align 8, !tbaa !9, !alias.scope !51
  %broadcast.splatinsert1941 = insertelement <2 x double> poison, double %797, i64 0
  %broadcast.splat1942 = shufflevector <2 x double> %broadcast.splatinsert1941, <2 x double> poison, <2 x i32> zeroinitializer
  %798 = load double, ptr %791, align 8, !tbaa !9, !alias.scope !53
  %broadcast.splatinsert1944 = insertelement <2 x double> poison, double %798, i64 0
  %broadcast.splat1945 = shufflevector <2 x double> %broadcast.splatinsert1944, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body1928

vector.body1928:                                  ; preds = %vector.body1928, %vector.ph1923
  %index1929 = phi i64 [ 0, %vector.ph1923 ], [ %index.next1946, %vector.body1928 ]
  %799 = getelementptr double, ptr %719, i64 %index1929
  %800 = getelementptr double, ptr %799, i64 %787
  %wide.load1931 = load <2 x double>, ptr %800, align 8, !tbaa !9, !alias.scope !55, !noalias !57
  %801 = getelementptr double, ptr %799, i64 %790
  %wide.load1932 = load <2 x double>, ptr %801, align 8, !tbaa !9, !alias.scope !60, !noalias !61
  %802 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat1934, <2 x double> %wide.load1932, <2 x double> %wide.load1931)
  %803 = getelementptr double, ptr %799, i64 %793
  %wide.load1935 = load <2 x double>, ptr %803, align 8, !tbaa !9, !alias.scope !62, !noalias !63
  %804 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat1937, <2 x double> %wide.load1935, <2 x double> %802)
  %805 = fmul <2 x double> %broadcast.splat1939, %804
  %806 = fsub <2 x double> %wide.load1931, %805
  store <2 x double> %806, ptr %800, align 8, !tbaa !9, !alias.scope !55, !noalias !57
  %wide.load1940 = load <2 x double>, ptr %801, align 8, !tbaa !9, !alias.scope !60, !noalias !61
  %807 = fneg <2 x double> %805
  %808 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %807, <2 x double> %broadcast.splat1942, <2 x double> %wide.load1940)
  store <2 x double> %808, ptr %801, align 8, !tbaa !9, !alias.scope !60, !noalias !61
  %wide.load1943 = load <2 x double>, ptr %803, align 8, !tbaa !9, !alias.scope !62, !noalias !63
  %809 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %807, <2 x double> %broadcast.splat1945, <2 x double> %wide.load1943)
  store <2 x double> %809, ptr %803, align 8, !tbaa !9, !alias.scope !62, !noalias !63
  %index.next1946 = add nuw i64 %index1929, 2
  %810 = icmp eq i64 %index.next1946, %n.vec1925
  br i1 %810, label %middle.block1920, label %vector.body1928, !llvm.loop !64

middle.block1920:                                 ; preds = %vector.body1928
  br i1 %cmp.n1947, label %.loopexit, label %scalar.ph1921.preheader

scalar.ph1921.preheader:                          ; preds = %.lr.ph1546, %middle.block1920
  %.313881544.ph = phi i64 [ %639, %.lr.ph1546 ], [ %ind.end1926, %middle.block1920 ]
  br label %scalar.ph1921

scalar.ph1921:                                    ; preds = %scalar.ph1921.preheader, %scalar.ph1921
  %.313881544 = phi i64 [ %832, %scalar.ph1921 ], [ %.313881544.ph, %scalar.ph1921.preheader ]
  %811 = load double, ptr %725, align 8, !tbaa !9
  %812 = getelementptr double, ptr %53, i64 %.313881544
  %813 = getelementptr double, ptr %812, i64 %787
  %814 = load double, ptr %813, align 8, !tbaa !9
  %815 = load double, ptr %788, align 8, !tbaa !9
  %816 = getelementptr double, ptr %812, i64 %790
  %817 = load double, ptr %816, align 8, !tbaa !9
  %818 = call double @llvm.fmuladd.f64(double %815, double %817, double %814)
  %819 = load double, ptr %791, align 8, !tbaa !9
  %820 = getelementptr double, ptr %812, i64 %793
  %821 = load double, ptr %820, align 8, !tbaa !9
  %822 = call double @llvm.fmuladd.f64(double %819, double %821, double %818)
  %823 = fmul double %811, %822
  %824 = fsub double %814, %823
  store double %824, ptr %813, align 8, !tbaa !9
  %825 = load double, ptr %788, align 8, !tbaa !9
  %826 = load double, ptr %816, align 8, !tbaa !9
  %827 = fneg double %823
  %828 = call double @llvm.fmuladd.f64(double %827, double %825, double %826)
  store double %828, ptr %816, align 8, !tbaa !9
  %829 = load double, ptr %791, align 8, !tbaa !9
  %830 = load double, ptr %820, align 8, !tbaa !9
  %831 = call double @llvm.fmuladd.f64(double %827, double %829, double %830)
  store double %831, ptr %820, align 8, !tbaa !9
  %832 = add nuw nsw i64 %.313881544, 1
  %.not1482.not = icmp slt i64 %.313881544, %638
  br i1 %.not1482.not, label %scalar.ph1921, label %.loopexit, !llvm.loop !65

833:                                              ; preds = %._crit_edge1538
  %834 = load i64, ptr %1, align 8, !tbaa !5
  %.not1480 = icmp eq i64 %834, 0
  br i1 %.not1480, label %.loopexit, label %835

835:                                              ; preds = %833
  %836 = load i64, ptr %12, align 8, !tbaa !5
  store i64 %836, ptr %27, align 8, !tbaa !5
  %837 = load i64, ptr %11, align 8, !tbaa !5
  %.not14811539 = icmp sgt i64 %837, %836
  br i1 %.not14811539, label %.loopexit, label %.lr.ph1542

.lr.ph1542:                                       ; preds = %835
  %838 = add nsw i64 %730, 1
  %839 = mul nsw i64 %838, %45
  %840 = getelementptr i8, ptr %724, i64 16
  %841 = add nsw i64 %730, 2
  %842 = mul nsw i64 %841, %45
  %843 = getelementptr i8, ptr %724, i64 24
  %844 = mul nsw i64 %732, %45
  %845 = add i64 %836, 1
  %846 = sub i64 %845, %837
  %min.iters.check2032 = icmp ult i64 %846, 10
  br i1 %min.iters.check2032, label %scalar.ph2031.preheader, label %vector.memcheck1948

vector.memcheck1948:                              ; preds = %.lr.ph1542
  %847 = shl i64 %837, 3
  %scevgep1952 = getelementptr i8, ptr %scevgep1951, i64 %847
  %848 = shl i64 %836, 3
  %scevgep1954 = getelementptr i8, ptr %scevgep1953, i64 %848
  %scevgep1956 = getelementptr i8, ptr %scevgep1955, i64 %847
  %scevgep1958 = getelementptr i8, ptr %scevgep1957, i64 %848
  %scevgep1960 = getelementptr i8, ptr %scevgep1959, i64 %847
  %scevgep1962 = getelementptr i8, ptr %scevgep1961, i64 %848
  %bound01974 = icmp ult ptr %scevgep1952, %scevgep1958
  %bound11975 = icmp ult ptr %scevgep1956, %scevgep1954
  %found.conflict1976 = and i1 %bound01974, %bound11975
  %bound01977 = icmp ult ptr %scevgep1952, %scevgep1962
  %bound11978 = icmp ult ptr %scevgep1960, %scevgep1954
  %found.conflict1979 = and i1 %bound01977, %bound11978
  %conflict.rdx1980 = or i1 %found.conflict1976, %found.conflict1979
  %bound01981 = icmp ult ptr %scevgep1952, %scevgep1965
  %bound11982 = icmp ult ptr %scevgep1963, %scevgep1954
  %found.conflict1983 = and i1 %bound01981, %bound11982
  %849 = or i1 %found.conflict1983, %stride.check1984
  %conflict.rdx1985 = or i1 %conflict.rdx1980, %849
  %bound01986 = icmp ult ptr %scevgep1952, %scevgep1969
  %bound11987 = icmp ult ptr %scevgep1967, %scevgep1954
  %found.conflict1988 = and i1 %bound01986, %bound11987
  %conflict.rdx1990 = or i1 %found.conflict1988, %conflict.rdx1985
  %bound01991 = icmp ult ptr %scevgep1952, %scevgep1973
  %bound11992 = icmp ult ptr %scevgep1971, %scevgep1954
  %found.conflict1993 = and i1 %bound01991, %bound11992
  %conflict.rdx1995 = or i1 %found.conflict1993, %conflict.rdx1990
  %bound01996 = icmp ult ptr %scevgep1956, %scevgep1962
  %bound11997 = icmp ult ptr %scevgep1960, %scevgep1958
  %found.conflict1998 = and i1 %bound01996, %bound11997
  %conflict.rdx1999 = or i1 %conflict.rdx1995, %found.conflict1998
  %bound02000 = icmp ult ptr %scevgep1956, %scevgep1965
  %bound12001 = icmp ult ptr %scevgep1963, %scevgep1958
  %found.conflict2002 = and i1 %bound02000, %bound12001
  %conflict.rdx2004 = or i1 %found.conflict2002, %conflict.rdx1999
  %bound02005 = icmp ult ptr %scevgep1956, %scevgep1969
  %bound12006 = icmp ult ptr %scevgep1967, %scevgep1958
  %found.conflict2007 = and i1 %bound02005, %bound12006
  %conflict.rdx2009 = or i1 %found.conflict2007, %conflict.rdx2004
  %bound02010 = icmp ult ptr %scevgep1956, %scevgep1973
  %bound12011 = icmp ult ptr %scevgep1971, %scevgep1958
  %found.conflict2012 = and i1 %bound02010, %bound12011
  %conflict.rdx2014 = or i1 %found.conflict2012, %conflict.rdx2009
  %bound02015 = icmp ult ptr %scevgep1960, %scevgep1965
  %bound12016 = icmp ult ptr %scevgep1963, %scevgep1962
  %found.conflict2017 = and i1 %bound02015, %bound12016
  %conflict.rdx2019 = or i1 %found.conflict2017, %conflict.rdx2014
  %bound02020 = icmp ult ptr %scevgep1960, %scevgep1969
  %bound12021 = icmp ult ptr %scevgep1967, %scevgep1962
  %found.conflict2022 = and i1 %bound02020, %bound12021
  %850 = or i1 %found.conflict2022, %stride.check2023
  %conflict.rdx2024 = or i1 %conflict.rdx2019, %850
  %bound02025 = icmp ult ptr %scevgep1960, %scevgep1973
  %bound12026 = icmp ult ptr %scevgep1971, %scevgep1962
  %found.conflict2027 = and i1 %bound02025, %bound12026
  %conflict.rdx2029 = or i1 %found.conflict2027, %conflict.rdx2024
  br i1 %conflict.rdx2029, label %scalar.ph2031.preheader, label %vector.ph2033

vector.ph2033:                                    ; preds = %vector.memcheck1948
  %n.vec2035 = and i64 %846, -2
  %ind.end2036 = add i64 %837, %n.vec2035
  %851 = load double, ptr %725, align 8, !tbaa !9, !alias.scope !66
  %broadcast.splatinsert2048 = insertelement <2 x double> poison, double %851, i64 0
  %broadcast.splat2049 = shufflevector <2 x double> %broadcast.splatinsert2048, <2 x double> poison, <2 x i32> zeroinitializer
  %852 = getelementptr double, ptr %47, i64 %837
  %853 = load double, ptr %840, align 8, !tbaa !9, !alias.scope !69
  %broadcast.splatinsert2043 = insertelement <2 x double> poison, double %853, i64 0
  %broadcast.splat2044 = shufflevector <2 x double> %broadcast.splatinsert2043, <2 x double> poison, <2 x i32> zeroinitializer
  %854 = load double, ptr %843, align 8, !tbaa !9, !alias.scope !71
  %broadcast.splatinsert2046 = insertelement <2 x double> poison, double %854, i64 0
  %broadcast.splat2047 = shufflevector <2 x double> %broadcast.splatinsert2046, <2 x double> poison, <2 x i32> zeroinitializer
  %855 = load double, ptr %840, align 8, !tbaa !9, !alias.scope !69
  %broadcast.splatinsert2051 = insertelement <2 x double> poison, double %855, i64 0
  %broadcast.splat2052 = shufflevector <2 x double> %broadcast.splatinsert2051, <2 x double> poison, <2 x i32> zeroinitializer
  %856 = load double, ptr %843, align 8, !tbaa !9, !alias.scope !71
  %broadcast.splatinsert2054 = insertelement <2 x double> poison, double %856, i64 0
  %broadcast.splat2055 = shufflevector <2 x double> %broadcast.splatinsert2054, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body2038

vector.body2038:                                  ; preds = %vector.body2038, %vector.ph2033
  %index2039 = phi i64 [ 0, %vector.ph2033 ], [ %index.next2056, %vector.body2038 ]
  %857 = getelementptr double, ptr %852, i64 %index2039
  %858 = getelementptr double, ptr %857, i64 %839
  %wide.load2041 = load <2 x double>, ptr %858, align 8, !tbaa !9, !alias.scope !73, !noalias !75
  %859 = getelementptr double, ptr %857, i64 %842
  %wide.load2042 = load <2 x double>, ptr %859, align 8, !tbaa !9, !alias.scope !78, !noalias !79
  %860 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat2044, <2 x double> %wide.load2042, <2 x double> %wide.load2041)
  %861 = getelementptr double, ptr %857, i64 %844
  %wide.load2045 = load <2 x double>, ptr %861, align 8, !tbaa !9, !alias.scope !80, !noalias !81
  %862 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat2047, <2 x double> %wide.load2045, <2 x double> %860)
  %863 = fmul <2 x double> %broadcast.splat2049, %862
  %864 = fsub <2 x double> %wide.load2041, %863
  store <2 x double> %864, ptr %858, align 8, !tbaa !9, !alias.scope !73, !noalias !75
  %wide.load2050 = load <2 x double>, ptr %859, align 8, !tbaa !9, !alias.scope !78, !noalias !79
  %865 = fneg <2 x double> %863
  %866 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %865, <2 x double> %broadcast.splat2052, <2 x double> %wide.load2050)
  store <2 x double> %866, ptr %859, align 8, !tbaa !9, !alias.scope !78, !noalias !79
  %wide.load2053 = load <2 x double>, ptr %861, align 8, !tbaa !9, !alias.scope !80, !noalias !81
  %867 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %865, <2 x double> %broadcast.splat2055, <2 x double> %wide.load2053)
  store <2 x double> %867, ptr %861, align 8, !tbaa !9, !alias.scope !80, !noalias !81
  %index.next2056 = add nuw i64 %index2039, 2
  %868 = icmp eq i64 %index.next2056, %n.vec2035
  br i1 %868, label %middle.block2030, label %vector.body2038, !llvm.loop !82

middle.block2030:                                 ; preds = %vector.body2038
  %cmp.n2057 = icmp eq i64 %846, %n.vec2035
  br i1 %cmp.n2057, label %.loopexit, label %scalar.ph2031.preheader

scalar.ph2031.preheader:                          ; preds = %middle.block2030, %vector.memcheck1948, %.lr.ph1542
  %.413891540.ph = phi i64 [ %837, %vector.memcheck1948 ], [ %837, %.lr.ph1542 ], [ %ind.end2036, %middle.block2030 ]
  br label %scalar.ph2031

scalar.ph2031:                                    ; preds = %scalar.ph2031.preheader, %scalar.ph2031
  %.413891540 = phi i64 [ %890, %scalar.ph2031 ], [ %.413891540.ph, %scalar.ph2031.preheader ]
  %869 = load double, ptr %725, align 8, !tbaa !9
  %870 = getelementptr double, ptr %47, i64 %.413891540
  %871 = getelementptr double, ptr %870, i64 %839
  %872 = load double, ptr %871, align 8, !tbaa !9
  %873 = load double, ptr %840, align 8, !tbaa !9
  %874 = getelementptr double, ptr %870, i64 %842
  %875 = load double, ptr %874, align 8, !tbaa !9
  %876 = call double @llvm.fmuladd.f64(double %873, double %875, double %872)
  %877 = load double, ptr %843, align 8, !tbaa !9
  %878 = getelementptr double, ptr %870, i64 %844
  %879 = load double, ptr %878, align 8, !tbaa !9
  %880 = call double @llvm.fmuladd.f64(double %877, double %879, double %876)
  %881 = fmul double %869, %880
  %882 = fsub double %872, %881
  store double %882, ptr %871, align 8, !tbaa !9
  %883 = load double, ptr %840, align 8, !tbaa !9
  %884 = load double, ptr %874, align 8, !tbaa !9
  %885 = fneg double %881
  %886 = call double @llvm.fmuladd.f64(double %885, double %883, double %884)
  store double %886, ptr %874, align 8, !tbaa !9
  %887 = load double, ptr %843, align 8, !tbaa !9
  %888 = load double, ptr %878, align 8, !tbaa !9
  %889 = call double @llvm.fmuladd.f64(double %885, double %887, double %888)
  store double %889, ptr %878, align 8, !tbaa !9
  %890 = add i64 %.413891540, 1
  %exitcond1669.not = icmp eq i64 %.413891540, %836
  br i1 %exitcond1669.not, label %.loopexit, label %scalar.ph2031, !llvm.loop !83

.loopexit:                                        ; preds = %scalar.ph2031, %scalar.ph1921, %middle.block2030, %middle.block1920, %835, %784, %720, %833
  %891 = add i64 %.213931548, 1
  %indvars.iv.next = add i64 %indvars.iv, 3
  %exitcond1670.not = icmp eq i64 %.213931548, %277
  %indvar.next1950 = add i64 %indvar1949, 1
  br i1 %exitcond1670.not, label %._crit_edge1551, label %720, !llvm.loop !84

._crit_edge1551:                                  ; preds = %.loopexit, %635
  br i1 %286, label %892, label %._crit_edge1551..loopexit1507_crit_edge

._crit_edge1551..loopexit1507_crit_edge:          ; preds = %._crit_edge1551
  %.pre1680 = load i64, ptr %5, align 8, !tbaa !5
  br label %.loopexit1507

892:                                              ; preds = %._crit_edge1551
  %893 = mul nsw i64 %278, %48
  %894 = getelementptr double, ptr %50, i64 %893
  %895 = getelementptr i8, ptr %894, i64 8
  %896 = load double, ptr %895, align 8, !tbaa !9
  %897 = fcmp une double %896, 0.000000e+00
  %.pre1681 = load i64, ptr %5, align 8, !tbaa !5
  br i1 %897, label %898, label %.loopexit1507

898:                                              ; preds = %892
  store i64 %.pre1681, ptr %27, align 8, !tbaa !5
  %899 = add nsw i64 %399, 3
  %900 = call i64 @llvm.smin.i64(i64 %.pre1681, i64 %899)
  store i64 %900, ptr %26, align 8, !tbaa !5
  %.not14641552 = icmp sgt i64 %.01372, %900
  br i1 %.not14641552, label %._crit_edge1556, label %.lr.ph1555

.lr.ph1555:                                       ; preds = %898
  %901 = add nsw i64 %399, 1
  %902 = mul nsw i64 %901, %42
  %903 = getelementptr i8, ptr %894, i64 16
  %904 = add nsw i64 %399, 2
  %905 = mul nsw i64 %904, %42
  %906 = add i64 %indvars.iv1673, %398
  %smin1675 = call i64 @llvm.smin.i64(i64 %.pre1681, i64 %906)
  %907 = add i64 %smin1675, 1
  %908 = sub i64 %907, %.01372
  %min.iters.check1809 = icmp ult i64 %908, 8
  br i1 %min.iters.check1809, label %scalar.ph1808.preheader, label %vector.memcheck1779

vector.memcheck1779:                              ; preds = %.lr.ph1555
  %909 = mul i64 %277, 24
  %910 = add i64 %261, %909
  %911 = mul i64 %42, %910
  %912 = shl i64 %.01372, 3
  %913 = getelementptr i8, ptr %scevgep1780, i64 %911
  %scevgep1781 = getelementptr i8, ptr %913, i64 %912
  %914 = shl i64 %smin1675, 3
  %915 = getelementptr i8, ptr %9, i64 %911
  %scevgep1782 = getelementptr i8, ptr %915, i64 %914
  %916 = add i64 %262, %909
  %917 = mul i64 %42, %916
  %918 = getelementptr i8, ptr %scevgep1783, i64 %917
  %scevgep1784 = getelementptr i8, ptr %918, i64 %912
  %919 = getelementptr i8, ptr %9, i64 %917
  %scevgep1785 = getelementptr i8, ptr %919, i64 %914
  %920 = mul i64 %136, %277
  %scevgep1787 = getelementptr i8, ptr %scevgep1786, i64 %920
  %bound01788 = icmp ult ptr %scevgep1781, %scevgep1785
  %bound11789 = icmp ult ptr %scevgep1784, %scevgep1782
  %found.conflict1790 = and i1 %bound01788, %bound11789
  %bound01791 = icmp ult ptr %scevgep1781, %903
  %bound11792 = icmp ult ptr %895, %scevgep1782
  %found.conflict1793 = and i1 %bound01791, %bound11792
  %conflict.rdx1794 = or i1 %found.conflict1790, %found.conflict1793
  %bound01795 = icmp ult ptr %scevgep1781, %scevgep1787
  %bound11796 = icmp ult ptr %903, %scevgep1782
  %found.conflict1797 = and i1 %bound01795, %bound11796
  %conflict.rdx1798 = or i1 %conflict.rdx1794, %found.conflict1797
  %bound01799 = icmp ult ptr %scevgep1784, %903
  %bound11800 = icmp ult ptr %895, %scevgep1785
  %found.conflict1801 = and i1 %bound01799, %bound11800
  %conflict.rdx1802 = or i1 %conflict.rdx1798, %found.conflict1801
  %bound01803 = icmp ult ptr %scevgep1784, %scevgep1787
  %bound11804 = icmp ult ptr %903, %scevgep1785
  %found.conflict1805 = and i1 %bound01803, %bound11804
  %conflict.rdx1806 = or i1 %conflict.rdx1802, %found.conflict1805
  br i1 %conflict.rdx1806, label %scalar.ph1808.preheader, label %vector.ph1810

vector.ph1810:                                    ; preds = %vector.memcheck1779
  %n.vec1812 = and i64 %908, -2
  %ind.end1813 = add i64 %.01372, %n.vec1812
  %921 = load double, ptr %895, align 8, !tbaa !9, !alias.scope !85
  %broadcast.splatinsert1822 = insertelement <2 x double> poison, double %921, i64 0
  %broadcast.splat1823 = shufflevector <2 x double> %broadcast.splatinsert1822, <2 x double> poison, <2 x i32> zeroinitializer
  %922 = getelementptr double, ptr %44, i64 %.01372
  %923 = load double, ptr %903, align 8, !tbaa !9, !alias.scope !88
  %broadcast.splatinsert1820 = insertelement <2 x double> poison, double %923, i64 0
  %broadcast.splat1821 = shufflevector <2 x double> %broadcast.splatinsert1820, <2 x double> poison, <2 x i32> zeroinitializer
  %924 = load double, ptr %903, align 8, !tbaa !9, !alias.scope !88
  %broadcast.splatinsert1825 = insertelement <2 x double> poison, double %924, i64 0
  %broadcast.splat1826 = shufflevector <2 x double> %broadcast.splatinsert1825, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body1815

vector.body1815:                                  ; preds = %vector.body1815, %vector.ph1810
  %index1816 = phi i64 [ 0, %vector.ph1810 ], [ %index.next1827, %vector.body1815 ]
  %925 = getelementptr double, ptr %922, i64 %index1816
  %926 = getelementptr double, ptr %925, i64 %902
  %wide.load1818 = load <2 x double>, ptr %926, align 8, !tbaa !9, !alias.scope !90, !noalias !92
  %927 = getelementptr double, ptr %925, i64 %905
  %wide.load1819 = load <2 x double>, ptr %927, align 8, !tbaa !9, !alias.scope !94, !noalias !95
  %928 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat1821, <2 x double> %wide.load1819, <2 x double> %wide.load1818)
  %929 = fmul <2 x double> %broadcast.splat1823, %928
  %930 = fsub <2 x double> %wide.load1818, %929
  store <2 x double> %930, ptr %926, align 8, !tbaa !9, !alias.scope !90, !noalias !92
  %wide.load1824 = load <2 x double>, ptr %927, align 8, !tbaa !9, !alias.scope !94, !noalias !95
  %931 = fneg <2 x double> %929
  %932 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %931, <2 x double> %broadcast.splat1826, <2 x double> %wide.load1824)
  store <2 x double> %932, ptr %927, align 8, !tbaa !9, !alias.scope !94, !noalias !95
  %index.next1827 = add nuw i64 %index1816, 2
  %933 = icmp eq i64 %index.next1827, %n.vec1812
  br i1 %933, label %middle.block1807, label %vector.body1815, !llvm.loop !96

middle.block1807:                                 ; preds = %vector.body1815
  %cmp.n1828 = icmp eq i64 %908, %n.vec1812
  br i1 %cmp.n1828, label %._crit_edge1556, label %scalar.ph1808.preheader

scalar.ph1808.preheader:                          ; preds = %middle.block1807, %vector.memcheck1779, %.lr.ph1555
  %.513901553.ph = phi i64 [ %.01372, %vector.memcheck1779 ], [ %.01372, %.lr.ph1555 ], [ %ind.end1813, %middle.block1807 ]
  br label %scalar.ph1808

scalar.ph1808:                                    ; preds = %scalar.ph1808.preheader, %scalar.ph1808
  %.513901553 = phi i64 [ %948, %scalar.ph1808 ], [ %.513901553.ph, %scalar.ph1808.preheader ]
  %934 = load double, ptr %895, align 8, !tbaa !9
  %935 = getelementptr double, ptr %44, i64 %.513901553
  %936 = getelementptr double, ptr %935, i64 %902
  %937 = load double, ptr %936, align 8, !tbaa !9
  %938 = load double, ptr %903, align 8, !tbaa !9
  %939 = getelementptr double, ptr %935, i64 %905
  %940 = load double, ptr %939, align 8, !tbaa !9
  %941 = call double @llvm.fmuladd.f64(double %938, double %940, double %937)
  %942 = fmul double %934, %941
  %943 = fsub double %937, %942
  store double %943, ptr %936, align 8, !tbaa !9
  %944 = load double, ptr %903, align 8, !tbaa !9
  %945 = load double, ptr %939, align 8, !tbaa !9
  %946 = fneg double %942
  %947 = call double @llvm.fmuladd.f64(double %946, double %944, double %945)
  store double %947, ptr %939, align 8, !tbaa !9
  %948 = add i64 %.513901553, 1
  %exitcond1676.not = icmp eq i64 %.513901553, %smin1675
  br i1 %exitcond1676.not, label %._crit_edge1556, label %scalar.ph1808, !llvm.loop !97

._crit_edge1556:                                  ; preds = %scalar.ph1808, %middle.block1807, %898
  br i1 %switch, label %949, label %1001

949:                                              ; preds = %._crit_edge1556
  %950 = sub nsw i64 %444, %.013701658
  store i64 %950, ptr %27, align 8, !tbaa !5
  %951 = load i64, ptr %32, align 8, !tbaa !5
  %952 = call i64 @llvm.smax.i64(i64 %950, i64 1)
  %.not14671561 = icmp sgt i64 %952, %951
  br i1 %.not14671561, label %.loopexit1507, label %.lr.ph1564

.lr.ph1564:                                       ; preds = %949
  %953 = sub nsw i64 %399, %.013701658
  %954 = add nsw i64 %953, 1
  %955 = mul nsw i64 %954, %51
  %956 = getelementptr i8, ptr %894, i64 16
  %957 = add nsw i64 %953, 2
  %958 = mul nsw i64 %957, %51
  %959 = add i64 %951, 1
  %960 = sub i64 %959, %952
  %min.iters.check = icmp ult i64 %960, 8
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.memcheck

vector.memcheck:                                  ; preds = %.lr.ph1564
  %961 = mul i64 %277, 24
  %962 = add i64 %266, %961
  %963 = mul i64 %51, %962
  %964 = shl i64 %952, 3
  %965 = getelementptr i8, ptr %scevgep, i64 %963
  %scevgep1699 = getelementptr i8, ptr %965, i64 %964
  %966 = shl i64 %951, 3
  %967 = getelementptr i8, ptr %17, i64 %963
  %scevgep1700 = getelementptr i8, ptr %967, i64 %966
  %968 = add i64 %267, %961
  %969 = mul i64 %51, %968
  %970 = getelementptr i8, ptr %scevgep1701, i64 %969
  %scevgep1702 = getelementptr i8, ptr %970, i64 %964
  %971 = getelementptr i8, ptr %17, i64 %969
  %scevgep1703 = getelementptr i8, ptr %971, i64 %966
  %972 = mul i64 %120, %277
  %scevgep1705 = getelementptr i8, ptr %scevgep1704, i64 %972
  %bound0 = icmp ult ptr %scevgep1699, %scevgep1703
  %bound1 = icmp ult ptr %scevgep1702, %scevgep1700
  %found.conflict = and i1 %bound0, %bound1
  %bound01706 = icmp ult ptr %scevgep1699, %956
  %bound11707 = icmp ult ptr %895, %scevgep1700
  %found.conflict1708 = and i1 %bound01706, %bound11707
  %conflict.rdx = or i1 %found.conflict, %found.conflict1708
  %bound01709 = icmp ult ptr %scevgep1699, %scevgep1705
  %bound11710 = icmp ult ptr %956, %scevgep1700
  %found.conflict1711 = and i1 %bound01709, %bound11710
  %conflict.rdx1712 = or i1 %conflict.rdx, %found.conflict1711
  %bound01713 = icmp ult ptr %scevgep1702, %956
  %bound11714 = icmp ult ptr %895, %scevgep1703
  %found.conflict1715 = and i1 %bound01713, %bound11714
  %conflict.rdx1716 = or i1 %conflict.rdx1712, %found.conflict1715
  %bound01717 = icmp ult ptr %scevgep1702, %scevgep1705
  %bound11718 = icmp ult ptr %956, %scevgep1703
  %found.conflict1719 = and i1 %bound01717, %bound11718
  %conflict.rdx1720 = or i1 %conflict.rdx1716, %found.conflict1719
  br i1 %conflict.rdx1720, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %vector.memcheck
  %n.vec = and i64 %960, -2
  %ind.end = add i64 %952, %n.vec
  %973 = load double, ptr %895, align 8, !tbaa !9, !alias.scope !98
  %broadcast.splatinsert1722 = insertelement <2 x double> poison, double %973, i64 0
  %broadcast.splat1723 = shufflevector <2 x double> %broadcast.splatinsert1722, <2 x double> poison, <2 x i32> zeroinitializer
  %974 = getelementptr double, ptr %53, i64 %952
  %975 = load double, ptr %956, align 8, !tbaa !9, !alias.scope !101
  %broadcast.splatinsert = insertelement <2 x double> poison, double %975, i64 0
  %broadcast.splat = shufflevector <2 x double> %broadcast.splatinsert, <2 x double> poison, <2 x i32> zeroinitializer
  %976 = load double, ptr %956, align 8, !tbaa !9, !alias.scope !101
  %broadcast.splatinsert1725 = insertelement <2 x double> poison, double %976, i64 0
  %broadcast.splat1726 = shufflevector <2 x double> %broadcast.splatinsert1725, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %977 = getelementptr double, ptr %974, i64 %index
  %978 = getelementptr double, ptr %977, i64 %955
  %wide.load = load <2 x double>, ptr %978, align 8, !tbaa !9, !alias.scope !103, !noalias !105
  %979 = getelementptr double, ptr %977, i64 %958
  %wide.load1721 = load <2 x double>, ptr %979, align 8, !tbaa !9, !alias.scope !107, !noalias !108
  %980 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat, <2 x double> %wide.load1721, <2 x double> %wide.load)
  %981 = fmul <2 x double> %broadcast.splat1723, %980
  %982 = fsub <2 x double> %wide.load, %981
  store <2 x double> %982, ptr %978, align 8, !tbaa !9, !alias.scope !103, !noalias !105
  %wide.load1724 = load <2 x double>, ptr %979, align 8, !tbaa !9, !alias.scope !107, !noalias !108
  %983 = fneg <2 x double> %981
  %984 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %983, <2 x double> %broadcast.splat1726, <2 x double> %wide.load1724)
  store <2 x double> %984, ptr %979, align 8, !tbaa !9, !alias.scope !107, !noalias !108
  %index.next = add nuw i64 %index, 2
  %985 = icmp eq i64 %index.next, %n.vec
  br i1 %985, label %middle.block, label %vector.body, !llvm.loop !109

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %960, %n.vec
  br i1 %cmp.n, label %.loopexit1507, label %scalar.ph.preheader

scalar.ph.preheader:                              ; preds = %middle.block, %vector.memcheck, %.lr.ph1564
  %.61562.ph = phi i64 [ %952, %vector.memcheck ], [ %952, %.lr.ph1564 ], [ %ind.end, %middle.block ]
  br label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph.preheader, %scalar.ph
  %.61562 = phi i64 [ %1000, %scalar.ph ], [ %.61562.ph, %scalar.ph.preheader ]
  %986 = load double, ptr %895, align 8, !tbaa !9
  %987 = getelementptr double, ptr %53, i64 %.61562
  %988 = getelementptr double, ptr %987, i64 %955
  %989 = load double, ptr %988, align 8, !tbaa !9
  %990 = load double, ptr %956, align 8, !tbaa !9
  %991 = getelementptr double, ptr %987, i64 %958
  %992 = load double, ptr %991, align 8, !tbaa !9
  %993 = call double @llvm.fmuladd.f64(double %990, double %992, double %989)
  %994 = fmul double %986, %993
  %995 = fsub double %989, %994
  store double %995, ptr %988, align 8, !tbaa !9
  %996 = load double, ptr %956, align 8, !tbaa !9
  %997 = load double, ptr %991, align 8, !tbaa !9
  %998 = fneg double %994
  %999 = call double @llvm.fmuladd.f64(double %998, double %996, double %997)
  store double %999, ptr %991, align 8, !tbaa !9
  %1000 = add nuw nsw i64 %.61562, 1
  %.not1467.not = icmp slt i64 %.61562, %951
  br i1 %.not1467.not, label %scalar.ph, label %.loopexit1507, !llvm.loop !110

1001:                                             ; preds = %._crit_edge1556
  %1002 = load i64, ptr %1, align 8, !tbaa !5
  %.not1465 = icmp eq i64 %1002, 0
  br i1 %.not1465, label %.loopexit1507, label %1003

1003:                                             ; preds = %1001
  %1004 = load i64, ptr %12, align 8, !tbaa !5
  %1005 = load i64, ptr %11, align 8, !tbaa !5
  %.not14661557 = icmp sgt i64 %1005, %1004
  br i1 %.not14661557, label %.loopexit1507, label %.lr.ph1560

.lr.ph1560:                                       ; preds = %1003
  %1006 = add nsw i64 %399, 1
  %1007 = mul nsw i64 %1006, %45
  %1008 = getelementptr i8, ptr %894, i64 16
  %1009 = add nsw i64 %399, 2
  %1010 = mul nsw i64 %1009, %45
  %1011 = add i64 %1004, 1
  %1012 = sub i64 %1011, %1005
  %min.iters.check1759 = icmp ult i64 %1012, 8
  br i1 %min.iters.check1759, label %scalar.ph1758.preheader, label %vector.memcheck1727

vector.memcheck1727:                              ; preds = %.lr.ph1560
  %1013 = mul i64 %277, 24
  %1014 = add i64 %264, %1013
  %1015 = mul i64 %45, %1014
  %1016 = shl i64 %1005, 3
  %1017 = getelementptr i8, ptr %scevgep1728, i64 %1015
  %scevgep1731 = getelementptr i8, ptr %1017, i64 %1016
  %1018 = shl i64 %1004, 3
  %1019 = getelementptr i8, ptr %13, i64 %1015
  %scevgep1732 = getelementptr i8, ptr %1019, i64 %1018
  %1020 = add i64 %265, %1013
  %1021 = mul i64 %45, %1020
  %1022 = getelementptr i8, ptr %scevgep1733, i64 %1021
  %scevgep1734 = getelementptr i8, ptr %1022, i64 %1016
  %1023 = getelementptr i8, ptr %13, i64 %1021
  %scevgep1735 = getelementptr i8, ptr %1023, i64 %1018
  %1024 = mul i64 %128, %277
  %scevgep1737 = getelementptr i8, ptr %scevgep1736, i64 %1024
  %bound01738 = icmp ult ptr %scevgep1731, %scevgep1735
  %bound11739 = icmp ult ptr %scevgep1734, %scevgep1732
  %found.conflict1740 = and i1 %bound01738, %bound11739
  %bound01741 = icmp ult ptr %scevgep1731, %1008
  %bound11742 = icmp ult ptr %895, %scevgep1732
  %found.conflict1743 = and i1 %bound01741, %bound11742
  %conflict.rdx1744 = or i1 %found.conflict1740, %found.conflict1743
  %bound01745 = icmp ult ptr %scevgep1731, %scevgep1737
  %bound11746 = icmp ult ptr %1008, %scevgep1732
  %found.conflict1747 = and i1 %bound01745, %bound11746
  %conflict.rdx1748 = or i1 %conflict.rdx1744, %found.conflict1747
  %bound01749 = icmp ult ptr %scevgep1734, %1008
  %bound11750 = icmp ult ptr %895, %scevgep1735
  %found.conflict1751 = and i1 %bound01749, %bound11750
  %conflict.rdx1752 = or i1 %conflict.rdx1748, %found.conflict1751
  %bound01753 = icmp ult ptr %scevgep1734, %scevgep1737
  %bound11754 = icmp ult ptr %1008, %scevgep1735
  %found.conflict1755 = and i1 %bound01753, %bound11754
  %conflict.rdx1756 = or i1 %conflict.rdx1752, %found.conflict1755
  br i1 %conflict.rdx1756, label %scalar.ph1758.preheader, label %vector.ph1760

vector.ph1760:                                    ; preds = %vector.memcheck1727
  %n.vec1762 = and i64 %1012, -2
  %ind.end1763 = add i64 %1005, %n.vec1762
  %1025 = load double, ptr %895, align 8, !tbaa !9, !alias.scope !111
  %broadcast.splatinsert1772 = insertelement <2 x double> poison, double %1025, i64 0
  %broadcast.splat1773 = shufflevector <2 x double> %broadcast.splatinsert1772, <2 x double> poison, <2 x i32> zeroinitializer
  %1026 = getelementptr double, ptr %47, i64 %1005
  %1027 = load double, ptr %1008, align 8, !tbaa !9, !alias.scope !114
  %broadcast.splatinsert1770 = insertelement <2 x double> poison, double %1027, i64 0
  %broadcast.splat1771 = shufflevector <2 x double> %broadcast.splatinsert1770, <2 x double> poison, <2 x i32> zeroinitializer
  %1028 = load double, ptr %1008, align 8, !tbaa !9, !alias.scope !114
  %broadcast.splatinsert1775 = insertelement <2 x double> poison, double %1028, i64 0
  %broadcast.splat1776 = shufflevector <2 x double> %broadcast.splatinsert1775, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body1765

vector.body1765:                                  ; preds = %vector.body1765, %vector.ph1760
  %index1766 = phi i64 [ 0, %vector.ph1760 ], [ %index.next1777, %vector.body1765 ]
  %1029 = getelementptr double, ptr %1026, i64 %index1766
  %1030 = getelementptr double, ptr %1029, i64 %1007
  %wide.load1768 = load <2 x double>, ptr %1030, align 8, !tbaa !9, !alias.scope !116, !noalias !118
  %1031 = getelementptr double, ptr %1029, i64 %1010
  %wide.load1769 = load <2 x double>, ptr %1031, align 8, !tbaa !9, !alias.scope !120, !noalias !121
  %1032 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat1771, <2 x double> %wide.load1769, <2 x double> %wide.load1768)
  %1033 = fmul <2 x double> %broadcast.splat1773, %1032
  %1034 = fsub <2 x double> %wide.load1768, %1033
  store <2 x double> %1034, ptr %1030, align 8, !tbaa !9, !alias.scope !116, !noalias !118
  %wide.load1774 = load <2 x double>, ptr %1031, align 8, !tbaa !9, !alias.scope !120, !noalias !121
  %1035 = fneg <2 x double> %1033
  %1036 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %1035, <2 x double> %broadcast.splat1776, <2 x double> %wide.load1774)
  store <2 x double> %1036, ptr %1031, align 8, !tbaa !9, !alias.scope !120, !noalias !121
  %index.next1777 = add nuw i64 %index1766, 2
  %1037 = icmp eq i64 %index.next1777, %n.vec1762
  br i1 %1037, label %middle.block1757, label %vector.body1765, !llvm.loop !122

middle.block1757:                                 ; preds = %vector.body1765
  %cmp.n1778 = icmp eq i64 %1012, %n.vec1762
  br i1 %cmp.n1778, label %.loopexit1507, label %scalar.ph1758.preheader

scalar.ph1758.preheader:                          ; preds = %middle.block1757, %vector.memcheck1727, %.lr.ph1560
  %.71558.ph = phi i64 [ %1005, %vector.memcheck1727 ], [ %1005, %.lr.ph1560 ], [ %ind.end1763, %middle.block1757 ]
  br label %scalar.ph1758

scalar.ph1758:                                    ; preds = %scalar.ph1758.preheader, %scalar.ph1758
  %.71558 = phi i64 [ %1052, %scalar.ph1758 ], [ %.71558.ph, %scalar.ph1758.preheader ]
  %1038 = load double, ptr %895, align 8, !tbaa !9
  %1039 = getelementptr double, ptr %47, i64 %.71558
  %1040 = getelementptr double, ptr %1039, i64 %1007
  %1041 = load double, ptr %1040, align 8, !tbaa !9
  %1042 = load double, ptr %1008, align 8, !tbaa !9
  %1043 = getelementptr double, ptr %1039, i64 %1010
  %1044 = load double, ptr %1043, align 8, !tbaa !9
  %1045 = call double @llvm.fmuladd.f64(double %1042, double %1044, double %1041)
  %1046 = fmul double %1038, %1045
  %1047 = fsub double %1041, %1046
  store double %1047, ptr %1040, align 8, !tbaa !9
  %1048 = load double, ptr %1008, align 8, !tbaa !9
  %1049 = load double, ptr %1043, align 8, !tbaa !9
  %1050 = fneg double %1046
  %1051 = call double @llvm.fmuladd.f64(double %1050, double %1048, double %1049)
  store double %1051, ptr %1043, align 8, !tbaa !9
  %1052 = add i64 %.71558, 1
  %exitcond1677.not = icmp eq i64 %.71558, %1004
  br i1 %exitcond1677.not, label %.loopexit1507, label %scalar.ph1758, !llvm.loop !123

.loopexit1507:                                    ; preds = %scalar.ph1758, %scalar.ph, %middle.block1757, %middle.block, %._crit_edge1551..loopexit1507_crit_edge, %1003, %949, %1001, %892
  %1053 = phi i64 [ %.pre1681, %1001 ], [ %.pre1681, %892 ], [ %.pre1680, %._crit_edge1551..loopexit1507_crit_edge ], [ %.pre1681, %949 ], [ %.pre1681, %1003 ], [ %.pre1681, %middle.block ], [ %.pre1681, %middle.block1757 ], [ %.pre1681, %scalar.ph ], [ %.pre1681, %scalar.ph1758 ]
  %.01378 = phi i64 [ %278, %1001 ], [ %278, %892 ], [ %277, %._crit_edge1551..loopexit1507_crit_edge ], [ %278, %949 ], [ %278, %1003 ], [ %278, %middle.block ], [ %278, %middle.block1757 ], [ %278, %scalar.ph ], [ %278, %scalar.ph1758 ]
  %1054 = mul i64 %274, 3
  %1055 = add i64 %.013691581, -3
  %1056 = add i64 %1055, %1054
  %1057 = icmp slt i64 %1056, %444
  %1058 = zext i1 %1057 to i64
  %spec.select1486 = add nsw i64 %274, %1058
  %1059 = add nsw i64 %1053, -2
  %1060 = icmp eq i64 %.013691581, %1059
  %1061 = zext i1 %1060 to i64
  %.11379 = add nsw i64 %.01378, %1061
  %.not14681565 = icmp sgt i64 %spec.select1486, %.11379
  br i1 %.not14681565, label %1194, label %.lr.ph1568

.lr.ph1568:                                       ; preds = %.loopexit1507
  %1062 = add nsw i64 %1053, -1
  %1063 = add nsw i64 %444, 2
  %1064 = add nsw i64 %444, 3
  %1065 = add nsw i64 %1053, -3
  %1066 = add nsw i64 %1053, -4
  %1067 = add nsw i64 %.01378, 1
  %1068 = add nsw i64 %1067, %1061
  br label %1069

1069:                                             ; preds = %.lr.ph1568, %1192
  %.313941566 = phi i64 [ %spec.select1486, %.lr.ph1568 ], [ %1193, %1192 ]
  %1070 = mul i64 %.313941566, 3
  %1071 = add i64 %1055, %1070
  %1072 = call i64 @llvm.smin.i64(i64 %1062, i64 %1071)
  %1073 = add nsw i64 %1072, 1
  %1074 = mul nsw i64 %1072, %42
  %1075 = getelementptr double, ptr %44, i64 %1073
  %1076 = getelementptr double, ptr %1075, i64 %1074
  %1077 = load double, ptr %1076, align 8, !tbaa !9
  %1078 = fcmp une double %1077, 0.000000e+00
  br i1 %1078, label %1079, label %1192

1079:                                             ; preds = %1069
  %1080 = getelementptr double, ptr %44, i64 %1072
  %1081 = getelementptr double, ptr %1080, i64 %1074
  %1082 = load double, ptr %1081, align 8, !tbaa !9
  %1083 = fcmp oge double %1082, 0.000000e+00
  %1084 = fneg double %1082
  %1085 = select i1 %1083, double %1082, double %1084
  %1086 = mul nsw i64 %1073, %42
  %1087 = getelementptr double, ptr %1075, i64 %1086
  %1088 = load double, ptr %1087, align 8, !tbaa !9
  %1089 = fcmp oge double %1088, 0.000000e+00
  %1090 = fneg double %1088
  %1091 = select i1 %1089, double %1088, double %1090
  %1092 = fadd double %1085, %1091
  %1093 = fcmp oeq double %1092, 0.000000e+00
  br i1 %1093, label %1094, label %1151

1094:                                             ; preds = %1079
  %.not1472.not = icmp sgt i64 %1072, %444
  br i1 %.not1472.not, label %1095, label %1104

1095:                                             ; preds = %1094
  %1096 = add nsw i64 %1072, -1
  %1097 = mul nsw i64 %1096, %42
  %1098 = getelementptr double, ptr %1080, i64 %1097
  %1099 = load double, ptr %1098, align 8, !tbaa !9
  %1100 = fcmp oge double %1099, 0.000000e+00
  %1101 = fneg double %1099
  %1102 = select i1 %1100, double %1099, double %1101
  %1103 = fadd double %1092, %1102
  br label %1104

1104:                                             ; preds = %1095, %1094
  %.01380 = phi double [ %1103, %1095 ], [ %1092, %1094 ]
  %.not1473 = icmp slt i64 %1072, %1063
  br i1 %.not1473, label %1114, label %1105

1105:                                             ; preds = %1104
  %1106 = add nsw i64 %1072, -2
  %1107 = mul nsw i64 %1106, %42
  %1108 = getelementptr double, ptr %1080, i64 %1107
  %1109 = load double, ptr %1108, align 8, !tbaa !9
  %1110 = fcmp oge double %1109, 0.000000e+00
  %1111 = fneg double %1109
  %1112 = select i1 %1110, double %1109, double %1111
  %1113 = fadd double %.01380, %1112
  br label %1114

1114:                                             ; preds = %1105, %1104
  %.11381 = phi double [ %1113, %1105 ], [ %.01380, %1104 ]
  %.not1474 = icmp slt i64 %1072, %1064
  br i1 %.not1474, label %1124, label %1115

1115:                                             ; preds = %1114
  %1116 = add nsw i64 %1072, -3
  %1117 = mul nsw i64 %1116, %42
  %1118 = getelementptr double, ptr %1080, i64 %1117
  %1119 = load double, ptr %1118, align 8, !tbaa !9
  %1120 = fcmp oge double %1119, 0.000000e+00
  %1121 = fneg double %1119
  %1122 = select i1 %1120, double %1119, double %1121
  %1123 = fadd double %.11381, %1122
  br label %1124

1124:                                             ; preds = %1115, %1114
  %.21382 = phi double [ %1123, %1115 ], [ %.11381, %1114 ]
  %.not1475 = icmp sgt i64 %1071, %1059
  br i1 %.not1475, label %1133, label %1125

1125:                                             ; preds = %1124
  %1126 = getelementptr i8, ptr %1080, i64 16
  %1127 = getelementptr double, ptr %1126, i64 %1086
  %1128 = load double, ptr %1127, align 8, !tbaa !9
  %1129 = fcmp oge double %1128, 0.000000e+00
  %1130 = fneg double %1128
  %1131 = select i1 %1129, double %1128, double %1130
  %1132 = fadd double %.21382, %1131
  br label %1133

1133:                                             ; preds = %1125, %1124
  %.31383 = phi double [ %1132, %1125 ], [ %.21382, %1124 ]
  %.not1476 = icmp sgt i64 %1071, %1065
  br i1 %.not1476, label %1142, label %1134

1134:                                             ; preds = %1133
  %1135 = getelementptr i8, ptr %1080, i64 24
  %1136 = getelementptr double, ptr %1135, i64 %1086
  %1137 = load double, ptr %1136, align 8, !tbaa !9
  %1138 = fcmp oge double %1137, 0.000000e+00
  %1139 = fneg double %1137
  %1140 = select i1 %1138, double %1137, double %1139
  %1141 = fadd double %.31383, %1140
  br label %1142

1142:                                             ; preds = %1134, %1133
  %.4 = phi double [ %1141, %1134 ], [ %.31383, %1133 ]
  %.not1477 = icmp sgt i64 %1071, %1066
  br i1 %.not1477, label %1151, label %1143

1143:                                             ; preds = %1142
  %1144 = getelementptr i8, ptr %1080, i64 32
  %1145 = getelementptr double, ptr %1144, i64 %1086
  %1146 = load double, ptr %1145, align 8, !tbaa !9
  %1147 = fcmp oge double %1146, 0.000000e+00
  %1148 = fneg double %1146
  %1149 = select i1 %1147, double %1146, double %1148
  %1150 = fadd double %.4, %1149
  br label %1151

1151:                                             ; preds = %1142, %1143, %1079
  %.5 = phi double [ %1150, %1143 ], [ %.4, %1142 ], [ %1092, %1079 ]
  %1152 = fmul double %85, %.5
  %1153 = fcmp oge double %1077, 0.000000e+00
  %1154 = fneg double %1077
  %1155 = select i1 %1153, double %1077, double %1154
  %1156 = fcmp oge double %90, %1152
  %1157 = select i1 %1156, double %90, double %1152
  %1158 = fcmp ugt double %1155, %1157
  br i1 %1158, label %1192, label %1159

1159:                                             ; preds = %1151
  %1160 = getelementptr double, ptr %1080, i64 %1086
  %1161 = load double, ptr %1160, align 8, !tbaa !9
  %1162 = fsub double %1082, %1088
  %1163 = insertelement <2 x double> poison, double %1162, i64 0
  %1164 = insertelement <2 x double> %1163, double %1161, i64 1
  %1165 = fcmp oge <2 x double> %1164, zeroinitializer
  %1166 = fneg <2 x double> %1164
  %1167 = select <2 x i1> %1165, <2 x double> %1164, <2 x double> %1166
  %1168 = insertelement <2 x double> poison, double %1091, i64 0
  %1169 = insertelement <2 x double> %1168, double %1155, i64 1
  %1170 = fcmp oge <2 x double> %1169, %1167
  %1171 = select <2 x i1> %1170, <2 x double> %1169, <2 x double> %1167
  %1172 = extractelement <2 x double> %1167, i64 0
  %1173 = fcmp ole double %1091, %1172
  %1174 = select i1 %1173, double %1091, double %1172
  %1175 = extractelement <2 x double> %1171, i64 0
  %1176 = extractelement <2 x double> %1171, i64 1
  %1177 = fadd double %1175, %1176
  %1178 = fdiv double %1175, %1177
  %1179 = fmul double %1174, %1178
  %1180 = fcmp oeq double %1179, 0.000000e+00
  br i1 %1180, label %1191, label %1181

1181:                                             ; preds = %1159
  %1182 = fmul double %85, %1179
  %1183 = extractelement <2 x double> %1167, i64 1
  %1184 = fcmp ole double %1155, %1183
  %1185 = select i1 %1184, double %1155, double %1183
  %1186 = fdiv double %1176, %1177
  %1187 = fmul double %1185, %1186
  %1188 = fcmp oge double %90, %1182
  %1189 = select i1 %1188, double %90, double %1182
  %1190 = fcmp ugt double %1187, %1189
  br i1 %1190, label %1192, label %1191

1191:                                             ; preds = %1181, %1159
  store double 0.000000e+00, ptr %1076, align 8, !tbaa !9
  br label %1192

1192:                                             ; preds = %1069, %1181, %1191, %1151
  %1193 = add i64 %.313941566, 1
  %exitcond1678.not = icmp eq i64 %1193, %1068
  br i1 %exitcond1678.not, label %._crit_edge1569, label %1069, !llvm.loop !124

._crit_edge1569:                                  ; preds = %1192
  store i64 %1071, ptr %27, align 8, !tbaa !5
  br label %1194

1194:                                             ; preds = %._crit_edge1569, %.loopexit1507
  %1195 = add i64 %1053, %268
  %1196 = sdiv i64 %1195, 3
  store i64 %1196, ptr %26, align 8, !tbaa !5
  %1197 = call i64 @llvm.smin.i64(i64 %102, i64 %1196)
  %.not14701573 = icmp sgt i64 %274, %1197
  br i1 %.not14701573, label %._crit_edge1577, label %.lr.ph1576

.lr.ph1576:                                       ; preds = %1194, %.lr.ph1576
  %.413951574 = phi i64 [ %1225, %.lr.ph1576 ], [ %274, %1194 ]
  %1198 = mul i64 %.413951574, 3
  %1199 = add i64 %1055, %1198
  %1200 = mul nsw i64 %.413951574, %48
  %1201 = getelementptr double, ptr %50, i64 %1200
  %1202 = getelementptr i8, ptr %1201, i64 8
  %1203 = load double, ptr %1202, align 8, !tbaa !9
  %1204 = getelementptr i8, ptr %1201, i64 24
  %1205 = load double, ptr %1204, align 8, !tbaa !9
  %1206 = add i64 %1198, %.013691581
  %1207 = mul nsw i64 %1206, %42
  %gep1572 = getelementptr double, ptr %invariant.gep1571, i64 %1199
  %1208 = getelementptr double, ptr %gep1572, i64 %1207
  %1209 = load double, ptr %1208, align 8, !tbaa !9
  %1210 = fneg double %1203
  %1211 = fmul double %1205, %1210
  %1212 = fmul double %1211, %1209
  %1213 = add nsw i64 %1199, 1
  %1214 = mul nsw i64 %1213, %42
  %1215 = getelementptr double, ptr %gep1572, i64 %1214
  store double %1212, ptr %1215, align 8, !tbaa !9
  %1216 = getelementptr i8, ptr %1201, i64 16
  %1217 = load double, ptr %1216, align 8, !tbaa !9
  %1218 = fmul double %1212, %1217
  %1219 = add nsw i64 %1199, 2
  %1220 = mul nsw i64 %1219, %42
  %1221 = getelementptr double, ptr %gep1572, i64 %1220
  store double %1218, ptr %1221, align 8, !tbaa !9
  %1222 = load double, ptr %1204, align 8, !tbaa !9
  %1223 = load double, ptr %1208, align 8, !tbaa !9
  %1224 = call double @llvm.fmuladd.f64(double %1212, double %1222, double %1223)
  store double %1224, ptr %1208, align 8, !tbaa !9
  %1225 = add i64 %.413951574, 1
  %exitcond1679.not = icmp eq i64 %.413951574, %1197
  br i1 %exitcond1679.not, label %._crit_edge1577, label %.lr.ph1576, !llvm.loop !125

._crit_edge1577:                                  ; preds = %.lr.ph1576, %1194
  %1226 = add nsw i64 %.013691581, 1
  %.not1430.not = icmp slt i64 %.013691581, %236
  %indvars.iv.next1674 = add i64 %indvars.iv1673, 1
  %indvar.next = add i64 %indvar, 1
  br i1 %.not1430.not, label %.lr.ph1583, label %._crit_edge1584, !llvm.loop !126

._crit_edge1584:                                  ; preds = %._crit_edge1577, %232
  br i1 %switch, label %1227, label %.loopexit1510

1227:                                             ; preds = %._crit_edge1584
  %1228 = load i64, ptr %0, align 8, !tbaa !5
  %.not1431 = icmp eq i64 %1228, 0
  %.pre1683.pre = load i64, ptr %4, align 8, !tbaa !5
  %spec.select1693 = select i1 %.not1431, ptr %5, ptr %3
  %spec.select1694 = select i1 %.not1431, i64 %.pre1683.pre, i64 1
  %.11375 = load i64, ptr %spec.select1693, align 8, !tbaa !5
  br i1 %spec.select, label %1229, label %._crit_edge1684

._crit_edge1684:                                  ; preds = %1227
  %.pre1685 = load i64, ptr %5, align 8, !tbaa !5
  br label %1232

1229:                                             ; preds = %1227
  %1230 = icmp slt i64 %.013701658, %.pre1683.pre
  %.pre1686 = load i64, ptr %5, align 8, !tbaa !5
  %1231 = icmp sgt i64 %229, %.pre1686
  %or.cond = select i1 %1230, i1 true, i1 %1231
  br i1 %or.cond, label %1232, label %1306

1232:                                             ; preds = %._crit_edge1684, %1229
  %1233 = phi i64 [ %.pre1685, %._crit_edge1684 ], [ %.pre1686, %1229 ]
  %1234 = sub nsw i64 %.pre1683.pre, %.013701658
  %1235 = call i64 @llvm.smax.i64(i64 %1234, i64 1)
  %1236 = sub nsw i64 %229, %1233
  %1237 = load i64, ptr %32, align 8, !tbaa !5
  %1238 = call i64 @llvm.smax.i64(i64 %1236, i64 0)
  %1239 = add i64 %1237, 1
  %1240 = add nuw i64 %1235, %1238
  %1241 = sub i64 %1239, %1240
  store i64 %1241, ptr %30, align 8, !tbaa !5
  %1242 = load i64, ptr %22, align 8, !tbaa !5
  %.1487 = call i64 @llvm.smin.i64(i64 %229, i64 %1233)
  %1243 = add nsw i64 %.1487, 1
  %1244 = icmp slt i64 %1242, 0
  %1245 = icmp sge i64 %1243, %.11375
  %1246 = icmp slt i64 %.1487, %.11375
  %.in14431637 = select i1 %1244, i1 %1245, i1 %1246
  br i1 %.in14431637, label %.lr.ph1640, label %._crit_edge1641

.lr.ph1640:                                       ; preds = %1232
  %1247 = mul i64 %1235, %117
  %1248 = getelementptr inbounds double, ptr %53, i64 %1247
  %1249 = getelementptr double, ptr %44, i64 %.013701658
  %1250 = getelementptr double, ptr %1249, i64 %1235
  br label %1251

1251:                                             ; preds = %.lr.ph1640, %1251
  %.013761638 = phi i64 [ %1243, %.lr.ph1640 ], [ %1260, %1251 ]
  %1252 = load i64, ptr %22, align 8, !tbaa !5
  store i64 %1252, ptr %26, align 8, !tbaa !5
  %1253 = sub nsw i64 %.11375, %.013761638
  %1254 = add nsw i64 %1253, 1
  store i64 %1254, ptr %27, align 8, !tbaa !5
  %1255 = call i64 @llvm.smin.i64(i64 %1252, i64 %1254)
  store i64 %1255, ptr %36, align 8, !tbaa !5
  %1256 = mul nsw i64 %.013761638, %42
  %1257 = getelementptr double, ptr %1250, i64 %1256
  %1258 = call i32 @f2c_dgemm(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.4, ptr noundef nonnull %30, ptr noundef nonnull %36, ptr noundef nonnull %30, ptr noundef nonnull @c_b8, ptr noundef %1248, ptr noundef nonnull %18, ptr noundef %1257, ptr noundef nonnull %10, ptr noundef nonnull @c_b7, ptr noundef %23, ptr noundef %24) #5
  %1259 = call i32 @dlacpy_(ptr noundef nonnull @.str.2, ptr noundef nonnull %30, ptr noundef nonnull %36, ptr noundef %23, ptr noundef %24, ptr noundef %1257, ptr noundef nonnull %10) #5
  %1260 = add nsw i64 %.013761638, %1242
  %1261 = icmp sge i64 %1260, %.11375
  %1262 = icmp sle i64 %1260, %.11375
  %.in1443 = select i1 %1244, i1 %1261, i1 %1262
  br i1 %.in1443, label %1251, label %._crit_edge1641.loopexit, !llvm.loop !127

._crit_edge1641.loopexit:                         ; preds = %1251
  %.pre1687 = load i64, ptr %4, align 8, !tbaa !5
  br label %._crit_edge1641

._crit_edge1641:                                  ; preds = %._crit_edge1641.loopexit, %1232
  %1263 = phi i64 [ %.pre1687, %._crit_edge1641.loopexit ], [ %.pre1683.pre, %1232 ]
  %.01370.1488 = call i64 @llvm.smax.i64(i64 %1263, i64 %.013701658)
  %1264 = add nsw i64 %.01370.1488, -1
  %1265 = load i64, ptr %19, align 8, !tbaa !5
  %1266 = icmp slt i64 %1265, 0
  %1267 = icmp sge i64 %spec.select1694, %1264
  %1268 = icmp slt i64 %spec.select1694, %.01370.1488
  %.in14451642 = select i1 %1266, i1 %1267, i1 %1268
  br i1 %.in14451642, label %.lr.ph1645, label %._crit_edge1646

.lr.ph1645:                                       ; preds = %._crit_edge1641
  %1269 = add nsw i64 %1235, %.013701658
  %1270 = mul nsw i64 %1269, %42
  %invariant.gep1647 = getelementptr double, ptr %44, i64 %1270
  %1271 = mul i64 %1235, %117
  %1272 = getelementptr inbounds double, ptr %53, i64 %1271
  br label %1273

1273:                                             ; preds = %.lr.ph1645, %1273
  %.013711643 = phi i64 [ %spec.select1694, %.lr.ph1645 ], [ %1280, %1273 ]
  %1274 = load i64, ptr %19, align 8, !tbaa !5
  store i64 %1274, ptr %26, align 8, !tbaa !5
  %1275 = load i64, ptr %4, align 8, !tbaa !5
  %.01370.1489 = call i64 @llvm.smax.i64(i64 %1275, i64 %.013701658)
  %1276 = sub nsw i64 %.01370.1489, %.013711643
  store i64 %1276, ptr %27, align 8, !tbaa !5
  %1277 = call i64 @llvm.smin.i64(i64 %1274, i64 %1276)
  store i64 %1277, ptr %36, align 8, !tbaa !5
  %gep1648 = getelementptr double, ptr %invariant.gep1647, i64 %.013711643
  %1278 = call i32 @f2c_dgemm(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.4, ptr noundef nonnull %36, ptr noundef nonnull %30, ptr noundef nonnull %30, ptr noundef nonnull @c_b8, ptr noundef %gep1648, ptr noundef nonnull %10, ptr noundef %1272, ptr noundef nonnull %18, ptr noundef nonnull @c_b7, ptr noundef %20, ptr noundef nonnull %21) #5
  %1279 = call i32 @dlacpy_(ptr noundef nonnull @.str.2, ptr noundef nonnull %36, ptr noundef nonnull %30, ptr noundef %20, ptr noundef nonnull %21, ptr noundef %gep1648, ptr noundef nonnull %10) #5
  %1280 = add nsw i64 %.013711643, %1265
  %1281 = icmp sge i64 %1280, %1264
  %1282 = icmp slt i64 %1280, %.01370.1488
  %.in1445 = select i1 %1266, i1 %1281, i1 %1282
  br i1 %.in1445, label %1273, label %._crit_edge1646, !llvm.loop !128

._crit_edge1646:                                  ; preds = %1273, %._crit_edge1641
  %1283 = load i64, ptr %1, align 8, !tbaa !5
  %.not1446 = icmp eq i64 %1283, 0
  br i1 %.not1446, label %.loopexit1510, label %1284

1284:                                             ; preds = %._crit_edge1646
  %1285 = load i64, ptr %12, align 8, !tbaa !5
  %1286 = load i64, ptr %19, align 8, !tbaa !5
  %1287 = load i64, ptr %11, align 8, !tbaa !5
  %1288 = icmp slt i64 %1286, 0
  %1289 = icmp sge i64 %1287, %1285
  %1290 = icmp sle i64 %1287, %1285
  %.in14471649 = select i1 %1288, i1 %1289, i1 %1290
  br i1 %.in14471649, label %.lr.ph1652, label %.loopexit1510

.lr.ph1652:                                       ; preds = %1284
  %1291 = add nsw i64 %1235, %.013701658
  %1292 = mul nsw i64 %1291, %45
  %invariant.gep1653 = getelementptr double, ptr %47, i64 %1292
  %1293 = mul i64 %1235, %117
  %1294 = getelementptr inbounds double, ptr %53, i64 %1293
  br label %1295

1295:                                             ; preds = %.lr.ph1652, %1295
  %.11650 = phi i64 [ %1287, %.lr.ph1652 ], [ %1303, %1295 ]
  %1296 = load i64, ptr %19, align 8, !tbaa !5
  store i64 %1296, ptr %26, align 8, !tbaa !5
  %1297 = load i64, ptr %12, align 8, !tbaa !5
  %1298 = sub nsw i64 %1297, %.11650
  %1299 = add nsw i64 %1298, 1
  store i64 %1299, ptr %27, align 8, !tbaa !5
  %1300 = call i64 @llvm.smin.i64(i64 %1296, i64 %1299)
  store i64 %1300, ptr %36, align 8, !tbaa !5
  %gep1654 = getelementptr double, ptr %invariant.gep1653, i64 %.11650
  %1301 = call i32 @f2c_dgemm(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.4, ptr noundef nonnull %36, ptr noundef nonnull %30, ptr noundef nonnull %30, ptr noundef nonnull @c_b8, ptr noundef %gep1654, ptr noundef nonnull %14, ptr noundef %1294, ptr noundef nonnull %18, ptr noundef nonnull @c_b7, ptr noundef %20, ptr noundef nonnull %21) #5
  %1302 = call i32 @dlacpy_(ptr noundef nonnull @.str.2, ptr noundef nonnull %36, ptr noundef nonnull %30, ptr noundef %20, ptr noundef nonnull %21, ptr noundef %gep1654, ptr noundef nonnull %14) #5
  %1303 = add nsw i64 %.11650, %1286
  %1304 = icmp sge i64 %1303, %1285
  %1305 = icmp sle i64 %1303, %1285
  %.in1447 = select i1 %1288, i1 %1304, i1 %1305
  br i1 %.in1447, label %1295, label %.loopexit1510, !llvm.loop !129

1306:                                             ; preds = %1229
  %1307 = load i64, ptr %32, align 8, !tbaa !5
  %1308 = add nsw i64 %1307, 1
  %1309 = sdiv i64 %1308, 2
  store i64 %1309, ptr %28, align 8, !tbaa !5
  %1310 = sub nsw i64 %1307, %1309
  store i64 %1310, ptr %29, align 8, !tbaa !5
  %1311 = sub nsw i64 %1309, %116
  store i64 %1311, ptr %34, align 8, !tbaa !5
  store i64 %116, ptr %33, align 8, !tbaa !5
  %1312 = load i64, ptr %22, align 8, !tbaa !5
  %1313 = add nsw i64 %229, 1
  %1314 = icmp slt i64 %1312, 0
  %1315 = icmp sge i64 %1313, %.11375
  %1316 = icmp slt i64 %229, %.11375
  %.in14331591 = select i1 %1314, i1 %1315, i1 %1316
  br i1 %.in14331591, label %.lr.ph1594, label %._crit_edge1595

.lr.ph1594:                                       ; preds = %1306
  %gep1656 = getelementptr double, ptr %invariant.gep1655, i64 %.013701658
  br label %1317

1317:                                             ; preds = %.lr.ph1594, %1317
  %.113771592 = phi i64 [ %1313, %.lr.ph1594 ], [ %1359, %1317 ]
  %1318 = load i64, ptr %22, align 8, !tbaa !5
  store i64 %1318, ptr %26, align 8, !tbaa !5
  %1319 = sub nsw i64 %.11375, %.113771592
  %1320 = add nsw i64 %1319, 1
  store i64 %1320, ptr %27, align 8, !tbaa !5
  %1321 = call i64 @llvm.smin.i64(i64 %1318, i64 %1320)
  store i64 %1321, ptr %36, align 8, !tbaa !5
  %1322 = load i64, ptr %29, align 8, !tbaa !5
  %1323 = mul nsw i64 %.113771592, %42
  %1324 = getelementptr double, ptr %gep1656, i64 %1322
  %1325 = getelementptr double, ptr %1324, i64 %1323
  %1326 = load i64, ptr %34, align 8, !tbaa !5
  %1327 = getelementptr inbounds double, ptr %23, i64 %1326
  %1328 = call i32 @dlacpy_(ptr noundef nonnull @.str.2, ptr noundef nonnull %33, ptr noundef nonnull %36, ptr noundef %1325, ptr noundef nonnull %10, ptr noundef %1327, ptr noundef nonnull %24) #5
  %1329 = call i32 @dlaset_(ptr noundef nonnull @.str.2, ptr noundef nonnull %34, ptr noundef nonnull %36, ptr noundef nonnull @c_b7, ptr noundef nonnull @c_b7, ptr noundef %23, ptr noundef nonnull %24) #5
  %1330 = load i64, ptr %29, align 8, !tbaa !5
  %1331 = load i64, ptr %34, align 8, !tbaa !5
  %1332 = add nsw i64 %1331, 1
  %1333 = mul nsw i64 %1332, %51
  %gep1586 = getelementptr double, ptr %invariant.gep1585, i64 %1330
  %1334 = getelementptr double, ptr %gep1586, i64 %1333
  %1335 = getelementptr inbounds double, ptr %23, i64 %1331
  %1336 = call i32 @f2c_dtrmm(ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.4, ptr noundef nonnull %33, ptr noundef nonnull %36, ptr noundef nonnull @c_b8, ptr noundef %1334, ptr noundef nonnull %18, ptr noundef %1335, ptr noundef nonnull %24) #5
  %1337 = getelementptr double, ptr %gep1656, i64 %1323
  %1338 = call i32 @f2c_dgemm(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.4, ptr noundef nonnull %28, ptr noundef nonnull %36, ptr noundef nonnull %29, ptr noundef nonnull @c_b8, ptr noundef %17, ptr noundef nonnull %18, ptr noundef %1337, ptr noundef nonnull %10, ptr noundef nonnull @c_b8, ptr noundef %23, ptr noundef nonnull %24) #5
  %1339 = load i64, ptr %28, align 8, !tbaa !5
  %1340 = getelementptr inbounds double, ptr %23, i64 %1339
  %1341 = call i32 @dlacpy_(ptr noundef nonnull @.str.2, ptr noundef nonnull %29, ptr noundef nonnull %36, ptr noundef %1337, ptr noundef nonnull %10, ptr noundef %1340, ptr noundef nonnull %24) #5
  %1342 = load i64, ptr %28, align 8, !tbaa !5
  %1343 = add nsw i64 %1342, 1
  %1344 = mul nsw i64 %1343, %51
  %gep1588 = getelementptr double, ptr %invariant.gep1585, i64 %1344
  %1345 = getelementptr inbounds double, ptr %23, i64 %1342
  %1346 = call i32 @f2c_dtrmm(ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.4, ptr noundef nonnull %29, ptr noundef nonnull %36, ptr noundef nonnull @c_b8, ptr noundef %gep1588, ptr noundef nonnull %18, ptr noundef %1345, ptr noundef nonnull %24) #5
  %1347 = load i64, ptr %28, align 8, !tbaa !5
  %1348 = sub nsw i64 %1307, %1347
  store i64 %1348, ptr %26, align 8, !tbaa !5
  %1349 = load i64, ptr %29, align 8, !tbaa !5
  %1350 = sub nsw i64 %1307, %1349
  store i64 %1350, ptr %27, align 8, !tbaa !5
  %1351 = add nsw i64 %1347, 1
  %1352 = mul nsw i64 %1351, %51
  %gep1590 = getelementptr double, ptr %invariant.gep1585, i64 %1349
  %1353 = getelementptr double, ptr %gep1590, i64 %1352
  %1354 = getelementptr double, ptr %gep1656, i64 %1349
  %1355 = getelementptr double, ptr %1354, i64 %1323
  %1356 = getelementptr inbounds double, ptr %23, i64 %1347
  %1357 = call i32 @f2c_dgemm(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.4, ptr noundef nonnull %26, ptr noundef nonnull %36, ptr noundef nonnull %27, ptr noundef nonnull @c_b8, ptr noundef %1353, ptr noundef nonnull %18, ptr noundef %1355, ptr noundef nonnull %10, ptr noundef nonnull @c_b8, ptr noundef %1356, ptr noundef nonnull %24) #5
  %1358 = call i32 @dlacpy_(ptr noundef nonnull @.str.2, ptr noundef nonnull %32, ptr noundef nonnull %36, ptr noundef %23, ptr noundef nonnull %24, ptr noundef %1337, ptr noundef nonnull %10) #5
  %1359 = add nsw i64 %.113771592, %1312
  %1360 = icmp sge i64 %1359, %.11375
  %1361 = icmp sle i64 %1359, %.11375
  %.in1433 = select i1 %1314, i1 %1360, i1 %1361
  br i1 %.in1433, label %1317, label %._crit_edge1595.loopexit, !llvm.loop !130

._crit_edge1595.loopexit:                         ; preds = %1317
  %.pre1682 = load i64, ptr %4, align 8, !tbaa !5
  br label %._crit_edge1595

._crit_edge1595:                                  ; preds = %._crit_edge1595.loopexit, %1306
  %1362 = phi i64 [ %.pre1682, %._crit_edge1595.loopexit ], [ %.pre1683.pre, %1306 ]
  %..01370 = call i64 @llvm.smax.i64(i64 %.013701658, i64 %1362)
  %1363 = add nsw i64 %..01370, -1
  %1364 = load i64, ptr %19, align 8, !tbaa !5
  %1365 = icmp slt i64 %1364, 0
  %1366 = icmp sge i64 %spec.select1694, %1363
  %1367 = icmp slt i64 %spec.select1694, %..01370
  %.in14351612 = select i1 %1365, i1 %1366, i1 %1367
  br i1 %.in14351612, label %.lr.ph1615, label %._crit_edge1616

.lr.ph1615:                                       ; preds = %._crit_edge1595
  %1368 = add nsw i64 %.013701658, 1
  %1369 = mul nsw i64 %1368, %42
  br label %1370

1370:                                             ; preds = %.lr.ph1615, %1370
  %.21613 = phi i64 [ %spec.select1694, %.lr.ph1615 ], [ %1417, %1370 ]
  %1371 = load i64, ptr %19, align 8, !tbaa !5
  store i64 %1371, ptr %26, align 8, !tbaa !5
  %1372 = load i64, ptr %4, align 8, !tbaa !5
  %..013701491 = call i64 @llvm.smax.i64(i64 %.013701658, i64 %1372)
  %1373 = sub nsw i64 %..013701491, %.21613
  store i64 %1373, ptr %27, align 8, !tbaa !5
  %1374 = call i64 @llvm.smin.i64(i64 %1371, i64 %1373)
  store i64 %1374, ptr %36, align 8, !tbaa !5
  %1375 = load i64, ptr %29, align 8, !tbaa !5
  %1376 = add nsw i64 %1375, %1368
  %1377 = mul nsw i64 %1376, %42
  %1378 = getelementptr double, ptr %44, i64 %.21613
  %1379 = getelementptr double, ptr %1378, i64 %1377
  %1380 = load i64, ptr %34, align 8, !tbaa !5
  %1381 = add nsw i64 %1380, 1
  %1382 = mul nsw i64 %1381, %54
  %gep1597 = getelementptr double, ptr %invariant.gep1596, i64 %1382
  %1383 = call i32 @dlacpy_(ptr noundef nonnull @.str.2, ptr noundef nonnull %36, ptr noundef nonnull %33, ptr noundef %1379, ptr noundef nonnull %10, ptr noundef %gep1597, ptr noundef nonnull %21) #5
  %1384 = call i32 @dlaset_(ptr noundef nonnull @.str.2, ptr noundef nonnull %36, ptr noundef nonnull %34, ptr noundef nonnull @c_b7, ptr noundef nonnull @c_b7, ptr noundef %20, ptr noundef nonnull %21) #5
  %1385 = load i64, ptr %29, align 8, !tbaa !5
  %1386 = load i64, ptr %34, align 8, !tbaa !5
  %1387 = add nsw i64 %1386, 1
  %1388 = mul nsw i64 %1387, %51
  %gep1599 = getelementptr double, ptr %invariant.gep1585, i64 %1385
  %1389 = getelementptr double, ptr %gep1599, i64 %1388
  %1390 = mul nsw i64 %1387, %54
  %gep1601 = getelementptr double, ptr %invariant.gep1596, i64 %1390
  %1391 = call i32 @f2c_dtrmm(ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.4, ptr noundef nonnull %36, ptr noundef nonnull %33, ptr noundef nonnull @c_b8, ptr noundef %1389, ptr noundef nonnull %18, ptr noundef %gep1601, ptr noundef nonnull %21) #5
  %1392 = getelementptr double, ptr %1378, i64 %1369
  %1393 = call i32 @f2c_dgemm(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.4, ptr noundef nonnull %36, ptr noundef nonnull %28, ptr noundef nonnull %29, ptr noundef nonnull @c_b8, ptr noundef %1392, ptr noundef nonnull %10, ptr noundef %17, ptr noundef nonnull %18, ptr noundef nonnull @c_b8, ptr noundef %20, ptr noundef nonnull %21) #5
  %1394 = load i64, ptr %28, align 8, !tbaa !5
  %1395 = add nsw i64 %1394, 1
  %1396 = mul nsw i64 %1395, %54
  %gep1603 = getelementptr double, ptr %invariant.gep1596, i64 %1396
  %1397 = call i32 @dlacpy_(ptr noundef nonnull @.str.2, ptr noundef nonnull %36, ptr noundef nonnull %29, ptr noundef %1392, ptr noundef nonnull %10, ptr noundef %gep1603, ptr noundef nonnull %21) #5
  %1398 = load i64, ptr %28, align 8, !tbaa !5
  %1399 = sub nsw i64 %1307, %1398
  store i64 %1399, ptr %26, align 8, !tbaa !5
  %1400 = add nsw i64 %1398, 1
  %1401 = mul nsw i64 %1400, %51
  %gep1605 = getelementptr double, ptr %invariant.gep1585, i64 %1401
  %1402 = mul nsw i64 %1400, %54
  %gep1607 = getelementptr double, ptr %invariant.gep1596, i64 %1402
  %1403 = call i32 @f2c_dtrmm(ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.4, ptr noundef nonnull %36, ptr noundef nonnull %26, ptr noundef nonnull @c_b8, ptr noundef %gep1605, ptr noundef nonnull %18, ptr noundef %gep1607, ptr noundef nonnull %21) #5
  %1404 = load i64, ptr %28, align 8, !tbaa !5
  %1405 = sub nsw i64 %1307, %1404
  store i64 %1405, ptr %26, align 8, !tbaa !5
  %1406 = load i64, ptr %29, align 8, !tbaa !5
  %1407 = sub nsw i64 %1307, %1406
  store i64 %1407, ptr %27, align 8, !tbaa !5
  %1408 = add nsw i64 %1406, %1368
  %1409 = mul nsw i64 %1408, %42
  %1410 = getelementptr double, ptr %1378, i64 %1409
  %1411 = add nsw i64 %1404, 1
  %1412 = mul nsw i64 %1411, %51
  %gep1609 = getelementptr double, ptr %invariant.gep1585, i64 %1406
  %1413 = getelementptr double, ptr %gep1609, i64 %1412
  %1414 = mul nsw i64 %1411, %54
  %gep1611 = getelementptr double, ptr %invariant.gep1596, i64 %1414
  %1415 = call i32 @f2c_dgemm(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.4, ptr noundef nonnull %36, ptr noundef nonnull %26, ptr noundef nonnull %27, ptr noundef nonnull @c_b8, ptr noundef %1410, ptr noundef nonnull %10, ptr noundef %1413, ptr noundef nonnull %18, ptr noundef nonnull @c_b8, ptr noundef %gep1611, ptr noundef nonnull %21) #5
  %1416 = call i32 @dlacpy_(ptr noundef nonnull @.str.2, ptr noundef nonnull %36, ptr noundef nonnull %32, ptr noundef %20, ptr noundef nonnull %21, ptr noundef %1392, ptr noundef nonnull %10) #5
  %1417 = add nsw i64 %.21613, %1364
  %1418 = icmp sge i64 %1417, %1363
  %1419 = icmp slt i64 %1417, %..01370
  %.in1435 = select i1 %1365, i1 %1418, i1 %1419
  br i1 %.in1435, label %1370, label %._crit_edge1616, !llvm.loop !131

._crit_edge1616:                                  ; preds = %1370, %._crit_edge1595
  %1420 = load i64, ptr %1, align 8, !tbaa !5
  %.not1436 = icmp eq i64 %1420, 0
  br i1 %.not1436, label %.loopexit1510, label %1421

1421:                                             ; preds = %._crit_edge1616
  %1422 = load i64, ptr %12, align 8, !tbaa !5
  %1423 = load i64, ptr %19, align 8, !tbaa !5
  %1424 = load i64, ptr %11, align 8, !tbaa !5
  %1425 = icmp slt i64 %1423, 0
  %1426 = icmp sge i64 %1424, %1422
  %1427 = icmp sle i64 %1424, %1422
  %.in14371633 = select i1 %1425, i1 %1426, i1 %1427
  br i1 %.in14371633, label %.lr.ph1636, label %.loopexit1510

.lr.ph1636:                                       ; preds = %1421
  %1428 = add nsw i64 %.013701658, 1
  %1429 = mul nsw i64 %1428, %45
  br label %1430

1430:                                             ; preds = %.lr.ph1636, %1430
  %.31634 = phi i64 [ %1424, %.lr.ph1636 ], [ %1478, %1430 ]
  %1431 = load i64, ptr %19, align 8, !tbaa !5
  store i64 %1431, ptr %26, align 8, !tbaa !5
  %1432 = load i64, ptr %12, align 8, !tbaa !5
  %1433 = sub nsw i64 %1432, %.31634
  %1434 = add nsw i64 %1433, 1
  store i64 %1434, ptr %27, align 8, !tbaa !5
  %1435 = call i64 @llvm.smin.i64(i64 %1431, i64 %1434)
  store i64 %1435, ptr %36, align 8, !tbaa !5
  %1436 = load i64, ptr %29, align 8, !tbaa !5
  %1437 = add nsw i64 %1436, %1428
  %1438 = mul nsw i64 %1437, %45
  %1439 = getelementptr double, ptr %47, i64 %.31634
  %1440 = getelementptr double, ptr %1439, i64 %1438
  %1441 = load i64, ptr %34, align 8, !tbaa !5
  %1442 = add nsw i64 %1441, 1
  %1443 = mul nsw i64 %1442, %54
  %gep1618 = getelementptr double, ptr %invariant.gep1596, i64 %1443
  %1444 = call i32 @dlacpy_(ptr noundef nonnull @.str.2, ptr noundef nonnull %36, ptr noundef nonnull %33, ptr noundef %1440, ptr noundef nonnull %14, ptr noundef %gep1618, ptr noundef nonnull %21) #5
  %1445 = call i32 @dlaset_(ptr noundef nonnull @.str.2, ptr noundef nonnull %36, ptr noundef nonnull %34, ptr noundef nonnull @c_b7, ptr noundef nonnull @c_b7, ptr noundef %20, ptr noundef nonnull %21) #5
  %1446 = load i64, ptr %29, align 8, !tbaa !5
  %1447 = load i64, ptr %34, align 8, !tbaa !5
  %1448 = add nsw i64 %1447, 1
  %1449 = mul nsw i64 %1448, %51
  %gep1620 = getelementptr double, ptr %invariant.gep1585, i64 %1446
  %1450 = getelementptr double, ptr %gep1620, i64 %1449
  %1451 = mul nsw i64 %1448, %54
  %gep1622 = getelementptr double, ptr %invariant.gep1596, i64 %1451
  %1452 = call i32 @f2c_dtrmm(ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.4, ptr noundef nonnull %36, ptr noundef nonnull %33, ptr noundef nonnull @c_b8, ptr noundef %1450, ptr noundef nonnull %18, ptr noundef %gep1622, ptr noundef nonnull %21) #5
  %1453 = getelementptr double, ptr %1439, i64 %1429
  %1454 = call i32 @f2c_dgemm(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.4, ptr noundef nonnull %36, ptr noundef nonnull %28, ptr noundef nonnull %29, ptr noundef nonnull @c_b8, ptr noundef %1453, ptr noundef nonnull %14, ptr noundef %17, ptr noundef nonnull %18, ptr noundef nonnull @c_b8, ptr noundef %20, ptr noundef nonnull %21) #5
  %1455 = load i64, ptr %28, align 8, !tbaa !5
  %1456 = add nsw i64 %1455, 1
  %1457 = mul nsw i64 %1456, %54
  %gep1624 = getelementptr double, ptr %invariant.gep1596, i64 %1457
  %1458 = call i32 @dlacpy_(ptr noundef nonnull @.str.2, ptr noundef nonnull %36, ptr noundef nonnull %29, ptr noundef %1453, ptr noundef nonnull %14, ptr noundef %gep1624, ptr noundef nonnull %21) #5
  %1459 = load i64, ptr %28, align 8, !tbaa !5
  %1460 = sub nsw i64 %1307, %1459
  store i64 %1460, ptr %26, align 8, !tbaa !5
  %1461 = add nsw i64 %1459, 1
  %1462 = mul nsw i64 %1461, %51
  %gep1626 = getelementptr double, ptr %invariant.gep1585, i64 %1462
  %1463 = mul nsw i64 %1461, %54
  %gep1628 = getelementptr double, ptr %invariant.gep1596, i64 %1463
  %1464 = call i32 @f2c_dtrmm(ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.4, ptr noundef nonnull %36, ptr noundef nonnull %26, ptr noundef nonnull @c_b8, ptr noundef %gep1626, ptr noundef nonnull %18, ptr noundef %gep1628, ptr noundef nonnull %21) #5
  %1465 = load i64, ptr %28, align 8, !tbaa !5
  %1466 = sub nsw i64 %1307, %1465
  store i64 %1466, ptr %26, align 8, !tbaa !5
  %1467 = load i64, ptr %29, align 8, !tbaa !5
  %1468 = sub nsw i64 %1307, %1467
  store i64 %1468, ptr %27, align 8, !tbaa !5
  %1469 = add nsw i64 %1467, %1428
  %1470 = mul nsw i64 %1469, %45
  %1471 = getelementptr double, ptr %1439, i64 %1470
  %1472 = add nsw i64 %1465, 1
  %1473 = mul nsw i64 %1472, %51
  %gep1630 = getelementptr double, ptr %invariant.gep1585, i64 %1467
  %1474 = getelementptr double, ptr %gep1630, i64 %1473
  %1475 = mul nsw i64 %1472, %54
  %gep1632 = getelementptr double, ptr %invariant.gep1596, i64 %1475
  %1476 = call i32 @f2c_dgemm(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.4, ptr noundef nonnull %36, ptr noundef nonnull %26, ptr noundef nonnull %27, ptr noundef nonnull @c_b8, ptr noundef %1471, ptr noundef nonnull %14, ptr noundef %1474, ptr noundef nonnull %18, ptr noundef nonnull @c_b8, ptr noundef %gep1632, ptr noundef nonnull %21) #5
  %1477 = call i32 @dlacpy_(ptr noundef nonnull @.str.2, ptr noundef nonnull %36, ptr noundef nonnull %32, ptr noundef %20, ptr noundef nonnull %21, ptr noundef %1453, ptr noundef nonnull %14) #5
  %1478 = add nsw i64 %.31634, %1423
  %1479 = icmp sge i64 %1478, %1422
  %1480 = icmp sle i64 %1478, %1422
  %.in1437 = select i1 %1425, i1 %1479, i1 %1480
  br i1 %.in1437, label %1430, label %.loopexit1510, !llvm.loop !132

.loopexit1510:                                    ; preds = %1430, %1295, %1421, %1284, %._crit_edge1584, %._crit_edge1616, %._crit_edge1646
  %1481 = add nsw i64 %107, %.013701658
  %.not1503 = icmp sgt i64 %1481, %105
  %indvars.iv.next1672 = add i64 %indvars.iv1671, %107
  %indvar.next1730 = add i64 %indvar1729, 1
  br i1 %.not1503, label %.loopexit1512, label %210, !llvm.loop !133

.loopexit1512:                                    ; preds = %.loopexit1510, %101, %59, %25
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %31) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #5
  ret i32 0
}

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

declare double @dlamch_(ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare <2 x double> @llvm.fmuladd.v2f64(<2 x double>, <2 x double>, <2 x double>) #4

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare { i64, i1 } @llvm.umul.with.overflow.i64(i64, i64) #4

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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"long", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"double", !7, i64 0}
!11 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = distinct !{!13, !12}
!14 = !{!15}
!15 = distinct !{!15, !16}
!16 = distinct !{!16, !"LVerDomain"}
!17 = !{!18}
!18 = distinct !{!18, !16}
!19 = !{!20, !21, !15}
!20 = distinct !{!20, !16}
!21 = distinct !{!21, !16}
!22 = !{!21}
!23 = !{!20}
!24 = distinct !{!24, !12, !25, !26}
!25 = !{!"llvm.loop.isvectorized", i32 1}
!26 = !{!"llvm.loop.unroll.runtime.disable"}
!27 = distinct !{!27, !12, !25}
!28 = distinct !{!28, !12}
!29 = distinct !{!29, !12}
!30 = !{!31}
!31 = distinct !{!31, !32}
!32 = distinct !{!32, !"LVerDomain"}
!33 = !{!34}
!34 = distinct !{!34, !32}
!35 = !{!36}
!36 = distinct !{!36, !32}
!37 = !{!38}
!38 = distinct !{!38, !32}
!39 = !{!40, !41, !31, !34, !36}
!40 = distinct !{!40, !32}
!41 = distinct !{!41, !32}
!42 = !{!40}
!43 = !{!41, !31, !34, !36}
!44 = !{!41}
!45 = !{!31, !34, !36}
!46 = distinct !{!46, !12, !25, !26}
!47 = distinct !{!47, !12, !25}
!48 = !{!49}
!49 = distinct !{!49, !50}
!50 = distinct !{!50, !"LVerDomain"}
!51 = !{!52}
!52 = distinct !{!52, !50}
!53 = !{!54}
!54 = distinct !{!54, !50}
!55 = !{!56}
!56 = distinct !{!56, !50}
!57 = !{!58, !59, !49, !52, !54}
!58 = distinct !{!58, !50}
!59 = distinct !{!59, !50}
!60 = !{!58}
!61 = !{!59, !49, !52, !54}
!62 = !{!59}
!63 = !{!49, !52, !54}
!64 = distinct !{!64, !12, !25, !26}
!65 = distinct !{!65, !12, !25}
!66 = !{!67}
!67 = distinct !{!67, !68}
!68 = distinct !{!68, !"LVerDomain"}
!69 = !{!70}
!70 = distinct !{!70, !68}
!71 = !{!72}
!72 = distinct !{!72, !68}
!73 = !{!74}
!74 = distinct !{!74, !68}
!75 = !{!76, !77, !67, !70, !72}
!76 = distinct !{!76, !68}
!77 = distinct !{!77, !68}
!78 = !{!76}
!79 = !{!77, !67, !70, !72}
!80 = !{!77}
!81 = !{!67, !70, !72}
!82 = distinct !{!82, !12, !25, !26}
!83 = distinct !{!83, !12, !25}
!84 = distinct !{!84, !12}
!85 = !{!86}
!86 = distinct !{!86, !87}
!87 = distinct !{!87, !"LVerDomain"}
!88 = !{!89}
!89 = distinct !{!89, !87}
!90 = !{!91}
!91 = distinct !{!91, !87}
!92 = !{!93, !86, !89}
!93 = distinct !{!93, !87}
!94 = !{!93}
!95 = !{!86, !89}
!96 = distinct !{!96, !12, !25, !26}
!97 = distinct !{!97, !12, !25}
!98 = !{!99}
!99 = distinct !{!99, !100}
!100 = distinct !{!100, !"LVerDomain"}
!101 = !{!102}
!102 = distinct !{!102, !100}
!103 = !{!104}
!104 = distinct !{!104, !100}
!105 = !{!106, !99, !102}
!106 = distinct !{!106, !100}
!107 = !{!106}
!108 = !{!99, !102}
!109 = distinct !{!109, !12, !25, !26}
!110 = distinct !{!110, !12, !25}
!111 = !{!112}
!112 = distinct !{!112, !113}
!113 = distinct !{!113, !"LVerDomain"}
!114 = !{!115}
!115 = distinct !{!115, !113}
!116 = !{!117}
!117 = distinct !{!117, !113}
!118 = !{!119, !112, !115}
!119 = distinct !{!119, !113}
!120 = !{!119}
!121 = !{!112, !115}
!122 = distinct !{!122, !12, !25, !26}
!123 = distinct !{!123, !12, !25}
!124 = distinct !{!124, !12}
!125 = distinct !{!125, !12}
!126 = distinct !{!126, !12}
!127 = distinct !{!127, !12}
!128 = distinct !{!128, !12}
!129 = distinct !{!129, !12}
!130 = distinct !{!130, !12}
!131 = distinct !{!131, !12}
!132 = distinct !{!132, !12}
!133 = distinct !{!133, !12}


; Effective O3 passes: ConstraintEliminationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopInstSimplifyPass,LoopLoadEliminationPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,LoopVectorizePass,PostOrderFunctionAttrsPass,ReassociatePass,SCCPPass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass,VectorCombinePass