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

; 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 [7 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [13 x i8], align 1
@c__1 = external hidden global i64, align 8
@c_b15 = external hidden global double, align 8
@c_b17 = external hidden global double, align 8

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

114:                                              ; preds = %17
  %115 = load ptr, ptr %19, align 8, !tbaa !5
  %116 = call i64 @lsame_(ptr noundef %115, ptr noundef @.str.1)
  %117 = icmp ne i64 %116, 0
  br i1 %117, label %124, label %118

118:                                              ; preds = %114
  %119 = load ptr, ptr %19, align 8, !tbaa !5
  %120 = call i64 @lsame_(ptr noundef %119, ptr noundef @.str.2)
  %121 = icmp ne i64 %120, 0
  br i1 %121, label %124, label %122

122:                                              ; preds = %118
  %123 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -1, ptr %123, align 8, !tbaa !9
  br label %202

124:                                              ; preds = %118, %114, %17
  %125 = load ptr, ptr %20, align 8, !tbaa !5
  %126 = load i64, ptr %125, align 8, !tbaa !9
  %127 = icmp slt i64 %126, 0
  br i1 %127, label %128, label %130

128:                                              ; preds = %124
  %129 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -2, ptr %129, align 8, !tbaa !9
  br label %201

130:                                              ; preds = %124
  %131 = load ptr, ptr %21, align 8, !tbaa !5
  %132 = load i64, ptr %131, align 8, !tbaa !9
  %133 = icmp slt i64 %132, 0
  br i1 %133, label %134, label %136

134:                                              ; preds = %130
  %135 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -3, ptr %135, align 8, !tbaa !9
  br label %200

136:                                              ; preds = %130
  %137 = load ptr, ptr %23, align 8, !tbaa !5
  %138 = load i64, ptr %137, align 8, !tbaa !9
  %139 = load ptr, ptr %20, align 8, !tbaa !5
  %140 = load i64, ptr %139, align 8, !tbaa !9
  %141 = icmp sge i64 1, %140
  br i1 %141, label %142, label %143

142:                                              ; preds = %136
  br label %146

143:                                              ; preds = %136
  %144 = load ptr, ptr %20, align 8, !tbaa !5
  %145 = load i64, ptr %144, align 8, !tbaa !9
  br label %146

146:                                              ; preds = %143, %142
  %147 = phi i64 [ 1, %142 ], [ %145, %143 ]
  %148 = icmp slt i64 %138, %147
  br i1 %148, label %149, label %151

149:                                              ; preds = %146
  %150 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -5, ptr %150, align 8, !tbaa !9
  br label %199

151:                                              ; preds = %146
  %152 = load ptr, ptr %25, align 8, !tbaa !5
  %153 = load i64, ptr %152, align 8, !tbaa !9
  %154 = load ptr, ptr %20, align 8, !tbaa !5
  %155 = load i64, ptr %154, align 8, !tbaa !9
  %156 = icmp sge i64 1, %155
  br i1 %156, label %157, label %158

157:                                              ; preds = %151
  br label %161

158:                                              ; preds = %151
  %159 = load ptr, ptr %20, align 8, !tbaa !5
  %160 = load i64, ptr %159, align 8, !tbaa !9
  br label %161

161:                                              ; preds = %158, %157
  %162 = phi i64 [ 1, %157 ], [ %160, %158 ]
  %163 = icmp slt i64 %153, %162
  br i1 %163, label %164, label %166

164:                                              ; preds = %161
  %165 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -7, ptr %165, align 8, !tbaa !9
  br label %198

166:                                              ; preds = %161
  %167 = load ptr, ptr %28, align 8, !tbaa !5
  %168 = load i64, ptr %167, align 8, !tbaa !9
  %169 = load ptr, ptr %20, align 8, !tbaa !5
  %170 = load i64, ptr %169, align 8, !tbaa !9
  %171 = icmp sge i64 1, %170
  br i1 %171, label %172, label %173

172:                                              ; preds = %166
  br label %176

173:                                              ; preds = %166
  %174 = load ptr, ptr %20, align 8, !tbaa !5
  %175 = load i64, ptr %174, align 8, !tbaa !9
  br label %176

176:                                              ; preds = %173, %172
  %177 = phi i64 [ 1, %172 ], [ %175, %173 ]
  %178 = icmp slt i64 %168, %177
  br i1 %178, label %179, label %181

179:                                              ; preds = %176
  %180 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -10, ptr %180, align 8, !tbaa !9
  br label %197

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

187:                                              ; preds = %181
  br label %191

188:                                              ; preds = %181
  %189 = load ptr, ptr %20, align 8, !tbaa !5
  %190 = load i64, ptr %189, align 8, !tbaa !9
  br label %191

191:                                              ; preds = %188, %187
  %192 = phi i64 [ 1, %187 ], [ %190, %188 ]
  %193 = icmp slt i64 %183, %192
  br i1 %193, label %194, label %196

194:                                              ; preds = %191
  %195 = load ptr, ptr %35, align 8, !tbaa !5
  store i64 -12, ptr %195, align 8, !tbaa !9
  br label %196

196:                                              ; preds = %194, %191
  br label %197

197:                                              ; preds = %196, %179
  br label %198

198:                                              ; preds = %197, %164
  br label %199

199:                                              ; preds = %198, %149
  br label %200

200:                                              ; preds = %199, %134
  br label %201

201:                                              ; preds = %200, %128
  br label %202

202:                                              ; preds = %201, %122
  %203 = load ptr, ptr %35, align 8, !tbaa !5
  %204 = load i64, ptr %203, align 8, !tbaa !9
  %205 = icmp ne i64 %204, 0
  br i1 %205, label %206, label %211

206:                                              ; preds = %202
  %207 = load ptr, ptr %35, align 8, !tbaa !5
  %208 = load i64, ptr %207, align 8, !tbaa !9
  %209 = sub nsw i64 0, %208
  store i64 %209, ptr %44, align 8, !tbaa !9
  %210 = call i32 @xerbla_(ptr noundef @.str.3, ptr noundef %44)
  store i32 0, ptr %18, align 4
  store i32 1, ptr %66, align 4
  br label %852

211:                                              ; preds = %202
  %212 = load ptr, ptr %20, align 8, !tbaa !5
  %213 = load i64, ptr %212, align 8, !tbaa !9
  %214 = icmp eq i64 %213, 0
  br i1 %214, label %219, label %215

215:                                              ; preds = %211
  %216 = load ptr, ptr %21, align 8, !tbaa !5
  %217 = load i64, ptr %216, align 8, !tbaa !9
  %218 = icmp eq i64 %217, 0
  br i1 %218, label %219, label %237

219:                                              ; preds = %215, %211
  %220 = load ptr, ptr %21, align 8, !tbaa !5
  %221 = load i64, ptr %220, align 8, !tbaa !9
  store i64 %221, ptr %44, align 8, !tbaa !9
  store i64 1, ptr %51, align 8, !tbaa !9
  br label %222

222:                                              ; preds = %233, %219
  %223 = load i64, ptr %51, align 8, !tbaa !9
  %224 = load i64, ptr %44, align 8, !tbaa !9
  %225 = icmp sle i64 %223, %224
  br i1 %225, label %226, label %236

226:                                              ; preds = %222
  %227 = load ptr, ptr %31, align 8, !tbaa !5
  %228 = load i64, ptr %51, align 8, !tbaa !9
  %229 = getelementptr inbounds double, ptr %227, i64 %228
  store double 0.000000e+00, ptr %229, align 8, !tbaa !11
  %230 = load ptr, ptr %32, align 8, !tbaa !5
  %231 = load i64, ptr %51, align 8, !tbaa !9
  %232 = getelementptr inbounds double, ptr %230, i64 %231
  store double 0.000000e+00, ptr %232, align 8, !tbaa !11
  br label %233

233:                                              ; preds = %226
  %234 = load i64, ptr %51, align 8, !tbaa !9
  %235 = add nsw i64 %234, 1
  store i64 %235, ptr %51, align 8, !tbaa !9
  br label %222, !llvm.loop !13

236:                                              ; preds = %222
  store i32 0, ptr %18, align 4
  store i32 1, ptr %66, align 4
  br label %852

237:                                              ; preds = %215
  %238 = load i64, ptr %63, align 8, !tbaa !9
  %239 = icmp ne i64 %238, 0
  br i1 %239, label %240, label %242

240:                                              ; preds = %237
  %241 = getelementptr inbounds [1 x i8], ptr %64, i64 0, i64 0
  store i8 84, ptr %241, align 1, !tbaa !15
  br label %244

242:                                              ; preds = %237
  %243 = getelementptr inbounds [1 x i8], ptr %64, i64 0, i64 0
  store i8 78, ptr %243, align 1, !tbaa !15
  br label %244

244:                                              ; preds = %242, %240
  %245 = load ptr, ptr %20, align 8, !tbaa !5
  %246 = load i64, ptr %245, align 8, !tbaa !9
  %247 = add nsw i64 %246, 1
  store i64 %247, ptr %55, align 8, !tbaa !9
  %248 = call double @dlamch_(ptr noundef @.str.4)
  store double %248, ptr %56, align 8, !tbaa !11
  %249 = call double @dlamch_(ptr noundef @.str.5)
  store double %249, ptr %62, align 8, !tbaa !11
  %250 = load i64, ptr %55, align 8, !tbaa !9
  %251 = sitofp i64 %250 to double
  %252 = load double, ptr %62, align 8, !tbaa !11
  %253 = fmul double %251, %252
  store double %253, ptr %58, align 8, !tbaa !11
  %254 = load double, ptr %58, align 8, !tbaa !11
  %255 = load double, ptr %56, align 8, !tbaa !11
  %256 = fdiv double %254, %255
  store double %256, ptr %59, align 8, !tbaa !11
  %257 = load ptr, ptr %21, align 8, !tbaa !5
  %258 = load i64, ptr %257, align 8, !tbaa !9
  store i64 %258, ptr %44, align 8, !tbaa !9
  store i64 1, ptr %51, align 8, !tbaa !9
  br label %259

259:                                              ; preds = %848, %244
  %260 = load i64, ptr %51, align 8, !tbaa !9
  %261 = load i64, ptr %44, align 8, !tbaa !9
  %262 = icmp sle i64 %260, %261
  br i1 %262, label %263, label %851

263:                                              ; preds = %259
  store i64 1, ptr %61, align 8, !tbaa !9
  store double 3.000000e+00, ptr %65, align 8, !tbaa !11
  br label %264

264:                                              ; preds = %566, %263
  %265 = load ptr, ptr %20, align 8, !tbaa !5
  %266 = load ptr, ptr %27, align 8, !tbaa !5
  %267 = load i64, ptr %51, align 8, !tbaa !9
  %268 = load i64, ptr %40, align 8, !tbaa !9
  %269 = mul nsw i64 %267, %268
  %270 = add nsw i64 %269, 1
  %271 = getelementptr inbounds double, ptr %266, i64 %270
  %272 = load ptr, ptr %33, align 8, !tbaa !5
  %273 = load ptr, ptr %20, align 8, !tbaa !5
  %274 = load i64, ptr %273, align 8, !tbaa !9
  %275 = add nsw i64 %274, 1
  %276 = getelementptr inbounds double, ptr %272, i64 %275
  %277 = call i32 @f2c_dcopy(ptr noundef %265, ptr noundef %271, ptr noundef @c__1, ptr noundef %276, ptr noundef @c__1)
  %278 = load ptr, ptr %19, align 8, !tbaa !5
  %279 = load ptr, ptr %20, align 8, !tbaa !5
  %280 = load ptr, ptr %20, align 8, !tbaa !5
  %281 = load ptr, ptr %22, align 8, !tbaa !5
  %282 = load i64, ptr %37, align 8, !tbaa !9
  %283 = getelementptr inbounds double, ptr %281, i64 %282
  %284 = load ptr, ptr %23, align 8, !tbaa !5
  %285 = load ptr, ptr %29, align 8, !tbaa !5
  %286 = load i64, ptr %51, align 8, !tbaa !9
  %287 = load i64, ptr %42, align 8, !tbaa !9
  %288 = mul nsw i64 %286, %287
  %289 = add nsw i64 %288, 1
  %290 = getelementptr inbounds double, ptr %285, i64 %289
  %291 = load ptr, ptr %33, align 8, !tbaa !5
  %292 = load ptr, ptr %20, align 8, !tbaa !5
  %293 = load i64, ptr %292, align 8, !tbaa !9
  %294 = add nsw i64 %293, 1
  %295 = getelementptr inbounds double, ptr %291, i64 %294
  %296 = call i32 @f2c_dgemv(ptr noundef %278, ptr noundef %279, ptr noundef %280, ptr noundef @c_b15, ptr noundef %283, ptr noundef %284, ptr noundef %290, ptr noundef @c__1, ptr noundef @c_b17, ptr noundef %295, ptr noundef @c__1)
  %297 = load ptr, ptr %20, align 8, !tbaa !5
  %298 = load i64, ptr %297, align 8, !tbaa !9
  store i64 %298, ptr %45, align 8, !tbaa !9
  store i64 1, ptr %50, align 8, !tbaa !9
  br label %299

299:                                              ; preds = %324, %264
  %300 = load i64, ptr %50, align 8, !tbaa !9
  %301 = load i64, ptr %45, align 8, !tbaa !9
  %302 = icmp sle i64 %300, %301
  br i1 %302, label %303, label %327

303:                                              ; preds = %299
  %304 = load ptr, ptr %27, align 8, !tbaa !5
  %305 = load i64, ptr %50, align 8, !tbaa !9
  %306 = load i64, ptr %51, align 8, !tbaa !9
  %307 = load i64, ptr %40, align 8, !tbaa !9
  %308 = mul nsw i64 %306, %307
  %309 = add nsw i64 %305, %308
  %310 = getelementptr inbounds double, ptr %304, i64 %309
  %311 = load double, ptr %310, align 8, !tbaa !11
  store double %311, ptr %47, align 8, !tbaa !11
  %312 = load double, ptr %47, align 8, !tbaa !11
  %313 = fcmp oge double %312, 0.000000e+00
  br i1 %313, label %314, label %316

314:                                              ; preds = %303
  %315 = load double, ptr %47, align 8, !tbaa !11
  br label %319

316:                                              ; preds = %303
  %317 = load double, ptr %47, align 8, !tbaa !11
  %318 = fneg double %317
  br label %319

319:                                              ; preds = %316, %314
  %320 = phi double [ %315, %314 ], [ %318, %316 ]
  %321 = load ptr, ptr %33, align 8, !tbaa !5
  %322 = load i64, ptr %50, align 8, !tbaa !9
  %323 = getelementptr inbounds double, ptr %321, i64 %322
  store double %320, ptr %323, align 8, !tbaa !11
  br label %324

324:                                              ; preds = %319
  %325 = load i64, ptr %50, align 8, !tbaa !9
  %326 = add nsw i64 %325, 1
  store i64 %326, ptr %50, align 8, !tbaa !9
  br label %299, !llvm.loop !16

327:                                              ; preds = %299
  %328 = load i64, ptr %63, align 8, !tbaa !9
  %329 = icmp ne i64 %328, 0
  br i1 %329, label %330, label %393

330:                                              ; preds = %327
  %331 = load ptr, ptr %20, align 8, !tbaa !5
  %332 = load i64, ptr %331, align 8, !tbaa !9
  store i64 %332, ptr %45, align 8, !tbaa !9
  store i64 1, ptr %52, align 8, !tbaa !9
  br label %333

333:                                              ; preds = %389, %330
  %334 = load i64, ptr %52, align 8, !tbaa !9
  %335 = load i64, ptr %45, align 8, !tbaa !9
  %336 = icmp sle i64 %334, %335
  br i1 %336, label %337, label %392

337:                                              ; preds = %333
  %338 = load ptr, ptr %29, align 8, !tbaa !5
  %339 = load i64, ptr %52, align 8, !tbaa !9
  %340 = load i64, ptr %51, align 8, !tbaa !9
  %341 = load i64, ptr %42, align 8, !tbaa !9
  %342 = mul nsw i64 %340, %341
  %343 = add nsw i64 %339, %342
  %344 = getelementptr inbounds double, ptr %338, i64 %343
  %345 = load double, ptr %344, align 8, !tbaa !11
  store double %345, ptr %47, align 8, !tbaa !11
  %346 = load double, ptr %47, align 8, !tbaa !11
  %347 = fcmp oge double %346, 0.000000e+00
  br i1 %347, label %348, label %350

348:                                              ; preds = %337
  %349 = load double, ptr %47, align 8, !tbaa !11
  br label %353

350:                                              ; preds = %337
  %351 = load double, ptr %47, align 8, !tbaa !11
  %352 = fneg double %351
  br label %353

353:                                              ; preds = %350, %348
  %354 = phi double [ %349, %348 ], [ %352, %350 ]
  store double %354, ptr %54, align 8, !tbaa !11
  %355 = load ptr, ptr %20, align 8, !tbaa !5
  %356 = load i64, ptr %355, align 8, !tbaa !9
  store i64 %356, ptr %46, align 8, !tbaa !9
  store i64 1, ptr %50, align 8, !tbaa !9
  br label %357

357:                                              ; preds = %385, %353
  %358 = load i64, ptr %50, align 8, !tbaa !9
  %359 = load i64, ptr %46, align 8, !tbaa !9
  %360 = icmp sle i64 %358, %359
  br i1 %360, label %361, label %388

361:                                              ; preds = %357
  %362 = load ptr, ptr %22, align 8, !tbaa !5
  %363 = load i64, ptr %50, align 8, !tbaa !9
  %364 = load i64, ptr %52, align 8, !tbaa !9
  %365 = load i64, ptr %36, align 8, !tbaa !9
  %366 = mul nsw i64 %364, %365
  %367 = add nsw i64 %363, %366
  %368 = getelementptr inbounds double, ptr %362, i64 %367
  %369 = load double, ptr %368, align 8, !tbaa !11
  store double %369, ptr %47, align 8, !tbaa !11
  %370 = load double, ptr %47, align 8, !tbaa !11
  %371 = fcmp oge double %370, 0.000000e+00
  br i1 %371, label %372, label %374

372:                                              ; preds = %361
  %373 = load double, ptr %47, align 8, !tbaa !11
  br label %377

374:                                              ; preds = %361
  %375 = load double, ptr %47, align 8, !tbaa !11
  %376 = fneg double %375
  br label %377

377:                                              ; preds = %374, %372
  %378 = phi double [ %373, %372 ], [ %376, %374 ]
  %379 = load double, ptr %54, align 8, !tbaa !11
  %380 = load ptr, ptr %33, align 8, !tbaa !5
  %381 = load i64, ptr %50, align 8, !tbaa !9
  %382 = getelementptr inbounds double, ptr %380, i64 %381
  %383 = load double, ptr %382, align 8, !tbaa !11
  %384 = call double @llvm.fmuladd.f64(double %378, double %379, double %383)
  store double %384, ptr %382, align 8, !tbaa !11
  br label %385

385:                                              ; preds = %377
  %386 = load i64, ptr %50, align 8, !tbaa !9
  %387 = add nsw i64 %386, 1
  store i64 %387, ptr %50, align 8, !tbaa !9
  br label %357, !llvm.loop !17

388:                                              ; preds = %357
  br label %389

389:                                              ; preds = %388
  %390 = load i64, ptr %52, align 8, !tbaa !9
  %391 = add nsw i64 %390, 1
  store i64 %391, ptr %52, align 8, !tbaa !9
  br label %333, !llvm.loop !18

392:                                              ; preds = %333
  br label %458

393:                                              ; preds = %327
  %394 = load ptr, ptr %20, align 8, !tbaa !5
  %395 = load i64, ptr %394, align 8, !tbaa !9
  store i64 %395, ptr %45, align 8, !tbaa !9
  store i64 1, ptr %52, align 8, !tbaa !9
  br label %396

396:                                              ; preds = %454, %393
  %397 = load i64, ptr %52, align 8, !tbaa !9
  %398 = load i64, ptr %45, align 8, !tbaa !9
  %399 = icmp sle i64 %397, %398
  br i1 %399, label %400, label %457

400:                                              ; preds = %396
  store double 0.000000e+00, ptr %53, align 8, !tbaa !11
  %401 = load ptr, ptr %20, align 8, !tbaa !5
  %402 = load i64, ptr %401, align 8, !tbaa !9
  store i64 %402, ptr %46, align 8, !tbaa !9
  store i64 1, ptr %50, align 8, !tbaa !9
  br label %403

403:                                              ; preds = %444, %400
  %404 = load i64, ptr %50, align 8, !tbaa !9
  %405 = load i64, ptr %46, align 8, !tbaa !9
  %406 = icmp sle i64 %404, %405
  br i1 %406, label %407, label %447

407:                                              ; preds = %403
  %408 = load ptr, ptr %22, align 8, !tbaa !5
  %409 = load i64, ptr %50, align 8, !tbaa !9
  %410 = load i64, ptr %52, align 8, !tbaa !9
  %411 = load i64, ptr %36, align 8, !tbaa !9
  %412 = mul nsw i64 %410, %411
  %413 = add nsw i64 %409, %412
  %414 = getelementptr inbounds double, ptr %408, i64 %413
  %415 = load double, ptr %414, align 8, !tbaa !11
  store double %415, ptr %47, align 8, !tbaa !11
  %416 = load double, ptr %47, align 8, !tbaa !11
  %417 = fcmp oge double %416, 0.000000e+00
  br i1 %417, label %418, label %420

418:                                              ; preds = %407
  %419 = load double, ptr %47, align 8, !tbaa !11
  br label %423

420:                                              ; preds = %407
  %421 = load double, ptr %47, align 8, !tbaa !11
  %422 = fneg double %421
  br label %423

423:                                              ; preds = %420, %418
  %424 = phi double [ %419, %418 ], [ %422, %420 ]
  %425 = load ptr, ptr %29, align 8, !tbaa !5
  %426 = load i64, ptr %50, align 8, !tbaa !9
  %427 = load i64, ptr %51, align 8, !tbaa !9
  %428 = load i64, ptr %42, align 8, !tbaa !9
  %429 = mul nsw i64 %427, %428
  %430 = add nsw i64 %426, %429
  %431 = getelementptr inbounds double, ptr %425, i64 %430
  %432 = load double, ptr %431, align 8, !tbaa !11
  store double %432, ptr %48, align 8, !tbaa !11
  %433 = load double, ptr %48, align 8, !tbaa !11
  %434 = fcmp oge double %433, 0.000000e+00
  br i1 %434, label %435, label %437

435:                                              ; preds = %423
  %436 = load double, ptr %48, align 8, !tbaa !11
  br label %440

437:                                              ; preds = %423
  %438 = load double, ptr %48, align 8, !tbaa !11
  %439 = fneg double %438
  br label %440

440:                                              ; preds = %437, %435
  %441 = phi double [ %436, %435 ], [ %439, %437 ]
  %442 = load double, ptr %53, align 8, !tbaa !11
  %443 = call double @llvm.fmuladd.f64(double %424, double %441, double %442)
  store double %443, ptr %53, align 8, !tbaa !11
  br label %444

444:                                              ; preds = %440
  %445 = load i64, ptr %50, align 8, !tbaa !9
  %446 = add nsw i64 %445, 1
  store i64 %446, ptr %50, align 8, !tbaa !9
  br label %403, !llvm.loop !19

447:                                              ; preds = %403
  %448 = load double, ptr %53, align 8, !tbaa !11
  %449 = load ptr, ptr %33, align 8, !tbaa !5
  %450 = load i64, ptr %52, align 8, !tbaa !9
  %451 = getelementptr inbounds double, ptr %449, i64 %450
  %452 = load double, ptr %451, align 8, !tbaa !11
  %453 = fadd double %452, %448
  store double %453, ptr %451, align 8, !tbaa !11
  br label %454

454:                                              ; preds = %447
  %455 = load i64, ptr %52, align 8, !tbaa !9
  %456 = add nsw i64 %455, 1
  store i64 %456, ptr %52, align 8, !tbaa !9
  br label %396, !llvm.loop !20

457:                                              ; preds = %396
  br label %458

458:                                              ; preds = %457, %392
  store double 0.000000e+00, ptr %53, align 8, !tbaa !11
  %459 = load ptr, ptr %20, align 8, !tbaa !5
  %460 = load i64, ptr %459, align 8, !tbaa !9
  store i64 %460, ptr %45, align 8, !tbaa !9
  store i64 1, ptr %50, align 8, !tbaa !9
  br label %461

461:                                              ; preds = %541, %458
  %462 = load i64, ptr %50, align 8, !tbaa !9
  %463 = load i64, ptr %45, align 8, !tbaa !9
  %464 = icmp sle i64 %462, %463
  br i1 %464, label %465, label %544

465:                                              ; preds = %461
  %466 = load ptr, ptr %33, align 8, !tbaa !5
  %467 = load i64, ptr %50, align 8, !tbaa !9
  %468 = getelementptr inbounds double, ptr %466, i64 %467
  %469 = load double, ptr %468, align 8, !tbaa !11
  %470 = load double, ptr %59, align 8, !tbaa !11
  %471 = fcmp ogt double %469, %470
  br i1 %471, label %472, label %504

472:                                              ; preds = %465
  %473 = load double, ptr %53, align 8, !tbaa !11
  store double %473, ptr %48, align 8, !tbaa !11
  %474 = load ptr, ptr %33, align 8, !tbaa !5
  %475 = load ptr, ptr %20, align 8, !tbaa !5
  %476 = load i64, ptr %475, align 8, !tbaa !9
  %477 = load i64, ptr %50, align 8, !tbaa !9
  %478 = add nsw i64 %476, %477
  %479 = getelementptr inbounds double, ptr %474, i64 %478
  %480 = load double, ptr %479, align 8, !tbaa !11
  store double %480, ptr %47, align 8, !tbaa !11
  %481 = load double, ptr %47, align 8, !tbaa !11
  %482 = fcmp oge double %481, 0.000000e+00
  br i1 %482, label %483, label %485

483:                                              ; preds = %472
  %484 = load double, ptr %47, align 8, !tbaa !11
  br label %488

485:                                              ; preds = %472
  %486 = load double, ptr %47, align 8, !tbaa !11
  %487 = fneg double %486
  br label %488

488:                                              ; preds = %485, %483
  %489 = phi double [ %484, %483 ], [ %487, %485 ]
  %490 = load ptr, ptr %33, align 8, !tbaa !5
  %491 = load i64, ptr %50, align 8, !tbaa !9
  %492 = getelementptr inbounds double, ptr %490, i64 %491
  %493 = load double, ptr %492, align 8, !tbaa !11
  %494 = fdiv double %489, %493
  store double %494, ptr %49, align 8, !tbaa !11
  %495 = load double, ptr %48, align 8, !tbaa !11
  %496 = load double, ptr %49, align 8, !tbaa !11
  %497 = fcmp oge double %495, %496
  br i1 %497, label %498, label %500

498:                                              ; preds = %488
  %499 = load double, ptr %48, align 8, !tbaa !11
  br label %502

500:                                              ; preds = %488
  %501 = load double, ptr %49, align 8, !tbaa !11
  br label %502

502:                                              ; preds = %500, %498
  %503 = phi double [ %499, %498 ], [ %501, %500 ]
  store double %503, ptr %53, align 8, !tbaa !11
  br label %540

504:                                              ; preds = %465
  %505 = load double, ptr %53, align 8, !tbaa !11
  store double %505, ptr %48, align 8, !tbaa !11
  %506 = load ptr, ptr %33, align 8, !tbaa !5
  %507 = load ptr, ptr %20, align 8, !tbaa !5
  %508 = load i64, ptr %507, align 8, !tbaa !9
  %509 = load i64, ptr %50, align 8, !tbaa !9
  %510 = add nsw i64 %508, %509
  %511 = getelementptr inbounds double, ptr %506, i64 %510
  %512 = load double, ptr %511, align 8, !tbaa !11
  store double %512, ptr %47, align 8, !tbaa !11
  %513 = load double, ptr %47, align 8, !tbaa !11
  %514 = fcmp oge double %513, 0.000000e+00
  br i1 %514, label %515, label %517

515:                                              ; preds = %504
  %516 = load double, ptr %47, align 8, !tbaa !11
  br label %520

517:                                              ; preds = %504
  %518 = load double, ptr %47, align 8, !tbaa !11
  %519 = fneg double %518
  br label %520

520:                                              ; preds = %517, %515
  %521 = phi double [ %516, %515 ], [ %519, %517 ]
  %522 = load double, ptr %58, align 8, !tbaa !11
  %523 = fadd double %521, %522
  %524 = load ptr, ptr %33, align 8, !tbaa !5
  %525 = load i64, ptr %50, align 8, !tbaa !9
  %526 = getelementptr inbounds double, ptr %524, i64 %525
  %527 = load double, ptr %526, align 8, !tbaa !11
  %528 = load double, ptr %58, align 8, !tbaa !11
  %529 = fadd double %527, %528
  %530 = fdiv double %523, %529
  store double %530, ptr %49, align 8, !tbaa !11
  %531 = load double, ptr %48, align 8, !tbaa !11
  %532 = load double, ptr %49, align 8, !tbaa !11
  %533 = fcmp oge double %531, %532
  br i1 %533, label %534, label %536

534:                                              ; preds = %520
  %535 = load double, ptr %48, align 8, !tbaa !11
  br label %538

536:                                              ; preds = %520
  %537 = load double, ptr %49, align 8, !tbaa !11
  br label %538

538:                                              ; preds = %536, %534
  %539 = phi double [ %535, %534 ], [ %537, %536 ]
  store double %539, ptr %53, align 8, !tbaa !11
  br label %540

540:                                              ; preds = %538, %502
  br label %541

541:                                              ; preds = %540
  %542 = load i64, ptr %50, align 8, !tbaa !9
  %543 = add nsw i64 %542, 1
  store i64 %543, ptr %50, align 8, !tbaa !9
  br label %461, !llvm.loop !21

544:                                              ; preds = %461
  %545 = load double, ptr %53, align 8, !tbaa !11
  %546 = load ptr, ptr %32, align 8, !tbaa !5
  %547 = load i64, ptr %51, align 8, !tbaa !9
  %548 = getelementptr inbounds double, ptr %546, i64 %547
  store double %545, ptr %548, align 8, !tbaa !11
  %549 = load ptr, ptr %32, align 8, !tbaa !5
  %550 = load i64, ptr %51, align 8, !tbaa !9
  %551 = getelementptr inbounds double, ptr %549, i64 %550
  %552 = load double, ptr %551, align 8, !tbaa !11
  %553 = load double, ptr %56, align 8, !tbaa !11
  %554 = fcmp ogt double %552, %553
  br i1 %554, label %555, label %602

555:                                              ; preds = %544
  %556 = load ptr, ptr %32, align 8, !tbaa !5
  %557 = load i64, ptr %51, align 8, !tbaa !9
  %558 = getelementptr inbounds double, ptr %556, i64 %557
  %559 = load double, ptr %558, align 8, !tbaa !11
  %560 = fmul double %559, 2.000000e+00
  %561 = load double, ptr %65, align 8, !tbaa !11
  %562 = fcmp ole double %560, %561
  br i1 %562, label %563, label %602

563:                                              ; preds = %555
  %564 = load i64, ptr %61, align 8, !tbaa !9
  %565 = icmp sle i64 %564, 5
  br i1 %565, label %566, label %602

566:                                              ; preds = %563
  %567 = load ptr, ptr %19, align 8, !tbaa !5
  %568 = load ptr, ptr %20, align 8, !tbaa !5
  %569 = load ptr, ptr %24, align 8, !tbaa !5
  %570 = load i64, ptr %39, align 8, !tbaa !9
  %571 = getelementptr inbounds double, ptr %569, i64 %570
  %572 = load ptr, ptr %25, align 8, !tbaa !5
  %573 = load ptr, ptr %26, align 8, !tbaa !5
  %574 = getelementptr inbounds i64, ptr %573, i64 1
  %575 = load ptr, ptr %33, align 8, !tbaa !5
  %576 = load ptr, ptr %20, align 8, !tbaa !5
  %577 = load i64, ptr %576, align 8, !tbaa !9
  %578 = add nsw i64 %577, 1
  %579 = getelementptr inbounds double, ptr %575, i64 %578
  %580 = load ptr, ptr %20, align 8, !tbaa !5
  %581 = load ptr, ptr %35, align 8, !tbaa !5
  %582 = call i32 @dgetrs_(ptr noundef %567, ptr noundef %568, ptr noundef @c__1, ptr noundef %571, ptr noundef %572, ptr noundef %574, ptr noundef %579, ptr noundef %580, ptr noundef %581)
  %583 = load ptr, ptr %20, align 8, !tbaa !5
  %584 = load ptr, ptr %33, align 8, !tbaa !5
  %585 = load ptr, ptr %20, align 8, !tbaa !5
  %586 = load i64, ptr %585, align 8, !tbaa !9
  %587 = add nsw i64 %586, 1
  %588 = getelementptr inbounds double, ptr %584, i64 %587
  %589 = load ptr, ptr %29, align 8, !tbaa !5
  %590 = load i64, ptr %51, align 8, !tbaa !9
  %591 = load i64, ptr %42, align 8, !tbaa !9
  %592 = mul nsw i64 %590, %591
  %593 = add nsw i64 %592, 1
  %594 = getelementptr inbounds double, ptr %589, i64 %593
  %595 = call i32 @f2c_daxpy(ptr noundef %583, ptr noundef @c_b17, ptr noundef %588, ptr noundef @c__1, ptr noundef %594, ptr noundef @c__1)
  %596 = load ptr, ptr %32, align 8, !tbaa !5
  %597 = load i64, ptr %51, align 8, !tbaa !9
  %598 = getelementptr inbounds double, ptr %596, i64 %597
  %599 = load double, ptr %598, align 8, !tbaa !11
  store double %599, ptr %65, align 8, !tbaa !11
  %600 = load i64, ptr %61, align 8, !tbaa !9
  %601 = add nsw i64 %600, 1
  store i64 %601, ptr %61, align 8, !tbaa !9
  br label %264

602:                                              ; preds = %563, %555, %544
  %603 = load ptr, ptr %20, align 8, !tbaa !5
  %604 = load i64, ptr %603, align 8, !tbaa !9
  store i64 %604, ptr %45, align 8, !tbaa !9
  store i64 1, ptr %50, align 8, !tbaa !9
  br label %605

605:                                              ; preds = %677, %602
  %606 = load i64, ptr %50, align 8, !tbaa !9
  %607 = load i64, ptr %45, align 8, !tbaa !9
  %608 = icmp sle i64 %606, %607
  br i1 %608, label %609, label %680

609:                                              ; preds = %605
  %610 = load ptr, ptr %33, align 8, !tbaa !5
  %611 = load i64, ptr %50, align 8, !tbaa !9
  %612 = getelementptr inbounds double, ptr %610, i64 %611
  %613 = load double, ptr %612, align 8, !tbaa !11
  %614 = load double, ptr %59, align 8, !tbaa !11
  %615 = fcmp ogt double %613, %614
  br i1 %615, label %616, label %645

616:                                              ; preds = %609
  %617 = load ptr, ptr %33, align 8, !tbaa !5
  %618 = load ptr, ptr %20, align 8, !tbaa !5
  %619 = load i64, ptr %618, align 8, !tbaa !9
  %620 = load i64, ptr %50, align 8, !tbaa !9
  %621 = add nsw i64 %619, %620
  %622 = getelementptr inbounds double, ptr %617, i64 %621
  %623 = load double, ptr %622, align 8, !tbaa !11
  store double %623, ptr %47, align 8, !tbaa !11
  %624 = load double, ptr %47, align 8, !tbaa !11
  %625 = fcmp oge double %624, 0.000000e+00
  br i1 %625, label %626, label %628

626:                                              ; preds = %616
  %627 = load double, ptr %47, align 8, !tbaa !11
  br label %631

628:                                              ; preds = %616
  %629 = load double, ptr %47, align 8, !tbaa !11
  %630 = fneg double %629
  br label %631

631:                                              ; preds = %628, %626
  %632 = phi double [ %627, %626 ], [ %630, %628 ]
  %633 = load i64, ptr %55, align 8, !tbaa !9
  %634 = sitofp i64 %633 to double
  %635 = load double, ptr %56, align 8, !tbaa !11
  %636 = fmul double %634, %635
  %637 = load ptr, ptr %33, align 8, !tbaa !5
  %638 = load i64, ptr %50, align 8, !tbaa !9
  %639 = getelementptr inbounds double, ptr %637, i64 %638
  %640 = load double, ptr %639, align 8, !tbaa !11
  %641 = call double @llvm.fmuladd.f64(double %636, double %640, double %632)
  %642 = load ptr, ptr %33, align 8, !tbaa !5
  %643 = load i64, ptr %50, align 8, !tbaa !9
  %644 = getelementptr inbounds double, ptr %642, i64 %643
  store double %641, ptr %644, align 8, !tbaa !11
  br label %676

645:                                              ; preds = %609
  %646 = load ptr, ptr %33, align 8, !tbaa !5
  %647 = load ptr, ptr %20, align 8, !tbaa !5
  %648 = load i64, ptr %647, align 8, !tbaa !9
  %649 = load i64, ptr %50, align 8, !tbaa !9
  %650 = add nsw i64 %648, %649
  %651 = getelementptr inbounds double, ptr %646, i64 %650
  %652 = load double, ptr %651, align 8, !tbaa !11
  store double %652, ptr %47, align 8, !tbaa !11
  %653 = load double, ptr %47, align 8, !tbaa !11
  %654 = fcmp oge double %653, 0.000000e+00
  br i1 %654, label %655, label %657

655:                                              ; preds = %645
  %656 = load double, ptr %47, align 8, !tbaa !11
  br label %660

657:                                              ; preds = %645
  %658 = load double, ptr %47, align 8, !tbaa !11
  %659 = fneg double %658
  br label %660

660:                                              ; preds = %657, %655
  %661 = phi double [ %656, %655 ], [ %659, %657 ]
  %662 = load i64, ptr %55, align 8, !tbaa !9
  %663 = sitofp i64 %662 to double
  %664 = load double, ptr %56, align 8, !tbaa !11
  %665 = fmul double %663, %664
  %666 = load ptr, ptr %33, align 8, !tbaa !5
  %667 = load i64, ptr %50, align 8, !tbaa !9
  %668 = getelementptr inbounds double, ptr %666, i64 %667
  %669 = load double, ptr %668, align 8, !tbaa !11
  %670 = call double @llvm.fmuladd.f64(double %665, double %669, double %661)
  %671 = load double, ptr %58, align 8, !tbaa !11
  %672 = fadd double %670, %671
  %673 = load ptr, ptr %33, align 8, !tbaa !5
  %674 = load i64, ptr %50, align 8, !tbaa !9
  %675 = getelementptr inbounds double, ptr %673, i64 %674
  store double %672, ptr %675, align 8, !tbaa !11
  br label %676

676:                                              ; preds = %660, %631
  br label %677

677:                                              ; preds = %676
  %678 = load i64, ptr %50, align 8, !tbaa !9
  %679 = add nsw i64 %678, 1
  store i64 %679, ptr %50, align 8, !tbaa !9
  br label %605, !llvm.loop !22

680:                                              ; preds = %605
  store i64 0, ptr %57, align 8, !tbaa !9
  br label %681

681:                                              ; preds = %798, %680
  %682 = load ptr, ptr %20, align 8, !tbaa !5
  %683 = load ptr, ptr %33, align 8, !tbaa !5
  %684 = load ptr, ptr %20, align 8, !tbaa !5
  %685 = load i64, ptr %684, align 8, !tbaa !9
  %686 = shl i64 %685, 1
  %687 = add nsw i64 %686, 1
  %688 = getelementptr inbounds double, ptr %683, i64 %687
  %689 = load ptr, ptr %33, align 8, !tbaa !5
  %690 = load ptr, ptr %20, align 8, !tbaa !5
  %691 = load i64, ptr %690, align 8, !tbaa !9
  %692 = add nsw i64 %691, 1
  %693 = getelementptr inbounds double, ptr %689, i64 %692
  %694 = load ptr, ptr %34, align 8, !tbaa !5
  %695 = getelementptr inbounds i64, ptr %694, i64 1
  %696 = load ptr, ptr %31, align 8, !tbaa !5
  %697 = load i64, ptr %51, align 8, !tbaa !9
  %698 = getelementptr inbounds double, ptr %696, i64 %697
  %699 = getelementptr inbounds [3 x i64], ptr %60, i64 0, i64 0
  %700 = call i32 @dlacn2_(ptr noundef %682, ptr noundef %688, ptr noundef %693, ptr noundef %695, ptr noundef %698, ptr noundef %57, ptr noundef %699)
  %701 = load i64, ptr %57, align 8, !tbaa !9
  %702 = icmp ne i64 %701, 0
  br i1 %702, label %703, label %799

703:                                              ; preds = %681
  %704 = load i64, ptr %57, align 8, !tbaa !9
  %705 = icmp eq i64 %704, 1
  br i1 %705, label %706, label %752

706:                                              ; preds = %703
  %707 = getelementptr inbounds [1 x i8], ptr %64, i64 0, i64 0
  %708 = load ptr, ptr %20, align 8, !tbaa !5
  %709 = load ptr, ptr %24, align 8, !tbaa !5
  %710 = load i64, ptr %39, align 8, !tbaa !9
  %711 = getelementptr inbounds double, ptr %709, i64 %710
  %712 = load ptr, ptr %25, align 8, !tbaa !5
  %713 = load ptr, ptr %26, align 8, !tbaa !5
  %714 = getelementptr inbounds i64, ptr %713, i64 1
  %715 = load ptr, ptr %33, align 8, !tbaa !5
  %716 = load ptr, ptr %20, align 8, !tbaa !5
  %717 = load i64, ptr %716, align 8, !tbaa !9
  %718 = add nsw i64 %717, 1
  %719 = getelementptr inbounds double, ptr %715, i64 %718
  %720 = load ptr, ptr %20, align 8, !tbaa !5
  %721 = load ptr, ptr %35, align 8, !tbaa !5
  %722 = call i32 @dgetrs_(ptr noundef %707, ptr noundef %708, ptr noundef @c__1, ptr noundef %711, ptr noundef %712, ptr noundef %714, ptr noundef %719, ptr noundef %720, ptr noundef %721)
  %723 = load ptr, ptr %20, align 8, !tbaa !5
  %724 = load i64, ptr %723, align 8, !tbaa !9
  store i64 %724, ptr %45, align 8, !tbaa !9
  store i64 1, ptr %50, align 8, !tbaa !9
  br label %725

725:                                              ; preds = %748, %706
  %726 = load i64, ptr %50, align 8, !tbaa !9
  %727 = load i64, ptr %45, align 8, !tbaa !9
  %728 = icmp sle i64 %726, %727
  br i1 %728, label %729, label %751

729:                                              ; preds = %725
  %730 = load ptr, ptr %33, align 8, !tbaa !5
  %731 = load i64, ptr %50, align 8, !tbaa !9
  %732 = getelementptr inbounds double, ptr %730, i64 %731
  %733 = load double, ptr %732, align 8, !tbaa !11
  %734 = load ptr, ptr %33, align 8, !tbaa !5
  %735 = load ptr, ptr %20, align 8, !tbaa !5
  %736 = load i64, ptr %735, align 8, !tbaa !9
  %737 = load i64, ptr %50, align 8, !tbaa !9
  %738 = add nsw i64 %736, %737
  %739 = getelementptr inbounds double, ptr %734, i64 %738
  %740 = load double, ptr %739, align 8, !tbaa !11
  %741 = fmul double %733, %740
  %742 = load ptr, ptr %33, align 8, !tbaa !5
  %743 = load ptr, ptr %20, align 8, !tbaa !5
  %744 = load i64, ptr %743, align 8, !tbaa !9
  %745 = load i64, ptr %50, align 8, !tbaa !9
  %746 = add nsw i64 %744, %745
  %747 = getelementptr inbounds double, ptr %742, i64 %746
  store double %741, ptr %747, align 8, !tbaa !11
  br label %748

748:                                              ; preds = %729
  %749 = load i64, ptr %50, align 8, !tbaa !9
  %750 = add nsw i64 %749, 1
  store i64 %750, ptr %50, align 8, !tbaa !9
  br label %725, !llvm.loop !23

751:                                              ; preds = %725
  br label %798

752:                                              ; preds = %703
  %753 = load ptr, ptr %20, align 8, !tbaa !5
  %754 = load i64, ptr %753, align 8, !tbaa !9
  store i64 %754, ptr %45, align 8, !tbaa !9
  store i64 1, ptr %50, align 8, !tbaa !9
  br label %755

755:                                              ; preds = %778, %752
  %756 = load i64, ptr %50, align 8, !tbaa !9
  %757 = load i64, ptr %45, align 8, !tbaa !9
  %758 = icmp sle i64 %756, %757
  br i1 %758, label %759, label %781

759:                                              ; preds = %755
  %760 = load ptr, ptr %33, align 8, !tbaa !5
  %761 = load i64, ptr %50, align 8, !tbaa !9
  %762 = getelementptr inbounds double, ptr %760, i64 %761
  %763 = load double, ptr %762, align 8, !tbaa !11
  %764 = load ptr, ptr %33, align 8, !tbaa !5
  %765 = load ptr, ptr %20, align 8, !tbaa !5
  %766 = load i64, ptr %765, align 8, !tbaa !9
  %767 = load i64, ptr %50, align 8, !tbaa !9
  %768 = add nsw i64 %766, %767
  %769 = getelementptr inbounds double, ptr %764, i64 %768
  %770 = load double, ptr %769, align 8, !tbaa !11
  %771 = fmul double %763, %770
  %772 = load ptr, ptr %33, align 8, !tbaa !5
  %773 = load ptr, ptr %20, align 8, !tbaa !5
  %774 = load i64, ptr %773, align 8, !tbaa !9
  %775 = load i64, ptr %50, align 8, !tbaa !9
  %776 = add nsw i64 %774, %775
  %777 = getelementptr inbounds double, ptr %772, i64 %776
  store double %771, ptr %777, align 8, !tbaa !11
  br label %778

778:                                              ; preds = %759
  %779 = load i64, ptr %50, align 8, !tbaa !9
  %780 = add nsw i64 %779, 1
  store i64 %780, ptr %50, align 8, !tbaa !9
  br label %755, !llvm.loop !24

781:                                              ; preds = %755
  %782 = load ptr, ptr %19, align 8, !tbaa !5
  %783 = load ptr, ptr %20, align 8, !tbaa !5
  %784 = load ptr, ptr %24, align 8, !tbaa !5
  %785 = load i64, ptr %39, align 8, !tbaa !9
  %786 = getelementptr inbounds double, ptr %784, i64 %785
  %787 = load ptr, ptr %25, align 8, !tbaa !5
  %788 = load ptr, ptr %26, align 8, !tbaa !5
  %789 = getelementptr inbounds i64, ptr %788, i64 1
  %790 = load ptr, ptr %33, align 8, !tbaa !5
  %791 = load ptr, ptr %20, align 8, !tbaa !5
  %792 = load i64, ptr %791, align 8, !tbaa !9
  %793 = add nsw i64 %792, 1
  %794 = getelementptr inbounds double, ptr %790, i64 %793
  %795 = load ptr, ptr %20, align 8, !tbaa !5
  %796 = load ptr, ptr %35, align 8, !tbaa !5
  %797 = call i32 @dgetrs_(ptr noundef %782, ptr noundef %783, ptr noundef @c__1, ptr noundef %786, ptr noundef %787, ptr noundef %789, ptr noundef %794, ptr noundef %795, ptr noundef %796)
  br label %798

798:                                              ; preds = %781, %751
  br label %681

799:                                              ; preds = %681
  store double 0.000000e+00, ptr %65, align 8, !tbaa !11
  %800 = load ptr, ptr %20, align 8, !tbaa !5
  %801 = load i64, ptr %800, align 8, !tbaa !9
  store i64 %801, ptr %45, align 8, !tbaa !9
  store i64 1, ptr %50, align 8, !tbaa !9
  br label %802

802:                                              ; preds = %834, %799
  %803 = load i64, ptr %50, align 8, !tbaa !9
  %804 = load i64, ptr %45, align 8, !tbaa !9
  %805 = icmp sle i64 %803, %804
  br i1 %805, label %806, label %837

806:                                              ; preds = %802
  %807 = load double, ptr %65, align 8, !tbaa !11
  store double %807, ptr %48, align 8, !tbaa !11
  %808 = load ptr, ptr %29, align 8, !tbaa !5
  %809 = load i64, ptr %50, align 8, !tbaa !9
  %810 = load i64, ptr %51, align 8, !tbaa !9
  %811 = load i64, ptr %42, align 8, !tbaa !9
  %812 = mul nsw i64 %810, %811
  %813 = add nsw i64 %809, %812
  %814 = getelementptr inbounds double, ptr %808, i64 %813
  %815 = load double, ptr %814, align 8, !tbaa !11
  store double %815, ptr %47, align 8, !tbaa !11
  %816 = load double, ptr %47, align 8, !tbaa !11
  %817 = fcmp oge double %816, 0.000000e+00
  br i1 %817, label %818, label %820

818:                                              ; preds = %806
  %819 = load double, ptr %47, align 8, !tbaa !11
  br label %823

820:                                              ; preds = %806
  %821 = load double, ptr %47, align 8, !tbaa !11
  %822 = fneg double %821
  br label %823

823:                                              ; preds = %820, %818
  %824 = phi double [ %819, %818 ], [ %822, %820 ]
  store double %824, ptr %49, align 8, !tbaa !11
  %825 = load double, ptr %48, align 8, !tbaa !11
  %826 = load double, ptr %49, align 8, !tbaa !11
  %827 = fcmp oge double %825, %826
  br i1 %827, label %828, label %830

828:                                              ; preds = %823
  %829 = load double, ptr %48, align 8, !tbaa !11
  br label %832

830:                                              ; preds = %823
  %831 = load double, ptr %49, align 8, !tbaa !11
  br label %832

832:                                              ; preds = %830, %828
  %833 = phi double [ %829, %828 ], [ %831, %830 ]
  store double %833, ptr %65, align 8, !tbaa !11
  br label %834

834:                                              ; preds = %832
  %835 = load i64, ptr %50, align 8, !tbaa !9
  %836 = add nsw i64 %835, 1
  store i64 %836, ptr %50, align 8, !tbaa !9
  br label %802, !llvm.loop !25

837:                                              ; preds = %802
  %838 = load double, ptr %65, align 8, !tbaa !11
  %839 = fcmp une double %838, 0.000000e+00
  br i1 %839, label %840, label %847

840:                                              ; preds = %837
  %841 = load double, ptr %65, align 8, !tbaa !11
  %842 = load ptr, ptr %31, align 8, !tbaa !5
  %843 = load i64, ptr %51, align 8, !tbaa !9
  %844 = getelementptr inbounds double, ptr %842, i64 %843
  %845 = load double, ptr %844, align 8, !tbaa !11
  %846 = fdiv double %845, %841
  store double %846, ptr %844, align 8, !tbaa !11
  br label %847

847:                                              ; preds = %840, %837
  br label %848

848:                                              ; preds = %847
  %849 = load i64, ptr %51, align 8, !tbaa !9
  %850 = add nsw i64 %849, 1
  store i64 %850, ptr %51, align 8, !tbaa !9
  br label %259, !llvm.loop !26

851:                                              ; preds = %259
  store i32 0, ptr %18, align 4
  store i32 1, ptr %66, align 4
  br label %852

852:                                              ; preds = %851, %236, %206
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %64) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #4
  call void @llvm.lifetime.end.p0(i64 24, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #4
  %853 = load i32, ptr %18, align 4
  ret i32 %853
}

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

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

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

