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

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

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

133:                                              ; preds = %15
  %134 = load i32, ptr %65, align 4, !tbaa !9
  %135 = icmp ne i32 %134, 0
  br label %136

136:                                              ; preds = %133, %15
  %137 = phi i1 [ true, %15 ], [ %135, %133 ]
  %138 = zext i1 %137 to i32
  store i32 %138, ptr %81, align 4, !tbaa !9
  %139 = load ptr, ptr %16, align 8, !tbaa !5
  %140 = call i32 @lsame_(ptr noundef %139, ptr noundef @.str.2)
  %141 = icmp ne i32 %140, 0
  br i1 %141, label %145, label %142

142:                                              ; preds = %136
  %143 = load i32, ptr %65, align 4, !tbaa !9
  %144 = icmp ne i32 %143, 0
  br label %145

145:                                              ; preds = %142, %136
  %146 = phi i1 [ true, %136 ], [ %144, %142 ]
  %147 = zext i1 %146 to i32
  store i32 %147, ptr %64, align 4, !tbaa !9
  %148 = load ptr, ptr %17, align 8, !tbaa !5
  %149 = call i32 @lsame_(ptr noundef %148, ptr noundef @.str.3)
  store i32 %149, ptr %50, align 4, !tbaa !9
  %150 = load ptr, ptr %17, align 8, !tbaa !5
  %151 = call i32 @lsame_(ptr noundef %150, ptr noundef @.str)
  store i32 %151, ptr %55, align 4, !tbaa !9
  %152 = load ptr, ptr %17, align 8, !tbaa !5
  %153 = call i32 @lsame_(ptr noundef %152, ptr noundef @.str.4)
  store i32 %153, ptr %67, align 4, !tbaa !9
  %154 = load ptr, ptr %30, align 8, !tbaa !5
  store i32 0, ptr %154, align 4, !tbaa !9
  %155 = getelementptr inbounds [2 x i32], ptr %38, i64 0, i64 0
  store i32 1, ptr %155, align 4, !tbaa !9
  %156 = load ptr, ptr %16, align 8, !tbaa !5
  %157 = getelementptr inbounds [2 x ptr], ptr %31, i64 0, i64 0
  store ptr %156, ptr %157, align 16, !tbaa !5
  %158 = getelementptr inbounds [2 x i32], ptr %38, i64 0, i64 1
  store i32 1, ptr %158, align 4, !tbaa !9
  %159 = load ptr, ptr %17, align 8, !tbaa !5
  %160 = getelementptr inbounds [2 x ptr], ptr %31, i64 0, i64 1
  store ptr %159, ptr %160, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %88) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %89) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %90) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %91) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %92) #4
  store i32 2, ptr %90, align 4, !tbaa !9
  %161 = getelementptr inbounds [2 x i8], ptr %46, i64 0, i64 0
  store ptr %161, ptr %92, align 8, !tbaa !5
  store i32 0, ptr %88, align 4, !tbaa !9
  br label %162

162:                                              ; preds = %198, %145
  %163 = load i32, ptr %88, align 4, !tbaa !9
  %164 = load i32, ptr @c__2, align 4, !tbaa !9
  %165 = icmp slt i32 %163, %164
  br i1 %165, label %166, label %201

166:                                              ; preds = %162
  %167 = load i32, ptr %90, align 4, !tbaa !9
  store i32 %167, ptr %89, align 4, !tbaa !9
  %168 = load i32, ptr %88, align 4, !tbaa !9
  %169 = sext i32 %168 to i64
  %170 = getelementptr inbounds [2 x i32], ptr %38, i64 0, i64 %169
  %171 = load i32, ptr %170, align 4, !tbaa !9
  %172 = load i32, ptr %89, align 4, !tbaa !9
  %173 = icmp slt i32 %171, %172
  br i1 %173, label %174, label %179

174:                                              ; preds = %166
  %175 = load i32, ptr %88, align 4, !tbaa !9
  %176 = sext i32 %175 to i64
  %177 = getelementptr inbounds [2 x i32], ptr %38, i64 0, i64 %176
  %178 = load i32, ptr %177, align 4, !tbaa !9
  store i32 %178, ptr %89, align 4, !tbaa !9
  br label %179

179:                                              ; preds = %174, %166
  %180 = load i32, ptr %89, align 4, !tbaa !9
  %181 = load i32, ptr %90, align 4, !tbaa !9
  %182 = sub nsw i32 %181, %180
  store i32 %182, ptr %90, align 4, !tbaa !9
  %183 = load i32, ptr %88, align 4, !tbaa !9
  %184 = sext i32 %183 to i64
  %185 = getelementptr inbounds [2 x ptr], ptr %31, i64 0, i64 %184
  %186 = load ptr, ptr %185, align 8, !tbaa !5
  store ptr %186, ptr %91, align 8, !tbaa !5
  br label %187

187:                                              ; preds = %191, %179
  %188 = load i32, ptr %89, align 4, !tbaa !9
  %189 = add nsw i32 %188, -1
  store i32 %189, ptr %89, align 4, !tbaa !9
  %190 = icmp sge i32 %189, 0
  br i1 %190, label %191, label %197

191:                                              ; preds = %187
  %192 = load ptr, ptr %91, align 8, !tbaa !5
  %193 = getelementptr inbounds i8, ptr %192, i32 1
  store ptr %193, ptr %91, align 8, !tbaa !5
  %194 = load i8, ptr %192, align 1, !tbaa !11
  %195 = load ptr, ptr %92, align 8, !tbaa !5
  %196 = getelementptr inbounds i8, ptr %195, i32 1
  store ptr %196, ptr %92, align 8, !tbaa !5
  store i8 %194, ptr %195, align 1, !tbaa !11
  br label %187, !llvm.loop !12

197:                                              ; preds = %187
  br label %198

198:                                              ; preds = %197
  %199 = load i32, ptr %88, align 4, !tbaa !9
  %200 = add nsw i32 %199, 1
  store i32 %200, ptr %88, align 4, !tbaa !9
  br label %162, !llvm.loop !14

201:                                              ; preds = %162
  br label %202

202:                                              ; preds = %206, %201
  %203 = load i32, ptr %90, align 4, !tbaa !9
  %204 = add nsw i32 %203, -1
  store i32 %204, ptr %90, align 4, !tbaa !9
  %205 = icmp sge i32 %204, 0
  br i1 %205, label %206, label %209

206:                                              ; preds = %202
  %207 = load ptr, ptr %92, align 8, !tbaa !5
  %208 = getelementptr inbounds i8, ptr %207, i32 1
  store ptr %208, ptr %92, align 8, !tbaa !5
  store i8 32, ptr %207, align 1, !tbaa !11
  br label %202, !llvm.loop !15

209:                                              ; preds = %202
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %90) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %89) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %88) #4
  %210 = getelementptr inbounds [2 x i8], ptr %46, i64 0, i64 0
  %211 = load ptr, ptr %19, align 8, !tbaa !5
  %212 = call i32 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.5, ptr noundef %210, ptr noundef %211, ptr noundef @c_n1, ptr noundef @c_n1, ptr noundef @c_n1, i32 noundef 6, i32 noundef 2)
  store i32 %212, ptr %72, align 4, !tbaa !9
  %213 = load ptr, ptr %19, align 8, !tbaa !5
  %214 = load i32, ptr %213, align 4, !tbaa !9
  %215 = load ptr, ptr %19, align 8, !tbaa !5
  %216 = load i32, ptr %215, align 4, !tbaa !9
  %217 = shl i32 %216, 1
  %218 = load i32, ptr %72, align 4, !tbaa !9
  %219 = mul nsw i32 %217, %218
  %220 = add nsw i32 %214, %219
  store i32 %220, ptr %83, align 4, !tbaa !9
  %221 = load i32, ptr %83, align 4, !tbaa !9
  %222 = sitofp i32 %221 to double
  %223 = load ptr, ptr %28, align 8, !tbaa !5
  %224 = getelementptr inbounds double, ptr %223, i64 1
  store double %222, ptr %224, align 8, !tbaa !16
  %225 = load ptr, ptr %29, align 8, !tbaa !5
  %226 = load i32, ptr %225, align 4, !tbaa !9
  %227 = icmp eq i32 %226, -1
  %228 = zext i1 %227 to i32
  store i32 %228, ptr %85, align 4, !tbaa !9
  %229 = load i32, ptr %81, align 4, !tbaa !9
  %230 = icmp ne i32 %229, 0
  br i1 %230, label %236, label %231

231:                                              ; preds = %209
  %232 = load i32, ptr %64, align 4, !tbaa !9
  %233 = icmp ne i32 %232, 0
  br i1 %233, label %236, label %234

234:                                              ; preds = %231
  %235 = load ptr, ptr %30, align 8, !tbaa !5
  store i32 -1, ptr %235, align 4, !tbaa !9
  br label %430

236:                                              ; preds = %231, %209
  %237 = load i32, ptr %50, align 4, !tbaa !9
  %238 = icmp ne i32 %237, 0
  br i1 %238, label %247, label %239

239:                                              ; preds = %236
  %240 = load i32, ptr %55, align 4, !tbaa !9
  %241 = icmp ne i32 %240, 0
  br i1 %241, label %247, label %242

242:                                              ; preds = %239
  %243 = load i32, ptr %67, align 4, !tbaa !9
  %244 = icmp ne i32 %243, 0
  br i1 %244, label %247, label %245

245:                                              ; preds = %242
  %246 = load ptr, ptr %30, align 8, !tbaa !5
  store i32 -2, ptr %246, align 4, !tbaa !9
  br label %429

247:                                              ; preds = %242, %239, %236
  %248 = load ptr, ptr %19, align 8, !tbaa !5
  %249 = load i32, ptr %248, align 4, !tbaa !9
  %250 = icmp slt i32 %249, 0
  br i1 %250, label %251, label %253

251:                                              ; preds = %247
  %252 = load ptr, ptr %30, align 8, !tbaa !5
  store i32 -4, ptr %252, align 4, !tbaa !9
  br label %428

253:                                              ; preds = %247
  %254 = load ptr, ptr %21, align 8, !tbaa !5
  %255 = load i32, ptr %254, align 4, !tbaa !9
  %256 = load ptr, ptr %19, align 8, !tbaa !5
  %257 = load i32, ptr %256, align 4, !tbaa !9
  %258 = icmp sge i32 1, %257
  br i1 %258, label %259, label %260

259:                                              ; preds = %253
  br label %263

260:                                              ; preds = %253
  %261 = load ptr, ptr %19, align 8, !tbaa !5
  %262 = load i32, ptr %261, align 4, !tbaa !9
  br label %263

263:                                              ; preds = %260, %259
  %264 = phi i32 [ 1, %259 ], [ %262, %260 ]
  %265 = icmp slt i32 %255, %264
  br i1 %265, label %266, label %268

266:                                              ; preds = %263
  %267 = load ptr, ptr %30, align 8, !tbaa !5
  store i32 -6, ptr %267, align 4, !tbaa !9
  br label %427

268:                                              ; preds = %263
  %269 = load ptr, ptr %23, align 8, !tbaa !5
  %270 = load i32, ptr %269, align 4, !tbaa !9
  %271 = icmp slt i32 %270, 1
  br i1 %271, label %281, label %272

272:                                              ; preds = %268
  %273 = load i32, ptr %64, align 4, !tbaa !9
  %274 = icmp ne i32 %273, 0
  br i1 %274, label %275, label %283

275:                                              ; preds = %272
  %276 = load ptr, ptr %23, align 8, !tbaa !5
  %277 = load i32, ptr %276, align 4, !tbaa !9
  %278 = load ptr, ptr %19, align 8, !tbaa !5
  %279 = load i32, ptr %278, align 4, !tbaa !9
  %280 = icmp slt i32 %277, %279
  br i1 %280, label %281, label %283

281:                                              ; preds = %275, %268
  %282 = load ptr, ptr %30, align 8, !tbaa !5
  store i32 -8, ptr %282, align 4, !tbaa !9
  br label %426

283:                                              ; preds = %275, %272
  %284 = load ptr, ptr %25, align 8, !tbaa !5
  %285 = load i32, ptr %284, align 4, !tbaa !9
  %286 = icmp slt i32 %285, 1
  br i1 %286, label %296, label %287

287:                                              ; preds = %283
  %288 = load i32, ptr %81, align 4, !tbaa !9
  %289 = icmp ne i32 %288, 0
  br i1 %289, label %290, label %298

290:                                              ; preds = %287
  %291 = load ptr, ptr %25, align 8, !tbaa !5
  %292 = load i32, ptr %291, align 4, !tbaa !9
  %293 = load ptr, ptr %19, align 8, !tbaa !5
  %294 = load i32, ptr %293, align 4, !tbaa !9
  %295 = icmp slt i32 %292, %294
  br i1 %295, label %296, label %298

296:                                              ; preds = %290, %283
  %297 = load ptr, ptr %30, align 8, !tbaa !5
  store i32 -10, ptr %297, align 4, !tbaa !9
  br label %425

298:                                              ; preds = %290, %287
  store i32 1, ptr %39, align 4, !tbaa !9
  %299 = load ptr, ptr %19, align 8, !tbaa !5
  %300 = load i32, ptr %299, align 4, !tbaa !9
  %301 = mul nsw i32 %300, 3
  store i32 %301, ptr %40, align 4, !tbaa !9
  %302 = load ptr, ptr %29, align 8, !tbaa !5
  %303 = load i32, ptr %302, align 4, !tbaa !9
  %304 = load i32, ptr %39, align 4, !tbaa !9
  %305 = load i32, ptr %40, align 4, !tbaa !9
  %306 = icmp sge i32 %304, %305
  br i1 %306, label %307, label %309

307:                                              ; preds = %298
  %308 = load i32, ptr %39, align 4, !tbaa !9
  br label %311

309:                                              ; preds = %298
  %310 = load i32, ptr %40, align 4, !tbaa !9
  br label %311

311:                                              ; preds = %309, %307
  %312 = phi i32 [ %308, %307 ], [ %310, %309 ]
  %313 = icmp slt i32 %303, %312
  br i1 %313, label %314, label %319

314:                                              ; preds = %311
  %315 = load i32, ptr %85, align 4, !tbaa !9
  %316 = icmp ne i32 %315, 0
  br i1 %316, label %319, label %317

317:                                              ; preds = %314
  %318 = load ptr, ptr %30, align 8, !tbaa !5
  store i32 -14, ptr %318, align 4, !tbaa !9
  br label %424

319:                                              ; preds = %314, %311
  %320 = load i32, ptr %67, align 4, !tbaa !9
  %321 = icmp ne i32 %320, 0
  br i1 %321, label %322, label %411

322:                                              ; preds = %319
  %323 = load ptr, ptr %27, align 8, !tbaa !5
  store i32 0, ptr %323, align 4, !tbaa !9
  store i32 0, ptr %49, align 4, !tbaa !9
  %324 = load ptr, ptr %19, align 8, !tbaa !5
  %325 = load i32, ptr %324, align 4, !tbaa !9
  store i32 %325, ptr %39, align 4, !tbaa !9
  store i32 1, ptr %59, align 4, !tbaa !9
  br label %326

326:                                              ; preds = %407, %322
  %327 = load i32, ptr %59, align 4, !tbaa !9
  %328 = load i32, ptr %39, align 4, !tbaa !9
  %329 = icmp sle i32 %327, %328
  br i1 %329, label %330, label %410

330:                                              ; preds = %326
  %331 = load i32, ptr %49, align 4, !tbaa !9
  %332 = icmp ne i32 %331, 0
  br i1 %332, label %333, label %338

333:                                              ; preds = %330
  store i32 0, ptr %49, align 4, !tbaa !9
  %334 = load ptr, ptr %18, align 8, !tbaa !5
  %335 = load i32, ptr %59, align 4, !tbaa !9
  %336 = sext i32 %335 to i64
  %337 = getelementptr inbounds i32, ptr %334, i64 %336
  store i32 0, ptr %337, align 4, !tbaa !9
  br label %406

338:                                              ; preds = %330
  %339 = load i32, ptr %59, align 4, !tbaa !9
  %340 = load ptr, ptr %19, align 8, !tbaa !5
  %341 = load i32, ptr %340, align 4, !tbaa !9
  %342 = icmp slt i32 %339, %341
  br i1 %342, label %343, label %392

343:                                              ; preds = %338
  %344 = load ptr, ptr %20, align 8, !tbaa !5
  %345 = load i32, ptr %59, align 4, !tbaa !9
  %346 = add nsw i32 %345, 1
  %347 = load i32, ptr %59, align 4, !tbaa !9
  %348 = load i32, ptr %32, align 4, !tbaa !9
  %349 = mul nsw i32 %347, %348
  %350 = add nsw i32 %346, %349
  %351 = sext i32 %350 to i64
  %352 = getelementptr inbounds double, ptr %344, i64 %351
  %353 = load double, ptr %352, align 8, !tbaa !16
  %354 = fcmp oeq double %353, 0.000000e+00
  br i1 %354, label %355, label %367

355:                                              ; preds = %343
  %356 = load ptr, ptr %18, align 8, !tbaa !5
  %357 = load i32, ptr %59, align 4, !tbaa !9
  %358 = sext i32 %357 to i64
  %359 = getelementptr inbounds i32, ptr %356, i64 %358
  %360 = load i32, ptr %359, align 4, !tbaa !9
  %361 = icmp ne i32 %360, 0
  br i1 %361, label %362, label %366

362:                                              ; preds = %355
  %363 = load ptr, ptr %27, align 8, !tbaa !5
  %364 = load i32, ptr %363, align 4, !tbaa !9
  %365 = add nsw i32 %364, 1
  store i32 %365, ptr %363, align 4, !tbaa !9
  br label %366

366:                                              ; preds = %362, %355
  br label %391

367:                                              ; preds = %343
  store i32 1, ptr %49, align 4, !tbaa !9
  %368 = load ptr, ptr %18, align 8, !tbaa !5
  %369 = load i32, ptr %59, align 4, !tbaa !9
  %370 = sext i32 %369 to i64
  %371 = getelementptr inbounds i32, ptr %368, i64 %370
  %372 = load i32, ptr %371, align 4, !tbaa !9
  %373 = icmp ne i32 %372, 0
  br i1 %373, label %382, label %374

374:                                              ; preds = %367
  %375 = load ptr, ptr %18, align 8, !tbaa !5
  %376 = load i32, ptr %59, align 4, !tbaa !9
  %377 = add nsw i32 %376, 1
  %378 = sext i32 %377 to i64
  %379 = getelementptr inbounds i32, ptr %375, i64 %378
  %380 = load i32, ptr %379, align 4, !tbaa !9
  %381 = icmp ne i32 %380, 0
  br i1 %381, label %382, label %390

382:                                              ; preds = %374, %367
  %383 = load ptr, ptr %18, align 8, !tbaa !5
  %384 = load i32, ptr %59, align 4, !tbaa !9
  %385 = sext i32 %384 to i64
  %386 = getelementptr inbounds i32, ptr %383, i64 %385
  store i32 1, ptr %386, align 4, !tbaa !9
  %387 = load ptr, ptr %27, align 8, !tbaa !5
  %388 = load i32, ptr %387, align 4, !tbaa !9
  %389 = add nsw i32 %388, 2
  store i32 %389, ptr %387, align 4, !tbaa !9
  br label %390

390:                                              ; preds = %382, %374
  br label %391

391:                                              ; preds = %390, %366
  br label %405

392:                                              ; preds = %338
  %393 = load ptr, ptr %18, align 8, !tbaa !5
  %394 = load ptr, ptr %19, align 8, !tbaa !5
  %395 = load i32, ptr %394, align 4, !tbaa !9
  %396 = sext i32 %395 to i64
  %397 = getelementptr inbounds i32, ptr %393, i64 %396
  %398 = load i32, ptr %397, align 4, !tbaa !9
  %399 = icmp ne i32 %398, 0
  br i1 %399, label %400, label %404

400:                                              ; preds = %392
  %401 = load ptr, ptr %27, align 8, !tbaa !5
  %402 = load i32, ptr %401, align 4, !tbaa !9
  %403 = add nsw i32 %402, 1
  store i32 %403, ptr %401, align 4, !tbaa !9
  br label %404

404:                                              ; preds = %400, %392
  br label %405

405:                                              ; preds = %404, %391
  br label %406

406:                                              ; preds = %405, %333
  br label %407

407:                                              ; preds = %406
  %408 = load i32, ptr %59, align 4, !tbaa !9
  %409 = add nsw i32 %408, 1
  store i32 %409, ptr %59, align 4, !tbaa !9
  br label %326, !llvm.loop !18

410:                                              ; preds = %326
  br label %415

411:                                              ; preds = %319
  %412 = load ptr, ptr %19, align 8, !tbaa !5
  %413 = load i32, ptr %412, align 4, !tbaa !9
  %414 = load ptr, ptr %27, align 8, !tbaa !5
  store i32 %413, ptr %414, align 4, !tbaa !9
  br label %415

415:                                              ; preds = %411, %410
  %416 = load ptr, ptr %26, align 8, !tbaa !5
  %417 = load i32, ptr %416, align 4, !tbaa !9
  %418 = load ptr, ptr %27, align 8, !tbaa !5
  %419 = load i32, ptr %418, align 4, !tbaa !9
  %420 = icmp slt i32 %417, %419
  br i1 %420, label %421, label %423

421:                                              ; preds = %415
  %422 = load ptr, ptr %30, align 8, !tbaa !5
  store i32 -11, ptr %422, align 4, !tbaa !9
  br label %423

423:                                              ; preds = %421, %415
  br label %424

424:                                              ; preds = %423, %317
  br label %425

425:                                              ; preds = %424, %296
  br label %426

426:                                              ; preds = %425, %281
  br label %427

427:                                              ; preds = %426, %266
  br label %428

428:                                              ; preds = %427, %251
  br label %429

429:                                              ; preds = %428, %245
  br label %430

430:                                              ; preds = %429, %234
  %431 = load ptr, ptr %30, align 8, !tbaa !5
  %432 = load i32, ptr %431, align 4, !tbaa !9
  %433 = icmp ne i32 %432, 0
  br i1 %433, label %434, label %439

434:                                              ; preds = %430
  %435 = load ptr, ptr %30, align 8, !tbaa !5
  %436 = load i32, ptr %435, align 4, !tbaa !9
  %437 = sub nsw i32 0, %436
  store i32 %437, ptr %39, align 4, !tbaa !9
  %438 = call i32 @xerbla_(ptr noundef @.str.6, ptr noundef %39, i32 noundef 7)
  store i32 1, ptr %93, align 4
  br label %4816

439:                                              ; preds = %430
  %440 = load i32, ptr %85, align 4, !tbaa !9
  %441 = icmp ne i32 %440, 0
  br i1 %441, label %442, label %443

442:                                              ; preds = %439
  store i32 1, ptr %93, align 4
  br label %4816

443:                                              ; preds = %439
  br label %444

444:                                              ; preds = %443
  %445 = load ptr, ptr %19, align 8, !tbaa !5
  %446 = load i32, ptr %445, align 4, !tbaa !9
  %447 = icmp eq i32 %446, 0
  br i1 %447, label %448, label %449

448:                                              ; preds = %444
  store i32 1, ptr %93, align 4
  br label %4816

449:                                              ; preds = %444
  %450 = load i32, ptr %55, align 4, !tbaa !9
  %451 = icmp ne i32 %450, 0
  br i1 %451, label %452, label %486

452:                                              ; preds = %449
  %453 = load ptr, ptr %29, align 8, !tbaa !5
  %454 = load i32, ptr %453, align 4, !tbaa !9
  %455 = load ptr, ptr %19, align 8, !tbaa !5
  %456 = load i32, ptr %455, align 4, !tbaa !9
  %457 = load ptr, ptr %19, align 8, !tbaa !5
  %458 = load i32, ptr %457, align 4, !tbaa !9
  %459 = shl i32 %458, 4
  %460 = add nsw i32 %456, %459
  %461 = icmp sge i32 %454, %460
  br i1 %461, label %462, label %486

462:                                              ; preds = %452
  %463 = load ptr, ptr %29, align 8, !tbaa !5
  %464 = load i32, ptr %463, align 4, !tbaa !9
  %465 = load ptr, ptr %19, align 8, !tbaa !5
  %466 = load i32, ptr %465, align 4, !tbaa !9
  %467 = sub nsw i32 %464, %466
  %468 = load ptr, ptr %19, align 8, !tbaa !5
  %469 = load i32, ptr %468, align 4, !tbaa !9
  %470 = shl i32 %469, 1
  %471 = sdiv i32 %467, %470
  store i32 %471, ptr %72, align 4, !tbaa !9
  %472 = load i32, ptr %72, align 4, !tbaa !9
  %473 = icmp sle i32 %472, 128
  br i1 %473, label %474, label %476

474:                                              ; preds = %462
  %475 = load i32, ptr %72, align 4, !tbaa !9
  br label %477

476:                                              ; preds = %462
  br label %477

477:                                              ; preds = %476, %474
  %478 = phi i32 [ %475, %474 ], [ 128, %476 ]
  store i32 %478, ptr %72, align 4, !tbaa !9
  %479 = load i32, ptr %72, align 4, !tbaa !9
  %480 = shl i32 %479, 1
  %481 = add nsw i32 %480, 1
  store i32 %481, ptr %39, align 4, !tbaa !9
  %482 = load ptr, ptr %19, align 8, !tbaa !5
  %483 = load ptr, ptr %28, align 8, !tbaa !5
  %484 = getelementptr inbounds double, ptr %483, i64 1
  %485 = load ptr, ptr %19, align 8, !tbaa !5
  call void @dlaset_(ptr noundef @.str.7, ptr noundef %482, ptr noundef %39, ptr noundef @c_b17, ptr noundef @c_b17, ptr noundef %484, ptr noundef %485)
  br label %487

486:                                              ; preds = %452, %449
  store i32 1, ptr %72, align 4, !tbaa !9
  br label %487

487:                                              ; preds = %486, %477
  %488 = call double @dlamch_(ptr noundef @.str.8)
  store double %488, ptr %52, align 8, !tbaa !16
  %489 = load double, ptr %52, align 8, !tbaa !16
  %490 = fdiv double 1.000000e+00, %489
  store double %490, ptr %53, align 8, !tbaa !16
  call void @dlabad_(ptr noundef %52, ptr noundef %53)
  %491 = call double @dlamch_(ptr noundef @.str.9)
  store double %491, ptr %87, align 8, !tbaa !16
  %492 = load double, ptr %52, align 8, !tbaa !16
  %493 = load ptr, ptr %19, align 8, !tbaa !5
  %494 = load i32, ptr %493, align 4, !tbaa !9
  %495 = sitofp i32 %494 to double
  %496 = load double, ptr %87, align 8, !tbaa !16
  %497 = fdiv double %495, %496
  %498 = fmul double %492, %497
  store double %498, ptr %84, align 8, !tbaa !16
  %499 = load double, ptr %87, align 8, !tbaa !16
  %500 = fsub double 1.000000e+00, %499
  %501 = load double, ptr %84, align 8, !tbaa !16
  %502 = fdiv double %500, %501
  store double %502, ptr %80, align 8, !tbaa !16
  %503 = load ptr, ptr %28, align 8, !tbaa !5
  %504 = getelementptr inbounds double, ptr %503, i64 1
  store double 0.000000e+00, ptr %504, align 8, !tbaa !16
  %505 = load ptr, ptr %19, align 8, !tbaa !5
  %506 = load i32, ptr %505, align 4, !tbaa !9
  store i32 %506, ptr %39, align 4, !tbaa !9
  store i32 2, ptr %59, align 4, !tbaa !9
  br label %507

507:                                              ; preds = %551, %487
  %508 = load i32, ptr %59, align 4, !tbaa !9
  %509 = load i32, ptr %39, align 4, !tbaa !9
  %510 = icmp sle i32 %508, %509
  br i1 %510, label %511, label %554

511:                                              ; preds = %507
  %512 = load ptr, ptr %28, align 8, !tbaa !5
  %513 = load i32, ptr %59, align 4, !tbaa !9
  %514 = sext i32 %513 to i64
  %515 = getelementptr inbounds double, ptr %512, i64 %514
  store double 0.000000e+00, ptr %515, align 8, !tbaa !16
  %516 = load i32, ptr %59, align 4, !tbaa !9
  %517 = sub nsw i32 %516, 1
  store i32 %517, ptr %40, align 4, !tbaa !9
  store i32 1, ptr %58, align 4, !tbaa !9
  br label %518

518:                                              ; preds = %547, %511
  %519 = load i32, ptr %58, align 4, !tbaa !9
  %520 = load i32, ptr %40, align 4, !tbaa !9
  %521 = icmp sle i32 %519, %520
  br i1 %521, label %522, label %550

522:                                              ; preds = %518
  %523 = load ptr, ptr %20, align 8, !tbaa !5
  %524 = load i32, ptr %58, align 4, !tbaa !9
  %525 = load i32, ptr %59, align 4, !tbaa !9
  %526 = load i32, ptr %32, align 4, !tbaa !9
  %527 = mul nsw i32 %525, %526
  %528 = add nsw i32 %524, %527
  %529 = sext i32 %528 to i64
  %530 = getelementptr inbounds double, ptr %523, i64 %529
  %531 = load double, ptr %530, align 8, !tbaa !16
  store double %531, ptr %42, align 8, !tbaa !16
  %532 = load double, ptr %42, align 8, !tbaa !16
  %533 = fcmp oge double %532, 0.000000e+00
  br i1 %533, label %534, label %536

534:                                              ; preds = %522
  %535 = load double, ptr %42, align 8, !tbaa !16
  br label %539

536:                                              ; preds = %522
  %537 = load double, ptr %42, align 8, !tbaa !16
  %538 = fneg double %537
  br label %539

539:                                              ; preds = %536, %534
  %540 = phi double [ %535, %534 ], [ %538, %536 ]
  %541 = load ptr, ptr %28, align 8, !tbaa !5
  %542 = load i32, ptr %59, align 4, !tbaa !9
  %543 = sext i32 %542 to i64
  %544 = getelementptr inbounds double, ptr %541, i64 %543
  %545 = load double, ptr %544, align 8, !tbaa !16
  %546 = fadd double %545, %540
  store double %546, ptr %544, align 8, !tbaa !16
  br label %547

547:                                              ; preds = %539
  %548 = load i32, ptr %58, align 4, !tbaa !9
  %549 = add nsw i32 %548, 1
  store i32 %549, ptr %58, align 4, !tbaa !9
  br label %518, !llvm.loop !19

550:                                              ; preds = %518
  br label %551

551:                                              ; preds = %550
  %552 = load i32, ptr %59, align 4, !tbaa !9
  %553 = add nsw i32 %552, 1
  store i32 %553, ptr %59, align 4, !tbaa !9
  br label %507, !llvm.loop !20

554:                                              ; preds = %507
  %555 = load i32, ptr %81, align 4, !tbaa !9
  %556 = icmp ne i32 %555, 0
  br i1 %556, label %557, label %2430

557:                                              ; preds = %554
  store i32 2, ptr %77, align 4, !tbaa !9
  %558 = load i32, ptr %72, align 4, !tbaa !9
  %559 = icmp sgt i32 %558, 2
  br i1 %559, label %560, label %562

560:                                              ; preds = %557
  %561 = load i32, ptr %72, align 4, !tbaa !9
  store i32 %561, ptr %77, align 4, !tbaa !9
  br label %562

562:                                              ; preds = %560, %557
  store i32 0, ptr %75, align 4, !tbaa !9
  %563 = load ptr, ptr %27, align 8, !tbaa !5
  %564 = load i32, ptr %563, align 4, !tbaa !9
  store i32 %564, ptr %76, align 4, !tbaa !9
  %565 = load ptr, ptr %19, align 8, !tbaa !5
  %566 = load i32, ptr %565, align 4, !tbaa !9
  store i32 %566, ptr %74, align 4, !tbaa !9
  br label %567

567:                                              ; preds = %2426, %562
  %568 = load i32, ptr %74, align 4, !tbaa !9
  %569 = icmp sge i32 %568, 1
  br i1 %569, label %570, label %2429

570:                                              ; preds = %567
  %571 = load i32, ptr %75, align 4, !tbaa !9
  %572 = icmp eq i32 %571, -1
  br i1 %572, label %573, label %574

573:                                              ; preds = %570
  store i32 1, ptr %75, align 4, !tbaa !9
  br label %2425

574:                                              ; preds = %570
  %575 = load i32, ptr %74, align 4, !tbaa !9
  %576 = icmp eq i32 %575, 1
  br i1 %576, label %577, label %578

577:                                              ; preds = %574
  store i32 0, ptr %75, align 4, !tbaa !9
  br label %593

578:                                              ; preds = %574
  %579 = load ptr, ptr %20, align 8, !tbaa !5
  %580 = load i32, ptr %74, align 4, !tbaa !9
  %581 = load i32, ptr %74, align 4, !tbaa !9
  %582 = sub nsw i32 %581, 1
  %583 = load i32, ptr %32, align 4, !tbaa !9
  %584 = mul nsw i32 %582, %583
  %585 = add nsw i32 %580, %584
  %586 = sext i32 %585 to i64
  %587 = getelementptr inbounds double, ptr %579, i64 %586
  %588 = load double, ptr %587, align 8, !tbaa !16
  %589 = fcmp oeq double %588, 0.000000e+00
  br i1 %589, label %590, label %591

590:                                              ; preds = %578
  store i32 0, ptr %75, align 4, !tbaa !9
  br label %592

591:                                              ; preds = %578
  store i32 -1, ptr %75, align 4, !tbaa !9
  br label %592

592:                                              ; preds = %591, %590
  br label %593

593:                                              ; preds = %592, %577
  br label %594

594:                                              ; preds = %593
  %595 = load i32, ptr %67, align 4, !tbaa !9
  %596 = icmp ne i32 %595, 0
  br i1 %596, label %597, label %620

597:                                              ; preds = %594
  %598 = load i32, ptr %75, align 4, !tbaa !9
  %599 = icmp eq i32 %598, 0
  br i1 %599, label %600, label %609

600:                                              ; preds = %597
  %601 = load ptr, ptr %18, align 8, !tbaa !5
  %602 = load i32, ptr %74, align 4, !tbaa !9
  %603 = sext i32 %602 to i64
  %604 = getelementptr inbounds i32, ptr %601, i64 %603
  %605 = load i32, ptr %604, align 4, !tbaa !9
  %606 = icmp ne i32 %605, 0
  br i1 %606, label %608, label %607

607:                                              ; preds = %600
  br label %2425

608:                                              ; preds = %600
  br label %619

609:                                              ; preds = %597
  %610 = load ptr, ptr %18, align 8, !tbaa !5
  %611 = load i32, ptr %74, align 4, !tbaa !9
  %612 = sub nsw i32 %611, 1
  %613 = sext i32 %612 to i64
  %614 = getelementptr inbounds i32, ptr %610, i64 %613
  %615 = load i32, ptr %614, align 4, !tbaa !9
  %616 = icmp ne i32 %615, 0
  br i1 %616, label %618, label %617

617:                                              ; preds = %609
  br label %2425

618:                                              ; preds = %609
  br label %619

619:                                              ; preds = %618, %608
  br label %620

620:                                              ; preds = %619, %594
  %621 = load ptr, ptr %20, align 8, !tbaa !5
  %622 = load i32, ptr %74, align 4, !tbaa !9
  %623 = load i32, ptr %74, align 4, !tbaa !9
  %624 = load i32, ptr %32, align 4, !tbaa !9
  %625 = mul nsw i32 %623, %624
  %626 = add nsw i32 %622, %625
  %627 = sext i32 %626 to i64
  %628 = getelementptr inbounds double, ptr %621, i64 %627
  %629 = load double, ptr %628, align 8, !tbaa !16
  store double %629, ptr %79, align 8, !tbaa !16
  store double 0.000000e+00, ptr %78, align 8, !tbaa !16
  %630 = load i32, ptr %75, align 4, !tbaa !9
  %631 = icmp ne i32 %630, 0
  br i1 %631, label %632, label %674

632:                                              ; preds = %620
  %633 = load ptr, ptr %20, align 8, !tbaa !5
  %634 = load i32, ptr %74, align 4, !tbaa !9
  %635 = load i32, ptr %74, align 4, !tbaa !9
  %636 = sub nsw i32 %635, 1
  %637 = load i32, ptr %32, align 4, !tbaa !9
  %638 = mul nsw i32 %636, %637
  %639 = add nsw i32 %634, %638
  %640 = sext i32 %639 to i64
  %641 = getelementptr inbounds double, ptr %633, i64 %640
  %642 = load double, ptr %641, align 8, !tbaa !16
  store double %642, ptr %42, align 8, !tbaa !16
  %643 = load double, ptr %42, align 8, !tbaa !16
  %644 = fcmp oge double %643, 0.000000e+00
  br i1 %644, label %645, label %647

645:                                              ; preds = %632
  %646 = load double, ptr %42, align 8, !tbaa !16
  br label %650

647:                                              ; preds = %632
  %648 = load double, ptr %42, align 8, !tbaa !16
  %649 = fneg double %648
  br label %650

650:                                              ; preds = %647, %645
  %651 = phi double [ %646, %645 ], [ %649, %647 ]
  %652 = call double @sqrt(double noundef %651) #4
  %653 = load ptr, ptr %20, align 8, !tbaa !5
  %654 = load i32, ptr %74, align 4, !tbaa !9
  %655 = sub nsw i32 %654, 1
  %656 = load i32, ptr %74, align 4, !tbaa !9
  %657 = load i32, ptr %32, align 4, !tbaa !9
  %658 = mul nsw i32 %656, %657
  %659 = add nsw i32 %655, %658
  %660 = sext i32 %659 to i64
  %661 = getelementptr inbounds double, ptr %653, i64 %660
  %662 = load double, ptr %661, align 8, !tbaa !16
  store double %662, ptr %43, align 8, !tbaa !16
  %663 = load double, ptr %43, align 8, !tbaa !16
  %664 = fcmp oge double %663, 0.000000e+00
  br i1 %664, label %665, label %667

665:                                              ; preds = %650
  %666 = load double, ptr %43, align 8, !tbaa !16
  br label %670

667:                                              ; preds = %650
  %668 = load double, ptr %43, align 8, !tbaa !16
  %669 = fneg double %668
  br label %670

670:                                              ; preds = %667, %665
  %671 = phi double [ %666, %665 ], [ %669, %667 ]
  %672 = call double @sqrt(double noundef %671) #4
  %673 = fmul double %652, %672
  store double %673, ptr %78, align 8, !tbaa !16
  br label %674

674:                                              ; preds = %670, %620
  %675 = load double, ptr %87, align 8, !tbaa !16
  %676 = load double, ptr %79, align 8, !tbaa !16
  %677 = fcmp oge double %676, 0.000000e+00
  br i1 %677, label %678, label %680

678:                                              ; preds = %674
  %679 = load double, ptr %79, align 8, !tbaa !16
  br label %683

680:                                              ; preds = %674
  %681 = load double, ptr %79, align 8, !tbaa !16
  %682 = fneg double %681
  br label %683

683:                                              ; preds = %680, %678
  %684 = phi double [ %679, %678 ], [ %682, %680 ]
  %685 = load double, ptr %78, align 8, !tbaa !16
  %686 = fcmp oge double %685, 0.000000e+00
  br i1 %686, label %687, label %689

687:                                              ; preds = %683
  %688 = load double, ptr %78, align 8, !tbaa !16
  br label %692

689:                                              ; preds = %683
  %690 = load double, ptr %78, align 8, !tbaa !16
  %691 = fneg double %690
  br label %692

692:                                              ; preds = %689, %687
  %693 = phi double [ %688, %687 ], [ %691, %689 ]
  %694 = fadd double %684, %693
  %695 = fmul double %675, %694
  store double %695, ptr %42, align 8, !tbaa !16
  %696 = load double, ptr %42, align 8, !tbaa !16
  %697 = load double, ptr %84, align 8, !tbaa !16
  %698 = fcmp oge double %696, %697
  br i1 %698, label %699, label %701

699:                                              ; preds = %692
  %700 = load double, ptr %42, align 8, !tbaa !16
  br label %703

701:                                              ; preds = %692
  %702 = load double, ptr %84, align 8, !tbaa !16
  br label %703

703:                                              ; preds = %701, %699
  %704 = phi double [ %700, %699 ], [ %702, %701 ]
  store double %704, ptr %54, align 8, !tbaa !16
  %705 = load i32, ptr %75, align 4, !tbaa !9
  %706 = icmp eq i32 %705, 0
  br i1 %706, label %707, label %1201

707:                                              ; preds = %703
  %708 = load ptr, ptr %28, align 8, !tbaa !5
  %709 = load i32, ptr %74, align 4, !tbaa !9
  %710 = load i32, ptr %77, align 4, !tbaa !9
  %711 = load ptr, ptr %19, align 8, !tbaa !5
  %712 = load i32, ptr %711, align 4, !tbaa !9
  %713 = mul nsw i32 %710, %712
  %714 = add nsw i32 %709, %713
  %715 = sext i32 %714 to i64
  %716 = getelementptr inbounds double, ptr %708, i64 %715
  store double 1.000000e+00, ptr %716, align 8, !tbaa !16
  %717 = load i32, ptr %74, align 4, !tbaa !9
  %718 = sub nsw i32 %717, 1
  store i32 %718, ptr %39, align 4, !tbaa !9
  store i32 1, ptr %60, align 4, !tbaa !9
  br label %719

719:                                              ; preds = %743, %707
  %720 = load i32, ptr %60, align 4, !tbaa !9
  %721 = load i32, ptr %39, align 4, !tbaa !9
  %722 = icmp sle i32 %720, %721
  br i1 %722, label %723, label %746

723:                                              ; preds = %719
  %724 = load ptr, ptr %20, align 8, !tbaa !5
  %725 = load i32, ptr %60, align 4, !tbaa !9
  %726 = load i32, ptr %74, align 4, !tbaa !9
  %727 = load i32, ptr %32, align 4, !tbaa !9
  %728 = mul nsw i32 %726, %727
  %729 = add nsw i32 %725, %728
  %730 = sext i32 %729 to i64
  %731 = getelementptr inbounds double, ptr %724, i64 %730
  %732 = load double, ptr %731, align 8, !tbaa !16
  %733 = fneg double %732
  %734 = load ptr, ptr %28, align 8, !tbaa !5
  %735 = load i32, ptr %60, align 4, !tbaa !9
  %736 = load i32, ptr %77, align 4, !tbaa !9
  %737 = load ptr, ptr %19, align 8, !tbaa !5
  %738 = load i32, ptr %737, align 4, !tbaa !9
  %739 = mul nsw i32 %736, %738
  %740 = add nsw i32 %735, %739
  %741 = sext i32 %740 to i64
  %742 = getelementptr inbounds double, ptr %734, i64 %741
  store double %733, ptr %742, align 8, !tbaa !16
  br label %743

743:                                              ; preds = %723
  %744 = load i32, ptr %60, align 4, !tbaa !9
  %745 = add nsw i32 %744, 1
  store i32 %745, ptr %60, align 4, !tbaa !9
  br label %719, !llvm.loop !21

746:                                              ; preds = %719
  %747 = load i32, ptr %74, align 4, !tbaa !9
  %748 = sub nsw i32 %747, 1
  store i32 %748, ptr %57, align 4, !tbaa !9
  %749 = load i32, ptr %74, align 4, !tbaa !9
  %750 = sub nsw i32 %749, 1
  store i32 %750, ptr %59, align 4, !tbaa !9
  br label %751

751:                                              ; preds = %1018, %746
  %752 = load i32, ptr %59, align 4, !tbaa !9
  %753 = icmp sge i32 %752, 1
  br i1 %753, label %754, label %1021

754:                                              ; preds = %751
  %755 = load i32, ptr %59, align 4, !tbaa !9
  %756 = load i32, ptr %57, align 4, !tbaa !9
  %757 = icmp sgt i32 %755, %756
  br i1 %757, label %758, label %759

758:                                              ; preds = %754
  br label %1017

759:                                              ; preds = %754
  %760 = load i32, ptr %59, align 4, !tbaa !9
  store i32 %760, ptr %68, align 4, !tbaa !9
  %761 = load i32, ptr %59, align 4, !tbaa !9
  store i32 %761, ptr %69, align 4, !tbaa !9
  %762 = load i32, ptr %59, align 4, !tbaa !9
  %763 = sub nsw i32 %762, 1
  store i32 %763, ptr %57, align 4, !tbaa !9
  %764 = load i32, ptr %59, align 4, !tbaa !9
  %765 = icmp sgt i32 %764, 1
  br i1 %765, label %766, label %784

766:                                              ; preds = %759
  %767 = load ptr, ptr %20, align 8, !tbaa !5
  %768 = load i32, ptr %59, align 4, !tbaa !9
  %769 = load i32, ptr %59, align 4, !tbaa !9
  %770 = sub nsw i32 %769, 1
  %771 = load i32, ptr %32, align 4, !tbaa !9
  %772 = mul nsw i32 %770, %771
  %773 = add nsw i32 %768, %772
  %774 = sext i32 %773 to i64
  %775 = getelementptr inbounds double, ptr %767, i64 %774
  %776 = load double, ptr %775, align 8, !tbaa !16
  %777 = fcmp une double %776, 0.000000e+00
  br i1 %777, label %778, label %783

778:                                              ; preds = %766
  %779 = load i32, ptr %59, align 4, !tbaa !9
  %780 = sub nsw i32 %779, 1
  store i32 %780, ptr %68, align 4, !tbaa !9
  %781 = load i32, ptr %59, align 4, !tbaa !9
  %782 = sub nsw i32 %781, 2
  store i32 %782, ptr %57, align 4, !tbaa !9
  br label %783

783:                                              ; preds = %778, %766
  br label %784

784:                                              ; preds = %783, %759
  %785 = load i32, ptr %68, align 4, !tbaa !9
  %786 = load i32, ptr %69, align 4, !tbaa !9
  %787 = icmp eq i32 %785, %786
  br i1 %787, label %788, label %874

788:                                              ; preds = %784
  %789 = load ptr, ptr %20, align 8, !tbaa !5
  %790 = load i32, ptr %59, align 4, !tbaa !9
  %791 = load i32, ptr %59, align 4, !tbaa !9
  %792 = load i32, ptr %32, align 4, !tbaa !9
  %793 = mul nsw i32 %791, %792
  %794 = add nsw i32 %790, %793
  %795 = sext i32 %794 to i64
  %796 = getelementptr inbounds double, ptr %789, i64 %795
  %797 = load ptr, ptr %21, align 8, !tbaa !5
  %798 = load ptr, ptr %28, align 8, !tbaa !5
  %799 = load i32, ptr %59, align 4, !tbaa !9
  %800 = load i32, ptr %77, align 4, !tbaa !9
  %801 = load ptr, ptr %19, align 8, !tbaa !5
  %802 = load i32, ptr %801, align 4, !tbaa !9
  %803 = mul nsw i32 %800, %802
  %804 = add nsw i32 %799, %803
  %805 = sext i32 %804 to i64
  %806 = getelementptr inbounds double, ptr %798, i64 %805
  %807 = load ptr, ptr %19, align 8, !tbaa !5
  %808 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 0
  call void @dlaln2_(ptr noundef @c_false, ptr noundef @c__1, ptr noundef @c__1, ptr noundef %54, ptr noundef @c_b29, ptr noundef %796, ptr noundef %797, ptr noundef @c_b29, ptr noundef @c_b29, ptr noundef %806, ptr noundef %807, ptr noundef %79, ptr noundef @c_b17, ptr noundef %808, ptr noundef @c__2, ptr noundef %61, ptr noundef %70, ptr noundef %51)
  %809 = load double, ptr %70, align 8, !tbaa !16
  %810 = fcmp ogt double %809, 1.000000e+00
  br i1 %810, label %811, label %830

811:                                              ; preds = %788
  %812 = load ptr, ptr %28, align 8, !tbaa !5
  %813 = load i32, ptr %59, align 4, !tbaa !9
  %814 = sext i32 %813 to i64
  %815 = getelementptr inbounds double, ptr %812, i64 %814
  %816 = load double, ptr %815, align 8, !tbaa !16
  %817 = load double, ptr %80, align 8, !tbaa !16
  %818 = load double, ptr %70, align 8, !tbaa !16
  %819 = fdiv double %817, %818
  %820 = fcmp ogt double %816, %819
  br i1 %820, label %821, label %829

821:                                              ; preds = %811
  %822 = load double, ptr %70, align 8, !tbaa !16
  %823 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 0
  %824 = load double, ptr %823, align 16, !tbaa !16
  %825 = fdiv double %824, %822
  store double %825, ptr %823, align 16, !tbaa !16
  %826 = load double, ptr %70, align 8, !tbaa !16
  %827 = load double, ptr %61, align 8, !tbaa !16
  %828 = fdiv double %827, %826
  store double %828, ptr %61, align 8, !tbaa !16
  br label %829

829:                                              ; preds = %821, %811
  br label %830

830:                                              ; preds = %829, %788
  %831 = load double, ptr %61, align 8, !tbaa !16
  %832 = fcmp une double %831, 1.000000e+00
  br i1 %832, label %833, label %842

833:                                              ; preds = %830
  %834 = load ptr, ptr %28, align 8, !tbaa !5
  %835 = load i32, ptr %77, align 4, !tbaa !9
  %836 = load ptr, ptr %19, align 8, !tbaa !5
  %837 = load i32, ptr %836, align 4, !tbaa !9
  %838 = mul nsw i32 %835, %837
  %839 = add nsw i32 %838, 1
  %840 = sext i32 %839 to i64
  %841 = getelementptr inbounds double, ptr %834, i64 %840
  call void @dscal_(ptr noundef %74, ptr noundef %61, ptr noundef %841, ptr noundef @c__1)
  br label %842

842:                                              ; preds = %833, %830
  %843 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 0
  %844 = load double, ptr %843, align 16, !tbaa !16
  %845 = load ptr, ptr %28, align 8, !tbaa !5
  %846 = load i32, ptr %59, align 4, !tbaa !9
  %847 = load i32, ptr %77, align 4, !tbaa !9
  %848 = load ptr, ptr %19, align 8, !tbaa !5
  %849 = load i32, ptr %848, align 4, !tbaa !9
  %850 = mul nsw i32 %847, %849
  %851 = add nsw i32 %846, %850
  %852 = sext i32 %851 to i64
  %853 = getelementptr inbounds double, ptr %845, i64 %852
  store double %844, ptr %853, align 8, !tbaa !16
  %854 = load i32, ptr %59, align 4, !tbaa !9
  %855 = sub nsw i32 %854, 1
  store i32 %855, ptr %39, align 4, !tbaa !9
  %856 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 0
  %857 = load double, ptr %856, align 16, !tbaa !16
  %858 = fneg double %857
  store double %858, ptr %42, align 8, !tbaa !16
  %859 = load ptr, ptr %20, align 8, !tbaa !5
  %860 = load i32, ptr %59, align 4, !tbaa !9
  %861 = load i32, ptr %32, align 4, !tbaa !9
  %862 = mul nsw i32 %860, %861
  %863 = add nsw i32 %862, 1
  %864 = sext i32 %863 to i64
  %865 = getelementptr inbounds double, ptr %859, i64 %864
  %866 = load ptr, ptr %28, align 8, !tbaa !5
  %867 = load i32, ptr %77, align 4, !tbaa !9
  %868 = load ptr, ptr %19, align 8, !tbaa !5
  %869 = load i32, ptr %868, align 4, !tbaa !9
  %870 = mul nsw i32 %867, %869
  %871 = add nsw i32 %870, 1
  %872 = sext i32 %871 to i64
  %873 = getelementptr inbounds double, ptr %866, i64 %872
  call void @daxpy_(ptr noundef %39, ptr noundef %42, ptr noundef %865, ptr noundef @c__1, ptr noundef %873, ptr noundef @c__1)
  br label %1016

874:                                              ; preds = %784
  %875 = load ptr, ptr %20, align 8, !tbaa !5
  %876 = load i32, ptr %59, align 4, !tbaa !9
  %877 = sub nsw i32 %876, 1
  %878 = load i32, ptr %59, align 4, !tbaa !9
  %879 = sub nsw i32 %878, 1
  %880 = load i32, ptr %32, align 4, !tbaa !9
  %881 = mul nsw i32 %879, %880
  %882 = add nsw i32 %877, %881
  %883 = sext i32 %882 to i64
  %884 = getelementptr inbounds double, ptr %875, i64 %883
  %885 = load ptr, ptr %21, align 8, !tbaa !5
  %886 = load ptr, ptr %28, align 8, !tbaa !5
  %887 = load i32, ptr %59, align 4, !tbaa !9
  %888 = sub nsw i32 %887, 1
  %889 = load i32, ptr %77, align 4, !tbaa !9
  %890 = load ptr, ptr %19, align 8, !tbaa !5
  %891 = load i32, ptr %890, align 4, !tbaa !9
  %892 = mul nsw i32 %889, %891
  %893 = add nsw i32 %888, %892
  %894 = sext i32 %893 to i64
  %895 = getelementptr inbounds double, ptr %886, i64 %894
  %896 = load ptr, ptr %19, align 8, !tbaa !5
  %897 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 0
  call void @dlaln2_(ptr noundef @c_false, ptr noundef @c__2, ptr noundef @c__1, ptr noundef %54, ptr noundef @c_b29, ptr noundef %884, ptr noundef %885, ptr noundef @c_b29, ptr noundef @c_b29, ptr noundef %895, ptr noundef %896, ptr noundef %79, ptr noundef @c_b17, ptr noundef %897, ptr noundef @c__2, ptr noundef %61, ptr noundef %70, ptr noundef %51)
  %898 = load double, ptr %70, align 8, !tbaa !16
  %899 = fcmp ogt double %898, 1.000000e+00
  br i1 %899, label %900, label %939

900:                                              ; preds = %874
  %901 = load ptr, ptr %28, align 8, !tbaa !5
  %902 = load i32, ptr %59, align 4, !tbaa !9
  %903 = sub nsw i32 %902, 1
  %904 = sext i32 %903 to i64
  %905 = getelementptr inbounds double, ptr %901, i64 %904
  %906 = load double, ptr %905, align 8, !tbaa !16
  store double %906, ptr %42, align 8, !tbaa !16
  %907 = load ptr, ptr %28, align 8, !tbaa !5
  %908 = load i32, ptr %59, align 4, !tbaa !9
  %909 = sext i32 %908 to i64
  %910 = getelementptr inbounds double, ptr %907, i64 %909
  %911 = load double, ptr %910, align 8, !tbaa !16
  store double %911, ptr %43, align 8, !tbaa !16
  %912 = load double, ptr %42, align 8, !tbaa !16
  %913 = load double, ptr %43, align 8, !tbaa !16
  %914 = fcmp oge double %912, %913
  br i1 %914, label %915, label %917

915:                                              ; preds = %900
  %916 = load double, ptr %42, align 8, !tbaa !16
  br label %919

917:                                              ; preds = %900
  %918 = load double, ptr %43, align 8, !tbaa !16
  br label %919

919:                                              ; preds = %917, %915
  %920 = phi double [ %916, %915 ], [ %918, %917 ]
  store double %920, ptr %47, align 8, !tbaa !16
  %921 = load double, ptr %47, align 8, !tbaa !16
  %922 = load double, ptr %80, align 8, !tbaa !16
  %923 = load double, ptr %70, align 8, !tbaa !16
  %924 = fdiv double %922, %923
  %925 = fcmp ogt double %921, %924
  br i1 %925, label %926, label %938

926:                                              ; preds = %919
  %927 = load double, ptr %70, align 8, !tbaa !16
  %928 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 0
  %929 = load double, ptr %928, align 16, !tbaa !16
  %930 = fdiv double %929, %927
  store double %930, ptr %928, align 16, !tbaa !16
  %931 = load double, ptr %70, align 8, !tbaa !16
  %932 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 1
  %933 = load double, ptr %932, align 8, !tbaa !16
  %934 = fdiv double %933, %931
  store double %934, ptr %932, align 8, !tbaa !16
  %935 = load double, ptr %70, align 8, !tbaa !16
  %936 = load double, ptr %61, align 8, !tbaa !16
  %937 = fdiv double %936, %935
  store double %937, ptr %61, align 8, !tbaa !16
  br label %938

938:                                              ; preds = %926, %919
  br label %939

939:                                              ; preds = %938, %874
  %940 = load double, ptr %61, align 8, !tbaa !16
  %941 = fcmp une double %940, 1.000000e+00
  br i1 %941, label %942, label %951

942:                                              ; preds = %939
  %943 = load ptr, ptr %28, align 8, !tbaa !5
  %944 = load i32, ptr %77, align 4, !tbaa !9
  %945 = load ptr, ptr %19, align 8, !tbaa !5
  %946 = load i32, ptr %945, align 4, !tbaa !9
  %947 = mul nsw i32 %944, %946
  %948 = add nsw i32 %947, 1
  %949 = sext i32 %948 to i64
  %950 = getelementptr inbounds double, ptr %943, i64 %949
  call void @dscal_(ptr noundef %74, ptr noundef %61, ptr noundef %950, ptr noundef @c__1)
  br label %951

951:                                              ; preds = %942, %939
  %952 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 0
  %953 = load double, ptr %952, align 16, !tbaa !16
  %954 = load ptr, ptr %28, align 8, !tbaa !5
  %955 = load i32, ptr %59, align 4, !tbaa !9
  %956 = sub nsw i32 %955, 1
  %957 = load i32, ptr %77, align 4, !tbaa !9
  %958 = load ptr, ptr %19, align 8, !tbaa !5
  %959 = load i32, ptr %958, align 4, !tbaa !9
  %960 = mul nsw i32 %957, %959
  %961 = add nsw i32 %956, %960
  %962 = sext i32 %961 to i64
  %963 = getelementptr inbounds double, ptr %954, i64 %962
  store double %953, ptr %963, align 8, !tbaa !16
  %964 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 1
  %965 = load double, ptr %964, align 8, !tbaa !16
  %966 = load ptr, ptr %28, align 8, !tbaa !5
  %967 = load i32, ptr %59, align 4, !tbaa !9
  %968 = load i32, ptr %77, align 4, !tbaa !9
  %969 = load ptr, ptr %19, align 8, !tbaa !5
  %970 = load i32, ptr %969, align 4, !tbaa !9
  %971 = mul nsw i32 %968, %970
  %972 = add nsw i32 %967, %971
  %973 = sext i32 %972 to i64
  %974 = getelementptr inbounds double, ptr %966, i64 %973
  store double %965, ptr %974, align 8, !tbaa !16
  %975 = load i32, ptr %59, align 4, !tbaa !9
  %976 = sub nsw i32 %975, 2
  store i32 %976, ptr %39, align 4, !tbaa !9
  %977 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 0
  %978 = load double, ptr %977, align 16, !tbaa !16
  %979 = fneg double %978
  store double %979, ptr %42, align 8, !tbaa !16
  %980 = load ptr, ptr %20, align 8, !tbaa !5
  %981 = load i32, ptr %59, align 4, !tbaa !9
  %982 = sub nsw i32 %981, 1
  %983 = load i32, ptr %32, align 4, !tbaa !9
  %984 = mul nsw i32 %982, %983
  %985 = add nsw i32 %984, 1
  %986 = sext i32 %985 to i64
  %987 = getelementptr inbounds double, ptr %980, i64 %986
  %988 = load ptr, ptr %28, align 8, !tbaa !5
  %989 = load i32, ptr %77, align 4, !tbaa !9
  %990 = load ptr, ptr %19, align 8, !tbaa !5
  %991 = load i32, ptr %990, align 4, !tbaa !9
  %992 = mul nsw i32 %989, %991
  %993 = add nsw i32 %992, 1
  %994 = sext i32 %993 to i64
  %995 = getelementptr inbounds double, ptr %988, i64 %994
  call void @daxpy_(ptr noundef %39, ptr noundef %42, ptr noundef %987, ptr noundef @c__1, ptr noundef %995, ptr noundef @c__1)
  %996 = load i32, ptr %59, align 4, !tbaa !9
  %997 = sub nsw i32 %996, 2
  store i32 %997, ptr %39, align 4, !tbaa !9
  %998 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 1
  %999 = load double, ptr %998, align 8, !tbaa !16
  %1000 = fneg double %999
  store double %1000, ptr %42, align 8, !tbaa !16
  %1001 = load ptr, ptr %20, align 8, !tbaa !5
  %1002 = load i32, ptr %59, align 4, !tbaa !9
  %1003 = load i32, ptr %32, align 4, !tbaa !9
  %1004 = mul nsw i32 %1002, %1003
  %1005 = add nsw i32 %1004, 1
  %1006 = sext i32 %1005 to i64
  %1007 = getelementptr inbounds double, ptr %1001, i64 %1006
  %1008 = load ptr, ptr %28, align 8, !tbaa !5
  %1009 = load i32, ptr %77, align 4, !tbaa !9
  %1010 = load ptr, ptr %19, align 8, !tbaa !5
  %1011 = load i32, ptr %1010, align 4, !tbaa !9
  %1012 = mul nsw i32 %1009, %1011
  %1013 = add nsw i32 %1012, 1
  %1014 = sext i32 %1013 to i64
  %1015 = getelementptr inbounds double, ptr %1008, i64 %1014
  call void @daxpy_(ptr noundef %39, ptr noundef %42, ptr noundef %1007, ptr noundef @c__1, ptr noundef %1015, ptr noundef @c__1)
  br label %1016

1016:                                             ; preds = %951, %842
  br label %1017

1017:                                             ; preds = %1016, %758
  br label %1018

1018:                                             ; preds = %1017
  %1019 = load i32, ptr %59, align 4, !tbaa !9
  %1020 = add nsw i32 %1019, -1
  store i32 %1020, ptr %59, align 4, !tbaa !9
  br label %751, !llvm.loop !22

1021:                                             ; preds = %751
  %1022 = load i32, ptr %55, align 4, !tbaa !9
  %1023 = icmp ne i32 %1022, 0
  br i1 %1023, label %1095, label %1024

1024:                                             ; preds = %1021
  %1025 = load ptr, ptr %28, align 8, !tbaa !5
  %1026 = load i32, ptr %77, align 4, !tbaa !9
  %1027 = load ptr, ptr %19, align 8, !tbaa !5
  %1028 = load i32, ptr %1027, align 4, !tbaa !9
  %1029 = mul nsw i32 %1026, %1028
  %1030 = add nsw i32 %1029, 1
  %1031 = sext i32 %1030 to i64
  %1032 = getelementptr inbounds double, ptr %1025, i64 %1031
  %1033 = load ptr, ptr %24, align 8, !tbaa !5
  %1034 = load i32, ptr %76, align 4, !tbaa !9
  %1035 = load i32, ptr %36, align 4, !tbaa !9
  %1036 = mul nsw i32 %1034, %1035
  %1037 = add nsw i32 %1036, 1
  %1038 = sext i32 %1037 to i64
  %1039 = getelementptr inbounds double, ptr %1033, i64 %1038
  call void @dcopy_(ptr noundef %74, ptr noundef %1032, ptr noundef @c__1, ptr noundef %1039, ptr noundef @c__1)
  %1040 = load ptr, ptr %24, align 8, !tbaa !5
  %1041 = load i32, ptr %76, align 4, !tbaa !9
  %1042 = load i32, ptr %36, align 4, !tbaa !9
  %1043 = mul nsw i32 %1041, %1042
  %1044 = add nsw i32 %1043, 1
  %1045 = sext i32 %1044 to i64
  %1046 = getelementptr inbounds double, ptr %1040, i64 %1045
  %1047 = call i32 @idamax_(ptr noundef %74, ptr noundef %1046, ptr noundef @c__1)
  store i32 %1047, ptr %73, align 4, !tbaa !9
  %1048 = load ptr, ptr %24, align 8, !tbaa !5
  %1049 = load i32, ptr %73, align 4, !tbaa !9
  %1050 = load i32, ptr %76, align 4, !tbaa !9
  %1051 = load i32, ptr %36, align 4, !tbaa !9
  %1052 = mul nsw i32 %1050, %1051
  %1053 = add nsw i32 %1049, %1052
  %1054 = sext i32 %1053 to i64
  %1055 = getelementptr inbounds double, ptr %1048, i64 %1054
  %1056 = load double, ptr %1055, align 8, !tbaa !16
  store double %1056, ptr %42, align 8, !tbaa !16
  %1057 = load double, ptr %42, align 8, !tbaa !16
  %1058 = fcmp oge double %1057, 0.000000e+00
  br i1 %1058, label %1059, label %1061

1059:                                             ; preds = %1024
  %1060 = load double, ptr %42, align 8, !tbaa !16
  br label %1064

1061:                                             ; preds = %1024
  %1062 = load double, ptr %42, align 8, !tbaa !16
  %1063 = fneg double %1062
  br label %1064

1064:                                             ; preds = %1061, %1059
  %1065 = phi double [ %1060, %1059 ], [ %1063, %1061 ]
  %1066 = fdiv double 1.000000e+00, %1065
  store double %1066, ptr %63, align 8, !tbaa !16
  %1067 = load ptr, ptr %24, align 8, !tbaa !5
  %1068 = load i32, ptr %76, align 4, !tbaa !9
  %1069 = load i32, ptr %36, align 4, !tbaa !9
  %1070 = mul nsw i32 %1068, %1069
  %1071 = add nsw i32 %1070, 1
  %1072 = sext i32 %1071 to i64
  %1073 = getelementptr inbounds double, ptr %1067, i64 %1072
  call void @dscal_(ptr noundef %74, ptr noundef %63, ptr noundef %1073, ptr noundef @c__1)
  %1074 = load ptr, ptr %19, align 8, !tbaa !5
  %1075 = load i32, ptr %1074, align 4, !tbaa !9
  store i32 %1075, ptr %39, align 4, !tbaa !9
  %1076 = load i32, ptr %74, align 4, !tbaa !9
  %1077 = add nsw i32 %1076, 1
  store i32 %1077, ptr %60, align 4, !tbaa !9
  br label %1078

1078:                                             ; preds = %1091, %1064
  %1079 = load i32, ptr %60, align 4, !tbaa !9
  %1080 = load i32, ptr %39, align 4, !tbaa !9
  %1081 = icmp sle i32 %1079, %1080
  br i1 %1081, label %1082, label %1094

1082:                                             ; preds = %1078
  %1083 = load ptr, ptr %24, align 8, !tbaa !5
  %1084 = load i32, ptr %60, align 4, !tbaa !9
  %1085 = load i32, ptr %76, align 4, !tbaa !9
  %1086 = load i32, ptr %36, align 4, !tbaa !9
  %1087 = mul nsw i32 %1085, %1086
  %1088 = add nsw i32 %1084, %1087
  %1089 = sext i32 %1088 to i64
  %1090 = getelementptr inbounds double, ptr %1083, i64 %1089
  store double 0.000000e+00, ptr %1090, align 8, !tbaa !16
  br label %1091

1091:                                             ; preds = %1082
  %1092 = load i32, ptr %60, align 4, !tbaa !9
  %1093 = add nsw i32 %1092, 1
  store i32 %1093, ptr %60, align 4, !tbaa !9
  br label %1078, !llvm.loop !23

1094:                                             ; preds = %1078
  br label %1200

1095:                                             ; preds = %1021
  %1096 = load i32, ptr %72, align 4, !tbaa !9
  %1097 = icmp eq i32 %1096, 1
  br i1 %1097, label %1098, label %1171

1098:                                             ; preds = %1095
  %1099 = load i32, ptr %74, align 4, !tbaa !9
  %1100 = icmp sgt i32 %1099, 1
  br i1 %1100, label %1101, label %1134

1101:                                             ; preds = %1098
  %1102 = load i32, ptr %74, align 4, !tbaa !9
  %1103 = sub nsw i32 %1102, 1
  store i32 %1103, ptr %39, align 4, !tbaa !9
  %1104 = load ptr, ptr %19, align 8, !tbaa !5
  %1105 = load ptr, ptr %24, align 8, !tbaa !5
  %1106 = load i32, ptr %37, align 4, !tbaa !9
  %1107 = sext i32 %1106 to i64
  %1108 = getelementptr inbounds double, ptr %1105, i64 %1107
  %1109 = load ptr, ptr %25, align 8, !tbaa !5
  %1110 = load ptr, ptr %28, align 8, !tbaa !5
  %1111 = load i32, ptr %77, align 4, !tbaa !9
  %1112 = load ptr, ptr %19, align 8, !tbaa !5
  %1113 = load i32, ptr %1112, align 4, !tbaa !9
  %1114 = mul nsw i32 %1111, %1113
  %1115 = add nsw i32 %1114, 1
  %1116 = sext i32 %1115 to i64
  %1117 = getelementptr inbounds double, ptr %1110, i64 %1116
  %1118 = load ptr, ptr %28, align 8, !tbaa !5
  %1119 = load i32, ptr %74, align 4, !tbaa !9
  %1120 = load i32, ptr %77, align 4, !tbaa !9
  %1121 = load ptr, ptr %19, align 8, !tbaa !5
  %1122 = load i32, ptr %1121, align 4, !tbaa !9
  %1123 = mul nsw i32 %1120, %1122
  %1124 = add nsw i32 %1119, %1123
  %1125 = sext i32 %1124 to i64
  %1126 = getelementptr inbounds double, ptr %1118, i64 %1125
  %1127 = load ptr, ptr %24, align 8, !tbaa !5
  %1128 = load i32, ptr %74, align 4, !tbaa !9
  %1129 = load i32, ptr %36, align 4, !tbaa !9
  %1130 = mul nsw i32 %1128, %1129
  %1131 = add nsw i32 %1130, 1
  %1132 = sext i32 %1131 to i64
  %1133 = getelementptr inbounds double, ptr %1127, i64 %1132
  call void @dgemv_(ptr noundef @.str.10, ptr noundef %1104, ptr noundef %39, ptr noundef @c_b29, ptr noundef %1108, ptr noundef %1109, ptr noundef %1117, ptr noundef @c__1, ptr noundef %1126, ptr noundef %1133, ptr noundef @c__1)
  br label %1134

1134:                                             ; preds = %1101, %1098
  %1135 = load ptr, ptr %19, align 8, !tbaa !5
  %1136 = load ptr, ptr %24, align 8, !tbaa !5
  %1137 = load i32, ptr %74, align 4, !tbaa !9
  %1138 = load i32, ptr %36, align 4, !tbaa !9
  %1139 = mul nsw i32 %1137, %1138
  %1140 = add nsw i32 %1139, 1
  %1141 = sext i32 %1140 to i64
  %1142 = getelementptr inbounds double, ptr %1136, i64 %1141
  %1143 = call i32 @idamax_(ptr noundef %1135, ptr noundef %1142, ptr noundef @c__1)
  store i32 %1143, ptr %73, align 4, !tbaa !9
  %1144 = load ptr, ptr %24, align 8, !tbaa !5
  %1145 = load i32, ptr %73, align 4, !tbaa !9
  %1146 = load i32, ptr %74, align 4, !tbaa !9
  %1147 = load i32, ptr %36, align 4, !tbaa !9
  %1148 = mul nsw i32 %1146, %1147
  %1149 = add nsw i32 %1145, %1148
  %1150 = sext i32 %1149 to i64
  %1151 = getelementptr inbounds double, ptr %1144, i64 %1150
  %1152 = load double, ptr %1151, align 8, !tbaa !16
  store double %1152, ptr %42, align 8, !tbaa !16
  %1153 = load double, ptr %42, align 8, !tbaa !16
  %1154 = fcmp oge double %1153, 0.000000e+00
  br i1 %1154, label %1155, label %1157

1155:                                             ; preds = %1134
  %1156 = load double, ptr %42, align 8, !tbaa !16
  br label %1160

1157:                                             ; preds = %1134
  %1158 = load double, ptr %42, align 8, !tbaa !16
  %1159 = fneg double %1158
  br label %1160

1160:                                             ; preds = %1157, %1155
  %1161 = phi double [ %1156, %1155 ], [ %1159, %1157 ]
  %1162 = fdiv double 1.000000e+00, %1161
  store double %1162, ptr %63, align 8, !tbaa !16
  %1163 = load ptr, ptr %19, align 8, !tbaa !5
  %1164 = load ptr, ptr %24, align 8, !tbaa !5
  %1165 = load i32, ptr %74, align 4, !tbaa !9
  %1166 = load i32, ptr %36, align 4, !tbaa !9
  %1167 = mul nsw i32 %1165, %1166
  %1168 = add nsw i32 %1167, 1
  %1169 = sext i32 %1168 to i64
  %1170 = getelementptr inbounds double, ptr %1164, i64 %1169
  call void @dscal_(ptr noundef %1163, ptr noundef %63, ptr noundef %1170, ptr noundef @c__1)
  br label %1199

1171:                                             ; preds = %1095
  %1172 = load ptr, ptr %19, align 8, !tbaa !5
  %1173 = load i32, ptr %1172, align 4, !tbaa !9
  store i32 %1173, ptr %39, align 4, !tbaa !9
  %1174 = load i32, ptr %74, align 4, !tbaa !9
  %1175 = add nsw i32 %1174, 1
  store i32 %1175, ptr %60, align 4, !tbaa !9
  br label %1176

1176:                                             ; preds = %1190, %1171
  %1177 = load i32, ptr %60, align 4, !tbaa !9
  %1178 = load i32, ptr %39, align 4, !tbaa !9
  %1179 = icmp sle i32 %1177, %1178
  br i1 %1179, label %1180, label %1193

1180:                                             ; preds = %1176
  %1181 = load ptr, ptr %28, align 8, !tbaa !5
  %1182 = load i32, ptr %60, align 4, !tbaa !9
  %1183 = load i32, ptr %77, align 4, !tbaa !9
  %1184 = load ptr, ptr %19, align 8, !tbaa !5
  %1185 = load i32, ptr %1184, align 4, !tbaa !9
  %1186 = mul nsw i32 %1183, %1185
  %1187 = add nsw i32 %1182, %1186
  %1188 = sext i32 %1187 to i64
  %1189 = getelementptr inbounds double, ptr %1181, i64 %1188
  store double 0.000000e+00, ptr %1189, align 8, !tbaa !16
  br label %1190

1190:                                             ; preds = %1180
  %1191 = load i32, ptr %60, align 4, !tbaa !9
  %1192 = add nsw i32 %1191, 1
  store i32 %1192, ptr %60, align 4, !tbaa !9
  br label %1176, !llvm.loop !24

1193:                                             ; preds = %1176
  %1194 = load i32, ptr %75, align 4, !tbaa !9
  %1195 = load i32, ptr %77, align 4, !tbaa !9
  %1196 = sub nsw i32 %1195, 1
  %1197 = sext i32 %1196 to i64
  %1198 = getelementptr inbounds [128 x i32], ptr %71, i64 0, i64 %1197
  store i32 %1194, ptr %1198, align 4, !tbaa !9
  br label %1199

1199:                                             ; preds = %1193, %1160
  br label %1200

1200:                                             ; preds = %1199, %1094
  br label %2194

1201:                                             ; preds = %703
  %1202 = load ptr, ptr %20, align 8, !tbaa !5
  %1203 = load i32, ptr %74, align 4, !tbaa !9
  %1204 = sub nsw i32 %1203, 1
  %1205 = load i32, ptr %74, align 4, !tbaa !9
  %1206 = load i32, ptr %32, align 4, !tbaa !9
  %1207 = mul nsw i32 %1205, %1206
  %1208 = add nsw i32 %1204, %1207
  %1209 = sext i32 %1208 to i64
  %1210 = getelementptr inbounds double, ptr %1202, i64 %1209
  %1211 = load double, ptr %1210, align 8, !tbaa !16
  store double %1211, ptr %42, align 8, !tbaa !16
  %1212 = load double, ptr %42, align 8, !tbaa !16
  %1213 = fcmp oge double %1212, 0.000000e+00
  br i1 %1213, label %1214, label %1216

1214:                                             ; preds = %1201
  %1215 = load double, ptr %42, align 8, !tbaa !16
  br label %1219

1216:                                             ; preds = %1201
  %1217 = load double, ptr %42, align 8, !tbaa !16
  %1218 = fneg double %1217
  br label %1219

1219:                                             ; preds = %1216, %1214
  %1220 = phi double [ %1215, %1214 ], [ %1218, %1216 ]
  %1221 = load ptr, ptr %20, align 8, !tbaa !5
  %1222 = load i32, ptr %74, align 4, !tbaa !9
  %1223 = load i32, ptr %74, align 4, !tbaa !9
  %1224 = sub nsw i32 %1223, 1
  %1225 = load i32, ptr %32, align 4, !tbaa !9
  %1226 = mul nsw i32 %1224, %1225
  %1227 = add nsw i32 %1222, %1226
  %1228 = sext i32 %1227 to i64
  %1229 = getelementptr inbounds double, ptr %1221, i64 %1228
  %1230 = load double, ptr %1229, align 8, !tbaa !16
  store double %1230, ptr %43, align 8, !tbaa !16
  %1231 = load double, ptr %43, align 8, !tbaa !16
  %1232 = fcmp oge double %1231, 0.000000e+00
  br i1 %1232, label %1233, label %1235

1233:                                             ; preds = %1219
  %1234 = load double, ptr %43, align 8, !tbaa !16
  br label %1238

1235:                                             ; preds = %1219
  %1236 = load double, ptr %43, align 8, !tbaa !16
  %1237 = fneg double %1236
  br label %1238

1238:                                             ; preds = %1235, %1233
  %1239 = phi double [ %1234, %1233 ], [ %1237, %1235 ]
  %1240 = fcmp oge double %1220, %1239
  br i1 %1240, label %1241, label %1274

1241:                                             ; preds = %1238
  %1242 = load ptr, ptr %28, align 8, !tbaa !5
  %1243 = load i32, ptr %74, align 4, !tbaa !9
  %1244 = sub nsw i32 %1243, 1
  %1245 = load i32, ptr %77, align 4, !tbaa !9
  %1246 = sub nsw i32 %1245, 1
  %1247 = load ptr, ptr %19, align 8, !tbaa !5
  %1248 = load i32, ptr %1247, align 4, !tbaa !9
  %1249 = mul nsw i32 %1246, %1248
  %1250 = add nsw i32 %1244, %1249
  %1251 = sext i32 %1250 to i64
  %1252 = getelementptr inbounds double, ptr %1242, i64 %1251
  store double 1.000000e+00, ptr %1252, align 8, !tbaa !16
  %1253 = load double, ptr %78, align 8, !tbaa !16
  %1254 = load ptr, ptr %20, align 8, !tbaa !5
  %1255 = load i32, ptr %74, align 4, !tbaa !9
  %1256 = sub nsw i32 %1255, 1
  %1257 = load i32, ptr %74, align 4, !tbaa !9
  %1258 = load i32, ptr %32, align 4, !tbaa !9
  %1259 = mul nsw i32 %1257, %1258
  %1260 = add nsw i32 %1256, %1259
  %1261 = sext i32 %1260 to i64
  %1262 = getelementptr inbounds double, ptr %1254, i64 %1261
  %1263 = load double, ptr %1262, align 8, !tbaa !16
  %1264 = fdiv double %1253, %1263
  %1265 = load ptr, ptr %28, align 8, !tbaa !5
  %1266 = load i32, ptr %74, align 4, !tbaa !9
  %1267 = load i32, ptr %77, align 4, !tbaa !9
  %1268 = load ptr, ptr %19, align 8, !tbaa !5
  %1269 = load i32, ptr %1268, align 4, !tbaa !9
  %1270 = mul nsw i32 %1267, %1269
  %1271 = add nsw i32 %1266, %1270
  %1272 = sext i32 %1271 to i64
  %1273 = getelementptr inbounds double, ptr %1265, i64 %1272
  store double %1264, ptr %1273, align 8, !tbaa !16
  br label %1308

1274:                                             ; preds = %1238
  %1275 = load double, ptr %78, align 8, !tbaa !16
  %1276 = fneg double %1275
  %1277 = load ptr, ptr %20, align 8, !tbaa !5
  %1278 = load i32, ptr %74, align 4, !tbaa !9
  %1279 = load i32, ptr %74, align 4, !tbaa !9
  %1280 = sub nsw i32 %1279, 1
  %1281 = load i32, ptr %32, align 4, !tbaa !9
  %1282 = mul nsw i32 %1280, %1281
  %1283 = add nsw i32 %1278, %1282
  %1284 = sext i32 %1283 to i64
  %1285 = getelementptr inbounds double, ptr %1277, i64 %1284
  %1286 = load double, ptr %1285, align 8, !tbaa !16
  %1287 = fdiv double %1276, %1286
  %1288 = load ptr, ptr %28, align 8, !tbaa !5
  %1289 = load i32, ptr %74, align 4, !tbaa !9
  %1290 = sub nsw i32 %1289, 1
  %1291 = load i32, ptr %77, align 4, !tbaa !9
  %1292 = sub nsw i32 %1291, 1
  %1293 = load ptr, ptr %19, align 8, !tbaa !5
  %1294 = load i32, ptr %1293, align 4, !tbaa !9
  %1295 = mul nsw i32 %1292, %1294
  %1296 = add nsw i32 %1290, %1295
  %1297 = sext i32 %1296 to i64
  %1298 = getelementptr inbounds double, ptr %1288, i64 %1297
  store double %1287, ptr %1298, align 8, !tbaa !16
  %1299 = load ptr, ptr %28, align 8, !tbaa !5
  %1300 = load i32, ptr %74, align 4, !tbaa !9
  %1301 = load i32, ptr %77, align 4, !tbaa !9
  %1302 = load ptr, ptr %19, align 8, !tbaa !5
  %1303 = load i32, ptr %1302, align 4, !tbaa !9
  %1304 = mul nsw i32 %1301, %1303
  %1305 = add nsw i32 %1300, %1304
  %1306 = sext i32 %1305 to i64
  %1307 = getelementptr inbounds double, ptr %1299, i64 %1306
  store double 1.000000e+00, ptr %1307, align 8, !tbaa !16
  br label %1308

1308:                                             ; preds = %1274, %1241
  %1309 = load ptr, ptr %28, align 8, !tbaa !5
  %1310 = load i32, ptr %74, align 4, !tbaa !9
  %1311 = load i32, ptr %77, align 4, !tbaa !9
  %1312 = sub nsw i32 %1311, 1
  %1313 = load ptr, ptr %19, align 8, !tbaa !5
  %1314 = load i32, ptr %1313, align 4, !tbaa !9
  %1315 = mul nsw i32 %1312, %1314
  %1316 = add nsw i32 %1310, %1315
  %1317 = sext i32 %1316 to i64
  %1318 = getelementptr inbounds double, ptr %1309, i64 %1317
  store double 0.000000e+00, ptr %1318, align 8, !tbaa !16
  %1319 = load ptr, ptr %28, align 8, !tbaa !5
  %1320 = load i32, ptr %74, align 4, !tbaa !9
  %1321 = sub nsw i32 %1320, 1
  %1322 = load i32, ptr %77, align 4, !tbaa !9
  %1323 = load ptr, ptr %19, align 8, !tbaa !5
  %1324 = load i32, ptr %1323, align 4, !tbaa !9
  %1325 = mul nsw i32 %1322, %1324
  %1326 = add nsw i32 %1321, %1325
  %1327 = sext i32 %1326 to i64
  %1328 = getelementptr inbounds double, ptr %1319, i64 %1327
  store double 0.000000e+00, ptr %1328, align 8, !tbaa !16
  %1329 = load i32, ptr %74, align 4, !tbaa !9
  %1330 = sub nsw i32 %1329, 2
  store i32 %1330, ptr %39, align 4, !tbaa !9
  store i32 1, ptr %60, align 4, !tbaa !9
  br label %1331

1331:                                             ; preds = %1400, %1308
  %1332 = load i32, ptr %60, align 4, !tbaa !9
  %1333 = load i32, ptr %39, align 4, !tbaa !9
  %1334 = icmp sle i32 %1332, %1333
  br i1 %1334, label %1335, label %1403

1335:                                             ; preds = %1331
  %1336 = load ptr, ptr %28, align 8, !tbaa !5
  %1337 = load i32, ptr %74, align 4, !tbaa !9
  %1338 = sub nsw i32 %1337, 1
  %1339 = load i32, ptr %77, align 4, !tbaa !9
  %1340 = sub nsw i32 %1339, 1
  %1341 = load ptr, ptr %19, align 8, !tbaa !5
  %1342 = load i32, ptr %1341, align 4, !tbaa !9
  %1343 = mul nsw i32 %1340, %1342
  %1344 = add nsw i32 %1338, %1343
  %1345 = sext i32 %1344 to i64
  %1346 = getelementptr inbounds double, ptr %1336, i64 %1345
  %1347 = load double, ptr %1346, align 8, !tbaa !16
  %1348 = fneg double %1347
  %1349 = load ptr, ptr %20, align 8, !tbaa !5
  %1350 = load i32, ptr %60, align 4, !tbaa !9
  %1351 = load i32, ptr %74, align 4, !tbaa !9
  %1352 = sub nsw i32 %1351, 1
  %1353 = load i32, ptr %32, align 4, !tbaa !9
  %1354 = mul nsw i32 %1352, %1353
  %1355 = add nsw i32 %1350, %1354
  %1356 = sext i32 %1355 to i64
  %1357 = getelementptr inbounds double, ptr %1349, i64 %1356
  %1358 = load double, ptr %1357, align 8, !tbaa !16
  %1359 = fmul double %1348, %1358
  %1360 = load ptr, ptr %28, align 8, !tbaa !5
  %1361 = load i32, ptr %60, align 4, !tbaa !9
  %1362 = load i32, ptr %77, align 4, !tbaa !9
  %1363 = sub nsw i32 %1362, 1
  %1364 = load ptr, ptr %19, align 8, !tbaa !5
  %1365 = load i32, ptr %1364, align 4, !tbaa !9
  %1366 = mul nsw i32 %1363, %1365
  %1367 = add nsw i32 %1361, %1366
  %1368 = sext i32 %1367 to i64
  %1369 = getelementptr inbounds double, ptr %1360, i64 %1368
  store double %1359, ptr %1369, align 8, !tbaa !16
  %1370 = load ptr, ptr %28, align 8, !tbaa !5
  %1371 = load i32, ptr %74, align 4, !tbaa !9
  %1372 = load i32, ptr %77, align 4, !tbaa !9
  %1373 = load ptr, ptr %19, align 8, !tbaa !5
  %1374 = load i32, ptr %1373, align 4, !tbaa !9
  %1375 = mul nsw i32 %1372, %1374
  %1376 = add nsw i32 %1371, %1375
  %1377 = sext i32 %1376 to i64
  %1378 = getelementptr inbounds double, ptr %1370, i64 %1377
  %1379 = load double, ptr %1378, align 8, !tbaa !16
  %1380 = fneg double %1379
  %1381 = load ptr, ptr %20, align 8, !tbaa !5
  %1382 = load i32, ptr %60, align 4, !tbaa !9
  %1383 = load i32, ptr %74, align 4, !tbaa !9
  %1384 = load i32, ptr %32, align 4, !tbaa !9
  %1385 = mul nsw i32 %1383, %1384
  %1386 = add nsw i32 %1382, %1385
  %1387 = sext i32 %1386 to i64
  %1388 = getelementptr inbounds double, ptr %1381, i64 %1387
  %1389 = load double, ptr %1388, align 8, !tbaa !16
  %1390 = fmul double %1380, %1389
  %1391 = load ptr, ptr %28, align 8, !tbaa !5
  %1392 = load i32, ptr %60, align 4, !tbaa !9
  %1393 = load i32, ptr %77, align 4, !tbaa !9
  %1394 = load ptr, ptr %19, align 8, !tbaa !5
  %1395 = load i32, ptr %1394, align 4, !tbaa !9
  %1396 = mul nsw i32 %1393, %1395
  %1397 = add nsw i32 %1392, %1396
  %1398 = sext i32 %1397 to i64
  %1399 = getelementptr inbounds double, ptr %1391, i64 %1398
  store double %1390, ptr %1399, align 8, !tbaa !16
  br label %1400

1400:                                             ; preds = %1335
  %1401 = load i32, ptr %60, align 4, !tbaa !9
  %1402 = add nsw i32 %1401, 1
  store i32 %1402, ptr %60, align 4, !tbaa !9
  br label %1331, !llvm.loop !25

1403:                                             ; preds = %1331
  %1404 = load i32, ptr %74, align 4, !tbaa !9
  %1405 = sub nsw i32 %1404, 2
  store i32 %1405, ptr %57, align 4, !tbaa !9
  %1406 = load i32, ptr %74, align 4, !tbaa !9
  %1407 = sub nsw i32 %1406, 2
  store i32 %1407, ptr %59, align 4, !tbaa !9
  br label %1408

1408:                                             ; preds = %1810, %1403
  %1409 = load i32, ptr %59, align 4, !tbaa !9
  %1410 = icmp sge i32 %1409, 1
  br i1 %1410, label %1411, label %1813

1411:                                             ; preds = %1408
  %1412 = load i32, ptr %59, align 4, !tbaa !9
  %1413 = load i32, ptr %57, align 4, !tbaa !9
  %1414 = icmp sgt i32 %1412, %1413
  br i1 %1414, label %1415, label %1416

1415:                                             ; preds = %1411
  br label %1809

1416:                                             ; preds = %1411
  %1417 = load i32, ptr %59, align 4, !tbaa !9
  store i32 %1417, ptr %68, align 4, !tbaa !9
  %1418 = load i32, ptr %59, align 4, !tbaa !9
  store i32 %1418, ptr %69, align 4, !tbaa !9
  %1419 = load i32, ptr %59, align 4, !tbaa !9
  %1420 = sub nsw i32 %1419, 1
  store i32 %1420, ptr %57, align 4, !tbaa !9
  %1421 = load i32, ptr %59, align 4, !tbaa !9
  %1422 = icmp sgt i32 %1421, 1
  br i1 %1422, label %1423, label %1441

1423:                                             ; preds = %1416
  %1424 = load ptr, ptr %20, align 8, !tbaa !5
  %1425 = load i32, ptr %59, align 4, !tbaa !9
  %1426 = load i32, ptr %59, align 4, !tbaa !9
  %1427 = sub nsw i32 %1426, 1
  %1428 = load i32, ptr %32, align 4, !tbaa !9
  %1429 = mul nsw i32 %1427, %1428
  %1430 = add nsw i32 %1425, %1429
  %1431 = sext i32 %1430 to i64
  %1432 = getelementptr inbounds double, ptr %1424, i64 %1431
  %1433 = load double, ptr %1432, align 8, !tbaa !16
  %1434 = fcmp une double %1433, 0.000000e+00
  br i1 %1434, label %1435, label %1440

1435:                                             ; preds = %1423
  %1436 = load i32, ptr %59, align 4, !tbaa !9
  %1437 = sub nsw i32 %1436, 1
  store i32 %1437, ptr %68, align 4, !tbaa !9
  %1438 = load i32, ptr %59, align 4, !tbaa !9
  %1439 = sub nsw i32 %1438, 2
  store i32 %1439, ptr %57, align 4, !tbaa !9
  br label %1440

1440:                                             ; preds = %1435, %1423
  br label %1441

1441:                                             ; preds = %1440, %1416
  %1442 = load i32, ptr %68, align 4, !tbaa !9
  %1443 = load i32, ptr %69, align 4, !tbaa !9
  %1444 = icmp eq i32 %1442, %1443
  br i1 %1444, label %1445, label %1578

1445:                                             ; preds = %1441
  %1446 = load ptr, ptr %20, align 8, !tbaa !5
  %1447 = load i32, ptr %59, align 4, !tbaa !9
  %1448 = load i32, ptr %59, align 4, !tbaa !9
  %1449 = load i32, ptr %32, align 4, !tbaa !9
  %1450 = mul nsw i32 %1448, %1449
  %1451 = add nsw i32 %1447, %1450
  %1452 = sext i32 %1451 to i64
  %1453 = getelementptr inbounds double, ptr %1446, i64 %1452
  %1454 = load ptr, ptr %21, align 8, !tbaa !5
  %1455 = load ptr, ptr %28, align 8, !tbaa !5
  %1456 = load i32, ptr %59, align 4, !tbaa !9
  %1457 = load i32, ptr %77, align 4, !tbaa !9
  %1458 = sub nsw i32 %1457, 1
  %1459 = load ptr, ptr %19, align 8, !tbaa !5
  %1460 = load i32, ptr %1459, align 4, !tbaa !9
  %1461 = mul nsw i32 %1458, %1460
  %1462 = add nsw i32 %1456, %1461
  %1463 = sext i32 %1462 to i64
  %1464 = getelementptr inbounds double, ptr %1455, i64 %1463
  %1465 = load ptr, ptr %19, align 8, !tbaa !5
  %1466 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 0
  call void @dlaln2_(ptr noundef @c_false, ptr noundef @c__1, ptr noundef @c__2, ptr noundef %54, ptr noundef @c_b29, ptr noundef %1453, ptr noundef %1454, ptr noundef @c_b29, ptr noundef @c_b29, ptr noundef %1464, ptr noundef %1465, ptr noundef %79, ptr noundef %78, ptr noundef %1466, ptr noundef @c__2, ptr noundef %61, ptr noundef %70, ptr noundef %51)
  %1467 = load double, ptr %70, align 8, !tbaa !16
  %1468 = fcmp ogt double %1467, 1.000000e+00
  br i1 %1468, label %1469, label %1492

1469:                                             ; preds = %1445
  %1470 = load ptr, ptr %28, align 8, !tbaa !5
  %1471 = load i32, ptr %59, align 4, !tbaa !9
  %1472 = sext i32 %1471 to i64
  %1473 = getelementptr inbounds double, ptr %1470, i64 %1472
  %1474 = load double, ptr %1473, align 8, !tbaa !16
  %1475 = load double, ptr %80, align 8, !tbaa !16
  %1476 = load double, ptr %70, align 8, !tbaa !16
  %1477 = fdiv double %1475, %1476
  %1478 = fcmp ogt double %1474, %1477
  br i1 %1478, label %1479, label %1491

1479:                                             ; preds = %1469
  %1480 = load double, ptr %70, align 8, !tbaa !16
  %1481 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 0
  %1482 = load double, ptr %1481, align 16, !tbaa !16
  %1483 = fdiv double %1482, %1480
  store double %1483, ptr %1481, align 16, !tbaa !16
  %1484 = load double, ptr %70, align 8, !tbaa !16
  %1485 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 2
  %1486 = load double, ptr %1485, align 16, !tbaa !16
  %1487 = fdiv double %1486, %1484
  store double %1487, ptr %1485, align 16, !tbaa !16
  %1488 = load double, ptr %70, align 8, !tbaa !16
  %1489 = load double, ptr %61, align 8, !tbaa !16
  %1490 = fdiv double %1489, %1488
  store double %1490, ptr %61, align 8, !tbaa !16
  br label %1491

1491:                                             ; preds = %1479, %1469
  br label %1492

1492:                                             ; preds = %1491, %1445
  %1493 = load double, ptr %61, align 8, !tbaa !16
  %1494 = fcmp une double %1493, 1.000000e+00
  br i1 %1494, label %1495, label %1513

1495:                                             ; preds = %1492
  %1496 = load ptr, ptr %28, align 8, !tbaa !5
  %1497 = load i32, ptr %77, align 4, !tbaa !9
  %1498 = sub nsw i32 %1497, 1
  %1499 = load ptr, ptr %19, align 8, !tbaa !5
  %1500 = load i32, ptr %1499, align 4, !tbaa !9
  %1501 = mul nsw i32 %1498, %1500
  %1502 = add nsw i32 %1501, 1
  %1503 = sext i32 %1502 to i64
  %1504 = getelementptr inbounds double, ptr %1496, i64 %1503
  call void @dscal_(ptr noundef %74, ptr noundef %61, ptr noundef %1504, ptr noundef @c__1)
  %1505 = load ptr, ptr %28, align 8, !tbaa !5
  %1506 = load i32, ptr %77, align 4, !tbaa !9
  %1507 = load ptr, ptr %19, align 8, !tbaa !5
  %1508 = load i32, ptr %1507, align 4, !tbaa !9
  %1509 = mul nsw i32 %1506, %1508
  %1510 = add nsw i32 %1509, 1
  %1511 = sext i32 %1510 to i64
  %1512 = getelementptr inbounds double, ptr %1505, i64 %1511
  call void @dscal_(ptr noundef %74, ptr noundef %61, ptr noundef %1512, ptr noundef @c__1)
  br label %1513

1513:                                             ; preds = %1495, %1492
  %1514 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 0
  %1515 = load double, ptr %1514, align 16, !tbaa !16
  %1516 = load ptr, ptr %28, align 8, !tbaa !5
  %1517 = load i32, ptr %59, align 4, !tbaa !9
  %1518 = load i32, ptr %77, align 4, !tbaa !9
  %1519 = sub nsw i32 %1518, 1
  %1520 = load ptr, ptr %19, align 8, !tbaa !5
  %1521 = load i32, ptr %1520, align 4, !tbaa !9
  %1522 = mul nsw i32 %1519, %1521
  %1523 = add nsw i32 %1517, %1522
  %1524 = sext i32 %1523 to i64
  %1525 = getelementptr inbounds double, ptr %1516, i64 %1524
  store double %1515, ptr %1525, align 8, !tbaa !16
  %1526 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 2
  %1527 = load double, ptr %1526, align 16, !tbaa !16
  %1528 = load ptr, ptr %28, align 8, !tbaa !5
  %1529 = load i32, ptr %59, align 4, !tbaa !9
  %1530 = load i32, ptr %77, align 4, !tbaa !9
  %1531 = load ptr, ptr %19, align 8, !tbaa !5
  %1532 = load i32, ptr %1531, align 4, !tbaa !9
  %1533 = mul nsw i32 %1530, %1532
  %1534 = add nsw i32 %1529, %1533
  %1535 = sext i32 %1534 to i64
  %1536 = getelementptr inbounds double, ptr %1528, i64 %1535
  store double %1527, ptr %1536, align 8, !tbaa !16
  %1537 = load i32, ptr %59, align 4, !tbaa !9
  %1538 = sub nsw i32 %1537, 1
  store i32 %1538, ptr %39, align 4, !tbaa !9
  %1539 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 0
  %1540 = load double, ptr %1539, align 16, !tbaa !16
  %1541 = fneg double %1540
  store double %1541, ptr %42, align 8, !tbaa !16
  %1542 = load ptr, ptr %20, align 8, !tbaa !5
  %1543 = load i32, ptr %59, align 4, !tbaa !9
  %1544 = load i32, ptr %32, align 4, !tbaa !9
  %1545 = mul nsw i32 %1543, %1544
  %1546 = add nsw i32 %1545, 1
  %1547 = sext i32 %1546 to i64
  %1548 = getelementptr inbounds double, ptr %1542, i64 %1547
  %1549 = load ptr, ptr %28, align 8, !tbaa !5
  %1550 = load i32, ptr %77, align 4, !tbaa !9
  %1551 = sub nsw i32 %1550, 1
  %1552 = load ptr, ptr %19, align 8, !tbaa !5
  %1553 = load i32, ptr %1552, align 4, !tbaa !9
  %1554 = mul nsw i32 %1551, %1553
  %1555 = add nsw i32 %1554, 1
  %1556 = sext i32 %1555 to i64
  %1557 = getelementptr inbounds double, ptr %1549, i64 %1556
  call void @daxpy_(ptr noundef %39, ptr noundef %42, ptr noundef %1548, ptr noundef @c__1, ptr noundef %1557, ptr noundef @c__1)
  %1558 = load i32, ptr %59, align 4, !tbaa !9
  %1559 = sub nsw i32 %1558, 1
  store i32 %1559, ptr %39, align 4, !tbaa !9
  %1560 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 2
  %1561 = load double, ptr %1560, align 16, !tbaa !16
  %1562 = fneg double %1561
  store double %1562, ptr %42, align 8, !tbaa !16
  %1563 = load ptr, ptr %20, align 8, !tbaa !5
  %1564 = load i32, ptr %59, align 4, !tbaa !9
  %1565 = load i32, ptr %32, align 4, !tbaa !9
  %1566 = mul nsw i32 %1564, %1565
  %1567 = add nsw i32 %1566, 1
  %1568 = sext i32 %1567 to i64
  %1569 = getelementptr inbounds double, ptr %1563, i64 %1568
  %1570 = load ptr, ptr %28, align 8, !tbaa !5
  %1571 = load i32, ptr %77, align 4, !tbaa !9
  %1572 = load ptr, ptr %19, align 8, !tbaa !5
  %1573 = load i32, ptr %1572, align 4, !tbaa !9
  %1574 = mul nsw i32 %1571, %1573
  %1575 = add nsw i32 %1574, 1
  %1576 = sext i32 %1575 to i64
  %1577 = getelementptr inbounds double, ptr %1570, i64 %1576
  call void @daxpy_(ptr noundef %39, ptr noundef %42, ptr noundef %1569, ptr noundef @c__1, ptr noundef %1577, ptr noundef @c__1)
  br label %1808

1578:                                             ; preds = %1441
  %1579 = load ptr, ptr %20, align 8, !tbaa !5
  %1580 = load i32, ptr %59, align 4, !tbaa !9
  %1581 = sub nsw i32 %1580, 1
  %1582 = load i32, ptr %59, align 4, !tbaa !9
  %1583 = sub nsw i32 %1582, 1
  %1584 = load i32, ptr %32, align 4, !tbaa !9
  %1585 = mul nsw i32 %1583, %1584
  %1586 = add nsw i32 %1581, %1585
  %1587 = sext i32 %1586 to i64
  %1588 = getelementptr inbounds double, ptr %1579, i64 %1587
  %1589 = load ptr, ptr %21, align 8, !tbaa !5
  %1590 = load ptr, ptr %28, align 8, !tbaa !5
  %1591 = load i32, ptr %59, align 4, !tbaa !9
  %1592 = sub nsw i32 %1591, 1
  %1593 = load i32, ptr %77, align 4, !tbaa !9
  %1594 = sub nsw i32 %1593, 1
  %1595 = load ptr, ptr %19, align 8, !tbaa !5
  %1596 = load i32, ptr %1595, align 4, !tbaa !9
  %1597 = mul nsw i32 %1594, %1596
  %1598 = add nsw i32 %1592, %1597
  %1599 = sext i32 %1598 to i64
  %1600 = getelementptr inbounds double, ptr %1590, i64 %1599
  %1601 = load ptr, ptr %19, align 8, !tbaa !5
  %1602 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 0
  call void @dlaln2_(ptr noundef @c_false, ptr noundef @c__2, ptr noundef @c__2, ptr noundef %54, ptr noundef @c_b29, ptr noundef %1588, ptr noundef %1589, ptr noundef @c_b29, ptr noundef @c_b29, ptr noundef %1600, ptr noundef %1601, ptr noundef %79, ptr noundef %78, ptr noundef %1602, ptr noundef @c__2, ptr noundef %61, ptr noundef %70, ptr noundef %51)
  %1603 = load double, ptr %70, align 8, !tbaa !16
  %1604 = fcmp ogt double %1603, 1.000000e+00
  br i1 %1604, label %1605, label %1654

1605:                                             ; preds = %1578
  %1606 = load ptr, ptr %28, align 8, !tbaa !5
  %1607 = load i32, ptr %59, align 4, !tbaa !9
  %1608 = sub nsw i32 %1607, 1
  %1609 = sext i32 %1608 to i64
  %1610 = getelementptr inbounds double, ptr %1606, i64 %1609
  %1611 = load double, ptr %1610, align 8, !tbaa !16
  store double %1611, ptr %42, align 8, !tbaa !16
  %1612 = load ptr, ptr %28, align 8, !tbaa !5
  %1613 = load i32, ptr %59, align 4, !tbaa !9
  %1614 = sext i32 %1613 to i64
  %1615 = getelementptr inbounds double, ptr %1612, i64 %1614
  %1616 = load double, ptr %1615, align 8, !tbaa !16
  store double %1616, ptr %43, align 8, !tbaa !16
  %1617 = load double, ptr %42, align 8, !tbaa !16
  %1618 = load double, ptr %43, align 8, !tbaa !16
  %1619 = fcmp oge double %1617, %1618
  br i1 %1619, label %1620, label %1622

1620:                                             ; preds = %1605
  %1621 = load double, ptr %42, align 8, !tbaa !16
  br label %1624

1622:                                             ; preds = %1605
  %1623 = load double, ptr %43, align 8, !tbaa !16
  br label %1624

1624:                                             ; preds = %1622, %1620
  %1625 = phi double [ %1621, %1620 ], [ %1623, %1622 ]
  store double %1625, ptr %47, align 8, !tbaa !16
  %1626 = load double, ptr %47, align 8, !tbaa !16
  %1627 = load double, ptr %80, align 8, !tbaa !16
  %1628 = load double, ptr %70, align 8, !tbaa !16
  %1629 = fdiv double %1627, %1628
  %1630 = fcmp ogt double %1626, %1629
  br i1 %1630, label %1631, label %1653

1631:                                             ; preds = %1624
  %1632 = load double, ptr %70, align 8, !tbaa !16
  %1633 = fdiv double 1.000000e+00, %1632
  store double %1633, ptr %86, align 8, !tbaa !16
  %1634 = load double, ptr %86, align 8, !tbaa !16
  %1635 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 0
  %1636 = load double, ptr %1635, align 16, !tbaa !16
  %1637 = fmul double %1636, %1634
  store double %1637, ptr %1635, align 16, !tbaa !16
  %1638 = load double, ptr %86, align 8, !tbaa !16
  %1639 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 2
  %1640 = load double, ptr %1639, align 16, !tbaa !16
  %1641 = fmul double %1640, %1638
  store double %1641, ptr %1639, align 16, !tbaa !16
  %1642 = load double, ptr %86, align 8, !tbaa !16
  %1643 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 1
  %1644 = load double, ptr %1643, align 8, !tbaa !16
  %1645 = fmul double %1644, %1642
  store double %1645, ptr %1643, align 8, !tbaa !16
  %1646 = load double, ptr %86, align 8, !tbaa !16
  %1647 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 3
  %1648 = load double, ptr %1647, align 8, !tbaa !16
  %1649 = fmul double %1648, %1646
  store double %1649, ptr %1647, align 8, !tbaa !16
  %1650 = load double, ptr %86, align 8, !tbaa !16
  %1651 = load double, ptr %61, align 8, !tbaa !16
  %1652 = fmul double %1651, %1650
  store double %1652, ptr %61, align 8, !tbaa !16
  br label %1653

1653:                                             ; preds = %1631, %1624
  br label %1654

1654:                                             ; preds = %1653, %1578
  %1655 = load double, ptr %61, align 8, !tbaa !16
  %1656 = fcmp une double %1655, 1.000000e+00
  br i1 %1656, label %1657, label %1675

1657:                                             ; preds = %1654
  %1658 = load ptr, ptr %28, align 8, !tbaa !5
  %1659 = load i32, ptr %77, align 4, !tbaa !9
  %1660 = sub nsw i32 %1659, 1
  %1661 = load ptr, ptr %19, align 8, !tbaa !5
  %1662 = load i32, ptr %1661, align 4, !tbaa !9
  %1663 = mul nsw i32 %1660, %1662
  %1664 = add nsw i32 %1663, 1
  %1665 = sext i32 %1664 to i64
  %1666 = getelementptr inbounds double, ptr %1658, i64 %1665
  call void @dscal_(ptr noundef %74, ptr noundef %61, ptr noundef %1666, ptr noundef @c__1)
  %1667 = load ptr, ptr %28, align 8, !tbaa !5
  %1668 = load i32, ptr %77, align 4, !tbaa !9
  %1669 = load ptr, ptr %19, align 8, !tbaa !5
  %1670 = load i32, ptr %1669, align 4, !tbaa !9
  %1671 = mul nsw i32 %1668, %1670
  %1672 = add nsw i32 %1671, 1
  %1673 = sext i32 %1672 to i64
  %1674 = getelementptr inbounds double, ptr %1667, i64 %1673
  call void @dscal_(ptr noundef %74, ptr noundef %61, ptr noundef %1674, ptr noundef @c__1)
  br label %1675

1675:                                             ; preds = %1657, %1654
  %1676 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 0
  %1677 = load double, ptr %1676, align 16, !tbaa !16
  %1678 = load ptr, ptr %28, align 8, !tbaa !5
  %1679 = load i32, ptr %59, align 4, !tbaa !9
  %1680 = sub nsw i32 %1679, 1
  %1681 = load i32, ptr %77, align 4, !tbaa !9
  %1682 = sub nsw i32 %1681, 1
  %1683 = load ptr, ptr %19, align 8, !tbaa !5
  %1684 = load i32, ptr %1683, align 4, !tbaa !9
  %1685 = mul nsw i32 %1682, %1684
  %1686 = add nsw i32 %1680, %1685
  %1687 = sext i32 %1686 to i64
  %1688 = getelementptr inbounds double, ptr %1678, i64 %1687
  store double %1677, ptr %1688, align 8, !tbaa !16
  %1689 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 1
  %1690 = load double, ptr %1689, align 8, !tbaa !16
  %1691 = load ptr, ptr %28, align 8, !tbaa !5
  %1692 = load i32, ptr %59, align 4, !tbaa !9
  %1693 = load i32, ptr %77, align 4, !tbaa !9
  %1694 = sub nsw i32 %1693, 1
  %1695 = load ptr, ptr %19, align 8, !tbaa !5
  %1696 = load i32, ptr %1695, align 4, !tbaa !9
  %1697 = mul nsw i32 %1694, %1696
  %1698 = add nsw i32 %1692, %1697
  %1699 = sext i32 %1698 to i64
  %1700 = getelementptr inbounds double, ptr %1691, i64 %1699
  store double %1690, ptr %1700, align 8, !tbaa !16
  %1701 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 2
  %1702 = load double, ptr %1701, align 16, !tbaa !16
  %1703 = load ptr, ptr %28, align 8, !tbaa !5
  %1704 = load i32, ptr %59, align 4, !tbaa !9
  %1705 = sub nsw i32 %1704, 1
  %1706 = load i32, ptr %77, align 4, !tbaa !9
  %1707 = load ptr, ptr %19, align 8, !tbaa !5
  %1708 = load i32, ptr %1707, align 4, !tbaa !9
  %1709 = mul nsw i32 %1706, %1708
  %1710 = add nsw i32 %1705, %1709
  %1711 = sext i32 %1710 to i64
  %1712 = getelementptr inbounds double, ptr %1703, i64 %1711
  store double %1702, ptr %1712, align 8, !tbaa !16
  %1713 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 3
  %1714 = load double, ptr %1713, align 8, !tbaa !16
  %1715 = load ptr, ptr %28, align 8, !tbaa !5
  %1716 = load i32, ptr %59, align 4, !tbaa !9
  %1717 = load i32, ptr %77, align 4, !tbaa !9
  %1718 = load ptr, ptr %19, align 8, !tbaa !5
  %1719 = load i32, ptr %1718, align 4, !tbaa !9
  %1720 = mul nsw i32 %1717, %1719
  %1721 = add nsw i32 %1716, %1720
  %1722 = sext i32 %1721 to i64
  %1723 = getelementptr inbounds double, ptr %1715, i64 %1722
  store double %1714, ptr %1723, align 8, !tbaa !16
  %1724 = load i32, ptr %59, align 4, !tbaa !9
  %1725 = sub nsw i32 %1724, 2
  store i32 %1725, ptr %39, align 4, !tbaa !9
  %1726 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 0
  %1727 = load double, ptr %1726, align 16, !tbaa !16
  %1728 = fneg double %1727
  store double %1728, ptr %42, align 8, !tbaa !16
  %1729 = load ptr, ptr %20, align 8, !tbaa !5
  %1730 = load i32, ptr %59, align 4, !tbaa !9
  %1731 = sub nsw i32 %1730, 1
  %1732 = load i32, ptr %32, align 4, !tbaa !9
  %1733 = mul nsw i32 %1731, %1732
  %1734 = add nsw i32 %1733, 1
  %1735 = sext i32 %1734 to i64
  %1736 = getelementptr inbounds double, ptr %1729, i64 %1735
  %1737 = load ptr, ptr %28, align 8, !tbaa !5
  %1738 = load i32, ptr %77, align 4, !tbaa !9
  %1739 = sub nsw i32 %1738, 1
  %1740 = load ptr, ptr %19, align 8, !tbaa !5
  %1741 = load i32, ptr %1740, align 4, !tbaa !9
  %1742 = mul nsw i32 %1739, %1741
  %1743 = add nsw i32 %1742, 1
  %1744 = sext i32 %1743 to i64
  %1745 = getelementptr inbounds double, ptr %1737, i64 %1744
  call void @daxpy_(ptr noundef %39, ptr noundef %42, ptr noundef %1736, ptr noundef @c__1, ptr noundef %1745, ptr noundef @c__1)
  %1746 = load i32, ptr %59, align 4, !tbaa !9
  %1747 = sub nsw i32 %1746, 2
  store i32 %1747, ptr %39, align 4, !tbaa !9
  %1748 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 1
  %1749 = load double, ptr %1748, align 8, !tbaa !16
  %1750 = fneg double %1749
  store double %1750, ptr %42, align 8, !tbaa !16
  %1751 = load ptr, ptr %20, align 8, !tbaa !5
  %1752 = load i32, ptr %59, align 4, !tbaa !9
  %1753 = load i32, ptr %32, align 4, !tbaa !9
  %1754 = mul nsw i32 %1752, %1753
  %1755 = add nsw i32 %1754, 1
  %1756 = sext i32 %1755 to i64
  %1757 = getelementptr inbounds double, ptr %1751, i64 %1756
  %1758 = load ptr, ptr %28, align 8, !tbaa !5
  %1759 = load i32, ptr %77, align 4, !tbaa !9
  %1760 = sub nsw i32 %1759, 1
  %1761 = load ptr, ptr %19, align 8, !tbaa !5
  %1762 = load i32, ptr %1761, align 4, !tbaa !9
  %1763 = mul nsw i32 %1760, %1762
  %1764 = add nsw i32 %1763, 1
  %1765 = sext i32 %1764 to i64
  %1766 = getelementptr inbounds double, ptr %1758, i64 %1765
  call void @daxpy_(ptr noundef %39, ptr noundef %42, ptr noundef %1757, ptr noundef @c__1, ptr noundef %1766, ptr noundef @c__1)
  %1767 = load i32, ptr %59, align 4, !tbaa !9
  %1768 = sub nsw i32 %1767, 2
  store i32 %1768, ptr %39, align 4, !tbaa !9
  %1769 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 2
  %1770 = load double, ptr %1769, align 16, !tbaa !16
  %1771 = fneg double %1770
  store double %1771, ptr %42, align 8, !tbaa !16
  %1772 = load ptr, ptr %20, align 8, !tbaa !5
  %1773 = load i32, ptr %59, align 4, !tbaa !9
  %1774 = sub nsw i32 %1773, 1
  %1775 = load i32, ptr %32, align 4, !tbaa !9
  %1776 = mul nsw i32 %1774, %1775
  %1777 = add nsw i32 %1776, 1
  %1778 = sext i32 %1777 to i64
  %1779 = getelementptr inbounds double, ptr %1772, i64 %1778
  %1780 = load ptr, ptr %28, align 8, !tbaa !5
  %1781 = load i32, ptr %77, align 4, !tbaa !9
  %1782 = load ptr, ptr %19, align 8, !tbaa !5
  %1783 = load i32, ptr %1782, align 4, !tbaa !9
  %1784 = mul nsw i32 %1781, %1783
  %1785 = add nsw i32 %1784, 1
  %1786 = sext i32 %1785 to i64
  %1787 = getelementptr inbounds double, ptr %1780, i64 %1786
  call void @daxpy_(ptr noundef %39, ptr noundef %42, ptr noundef %1779, ptr noundef @c__1, ptr noundef %1787, ptr noundef @c__1)
  %1788 = load i32, ptr %59, align 4, !tbaa !9
  %1789 = sub nsw i32 %1788, 2
  store i32 %1789, ptr %39, align 4, !tbaa !9
  %1790 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 3
  %1791 = load double, ptr %1790, align 8, !tbaa !16
  %1792 = fneg double %1791
  store double %1792, ptr %42, align 8, !tbaa !16
  %1793 = load ptr, ptr %20, align 8, !tbaa !5
  %1794 = load i32, ptr %59, align 4, !tbaa !9
  %1795 = load i32, ptr %32, align 4, !tbaa !9
  %1796 = mul nsw i32 %1794, %1795
  %1797 = add nsw i32 %1796, 1
  %1798 = sext i32 %1797 to i64
  %1799 = getelementptr inbounds double, ptr %1793, i64 %1798
  %1800 = load ptr, ptr %28, align 8, !tbaa !5
  %1801 = load i32, ptr %77, align 4, !tbaa !9
  %1802 = load ptr, ptr %19, align 8, !tbaa !5
  %1803 = load i32, ptr %1802, align 4, !tbaa !9
  %1804 = mul nsw i32 %1801, %1803
  %1805 = add nsw i32 %1804, 1
  %1806 = sext i32 %1805 to i64
  %1807 = getelementptr inbounds double, ptr %1800, i64 %1806
  call void @daxpy_(ptr noundef %39, ptr noundef %42, ptr noundef %1799, ptr noundef @c__1, ptr noundef %1807, ptr noundef @c__1)
  br label %1808

1808:                                             ; preds = %1675, %1513
  br label %1809

1809:                                             ; preds = %1808, %1415
  br label %1810

1810:                                             ; preds = %1809
  %1811 = load i32, ptr %59, align 4, !tbaa !9
  %1812 = add nsw i32 %1811, -1
  store i32 %1812, ptr %59, align 4, !tbaa !9
  br label %1408, !llvm.loop !26

1813:                                             ; preds = %1408
  %1814 = load i32, ptr %55, align 4, !tbaa !9
  %1815 = icmp ne i32 %1814, 0
  br i1 %1815, label %1954, label %1816

1816:                                             ; preds = %1813
  %1817 = load ptr, ptr %28, align 8, !tbaa !5
  %1818 = load i32, ptr %77, align 4, !tbaa !9
  %1819 = sub nsw i32 %1818, 1
  %1820 = load ptr, ptr %19, align 8, !tbaa !5
  %1821 = load i32, ptr %1820, align 4, !tbaa !9
  %1822 = mul nsw i32 %1819, %1821
  %1823 = add nsw i32 %1822, 1
  %1824 = sext i32 %1823 to i64
  %1825 = getelementptr inbounds double, ptr %1817, i64 %1824
  %1826 = load ptr, ptr %24, align 8, !tbaa !5
  %1827 = load i32, ptr %76, align 4, !tbaa !9
  %1828 = sub nsw i32 %1827, 1
  %1829 = load i32, ptr %36, align 4, !tbaa !9
  %1830 = mul nsw i32 %1828, %1829
  %1831 = add nsw i32 %1830, 1
  %1832 = sext i32 %1831 to i64
  %1833 = getelementptr inbounds double, ptr %1826, i64 %1832
  call void @dcopy_(ptr noundef %74, ptr noundef %1825, ptr noundef @c__1, ptr noundef %1833, ptr noundef @c__1)
  %1834 = load ptr, ptr %28, align 8, !tbaa !5
  %1835 = load i32, ptr %77, align 4, !tbaa !9
  %1836 = load ptr, ptr %19, align 8, !tbaa !5
  %1837 = load i32, ptr %1836, align 4, !tbaa !9
  %1838 = mul nsw i32 %1835, %1837
  %1839 = add nsw i32 %1838, 1
  %1840 = sext i32 %1839 to i64
  %1841 = getelementptr inbounds double, ptr %1834, i64 %1840
  %1842 = load ptr, ptr %24, align 8, !tbaa !5
  %1843 = load i32, ptr %76, align 4, !tbaa !9
  %1844 = load i32, ptr %36, align 4, !tbaa !9
  %1845 = mul nsw i32 %1843, %1844
  %1846 = add nsw i32 %1845, 1
  %1847 = sext i32 %1846 to i64
  %1848 = getelementptr inbounds double, ptr %1842, i64 %1847
  call void @dcopy_(ptr noundef %74, ptr noundef %1841, ptr noundef @c__1, ptr noundef %1848, ptr noundef @c__1)
  store double 0.000000e+00, ptr %48, align 8, !tbaa !16
  %1849 = load i32, ptr %74, align 4, !tbaa !9
  store i32 %1849, ptr %39, align 4, !tbaa !9
  store i32 1, ptr %60, align 4, !tbaa !9
  br label %1850

1850:                                             ; preds = %1903, %1816
  %1851 = load i32, ptr %60, align 4, !tbaa !9
  %1852 = load i32, ptr %39, align 4, !tbaa !9
  %1853 = icmp sle i32 %1851, %1852
  br i1 %1853, label %1854, label %1906

1854:                                             ; preds = %1850
  %1855 = load double, ptr %48, align 8, !tbaa !16
  store double %1855, ptr %44, align 8, !tbaa !16
  %1856 = load ptr, ptr %24, align 8, !tbaa !5
  %1857 = load i32, ptr %60, align 4, !tbaa !9
  %1858 = load i32, ptr %76, align 4, !tbaa !9
  %1859 = sub nsw i32 %1858, 1
  %1860 = load i32, ptr %36, align 4, !tbaa !9
  %1861 = mul nsw i32 %1859, %1860
  %1862 = add nsw i32 %1857, %1861
  %1863 = sext i32 %1862 to i64
  %1864 = getelementptr inbounds double, ptr %1856, i64 %1863
  %1865 = load double, ptr %1864, align 8, !tbaa !16
  store double %1865, ptr %42, align 8, !tbaa !16
  %1866 = load double, ptr %42, align 8, !tbaa !16
  %1867 = fcmp oge double %1866, 0.000000e+00
  br i1 %1867, label %1868, label %1870

1868:                                             ; preds = %1854
  %1869 = load double, ptr %42, align 8, !tbaa !16
  br label %1873

1870:                                             ; preds = %1854
  %1871 = load double, ptr %42, align 8, !tbaa !16
  %1872 = fneg double %1871
  br label %1873

1873:                                             ; preds = %1870, %1868
  %1874 = phi double [ %1869, %1868 ], [ %1872, %1870 ]
  %1875 = load ptr, ptr %24, align 8, !tbaa !5
  %1876 = load i32, ptr %60, align 4, !tbaa !9
  %1877 = load i32, ptr %76, align 4, !tbaa !9
  %1878 = load i32, ptr %36, align 4, !tbaa !9
  %1879 = mul nsw i32 %1877, %1878
  %1880 = add nsw i32 %1876, %1879
  %1881 = sext i32 %1880 to i64
  %1882 = getelementptr inbounds double, ptr %1875, i64 %1881
  %1883 = load double, ptr %1882, align 8, !tbaa !16
  store double %1883, ptr %43, align 8, !tbaa !16
  %1884 = load double, ptr %43, align 8, !tbaa !16
  %1885 = fcmp oge double %1884, 0.000000e+00
  br i1 %1885, label %1886, label %1888

1886:                                             ; preds = %1873
  %1887 = load double, ptr %43, align 8, !tbaa !16
  br label %1891

1888:                                             ; preds = %1873
  %1889 = load double, ptr %43, align 8, !tbaa !16
  %1890 = fneg double %1889
  br label %1891

1891:                                             ; preds = %1888, %1886
  %1892 = phi double [ %1887, %1886 ], [ %1890, %1888 ]
  %1893 = fadd double %1874, %1892
  store double %1893, ptr %45, align 8, !tbaa !16
  %1894 = load double, ptr %44, align 8, !tbaa !16
  %1895 = load double, ptr %45, align 8, !tbaa !16
  %1896 = fcmp oge double %1894, %1895
  br i1 %1896, label %1897, label %1899

1897:                                             ; preds = %1891
  %1898 = load double, ptr %44, align 8, !tbaa !16
  br label %1901

1899:                                             ; preds = %1891
  %1900 = load double, ptr %45, align 8, !tbaa !16
  br label %1901

1901:                                             ; preds = %1899, %1897
  %1902 = phi double [ %1898, %1897 ], [ %1900, %1899 ]
  store double %1902, ptr %48, align 8, !tbaa !16
  br label %1903

1903:                                             ; preds = %1901
  %1904 = load i32, ptr %60, align 4, !tbaa !9
  %1905 = add nsw i32 %1904, 1
  store i32 %1905, ptr %60, align 4, !tbaa !9
  br label %1850, !llvm.loop !27

1906:                                             ; preds = %1850
  %1907 = load double, ptr %48, align 8, !tbaa !16
  %1908 = fdiv double 1.000000e+00, %1907
  store double %1908, ptr %63, align 8, !tbaa !16
  %1909 = load ptr, ptr %24, align 8, !tbaa !5
  %1910 = load i32, ptr %76, align 4, !tbaa !9
  %1911 = sub nsw i32 %1910, 1
  %1912 = load i32, ptr %36, align 4, !tbaa !9
  %1913 = mul nsw i32 %1911, %1912
  %1914 = add nsw i32 %1913, 1
  %1915 = sext i32 %1914 to i64
  %1916 = getelementptr inbounds double, ptr %1909, i64 %1915
  call void @dscal_(ptr noundef %74, ptr noundef %63, ptr noundef %1916, ptr noundef @c__1)
  %1917 = load ptr, ptr %24, align 8, !tbaa !5
  %1918 = load i32, ptr %76, align 4, !tbaa !9
  %1919 = load i32, ptr %36, align 4, !tbaa !9
  %1920 = mul nsw i32 %1918, %1919
  %1921 = add nsw i32 %1920, 1
  %1922 = sext i32 %1921 to i64
  %1923 = getelementptr inbounds double, ptr %1917, i64 %1922
  call void @dscal_(ptr noundef %74, ptr noundef %63, ptr noundef %1923, ptr noundef @c__1)
  %1924 = load ptr, ptr %19, align 8, !tbaa !5
  %1925 = load i32, ptr %1924, align 4, !tbaa !9
  store i32 %1925, ptr %39, align 4, !tbaa !9
  %1926 = load i32, ptr %74, align 4, !tbaa !9
  %1927 = add nsw i32 %1926, 1
  store i32 %1927, ptr %60, align 4, !tbaa !9
  br label %1928

1928:                                             ; preds = %1950, %1906
  %1929 = load i32, ptr %60, align 4, !tbaa !9
  %1930 = load i32, ptr %39, align 4, !tbaa !9
  %1931 = icmp sle i32 %1929, %1930
  br i1 %1931, label %1932, label %1953

1932:                                             ; preds = %1928
  %1933 = load ptr, ptr %24, align 8, !tbaa !5
  %1934 = load i32, ptr %60, align 4, !tbaa !9
  %1935 = load i32, ptr %76, align 4, !tbaa !9
  %1936 = sub nsw i32 %1935, 1
  %1937 = load i32, ptr %36, align 4, !tbaa !9
  %1938 = mul nsw i32 %1936, %1937
  %1939 = add nsw i32 %1934, %1938
  %1940 = sext i32 %1939 to i64
  %1941 = getelementptr inbounds double, ptr %1933, i64 %1940
  store double 0.000000e+00, ptr %1941, align 8, !tbaa !16
  %1942 = load ptr, ptr %24, align 8, !tbaa !5
  %1943 = load i32, ptr %60, align 4, !tbaa !9
  %1944 = load i32, ptr %76, align 4, !tbaa !9
  %1945 = load i32, ptr %36, align 4, !tbaa !9
  %1946 = mul nsw i32 %1944, %1945
  %1947 = add nsw i32 %1943, %1946
  %1948 = sext i32 %1947 to i64
  %1949 = getelementptr inbounds double, ptr %1942, i64 %1948
  store double 0.000000e+00, ptr %1949, align 8, !tbaa !16
  br label %1950

1950:                                             ; preds = %1932
  %1951 = load i32, ptr %60, align 4, !tbaa !9
  %1952 = add nsw i32 %1951, 1
  store i32 %1952, ptr %60, align 4, !tbaa !9
  br label %1928, !llvm.loop !28

1953:                                             ; preds = %1928
  br label %2193

1954:                                             ; preds = %1813
  %1955 = load i32, ptr %72, align 4, !tbaa !9
  %1956 = icmp eq i32 %1955, 1
  br i1 %1956, label %1957, label %2146

1957:                                             ; preds = %1954
  %1958 = load i32, ptr %74, align 4, !tbaa !9
  %1959 = icmp sgt i32 %1958, 2
  br i1 %1959, label %1960, label %2029

1960:                                             ; preds = %1957
  %1961 = load i32, ptr %74, align 4, !tbaa !9
  %1962 = sub nsw i32 %1961, 2
  store i32 %1962, ptr %39, align 4, !tbaa !9
  %1963 = load ptr, ptr %19, align 8, !tbaa !5
  %1964 = load ptr, ptr %24, align 8, !tbaa !5
  %1965 = load i32, ptr %37, align 4, !tbaa !9
  %1966 = sext i32 %1965 to i64
  %1967 = getelementptr inbounds double, ptr %1964, i64 %1966
  %1968 = load ptr, ptr %25, align 8, !tbaa !5
  %1969 = load ptr, ptr %28, align 8, !tbaa !5
  %1970 = load i32, ptr %77, align 4, !tbaa !9
  %1971 = sub nsw i32 %1970, 1
  %1972 = load ptr, ptr %19, align 8, !tbaa !5
  %1973 = load i32, ptr %1972, align 4, !tbaa !9
  %1974 = mul nsw i32 %1971, %1973
  %1975 = add nsw i32 %1974, 1
  %1976 = sext i32 %1975 to i64
  %1977 = getelementptr inbounds double, ptr %1969, i64 %1976
  %1978 = load ptr, ptr %28, align 8, !tbaa !5
  %1979 = load i32, ptr %74, align 4, !tbaa !9
  %1980 = sub nsw i32 %1979, 1
  %1981 = load i32, ptr %77, align 4, !tbaa !9
  %1982 = sub nsw i32 %1981, 1
  %1983 = load ptr, ptr %19, align 8, !tbaa !5
  %1984 = load i32, ptr %1983, align 4, !tbaa !9
  %1985 = mul nsw i32 %1982, %1984
  %1986 = add nsw i32 %1980, %1985
  %1987 = sext i32 %1986 to i64
  %1988 = getelementptr inbounds double, ptr %1978, i64 %1987
  %1989 = load ptr, ptr %24, align 8, !tbaa !5
  %1990 = load i32, ptr %74, align 4, !tbaa !9
  %1991 = sub nsw i32 %1990, 1
  %1992 = load i32, ptr %36, align 4, !tbaa !9
  %1993 = mul nsw i32 %1991, %1992
  %1994 = add nsw i32 %1993, 1
  %1995 = sext i32 %1994 to i64
  %1996 = getelementptr inbounds double, ptr %1989, i64 %1995
  call void @dgemv_(ptr noundef @.str.10, ptr noundef %1963, ptr noundef %39, ptr noundef @c_b29, ptr noundef %1967, ptr noundef %1968, ptr noundef %1977, ptr noundef @c__1, ptr noundef %1988, ptr noundef %1996, ptr noundef @c__1)
  %1997 = load i32, ptr %74, align 4, !tbaa !9
  %1998 = sub nsw i32 %1997, 2
  store i32 %1998, ptr %39, align 4, !tbaa !9
  %1999 = load ptr, ptr %19, align 8, !tbaa !5
  %2000 = load ptr, ptr %24, align 8, !tbaa !5
  %2001 = load i32, ptr %37, align 4, !tbaa !9
  %2002 = sext i32 %2001 to i64
  %2003 = getelementptr inbounds double, ptr %2000, i64 %2002
  %2004 = load ptr, ptr %25, align 8, !tbaa !5
  %2005 = load ptr, ptr %28, align 8, !tbaa !5
  %2006 = load i32, ptr %77, align 4, !tbaa !9
  %2007 = load ptr, ptr %19, align 8, !tbaa !5
  %2008 = load i32, ptr %2007, align 4, !tbaa !9
  %2009 = mul nsw i32 %2006, %2008
  %2010 = add nsw i32 %2009, 1
  %2011 = sext i32 %2010 to i64
  %2012 = getelementptr inbounds double, ptr %2005, i64 %2011
  %2013 = load ptr, ptr %28, align 8, !tbaa !5
  %2014 = load i32, ptr %74, align 4, !tbaa !9
  %2015 = load i32, ptr %77, align 4, !tbaa !9
  %2016 = load ptr, ptr %19, align 8, !tbaa !5
  %2017 = load i32, ptr %2016, align 4, !tbaa !9
  %2018 = mul nsw i32 %2015, %2017
  %2019 = add nsw i32 %2014, %2018
  %2020 = sext i32 %2019 to i64
  %2021 = getelementptr inbounds double, ptr %2013, i64 %2020
  %2022 = load ptr, ptr %24, align 8, !tbaa !5
  %2023 = load i32, ptr %74, align 4, !tbaa !9
  %2024 = load i32, ptr %36, align 4, !tbaa !9
  %2025 = mul nsw i32 %2023, %2024
  %2026 = add nsw i32 %2025, 1
  %2027 = sext i32 %2026 to i64
  %2028 = getelementptr inbounds double, ptr %2022, i64 %2027
  call void @dgemv_(ptr noundef @.str.10, ptr noundef %1999, ptr noundef %39, ptr noundef @c_b29, ptr noundef %2003, ptr noundef %2004, ptr noundef %2012, ptr noundef @c__1, ptr noundef %2021, ptr noundef %2028, ptr noundef @c__1)
  br label %2067

2029:                                             ; preds = %1957
  %2030 = load ptr, ptr %19, align 8, !tbaa !5
  %2031 = load ptr, ptr %28, align 8, !tbaa !5
  %2032 = load i32, ptr %74, align 4, !tbaa !9
  %2033 = sub nsw i32 %2032, 1
  %2034 = load i32, ptr %77, align 4, !tbaa !9
  %2035 = sub nsw i32 %2034, 1
  %2036 = load ptr, ptr %19, align 8, !tbaa !5
  %2037 = load i32, ptr %2036, align 4, !tbaa !9
  %2038 = mul nsw i32 %2035, %2037
  %2039 = add nsw i32 %2033, %2038
  %2040 = sext i32 %2039 to i64
  %2041 = getelementptr inbounds double, ptr %2031, i64 %2040
  %2042 = load ptr, ptr %24, align 8, !tbaa !5
  %2043 = load i32, ptr %74, align 4, !tbaa !9
  %2044 = sub nsw i32 %2043, 1
  %2045 = load i32, ptr %36, align 4, !tbaa !9
  %2046 = mul nsw i32 %2044, %2045
  %2047 = add nsw i32 %2046, 1
  %2048 = sext i32 %2047 to i64
  %2049 = getelementptr inbounds double, ptr %2042, i64 %2048
  call void @dscal_(ptr noundef %2030, ptr noundef %2041, ptr noundef %2049, ptr noundef @c__1)
  %2050 = load ptr, ptr %19, align 8, !tbaa !5
  %2051 = load ptr, ptr %28, align 8, !tbaa !5
  %2052 = load i32, ptr %74, align 4, !tbaa !9
  %2053 = load i32, ptr %77, align 4, !tbaa !9
  %2054 = load ptr, ptr %19, align 8, !tbaa !5
  %2055 = load i32, ptr %2054, align 4, !tbaa !9
  %2056 = mul nsw i32 %2053, %2055
  %2057 = add nsw i32 %2052, %2056
  %2058 = sext i32 %2057 to i64
  %2059 = getelementptr inbounds double, ptr %2051, i64 %2058
  %2060 = load ptr, ptr %24, align 8, !tbaa !5
  %2061 = load i32, ptr %74, align 4, !tbaa !9
  %2062 = load i32, ptr %36, align 4, !tbaa !9
  %2063 = mul nsw i32 %2061, %2062
  %2064 = add nsw i32 %2063, 1
  %2065 = sext i32 %2064 to i64
  %2066 = getelementptr inbounds double, ptr %2060, i64 %2065
  call void @dscal_(ptr noundef %2050, ptr noundef %2059, ptr noundef %2066, ptr noundef @c__1)
  br label %2067

2067:                                             ; preds = %2029, %1960
  store double 0.000000e+00, ptr %48, align 8, !tbaa !16
  %2068 = load ptr, ptr %19, align 8, !tbaa !5
  %2069 = load i32, ptr %2068, align 4, !tbaa !9
  store i32 %2069, ptr %39, align 4, !tbaa !9
  store i32 1, ptr %60, align 4, !tbaa !9
  br label %2070

2070:                                             ; preds = %2123, %2067
  %2071 = load i32, ptr %60, align 4, !tbaa !9
  %2072 = load i32, ptr %39, align 4, !tbaa !9
  %2073 = icmp sle i32 %2071, %2072
  br i1 %2073, label %2074, label %2126

2074:                                             ; preds = %2070
  %2075 = load double, ptr %48, align 8, !tbaa !16
  store double %2075, ptr %44, align 8, !tbaa !16
  %2076 = load ptr, ptr %24, align 8, !tbaa !5
  %2077 = load i32, ptr %60, align 4, !tbaa !9
  %2078 = load i32, ptr %74, align 4, !tbaa !9
  %2079 = sub nsw i32 %2078, 1
  %2080 = load i32, ptr %36, align 4, !tbaa !9
  %2081 = mul nsw i32 %2079, %2080
  %2082 = add nsw i32 %2077, %2081
  %2083 = sext i32 %2082 to i64
  %2084 = getelementptr inbounds double, ptr %2076, i64 %2083
  %2085 = load double, ptr %2084, align 8, !tbaa !16
  store double %2085, ptr %42, align 8, !tbaa !16
  %2086 = load double, ptr %42, align 8, !tbaa !16
  %2087 = fcmp oge double %2086, 0.000000e+00
  br i1 %2087, label %2088, label %2090

2088:                                             ; preds = %2074
  %2089 = load double, ptr %42, align 8, !tbaa !16
  br label %2093

2090:                                             ; preds = %2074
  %2091 = load double, ptr %42, align 8, !tbaa !16
  %2092 = fneg double %2091
  br label %2093

2093:                                             ; preds = %2090, %2088
  %2094 = phi double [ %2089, %2088 ], [ %2092, %2090 ]
  %2095 = load ptr, ptr %24, align 8, !tbaa !5
  %2096 = load i32, ptr %60, align 4, !tbaa !9
  %2097 = load i32, ptr %74, align 4, !tbaa !9
  %2098 = load i32, ptr %36, align 4, !tbaa !9
  %2099 = mul nsw i32 %2097, %2098
  %2100 = add nsw i32 %2096, %2099
  %2101 = sext i32 %2100 to i64
  %2102 = getelementptr inbounds double, ptr %2095, i64 %2101
  %2103 = load double, ptr %2102, align 8, !tbaa !16
  store double %2103, ptr %43, align 8, !tbaa !16
  %2104 = load double, ptr %43, align 8, !tbaa !16
  %2105 = fcmp oge double %2104, 0.000000e+00
  br i1 %2105, label %2106, label %2108

2106:                                             ; preds = %2093
  %2107 = load double, ptr %43, align 8, !tbaa !16
  br label %2111

2108:                                             ; preds = %2093
  %2109 = load double, ptr %43, align 8, !tbaa !16
  %2110 = fneg double %2109
  br label %2111

2111:                                             ; preds = %2108, %2106
  %2112 = phi double [ %2107, %2106 ], [ %2110, %2108 ]
  %2113 = fadd double %2094, %2112
  store double %2113, ptr %45, align 8, !tbaa !16
  %2114 = load double, ptr %44, align 8, !tbaa !16
  %2115 = load double, ptr %45, align 8, !tbaa !16
  %2116 = fcmp oge double %2114, %2115
  br i1 %2116, label %2117, label %2119

2117:                                             ; preds = %2111
  %2118 = load double, ptr %44, align 8, !tbaa !16
  br label %2121

2119:                                             ; preds = %2111
  %2120 = load double, ptr %45, align 8, !tbaa !16
  br label %2121

2121:                                             ; preds = %2119, %2117
  %2122 = phi double [ %2118, %2117 ], [ %2120, %2119 ]
  store double %2122, ptr %48, align 8, !tbaa !16
  br label %2123

2123:                                             ; preds = %2121
  %2124 = load i32, ptr %60, align 4, !tbaa !9
  %2125 = add nsw i32 %2124, 1
  store i32 %2125, ptr %60, align 4, !tbaa !9
  br label %2070, !llvm.loop !29

2126:                                             ; preds = %2070
  %2127 = load double, ptr %48, align 8, !tbaa !16
  %2128 = fdiv double 1.000000e+00, %2127
  store double %2128, ptr %63, align 8, !tbaa !16
  %2129 = load ptr, ptr %19, align 8, !tbaa !5
  %2130 = load ptr, ptr %24, align 8, !tbaa !5
  %2131 = load i32, ptr %74, align 4, !tbaa !9
  %2132 = sub nsw i32 %2131, 1
  %2133 = load i32, ptr %36, align 4, !tbaa !9
  %2134 = mul nsw i32 %2132, %2133
  %2135 = add nsw i32 %2134, 1
  %2136 = sext i32 %2135 to i64
  %2137 = getelementptr inbounds double, ptr %2130, i64 %2136
  call void @dscal_(ptr noundef %2129, ptr noundef %63, ptr noundef %2137, ptr noundef @c__1)
  %2138 = load ptr, ptr %19, align 8, !tbaa !5
  %2139 = load ptr, ptr %24, align 8, !tbaa !5
  %2140 = load i32, ptr %74, align 4, !tbaa !9
  %2141 = load i32, ptr %36, align 4, !tbaa !9
  %2142 = mul nsw i32 %2140, %2141
  %2143 = add nsw i32 %2142, 1
  %2144 = sext i32 %2143 to i64
  %2145 = getelementptr inbounds double, ptr %2139, i64 %2144
  call void @dscal_(ptr noundef %2138, ptr noundef %63, ptr noundef %2145, ptr noundef @c__1)
  br label %2192

2146:                                             ; preds = %1954
  %2147 = load ptr, ptr %19, align 8, !tbaa !5
  %2148 = load i32, ptr %2147, align 4, !tbaa !9
  store i32 %2148, ptr %39, align 4, !tbaa !9
  %2149 = load i32, ptr %74, align 4, !tbaa !9
  %2150 = add nsw i32 %2149, 1
  store i32 %2150, ptr %60, align 4, !tbaa !9
  br label %2151

2151:                                             ; preds = %2175, %2146
  %2152 = load i32, ptr %60, align 4, !tbaa !9
  %2153 = load i32, ptr %39, align 4, !tbaa !9
  %2154 = icmp sle i32 %2152, %2153
  br i1 %2154, label %2155, label %2178

2155:                                             ; preds = %2151
  %2156 = load ptr, ptr %28, align 8, !tbaa !5
  %2157 = load i32, ptr %60, align 4, !tbaa !9
  %2158 = load i32, ptr %77, align 4, !tbaa !9
  %2159 = sub nsw i32 %2158, 1
  %2160 = load ptr, ptr %19, align 8, !tbaa !5
  %2161 = load i32, ptr %2160, align 4, !tbaa !9
  %2162 = mul nsw i32 %2159, %2161
  %2163 = add nsw i32 %2157, %2162
  %2164 = sext i32 %2163 to i64
  %2165 = getelementptr inbounds double, ptr %2156, i64 %2164
  store double 0.000000e+00, ptr %2165, align 8, !tbaa !16
  %2166 = load ptr, ptr %28, align 8, !tbaa !5
  %2167 = load i32, ptr %60, align 4, !tbaa !9
  %2168 = load i32, ptr %77, align 4, !tbaa !9
  %2169 = load ptr, ptr %19, align 8, !tbaa !5
  %2170 = load i32, ptr %2169, align 4, !tbaa !9
  %2171 = mul nsw i32 %2168, %2170
  %2172 = add nsw i32 %2167, %2171
  %2173 = sext i32 %2172 to i64
  %2174 = getelementptr inbounds double, ptr %2166, i64 %2173
  store double 0.000000e+00, ptr %2174, align 8, !tbaa !16
  br label %2175

2175:                                             ; preds = %2155
  %2176 = load i32, ptr %60, align 4, !tbaa !9
  %2177 = add nsw i32 %2176, 1
  store i32 %2177, ptr %60, align 4, !tbaa !9
  br label %2151, !llvm.loop !30

2178:                                             ; preds = %2151
  %2179 = load i32, ptr %75, align 4, !tbaa !9
  %2180 = sub nsw i32 0, %2179
  %2181 = load i32, ptr %77, align 4, !tbaa !9
  %2182 = sub nsw i32 %2181, 2
  %2183 = sext i32 %2182 to i64
  %2184 = getelementptr inbounds [128 x i32], ptr %71, i64 0, i64 %2183
  store i32 %2180, ptr %2184, align 4, !tbaa !9
  %2185 = load i32, ptr %75, align 4, !tbaa !9
  %2186 = load i32, ptr %77, align 4, !tbaa !9
  %2187 = sub nsw i32 %2186, 1
  %2188 = sext i32 %2187 to i64
  %2189 = getelementptr inbounds [128 x i32], ptr %71, i64 0, i64 %2188
  store i32 %2185, ptr %2189, align 4, !tbaa !9
  %2190 = load i32, ptr %77, align 4, !tbaa !9
  %2191 = add nsw i32 %2190, -1
  store i32 %2191, ptr %77, align 4, !tbaa !9
  br label %2192

2192:                                             ; preds = %2178, %2126
  br label %2193

2193:                                             ; preds = %2192, %1953
  br label %2194

2194:                                             ; preds = %2193, %1200
  %2195 = load i32, ptr %72, align 4, !tbaa !9
  %2196 = icmp sgt i32 %2195, 1
  br i1 %2196, label %2197, label %2416

2197:                                             ; preds = %2194
  %2198 = load i32, ptr %75, align 4, !tbaa !9
  %2199 = icmp eq i32 %2198, 0
  br i1 %2199, label %2200, label %2202

2200:                                             ; preds = %2197
  %2201 = load i32, ptr %74, align 4, !tbaa !9
  store i32 %2201, ptr %82, align 4, !tbaa !9
  br label %2205

2202:                                             ; preds = %2197
  %2203 = load i32, ptr %74, align 4, !tbaa !9
  %2204 = sub nsw i32 %2203, 1
  store i32 %2204, ptr %82, align 4, !tbaa !9
  br label %2205

2205:                                             ; preds = %2202, %2200
  %2206 = load i32, ptr %77, align 4, !tbaa !9
  %2207 = icmp sle i32 %2206, 2
  br i1 %2207, label %2211, label %2208

2208:                                             ; preds = %2205
  %2209 = load i32, ptr %82, align 4, !tbaa !9
  %2210 = icmp eq i32 %2209, 1
  br i1 %2210, label %2211, label %2412

2211:                                             ; preds = %2208, %2205
  %2212 = load i32, ptr %72, align 4, !tbaa !9
  %2213 = load i32, ptr %77, align 4, !tbaa !9
  %2214 = sub nsw i32 %2212, %2213
  %2215 = add nsw i32 %2214, 1
  store i32 %2215, ptr %39, align 4, !tbaa !9
  %2216 = load i32, ptr %82, align 4, !tbaa !9
  %2217 = load i32, ptr %72, align 4, !tbaa !9
  %2218 = add nsw i32 %2216, %2217
  %2219 = load i32, ptr %77, align 4, !tbaa !9
  %2220 = sub nsw i32 %2218, %2219
  store i32 %2220, ptr %40, align 4, !tbaa !9
  %2221 = load ptr, ptr %19, align 8, !tbaa !5
  %2222 = load ptr, ptr %24, align 8, !tbaa !5
  %2223 = load i32, ptr %37, align 4, !tbaa !9
  %2224 = sext i32 %2223 to i64
  %2225 = getelementptr inbounds double, ptr %2222, i64 %2224
  %2226 = load ptr, ptr %25, align 8, !tbaa !5
  %2227 = load ptr, ptr %28, align 8, !tbaa !5
  %2228 = load i32, ptr %77, align 4, !tbaa !9
  %2229 = load ptr, ptr %19, align 8, !tbaa !5
  %2230 = load i32, ptr %2229, align 4, !tbaa !9
  %2231 = mul nsw i32 %2228, %2230
  %2232 = add nsw i32 %2231, 1
  %2233 = sext i32 %2232 to i64
  %2234 = getelementptr inbounds double, ptr %2227, i64 %2233
  %2235 = load ptr, ptr %19, align 8, !tbaa !5
  %2236 = load ptr, ptr %28, align 8, !tbaa !5
  %2237 = load i32, ptr %72, align 4, !tbaa !9
  %2238 = load i32, ptr %77, align 4, !tbaa !9
  %2239 = add nsw i32 %2237, %2238
  %2240 = load ptr, ptr %19, align 8, !tbaa !5
  %2241 = load i32, ptr %2240, align 4, !tbaa !9
  %2242 = mul nsw i32 %2239, %2241
  %2243 = add nsw i32 %2242, 1
  %2244 = sext i32 %2243 to i64
  %2245 = getelementptr inbounds double, ptr %2236, i64 %2244
  %2246 = load ptr, ptr %19, align 8, !tbaa !5
  call void @dgemm_(ptr noundef @.str.10, ptr noundef @.str.10, ptr noundef %2221, ptr noundef %39, ptr noundef %40, ptr noundef @c_b29, ptr noundef %2225, ptr noundef %2226, ptr noundef %2234, ptr noundef %2235, ptr noundef @c_b17, ptr noundef %2245, ptr noundef %2246)
  %2247 = load i32, ptr %72, align 4, !tbaa !9
  store i32 %2247, ptr %39, align 4, !tbaa !9
  %2248 = load i32, ptr %77, align 4, !tbaa !9
  store i32 %2248, ptr %60, align 4, !tbaa !9
  br label %2249

2249:                                             ; preds = %2383, %2211
  %2250 = load i32, ptr %60, align 4, !tbaa !9
  %2251 = load i32, ptr %39, align 4, !tbaa !9
  %2252 = icmp sle i32 %2250, %2251
  br i1 %2252, label %2253, label %2386

2253:                                             ; preds = %2249
  %2254 = load i32, ptr %60, align 4, !tbaa !9
  %2255 = sub nsw i32 %2254, 1
  %2256 = sext i32 %2255 to i64
  %2257 = getelementptr inbounds [128 x i32], ptr %71, i64 0, i64 %2256
  %2258 = load i32, ptr %2257, align 4, !tbaa !9
  %2259 = icmp eq i32 %2258, 0
  br i1 %2259, label %2260, label %2295

2260:                                             ; preds = %2253
  %2261 = load ptr, ptr %19, align 8, !tbaa !5
  %2262 = load ptr, ptr %28, align 8, !tbaa !5
  %2263 = load i32, ptr %72, align 4, !tbaa !9
  %2264 = load i32, ptr %60, align 4, !tbaa !9
  %2265 = add nsw i32 %2263, %2264
  %2266 = load ptr, ptr %19, align 8, !tbaa !5
  %2267 = load i32, ptr %2266, align 4, !tbaa !9
  %2268 = mul nsw i32 %2265, %2267
  %2269 = add nsw i32 %2268, 1
  %2270 = sext i32 %2269 to i64
  %2271 = getelementptr inbounds double, ptr %2262, i64 %2270
  %2272 = call i32 @idamax_(ptr noundef %2261, ptr noundef %2271, ptr noundef @c__1)
  store i32 %2272, ptr %73, align 4, !tbaa !9
  %2273 = load ptr, ptr %28, align 8, !tbaa !5
  %2274 = load i32, ptr %73, align 4, !tbaa !9
  %2275 = load i32, ptr %72, align 4, !tbaa !9
  %2276 = load i32, ptr %60, align 4, !tbaa !9
  %2277 = add nsw i32 %2275, %2276
  %2278 = load ptr, ptr %19, align 8, !tbaa !5
  %2279 = load i32, ptr %2278, align 4, !tbaa !9
  %2280 = mul nsw i32 %2277, %2279
  %2281 = add nsw i32 %2274, %2280
  %2282 = sext i32 %2281 to i64
  %2283 = getelementptr inbounds double, ptr %2273, i64 %2282
  %2284 = load double, ptr %2283, align 8, !tbaa !16
  store double %2284, ptr %42, align 8, !tbaa !16
  %2285 = load double, ptr %42, align 8, !tbaa !16
  %2286 = fcmp oge double %2285, 0.000000e+00
  br i1 %2286, label %2287, label %2289

2287:                                             ; preds = %2260
  %2288 = load double, ptr %42, align 8, !tbaa !16
  br label %2292

2289:                                             ; preds = %2260
  %2290 = load double, ptr %42, align 8, !tbaa !16
  %2291 = fneg double %2290
  br label %2292

2292:                                             ; preds = %2289, %2287
  %2293 = phi double [ %2288, %2287 ], [ %2291, %2289 ]
  %2294 = fdiv double 1.000000e+00, %2293
  store double %2294, ptr %63, align 8, !tbaa !16
  br label %2371

2295:                                             ; preds = %2253
  %2296 = load i32, ptr %60, align 4, !tbaa !9
  %2297 = sub nsw i32 %2296, 1
  %2298 = sext i32 %2297 to i64
  %2299 = getelementptr inbounds [128 x i32], ptr %71, i64 0, i64 %2298
  %2300 = load i32, ptr %2299, align 4, !tbaa !9
  %2301 = icmp eq i32 %2300, 1
  br i1 %2301, label %2302, label %2370

2302:                                             ; preds = %2295
  store double 0.000000e+00, ptr %48, align 8, !tbaa !16
  %2303 = load ptr, ptr %19, align 8, !tbaa !5
  %2304 = load i32, ptr %2303, align 4, !tbaa !9
  store i32 %2304, ptr %40, align 4, !tbaa !9
  store i32 1, ptr %73, align 4, !tbaa !9
  br label %2305

2305:                                             ; preds = %2364, %2302
  %2306 = load i32, ptr %73, align 4, !tbaa !9
  %2307 = load i32, ptr %40, align 4, !tbaa !9
  %2308 = icmp sle i32 %2306, %2307
  br i1 %2308, label %2309, label %2367

2309:                                             ; preds = %2305
  %2310 = load double, ptr %48, align 8, !tbaa !16
  store double %2310, ptr %44, align 8, !tbaa !16
  %2311 = load ptr, ptr %28, align 8, !tbaa !5
  %2312 = load i32, ptr %73, align 4, !tbaa !9
  %2313 = load i32, ptr %72, align 4, !tbaa !9
  %2314 = load i32, ptr %60, align 4, !tbaa !9
  %2315 = add nsw i32 %2313, %2314
  %2316 = load ptr, ptr %19, align 8, !tbaa !5
  %2317 = load i32, ptr %2316, align 4, !tbaa !9
  %2318 = mul nsw i32 %2315, %2317
  %2319 = add nsw i32 %2312, %2318
  %2320 = sext i32 %2319 to i64
  %2321 = getelementptr inbounds double, ptr %2311, i64 %2320
  %2322 = load double, ptr %2321, align 8, !tbaa !16
  store double %2322, ptr %42, align 8, !tbaa !16
  %2323 = load double, ptr %42, align 8, !tbaa !16
  %2324 = fcmp oge double %2323, 0.000000e+00
  br i1 %2324, label %2325, label %2327

2325:                                             ; preds = %2309
  %2326 = load double, ptr %42, align 8, !tbaa !16
  br label %2330

2327:                                             ; preds = %2309
  %2328 = load double, ptr %42, align 8, !tbaa !16
  %2329 = fneg double %2328
  br label %2330

2330:                                             ; preds = %2327, %2325
  %2331 = phi double [ %2326, %2325 ], [ %2329, %2327 ]
  %2332 = load ptr, ptr %28, align 8, !tbaa !5
  %2333 = load i32, ptr %73, align 4, !tbaa !9
  %2334 = load i32, ptr %72, align 4, !tbaa !9
  %2335 = load i32, ptr %60, align 4, !tbaa !9
  %2336 = add nsw i32 %2334, %2335
  %2337 = add nsw i32 %2336, 1
  %2338 = load ptr, ptr %19, align 8, !tbaa !5
  %2339 = load i32, ptr %2338, align 4, !tbaa !9
  %2340 = mul nsw i32 %2337, %2339
  %2341 = add nsw i32 %2333, %2340
  %2342 = sext i32 %2341 to i64
  %2343 = getelementptr inbounds double, ptr %2332, i64 %2342
  %2344 = load double, ptr %2343, align 8, !tbaa !16
  store double %2344, ptr %43, align 8, !tbaa !16
  %2345 = load double, ptr %43, align 8, !tbaa !16
  %2346 = fcmp oge double %2345, 0.000000e+00
  br i1 %2346, label %2347, label %2349

2347:                                             ; preds = %2330
  %2348 = load double, ptr %43, align 8, !tbaa !16
  br label %2352

2349:                                             ; preds = %2330
  %2350 = load double, ptr %43, align 8, !tbaa !16
  %2351 = fneg double %2350
  br label %2352

2352:                                             ; preds = %2349, %2347
  %2353 = phi double [ %2348, %2347 ], [ %2351, %2349 ]
  %2354 = fadd double %2331, %2353
  store double %2354, ptr %45, align 8, !tbaa !16
  %2355 = load double, ptr %44, align 8, !tbaa !16
  %2356 = load double, ptr %45, align 8, !tbaa !16
  %2357 = fcmp oge double %2355, %2356
  br i1 %2357, label %2358, label %2360

2358:                                             ; preds = %2352
  %2359 = load double, ptr %44, align 8, !tbaa !16
  br label %2362

2360:                                             ; preds = %2352
  %2361 = load double, ptr %45, align 8, !tbaa !16
  br label %2362

2362:                                             ; preds = %2360, %2358
  %2363 = phi double [ %2359, %2358 ], [ %2361, %2360 ]
  store double %2363, ptr %48, align 8, !tbaa !16
  br label %2364

2364:                                             ; preds = %2362
  %2365 = load i32, ptr %73, align 4, !tbaa !9
  %2366 = add nsw i32 %2365, 1
  store i32 %2366, ptr %73, align 4, !tbaa !9
  br label %2305, !llvm.loop !31

2367:                                             ; preds = %2305
  %2368 = load double, ptr %48, align 8, !tbaa !16
  %2369 = fdiv double 1.000000e+00, %2368
  store double %2369, ptr %63, align 8, !tbaa !16
  br label %2370

2370:                                             ; preds = %2367, %2295
  br label %2371

2371:                                             ; preds = %2370, %2292
  %2372 = load ptr, ptr %19, align 8, !tbaa !5
  %2373 = load ptr, ptr %28, align 8, !tbaa !5
  %2374 = load i32, ptr %72, align 4, !tbaa !9
  %2375 = load i32, ptr %60, align 4, !tbaa !9
  %2376 = add nsw i32 %2374, %2375
  %2377 = load ptr, ptr %19, align 8, !tbaa !5
  %2378 = load i32, ptr %2377, align 4, !tbaa !9
  %2379 = mul nsw i32 %2376, %2378
  %2380 = add nsw i32 %2379, 1
  %2381 = sext i32 %2380 to i64
  %2382 = getelementptr inbounds double, ptr %2373, i64 %2381
  call void @dscal_(ptr noundef %2372, ptr noundef %63, ptr noundef %2382, ptr noundef @c__1)
  br label %2383

2383:                                             ; preds = %2371
  %2384 = load i32, ptr %60, align 4, !tbaa !9
  %2385 = add nsw i32 %2384, 1
  store i32 %2385, ptr %60, align 4, !tbaa !9
  br label %2249, !llvm.loop !32

2386:                                             ; preds = %2249
  %2387 = load i32, ptr %72, align 4, !tbaa !9
  %2388 = load i32, ptr %77, align 4, !tbaa !9
  %2389 = sub nsw i32 %2387, %2388
  %2390 = add nsw i32 %2389, 1
  store i32 %2390, ptr %39, align 4, !tbaa !9
  %2391 = load ptr, ptr %19, align 8, !tbaa !5
  %2392 = load ptr, ptr %28, align 8, !tbaa !5
  %2393 = load i32, ptr %72, align 4, !tbaa !9
  %2394 = load i32, ptr %77, align 4, !tbaa !9
  %2395 = add nsw i32 %2393, %2394
  %2396 = load ptr, ptr %19, align 8, !tbaa !5
  %2397 = load i32, ptr %2396, align 4, !tbaa !9
  %2398 = mul nsw i32 %2395, %2397
  %2399 = add nsw i32 %2398, 1
  %2400 = sext i32 %2399 to i64
  %2401 = getelementptr inbounds double, ptr %2392, i64 %2400
  %2402 = load ptr, ptr %19, align 8, !tbaa !5
  %2403 = load ptr, ptr %24, align 8, !tbaa !5
  %2404 = load i32, ptr %82, align 4, !tbaa !9
  %2405 = load i32, ptr %36, align 4, !tbaa !9
  %2406 = mul nsw i32 %2404, %2405
  %2407 = add nsw i32 %2406, 1
  %2408 = sext i32 %2407 to i64
  %2409 = getelementptr inbounds double, ptr %2403, i64 %2408
  %2410 = load ptr, ptr %25, align 8, !tbaa !5
  call void @dlacpy_(ptr noundef @.str.7, ptr noundef %2391, ptr noundef %39, ptr noundef %2401, ptr noundef %2402, ptr noundef %2409, ptr noundef %2410)
  %2411 = load i32, ptr %72, align 4, !tbaa !9
  store i32 %2411, ptr %77, align 4, !tbaa !9
  br label %2415

2412:                                             ; preds = %2208
  %2413 = load i32, ptr %77, align 4, !tbaa !9
  %2414 = add nsw i32 %2413, -1
  store i32 %2414, ptr %77, align 4, !tbaa !9
  br label %2415

2415:                                             ; preds = %2412, %2386
  br label %2416

2416:                                             ; preds = %2415, %2194
  %2417 = load i32, ptr %76, align 4, !tbaa !9
  %2418 = add nsw i32 %2417, -1
  store i32 %2418, ptr %76, align 4, !tbaa !9
  %2419 = load i32, ptr %75, align 4, !tbaa !9
  %2420 = icmp ne i32 %2419, 0
  br i1 %2420, label %2421, label %2424

2421:                                             ; preds = %2416
  %2422 = load i32, ptr %76, align 4, !tbaa !9
  %2423 = add nsw i32 %2422, -1
  store i32 %2423, ptr %76, align 4, !tbaa !9
  br label %2424

2424:                                             ; preds = %2421, %2416
  br label %2425

2425:                                             ; preds = %2424, %617, %607, %573
  br label %2426

2426:                                             ; preds = %2425
  %2427 = load i32, ptr %74, align 4, !tbaa !9
  %2428 = add nsw i32 %2427, -1
  store i32 %2428, ptr %74, align 4, !tbaa !9
  br label %567, !llvm.loop !33

2429:                                             ; preds = %567
  br label %2430

2430:                                             ; preds = %2429, %554
  %2431 = load i32, ptr %64, align 4, !tbaa !9
  %2432 = icmp ne i32 %2431, 0
  br i1 %2432, label %2433, label %4815

2433:                                             ; preds = %2430
  store i32 1, ptr %77, align 4, !tbaa !9
  store i32 0, ptr %75, align 4, !tbaa !9
  store i32 1, ptr %76, align 4, !tbaa !9
  %2434 = load ptr, ptr %19, align 8, !tbaa !5
  %2435 = load i32, ptr %2434, align 4, !tbaa !9
  store i32 %2435, ptr %39, align 4, !tbaa !9
  store i32 1, ptr %74, align 4, !tbaa !9
  br label %2436

2436:                                             ; preds = %4811, %2433
  %2437 = load i32, ptr %74, align 4, !tbaa !9
  %2438 = load i32, ptr %39, align 4, !tbaa !9
  %2439 = icmp sle i32 %2437, %2438
  br i1 %2439, label %2440, label %4814

2440:                                             ; preds = %2436
  %2441 = load i32, ptr %75, align 4, !tbaa !9
  %2442 = icmp eq i32 %2441, 1
  br i1 %2442, label %2443, label %2444

2443:                                             ; preds = %2440
  store i32 -1, ptr %75, align 4, !tbaa !9
  br label %4810

2444:                                             ; preds = %2440
  %2445 = load i32, ptr %74, align 4, !tbaa !9
  %2446 = load ptr, ptr %19, align 8, !tbaa !5
  %2447 = load i32, ptr %2446, align 4, !tbaa !9
  %2448 = icmp eq i32 %2445, %2447
  br i1 %2448, label %2449, label %2450

2449:                                             ; preds = %2444
  store i32 0, ptr %75, align 4, !tbaa !9
  br label %2465

2450:                                             ; preds = %2444
  %2451 = load ptr, ptr %20, align 8, !tbaa !5
  %2452 = load i32, ptr %74, align 4, !tbaa !9
  %2453 = add nsw i32 %2452, 1
  %2454 = load i32, ptr %74, align 4, !tbaa !9
  %2455 = load i32, ptr %32, align 4, !tbaa !9
  %2456 = mul nsw i32 %2454, %2455
  %2457 = add nsw i32 %2453, %2456
  %2458 = sext i32 %2457 to i64
  %2459 = getelementptr inbounds double, ptr %2451, i64 %2458
  %2460 = load double, ptr %2459, align 8, !tbaa !16
  %2461 = fcmp oeq double %2460, 0.000000e+00
  br i1 %2461, label %2462, label %2463

2462:                                             ; preds = %2450
  store i32 0, ptr %75, align 4, !tbaa !9
  br label %2464

2463:                                             ; preds = %2450
  store i32 1, ptr %75, align 4, !tbaa !9
  br label %2464

2464:                                             ; preds = %2463, %2462
  br label %2465

2465:                                             ; preds = %2464, %2449
  br label %2466

2466:                                             ; preds = %2465
  %2467 = load i32, ptr %67, align 4, !tbaa !9
  %2468 = icmp ne i32 %2467, 0
  br i1 %2468, label %2469, label %2478

2469:                                             ; preds = %2466
  %2470 = load ptr, ptr %18, align 8, !tbaa !5
  %2471 = load i32, ptr %74, align 4, !tbaa !9
  %2472 = sext i32 %2471 to i64
  %2473 = getelementptr inbounds i32, ptr %2470, i64 %2472
  %2474 = load i32, ptr %2473, align 4, !tbaa !9
  %2475 = icmp ne i32 %2474, 0
  br i1 %2475, label %2477, label %2476

2476:                                             ; preds = %2469
  br label %4810

2477:                                             ; preds = %2469
  br label %2478

2478:                                             ; preds = %2477, %2466
  %2479 = load ptr, ptr %20, align 8, !tbaa !5
  %2480 = load i32, ptr %74, align 4, !tbaa !9
  %2481 = load i32, ptr %74, align 4, !tbaa !9
  %2482 = load i32, ptr %32, align 4, !tbaa !9
  %2483 = mul nsw i32 %2481, %2482
  %2484 = add nsw i32 %2480, %2483
  %2485 = sext i32 %2484 to i64
  %2486 = getelementptr inbounds double, ptr %2479, i64 %2485
  %2487 = load double, ptr %2486, align 8, !tbaa !16
  store double %2487, ptr %79, align 8, !tbaa !16
  store double 0.000000e+00, ptr %78, align 8, !tbaa !16
  %2488 = load i32, ptr %75, align 4, !tbaa !9
  %2489 = icmp ne i32 %2488, 0
  br i1 %2489, label %2490, label %2532

2490:                                             ; preds = %2478
  %2491 = load ptr, ptr %20, align 8, !tbaa !5
  %2492 = load i32, ptr %74, align 4, !tbaa !9
  %2493 = load i32, ptr %74, align 4, !tbaa !9
  %2494 = add nsw i32 %2493, 1
  %2495 = load i32, ptr %32, align 4, !tbaa !9
  %2496 = mul nsw i32 %2494, %2495
  %2497 = add nsw i32 %2492, %2496
  %2498 = sext i32 %2497 to i64
  %2499 = getelementptr inbounds double, ptr %2491, i64 %2498
  %2500 = load double, ptr %2499, align 8, !tbaa !16
  store double %2500, ptr %42, align 8, !tbaa !16
  %2501 = load double, ptr %42, align 8, !tbaa !16
  %2502 = fcmp oge double %2501, 0.000000e+00
  br i1 %2502, label %2503, label %2505

2503:                                             ; preds = %2490
  %2504 = load double, ptr %42, align 8, !tbaa !16
  br label %2508

2505:                                             ; preds = %2490
  %2506 = load double, ptr %42, align 8, !tbaa !16
  %2507 = fneg double %2506
  br label %2508

2508:                                             ; preds = %2505, %2503
  %2509 = phi double [ %2504, %2503 ], [ %2507, %2505 ]
  %2510 = call double @sqrt(double noundef %2509) #4
  %2511 = load ptr, ptr %20, align 8, !tbaa !5
  %2512 = load i32, ptr %74, align 4, !tbaa !9
  %2513 = add nsw i32 %2512, 1
  %2514 = load i32, ptr %74, align 4, !tbaa !9
  %2515 = load i32, ptr %32, align 4, !tbaa !9
  %2516 = mul nsw i32 %2514, %2515
  %2517 = add nsw i32 %2513, %2516
  %2518 = sext i32 %2517 to i64
  %2519 = getelementptr inbounds double, ptr %2511, i64 %2518
  %2520 = load double, ptr %2519, align 8, !tbaa !16
  store double %2520, ptr %43, align 8, !tbaa !16
  %2521 = load double, ptr %43, align 8, !tbaa !16
  %2522 = fcmp oge double %2521, 0.000000e+00
  br i1 %2522, label %2523, label %2525

2523:                                             ; preds = %2508
  %2524 = load double, ptr %43, align 8, !tbaa !16
  br label %2528

2525:                                             ; preds = %2508
  %2526 = load double, ptr %43, align 8, !tbaa !16
  %2527 = fneg double %2526
  br label %2528

2528:                                             ; preds = %2525, %2523
  %2529 = phi double [ %2524, %2523 ], [ %2527, %2525 ]
  %2530 = call double @sqrt(double noundef %2529) #4
  %2531 = fmul double %2510, %2530
  store double %2531, ptr %78, align 8, !tbaa !16
  br label %2532

2532:                                             ; preds = %2528, %2478
  %2533 = load double, ptr %87, align 8, !tbaa !16
  %2534 = load double, ptr %79, align 8, !tbaa !16
  %2535 = fcmp oge double %2534, 0.000000e+00
  br i1 %2535, label %2536, label %2538

2536:                                             ; preds = %2532
  %2537 = load double, ptr %79, align 8, !tbaa !16
  br label %2541

2538:                                             ; preds = %2532
  %2539 = load double, ptr %79, align 8, !tbaa !16
  %2540 = fneg double %2539
  br label %2541

2541:                                             ; preds = %2538, %2536
  %2542 = phi double [ %2537, %2536 ], [ %2540, %2538 ]
  %2543 = load double, ptr %78, align 8, !tbaa !16
  %2544 = fcmp oge double %2543, 0.000000e+00
  br i1 %2544, label %2545, label %2547

2545:                                             ; preds = %2541
  %2546 = load double, ptr %78, align 8, !tbaa !16
  br label %2550

2547:                                             ; preds = %2541
  %2548 = load double, ptr %78, align 8, !tbaa !16
  %2549 = fneg double %2548
  br label %2550

2550:                                             ; preds = %2547, %2545
  %2551 = phi double [ %2546, %2545 ], [ %2549, %2547 ]
  %2552 = fadd double %2542, %2551
  %2553 = fmul double %2533, %2552
  store double %2553, ptr %42, align 8, !tbaa !16
  %2554 = load double, ptr %42, align 8, !tbaa !16
  %2555 = load double, ptr %84, align 8, !tbaa !16
  %2556 = fcmp oge double %2554, %2555
  br i1 %2556, label %2557, label %2559

2557:                                             ; preds = %2550
  %2558 = load double, ptr %42, align 8, !tbaa !16
  br label %2561

2559:                                             ; preds = %2550
  %2560 = load double, ptr %84, align 8, !tbaa !16
  br label %2561

2561:                                             ; preds = %2559, %2557
  %2562 = phi double [ %2558, %2557 ], [ %2560, %2559 ]
  store double %2562, ptr %54, align 8, !tbaa !16
  %2563 = load i32, ptr %75, align 4, !tbaa !9
  %2564 = icmp eq i32 %2563, 0
  br i1 %2564, label %2565, label %3245

2565:                                             ; preds = %2561
  %2566 = load ptr, ptr %28, align 8, !tbaa !5
  %2567 = load i32, ptr %74, align 4, !tbaa !9
  %2568 = load i32, ptr %77, align 4, !tbaa !9
  %2569 = load ptr, ptr %19, align 8, !tbaa !5
  %2570 = load i32, ptr %2569, align 4, !tbaa !9
  %2571 = mul nsw i32 %2568, %2570
  %2572 = add nsw i32 %2567, %2571
  %2573 = sext i32 %2572 to i64
  %2574 = getelementptr inbounds double, ptr %2566, i64 %2573
  store double 1.000000e+00, ptr %2574, align 8, !tbaa !16
  %2575 = load ptr, ptr %19, align 8, !tbaa !5
  %2576 = load i32, ptr %2575, align 4, !tbaa !9
  store i32 %2576, ptr %40, align 4, !tbaa !9
  %2577 = load i32, ptr %74, align 4, !tbaa !9
  %2578 = add nsw i32 %2577, 1
  store i32 %2578, ptr %60, align 4, !tbaa !9
  br label %2579

2579:                                             ; preds = %2603, %2565
  %2580 = load i32, ptr %60, align 4, !tbaa !9
  %2581 = load i32, ptr %40, align 4, !tbaa !9
  %2582 = icmp sle i32 %2580, %2581
  br i1 %2582, label %2583, label %2606

2583:                                             ; preds = %2579
  %2584 = load ptr, ptr %20, align 8, !tbaa !5
  %2585 = load i32, ptr %74, align 4, !tbaa !9
  %2586 = load i32, ptr %60, align 4, !tbaa !9
  %2587 = load i32, ptr %32, align 4, !tbaa !9
  %2588 = mul nsw i32 %2586, %2587
  %2589 = add nsw i32 %2585, %2588
  %2590 = sext i32 %2589 to i64
  %2591 = getelementptr inbounds double, ptr %2584, i64 %2590
  %2592 = load double, ptr %2591, align 8, !tbaa !16
  %2593 = fneg double %2592
  %2594 = load ptr, ptr %28, align 8, !tbaa !5
  %2595 = load i32, ptr %60, align 4, !tbaa !9
  %2596 = load i32, ptr %77, align 4, !tbaa !9
  %2597 = load ptr, ptr %19, align 8, !tbaa !5
  %2598 = load i32, ptr %2597, align 4, !tbaa !9
  %2599 = mul nsw i32 %2596, %2598
  %2600 = add nsw i32 %2595, %2599
  %2601 = sext i32 %2600 to i64
  %2602 = getelementptr inbounds double, ptr %2594, i64 %2601
  store double %2593, ptr %2602, align 8, !tbaa !16
  br label %2603

2603:                                             ; preds = %2583
  %2604 = load i32, ptr %60, align 4, !tbaa !9
  %2605 = add nsw i32 %2604, 1
  store i32 %2605, ptr %60, align 4, !tbaa !9
  br label %2579, !llvm.loop !34

2606:                                             ; preds = %2579
  store double 1.000000e+00, ptr %56, align 8, !tbaa !16
  %2607 = load double, ptr %80, align 8, !tbaa !16
  store double %2607, ptr %66, align 8, !tbaa !16
  %2608 = load i32, ptr %74, align 4, !tbaa !9
  %2609 = add nsw i32 %2608, 1
  store i32 %2609, ptr %57, align 4, !tbaa !9
  %2610 = load ptr, ptr %19, align 8, !tbaa !5
  %2611 = load i32, ptr %2610, align 4, !tbaa !9
  store i32 %2611, ptr %40, align 4, !tbaa !9
  %2612 = load i32, ptr %74, align 4, !tbaa !9
  %2613 = add nsw i32 %2612, 1
  store i32 %2613, ptr %59, align 4, !tbaa !9
  br label %2614

2614:                                             ; preds = %3034, %2606
  %2615 = load i32, ptr %59, align 4, !tbaa !9
  %2616 = load i32, ptr %40, align 4, !tbaa !9
  %2617 = icmp sle i32 %2615, %2616
  br i1 %2617, label %2618, label %3037

2618:                                             ; preds = %2614
  %2619 = load i32, ptr %59, align 4, !tbaa !9
  %2620 = load i32, ptr %57, align 4, !tbaa !9
  %2621 = icmp slt i32 %2619, %2620
  br i1 %2621, label %2622, label %2623

2622:                                             ; preds = %2618
  br label %3033

2623:                                             ; preds = %2618
  %2624 = load i32, ptr %59, align 4, !tbaa !9
  store i32 %2624, ptr %68, align 4, !tbaa !9
  %2625 = load i32, ptr %59, align 4, !tbaa !9
  store i32 %2625, ptr %69, align 4, !tbaa !9
  %2626 = load i32, ptr %59, align 4, !tbaa !9
  %2627 = add nsw i32 %2626, 1
  store i32 %2627, ptr %57, align 4, !tbaa !9
  %2628 = load i32, ptr %59, align 4, !tbaa !9
  %2629 = load ptr, ptr %19, align 8, !tbaa !5
  %2630 = load i32, ptr %2629, align 4, !tbaa !9
  %2631 = icmp slt i32 %2628, %2630
  br i1 %2631, label %2632, label %2650

2632:                                             ; preds = %2623
  %2633 = load ptr, ptr %20, align 8, !tbaa !5
  %2634 = load i32, ptr %59, align 4, !tbaa !9
  %2635 = add nsw i32 %2634, 1
  %2636 = load i32, ptr %59, align 4, !tbaa !9
  %2637 = load i32, ptr %32, align 4, !tbaa !9
  %2638 = mul nsw i32 %2636, %2637
  %2639 = add nsw i32 %2635, %2638
  %2640 = sext i32 %2639 to i64
  %2641 = getelementptr inbounds double, ptr %2633, i64 %2640
  %2642 = load double, ptr %2641, align 8, !tbaa !16
  %2643 = fcmp une double %2642, 0.000000e+00
  br i1 %2643, label %2644, label %2649

2644:                                             ; preds = %2632
  %2645 = load i32, ptr %59, align 4, !tbaa !9
  %2646 = add nsw i32 %2645, 1
  store i32 %2646, ptr %69, align 4, !tbaa !9
  %2647 = load i32, ptr %59, align 4, !tbaa !9
  %2648 = add nsw i32 %2647, 2
  store i32 %2648, ptr %57, align 4, !tbaa !9
  br label %2649

2649:                                             ; preds = %2644, %2632
  br label %2650

2650:                                             ; preds = %2649, %2623
  %2651 = load i32, ptr %68, align 4, !tbaa !9
  %2652 = load i32, ptr %69, align 4, !tbaa !9
  %2653 = icmp eq i32 %2651, %2652
  br i1 %2653, label %2654, label %2796

2654:                                             ; preds = %2650
  %2655 = load ptr, ptr %28, align 8, !tbaa !5
  %2656 = load i32, ptr %59, align 4, !tbaa !9
  %2657 = sext i32 %2656 to i64
  %2658 = getelementptr inbounds double, ptr %2655, i64 %2657
  %2659 = load double, ptr %2658, align 8, !tbaa !16
  %2660 = load double, ptr %66, align 8, !tbaa !16
  %2661 = fcmp ogt double %2659, %2660
  br i1 %2661, label %2662, label %2680

2662:                                             ; preds = %2654
  %2663 = load double, ptr %56, align 8, !tbaa !16
  %2664 = fdiv double 1.000000e+00, %2663
  store double %2664, ptr %86, align 8, !tbaa !16
  %2665 = load ptr, ptr %19, align 8, !tbaa !5
  %2666 = load i32, ptr %2665, align 4, !tbaa !9
  %2667 = load i32, ptr %74, align 4, !tbaa !9
  %2668 = sub nsw i32 %2666, %2667
  %2669 = add nsw i32 %2668, 1
  store i32 %2669, ptr %41, align 4, !tbaa !9
  %2670 = load ptr, ptr %28, align 8, !tbaa !5
  %2671 = load i32, ptr %74, align 4, !tbaa !9
  %2672 = load i32, ptr %77, align 4, !tbaa !9
  %2673 = load ptr, ptr %19, align 8, !tbaa !5
  %2674 = load i32, ptr %2673, align 4, !tbaa !9
  %2675 = mul nsw i32 %2672, %2674
  %2676 = add nsw i32 %2671, %2675
  %2677 = sext i32 %2676 to i64
  %2678 = getelementptr inbounds double, ptr %2670, i64 %2677
  call void @dscal_(ptr noundef %41, ptr noundef %86, ptr noundef %2678, ptr noundef @c__1)
  store double 1.000000e+00, ptr %56, align 8, !tbaa !16
  %2679 = load double, ptr %80, align 8, !tbaa !16
  store double %2679, ptr %66, align 8, !tbaa !16
  br label %2680

2680:                                             ; preds = %2662, %2654
  %2681 = load i32, ptr %59, align 4, !tbaa !9
  %2682 = load i32, ptr %74, align 4, !tbaa !9
  %2683 = sub nsw i32 %2681, %2682
  %2684 = sub nsw i32 %2683, 1
  store i32 %2684, ptr %41, align 4, !tbaa !9
  %2685 = load ptr, ptr %20, align 8, !tbaa !5
  %2686 = load i32, ptr %74, align 4, !tbaa !9
  %2687 = add nsw i32 %2686, 1
  %2688 = load i32, ptr %59, align 4, !tbaa !9
  %2689 = load i32, ptr %32, align 4, !tbaa !9
  %2690 = mul nsw i32 %2688, %2689
  %2691 = add nsw i32 %2687, %2690
  %2692 = sext i32 %2691 to i64
  %2693 = getelementptr inbounds double, ptr %2685, i64 %2692
  %2694 = load ptr, ptr %28, align 8, !tbaa !5
  %2695 = load i32, ptr %74, align 4, !tbaa !9
  %2696 = add nsw i32 %2695, 1
  %2697 = load i32, ptr %77, align 4, !tbaa !9
  %2698 = load ptr, ptr %19, align 8, !tbaa !5
  %2699 = load i32, ptr %2698, align 4, !tbaa !9
  %2700 = mul nsw i32 %2697, %2699
  %2701 = add nsw i32 %2696, %2700
  %2702 = sext i32 %2701 to i64
  %2703 = getelementptr inbounds double, ptr %2694, i64 %2702
  %2704 = call double @ddot_(ptr noundef %41, ptr noundef %2693, ptr noundef @c__1, ptr noundef %2703, ptr noundef @c__1)
  %2705 = load ptr, ptr %28, align 8, !tbaa !5
  %2706 = load i32, ptr %59, align 4, !tbaa !9
  %2707 = load i32, ptr %77, align 4, !tbaa !9
  %2708 = load ptr, ptr %19, align 8, !tbaa !5
  %2709 = load i32, ptr %2708, align 4, !tbaa !9
  %2710 = mul nsw i32 %2707, %2709
  %2711 = add nsw i32 %2706, %2710
  %2712 = sext i32 %2711 to i64
  %2713 = getelementptr inbounds double, ptr %2705, i64 %2712
  %2714 = load double, ptr %2713, align 8, !tbaa !16
  %2715 = fsub double %2714, %2704
  store double %2715, ptr %2713, align 8, !tbaa !16
  %2716 = load ptr, ptr %20, align 8, !tbaa !5
  %2717 = load i32, ptr %59, align 4, !tbaa !9
  %2718 = load i32, ptr %59, align 4, !tbaa !9
  %2719 = load i32, ptr %32, align 4, !tbaa !9
  %2720 = mul nsw i32 %2718, %2719
  %2721 = add nsw i32 %2717, %2720
  %2722 = sext i32 %2721 to i64
  %2723 = getelementptr inbounds double, ptr %2716, i64 %2722
  %2724 = load ptr, ptr %21, align 8, !tbaa !5
  %2725 = load ptr, ptr %28, align 8, !tbaa !5
  %2726 = load i32, ptr %59, align 4, !tbaa !9
  %2727 = load i32, ptr %77, align 4, !tbaa !9
  %2728 = load ptr, ptr %19, align 8, !tbaa !5
  %2729 = load i32, ptr %2728, align 4, !tbaa !9
  %2730 = mul nsw i32 %2727, %2729
  %2731 = add nsw i32 %2726, %2730
  %2732 = sext i32 %2731 to i64
  %2733 = getelementptr inbounds double, ptr %2725, i64 %2732
  %2734 = load ptr, ptr %19, align 8, !tbaa !5
  %2735 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 0
  call void @dlaln2_(ptr noundef @c_false, ptr noundef @c__1, ptr noundef @c__1, ptr noundef %54, ptr noundef @c_b29, ptr noundef %2723, ptr noundef %2724, ptr noundef @c_b29, ptr noundef @c_b29, ptr noundef %2733, ptr noundef %2734, ptr noundef %79, ptr noundef @c_b17, ptr noundef %2735, ptr noundef @c__2, ptr noundef %61, ptr noundef %70, ptr noundef %51)
  %2736 = load double, ptr %61, align 8, !tbaa !16
  %2737 = fcmp une double %2736, 1.000000e+00
  br i1 %2737, label %2738, label %2753

2738:                                             ; preds = %2680
  %2739 = load ptr, ptr %19, align 8, !tbaa !5
  %2740 = load i32, ptr %2739, align 4, !tbaa !9
  %2741 = load i32, ptr %74, align 4, !tbaa !9
  %2742 = sub nsw i32 %2740, %2741
  %2743 = add nsw i32 %2742, 1
  store i32 %2743, ptr %41, align 4, !tbaa !9
  %2744 = load ptr, ptr %28, align 8, !tbaa !5
  %2745 = load i32, ptr %74, align 4, !tbaa !9
  %2746 = load i32, ptr %77, align 4, !tbaa !9
  %2747 = load ptr, ptr %19, align 8, !tbaa !5
  %2748 = load i32, ptr %2747, align 4, !tbaa !9
  %2749 = mul nsw i32 %2746, %2748
  %2750 = add nsw i32 %2745, %2749
  %2751 = sext i32 %2750 to i64
  %2752 = getelementptr inbounds double, ptr %2744, i64 %2751
  call void @dscal_(ptr noundef %41, ptr noundef %61, ptr noundef %2752, ptr noundef @c__1)
  br label %2753

2753:                                             ; preds = %2738, %2680
  %2754 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 0
  %2755 = load double, ptr %2754, align 16, !tbaa !16
  %2756 = load ptr, ptr %28, align 8, !tbaa !5
  %2757 = load i32, ptr %59, align 4, !tbaa !9
  %2758 = load i32, ptr %77, align 4, !tbaa !9
  %2759 = load ptr, ptr %19, align 8, !tbaa !5
  %2760 = load i32, ptr %2759, align 4, !tbaa !9
  %2761 = mul nsw i32 %2758, %2760
  %2762 = add nsw i32 %2757, %2761
  %2763 = sext i32 %2762 to i64
  %2764 = getelementptr inbounds double, ptr %2756, i64 %2763
  store double %2755, ptr %2764, align 8, !tbaa !16
  %2765 = load ptr, ptr %28, align 8, !tbaa !5
  %2766 = load i32, ptr %59, align 4, !tbaa !9
  %2767 = load i32, ptr %77, align 4, !tbaa !9
  %2768 = load ptr, ptr %19, align 8, !tbaa !5
  %2769 = load i32, ptr %2768, align 4, !tbaa !9
  %2770 = mul nsw i32 %2767, %2769
  %2771 = add nsw i32 %2766, %2770
  %2772 = sext i32 %2771 to i64
  %2773 = getelementptr inbounds double, ptr %2765, i64 %2772
  %2774 = load double, ptr %2773, align 8, !tbaa !16
  store double %2774, ptr %42, align 8, !tbaa !16
  %2775 = load double, ptr %42, align 8, !tbaa !16
  %2776 = fcmp oge double %2775, 0.000000e+00
  br i1 %2776, label %2777, label %2779

2777:                                             ; preds = %2753
  %2778 = load double, ptr %42, align 8, !tbaa !16
  br label %2782

2779:                                             ; preds = %2753
  %2780 = load double, ptr %42, align 8, !tbaa !16
  %2781 = fneg double %2780
  br label %2782

2782:                                             ; preds = %2779, %2777
  %2783 = phi double [ %2778, %2777 ], [ %2781, %2779 ]
  store double %2783, ptr %43, align 8, !tbaa !16
  %2784 = load double, ptr %43, align 8, !tbaa !16
  %2785 = load double, ptr %56, align 8, !tbaa !16
  %2786 = fcmp oge double %2784, %2785
  br i1 %2786, label %2787, label %2789

2787:                                             ; preds = %2782
  %2788 = load double, ptr %43, align 8, !tbaa !16
  br label %2791

2789:                                             ; preds = %2782
  %2790 = load double, ptr %56, align 8, !tbaa !16
  br label %2791

2791:                                             ; preds = %2789, %2787
  %2792 = phi double [ %2788, %2787 ], [ %2790, %2789 ]
  store double %2792, ptr %56, align 8, !tbaa !16
  %2793 = load double, ptr %80, align 8, !tbaa !16
  %2794 = load double, ptr %56, align 8, !tbaa !16
  %2795 = fdiv double %2793, %2794
  store double %2795, ptr %66, align 8, !tbaa !16
  br label %3032

2796:                                             ; preds = %2650
  %2797 = load ptr, ptr %28, align 8, !tbaa !5
  %2798 = load i32, ptr %59, align 4, !tbaa !9
  %2799 = sext i32 %2798 to i64
  %2800 = getelementptr inbounds double, ptr %2797, i64 %2799
  %2801 = load double, ptr %2800, align 8, !tbaa !16
  store double %2801, ptr %42, align 8, !tbaa !16
  %2802 = load ptr, ptr %28, align 8, !tbaa !5
  %2803 = load i32, ptr %59, align 4, !tbaa !9
  %2804 = add nsw i32 %2803, 1
  %2805 = sext i32 %2804 to i64
  %2806 = getelementptr inbounds double, ptr %2802, i64 %2805
  %2807 = load double, ptr %2806, align 8, !tbaa !16
  store double %2807, ptr %43, align 8, !tbaa !16
  %2808 = load double, ptr %42, align 8, !tbaa !16
  %2809 = load double, ptr %43, align 8, !tbaa !16
  %2810 = fcmp oge double %2808, %2809
  br i1 %2810, label %2811, label %2813

2811:                                             ; preds = %2796
  %2812 = load double, ptr %42, align 8, !tbaa !16
  br label %2815

2813:                                             ; preds = %2796
  %2814 = load double, ptr %43, align 8, !tbaa !16
  br label %2815

2815:                                             ; preds = %2813, %2811
  %2816 = phi double [ %2812, %2811 ], [ %2814, %2813 ]
  store double %2816, ptr %47, align 8, !tbaa !16
  %2817 = load double, ptr %47, align 8, !tbaa !16
  %2818 = load double, ptr %66, align 8, !tbaa !16
  %2819 = fcmp ogt double %2817, %2818
  br i1 %2819, label %2820, label %2838

2820:                                             ; preds = %2815
  %2821 = load double, ptr %56, align 8, !tbaa !16
  %2822 = fdiv double 1.000000e+00, %2821
  store double %2822, ptr %86, align 8, !tbaa !16
  %2823 = load ptr, ptr %19, align 8, !tbaa !5
  %2824 = load i32, ptr %2823, align 4, !tbaa !9
  %2825 = load i32, ptr %74, align 4, !tbaa !9
  %2826 = sub nsw i32 %2824, %2825
  %2827 = add nsw i32 %2826, 1
  store i32 %2827, ptr %41, align 4, !tbaa !9
  %2828 = load ptr, ptr %28, align 8, !tbaa !5
  %2829 = load i32, ptr %74, align 4, !tbaa !9
  %2830 = load i32, ptr %77, align 4, !tbaa !9
  %2831 = load ptr, ptr %19, align 8, !tbaa !5
  %2832 = load i32, ptr %2831, align 4, !tbaa !9
  %2833 = mul nsw i32 %2830, %2832
  %2834 = add nsw i32 %2829, %2833
  %2835 = sext i32 %2834 to i64
  %2836 = getelementptr inbounds double, ptr %2828, i64 %2835
  call void @dscal_(ptr noundef %41, ptr noundef %86, ptr noundef %2836, ptr noundef @c__1)
  store double 1.000000e+00, ptr %56, align 8, !tbaa !16
  %2837 = load double, ptr %80, align 8, !tbaa !16
  store double %2837, ptr %66, align 8, !tbaa !16
  br label %2838

2838:                                             ; preds = %2820, %2815
  %2839 = load i32, ptr %59, align 4, !tbaa !9
  %2840 = load i32, ptr %74, align 4, !tbaa !9
  %2841 = sub nsw i32 %2839, %2840
  %2842 = sub nsw i32 %2841, 1
  store i32 %2842, ptr %41, align 4, !tbaa !9
  %2843 = load ptr, ptr %20, align 8, !tbaa !5
  %2844 = load i32, ptr %74, align 4, !tbaa !9
  %2845 = add nsw i32 %2844, 1
  %2846 = load i32, ptr %59, align 4, !tbaa !9
  %2847 = load i32, ptr %32, align 4, !tbaa !9
  %2848 = mul nsw i32 %2846, %2847
  %2849 = add nsw i32 %2845, %2848
  %2850 = sext i32 %2849 to i64
  %2851 = getelementptr inbounds double, ptr %2843, i64 %2850
  %2852 = load ptr, ptr %28, align 8, !tbaa !5
  %2853 = load i32, ptr %74, align 4, !tbaa !9
  %2854 = add nsw i32 %2853, 1
  %2855 = load i32, ptr %77, align 4, !tbaa !9
  %2856 = load ptr, ptr %19, align 8, !tbaa !5
  %2857 = load i32, ptr %2856, align 4, !tbaa !9
  %2858 = mul nsw i32 %2855, %2857
  %2859 = add nsw i32 %2854, %2858
  %2860 = sext i32 %2859 to i64
  %2861 = getelementptr inbounds double, ptr %2852, i64 %2860
  %2862 = call double @ddot_(ptr noundef %41, ptr noundef %2851, ptr noundef @c__1, ptr noundef %2861, ptr noundef @c__1)
  %2863 = load ptr, ptr %28, align 8, !tbaa !5
  %2864 = load i32, ptr %59, align 4, !tbaa !9
  %2865 = load i32, ptr %77, align 4, !tbaa !9
  %2866 = load ptr, ptr %19, align 8, !tbaa !5
  %2867 = load i32, ptr %2866, align 4, !tbaa !9
  %2868 = mul nsw i32 %2865, %2867
  %2869 = add nsw i32 %2864, %2868
  %2870 = sext i32 %2869 to i64
  %2871 = getelementptr inbounds double, ptr %2863, i64 %2870
  %2872 = load double, ptr %2871, align 8, !tbaa !16
  %2873 = fsub double %2872, %2862
  store double %2873, ptr %2871, align 8, !tbaa !16
  %2874 = load i32, ptr %59, align 4, !tbaa !9
  %2875 = load i32, ptr %74, align 4, !tbaa !9
  %2876 = sub nsw i32 %2874, %2875
  %2877 = sub nsw i32 %2876, 1
  store i32 %2877, ptr %41, align 4, !tbaa !9
  %2878 = load ptr, ptr %20, align 8, !tbaa !5
  %2879 = load i32, ptr %74, align 4, !tbaa !9
  %2880 = add nsw i32 %2879, 1
  %2881 = load i32, ptr %59, align 4, !tbaa !9
  %2882 = add nsw i32 %2881, 1
  %2883 = load i32, ptr %32, align 4, !tbaa !9
  %2884 = mul nsw i32 %2882, %2883
  %2885 = add nsw i32 %2880, %2884
  %2886 = sext i32 %2885 to i64
  %2887 = getelementptr inbounds double, ptr %2878, i64 %2886
  %2888 = load ptr, ptr %28, align 8, !tbaa !5
  %2889 = load i32, ptr %74, align 4, !tbaa !9
  %2890 = add nsw i32 %2889, 1
  %2891 = load i32, ptr %77, align 4, !tbaa !9
  %2892 = load ptr, ptr %19, align 8, !tbaa !5
  %2893 = load i32, ptr %2892, align 4, !tbaa !9
  %2894 = mul nsw i32 %2891, %2893
  %2895 = add nsw i32 %2890, %2894
  %2896 = sext i32 %2895 to i64
  %2897 = getelementptr inbounds double, ptr %2888, i64 %2896
  %2898 = call double @ddot_(ptr noundef %41, ptr noundef %2887, ptr noundef @c__1, ptr noundef %2897, ptr noundef @c__1)
  %2899 = load ptr, ptr %28, align 8, !tbaa !5
  %2900 = load i32, ptr %59, align 4, !tbaa !9
  %2901 = add nsw i32 %2900, 1
  %2902 = load i32, ptr %77, align 4, !tbaa !9
  %2903 = load ptr, ptr %19, align 8, !tbaa !5
  %2904 = load i32, ptr %2903, align 4, !tbaa !9
  %2905 = mul nsw i32 %2902, %2904
  %2906 = add nsw i32 %2901, %2905
  %2907 = sext i32 %2906 to i64
  %2908 = getelementptr inbounds double, ptr %2899, i64 %2907
  %2909 = load double, ptr %2908, align 8, !tbaa !16
  %2910 = fsub double %2909, %2898
  store double %2910, ptr %2908, align 8, !tbaa !16
  %2911 = load ptr, ptr %20, align 8, !tbaa !5
  %2912 = load i32, ptr %59, align 4, !tbaa !9
  %2913 = load i32, ptr %59, align 4, !tbaa !9
  %2914 = load i32, ptr %32, align 4, !tbaa !9
  %2915 = mul nsw i32 %2913, %2914
  %2916 = add nsw i32 %2912, %2915
  %2917 = sext i32 %2916 to i64
  %2918 = getelementptr inbounds double, ptr %2911, i64 %2917
  %2919 = load ptr, ptr %21, align 8, !tbaa !5
  %2920 = load ptr, ptr %28, align 8, !tbaa !5
  %2921 = load i32, ptr %59, align 4, !tbaa !9
  %2922 = load i32, ptr %77, align 4, !tbaa !9
  %2923 = load ptr, ptr %19, align 8, !tbaa !5
  %2924 = load i32, ptr %2923, align 4, !tbaa !9
  %2925 = mul nsw i32 %2922, %2924
  %2926 = add nsw i32 %2921, %2925
  %2927 = sext i32 %2926 to i64
  %2928 = getelementptr inbounds double, ptr %2920, i64 %2927
  %2929 = load ptr, ptr %19, align 8, !tbaa !5
  %2930 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 0
  call void @dlaln2_(ptr noundef @c_true, ptr noundef @c__2, ptr noundef @c__1, ptr noundef %54, ptr noundef @c_b29, ptr noundef %2918, ptr noundef %2919, ptr noundef @c_b29, ptr noundef @c_b29, ptr noundef %2928, ptr noundef %2929, ptr noundef %79, ptr noundef @c_b17, ptr noundef %2930, ptr noundef @c__2, ptr noundef %61, ptr noundef %70, ptr noundef %51)
  %2931 = load double, ptr %61, align 8, !tbaa !16
  %2932 = fcmp une double %2931, 1.000000e+00
  br i1 %2932, label %2933, label %2948

2933:                                             ; preds = %2838
  %2934 = load ptr, ptr %19, align 8, !tbaa !5
  %2935 = load i32, ptr %2934, align 4, !tbaa !9
  %2936 = load i32, ptr %74, align 4, !tbaa !9
  %2937 = sub nsw i32 %2935, %2936
  %2938 = add nsw i32 %2937, 1
  store i32 %2938, ptr %41, align 4, !tbaa !9
  %2939 = load ptr, ptr %28, align 8, !tbaa !5
  %2940 = load i32, ptr %74, align 4, !tbaa !9
  %2941 = load i32, ptr %77, align 4, !tbaa !9
  %2942 = load ptr, ptr %19, align 8, !tbaa !5
  %2943 = load i32, ptr %2942, align 4, !tbaa !9
  %2944 = mul nsw i32 %2941, %2943
  %2945 = add nsw i32 %2940, %2944
  %2946 = sext i32 %2945 to i64
  %2947 = getelementptr inbounds double, ptr %2939, i64 %2946
  call void @dscal_(ptr noundef %41, ptr noundef %61, ptr noundef %2947, ptr noundef @c__1)
  br label %2948

2948:                                             ; preds = %2933, %2838
  %2949 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 0
  %2950 = load double, ptr %2949, align 16, !tbaa !16
  %2951 = load ptr, ptr %28, align 8, !tbaa !5
  %2952 = load i32, ptr %59, align 4, !tbaa !9
  %2953 = load i32, ptr %77, align 4, !tbaa !9
  %2954 = load ptr, ptr %19, align 8, !tbaa !5
  %2955 = load i32, ptr %2954, align 4, !tbaa !9
  %2956 = mul nsw i32 %2953, %2955
  %2957 = add nsw i32 %2952, %2956
  %2958 = sext i32 %2957 to i64
  %2959 = getelementptr inbounds double, ptr %2951, i64 %2958
  store double %2950, ptr %2959, align 8, !tbaa !16
  %2960 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 1
  %2961 = load double, ptr %2960, align 8, !tbaa !16
  %2962 = load ptr, ptr %28, align 8, !tbaa !5
  %2963 = load i32, ptr %59, align 4, !tbaa !9
  %2964 = add nsw i32 %2963, 1
  %2965 = load i32, ptr %77, align 4, !tbaa !9
  %2966 = load ptr, ptr %19, align 8, !tbaa !5
  %2967 = load i32, ptr %2966, align 4, !tbaa !9
  %2968 = mul nsw i32 %2965, %2967
  %2969 = add nsw i32 %2964, %2968
  %2970 = sext i32 %2969 to i64
  %2971 = getelementptr inbounds double, ptr %2962, i64 %2970
  store double %2961, ptr %2971, align 8, !tbaa !16
  %2972 = load ptr, ptr %28, align 8, !tbaa !5
  %2973 = load i32, ptr %59, align 4, !tbaa !9
  %2974 = load i32, ptr %77, align 4, !tbaa !9
  %2975 = load ptr, ptr %19, align 8, !tbaa !5
  %2976 = load i32, ptr %2975, align 4, !tbaa !9
  %2977 = mul nsw i32 %2974, %2976
  %2978 = add nsw i32 %2973, %2977
  %2979 = sext i32 %2978 to i64
  %2980 = getelementptr inbounds double, ptr %2972, i64 %2979
  %2981 = load double, ptr %2980, align 8, !tbaa !16
  store double %2981, ptr %42, align 8, !tbaa !16
  %2982 = load double, ptr %42, align 8, !tbaa !16
  %2983 = fcmp oge double %2982, 0.000000e+00
  br i1 %2983, label %2984, label %2986

2984:                                             ; preds = %2948
  %2985 = load double, ptr %42, align 8, !tbaa !16
  br label %2989

2986:                                             ; preds = %2948
  %2987 = load double, ptr %42, align 8, !tbaa !16
  %2988 = fneg double %2987
  br label %2989

2989:                                             ; preds = %2986, %2984
  %2990 = phi double [ %2985, %2984 ], [ %2988, %2986 ]
  store double %2990, ptr %44, align 8, !tbaa !16
  %2991 = load ptr, ptr %28, align 8, !tbaa !5
  %2992 = load i32, ptr %59, align 4, !tbaa !9
  %2993 = add nsw i32 %2992, 1
  %2994 = load i32, ptr %77, align 4, !tbaa !9
  %2995 = load ptr, ptr %19, align 8, !tbaa !5
  %2996 = load i32, ptr %2995, align 4, !tbaa !9
  %2997 = mul nsw i32 %2994, %2996
  %2998 = add nsw i32 %2993, %2997
  %2999 = sext i32 %2998 to i64
  %3000 = getelementptr inbounds double, ptr %2991, i64 %2999
  %3001 = load double, ptr %3000, align 8, !tbaa !16
  store double %3001, ptr %43, align 8, !tbaa !16
  %3002 = load double, ptr %43, align 8, !tbaa !16
  %3003 = fcmp oge double %3002, 0.000000e+00
  br i1 %3003, label %3004, label %3006

3004:                                             ; preds = %2989
  %3005 = load double, ptr %43, align 8, !tbaa !16
  br label %3009

3006:                                             ; preds = %2989
  %3007 = load double, ptr %43, align 8, !tbaa !16
  %3008 = fneg double %3007
  br label %3009

3009:                                             ; preds = %3006, %3004
  %3010 = phi double [ %3005, %3004 ], [ %3008, %3006 ]
  store double %3010, ptr %45, align 8, !tbaa !16
  %3011 = load double, ptr %44, align 8, !tbaa !16
  %3012 = load double, ptr %45, align 8, !tbaa !16
  %3013 = fcmp oge double %3011, %3012
  br i1 %3013, label %3014, label %3016

3014:                                             ; preds = %3009
  %3015 = load double, ptr %44, align 8, !tbaa !16
  br label %3018

3016:                                             ; preds = %3009
  %3017 = load double, ptr %45, align 8, !tbaa !16
  br label %3018

3018:                                             ; preds = %3016, %3014
  %3019 = phi double [ %3015, %3014 ], [ %3017, %3016 ]
  store double %3019, ptr %44, align 8, !tbaa !16
  %3020 = load double, ptr %44, align 8, !tbaa !16
  %3021 = load double, ptr %56, align 8, !tbaa !16
  %3022 = fcmp oge double %3020, %3021
  br i1 %3022, label %3023, label %3025

3023:                                             ; preds = %3018
  %3024 = load double, ptr %44, align 8, !tbaa !16
  br label %3027

3025:                                             ; preds = %3018
  %3026 = load double, ptr %56, align 8, !tbaa !16
  br label %3027

3027:                                             ; preds = %3025, %3023
  %3028 = phi double [ %3024, %3023 ], [ %3026, %3025 ]
  store double %3028, ptr %56, align 8, !tbaa !16
  %3029 = load double, ptr %80, align 8, !tbaa !16
  %3030 = load double, ptr %56, align 8, !tbaa !16
  %3031 = fdiv double %3029, %3030
  store double %3031, ptr %66, align 8, !tbaa !16
  br label %3032

3032:                                             ; preds = %3027, %2791
  br label %3033

3033:                                             ; preds = %3032, %2622
  br label %3034

3034:                                             ; preds = %3033
  %3035 = load i32, ptr %59, align 4, !tbaa !9
  %3036 = add nsw i32 %3035, 1
  store i32 %3036, ptr %59, align 4, !tbaa !9
  br label %2614, !llvm.loop !35

3037:                                             ; preds = %2614
  %3038 = load i32, ptr %55, align 4, !tbaa !9
  %3039 = icmp ne i32 %3038, 0
  br i1 %3039, label %3131, label %3040

3040:                                             ; preds = %3037
  %3041 = load ptr, ptr %19, align 8, !tbaa !5
  %3042 = load i32, ptr %3041, align 4, !tbaa !9
  %3043 = load i32, ptr %74, align 4, !tbaa !9
  %3044 = sub nsw i32 %3042, %3043
  %3045 = add nsw i32 %3044, 1
  store i32 %3045, ptr %40, align 4, !tbaa !9
  %3046 = load ptr, ptr %28, align 8, !tbaa !5
  %3047 = load i32, ptr %74, align 4, !tbaa !9
  %3048 = load i32, ptr %77, align 4, !tbaa !9
  %3049 = load ptr, ptr %19, align 8, !tbaa !5
  %3050 = load i32, ptr %3049, align 4, !tbaa !9
  %3051 = mul nsw i32 %3048, %3050
  %3052 = add nsw i32 %3047, %3051
  %3053 = sext i32 %3052 to i64
  %3054 = getelementptr inbounds double, ptr %3046, i64 %3053
  %3055 = load ptr, ptr %22, align 8, !tbaa !5
  %3056 = load i32, ptr %74, align 4, !tbaa !9
  %3057 = load i32, ptr %76, align 4, !tbaa !9
  %3058 = load i32, ptr %34, align 4, !tbaa !9
  %3059 = mul nsw i32 %3057, %3058
  %3060 = add nsw i32 %3056, %3059
  %3061 = sext i32 %3060 to i64
  %3062 = getelementptr inbounds double, ptr %3055, i64 %3061
  call void @dcopy_(ptr noundef %40, ptr noundef %3054, ptr noundef @c__1, ptr noundef %3062, ptr noundef @c__1)
  %3063 = load ptr, ptr %19, align 8, !tbaa !5
  %3064 = load i32, ptr %3063, align 4, !tbaa !9
  %3065 = load i32, ptr %74, align 4, !tbaa !9
  %3066 = sub nsw i32 %3064, %3065
  %3067 = add nsw i32 %3066, 1
  store i32 %3067, ptr %40, align 4, !tbaa !9
  %3068 = load ptr, ptr %22, align 8, !tbaa !5
  %3069 = load i32, ptr %74, align 4, !tbaa !9
  %3070 = load i32, ptr %76, align 4, !tbaa !9
  %3071 = load i32, ptr %34, align 4, !tbaa !9
  %3072 = mul nsw i32 %3070, %3071
  %3073 = add nsw i32 %3069, %3072
  %3074 = sext i32 %3073 to i64
  %3075 = getelementptr inbounds double, ptr %3068, i64 %3074
  %3076 = call i32 @idamax_(ptr noundef %40, ptr noundef %3075, ptr noundef @c__1)
  %3077 = load i32, ptr %74, align 4, !tbaa !9
  %3078 = add nsw i32 %3076, %3077
  %3079 = sub nsw i32 %3078, 1
  store i32 %3079, ptr %73, align 4, !tbaa !9
  %3080 = load ptr, ptr %22, align 8, !tbaa !5
  %3081 = load i32, ptr %73, align 4, !tbaa !9
  %3082 = load i32, ptr %76, align 4, !tbaa !9
  %3083 = load i32, ptr %34, align 4, !tbaa !9
  %3084 = mul nsw i32 %3082, %3083
  %3085 = add nsw i32 %3081, %3084
  %3086 = sext i32 %3085 to i64
  %3087 = getelementptr inbounds double, ptr %3080, i64 %3086
  %3088 = load double, ptr %3087, align 8, !tbaa !16
  store double %3088, ptr %42, align 8, !tbaa !16
  %3089 = load double, ptr %42, align 8, !tbaa !16
  %3090 = fcmp oge double %3089, 0.000000e+00
  br i1 %3090, label %3091, label %3093

3091:                                             ; preds = %3040
  %3092 = load double, ptr %42, align 8, !tbaa !16
  br label %3096

3093:                                             ; preds = %3040
  %3094 = load double, ptr %42, align 8, !tbaa !16
  %3095 = fneg double %3094
  br label %3096

3096:                                             ; preds = %3093, %3091
  %3097 = phi double [ %3092, %3091 ], [ %3095, %3093 ]
  %3098 = fdiv double 1.000000e+00, %3097
  store double %3098, ptr %63, align 8, !tbaa !16
  %3099 = load ptr, ptr %19, align 8, !tbaa !5
  %3100 = load i32, ptr %3099, align 4, !tbaa !9
  %3101 = load i32, ptr %74, align 4, !tbaa !9
  %3102 = sub nsw i32 %3100, %3101
  %3103 = add nsw i32 %3102, 1
  store i32 %3103, ptr %40, align 4, !tbaa !9
  %3104 = load ptr, ptr %22, align 8, !tbaa !5
  %3105 = load i32, ptr %74, align 4, !tbaa !9
  %3106 = load i32, ptr %76, align 4, !tbaa !9
  %3107 = load i32, ptr %34, align 4, !tbaa !9
  %3108 = mul nsw i32 %3106, %3107
  %3109 = add nsw i32 %3105, %3108
  %3110 = sext i32 %3109 to i64
  %3111 = getelementptr inbounds double, ptr %3104, i64 %3110
  call void @dscal_(ptr noundef %40, ptr noundef %63, ptr noundef %3111, ptr noundef @c__1)
  %3112 = load i32, ptr %74, align 4, !tbaa !9
  %3113 = sub nsw i32 %3112, 1
  store i32 %3113, ptr %40, align 4, !tbaa !9
  store i32 1, ptr %60, align 4, !tbaa !9
  br label %3114

3114:                                             ; preds = %3127, %3096
  %3115 = load i32, ptr %60, align 4, !tbaa !9
  %3116 = load i32, ptr %40, align 4, !tbaa !9
  %3117 = icmp sle i32 %3115, %3116
  br i1 %3117, label %3118, label %3130

3118:                                             ; preds = %3114
  %3119 = load ptr, ptr %22, align 8, !tbaa !5
  %3120 = load i32, ptr %60, align 4, !tbaa !9
  %3121 = load i32, ptr %76, align 4, !tbaa !9
  %3122 = load i32, ptr %34, align 4, !tbaa !9
  %3123 = mul nsw i32 %3121, %3122
  %3124 = add nsw i32 %3120, %3123
  %3125 = sext i32 %3124 to i64
  %3126 = getelementptr inbounds double, ptr %3119, i64 %3125
  store double 0.000000e+00, ptr %3126, align 8, !tbaa !16
  br label %3127

3127:                                             ; preds = %3118
  %3128 = load i32, ptr %60, align 4, !tbaa !9
  %3129 = add nsw i32 %3128, 1
  store i32 %3129, ptr %60, align 4, !tbaa !9
  br label %3114, !llvm.loop !36

3130:                                             ; preds = %3114
  br label %3244

3131:                                             ; preds = %3037
  %3132 = load i32, ptr %72, align 4, !tbaa !9
  %3133 = icmp eq i32 %3132, 1
  br i1 %3133, label %3134, label %3217

3134:                                             ; preds = %3131
  %3135 = load i32, ptr %74, align 4, !tbaa !9
  %3136 = load ptr, ptr %19, align 8, !tbaa !5
  %3137 = load i32, ptr %3136, align 4, !tbaa !9
  %3138 = icmp slt i32 %3135, %3137
  br i1 %3138, label %3139, label %3180

3139:                                             ; preds = %3134
  %3140 = load ptr, ptr %19, align 8, !tbaa !5
  %3141 = load i32, ptr %3140, align 4, !tbaa !9
  %3142 = load i32, ptr %74, align 4, !tbaa !9
  %3143 = sub nsw i32 %3141, %3142
  store i32 %3143, ptr %40, align 4, !tbaa !9
  %3144 = load ptr, ptr %19, align 8, !tbaa !5
  %3145 = load ptr, ptr %22, align 8, !tbaa !5
  %3146 = load i32, ptr %74, align 4, !tbaa !9
  %3147 = add nsw i32 %3146, 1
  %3148 = load i32, ptr %34, align 4, !tbaa !9
  %3149 = mul nsw i32 %3147, %3148
  %3150 = add nsw i32 %3149, 1
  %3151 = sext i32 %3150 to i64
  %3152 = getelementptr inbounds double, ptr %3145, i64 %3151
  %3153 = load ptr, ptr %23, align 8, !tbaa !5
  %3154 = load ptr, ptr %28, align 8, !tbaa !5
  %3155 = load i32, ptr %74, align 4, !tbaa !9
  %3156 = add nsw i32 %3155, 1
  %3157 = load i32, ptr %77, align 4, !tbaa !9
  %3158 = load ptr, ptr %19, align 8, !tbaa !5
  %3159 = load i32, ptr %3158, align 4, !tbaa !9
  %3160 = mul nsw i32 %3157, %3159
  %3161 = add nsw i32 %3156, %3160
  %3162 = sext i32 %3161 to i64
  %3163 = getelementptr inbounds double, ptr %3154, i64 %3162
  %3164 = load ptr, ptr %28, align 8, !tbaa !5
  %3165 = load i32, ptr %74, align 4, !tbaa !9
  %3166 = load i32, ptr %77, align 4, !tbaa !9
  %3167 = load ptr, ptr %19, align 8, !tbaa !5
  %3168 = load i32, ptr %3167, align 4, !tbaa !9
  %3169 = mul nsw i32 %3166, %3168
  %3170 = add nsw i32 %3165, %3169
  %3171 = sext i32 %3170 to i64
  %3172 = getelementptr inbounds double, ptr %3164, i64 %3171
  %3173 = load ptr, ptr %22, align 8, !tbaa !5
  %3174 = load i32, ptr %74, align 4, !tbaa !9
  %3175 = load i32, ptr %34, align 4, !tbaa !9
  %3176 = mul nsw i32 %3174, %3175
  %3177 = add nsw i32 %3176, 1
  %3178 = sext i32 %3177 to i64
  %3179 = getelementptr inbounds double, ptr %3173, i64 %3178
  call void @dgemv_(ptr noundef @.str.10, ptr noundef %3144, ptr noundef %40, ptr noundef @c_b29, ptr noundef %3152, ptr noundef %3153, ptr noundef %3163, ptr noundef @c__1, ptr noundef %3172, ptr noundef %3179, ptr noundef @c__1)
  br label %3180

3180:                                             ; preds = %3139, %3134
  %3181 = load ptr, ptr %19, align 8, !tbaa !5
  %3182 = load ptr, ptr %22, align 8, !tbaa !5
  %3183 = load i32, ptr %74, align 4, !tbaa !9
  %3184 = load i32, ptr %34, align 4, !tbaa !9
  %3185 = mul nsw i32 %3183, %3184
  %3186 = add nsw i32 %3185, 1
  %3187 = sext i32 %3186 to i64
  %3188 = getelementptr inbounds double, ptr %3182, i64 %3187
  %3189 = call i32 @idamax_(ptr noundef %3181, ptr noundef %3188, ptr noundef @c__1)
  store i32 %3189, ptr %73, align 4, !tbaa !9
  %3190 = load ptr, ptr %22, align 8, !tbaa !5
  %3191 = load i32, ptr %73, align 4, !tbaa !9
  %3192 = load i32, ptr %74, align 4, !tbaa !9
  %3193 = load i32, ptr %34, align 4, !tbaa !9
  %3194 = mul nsw i32 %3192, %3193
  %3195 = add nsw i32 %3191, %3194
  %3196 = sext i32 %3195 to i64
  %3197 = getelementptr inbounds double, ptr %3190, i64 %3196
  %3198 = load double, ptr %3197, align 8, !tbaa !16
  store double %3198, ptr %42, align 8, !tbaa !16
  %3199 = load double, ptr %42, align 8, !tbaa !16
  %3200 = fcmp oge double %3199, 0.000000e+00
  br i1 %3200, label %3201, label %3203

3201:                                             ; preds = %3180
  %3202 = load double, ptr %42, align 8, !tbaa !16
  br label %3206

3203:                                             ; preds = %3180
  %3204 = load double, ptr %42, align 8, !tbaa !16
  %3205 = fneg double %3204
  br label %3206

3206:                                             ; preds = %3203, %3201
  %3207 = phi double [ %3202, %3201 ], [ %3205, %3203 ]
  %3208 = fdiv double 1.000000e+00, %3207
  store double %3208, ptr %63, align 8, !tbaa !16
  %3209 = load ptr, ptr %19, align 8, !tbaa !5
  %3210 = load ptr, ptr %22, align 8, !tbaa !5
  %3211 = load i32, ptr %74, align 4, !tbaa !9
  %3212 = load i32, ptr %34, align 4, !tbaa !9
  %3213 = mul nsw i32 %3211, %3212
  %3214 = add nsw i32 %3213, 1
  %3215 = sext i32 %3214 to i64
  %3216 = getelementptr inbounds double, ptr %3210, i64 %3215
  call void @dscal_(ptr noundef %3209, ptr noundef %63, ptr noundef %3216, ptr noundef @c__1)
  br label %3243

3217:                                             ; preds = %3131
  %3218 = load i32, ptr %74, align 4, !tbaa !9
  %3219 = sub nsw i32 %3218, 1
  store i32 %3219, ptr %40, align 4, !tbaa !9
  store i32 1, ptr %60, align 4, !tbaa !9
  br label %3220

3220:                                             ; preds = %3234, %3217
  %3221 = load i32, ptr %60, align 4, !tbaa !9
  %3222 = load i32, ptr %40, align 4, !tbaa !9
  %3223 = icmp sle i32 %3221, %3222
  br i1 %3223, label %3224, label %3237

3224:                                             ; preds = %3220
  %3225 = load ptr, ptr %28, align 8, !tbaa !5
  %3226 = load i32, ptr %60, align 4, !tbaa !9
  %3227 = load i32, ptr %77, align 4, !tbaa !9
  %3228 = load ptr, ptr %19, align 8, !tbaa !5
  %3229 = load i32, ptr %3228, align 4, !tbaa !9
  %3230 = mul nsw i32 %3227, %3229
  %3231 = add nsw i32 %3226, %3230
  %3232 = sext i32 %3231 to i64
  %3233 = getelementptr inbounds double, ptr %3225, i64 %3232
  store double 0.000000e+00, ptr %3233, align 8, !tbaa !16
  br label %3234

3234:                                             ; preds = %3224
  %3235 = load i32, ptr %60, align 4, !tbaa !9
  %3236 = add nsw i32 %3235, 1
  store i32 %3236, ptr %60, align 4, !tbaa !9
  br label %3220, !llvm.loop !37

3237:                                             ; preds = %3220
  %3238 = load i32, ptr %75, align 4, !tbaa !9
  %3239 = load i32, ptr %77, align 4, !tbaa !9
  %3240 = sub nsw i32 %3239, 1
  %3241 = sext i32 %3240 to i64
  %3242 = getelementptr inbounds [128 x i32], ptr %71, i64 0, i64 %3241
  store i32 %3238, ptr %3242, align 4, !tbaa !9
  br label %3243

3243:                                             ; preds = %3237, %3206
  br label %3244

3244:                                             ; preds = %3243, %3130
  br label %4575

3245:                                             ; preds = %2561
  %3246 = load ptr, ptr %20, align 8, !tbaa !5
  %3247 = load i32, ptr %74, align 4, !tbaa !9
  %3248 = load i32, ptr %74, align 4, !tbaa !9
  %3249 = add nsw i32 %3248, 1
  %3250 = load i32, ptr %32, align 4, !tbaa !9
  %3251 = mul nsw i32 %3249, %3250
  %3252 = add nsw i32 %3247, %3251
  %3253 = sext i32 %3252 to i64
  %3254 = getelementptr inbounds double, ptr %3246, i64 %3253
  %3255 = load double, ptr %3254, align 8, !tbaa !16
  store double %3255, ptr %42, align 8, !tbaa !16
  %3256 = load double, ptr %42, align 8, !tbaa !16
  %3257 = fcmp oge double %3256, 0.000000e+00
  br i1 %3257, label %3258, label %3260

3258:                                             ; preds = %3245
  %3259 = load double, ptr %42, align 8, !tbaa !16
  br label %3263

3260:                                             ; preds = %3245
  %3261 = load double, ptr %42, align 8, !tbaa !16
  %3262 = fneg double %3261
  br label %3263

3263:                                             ; preds = %3260, %3258
  %3264 = phi double [ %3259, %3258 ], [ %3262, %3260 ]
  %3265 = load ptr, ptr %20, align 8, !tbaa !5
  %3266 = load i32, ptr %74, align 4, !tbaa !9
  %3267 = add nsw i32 %3266, 1
  %3268 = load i32, ptr %74, align 4, !tbaa !9
  %3269 = load i32, ptr %32, align 4, !tbaa !9
  %3270 = mul nsw i32 %3268, %3269
  %3271 = add nsw i32 %3267, %3270
  %3272 = sext i32 %3271 to i64
  %3273 = getelementptr inbounds double, ptr %3265, i64 %3272
  %3274 = load double, ptr %3273, align 8, !tbaa !16
  store double %3274, ptr %43, align 8, !tbaa !16
  %3275 = load double, ptr %43, align 8, !tbaa !16
  %3276 = fcmp oge double %3275, 0.000000e+00
  br i1 %3276, label %3277, label %3279

3277:                                             ; preds = %3263
  %3278 = load double, ptr %43, align 8, !tbaa !16
  br label %3282

3279:                                             ; preds = %3263
  %3280 = load double, ptr %43, align 8, !tbaa !16
  %3281 = fneg double %3280
  br label %3282

3282:                                             ; preds = %3279, %3277
  %3283 = phi double [ %3278, %3277 ], [ %3281, %3279 ]
  %3284 = fcmp oge double %3264, %3283
  br i1 %3284, label %3285, label %3318

3285:                                             ; preds = %3282
  %3286 = load double, ptr %78, align 8, !tbaa !16
  %3287 = load ptr, ptr %20, align 8, !tbaa !5
  %3288 = load i32, ptr %74, align 4, !tbaa !9
  %3289 = load i32, ptr %74, align 4, !tbaa !9
  %3290 = add nsw i32 %3289, 1
  %3291 = load i32, ptr %32, align 4, !tbaa !9
  %3292 = mul nsw i32 %3290, %3291
  %3293 = add nsw i32 %3288, %3292
  %3294 = sext i32 %3293 to i64
  %3295 = getelementptr inbounds double, ptr %3287, i64 %3294
  %3296 = load double, ptr %3295, align 8, !tbaa !16
  %3297 = fdiv double %3286, %3296
  %3298 = load ptr, ptr %28, align 8, !tbaa !5
  %3299 = load i32, ptr %74, align 4, !tbaa !9
  %3300 = load i32, ptr %77, align 4, !tbaa !9
  %3301 = load ptr, ptr %19, align 8, !tbaa !5
  %3302 = load i32, ptr %3301, align 4, !tbaa !9
  %3303 = mul nsw i32 %3300, %3302
  %3304 = add nsw i32 %3299, %3303
  %3305 = sext i32 %3304 to i64
  %3306 = getelementptr inbounds double, ptr %3298, i64 %3305
  store double %3297, ptr %3306, align 8, !tbaa !16
  %3307 = load ptr, ptr %28, align 8, !tbaa !5
  %3308 = load i32, ptr %74, align 4, !tbaa !9
  %3309 = add nsw i32 %3308, 1
  %3310 = load i32, ptr %77, align 4, !tbaa !9
  %3311 = add nsw i32 %3310, 1
  %3312 = load ptr, ptr %19, align 8, !tbaa !5
  %3313 = load i32, ptr %3312, align 4, !tbaa !9
  %3314 = mul nsw i32 %3311, %3313
  %3315 = add nsw i32 %3309, %3314
  %3316 = sext i32 %3315 to i64
  %3317 = getelementptr inbounds double, ptr %3307, i64 %3316
  store double 1.000000e+00, ptr %3317, align 8, !tbaa !16
  br label %3352

3318:                                             ; preds = %3282
  %3319 = load ptr, ptr %28, align 8, !tbaa !5
  %3320 = load i32, ptr %74, align 4, !tbaa !9
  %3321 = load i32, ptr %77, align 4, !tbaa !9
  %3322 = load ptr, ptr %19, align 8, !tbaa !5
  %3323 = load i32, ptr %3322, align 4, !tbaa !9
  %3324 = mul nsw i32 %3321, %3323
  %3325 = add nsw i32 %3320, %3324
  %3326 = sext i32 %3325 to i64
  %3327 = getelementptr inbounds double, ptr %3319, i64 %3326
  store double 1.000000e+00, ptr %3327, align 8, !tbaa !16
  %3328 = load double, ptr %78, align 8, !tbaa !16
  %3329 = fneg double %3328
  %3330 = load ptr, ptr %20, align 8, !tbaa !5
  %3331 = load i32, ptr %74, align 4, !tbaa !9
  %3332 = add nsw i32 %3331, 1
  %3333 = load i32, ptr %74, align 4, !tbaa !9
  %3334 = load i32, ptr %32, align 4, !tbaa !9
  %3335 = mul nsw i32 %3333, %3334
  %3336 = add nsw i32 %3332, %3335
  %3337 = sext i32 %3336 to i64
  %3338 = getelementptr inbounds double, ptr %3330, i64 %3337
  %3339 = load double, ptr %3338, align 8, !tbaa !16
  %3340 = fdiv double %3329, %3339
  %3341 = load ptr, ptr %28, align 8, !tbaa !5
  %3342 = load i32, ptr %74, align 4, !tbaa !9
  %3343 = add nsw i32 %3342, 1
  %3344 = load i32, ptr %77, align 4, !tbaa !9
  %3345 = add nsw i32 %3344, 1
  %3346 = load ptr, ptr %19, align 8, !tbaa !5
  %3347 = load i32, ptr %3346, align 4, !tbaa !9
  %3348 = mul nsw i32 %3345, %3347
  %3349 = add nsw i32 %3343, %3348
  %3350 = sext i32 %3349 to i64
  %3351 = getelementptr inbounds double, ptr %3341, i64 %3350
  store double %3340, ptr %3351, align 8, !tbaa !16
  br label %3352

3352:                                             ; preds = %3318, %3285
  %3353 = load ptr, ptr %28, align 8, !tbaa !5
  %3354 = load i32, ptr %74, align 4, !tbaa !9
  %3355 = add nsw i32 %3354, 1
  %3356 = load i32, ptr %77, align 4, !tbaa !9
  %3357 = load ptr, ptr %19, align 8, !tbaa !5
  %3358 = load i32, ptr %3357, align 4, !tbaa !9
  %3359 = mul nsw i32 %3356, %3358
  %3360 = add nsw i32 %3355, %3359
  %3361 = sext i32 %3360 to i64
  %3362 = getelementptr inbounds double, ptr %3353, i64 %3361
  store double 0.000000e+00, ptr %3362, align 8, !tbaa !16
  %3363 = load ptr, ptr %28, align 8, !tbaa !5
  %3364 = load i32, ptr %74, align 4, !tbaa !9
  %3365 = load i32, ptr %77, align 4, !tbaa !9
  %3366 = add nsw i32 %3365, 1
  %3367 = load ptr, ptr %19, align 8, !tbaa !5
  %3368 = load i32, ptr %3367, align 4, !tbaa !9
  %3369 = mul nsw i32 %3366, %3368
  %3370 = add nsw i32 %3364, %3369
  %3371 = sext i32 %3370 to i64
  %3372 = getelementptr inbounds double, ptr %3363, i64 %3371
  store double 0.000000e+00, ptr %3372, align 8, !tbaa !16
  %3373 = load ptr, ptr %19, align 8, !tbaa !5
  %3374 = load i32, ptr %3373, align 4, !tbaa !9
  store i32 %3374, ptr %40, align 4, !tbaa !9
  %3375 = load i32, ptr %74, align 4, !tbaa !9
  %3376 = add nsw i32 %3375, 2
  store i32 %3376, ptr %60, align 4, !tbaa !9
  br label %3377

3377:                                             ; preds = %3446, %3352
  %3378 = load i32, ptr %60, align 4, !tbaa !9
  %3379 = load i32, ptr %40, align 4, !tbaa !9
  %3380 = icmp sle i32 %3378, %3379
  br i1 %3380, label %3381, label %3449

3381:                                             ; preds = %3377
  %3382 = load ptr, ptr %28, align 8, !tbaa !5
  %3383 = load i32, ptr %74, align 4, !tbaa !9
  %3384 = load i32, ptr %77, align 4, !tbaa !9
  %3385 = load ptr, ptr %19, align 8, !tbaa !5
  %3386 = load i32, ptr %3385, align 4, !tbaa !9
  %3387 = mul nsw i32 %3384, %3386
  %3388 = add nsw i32 %3383, %3387
  %3389 = sext i32 %3388 to i64
  %3390 = getelementptr inbounds double, ptr %3382, i64 %3389
  %3391 = load double, ptr %3390, align 8, !tbaa !16
  %3392 = fneg double %3391
  %3393 = load ptr, ptr %20, align 8, !tbaa !5
  %3394 = load i32, ptr %74, align 4, !tbaa !9
  %3395 = load i32, ptr %60, align 4, !tbaa !9
  %3396 = load i32, ptr %32, align 4, !tbaa !9
  %3397 = mul nsw i32 %3395, %3396
  %3398 = add nsw i32 %3394, %3397
  %3399 = sext i32 %3398 to i64
  %3400 = getelementptr inbounds double, ptr %3393, i64 %3399
  %3401 = load double, ptr %3400, align 8, !tbaa !16
  %3402 = fmul double %3392, %3401
  %3403 = load ptr, ptr %28, align 8, !tbaa !5
  %3404 = load i32, ptr %60, align 4, !tbaa !9
  %3405 = load i32, ptr %77, align 4, !tbaa !9
  %3406 = load ptr, ptr %19, align 8, !tbaa !5
  %3407 = load i32, ptr %3406, align 4, !tbaa !9
  %3408 = mul nsw i32 %3405, %3407
  %3409 = add nsw i32 %3404, %3408
  %3410 = sext i32 %3409 to i64
  %3411 = getelementptr inbounds double, ptr %3403, i64 %3410
  store double %3402, ptr %3411, align 8, !tbaa !16
  %3412 = load ptr, ptr %28, align 8, !tbaa !5
  %3413 = load i32, ptr %74, align 4, !tbaa !9
  %3414 = add nsw i32 %3413, 1
  %3415 = load i32, ptr %77, align 4, !tbaa !9
  %3416 = add nsw i32 %3415, 1
  %3417 = load ptr, ptr %19, align 8, !tbaa !5
  %3418 = load i32, ptr %3417, align 4, !tbaa !9
  %3419 = mul nsw i32 %3416, %3418
  %3420 = add nsw i32 %3414, %3419
  %3421 = sext i32 %3420 to i64
  %3422 = getelementptr inbounds double, ptr %3412, i64 %3421
  %3423 = load double, ptr %3422, align 8, !tbaa !16
  %3424 = fneg double %3423
  %3425 = load ptr, ptr %20, align 8, !tbaa !5
  %3426 = load i32, ptr %74, align 4, !tbaa !9
  %3427 = add nsw i32 %3426, 1
  %3428 = load i32, ptr %60, align 4, !tbaa !9
  %3429 = load i32, ptr %32, align 4, !tbaa !9
  %3430 = mul nsw i32 %3428, %3429
  %3431 = add nsw i32 %3427, %3430
  %3432 = sext i32 %3431 to i64
  %3433 = getelementptr inbounds double, ptr %3425, i64 %3432
  %3434 = load double, ptr %3433, align 8, !tbaa !16
  %3435 = fmul double %3424, %3434
  %3436 = load ptr, ptr %28, align 8, !tbaa !5
  %3437 = load i32, ptr %60, align 4, !tbaa !9
  %3438 = load i32, ptr %77, align 4, !tbaa !9
  %3439 = add nsw i32 %3438, 1
  %3440 = load ptr, ptr %19, align 8, !tbaa !5
  %3441 = load i32, ptr %3440, align 4, !tbaa !9
  %3442 = mul nsw i32 %3439, %3441
  %3443 = add nsw i32 %3437, %3442
  %3444 = sext i32 %3443 to i64
  %3445 = getelementptr inbounds double, ptr %3436, i64 %3444
  store double %3435, ptr %3445, align 8, !tbaa !16
  br label %3446

3446:                                             ; preds = %3381
  %3447 = load i32, ptr %60, align 4, !tbaa !9
  %3448 = add nsw i32 %3447, 1
  store i32 %3448, ptr %60, align 4, !tbaa !9
  br label %3377, !llvm.loop !38

3449:                                             ; preds = %3377
  store double 1.000000e+00, ptr %56, align 8, !tbaa !16
  %3450 = load double, ptr %80, align 8, !tbaa !16
  store double %3450, ptr %66, align 8, !tbaa !16
  %3451 = load i32, ptr %74, align 4, !tbaa !9
  %3452 = add nsw i32 %3451, 2
  store i32 %3452, ptr %57, align 4, !tbaa !9
  %3453 = load ptr, ptr %19, align 8, !tbaa !5
  %3454 = load i32, ptr %3453, align 4, !tbaa !9
  store i32 %3454, ptr %40, align 4, !tbaa !9
  %3455 = load i32, ptr %74, align 4, !tbaa !9
  %3456 = add nsw i32 %3455, 2
  store i32 %3456, ptr %59, align 4, !tbaa !9
  br label %3457

3457:                                             ; preds = %4147, %3449
  %3458 = load i32, ptr %59, align 4, !tbaa !9
  %3459 = load i32, ptr %40, align 4, !tbaa !9
  %3460 = icmp sle i32 %3458, %3459
  br i1 %3460, label %3461, label %4150

3461:                                             ; preds = %3457
  %3462 = load i32, ptr %59, align 4, !tbaa !9
  %3463 = load i32, ptr %57, align 4, !tbaa !9
  %3464 = icmp slt i32 %3462, %3463
  br i1 %3464, label %3465, label %3466

3465:                                             ; preds = %3461
  br label %4146

3466:                                             ; preds = %3461
  %3467 = load i32, ptr %59, align 4, !tbaa !9
  store i32 %3467, ptr %68, align 4, !tbaa !9
  %3468 = load i32, ptr %59, align 4, !tbaa !9
  store i32 %3468, ptr %69, align 4, !tbaa !9
  %3469 = load i32, ptr %59, align 4, !tbaa !9
  %3470 = add nsw i32 %3469, 1
  store i32 %3470, ptr %57, align 4, !tbaa !9
  %3471 = load i32, ptr %59, align 4, !tbaa !9
  %3472 = load ptr, ptr %19, align 8, !tbaa !5
  %3473 = load i32, ptr %3472, align 4, !tbaa !9
  %3474 = icmp slt i32 %3471, %3473
  br i1 %3474, label %3475, label %3493

3475:                                             ; preds = %3466
  %3476 = load ptr, ptr %20, align 8, !tbaa !5
  %3477 = load i32, ptr %59, align 4, !tbaa !9
  %3478 = add nsw i32 %3477, 1
  %3479 = load i32, ptr %59, align 4, !tbaa !9
  %3480 = load i32, ptr %32, align 4, !tbaa !9
  %3481 = mul nsw i32 %3479, %3480
  %3482 = add nsw i32 %3478, %3481
  %3483 = sext i32 %3482 to i64
  %3484 = getelementptr inbounds double, ptr %3476, i64 %3483
  %3485 = load double, ptr %3484, align 8, !tbaa !16
  %3486 = fcmp une double %3485, 0.000000e+00
  br i1 %3486, label %3487, label %3492

3487:                                             ; preds = %3475
  %3488 = load i32, ptr %59, align 4, !tbaa !9
  %3489 = add nsw i32 %3488, 1
  store i32 %3489, ptr %69, align 4, !tbaa !9
  %3490 = load i32, ptr %59, align 4, !tbaa !9
  %3491 = add nsw i32 %3490, 2
  store i32 %3491, ptr %57, align 4, !tbaa !9
  br label %3492

3492:                                             ; preds = %3487, %3475
  br label %3493

3493:                                             ; preds = %3492, %3466
  %3494 = load i32, ptr %68, align 4, !tbaa !9
  %3495 = load i32, ptr %69, align 4, !tbaa !9
  %3496 = icmp eq i32 %3494, %3495
  br i1 %3496, label %3497, label %3749

3497:                                             ; preds = %3493
  %3498 = load ptr, ptr %28, align 8, !tbaa !5
  %3499 = load i32, ptr %59, align 4, !tbaa !9
  %3500 = sext i32 %3499 to i64
  %3501 = getelementptr inbounds double, ptr %3498, i64 %3500
  %3502 = load double, ptr %3501, align 8, !tbaa !16
  %3503 = load double, ptr %66, align 8, !tbaa !16
  %3504 = fcmp ogt double %3502, %3503
  br i1 %3504, label %3505, label %3538

3505:                                             ; preds = %3497
  %3506 = load double, ptr %56, align 8, !tbaa !16
  %3507 = fdiv double 1.000000e+00, %3506
  store double %3507, ptr %86, align 8, !tbaa !16
  %3508 = load ptr, ptr %19, align 8, !tbaa !5
  %3509 = load i32, ptr %3508, align 4, !tbaa !9
  %3510 = load i32, ptr %74, align 4, !tbaa !9
  %3511 = sub nsw i32 %3509, %3510
  %3512 = add nsw i32 %3511, 1
  store i32 %3512, ptr %41, align 4, !tbaa !9
  %3513 = load ptr, ptr %28, align 8, !tbaa !5
  %3514 = load i32, ptr %74, align 4, !tbaa !9
  %3515 = load i32, ptr %77, align 4, !tbaa !9
  %3516 = load ptr, ptr %19, align 8, !tbaa !5
  %3517 = load i32, ptr %3516, align 4, !tbaa !9
  %3518 = mul nsw i32 %3515, %3517
  %3519 = add nsw i32 %3514, %3518
  %3520 = sext i32 %3519 to i64
  %3521 = getelementptr inbounds double, ptr %3513, i64 %3520
  call void @dscal_(ptr noundef %41, ptr noundef %86, ptr noundef %3521, ptr noundef @c__1)
  %3522 = load ptr, ptr %19, align 8, !tbaa !5
  %3523 = load i32, ptr %3522, align 4, !tbaa !9
  %3524 = load i32, ptr %74, align 4, !tbaa !9
  %3525 = sub nsw i32 %3523, %3524
  %3526 = add nsw i32 %3525, 1
  store i32 %3526, ptr %41, align 4, !tbaa !9
  %3527 = load ptr, ptr %28, align 8, !tbaa !5
  %3528 = load i32, ptr %74, align 4, !tbaa !9
  %3529 = load i32, ptr %77, align 4, !tbaa !9
  %3530 = add nsw i32 %3529, 1
  %3531 = load ptr, ptr %19, align 8, !tbaa !5
  %3532 = load i32, ptr %3531, align 4, !tbaa !9
  %3533 = mul nsw i32 %3530, %3532
  %3534 = add nsw i32 %3528, %3533
  %3535 = sext i32 %3534 to i64
  %3536 = getelementptr inbounds double, ptr %3527, i64 %3535
  call void @dscal_(ptr noundef %41, ptr noundef %86, ptr noundef %3536, ptr noundef @c__1)
  store double 1.000000e+00, ptr %56, align 8, !tbaa !16
  %3537 = load double, ptr %80, align 8, !tbaa !16
  store double %3537, ptr %66, align 8, !tbaa !16
  br label %3538

3538:                                             ; preds = %3505, %3497
  %3539 = load i32, ptr %59, align 4, !tbaa !9
  %3540 = load i32, ptr %74, align 4, !tbaa !9
  %3541 = sub nsw i32 %3539, %3540
  %3542 = sub nsw i32 %3541, 2
  store i32 %3542, ptr %41, align 4, !tbaa !9
  %3543 = load ptr, ptr %20, align 8, !tbaa !5
  %3544 = load i32, ptr %74, align 4, !tbaa !9
  %3545 = add nsw i32 %3544, 2
  %3546 = load i32, ptr %59, align 4, !tbaa !9
  %3547 = load i32, ptr %32, align 4, !tbaa !9
  %3548 = mul nsw i32 %3546, %3547
  %3549 = add nsw i32 %3545, %3548
  %3550 = sext i32 %3549 to i64
  %3551 = getelementptr inbounds double, ptr %3543, i64 %3550
  %3552 = load ptr, ptr %28, align 8, !tbaa !5
  %3553 = load i32, ptr %74, align 4, !tbaa !9
  %3554 = add nsw i32 %3553, 2
  %3555 = load i32, ptr %77, align 4, !tbaa !9
  %3556 = load ptr, ptr %19, align 8, !tbaa !5
  %3557 = load i32, ptr %3556, align 4, !tbaa !9
  %3558 = mul nsw i32 %3555, %3557
  %3559 = add nsw i32 %3554, %3558
  %3560 = sext i32 %3559 to i64
  %3561 = getelementptr inbounds double, ptr %3552, i64 %3560
  %3562 = call double @ddot_(ptr noundef %41, ptr noundef %3551, ptr noundef @c__1, ptr noundef %3561, ptr noundef @c__1)
  %3563 = load ptr, ptr %28, align 8, !tbaa !5
  %3564 = load i32, ptr %59, align 4, !tbaa !9
  %3565 = load i32, ptr %77, align 4, !tbaa !9
  %3566 = load ptr, ptr %19, align 8, !tbaa !5
  %3567 = load i32, ptr %3566, align 4, !tbaa !9
  %3568 = mul nsw i32 %3565, %3567
  %3569 = add nsw i32 %3564, %3568
  %3570 = sext i32 %3569 to i64
  %3571 = getelementptr inbounds double, ptr %3563, i64 %3570
  %3572 = load double, ptr %3571, align 8, !tbaa !16
  %3573 = fsub double %3572, %3562
  store double %3573, ptr %3571, align 8, !tbaa !16
  %3574 = load i32, ptr %59, align 4, !tbaa !9
  %3575 = load i32, ptr %74, align 4, !tbaa !9
  %3576 = sub nsw i32 %3574, %3575
  %3577 = sub nsw i32 %3576, 2
  store i32 %3577, ptr %41, align 4, !tbaa !9
  %3578 = load ptr, ptr %20, align 8, !tbaa !5
  %3579 = load i32, ptr %74, align 4, !tbaa !9
  %3580 = add nsw i32 %3579, 2
  %3581 = load i32, ptr %59, align 4, !tbaa !9
  %3582 = load i32, ptr %32, align 4, !tbaa !9
  %3583 = mul nsw i32 %3581, %3582
  %3584 = add nsw i32 %3580, %3583
  %3585 = sext i32 %3584 to i64
  %3586 = getelementptr inbounds double, ptr %3578, i64 %3585
  %3587 = load ptr, ptr %28, align 8, !tbaa !5
  %3588 = load i32, ptr %74, align 4, !tbaa !9
  %3589 = add nsw i32 %3588, 2
  %3590 = load i32, ptr %77, align 4, !tbaa !9
  %3591 = add nsw i32 %3590, 1
  %3592 = load ptr, ptr %19, align 8, !tbaa !5
  %3593 = load i32, ptr %3592, align 4, !tbaa !9
  %3594 = mul nsw i32 %3591, %3593
  %3595 = add nsw i32 %3589, %3594
  %3596 = sext i32 %3595 to i64
  %3597 = getelementptr inbounds double, ptr %3587, i64 %3596
  %3598 = call double @ddot_(ptr noundef %41, ptr noundef %3586, ptr noundef @c__1, ptr noundef %3597, ptr noundef @c__1)
  %3599 = load ptr, ptr %28, align 8, !tbaa !5
  %3600 = load i32, ptr %59, align 4, !tbaa !9
  %3601 = load i32, ptr %77, align 4, !tbaa !9
  %3602 = add nsw i32 %3601, 1
  %3603 = load ptr, ptr %19, align 8, !tbaa !5
  %3604 = load i32, ptr %3603, align 4, !tbaa !9
  %3605 = mul nsw i32 %3602, %3604
  %3606 = add nsw i32 %3600, %3605
  %3607 = sext i32 %3606 to i64
  %3608 = getelementptr inbounds double, ptr %3599, i64 %3607
  %3609 = load double, ptr %3608, align 8, !tbaa !16
  %3610 = fsub double %3609, %3598
  store double %3610, ptr %3608, align 8, !tbaa !16
  %3611 = load double, ptr %78, align 8, !tbaa !16
  %3612 = fneg double %3611
  store double %3612, ptr %42, align 8, !tbaa !16
  %3613 = load ptr, ptr %20, align 8, !tbaa !5
  %3614 = load i32, ptr %59, align 4, !tbaa !9
  %3615 = load i32, ptr %59, align 4, !tbaa !9
  %3616 = load i32, ptr %32, align 4, !tbaa !9
  %3617 = mul nsw i32 %3615, %3616
  %3618 = add nsw i32 %3614, %3617
  %3619 = sext i32 %3618 to i64
  %3620 = getelementptr inbounds double, ptr %3613, i64 %3619
  %3621 = load ptr, ptr %21, align 8, !tbaa !5
  %3622 = load ptr, ptr %28, align 8, !tbaa !5
  %3623 = load i32, ptr %59, align 4, !tbaa !9
  %3624 = load i32, ptr %77, align 4, !tbaa !9
  %3625 = load ptr, ptr %19, align 8, !tbaa !5
  %3626 = load i32, ptr %3625, align 4, !tbaa !9
  %3627 = mul nsw i32 %3624, %3626
  %3628 = add nsw i32 %3623, %3627
  %3629 = sext i32 %3628 to i64
  %3630 = getelementptr inbounds double, ptr %3622, i64 %3629
  %3631 = load ptr, ptr %19, align 8, !tbaa !5
  %3632 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 0
  call void @dlaln2_(ptr noundef @c_false, ptr noundef @c__1, ptr noundef @c__2, ptr noundef %54, ptr noundef @c_b29, ptr noundef %3620, ptr noundef %3621, ptr noundef @c_b29, ptr noundef @c_b29, ptr noundef %3630, ptr noundef %3631, ptr noundef %79, ptr noundef %42, ptr noundef %3632, ptr noundef @c__2, ptr noundef %61, ptr noundef %70, ptr noundef %51)
  %3633 = load double, ptr %61, align 8, !tbaa !16
  %3634 = fcmp une double %3633, 1.000000e+00
  br i1 %3634, label %3635, label %3665

3635:                                             ; preds = %3538
  %3636 = load ptr, ptr %19, align 8, !tbaa !5
  %3637 = load i32, ptr %3636, align 4, !tbaa !9
  %3638 = load i32, ptr %74, align 4, !tbaa !9
  %3639 = sub nsw i32 %3637, %3638
  %3640 = add nsw i32 %3639, 1
  store i32 %3640, ptr %41, align 4, !tbaa !9
  %3641 = load ptr, ptr %28, align 8, !tbaa !5
  %3642 = load i32, ptr %74, align 4, !tbaa !9
  %3643 = load i32, ptr %77, align 4, !tbaa !9
  %3644 = load ptr, ptr %19, align 8, !tbaa !5
  %3645 = load i32, ptr %3644, align 4, !tbaa !9
  %3646 = mul nsw i32 %3643, %3645
  %3647 = add nsw i32 %3642, %3646
  %3648 = sext i32 %3647 to i64
  %3649 = getelementptr inbounds double, ptr %3641, i64 %3648
  call void @dscal_(ptr noundef %41, ptr noundef %61, ptr noundef %3649, ptr noundef @c__1)
  %3650 = load ptr, ptr %19, align 8, !tbaa !5
  %3651 = load i32, ptr %3650, align 4, !tbaa !9
  %3652 = load i32, ptr %74, align 4, !tbaa !9
  %3653 = sub nsw i32 %3651, %3652
  %3654 = add nsw i32 %3653, 1
  store i32 %3654, ptr %41, align 4, !tbaa !9
  %3655 = load ptr, ptr %28, align 8, !tbaa !5
  %3656 = load i32, ptr %74, align 4, !tbaa !9
  %3657 = load i32, ptr %77, align 4, !tbaa !9
  %3658 = add nsw i32 %3657, 1
  %3659 = load ptr, ptr %19, align 8, !tbaa !5
  %3660 = load i32, ptr %3659, align 4, !tbaa !9
  %3661 = mul nsw i32 %3658, %3660
  %3662 = add nsw i32 %3656, %3661
  %3663 = sext i32 %3662 to i64
  %3664 = getelementptr inbounds double, ptr %3655, i64 %3663
  call void @dscal_(ptr noundef %41, ptr noundef %61, ptr noundef %3664, ptr noundef @c__1)
  br label %3665

3665:                                             ; preds = %3635, %3538
  %3666 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 0
  %3667 = load double, ptr %3666, align 16, !tbaa !16
  %3668 = load ptr, ptr %28, align 8, !tbaa !5
  %3669 = load i32, ptr %59, align 4, !tbaa !9
  %3670 = load i32, ptr %77, align 4, !tbaa !9
  %3671 = load ptr, ptr %19, align 8, !tbaa !5
  %3672 = load i32, ptr %3671, align 4, !tbaa !9
  %3673 = mul nsw i32 %3670, %3672
  %3674 = add nsw i32 %3669, %3673
  %3675 = sext i32 %3674 to i64
  %3676 = getelementptr inbounds double, ptr %3668, i64 %3675
  store double %3667, ptr %3676, align 8, !tbaa !16
  %3677 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 2
  %3678 = load double, ptr %3677, align 16, !tbaa !16
  %3679 = load ptr, ptr %28, align 8, !tbaa !5
  %3680 = load i32, ptr %59, align 4, !tbaa !9
  %3681 = load i32, ptr %77, align 4, !tbaa !9
  %3682 = add nsw i32 %3681, 1
  %3683 = load ptr, ptr %19, align 8, !tbaa !5
  %3684 = load i32, ptr %3683, align 4, !tbaa !9
  %3685 = mul nsw i32 %3682, %3684
  %3686 = add nsw i32 %3680, %3685
  %3687 = sext i32 %3686 to i64
  %3688 = getelementptr inbounds double, ptr %3679, i64 %3687
  store double %3678, ptr %3688, align 8, !tbaa !16
  %3689 = load ptr, ptr %28, align 8, !tbaa !5
  %3690 = load i32, ptr %59, align 4, !tbaa !9
  %3691 = load i32, ptr %77, align 4, !tbaa !9
  %3692 = load ptr, ptr %19, align 8, !tbaa !5
  %3693 = load i32, ptr %3692, align 4, !tbaa !9
  %3694 = mul nsw i32 %3691, %3693
  %3695 = add nsw i32 %3690, %3694
  %3696 = sext i32 %3695 to i64
  %3697 = getelementptr inbounds double, ptr %3689, i64 %3696
  %3698 = load double, ptr %3697, align 8, !tbaa !16
  store double %3698, ptr %42, align 8, !tbaa !16
  %3699 = load double, ptr %42, align 8, !tbaa !16
  %3700 = fcmp oge double %3699, 0.000000e+00
  br i1 %3700, label %3701, label %3703

3701:                                             ; preds = %3665
  %3702 = load double, ptr %42, align 8, !tbaa !16
  br label %3706

3703:                                             ; preds = %3665
  %3704 = load double, ptr %42, align 8, !tbaa !16
  %3705 = fneg double %3704
  br label %3706

3706:                                             ; preds = %3703, %3701
  %3707 = phi double [ %3702, %3701 ], [ %3705, %3703 ]
  store double %3707, ptr %44, align 8, !tbaa !16
  %3708 = load ptr, ptr %28, align 8, !tbaa !5
  %3709 = load i32, ptr %59, align 4, !tbaa !9
  %3710 = load i32, ptr %77, align 4, !tbaa !9
  %3711 = add nsw i32 %3710, 1
  %3712 = load ptr, ptr %19, align 8, !tbaa !5
  %3713 = load i32, ptr %3712, align 4, !tbaa !9
  %3714 = mul nsw i32 %3711, %3713
  %3715 = add nsw i32 %3709, %3714
  %3716 = sext i32 %3715 to i64
  %3717 = getelementptr inbounds double, ptr %3708, i64 %3716
  %3718 = load double, ptr %3717, align 8, !tbaa !16
  store double %3718, ptr %43, align 8, !tbaa !16
  %3719 = load double, ptr %43, align 8, !tbaa !16
  %3720 = fcmp oge double %3719, 0.000000e+00
  br i1 %3720, label %3721, label %3723

3721:                                             ; preds = %3706
  %3722 = load double, ptr %43, align 8, !tbaa !16
  br label %3726

3723:                                             ; preds = %3706
  %3724 = load double, ptr %43, align 8, !tbaa !16
  %3725 = fneg double %3724
  br label %3726

3726:                                             ; preds = %3723, %3721
  %3727 = phi double [ %3722, %3721 ], [ %3725, %3723 ]
  store double %3727, ptr %45, align 8, !tbaa !16
  %3728 = load double, ptr %44, align 8, !tbaa !16
  %3729 = load double, ptr %45, align 8, !tbaa !16
  %3730 = fcmp oge double %3728, %3729
  br i1 %3730, label %3731, label %3733

3731:                                             ; preds = %3726
  %3732 = load double, ptr %44, align 8, !tbaa !16
  br label %3735

3733:                                             ; preds = %3726
  %3734 = load double, ptr %45, align 8, !tbaa !16
  br label %3735

3735:                                             ; preds = %3733, %3731
  %3736 = phi double [ %3732, %3731 ], [ %3734, %3733 ]
  store double %3736, ptr %44, align 8, !tbaa !16
  %3737 = load double, ptr %44, align 8, !tbaa !16
  %3738 = load double, ptr %56, align 8, !tbaa !16
  %3739 = fcmp oge double %3737, %3738
  br i1 %3739, label %3740, label %3742

3740:                                             ; preds = %3735
  %3741 = load double, ptr %44, align 8, !tbaa !16
  br label %3744

3742:                                             ; preds = %3735
  %3743 = load double, ptr %56, align 8, !tbaa !16
  br label %3744

3744:                                             ; preds = %3742, %3740
  %3745 = phi double [ %3741, %3740 ], [ %3743, %3742 ]
  store double %3745, ptr %56, align 8, !tbaa !16
  %3746 = load double, ptr %80, align 8, !tbaa !16
  %3747 = load double, ptr %56, align 8, !tbaa !16
  %3748 = fdiv double %3746, %3747
  store double %3748, ptr %66, align 8, !tbaa !16
  br label %4145

3749:                                             ; preds = %3493
  %3750 = load ptr, ptr %28, align 8, !tbaa !5
  %3751 = load i32, ptr %59, align 4, !tbaa !9
  %3752 = sext i32 %3751 to i64
  %3753 = getelementptr inbounds double, ptr %3750, i64 %3752
  %3754 = load double, ptr %3753, align 8, !tbaa !16
  store double %3754, ptr %42, align 8, !tbaa !16
  %3755 = load ptr, ptr %28, align 8, !tbaa !5
  %3756 = load i32, ptr %59, align 4, !tbaa !9
  %3757 = add nsw i32 %3756, 1
  %3758 = sext i32 %3757 to i64
  %3759 = getelementptr inbounds double, ptr %3755, i64 %3758
  %3760 = load double, ptr %3759, align 8, !tbaa !16
  store double %3760, ptr %43, align 8, !tbaa !16
  %3761 = load double, ptr %42, align 8, !tbaa !16
  %3762 = load double, ptr %43, align 8, !tbaa !16
  %3763 = fcmp oge double %3761, %3762
  br i1 %3763, label %3764, label %3766

3764:                                             ; preds = %3749
  %3765 = load double, ptr %42, align 8, !tbaa !16
  br label %3768

3766:                                             ; preds = %3749
  %3767 = load double, ptr %43, align 8, !tbaa !16
  br label %3768

3768:                                             ; preds = %3766, %3764
  %3769 = phi double [ %3765, %3764 ], [ %3767, %3766 ]
  store double %3769, ptr %47, align 8, !tbaa !16
  %3770 = load double, ptr %47, align 8, !tbaa !16
  %3771 = load double, ptr %66, align 8, !tbaa !16
  %3772 = fcmp ogt double %3770, %3771
  br i1 %3772, label %3773, label %3806

3773:                                             ; preds = %3768
  %3774 = load double, ptr %56, align 8, !tbaa !16
  %3775 = fdiv double 1.000000e+00, %3774
  store double %3775, ptr %86, align 8, !tbaa !16
  %3776 = load ptr, ptr %19, align 8, !tbaa !5
  %3777 = load i32, ptr %3776, align 4, !tbaa !9
  %3778 = load i32, ptr %74, align 4, !tbaa !9
  %3779 = sub nsw i32 %3777, %3778
  %3780 = add nsw i32 %3779, 1
  store i32 %3780, ptr %41, align 4, !tbaa !9
  %3781 = load ptr, ptr %28, align 8, !tbaa !5
  %3782 = load i32, ptr %74, align 4, !tbaa !9
  %3783 = load i32, ptr %77, align 4, !tbaa !9
  %3784 = load ptr, ptr %19, align 8, !tbaa !5
  %3785 = load i32, ptr %3784, align 4, !tbaa !9
  %3786 = mul nsw i32 %3783, %3785
  %3787 = add nsw i32 %3782, %3786
  %3788 = sext i32 %3787 to i64
  %3789 = getelementptr inbounds double, ptr %3781, i64 %3788
  call void @dscal_(ptr noundef %41, ptr noundef %86, ptr noundef %3789, ptr noundef @c__1)
  %3790 = load ptr, ptr %19, align 8, !tbaa !5
  %3791 = load i32, ptr %3790, align 4, !tbaa !9
  %3792 = load i32, ptr %74, align 4, !tbaa !9
  %3793 = sub nsw i32 %3791, %3792
  %3794 = add nsw i32 %3793, 1
  store i32 %3794, ptr %41, align 4, !tbaa !9
  %3795 = load ptr, ptr %28, align 8, !tbaa !5
  %3796 = load i32, ptr %74, align 4, !tbaa !9
  %3797 = load i32, ptr %77, align 4, !tbaa !9
  %3798 = add nsw i32 %3797, 1
  %3799 = load ptr, ptr %19, align 8, !tbaa !5
  %3800 = load i32, ptr %3799, align 4, !tbaa !9
  %3801 = mul nsw i32 %3798, %3800
  %3802 = add nsw i32 %3796, %3801
  %3803 = sext i32 %3802 to i64
  %3804 = getelementptr inbounds double, ptr %3795, i64 %3803
  call void @dscal_(ptr noundef %41, ptr noundef %86, ptr noundef %3804, ptr noundef @c__1)
  store double 1.000000e+00, ptr %56, align 8, !tbaa !16
  %3805 = load double, ptr %80, align 8, !tbaa !16
  store double %3805, ptr %66, align 8, !tbaa !16
  br label %3806

3806:                                             ; preds = %3773, %3768
  %3807 = load i32, ptr %59, align 4, !tbaa !9
  %3808 = load i32, ptr %74, align 4, !tbaa !9
  %3809 = sub nsw i32 %3807, %3808
  %3810 = sub nsw i32 %3809, 2
  store i32 %3810, ptr %41, align 4, !tbaa !9
  %3811 = load ptr, ptr %20, align 8, !tbaa !5
  %3812 = load i32, ptr %74, align 4, !tbaa !9
  %3813 = add nsw i32 %3812, 2
  %3814 = load i32, ptr %59, align 4, !tbaa !9
  %3815 = load i32, ptr %32, align 4, !tbaa !9
  %3816 = mul nsw i32 %3814, %3815
  %3817 = add nsw i32 %3813, %3816
  %3818 = sext i32 %3817 to i64
  %3819 = getelementptr inbounds double, ptr %3811, i64 %3818
  %3820 = load ptr, ptr %28, align 8, !tbaa !5
  %3821 = load i32, ptr %74, align 4, !tbaa !9
  %3822 = add nsw i32 %3821, 2
  %3823 = load i32, ptr %77, align 4, !tbaa !9
  %3824 = load ptr, ptr %19, align 8, !tbaa !5
  %3825 = load i32, ptr %3824, align 4, !tbaa !9
  %3826 = mul nsw i32 %3823, %3825
  %3827 = add nsw i32 %3822, %3826
  %3828 = sext i32 %3827 to i64
  %3829 = getelementptr inbounds double, ptr %3820, i64 %3828
  %3830 = call double @ddot_(ptr noundef %41, ptr noundef %3819, ptr noundef @c__1, ptr noundef %3829, ptr noundef @c__1)
  %3831 = load ptr, ptr %28, align 8, !tbaa !5
  %3832 = load i32, ptr %59, align 4, !tbaa !9
  %3833 = load i32, ptr %77, align 4, !tbaa !9
  %3834 = load ptr, ptr %19, align 8, !tbaa !5
  %3835 = load i32, ptr %3834, align 4, !tbaa !9
  %3836 = mul nsw i32 %3833, %3835
  %3837 = add nsw i32 %3832, %3836
  %3838 = sext i32 %3837 to i64
  %3839 = getelementptr inbounds double, ptr %3831, i64 %3838
  %3840 = load double, ptr %3839, align 8, !tbaa !16
  %3841 = fsub double %3840, %3830
  store double %3841, ptr %3839, align 8, !tbaa !16
  %3842 = load i32, ptr %59, align 4, !tbaa !9
  %3843 = load i32, ptr %74, align 4, !tbaa !9
  %3844 = sub nsw i32 %3842, %3843
  %3845 = sub nsw i32 %3844, 2
  store i32 %3845, ptr %41, align 4, !tbaa !9
  %3846 = load ptr, ptr %20, align 8, !tbaa !5
  %3847 = load i32, ptr %74, align 4, !tbaa !9
  %3848 = add nsw i32 %3847, 2
  %3849 = load i32, ptr %59, align 4, !tbaa !9
  %3850 = load i32, ptr %32, align 4, !tbaa !9
  %3851 = mul nsw i32 %3849, %3850
  %3852 = add nsw i32 %3848, %3851
  %3853 = sext i32 %3852 to i64
  %3854 = getelementptr inbounds double, ptr %3846, i64 %3853
  %3855 = load ptr, ptr %28, align 8, !tbaa !5
  %3856 = load i32, ptr %74, align 4, !tbaa !9
  %3857 = add nsw i32 %3856, 2
  %3858 = load i32, ptr %77, align 4, !tbaa !9
  %3859 = add nsw i32 %3858, 1
  %3860 = load ptr, ptr %19, align 8, !tbaa !5
  %3861 = load i32, ptr %3860, align 4, !tbaa !9
  %3862 = mul nsw i32 %3859, %3861
  %3863 = add nsw i32 %3857, %3862
  %3864 = sext i32 %3863 to i64
  %3865 = getelementptr inbounds double, ptr %3855, i64 %3864
  %3866 = call double @ddot_(ptr noundef %41, ptr noundef %3854, ptr noundef @c__1, ptr noundef %3865, ptr noundef @c__1)
  %3867 = load ptr, ptr %28, align 8, !tbaa !5
  %3868 = load i32, ptr %59, align 4, !tbaa !9
  %3869 = load i32, ptr %77, align 4, !tbaa !9
  %3870 = add nsw i32 %3869, 1
  %3871 = load ptr, ptr %19, align 8, !tbaa !5
  %3872 = load i32, ptr %3871, align 4, !tbaa !9
  %3873 = mul nsw i32 %3870, %3872
  %3874 = add nsw i32 %3868, %3873
  %3875 = sext i32 %3874 to i64
  %3876 = getelementptr inbounds double, ptr %3867, i64 %3875
  %3877 = load double, ptr %3876, align 8, !tbaa !16
  %3878 = fsub double %3877, %3866
  store double %3878, ptr %3876, align 8, !tbaa !16
  %3879 = load i32, ptr %59, align 4, !tbaa !9
  %3880 = load i32, ptr %74, align 4, !tbaa !9
  %3881 = sub nsw i32 %3879, %3880
  %3882 = sub nsw i32 %3881, 2
  store i32 %3882, ptr %41, align 4, !tbaa !9
  %3883 = load ptr, ptr %20, align 8, !tbaa !5
  %3884 = load i32, ptr %74, align 4, !tbaa !9
  %3885 = add nsw i32 %3884, 2
  %3886 = load i32, ptr %59, align 4, !tbaa !9
  %3887 = add nsw i32 %3886, 1
  %3888 = load i32, ptr %32, align 4, !tbaa !9
  %3889 = mul nsw i32 %3887, %3888
  %3890 = add nsw i32 %3885, %3889
  %3891 = sext i32 %3890 to i64
  %3892 = getelementptr inbounds double, ptr %3883, i64 %3891
  %3893 = load ptr, ptr %28, align 8, !tbaa !5
  %3894 = load i32, ptr %74, align 4, !tbaa !9
  %3895 = add nsw i32 %3894, 2
  %3896 = load i32, ptr %77, align 4, !tbaa !9
  %3897 = load ptr, ptr %19, align 8, !tbaa !5
  %3898 = load i32, ptr %3897, align 4, !tbaa !9
  %3899 = mul nsw i32 %3896, %3898
  %3900 = add nsw i32 %3895, %3899
  %3901 = sext i32 %3900 to i64
  %3902 = getelementptr inbounds double, ptr %3893, i64 %3901
  %3903 = call double @ddot_(ptr noundef %41, ptr noundef %3892, ptr noundef @c__1, ptr noundef %3902, ptr noundef @c__1)
  %3904 = load ptr, ptr %28, align 8, !tbaa !5
  %3905 = load i32, ptr %59, align 4, !tbaa !9
  %3906 = add nsw i32 %3905, 1
  %3907 = load i32, ptr %77, align 4, !tbaa !9
  %3908 = load ptr, ptr %19, align 8, !tbaa !5
  %3909 = load i32, ptr %3908, align 4, !tbaa !9
  %3910 = mul nsw i32 %3907, %3909
  %3911 = add nsw i32 %3906, %3910
  %3912 = sext i32 %3911 to i64
  %3913 = getelementptr inbounds double, ptr %3904, i64 %3912
  %3914 = load double, ptr %3913, align 8, !tbaa !16
  %3915 = fsub double %3914, %3903
  store double %3915, ptr %3913, align 8, !tbaa !16
  %3916 = load i32, ptr %59, align 4, !tbaa !9
  %3917 = load i32, ptr %74, align 4, !tbaa !9
  %3918 = sub nsw i32 %3916, %3917
  %3919 = sub nsw i32 %3918, 2
  store i32 %3919, ptr %41, align 4, !tbaa !9
  %3920 = load ptr, ptr %20, align 8, !tbaa !5
  %3921 = load i32, ptr %74, align 4, !tbaa !9
  %3922 = add nsw i32 %3921, 2
  %3923 = load i32, ptr %59, align 4, !tbaa !9
  %3924 = add nsw i32 %3923, 1
  %3925 = load i32, ptr %32, align 4, !tbaa !9
  %3926 = mul nsw i32 %3924, %3925
  %3927 = add nsw i32 %3922, %3926
  %3928 = sext i32 %3927 to i64
  %3929 = getelementptr inbounds double, ptr %3920, i64 %3928
  %3930 = load ptr, ptr %28, align 8, !tbaa !5
  %3931 = load i32, ptr %74, align 4, !tbaa !9
  %3932 = add nsw i32 %3931, 2
  %3933 = load i32, ptr %77, align 4, !tbaa !9
  %3934 = add nsw i32 %3933, 1
  %3935 = load ptr, ptr %19, align 8, !tbaa !5
  %3936 = load i32, ptr %3935, align 4, !tbaa !9
  %3937 = mul nsw i32 %3934, %3936
  %3938 = add nsw i32 %3932, %3937
  %3939 = sext i32 %3938 to i64
  %3940 = getelementptr inbounds double, ptr %3930, i64 %3939
  %3941 = call double @ddot_(ptr noundef %41, ptr noundef %3929, ptr noundef @c__1, ptr noundef %3940, ptr noundef @c__1)
  %3942 = load ptr, ptr %28, align 8, !tbaa !5
  %3943 = load i32, ptr %59, align 4, !tbaa !9
  %3944 = add nsw i32 %3943, 1
  %3945 = load i32, ptr %77, align 4, !tbaa !9
  %3946 = add nsw i32 %3945, 1
  %3947 = load ptr, ptr %19, align 8, !tbaa !5
  %3948 = load i32, ptr %3947, align 4, !tbaa !9
  %3949 = mul nsw i32 %3946, %3948
  %3950 = add nsw i32 %3944, %3949
  %3951 = sext i32 %3950 to i64
  %3952 = getelementptr inbounds double, ptr %3942, i64 %3951
  %3953 = load double, ptr %3952, align 8, !tbaa !16
  %3954 = fsub double %3953, %3941
  store double %3954, ptr %3952, align 8, !tbaa !16
  %3955 = load double, ptr %78, align 8, !tbaa !16
  %3956 = fneg double %3955
  store double %3956, ptr %42, align 8, !tbaa !16
  %3957 = load ptr, ptr %20, align 8, !tbaa !5
  %3958 = load i32, ptr %59, align 4, !tbaa !9
  %3959 = load i32, ptr %59, align 4, !tbaa !9
  %3960 = load i32, ptr %32, align 4, !tbaa !9
  %3961 = mul nsw i32 %3959, %3960
  %3962 = add nsw i32 %3958, %3961
  %3963 = sext i32 %3962 to i64
  %3964 = getelementptr inbounds double, ptr %3957, i64 %3963
  %3965 = load ptr, ptr %21, align 8, !tbaa !5
  %3966 = load ptr, ptr %28, align 8, !tbaa !5
  %3967 = load i32, ptr %59, align 4, !tbaa !9
  %3968 = load i32, ptr %77, align 4, !tbaa !9
  %3969 = load ptr, ptr %19, align 8, !tbaa !5
  %3970 = load i32, ptr %3969, align 4, !tbaa !9
  %3971 = mul nsw i32 %3968, %3970
  %3972 = add nsw i32 %3967, %3971
  %3973 = sext i32 %3972 to i64
  %3974 = getelementptr inbounds double, ptr %3966, i64 %3973
  %3975 = load ptr, ptr %19, align 8, !tbaa !5
  %3976 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 0
  call void @dlaln2_(ptr noundef @c_true, ptr noundef @c__2, ptr noundef @c__2, ptr noundef %54, ptr noundef @c_b29, ptr noundef %3964, ptr noundef %3965, ptr noundef @c_b29, ptr noundef @c_b29, ptr noundef %3974, ptr noundef %3975, ptr noundef %79, ptr noundef %42, ptr noundef %3976, ptr noundef @c__2, ptr noundef %61, ptr noundef %70, ptr noundef %51)
  %3977 = load double, ptr %61, align 8, !tbaa !16
  %3978 = fcmp une double %3977, 1.000000e+00
  br i1 %3978, label %3979, label %4009

3979:                                             ; preds = %3806
  %3980 = load ptr, ptr %19, align 8, !tbaa !5
  %3981 = load i32, ptr %3980, align 4, !tbaa !9
  %3982 = load i32, ptr %74, align 4, !tbaa !9
  %3983 = sub nsw i32 %3981, %3982
  %3984 = add nsw i32 %3983, 1
  store i32 %3984, ptr %41, align 4, !tbaa !9
  %3985 = load ptr, ptr %28, align 8, !tbaa !5
  %3986 = load i32, ptr %74, align 4, !tbaa !9
  %3987 = load i32, ptr %77, align 4, !tbaa !9
  %3988 = load ptr, ptr %19, align 8, !tbaa !5
  %3989 = load i32, ptr %3988, align 4, !tbaa !9
  %3990 = mul nsw i32 %3987, %3989
  %3991 = add nsw i32 %3986, %3990
  %3992 = sext i32 %3991 to i64
  %3993 = getelementptr inbounds double, ptr %3985, i64 %3992
  call void @dscal_(ptr noundef %41, ptr noundef %61, ptr noundef %3993, ptr noundef @c__1)
  %3994 = load ptr, ptr %19, align 8, !tbaa !5
  %3995 = load i32, ptr %3994, align 4, !tbaa !9
  %3996 = load i32, ptr %74, align 4, !tbaa !9
  %3997 = sub nsw i32 %3995, %3996
  %3998 = add nsw i32 %3997, 1
  store i32 %3998, ptr %41, align 4, !tbaa !9
  %3999 = load ptr, ptr %28, align 8, !tbaa !5
  %4000 = load i32, ptr %74, align 4, !tbaa !9
  %4001 = load i32, ptr %77, align 4, !tbaa !9
  %4002 = add nsw i32 %4001, 1
  %4003 = load ptr, ptr %19, align 8, !tbaa !5
  %4004 = load i32, ptr %4003, align 4, !tbaa !9
  %4005 = mul nsw i32 %4002, %4004
  %4006 = add nsw i32 %4000, %4005
  %4007 = sext i32 %4006 to i64
  %4008 = getelementptr inbounds double, ptr %3999, i64 %4007
  call void @dscal_(ptr noundef %41, ptr noundef %61, ptr noundef %4008, ptr noundef @c__1)
  br label %4009

4009:                                             ; preds = %3979, %3806
  %4010 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 0
  %4011 = load double, ptr %4010, align 16, !tbaa !16
  %4012 = load ptr, ptr %28, align 8, !tbaa !5
  %4013 = load i32, ptr %59, align 4, !tbaa !9
  %4014 = load i32, ptr %77, align 4, !tbaa !9
  %4015 = load ptr, ptr %19, align 8, !tbaa !5
  %4016 = load i32, ptr %4015, align 4, !tbaa !9
  %4017 = mul nsw i32 %4014, %4016
  %4018 = add nsw i32 %4013, %4017
  %4019 = sext i32 %4018 to i64
  %4020 = getelementptr inbounds double, ptr %4012, i64 %4019
  store double %4011, ptr %4020, align 8, !tbaa !16
  %4021 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 2
  %4022 = load double, ptr %4021, align 16, !tbaa !16
  %4023 = load ptr, ptr %28, align 8, !tbaa !5
  %4024 = load i32, ptr %59, align 4, !tbaa !9
  %4025 = load i32, ptr %77, align 4, !tbaa !9
  %4026 = add nsw i32 %4025, 1
  %4027 = load ptr, ptr %19, align 8, !tbaa !5
  %4028 = load i32, ptr %4027, align 4, !tbaa !9
  %4029 = mul nsw i32 %4026, %4028
  %4030 = add nsw i32 %4024, %4029
  %4031 = sext i32 %4030 to i64
  %4032 = getelementptr inbounds double, ptr %4023, i64 %4031
  store double %4022, ptr %4032, align 8, !tbaa !16
  %4033 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 1
  %4034 = load double, ptr %4033, align 8, !tbaa !16
  %4035 = load ptr, ptr %28, align 8, !tbaa !5
  %4036 = load i32, ptr %59, align 4, !tbaa !9
  %4037 = add nsw i32 %4036, 1
  %4038 = load i32, ptr %77, align 4, !tbaa !9
  %4039 = load ptr, ptr %19, align 8, !tbaa !5
  %4040 = load i32, ptr %4039, align 4, !tbaa !9
  %4041 = mul nsw i32 %4038, %4040
  %4042 = add nsw i32 %4037, %4041
  %4043 = sext i32 %4042 to i64
  %4044 = getelementptr inbounds double, ptr %4035, i64 %4043
  store double %4034, ptr %4044, align 8, !tbaa !16
  %4045 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 3
  %4046 = load double, ptr %4045, align 8, !tbaa !16
  %4047 = load ptr, ptr %28, align 8, !tbaa !5
  %4048 = load i32, ptr %59, align 4, !tbaa !9
  %4049 = add nsw i32 %4048, 1
  %4050 = load i32, ptr %77, align 4, !tbaa !9
  %4051 = add nsw i32 %4050, 1
  %4052 = load ptr, ptr %19, align 8, !tbaa !5
  %4053 = load i32, ptr %4052, align 4, !tbaa !9
  %4054 = mul nsw i32 %4051, %4053
  %4055 = add nsw i32 %4049, %4054
  %4056 = sext i32 %4055 to i64
  %4057 = getelementptr inbounds double, ptr %4047, i64 %4056
  store double %4046, ptr %4057, align 8, !tbaa !16
  %4058 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 0
  %4059 = load double, ptr %4058, align 16, !tbaa !16
  %4060 = fcmp oge double %4059, 0.000000e+00
  br i1 %4060, label %4061, label %4064

4061:                                             ; preds = %4009
  %4062 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 0
  %4063 = load double, ptr %4062, align 16, !tbaa !16
  br label %4068

4064:                                             ; preds = %4009
  %4065 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 0
  %4066 = load double, ptr %4065, align 16, !tbaa !16
  %4067 = fneg double %4066
  br label %4068

4068:                                             ; preds = %4064, %4061
  %4069 = phi double [ %4063, %4061 ], [ %4067, %4064 ]
  store double %4069, ptr %42, align 8, !tbaa !16
  %4070 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 2
  %4071 = load double, ptr %4070, align 16, !tbaa !16
  %4072 = fcmp oge double %4071, 0.000000e+00
  br i1 %4072, label %4073, label %4076

4073:                                             ; preds = %4068
  %4074 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 2
  %4075 = load double, ptr %4074, align 16, !tbaa !16
  br label %4080

4076:                                             ; preds = %4068
  %4077 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 2
  %4078 = load double, ptr %4077, align 16, !tbaa !16
  %4079 = fneg double %4078
  br label %4080

4080:                                             ; preds = %4076, %4073
  %4081 = phi double [ %4075, %4073 ], [ %4079, %4076 ]
  store double %4081, ptr %43, align 8, !tbaa !16
  %4082 = load double, ptr %42, align 8, !tbaa !16
  %4083 = load double, ptr %43, align 8, !tbaa !16
  %4084 = fcmp oge double %4082, %4083
  br i1 %4084, label %4085, label %4087

4085:                                             ; preds = %4080
  %4086 = load double, ptr %42, align 8, !tbaa !16
  br label %4089

4087:                                             ; preds = %4080
  %4088 = load double, ptr %43, align 8, !tbaa !16
  br label %4089

4089:                                             ; preds = %4087, %4085
  %4090 = phi double [ %4086, %4085 ], [ %4088, %4087 ]
  store double %4090, ptr %42, align 8, !tbaa !16
  %4091 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 1
  %4092 = load double, ptr %4091, align 8, !tbaa !16
  %4093 = fcmp oge double %4092, 0.000000e+00
  br i1 %4093, label %4094, label %4097

4094:                                             ; preds = %4089
  %4095 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 1
  %4096 = load double, ptr %4095, align 8, !tbaa !16
  br label %4101

4097:                                             ; preds = %4089
  %4098 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 1
  %4099 = load double, ptr %4098, align 8, !tbaa !16
  %4100 = fneg double %4099
  br label %4101

4101:                                             ; preds = %4097, %4094
  %4102 = phi double [ %4096, %4094 ], [ %4100, %4097 ]
  store double %4102, ptr %43, align 8, !tbaa !16
  %4103 = load double, ptr %42, align 8, !tbaa !16
  %4104 = load double, ptr %43, align 8, !tbaa !16
  %4105 = fcmp oge double %4103, %4104
  br i1 %4105, label %4106, label %4108

4106:                                             ; preds = %4101
  %4107 = load double, ptr %42, align 8, !tbaa !16
  br label %4110

4108:                                             ; preds = %4101
  %4109 = load double, ptr %43, align 8, !tbaa !16
  br label %4110

4110:                                             ; preds = %4108, %4106
  %4111 = phi double [ %4107, %4106 ], [ %4109, %4108 ]
  store double %4111, ptr %42, align 8, !tbaa !16
  %4112 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 3
  %4113 = load double, ptr %4112, align 8, !tbaa !16
  %4114 = fcmp oge double %4113, 0.000000e+00
  br i1 %4114, label %4115, label %4118

4115:                                             ; preds = %4110
  %4116 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 3
  %4117 = load double, ptr %4116, align 8, !tbaa !16
  br label %4122

4118:                                             ; preds = %4110
  %4119 = getelementptr inbounds [4 x double], ptr %62, i64 0, i64 3
  %4120 = load double, ptr %4119, align 8, !tbaa !16
  %4121 = fneg double %4120
  br label %4122

4122:                                             ; preds = %4118, %4115
  %4123 = phi double [ %4117, %4115 ], [ %4121, %4118 ]
  store double %4123, ptr %43, align 8, !tbaa !16
  %4124 = load double, ptr %42, align 8, !tbaa !16
  %4125 = load double, ptr %43, align 8, !tbaa !16
  %4126 = fcmp oge double %4124, %4125
  br i1 %4126, label %4127, label %4129

4127:                                             ; preds = %4122
  %4128 = load double, ptr %42, align 8, !tbaa !16
  br label %4131

4129:                                             ; preds = %4122
  %4130 = load double, ptr %43, align 8, !tbaa !16
  br label %4131

4131:                                             ; preds = %4129, %4127
  %4132 = phi double [ %4128, %4127 ], [ %4130, %4129 ]
  store double %4132, ptr %42, align 8, !tbaa !16
  %4133 = load double, ptr %42, align 8, !tbaa !16
  %4134 = load double, ptr %56, align 8, !tbaa !16
  %4135 = fcmp oge double %4133, %4134
  br i1 %4135, label %4136, label %4138

4136:                                             ; preds = %4131
  %4137 = load double, ptr %42, align 8, !tbaa !16
  br label %4140

4138:                                             ; preds = %4131
  %4139 = load double, ptr %56, align 8, !tbaa !16
  br label %4140

4140:                                             ; preds = %4138, %4136
  %4141 = phi double [ %4137, %4136 ], [ %4139, %4138 ]
  store double %4141, ptr %56, align 8, !tbaa !16
  %4142 = load double, ptr %80, align 8, !tbaa !16
  %4143 = load double, ptr %56, align 8, !tbaa !16
  %4144 = fdiv double %4142, %4143
  store double %4144, ptr %66, align 8, !tbaa !16
  br label %4145

4145:                                             ; preds = %4140, %3744
  br label %4146

4146:                                             ; preds = %4145, %3465
  br label %4147

4147:                                             ; preds = %4146
  %4148 = load i32, ptr %59, align 4, !tbaa !9
  %4149 = add nsw i32 %4148, 1
  store i32 %4149, ptr %59, align 4, !tbaa !9
  br label %3457, !llvm.loop !39

4150:                                             ; preds = %3457
  %4151 = load i32, ptr %55, align 4, !tbaa !9
  %4152 = icmp ne i32 %4151, 0
  br i1 %4152, label %4317, label %4153

4153:                                             ; preds = %4150
  %4154 = load ptr, ptr %19, align 8, !tbaa !5
  %4155 = load i32, ptr %4154, align 4, !tbaa !9
  %4156 = load i32, ptr %74, align 4, !tbaa !9
  %4157 = sub nsw i32 %4155, %4156
  %4158 = add nsw i32 %4157, 1
  store i32 %4158, ptr %40, align 4, !tbaa !9
  %4159 = load ptr, ptr %28, align 8, !tbaa !5
  %4160 = load i32, ptr %74, align 4, !tbaa !9
  %4161 = load i32, ptr %77, align 4, !tbaa !9
  %4162 = load ptr, ptr %19, align 8, !tbaa !5
  %4163 = load i32, ptr %4162, align 4, !tbaa !9
  %4164 = mul nsw i32 %4161, %4163
  %4165 = add nsw i32 %4160, %4164
  %4166 = sext i32 %4165 to i64
  %4167 = getelementptr inbounds double, ptr %4159, i64 %4166
  %4168 = load ptr, ptr %22, align 8, !tbaa !5
  %4169 = load i32, ptr %74, align 4, !tbaa !9
  %4170 = load i32, ptr %76, align 4, !tbaa !9
  %4171 = load i32, ptr %34, align 4, !tbaa !9
  %4172 = mul nsw i32 %4170, %4171
  %4173 = add nsw i32 %4169, %4172
  %4174 = sext i32 %4173 to i64
  %4175 = getelementptr inbounds double, ptr %4168, i64 %4174
  call void @dcopy_(ptr noundef %40, ptr noundef %4167, ptr noundef @c__1, ptr noundef %4175, ptr noundef @c__1)
  %4176 = load ptr, ptr %19, align 8, !tbaa !5
  %4177 = load i32, ptr %4176, align 4, !tbaa !9
  %4178 = load i32, ptr %74, align 4, !tbaa !9
  %4179 = sub nsw i32 %4177, %4178
  %4180 = add nsw i32 %4179, 1
  store i32 %4180, ptr %40, align 4, !tbaa !9
  %4181 = load ptr, ptr %28, align 8, !tbaa !5
  %4182 = load i32, ptr %74, align 4, !tbaa !9
  %4183 = load i32, ptr %77, align 4, !tbaa !9
  %4184 = add nsw i32 %4183, 1
  %4185 = load ptr, ptr %19, align 8, !tbaa !5
  %4186 = load i32, ptr %4185, align 4, !tbaa !9
  %4187 = mul nsw i32 %4184, %4186
  %4188 = add nsw i32 %4182, %4187
  %4189 = sext i32 %4188 to i64
  %4190 = getelementptr inbounds double, ptr %4181, i64 %4189
  %4191 = load ptr, ptr %22, align 8, !tbaa !5
  %4192 = load i32, ptr %74, align 4, !tbaa !9
  %4193 = load i32, ptr %76, align 4, !tbaa !9
  %4194 = add nsw i32 %4193, 1
  %4195 = load i32, ptr %34, align 4, !tbaa !9
  %4196 = mul nsw i32 %4194, %4195
  %4197 = add nsw i32 %4192, %4196
  %4198 = sext i32 %4197 to i64
  %4199 = getelementptr inbounds double, ptr %4191, i64 %4198
  call void @dcopy_(ptr noundef %40, ptr noundef %4190, ptr noundef @c__1, ptr noundef %4199, ptr noundef @c__1)
  store double 0.000000e+00, ptr %48, align 8, !tbaa !16
  %4200 = load ptr, ptr %19, align 8, !tbaa !5
  %4201 = load i32, ptr %4200, align 4, !tbaa !9
  store i32 %4201, ptr %40, align 4, !tbaa !9
  %4202 = load i32, ptr %74, align 4, !tbaa !9
  store i32 %4202, ptr %60, align 4, !tbaa !9
  br label %4203

4203:                                             ; preds = %4256, %4153
  %4204 = load i32, ptr %60, align 4, !tbaa !9
  %4205 = load i32, ptr %40, align 4, !tbaa !9
  %4206 = icmp sle i32 %4204, %4205
  br i1 %4206, label %4207, label %4259

4207:                                             ; preds = %4203
  %4208 = load double, ptr %48, align 8, !tbaa !16
  store double %4208, ptr %44, align 8, !tbaa !16
  %4209 = load ptr, ptr %22, align 8, !tbaa !5
  %4210 = load i32, ptr %60, align 4, !tbaa !9
  %4211 = load i32, ptr %76, align 4, !tbaa !9
  %4212 = load i32, ptr %34, align 4, !tbaa !9
  %4213 = mul nsw i32 %4211, %4212
  %4214 = add nsw i32 %4210, %4213
  %4215 = sext i32 %4214 to i64
  %4216 = getelementptr inbounds double, ptr %4209, i64 %4215
  %4217 = load double, ptr %4216, align 8, !tbaa !16
  store double %4217, ptr %42, align 8, !tbaa !16
  %4218 = load double, ptr %42, align 8, !tbaa !16
  %4219 = fcmp oge double %4218, 0.000000e+00
  br i1 %4219, label %4220, label %4222

4220:                                             ; preds = %4207
  %4221 = load double, ptr %42, align 8, !tbaa !16
  br label %4225

4222:                                             ; preds = %4207
  %4223 = load double, ptr %42, align 8, !tbaa !16
  %4224 = fneg double %4223
  br label %4225

4225:                                             ; preds = %4222, %4220
  %4226 = phi double [ %4221, %4220 ], [ %4224, %4222 ]
  %4227 = load ptr, ptr %22, align 8, !tbaa !5
  %4228 = load i32, ptr %60, align 4, !tbaa !9
  %4229 = load i32, ptr %76, align 4, !tbaa !9
  %4230 = add nsw i32 %4229, 1
  %4231 = load i32, ptr %34, align 4, !tbaa !9
  %4232 = mul nsw i32 %4230, %4231
  %4233 = add nsw i32 %4228, %4232
  %4234 = sext i32 %4233 to i64
  %4235 = getelementptr inbounds double, ptr %4227, i64 %4234
  %4236 = load double, ptr %4235, align 8, !tbaa !16
  store double %4236, ptr %43, align 8, !tbaa !16
  %4237 = load double, ptr %43, align 8, !tbaa !16
  %4238 = fcmp oge double %4237, 0.000000e+00
  br i1 %4238, label %4239, label %4241

4239:                                             ; preds = %4225
  %4240 = load double, ptr %43, align 8, !tbaa !16
  br label %4244

4241:                                             ; preds = %4225
  %4242 = load double, ptr %43, align 8, !tbaa !16
  %4243 = fneg double %4242
  br label %4244

4244:                                             ; preds = %4241, %4239
  %4245 = phi double [ %4240, %4239 ], [ %4243, %4241 ]
  %4246 = fadd double %4226, %4245
  store double %4246, ptr %45, align 8, !tbaa !16
  %4247 = load double, ptr %44, align 8, !tbaa !16
  %4248 = load double, ptr %45, align 8, !tbaa !16
  %4249 = fcmp oge double %4247, %4248
  br i1 %4249, label %4250, label %4252

4250:                                             ; preds = %4244
  %4251 = load double, ptr %44, align 8, !tbaa !16
  br label %4254

4252:                                             ; preds = %4244
  %4253 = load double, ptr %45, align 8, !tbaa !16
  br label %4254

4254:                                             ; preds = %4252, %4250
  %4255 = phi double [ %4251, %4250 ], [ %4253, %4252 ]
  store double %4255, ptr %48, align 8, !tbaa !16
  br label %4256

4256:                                             ; preds = %4254
  %4257 = load i32, ptr %60, align 4, !tbaa !9
  %4258 = add nsw i32 %4257, 1
  store i32 %4258, ptr %60, align 4, !tbaa !9
  br label %4203, !llvm.loop !40

4259:                                             ; preds = %4203
  %4260 = load double, ptr %48, align 8, !tbaa !16
  %4261 = fdiv double 1.000000e+00, %4260
  store double %4261, ptr %63, align 8, !tbaa !16
  %4262 = load ptr, ptr %19, align 8, !tbaa !5
  %4263 = load i32, ptr %4262, align 4, !tbaa !9
  %4264 = load i32, ptr %74, align 4, !tbaa !9
  %4265 = sub nsw i32 %4263, %4264
  %4266 = add nsw i32 %4265, 1
  store i32 %4266, ptr %40, align 4, !tbaa !9
  %4267 = load ptr, ptr %22, align 8, !tbaa !5
  %4268 = load i32, ptr %74, align 4, !tbaa !9
  %4269 = load i32, ptr %76, align 4, !tbaa !9
  %4270 = load i32, ptr %34, align 4, !tbaa !9
  %4271 = mul nsw i32 %4269, %4270
  %4272 = add nsw i32 %4268, %4271
  %4273 = sext i32 %4272 to i64
  %4274 = getelementptr inbounds double, ptr %4267, i64 %4273
  call void @dscal_(ptr noundef %40, ptr noundef %63, ptr noundef %4274, ptr noundef @c__1)
  %4275 = load ptr, ptr %19, align 8, !tbaa !5
  %4276 = load i32, ptr %4275, align 4, !tbaa !9
  %4277 = load i32, ptr %74, align 4, !tbaa !9
  %4278 = sub nsw i32 %4276, %4277
  %4279 = add nsw i32 %4278, 1
  store i32 %4279, ptr %40, align 4, !tbaa !9
  %4280 = load ptr, ptr %22, align 8, !tbaa !5
  %4281 = load i32, ptr %74, align 4, !tbaa !9
  %4282 = load i32, ptr %76, align 4, !tbaa !9
  %4283 = add nsw i32 %4282, 1
  %4284 = load i32, ptr %34, align 4, !tbaa !9
  %4285 = mul nsw i32 %4283, %4284
  %4286 = add nsw i32 %4281, %4285
  %4287 = sext i32 %4286 to i64
  %4288 = getelementptr inbounds double, ptr %4280, i64 %4287
  call void @dscal_(ptr noundef %40, ptr noundef %63, ptr noundef %4288, ptr noundef @c__1)
  %4289 = load i32, ptr %74, align 4, !tbaa !9
  %4290 = sub nsw i32 %4289, 1
  store i32 %4290, ptr %40, align 4, !tbaa !9
  store i32 1, ptr %60, align 4, !tbaa !9
  br label %4291

4291:                                             ; preds = %4313, %4259
  %4292 = load i32, ptr %60, align 4, !tbaa !9
  %4293 = load i32, ptr %40, align 4, !tbaa !9
  %4294 = icmp sle i32 %4292, %4293
  br i1 %4294, label %4295, label %4316

4295:                                             ; preds = %4291
  %4296 = load ptr, ptr %22, align 8, !tbaa !5
  %4297 = load i32, ptr %60, align 4, !tbaa !9
  %4298 = load i32, ptr %76, align 4, !tbaa !9
  %4299 = load i32, ptr %34, align 4, !tbaa !9
  %4300 = mul nsw i32 %4298, %4299
  %4301 = add nsw i32 %4297, %4300
  %4302 = sext i32 %4301 to i64
  %4303 = getelementptr inbounds double, ptr %4296, i64 %4302
  store double 0.000000e+00, ptr %4303, align 8, !tbaa !16
  %4304 = load ptr, ptr %22, align 8, !tbaa !5
  %4305 = load i32, ptr %60, align 4, !tbaa !9
  %4306 = load i32, ptr %76, align 4, !tbaa !9
  %4307 = add nsw i32 %4306, 1
  %4308 = load i32, ptr %34, align 4, !tbaa !9
  %4309 = mul nsw i32 %4307, %4308
  %4310 = add nsw i32 %4305, %4309
  %4311 = sext i32 %4310 to i64
  %4312 = getelementptr inbounds double, ptr %4304, i64 %4311
  store double 0.000000e+00, ptr %4312, align 8, !tbaa !16
  br label %4313

4313:                                             ; preds = %4295
  %4314 = load i32, ptr %60, align 4, !tbaa !9
  %4315 = add nsw i32 %4314, 1
  store i32 %4315, ptr %60, align 4, !tbaa !9
  br label %4291, !llvm.loop !41

4316:                                             ; preds = %4291
  br label %4574

4317:                                             ; preds = %4150
  %4318 = load i32, ptr %72, align 4, !tbaa !9
  %4319 = icmp eq i32 %4318, 1
  br i1 %4319, label %4320, label %4530

4320:                                             ; preds = %4317
  %4321 = load i32, ptr %74, align 4, !tbaa !9
  %4322 = load ptr, ptr %19, align 8, !tbaa !5
  %4323 = load i32, ptr %4322, align 4, !tbaa !9
  %4324 = sub nsw i32 %4323, 1
  %4325 = icmp slt i32 %4321, %4324
  br i1 %4325, label %4326, label %4413

4326:                                             ; preds = %4320
  %4327 = load ptr, ptr %19, align 8, !tbaa !5
  %4328 = load i32, ptr %4327, align 4, !tbaa !9
  %4329 = load i32, ptr %74, align 4, !tbaa !9
  %4330 = sub nsw i32 %4328, %4329
  %4331 = sub nsw i32 %4330, 1
  store i32 %4331, ptr %40, align 4, !tbaa !9
  %4332 = load ptr, ptr %19, align 8, !tbaa !5
  %4333 = load ptr, ptr %22, align 8, !tbaa !5
  %4334 = load i32, ptr %74, align 4, !tbaa !9
  %4335 = add nsw i32 %4334, 2
  %4336 = load i32, ptr %34, align 4, !tbaa !9
  %4337 = mul nsw i32 %4335, %4336
  %4338 = add nsw i32 %4337, 1
  %4339 = sext i32 %4338 to i64
  %4340 = getelementptr inbounds double, ptr %4333, i64 %4339
  %4341 = load ptr, ptr %23, align 8, !tbaa !5
  %4342 = load ptr, ptr %28, align 8, !tbaa !5
  %4343 = load i32, ptr %74, align 4, !tbaa !9
  %4344 = add nsw i32 %4343, 2
  %4345 = load i32, ptr %77, align 4, !tbaa !9
  %4346 = load ptr, ptr %19, align 8, !tbaa !5
  %4347 = load i32, ptr %4346, align 4, !tbaa !9
  %4348 = mul nsw i32 %4345, %4347
  %4349 = add nsw i32 %4344, %4348
  %4350 = sext i32 %4349 to i64
  %4351 = getelementptr inbounds double, ptr %4342, i64 %4350
  %4352 = load ptr, ptr %28, align 8, !tbaa !5
  %4353 = load i32, ptr %74, align 4, !tbaa !9
  %4354 = load i32, ptr %77, align 4, !tbaa !9
  %4355 = load ptr, ptr %19, align 8, !tbaa !5
  %4356 = load i32, ptr %4355, align 4, !tbaa !9
  %4357 = mul nsw i32 %4354, %4356
  %4358 = add nsw i32 %4353, %4357
  %4359 = sext i32 %4358 to i64
  %4360 = getelementptr inbounds double, ptr %4352, i64 %4359
  %4361 = load ptr, ptr %22, align 8, !tbaa !5
  %4362 = load i32, ptr %74, align 4, !tbaa !9
  %4363 = load i32, ptr %34, align 4, !tbaa !9
  %4364 = mul nsw i32 %4362, %4363
  %4365 = add nsw i32 %4364, 1
  %4366 = sext i32 %4365 to i64
  %4367 = getelementptr inbounds double, ptr %4361, i64 %4366
  call void @dgemv_(ptr noundef @.str.10, ptr noundef %4332, ptr noundef %40, ptr noundef @c_b29, ptr noundef %4340, ptr noundef %4341, ptr noundef %4351, ptr noundef @c__1, ptr noundef %4360, ptr noundef %4367, ptr noundef @c__1)
  %4368 = load ptr, ptr %19, align 8, !tbaa !5
  %4369 = load i32, ptr %4368, align 4, !tbaa !9
  %4370 = load i32, ptr %74, align 4, !tbaa !9
  %4371 = sub nsw i32 %4369, %4370
  %4372 = sub nsw i32 %4371, 1
  store i32 %4372, ptr %40, align 4, !tbaa !9
  %4373 = load ptr, ptr %19, align 8, !tbaa !5
  %4374 = load ptr, ptr %22, align 8, !tbaa !5
  %4375 = load i32, ptr %74, align 4, !tbaa !9
  %4376 = add nsw i32 %4375, 2
  %4377 = load i32, ptr %34, align 4, !tbaa !9
  %4378 = mul nsw i32 %4376, %4377
  %4379 = add nsw i32 %4378, 1
  %4380 = sext i32 %4379 to i64
  %4381 = getelementptr inbounds double, ptr %4374, i64 %4380
  %4382 = load ptr, ptr %23, align 8, !tbaa !5
  %4383 = load ptr, ptr %28, align 8, !tbaa !5
  %4384 = load i32, ptr %74, align 4, !tbaa !9
  %4385 = add nsw i32 %4384, 2
  %4386 = load i32, ptr %77, align 4, !tbaa !9
  %4387 = add nsw i32 %4386, 1
  %4388 = load ptr, ptr %19, align 8, !tbaa !5
  %4389 = load i32, ptr %4388, align 4, !tbaa !9
  %4390 = mul nsw i32 %4387, %4389
  %4391 = add nsw i32 %4385, %4390
  %4392 = sext i32 %4391 to i64
  %4393 = getelementptr inbounds double, ptr %4383, i64 %4392
  %4394 = load ptr, ptr %28, align 8, !tbaa !5
  %4395 = load i32, ptr %74, align 4, !tbaa !9
  %4396 = add nsw i32 %4395, 1
  %4397 = load i32, ptr %77, align 4, !tbaa !9
  %4398 = add nsw i32 %4397, 1
  %4399 = load ptr, ptr %19, align 8, !tbaa !5
  %4400 = load i32, ptr %4399, align 4, !tbaa !9
  %4401 = mul nsw i32 %4398, %4400
  %4402 = add nsw i32 %4396, %4401
  %4403 = sext i32 %4402 to i64
  %4404 = getelementptr inbounds double, ptr %4394, i64 %4403
  %4405 = load ptr, ptr %22, align 8, !tbaa !5
  %4406 = load i32, ptr %74, align 4, !tbaa !9
  %4407 = add nsw i32 %4406, 1
  %4408 = load i32, ptr %34, align 4, !tbaa !9
  %4409 = mul nsw i32 %4407, %4408
  %4410 = add nsw i32 %4409, 1
  %4411 = sext i32 %4410 to i64
  %4412 = getelementptr inbounds double, ptr %4405, i64 %4411
  call void @dgemv_(ptr noundef @.str.10, ptr noundef %4373, ptr noundef %40, ptr noundef @c_b29, ptr noundef %4381, ptr noundef %4382, ptr noundef %4393, ptr noundef @c__1, ptr noundef %4404, ptr noundef %4412, ptr noundef @c__1)
  br label %4451

4413:                                             ; preds = %4320
  %4414 = load ptr, ptr %19, align 8, !tbaa !5
  %4415 = load ptr, ptr %28, align 8, !tbaa !5
  %4416 = load i32, ptr %74, align 4, !tbaa !9
  %4417 = load i32, ptr %77, align 4, !tbaa !9
  %4418 = load ptr, ptr %19, align 8, !tbaa !5
  %4419 = load i32, ptr %4418, align 4, !tbaa !9
  %4420 = mul nsw i32 %4417, %4419
  %4421 = add nsw i32 %4416, %4420
  %4422 = sext i32 %4421 to i64
  %4423 = getelementptr inbounds double, ptr %4415, i64 %4422
  %4424 = load ptr, ptr %22, align 8, !tbaa !5
  %4425 = load i32, ptr %74, align 4, !tbaa !9
  %4426 = load i32, ptr %34, align 4, !tbaa !9
  %4427 = mul nsw i32 %4425, %4426
  %4428 = add nsw i32 %4427, 1
  %4429 = sext i32 %4428 to i64
  %4430 = getelementptr inbounds double, ptr %4424, i64 %4429
  call void @dscal_(ptr noundef %4414, ptr noundef %4423, ptr noundef %4430, ptr noundef @c__1)
  %4431 = load ptr, ptr %19, align 8, !tbaa !5
  %4432 = load ptr, ptr %28, align 8, !tbaa !5
  %4433 = load i32, ptr %74, align 4, !tbaa !9
  %4434 = add nsw i32 %4433, 1
  %4435 = load i32, ptr %77, align 4, !tbaa !9
  %4436 = add nsw i32 %4435, 1
  %4437 = load ptr, ptr %19, align 8, !tbaa !5
  %4438 = load i32, ptr %4437, align 4, !tbaa !9
  %4439 = mul nsw i32 %4436, %4438
  %4440 = add nsw i32 %4434, %4439
  %4441 = sext i32 %4440 to i64
  %4442 = getelementptr inbounds double, ptr %4432, i64 %4441
  %4443 = load ptr, ptr %22, align 8, !tbaa !5
  %4444 = load i32, ptr %74, align 4, !tbaa !9
  %4445 = add nsw i32 %4444, 1
  %4446 = load i32, ptr %34, align 4, !tbaa !9
  %4447 = mul nsw i32 %4445, %4446
  %4448 = add nsw i32 %4447, 1
  %4449 = sext i32 %4448 to i64
  %4450 = getelementptr inbounds double, ptr %4443, i64 %4449
  call void @dscal_(ptr noundef %4431, ptr noundef %4442, ptr noundef %4450, ptr noundef @c__1)
  br label %4451

4451:                                             ; preds = %4413, %4326
  store double 0.000000e+00, ptr %48, align 8, !tbaa !16
  %4452 = load ptr, ptr %19, align 8, !tbaa !5
  %4453 = load i32, ptr %4452, align 4, !tbaa !9
  store i32 %4453, ptr %40, align 4, !tbaa !9
  store i32 1, ptr %60, align 4, !tbaa !9
  br label %4454

4454:                                             ; preds = %4507, %4451
  %4455 = load i32, ptr %60, align 4, !tbaa !9
  %4456 = load i32, ptr %40, align 4, !tbaa !9
  %4457 = icmp sle i32 %4455, %4456
  br i1 %4457, label %4458, label %4510

4458:                                             ; preds = %4454
  %4459 = load double, ptr %48, align 8, !tbaa !16
  store double %4459, ptr %44, align 8, !tbaa !16
  %4460 = load ptr, ptr %22, align 8, !tbaa !5
  %4461 = load i32, ptr %60, align 4, !tbaa !9
  %4462 = load i32, ptr %74, align 4, !tbaa !9
  %4463 = load i32, ptr %34, align 4, !tbaa !9
  %4464 = mul nsw i32 %4462, %4463
  %4465 = add nsw i32 %4461, %4464
  %4466 = sext i32 %4465 to i64
  %4467 = getelementptr inbounds double, ptr %4460, i64 %4466
  %4468 = load double, ptr %4467, align 8, !tbaa !16
  store double %4468, ptr %42, align 8, !tbaa !16
  %4469 = load double, ptr %42, align 8, !tbaa !16
  %4470 = fcmp oge double %4469, 0.000000e+00
  br i1 %4470, label %4471, label %4473

4471:                                             ; preds = %4458
  %4472 = load double, ptr %42, align 8, !tbaa !16
  br label %4476

4473:                                             ; preds = %4458
  %4474 = load double, ptr %42, align 8, !tbaa !16
  %4475 = fneg double %4474
  br label %4476

4476:                                             ; preds = %4473, %4471
  %4477 = phi double [ %4472, %4471 ], [ %4475, %4473 ]
  %4478 = load ptr, ptr %22, align 8, !tbaa !5
  %4479 = load i32, ptr %60, align 4, !tbaa !9
  %4480 = load i32, ptr %74, align 4, !tbaa !9
  %4481 = add nsw i32 %4480, 1
  %4482 = load i32, ptr %34, align 4, !tbaa !9
  %4483 = mul nsw i32 %4481, %4482
  %4484 = add nsw i32 %4479, %4483
  %4485 = sext i32 %4484 to i64
  %4486 = getelementptr inbounds double, ptr %4478, i64 %4485
  %4487 = load double, ptr %4486, align 8, !tbaa !16
  store double %4487, ptr %43, align 8, !tbaa !16
  %4488 = load double, ptr %43, align 8, !tbaa !16
  %4489 = fcmp oge double %4488, 0.000000e+00
  br i1 %4489, label %4490, label %4492

4490:                                             ; preds = %4476
  %4491 = load double, ptr %43, align 8, !tbaa !16
  br label %4495

4492:                                             ; preds = %4476
  %4493 = load double, ptr %43, align 8, !tbaa !16
  %4494 = fneg double %4493
  br label %4495

4495:                                             ; preds = %4492, %4490
  %4496 = phi double [ %4491, %4490 ], [ %4494, %4492 ]
  %4497 = fadd double %4477, %4496
  store double %4497, ptr %45, align 8, !tbaa !16
  %4498 = load double, ptr %44, align 8, !tbaa !16
  %4499 = load double, ptr %45, align 8, !tbaa !16
  %4500 = fcmp oge double %4498, %4499
  br i1 %4500, label %4501, label %4503

4501:                                             ; preds = %4495
  %4502 = load double, ptr %44, align 8, !tbaa !16
  br label %4505

4503:                                             ; preds = %4495
  %4504 = load double, ptr %45, align 8, !tbaa !16
  br label %4505

4505:                                             ; preds = %4503, %4501
  %4506 = phi double [ %4502, %4501 ], [ %4504, %4503 ]
  store double %4506, ptr %48, align 8, !tbaa !16
  br label %4507

4507:                                             ; preds = %4505
  %4508 = load i32, ptr %60, align 4, !tbaa !9
  %4509 = add nsw i32 %4508, 1
  store i32 %4509, ptr %60, align 4, !tbaa !9
  br label %4454, !llvm.loop !42

4510:                                             ; preds = %4454
  %4511 = load double, ptr %48, align 8, !tbaa !16
  %4512 = fdiv double 1.000000e+00, %4511
  store double %4512, ptr %63, align 8, !tbaa !16
  %4513 = load ptr, ptr %19, align 8, !tbaa !5
  %4514 = load ptr, ptr %22, align 8, !tbaa !5
  %4515 = load i32, ptr %74, align 4, !tbaa !9
  %4516 = load i32, ptr %34, align 4, !tbaa !9
  %4517 = mul nsw i32 %4515, %4516
  %4518 = add nsw i32 %4517, 1
  %4519 = sext i32 %4518 to i64
  %4520 = getelementptr inbounds double, ptr %4514, i64 %4519
  call void @dscal_(ptr noundef %4513, ptr noundef %63, ptr noundef %4520, ptr noundef @c__1)
  %4521 = load ptr, ptr %19, align 8, !tbaa !5
  %4522 = load ptr, ptr %22, align 8, !tbaa !5
  %4523 = load i32, ptr %74, align 4, !tbaa !9
  %4524 = add nsw i32 %4523, 1
  %4525 = load i32, ptr %34, align 4, !tbaa !9
  %4526 = mul nsw i32 %4524, %4525
  %4527 = add nsw i32 %4526, 1
  %4528 = sext i32 %4527 to i64
  %4529 = getelementptr inbounds double, ptr %4522, i64 %4528
  call void @dscal_(ptr noundef %4521, ptr noundef %63, ptr noundef %4529, ptr noundef @c__1)
  br label %4573

4530:                                             ; preds = %4317
  %4531 = load i32, ptr %74, align 4, !tbaa !9
  %4532 = sub nsw i32 %4531, 1
  store i32 %4532, ptr %40, align 4, !tbaa !9
  store i32 1, ptr %60, align 4, !tbaa !9
  br label %4533

4533:                                             ; preds = %4557, %4530
  %4534 = load i32, ptr %60, align 4, !tbaa !9
  %4535 = load i32, ptr %40, align 4, !tbaa !9
  %4536 = icmp sle i32 %4534, %4535
  br i1 %4536, label %4537, label %4560

4537:                                             ; preds = %4533
  %4538 = load ptr, ptr %28, align 8, !tbaa !5
  %4539 = load i32, ptr %60, align 4, !tbaa !9
  %4540 = load i32, ptr %77, align 4, !tbaa !9
  %4541 = load ptr, ptr %19, align 8, !tbaa !5
  %4542 = load i32, ptr %4541, align 4, !tbaa !9
  %4543 = mul nsw i32 %4540, %4542
  %4544 = add nsw i32 %4539, %4543
  %4545 = sext i32 %4544 to i64
  %4546 = getelementptr inbounds double, ptr %4538, i64 %4545
  store double 0.000000e+00, ptr %4546, align 8, !tbaa !16
  %4547 = load ptr, ptr %28, align 8, !tbaa !5
  %4548 = load i32, ptr %60, align 4, !tbaa !9
  %4549 = load i32, ptr %77, align 4, !tbaa !9
  %4550 = add nsw i32 %4549, 1
  %4551 = load ptr, ptr %19, align 8, !tbaa !5
  %4552 = load i32, ptr %4551, align 4, !tbaa !9
  %4553 = mul nsw i32 %4550, %4552
  %4554 = add nsw i32 %4548, %4553
  %4555 = sext i32 %4554 to i64
  %4556 = getelementptr inbounds double, ptr %4547, i64 %4555
  store double 0.000000e+00, ptr %4556, align 8, !tbaa !16
  br label %4557

4557:                                             ; preds = %4537
  %4558 = load i32, ptr %60, align 4, !tbaa !9
  %4559 = add nsw i32 %4558, 1
  store i32 %4559, ptr %60, align 4, !tbaa !9
  br label %4533, !llvm.loop !43

4560:                                             ; preds = %4533
  %4561 = load i32, ptr %75, align 4, !tbaa !9
  %4562 = load i32, ptr %77, align 4, !tbaa !9
  %4563 = sub nsw i32 %4562, 1
  %4564 = sext i32 %4563 to i64
  %4565 = getelementptr inbounds [128 x i32], ptr %71, i64 0, i64 %4564
  store i32 %4561, ptr %4565, align 4, !tbaa !9
  %4566 = load i32, ptr %75, align 4, !tbaa !9
  %4567 = sub nsw i32 0, %4566
  %4568 = load i32, ptr %77, align 4, !tbaa !9
  %4569 = sext i32 %4568 to i64
  %4570 = getelementptr inbounds [128 x i32], ptr %71, i64 0, i64 %4569
  store i32 %4567, ptr %4570, align 4, !tbaa !9
  %4571 = load i32, ptr %77, align 4, !tbaa !9
  %4572 = add nsw i32 %4571, 1
  store i32 %4572, ptr %77, align 4, !tbaa !9
  br label %4573

4573:                                             ; preds = %4560, %4510
  br label %4574

4574:                                             ; preds = %4573, %4316
  br label %4575

4575:                                             ; preds = %4574, %3244
  %4576 = load i32, ptr %72, align 4, !tbaa !9
  %4577 = icmp sgt i32 %4576, 1
  br i1 %4577, label %4578, label %4801

4578:                                             ; preds = %4575
  %4579 = load i32, ptr %75, align 4, !tbaa !9
  %4580 = icmp eq i32 %4579, 0
  br i1 %4580, label %4581, label %4583

4581:                                             ; preds = %4578
  %4582 = load i32, ptr %74, align 4, !tbaa !9
  store i32 %4582, ptr %82, align 4, !tbaa !9
  br label %4586

4583:                                             ; preds = %4578
  %4584 = load i32, ptr %74, align 4, !tbaa !9
  %4585 = add nsw i32 %4584, 1
  store i32 %4585, ptr %82, align 4, !tbaa !9
  br label %4586

4586:                                             ; preds = %4583, %4581
  %4587 = load i32, ptr %77, align 4, !tbaa !9
  %4588 = load i32, ptr %72, align 4, !tbaa !9
  %4589 = sub nsw i32 %4588, 1
  %4590 = icmp sge i32 %4587, %4589
  br i1 %4590, label %4596, label %4591

4591:                                             ; preds = %4586
  %4592 = load i32, ptr %82, align 4, !tbaa !9
  %4593 = load ptr, ptr %19, align 8, !tbaa !5
  %4594 = load i32, ptr %4593, align 4, !tbaa !9
  %4595 = icmp eq i32 %4592, %4594
  br i1 %4595, label %4596, label %4797

4596:                                             ; preds = %4591, %4586
  %4597 = load ptr, ptr %19, align 8, !tbaa !5
  %4598 = load i32, ptr %4597, align 4, !tbaa !9
  %4599 = load i32, ptr %82, align 4, !tbaa !9
  %4600 = sub nsw i32 %4598, %4599
  %4601 = load i32, ptr %77, align 4, !tbaa !9
  %4602 = add nsw i32 %4600, %4601
  store i32 %4602, ptr %40, align 4, !tbaa !9
  %4603 = load ptr, ptr %19, align 8, !tbaa !5
  %4604 = load ptr, ptr %22, align 8, !tbaa !5
  %4605 = load i32, ptr %82, align 4, !tbaa !9
  %4606 = load i32, ptr %77, align 4, !tbaa !9
  %4607 = sub nsw i32 %4605, %4606
  %4608 = add nsw i32 %4607, 1
  %4609 = load i32, ptr %34, align 4, !tbaa !9
  %4610 = mul nsw i32 %4608, %4609
  %4611 = add nsw i32 %4610, 1
  %4612 = sext i32 %4611 to i64
  %4613 = getelementptr inbounds double, ptr %4604, i64 %4612
  %4614 = load ptr, ptr %23, align 8, !tbaa !5
  %4615 = load ptr, ptr %28, align 8, !tbaa !5
  %4616 = load i32, ptr %82, align 4, !tbaa !9
  %4617 = load i32, ptr %77, align 4, !tbaa !9
  %4618 = sub nsw i32 %4616, %4617
  %4619 = add nsw i32 %4618, 1
  %4620 = load ptr, ptr %19, align 8, !tbaa !5
  %4621 = load i32, ptr %4620, align 4, !tbaa !9
  %4622 = add nsw i32 %4619, %4621
  %4623 = sext i32 %4622 to i64
  %4624 = getelementptr inbounds double, ptr %4615, i64 %4623
  %4625 = load ptr, ptr %19, align 8, !tbaa !5
  %4626 = load ptr, ptr %28, align 8, !tbaa !5
  %4627 = load i32, ptr %72, align 4, !tbaa !9
  %4628 = add nsw i32 %4627, 1
  %4629 = load ptr, ptr %19, align 8, !tbaa !5
  %4630 = load i32, ptr %4629, align 4, !tbaa !9
  %4631 = mul nsw i32 %4628, %4630
  %4632 = add nsw i32 %4631, 1
  %4633 = sext i32 %4632 to i64
  %4634 = getelementptr inbounds double, ptr %4626, i64 %4633
  %4635 = load ptr, ptr %19, align 8, !tbaa !5
  call void @dgemm_(ptr noundef @.str.10, ptr noundef @.str.10, ptr noundef %4603, ptr noundef %77, ptr noundef %40, ptr noundef @c_b29, ptr noundef %4613, ptr noundef %4614, ptr noundef %4624, ptr noundef %4625, ptr noundef @c_b17, ptr noundef %4634, ptr noundef %4635)
  %4636 = load i32, ptr %77, align 4, !tbaa !9
  store i32 %4636, ptr %40, align 4, !tbaa !9
  store i32 1, ptr %60, align 4, !tbaa !9
  br label %4637

4637:                                             ; preds = %4771, %4596
  %4638 = load i32, ptr %60, align 4, !tbaa !9
  %4639 = load i32, ptr %40, align 4, !tbaa !9
  %4640 = icmp sle i32 %4638, %4639
  br i1 %4640, label %4641, label %4774

4641:                                             ; preds = %4637
  %4642 = load i32, ptr %60, align 4, !tbaa !9
  %4643 = sub nsw i32 %4642, 1
  %4644 = sext i32 %4643 to i64
  %4645 = getelementptr inbounds [128 x i32], ptr %71, i64 0, i64 %4644
  %4646 = load i32, ptr %4645, align 4, !tbaa !9
  %4647 = icmp eq i32 %4646, 0
  br i1 %4647, label %4648, label %4683

4648:                                             ; preds = %4641
  %4649 = load ptr, ptr %19, align 8, !tbaa !5
  %4650 = load ptr, ptr %28, align 8, !tbaa !5
  %4651 = load i32, ptr %72, align 4, !tbaa !9
  %4652 = load i32, ptr %60, align 4, !tbaa !9
  %4653 = add nsw i32 %4651, %4652
  %4654 = load ptr, ptr %19, align 8, !tbaa !5
  %4655 = load i32, ptr %4654, align 4, !tbaa !9
  %4656 = mul nsw i32 %4653, %4655
  %4657 = add nsw i32 %4656, 1
  %4658 = sext i32 %4657 to i64
  %4659 = getelementptr inbounds double, ptr %4650, i64 %4658
  %4660 = call i32 @idamax_(ptr noundef %4649, ptr noundef %4659, ptr noundef @c__1)
  store i32 %4660, ptr %73, align 4, !tbaa !9
  %4661 = load ptr, ptr %28, align 8, !tbaa !5
  %4662 = load i32, ptr %73, align 4, !tbaa !9
  %4663 = load i32, ptr %72, align 4, !tbaa !9
  %4664 = load i32, ptr %60, align 4, !tbaa !9
  %4665 = add nsw i32 %4663, %4664
  %4666 = load ptr, ptr %19, align 8, !tbaa !5
  %4667 = load i32, ptr %4666, align 4, !tbaa !9
  %4668 = mul nsw i32 %4665, %4667
  %4669 = add nsw i32 %4662, %4668
  %4670 = sext i32 %4669 to i64
  %4671 = getelementptr inbounds double, ptr %4661, i64 %4670
  %4672 = load double, ptr %4671, align 8, !tbaa !16
  store double %4672, ptr %42, align 8, !tbaa !16
  %4673 = load double, ptr %42, align 8, !tbaa !16
  %4674 = fcmp oge double %4673, 0.000000e+00
  br i1 %4674, label %4675, label %4677

4675:                                             ; preds = %4648
  %4676 = load double, ptr %42, align 8, !tbaa !16
  br label %4680

4677:                                             ; preds = %4648
  %4678 = load double, ptr %42, align 8, !tbaa !16
  %4679 = fneg double %4678
  br label %4680

4680:                                             ; preds = %4677, %4675
  %4681 = phi double [ %4676, %4675 ], [ %4679, %4677 ]
  %4682 = fdiv double 1.000000e+00, %4681
  store double %4682, ptr %63, align 8, !tbaa !16
  br label %4759

4683:                                             ; preds = %4641
  %4684 = load i32, ptr %60, align 4, !tbaa !9
  %4685 = sub nsw i32 %4684, 1
  %4686 = sext i32 %4685 to i64
  %4687 = getelementptr inbounds [128 x i32], ptr %71, i64 0, i64 %4686
  %4688 = load i32, ptr %4687, align 4, !tbaa !9
  %4689 = icmp eq i32 %4688, 1
  br i1 %4689, label %4690, label %4758

4690:                                             ; preds = %4683
  store double 0.000000e+00, ptr %48, align 8, !tbaa !16
  %4691 = load ptr, ptr %19, align 8, !tbaa !5
  %4692 = load i32, ptr %4691, align 4, !tbaa !9
  store i32 %4692, ptr %41, align 4, !tbaa !9
  store i32 1, ptr %73, align 4, !tbaa !9
  br label %4693

4693:                                             ; preds = %4752, %4690
  %4694 = load i32, ptr %73, align 4, !tbaa !9
  %4695 = load i32, ptr %41, align 4, !tbaa !9
  %4696 = icmp sle i32 %4694, %4695
  br i1 %4696, label %4697, label %4755

4697:                                             ; preds = %4693
  %4698 = load double, ptr %48, align 8, !tbaa !16
  store double %4698, ptr %44, align 8, !tbaa !16
  %4699 = load ptr, ptr %28, align 8, !tbaa !5
  %4700 = load i32, ptr %73, align 4, !tbaa !9
  %4701 = load i32, ptr %72, align 4, !tbaa !9
  %4702 = load i32, ptr %60, align 4, !tbaa !9
  %4703 = add nsw i32 %4701, %4702
  %4704 = load ptr, ptr %19, align 8, !tbaa !5
  %4705 = load i32, ptr %4704, align 4, !tbaa !9
  %4706 = mul nsw i32 %4703, %4705
  %4707 = add nsw i32 %4700, %4706
  %4708 = sext i32 %4707 to i64
  %4709 = getelementptr inbounds double, ptr %4699, i64 %4708
  %4710 = load double, ptr %4709, align 8, !tbaa !16
  store double %4710, ptr %42, align 8, !tbaa !16
  %4711 = load double, ptr %42, align 8, !tbaa !16
  %4712 = fcmp oge double %4711, 0.000000e+00
  br i1 %4712, label %4713, label %4715

4713:                                             ; preds = %4697
  %4714 = load double, ptr %42, align 8, !tbaa !16
  br label %4718

4715:                                             ; preds = %4697
  %4716 = load double, ptr %42, align 8, !tbaa !16
  %4717 = fneg double %4716
  br label %4718

4718:                                             ; preds = %4715, %4713
  %4719 = phi double [ %4714, %4713 ], [ %4717, %4715 ]
  %4720 = load ptr, ptr %28, align 8, !tbaa !5
  %4721 = load i32, ptr %73, align 4, !tbaa !9
  %4722 = load i32, ptr %72, align 4, !tbaa !9
  %4723 = load i32, ptr %60, align 4, !tbaa !9
  %4724 = add nsw i32 %4722, %4723
  %4725 = add nsw i32 %4724, 1
  %4726 = load ptr, ptr %19, align 8, !tbaa !5
  %4727 = load i32, ptr %4726, align 4, !tbaa !9
  %4728 = mul nsw i32 %4725, %4727
  %4729 = add nsw i32 %4721, %4728
  %4730 = sext i32 %4729 to i64
  %4731 = getelementptr inbounds double, ptr %4720, i64 %4730
  %4732 = load double, ptr %4731, align 8, !tbaa !16
  store double %4732, ptr %43, align 8, !tbaa !16
  %4733 = load double, ptr %43, align 8, !tbaa !16
  %4734 = fcmp oge double %4733, 0.000000e+00
  br i1 %4734, label %4735, label %4737

4735:                                             ; preds = %4718
  %4736 = load double, ptr %43, align 8, !tbaa !16
  br label %4740

4737:                                             ; preds = %4718
  %4738 = load double, ptr %43, align 8, !tbaa !16
  %4739 = fneg double %4738
  br label %4740

4740:                                             ; preds = %4737, %4735
  %4741 = phi double [ %4736, %4735 ], [ %4739, %4737 ]
  %4742 = fadd double %4719, %4741
  store double %4742, ptr %45, align 8, !tbaa !16
  %4743 = load double, ptr %44, align 8, !tbaa !16
  %4744 = load double, ptr %45, align 8, !tbaa !16
  %4745 = fcmp oge double %4743, %4744
  br i1 %4745, label %4746, label %4748

4746:                                             ; preds = %4740
  %4747 = load double, ptr %44, align 8, !tbaa !16
  br label %4750

4748:                                             ; preds = %4740
  %4749 = load double, ptr %45, align 8, !tbaa !16
  br label %4750

4750:                                             ; preds = %4748, %4746
  %4751 = phi double [ %4747, %4746 ], [ %4749, %4748 ]
  store double %4751, ptr %48, align 8, !tbaa !16
  br label %4752

4752:                                             ; preds = %4750
  %4753 = load i32, ptr %73, align 4, !tbaa !9
  %4754 = add nsw i32 %4753, 1
  store i32 %4754, ptr %73, align 4, !tbaa !9
  br label %4693, !llvm.loop !44

4755:                                             ; preds = %4693
  %4756 = load double, ptr %48, align 8, !tbaa !16
  %4757 = fdiv double 1.000000e+00, %4756
  store double %4757, ptr %63, align 8, !tbaa !16
  br label %4758

4758:                                             ; preds = %4755, %4683
  br label %4759

4759:                                             ; preds = %4758, %4680
  %4760 = load ptr, ptr %19, align 8, !tbaa !5
  %4761 = load ptr, ptr %28, align 8, !tbaa !5
  %4762 = load i32, ptr %72, align 4, !tbaa !9
  %4763 = load i32, ptr %60, align 4, !tbaa !9
  %4764 = add nsw i32 %4762, %4763
  %4765 = load ptr, ptr %19, align 8, !tbaa !5
  %4766 = load i32, ptr %4765, align 4, !tbaa !9
  %4767 = mul nsw i32 %4764, %4766
  %4768 = add nsw i32 %4767, 1
  %4769 = sext i32 %4768 to i64
  %4770 = getelementptr inbounds double, ptr %4761, i64 %4769
  call void @dscal_(ptr noundef %4760, ptr noundef %63, ptr noundef %4770, ptr noundef @c__1)
  br label %4771

4771:                                             ; preds = %4759
  %4772 = load i32, ptr %60, align 4, !tbaa !9
  %4773 = add nsw i32 %4772, 1
  store i32 %4773, ptr %60, align 4, !tbaa !9
  br label %4637, !llvm.loop !45

4774:                                             ; preds = %4637
  %4775 = load ptr, ptr %19, align 8, !tbaa !5
  %4776 = load ptr, ptr %28, align 8, !tbaa !5
  %4777 = load i32, ptr %72, align 4, !tbaa !9
  %4778 = add nsw i32 %4777, 1
  %4779 = load ptr, ptr %19, align 8, !tbaa !5
  %4780 = load i32, ptr %4779, align 4, !tbaa !9
  %4781 = mul nsw i32 %4778, %4780
  %4782 = add nsw i32 %4781, 1
  %4783 = sext i32 %4782 to i64
  %4784 = getelementptr inbounds double, ptr %4776, i64 %4783
  %4785 = load ptr, ptr %19, align 8, !tbaa !5
  %4786 = load ptr, ptr %22, align 8, !tbaa !5
  %4787 = load i32, ptr %82, align 4, !tbaa !9
  %4788 = load i32, ptr %77, align 4, !tbaa !9
  %4789 = sub nsw i32 %4787, %4788
  %4790 = add nsw i32 %4789, 1
  %4791 = load i32, ptr %34, align 4, !tbaa !9
  %4792 = mul nsw i32 %4790, %4791
  %4793 = add nsw i32 %4792, 1
  %4794 = sext i32 %4793 to i64
  %4795 = getelementptr inbounds double, ptr %4786, i64 %4794
  %4796 = load ptr, ptr %23, align 8, !tbaa !5
  call void @dlacpy_(ptr noundef @.str.7, ptr noundef %4775, ptr noundef %77, ptr noundef %4784, ptr noundef %4785, ptr noundef %4795, ptr noundef %4796)
  store i32 1, ptr %77, align 4, !tbaa !9
  br label %4800

4797:                                             ; preds = %4591
  %4798 = load i32, ptr %77, align 4, !tbaa !9
  %4799 = add nsw i32 %4798, 1
  store i32 %4799, ptr %77, align 4, !tbaa !9
  br label %4800

4800:                                             ; preds = %4797, %4774
  br label %4801

4801:                                             ; preds = %4800, %4575
  %4802 = load i32, ptr %76, align 4, !tbaa !9
  %4803 = add nsw i32 %4802, 1
  store i32 %4803, ptr %76, align 4, !tbaa !9
  %4804 = load i32, ptr %75, align 4, !tbaa !9
  %4805 = icmp ne i32 %4804, 0
  br i1 %4805, label %4806, label %4809

4806:                                             ; preds = %4801
  %4807 = load i32, ptr %76, align 4, !tbaa !9
  %4808 = add nsw i32 %4807, 1
  store i32 %4808, ptr %76, align 4, !tbaa !9
  br label %4809

4809:                                             ; preds = %4806, %4801
  br label %4810

4810:                                             ; preds = %4809, %2476, %2443
  br label %4811

4811:                                             ; preds = %4810
  %4812 = load i32, ptr %74, align 4, !tbaa !9
  %4813 = add nsw i32 %4812, 1
  store i32 %4813, ptr %74, align 4, !tbaa !9
  br label %2436, !llvm.loop !46

4814:                                             ; preds = %2436
  br label %4815

4815:                                             ; preds = %4814, %2430
  store i32 1, ptr %93, align 4
  br label %4816

4816:                                             ; preds = %4815, %448, %442, %434
  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 4, ptr %85) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #4
  call void @llvm.lifetime.end.p0(i64 4, 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 4, ptr %77) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #4
  call void @llvm.lifetime.end.p0(i64 512, ptr %71) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr %62) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 2, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr %31) #4
  ret void
}

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

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

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

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

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

declare double @dlamch_(ptr noundef) #2

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

; Function Attrs: nounwind uwtable
define dso_local void @dtrevc3_(ptr noundef %0, ptr noundef %1, ptr nocapture noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr nocapture noundef readonly %10, ptr nocapture noundef %11, ptr noundef %12, ptr nocapture noundef readonly %13, ptr nocapture noundef %14) local_unnamed_addr #0 {
  %16 = ptrtoint ptr %4 to i64
  %17 = ptrtoint ptr %12 to i64
  %18 = ptrtoint ptr %4 to i64
  %19 = ptrtoint ptr %12 to i64
  %20 = alloca [2 x ptr], align 16
  %21 = alloca [2 x i32], align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca double, align 8
  %26 = alloca [2 x i8], align 1
  %27 = alloca i32, align 4
  %28 = alloca double, align 8
  %29 = alloca double, align 8
  %30 = alloca double, align 8
  %31 = alloca double, align 8
  %32 = alloca [4 x double], align 16
  %33 = alloca double, align 8
  %34 = alloca double, align 8
  %35 = alloca [128 x i32], align 16
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca double, align 8
  %39 = alloca double, align 8
  %40 = alloca double, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %20) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %22) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %24) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #6
  call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %26) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %27) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %32) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %34) #6
  call void @llvm.lifetime.start.p0(i64 512, ptr nonnull %35) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %36) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %37) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %38) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %39) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %40) #6
  %41 = getelementptr inbounds i8, ptr %2, i64 -4
  %42 = load i32, ptr %5, align 4, !tbaa !5
  %narrow = xor i32 %42, -1
  %43 = sext i32 %narrow to i64
  %44 = getelementptr inbounds double, ptr %4, i64 %43
  %45 = load i32, ptr %7, align 4, !tbaa !5
  %narrow1362 = xor i32 %45, -1
  %46 = sext i32 %narrow1362 to i64
  %47 = getelementptr inbounds double, ptr %6, i64 %46
  %48 = load i32, ptr %9, align 4, !tbaa !5
  %narrow1404 = xor i32 %48, -1
  %49 = sext i32 %narrow1404 to i64
  %50 = getelementptr inbounds double, ptr %8, i64 %49
  %51 = getelementptr i8, ptr %12, i64 -8
  %52 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #6
  %53 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #6
  %54 = icmp ne i32 %53, 0
  %55 = icmp ne i32 %52, 0
  %56 = select i1 %54, i1 true, i1 %55
  %57 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #6
  %58 = icmp ne i32 %57, 0
  %59 = select i1 %58, i1 true, i1 %55
  %60 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.3) #6
  %61 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str) #6
  %62 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.4) #6
  store i32 0, ptr %14, align 4, !tbaa !5
  store i32 1, ptr %21, align 4, !tbaa !5
  store ptr %0, ptr %20, align 16, !tbaa !9
  %63 = getelementptr inbounds i8, ptr %21, i64 4
  store i32 1, ptr %63, align 4, !tbaa !5
  %64 = getelementptr inbounds i8, ptr %20, i64 8
  store ptr %1, ptr %64, align 8, !tbaa !9
  %65 = load i32, ptr @c__2, align 4, !tbaa !5
  %66 = icmp sgt i32 %65, 0
  br i1 %66, label %.lr.ph1505, label %.lr.ph1510.preheader

.preheader1497:                                   ; preds = %._crit_edge
  %67 = icmp sgt i32 %72, 0
  br i1 %67, label %.lr.ph1510.preheader, label %._crit_edge1511

.lr.ph1510.preheader:                             ; preds = %15, %.preheader1497
  %.0.lcssa2029 = phi ptr [ %.1.lcssa, %.preheader1497 ], [ %26, %15 ]
  %.01271.lcssa2028 = phi i32 [ %72, %.preheader1497 ], [ 2, %15 ]
  %68 = zext nneg i32 %.01271.lcssa2028 to i64
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 1 dereferenceable(1) %.0.lcssa2029, i8 32, i64 %68, i1 false), !tbaa !11
  br label %._crit_edge1511

.lr.ph1505:                                       ; preds = %15, %._crit_edge
  %69 = phi i32 [ %87, %._crit_edge ], [ %65, %15 ]
  %indvars.iv = phi i64 [ %indvars.iv.next, %._crit_edge ], [ 0, %15 ]
  %.01503 = phi ptr [ %.1.lcssa, %._crit_edge ], [ %26, %15 ]
  %.012711502 = phi i32 [ %72, %._crit_edge ], [ 2, %15 ]
  %70 = getelementptr inbounds [2 x i32], ptr %21, i64 0, i64 %indvars.iv
  %71 = load i32, ptr %70, align 4, !tbaa !5
  %spec.select = tail call i32 @llvm.smin.i32(i32 %71, i32 %.012711502)
  %72 = sub nsw i32 %.012711502, %spec.select
  %73 = icmp sgt i32 %spec.select, 0
  br i1 %73, label %.lr.ph.preheader, label %._crit_edge

.lr.ph.preheader:                                 ; preds = %.lr.ph1505
  %.015032156 = ptrtoint ptr %.01503 to i64
  %74 = getelementptr inbounds [2 x ptr], ptr %20, i64 0, i64 %indvars.iv
  %75 = load ptr, ptr %74, align 8, !tbaa !9
  %76 = add nsw i32 %spec.select, -1
  %77 = zext nneg i32 %76 to i64
  %scevgep = getelementptr i8, ptr %.01503, i64 %77
  %78 = zext nneg i32 %spec.select to i64
  %min.iters.check = icmp ult i32 %spec.select, 32
  %79 = ptrtoint ptr %75 to i64
  %80 = sub i64 %.015032156, %79
  %diff.check = icmp ult i64 %80, 32
  %or.cond2395 = select i1 %min.iters.check, i1 true, i1 %diff.check
  br i1 %or.cond2395, label %.lr.ph.preheader2418, label %vector.ph

vector.ph:                                        ; preds = %.lr.ph.preheader
  %n.vec = and i64 %78, 2147483616
  %ind.end = getelementptr i8, ptr %.01503, i64 %n.vec
  %ind.end2157 = getelementptr i8, ptr %75, i64 %n.vec
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %next.gep = getelementptr i8, ptr %.01503, i64 %index
  %next.gep2160 = getelementptr i8, ptr %75, i64 %index
  %81 = getelementptr i8, ptr %next.gep2160, i64 16
  %wide.load = load <16 x i8>, ptr %next.gep2160, align 1, !tbaa !11
  %wide.load2162 = load <16 x i8>, ptr %81, align 1, !tbaa !11
  %82 = getelementptr i8, ptr %next.gep, i64 16
  store <16 x i8> %wide.load, ptr %next.gep, align 1, !tbaa !11
  store <16 x i8> %wide.load2162, ptr %82, align 1, !tbaa !11
  %index.next = add nuw i64 %index, 32
  %83 = icmp eq i64 %index.next, %n.vec
  br i1 %83, label %middle.block, label %vector.body, !llvm.loop !12

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %n.vec, %78
  br i1 %cmp.n, label %._crit_edge.loopexit, label %.lr.ph.preheader2418

.lr.ph.preheader2418:                             ; preds = %middle.block, %.lr.ph.preheader
  %.11500.ph = phi ptr [ %.01503, %.lr.ph.preheader ], [ %ind.end, %middle.block ]
  %.012701499.ph = phi ptr [ %75, %.lr.ph.preheader ], [ %ind.end2157, %middle.block ]
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.preheader2418, %.lr.ph
  %.11500 = phi ptr [ %86, %.lr.ph ], [ %.11500.ph, %.lr.ph.preheader2418 ]
  %.012701499 = phi ptr [ %84, %.lr.ph ], [ %.012701499.ph, %.lr.ph.preheader2418 ]
  %84 = getelementptr inbounds i8, ptr %.012701499, i64 1
  %85 = load i8, ptr %.012701499, align 1, !tbaa !11
  %86 = getelementptr inbounds i8, ptr %.11500, i64 1
  store i8 %85, ptr %.11500, align 1, !tbaa !11
  %exitcond.not = icmp eq ptr %.11500, %scevgep
  br i1 %exitcond.not, label %._crit_edge.loopexit, label %.lr.ph, !llvm.loop !16

._crit_edge.loopexit:                             ; preds = %.lr.ph, %middle.block
  %.lcssa2154 = phi ptr [ %ind.end, %middle.block ], [ %86, %.lr.ph ]
  %.pre = load i32, ptr @c__2, align 4, !tbaa !5
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %.lr.ph1505
  %87 = phi i32 [ %69, %.lr.ph1505 ], [ %.pre, %._crit_edge.loopexit ]
  %.1.lcssa = phi ptr [ %.01503, %.lr.ph1505 ], [ %.lcssa2154, %._crit_edge.loopexit ]
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %88 = sext i32 %87 to i64
  %89 = icmp slt i64 %indvars.iv.next, %88
  br i1 %89, label %.lr.ph1505, label %.preheader1497, !llvm.loop !17

._crit_edge1511:                                  ; preds = %.lr.ph1510.preheader, %.preheader1497
  %90 = call i32 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.5, ptr noundef nonnull %26, ptr noundef %3, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1, i32 noundef 6, i32 noundef 2) #6
  %91 = load i32, ptr %3, align 4, !tbaa !5
  %92 = shl i32 %90, 1
  %93 = or disjoint i32 %92, 1
  %94 = mul i32 %93, %91
  %95 = sitofp i32 %94 to double
  store double %95, ptr %12, align 8, !tbaa !18
  %96 = load i32, ptr %13, align 4, !tbaa !5
  %97 = icmp eq i32 %96, -1
  %or.cond = select i1 %56, i1 true, i1 %59
  br i1 %or.cond, label %98, label %.thread.sink.split

98:                                               ; preds = %._crit_edge1511
  %99 = icmp ne i32 %60, 0
  %100 = icmp ne i32 %61, 0
  %or.cond3 = select i1 %99, i1 true, i1 %100
  %101 = icmp ne i32 %62, 0
  %or.cond5 = select i1 %or.cond3, i1 true, i1 %101
  br i1 %or.cond5, label %102, label %.thread.sink.split

102:                                              ; preds = %98
  %103 = icmp slt i32 %91, 0
  br i1 %103, label %.thread.sink.split, label %104

104:                                              ; preds = %102
  %105 = load i32, ptr %5, align 4, !tbaa !5
  %spec.select1409 = call i32 @llvm.umax.i32(i32 %91, i32 1)
  %106 = icmp slt i32 %105, %spec.select1409
  br i1 %106, label %.thread.sink.split, label %107

107:                                              ; preds = %104
  %108 = load i32, ptr %7, align 4, !tbaa !5
  %109 = icmp slt i32 %108, 1
  %110 = icmp ult i32 %108, %91
  %or.cond1456 = select i1 %59, i1 %110, i1 false
  %or.cond1458 = select i1 %109, i1 true, i1 %or.cond1456
  br i1 %or.cond1458, label %.thread.sink.split, label %111

111:                                              ; preds = %107
  %112 = load i32, ptr %9, align 4, !tbaa !5
  %113 = icmp slt i32 %112, 1
  %114 = icmp ult i32 %112, %91
  %or.cond1457 = select i1 %56, i1 %114, i1 false
  %or.cond1459 = select i1 %113, i1 true, i1 %or.cond1457
  br i1 %or.cond1459, label %.thread.sink.split, label %115

115:                                              ; preds = %111
  store i32 1, ptr %22, align 4, !tbaa !5
  %116 = mul nuw nsw i32 %91, 3
  store i32 %116, ptr %23, align 4, !tbaa !5
  %117 = icmp eq i32 %91, 0
  %118 = select i1 %117, i32 1, i32 %116
  %119 = icmp sge i32 %96, %118
  %or.cond7 = or i1 %119, %97
  br i1 %or.cond7, label %120, label %.thread.sink.split

120:                                              ; preds = %115
  br i1 %101, label %121, label %156

121:                                              ; preds = %120
  store i32 0, ptr %11, align 4, !tbaa !5
  %122 = load i32, ptr %3, align 4, !tbaa !5
  store i32 %122, ptr %22, align 4, !tbaa !5
  %.not1512 = icmp slt i32 %122, 1
  br i1 %.not1512, label %.loopexit1496, label %.lr.ph1516.preheader

.lr.ph1516.preheader:                             ; preds = %121
  %123 = sext i32 %42 to i64
  %124 = add nuw i32 %122, 1
  %wide.trip.count = zext i32 %124 to i64
  %invariant.gep = getelementptr i8, ptr %44, i64 8
  br label %.lr.ph1516

.lr.ph1516:                                       ; preds = %.lr.ph1516.preheader, %155
  %indvars.iv1817 = phi i64 [ 1, %.lr.ph1516.preheader ], [ %indvars.iv.next1818, %155 ]
  %.013351513 = phi i32 [ 0, %.lr.ph1516.preheader ], [ %.11336, %155 ]
  %.not1363 = icmp eq i32 %.013351513, 0
  br i1 %.not1363, label %127, label %125

125:                                              ; preds = %.lr.ph1516
  %126 = getelementptr inbounds i32, ptr %41, i64 %indvars.iv1817
  store i32 0, ptr %126, align 4, !tbaa !5
  br label %155

127:                                              ; preds = %.lr.ph1516
  %128 = load i32, ptr %3, align 4, !tbaa !5
  %129 = sext i32 %128 to i64
  %130 = icmp slt i64 %indvars.iv1817, %129
  br i1 %130, label %131, label %149

131:                                              ; preds = %127
  %132 = mul nsw i64 %indvars.iv1817, %123
  %gep2052 = getelementptr double, ptr %invariant.gep, i64 %indvars.iv1817
  %133 = getelementptr double, ptr %gep2052, i64 %132
  %134 = load double, ptr %133, align 8, !tbaa !18
  %135 = fcmp oeq double %134, 0.000000e+00
  %136 = getelementptr inbounds i32, ptr %41, i64 %indvars.iv1817
  %137 = load i32, ptr %136, align 4, !tbaa !5
  %.not1367 = icmp eq i32 %137, 0
  br i1 %135, label %138, label %142

138:                                              ; preds = %131
  br i1 %.not1367, label %155, label %139

139:                                              ; preds = %138
  %140 = load i32, ptr %11, align 4, !tbaa !5
  %141 = add nsw i32 %140, 1
  store i32 %141, ptr %11, align 4, !tbaa !5
  br label %155

142:                                              ; preds = %131
  br i1 %.not1367, label %143, label %146

143:                                              ; preds = %142
  %144 = getelementptr i32, ptr %2, i64 %indvars.iv1817
  %145 = load i32, ptr %144, align 4, !tbaa !5
  %.not1366 = icmp eq i32 %145, 0
  br i1 %.not1366, label %155, label %146

146:                                              ; preds = %143, %142
  store i32 1, ptr %136, align 4, !tbaa !5
  %147 = load i32, ptr %11, align 4, !tbaa !5
  %148 = add nsw i32 %147, 2
  store i32 %148, ptr %11, align 4, !tbaa !5
  br label %155

149:                                              ; preds = %127
  %150 = getelementptr inbounds i32, ptr %41, i64 %129
  %151 = load i32, ptr %150, align 4, !tbaa !5
  %.not1364 = icmp eq i32 %151, 0
  br i1 %.not1364, label %155, label %152

152:                                              ; preds = %149
  %153 = load i32, ptr %11, align 4, !tbaa !5
  %154 = add nsw i32 %153, 1
  store i32 %154, ptr %11, align 4, !tbaa !5
  br label %155

155:                                              ; preds = %125, %149, %152, %139, %138, %146, %143
  %.11336 = phi i32 [ 0, %125 ], [ 0, %139 ], [ 0, %138 ], [ 1, %146 ], [ 1, %143 ], [ 0, %152 ], [ 0, %149 ]
  %indvars.iv.next1818 = add nuw nsw i64 %indvars.iv1817, 1
  %exitcond1820.not = icmp eq i64 %indvars.iv.next1818, %wide.trip.count
  br i1 %exitcond1820.not, label %.loopexit1496.loopexit, label %.lr.ph1516, !llvm.loop !20

156:                                              ; preds = %120
  store i32 %91, ptr %11, align 4, !tbaa !5
  br label %.loopexit1496

.loopexit1496.loopexit:                           ; preds = %155
  %.pre1956 = load i32, ptr %11, align 4, !tbaa !5
  br label %.loopexit1496

.loopexit1496:                                    ; preds = %.loopexit1496.loopexit, %121, %156
  %157 = phi i32 [ %.pre1956, %.loopexit1496.loopexit ], [ 0, %121 ], [ %91, %156 ]
  %158 = load i32, ptr %10, align 4, !tbaa !5
  %159 = icmp slt i32 %158, %157
  br i1 %159, label %.thread.sink.split, label %160

160:                                              ; preds = %.loopexit1496
  %.pr = load i32, ptr %14, align 4, !tbaa !5
  %.not1368 = icmp eq i32 %.pr, 0
  br i1 %.not1368, label %164, label %.thread

.thread.sink.split:                               ; preds = %.loopexit1496, %115, %111, %107, %104, %102, %98, %._crit_edge1511
  %.sink = phi i32 [ -1, %._crit_edge1511 ], [ -2, %98 ], [ -4, %102 ], [ -6, %104 ], [ -8, %107 ], [ -10, %111 ], [ -14, %115 ], [ -11, %.loopexit1496 ]
  store i32 %.sink, ptr %14, align 4, !tbaa !5
  br label %.thread

.thread:                                          ; preds = %.thread.sink.split, %160
  %161 = phi i32 [ %.pr, %160 ], [ %.sink, %.thread.sink.split ]
  %162 = sub nsw i32 0, %161
  store i32 %162, ptr %22, align 4, !tbaa !5
  %163 = call i32 @xerbla_(ptr noundef nonnull @.str.6, ptr noundef nonnull %22, i32 noundef 7) #6
  br label %.loopexit1491

164:                                              ; preds = %160
  br i1 %97, label %.loopexit1491, label %165

165:                                              ; preds = %164
  %166 = load i32, ptr %3, align 4, !tbaa !5
  %167 = icmp eq i32 %166, 0
  br i1 %167, label %.loopexit1491, label %168

168:                                              ; preds = %165
  %.not1369 = icmp eq i32 %61, 0
  br i1 %.not1369, label %179, label %169

169:                                              ; preds = %168
  %170 = load i32, ptr %13, align 4, !tbaa !5
  %171 = mul i32 %166, 17
  %.not1370 = icmp slt i32 %170, %171
  br i1 %.not1370, label %179, label %172

172:                                              ; preds = %169
  %173 = sub nsw i32 %170, %166
  %174 = shl i32 %166, 1
  %175 = sdiv i32 %173, %174
  %176 = call i32 @llvm.smin.i32(i32 %175, i32 128)
  %177 = shl i32 %176, 1
  %178 = or disjoint i32 %177, 1
  store i32 %178, ptr %22, align 4, !tbaa !5
  call void @dlaset_(ptr noundef nonnull @.str.7, ptr noundef nonnull %3, ptr noundef nonnull %22, ptr noundef nonnull @c_b17, ptr noundef nonnull @c_b17, ptr noundef nonnull %12, ptr noundef nonnull %3) #6
  br label %179

179:                                              ; preds = %168, %169, %172
  %.01287 = phi i32 [ %176, %172 ], [ 1, %169 ], [ 1, %168 ]
  %180 = call double @dlamch_(ptr noundef nonnull @.str.8) #6
  store double %180, ptr %28, align 8, !tbaa !18
  %181 = fdiv double 1.000000e+00, %180
  store double %181, ptr %29, align 8, !tbaa !18
  call void @dlabad_(ptr noundef nonnull %28, ptr noundef nonnull %29) #6
  %182 = call double @dlamch_(ptr noundef nonnull @.str.9) #6
  %183 = load double, ptr %28, align 8, !tbaa !18
  %184 = load i32, ptr %3, align 4, !tbaa !5
  %185 = sitofp i32 %184 to double
  %186 = fdiv double %185, %182
  %187 = fmul double %183, %186
  %188 = fsub double 1.000000e+00, %182
  %189 = fdiv double %188, %187
  store double 0.000000e+00, ptr %12, align 8, !tbaa !18
  %.not13711518 = icmp slt i32 %184, 2
  br i1 %.not13711518, label %216, label %.lr.ph1521.preheader

.lr.ph1521.preheader:                             ; preds = %179
  %190 = sext i32 %42 to i64
  %191 = add nuw i32 %184, 1
  %wide.trip.count1830 = zext i32 %191 to i64
  br label %.lr.ph1521

.lr.ph1521:                                       ; preds = %.lr.ph1521.preheader, %214
  %indvar = phi i64 [ 0, %.lr.ph1521.preheader ], [ %indvar.next, %214 ]
  %indvars.iv1827 = phi i64 [ 2, %.lr.ph1521.preheader ], [ %indvars.iv.next1828, %214 ]
  %192 = getelementptr inbounds double, ptr %51, i64 %indvars.iv1827
  store double 0.000000e+00, ptr %192, align 8, !tbaa !18
  %193 = mul nsw i64 %indvars.iv1827, %190
  %invariant.gep2053 = getelementptr double, ptr %44, i64 %193
  %194 = icmp eq i64 %indvar, 0
  br i1 %194, label %.unr-lcssa, label %.lr.ph1521.new

.lr.ph1521.new:                                   ; preds = %.lr.ph1521
  %195 = add i64 %indvar, 1
  %unroll_iter = and i64 %195, -2
  %invariant.gep2460 = getelementptr i8, ptr %invariant.gep2053, i64 8
  br label %196

196:                                              ; preds = %196, %.lr.ph1521.new
  %indvars.iv1821 = phi i64 [ 1, %.lr.ph1521.new ], [ %indvars.iv.next1822.1, %196 ]
  %197 = phi double [ 0.000000e+00, %.lr.ph1521.new ], [ %207, %196 ]
  %niter = phi i64 [ 0, %.lr.ph1521.new ], [ %niter.next.1, %196 ]
  %gep2054 = getelementptr double, ptr %invariant.gep2053, i64 %indvars.iv1821
  %198 = load double, ptr %gep2054, align 8, !tbaa !18
  %199 = fcmp oge double %198, 0.000000e+00
  %200 = fneg double %198
  %201 = select i1 %199, double %198, double %200
  %202 = fadd double %197, %201
  store double %202, ptr %192, align 8, !tbaa !18
  %gep2461 = getelementptr double, ptr %invariant.gep2460, i64 %indvars.iv1821
  %203 = load double, ptr %gep2461, align 8, !tbaa !18
  %204 = fcmp oge double %203, 0.000000e+00
  %205 = fneg double %203
  %206 = select i1 %204, double %203, double %205
  %207 = fadd double %202, %206
  store double %207, ptr %192, align 8, !tbaa !18
  %indvars.iv.next1822.1 = add nuw nsw i64 %indvars.iv1821, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %.unr-lcssa, label %196, !llvm.loop !21

.unr-lcssa:                                       ; preds = %196, %.lr.ph1521
  %.lcssa2417.ph = phi double [ poison, %.lr.ph1521 ], [ %203, %196 ]
  %indvars.iv1821.unr = phi i64 [ 1, %.lr.ph1521 ], [ %indvars.iv.next1822.1, %196 ]
  %.unr = phi double [ 0.000000e+00, %.lr.ph1521 ], [ %207, %196 ]
  %208 = and i64 %indvar, 1
  %lcmp.mod.not.not = icmp eq i64 %208, 0
  br i1 %lcmp.mod.not.not, label %.epilog-lcssa, label %214

.epilog-lcssa:                                    ; preds = %.unr-lcssa
  %gep2054.epil = getelementptr double, ptr %invariant.gep2053, i64 %indvars.iv1821.unr
  %209 = load double, ptr %gep2054.epil, align 8, !tbaa !18
  %210 = fcmp oge double %209, 0.000000e+00
  %211 = fneg double %209
  %212 = select i1 %210, double %209, double %211
  %213 = fadd double %.unr, %212
  store double %213, ptr %192, align 8, !tbaa !18
  br label %214

214:                                              ; preds = %.unr-lcssa, %.epilog-lcssa
  %.lcssa2417 = phi double [ %.lcssa2417.ph, %.unr-lcssa ], [ %209, %.epilog-lcssa ]
  %indvars.iv.next1828 = add nuw nsw i64 %indvars.iv1827, 1
  %exitcond1831.not = icmp eq i64 %indvars.iv.next1828, %wide.trip.count1830
  %indvar.next = add i64 %indvar, 1
  br i1 %exitcond1831.not, label %._crit_edge1522, label %.lr.ph1521, !llvm.loop !22

._crit_edge1522:                                  ; preds = %214
  %215 = add nsw i32 %184, -1
  store i32 %215, ptr %23, align 4, !tbaa !5
  store double %.lcssa2417, ptr %25, align 8, !tbaa !18
  br label %216

216:                                              ; preds = %._crit_edge1522, %179
  br i1 %56, label %217, label %.loopexit1495

217:                                              ; preds = %216
  %spec.select1410 = call i32 @llvm.smax.i32(i32 %.01287, i32 2)
  store i32 %spec.select1410, ptr %37, align 4, !tbaa !5
  %218 = load i32, ptr %11, align 4, !tbaa !5
  %invariant.gep1631 = getelementptr i8, ptr %2, i64 -8
  %invariant.gep1633 = getelementptr i8, ptr %50, i64 8
  store i32 %184, ptr %36, align 4, !tbaa !5
  %219 = icmp sgt i32 %184, 0
  br i1 %219, label %.lr.ph1681, label %.loopexit1495

.lr.ph1681:                                       ; preds = %217
  %.not1391 = icmp eq i32 %62, 0
  %220 = add i32 %42, 1
  %invariant.gep1530 = getelementptr i8, ptr %44, i64 8
  %221 = getelementptr inbounds i8, ptr %32, i64 16
  %222 = getelementptr inbounds i8, ptr %32, i64 8
  %223 = getelementptr inbounds i8, ptr %32, i64 24
  %224 = icmp eq i32 %.01287, 1
  %225 = icmp sgt i32 %.01287, 1
  %226 = add nsw i32 %.01287, 1
  %227 = sext i32 %42 to i64
  %228 = shl nsw i64 %49, 3
  %scevgep1881 = getelementptr i8, ptr %8, i64 %228
  %229 = sext i32 %.01287 to i64
  %230 = add i64 %19, -8
  %scevgep2211 = getelementptr i8, ptr %12, i64 -8
  %scevgep2214 = getelementptr i8, ptr %12, i64 -8
  %231 = shl nsw i64 %43, 3
  %232 = add nsw i64 %231, 8
  %scevgep2217 = getelementptr i8, ptr %4, i64 %232
  %scevgep2219 = getelementptr i8, ptr %4, i64 %231
  %scevgep2222 = getelementptr i8, ptr %4, i64 %232
  %scevgep2224 = getelementptr i8, ptr %4, i64 %231
  br label %233

233:                                              ; preds = %.lr.ph1681, %993
  %.012781679 = phi i32 [ %218, %.lr.ph1681 ], [ %.11279, %993 ]
  %.012811678 = phi i32 [ 0, %.lr.ph1681 ], [ %.21283, %993 ]
  %storemerge13721677 = phi i32 [ %184, %.lr.ph1681 ], [ %995, %993 ]
  %234 = icmp eq i32 %.012811678, -1
  br i1 %234, label %993, label %235

235:                                              ; preds = %233
  %236 = icmp eq i32 %storemerge13721677, 1
  br i1 %236, label %.thread1418, label %237

237:                                              ; preds = %235
  %238 = add nsw i32 %storemerge13721677, -1
  %239 = mul nsw i32 %238, %42
  %240 = add nsw i32 %239, %storemerge13721677
  %241 = sext i32 %240 to i64
  %242 = getelementptr inbounds double, ptr %44, i64 %241
  %243 = load double, ptr %242, align 8, !tbaa !18
  %244 = fcmp oeq double %243, 0.000000e+00
  br i1 %.not1391, label %260, label %245

.thread1418:                                      ; preds = %235
  br i1 %.not1391, label %.thread1423, label %.thread1420

245:                                              ; preds = %237
  br i1 %244, label %.thread1420, label %249

.thread1420:                                      ; preds = %.thread1418, %245
  %246 = zext nneg i32 %storemerge13721677 to i64
  %247 = getelementptr inbounds i32, ptr %41, i64 %246
  %248 = load i32, ptr %247, align 4, !tbaa !5
  %.not1393 = icmp eq i32 %248, 0
  br i1 %.not1393, label %993, label %.thread1423

249:                                              ; preds = %245
  %250 = zext nneg i32 %storemerge13721677 to i64
  %gep1632 = getelementptr i32, ptr %invariant.gep1631, i64 %250
  %251 = load i32, ptr %gep1632, align 4, !tbaa !5
  %.not1392 = icmp eq i32 %251, 0
  br i1 %.not1392, label %993, label %.thread1424

.thread1424:                                      ; preds = %249
  %252 = mul i32 %storemerge13721677, %220
  %253 = sext i32 %252 to i64
  %254 = getelementptr inbounds double, ptr %44, i64 %253
  %255 = load double, ptr %254, align 8, !tbaa !18
  store double %255, ptr %39, align 8, !tbaa !18
  br label %265

.thread1423:                                      ; preds = %.thread1418, %.thread1420
  %256 = mul i32 %storemerge13721677, %220
  %257 = sext i32 %256 to i64
  %258 = getelementptr inbounds double, ptr %44, i64 %257
  %259 = load double, ptr %258, align 8, !tbaa !18
  store double %259, ptr %39, align 8, !tbaa !18
  store double 0.000000e+00, ptr %38, align 8, !tbaa !18
  br label %282

260:                                              ; preds = %237
  %261 = mul i32 %storemerge13721677, %220
  %262 = sext i32 %261 to i64
  %263 = getelementptr inbounds double, ptr %44, i64 %262
  %264 = load double, ptr %263, align 8, !tbaa !18
  store double %264, ptr %39, align 8, !tbaa !18
  store double 0.000000e+00, ptr %38, align 8, !tbaa !18
  br i1 %244, label %282, label %265

265:                                              ; preds = %.thread1424, %260
  %266 = fcmp oge double %243, 0.000000e+00
  %267 = fneg double %243
  %268 = select i1 %266, double %243, double %267
  %269 = call double @sqrt(double noundef %268) #6
  %270 = load i32, ptr %36, align 4, !tbaa !5
  %271 = add nsw i32 %270, -1
  %272 = mul nsw i32 %270, %42
  %273 = add nsw i32 %271, %272
  %274 = sext i32 %273 to i64
  %275 = getelementptr inbounds double, ptr %44, i64 %274
  %276 = load double, ptr %275, align 8, !tbaa !18
  %277 = fcmp oge double %276, 0.000000e+00
  %278 = fneg double %276
  %279 = select i1 %277, double %276, double %278
  %280 = call double @sqrt(double noundef %279) #6
  %281 = fmul double %269, %280
  store double %281, ptr %38, align 8, !tbaa !18
  %.pre1957 = load double, ptr %39, align 8
  br label %282

282:                                              ; preds = %.thread1423, %265, %260
  %283 = phi double [ 0.000000e+00, %.thread1423 ], [ %281, %265 ], [ 0.000000e+00, %260 ]
  %284 = phi double [ %259, %.thread1423 ], [ %.pre1957, %265 ], [ %264, %260 ]
  %285 = phi i1 [ true, %.thread1423 ], [ false, %265 ], [ true, %260 ]
  %286 = fcmp oge double %284, 0.000000e+00
  %287 = fneg double %284
  %288 = select i1 %286, double %284, double %287
  %289 = fcmp oge double %283, 0.000000e+00
  %290 = fneg double %283
  %291 = select i1 %289, double %283, double %290
  %292 = fadd double %288, %291
  %293 = fmul double %182, %292
  store double %293, ptr %25, align 8, !tbaa !18
  %294 = fcmp oge double %293, %187
  %295 = select i1 %294, double %293, double %187
  store double %295, ptr %30, align 8, !tbaa !18
  %296 = load i32, ptr %36, align 4, !tbaa !5
  br i1 %285, label %297, label %514

297:                                              ; preds = %282
  %298 = load i32, ptr %37, align 4, !tbaa !5
  %299 = load i32, ptr %3, align 4, !tbaa !5
  %300 = mul nsw i32 %299, %298
  %301 = add nsw i32 %300, %296
  %302 = sext i32 %301 to i64
  %303 = getelementptr inbounds double, ptr %51, i64 %302
  store double 1.000000e+00, ptr %303, align 8, !tbaa !18
  %304 = add nsw i32 %296, -1
  store i32 %304, ptr %22, align 4, !tbaa !5
  %.not1401.not1581 = icmp sgt i32 %296, 1
  br i1 %.not1401.not1581, label %.lr.ph1584, label %._crit_edge1604

.lr.ph1584:                                       ; preds = %297
  %305 = mul nsw i32 %296, %42
  %306 = sext i32 %305 to i64
  %307 = sext i32 %300 to i64
  %wide.trip.count1871 = zext nneg i32 %296 to i64
  %invariant.gep2079 = getelementptr double, ptr %44, i64 %306
  %invariant.gep2081 = getelementptr double, ptr %51, i64 %307
  %308 = add nsw i64 %wide.trip.count1871, -1
  %min.iters.check2167 = icmp ult i32 %296, 5
  br i1 %min.iters.check2167, label %scalar.ph2166.preheader, label %vector.memcheck2163

scalar.ph2166.preheader:                          ; preds = %middle.block2165, %vector.memcheck2163, %.lr.ph1584
  %indvars.iv1868.ph = phi i64 [ 1, %vector.memcheck2163 ], [ 1, %.lr.ph1584 ], [ %ind.end2171, %middle.block2165 ]
  %309 = sub nsw i64 %wide.trip.count1871, %indvars.iv1868.ph
  %xtraiter2429 = and i64 %309, 3
  %lcmp.mod2430.not = icmp eq i64 %xtraiter2429, 0
  br i1 %lcmp.mod2430.not, label %scalar.ph2166.prol.loopexit, label %scalar.ph2166.prol

scalar.ph2166.prol:                               ; preds = %scalar.ph2166.preheader, %scalar.ph2166.prol
  %indvars.iv1868.prol = phi i64 [ %indvars.iv.next1869.prol, %scalar.ph2166.prol ], [ %indvars.iv1868.ph, %scalar.ph2166.preheader ]
  %prol.iter2431 = phi i64 [ %prol.iter2431.next, %scalar.ph2166.prol ], [ 0, %scalar.ph2166.preheader ]
  %gep2080.prol = getelementptr double, ptr %invariant.gep2079, i64 %indvars.iv1868.prol
  %310 = load double, ptr %gep2080.prol, align 8, !tbaa !18
  %311 = fneg double %310
  %gep2082.prol = getelementptr double, ptr %invariant.gep2081, i64 %indvars.iv1868.prol
  store double %311, ptr %gep2082.prol, align 8, !tbaa !18
  %indvars.iv.next1869.prol = add nuw nsw i64 %indvars.iv1868.prol, 1
  %prol.iter2431.next = add i64 %prol.iter2431, 1
  %prol.iter2431.cmp.not = icmp eq i64 %prol.iter2431.next, %xtraiter2429
  br i1 %prol.iter2431.cmp.not, label %scalar.ph2166.prol.loopexit, label %scalar.ph2166.prol, !llvm.loop !23

scalar.ph2166.prol.loopexit:                      ; preds = %scalar.ph2166.prol, %scalar.ph2166.preheader
  %indvars.iv1868.unr = phi i64 [ %indvars.iv1868.ph, %scalar.ph2166.preheader ], [ %indvars.iv.next1869.prol, %scalar.ph2166.prol ]
  %312 = sub nsw i64 %indvars.iv1868.ph, %wide.trip.count1871
  %313 = icmp ugt i64 %312, -4
  br i1 %313, label %.preheader, label %scalar.ph2166

vector.memcheck2163:                              ; preds = %.lr.ph1584
  %314 = shl nsw i64 %307, 3
  %315 = add i64 %230, %314
  %316 = add nsw i64 %43, %306
  %317 = shl nsw i64 %316, 3
  %318 = add i64 %317, %18
  %319 = sub i64 %315, %318
  %diff.check2164 = icmp ult i64 %319, 32
  br i1 %diff.check2164, label %scalar.ph2166.preheader, label %vector.ph2168

vector.ph2168:                                    ; preds = %vector.memcheck2163
  %n.vec2170 = and i64 %308, -4
  %ind.end2171 = or disjoint i64 %n.vec2170, 1
  br label %vector.body2173

vector.body2173:                                  ; preds = %vector.body2173, %vector.ph2168
  %index2174 = phi i64 [ 0, %vector.ph2168 ], [ %index.next2177, %vector.body2173 ]
  %offset.idx = or disjoint i64 %index2174, 1
  %320 = getelementptr double, ptr %invariant.gep2079, i64 %offset.idx
  %321 = getelementptr i8, ptr %320, i64 16
  %wide.load2175 = load <2 x double>, ptr %320, align 8, !tbaa !18
  %wide.load2176 = load <2 x double>, ptr %321, align 8, !tbaa !18
  %322 = fneg <2 x double> %wide.load2175
  %323 = fneg <2 x double> %wide.load2176
  %324 = getelementptr double, ptr %invariant.gep2081, i64 %offset.idx
  %325 = getelementptr i8, ptr %324, i64 16
  store <2 x double> %322, ptr %324, align 8, !tbaa !18
  store <2 x double> %323, ptr %325, align 8, !tbaa !18
  %index.next2177 = add nuw i64 %index2174, 4
  %326 = icmp eq i64 %index.next2177, %n.vec2170
  br i1 %326, label %middle.block2165, label %vector.body2173, !llvm.loop !25

middle.block2165:                                 ; preds = %vector.body2173
  %cmp.n2178 = icmp eq i64 %308, %n.vec2170
  br i1 %cmp.n2178, label %.preheader, label %scalar.ph2166.preheader

.preheader:                                       ; preds = %scalar.ph2166.prol.loopexit, %scalar.ph2166, %middle.block2165
  br i1 %.not1401.not1581, label %.lr.ph1603.preheader, label %._crit_edge1604

.lr.ph1603.preheader:                             ; preds = %.preheader
  %327 = zext nneg i32 %296 to i64
  %328 = add nsw i64 %327, -1
  br label %.lr.ph1603

scalar.ph2166:                                    ; preds = %scalar.ph2166.prol.loopexit, %scalar.ph2166
  %indvars.iv1868 = phi i64 [ %indvars.iv.next1869.3, %scalar.ph2166 ], [ %indvars.iv1868.unr, %scalar.ph2166.prol.loopexit ]
  %gep2080 = getelementptr double, ptr %invariant.gep2079, i64 %indvars.iv1868
  %329 = load double, ptr %gep2080, align 8, !tbaa !18
  %330 = fneg double %329
  %gep2082 = getelementptr double, ptr %invariant.gep2081, i64 %indvars.iv1868
  store double %330, ptr %gep2082, align 8, !tbaa !18
  %indvars.iv.next1869 = add nuw nsw i64 %indvars.iv1868, 1
  %gep2080.1 = getelementptr double, ptr %invariant.gep2079, i64 %indvars.iv.next1869
  %331 = load double, ptr %gep2080.1, align 8, !tbaa !18
  %332 = fneg double %331
  %gep2082.1 = getelementptr double, ptr %invariant.gep2081, i64 %indvars.iv.next1869
  store double %332, ptr %gep2082.1, align 8, !tbaa !18
  %indvars.iv.next1869.1 = add nuw nsw i64 %indvars.iv1868, 2
  %gep2080.2 = getelementptr double, ptr %invariant.gep2079, i64 %indvars.iv.next1869.1
  %333 = load double, ptr %gep2080.2, align 8, !tbaa !18
  %334 = fneg double %333
  %gep2082.2 = getelementptr double, ptr %invariant.gep2081, i64 %indvars.iv.next1869.1
  store double %334, ptr %gep2082.2, align 8, !tbaa !18
  %indvars.iv.next1869.2 = add nuw nsw i64 %indvars.iv1868, 3
  %gep2080.3 = getelementptr double, ptr %invariant.gep2079, i64 %indvars.iv.next1869.2
  %335 = load double, ptr %gep2080.3, align 8, !tbaa !18
  %336 = fneg double %335
  %gep2082.3 = getelementptr double, ptr %invariant.gep2081, i64 %indvars.iv.next1869.2
  store double %336, ptr %gep2082.3, align 8, !tbaa !18
  %indvars.iv.next1869.3 = add nuw nsw i64 %indvars.iv1868, 4
  %exitcond1872.not.3 = icmp eq i64 %indvars.iv.next1869.3, %wide.trip.count1871
  br i1 %exitcond1872.not.3, label %.preheader, label %scalar.ph2166, !llvm.loop !26

.lr.ph1603:                                       ; preds = %.lr.ph1603.preheader, %.lr.ph1603._crit_edge
  %indvars.iv1873 = phi i64 [ %328, %.lr.ph1603.preheader ], [ %.pre2016, %.lr.ph1603._crit_edge ]
  %.013091601 = phi i32 [ %304, %.lr.ph1603.preheader ], [ %.21311, %.lr.ph1603._crit_edge ]
  %indvars1875 = trunc i64 %indvars.iv1873 to i32
  %337 = sext i32 %.013091601 to i64
  %338 = icmp sgt i64 %indvars.iv1873, %337
  %.pre2016 = add nsw i64 %indvars.iv1873, -1
  br i1 %338, label %.lr.ph1603._crit_edge, label %339

339:                                              ; preds = %.lr.ph1603
  %.not1407 = icmp eq i64 %indvars.iv1873, 1
  br i1 %.not1407, label %..thread1425_crit_edge, label %340

..thread1425_crit_edge:                           ; preds = %339
  %.pre1964 = load i32, ptr %37, align 4, !tbaa !5
  %.pre1966 = load i32, ptr %3, align 4, !tbaa !5
  br label %.thread1425

340:                                              ; preds = %339
  %341 = add nsw i32 %indvars1875, -1
  %342 = mul nsw i32 %341, %42
  %343 = sext i32 %342 to i64
  %344 = getelementptr double, ptr %44, i64 %indvars.iv1873
  %345 = getelementptr double, ptr %344, i64 %343
  %346 = load double, ptr %345, align 8, !tbaa !18
  %347 = fcmp une double %346, 0.000000e+00
  %348 = trunc nuw nsw i64 %.pre2016 to i32
  %.pre1965 = load i32, ptr %37, align 4, !tbaa !5
  %.pre1967 = load i32, ptr %3, align 4, !tbaa !5
  br i1 %347, label %.thread1429, label %.thread1425

.thread1429:                                      ; preds = %340
  %349 = mul nsw i64 %.pre2016, %227
  %350 = getelementptr double, ptr %44, i64 %.pre2016
  %351 = getelementptr double, ptr %350, i64 %343
  %352 = mul nsw i32 %.pre1967, %.pre1965
  %353 = sext i32 %352 to i64
  %354 = getelementptr double, ptr %51, i64 %.pre2016
  %355 = getelementptr double, ptr %354, i64 %353
  call void @dlaln2_(ptr noundef nonnull @c_false, ptr noundef nonnull @c__2, ptr noundef nonnull @c__1, ptr noundef nonnull %30, ptr noundef nonnull @c_b29, ptr noundef %351, ptr noundef nonnull %5, ptr noundef nonnull @c_b29, ptr noundef nonnull @c_b29, ptr noundef nonnull %355, ptr noundef nonnull %3, ptr noundef nonnull %39, ptr noundef nonnull @c_b17, ptr noundef nonnull %32, ptr noundef nonnull @c__2, ptr noundef nonnull %31, ptr noundef nonnull %34, ptr noundef nonnull %27) #6
  %356 = load double, ptr %34, align 8, !tbaa !18
  %357 = fcmp ogt double %356, 1.000000e+00
  br i1 %357, label %398, label %thread-pre-split1435

.thread1425:                                      ; preds = %..thread1425_crit_edge, %340
  %358 = phi i32 [ %.pre1967, %340 ], [ %.pre1966, %..thread1425_crit_edge ]
  %359 = phi i32 [ %.pre1965, %340 ], [ %.pre1964, %..thread1425_crit_edge ]
  %.113101428 = phi i32 [ %348, %340 ], [ 0, %..thread1425_crit_edge ]
  %360 = mul nsw i32 %42, %indvars1875
  %361 = sext i32 %360 to i64
  %362 = getelementptr double, ptr %44, i64 %indvars.iv1873
  %363 = getelementptr double, ptr %362, i64 %361
  %364 = mul nsw i32 %358, %359
  %365 = sext i32 %364 to i64
  %366 = getelementptr double, ptr %51, i64 %indvars.iv1873
  %367 = getelementptr double, ptr %366, i64 %365
  call void @dlaln2_(ptr noundef nonnull @c_false, ptr noundef nonnull @c__1, ptr noundef nonnull @c__1, ptr noundef nonnull %30, ptr noundef nonnull @c_b29, ptr noundef %363, ptr noundef nonnull %5, ptr noundef nonnull @c_b29, ptr noundef nonnull @c_b29, ptr noundef nonnull %367, ptr noundef nonnull %3, ptr noundef nonnull %39, ptr noundef nonnull @c_b17, ptr noundef nonnull %32, ptr noundef nonnull @c__2, ptr noundef nonnull %31, ptr noundef nonnull %34, ptr noundef nonnull %27) #6
  %368 = load double, ptr %34, align 8, !tbaa !18
  %369 = fcmp ogt double %368, 1.000000e+00
  br i1 %369, label %370, label %thread-pre-split1433

370:                                              ; preds = %.thread1425
  %371 = getelementptr inbounds double, ptr %51, i64 %indvars.iv1873
  %372 = load double, ptr %371, align 8, !tbaa !18
  %373 = fdiv double %189, %368
  %374 = fcmp ogt double %372, %373
  br i1 %374, label %375, label %thread-pre-split1433

375:                                              ; preds = %370
  %376 = load double, ptr %32, align 16, !tbaa !18
  %377 = fdiv double %376, %368
  store double %377, ptr %32, align 16, !tbaa !18
  %378 = load double, ptr %31, align 8, !tbaa !18
  %379 = fdiv double %378, %368
  store double %379, ptr %31, align 8, !tbaa !18
  br label %380

thread-pre-split1433:                             ; preds = %.thread1425, %370
  %.pr1434 = load double, ptr %31, align 8, !tbaa !18
  br label %380

380:                                              ; preds = %thread-pre-split1433, %375
  %381 = phi double [ %.pr1434, %thread-pre-split1433 ], [ %379, %375 ]
  %382 = fcmp une double %381, 1.000000e+00
  br i1 %382, label %383, label %388

383:                                              ; preds = %380
  %384 = load i32, ptr %37, align 4, !tbaa !5
  %385 = load i32, ptr %3, align 4, !tbaa !5
  %386 = mul nsw i32 %385, %384
  %387 = sext i32 %386 to i64
  %gep1596 = getelementptr double, ptr %12, i64 %387
  call void @dscal_(ptr noundef nonnull %36, ptr noundef nonnull %31, ptr noundef %gep1596, ptr noundef nonnull @c__1) #6
  br label %388

388:                                              ; preds = %383, %380
  %389 = load double, ptr %32, align 16, !tbaa !18
  %390 = load i32, ptr %37, align 4, !tbaa !5
  %391 = load i32, ptr %3, align 4, !tbaa !5
  %392 = mul nsw i32 %391, %390
  %393 = sext i32 %392 to i64
  %394 = getelementptr double, ptr %51, i64 %indvars.iv1873
  %395 = getelementptr double, ptr %394, i64 %393
  store double %389, ptr %395, align 8, !tbaa !18
  %396 = trunc nuw nsw i64 %.pre2016 to i32
  store i32 %396, ptr %22, align 4, !tbaa !5
  %397 = fneg double %389
  store double %397, ptr %25, align 8, !tbaa !18
  br label %.lr.ph1603._crit_edge.sink.split

398:                                              ; preds = %.thread1429
  %399 = getelementptr inbounds double, ptr %51, i64 %.pre2016
  %400 = load double, ptr %399, align 8, !tbaa !18
  store double %400, ptr %25, align 8, !tbaa !18
  %401 = getelementptr inbounds double, ptr %51, i64 %indvars.iv1873
  %402 = load double, ptr %401, align 8, !tbaa !18
  %403 = fcmp oge double %400, %402
  %404 = select i1 %403, double %400, double %402
  %405 = fdiv double %189, %356
  %406 = fcmp ogt double %404, %405
  br i1 %406, label %407, label %thread-pre-split1435

407:                                              ; preds = %398
  %408 = load <2 x double>, ptr %32, align 16, !tbaa !18
  %409 = insertelement <2 x double> poison, double %356, i64 0
  %410 = shufflevector <2 x double> %409, <2 x double> poison, <2 x i32> zeroinitializer
  %411 = fdiv <2 x double> %408, %410
  store <2 x double> %411, ptr %32, align 16, !tbaa !18
  %412 = load double, ptr %31, align 8, !tbaa !18
  %413 = fdiv double %412, %356
  store double %413, ptr %31, align 8, !tbaa !18
  br label %414

thread-pre-split1435:                             ; preds = %.thread1429, %398
  %.pr1436 = load double, ptr %31, align 8, !tbaa !18
  br label %414

414:                                              ; preds = %thread-pre-split1435, %407
  %415 = phi double [ %.pr1436, %thread-pre-split1435 ], [ %413, %407 ]
  %416 = fcmp une double %415, 1.000000e+00
  br i1 %416, label %417, label %422

417:                                              ; preds = %414
  %418 = load i32, ptr %37, align 4, !tbaa !5
  %419 = load i32, ptr %3, align 4, !tbaa !5
  %420 = mul nsw i32 %419, %418
  %421 = sext i32 %420 to i64
  %gep1586 = getelementptr double, ptr %12, i64 %421
  call void @dscal_(ptr noundef nonnull %36, ptr noundef nonnull %31, ptr noundef %gep1586, ptr noundef nonnull @c__1) #6
  br label %422

422:                                              ; preds = %417, %414
  %423 = load i32, ptr %37, align 4, !tbaa !5
  %424 = load i32, ptr %3, align 4, !tbaa !5
  %425 = mul nsw i32 %424, %423
  %426 = sext i32 %425 to i64
  %427 = getelementptr double, ptr %51, i64 %.pre2016
  %428 = getelementptr double, ptr %427, i64 %426
  %429 = load <2 x double>, ptr %32, align 16, !tbaa !18
  store <2 x double> %429, ptr %428, align 8, !tbaa !18
  %430 = trunc i64 %indvars.iv1873 to i32
  %431 = add i32 %430, -2
  store i32 %431, ptr %22, align 4, !tbaa !5
  %432 = extractelement <2 x double> %429, i64 0
  %433 = fneg double %432
  store double %433, ptr %25, align 8, !tbaa !18
  %gep1588 = getelementptr double, ptr %invariant.gep1530, i64 %349
  %gep1590 = getelementptr double, ptr %12, i64 %426
  call void @daxpy_(ptr noundef nonnull %22, ptr noundef nonnull %25, ptr noundef %gep1588, ptr noundef nonnull @c__1, ptr noundef %gep1590, ptr noundef nonnull @c__1) #6
  store i32 %431, ptr %22, align 4, !tbaa !5
  %434 = load double, ptr %222, align 8, !tbaa !18
  %435 = fneg double %434
  store double %435, ptr %25, align 8, !tbaa !18
  %436 = load i32, ptr %37, align 4, !tbaa !5
  %437 = load i32, ptr %3, align 4, !tbaa !5
  %438 = mul nsw i32 %437, %436
  %439 = sext i32 %438 to i64
  br label %.lr.ph1603._crit_edge.sink.split

.lr.ph1603._crit_edge.sink.split:                 ; preds = %388, %422
  %.sink2119 = phi i64 [ %439, %422 ], [ %393, %388 ]
  %.21311.ph = phi i32 [ %431, %422 ], [ %.113101428, %388 ]
  %.pn = mul nsw i64 %indvars.iv1873, %227
  %gep1592.sink = getelementptr double, ptr %invariant.gep1530, i64 %.pn
  %gep1594 = getelementptr double, ptr %12, i64 %.sink2119
  call void @daxpy_(ptr noundef nonnull %22, ptr noundef nonnull %25, ptr noundef %gep1592.sink, ptr noundef nonnull @c__1, ptr noundef %gep1594, ptr noundef nonnull @c__1) #6
  br label %.lr.ph1603._crit_edge

.lr.ph1603._crit_edge:                            ; preds = %.lr.ph1603._crit_edge.sink.split, %.lr.ph1603
  %.21311 = phi i32 [ %.013091601, %.lr.ph1603 ], [ %.21311.ph, %.lr.ph1603._crit_edge.sink.split ]
  %440 = icmp sgt i64 %indvars.iv1873, 1
  br i1 %440, label %.lr.ph1603, label %._crit_edge1604, !llvm.loop !27

._crit_edge1604:                                  ; preds = %.lr.ph1603._crit_edge, %297, %.preheader
  br i1 %.not1369, label %441, label %468

441:                                              ; preds = %._crit_edge1604
  %442 = load i32, ptr %37, align 4, !tbaa !5
  %443 = load i32, ptr %3, align 4, !tbaa !5
  %444 = mul nsw i32 %443, %442
  %445 = sext i32 %444 to i64
  %gep1666 = getelementptr double, ptr %12, i64 %445
  %446 = mul nsw i32 %.012781679, %48
  %447 = sext i32 %446 to i64
  %gep1668 = getelementptr double, ptr %invariant.gep1633, i64 %447
  call void @dcopy_(ptr noundef nonnull %36, ptr noundef %gep1666, ptr noundef nonnull @c__1, ptr noundef %gep1668, ptr noundef nonnull @c__1) #6
  %448 = call i32 @idamax_(ptr noundef nonnull %36, ptr noundef %gep1668, ptr noundef nonnull @c__1) #6
  %449 = add nsw i32 %448, %446
  %450 = sext i32 %449 to i64
  %451 = getelementptr inbounds double, ptr %50, i64 %450
  %452 = load double, ptr %451, align 8, !tbaa !18
  store double %452, ptr %25, align 8, !tbaa !18
  %453 = fcmp oge double %452, 0.000000e+00
  %454 = fneg double %452
  %455 = select i1 %453, double %452, double %454
  %456 = fdiv double 1.000000e+00, %455
  store double %456, ptr %33, align 8, !tbaa !18
  call void @dscal_(ptr noundef nonnull %36, ptr noundef nonnull %33, ptr noundef %gep1668, ptr noundef nonnull @c__1) #6
  %457 = load i32, ptr %3, align 4, !tbaa !5
  store i32 %457, ptr %22, align 4, !tbaa !5
  %458 = load i32, ptr %36, align 4, !tbaa !5
  %.not1402.not1610 = icmp slt i32 %458, %457
  br i1 %.not1402.not1610, label %.lr.ph1613.preheader, label %.loopexit1492

.lr.ph1613.preheader:                             ; preds = %441
  %459 = add nsw i32 %458, 1
  %460 = add i32 %459, %446
  %461 = sext i32 %460 to i64
  %462 = shl nsw i64 %461, 3
  %scevgep1882 = getelementptr i8, ptr %scevgep1881, i64 %462
  %463 = xor i32 %458, -1
  %464 = add i32 %457, %463
  %465 = zext i32 %464 to i64
  %466 = shl nuw nsw i64 %465, 3
  %467 = add nuw nsw i64 %466, 8
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %scevgep1882, i8 0, i64 %467, i1 false), !tbaa !18
  br label %.loopexit1492

468:                                              ; preds = %._crit_edge1604
  br i1 %224, label %469, label %498

469:                                              ; preds = %468
  %470 = load i32, ptr %36, align 4, !tbaa !5
  %471 = icmp sgt i32 %470, 1
  br i1 %471, label %472, label %.thread1449

472:                                              ; preds = %469
  %473 = add nsw i32 %470, -1
  store i32 %473, ptr %22, align 4, !tbaa !5
  %474 = load i32, ptr %37, align 4, !tbaa !5
  %475 = load i32, ptr %3, align 4, !tbaa !5
  %476 = mul nsw i32 %475, %474
  %477 = sext i32 %476 to i64
  %gep1658 = getelementptr double, ptr %12, i64 %477
  %478 = add nsw i32 %476, %470
  %479 = sext i32 %478 to i64
  %480 = getelementptr inbounds double, ptr %51, i64 %479
  %481 = mul nsw i32 %470, %48
  %482 = sext i32 %481 to i64
  %gep1660 = getelementptr double, ptr %invariant.gep1633, i64 %482
  call void @dgemv_(ptr noundef nonnull @.str.10, ptr noundef nonnull %3, ptr noundef nonnull %22, ptr noundef nonnull @c_b29, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %gep1658, ptr noundef nonnull @c__1, ptr noundef nonnull %480, ptr noundef %gep1660, ptr noundef nonnull @c__1) #6
  %.pre1969 = load i32, ptr %36, align 4, !tbaa !5
  br label %.thread1449

.thread1449:                                      ; preds = %469, %472
  %483 = phi i32 [ %470, %469 ], [ %.pre1969, %472 ]
  %484 = mul nsw i32 %483, %48
  %485 = sext i32 %484 to i64
  %gep1662 = getelementptr double, ptr %invariant.gep1633, i64 %485
  %486 = call i32 @idamax_(ptr noundef nonnull %3, ptr noundef %gep1662, ptr noundef nonnull @c__1) #6
  %487 = load i32, ptr %36, align 4, !tbaa !5
  %488 = mul nsw i32 %487, %48
  %489 = add nsw i32 %488, %486
  %490 = sext i32 %489 to i64
  %491 = getelementptr inbounds double, ptr %50, i64 %490
  %492 = load double, ptr %491, align 8, !tbaa !18
  store double %492, ptr %25, align 8, !tbaa !18
  %493 = fcmp oge double %492, 0.000000e+00
  %494 = fneg double %492
  %495 = select i1 %493, double %492, double %494
  %496 = fdiv double 1.000000e+00, %495
  store double %496, ptr %33, align 8, !tbaa !18
  %497 = sext i32 %488 to i64
  %gep1664 = getelementptr double, ptr %invariant.gep1633, i64 %497
  call void @dscal_(ptr noundef nonnull %3, ptr noundef nonnull %33, ptr noundef %gep1664, ptr noundef nonnull @c__1) #6
  br label %992

498:                                              ; preds = %468
  %499 = load i32, ptr %3, align 4, !tbaa !5
  store i32 %499, ptr %22, align 4, !tbaa !5
  %500 = load i32, ptr %36, align 4, !tbaa !5
  %.not1403.not1605 = icmp slt i32 %500, %499
  %.pre1968 = load i32, ptr %37, align 4, !tbaa !5
  br i1 %.not1403.not1605, label %.lr.ph1608, label %._crit_edge1609

.lr.ph1608:                                       ; preds = %498
  %501 = mul nsw i32 %.pre1968, %499
  %502 = add nsw i32 %500, 1
  %503 = add i32 %502, %501
  %504 = sext i32 %503 to i64
  %505 = shl nsw i64 %504, 3
  %scevgep1877 = getelementptr i8, ptr %51, i64 %505
  %506 = xor i32 %500, -1
  %507 = add i32 %499, %506
  %508 = zext i32 %507 to i64
  %509 = shl nuw nsw i64 %508, 3
  %510 = add nuw nsw i64 %509, 8
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(1) %scevgep1877, i8 0, i64 %510, i1 false), !tbaa !18
  br label %._crit_edge1609

._crit_edge1609:                                  ; preds = %.lr.ph1608, %498
  %511 = add nsw i32 %.pre1968, -1
  %512 = sext i32 %511 to i64
  %513 = getelementptr inbounds [128 x i32], ptr %35, i64 0, i64 %512
  store i32 0, ptr %513, align 4, !tbaa !5
  br label %.loopexit1492

514:                                              ; preds = %282
  %515 = add nsw i32 %296, -1
  %516 = mul nsw i32 %296, %42
  %517 = add nsw i32 %515, %516
  %518 = sext i32 %517 to i64
  %519 = getelementptr inbounds double, ptr %44, i64 %518
  %520 = load double, ptr %519, align 8, !tbaa !18
  store double %520, ptr %25, align 8, !tbaa !18
  %521 = fcmp oge double %520, 0.000000e+00
  %522 = fneg double %520
  %523 = select i1 %521, double %520, double %522
  %524 = mul nsw i32 %515, %42
  %525 = add nsw i32 %524, %296
  %526 = sext i32 %525 to i64
  %527 = getelementptr inbounds double, ptr %44, i64 %526
  %528 = load double, ptr %527, align 8, !tbaa !18
  %529 = fcmp oge double %528, 0.000000e+00
  %530 = fneg double %528
  %531 = select i1 %529, double %528, double %530
  %532 = fcmp ult double %523, %531
  br i1 %532, label %544, label %533

533:                                              ; preds = %514
  %534 = load i32, ptr %37, align 4, !tbaa !5
  %535 = add nsw i32 %534, -1
  %536 = load i32, ptr %3, align 4, !tbaa !5
  %537 = mul nsw i32 %535, %536
  %538 = add nsw i32 %537, %515
  %539 = sext i32 %538 to i64
  %540 = getelementptr inbounds double, ptr %51, i64 %539
  store double 1.000000e+00, ptr %540, align 8, !tbaa !18
  %541 = load double, ptr %519, align 8, !tbaa !18
  %542 = fdiv double %283, %541
  %543 = mul nsw i32 %536, %534
  br label %554

544:                                              ; preds = %514
  %545 = fdiv double %290, %528
  %546 = load i32, ptr %37, align 4, !tbaa !5
  %547 = add nsw i32 %546, -1
  %548 = load i32, ptr %3, align 4, !tbaa !5
  %549 = mul nsw i32 %547, %548
  %550 = add nsw i32 %549, %515
  %551 = sext i32 %550 to i64
  %552 = getelementptr inbounds double, ptr %51, i64 %551
  store double %545, ptr %552, align 8, !tbaa !18
  %553 = mul nsw i32 %548, %546
  br label %554

554:                                              ; preds = %544, %533
  %.sink2124 = phi i32 [ %553, %544 ], [ %543, %533 ]
  %.sink2120 = phi double [ 1.000000e+00, %544 ], [ %542, %533 ]
  %.pre-phi2002 = phi i32 [ %549, %544 ], [ %537, %533 ]
  %555 = add nsw i32 %.sink2124, %296
  %556 = sext i32 %555 to i64
  %557 = getelementptr inbounds double, ptr %51, i64 %556
  store double %.sink2120, ptr %557, align 8, !tbaa !18
  %558 = add nsw i32 %.pre-phi2002, %296
  %559 = sext i32 %558 to i64
  %560 = getelementptr inbounds double, ptr %51, i64 %559
  store double 0.000000e+00, ptr %560, align 8, !tbaa !18
  %561 = add nsw i32 %.sink2124, %515
  %562 = sext i32 %561 to i64
  %563 = getelementptr inbounds double, ptr %51, i64 %562
  store double 0.000000e+00, ptr %563, align 8, !tbaa !18
  %564 = add i32 %296, -2
  store i32 %564, ptr %22, align 4, !tbaa !5
  %.not13951524 = icmp slt i32 %296, 3
  br i1 %.not13951524, label %._crit_edge1555, label %.lr.ph1527

.lr.ph1527:                                       ; preds = %554
  %565 = add nsw i32 %.pre-phi2002, %515
  %566 = sext i32 %565 to i64
  %567 = getelementptr inbounds double, ptr %51, i64 %566
  %568 = add i32 %.sink2124, %296
  %569 = sext i32 %568 to i64
  %570 = getelementptr double, ptr %51, i64 %569
  %571 = sext i32 %524 to i64
  %572 = sext i32 %.pre-phi2002 to i64
  %573 = sext i32 %516 to i64
  %574 = sext i32 %.sink2124 to i64
  %wide.trip.count1835 = zext nneg i32 %515 to i64
  %invariant.gep2055 = getelementptr double, ptr %44, i64 %571
  %invariant.gep2057 = getelementptr double, ptr %51, i64 %572
  %invariant.gep2059 = getelementptr double, ptr %44, i64 %573
  %invariant.gep2061 = getelementptr double, ptr %51, i64 %574
  %575 = add nsw i64 %wide.trip.count1835, -1
  %min.iters.check2259 = icmp ult i64 %575, 18
  br i1 %min.iters.check2259, label %scalar.ph2258.preheader, label %vector.memcheck2209

scalar.ph2258.preheader:                          ; preds = %middle.block2257, %vector.memcheck2209, %.lr.ph1527
  %indvars.iv1832.ph = phi i64 [ 1, %vector.memcheck2209 ], [ 1, %.lr.ph1527 ], [ %ind.end2263, %middle.block2257 ]
  %576 = and i32 %296, 1
  %lcmp.mod2423.not = icmp eq i32 %576, 0
  br i1 %lcmp.mod2423.not, label %scalar.ph2258.prol.loopexit, label %scalar.ph2258.prol

scalar.ph2258.prol:                               ; preds = %scalar.ph2258.preheader
  %577 = load double, ptr %567, align 8, !tbaa !18
  %578 = fneg double %577
  %gep2056.prol = getelementptr double, ptr %invariant.gep2055, i64 %indvars.iv1832.ph
  %579 = load double, ptr %gep2056.prol, align 8, !tbaa !18
  %580 = fmul double %579, %578
  %gep2058.prol = getelementptr double, ptr %invariant.gep2057, i64 %indvars.iv1832.ph
  store double %580, ptr %gep2058.prol, align 8, !tbaa !18
  %581 = load double, ptr %570, align 8, !tbaa !18
  %582 = fneg double %581
  %gep2060.prol = getelementptr double, ptr %invariant.gep2059, i64 %indvars.iv1832.ph
  %583 = load double, ptr %gep2060.prol, align 8, !tbaa !18
  %584 = fmul double %583, %582
  %gep2062.prol = getelementptr double, ptr %invariant.gep2061, i64 %indvars.iv1832.ph
  store double %584, ptr %gep2062.prol, align 8, !tbaa !18
  %indvars.iv.next1833.prol = add nuw nsw i64 %indvars.iv1832.ph, 1
  br label %scalar.ph2258.prol.loopexit

scalar.ph2258.prol.loopexit:                      ; preds = %scalar.ph2258.prol, %scalar.ph2258.preheader
  %indvars.iv1832.unr = phi i64 [ %indvars.iv1832.ph, %scalar.ph2258.preheader ], [ %indvars.iv.next1833.prol, %scalar.ph2258.prol ]
  %585 = add nsw i64 %wide.trip.count1835, -1
  %586 = icmp eq i64 %indvars.iv1832.ph, %585
  br i1 %586, label %.lr.ph1554.preheader, label %scalar.ph2258

vector.memcheck2209:                              ; preds = %.lr.ph1527
  %587 = shl nsw i64 %572, 3
  %scevgep2210 = getelementptr i8, ptr %12, i64 %587
  %588 = shl nuw nsw i64 %wide.trip.count1835, 3
  %589 = getelementptr i8, ptr %scevgep2211, i64 %587
  %scevgep2212 = getelementptr i8, ptr %589, i64 %588
  %590 = shl nsw i64 %574, 3
  %scevgep2213 = getelementptr i8, ptr %12, i64 %590
  %591 = getelementptr i8, ptr %scevgep2214, i64 %590
  %scevgep2215 = getelementptr i8, ptr %591, i64 %588
  %592 = shl nsw i64 %566, 3
  %scevgep2216 = getelementptr i8, ptr %12, i64 %592
  %593 = shl nsw i64 %571, 3
  %scevgep2218 = getelementptr i8, ptr %scevgep2217, i64 %593
  %594 = getelementptr i8, ptr %scevgep2219, i64 %593
  %scevgep2220 = getelementptr i8, ptr %594, i64 %588
  %595 = shl nsw i64 %569, 3
  %scevgep2221 = getelementptr i8, ptr %12, i64 %595
  %596 = shl nsw i64 %573, 3
  %scevgep2223 = getelementptr i8, ptr %scevgep2222, i64 %596
  %597 = getelementptr i8, ptr %scevgep2224, i64 %596
  %scevgep2225 = getelementptr i8, ptr %597, i64 %588
  %bound0 = icmp ult ptr %scevgep2210, %scevgep2215
  %bound1 = icmp ult ptr %scevgep2213, %scevgep2212
  %found.conflict = and i1 %bound0, %bound1
  %bound02226 = icmp ult ptr %scevgep2210, %scevgep2216
  %bound12227 = icmp ult ptr %567, %scevgep2212
  %found.conflict2228 = and i1 %bound02226, %bound12227
  %conflict.rdx = or i1 %found.conflict, %found.conflict2228
  %bound02229 = icmp ult ptr %scevgep2210, %scevgep2220
  %bound12230 = icmp ult ptr %scevgep2218, %scevgep2212
  %found.conflict2231 = and i1 %bound02229, %bound12230
  %conflict.rdx2232 = or i1 %conflict.rdx, %found.conflict2231
  %bound02233 = icmp ult ptr %scevgep2210, %scevgep2221
  %bound12234 = icmp ult ptr %570, %scevgep2212
  %found.conflict2235 = and i1 %bound02233, %bound12234
  %conflict.rdx2236 = or i1 %conflict.rdx2232, %found.conflict2235
  %bound02237 = icmp ult ptr %scevgep2210, %scevgep2225
  %bound12238 = icmp ult ptr %scevgep2223, %scevgep2212
  %found.conflict2239 = and i1 %bound02237, %bound12238
  %conflict.rdx2240 = or i1 %conflict.rdx2236, %found.conflict2239
  %bound02241 = icmp ult ptr %scevgep2213, %scevgep2216
  %bound12242 = icmp ult ptr %567, %scevgep2215
  %found.conflict2243 = and i1 %bound02241, %bound12242
  %conflict.rdx2244 = or i1 %conflict.rdx2240, %found.conflict2243
  %bound02245 = icmp ult ptr %scevgep2213, %scevgep2220
  %bound12246 = icmp ult ptr %scevgep2218, %scevgep2215
  %found.conflict2247 = and i1 %bound02245, %bound12246
  %conflict.rdx2248 = or i1 %conflict.rdx2244, %found.conflict2247
  %bound02249 = icmp ult ptr %scevgep2213, %scevgep2221
  %bound12250 = icmp ult ptr %570, %scevgep2215
  %found.conflict2251 = and i1 %bound02249, %bound12250
  %conflict.rdx2252 = or i1 %conflict.rdx2248, %found.conflict2251
  %bound02253 = icmp ult ptr %scevgep2213, %scevgep2225
  %bound12254 = icmp ult ptr %scevgep2223, %scevgep2215
  %found.conflict2255 = and i1 %bound02253, %bound12254
  %conflict.rdx2256 = or i1 %conflict.rdx2252, %found.conflict2255
  br i1 %conflict.rdx2256, label %scalar.ph2258.preheader, label %vector.ph2260

vector.ph2260:                                    ; preds = %vector.memcheck2209
  %n.vec2262 = and i64 %575, -2
  %ind.end2263 = or i64 %575, 1
  %598 = load double, ptr %567, align 8, !tbaa !18, !alias.scope !28
  %broadcast.splatinsert = insertelement <2 x double> poison, double %598, i64 0
  %broadcast.splat = shufflevector <2 x double> %broadcast.splatinsert, <2 x double> poison, <2 x i32> zeroinitializer
  %599 = fneg <2 x double> %broadcast.splat
  %600 = load double, ptr %570, align 8, !tbaa !18, !alias.scope !31
  %broadcast.splatinsert2269 = insertelement <2 x double> poison, double %600, i64 0
  %broadcast.splat2270 = shufflevector <2 x double> %broadcast.splatinsert2269, <2 x double> poison, <2 x i32> zeroinitializer
  %601 = fneg <2 x double> %broadcast.splat2270
  br label %vector.body2265

vector.body2265:                                  ; preds = %vector.body2265, %vector.ph2260
  %index2266 = phi i64 [ 0, %vector.ph2260 ], [ %index.next2272, %vector.body2265 ]
  %offset.idx2267 = or disjoint i64 %index2266, 1
  %602 = getelementptr double, ptr %invariant.gep2055, i64 %offset.idx2267
  %wide.load2268 = load <2 x double>, ptr %602, align 8, !tbaa !18, !alias.scope !33
  %603 = fmul <2 x double> %wide.load2268, %599
  %604 = getelementptr double, ptr %invariant.gep2057, i64 %offset.idx2267
  store <2 x double> %603, ptr %604, align 8, !tbaa !18, !alias.scope !35, !noalias !37
  %605 = getelementptr double, ptr %invariant.gep2059, i64 %offset.idx2267
  %wide.load2271 = load <2 x double>, ptr %605, align 8, !tbaa !18, !alias.scope !40
  %606 = fmul <2 x double> %wide.load2271, %601
  %607 = getelementptr double, ptr %invariant.gep2061, i64 %offset.idx2267
  store <2 x double> %606, ptr %607, align 8, !tbaa !18, !alias.scope !41, !noalias !42
  %index.next2272 = add nuw i64 %index2266, 2
  %608 = icmp eq i64 %index.next2272, %n.vec2262
  br i1 %608, label %middle.block2257, label %vector.body2265, !llvm.loop !43

middle.block2257:                                 ; preds = %vector.body2265
  %cmp.n2273 = icmp eq i64 %575, %n.vec2262
  br i1 %cmp.n2273, label %.lr.ph1554.preheader, label %scalar.ph2258.preheader

.lr.ph1554.preheader:                             ; preds = %scalar.ph2258.prol.loopexit, %scalar.ph2258, %middle.block2257
  %609 = zext nneg i32 %564 to i64
  br label %.lr.ph1554

scalar.ph2258:                                    ; preds = %scalar.ph2258.prol.loopexit, %scalar.ph2258
  %indvars.iv1832 = phi i64 [ %indvars.iv.next1833.1, %scalar.ph2258 ], [ %indvars.iv1832.unr, %scalar.ph2258.prol.loopexit ]
  %610 = load double, ptr %567, align 8, !tbaa !18
  %611 = fneg double %610
  %gep2056 = getelementptr double, ptr %invariant.gep2055, i64 %indvars.iv1832
  %612 = load double, ptr %gep2056, align 8, !tbaa !18
  %613 = fmul double %612, %611
  %gep2058 = getelementptr double, ptr %invariant.gep2057, i64 %indvars.iv1832
  store double %613, ptr %gep2058, align 8, !tbaa !18
  %614 = load double, ptr %570, align 8, !tbaa !18
  %615 = fneg double %614
  %gep2060 = getelementptr double, ptr %invariant.gep2059, i64 %indvars.iv1832
  %616 = load double, ptr %gep2060, align 8, !tbaa !18
  %617 = fmul double %616, %615
  %gep2062 = getelementptr double, ptr %invariant.gep2061, i64 %indvars.iv1832
  store double %617, ptr %gep2062, align 8, !tbaa !18
  %indvars.iv.next1833 = add nuw nsw i64 %indvars.iv1832, 1
  %618 = load double, ptr %567, align 8, !tbaa !18
  %619 = fneg double %618
  %gep2056.1 = getelementptr double, ptr %invariant.gep2055, i64 %indvars.iv.next1833
  %620 = load double, ptr %gep2056.1, align 8, !tbaa !18
  %621 = fmul double %620, %619
  %gep2058.1 = getelementptr double, ptr %invariant.gep2057, i64 %indvars.iv.next1833
  store double %621, ptr %gep2058.1, align 8, !tbaa !18
  %622 = load double, ptr %570, align 8, !tbaa !18
  %623 = fneg double %622
  %gep2060.1 = getelementptr double, ptr %invariant.gep2059, i64 %indvars.iv.next1833
  %624 = load double, ptr %gep2060.1, align 8, !tbaa !18
  %625 = fmul double %624, %623
  %gep2062.1 = getelementptr double, ptr %invariant.gep2061, i64 %indvars.iv.next1833
  store double %625, ptr %gep2062.1, align 8, !tbaa !18
  %indvars.iv.next1833.1 = add nuw nsw i64 %indvars.iv1832, 2
  %exitcond1836.not.1 = icmp eq i64 %indvars.iv.next1833.1, %wide.trip.count1835
  br i1 %exitcond1836.not.1, label %.lr.ph1554.preheader, label %scalar.ph2258, !llvm.loop !44

.lr.ph1554:                                       ; preds = %.lr.ph1554.preheader, %.lr.ph1554._crit_edge
  %indvars.iv1837 = phi i64 [ %609, %.lr.ph1554.preheader ], [ %.pre2017, %.lr.ph1554._crit_edge ]
  %.313121552 = phi i32 [ %564, %.lr.ph1554.preheader ], [ %.51314, %.lr.ph1554._crit_edge ]
  %indvars1839 = trunc i64 %indvars.iv1837 to i32
  %626 = sext i32 %.313121552 to i64
  %627 = icmp sgt i64 %indvars.iv1837, %626
  %.pre2017 = add nsw i64 %indvars.iv1837, -1
  br i1 %627, label %.lr.ph1554._crit_edge, label %628

628:                                              ; preds = %.lr.ph1554
  %.not1400 = icmp eq i64 %indvars.iv1837, 1
  br i1 %.not1400, label %..thread1437_crit_edge, label %629

..thread1437_crit_edge:                           ; preds = %628
  %.pre1958 = load i32, ptr %37, align 4, !tbaa !5
  %.pre1960 = load i32, ptr %3, align 4, !tbaa !5
  br label %.thread1437

629:                                              ; preds = %628
  %630 = add nsw i32 %indvars1839, -1
  %631 = mul nsw i32 %630, %42
  %632 = sext i32 %631 to i64
  %633 = getelementptr double, ptr %44, i64 %indvars.iv1837
  %634 = getelementptr double, ptr %633, i64 %632
  %635 = load double, ptr %634, align 8, !tbaa !18
  %636 = fcmp une double %635, 0.000000e+00
  %637 = trunc nuw nsw i64 %.pre2017 to i32
  %.pre1959 = load i32, ptr %37, align 4, !tbaa !5
  %.pre1961 = load i32, ptr %3, align 4, !tbaa !5
  br i1 %636, label %.thread1441, label %.thread1437

.thread1441:                                      ; preds = %629
  %638 = mul nsw i64 %.pre2017, %227
  %639 = getelementptr double, ptr %44, i64 %.pre2017
  %640 = getelementptr double, ptr %639, i64 %632
  %641 = add nsw i32 %.pre1959, -1
  %642 = mul nsw i32 %641, %.pre1961
  %643 = sext i32 %642 to i64
  %644 = getelementptr double, ptr %51, i64 %.pre2017
  %645 = getelementptr double, ptr %644, i64 %643
  call void @dlaln2_(ptr noundef nonnull @c_false, ptr noundef nonnull @c__2, ptr noundef nonnull @c__2, ptr noundef nonnull %30, ptr noundef nonnull @c_b29, ptr noundef %640, ptr noundef nonnull %5, ptr noundef nonnull @c_b29, ptr noundef nonnull @c_b29, ptr noundef nonnull %645, ptr noundef nonnull %3, ptr noundef nonnull %39, ptr noundef nonnull %38, ptr noundef nonnull %32, ptr noundef nonnull @c__2, ptr noundef nonnull %31, ptr noundef nonnull %34, ptr noundef nonnull %27) #6
  %646 = load double, ptr %34, align 8, !tbaa !18
  %647 = fcmp ogt double %646, 1.000000e+00
  br i1 %647, label %704, label %thread-pre-split1447

.thread1437:                                      ; preds = %..thread1437_crit_edge, %629
  %648 = phi i32 [ %.pre1961, %629 ], [ %.pre1960, %..thread1437_crit_edge ]
  %649 = phi i32 [ %.pre1959, %629 ], [ %.pre1958, %..thread1437_crit_edge ]
  %.413131440 = phi i32 [ %637, %629 ], [ 0, %..thread1437_crit_edge ]
  %650 = mul nsw i64 %indvars.iv1837, %227
  %651 = mul nsw i32 %42, %indvars1839
  %652 = sext i32 %651 to i64
  %653 = getelementptr double, ptr %44, i64 %indvars.iv1837
  %654 = getelementptr double, ptr %653, i64 %652
  %655 = add nsw i32 %649, -1
  %656 = mul nsw i32 %655, %648
  %657 = sext i32 %656 to i64
  %658 = getelementptr double, ptr %51, i64 %indvars.iv1837
  %659 = getelementptr double, ptr %658, i64 %657
  call void @dlaln2_(ptr noundef nonnull @c_false, ptr noundef nonnull @c__1, ptr noundef nonnull @c__2, ptr noundef nonnull %30, ptr noundef nonnull @c_b29, ptr noundef %654, ptr noundef nonnull %5, ptr noundef nonnull @c_b29, ptr noundef nonnull @c_b29, ptr noundef nonnull %659, ptr noundef nonnull %3, ptr noundef nonnull %39, ptr noundef nonnull %38, ptr noundef nonnull %32, ptr noundef nonnull @c__2, ptr noundef nonnull %31, ptr noundef nonnull %34, ptr noundef nonnull %27) #6
  %660 = load double, ptr %34, align 8, !tbaa !18
  %661 = fcmp ogt double %660, 1.000000e+00
  br i1 %661, label %662, label %thread-pre-split1445

662:                                              ; preds = %.thread1437
  %663 = getelementptr inbounds double, ptr %51, i64 %indvars.iv1837
  %664 = load double, ptr %663, align 8, !tbaa !18
  %665 = fdiv double %189, %660
  %666 = fcmp ogt double %664, %665
  br i1 %666, label %667, label %thread-pre-split1445

667:                                              ; preds = %662
  %668 = load double, ptr %32, align 16, !tbaa !18
  %669 = fdiv double %668, %660
  store double %669, ptr %32, align 16, !tbaa !18
  %670 = load double, ptr %221, align 16, !tbaa !18
  %671 = fdiv double %670, %660
  store double %671, ptr %221, align 16, !tbaa !18
  %672 = load double, ptr %31, align 8, !tbaa !18
  %673 = fdiv double %672, %660
  store double %673, ptr %31, align 8, !tbaa !18
  br label %674

thread-pre-split1445:                             ; preds = %.thread1437, %662
  %.pr1446 = load double, ptr %31, align 8, !tbaa !18
  br label %674

674:                                              ; preds = %thread-pre-split1445, %667
  %675 = phi double [ %.pr1446, %thread-pre-split1445 ], [ %673, %667 ]
  %676 = fcmp une double %675, 1.000000e+00
  br i1 %676, label %677, label %687

677:                                              ; preds = %674
  %678 = load i32, ptr %37, align 4, !tbaa !5
  %679 = add nsw i32 %678, -1
  %680 = load i32, ptr %3, align 4, !tbaa !5
  %681 = mul nsw i32 %679, %680
  %682 = sext i32 %681 to i64
  %gep1543 = getelementptr double, ptr %12, i64 %682
  call void @dscal_(ptr noundef nonnull %36, ptr noundef nonnull %31, ptr noundef %gep1543, ptr noundef nonnull @c__1) #6
  %683 = load i32, ptr %37, align 4, !tbaa !5
  %684 = load i32, ptr %3, align 4, !tbaa !5
  %685 = mul nsw i32 %684, %683
  %686 = sext i32 %685 to i64
  %gep1545 = getelementptr double, ptr %12, i64 %686
  call void @dscal_(ptr noundef nonnull %36, ptr noundef nonnull %31, ptr noundef %gep1545, ptr noundef nonnull @c__1) #6
  br label %687

687:                                              ; preds = %677, %674
  %688 = load double, ptr %32, align 16, !tbaa !18
  %689 = load i32, ptr %37, align 4, !tbaa !5
  %690 = add nsw i32 %689, -1
  %691 = load i32, ptr %3, align 4, !tbaa !5
  %692 = mul nsw i32 %690, %691
  %693 = sext i32 %692 to i64
  %694 = getelementptr double, ptr %51, i64 %indvars.iv1837
  %695 = getelementptr double, ptr %694, i64 %693
  store double %688, ptr %695, align 8, !tbaa !18
  %696 = load double, ptr %221, align 16, !tbaa !18
  %697 = mul nsw i32 %691, %689
  %698 = sext i32 %697 to i64
  %699 = getelementptr double, ptr %51, i64 %indvars.iv1837
  %700 = getelementptr double, ptr %699, i64 %698
  store double %696, ptr %700, align 8, !tbaa !18
  %701 = trunc nuw nsw i64 %.pre2017 to i32
  store i32 %701, ptr %22, align 4, !tbaa !5
  %702 = fneg double %688
  store double %702, ptr %25, align 8, !tbaa !18
  %gep1547 = getelementptr double, ptr %invariant.gep1530, i64 %650
  %gep1549 = getelementptr double, ptr %12, i64 %693
  call void @daxpy_(ptr noundef nonnull %22, ptr noundef nonnull %25, ptr noundef %gep1547, ptr noundef nonnull @c__1, ptr noundef %gep1549, ptr noundef nonnull @c__1) #6
  store i32 %701, ptr %22, align 4, !tbaa !5
  %703 = load double, ptr %221, align 16, !tbaa !18
  br label %.lr.ph1554._crit_edge.sink.split

704:                                              ; preds = %.thread1441
  %705 = getelementptr inbounds double, ptr %51, i64 %.pre2017
  %706 = load double, ptr %705, align 8, !tbaa !18
  store double %706, ptr %25, align 8, !tbaa !18
  %707 = getelementptr inbounds double, ptr %51, i64 %indvars.iv1837
  %708 = load double, ptr %707, align 8, !tbaa !18
  %709 = fcmp oge double %706, %708
  %710 = select i1 %709, double %706, double %708
  %711 = fdiv double %189, %646
  %712 = fcmp ogt double %710, %711
  br i1 %712, label %713, label %thread-pre-split1447

713:                                              ; preds = %704
  %714 = fdiv double 1.000000e+00, %646
  store double %714, ptr %40, align 8, !tbaa !18
  %715 = load <2 x double>, ptr %32, align 16, !tbaa !18
  %716 = insertelement <2 x double> poison, double %714, i64 0
  %717 = shufflevector <2 x double> %716, <2 x double> poison, <2 x i32> zeroinitializer
  %718 = fmul <2 x double> %717, %715
  store <2 x double> %718, ptr %32, align 16, !tbaa !18
  %719 = load <2 x double>, ptr %221, align 16, !tbaa !18
  %720 = fmul <2 x double> %717, %719
  store <2 x double> %720, ptr %221, align 16, !tbaa !18
  %721 = load double, ptr %31, align 8, !tbaa !18
  %722 = fmul double %714, %721
  store double %722, ptr %31, align 8, !tbaa !18
  br label %723

thread-pre-split1447:                             ; preds = %.thread1441, %704
  %.pr1448 = load double, ptr %31, align 8, !tbaa !18
  br label %723

723:                                              ; preds = %thread-pre-split1447, %713
  %724 = phi double [ %.pr1448, %thread-pre-split1447 ], [ %722, %713 ]
  %725 = fcmp une double %724, 1.000000e+00
  br i1 %725, label %726, label %736

726:                                              ; preds = %723
  %727 = load i32, ptr %37, align 4, !tbaa !5
  %728 = add nsw i32 %727, -1
  %729 = load i32, ptr %3, align 4, !tbaa !5
  %730 = mul nsw i32 %728, %729
  %731 = sext i32 %730 to i64
  %gep = getelementptr double, ptr %12, i64 %731
  call void @dscal_(ptr noundef nonnull %36, ptr noundef nonnull %31, ptr noundef %gep, ptr noundef nonnull @c__1) #6
  %732 = load i32, ptr %37, align 4, !tbaa !5
  %733 = load i32, ptr %3, align 4, !tbaa !5
  %734 = mul nsw i32 %733, %732
  %735 = sext i32 %734 to i64
  %gep1529 = getelementptr double, ptr %12, i64 %735
  call void @dscal_(ptr noundef nonnull %36, ptr noundef nonnull %31, ptr noundef %gep1529, ptr noundef nonnull @c__1) #6
  br label %736

736:                                              ; preds = %726, %723
  %737 = load i32, ptr %37, align 4, !tbaa !5
  %738 = add nsw i32 %737, -1
  %739 = load i32, ptr %3, align 4, !tbaa !5
  %740 = mul nsw i32 %738, %739
  %741 = sext i32 %740 to i64
  %742 = getelementptr double, ptr %51, i64 %.pre2017
  %743 = getelementptr double, ptr %742, i64 %741
  %744 = load <2 x double>, ptr %32, align 16, !tbaa !18
  store <2 x double> %744, ptr %743, align 8, !tbaa !18
  %745 = mul nsw i32 %739, %737
  %746 = sext i32 %745 to i64
  %747 = getelementptr double, ptr %51, i64 %.pre2017
  %748 = getelementptr double, ptr %747, i64 %746
  %749 = load <2 x double>, ptr %221, align 16, !tbaa !18
  store <2 x double> %749, ptr %748, align 8, !tbaa !18
  %750 = trunc i64 %indvars.iv1837 to i32
  %751 = add i32 %750, -2
  store i32 %751, ptr %22, align 4, !tbaa !5
  %752 = extractelement <2 x double> %744, i64 0
  %753 = fneg double %752
  store double %753, ptr %25, align 8, !tbaa !18
  %gep1531 = getelementptr double, ptr %invariant.gep1530, i64 %638
  %gep1533 = getelementptr double, ptr %12, i64 %741
  call void @daxpy_(ptr noundef nonnull %22, ptr noundef nonnull %25, ptr noundef %gep1531, ptr noundef nonnull @c__1, ptr noundef %gep1533, ptr noundef nonnull @c__1) #6
  store i32 %751, ptr %22, align 4, !tbaa !5
  %754 = load double, ptr %222, align 8, !tbaa !18
  %755 = fneg double %754
  store double %755, ptr %25, align 8, !tbaa !18
  %756 = mul nsw i64 %indvars.iv1837, %227
  %gep1535 = getelementptr double, ptr %invariant.gep1530, i64 %756
  %757 = load i32, ptr %37, align 4, !tbaa !5
  %758 = add nsw i32 %757, -1
  %759 = load i32, ptr %3, align 4, !tbaa !5
  %760 = mul nsw i32 %758, %759
  %761 = sext i32 %760 to i64
  %gep1537 = getelementptr double, ptr %12, i64 %761
  call void @daxpy_(ptr noundef nonnull %22, ptr noundef nonnull %25, ptr noundef %gep1535, ptr noundef nonnull @c__1, ptr noundef %gep1537, ptr noundef nonnull @c__1) #6
  store i32 %751, ptr %22, align 4, !tbaa !5
  %762 = load double, ptr %221, align 16, !tbaa !18
  %763 = fneg double %762
  store double %763, ptr %25, align 8, !tbaa !18
  %764 = load i32, ptr %37, align 4, !tbaa !5
  %765 = load i32, ptr %3, align 4, !tbaa !5
  %766 = mul nsw i32 %765, %764
  %767 = sext i32 %766 to i64
  %gep1539 = getelementptr double, ptr %12, i64 %767
  call void @daxpy_(ptr noundef nonnull %22, ptr noundef nonnull %25, ptr noundef %gep1531, ptr noundef nonnull @c__1, ptr noundef %gep1539, ptr noundef nonnull @c__1) #6
  store i32 %751, ptr %22, align 4, !tbaa !5
  %768 = load double, ptr %223, align 8, !tbaa !18
  br label %.lr.ph1554._crit_edge.sink.split

.lr.ph1554._crit_edge.sink.split:                 ; preds = %687, %736
  %.sink2396 = phi double [ %703, %687 ], [ %768, %736 ]
  %gep1535.sink = phi ptr [ %gep1547, %687 ], [ %gep1535, %736 ]
  %.51314.ph = phi i32 [ %.413131440, %687 ], [ %751, %736 ]
  %769 = fneg double %.sink2396
  store double %769, ptr %25, align 8, !tbaa !18
  %.sink2128 = load i32, ptr %37, align 4, !tbaa !5
  %770 = load i32, ptr %3, align 4, !tbaa !5
  %771 = mul nsw i32 %770, %.sink2128
  %772 = sext i32 %771 to i64
  %gep1541 = getelementptr double, ptr %12, i64 %772
  call void @daxpy_(ptr noundef nonnull %22, ptr noundef nonnull %25, ptr noundef %gep1535.sink, ptr noundef nonnull @c__1, ptr noundef %gep1541, ptr noundef nonnull @c__1) #6
  br label %.lr.ph1554._crit_edge

.lr.ph1554._crit_edge:                            ; preds = %.lr.ph1554._crit_edge.sink.split, %.lr.ph1554
  %.51314 = phi i32 [ %.313121552, %.lr.ph1554 ], [ %.51314.ph, %.lr.ph1554._crit_edge.sink.split ]
  %773 = icmp sgt i64 %indvars.iv1837, 1
  br i1 %773, label %.lr.ph1554, label %._crit_edge1555, !llvm.loop !45

._crit_edge1555:                                  ; preds = %.lr.ph1554._crit_edge, %554
  br i1 %.not1369, label %774, label %819

774:                                              ; preds = %._crit_edge1555
  %775 = load i32, ptr %37, align 4, !tbaa !5
  %776 = add nsw i32 %775, -1
  %777 = load i32, ptr %3, align 4, !tbaa !5
  %778 = mul nsw i32 %776, %777
  %779 = sext i32 %778 to i64
  %gep1650 = getelementptr double, ptr %12, i64 %779
  %780 = add nsw i32 %.012781679, -1
  %781 = mul nsw i32 %780, %48
  %782 = sext i32 %781 to i64
  %gep1652 = getelementptr double, ptr %invariant.gep1633, i64 %782
  call void @dcopy_(ptr noundef nonnull %36, ptr noundef %gep1650, ptr noundef nonnull @c__1, ptr noundef %gep1652, ptr noundef nonnull @c__1) #6
  %783 = load i32, ptr %37, align 4, !tbaa !5
  %784 = load i32, ptr %3, align 4, !tbaa !5
  %785 = mul nsw i32 %784, %783
  %786 = sext i32 %785 to i64
  %gep1654 = getelementptr double, ptr %12, i64 %786
  %787 = mul nsw i32 %.012781679, %48
  %788 = sext i32 %787 to i64
  %gep1656 = getelementptr double, ptr %invariant.gep1633, i64 %788
  call void @dcopy_(ptr noundef nonnull %36, ptr noundef %gep1654, ptr noundef nonnull @c__1, ptr noundef %gep1656, ptr noundef nonnull @c__1) #6
  %789 = load i32, ptr %36, align 4, !tbaa !5
  store i32 %789, ptr %22, align 4, !tbaa !5
  %.not13961569 = icmp slt i32 %789, 1
  br i1 %.not13961569, label %802, label %.lr.ph1573.preheader

.lr.ph1573.preheader:                             ; preds = %774
  %790 = add nuw i32 %789, 1
  %wide.trip.count1857 = zext i32 %790 to i64
  %invariant.gep2071 = getelementptr double, ptr %50, i64 %782
  %invariant.gep2073 = getelementptr double, ptr %50, i64 %788
  br label %.lr.ph1573

.lr.ph1573:                                       ; preds = %.lr.ph1573.preheader, %.lr.ph1573
  %indvars.iv1854 = phi i64 [ 1, %.lr.ph1573.preheader ], [ %indvars.iv.next1855, %.lr.ph1573 ]
  %.013291570 = phi double [ 0.000000e+00, %.lr.ph1573.preheader ], [ %801, %.lr.ph1573 ]
  %gep2072 = getelementptr double, ptr %invariant.gep2071, i64 %indvars.iv1854
  %791 = load double, ptr %gep2072, align 8, !tbaa !18
  %792 = fcmp oge double %791, 0.000000e+00
  %793 = fneg double %791
  %794 = select i1 %792, double %791, double %793
  %gep2074 = getelementptr double, ptr %invariant.gep2073, i64 %indvars.iv1854
  %795 = load double, ptr %gep2074, align 8, !tbaa !18
  %796 = fcmp oge double %795, 0.000000e+00
  %797 = fneg double %795
  %798 = select i1 %796, double %795, double %797
  %799 = fadd double %794, %798
  %800 = fcmp oge double %.013291570, %799
  %801 = select i1 %800, double %.013291570, double %799
  %indvars.iv.next1855 = add nuw nsw i64 %indvars.iv1854, 1
  %exitcond1858.not = icmp eq i64 %indvars.iv.next1855, %wide.trip.count1857
  br i1 %exitcond1858.not, label %._crit_edge1574, label %.lr.ph1573, !llvm.loop !46

._crit_edge1574:                                  ; preds = %.lr.ph1573
  store double %791, ptr %25, align 8, !tbaa !18
  br label %802

802:                                              ; preds = %._crit_edge1574, %774
  %.01329.lcssa = phi double [ %801, %._crit_edge1574 ], [ 0.000000e+00, %774 ]
  %803 = fdiv double 1.000000e+00, %.01329.lcssa
  store double %803, ptr %33, align 8, !tbaa !18
  call void @dscal_(ptr noundef nonnull %36, ptr noundef nonnull %33, ptr noundef %gep1652, ptr noundef nonnull @c__1) #6
  call void @dscal_(ptr noundef nonnull %36, ptr noundef nonnull %33, ptr noundef %gep1656, ptr noundef nonnull @c__1) #6
  %804 = load i32, ptr %3, align 4, !tbaa !5
  store i32 %804, ptr %22, align 4, !tbaa !5
  %805 = load i32, ptr %36, align 4, !tbaa !5
  %.not1397.not1577 = icmp slt i32 %805, %804
  br i1 %.not1397.not1577, label %.lr.ph1580.preheader, label %.loopexit1492

.lr.ph1580.preheader:                             ; preds = %802
  %806 = sext i32 %805 to i64
  %wide.trip.count1866 = sext i32 %804 to i64
  %invariant.gep2075 = getelementptr double, ptr %50, i64 %782
  %invariant.gep2077 = getelementptr double, ptr %50, i64 %788
  %807 = sub nsw i64 %wide.trip.count1866, %806
  %min.iters.check2183 = icmp ult i64 %807, 4
  br i1 %min.iters.check2183, label %.lr.ph1580.preheader2410, label %vector.memcheck2179

vector.memcheck2179:                              ; preds = %.lr.ph1580.preheader
  %808 = sub nsw i64 %788, %782
  %809 = and i64 %808, 2305843009213693948
  %diff.check2180 = icmp eq i64 %809, 0
  br i1 %diff.check2180, label %.lr.ph1580.preheader2410, label %vector.ph2184

vector.ph2184:                                    ; preds = %vector.memcheck2179
  %n.vec2186 = and i64 %807, -4
  %ind.end2187 = add nsw i64 %n.vec2186, %806
  br label %vector.body2189

vector.body2189:                                  ; preds = %vector.body2189, %vector.ph2184
  %index2190 = phi i64 [ 0, %vector.ph2184 ], [ %index.next2192, %vector.body2189 ]
  %offset.idx2191 = add i64 %index2190, %806
  %810 = add nsw i64 %offset.idx2191, 1
  %811 = getelementptr double, ptr %invariant.gep2075, i64 %810
  %812 = getelementptr i8, ptr %811, i64 16
  store <2 x double> zeroinitializer, ptr %811, align 8, !tbaa !18
  store <2 x double> zeroinitializer, ptr %812, align 8, !tbaa !18
  %813 = getelementptr double, ptr %invariant.gep2077, i64 %810
  %814 = getelementptr i8, ptr %813, i64 16
  store <2 x double> zeroinitializer, ptr %813, align 8, !tbaa !18
  store <2 x double> zeroinitializer, ptr %814, align 8, !tbaa !18
  %index.next2192 = add nuw i64 %index2190, 4
  %815 = icmp eq i64 %index.next2192, %n.vec2186
  br i1 %815, label %middle.block2181, label %vector.body2189, !llvm.loop !47

middle.block2181:                                 ; preds = %vector.body2189
  %cmp.n2193 = icmp eq i64 %807, %n.vec2186
  br i1 %cmp.n2193, label %.loopexit1492, label %.lr.ph1580.preheader2410

.lr.ph1580.preheader2410:                         ; preds = %middle.block2181, %vector.memcheck2179, %.lr.ph1580.preheader
  %indvars.iv1863.ph = phi i64 [ %806, %vector.memcheck2179 ], [ %806, %.lr.ph1580.preheader ], [ %ind.end2187, %middle.block2181 ]
  %816 = sub nsw i64 %wide.trip.count1866, %indvars.iv1863.ph
  %xtraiter2426 = and i64 %816, 3
  %lcmp.mod2427.not = icmp eq i64 %xtraiter2426, 0
  br i1 %lcmp.mod2427.not, label %.lr.ph1580.prol.loopexit, label %.lr.ph1580.prol

.lr.ph1580.prol:                                  ; preds = %.lr.ph1580.preheader2410, %.lr.ph1580.prol
  %indvars.iv1863.prol = phi i64 [ %indvars.iv.next1864.prol, %.lr.ph1580.prol ], [ %indvars.iv1863.ph, %.lr.ph1580.preheader2410 ]
  %prol.iter2428 = phi i64 [ %prol.iter2428.next, %.lr.ph1580.prol ], [ 0, %.lr.ph1580.preheader2410 ]
  %indvars.iv.next1864.prol = add nsw i64 %indvars.iv1863.prol, 1
  %gep2076.prol = getelementptr double, ptr %invariant.gep2075, i64 %indvars.iv.next1864.prol
  store double 0.000000e+00, ptr %gep2076.prol, align 8, !tbaa !18
  %gep2078.prol = getelementptr double, ptr %invariant.gep2077, i64 %indvars.iv.next1864.prol
  store double 0.000000e+00, ptr %gep2078.prol, align 8, !tbaa !18
  %prol.iter2428.next = add i64 %prol.iter2428, 1
  %prol.iter2428.cmp.not = icmp eq i64 %prol.iter2428.next, %xtraiter2426
  br i1 %prol.iter2428.cmp.not, label %.lr.ph1580.prol.loopexit, label %.lr.ph1580.prol, !llvm.loop !48

.lr.ph1580.prol.loopexit:                         ; preds = %.lr.ph1580.prol, %.lr.ph1580.preheader2410
  %indvars.iv1863.unr = phi i64 [ %indvars.iv1863.ph, %.lr.ph1580.preheader2410 ], [ %indvars.iv.next1864.prol, %.lr.ph1580.prol ]
  %817 = sub nsw i64 %indvars.iv1863.ph, %wide.trip.count1866
  %818 = icmp ugt i64 %817, -4
  br i1 %818, label %.loopexit1492, label %.lr.ph1580

.lr.ph1580:                                       ; preds = %.lr.ph1580.prol.loopexit, %.lr.ph1580
  %indvars.iv1863 = phi i64 [ %indvars.iv.next1864.3, %.lr.ph1580 ], [ %indvars.iv1863.unr, %.lr.ph1580.prol.loopexit ]
  %indvars.iv.next1864 = add nsw i64 %indvars.iv1863, 1
  %gep2076 = getelementptr double, ptr %invariant.gep2075, i64 %indvars.iv.next1864
  store double 0.000000e+00, ptr %gep2076, align 8, !tbaa !18
  %gep2078 = getelementptr double, ptr %invariant.gep2077, i64 %indvars.iv.next1864
  store double 0.000000e+00, ptr %gep2078, align 8, !tbaa !18
  %indvars.iv.next1864.1 = add nsw i64 %indvars.iv1863, 2
  %gep2076.1 = getelementptr double, ptr %invariant.gep2075, i64 %indvars.iv.next1864.1
  store double 0.000000e+00, ptr %gep2076.1, align 8, !tbaa !18
  %gep2078.1 = getelementptr double, ptr %invariant.gep2077, i64 %indvars.iv.next1864.1
  store double 0.000000e+00, ptr %gep2078.1, align 8, !tbaa !18
  %indvars.iv.next1864.2 = add nsw i64 %indvars.iv1863, 3
  %gep2076.2 = getelementptr double, ptr %invariant.gep2075, i64 %indvars.iv.next1864.2
  store double 0.000000e+00, ptr %gep2076.2, align 8, !tbaa !18
  %gep2078.2 = getelementptr double, ptr %invariant.gep2077, i64 %indvars.iv.next1864.2
  store double 0.000000e+00, ptr %gep2078.2, align 8, !tbaa !18
  %indvars.iv.next1864.3 = add nsw i64 %indvars.iv1863, 4
  %gep2076.3 = getelementptr double, ptr %invariant.gep2075, i64 %indvars.iv.next1864.3
  store double 0.000000e+00, ptr %gep2076.3, align 8, !tbaa !18
  %gep2078.3 = getelementptr double, ptr %invariant.gep2077, i64 %indvars.iv.next1864.3
  store double 0.000000e+00, ptr %gep2078.3, align 8, !tbaa !18
  %exitcond1867.not.3 = icmp eq i64 %indvars.iv.next1864.3, %wide.trip.count1866
  br i1 %exitcond1867.not.3, label %.loopexit1492, label %.lr.ph1580, !llvm.loop !49

819:                                              ; preds = %._crit_edge1555
  br i1 %224, label %820, label %890

820:                                              ; preds = %819
  %821 = load i32, ptr %36, align 4, !tbaa !5
  %822 = icmp sgt i32 %821, 2
  br i1 %822, label %823, label %847

823:                                              ; preds = %820
  %824 = add nsw i32 %821, -2
  store i32 %824, ptr %22, align 4, !tbaa !5
  %825 = load i32, ptr %37, align 4, !tbaa !5
  %826 = add nsw i32 %825, -1
  %827 = load i32, ptr %3, align 4, !tbaa !5
  %828 = mul nsw i32 %826, %827
  %829 = sext i32 %828 to i64
  %gep1638 = getelementptr double, ptr %12, i64 %829
  %830 = add nsw i32 %821, -1
  %831 = add nsw i32 %828, %830
  %832 = sext i32 %831 to i64
  %833 = getelementptr inbounds double, ptr %51, i64 %832
  %834 = mul nsw i32 %830, %48
  %835 = sext i32 %834 to i64
  %gep1640 = getelementptr double, ptr %invariant.gep1633, i64 %835
  call void @dgemv_(ptr noundef nonnull @.str.10, ptr noundef nonnull %3, ptr noundef nonnull %22, ptr noundef nonnull @c_b29, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %gep1638, ptr noundef nonnull @c__1, ptr noundef nonnull %833, ptr noundef %gep1640, ptr noundef nonnull @c__1) #6
  %836 = load i32, ptr %36, align 4, !tbaa !5
  %837 = add nsw i32 %836, -2
  store i32 %837, ptr %22, align 4, !tbaa !5
  %838 = load i32, ptr %37, align 4, !tbaa !5
  %839 = load i32, ptr %3, align 4, !tbaa !5
  %840 = mul nsw i32 %839, %838
  %841 = sext i32 %840 to i64
  %gep1642 = getelementptr double, ptr %12, i64 %841
  %842 = add nsw i32 %840, %836
  %843 = sext i32 %842 to i64
  %844 = getelementptr inbounds double, ptr %51, i64 %843
  %845 = mul nsw i32 %836, %48
  %846 = sext i32 %845 to i64
  %gep1644 = getelementptr double, ptr %invariant.gep1633, i64 %846
  call void @dgemv_(ptr noundef nonnull @.str.10, ptr noundef nonnull %3, ptr noundef nonnull %22, ptr noundef nonnull @c_b29, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %gep1642, ptr noundef nonnull @c__1, ptr noundef nonnull %844, ptr noundef %gep1644, ptr noundef nonnull @c__1) #6
  br label %867

847:                                              ; preds = %820
  %848 = add nsw i32 %821, -1
  %849 = load i32, ptr %37, align 4, !tbaa !5
  %850 = add nsw i32 %849, -1
  %851 = load i32, ptr %3, align 4, !tbaa !5
  %852 = mul nsw i32 %850, %851
  %853 = add nsw i32 %852, %848
  %854 = sext i32 %853 to i64
  %855 = getelementptr inbounds double, ptr %51, i64 %854
  %856 = mul nsw i32 %848, %48
  %857 = sext i32 %856 to i64
  %gep1634 = getelementptr double, ptr %invariant.gep1633, i64 %857
  call void @dscal_(ptr noundef nonnull %3, ptr noundef nonnull %855, ptr noundef %gep1634, ptr noundef nonnull @c__1) #6
  %858 = load i32, ptr %36, align 4, !tbaa !5
  %859 = load i32, ptr %37, align 4, !tbaa !5
  %860 = load i32, ptr %3, align 4, !tbaa !5
  %861 = mul nsw i32 %860, %859
  %862 = add nsw i32 %861, %858
  %863 = sext i32 %862 to i64
  %864 = getelementptr inbounds double, ptr %51, i64 %863
  %865 = mul nsw i32 %858, %48
  %866 = sext i32 %865 to i64
  %gep1636 = getelementptr double, ptr %invariant.gep1633, i64 %866
  call void @dscal_(ptr noundef nonnull %3, ptr noundef nonnull %864, ptr noundef %gep1636, ptr noundef nonnull @c__1) #6
  br label %867

867:                                              ; preds = %847, %823
  %868 = load i32, ptr %3, align 4, !tbaa !5
  store i32 %868, ptr %22, align 4, !tbaa !5
  %.not13991561 = icmp slt i32 %868, 1
  %.pre1963 = load i32, ptr %36, align 4, !tbaa !5
  %.pre2018 = add nsw i32 %.pre1963, -1
  %.pre2020 = mul nsw i32 %.pre2018, %48
  br i1 %.not13991561, label %._crit_edge2004, label %.lr.ph1565

._crit_edge2004:                                  ; preds = %867
  %.pre2022 = sext i32 %.pre2020 to i64
  br label %885

.lr.ph1565:                                       ; preds = %867
  %869 = mul nsw i32 %.pre1963, %48
  %870 = sext i32 %.pre2020 to i64
  %871 = sext i32 %869 to i64
  %872 = add nuw i32 %868, 1
  %wide.trip.count1852 = zext i32 %872 to i64
  %invariant.gep2067 = getelementptr double, ptr %50, i64 %870
  %invariant.gep2069 = getelementptr double, ptr %50, i64 %871
  br label %873

873:                                              ; preds = %.lr.ph1565, %873
  %indvars.iv1849 = phi i64 [ 1, %.lr.ph1565 ], [ %indvars.iv.next1850, %873 ]
  %.113301562 = phi double [ 0.000000e+00, %.lr.ph1565 ], [ %884, %873 ]
  %gep2068 = getelementptr double, ptr %invariant.gep2067, i64 %indvars.iv1849
  %874 = load double, ptr %gep2068, align 8, !tbaa !18
  %875 = fcmp oge double %874, 0.000000e+00
  %876 = fneg double %874
  %877 = select i1 %875, double %874, double %876
  %gep2070 = getelementptr double, ptr %invariant.gep2069, i64 %indvars.iv1849
  %878 = load double, ptr %gep2070, align 8, !tbaa !18
  %879 = fcmp oge double %878, 0.000000e+00
  %880 = fneg double %878
  %881 = select i1 %879, double %878, double %880
  %882 = fadd double %877, %881
  %883 = fcmp oge double %.113301562, %882
  %884 = select i1 %883, double %.113301562, double %882
  %indvars.iv.next1850 = add nuw nsw i64 %indvars.iv1849, 1
  %exitcond1853.not = icmp eq i64 %indvars.iv.next1850, %wide.trip.count1852
  br i1 %exitcond1853.not, label %._crit_edge1566, label %873, !llvm.loop !50

._crit_edge1566:                                  ; preds = %873
  store double %874, ptr %25, align 8, !tbaa !18
  br label %885

885:                                              ; preds = %._crit_edge2004, %._crit_edge1566
  %.pre-phi2023 = phi i64 [ %.pre2022, %._crit_edge2004 ], [ %870, %._crit_edge1566 ]
  %.11330.lcssa = phi double [ 0.000000e+00, %._crit_edge2004 ], [ %884, %._crit_edge1566 ]
  %886 = fdiv double 1.000000e+00, %.11330.lcssa
  store double %886, ptr %33, align 8, !tbaa !18
  %gep1646 = getelementptr double, ptr %invariant.gep1633, i64 %.pre-phi2023
  call void @dscal_(ptr noundef nonnull %3, ptr noundef nonnull %33, ptr noundef %gep1646, ptr noundef nonnull @c__1) #6
  %887 = load i32, ptr %36, align 4, !tbaa !5
  %888 = mul nsw i32 %887, %48
  %889 = sext i32 %888 to i64
  %gep1648 = getelementptr double, ptr %invariant.gep1633, i64 %889
  call void @dscal_(ptr noundef nonnull %3, ptr noundef nonnull %33, ptr noundef %gep1648, ptr noundef nonnull @c__1) #6
  br label %.loopexit1492

890:                                              ; preds = %819
  %891 = load i32, ptr %3, align 4, !tbaa !5
  store i32 %891, ptr %22, align 4, !tbaa !5
  %892 = load i32, ptr %36, align 4, !tbaa !5
  %.not1398.not1556 = icmp slt i32 %892, %891
  %.pre1962 = load i32, ptr %37, align 4, !tbaa !5
  %893 = add nsw i32 %.pre1962, -1
  br i1 %.not1398.not1556, label %.lr.ph1559, label %._crit_edge1560

.lr.ph1559:                                       ; preds = %890
  %894 = mul nsw i32 %893, %891
  %895 = mul nsw i32 %.pre1962, %891
  %896 = sext i32 %892 to i64
  %897 = sext i32 %894 to i64
  %898 = sext i32 %895 to i64
  %wide.trip.count1847 = sext i32 %891 to i64
  %invariant.gep2063 = getelementptr double, ptr %12, i64 %897
  %invariant.gep2065 = getelementptr double, ptr %12, i64 %898
  %899 = sub nsw i64 %wide.trip.count1847, %896
  %min.iters.check2198 = icmp ult i64 %899, 4
  br i1 %min.iters.check2198, label %scalar.ph2197.preheader, label %vector.memcheck2194

vector.memcheck2194:                              ; preds = %.lr.ph1559
  %900 = sub nsw i64 %898, %897
  %901 = and i64 %900, 2305843009213693948
  %diff.check2195 = icmp eq i64 %901, 0
  br i1 %diff.check2195, label %scalar.ph2197.preheader, label %vector.ph2199

vector.ph2199:                                    ; preds = %vector.memcheck2194
  %n.vec2201 = and i64 %899, -4
  %ind.end2202 = add nsw i64 %n.vec2201, %896
  br label %vector.body2204

vector.body2204:                                  ; preds = %vector.body2204, %vector.ph2199
  %index2205 = phi i64 [ 0, %vector.ph2199 ], [ %index.next2207, %vector.body2204 ]
  %offset.idx2206 = add i64 %index2205, %896
  %902 = getelementptr double, ptr %invariant.gep2063, i64 %offset.idx2206
  %903 = getelementptr i8, ptr %902, i64 16
  store <2 x double> zeroinitializer, ptr %902, align 8, !tbaa !18
  store <2 x double> zeroinitializer, ptr %903, align 8, !tbaa !18
  %904 = getelementptr double, ptr %invariant.gep2065, i64 %offset.idx2206
  %905 = getelementptr i8, ptr %904, i64 16
  store <2 x double> zeroinitializer, ptr %904, align 8, !tbaa !18
  store <2 x double> zeroinitializer, ptr %905, align 8, !tbaa !18
  %index.next2207 = add nuw i64 %index2205, 4
  %906 = icmp eq i64 %index.next2207, %n.vec2201
  br i1 %906, label %middle.block2196, label %vector.body2204, !llvm.loop !51

middle.block2196:                                 ; preds = %vector.body2204
  %cmp.n2208 = icmp eq i64 %899, %n.vec2201
  br i1 %cmp.n2208, label %._crit_edge1560, label %scalar.ph2197.preheader

scalar.ph2197.preheader:                          ; preds = %middle.block2196, %vector.memcheck2194, %.lr.ph1559
  %indvars.iv1844.ph = phi i64 [ %896, %vector.memcheck2194 ], [ %896, %.lr.ph1559 ], [ %ind.end2202, %middle.block2196 ]
  %907 = sub nsw i64 %wide.trip.count1847, %indvars.iv1844.ph
  %xtraiter2424 = and i64 %907, 3
  %lcmp.mod2425.not = icmp eq i64 %xtraiter2424, 0
  br i1 %lcmp.mod2425.not, label %scalar.ph2197.prol.loopexit, label %scalar.ph2197.prol

scalar.ph2197.prol:                               ; preds = %scalar.ph2197.preheader, %scalar.ph2197.prol
  %indvars.iv1844.prol = phi i64 [ %indvars.iv.next1845.prol, %scalar.ph2197.prol ], [ %indvars.iv1844.ph, %scalar.ph2197.preheader ]
  %prol.iter = phi i64 [ %prol.iter.next, %scalar.ph2197.prol ], [ 0, %scalar.ph2197.preheader ]
  %indvars.iv.next1845.prol = add nsw i64 %indvars.iv1844.prol, 1
  %gep2064.prol = getelementptr double, ptr %invariant.gep2063, i64 %indvars.iv1844.prol
  store double 0.000000e+00, ptr %gep2064.prol, align 8, !tbaa !18
  %gep2066.prol = getelementptr double, ptr %invariant.gep2065, i64 %indvars.iv1844.prol
  store double 0.000000e+00, ptr %gep2066.prol, align 8, !tbaa !18
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter2424
  br i1 %prol.iter.cmp.not, label %scalar.ph2197.prol.loopexit, label %scalar.ph2197.prol, !llvm.loop !52

scalar.ph2197.prol.loopexit:                      ; preds = %scalar.ph2197.prol, %scalar.ph2197.preheader
  %indvars.iv1844.unr = phi i64 [ %indvars.iv1844.ph, %scalar.ph2197.preheader ], [ %indvars.iv.next1845.prol, %scalar.ph2197.prol ]
  %908 = sub nsw i64 %indvars.iv1844.ph, %wide.trip.count1847
  %909 = icmp ugt i64 %908, -4
  br i1 %909, label %._crit_edge1560, label %scalar.ph2197

scalar.ph2197:                                    ; preds = %scalar.ph2197.prol.loopexit, %scalar.ph2197
  %indvars.iv1844 = phi i64 [ %indvars.iv.next1845.3, %scalar.ph2197 ], [ %indvars.iv1844.unr, %scalar.ph2197.prol.loopexit ]
  %indvars.iv.next1845 = add nsw i64 %indvars.iv1844, 1
  %gep2064 = getelementptr double, ptr %invariant.gep2063, i64 %indvars.iv1844
  store double 0.000000e+00, ptr %gep2064, align 8, !tbaa !18
  %gep2066 = getelementptr double, ptr %invariant.gep2065, i64 %indvars.iv1844
  store double 0.000000e+00, ptr %gep2066, align 8, !tbaa !18
  %indvars.iv.next1845.1 = add nsw i64 %indvars.iv1844, 2
  %gep2064.1 = getelementptr double, ptr %invariant.gep2063, i64 %indvars.iv.next1845
  store double 0.000000e+00, ptr %gep2064.1, align 8, !tbaa !18
  %gep2066.1 = getelementptr double, ptr %invariant.gep2065, i64 %indvars.iv.next1845
  store double 0.000000e+00, ptr %gep2066.1, align 8, !tbaa !18
  %indvars.iv.next1845.2 = add nsw i64 %indvars.iv1844, 3
  %gep2064.2 = getelementptr double, ptr %invariant.gep2063, i64 %indvars.iv.next1845.1
  store double 0.000000e+00, ptr %gep2064.2, align 8, !tbaa !18
  %gep2066.2 = getelementptr double, ptr %invariant.gep2065, i64 %indvars.iv.next1845.1
  store double 0.000000e+00, ptr %gep2066.2, align 8, !tbaa !18
  %indvars.iv.next1845.3 = add nsw i64 %indvars.iv1844, 4
  %gep2064.3 = getelementptr double, ptr %invariant.gep2063, i64 %indvars.iv.next1845.2
  store double 0.000000e+00, ptr %gep2064.3, align 8, !tbaa !18
  %gep2066.3 = getelementptr double, ptr %invariant.gep2065, i64 %indvars.iv.next1845.2
  store double 0.000000e+00, ptr %gep2066.3, align 8, !tbaa !18
  %exitcond1848.not.3 = icmp eq i64 %indvars.iv.next1845.3, %wide.trip.count1847
  br i1 %exitcond1848.not.3, label %._crit_edge1560, label %scalar.ph2197, !llvm.loop !53

._crit_edge1560:                                  ; preds = %scalar.ph2197.prol.loopexit, %scalar.ph2197, %middle.block2196, %890
  %910 = add nsw i32 %.pre1962, -2
  %911 = sext i32 %910 to i64
  %912 = getelementptr inbounds [128 x i32], ptr %35, i64 0, i64 %911
  store i32 1, ptr %912, align 4, !tbaa !5
  %913 = sext i32 %893 to i64
  %914 = getelementptr inbounds [128 x i32], ptr %35, i64 0, i64 %913
  store i32 -1, ptr %914, align 4, !tbaa !5
  store i32 %893, ptr %37, align 4, !tbaa !5
  br label %.loopexit1492

.loopexit1492:                                    ; preds = %.lr.ph1580.prol.loopexit, %.lr.ph1580, %middle.block2181, %.lr.ph1613.preheader, %802, %441, %._crit_edge1560, %885, %._crit_edge1609
  br i1 %225, label %915, label %992

915:                                              ; preds = %.loopexit1492
  %916 = load i32, ptr %36, align 4
  %not.1461 = xor i1 %285, true
  %917 = sext i1 %not.1461 to i32
  %.01276 = add nsw i32 %916, %917
  %918 = load i32, ptr %37, align 4, !tbaa !5
  %919 = icmp slt i32 %918, 3
  %920 = icmp eq i32 %.01276, 1
  %or.cond9 = select i1 %919, i1 true, i1 %920
  br i1 %or.cond9, label %921, label %990

921:                                              ; preds = %915
  %922 = sub i32 %226, %918
  store i32 %922, ptr %22, align 4, !tbaa !5
  %923 = add nsw i32 %.01276, %.01287
  %924 = sub i32 %923, %918
  store i32 %924, ptr %23, align 4, !tbaa !5
  %925 = load i32, ptr %3, align 4, !tbaa !5
  %926 = mul nsw i32 %925, %918
  %927 = sext i32 %926 to i64
  %gep1670 = getelementptr double, ptr %12, i64 %927
  %928 = add nsw i32 %918, %.01287
  %929 = mul nsw i32 %925, %928
  %930 = sext i32 %929 to i64
  %gep1672 = getelementptr double, ptr %12, i64 %930
  call void @dgemm_(ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.10, ptr noundef nonnull %3, ptr noundef nonnull %22, ptr noundef nonnull %23, ptr noundef nonnull @c_b29, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %gep1670, ptr noundef nonnull %3, ptr noundef nonnull @c_b17, ptr noundef %gep1672, ptr noundef nonnull %3) #6
  store i32 %.01287, ptr %22, align 4, !tbaa !5
  %931 = load i32, ptr %37, align 4, !tbaa !5
  %.not14051626 = icmp sgt i32 %931, %.01287
  br i1 %.not14051626, label %._crit_edge1630, label %.lr.ph1629.preheader

.lr.ph1629.preheader:                             ; preds = %921
  %932 = sext i32 %931 to i64
  br label %.lr.ph1629

.lr.ph1629:                                       ; preds = %.lr.ph1629.preheader, %975
  %indvars.iv1891 = phi i64 [ %932, %.lr.ph1629.preheader ], [ %indvars.iv.next1892, %975 ]
  %933 = add nsw i64 %indvars.iv1891, -1
  %934 = getelementptr inbounds [128 x i32], ptr %35, i64 0, i64 %933
  %935 = load i32, ptr %934, align 4, !tbaa !5
  switch i32 %935, label %.lr.ph1629._crit_edge [
    i32 0, label %936
    i32 1, label %953
  ]

.lr.ph1629._crit_edge:                            ; preds = %.lr.ph1629
  %.pre1970 = load i32, ptr %3, align 4, !tbaa !5
  br label %975

936:                                              ; preds = %.lr.ph1629
  %937 = add nsw i64 %indvars.iv1891, %229
  %938 = load i32, ptr %3, align 4, !tbaa !5
  %939 = sext i32 %938 to i64
  %940 = mul nsw i64 %937, %939
  %gep1623 = getelementptr double, ptr %12, i64 %940
  %941 = call i32 @idamax_(ptr noundef nonnull %3, ptr noundef %gep1623, ptr noundef nonnull @c__1) #6
  %942 = load i32, ptr %3, align 4, !tbaa !5
  %943 = trunc nsw i64 %937 to i32
  %944 = mul nsw i32 %942, %943
  %945 = add nsw i32 %944, %941
  %946 = sext i32 %945 to i64
  %947 = getelementptr inbounds double, ptr %51, i64 %946
  %948 = load double, ptr %947, align 8, !tbaa !18
  store double %948, ptr %25, align 8, !tbaa !18
  %949 = fcmp oge double %948, 0.000000e+00
  %950 = fneg double %948
  %951 = select i1 %949, double %948, double %950
  %952 = fdiv double 1.000000e+00, %951
  store double %952, ptr %33, align 8, !tbaa !18
  br label %975

953:                                              ; preds = %.lr.ph1629
  %954 = load i32, ptr %3, align 4, !tbaa !5
  store i32 %954, ptr %23, align 4, !tbaa !5
  %.not14061614 = icmp slt i32 %954, 1
  br i1 %.not14061614, label %973, label %.lr.ph1618

.lr.ph1618:                                       ; preds = %953
  %955 = add nsw i64 %indvars.iv1891, %229
  %956 = zext nneg i32 %954 to i64
  %957 = mul nsw i64 %955, %956
  %958 = add nsw i64 %955, 1
  %959 = mul nsw i64 %958, %956
  %960 = add nuw i32 %954, 1
  %wide.trip.count1889 = zext i32 %960 to i64
  %invariant.gep2083 = getelementptr double, ptr %51, i64 %957
  %invariant.gep2085 = getelementptr double, ptr %51, i64 %959
  br label %961

961:                                              ; preds = %.lr.ph1618, %961
  %indvars.iv1886 = phi i64 [ 1, %.lr.ph1618 ], [ %indvars.iv.next1887, %961 ]
  %.213311615 = phi double [ 0.000000e+00, %.lr.ph1618 ], [ %972, %961 ]
  %gep2084 = getelementptr double, ptr %invariant.gep2083, i64 %indvars.iv1886
  %962 = load double, ptr %gep2084, align 8, !tbaa !18
  %963 = fcmp oge double %962, 0.000000e+00
  %964 = fneg double %962
  %965 = select i1 %963, double %962, double %964
  %gep2086 = getelementptr double, ptr %invariant.gep2085, i64 %indvars.iv1886
  %966 = load double, ptr %gep2086, align 8, !tbaa !18
  %967 = fcmp oge double %966, 0.000000e+00
  %968 = fneg double %966
  %969 = select i1 %967, double %966, double %968
  %970 = fadd double %965, %969
  %971 = fcmp oge double %.213311615, %970
  %972 = select i1 %971, double %.213311615, double %970
  %indvars.iv.next1887 = add nuw nsw i64 %indvars.iv1886, 1
  %exitcond1890.not = icmp eq i64 %indvars.iv.next1887, %wide.trip.count1889
  br i1 %exitcond1890.not, label %._crit_edge1619, label %961, !llvm.loop !54

._crit_edge1619:                                  ; preds = %961
  store double %962, ptr %25, align 8, !tbaa !18
  br label %973

973:                                              ; preds = %._crit_edge1619, %953
  %.21331.lcssa = phi double [ %972, %._crit_edge1619 ], [ 0.000000e+00, %953 ]
  %974 = fdiv double 1.000000e+00, %.21331.lcssa
  store double %974, ptr %33, align 8, !tbaa !18
  br label %975

975:                                              ; preds = %.lr.ph1629._crit_edge, %973, %936
  %976 = phi i32 [ %.pre1970, %.lr.ph1629._crit_edge ], [ %954, %973 ], [ %942, %936 ]
  %977 = add nsw i64 %indvars.iv1891, %229
  %978 = sext i32 %976 to i64
  %979 = mul nsw i64 %977, %978
  %gep1625 = getelementptr double, ptr %12, i64 %979
  call void @dscal_(ptr noundef nonnull %3, ptr noundef nonnull %33, ptr noundef %gep1625, ptr noundef nonnull @c__1) #6
  %indvars.iv.next1892 = add nsw i64 %indvars.iv1891, 1
  %980 = load i32, ptr %22, align 4, !tbaa !5
  %981 = sext i32 %980 to i64
  %.not1405.not = icmp slt i64 %indvars.iv1891, %981
  br i1 %.not1405.not, label %.lr.ph1629, label %._crit_edge1630.loopexit, !llvm.loop !55

._crit_edge1630.loopexit:                         ; preds = %975
  %.pre1971 = load i32, ptr %37, align 4, !tbaa !5
  br label %._crit_edge1630

._crit_edge1630:                                  ; preds = %._crit_edge1630.loopexit, %921
  %982 = phi i32 [ %.pre1971, %._crit_edge1630.loopexit ], [ %931, %921 ]
  %983 = sub i32 %226, %982
  store i32 %983, ptr %22, align 4, !tbaa !5
  %984 = add nsw i32 %982, %.01287
  %985 = load i32, ptr %3, align 4, !tbaa !5
  %986 = mul nsw i32 %985, %984
  %987 = sext i32 %986 to i64
  %gep1674 = getelementptr double, ptr %12, i64 %987
  %988 = mul nsw i32 %.01276, %48
  %989 = sext i32 %988 to i64
  %gep1676 = getelementptr double, ptr %invariant.gep1633, i64 %989
  call void @dlacpy_(ptr noundef nonnull @.str.7, ptr noundef nonnull %3, ptr noundef nonnull %22, ptr noundef %gep1674, ptr noundef nonnull %3, ptr noundef %gep1676, ptr noundef nonnull %9) #6
  store i32 %.01287, ptr %37, align 4, !tbaa !5
  br label %992

990:                                              ; preds = %915
  %991 = add nsw i32 %918, -1
  store i32 %991, ptr %37, align 4, !tbaa !5
  br label %992

992:                                              ; preds = %.thread1449, %._crit_edge1630, %990, %.loopexit1492
  %not.1462 = xor i1 %285, true
  %spec.select1411 = sext i1 %not.1462 to i32
  %spec.select1412.v = select i1 %285, i32 -1, i32 -2
  %spec.select1412 = add nsw i32 %spec.select1412.v, %.012781679
  %.pre1972 = load i32, ptr %36, align 4, !tbaa !5
  br label %993

993:                                              ; preds = %992, %233, %.thread1420, %249
  %994 = phi i32 [ %storemerge13721677, %.thread1420 ], [ %storemerge13721677, %249 ], [ %storemerge13721677, %233 ], [ %.pre1972, %992 ]
  %.21283 = phi i32 [ 0, %.thread1420 ], [ -1, %249 ], [ 1, %233 ], [ %spec.select1411, %992 ]
  %.11279 = phi i32 [ %.012781679, %.thread1420 ], [ %.012781679, %249 ], [ %.012781679, %233 ], [ %spec.select1412, %992 ]
  %995 = add nsw i32 %994, -1
  store i32 %995, ptr %36, align 4, !tbaa !5
  %996 = icmp sgt i32 %994, 1
  br i1 %996, label %233, label %.loopexit1495, !llvm.loop !56

.loopexit1495:                                    ; preds = %993, %217, %216
  br i1 %59, label %997, label %.loopexit1491

997:                                              ; preds = %.loopexit1495
  store i32 1, ptr %37, align 4, !tbaa !5
  %998 = load i32, ptr %3, align 4, !tbaa !5
  store i32 %998, ptr %22, align 4, !tbaa !5
  %invariant.gep1761 = getelementptr i8, ptr %47, i64 8
  store i32 1, ptr %36, align 4, !tbaa !5
  %.not13741793 = icmp slt i32 %998, 1
  br i1 %.not13741793, label %.loopexit1491, label %.lr.ph1798

.lr.ph1798:                                       ; preds = %997
  %.not1375 = icmp eq i32 %62, 0
  %999 = add i32 %42, 1
  %1000 = getelementptr inbounds i8, ptr %32, i64 16
  %1001 = getelementptr inbounds i8, ptr %32, i64 8
  %1002 = getelementptr inbounds i8, ptr %32, i64 24
  %1003 = icmp eq i32 %.01287, 1
  %1004 = icmp sgt i32 %.01287, 1
  %1005 = add nsw i32 %.01287, -1
  %1006 = add nuw nsw i32 %.01287, 1
  %1007 = sext i32 %42 to i64
  %1008 = shl nsw i64 %46, 3
  %scevgep1940 = getelementptr i8, ptr %6, i64 %1008
  %1009 = sext i32 %.01287 to i64
  %1010 = add i64 %17, 8
  %scevgep2324 = getelementptr i8, ptr %12, i64 -8
  %scevgep2327 = getelementptr i8, ptr %12, i64 -8
  %scevgep2331 = getelementptr i8, ptr %4, i64 -16
  %scevgep2333 = getelementptr i8, ptr %4, i64 -8
  %scevgep2336 = getelementptr i8, ptr %4, i64 -16
  %scevgep2338 = getelementptr i8, ptr %4, i64 -8
  %ident.check2322.not = icmp eq i32 %42, 1
  %ident.check.not = icmp eq i32 %42, 1
  br label %1011

1011:                                             ; preds = %.lr.ph1798, %2073
  %1012 = phi i32 [ %998, %.lr.ph1798 ], [ %2074, %2073 ]
  %.212801796 = phi i32 [ 1, %.lr.ph1798 ], [ %.3, %2073 ]
  %.312841795 = phi i32 [ 0, %.lr.ph1798 ], [ %.5, %2073 ]
  %storemerge13731794 = phi i32 [ 1, %.lr.ph1798 ], [ %2076, %2073 ]
  %1013 = icmp eq i32 %.312841795, 1
  br i1 %1013, label %2073, label %1014

1014:                                             ; preds = %1011
  %1015 = load i32, ptr %3, align 4, !tbaa !5
  %1016 = icmp eq i32 %storemerge13731794, %1015
  br i1 %1016, label %1025, label %1017

1017:                                             ; preds = %1014
  %1018 = add nsw i32 %storemerge13731794, 1
  %1019 = mul nsw i32 %storemerge13731794, %42
  %1020 = add nsw i32 %1018, %1019
  %1021 = sext i32 %1020 to i64
  %1022 = getelementptr inbounds double, ptr %44, i64 %1021
  %1023 = load double, ptr %1022, align 8, !tbaa !18
  %1024 = fcmp oeq double %1023, 0.000000e+00
  %not. = xor i1 %1024, true
  %.1414 = zext i1 %not. to i32
  br label %1025

1025:                                             ; preds = %1017, %1014
  %.not1377 = phi i1 [ true, %1014 ], [ %1024, %1017 ]
  %.4 = phi i32 [ 0, %1014 ], [ %.1414, %1017 ]
  br i1 %.not1375, label %1030, label %1026

1026:                                             ; preds = %1025
  %1027 = sext i32 %storemerge13731794 to i64
  %1028 = getelementptr inbounds i32, ptr %41, i64 %1027
  %1029 = load i32, ptr %1028, align 4, !tbaa !5
  %.not1376 = icmp eq i32 %1029, 0
  br i1 %.not1376, label %2073, label %1030

1030:                                             ; preds = %1026, %1025
  %1031 = mul i32 %storemerge13731794, %999
  %1032 = sext i32 %1031 to i64
  %1033 = getelementptr inbounds double, ptr %44, i64 %1032
  %1034 = load double, ptr %1033, align 8, !tbaa !18
  store double %1034, ptr %39, align 8, !tbaa !18
  store double 0.000000e+00, ptr %38, align 8, !tbaa !18
  br i1 %.not1377, label %1058, label %1035

1035:                                             ; preds = %1030
  %1036 = add nsw i32 %storemerge13731794, 1
  %1037 = mul nsw i32 %1036, %42
  %1038 = add nsw i32 %1037, %storemerge13731794
  %1039 = sext i32 %1038 to i64
  %1040 = getelementptr inbounds double, ptr %44, i64 %1039
  %1041 = load double, ptr %1040, align 8, !tbaa !18
  %1042 = fcmp oge double %1041, 0.000000e+00
  %1043 = fneg double %1041
  %1044 = select i1 %1042, double %1041, double %1043
  %1045 = call double @sqrt(double noundef %1044) #6
  %1046 = load i32, ptr %36, align 4, !tbaa !5
  %1047 = add nsw i32 %1046, 1
  %1048 = mul nsw i32 %1046, %42
  %1049 = add nsw i32 %1047, %1048
  %1050 = sext i32 %1049 to i64
  %1051 = getelementptr inbounds double, ptr %44, i64 %1050
  %1052 = load double, ptr %1051, align 8, !tbaa !18
  %1053 = fcmp oge double %1052, 0.000000e+00
  %1054 = fneg double %1052
  %1055 = select i1 %1053, double %1052, double %1054
  %1056 = call double @sqrt(double noundef %1055) #6
  %1057 = fmul double %1045, %1056
  store double %1057, ptr %38, align 8, !tbaa !18
  %.pre1973 = load double, ptr %39, align 8
  br label %1058

1058:                                             ; preds = %1035, %1030
  %1059 = phi double [ %1057, %1035 ], [ 0.000000e+00, %1030 ]
  %1060 = phi double [ %.pre1973, %1035 ], [ %1034, %1030 ]
  %1061 = fcmp oge double %1060, 0.000000e+00
  %1062 = fneg double %1060
  %1063 = select i1 %1061, double %1060, double %1062
  %1064 = fcmp oge double %1059, 0.000000e+00
  %1065 = fneg double %1059
  %1066 = select i1 %1064, double %1059, double %1065
  %1067 = fadd double %1063, %1066
  %1068 = fmul double %182, %1067
  store double %1068, ptr %25, align 8, !tbaa !18
  %1069 = fcmp oge double %1068, %187
  %1070 = select i1 %1069, double %1068, double %187
  store double %1070, ptr %30, align 8, !tbaa !18
  %1071 = load i32, ptr %36, align 4, !tbaa !5
  br i1 %.not1377, label %1072, label %1381

1072:                                             ; preds = %1058
  %1073 = load i32, ptr %37, align 4, !tbaa !5
  %1074 = load i32, ptr %3, align 4, !tbaa !5
  %1075 = mul nsw i32 %1074, %1073
  %1076 = add nsw i32 %1075, %1071
  %1077 = sext i32 %1076 to i64
  %1078 = getelementptr inbounds double, ptr %51, i64 %1077
  store double 1.000000e+00, ptr %1078, align 8, !tbaa !18
  %.not1384.not1720 = icmp slt i32 %1071, %1074
  br i1 %.not1384.not1720, label %.lr.ph1723.preheader, label %._crit_edge1724.thread

._crit_edge1724.thread:                           ; preds = %1072
  store i32 %1074, ptr %23, align 4, !tbaa !5
  br label %._crit_edge1734

.lr.ph1723.preheader:                             ; preds = %1072
  %1079 = sext i32 %1071 to i64
  %1080 = sext i32 %1075 to i64
  %wide.trip.count1930 = sext i32 %1074 to i64
  %invariant.gep2111 = getelementptr double, ptr %44, i64 %1079
  %invariant.gep2113 = getelementptr double, ptr %12, i64 %1080
  %1081 = sub nsw i64 %wide.trip.count1930, %1079
  %min.iters.check2278 = icmp ugt i64 %1081, 5
  %or.cond2397 = select i1 %min.iters.check2278, i1 %ident.check.not, i1 false
  br i1 %or.cond2397, label %vector.memcheck2274, label %.lr.ph1723.preheader2399

vector.memcheck2274:                              ; preds = %.lr.ph1723.preheader
  %1082 = shl nsw i64 %1080, 3
  %1083 = shl nsw i64 %1079, 3
  %1084 = add i64 %1010, %1082
  %1085 = add i64 %1083, %16
  %1086 = sub i64 %1084, %1085
  %diff.check2275 = icmp ult i64 %1086, 32
  br i1 %diff.check2275, label %.lr.ph1723.preheader2399, label %vector.ph2279

vector.ph2279:                                    ; preds = %vector.memcheck2274
  %n.vec2281 = and i64 %1081, -4
  %ind.end2282 = add nsw i64 %n.vec2281, %1079
  br label %vector.body2284

vector.body2284:                                  ; preds = %vector.body2284, %vector.ph2279
  %index2285 = phi i64 [ 0, %vector.ph2279 ], [ %index.next2289, %vector.body2284 ]
  %offset.idx2286 = add i64 %index2285, %1079
  %1087 = getelementptr double, ptr %invariant.gep2111, i64 %offset.idx2286
  %1088 = getelementptr i8, ptr %1087, i64 8
  %1089 = getelementptr i8, ptr %1087, i64 24
  %wide.load2287 = load <2 x double>, ptr %1088, align 8, !tbaa !18
  %wide.load2288 = load <2 x double>, ptr %1089, align 8, !tbaa !18
  %1090 = fneg <2 x double> %wide.load2287
  %1091 = fneg <2 x double> %wide.load2288
  %1092 = getelementptr double, ptr %invariant.gep2113, i64 %offset.idx2286
  %1093 = getelementptr i8, ptr %1092, i64 16
  store <2 x double> %1090, ptr %1092, align 8, !tbaa !18
  store <2 x double> %1091, ptr %1093, align 8, !tbaa !18
  %index.next2289 = add nuw i64 %index2285, 4
  %1094 = icmp eq i64 %index.next2289, %n.vec2281
  br i1 %1094, label %middle.block2276, label %vector.body2284, !llvm.loop !57

middle.block2276:                                 ; preds = %vector.body2284
  %cmp.n2290 = icmp eq i64 %1081, %n.vec2281
  br i1 %cmp.n2290, label %._crit_edge1724, label %.lr.ph1723.preheader2399

.lr.ph1723.preheader2399:                         ; preds = %middle.block2276, %vector.memcheck2274, %.lr.ph1723.preheader
  %indvars.iv1927.ph = phi i64 [ %1079, %vector.memcheck2274 ], [ %1079, %.lr.ph1723.preheader ], [ %ind.end2282, %middle.block2276 ]
  %1095 = sub nsw i64 %wide.trip.count1930, %indvars.iv1927.ph
  %xtraiter2438 = and i64 %1095, 3
  %lcmp.mod2439.not = icmp eq i64 %xtraiter2438, 0
  br i1 %lcmp.mod2439.not, label %.lr.ph1723.prol.loopexit, label %.lr.ph1723.prol

.lr.ph1723.prol:                                  ; preds = %.lr.ph1723.preheader2399, %.lr.ph1723.prol
  %indvars.iv1927.prol = phi i64 [ %indvars.iv.next1928.prol, %.lr.ph1723.prol ], [ %indvars.iv1927.ph, %.lr.ph1723.preheader2399 ]
  %prol.iter2440 = phi i64 [ %prol.iter2440.next, %.lr.ph1723.prol ], [ 0, %.lr.ph1723.preheader2399 ]
  %indvars.iv.next1928.prol = add nsw i64 %indvars.iv1927.prol, 1
  %1096 = mul nsw i64 %indvars.iv.next1928.prol, %1007
  %gep2112.prol = getelementptr double, ptr %invariant.gep2111, i64 %1096
  %1097 = load double, ptr %gep2112.prol, align 8, !tbaa !18
  %1098 = fneg double %1097
  %gep2114.prol = getelementptr double, ptr %invariant.gep2113, i64 %indvars.iv1927.prol
  store double %1098, ptr %gep2114.prol, align 8, !tbaa !18
  %prol.iter2440.next = add i64 %prol.iter2440, 1
  %prol.iter2440.cmp.not = icmp eq i64 %prol.iter2440.next, %xtraiter2438
  br i1 %prol.iter2440.cmp.not, label %.lr.ph1723.prol.loopexit, label %.lr.ph1723.prol, !llvm.loop !58

.lr.ph1723.prol.loopexit:                         ; preds = %.lr.ph1723.prol, %.lr.ph1723.preheader2399
  %indvars.iv1927.unr = phi i64 [ %indvars.iv1927.ph, %.lr.ph1723.preheader2399 ], [ %indvars.iv.next1928.prol, %.lr.ph1723.prol ]
  %1099 = sub nsw i64 %indvars.iv1927.ph, %wide.trip.count1930
  %1100 = icmp ugt i64 %1099, -4
  br i1 %1100, label %._crit_edge1724, label %.lr.ph1723

.lr.ph1723:                                       ; preds = %.lr.ph1723.prol.loopexit, %.lr.ph1723
  %indvars.iv1927 = phi i64 [ %indvars.iv.next1928.3, %.lr.ph1723 ], [ %indvars.iv1927.unr, %.lr.ph1723.prol.loopexit ]
  %indvars.iv.next1928 = add nsw i64 %indvars.iv1927, 1
  %1101 = mul nsw i64 %indvars.iv.next1928, %1007
  %gep2112 = getelementptr double, ptr %invariant.gep2111, i64 %1101
  %1102 = load double, ptr %gep2112, align 8, !tbaa !18
  %1103 = fneg double %1102
  %gep2114 = getelementptr double, ptr %invariant.gep2113, i64 %indvars.iv1927
  store double %1103, ptr %gep2114, align 8, !tbaa !18
  %indvars.iv.next1928.1 = add nsw i64 %indvars.iv1927, 2
  %1104 = mul nsw i64 %indvars.iv.next1928.1, %1007
  %gep2112.1 = getelementptr double, ptr %invariant.gep2111, i64 %1104
  %1105 = load double, ptr %gep2112.1, align 8, !tbaa !18
  %1106 = fneg double %1105
  %gep2114.1 = getelementptr double, ptr %invariant.gep2113, i64 %indvars.iv.next1928
  store double %1106, ptr %gep2114.1, align 8, !tbaa !18
  %indvars.iv.next1928.2 = add nsw i64 %indvars.iv1927, 3
  %1107 = mul nsw i64 %indvars.iv.next1928.2, %1007
  %gep2112.2 = getelementptr double, ptr %invariant.gep2111, i64 %1107
  %1108 = load double, ptr %gep2112.2, align 8, !tbaa !18
  %1109 = fneg double %1108
  %gep2114.2 = getelementptr double, ptr %invariant.gep2113, i64 %indvars.iv.next1928.1
  store double %1109, ptr %gep2114.2, align 8, !tbaa !18
  %indvars.iv.next1928.3 = add nsw i64 %indvars.iv1927, 4
  %1110 = mul nsw i64 %indvars.iv.next1928.3, %1007
  %gep2112.3 = getelementptr double, ptr %invariant.gep2111, i64 %1110
  %1111 = load double, ptr %gep2112.3, align 8, !tbaa !18
  %1112 = fneg double %1111
  %gep2114.3 = getelementptr double, ptr %invariant.gep2113, i64 %indvars.iv.next1928.2
  store double %1112, ptr %gep2114.3, align 8, !tbaa !18
  %exitcond1931.not.3 = icmp eq i64 %indvars.iv.next1928.3, %wide.trip.count1930
  br i1 %exitcond1931.not.3, label %._crit_edge1724, label %.lr.ph1723, !llvm.loop !59

._crit_edge1724:                                  ; preds = %.lr.ph1723.prol.loopexit, %.lr.ph1723, %middle.block2276
  store i32 %1074, ptr %23, align 4, !tbaa !5
  br i1 %.not1384.not1720, label %.lr.ph1733.preheader, label %._crit_edge1734

.lr.ph1733.preheader:                             ; preds = %._crit_edge1724
  %1113 = add nsw i32 %1071, 1
  %1114 = sext i32 %1071 to i64
  br label %.lr.ph1733

.lr.ph1733:                                       ; preds = %.lr.ph1733.preheader, %1290
  %1115 = phi i32 [ %1073, %.lr.ph1733.preheader ], [ %1291, %1290 ]
  %1116 = phi i32 [ %1074, %.lr.ph1733.preheader ], [ %1292, %1290 ]
  %indvars.iv1932 = phi i64 [ %1114, %.lr.ph1733.preheader ], [ %indvars.iv.next1933, %1290 ]
  %.012921730 = phi double [ %189, %.lr.ph1733.preheader ], [ %.11293, %1290 ]
  %.613151728 = phi i32 [ %1113, %.lr.ph1733.preheader ], [ %.81317, %1290 ]
  %.013211727 = phi double [ 1.000000e+00, %.lr.ph1733.preheader ], [ %.31324, %1290 ]
  %indvars1934 = trunc i64 %indvars.iv1932 to i32
  %indvars.iv.next1933 = add nsw i64 %indvars.iv1932, 1
  %indvars = trunc i64 %indvars.iv.next1933 to i32
  %1117 = sext i32 %.613151728 to i64
  %1118 = icmp slt i64 %indvars.iv.next1933, %1117
  br i1 %1118, label %1290, label %1119

1119:                                             ; preds = %.lr.ph1733
  %1120 = add nsw i64 %indvars.iv1932, 2
  %1121 = add nsw i32 %indvars1934, 2
  %1122 = sext i32 %1116 to i64
  %1123 = icmp slt i64 %indvars.iv.next1933, %1122
  br i1 %1123, label %1124, label %..thread1451_crit_edge

..thread1451_crit_edge:                           ; preds = %1119
  %.pre1984.pre = load i32, ptr %36, align 4, !tbaa !5
  br label %.thread1451

1124:                                             ; preds = %1119
  %1125 = mul nsw i64 %indvars.iv.next1933, %1007
  %1126 = getelementptr double, ptr %44, i64 %1125
  %1127 = getelementptr double, ptr %1126, i64 %1120
  %1128 = load double, ptr %1127, align 8, !tbaa !18
  %1129 = fcmp une double %1128, 0.000000e+00
  %.pre1984.pre1997 = load i32, ptr %36, align 4, !tbaa !5
  br i1 %1129, label %1130, label %.thread1451

1130:                                             ; preds = %1124
  %1131 = getelementptr double, ptr %12, i64 %indvars.iv1932
  %1132 = load double, ptr %1131, align 8, !tbaa !18
  store double %1132, ptr %25, align 8, !tbaa !18
  %1133 = getelementptr inbounds double, ptr %51, i64 %1120
  %1134 = load double, ptr %1133, align 8, !tbaa !18
  %1135 = fcmp oge double %1132, %1134
  %1136 = select i1 %1135, double %1132, double %1134
  %1137 = fcmp ogt double %1136, %.012921730
  br i1 %1137, label %1202, label %1210

.thread1451:                                      ; preds = %..thread1451_crit_edge, %1124
  %.pre1984 = phi i32 [ %.pre1984.pre, %..thread1451_crit_edge ], [ %.pre1984.pre1997, %1124 ]
  %1138 = getelementptr double, ptr %12, i64 %indvars.iv1932
  %1139 = load double, ptr %1138, align 8, !tbaa !18
  %1140 = fcmp ogt double %1139, %.012921730
  br i1 %1140, label %1141, label %1149

1141:                                             ; preds = %.thread1451
  %1142 = fdiv double 1.000000e+00, %.013211727
  store double %1142, ptr %40, align 8, !tbaa !18
  %1143 = add i32 %1116, 1
  %1144 = sub i32 %1143, %.pre1984
  store i32 %1144, ptr %24, align 4, !tbaa !5
  %1145 = mul nsw i32 %1115, %1116
  %1146 = add nsw i32 %1145, %.pre1984
  %1147 = sext i32 %1146 to i64
  %1148 = getelementptr inbounds double, ptr %51, i64 %1147
  call void @dscal_(ptr noundef nonnull %24, ptr noundef nonnull %40, ptr noundef nonnull %1148, ptr noundef nonnull @c__1) #6
  %.pre1983 = load i32, ptr %36, align 4, !tbaa !5
  %.pre1985 = load i32, ptr %37, align 4, !tbaa !5
  %.pre1986 = load i32, ptr %3, align 4, !tbaa !5
  br label %1149

1149:                                             ; preds = %1141, %.thread1451
  %1150 = phi i32 [ %.pre1986, %1141 ], [ %1116, %.thread1451 ]
  %1151 = phi i32 [ %.pre1985, %1141 ], [ %1115, %.thread1451 ]
  %1152 = phi i32 [ %.pre1983, %1141 ], [ %.pre1984, %.thread1451 ]
  %.11322 = phi double [ 1.000000e+00, %1141 ], [ %.013211727, %.thread1451 ]
  %1153 = sub i32 %indvars1934, %1152
  store i32 %1153, ptr %24, align 4, !tbaa !5
  %1154 = add nsw i32 %1152, 1
  %1155 = mul nsw i64 %indvars.iv.next1933, %1007
  %1156 = mul nsw i32 %42, %indvars
  %1157 = sext i32 %1154 to i64
  %1158 = getelementptr double, ptr %44, i64 %1155
  %1159 = getelementptr double, ptr %1158, i64 %1157
  %1160 = mul nsw i32 %1150, %1151
  %1161 = add nsw i32 %1160, %1154
  %1162 = sext i32 %1161 to i64
  %1163 = getelementptr inbounds double, ptr %51, i64 %1162
  %1164 = call double @ddot_(ptr noundef nonnull %24, ptr noundef %1159, ptr noundef nonnull @c__1, ptr noundef nonnull %1163, ptr noundef nonnull @c__1) #6
  %1165 = load i32, ptr %37, align 4, !tbaa !5
  %1166 = load i32, ptr %3, align 4, !tbaa !5
  %1167 = mul nsw i32 %1166, %1165
  %1168 = sext i32 %1167 to i64
  %1169 = getelementptr double, ptr %12, i64 %indvars.iv1932
  %1170 = getelementptr double, ptr %1169, i64 %1168
  %1171 = load double, ptr %1170, align 8, !tbaa !18
  %1172 = fsub double %1171, %1164
  store double %1172, ptr %1170, align 8, !tbaa !18
  %1173 = sext i32 %1156 to i64
  %1174 = getelementptr double, ptr %44, i64 %indvars.iv.next1933
  %1175 = getelementptr double, ptr %1174, i64 %1173
  call void @dlaln2_(ptr noundef nonnull @c_false, ptr noundef nonnull @c__1, ptr noundef nonnull @c__1, ptr noundef nonnull %30, ptr noundef nonnull @c_b29, ptr noundef %1175, ptr noundef nonnull %5, ptr noundef nonnull @c_b29, ptr noundef nonnull @c_b29, ptr noundef nonnull %1170, ptr noundef nonnull %3, ptr noundef nonnull %39, ptr noundef nonnull @c_b17, ptr noundef nonnull %32, ptr noundef nonnull @c__2, ptr noundef nonnull %31, ptr noundef nonnull %34, ptr noundef nonnull %27) #6
  %1176 = load double, ptr %31, align 8, !tbaa !18
  %1177 = fcmp une double %1176, 1.000000e+00
  br i1 %1177, label %1178, label %1188

1178:                                             ; preds = %1149
  %1179 = load i32, ptr %3, align 4, !tbaa !5
  %1180 = load i32, ptr %36, align 4, !tbaa !5
  %1181 = add i32 %1179, 1
  %1182 = sub i32 %1181, %1180
  store i32 %1182, ptr %24, align 4, !tbaa !5
  %1183 = load i32, ptr %37, align 4, !tbaa !5
  %1184 = mul nsw i32 %1183, %1179
  %1185 = add nsw i32 %1184, %1180
  %1186 = sext i32 %1185 to i64
  %1187 = getelementptr inbounds double, ptr %51, i64 %1186
  call void @dscal_(ptr noundef nonnull %24, ptr noundef nonnull %31, ptr noundef nonnull %1187, ptr noundef nonnull @c__1) #6
  br label %1188

1188:                                             ; preds = %1178, %1149
  %1189 = load double, ptr %32, align 16, !tbaa !18
  %1190 = load i32, ptr %37, align 4, !tbaa !5
  %1191 = load i32, ptr %3, align 4, !tbaa !5
  %1192 = mul nsw i32 %1191, %1190
  %1193 = sext i32 %1192 to i64
  %1194 = getelementptr double, ptr %12, i64 %indvars.iv1932
  %1195 = getelementptr double, ptr %1194, i64 %1193
  store double %1189, ptr %1195, align 8, !tbaa !18
  store double %1189, ptr %25, align 8, !tbaa !18
  %1196 = fcmp oge double %1189, 0.000000e+00
  %1197 = fneg double %1189
  %1198 = select i1 %1196, double %1189, double %1197
  %1199 = fcmp oge double %1198, %.11322
  %1200 = select i1 %1199, double %1198, double %.11322
  %1201 = fdiv double %189, %1200
  br label %1290

1202:                                             ; preds = %1130
  %1203 = fdiv double 1.000000e+00, %.013211727
  store double %1203, ptr %40, align 8, !tbaa !18
  %1204 = add i32 %1116, 1
  %1205 = sub i32 %1204, %.pre1984.pre1997
  store i32 %1205, ptr %24, align 4, !tbaa !5
  %1206 = mul nsw i32 %1115, %1116
  %1207 = add nsw i32 %1206, %.pre1984.pre1997
  %1208 = sext i32 %1207 to i64
  %1209 = getelementptr inbounds double, ptr %51, i64 %1208
  call void @dscal_(ptr noundef nonnull %24, ptr noundef nonnull %40, ptr noundef nonnull %1209, ptr noundef nonnull @c__1) #6
  %.pre1987 = load i32, ptr %36, align 4, !tbaa !5
  %.pre1989 = load i32, ptr %37, align 4, !tbaa !5
  %.pre1990 = load i32, ptr %3, align 4, !tbaa !5
  br label %1210

1210:                                             ; preds = %1202, %1130
  %1211 = phi i32 [ %.pre1990, %1202 ], [ %1116, %1130 ]
  %1212 = phi i32 [ %.pre1989, %1202 ], [ %1115, %1130 ]
  %1213 = phi i32 [ %.pre1987, %1202 ], [ %.pre1984.pre1997, %1130 ]
  %.21323 = phi double [ 1.000000e+00, %1202 ], [ %.013211727, %1130 ]
  %1214 = sub i32 %indvars1934, %1213
  store i32 %1214, ptr %24, align 4, !tbaa !5
  %1215 = add nsw i32 %1213, 1
  %1216 = mul nsw i32 %42, %indvars
  %1217 = sext i32 %1215 to i64
  %1218 = getelementptr double, ptr %44, i64 %1125
  %1219 = getelementptr double, ptr %1218, i64 %1217
  %1220 = mul nsw i32 %1211, %1212
  %1221 = add nsw i32 %1220, %1215
  %1222 = sext i32 %1221 to i64
  %1223 = getelementptr inbounds double, ptr %51, i64 %1222
  %1224 = call double @ddot_(ptr noundef nonnull %24, ptr noundef %1219, ptr noundef nonnull @c__1, ptr noundef nonnull %1223, ptr noundef nonnull @c__1) #6
  %1225 = load i32, ptr %37, align 4, !tbaa !5
  %1226 = load i32, ptr %3, align 4, !tbaa !5
  %1227 = mul nsw i32 %1226, %1225
  %1228 = sext i32 %1227 to i64
  %1229 = getelementptr double, ptr %12, i64 %indvars.iv1932
  %1230 = getelementptr double, ptr %1229, i64 %1228
  %1231 = load double, ptr %1230, align 8, !tbaa !18
  %1232 = fsub double %1231, %1224
  store double %1232, ptr %1230, align 8, !tbaa !18
  %1233 = load i32, ptr %36, align 4, !tbaa !5
  %1234 = sub i32 %indvars1934, %1233
  store i32 %1234, ptr %24, align 4, !tbaa !5
  %1235 = add nsw i32 %1233, 1
  %1236 = mul nsw i64 %1120, %1007
  %1237 = sext i32 %1235 to i64
  %1238 = getelementptr double, ptr %44, i64 %1236
  %1239 = getelementptr double, ptr %1238, i64 %1237
  %1240 = add nsw i32 %1235, %1227
  %1241 = sext i32 %1240 to i64
  %1242 = getelementptr inbounds double, ptr %51, i64 %1241
  %1243 = call double @ddot_(ptr noundef nonnull %24, ptr noundef %1239, ptr noundef nonnull @c__1, ptr noundef nonnull %1242, ptr noundef nonnull @c__1) #6
  %1244 = load i32, ptr %37, align 4, !tbaa !5
  %1245 = load i32, ptr %3, align 4, !tbaa !5
  %1246 = mul nsw i32 %1245, %1244
  %1247 = sext i32 %1246 to i64
  %1248 = getelementptr double, ptr %51, i64 %1120
  %1249 = getelementptr double, ptr %1248, i64 %1247
  %1250 = load double, ptr %1249, align 8, !tbaa !18
  %1251 = fsub double %1250, %1243
  store double %1251, ptr %1249, align 8, !tbaa !18
  %1252 = sext i32 %1216 to i64
  %1253 = getelementptr double, ptr %44, i64 %indvars.iv.next1933
  %1254 = getelementptr double, ptr %1253, i64 %1252
  %1255 = getelementptr double, ptr %12, i64 %indvars.iv1932
  %1256 = getelementptr double, ptr %1255, i64 %1247
  call void @dlaln2_(ptr noundef nonnull @c_true, ptr noundef nonnull @c__2, ptr noundef nonnull @c__1, ptr noundef nonnull %30, ptr noundef nonnull @c_b29, ptr noundef %1254, ptr noundef nonnull %5, ptr noundef nonnull @c_b29, ptr noundef nonnull @c_b29, ptr noundef nonnull %1256, ptr noundef nonnull %3, ptr noundef nonnull %39, ptr noundef nonnull @c_b17, ptr noundef nonnull %32, ptr noundef nonnull @c__2, ptr noundef nonnull %31, ptr noundef nonnull %34, ptr noundef nonnull %27) #6
  %1257 = load double, ptr %31, align 8, !tbaa !18
  %1258 = fcmp une double %1257, 1.000000e+00
  br i1 %1258, label %1259, label %1269

1259:                                             ; preds = %1210
  %1260 = load i32, ptr %3, align 4, !tbaa !5
  %1261 = load i32, ptr %36, align 4, !tbaa !5
  %1262 = add i32 %1260, 1
  %1263 = sub i32 %1262, %1261
  store i32 %1263, ptr %24, align 4, !tbaa !5
  %1264 = load i32, ptr %37, align 4, !tbaa !5
  %1265 = mul nsw i32 %1264, %1260
  %1266 = add nsw i32 %1265, %1261
  %1267 = sext i32 %1266 to i64
  %1268 = getelementptr inbounds double, ptr %51, i64 %1267
  call void @dscal_(ptr noundef nonnull %24, ptr noundef nonnull %31, ptr noundef nonnull %1268, ptr noundef nonnull @c__1) #6
  br label %1269

1269:                                             ; preds = %1259, %1210
  %1270 = load i32, ptr %37, align 4, !tbaa !5
  %1271 = load i32, ptr %3, align 4, !tbaa !5
  %1272 = mul nsw i32 %1271, %1270
  %1273 = sext i32 %1272 to i64
  %1274 = getelementptr double, ptr %12, i64 %indvars.iv1932
  %1275 = getelementptr double, ptr %1274, i64 %1273
  %1276 = load <2 x double>, ptr %32, align 16, !tbaa !18
  store <2 x double> %1276, ptr %1275, align 8, !tbaa !18
  %1277 = extractelement <2 x double> %1276, i64 0
  store double %1277, ptr %25, align 8, !tbaa !18
  %1278 = fcmp oge <2 x double> %1276, zeroinitializer
  %1279 = fneg <2 x double> %1276
  %1280 = select <2 x i1> %1278, <2 x double> %1276, <2 x double> %1279
  %1281 = extractelement <2 x double> %1280, i64 0
  %1282 = extractelement <2 x double> %1280, i64 1
  %1283 = fcmp oge double %1281, %1282
  %1284 = select i1 %1283, double %1281, double %1282
  %1285 = fcmp oge double %1284, %.21323
  %1286 = select i1 %1285, double %1284, double %.21323
  %1287 = fdiv double %189, %1286
  %1288 = trunc i64 %indvars.iv1932 to i32
  %1289 = add i32 %1288, 3
  br label %1290

1290:                                             ; preds = %.lr.ph1733, %1269, %1188
  %1291 = phi i32 [ %1115, %.lr.ph1733 ], [ %1190, %1188 ], [ %1270, %1269 ]
  %1292 = phi i32 [ %1116, %.lr.ph1733 ], [ %1191, %1188 ], [ %1271, %1269 ]
  %.31324 = phi double [ %.013211727, %.lr.ph1733 ], [ %1200, %1188 ], [ %1286, %1269 ]
  %.81317 = phi i32 [ %.613151728, %.lr.ph1733 ], [ %1121, %1188 ], [ %1289, %1269 ]
  %.11293 = phi double [ %.012921730, %.lr.ph1733 ], [ %1201, %1188 ], [ %1287, %1269 ]
  %1293 = load i32, ptr %23, align 4, !tbaa !5
  %1294 = sext i32 %1293 to i64
  %.not1385.not = icmp slt i64 %indvars.iv.next1933, %1294
  br i1 %.not1385.not, label %.lr.ph1733, label %._crit_edge1734, !llvm.loop !60

._crit_edge1734:                                  ; preds = %1290, %._crit_edge1724.thread, %._crit_edge1724
  %1295 = phi i32 [ %1074, %._crit_edge1724 ], [ %1074, %._crit_edge1724.thread ], [ %1292, %1290 ]
  %1296 = phi i32 [ %1073, %._crit_edge1724 ], [ %1073, %._crit_edge1724.thread ], [ %1291, %1290 ]
  %1297 = load i32, ptr %36, align 4, !tbaa !5
  br i1 %.not1369, label %1298, label %1339

1298:                                             ; preds = %._crit_edge1734
  %1299 = add i32 %1295, 1
  %1300 = sub i32 %1299, %1297
  store i32 %1300, ptr %23, align 4, !tbaa !5
  %1301 = mul nsw i32 %1296, %1295
  %1302 = add nsw i32 %1301, %1297
  %1303 = sext i32 %1302 to i64
  %1304 = getelementptr inbounds double, ptr %51, i64 %1303
  %1305 = mul nsw i32 %.212801796, %45
  %1306 = add nsw i32 %1297, %1305
  %1307 = sext i32 %1306 to i64
  %1308 = getelementptr inbounds double, ptr %47, i64 %1307
  call void @dcopy_(ptr noundef nonnull %23, ptr noundef nonnull %1304, ptr noundef nonnull @c__1, ptr noundef %1308, ptr noundef nonnull @c__1) #6
  %1309 = load i32, ptr %3, align 4, !tbaa !5
  %1310 = load i32, ptr %36, align 4, !tbaa !5
  %1311 = add i32 %1309, 1
  %1312 = sub i32 %1311, %1310
  store i32 %1312, ptr %23, align 4, !tbaa !5
  %1313 = add nsw i32 %1310, %1305
  %1314 = sext i32 %1313 to i64
  %1315 = getelementptr inbounds double, ptr %47, i64 %1314
  %1316 = call i32 @idamax_(ptr noundef nonnull %23, ptr noundef %1315, ptr noundef nonnull @c__1) #6
  %1317 = load i32, ptr %36, align 4, !tbaa !5
  %1318 = add i32 %1317, %1305
  %1319 = add i32 %1318, -1
  %1320 = add i32 %1319, %1316
  %1321 = sext i32 %1320 to i64
  %1322 = getelementptr inbounds double, ptr %47, i64 %1321
  %1323 = load double, ptr %1322, align 8, !tbaa !18
  store double %1323, ptr %25, align 8, !tbaa !18
  %1324 = fcmp oge double %1323, 0.000000e+00
  %1325 = fneg double %1323
  %1326 = select i1 %1324, double %1323, double %1325
  %1327 = fdiv double 1.000000e+00, %1326
  store double %1327, ptr %33, align 8, !tbaa !18
  %1328 = load i32, ptr %3, align 4, !tbaa !5
  %reass.sub = sub i32 %1328, %1317
  %1329 = add i32 %reass.sub, 1
  store i32 %1329, ptr %23, align 4, !tbaa !5
  %1330 = sext i32 %1318 to i64
  %1331 = getelementptr inbounds double, ptr %47, i64 %1330
  call void @dscal_(ptr noundef nonnull %23, ptr noundef nonnull %33, ptr noundef %1331, ptr noundef nonnull @c__1) #6
  %1332 = load i32, ptr %36, align 4, !tbaa !5
  %1333 = add i32 %1332, -1
  store i32 %1333, ptr %23, align 4, !tbaa !5
  %.not1386.not1740 = icmp sgt i32 %1332, 1
  br i1 %.not1386.not1740, label %.lr.ph1743.preheader, label %.loopexit

.lr.ph1743.preheader:                             ; preds = %1298
  %1334 = add i32 %1305, 1
  %1335 = sext i32 %1334 to i64
  %1336 = shl nsw i64 %1335, 3
  %scevgep1941 = getelementptr i8, ptr %scevgep1940, i64 %1336
  %1337 = zext nneg i32 %1333 to i64
  %1338 = shl nuw nsw i64 %1337, 3
  call void @llvm.memset.p0.i64(ptr align 8 %scevgep1941, i8 0, i64 %1338, i1 false), !tbaa !18
  br label %.loopexit

1339:                                             ; preds = %._crit_edge1734
  br i1 %1003, label %1340, label %1371

1340:                                             ; preds = %1339
  %1341 = icmp slt i32 %1297, %1295
  br i1 %1341, label %1342, label %.thread1455

1342:                                             ; preds = %1340
  %1343 = sub nsw i32 %1295, %1297
  store i32 %1343, ptr %23, align 4, !tbaa !5
  %1344 = add nsw i32 %1297, 1
  %1345 = mul nsw i32 %1344, %45
  %1346 = sext i32 %1345 to i64
  %gep1778 = getelementptr double, ptr %invariant.gep1761, i64 %1346
  %1347 = mul nsw i32 %1296, %1295
  %1348 = add nsw i32 %1347, %1344
  %1349 = sext i32 %1348 to i64
  %1350 = getelementptr inbounds double, ptr %51, i64 %1349
  %1351 = add nsw i32 %1347, %1297
  %1352 = sext i32 %1351 to i64
  %1353 = getelementptr inbounds double, ptr %51, i64 %1352
  %1354 = mul nsw i32 %1297, %45
  %1355 = sext i32 %1354 to i64
  %gep1780 = getelementptr double, ptr %invariant.gep1761, i64 %1355
  call void @dgemv_(ptr noundef nonnull @.str.10, ptr noundef nonnull %3, ptr noundef nonnull %23, ptr noundef nonnull @c_b29, ptr noundef %gep1778, ptr noundef nonnull %7, ptr noundef nonnull %1350, ptr noundef nonnull @c__1, ptr noundef nonnull %1353, ptr noundef %gep1780, ptr noundef nonnull @c__1) #6
  %.pre1991 = load i32, ptr %36, align 4, !tbaa !5
  br label %.thread1455

.thread1455:                                      ; preds = %1340, %1342
  %1356 = phi i32 [ %1297, %1340 ], [ %.pre1991, %1342 ]
  %1357 = mul nsw i32 %1356, %45
  %1358 = sext i32 %1357 to i64
  %gep1782 = getelementptr double, ptr %invariant.gep1761, i64 %1358
  %1359 = call i32 @idamax_(ptr noundef nonnull %3, ptr noundef %gep1782, ptr noundef nonnull @c__1) #6
  %1360 = load i32, ptr %36, align 4, !tbaa !5
  %1361 = mul nsw i32 %1360, %45
  %1362 = add nsw i32 %1361, %1359
  %1363 = sext i32 %1362 to i64
  %1364 = getelementptr inbounds double, ptr %47, i64 %1363
  %1365 = load double, ptr %1364, align 8, !tbaa !18
  store double %1365, ptr %25, align 8, !tbaa !18
  %1366 = fcmp oge double %1365, 0.000000e+00
  %1367 = fneg double %1365
  %1368 = select i1 %1366, double %1365, double %1367
  %1369 = fdiv double 1.000000e+00, %1368
  store double %1369, ptr %33, align 8, !tbaa !18
  %1370 = sext i32 %1361 to i64
  %gep1784 = getelementptr double, ptr %invariant.gep1761, i64 %1370
  call void @dscal_(ptr noundef nonnull %3, ptr noundef nonnull %33, ptr noundef %gep1784, ptr noundef nonnull @c__1) #6
  br label %2072

1371:                                             ; preds = %1339
  %1372 = add i32 %1297, -1
  store i32 %1372, ptr %23, align 4, !tbaa !5
  %.not1387.not1735 = icmp sgt i32 %1297, 1
  br i1 %.not1387.not1735, label %.lr.ph1738, label %._crit_edge1739

.lr.ph1738:                                       ; preds = %1371
  %1373 = mul nsw i32 %1295, %1296
  %1374 = sext i32 %1373 to i64
  %1375 = shl nsw i64 %1374, 3
  %scevgep1935 = getelementptr i8, ptr %12, i64 %1375
  %1376 = zext nneg i32 %1372 to i64
  %1377 = shl nuw nsw i64 %1376, 3
  call void @llvm.memset.p0.i64(ptr align 8 %scevgep1935, i8 0, i64 %1377, i1 false), !tbaa !18
  br label %._crit_edge1739

._crit_edge1739:                                  ; preds = %.lr.ph1738, %1371
  %1378 = add nsw i32 %1296, -1
  %1379 = sext i32 %1378 to i64
  %1380 = getelementptr inbounds [128 x i32], ptr %35, i64 0, i64 %1379
  store i32 0, ptr %1380, align 4, !tbaa !5
  br label %.loopexit

1381:                                             ; preds = %1058
  %1382 = add nsw i32 %1071, 1
  %1383 = mul nsw i32 %1382, %42
  %1384 = add nsw i32 %1383, %1071
  %1385 = sext i32 %1384 to i64
  %1386 = getelementptr inbounds double, ptr %44, i64 %1385
  %1387 = load double, ptr %1386, align 8, !tbaa !18
  store double %1387, ptr %25, align 8, !tbaa !18
  %1388 = fcmp oge double %1387, 0.000000e+00
  %1389 = fneg double %1387
  %1390 = select i1 %1388, double %1387, double %1389
  %1391 = mul nsw i32 %1071, %42
  %1392 = add nsw i32 %1382, %1391
  %1393 = sext i32 %1392 to i64
  %1394 = getelementptr inbounds double, ptr %44, i64 %1393
  %1395 = load double, ptr %1394, align 8, !tbaa !18
  %1396 = fcmp oge double %1395, 0.000000e+00
  %1397 = fneg double %1395
  %1398 = select i1 %1396, double %1395, double %1397
  %1399 = fcmp ult double %1390, %1398
  br i1 %1399, label %1408, label %1400

1400:                                             ; preds = %1381
  %1401 = fdiv double %1059, %1387
  %1402 = load i32, ptr %37, align 4, !tbaa !5
  %1403 = load i32, ptr %3, align 4, !tbaa !5
  %1404 = mul nsw i32 %1403, %1402
  %1405 = add nsw i32 %1404, %1071
  %1406 = sext i32 %1405 to i64
  %1407 = getelementptr inbounds double, ptr %51, i64 %1406
  store double %1401, ptr %1407, align 8, !tbaa !18
  br label %1417

1408:                                             ; preds = %1381
  %1409 = load i32, ptr %37, align 4, !tbaa !5
  %1410 = load i32, ptr %3, align 4, !tbaa !5
  %1411 = mul nsw i32 %1410, %1409
  %1412 = add nsw i32 %1411, %1071
  %1413 = sext i32 %1412 to i64
  %1414 = getelementptr inbounds double, ptr %51, i64 %1413
  store double 1.000000e+00, ptr %1414, align 8, !tbaa !18
  %1415 = load double, ptr %1394, align 8, !tbaa !18
  %1416 = fdiv double %1065, %1415
  br label %1417

1417:                                             ; preds = %1408, %1400
  %.sink2136 = phi i32 [ %1409, %1408 ], [ %1402, %1400 ]
  %.sink2135 = phi i32 [ %1410, %1408 ], [ %1403, %1400 ]
  %.sink2129 = phi double [ %1416, %1408 ], [ 1.000000e+00, %1400 ]
  %.pre-phi = phi i32 [ %1411, %1408 ], [ %1404, %1400 ]
  %1418 = add nsw i32 %.sink2136, 1
  %1419 = mul nsw i32 %1418, %.sink2135
  %1420 = add nsw i32 %1419, %1382
  %1421 = sext i32 %1420 to i64
  %1422 = getelementptr inbounds double, ptr %51, i64 %1421
  store double %.sink2129, ptr %1422, align 8, !tbaa !18
  %1423 = add nsw i32 %.pre-phi, %1382
  %1424 = sext i32 %1423 to i64
  %1425 = getelementptr inbounds double, ptr %51, i64 %1424
  store double 0.000000e+00, ptr %1425, align 8, !tbaa !18
  %1426 = add nsw i32 %1419, %1071
  %1427 = sext i32 %1426 to i64
  %1428 = getelementptr inbounds double, ptr %51, i64 %1427
  store double 0.000000e+00, ptr %1428, align 8, !tbaa !18
  %1429 = add nsw i32 %1071, 2
  %.not13781682 = icmp sgt i32 %1429, %.sink2135
  br i1 %.not13781682, label %._crit_edge1686.thread, label %.lr.ph1685

._crit_edge1686.thread:                           ; preds = %1417
  store i32 %.sink2135, ptr %23, align 4, !tbaa !5
  br label %._crit_edge1694

.lr.ph1685:                                       ; preds = %1417
  %1430 = add i32 %.pre-phi, %1071
  %1431 = sext i32 %1430 to i64
  %1432 = getelementptr double, ptr %51, i64 %1431
  %1433 = add i32 %1419, %1382
  %1434 = sext i32 %1433 to i64
  %1435 = getelementptr double, ptr %51, i64 %1434
  %1436 = sext i32 %1429 to i64
  %1437 = sext i32 %1071 to i64
  %1438 = sext i32 %1382 to i64
  %1439 = sext i32 %.pre-phi to i64
  %1440 = sext i32 %1419 to i64
  %1441 = add i32 %.sink2135, 1
  %invariant.gep2087 = getelementptr double, ptr %44, i64 %1437
  %invariant.gep2089 = getelementptr double, ptr %51, i64 %1439
  %invariant.gep2091 = getelementptr double, ptr %44, i64 %1438
  %invariant.gep2093 = getelementptr double, ptr %51, i64 %1440
  %1442 = add i32 %.sink2135, -2
  %1443 = sub i32 %1442, %1071
  %1444 = zext i32 %1443 to i64
  %1445 = add nuw nsw i64 %1444, 1
  %min.iters.check2377 = icmp ugt i32 %1443, 18
  %or.cond2398 = select i1 %min.iters.check2377, i1 %ident.check2322.not, i1 false
  br i1 %or.cond2398, label %vector.memcheck2323, label %scalar.ph2376.preheader

vector.memcheck2323:                              ; preds = %.lr.ph1685
  %1446 = add nsw i64 %1439, %1436
  %1447 = shl nsw i64 %1446, 3
  %scevgep2325 = getelementptr i8, ptr %scevgep2324, i64 %1447
  %1448 = add i32 %.sink2135, -2
  %1449 = sub i32 %1448, %1071
  %1450 = zext i32 %1449 to i64
  %1451 = shl nuw nsw i64 %1450, 3
  %1452 = getelementptr i8, ptr %12, i64 %1447
  %scevgep2326 = getelementptr i8, ptr %1452, i64 %1451
  %1453 = add nsw i64 %1440, %1436
  %1454 = shl nsw i64 %1453, 3
  %scevgep2328 = getelementptr i8, ptr %scevgep2327, i64 %1454
  %1455 = getelementptr i8, ptr %12, i64 %1454
  %scevgep2329 = getelementptr i8, ptr %1455, i64 %1451
  %1456 = shl nsw i64 %1431, 3
  %scevgep2330 = getelementptr i8, ptr %12, i64 %1456
  %1457 = add nsw i64 %1437, %1436
  %1458 = shl nsw i64 %1457, 3
  %scevgep2332 = getelementptr i8, ptr %scevgep2331, i64 %1458
  %1459 = getelementptr i8, ptr %scevgep2333, i64 %1458
  %scevgep2334 = getelementptr i8, ptr %1459, i64 %1451
  %1460 = shl nsw i64 %1434, 3
  %scevgep2335 = getelementptr i8, ptr %12, i64 %1460
  %1461 = add nsw i64 %1436, %1438
  %1462 = shl nsw i64 %1461, 3
  %scevgep2337 = getelementptr i8, ptr %scevgep2336, i64 %1462
  %1463 = getelementptr i8, ptr %scevgep2338, i64 %1462
  %scevgep2339 = getelementptr i8, ptr %1463, i64 %1451
  %bound02340 = icmp ult ptr %scevgep2325, %scevgep2329
  %bound12341 = icmp ult ptr %scevgep2328, %scevgep2326
  %found.conflict2342 = and i1 %bound02340, %bound12341
  %bound02343 = icmp ult ptr %scevgep2325, %scevgep2330
  %bound12344 = icmp ult ptr %1432, %scevgep2326
  %found.conflict2345 = and i1 %bound02343, %bound12344
  %conflict.rdx2346 = or i1 %found.conflict2342, %found.conflict2345
  %bound02347 = icmp ult ptr %scevgep2325, %scevgep2334
  %bound12348 = icmp ult ptr %scevgep2332, %scevgep2326
  %found.conflict2349 = and i1 %bound02347, %bound12348
  %conflict.rdx2350 = or i1 %conflict.rdx2346, %found.conflict2349
  %bound02351 = icmp ult ptr %scevgep2325, %scevgep2335
  %bound12352 = icmp ult ptr %1435, %scevgep2326
  %found.conflict2353 = and i1 %bound02351, %bound12352
  %conflict.rdx2354 = or i1 %conflict.rdx2350, %found.conflict2353
  %bound02355 = icmp ult ptr %scevgep2325, %scevgep2339
  %bound12356 = icmp ult ptr %scevgep2337, %scevgep2326
  %found.conflict2357 = and i1 %bound02355, %bound12356
  %conflict.rdx2358 = or i1 %conflict.rdx2354, %found.conflict2357
  %bound02359 = icmp ult ptr %scevgep2328, %scevgep2330
  %bound12360 = icmp ult ptr %1432, %scevgep2329
  %found.conflict2361 = and i1 %bound02359, %bound12360
  %conflict.rdx2362 = or i1 %conflict.rdx2358, %found.conflict2361
  %bound02363 = icmp ult ptr %scevgep2328, %scevgep2334
  %bound12364 = icmp ult ptr %scevgep2332, %scevgep2329
  %found.conflict2365 = and i1 %bound02363, %bound12364
  %conflict.rdx2366 = or i1 %conflict.rdx2362, %found.conflict2365
  %bound02367 = icmp ult ptr %scevgep2328, %scevgep2335
  %bound12368 = icmp ult ptr %1435, %scevgep2329
  %found.conflict2369 = and i1 %bound02367, %bound12368
  %conflict.rdx2370 = or i1 %conflict.rdx2366, %found.conflict2369
  %bound02371 = icmp ult ptr %scevgep2328, %scevgep2339
  %bound12372 = icmp ult ptr %scevgep2337, %scevgep2329
  %found.conflict2373 = and i1 %bound02371, %bound12372
  %conflict.rdx2374 = or i1 %conflict.rdx2370, %found.conflict2373
  br i1 %conflict.rdx2374, label %scalar.ph2376.preheader, label %vector.ph2378

vector.ph2378:                                    ; preds = %vector.memcheck2323
  %n.vec2380 = and i64 %1445, 8589934590
  %ind.end2381 = add nsw i64 %n.vec2380, %1436
  %1464 = load double, ptr %1432, align 8, !tbaa !18, !alias.scope !61
  %broadcast.splatinsert2386 = insertelement <2 x double> poison, double %1464, i64 0
  %broadcast.splat2387 = shufflevector <2 x double> %broadcast.splatinsert2386, <2 x double> poison, <2 x i32> zeroinitializer
  %1465 = fneg <2 x double> %broadcast.splat2387
  %1466 = load double, ptr %1435, align 8, !tbaa !18, !alias.scope !64
  %broadcast.splatinsert2389 = insertelement <2 x double> poison, double %1466, i64 0
  %broadcast.splat2390 = shufflevector <2 x double> %broadcast.splatinsert2389, <2 x double> poison, <2 x i32> zeroinitializer
  %1467 = fneg <2 x double> %broadcast.splat2390
  br label %vector.body2383

vector.body2383:                                  ; preds = %vector.body2383, %vector.ph2378
  %index2384 = phi i64 [ 0, %vector.ph2378 ], [ %index.next2392, %vector.body2383 ]
  %offset.idx2385 = add i64 %index2384, %1436
  %1468 = getelementptr double, ptr %invariant.gep2087, i64 %offset.idx2385
  %wide.load2388 = load <2 x double>, ptr %1468, align 8, !tbaa !18, !alias.scope !66
  %1469 = fmul <2 x double> %wide.load2388, %1465
  %1470 = getelementptr double, ptr %invariant.gep2089, i64 %offset.idx2385
  store <2 x double> %1469, ptr %1470, align 8, !tbaa !18, !alias.scope !68, !noalias !70
  %1471 = getelementptr double, ptr %invariant.gep2091, i64 %offset.idx2385
  %wide.load2391 = load <2 x double>, ptr %1471, align 8, !tbaa !18, !alias.scope !73
  %1472 = fmul <2 x double> %wide.load2391, %1467
  %1473 = getelementptr double, ptr %invariant.gep2093, i64 %offset.idx2385
  store <2 x double> %1472, ptr %1473, align 8, !tbaa !18, !alias.scope !74, !noalias !75
  %index.next2392 = add nuw i64 %index2384, 2
  %1474 = icmp eq i64 %index.next2392, %n.vec2380
  br i1 %1474, label %middle.block2375, label %vector.body2383, !llvm.loop !76

middle.block2375:                                 ; preds = %vector.body2383
  %cmp.n2393 = icmp eq i64 %1445, %n.vec2380
  br i1 %cmp.n2393, label %._crit_edge1686, label %scalar.ph2376.preheader

scalar.ph2376.preheader:                          ; preds = %middle.block2375, %vector.memcheck2323, %.lr.ph1685
  %indvars.iv1894.ph = phi i64 [ %1436, %vector.memcheck2323 ], [ %1436, %.lr.ph1685 ], [ %ind.end2381, %middle.block2375 ]
  br label %scalar.ph2376

scalar.ph2376:                                    ; preds = %scalar.ph2376.preheader, %scalar.ph2376
  %indvars.iv1894 = phi i64 [ %indvars.iv.next1895, %scalar.ph2376 ], [ %indvars.iv1894.ph, %scalar.ph2376.preheader ]
  %1475 = load double, ptr %1432, align 8, !tbaa !18
  %1476 = fneg double %1475
  %1477 = mul nsw i64 %indvars.iv1894, %1007
  %gep2088 = getelementptr double, ptr %invariant.gep2087, i64 %1477
  %1478 = load double, ptr %gep2088, align 8, !tbaa !18
  %1479 = fmul double %1478, %1476
  %gep2090 = getelementptr double, ptr %invariant.gep2089, i64 %indvars.iv1894
  store double %1479, ptr %gep2090, align 8, !tbaa !18
  %1480 = load double, ptr %1435, align 8, !tbaa !18
  %1481 = fneg double %1480
  %gep2092 = getelementptr double, ptr %invariant.gep2091, i64 %1477
  %1482 = load double, ptr %gep2092, align 8, !tbaa !18
  %1483 = fmul double %1482, %1481
  %gep2094 = getelementptr double, ptr %invariant.gep2093, i64 %indvars.iv1894
  store double %1483, ptr %gep2094, align 8, !tbaa !18
  %indvars.iv.next1895 = add nsw i64 %indvars.iv1894, 1
  %lftr.wideiv = trunc i64 %indvars.iv.next1895 to i32
  %exitcond1897.not = icmp eq i32 %1441, %lftr.wideiv
  br i1 %exitcond1897.not, label %._crit_edge1686, label %scalar.ph2376, !llvm.loop !77

._crit_edge1686:                                  ; preds = %scalar.ph2376, %middle.block2375
  store i32 %.sink2135, ptr %23, align 4, !tbaa !5
  br i1 %.not13781682, label %._crit_edge1694, label %.lr.ph1693.preheader

.lr.ph1693.preheader:                             ; preds = %._crit_edge1686
  %1484 = sext i32 %1429 to i64
  br label %.lr.ph1693

.lr.ph1693:                                       ; preds = %.lr.ph1693.preheader, %.lr.ph1693._crit_edge
  %1485 = phi i32 [ %.sink2136, %.lr.ph1693.preheader ], [ %1810, %.lr.ph1693._crit_edge ]
  %1486 = phi i32 [ %.sink2135, %.lr.ph1693.preheader ], [ %1811, %.lr.ph1693._crit_edge ]
  %indvars.iv1898 = phi i64 [ %1484, %.lr.ph1693.preheader ], [ %.pre2015, %.lr.ph1693._crit_edge ]
  %.212941691 = phi double [ %189, %.lr.ph1693.preheader ], [ %.31295, %.lr.ph1693._crit_edge ]
  %.913181689 = phi i32 [ %1429, %.lr.ph1693.preheader ], [ %.111320, %.lr.ph1693._crit_edge ]
  %.413251688 = phi double [ 1.000000e+00, %.lr.ph1693.preheader ], [ %.71328, %.lr.ph1693._crit_edge ]
  %indvars1900 = trunc i64 %indvars.iv1898 to i32
  %1487 = sext i32 %.913181689 to i64
  %1488 = icmp slt i64 %indvars.iv1898, %1487
  %.pre2015 = add nsw i64 %indvars.iv1898, 1
  br i1 %1488, label %.lr.ph1693._crit_edge, label %1489

1489:                                             ; preds = %.lr.ph1693
  %1490 = add nsw i32 %indvars1900, 1
  %1491 = sext i32 %1486 to i64
  %1492 = icmp slt i64 %indvars.iv1898, %1491
  br i1 %1492, label %1493, label %.thread2030

1493:                                             ; preds = %1489
  %1494 = mul nsw i64 %indvars.iv1898, %1007
  %1495 = getelementptr double, ptr %44, i64 %.pre2015
  %1496 = getelementptr double, ptr %1495, i64 %1494
  %1497 = load double, ptr %1496, align 8, !tbaa !18
  %1498 = fcmp une double %1497, 0.000000e+00
  br i1 %1498, label %1499, label %.thread2030

1499:                                             ; preds = %1493
  %1500 = trunc i64 %indvars.iv1898 to i32
  %1501 = add i32 %1500, 2
  %1502 = getelementptr inbounds double, ptr %51, i64 %indvars.iv1898
  %1503 = load double, ptr %1502, align 8, !tbaa !18
  store double %1503, ptr %25, align 8, !tbaa !18
  %1504 = getelementptr double, ptr %12, i64 %indvars.iv1898
  %1505 = load double, ptr %1504, align 8, !tbaa !18
  %1506 = fcmp oge double %1503, %1505
  %1507 = select i1 %1506, double %1503, double %1505
  %1508 = fcmp ogt double %1507, %.212941691
  %.pre1975 = load i32, ptr %36, align 4, !tbaa !5
  br i1 %1508, label %1633, label %1651

.thread2030:                                      ; preds = %1489, %1493
  %1509 = getelementptr inbounds double, ptr %51, i64 %indvars.iv1898
  %1510 = load double, ptr %1509, align 8, !tbaa !18
  %1511 = fcmp ogt double %1510, %.212941691
  %.pre1979 = load i32, ptr %36, align 4, !tbaa !5
  br i1 %1511, label %1512, label %1530

1512:                                             ; preds = %.thread2030
  %1513 = fdiv double 1.000000e+00, %.413251688
  store double %1513, ptr %40, align 8, !tbaa !18
  %1514 = add i32 %1486, 1
  %1515 = sub i32 %1514, %.pre1979
  store i32 %1515, ptr %24, align 4, !tbaa !5
  %1516 = mul nsw i32 %1485, %1486
  %1517 = add nsw i32 %1516, %.pre1979
  %1518 = sext i32 %1517 to i64
  %1519 = getelementptr inbounds double, ptr %51, i64 %1518
  call void @dscal_(ptr noundef nonnull %24, ptr noundef nonnull %40, ptr noundef nonnull %1519, ptr noundef nonnull @c__1) #6
  %1520 = load i32, ptr %3, align 4, !tbaa !5
  %1521 = load i32, ptr %36, align 4, !tbaa !5
  %1522 = add i32 %1520, 1
  %1523 = sub i32 %1522, %1521
  store i32 %1523, ptr %24, align 4, !tbaa !5
  %1524 = load i32, ptr %37, align 4, !tbaa !5
  %1525 = add nsw i32 %1524, 1
  %1526 = mul nsw i32 %1525, %1520
  %1527 = add nsw i32 %1526, %1521
  %1528 = sext i32 %1527 to i64
  %1529 = getelementptr inbounds double, ptr %51, i64 %1528
  call void @dscal_(ptr noundef nonnull %24, ptr noundef nonnull %40, ptr noundef nonnull %1529, ptr noundef nonnull @c__1) #6
  %.pre1978 = load i32, ptr %36, align 4, !tbaa !5
  %.pre1980 = load i32, ptr %37, align 4, !tbaa !5
  %.pre1981 = load i32, ptr %3, align 4, !tbaa !5
  br label %1530

1530:                                             ; preds = %1512, %.thread2030
  %1531 = phi i32 [ %.pre1981, %1512 ], [ %1486, %.thread2030 ]
  %1532 = phi i32 [ %.pre1980, %1512 ], [ %1485, %.thread2030 ]
  %1533 = phi i32 [ %.pre1978, %1512 ], [ %.pre1979, %.thread2030 ]
  %.51326 = phi double [ 1.000000e+00, %1512 ], [ %.413251688, %.thread2030 ]
  %1534 = add i32 %indvars1900, -2
  %1535 = sub i32 %1534, %1533
  store i32 %1535, ptr %24, align 4, !tbaa !5
  %1536 = add nsw i32 %1533, 2
  %1537 = mul nsw i64 %indvars.iv1898, %1007
  %1538 = mul nsw i32 %42, %indvars1900
  %1539 = sext i32 %1536 to i64
  %1540 = getelementptr double, ptr %44, i64 %1537
  %1541 = getelementptr double, ptr %1540, i64 %1539
  %1542 = mul nsw i32 %1531, %1532
  %1543 = add nsw i32 %1542, %1536
  %1544 = sext i32 %1543 to i64
  %1545 = getelementptr inbounds double, ptr %51, i64 %1544
  %1546 = call double @ddot_(ptr noundef nonnull %24, ptr noundef %1541, ptr noundef nonnull @c__1, ptr noundef nonnull %1545, ptr noundef nonnull @c__1) #6
  %1547 = load i32, ptr %37, align 4, !tbaa !5
  %1548 = load i32, ptr %3, align 4, !tbaa !5
  %1549 = mul nsw i32 %1548, %1547
  %1550 = sext i32 %1549 to i64
  %1551 = getelementptr double, ptr %51, i64 %indvars.iv1898
  %1552 = getelementptr double, ptr %1551, i64 %1550
  %1553 = load double, ptr %1552, align 8, !tbaa !18
  %1554 = fsub double %1553, %1546
  store double %1554, ptr %1552, align 8, !tbaa !18
  %1555 = load i32, ptr %36, align 4, !tbaa !5
  %1556 = sub i32 %1534, %1555
  store i32 %1556, ptr %24, align 4, !tbaa !5
  %1557 = add nsw i32 %1555, 2
  %1558 = sext i32 %1557 to i64
  %1559 = getelementptr double, ptr %44, i64 %1537
  %1560 = getelementptr double, ptr %1559, i64 %1558
  %1561 = add nsw i32 %1547, 1
  %1562 = mul nsw i32 %1561, %1548
  %1563 = add nsw i32 %1557, %1562
  %1564 = sext i32 %1563 to i64
  %1565 = getelementptr inbounds double, ptr %51, i64 %1564
  %1566 = call double @ddot_(ptr noundef nonnull %24, ptr noundef %1560, ptr noundef nonnull @c__1, ptr noundef nonnull %1565, ptr noundef nonnull @c__1) #6
  %1567 = load i32, ptr %37, align 4, !tbaa !5
  %1568 = add nsw i32 %1567, 1
  %1569 = load i32, ptr %3, align 4, !tbaa !5
  %1570 = mul nsw i32 %1568, %1569
  %1571 = sext i32 %1570 to i64
  %1572 = getelementptr double, ptr %51, i64 %indvars.iv1898
  %1573 = getelementptr double, ptr %1572, i64 %1571
  %1574 = load double, ptr %1573, align 8, !tbaa !18
  %1575 = fsub double %1574, %1566
  store double %1575, ptr %1573, align 8, !tbaa !18
  %1576 = load double, ptr %38, align 8, !tbaa !18
  %1577 = fneg double %1576
  store double %1577, ptr %25, align 8, !tbaa !18
  %1578 = sext i32 %1538 to i64
  %1579 = getelementptr double, ptr %44, i64 %indvars.iv1898
  %1580 = getelementptr double, ptr %1579, i64 %1578
  %1581 = mul nsw i32 %1569, %1567
  %1582 = sext i32 %1581 to i64
  %1583 = getelementptr double, ptr %51, i64 %indvars.iv1898
  %1584 = getelementptr double, ptr %1583, i64 %1582
  call void @dlaln2_(ptr noundef nonnull @c_false, ptr noundef nonnull @c__1, ptr noundef nonnull @c__2, ptr noundef nonnull %30, ptr noundef nonnull @c_b29, ptr noundef %1580, ptr noundef nonnull %5, ptr noundef nonnull @c_b29, ptr noundef nonnull @c_b29, ptr noundef nonnull %1584, ptr noundef nonnull %3, ptr noundef nonnull %39, ptr noundef nonnull %25, ptr noundef nonnull %32, ptr noundef nonnull @c__2, ptr noundef nonnull %31, ptr noundef nonnull %34, ptr noundef nonnull %27) #6
  %1585 = load double, ptr %31, align 8, !tbaa !18
  %1586 = fcmp une double %1585, 1.000000e+00
  br i1 %1586, label %1587, label %1607

1587:                                             ; preds = %1530
  %1588 = load i32, ptr %3, align 4, !tbaa !5
  %1589 = load i32, ptr %36, align 4, !tbaa !5
  %1590 = add i32 %1588, 1
  %1591 = sub i32 %1590, %1589
  store i32 %1591, ptr %24, align 4, !tbaa !5
  %1592 = load i32, ptr %37, align 4, !tbaa !5
  %1593 = mul nsw i32 %1592, %1588
  %1594 = add nsw i32 %1593, %1589
  %1595 = sext i32 %1594 to i64
  %1596 = getelementptr inbounds double, ptr %51, i64 %1595
  call void @dscal_(ptr noundef nonnull %24, ptr noundef nonnull %31, ptr noundef nonnull %1596, ptr noundef nonnull @c__1) #6
  %1597 = load i32, ptr %3, align 4, !tbaa !5
  %1598 = load i32, ptr %36, align 4, !tbaa !5
  %1599 = add i32 %1597, 1
  %1600 = sub i32 %1599, %1598
  store i32 %1600, ptr %24, align 4, !tbaa !5
  %1601 = load i32, ptr %37, align 4, !tbaa !5
  %1602 = add nsw i32 %1601, 1
  %1603 = mul nsw i32 %1602, %1597
  %1604 = add nsw i32 %1603, %1598
  %1605 = sext i32 %1604 to i64
  %1606 = getelementptr inbounds double, ptr %51, i64 %1605
  call void @dscal_(ptr noundef nonnull %24, ptr noundef nonnull %31, ptr noundef nonnull %1606, ptr noundef nonnull @c__1) #6
  br label %1607

1607:                                             ; preds = %1587, %1530
  %1608 = load double, ptr %32, align 16, !tbaa !18
  %1609 = load i32, ptr %37, align 4, !tbaa !5
  %1610 = load i32, ptr %3, align 4, !tbaa !5
  %1611 = mul nsw i32 %1610, %1609
  %1612 = sext i32 %1611 to i64
  %1613 = getelementptr double, ptr %51, i64 %indvars.iv1898
  %1614 = getelementptr double, ptr %1613, i64 %1612
  store double %1608, ptr %1614, align 8, !tbaa !18
  %1615 = load double, ptr %1000, align 16, !tbaa !18
  %1616 = add nsw i32 %1609, 1
  %1617 = mul nsw i32 %1616, %1610
  %1618 = sext i32 %1617 to i64
  %1619 = getelementptr double, ptr %51, i64 %indvars.iv1898
  %1620 = getelementptr double, ptr %1619, i64 %1618
  store double %1615, ptr %1620, align 8, !tbaa !18
  %1621 = load double, ptr %1614, align 8, !tbaa !18
  store double %1621, ptr %25, align 8, !tbaa !18
  %1622 = fcmp oge double %1621, 0.000000e+00
  %1623 = fneg double %1621
  %1624 = select i1 %1622, double %1621, double %1623
  %1625 = fcmp oge double %1615, 0.000000e+00
  %1626 = fneg double %1615
  %1627 = select i1 %1625, double %1615, double %1626
  %1628 = fcmp oge double %1624, %1627
  %1629 = select i1 %1628, double %1624, double %1627
  %1630 = fcmp oge double %1629, %.51326
  %1631 = select i1 %1630, double %1629, double %.51326
  %1632 = fdiv double %189, %1631
  br label %.lr.ph1693._crit_edge

1633:                                             ; preds = %1499
  %1634 = fdiv double 1.000000e+00, %.413251688
  store double %1634, ptr %40, align 8, !tbaa !18
  %1635 = add i32 %1486, 1
  %1636 = sub i32 %1635, %.pre1975
  store i32 %1636, ptr %24, align 4, !tbaa !5
  %1637 = mul nsw i32 %1485, %1486
  %1638 = add nsw i32 %1637, %.pre1975
  %1639 = sext i32 %1638 to i64
  %1640 = getelementptr inbounds double, ptr %51, i64 %1639
  call void @dscal_(ptr noundef nonnull %24, ptr noundef nonnull %40, ptr noundef nonnull %1640, ptr noundef nonnull @c__1) #6
  %1641 = load i32, ptr %3, align 4, !tbaa !5
  %1642 = load i32, ptr %36, align 4, !tbaa !5
  %1643 = add i32 %1641, 1
  %1644 = sub i32 %1643, %1642
  store i32 %1644, ptr %24, align 4, !tbaa !5
  %1645 = load i32, ptr %37, align 4, !tbaa !5
  %1646 = add nsw i32 %1645, 1
  %1647 = mul nsw i32 %1646, %1641
  %1648 = add nsw i32 %1647, %1642
  %1649 = sext i32 %1648 to i64
  %1650 = getelementptr inbounds double, ptr %51, i64 %1649
  call void @dscal_(ptr noundef nonnull %24, ptr noundef nonnull %40, ptr noundef nonnull %1650, ptr noundef nonnull @c__1) #6
  %.pre1974 = load i32, ptr %36, align 4, !tbaa !5
  %.pre1976 = load i32, ptr %37, align 4, !tbaa !5
  %.pre1977 = load i32, ptr %3, align 4, !tbaa !5
  br label %1651

1651:                                             ; preds = %1633, %1499
  %1652 = phi i32 [ %.pre1977, %1633 ], [ %1486, %1499 ]
  %1653 = phi i32 [ %.pre1976, %1633 ], [ %1485, %1499 ]
  %1654 = phi i32 [ %.pre1974, %1633 ], [ %.pre1975, %1499 ]
  %.61327 = phi double [ 1.000000e+00, %1633 ], [ %.413251688, %1499 ]
  %1655 = add i32 %indvars1900, -2
  %1656 = sub i32 %1655, %1654
  store i32 %1656, ptr %24, align 4, !tbaa !5
  %1657 = add nsw i32 %1654, 2
  %1658 = mul nsw i64 %indvars.iv1898, %1007
  %1659 = mul nsw i32 %42, %indvars1900
  %1660 = sext i32 %1657 to i64
  %1661 = getelementptr double, ptr %44, i64 %1658
  %1662 = getelementptr double, ptr %1661, i64 %1660
  %1663 = mul nsw i32 %1652, %1653
  %1664 = add nsw i32 %1663, %1657
  %1665 = sext i32 %1664 to i64
  %1666 = getelementptr inbounds double, ptr %51, i64 %1665
  %1667 = call double @ddot_(ptr noundef nonnull %24, ptr noundef %1662, ptr noundef nonnull @c__1, ptr noundef nonnull %1666, ptr noundef nonnull @c__1) #6
  %1668 = load i32, ptr %37, align 4, !tbaa !5
  %1669 = load i32, ptr %3, align 4, !tbaa !5
  %1670 = mul nsw i32 %1669, %1668
  %1671 = sext i32 %1670 to i64
  %1672 = getelementptr double, ptr %51, i64 %indvars.iv1898
  %1673 = getelementptr double, ptr %1672, i64 %1671
  %1674 = load double, ptr %1673, align 8, !tbaa !18
  %1675 = fsub double %1674, %1667
  store double %1675, ptr %1673, align 8, !tbaa !18
  %1676 = load i32, ptr %36, align 4, !tbaa !5
  %1677 = sub i32 %1655, %1676
  store i32 %1677, ptr %24, align 4, !tbaa !5
  %1678 = add nsw i32 %1676, 2
  %1679 = sext i32 %1678 to i64
  %1680 = getelementptr double, ptr %44, i64 %1658
  %1681 = getelementptr double, ptr %1680, i64 %1679
  %1682 = add nsw i32 %1668, 1
  %1683 = mul nsw i32 %1682, %1669
  %1684 = add nsw i32 %1678, %1683
  %1685 = sext i32 %1684 to i64
  %1686 = getelementptr inbounds double, ptr %51, i64 %1685
  %1687 = call double @ddot_(ptr noundef nonnull %24, ptr noundef %1681, ptr noundef nonnull @c__1, ptr noundef nonnull %1686, ptr noundef nonnull @c__1) #6
  %1688 = load i32, ptr %37, align 4, !tbaa !5
  %1689 = add nsw i32 %1688, 1
  %1690 = load i32, ptr %3, align 4, !tbaa !5
  %1691 = mul nsw i32 %1689, %1690
  %1692 = sext i32 %1691 to i64
  %1693 = getelementptr double, ptr %51, i64 %indvars.iv1898
  %1694 = getelementptr double, ptr %1693, i64 %1692
  %1695 = load double, ptr %1694, align 8, !tbaa !18
  %1696 = fsub double %1695, %1687
  store double %1696, ptr %1694, align 8, !tbaa !18
  %1697 = load i32, ptr %36, align 4, !tbaa !5
  %1698 = sub i32 %1655, %1697
  store i32 %1698, ptr %24, align 4, !tbaa !5
  %1699 = add nsw i32 %1697, 2
  %1700 = mul nsw i64 %.pre2015, %1007
  %1701 = sext i32 %1699 to i64
  %1702 = getelementptr double, ptr %44, i64 %1700
  %1703 = getelementptr double, ptr %1702, i64 %1701
  %1704 = mul nsw i32 %1690, %1688
  %1705 = add nsw i32 %1699, %1704
  %1706 = sext i32 %1705 to i64
  %1707 = getelementptr inbounds double, ptr %51, i64 %1706
  %1708 = call double @ddot_(ptr noundef nonnull %24, ptr noundef %1703, ptr noundef nonnull @c__1, ptr noundef nonnull %1707, ptr noundef nonnull @c__1) #6
  %1709 = load i32, ptr %37, align 4, !tbaa !5
  %1710 = load i32, ptr %3, align 4, !tbaa !5
  %1711 = mul nsw i32 %1710, %1709
  %1712 = sext i32 %1711 to i64
  %1713 = getelementptr double, ptr %12, i64 %indvars.iv1898
  %1714 = getelementptr double, ptr %1713, i64 %1712
  %1715 = load double, ptr %1714, align 8, !tbaa !18
  %1716 = fsub double %1715, %1708
  store double %1716, ptr %1714, align 8, !tbaa !18
  %1717 = load i32, ptr %36, align 4, !tbaa !5
  %1718 = sub i32 %1655, %1717
  store i32 %1718, ptr %24, align 4, !tbaa !5
  %1719 = add nsw i32 %1717, 2
  %1720 = sext i32 %1719 to i64
  %1721 = getelementptr double, ptr %44, i64 %1700
  %1722 = getelementptr double, ptr %1721, i64 %1720
  %1723 = add nsw i32 %1709, 1
  %1724 = mul nsw i32 %1723, %1710
  %1725 = add nsw i32 %1719, %1724
  %1726 = sext i32 %1725 to i64
  %1727 = getelementptr inbounds double, ptr %51, i64 %1726
  %1728 = call double @ddot_(ptr noundef nonnull %24, ptr noundef %1722, ptr noundef nonnull @c__1, ptr noundef nonnull %1727, ptr noundef nonnull @c__1) #6
  %1729 = load i32, ptr %37, align 4, !tbaa !5
  %1730 = add nsw i32 %1729, 1
  %1731 = load i32, ptr %3, align 4, !tbaa !5
  %1732 = mul nsw i32 %1730, %1731
  %1733 = sext i32 %1732 to i64
  %1734 = getelementptr double, ptr %12, i64 %indvars.iv1898
  %1735 = getelementptr double, ptr %1734, i64 %1733
  %1736 = load double, ptr %1735, align 8, !tbaa !18
  %1737 = fsub double %1736, %1728
  store double %1737, ptr %1735, align 8, !tbaa !18
  %1738 = load double, ptr %38, align 8, !tbaa !18
  %1739 = fneg double %1738
  store double %1739, ptr %25, align 8, !tbaa !18
  %1740 = sext i32 %1659 to i64
  %1741 = getelementptr double, ptr %44, i64 %indvars.iv1898
  %1742 = getelementptr double, ptr %1741, i64 %1740
  %1743 = mul nsw i32 %1731, %1729
  %1744 = sext i32 %1743 to i64
  %1745 = getelementptr double, ptr %51, i64 %indvars.iv1898
  %1746 = getelementptr double, ptr %1745, i64 %1744
  call void @dlaln2_(ptr noundef nonnull @c_true, ptr noundef nonnull @c__2, ptr noundef nonnull @c__2, ptr noundef nonnull %30, ptr noundef nonnull @c_b29, ptr noundef %1742, ptr noundef nonnull %5, ptr noundef nonnull @c_b29, ptr noundef nonnull @c_b29, ptr noundef nonnull %1746, ptr noundef nonnull %3, ptr noundef nonnull %39, ptr noundef nonnull %25, ptr noundef nonnull %32, ptr noundef nonnull @c__2, ptr noundef nonnull %31, ptr noundef nonnull %34, ptr noundef nonnull %27) #6
  %1747 = load double, ptr %31, align 8, !tbaa !18
  %1748 = fcmp une double %1747, 1.000000e+00
  br i1 %1748, label %1749, label %1769

1749:                                             ; preds = %1651
  %1750 = load i32, ptr %3, align 4, !tbaa !5
  %1751 = load i32, ptr %36, align 4, !tbaa !5
  %1752 = add i32 %1750, 1
  %1753 = sub i32 %1752, %1751
  store i32 %1753, ptr %24, align 4, !tbaa !5
  %1754 = load i32, ptr %37, align 4, !tbaa !5
  %1755 = mul nsw i32 %1754, %1750
  %1756 = add nsw i32 %1755, %1751
  %1757 = sext i32 %1756 to i64
  %1758 = getelementptr inbounds double, ptr %51, i64 %1757
  call void @dscal_(ptr noundef nonnull %24, ptr noundef nonnull %31, ptr noundef nonnull %1758, ptr noundef nonnull @c__1) #6
  %1759 = load i32, ptr %3, align 4, !tbaa !5
  %1760 = load i32, ptr %36, align 4, !tbaa !5
  %1761 = add i32 %1759, 1
  %1762 = sub i32 %1761, %1760
  store i32 %1762, ptr %24, align 4, !tbaa !5
  %1763 = load i32, ptr %37, align 4, !tbaa !5
  %1764 = add nsw i32 %1763, 1
  %1765 = mul nsw i32 %1764, %1759
  %1766 = add nsw i32 %1765, %1760
  %1767 = sext i32 %1766 to i64
  %1768 = getelementptr inbounds double, ptr %51, i64 %1767
  call void @dscal_(ptr noundef nonnull %24, ptr noundef nonnull %31, ptr noundef nonnull %1768, ptr noundef nonnull @c__1) #6
  br label %1769

1769:                                             ; preds = %1749, %1651
  %1770 = load double, ptr %32, align 16
  %1771 = load i32, ptr %37, align 4, !tbaa !5
  %1772 = load i32, ptr %3, align 4, !tbaa !5
  %1773 = mul nsw i32 %1772, %1771
  %1774 = sext i32 %1773 to i64
  %1775 = getelementptr double, ptr %51, i64 %indvars.iv1898
  %1776 = getelementptr double, ptr %1775, i64 %1774
  store double %1770, ptr %1776, align 8, !tbaa !18
  %1777 = load double, ptr %1000, align 16
  %1778 = add nsw i32 %1771, 1
  %1779 = mul nsw i32 %1778, %1772
  %1780 = sext i32 %1779 to i64
  %1781 = getelementptr double, ptr %51, i64 %indvars.iv1898
  %1782 = getelementptr double, ptr %1781, i64 %1780
  store double %1777, ptr %1782, align 8, !tbaa !18
  %1783 = load double, ptr %1001, align 8
  %1784 = getelementptr double, ptr %12, i64 %indvars.iv1898
  %1785 = getelementptr double, ptr %1784, i64 %1774
  store double %1783, ptr %1785, align 8, !tbaa !18
  %1786 = load double, ptr %1002, align 8
  %1787 = getelementptr double, ptr %12, i64 %indvars.iv1898
  %1788 = getelementptr double, ptr %1787, i64 %1780
  store double %1786, ptr %1788, align 8, !tbaa !18
  %1789 = fcmp oge double %1770, 0.000000e+00
  %1790 = fneg double %1770
  %1791 = select i1 %1789, double %1770, double %1790
  %1792 = fcmp oge double %1777, 0.000000e+00
  %1793 = fneg double %1777
  %1794 = select i1 %1792, double %1777, double %1793
  %1795 = fcmp oge double %1791, %1794
  %1796 = select i1 %1795, double %1791, double %1794
  %1797 = fcmp oge double %1783, 0.000000e+00
  %1798 = fneg double %1783
  %1799 = select i1 %1797, double %1783, double %1798
  %1800 = fcmp oge double %1796, %1799
  %1801 = select i1 %1800, double %1796, double %1799
  %1802 = fcmp oge double %1786, 0.000000e+00
  %1803 = fneg double %1786
  %1804 = select i1 %1802, double %1786, double %1803
  %1805 = fcmp oge double %1801, %1804
  %1806 = select i1 %1805, double %1801, double %1804
  store double %1806, ptr %25, align 8, !tbaa !18
  %1807 = fcmp oge double %1806, %.61327
  %1808 = select i1 %1807, double %1806, double %.61327
  %1809 = fdiv double %189, %1808
  br label %.lr.ph1693._crit_edge

.lr.ph1693._crit_edge:                            ; preds = %.lr.ph1693, %1769, %1607
  %1810 = phi i32 [ %1771, %1769 ], [ %1609, %1607 ], [ %1485, %.lr.ph1693 ]
  %1811 = phi i32 [ %1772, %1769 ], [ %1610, %1607 ], [ %1486, %.lr.ph1693 ]
  %.71328 = phi double [ %1808, %1769 ], [ %1631, %1607 ], [ %.413251688, %.lr.ph1693 ]
  %.111320 = phi i32 [ %1501, %1769 ], [ %1490, %1607 ], [ %.913181689, %.lr.ph1693 ]
  %.31295 = phi double [ %1809, %1769 ], [ %1632, %1607 ], [ %.212941691, %.lr.ph1693 ]
  %1812 = load i32, ptr %23, align 4, !tbaa !5
  %1813 = sext i32 %1812 to i64
  %.not1379.not = icmp slt i64 %indvars.iv1898, %1813
  br i1 %.not1379.not, label %.lr.ph1693, label %._crit_edge1694, !llvm.loop !78

._crit_edge1694:                                  ; preds = %.lr.ph1693._crit_edge, %._crit_edge1686.thread, %._crit_edge1686
  %1814 = phi i32 [ %.sink2135, %._crit_edge1686 ], [ %.sink2135, %._crit_edge1686.thread ], [ %1811, %.lr.ph1693._crit_edge ]
  %1815 = phi i32 [ %.sink2136, %._crit_edge1686 ], [ %.sink2136, %._crit_edge1686.thread ], [ %1810, %.lr.ph1693._crit_edge ]
  %1816 = load i32, ptr %36, align 4, !tbaa !5
  br i1 %.not1369, label %1817, label %1888

1817:                                             ; preds = %._crit_edge1694
  %1818 = add i32 %1814, 1
  %1819 = sub i32 %1818, %1816
  store i32 %1819, ptr %23, align 4, !tbaa !5
  %1820 = mul nsw i32 %1815, %1814
  %1821 = add nsw i32 %1820, %1816
  %1822 = sext i32 %1821 to i64
  %1823 = getelementptr inbounds double, ptr %51, i64 %1822
  %1824 = mul nsw i32 %.212801796, %45
  %1825 = add nsw i32 %1816, %1824
  %1826 = sext i32 %1825 to i64
  %1827 = getelementptr inbounds double, ptr %47, i64 %1826
  call void @dcopy_(ptr noundef nonnull %23, ptr noundef nonnull %1823, ptr noundef nonnull @c__1, ptr noundef %1827, ptr noundef nonnull @c__1) #6
  %1828 = load i32, ptr %3, align 4, !tbaa !5
  %1829 = load i32, ptr %36, align 4, !tbaa !5
  %1830 = add i32 %1828, 1
  %1831 = sub i32 %1830, %1829
  store i32 %1831, ptr %23, align 4, !tbaa !5
  %1832 = load i32, ptr %37, align 4, !tbaa !5
  %1833 = add nsw i32 %1832, 1
  %1834 = mul nsw i32 %1833, %1828
  %1835 = add nsw i32 %1834, %1829
  %1836 = sext i32 %1835 to i64
  %1837 = getelementptr inbounds double, ptr %51, i64 %1836
  %1838 = add nsw i32 %.212801796, 1
  %1839 = mul nsw i32 %1838, %45
  %1840 = add nsw i32 %1829, %1839
  %1841 = sext i32 %1840 to i64
  %1842 = getelementptr inbounds double, ptr %47, i64 %1841
  call void @dcopy_(ptr noundef nonnull %23, ptr noundef nonnull %1837, ptr noundef nonnull @c__1, ptr noundef %1842, ptr noundef nonnull @c__1) #6
  %1843 = load i32, ptr %3, align 4, !tbaa !5
  %1844 = load i32, ptr %36, align 4, !tbaa !5
  %.not13801708 = icmp sgt i32 %1844, %1843
  br i1 %.not13801708, label %._crit_edge2006, label %.lr.ph1712.preheader

._crit_edge2006:                                  ; preds = %1817
  %.pre2007 = add nsw i32 %1843, 1
  br label %1860

.lr.ph1712.preheader:                             ; preds = %1817
  %1845 = sext i32 %1844 to i64
  %1846 = sext i32 %1824 to i64
  %1847 = sext i32 %1839 to i64
  %1848 = add i32 %1843, 1
  %invariant.gep2103 = getelementptr double, ptr %47, i64 %1846
  %invariant.gep2105 = getelementptr double, ptr %47, i64 %1847
  br label %.lr.ph1712

.lr.ph1712:                                       ; preds = %.lr.ph1712.preheader, %.lr.ph1712
  %indvars.iv1913 = phi i64 [ %1845, %.lr.ph1712.preheader ], [ %indvars.iv.next1914, %.lr.ph1712 ]
  %.313321709 = phi double [ 0.000000e+00, %.lr.ph1712.preheader ], [ %1859, %.lr.ph1712 ]
  %gep2104 = getelementptr double, ptr %invariant.gep2103, i64 %indvars.iv1913
  %1849 = load double, ptr %gep2104, align 8, !tbaa !18
  %1850 = fcmp oge double %1849, 0.000000e+00
  %1851 = fneg double %1849
  %1852 = select i1 %1850, double %1849, double %1851
  %gep2106 = getelementptr double, ptr %invariant.gep2105, i64 %indvars.iv1913
  %1853 = load double, ptr %gep2106, align 8, !tbaa !18
  %1854 = fcmp oge double %1853, 0.000000e+00
  %1855 = fneg double %1853
  %1856 = select i1 %1854, double %1853, double %1855
  %1857 = fadd double %1852, %1856
  %1858 = fcmp oge double %.313321709, %1857
  %1859 = select i1 %1858, double %.313321709, double %1857
  %indvars.iv.next1914 = add nsw i64 %indvars.iv1913, 1
  %lftr.wideiv1916 = trunc i64 %indvars.iv.next1914 to i32
  %exitcond1917.not = icmp eq i32 %1848, %lftr.wideiv1916
  br i1 %exitcond1917.not, label %._crit_edge1713, label %.lr.ph1712, !llvm.loop !79

._crit_edge1713:                                  ; preds = %.lr.ph1712
  store double %1849, ptr %25, align 8, !tbaa !18
  br label %1860

1860:                                             ; preds = %._crit_edge2006, %._crit_edge1713
  %.pre-phi2008 = phi i32 [ %.pre2007, %._crit_edge2006 ], [ %1848, %._crit_edge1713 ]
  %.31332.lcssa = phi double [ 0.000000e+00, %._crit_edge2006 ], [ %1859, %._crit_edge1713 ]
  %1861 = fdiv double 1.000000e+00, %.31332.lcssa
  store double %1861, ptr %33, align 8, !tbaa !18
  %1862 = sub i32 %.pre-phi2008, %1844
  store i32 %1862, ptr %23, align 4, !tbaa !5
  %1863 = add nsw i32 %1844, %1824
  %1864 = sext i32 %1863 to i64
  %1865 = getelementptr inbounds double, ptr %47, i64 %1864
  call void @dscal_(ptr noundef nonnull %23, ptr noundef nonnull %33, ptr noundef %1865, ptr noundef nonnull @c__1) #6
  %1866 = load i32, ptr %3, align 4, !tbaa !5
  %1867 = load i32, ptr %36, align 4, !tbaa !5
  %1868 = add i32 %1866, 1
  %1869 = sub i32 %1868, %1867
  store i32 %1869, ptr %23, align 4, !tbaa !5
  %1870 = add nsw i32 %1867, %1839
  %1871 = sext i32 %1870 to i64
  %1872 = getelementptr inbounds double, ptr %47, i64 %1871
  call void @dscal_(ptr noundef nonnull %23, ptr noundef nonnull %33, ptr noundef %1872, ptr noundef nonnull @c__1) #6
  %1873 = load i32, ptr %36, align 4, !tbaa !5
  %1874 = add nsw i32 %1873, -1
  store i32 %1874, ptr %23, align 4, !tbaa !5
  %.not1381.not1716 = icmp sgt i32 %1873, 1
  br i1 %.not1381.not1716, label %.lr.ph1719.preheader, label %.loopexit

.lr.ph1719.preheader:                             ; preds = %1860
  %1875 = sext i32 %1824 to i64
  %1876 = sext i32 %1839 to i64
  %wide.trip.count1925 = zext nneg i32 %1873 to i64
  %invariant.gep2107 = getelementptr double, ptr %47, i64 %1875
  %invariant.gep2109 = getelementptr double, ptr %47, i64 %1876
  %1877 = add nsw i64 %wide.trip.count1925, -1
  %min.iters.check2295 = icmp ult i32 %1873, 5
  br i1 %min.iters.check2295, label %.lr.ph1719.preheader2400, label %vector.memcheck2291

vector.memcheck2291:                              ; preds = %.lr.ph1719.preheader
  %1878 = sub nsw i64 %1876, %1875
  %1879 = and i64 %1878, 2305843009213693948
  %diff.check2292 = icmp eq i64 %1879, 0
  br i1 %diff.check2292, label %.lr.ph1719.preheader2400, label %vector.ph2296

vector.ph2296:                                    ; preds = %vector.memcheck2291
  %n.vec2298 = and i64 %1877, -4
  %ind.end2299 = or disjoint i64 %n.vec2298, 1
  br label %vector.body2301

vector.body2301:                                  ; preds = %vector.body2301, %vector.ph2296
  %index2302 = phi i64 [ 0, %vector.ph2296 ], [ %index.next2304, %vector.body2301 ]
  %offset.idx2303 = or disjoint i64 %index2302, 1
  %1880 = getelementptr double, ptr %invariant.gep2107, i64 %offset.idx2303
  %1881 = getelementptr i8, ptr %1880, i64 16
  store <2 x double> zeroinitializer, ptr %1880, align 8, !tbaa !18
  store <2 x double> zeroinitializer, ptr %1881, align 8, !tbaa !18
  %1882 = getelementptr double, ptr %invariant.gep2109, i64 %offset.idx2303
  %1883 = getelementptr i8, ptr %1882, i64 16
  store <2 x double> zeroinitializer, ptr %1882, align 8, !tbaa !18
  store <2 x double> zeroinitializer, ptr %1883, align 8, !tbaa !18
  %index.next2304 = add nuw i64 %index2302, 4
  %1884 = icmp eq i64 %index.next2304, %n.vec2298
  br i1 %1884, label %middle.block2293, label %vector.body2301, !llvm.loop !80

middle.block2293:                                 ; preds = %vector.body2301
  %cmp.n2305 = icmp eq i64 %1877, %n.vec2298
  br i1 %cmp.n2305, label %.loopexit, label %.lr.ph1719.preheader2400

.lr.ph1719.preheader2400:                         ; preds = %middle.block2293, %vector.memcheck2291, %.lr.ph1719.preheader
  %indvars.iv1922.ph = phi i64 [ 1, %vector.memcheck2291 ], [ 1, %.lr.ph1719.preheader ], [ %ind.end2299, %middle.block2293 ]
  %1885 = sub nsw i64 %wide.trip.count1925, %indvars.iv1922.ph
  %xtraiter2435 = and i64 %1885, 3
  %lcmp.mod2436.not = icmp eq i64 %xtraiter2435, 0
  br i1 %lcmp.mod2436.not, label %.lr.ph1719.prol.loopexit, label %.lr.ph1719.prol

.lr.ph1719.prol:                                  ; preds = %.lr.ph1719.preheader2400, %.lr.ph1719.prol
  %indvars.iv1922.prol = phi i64 [ %indvars.iv.next1923.prol, %.lr.ph1719.prol ], [ %indvars.iv1922.ph, %.lr.ph1719.preheader2400 ]
  %prol.iter2437 = phi i64 [ %prol.iter2437.next, %.lr.ph1719.prol ], [ 0, %.lr.ph1719.preheader2400 ]
  %gep2108.prol = getelementptr double, ptr %invariant.gep2107, i64 %indvars.iv1922.prol
  store double 0.000000e+00, ptr %gep2108.prol, align 8, !tbaa !18
  %gep2110.prol = getelementptr double, ptr %invariant.gep2109, i64 %indvars.iv1922.prol
  store double 0.000000e+00, ptr %gep2110.prol, align 8, !tbaa !18
  %indvars.iv.next1923.prol = add nuw nsw i64 %indvars.iv1922.prol, 1
  %prol.iter2437.next = add i64 %prol.iter2437, 1
  %prol.iter2437.cmp.not = icmp eq i64 %prol.iter2437.next, %xtraiter2435
  br i1 %prol.iter2437.cmp.not, label %.lr.ph1719.prol.loopexit, label %.lr.ph1719.prol, !llvm.loop !81

.lr.ph1719.prol.loopexit:                         ; preds = %.lr.ph1719.prol, %.lr.ph1719.preheader2400
  %indvars.iv1922.unr = phi i64 [ %indvars.iv1922.ph, %.lr.ph1719.preheader2400 ], [ %indvars.iv.next1923.prol, %.lr.ph1719.prol ]
  %1886 = sub nsw i64 %indvars.iv1922.ph, %wide.trip.count1925
  %1887 = icmp ugt i64 %1886, -4
  br i1 %1887, label %.loopexit, label %.lr.ph1719

.lr.ph1719:                                       ; preds = %.lr.ph1719.prol.loopexit, %.lr.ph1719
  %indvars.iv1922 = phi i64 [ %indvars.iv.next1923.3, %.lr.ph1719 ], [ %indvars.iv1922.unr, %.lr.ph1719.prol.loopexit ]
  %gep2108 = getelementptr double, ptr %invariant.gep2107, i64 %indvars.iv1922
  store double 0.000000e+00, ptr %gep2108, align 8, !tbaa !18
  %gep2110 = getelementptr double, ptr %invariant.gep2109, i64 %indvars.iv1922
  store double 0.000000e+00, ptr %gep2110, align 8, !tbaa !18
  %indvars.iv.next1923 = add nuw nsw i64 %indvars.iv1922, 1
  %gep2108.1 = getelementptr double, ptr %invariant.gep2107, i64 %indvars.iv.next1923
  store double 0.000000e+00, ptr %gep2108.1, align 8, !tbaa !18
  %gep2110.1 = getelementptr double, ptr %invariant.gep2109, i64 %indvars.iv.next1923
  store double 0.000000e+00, ptr %gep2110.1, align 8, !tbaa !18
  %indvars.iv.next1923.1 = add nuw nsw i64 %indvars.iv1922, 2
  %gep2108.2 = getelementptr double, ptr %invariant.gep2107, i64 %indvars.iv.next1923.1
  store double 0.000000e+00, ptr %gep2108.2, align 8, !tbaa !18
  %gep2110.2 = getelementptr double, ptr %invariant.gep2109, i64 %indvars.iv.next1923.1
  store double 0.000000e+00, ptr %gep2110.2, align 8, !tbaa !18
  %indvars.iv.next1923.2 = add nuw nsw i64 %indvars.iv1922, 3
  %gep2108.3 = getelementptr double, ptr %invariant.gep2107, i64 %indvars.iv.next1923.2
  store double 0.000000e+00, ptr %gep2108.3, align 8, !tbaa !18
  %gep2110.3 = getelementptr double, ptr %invariant.gep2109, i64 %indvars.iv.next1923.2
  store double 0.000000e+00, ptr %gep2110.3, align 8, !tbaa !18
  %indvars.iv.next1923.3 = add nuw nsw i64 %indvars.iv1922, 4
  %exitcond1926.not.3 = icmp eq i64 %indvars.iv.next1923.3, %wide.trip.count1925
  br i1 %exitcond1926.not.3, label %.loopexit, label %.lr.ph1719, !llvm.loop !82

1888:                                             ; preds = %._crit_edge1694
  br i1 %1003, label %1889, label %1969

1889:                                             ; preds = %1888
  %1890 = add nsw i32 %1814, -1
  %1891 = icmp slt i32 %1816, %1890
  br i1 %1891, label %1892, label %1926

1892:                                             ; preds = %1889
  %1893 = xor i32 %1816, -1
  %1894 = add i32 %1814, %1893
  store i32 %1894, ptr %23, align 4, !tbaa !5
  %1895 = add nsw i32 %1816, 2
  %1896 = mul nsw i32 %1895, %45
  %1897 = sext i32 %1896 to i64
  %gep1766 = getelementptr double, ptr %invariant.gep1761, i64 %1897
  %1898 = mul nsw i32 %1815, %1814
  %1899 = add nsw i32 %1898, %1895
  %1900 = sext i32 %1899 to i64
  %1901 = getelementptr inbounds double, ptr %51, i64 %1900
  %1902 = add nsw i32 %1898, %1816
  %1903 = sext i32 %1902 to i64
  %1904 = getelementptr inbounds double, ptr %51, i64 %1903
  %1905 = mul nsw i32 %1816, %45
  %1906 = sext i32 %1905 to i64
  %gep1768 = getelementptr double, ptr %invariant.gep1761, i64 %1906
  call void @dgemv_(ptr noundef nonnull @.str.10, ptr noundef nonnull %3, ptr noundef nonnull %23, ptr noundef nonnull @c_b29, ptr noundef %gep1766, ptr noundef nonnull %7, ptr noundef nonnull %1901, ptr noundef nonnull @c__1, ptr noundef nonnull %1904, ptr noundef %gep1768, ptr noundef nonnull @c__1) #6
  %1907 = load i32, ptr %3, align 4, !tbaa !5
  %1908 = load i32, ptr %36, align 4, !tbaa !5
  %1909 = xor i32 %1908, -1
  %1910 = add i32 %1907, %1909
  store i32 %1910, ptr %23, align 4, !tbaa !5
  %1911 = add nsw i32 %1908, 2
  %1912 = mul nsw i32 %1911, %45
  %1913 = sext i32 %1912 to i64
  %gep1770 = getelementptr double, ptr %invariant.gep1761, i64 %1913
  %1914 = load i32, ptr %37, align 4, !tbaa !5
  %1915 = add nsw i32 %1914, 1
  %1916 = mul nsw i32 %1915, %1907
  %1917 = add nsw i32 %1916, %1911
  %1918 = sext i32 %1917 to i64
  %1919 = getelementptr inbounds double, ptr %51, i64 %1918
  %1920 = add nsw i32 %1908, 1
  %1921 = add nsw i32 %1916, %1920
  %1922 = sext i32 %1921 to i64
  %1923 = getelementptr inbounds double, ptr %51, i64 %1922
  %1924 = mul nsw i32 %1920, %45
  %1925 = sext i32 %1924 to i64
  %gep1772 = getelementptr double, ptr %invariant.gep1761, i64 %1925
  call void @dgemv_(ptr noundef nonnull @.str.10, ptr noundef nonnull %3, ptr noundef nonnull %23, ptr noundef nonnull @c_b29, ptr noundef %gep1770, ptr noundef nonnull %7, ptr noundef nonnull %1919, ptr noundef nonnull @c__1, ptr noundef nonnull %1923, ptr noundef %gep1772, ptr noundef nonnull @c__1) #6
  br label %1944

1926:                                             ; preds = %1889
  %1927 = mul nsw i32 %1815, %1814
  %1928 = add nsw i32 %1927, %1816
  %1929 = sext i32 %1928 to i64
  %1930 = getelementptr inbounds double, ptr %51, i64 %1929
  %1931 = mul nsw i32 %1816, %45
  %1932 = sext i32 %1931 to i64
  %gep1762 = getelementptr double, ptr %invariant.gep1761, i64 %1932
  call void @dscal_(ptr noundef nonnull %3, ptr noundef nonnull %1930, ptr noundef %gep1762, ptr noundef nonnull @c__1) #6
  %1933 = load i32, ptr %36, align 4, !tbaa !5
  %1934 = add nsw i32 %1933, 1
  %1935 = load i32, ptr %37, align 4, !tbaa !5
  %1936 = add nsw i32 %1935, 1
  %1937 = load i32, ptr %3, align 4, !tbaa !5
  %1938 = mul nsw i32 %1936, %1937
  %1939 = add nsw i32 %1938, %1934
  %1940 = sext i32 %1939 to i64
  %1941 = getelementptr inbounds double, ptr %51, i64 %1940
  %1942 = mul nsw i32 %1934, %45
  %1943 = sext i32 %1942 to i64
  %gep1764 = getelementptr double, ptr %invariant.gep1761, i64 %1943
  call void @dscal_(ptr noundef nonnull %3, ptr noundef nonnull %1941, ptr noundef %gep1764, ptr noundef nonnull @c__1) #6
  br label %1944

1944:                                             ; preds = %1926, %1892
  %1945 = load i32, ptr %3, align 4, !tbaa !5
  store i32 %1945, ptr %23, align 4, !tbaa !5
  %.not13831700 = icmp slt i32 %1945, 1
  %.pre1982 = load i32, ptr %36, align 4, !tbaa !5
  %.pre2009 = mul nsw i32 %.pre1982, %45
  br i1 %.not13831700, label %._crit_edge2005, label %.lr.ph1704

._crit_edge2005:                                  ; preds = %1944
  %.pre2011 = sext i32 %.pre2009 to i64
  br label %1963

.lr.ph1704:                                       ; preds = %1944
  %1946 = add nsw i32 %.pre1982, 1
  %1947 = mul nsw i32 %1946, %45
  %1948 = sext i32 %.pre2009 to i64
  %1949 = sext i32 %1947 to i64
  %1950 = add nuw i32 %1945, 1
  %wide.trip.count1911 = zext i32 %1950 to i64
  %invariant.gep2099 = getelementptr double, ptr %47, i64 %1948
  %invariant.gep2101 = getelementptr double, ptr %47, i64 %1949
  br label %1951

1951:                                             ; preds = %.lr.ph1704, %1951
  %indvars.iv1908 = phi i64 [ 1, %.lr.ph1704 ], [ %indvars.iv.next1909, %1951 ]
  %.413331701 = phi double [ 0.000000e+00, %.lr.ph1704 ], [ %1962, %1951 ]
  %gep2100 = getelementptr double, ptr %invariant.gep2099, i64 %indvars.iv1908
  %1952 = load double, ptr %gep2100, align 8, !tbaa !18
  %1953 = fcmp oge double %1952, 0.000000e+00
  %1954 = fneg double %1952
  %1955 = select i1 %1953, double %1952, double %1954
  %gep2102 = getelementptr double, ptr %invariant.gep2101, i64 %indvars.iv1908
  %1956 = load double, ptr %gep2102, align 8, !tbaa !18
  %1957 = fcmp oge double %1956, 0.000000e+00
  %1958 = fneg double %1956
  %1959 = select i1 %1957, double %1956, double %1958
  %1960 = fadd double %1955, %1959
  %1961 = fcmp oge double %.413331701, %1960
  %1962 = select i1 %1961, double %.413331701, double %1960
  %indvars.iv.next1909 = add nuw nsw i64 %indvars.iv1908, 1
  %exitcond1912.not = icmp eq i64 %indvars.iv.next1909, %wide.trip.count1911
  br i1 %exitcond1912.not, label %._crit_edge1705, label %1951, !llvm.loop !83

._crit_edge1705:                                  ; preds = %1951
  store double %1952, ptr %25, align 8, !tbaa !18
  br label %1963

1963:                                             ; preds = %._crit_edge2005, %._crit_edge1705
  %.pre-phi2012 = phi i64 [ %.pre2011, %._crit_edge2005 ], [ %1948, %._crit_edge1705 ]
  %.41333.lcssa = phi double [ 0.000000e+00, %._crit_edge2005 ], [ %1962, %._crit_edge1705 ]
  %1964 = fdiv double 1.000000e+00, %.41333.lcssa
  store double %1964, ptr %33, align 8, !tbaa !18
  %gep1774 = getelementptr double, ptr %invariant.gep1761, i64 %.pre-phi2012
  call void @dscal_(ptr noundef nonnull %3, ptr noundef nonnull %33, ptr noundef %gep1774, ptr noundef nonnull @c__1) #6
  %1965 = load i32, ptr %36, align 4, !tbaa !5
  %1966 = add nsw i32 %1965, 1
  %1967 = mul nsw i32 %1966, %45
  %1968 = sext i32 %1967 to i64
  %gep1776 = getelementptr double, ptr %invariant.gep1761, i64 %1968
  call void @dscal_(ptr noundef nonnull %3, ptr noundef nonnull %33, ptr noundef %gep1776, ptr noundef nonnull @c__1) #6
  br label %.loopexit

1969:                                             ; preds = %1888
  %1970 = add nsw i32 %1816, -1
  store i32 %1970, ptr %23, align 4, !tbaa !5
  %.not1382.not1695 = icmp sgt i32 %1816, 1
  br i1 %.not1382.not1695, label %.lr.ph1698, label %.._crit_edge1699_crit_edge

.._crit_edge1699_crit_edge:                       ; preds = %1969
  %.pre2013 = add nsw i32 %1815, 1
  br label %._crit_edge1699

.lr.ph1698:                                       ; preds = %1969
  %1971 = mul nsw i32 %1814, %1815
  %1972 = add nsw i32 %1815, 1
  %1973 = mul nsw i32 %1972, %1814
  %1974 = sext i32 %1971 to i64
  %1975 = sext i32 %1973 to i64
  %wide.trip.count1906 = zext nneg i32 %1816 to i64
  %invariant.gep2095 = getelementptr double, ptr %51, i64 %1974
  %invariant.gep2097 = getelementptr double, ptr %51, i64 %1975
  %1976 = add nsw i64 %wide.trip.count1906, -1
  %min.iters.check2310 = icmp ult i32 %1816, 5
  br i1 %min.iters.check2310, label %scalar.ph2309.preheader, label %vector.memcheck2306

vector.memcheck2306:                              ; preds = %.lr.ph1698
  %1977 = sub nsw i64 %1975, %1974
  %1978 = and i64 %1977, 2305843009213693948
  %diff.check2307 = icmp eq i64 %1978, 0
  br i1 %diff.check2307, label %scalar.ph2309.preheader, label %vector.ph2311

vector.ph2311:                                    ; preds = %vector.memcheck2306
  %n.vec2313 = and i64 %1976, -4
  %ind.end2314 = or disjoint i64 %n.vec2313, 1
  br label %vector.body2316

vector.body2316:                                  ; preds = %vector.body2316, %vector.ph2311
  %index2317 = phi i64 [ 0, %vector.ph2311 ], [ %index.next2319, %vector.body2316 ]
  %offset.idx2318 = or disjoint i64 %index2317, 1
  %1979 = getelementptr double, ptr %invariant.gep2095, i64 %offset.idx2318
  %1980 = getelementptr i8, ptr %1979, i64 16
  store <2 x double> zeroinitializer, ptr %1979, align 8, !tbaa !18
  store <2 x double> zeroinitializer, ptr %1980, align 8, !tbaa !18
  %1981 = getelementptr double, ptr %invariant.gep2097, i64 %offset.idx2318
  %1982 = getelementptr i8, ptr %1981, i64 16
  store <2 x double> zeroinitializer, ptr %1981, align 8, !tbaa !18
  store <2 x double> zeroinitializer, ptr %1982, align 8, !tbaa !18
  %index.next2319 = add nuw i64 %index2317, 4
  %1983 = icmp eq i64 %index.next2319, %n.vec2313
  br i1 %1983, label %middle.block2308, label %vector.body2316, !llvm.loop !84

middle.block2308:                                 ; preds = %vector.body2316
  %cmp.n2320 = icmp eq i64 %1976, %n.vec2313
  br i1 %cmp.n2320, label %._crit_edge1699, label %scalar.ph2309.preheader

scalar.ph2309.preheader:                          ; preds = %middle.block2308, %vector.memcheck2306, %.lr.ph1698
  %indvars.iv1903.ph = phi i64 [ 1, %vector.memcheck2306 ], [ 1, %.lr.ph1698 ], [ %ind.end2314, %middle.block2308 ]
  %1984 = sub nsw i64 %wide.trip.count1906, %indvars.iv1903.ph
  %xtraiter2432 = and i64 %1984, 3
  %lcmp.mod2433.not = icmp eq i64 %xtraiter2432, 0
  br i1 %lcmp.mod2433.not, label %scalar.ph2309.prol.loopexit, label %scalar.ph2309.prol

scalar.ph2309.prol:                               ; preds = %scalar.ph2309.preheader, %scalar.ph2309.prol
  %indvars.iv1903.prol = phi i64 [ %indvars.iv.next1904.prol, %scalar.ph2309.prol ], [ %indvars.iv1903.ph, %scalar.ph2309.preheader ]
  %prol.iter2434 = phi i64 [ %prol.iter2434.next, %scalar.ph2309.prol ], [ 0, %scalar.ph2309.preheader ]
  %gep2096.prol = getelementptr double, ptr %invariant.gep2095, i64 %indvars.iv1903.prol
  store double 0.000000e+00, ptr %gep2096.prol, align 8, !tbaa !18
  %gep2098.prol = getelementptr double, ptr %invariant.gep2097, i64 %indvars.iv1903.prol
  store double 0.000000e+00, ptr %gep2098.prol, align 8, !tbaa !18
  %indvars.iv.next1904.prol = add nuw nsw i64 %indvars.iv1903.prol, 1
  %prol.iter2434.next = add i64 %prol.iter2434, 1
  %prol.iter2434.cmp.not = icmp eq i64 %prol.iter2434.next, %xtraiter2432
  br i1 %prol.iter2434.cmp.not, label %scalar.ph2309.prol.loopexit, label %scalar.ph2309.prol, !llvm.loop !85

scalar.ph2309.prol.loopexit:                      ; preds = %scalar.ph2309.prol, %scalar.ph2309.preheader
  %indvars.iv1903.unr = phi i64 [ %indvars.iv1903.ph, %scalar.ph2309.preheader ], [ %indvars.iv.next1904.prol, %scalar.ph2309.prol ]
  %1985 = sub nsw i64 %indvars.iv1903.ph, %wide.trip.count1906
  %1986 = icmp ugt i64 %1985, -4
  br i1 %1986, label %._crit_edge1699, label %scalar.ph2309

scalar.ph2309:                                    ; preds = %scalar.ph2309.prol.loopexit, %scalar.ph2309
  %indvars.iv1903 = phi i64 [ %indvars.iv.next1904.3, %scalar.ph2309 ], [ %indvars.iv1903.unr, %scalar.ph2309.prol.loopexit ]
  %gep2096 = getelementptr double, ptr %invariant.gep2095, i64 %indvars.iv1903
  store double 0.000000e+00, ptr %gep2096, align 8, !tbaa !18
  %gep2098 = getelementptr double, ptr %invariant.gep2097, i64 %indvars.iv1903
  store double 0.000000e+00, ptr %gep2098, align 8, !tbaa !18
  %indvars.iv.next1904 = add nuw nsw i64 %indvars.iv1903, 1
  %gep2096.1 = getelementptr double, ptr %invariant.gep2095, i64 %indvars.iv.next1904
  store double 0.000000e+00, ptr %gep2096.1, align 8, !tbaa !18
  %gep2098.1 = getelementptr double, ptr %invariant.gep2097, i64 %indvars.iv.next1904
  store double 0.000000e+00, ptr %gep2098.1, align 8, !tbaa !18
  %indvars.iv.next1904.1 = add nuw nsw i64 %indvars.iv1903, 2
  %gep2096.2 = getelementptr double, ptr %invariant.gep2095, i64 %indvars.iv.next1904.1
  store double 0.000000e+00, ptr %gep2096.2, align 8, !tbaa !18
  %gep2098.2 = getelementptr double, ptr %invariant.gep2097, i64 %indvars.iv.next1904.1
  store double 0.000000e+00, ptr %gep2098.2, align 8, !tbaa !18
  %indvars.iv.next1904.2 = add nuw nsw i64 %indvars.iv1903, 3
  %gep2096.3 = getelementptr double, ptr %invariant.gep2095, i64 %indvars.iv.next1904.2
  store double 0.000000e+00, ptr %gep2096.3, align 8, !tbaa !18
  %gep2098.3 = getelementptr double, ptr %invariant.gep2097, i64 %indvars.iv.next1904.2
  store double 0.000000e+00, ptr %gep2098.3, align 8, !tbaa !18
  %indvars.iv.next1904.3 = add nuw nsw i64 %indvars.iv1903, 4
  %exitcond1907.not.3 = icmp eq i64 %indvars.iv.next1904.3, %wide.trip.count1906
  br i1 %exitcond1907.not.3, label %._crit_edge1699, label %scalar.ph2309, !llvm.loop !86

._crit_edge1699:                                  ; preds = %scalar.ph2309.prol.loopexit, %scalar.ph2309, %middle.block2308, %.._crit_edge1699_crit_edge
  %.pre-phi2014 = phi i32 [ %.pre2013, %.._crit_edge1699_crit_edge ], [ %1972, %middle.block2308 ], [ %1972, %scalar.ph2309 ], [ %1972, %scalar.ph2309.prol.loopexit ]
  %1987 = add nsw i32 %1815, -1
  %1988 = sext i32 %1987 to i64
  %1989 = getelementptr inbounds [128 x i32], ptr %35, i64 0, i64 %1988
  store i32 1, ptr %1989, align 4, !tbaa !5
  %1990 = sext i32 %1815 to i64
  %1991 = getelementptr inbounds [128 x i32], ptr %35, i64 0, i64 %1990
  store i32 -1, ptr %1991, align 4, !tbaa !5
  store i32 %.pre-phi2014, ptr %37, align 4, !tbaa !5
  br label %.loopexit

.loopexit:                                        ; preds = %.lr.ph1719.prol.loopexit, %.lr.ph1719, %middle.block2293, %.lr.ph1743.preheader, %1860, %1298, %._crit_edge1699, %1963, %._crit_edge1739
  br i1 %1004, label %1992, label %2072

1992:                                             ; preds = %.loopexit
  %1993 = load i32, ptr %36, align 4
  %not..not1377 = xor i1 %.not1377, true
  %1994 = zext i1 %not..not1377 to i32
  %.11277 = add nsw i32 %1993, %1994
  %1995 = load i32, ptr %37, align 4, !tbaa !5
  %.not1388 = icmp sge i32 %1995, %1005
  %.pre1992 = load i32, ptr %3, align 4, !tbaa !5
  %1996 = icmp eq i32 %.11277, %.pre1992
  %or.cond2137 = select i1 %.not1388, i1 true, i1 %1996
  br i1 %or.cond2137, label %1997, label %2070

1997:                                             ; preds = %1992
  %1998 = sub i32 %1995, %.11277
  %1999 = add i32 %1998, %.pre1992
  store i32 %1999, ptr %23, align 4, !tbaa !5
  %2000 = sub nsw i32 %.11277, %1995
  %2001 = add nsw i32 %2000, 1
  %2002 = mul nsw i32 %2001, %45
  %2003 = sext i32 %2002 to i64
  %gep1786 = getelementptr double, ptr %invariant.gep1761, i64 %2003
  %2004 = add nsw i32 %.pre1992, %2001
  %2005 = sext i32 %2004 to i64
  %2006 = getelementptr inbounds double, ptr %51, i64 %2005
  %2007 = mul nsw i32 %.pre1992, %1006
  %2008 = sext i32 %2007 to i64
  %gep1788 = getelementptr double, ptr %12, i64 %2008
  call void @dgemm_(ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.10, ptr noundef nonnull %3, ptr noundef nonnull %37, ptr noundef nonnull %23, ptr noundef nonnull @c_b29, ptr noundef %gep1786, ptr noundef nonnull %7, ptr noundef nonnull %2006, ptr noundef nonnull %3, ptr noundef nonnull @c_b17, ptr noundef %gep1788, ptr noundef nonnull %3) #6
  %2009 = load i32, ptr %37, align 4, !tbaa !5
  store i32 %2009, ptr %23, align 4, !tbaa !5
  %.not13891756 = icmp slt i32 %2009, 1
  br i1 %.not13891756, label %._crit_edge1760, label %.lr.ph1759

.lr.ph1759:                                       ; preds = %1997, %2055
  %indvars.iv1952 = phi i64 [ %indvars.iv.next1953, %2055 ], [ 1, %1997 ]
  %2010 = add nsw i64 %indvars.iv1952, -1
  %2011 = getelementptr inbounds [128 x i32], ptr %35, i64 0, i64 %2010
  %2012 = load i32, ptr %2011, align 4, !tbaa !5
  switch i32 %2012, label %.lr.ph1759._crit_edge [
    i32 0, label %2013
    i32 1, label %2030
  ]

.lr.ph1759._crit_edge:                            ; preds = %.lr.ph1759
  %.pre1993 = load i32, ptr %3, align 4, !tbaa !5
  br label %2055

2013:                                             ; preds = %.lr.ph1759
  %2014 = add nuw nsw i64 %indvars.iv1952, %1009
  %2015 = load i32, ptr %3, align 4, !tbaa !5
  %2016 = sext i32 %2015 to i64
  %2017 = mul nsw i64 %2014, %2016
  %gep1753 = getelementptr double, ptr %12, i64 %2017
  %2018 = call i32 @idamax_(ptr noundef nonnull %3, ptr noundef %gep1753, ptr noundef nonnull @c__1) #6
  %2019 = load i32, ptr %3, align 4, !tbaa !5
  %2020 = trunc nsw i64 %2014 to i32
  %2021 = mul nsw i32 %2019, %2020
  %2022 = add nsw i32 %2021, %2018
  %2023 = sext i32 %2022 to i64
  %2024 = getelementptr inbounds double, ptr %51, i64 %2023
  %2025 = load double, ptr %2024, align 8, !tbaa !18
  store double %2025, ptr %25, align 8, !tbaa !18
  %2026 = fcmp oge double %2025, 0.000000e+00
  %2027 = fneg double %2025
  %2028 = select i1 %2026, double %2025, double %2027
  %2029 = fdiv double 1.000000e+00, %2028
  store double %2029, ptr %33, align 8, !tbaa !18
  br label %2055

2030:                                             ; preds = %.lr.ph1759
  %2031 = load i32, ptr %3, align 4, !tbaa !5
  store i32 %2031, ptr %24, align 4, !tbaa !5
  %.not13901744 = icmp slt i32 %2031, 1
  br i1 %.not13901744, label %2053, label %.lr.ph1748

.lr.ph1748:                                       ; preds = %2030
  %2032 = add nuw nsw i64 %indvars.iv1952, %1009
  %2033 = trunc nsw i64 %2032 to i32
  %2034 = mul nuw nsw i32 %2031, %2033
  %2035 = trunc i64 %2032 to i32
  %2036 = add i32 %2035, 1
  %2037 = mul nuw nsw i32 %2031, %2036
  %2038 = zext i32 %2034 to i64
  %2039 = zext i32 %2037 to i64
  %2040 = add nuw i32 %2031, 1
  %wide.trip.count1950 = zext i32 %2040 to i64
  %invariant.gep2115 = getelementptr inbounds double, ptr %51, i64 %2038
  %invariant.gep2117 = getelementptr inbounds double, ptr %51, i64 %2039
  br label %2041

2041:                                             ; preds = %.lr.ph1748, %2041
  %indvars.iv1946 = phi i64 [ 1, %.lr.ph1748 ], [ %indvars.iv.next1947, %2041 ]
  %.513341745 = phi double [ 0.000000e+00, %.lr.ph1748 ], [ %2052, %2041 ]
  %gep2116 = getelementptr inbounds double, ptr %invariant.gep2115, i64 %indvars.iv1946
  %2042 = load double, ptr %gep2116, align 8, !tbaa !18
  %2043 = fcmp oge double %2042, 0.000000e+00
  %2044 = fneg double %2042
  %2045 = select i1 %2043, double %2042, double %2044
  %gep2118 = getelementptr inbounds double, ptr %invariant.gep2117, i64 %indvars.iv1946
  %2046 = load double, ptr %gep2118, align 8, !tbaa !18
  %2047 = fcmp oge double %2046, 0.000000e+00
  %2048 = fneg double %2046
  %2049 = select i1 %2047, double %2046, double %2048
  %2050 = fadd double %2045, %2049
  %2051 = fcmp oge double %.513341745, %2050
  %2052 = select i1 %2051, double %.513341745, double %2050
  %indvars.iv.next1947 = add nuw nsw i64 %indvars.iv1946, 1
  %exitcond1951.not = icmp eq i64 %indvars.iv.next1947, %wide.trip.count1950
  br i1 %exitcond1951.not, label %._crit_edge1749, label %2041, !llvm.loop !87

._crit_edge1749:                                  ; preds = %2041
  store double %2042, ptr %25, align 8, !tbaa !18
  br label %2053

2053:                                             ; preds = %._crit_edge1749, %2030
  %.51334.lcssa = phi double [ %2052, %._crit_edge1749 ], [ 0.000000e+00, %2030 ]
  %2054 = fdiv double 1.000000e+00, %.51334.lcssa
  store double %2054, ptr %33, align 8, !tbaa !18
  br label %2055

2055:                                             ; preds = %.lr.ph1759._crit_edge, %2053, %2013
  %2056 = phi i32 [ %.pre1993, %.lr.ph1759._crit_edge ], [ %2031, %2053 ], [ %2019, %2013 ]
  %2057 = add nuw nsw i64 %indvars.iv1952, %1009
  %2058 = sext i32 %2056 to i64
  %2059 = mul nsw i64 %2057, %2058
  %gep1755 = getelementptr double, ptr %12, i64 %2059
  call void @dscal_(ptr noundef nonnull %3, ptr noundef nonnull %33, ptr noundef %gep1755, ptr noundef nonnull @c__1) #6
  %indvars.iv.next1953 = add nuw nsw i64 %indvars.iv1952, 1
  %2060 = load i32, ptr %23, align 4, !tbaa !5
  %2061 = sext i32 %2060 to i64
  %.not1389.not = icmp slt i64 %indvars.iv1952, %2061
  br i1 %.not1389.not, label %.lr.ph1759, label %._crit_edge1760.loopexit, !llvm.loop !88

._crit_edge1760.loopexit:                         ; preds = %2055
  %.pre1994 = load i32, ptr %37, align 4, !tbaa !5
  br label %._crit_edge1760

._crit_edge1760:                                  ; preds = %._crit_edge1760.loopexit, %1997
  %2062 = phi i32 [ %.pre1994, %._crit_edge1760.loopexit ], [ %2009, %1997 ]
  %2063 = load i32, ptr %3, align 4, !tbaa !5
  %2064 = mul nsw i32 %2063, %1006
  %2065 = sext i32 %2064 to i64
  %gep1790 = getelementptr double, ptr %12, i64 %2065
  %2066 = add i32 %.11277, 1
  %2067 = sub i32 %2066, %2062
  %2068 = mul nsw i32 %2067, %45
  %2069 = sext i32 %2068 to i64
  %gep1792 = getelementptr double, ptr %invariant.gep1761, i64 %2069
  call void @dlacpy_(ptr noundef nonnull @.str.7, ptr noundef nonnull %3, ptr noundef nonnull %37, ptr noundef %gep1790, ptr noundef nonnull %3, ptr noundef %gep1792, ptr noundef nonnull %7) #6
  store i32 1, ptr %37, align 4, !tbaa !5
  br label %2072

2070:                                             ; preds = %1992
  %2071 = add nsw i32 %1995, 1
  store i32 %2071, ptr %37, align 4, !tbaa !5
  br label %2072

2072:                                             ; preds = %.thread1455, %._crit_edge1760, %2070, %.loopexit
  %not..not13771460 = xor i1 %.not1377, true
  %spec.select1415 = zext i1 %not..not13771460 to i32
  %spec.select1416.v = select i1 %.not1377, i32 1, i32 2
  %spec.select1416 = add nsw i32 %spec.select1416.v, %.212801796
  %.pre1995 = load i32, ptr %36, align 4, !tbaa !5
  %.pre1996 = load i32, ptr %22, align 4, !tbaa !5
  br label %2073

2073:                                             ; preds = %2072, %1011, %1026
  %2074 = phi i32 [ %1012, %1026 ], [ %1012, %1011 ], [ %.pre1996, %2072 ]
  %2075 = phi i32 [ %storemerge13731794, %1026 ], [ %storemerge13731794, %1011 ], [ %.pre1995, %2072 ]
  %.5 = phi i32 [ %.4, %1026 ], [ -1, %1011 ], [ %spec.select1415, %2072 ]
  %.3 = phi i32 [ %.212801796, %1026 ], [ %.212801796, %1011 ], [ %spec.select1416, %2072 ]
  %2076 = add nsw i32 %2075, 1
  store i32 %2076, ptr %36, align 4, !tbaa !5
  %.not1374.not = icmp slt i32 %2075, %2074
  br i1 %.not1374.not, label %1011, label %.loopexit1491, !llvm.loop !89

.loopexit1491:                                    ; preds = %2073, %997, %.loopexit1495, %165, %164, %.thread
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %37) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %36) #6
  call void @llvm.lifetime.end.p0(i64 512, ptr nonnull %35) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %32) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %27) #6
  call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %26) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %20) #6
  ret void
}

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

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

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

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

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

declare double @dlamch_(ptr noundef) local_unnamed_addr #2

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

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare double @sqrt(double noundef) local_unnamed_addr #3

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #5

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!7, !7, i64 0}
!12 = distinct !{!12, !13, !14, !15}
!13 = !{!"llvm.loop.mustprogress"}
!14 = !{!"llvm.loop.isvectorized", i32 1}
!15 = !{!"llvm.loop.unroll.runtime.disable"}
!16 = distinct !{!16, !13, !14}
!17 = distinct !{!17, !13}
!18 = !{!19, !19, i64 0}
!19 = !{!"double", !7, i64 0}
!20 = distinct !{!20, !13}
!21 = distinct !{!21, !13}
!22 = distinct !{!22, !13}
!23 = distinct !{!23, !24}
!24 = !{!"llvm.loop.unroll.disable"}
!25 = distinct !{!25, !13, !14, !15}
!26 = distinct !{!26, !13, !14}
!27 = distinct !{!27, !13}
!28 = !{!29}
!29 = distinct !{!29, !30}
!30 = distinct !{!30, !"LVerDomain"}
!31 = !{!32}
!32 = distinct !{!32, !30}
!33 = !{!34}
!34 = distinct !{!34, !30}
!35 = !{!36}
!36 = distinct !{!36, !30}
!37 = !{!38, !29, !34, !32, !39}
!38 = distinct !{!38, !30}
!39 = distinct !{!39, !30}
!40 = !{!39}
!41 = !{!38}
!42 = !{!29, !34, !32, !39}
!43 = distinct !{!43, !13, !14, !15}
!44 = distinct !{!44, !13, !14}
!45 = distinct !{!45, !13}
!46 = distinct !{!46, !13}
!47 = distinct !{!47, !13, !14, !15}
!48 = distinct !{!48, !24}
!49 = distinct !{!49, !13, !14}
!50 = distinct !{!50, !13}
!51 = distinct !{!51, !13, !14, !15}
!52 = distinct !{!52, !24}
!53 = distinct !{!53, !13, !14}
!54 = distinct !{!54, !13}
!55 = distinct !{!55, !13}
!56 = distinct !{!56, !13}
!57 = distinct !{!57, !13, !14, !15}
!58 = distinct !{!58, !24}
!59 = distinct !{!59, !13, !14}
!60 = distinct !{!60, !13}
!61 = !{!62}
!62 = distinct !{!62, !63}
!63 = distinct !{!63, !"LVerDomain"}
!64 = !{!65}
!65 = distinct !{!65, !63}
!66 = !{!67}
!67 = distinct !{!67, !63}
!68 = !{!69}
!69 = distinct !{!69, !63}
!70 = !{!71, !62, !67, !65, !72}
!71 = distinct !{!71, !63}
!72 = distinct !{!72, !63}
!73 = !{!72}
!74 = !{!71}
!75 = !{!62, !67, !65, !72}
!76 = distinct !{!76, !13, !14, !15}
!77 = distinct !{!77, !13, !14}
!78 = distinct !{!78, !13}
!79 = distinct !{!79, !13}
!80 = distinct !{!80, !13, !14, !15}
!81 = distinct !{!81, !24}
!82 = distinct !{!82, !13, !14}
!83 = distinct !{!83, !13}
!84 = distinct !{!84, !13, !14, !15}
!85 = distinct !{!85, !24}
!86 = distinct !{!86, !13, !14}
!87 = distinct !{!87, !13}
!88 = distinct !{!88, !13}
!89 = distinct !{!89, !13}


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