declare double @dlamch_(ptr noundef) #2

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

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

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

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

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

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

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

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

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

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


; 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 [7 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [13 x i8], align 1
@c__1 = external hidden global i64, align 8
@c_b15 = external hidden global double, align 8
@c_b17 = external hidden global double, align 8

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

39:                                               ; preds = %17
  %40 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #5
  %.not338 = icmp eq i64 %40, 0
  br i1 %.not338, label %41, label %43

41:                                               ; preds = %39
  %42 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #5
  %.not339 = icmp eq i64 %42, 0
  br i1 %.not339, label %.thread.sink.split, label %43

43:                                               ; preds = %41, %39, %17
  %44 = load i64, ptr %1, align 8, !tbaa !5
  %45 = icmp slt i64 %44, 0
  br i1 %45, label %.thread.sink.split, label %46

46:                                               ; preds = %43
  %47 = load i64, ptr %2, align 8, !tbaa !5
  %48 = icmp slt i64 %47, 0
  br i1 %48, label %.thread.sink.split, label %49

49:                                               ; preds = %46
  %50 = load i64, ptr %4, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.umax.i64(i64 %44, i64 1)
  %51 = icmp slt i64 %50, %spec.select
  br i1 %51, label %.thread.sink.split, label %52

52:                                               ; preds = %49
  %53 = load i64, ptr %6, align 8, !tbaa !5
  %54 = icmp slt i64 %53, %spec.select
  br i1 %54, label %.thread.sink.split, label %55

55:                                               ; preds = %52
  %56 = load i64, ptr %9, align 8, !tbaa !5
  %57 = icmp slt i64 %56, %spec.select
  br i1 %57, label %.thread.sink.split, label %58

58:                                               ; preds = %55
  %59 = load i64, ptr %11, align 8, !tbaa !5
  %60 = icmp slt i64 %59, %spec.select
  br i1 %60, label %.thread.sink.split, label %61

61:                                               ; preds = %58
  %.pr = load i64, ptr %16, align 8, !tbaa !5
  %.not340 = icmp eq i64 %.pr, 0
  br i1 %.not340, label %65, label %.thread

.thread.sink.split:                               ; preds = %58, %55, %52, %49, %46, %43, %41
  %.sink = phi i64 [ -1, %41 ], [ -2, %43 ], [ -3, %46 ], [ -5, %49 ], [ -7, %52 ], [ -10, %55 ], [ -12, %58 ]
  store i64 %.sink, ptr %16, align 8, !tbaa !5
  br label %.thread

.thread:                                          ; preds = %.thread.sink.split, %61
  %62 = phi i64 [ %.pr, %61 ], [ %.sink, %.thread.sink.split ]
  %63 = sub nsw i64 0, %62
  store i64 %63, ptr %22, align 8, !tbaa !5
  %64 = call i32 @xerbla_(ptr noundef nonnull @.str.3, ptr noundef nonnull %22) #5
  br label %.loopexit

65:                                               ; preds = %61
  %66 = icmp eq i64 %44, 0
  %.not354429 = icmp eq i64 %47, 0
  br i1 %66, label %68, label %67

67:                                               ; preds = %65
  br i1 %.not354429, label %.loopexit, label %93

68:                                               ; preds = %65
  br i1 %.not354429, label %.loopexit, label %.lr.ph432.preheader

.lr.ph432.preheader:                              ; preds = %68
  %min.iters.check543 = icmp ult i64 %47, 4
  %69 = sub i64 %19, %18
  %diff.check540 = icmp ult i64 %69, 32
  %or.cond554 = or i1 %min.iters.check543, %diff.check540
  br i1 %or.cond554, label %.lr.ph432.preheader556, label %vector.ph544

vector.ph544:                                     ; preds = %.lr.ph432.preheader
  %n.vec546 = and i64 %47, 9223372036854775804
  %ind.end547 = or disjoint i64 %n.vec546, 1
  br label %vector.body549

vector.body549:                                   ; preds = %vector.body549, %vector.ph544
  %index550 = phi i64 [ 0, %vector.ph544 ], [ %index.next552, %vector.body549 ]
  %70 = getelementptr double, ptr %12, i64 %index550
  %71 = getelementptr inbounds i8, ptr %70, i64 16
  store <2 x double> zeroinitializer, ptr %70, align 8, !tbaa !9
  store <2 x double> zeroinitializer, ptr %71, align 8, !tbaa !9
  %72 = getelementptr double, ptr %13, i64 %index550
  %73 = getelementptr inbounds i8, ptr %72, i64 16
  store <2 x double> zeroinitializer, ptr %72, align 8, !tbaa !9
  store <2 x double> zeroinitializer, ptr %73, align 8, !tbaa !9
  %index.next552 = add nuw i64 %index550, 4
  %74 = icmp eq i64 %index.next552, %n.vec546
  br i1 %74, label %middle.block541, label %vector.body549, !llvm.loop !11

middle.block541:                                  ; preds = %vector.body549
  %cmp.n553 = icmp eq i64 %47, %n.vec546
  br i1 %cmp.n553, label %.loopexit, label %.lr.ph432.preheader556

.lr.ph432.preheader556:                           ; preds = %middle.block541, %.lr.ph432.preheader
  %.0323430.ph = phi i64 [ 1, %.lr.ph432.preheader ], [ %ind.end547, %middle.block541 ]
  %75 = add nuw i64 %47, 1
  %76 = sub i64 %75, %.0323430.ph
  %77 = sub i64 %47, %.0323430.ph
  %xtraiter569 = and i64 %76, 3
  %lcmp.mod570.not = icmp eq i64 %xtraiter569, 0
  br i1 %lcmp.mod570.not, label %.lr.ph432.prol.loopexit, label %.lr.ph432.prol

.lr.ph432.prol:                                   ; preds = %.lr.ph432.preheader556, %.lr.ph432.prol
  %.0323430.prol = phi i64 [ %80, %.lr.ph432.prol ], [ %.0323430.ph, %.lr.ph432.preheader556 ]
  %prol.iter = phi i64 [ %prol.iter.next, %.lr.ph432.prol ], [ 0, %.lr.ph432.preheader556 ]
  %78 = getelementptr inbounds double, ptr %35, i64 %.0323430.prol
  store double 0.000000e+00, ptr %78, align 8, !tbaa !9
  %79 = getelementptr inbounds double, ptr %36, i64 %.0323430.prol
  store double 0.000000e+00, ptr %79, align 8, !tbaa !9
  %80 = add nuw i64 %.0323430.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter569
  br i1 %prol.iter.cmp.not, label %.lr.ph432.prol.loopexit, label %.lr.ph432.prol, !llvm.loop !15

.lr.ph432.prol.loopexit:                          ; preds = %.lr.ph432.prol, %.lr.ph432.preheader556
  %.0323430.unr = phi i64 [ %.0323430.ph, %.lr.ph432.preheader556 ], [ %80, %.lr.ph432.prol ]
  %81 = icmp ult i64 %77, 3
  br i1 %81, label %.loopexit, label %.lr.ph432

.lr.ph432:                                        ; preds = %.lr.ph432.prol.loopexit, %.lr.ph432
  %.0323430 = phi i64 [ %92, %.lr.ph432 ], [ %.0323430.unr, %.lr.ph432.prol.loopexit ]
  %82 = getelementptr inbounds double, ptr %35, i64 %.0323430
  store double 0.000000e+00, ptr %82, align 8, !tbaa !9
  %83 = getelementptr inbounds double, ptr %36, i64 %.0323430
  store double 0.000000e+00, ptr %83, align 8, !tbaa !9
  %84 = getelementptr double, ptr %12, i64 %.0323430
  store double 0.000000e+00, ptr %84, align 8, !tbaa !9
  %85 = getelementptr double, ptr %13, i64 %.0323430
  store double 0.000000e+00, ptr %85, align 8, !tbaa !9
  %86 = add nuw i64 %.0323430, 2
  %87 = getelementptr inbounds double, ptr %35, i64 %86
  store double 0.000000e+00, ptr %87, align 8, !tbaa !9
  %88 = getelementptr inbounds double, ptr %36, i64 %86
  store double 0.000000e+00, ptr %88, align 8, !tbaa !9
  %89 = add nuw i64 %.0323430, 3
  %90 = getelementptr inbounds double, ptr %35, i64 %89
  store double 0.000000e+00, ptr %90, align 8, !tbaa !9
  %91 = getelementptr inbounds double, ptr %36, i64 %89
  store double 0.000000e+00, ptr %91, align 8, !tbaa !9
  %92 = add nuw i64 %.0323430, 4
  %exitcond446.not.3 = icmp eq i64 %89, %47
  br i1 %exitcond446.not.3, label %.loopexit, label %.lr.ph432, !llvm.loop !17

93:                                               ; preds = %67
  %. = select i1 %.not, i8 78, i8 84
  store i8 %., ptr %25, align 1, !tbaa !18
  %94 = add nuw nsw i64 %44, 1
  %95 = tail call double @dlamch_(ptr noundef nonnull @.str.4) #5
  %96 = tail call double @dlamch_(ptr noundef nonnull @.str.5) #5
  %97 = uitofp nneg i64 %94 to double
  %98 = fmul double %96, %97
  %99 = fdiv double %98, %95
  %100 = load i64, ptr %2, align 8, !tbaa !5
  %invariant.gep425 = getelementptr i8, ptr %31, i64 8
  %.not341427 = icmp slt i64 %100, 1
  br i1 %.not341427, label %.loopexit, label %.preheader364.lr.ph

.preheader364.lr.ph:                              ; preds = %93
  %invariant.gep400 = getelementptr i8, ptr %34, i64 8
  %101 = fmul double %95, %97
  %102 = shl i64 %26, 3
  %103 = sub i64 %21, %20
  %104 = mul i64 %29, -8
  %stride.check = icmp slt i64 %102, 0
  %broadcast.splatinsert = insertelement <2 x double> poison, double %99, i64 0
  %broadcast.splat = shufflevector <2 x double> %broadcast.splatinsert, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert497 = insertelement <2 x double> poison, double %101, i64 0
  %broadcast.splat498 = shufflevector <2 x double> %broadcast.splatinsert497, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert499 = insertelement <2 x double> poison, double %98, i64 0
  %broadcast.splat500 = shufflevector <2 x double> %broadcast.splatinsert499, <2 x double> poison, <2 x i32> zeroinitializer
  br label %.preheader364

.preheader364:                                    ; preds = %.preheader364.lr.ph, %._crit_edge423.thread
  %indvar = phi i64 [ 0, %.preheader364.lr.ph ], [ %indvar.next, %._crit_edge423.thread ]
  %.1324428 = phi i64 [ 1, %.preheader364.lr.ph ], [ %333, %._crit_edge423.thread ]
  %105 = mul i64 %104, %indvar
  %106 = add i64 %103, %105
  %107 = getelementptr inbounds double, ptr %36, i64 %.1324428
  %108 = mul nsw i64 %.1324428, %29
  %gep426 = getelementptr double, ptr %invariant.gep425, i64 %108
  %109 = mul nsw i64 %.1324428, %32
  %gep401 = getelementptr double, ptr %invariant.gep400, i64 %109
  %invariant.gep = getelementptr double, ptr %31, i64 %108
  %invariant.gep377 = getelementptr double, ptr %34, i64 %109
  %diff.check = icmp ult i64 %106, 32
  br label %110

110:                                              ; preds = %.preheader364, %235
  %.0318 = phi i64 [ %242, %235 ], [ 1, %.preheader364 ]
  %.0 = phi double [ %241, %235 ], [ 3.000000e+00, %.preheader364 ]
  %111 = load i64, ptr %1, align 8, !tbaa !5
  %112 = getelementptr double, ptr %14, i64 %111
  %113 = call i32 @f2c_dcopy(ptr noundef nonnull %1, ptr noundef %gep426, ptr noundef nonnull @c__1, ptr noundef %112, ptr noundef nonnull @c__1) #5
  %114 = load i64, ptr %1, align 8, !tbaa !5
  %115 = getelementptr double, ptr %14, i64 %114
  %116 = call i32 @f2c_dgemv(ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull %1, ptr noundef nonnull @c_b15, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %gep401, ptr noundef nonnull @c__1, ptr noundef nonnull @c_b17, ptr noundef %115, ptr noundef nonnull @c__1) #5
  %117 = load i64, ptr %1, align 8, !tbaa !5
  %.not342368 = icmp slt i64 %117, 1
  br i1 %.not342368, label %._crit_edge398, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %110
  %min.iters.check526 = icmp ult i64 %117, 4
  %or.cond555 = select i1 %min.iters.check526, i1 true, i1 %diff.check
  br i1 %or.cond555, label %.lr.ph.preheader558, label %vector.ph527

vector.ph527:                                     ; preds = %.lr.ph.preheader
  %n.vec529 = and i64 %117, 9223372036854775804
  %ind.end530 = or disjoint i64 %n.vec529, 1
  br label %vector.body532

vector.body532:                                   ; preds = %vector.body532, %vector.ph527
  %index533 = phi i64 [ 0, %vector.ph527 ], [ %index.next537, %vector.body532 ]
  %offset.idx534 = or disjoint i64 %index533, 1
  %118 = getelementptr double, ptr %invariant.gep, i64 %offset.idx534
  %119 = getelementptr i8, ptr %118, i64 16
  %wide.load535 = load <2 x double>, ptr %118, align 8, !tbaa !9
  %wide.load536 = load <2 x double>, ptr %119, align 8, !tbaa !9
  %120 = fcmp oge <2 x double> %wide.load535, zeroinitializer
  %121 = fcmp oge <2 x double> %wide.load536, zeroinitializer
  %122 = fneg <2 x double> %wide.load535
  %123 = fneg <2 x double> %wide.load536
  %124 = select <2 x i1> %120, <2 x double> %wide.load535, <2 x double> %122
  %125 = select <2 x i1> %121, <2 x double> %wide.load536, <2 x double> %123
  %126 = getelementptr double, ptr %14, i64 %index533
  %127 = getelementptr inbounds i8, ptr %126, i64 16
  store <2 x double> %124, ptr %126, align 8, !tbaa !9
  store <2 x double> %125, ptr %127, align 8, !tbaa !9
  %index.next537 = add nuw i64 %index533, 4
  %128 = icmp eq i64 %index.next537, %n.vec529
  br i1 %128, label %middle.block524, label %vector.body532, !llvm.loop !19

middle.block524:                                  ; preds = %vector.body532
  %cmp.n538 = icmp eq i64 %117, %n.vec529
  br i1 %cmp.n538, label %._crit_edge, label %.lr.ph.preheader558

.lr.ph.preheader558:                              ; preds = %middle.block524, %.lr.ph.preheader
  %.0325369.ph = phi i64 [ 1, %.lr.ph.preheader ], [ %ind.end530, %middle.block524 ]
  %xtraiter = and i64 %117, 1
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.lr.ph.prol.loopexit, label %.lr.ph.prol

.lr.ph.prol:                                      ; preds = %.lr.ph.preheader558
  %gep.prol = getelementptr double, ptr %invariant.gep, i64 %.0325369.ph
  %129 = load double, ptr %gep.prol, align 8, !tbaa !9
  %130 = fcmp oge double %129, 0.000000e+00
  %131 = fneg double %129
  %132 = select i1 %130, double %129, double %131
  %133 = getelementptr inbounds double, ptr %37, i64 %.0325369.ph
  store double %132, ptr %133, align 8, !tbaa !9
  %134 = add nuw i64 %.0325369.ph, 1
  br label %.lr.ph.prol.loopexit

.lr.ph.prol.loopexit:                             ; preds = %.lr.ph.prol, %.lr.ph.preheader558
  %.0325369.unr = phi i64 [ %.0325369.ph, %.lr.ph.preheader558 ], [ %134, %.lr.ph.prol ]
  %135 = icmp eq i64 %117, %.0325369.ph
  br i1 %135, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.prol.loopexit, %.lr.ph
  %.0325369 = phi i64 [ %147, %.lr.ph ], [ %.0325369.unr, %.lr.ph.prol.loopexit ]
  %gep = getelementptr double, ptr %invariant.gep, i64 %.0325369
  %136 = load double, ptr %gep, align 8, !tbaa !9
  %137 = fcmp oge double %136, 0.000000e+00
  %138 = fneg double %136
  %139 = select i1 %137, double %136, double %138
  %140 = getelementptr inbounds double, ptr %37, i64 %.0325369
  store double %139, ptr %140, align 8, !tbaa !9
  %141 = add nuw i64 %.0325369, 1
  %gep.1 = getelementptr double, ptr %invariant.gep, i64 %141
  %142 = load double, ptr %gep.1, align 8, !tbaa !9
  %143 = fcmp oge double %142, 0.000000e+00
  %144 = fneg double %142
  %145 = select i1 %143, double %142, double %144
  %146 = getelementptr double, ptr %14, i64 %.0325369
  store double %145, ptr %146, align 8, !tbaa !9
  %147 = add nuw i64 %.0325369, 2
  %exitcond.not.1 = icmp eq i64 %141, %117
  br i1 %exitcond.not.1, label %._crit_edge, label %.lr.ph, !llvm.loop !20

._crit_edge:                                      ; preds = %.lr.ph.prol.loopexit, %.lr.ph, %middle.block524
  br i1 %.not, label %.preheader360, label %.preheader362

.preheader362:                                    ; preds = %._crit_edge
  br i1 %.not342368, label %._crit_edge398, label %.lr.ph373.preheader

.lr.ph373.preheader:                              ; preds = %.preheader362
  %148 = shl i64 %117, 3
  %scevgep = getelementptr i8, ptr %14, i64 %148
  %149 = add nsw i64 %117, -1
  %150 = mul i64 %102, %149
  %151 = getelementptr i8, ptr %3, i64 %150
  %scevgep503 = getelementptr i8, ptr %151, i64 %148
  %min.iters.check506 = icmp ult i64 %117, 4
  %bound0 = icmp ugt ptr %scevgep503, %14
  %bound1 = icmp ugt ptr %scevgep, %3
  %found.conflict = and i1 %bound0, %bound1
  %152 = or i1 %found.conflict, %stride.check
  %n.vec509 = and i64 %117, 9223372036854775804
  %ind.end510 = or disjoint i64 %n.vec509, 1
  %cmp.n522 = icmp eq i64 %117, %n.vec509
  %xtraiter564 = and i64 %117, 1
  %lcmp.mod565.not = icmp eq i64 %xtraiter564, 0
  br label %.lr.ph373

.preheader360:                                    ; preds = %._crit_edge
  br i1 %.not342368, label %._crit_edge398, label %.preheader

.lr.ph373:                                        ; preds = %.lr.ph373.preheader, %._crit_edge374
  %.0321380 = phi i64 [ %196, %._crit_edge374 ], [ 1, %.lr.ph373.preheader ]
  %gep378 = getelementptr double, ptr %invariant.gep377, i64 %.0321380
  %153 = load double, ptr %gep378, align 8, !tbaa !9
  %154 = fcmp oge double %153, 0.000000e+00
  %155 = fneg double %153
  %156 = select i1 %154, double %153, double %155
  %157 = mul nsw i64 %.0321380, %26
  %invariant.gep375 = getelementptr double, ptr %28, i64 %157
  %brmerge = select i1 %min.iters.check506, i1 true, i1 %152
  br i1 %brmerge, label %scalar.ph505.preheader, label %vector.ph507

vector.ph507:                                     ; preds = %.lr.ph373
  %broadcast.splatinsert519 = insertelement <2 x double> poison, double %156, i64 0
  %broadcast.splat520 = shufflevector <2 x double> %broadcast.splatinsert519, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body512

vector.body512:                                   ; preds = %vector.body512, %vector.ph507
  %index513 = phi i64 [ 0, %vector.ph507 ], [ %index.next521, %vector.body512 ]
  %offset.idx514 = or disjoint i64 %index513, 1
  %158 = getelementptr double, ptr %invariant.gep375, i64 %offset.idx514
  %159 = getelementptr i8, ptr %158, i64 16
  %wide.load515 = load <2 x double>, ptr %158, align 8, !tbaa !9, !alias.scope !21
  %wide.load516 = load <2 x double>, ptr %159, align 8, !tbaa !9, !alias.scope !21
  %160 = fcmp oge <2 x double> %wide.load515, zeroinitializer
  %161 = fcmp oge <2 x double> %wide.load516, zeroinitializer
  %162 = fneg <2 x double> %wide.load515
  %163 = fneg <2 x double> %wide.load516
  %164 = select <2 x i1> %160, <2 x double> %wide.load515, <2 x double> %162
  %165 = select <2 x i1> %161, <2 x double> %wide.load516, <2 x double> %163
  %166 = getelementptr double, ptr %14, i64 %index513
  %167 = getelementptr inbounds i8, ptr %166, i64 16
  %wide.load517 = load <2 x double>, ptr %166, align 8, !tbaa !9, !alias.scope !24, !noalias !21
  %wide.load518 = load <2 x double>, ptr %167, align 8, !tbaa !9, !alias.scope !24, !noalias !21
  %168 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %164, <2 x double> %broadcast.splat520, <2 x double> %wide.load517)
  %169 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %165, <2 x double> %broadcast.splat520, <2 x double> %wide.load518)
  store <2 x double> %168, ptr %166, align 8, !tbaa !9, !alias.scope !24, !noalias !21
  store <2 x double> %169, ptr %167, align 8, !tbaa !9, !alias.scope !24, !noalias !21
  %index.next521 = add nuw i64 %index513, 4
  %170 = icmp eq i64 %index.next521, %n.vec509
  br i1 %170, label %middle.block504, label %vector.body512, !llvm.loop !26

middle.block504:                                  ; preds = %vector.body512
  br i1 %cmp.n522, label %._crit_edge374, label %scalar.ph505.preheader

scalar.ph505.preheader:                           ; preds = %.lr.ph373, %middle.block504
  %.1326371.ph = phi i64 [ 1, %.lr.ph373 ], [ %ind.end510, %middle.block504 ]
  br i1 %lcmp.mod565.not, label %scalar.ph505.prol.loopexit, label %scalar.ph505.prol

scalar.ph505.prol:                                ; preds = %scalar.ph505.preheader
  %gep376.prol = getelementptr double, ptr %invariant.gep375, i64 %.1326371.ph
  %171 = load double, ptr %gep376.prol, align 8, !tbaa !9
  %172 = fcmp oge double %171, 0.000000e+00
  %173 = fneg double %171
  %174 = select i1 %172, double %171, double %173
  %175 = getelementptr inbounds double, ptr %37, i64 %.1326371.ph
  %176 = load double, ptr %175, align 8, !tbaa !9
  %177 = call double @llvm.fmuladd.f64(double %174, double %156, double %176)
  store double %177, ptr %175, align 8, !tbaa !9
  %178 = add nuw i64 %.1326371.ph, 1
  br label %scalar.ph505.prol.loopexit

scalar.ph505.prol.loopexit:                       ; preds = %scalar.ph505.prol, %scalar.ph505.preheader
  %.1326371.unr = phi i64 [ %.1326371.ph, %scalar.ph505.preheader ], [ %178, %scalar.ph505.prol ]
  %179 = icmp eq i64 %117, %.1326371.ph
  br i1 %179, label %._crit_edge374, label %scalar.ph505

scalar.ph505:                                     ; preds = %scalar.ph505.prol.loopexit, %scalar.ph505
  %.1326371 = phi i64 [ %195, %scalar.ph505 ], [ %.1326371.unr, %scalar.ph505.prol.loopexit ]
  %gep376 = getelementptr double, ptr %invariant.gep375, i64 %.1326371
  %180 = load double, ptr %gep376, align 8, !tbaa !9
  %181 = fcmp oge double %180, 0.000000e+00
  %182 = fneg double %180
  %183 = select i1 %181, double %180, double %182
  %184 = getelementptr inbounds double, ptr %37, i64 %.1326371
  %185 = load double, ptr %184, align 8, !tbaa !9
  %186 = call double @llvm.fmuladd.f64(double %183, double %156, double %185)
  store double %186, ptr %184, align 8, !tbaa !9
  %187 = add nuw i64 %.1326371, 1
  %gep376.1 = getelementptr double, ptr %invariant.gep375, i64 %187
  %188 = load double, ptr %gep376.1, align 8, !tbaa !9
  %189 = fcmp oge double %188, 0.000000e+00
  %190 = fneg double %188
  %191 = select i1 %189, double %188, double %190
  %192 = getelementptr double, ptr %14, i64 %.1326371
  %193 = load double, ptr %192, align 8, !tbaa !9
  %194 = call double @llvm.fmuladd.f64(double %191, double %156, double %193)
  store double %194, ptr %192, align 8, !tbaa !9
  %195 = add nuw i64 %.1326371, 2
  %exitcond437.not.1 = icmp eq i64 %187, %117
  br i1 %exitcond437.not.1, label %._crit_edge374, label %scalar.ph505, !llvm.loop !27

._crit_edge374:                                   ; preds = %scalar.ph505.prol.loopexit, %scalar.ph505, %middle.block504
  %196 = add nuw i64 %.0321380, 1
  %exitcond438.not = icmp eq i64 %.0321380, %117
  br i1 %exitcond438.not, label %.loopexit361, label %.lr.ph373, !llvm.loop !28

.preheader:                                       ; preds = %.preheader360, %._crit_edge388
  %.1322392 = phi i64 [ %212, %._crit_edge388 ], [ 1, %.preheader360 ]
  %197 = mul nsw i64 %.1322392, %26
  %invariant.gep389 = getelementptr double, ptr %28, i64 %197
  br label %198

198:                                              ; preds = %.preheader, %198
  %.0319386 = phi double [ 0.000000e+00, %.preheader ], [ %207, %198 ]
  %.2327385 = phi i64 [ 1, %.preheader ], [ %208, %198 ]
  %gep390 = getelementptr double, ptr %invariant.gep389, i64 %.2327385
  %199 = load double, ptr %gep390, align 8, !tbaa !9
  %200 = fcmp oge double %199, 0.000000e+00
  %201 = fneg double %199
  %202 = select i1 %200, double %199, double %201
  %gep383 = getelementptr double, ptr %invariant.gep377, i64 %.2327385
  %203 = load double, ptr %gep383, align 8, !tbaa !9
  %204 = fcmp oge double %203, 0.000000e+00
  %205 = fneg double %203
  %206 = select i1 %204, double %203, double %205
  %207 = call double @llvm.fmuladd.f64(double %202, double %206, double %.0319386)
  %208 = add nuw i64 %.2327385, 1
  %exitcond439.not = icmp eq i64 %.2327385, %117
  br i1 %exitcond439.not, label %._crit_edge388, label %198, !llvm.loop !29

._crit_edge388:                                   ; preds = %198
  %209 = getelementptr inbounds double, ptr %37, i64 %.1322392
  %210 = load double, ptr %209, align 8, !tbaa !9
  %211 = fadd double %207, %210
  store double %211, ptr %209, align 8, !tbaa !9
  %212 = add nuw i64 %.1322392, 1
  %exitcond440.not = icmp eq i64 %.1322392, %117
  br i1 %exitcond440.not, label %.loopexit361, label %.preheader, !llvm.loop !30

.loopexit361:                                     ; preds = %._crit_edge374, %._crit_edge388
  br i1 %.not342368, label %._crit_edge398, label %.lr.ph397

.lr.ph397:                                        ; preds = %.loopexit361
  %213 = getelementptr double, ptr %37, i64 %117
  br label %214

214:                                              ; preds = %.lr.ph397, %214
  %.1320395 = phi double [ 0.000000e+00, %.lr.ph397 ], [ %228, %214 ]
  %.3394 = phi i64 [ 1, %.lr.ph397 ], [ %229, %214 ]
  %215 = getelementptr inbounds double, ptr %37, i64 %.3394
  %216 = load double, ptr %215, align 8, !tbaa !9
  %217 = fcmp ogt double %216, %99
  %218 = getelementptr double, ptr %213, i64 %.3394
  %219 = load double, ptr %218, align 8, !tbaa !9
  %220 = fcmp oge double %219, 0.000000e+00
  %221 = fneg double %219
  %222 = select i1 %220, double %219, double %221
  %223 = fdiv double %222, %216
  %224 = fadd double %98, %222
  %225 = fadd double %98, %216
  %226 = fdiv double %224, %225
  %.sink457 = select i1 %217, double %223, double %226
  %227 = fcmp oge double %.1320395, %.sink457
  %228 = select i1 %227, double %.1320395, double %.sink457
  %229 = add nuw i64 %.3394, 1
  %exitcond441.not = icmp eq i64 %.3394, %117
  br i1 %exitcond441.not, label %._crit_edge398, label %214, !llvm.loop !31

._crit_edge398:                                   ; preds = %214, %110, %.preheader360, %.preheader362, %.loopexit361
  %.1320.lcssa = phi double [ 0.000000e+00, %.loopexit361 ], [ 0.000000e+00, %.preheader362 ], [ 0.000000e+00, %.preheader360 ], [ 0.000000e+00, %110 ], [ %228, %214 ]
  store double %.1320.lcssa, ptr %107, align 8, !tbaa !9
  %230 = fcmp ogt double %.1320.lcssa, %95
  br i1 %230, label %231, label %243

231:                                              ; preds = %._crit_edge398
  %232 = fmul double %.1320.lcssa, 2.000000e+00
  %233 = fcmp ole double %232, %.0
  %234 = icmp ult i64 %.0318, 6
  %or.cond = select i1 %233, i1 %234, i1 false
  br i1 %or.cond, label %235, label %243

235:                                              ; preds = %231
  %236 = getelementptr double, ptr %14, i64 %117
  %237 = call i32 @dgetrs_(ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull @c__1, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef %236, ptr noundef nonnull %1, ptr noundef nonnull %16) #5
  %238 = load i64, ptr %1, align 8, !tbaa !5
  %239 = getelementptr double, ptr %14, i64 %238
  %240 = call i32 @f2c_daxpy(ptr noundef nonnull %1, ptr noundef nonnull @c_b17, ptr noundef %239, ptr noundef nonnull @c__1, ptr noundef %gep401, ptr noundef nonnull @c__1) #5
  %241 = load double, ptr %107, align 8, !tbaa !9
  %242 = add nuw nsw i64 %.0318, 1
  br label %110

243:                                              ; preds = %231, %._crit_edge398
  br i1 %.not342368, label %._crit_edge406, label %.lr.ph405

.lr.ph405:                                        ; preds = %243
  %244 = getelementptr double, ptr %37, i64 %117
  %min.iters.check486 = icmp eq i64 %117, 1
  br i1 %min.iters.check486, label %scalar.ph485.preheader, label %vector.ph487

vector.ph487:                                     ; preds = %.lr.ph405
  %n.vec489 = and i64 %117, 9223372036854775806
  %ind.end490 = or i64 %117, 1
  br label %vector.body492

vector.body492:                                   ; preds = %vector.body492, %vector.ph487
  %index493 = phi i64 [ 0, %vector.ph487 ], [ %index.next501, %vector.body492 ]
  %offset.idx494 = or disjoint i64 %index493, 1
  %245 = getelementptr double, ptr %14, i64 %index493
  %wide.load495 = load <2 x double>, ptr %245, align 8, !tbaa !9
  %246 = fcmp ogt <2 x double> %wide.load495, %broadcast.splat
  %247 = getelementptr double, ptr %244, i64 %offset.idx494
  %wide.load496 = load <2 x double>, ptr %247, align 8, !tbaa !9
  %248 = fcmp oge <2 x double> %wide.load496, zeroinitializer
  %249 = fneg <2 x double> %wide.load496
  %250 = select <2 x i1> %248, <2 x double> %wide.load496, <2 x double> %249
  %251 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat498, <2 x double> %wide.load495, <2 x double> %250)
  %252 = fadd <2 x double> %broadcast.splat500, %251
  %253 = select <2 x i1> %246, <2 x double> %251, <2 x double> %252
  store <2 x double> %253, ptr %245, align 8, !tbaa !9
  %index.next501 = add nuw i64 %index493, 2
  %254 = icmp eq i64 %index.next501, %n.vec489
  br i1 %254, label %middle.block484, label %vector.body492, !llvm.loop !32

middle.block484:                                  ; preds = %vector.body492
  %cmp.n502 = icmp eq i64 %117, %n.vec489
  br i1 %cmp.n502, label %._crit_edge406, label %scalar.ph485.preheader

scalar.ph485.preheader:                           ; preds = %middle.block484, %.lr.ph405
  %.4403.ph = phi i64 [ 1, %.lr.ph405 ], [ %ind.end490, %middle.block484 ]
  br label %scalar.ph485

scalar.ph485:                                     ; preds = %scalar.ph485.preheader, %scalar.ph485
  %.4403 = phi i64 [ %265, %scalar.ph485 ], [ %.4403.ph, %scalar.ph485.preheader ]
  %255 = getelementptr inbounds double, ptr %37, i64 %.4403
  %256 = load double, ptr %255, align 8, !tbaa !9
  %257 = fcmp ogt double %256, %99
  %258 = getelementptr double, ptr %244, i64 %.4403
  %259 = load double, ptr %258, align 8, !tbaa !9
  %260 = fcmp oge double %259, 0.000000e+00
  %261 = fneg double %259
  %262 = select i1 %260, double %259, double %261
  %263 = call double @llvm.fmuladd.f64(double %101, double %256, double %262)
  %264 = fadd double %98, %263
  %storemerge352 = select i1 %257, double %263, double %264
  store double %storemerge352, ptr %255, align 8, !tbaa !9
  %265 = add nuw i64 %.4403, 1
  %exitcond442.not = icmp eq i64 %.4403, %117
  br i1 %exitcond442.not, label %._crit_edge406, label %scalar.ph485, !llvm.loop !33

._crit_edge406:                                   ; preds = %scalar.ph485, %middle.block484, %243
  store i64 0, ptr %23, align 8, !tbaa !5
  %266 = getelementptr inbounds double, ptr %35, i64 %.1324428
  br label %.loopexit359

.loopexit359:                                     ; preds = %.loopexit359.backedge, %._crit_edge406
  %267 = phi i64 [ %117, %._crit_edge406 ], [ %.be, %.loopexit359.backedge ]
  %.idx = shl i64 %267, 4
  %268 = getelementptr i8, ptr %14, i64 %.idx
  %269 = getelementptr double, ptr %14, i64 %267
  %270 = call i32 @dlacn2_(ptr noundef nonnull %1, ptr noundef %268, ptr noundef %269, ptr noundef %15, ptr noundef nonnull %266, ptr noundef nonnull %23, ptr noundef nonnull %24) #5
  %271 = load i64, ptr %23, align 8, !tbaa !5
  %272 = load i64, ptr %1, align 8, !tbaa !5
  switch i64 %271, label %291 [
    i64 0, label %308
    i64 1, label %273
  ]

273:                                              ; preds = %.loopexit359
  %274 = getelementptr double, ptr %14, i64 %272
  %275 = call i32 @dgetrs_(ptr noundef nonnull %25, ptr noundef nonnull %1, ptr noundef nonnull @c__1, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef %274, ptr noundef nonnull %1, ptr noundef nonnull %16) #5
  %276 = load i64, ptr %1, align 8, !tbaa !5
  %.not351407 = icmp slt i64 %276, 1
  br i1 %.not351407, label %.loopexit359.backedge, label %.lr.ph410

.lr.ph410:                                        ; preds = %273
  %277 = getelementptr double, ptr %37, i64 %276
  %min.iters.check469 = icmp ult i64 %276, 4
  br i1 %min.iters.check469, label %scalar.ph468.preheader, label %vector.ph470

vector.ph470:                                     ; preds = %.lr.ph410
  %n.vec472 = and i64 %276, 9223372036854775804
  %ind.end473 = or disjoint i64 %n.vec472, 1
  br label %vector.body475

vector.body475:                                   ; preds = %vector.body475, %vector.ph470
  %index476 = phi i64 [ 0, %vector.ph470 ], [ %index.next482, %vector.body475 ]
  %offset.idx477 = or disjoint i64 %index476, 1
  %278 = getelementptr double, ptr %14, i64 %index476
  %279 = getelementptr inbounds i8, ptr %278, i64 16
  %wide.load478 = load <2 x double>, ptr %278, align 8, !tbaa !9
  %wide.load479 = load <2 x double>, ptr %279, align 8, !tbaa !9
  %280 = getelementptr double, ptr %277, i64 %offset.idx477
  %281 = getelementptr i8, ptr %280, i64 16
  %wide.load480 = load <2 x double>, ptr %280, align 8, !tbaa !9
  %wide.load481 = load <2 x double>, ptr %281, align 8, !tbaa !9
  %282 = fmul <2 x double> %wide.load478, %wide.load480
  %283 = fmul <2 x double> %wide.load479, %wide.load481
  store <2 x double> %282, ptr %280, align 8, !tbaa !9
  store <2 x double> %283, ptr %281, align 8, !tbaa !9
  %index.next482 = add nuw i64 %index476, 4
  %284 = icmp eq i64 %index.next482, %n.vec472
  br i1 %284, label %middle.block467, label %vector.body475, !llvm.loop !34

middle.block467:                                  ; preds = %vector.body475
  %cmp.n483 = icmp eq i64 %276, %n.vec472
  br i1 %cmp.n483, label %.loopexit359.backedge, label %scalar.ph468.preheader

.loopexit359.backedge:                            ; preds = %scalar.ph468, %middle.block467, %273, %._crit_edge415
  %.be = phi i64 [ %276, %273 ], [ %.pre.pre, %._crit_edge415 ], [ %276, %middle.block467 ], [ %276, %scalar.ph468 ]
  br label %.loopexit359

scalar.ph468.preheader:                           ; preds = %middle.block467, %.lr.ph410
  %.5408.ph = phi i64 [ 1, %.lr.ph410 ], [ %ind.end473, %middle.block467 ]
  br label %scalar.ph468

scalar.ph468:                                     ; preds = %scalar.ph468.preheader, %scalar.ph468
  %.5408 = phi i64 [ %290, %scalar.ph468 ], [ %.5408.ph, %scalar.ph468.preheader ]
  %285 = getelementptr inbounds double, ptr %37, i64 %.5408
  %286 = load double, ptr %285, align 8, !tbaa !9
  %287 = getelementptr double, ptr %277, i64 %.5408
  %288 = load double, ptr %287, align 8, !tbaa !9
  %289 = fmul double %286, %288
  store double %289, ptr %287, align 8, !tbaa !9
  %290 = add nuw i64 %.5408, 1
  %exitcond443.not = icmp eq i64 %.5408, %276
  br i1 %exitcond443.not, label %.loopexit359.backedge, label %scalar.ph468, !llvm.loop !35

291:                                              ; preds = %.loopexit359
  %.not350411 = icmp slt i64 %272, 1
  br i1 %.not350411, label %._crit_edge415, label %.lr.ph414

.lr.ph414:                                        ; preds = %291
  %292 = getelementptr double, ptr %37, i64 %272
  %min.iters.check = icmp ult i64 %272, 4
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %.lr.ph414
  %n.vec = and i64 %272, 9223372036854775804
  %ind.end = or disjoint i64 %n.vec, 1
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %offset.idx = or disjoint i64 %index, 1
  %293 = getelementptr double, ptr %14, i64 %index
  %294 = getelementptr inbounds i8, ptr %293, i64 16
  %wide.load = load <2 x double>, ptr %293, align 8, !tbaa !9
  %wide.load464 = load <2 x double>, ptr %294, align 8, !tbaa !9
  %295 = getelementptr double, ptr %292, i64 %offset.idx
  %296 = getelementptr i8, ptr %295, i64 16
  %wide.load465 = load <2 x double>, ptr %295, align 8, !tbaa !9
  %wide.load466 = load <2 x double>, ptr %296, align 8, !tbaa !9
  %297 = fmul <2 x double> %wide.load, %wide.load465
  %298 = fmul <2 x double> %wide.load464, %wide.load466
  store <2 x double> %297, ptr %295, align 8, !tbaa !9
  store <2 x double> %298, ptr %296, align 8, !tbaa !9
  %index.next = add nuw i64 %index, 4
  %299 = icmp eq i64 %index.next, %n.vec
  br i1 %299, label %middle.block, label %vector.body, !llvm.loop !36

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

scalar.ph.preheader:                              ; preds = %middle.block, %.lr.ph414
  %.6412.ph = phi i64 [ 1, %.lr.ph414 ], [ %ind.end, %middle.block ]
  br label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph.preheader, %scalar.ph
  %.6412 = phi i64 [ %305, %scalar.ph ], [ %.6412.ph, %scalar.ph.preheader ]
  %300 = getelementptr inbounds double, ptr %37, i64 %.6412
  %301 = load double, ptr %300, align 8, !tbaa !9
  %302 = getelementptr double, ptr %292, i64 %.6412
  %303 = load double, ptr %302, align 8, !tbaa !9
  %304 = fmul double %301, %303
  store double %304, ptr %302, align 8, !tbaa !9
  %305 = add nuw i64 %.6412, 1
  %exitcond444.not = icmp eq i64 %.6412, %272
  br i1 %exitcond444.not, label %._crit_edge415, label %scalar.ph, !llvm.loop !37

._crit_edge415:                                   ; preds = %scalar.ph, %middle.block, %291
  %306 = getelementptr double, ptr %14, i64 %272
  %307 = call i32 @dgetrs_(ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull @c__1, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef %306, ptr noundef nonnull %1, ptr noundef nonnull %16) #5
  %.pre.pre = load i64, ptr %1, align 8, !tbaa !5
  br label %.loopexit359.backedge

308:                                              ; preds = %.loopexit359
  %.not349418 = icmp slt i64 %272, 1
  br i1 %.not349418, label %._crit_edge423.thread, label %.lr.ph422.preheader

.lr.ph422.preheader:                              ; preds = %308
  %xtraiter566 = and i64 %272, 1
  %309 = icmp eq i64 %272, 1
  br i1 %309, label %._crit_edge423.unr-lcssa, label %.lr.ph422.preheader.new

.lr.ph422.preheader.new:                          ; preds = %.lr.ph422.preheader
  %unroll_iter = and i64 %272, 9223372036854775806
  %invariant.gep577 = getelementptr i8, ptr %invariant.gep377, i64 8
  br label %.lr.ph422

.lr.ph422:                                        ; preds = %.lr.ph422, %.lr.ph422.preheader.new
  %.1420 = phi double [ 0.000000e+00, %.lr.ph422.preheader.new ], [ %321, %.lr.ph422 ]
  %.7419 = phi i64 [ 1, %.lr.ph422.preheader.new ], [ %322, %.lr.ph422 ]
  %niter = phi i64 [ 0, %.lr.ph422.preheader.new ], [ %niter.next.1, %.lr.ph422 ]
  %gep417 = getelementptr double, ptr %invariant.gep377, i64 %.7419
  %310 = load double, ptr %gep417, align 8, !tbaa !9
  %311 = fcmp oge double %310, 0.000000e+00
  %312 = fneg double %310
  %313 = select i1 %311, double %310, double %312
  %314 = fcmp oge double %.1420, %313
  %315 = select i1 %314, double %.1420, double %313
  %gep578 = getelementptr double, ptr %invariant.gep577, i64 %.7419
  %316 = load double, ptr %gep578, align 8, !tbaa !9
  %317 = fcmp oge double %316, 0.000000e+00
  %318 = fneg double %316
  %319 = select i1 %317, double %316, double %318
  %320 = fcmp oge double %315, %319
  %321 = select i1 %320, double %315, double %319
  %322 = add nuw i64 %.7419, 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 %._crit_edge423.unr-lcssa, label %.lr.ph422, !llvm.loop !38

._crit_edge423.unr-lcssa:                         ; preds = %.lr.ph422, %.lr.ph422.preheader
  %.lcssa563.ph = phi double [ poison, %.lr.ph422.preheader ], [ %321, %.lr.ph422 ]
  %.1420.unr = phi double [ 0.000000e+00, %.lr.ph422.preheader ], [ %321, %.lr.ph422 ]
  %.7419.unr = phi i64 [ 1, %.lr.ph422.preheader ], [ %322, %.lr.ph422 ]
  %lcmp.mod567.not = icmp eq i64 %xtraiter566, 0
  br i1 %lcmp.mod567.not, label %._crit_edge423, label %.lr.ph422.epil

.lr.ph422.epil:                                   ; preds = %._crit_edge423.unr-lcssa
  %gep417.epil = getelementptr double, ptr %invariant.gep377, i64 %.7419.unr
  %323 = load double, ptr %gep417.epil, align 8, !tbaa !9
  %324 = fcmp oge double %323, 0.000000e+00
  %325 = fneg double %323
  %326 = select i1 %324, double %323, double %325
  %327 = fcmp oge double %.1420.unr, %326
  %328 = select i1 %327, double %.1420.unr, double %326
  br label %._crit_edge423

._crit_edge423:                                   ; preds = %._crit_edge423.unr-lcssa, %.lr.ph422.epil
  %.lcssa563 = phi double [ %.lcssa563.ph, %._crit_edge423.unr-lcssa ], [ %328, %.lr.ph422.epil ]
  %329 = fcmp une double %.lcssa563, 0.000000e+00
  br i1 %329, label %330, label %._crit_edge423.thread

330:                                              ; preds = %._crit_edge423
  %331 = load double, ptr %266, align 8, !tbaa !9
  %332 = fdiv double %331, %.lcssa563
  store double %332, ptr %266, align 8, !tbaa !9
  br label %._crit_edge423.thread

._crit_edge423.thread:                            ; preds = %308, %._crit_edge423, %330
  %333 = add nuw nsw i64 %.1324428, 1
  %.not341.not = icmp slt i64 %.1324428, %100
  %indvar.next = add i64 %indvar, 1
  br i1 %.not341.not, label %.preheader364, label %.loopexit, !llvm.loop !39

.loopexit:                                        ; preds = %._crit_edge423.thread, %.lr.ph432.prol.loopexit, %.lr.ph432, %middle.block541, %67, %93, %68, %.thread
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %25) #5
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %24) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #5
  ret i32 0
}

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

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

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

declare double @dlamch_(ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

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

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

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

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

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

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


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