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

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

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

95:                                               ; preds = %15
  %96 = load ptr, ptr %17, align 8, !tbaa !5
  %97 = call i64 @lsame_(ptr noundef %96, ptr noundef @.str.1)
  %98 = icmp ne i64 %97, 0
  br i1 %98, label %101, label %99

99:                                               ; preds = %95
  %100 = load ptr, ptr %31, align 8, !tbaa !5
  store i64 -1, ptr %100, align 8, !tbaa !9
  br label %147

101:                                              ; preds = %95, %15
  %102 = load ptr, ptr %18, align 8, !tbaa !5
  %103 = load i64, ptr %102, align 8, !tbaa !9
  %104 = icmp slt i64 %103, 0
  br i1 %104, label %105, label %107

105:                                              ; preds = %101
  %106 = load ptr, ptr %31, align 8, !tbaa !5
  store i64 -2, ptr %106, align 8, !tbaa !9
  br label %146

107:                                              ; preds = %101
  %108 = load ptr, ptr %19, align 8, !tbaa !5
  %109 = load i64, ptr %108, align 8, !tbaa !9
  %110 = icmp slt i64 %109, 0
  br i1 %110, label %111, label %113

111:                                              ; preds = %107
  %112 = load ptr, ptr %31, align 8, !tbaa !5
  store i64 -3, ptr %112, align 8, !tbaa !9
  br label %145

113:                                              ; preds = %107
  %114 = load ptr, ptr %24, align 8, !tbaa !5
  %115 = load i64, ptr %114, align 8, !tbaa !9
  %116 = load ptr, ptr %18, align 8, !tbaa !5
  %117 = load i64, ptr %116, align 8, !tbaa !9
  %118 = icmp sge i64 1, %117
  br i1 %118, label %119, label %120

119:                                              ; preds = %113
  br label %123

120:                                              ; preds = %113
  %121 = load ptr, ptr %18, align 8, !tbaa !5
  %122 = load i64, ptr %121, align 8, !tbaa !9
  br label %123

123:                                              ; preds = %120, %119
  %124 = phi i64 [ 1, %119 ], [ %122, %120 ]
  %125 = icmp slt i64 %115, %124
  br i1 %125, label %126, label %128

126:                                              ; preds = %123
  %127 = load ptr, ptr %31, align 8, !tbaa !5
  store i64 -8, ptr %127, align 8, !tbaa !9
  br label %144

128:                                              ; preds = %123
  %129 = load ptr, ptr %26, align 8, !tbaa !5
  %130 = load i64, ptr %129, align 8, !tbaa !9
  %131 = load ptr, ptr %18, align 8, !tbaa !5
  %132 = load i64, ptr %131, align 8, !tbaa !9
  %133 = icmp sge i64 1, %132
  br i1 %133, label %134, label %135

134:                                              ; preds = %128
  br label %138

135:                                              ; preds = %128
  %136 = load ptr, ptr %18, align 8, !tbaa !5
  %137 = load i64, ptr %136, align 8, !tbaa !9
  br label %138

138:                                              ; preds = %135, %134
  %139 = phi i64 [ 1, %134 ], [ %137, %135 ]
  %140 = icmp slt i64 %130, %139
  br i1 %140, label %141, label %143

141:                                              ; preds = %138
  %142 = load ptr, ptr %31, align 8, !tbaa !5
  store i64 -10, ptr %142, align 8, !tbaa !9
  br label %143

143:                                              ; preds = %141, %138
  br label %144

144:                                              ; preds = %143, %126
  br label %145

145:                                              ; preds = %144, %111
  br label %146

146:                                              ; preds = %145, %105
  br label %147

147:                                              ; preds = %146, %99
  %148 = load ptr, ptr %31, align 8, !tbaa !5
  %149 = load i64, ptr %148, align 8, !tbaa !9
  %150 = icmp ne i64 %149, 0
  br i1 %150, label %151, label %156

151:                                              ; preds = %147
  %152 = load ptr, ptr %31, align 8, !tbaa !5
  %153 = load i64, ptr %152, align 8, !tbaa !9
  %154 = sub nsw i64 0, %153
  store i64 %154, ptr %36, align 8, !tbaa !9
  %155 = call i32 @xerbla_(ptr noundef @.str.2, ptr noundef %36)
  store i32 0, ptr %16, align 4
  store i32 1, ptr %59, align 4
  br label %910

156:                                              ; preds = %147
  %157 = load ptr, ptr %18, align 8, !tbaa !5
  %158 = load i64, ptr %157, align 8, !tbaa !9
  %159 = icmp eq i64 %158, 0
  br i1 %159, label %164, label %160

160:                                              ; preds = %156
  %161 = load ptr, ptr %19, align 8, !tbaa !5
  %162 = load i64, ptr %161, align 8, !tbaa !9
  %163 = icmp eq i64 %162, 0
  br i1 %163, label %164, label %182

164:                                              ; preds = %160, %156
  %165 = load ptr, ptr %19, align 8, !tbaa !5
  %166 = load i64, ptr %165, align 8, !tbaa !9
  store i64 %166, ptr %36, align 8, !tbaa !9
  store i64 1, ptr %43, align 8, !tbaa !9
  br label %167

167:                                              ; preds = %178, %164
  %168 = load i64, ptr %43, align 8, !tbaa !9
  %169 = load i64, ptr %36, align 8, !tbaa !9
  %170 = icmp sle i64 %168, %169
  br i1 %170, label %171, label %181

171:                                              ; preds = %167
  %172 = load ptr, ptr %27, align 8, !tbaa !5
  %173 = load i64, ptr %43, align 8, !tbaa !9
  %174 = getelementptr inbounds double, ptr %172, i64 %173
  store double 0.000000e+00, ptr %174, align 8, !tbaa !11
  %175 = load ptr, ptr %28, align 8, !tbaa !5
  %176 = load i64, ptr %43, align 8, !tbaa !9
  %177 = getelementptr inbounds double, ptr %175, i64 %176
  store double 0.000000e+00, ptr %177, align 8, !tbaa !11
  br label %178

178:                                              ; preds = %171
  %179 = load i64, ptr %43, align 8, !tbaa !9
  %180 = add nsw i64 %179, 1
  store i64 %180, ptr %43, align 8, !tbaa !9
  br label %167, !llvm.loop !13

181:                                              ; preds = %167
  store i32 0, ptr %16, align 4
  store i32 1, ptr %59, align 4
  br label %910

182:                                              ; preds = %160
  %183 = load ptr, ptr %18, align 8, !tbaa !5
  %184 = load i64, ptr %183, align 8, !tbaa !9
  %185 = add nsw i64 %184, 1
  store i64 %185, ptr %49, align 8, !tbaa !9
  %186 = call double @dlamch_(ptr noundef @.str.3)
  store double %186, ptr %50, align 8, !tbaa !11
  %187 = call double @dlamch_(ptr noundef @.str.4)
  store double %187, ptr %57, align 8, !tbaa !11
  %188 = load i64, ptr %49, align 8, !tbaa !9
  %189 = sitofp i64 %188 to double
  %190 = load double, ptr %57, align 8, !tbaa !11
  %191 = fmul double %189, %190
  store double %191, ptr %52, align 8, !tbaa !11
  %192 = load double, ptr %52, align 8, !tbaa !11
  %193 = load double, ptr %50, align 8, !tbaa !11
  %194 = fdiv double %192, %193
  store double %194, ptr %53, align 8, !tbaa !11
  %195 = load ptr, ptr %19, align 8, !tbaa !5
  %196 = load i64, ptr %195, align 8, !tbaa !9
  store i64 %196, ptr %36, align 8, !tbaa !9
  store i64 1, ptr %43, align 8, !tbaa !9
  br label %197

197:                                              ; preds = %906, %182
  %198 = load i64, ptr %43, align 8, !tbaa !9
  %199 = load i64, ptr %36, align 8, !tbaa !9
  %200 = icmp sle i64 %198, %199
  br i1 %200, label %201, label %909

201:                                              ; preds = %197
  store i64 1, ptr %55, align 8, !tbaa !9
  store double 3.000000e+00, ptr %58, align 8, !tbaa !11
  br label %202

202:                                              ; preds = %626, %201
  %203 = load ptr, ptr %18, align 8, !tbaa !5
  %204 = load ptr, ptr %23, align 8, !tbaa !5
  %205 = load i64, ptr %43, align 8, !tbaa !9
  %206 = load i64, ptr %32, align 8, !tbaa !9
  %207 = mul nsw i64 %205, %206
  %208 = add nsw i64 %207, 1
  %209 = getelementptr inbounds double, ptr %204, i64 %208
  %210 = load ptr, ptr %29, align 8, !tbaa !5
  %211 = load ptr, ptr %18, align 8, !tbaa !5
  %212 = load i64, ptr %211, align 8, !tbaa !9
  %213 = add nsw i64 %212, 1
  %214 = getelementptr inbounds double, ptr %210, i64 %213
  %215 = call i32 @f2c_dcopy(ptr noundef %203, ptr noundef %209, ptr noundef @c__1, ptr noundef %214, ptr noundef @c__1)
  %216 = load ptr, ptr %17, align 8, !tbaa !5
  %217 = load ptr, ptr %18, align 8, !tbaa !5
  %218 = load ptr, ptr %20, align 8, !tbaa !5
  %219 = getelementptr inbounds double, ptr %218, i64 1
  %220 = load ptr, ptr %25, align 8, !tbaa !5
  %221 = load i64, ptr %43, align 8, !tbaa !9
  %222 = load i64, ptr %34, align 8, !tbaa !9
  %223 = mul nsw i64 %221, %222
  %224 = add nsw i64 %223, 1
  %225 = getelementptr inbounds double, ptr %220, i64 %224
  %226 = load ptr, ptr %29, align 8, !tbaa !5
  %227 = load ptr, ptr %18, align 8, !tbaa !5
  %228 = load i64, ptr %227, align 8, !tbaa !9
  %229 = add nsw i64 %228, 1
  %230 = getelementptr inbounds double, ptr %226, i64 %229
  %231 = call i32 @f2c_dspmv(ptr noundef %216, ptr noundef %217, ptr noundef @c_b12, ptr noundef %219, ptr noundef %225, ptr noundef @c__1, ptr noundef @c_b14, ptr noundef %230, ptr noundef @c__1)
  %232 = load ptr, ptr %18, align 8, !tbaa !5
  %233 = load i64, ptr %232, align 8, !tbaa !9
  store i64 %233, ptr %37, align 8, !tbaa !9
  store i64 1, ptr %42, align 8, !tbaa !9
  br label %234

234:                                              ; preds = %259, %202
  %235 = load i64, ptr %42, align 8, !tbaa !9
  %236 = load i64, ptr %37, align 8, !tbaa !9
  %237 = icmp sle i64 %235, %236
  br i1 %237, label %238, label %262

238:                                              ; preds = %234
  %239 = load ptr, ptr %23, align 8, !tbaa !5
  %240 = load i64, ptr %42, align 8, !tbaa !9
  %241 = load i64, ptr %43, align 8, !tbaa !9
  %242 = load i64, ptr %32, align 8, !tbaa !9
  %243 = mul nsw i64 %241, %242
  %244 = add nsw i64 %240, %243
  %245 = getelementptr inbounds double, ptr %239, i64 %244
  %246 = load double, ptr %245, align 8, !tbaa !11
  store double %246, ptr %39, align 8, !tbaa !11
  %247 = load double, ptr %39, align 8, !tbaa !11
  %248 = fcmp oge double %247, 0.000000e+00
  br i1 %248, label %249, label %251

249:                                              ; preds = %238
  %250 = load double, ptr %39, align 8, !tbaa !11
  br label %254

251:                                              ; preds = %238
  %252 = load double, ptr %39, align 8, !tbaa !11
  %253 = fneg double %252
  br label %254

254:                                              ; preds = %251, %249
  %255 = phi double [ %250, %249 ], [ %253, %251 ]
  %256 = load ptr, ptr %29, align 8, !tbaa !5
  %257 = load i64, ptr %42, align 8, !tbaa !9
  %258 = getelementptr inbounds double, ptr %256, i64 %257
  store double %255, ptr %258, align 8, !tbaa !11
  br label %259

259:                                              ; preds = %254
  %260 = load i64, ptr %42, align 8, !tbaa !9
  %261 = add nsw i64 %260, 1
  store i64 %261, ptr %42, align 8, !tbaa !9
  br label %234, !llvm.loop !15

262:                                              ; preds = %234
  store i64 1, ptr %47, align 8, !tbaa !9
  %263 = load i64, ptr %56, align 8, !tbaa !9
  %264 = icmp ne i64 %263, 0
  br i1 %264, label %265, label %389

265:                                              ; preds = %262
  %266 = load ptr, ptr %18, align 8, !tbaa !5
  %267 = load i64, ptr %266, align 8, !tbaa !9
  store i64 %267, ptr %37, align 8, !tbaa !9
  store i64 1, ptr %44, align 8, !tbaa !9
  br label %268

268:                                              ; preds = %385, %265
  %269 = load i64, ptr %44, align 8, !tbaa !9
  %270 = load i64, ptr %37, align 8, !tbaa !9
  %271 = icmp sle i64 %269, %270
  br i1 %271, label %272, label %388

272:                                              ; preds = %268
  store double 0.000000e+00, ptr %45, align 8, !tbaa !11
  %273 = load ptr, ptr %25, align 8, !tbaa !5
  %274 = load i64, ptr %44, align 8, !tbaa !9
  %275 = load i64, ptr %43, align 8, !tbaa !9
  %276 = load i64, ptr %34, align 8, !tbaa !9
  %277 = mul nsw i64 %275, %276
  %278 = add nsw i64 %274, %277
  %279 = getelementptr inbounds double, ptr %273, i64 %278
  %280 = load double, ptr %279, align 8, !tbaa !11
  store double %280, ptr %39, align 8, !tbaa !11
  %281 = load double, ptr %39, align 8, !tbaa !11
  %282 = fcmp oge double %281, 0.000000e+00
  br i1 %282, label %283, label %285

283:                                              ; preds = %272
  %284 = load double, ptr %39, align 8, !tbaa !11
  br label %288

285:                                              ; preds = %272
  %286 = load double, ptr %39, align 8, !tbaa !11
  %287 = fneg double %286
  br label %288

288:                                              ; preds = %285, %283
  %289 = phi double [ %284, %283 ], [ %287, %285 ]
  store double %289, ptr %48, align 8, !tbaa !11
  %290 = load i64, ptr %47, align 8, !tbaa !9
  store i64 %290, ptr %46, align 8, !tbaa !9
  %291 = load i64, ptr %44, align 8, !tbaa !9
  %292 = sub nsw i64 %291, 1
  store i64 %292, ptr %38, align 8, !tbaa !9
  store i64 1, ptr %42, align 8, !tbaa !9
  br label %293

293:                                              ; preds = %351, %288
  %294 = load i64, ptr %42, align 8, !tbaa !9
  %295 = load i64, ptr %38, align 8, !tbaa !9
  %296 = icmp sle i64 %294, %295
  br i1 %296, label %297, label %354

297:                                              ; preds = %293
  %298 = load ptr, ptr %20, align 8, !tbaa !5
  %299 = load i64, ptr %46, align 8, !tbaa !9
  %300 = getelementptr inbounds double, ptr %298, i64 %299
  %301 = load double, ptr %300, align 8, !tbaa !11
  store double %301, ptr %39, align 8, !tbaa !11
  %302 = load double, ptr %39, align 8, !tbaa !11
  %303 = fcmp oge double %302, 0.000000e+00
  br i1 %303, label %304, label %306

304:                                              ; preds = %297
  %305 = load double, ptr %39, align 8, !tbaa !11
  br label %309

306:                                              ; preds = %297
  %307 = load double, ptr %39, align 8, !tbaa !11
  %308 = fneg double %307
  br label %309

309:                                              ; preds = %306, %304
  %310 = phi double [ %305, %304 ], [ %308, %306 ]
  %311 = load double, ptr %48, align 8, !tbaa !11
  %312 = load ptr, ptr %29, align 8, !tbaa !5
  %313 = load i64, ptr %42, align 8, !tbaa !9
  %314 = getelementptr inbounds double, ptr %312, i64 %313
  %315 = load double, ptr %314, align 8, !tbaa !11
  %316 = call double @llvm.fmuladd.f64(double %310, double %311, double %315)
  store double %316, ptr %314, align 8, !tbaa !11
  %317 = load ptr, ptr %20, align 8, !tbaa !5
  %318 = load i64, ptr %46, align 8, !tbaa !9
  %319 = getelementptr inbounds double, ptr %317, i64 %318
  %320 = load double, ptr %319, align 8, !tbaa !11
  store double %320, ptr %39, align 8, !tbaa !11
  %321 = load double, ptr %39, align 8, !tbaa !11
  %322 = fcmp oge double %321, 0.000000e+00
  br i1 %322, label %323, label %325

323:                                              ; preds = %309
  %324 = load double, ptr %39, align 8, !tbaa !11
  br label %328

325:                                              ; preds = %309
  %326 = load double, ptr %39, align 8, !tbaa !11
  %327 = fneg double %326
  br label %328

328:                                              ; preds = %325, %323
  %329 = phi double [ %324, %323 ], [ %327, %325 ]
  %330 = load ptr, ptr %25, align 8, !tbaa !5
  %331 = load i64, ptr %42, align 8, !tbaa !9
  %332 = load i64, ptr %43, align 8, !tbaa !9
  %333 = load i64, ptr %34, align 8, !tbaa !9
  %334 = mul nsw i64 %332, %333
  %335 = add nsw i64 %331, %334
  %336 = getelementptr inbounds double, ptr %330, i64 %335
  %337 = load double, ptr %336, align 8, !tbaa !11
  store double %337, ptr %40, align 8, !tbaa !11
  %338 = load double, ptr %40, align 8, !tbaa !11
  %339 = fcmp oge double %338, 0.000000e+00
  br i1 %339, label %340, label %342

340:                                              ; preds = %328
  %341 = load double, ptr %40, align 8, !tbaa !11
  br label %345

342:                                              ; preds = %328
  %343 = load double, ptr %40, align 8, !tbaa !11
  %344 = fneg double %343
  br label %345

345:                                              ; preds = %342, %340
  %346 = phi double [ %341, %340 ], [ %344, %342 ]
  %347 = load double, ptr %45, align 8, !tbaa !11
  %348 = call double @llvm.fmuladd.f64(double %329, double %346, double %347)
  store double %348, ptr %45, align 8, !tbaa !11
  %349 = load i64, ptr %46, align 8, !tbaa !9
  %350 = add nsw i64 %349, 1
  store i64 %350, ptr %46, align 8, !tbaa !9
  br label %351

351:                                              ; preds = %345
  %352 = load i64, ptr %42, align 8, !tbaa !9
  %353 = add nsw i64 %352, 1
  store i64 %353, ptr %42, align 8, !tbaa !9
  br label %293, !llvm.loop !16

354:                                              ; preds = %293
  %355 = load ptr, ptr %29, align 8, !tbaa !5
  %356 = load i64, ptr %44, align 8, !tbaa !9
  %357 = getelementptr inbounds double, ptr %355, i64 %356
  %358 = load double, ptr %357, align 8, !tbaa !11
  %359 = load ptr, ptr %20, align 8, !tbaa !5
  %360 = load i64, ptr %47, align 8, !tbaa !9
  %361 = load i64, ptr %44, align 8, !tbaa !9
  %362 = add nsw i64 %360, %361
  %363 = sub nsw i64 %362, 1
  %364 = getelementptr inbounds double, ptr %359, i64 %363
  %365 = load double, ptr %364, align 8, !tbaa !11
  store double %365, ptr %39, align 8, !tbaa !11
  %366 = load double, ptr %39, align 8, !tbaa !11
  %367 = fcmp oge double %366, 0.000000e+00
  br i1 %367, label %368, label %370

368:                                              ; preds = %354
  %369 = load double, ptr %39, align 8, !tbaa !11
  br label %373

370:                                              ; preds = %354
  %371 = load double, ptr %39, align 8, !tbaa !11
  %372 = fneg double %371
  br label %373

373:                                              ; preds = %370, %368
  %374 = phi double [ %369, %368 ], [ %372, %370 ]
  %375 = load double, ptr %48, align 8, !tbaa !11
  %376 = call double @llvm.fmuladd.f64(double %374, double %375, double %358)
  %377 = load double, ptr %45, align 8, !tbaa !11
  %378 = fadd double %376, %377
  %379 = load ptr, ptr %29, align 8, !tbaa !5
  %380 = load i64, ptr %44, align 8, !tbaa !9
  %381 = getelementptr inbounds double, ptr %379, i64 %380
  store double %378, ptr %381, align 8, !tbaa !11
  %382 = load i64, ptr %44, align 8, !tbaa !9
  %383 = load i64, ptr %47, align 8, !tbaa !9
  %384 = add nsw i64 %383, %382
  store i64 %384, ptr %47, align 8, !tbaa !9
  br label %385

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

388:                                              ; preds = %268
  br label %518

389:                                              ; preds = %262
  %390 = load ptr, ptr %18, align 8, !tbaa !5
  %391 = load i64, ptr %390, align 8, !tbaa !9
  store i64 %391, ptr %37, align 8, !tbaa !9
  store i64 1, ptr %44, align 8, !tbaa !9
  br label %392

392:                                              ; preds = %514, %389
  %393 = load i64, ptr %44, align 8, !tbaa !9
  %394 = load i64, ptr %37, align 8, !tbaa !9
  %395 = icmp sle i64 %393, %394
  br i1 %395, label %396, label %517

396:                                              ; preds = %392
  store double 0.000000e+00, ptr %45, align 8, !tbaa !11
  %397 = load ptr, ptr %25, align 8, !tbaa !5
  %398 = load i64, ptr %44, align 8, !tbaa !9
  %399 = load i64, ptr %43, align 8, !tbaa !9
  %400 = load i64, ptr %34, align 8, !tbaa !9
  %401 = mul nsw i64 %399, %400
  %402 = add nsw i64 %398, %401
  %403 = getelementptr inbounds double, ptr %397, i64 %402
  %404 = load double, ptr %403, align 8, !tbaa !11
  store double %404, ptr %39, align 8, !tbaa !11
  %405 = load double, ptr %39, align 8, !tbaa !11
  %406 = fcmp oge double %405, 0.000000e+00
  br i1 %406, label %407, label %409

407:                                              ; preds = %396
  %408 = load double, ptr %39, align 8, !tbaa !11
  br label %412

409:                                              ; preds = %396
  %410 = load double, ptr %39, align 8, !tbaa !11
  %411 = fneg double %410
  br label %412

412:                                              ; preds = %409, %407
  %413 = phi double [ %408, %407 ], [ %411, %409 ]
  store double %413, ptr %48, align 8, !tbaa !11
  %414 = load ptr, ptr %20, align 8, !tbaa !5
  %415 = load i64, ptr %47, align 8, !tbaa !9
  %416 = getelementptr inbounds double, ptr %414, i64 %415
  %417 = load double, ptr %416, align 8, !tbaa !11
  store double %417, ptr %39, align 8, !tbaa !11
  %418 = load double, ptr %39, align 8, !tbaa !11
  %419 = fcmp oge double %418, 0.000000e+00
  br i1 %419, label %420, label %422

420:                                              ; preds = %412
  %421 = load double, ptr %39, align 8, !tbaa !11
  br label %425

422:                                              ; preds = %412
  %423 = load double, ptr %39, align 8, !tbaa !11
  %424 = fneg double %423
  br label %425

425:                                              ; preds = %422, %420
  %426 = phi double [ %421, %420 ], [ %424, %422 ]
  %427 = load double, ptr %48, align 8, !tbaa !11
  %428 = load ptr, ptr %29, align 8, !tbaa !5
  %429 = load i64, ptr %44, align 8, !tbaa !9
  %430 = getelementptr inbounds double, ptr %428, i64 %429
  %431 = load double, ptr %430, align 8, !tbaa !11
  %432 = call double @llvm.fmuladd.f64(double %426, double %427, double %431)
  store double %432, ptr %430, align 8, !tbaa !11
  %433 = load i64, ptr %47, align 8, !tbaa !9
  %434 = add nsw i64 %433, 1
  store i64 %434, ptr %46, align 8, !tbaa !9
  %435 = load ptr, ptr %18, align 8, !tbaa !5
  %436 = load i64, ptr %435, align 8, !tbaa !9
  store i64 %436, ptr %38, align 8, !tbaa !9
  %437 = load i64, ptr %44, align 8, !tbaa !9
  %438 = add nsw i64 %437, 1
  store i64 %438, ptr %42, align 8, !tbaa !9
  br label %439

439:                                              ; preds = %497, %425
  %440 = load i64, ptr %42, align 8, !tbaa !9
  %441 = load i64, ptr %38, align 8, !tbaa !9
  %442 = icmp sle i64 %440, %441
  br i1 %442, label %443, label %500

443:                                              ; preds = %439
  %444 = load ptr, ptr %20, align 8, !tbaa !5
  %445 = load i64, ptr %46, align 8, !tbaa !9
  %446 = getelementptr inbounds double, ptr %444, i64 %445
  %447 = load double, ptr %446, align 8, !tbaa !11
  store double %447, ptr %39, align 8, !tbaa !11
  %448 = load double, ptr %39, align 8, !tbaa !11
  %449 = fcmp oge double %448, 0.000000e+00
  br i1 %449, label %450, label %452

450:                                              ; preds = %443
  %451 = load double, ptr %39, align 8, !tbaa !11
  br label %455

452:                                              ; preds = %443
  %453 = load double, ptr %39, align 8, !tbaa !11
  %454 = fneg double %453
  br label %455

455:                                              ; preds = %452, %450
  %456 = phi double [ %451, %450 ], [ %454, %452 ]
  %457 = load double, ptr %48, align 8, !tbaa !11
  %458 = load ptr, ptr %29, align 8, !tbaa !5
  %459 = load i64, ptr %42, align 8, !tbaa !9
  %460 = getelementptr inbounds double, ptr %458, i64 %459
  %461 = load double, ptr %460, align 8, !tbaa !11
  %462 = call double @llvm.fmuladd.f64(double %456, double %457, double %461)
  store double %462, ptr %460, align 8, !tbaa !11
  %463 = load ptr, ptr %20, align 8, !tbaa !5
  %464 = load i64, ptr %46, align 8, !tbaa !9
  %465 = getelementptr inbounds double, ptr %463, i64 %464
  %466 = load double, ptr %465, align 8, !tbaa !11
  store double %466, ptr %39, align 8, !tbaa !11
  %467 = load double, ptr %39, align 8, !tbaa !11
  %468 = fcmp oge double %467, 0.000000e+00
  br i1 %468, label %469, label %471

469:                                              ; preds = %455
  %470 = load double, ptr %39, align 8, !tbaa !11
  br label %474

471:                                              ; preds = %455
  %472 = load double, ptr %39, align 8, !tbaa !11
  %473 = fneg double %472
  br label %474

474:                                              ; preds = %471, %469
  %475 = phi double [ %470, %469 ], [ %473, %471 ]
  %476 = load ptr, ptr %25, align 8, !tbaa !5
  %477 = load i64, ptr %42, align 8, !tbaa !9
  %478 = load i64, ptr %43, align 8, !tbaa !9
  %479 = load i64, ptr %34, align 8, !tbaa !9
  %480 = mul nsw i64 %478, %479
  %481 = add nsw i64 %477, %480
  %482 = getelementptr inbounds double, ptr %476, i64 %481
  %483 = load double, ptr %482, align 8, !tbaa !11
  store double %483, ptr %40, align 8, !tbaa !11
  %484 = load double, ptr %40, align 8, !tbaa !11
  %485 = fcmp oge double %484, 0.000000e+00
  br i1 %485, label %486, label %488

486:                                              ; preds = %474
  %487 = load double, ptr %40, align 8, !tbaa !11
  br label %491

488:                                              ; preds = %474
  %489 = load double, ptr %40, align 8, !tbaa !11
  %490 = fneg double %489
  br label %491

491:                                              ; preds = %488, %486
  %492 = phi double [ %487, %486 ], [ %490, %488 ]
  %493 = load double, ptr %45, align 8, !tbaa !11
  %494 = call double @llvm.fmuladd.f64(double %475, double %492, double %493)
  store double %494, ptr %45, align 8, !tbaa !11
  %495 = load i64, ptr %46, align 8, !tbaa !9
  %496 = add nsw i64 %495, 1
  store i64 %496, ptr %46, align 8, !tbaa !9
  br label %497

497:                                              ; preds = %491
  %498 = load i64, ptr %42, align 8, !tbaa !9
  %499 = add nsw i64 %498, 1
  store i64 %499, ptr %42, align 8, !tbaa !9
  br label %439, !llvm.loop !18

500:                                              ; preds = %439
  %501 = load double, ptr %45, align 8, !tbaa !11
  %502 = load ptr, ptr %29, align 8, !tbaa !5
  %503 = load i64, ptr %44, align 8, !tbaa !9
  %504 = getelementptr inbounds double, ptr %502, i64 %503
  %505 = load double, ptr %504, align 8, !tbaa !11
  %506 = fadd double %505, %501
  store double %506, ptr %504, align 8, !tbaa !11
  %507 = load ptr, ptr %18, align 8, !tbaa !5
  %508 = load i64, ptr %507, align 8, !tbaa !9
  %509 = load i64, ptr %44, align 8, !tbaa !9
  %510 = sub nsw i64 %508, %509
  %511 = add nsw i64 %510, 1
  %512 = load i64, ptr %47, align 8, !tbaa !9
  %513 = add nsw i64 %512, %511
  store i64 %513, ptr %47, align 8, !tbaa !9
  br label %514

514:                                              ; preds = %500
  %515 = load i64, ptr %44, align 8, !tbaa !9
  %516 = add nsw i64 %515, 1
  store i64 %516, ptr %44, align 8, !tbaa !9
  br label %392, !llvm.loop !19

517:                                              ; preds = %392
  br label %518

518:                                              ; preds = %517, %388
  store double 0.000000e+00, ptr %45, align 8, !tbaa !11
  %519 = load ptr, ptr %18, align 8, !tbaa !5
  %520 = load i64, ptr %519, align 8, !tbaa !9
  store i64 %520, ptr %37, align 8, !tbaa !9
  store i64 1, ptr %42, align 8, !tbaa !9
  br label %521

521:                                              ; preds = %601, %518
  %522 = load i64, ptr %42, align 8, !tbaa !9
  %523 = load i64, ptr %37, align 8, !tbaa !9
  %524 = icmp sle i64 %522, %523
  br i1 %524, label %525, label %604

525:                                              ; preds = %521
  %526 = load ptr, ptr %29, align 8, !tbaa !5
  %527 = load i64, ptr %42, align 8, !tbaa !9
  %528 = getelementptr inbounds double, ptr %526, i64 %527
  %529 = load double, ptr %528, align 8, !tbaa !11
  %530 = load double, ptr %53, align 8, !tbaa !11
  %531 = fcmp ogt double %529, %530
  br i1 %531, label %532, label %564

532:                                              ; preds = %525
  %533 = load double, ptr %45, align 8, !tbaa !11
  store double %533, ptr %40, align 8, !tbaa !11
  %534 = load ptr, ptr %29, align 8, !tbaa !5
  %535 = load ptr, ptr %18, align 8, !tbaa !5
  %536 = load i64, ptr %535, align 8, !tbaa !9
  %537 = load i64, ptr %42, align 8, !tbaa !9
  %538 = add nsw i64 %536, %537
  %539 = getelementptr inbounds double, ptr %534, i64 %538
  %540 = load double, ptr %539, align 8, !tbaa !11
  store double %540, ptr %39, align 8, !tbaa !11
  %541 = load double, ptr %39, align 8, !tbaa !11
  %542 = fcmp oge double %541, 0.000000e+00
  br i1 %542, label %543, label %545

543:                                              ; preds = %532
  %544 = load double, ptr %39, align 8, !tbaa !11
  br label %548

545:                                              ; preds = %532
  %546 = load double, ptr %39, align 8, !tbaa !11
  %547 = fneg double %546
  br label %548

548:                                              ; preds = %545, %543
  %549 = phi double [ %544, %543 ], [ %547, %545 ]
  %550 = load ptr, ptr %29, align 8, !tbaa !5
  %551 = load i64, ptr %42, align 8, !tbaa !9
  %552 = getelementptr inbounds double, ptr %550, i64 %551
  %553 = load double, ptr %552, align 8, !tbaa !11
  %554 = fdiv double %549, %553
  store double %554, ptr %41, align 8, !tbaa !11
  %555 = load double, ptr %40, align 8, !tbaa !11
  %556 = load double, ptr %41, align 8, !tbaa !11
  %557 = fcmp oge double %555, %556
  br i1 %557, label %558, label %560

558:                                              ; preds = %548
  %559 = load double, ptr %40, align 8, !tbaa !11
  br label %562

560:                                              ; preds = %548
  %561 = load double, ptr %41, align 8, !tbaa !11
  br label %562

562:                                              ; preds = %560, %558
  %563 = phi double [ %559, %558 ], [ %561, %560 ]
  store double %563, ptr %45, align 8, !tbaa !11
  br label %600

564:                                              ; preds = %525
  %565 = load double, ptr %45, align 8, !tbaa !11
  store double %565, ptr %40, align 8, !tbaa !11
  %566 = load ptr, ptr %29, align 8, !tbaa !5
  %567 = load ptr, ptr %18, align 8, !tbaa !5
  %568 = load i64, ptr %567, align 8, !tbaa !9
  %569 = load i64, ptr %42, align 8, !tbaa !9
  %570 = add nsw i64 %568, %569
  %571 = getelementptr inbounds double, ptr %566, i64 %570
  %572 = load double, ptr %571, align 8, !tbaa !11
  store double %572, ptr %39, align 8, !tbaa !11
  %573 = load double, ptr %39, align 8, !tbaa !11
  %574 = fcmp oge double %573, 0.000000e+00
  br i1 %574, label %575, label %577

575:                                              ; preds = %564
  %576 = load double, ptr %39, align 8, !tbaa !11
  br label %580

577:                                              ; preds = %564
  %578 = load double, ptr %39, align 8, !tbaa !11
  %579 = fneg double %578
  br label %580

580:                                              ; preds = %577, %575
  %581 = phi double [ %576, %575 ], [ %579, %577 ]
  %582 = load double, ptr %52, align 8, !tbaa !11
  %583 = fadd double %581, %582
  %584 = load ptr, ptr %29, align 8, !tbaa !5
  %585 = load i64, ptr %42, align 8, !tbaa !9
  %586 = getelementptr inbounds double, ptr %584, i64 %585
  %587 = load double, ptr %586, align 8, !tbaa !11
  %588 = load double, ptr %52, align 8, !tbaa !11
  %589 = fadd double %587, %588
  %590 = fdiv double %583, %589
  store double %590, ptr %41, align 8, !tbaa !11
  %591 = load double, ptr %40, align 8, !tbaa !11
  %592 = load double, ptr %41, align 8, !tbaa !11
  %593 = fcmp oge double %591, %592
  br i1 %593, label %594, label %596

594:                                              ; preds = %580
  %595 = load double, ptr %40, align 8, !tbaa !11
  br label %598

596:                                              ; preds = %580
  %597 = load double, ptr %41, align 8, !tbaa !11
  br label %598

598:                                              ; preds = %596, %594
  %599 = phi double [ %595, %594 ], [ %597, %596 ]
  store double %599, ptr %45, align 8, !tbaa !11
  br label %600

600:                                              ; preds = %598, %562
  br label %601

601:                                              ; preds = %600
  %602 = load i64, ptr %42, align 8, !tbaa !9
  %603 = add nsw i64 %602, 1
  store i64 %603, ptr %42, align 8, !tbaa !9
  br label %521, !llvm.loop !20

604:                                              ; preds = %521
  %605 = load double, ptr %45, align 8, !tbaa !11
  %606 = load ptr, ptr %28, align 8, !tbaa !5
  %607 = load i64, ptr %43, align 8, !tbaa !9
  %608 = getelementptr inbounds double, ptr %606, i64 %607
  store double %605, ptr %608, align 8, !tbaa !11
  %609 = load ptr, ptr %28, align 8, !tbaa !5
  %610 = load i64, ptr %43, align 8, !tbaa !9
  %611 = getelementptr inbounds double, ptr %609, i64 %610
  %612 = load double, ptr %611, align 8, !tbaa !11
  %613 = load double, ptr %50, align 8, !tbaa !11
  %614 = fcmp ogt double %612, %613
  br i1 %614, label %615, label %660

615:                                              ; preds = %604
  %616 = load ptr, ptr %28, align 8, !tbaa !5
  %617 = load i64, ptr %43, align 8, !tbaa !9
  %618 = getelementptr inbounds double, ptr %616, i64 %617
  %619 = load double, ptr %618, align 8, !tbaa !11
  %620 = fmul double %619, 2.000000e+00
  %621 = load double, ptr %58, align 8, !tbaa !11
  %622 = fcmp ole double %620, %621
  br i1 %622, label %623, label %660

623:                                              ; preds = %615
  %624 = load i64, ptr %55, align 8, !tbaa !9
  %625 = icmp sle i64 %624, 5
  br i1 %625, label %626, label %660

626:                                              ; preds = %623
  %627 = load ptr, ptr %17, align 8, !tbaa !5
  %628 = load ptr, ptr %18, align 8, !tbaa !5
  %629 = load ptr, ptr %21, align 8, !tbaa !5
  %630 = getelementptr inbounds double, ptr %629, i64 1
  %631 = load ptr, ptr %22, align 8, !tbaa !5
  %632 = getelementptr inbounds i64, ptr %631, i64 1
  %633 = load ptr, ptr %29, align 8, !tbaa !5
  %634 = load ptr, ptr %18, align 8, !tbaa !5
  %635 = load i64, ptr %634, align 8, !tbaa !9
  %636 = add nsw i64 %635, 1
  %637 = getelementptr inbounds double, ptr %633, i64 %636
  %638 = load ptr, ptr %18, align 8, !tbaa !5
  %639 = load ptr, ptr %31, align 8, !tbaa !5
  %640 = call i32 @dsptrs_(ptr noundef %627, ptr noundef %628, ptr noundef @c__1, ptr noundef %630, ptr noundef %632, ptr noundef %637, ptr noundef %638, ptr noundef %639)
  %641 = load ptr, ptr %18, align 8, !tbaa !5
  %642 = load ptr, ptr %29, align 8, !tbaa !5
  %643 = load ptr, ptr %18, align 8, !tbaa !5
  %644 = load i64, ptr %643, align 8, !tbaa !9
  %645 = add nsw i64 %644, 1
  %646 = getelementptr inbounds double, ptr %642, i64 %645
  %647 = load ptr, ptr %25, align 8, !tbaa !5
  %648 = load i64, ptr %43, align 8, !tbaa !9
  %649 = load i64, ptr %34, align 8, !tbaa !9
  %650 = mul nsw i64 %648, %649
  %651 = add nsw i64 %650, 1
  %652 = getelementptr inbounds double, ptr %647, i64 %651
  %653 = call i32 @f2c_daxpy(ptr noundef %641, ptr noundef @c_b14, ptr noundef %646, ptr noundef @c__1, ptr noundef %652, ptr noundef @c__1)
  %654 = load ptr, ptr %28, align 8, !tbaa !5
  %655 = load i64, ptr %43, align 8, !tbaa !9
  %656 = getelementptr inbounds double, ptr %654, i64 %655
  %657 = load double, ptr %656, align 8, !tbaa !11
  store double %657, ptr %58, align 8, !tbaa !11
  %658 = load i64, ptr %55, align 8, !tbaa !9
  %659 = add nsw i64 %658, 1
  store i64 %659, ptr %55, align 8, !tbaa !9
  br label %202

660:                                              ; preds = %623, %615, %604
  %661 = load ptr, ptr %18, align 8, !tbaa !5
  %662 = load i64, ptr %661, align 8, !tbaa !9
  store i64 %662, ptr %37, align 8, !tbaa !9
  store i64 1, ptr %42, align 8, !tbaa !9
  br label %663

663:                                              ; preds = %735, %660
  %664 = load i64, ptr %42, align 8, !tbaa !9
  %665 = load i64, ptr %37, align 8, !tbaa !9
  %666 = icmp sle i64 %664, %665
  br i1 %666, label %667, label %738

667:                                              ; preds = %663
  %668 = load ptr, ptr %29, align 8, !tbaa !5
  %669 = load i64, ptr %42, align 8, !tbaa !9
  %670 = getelementptr inbounds double, ptr %668, i64 %669
  %671 = load double, ptr %670, align 8, !tbaa !11
  %672 = load double, ptr %53, align 8, !tbaa !11
  %673 = fcmp ogt double %671, %672
  br i1 %673, label %674, label %703

674:                                              ; preds = %667
  %675 = load ptr, ptr %29, align 8, !tbaa !5
  %676 = load ptr, ptr %18, align 8, !tbaa !5
  %677 = load i64, ptr %676, align 8, !tbaa !9
  %678 = load i64, ptr %42, align 8, !tbaa !9
  %679 = add nsw i64 %677, %678
  %680 = getelementptr inbounds double, ptr %675, i64 %679
  %681 = load double, ptr %680, align 8, !tbaa !11
  store double %681, ptr %39, align 8, !tbaa !11
  %682 = load double, ptr %39, align 8, !tbaa !11
  %683 = fcmp oge double %682, 0.000000e+00
  br i1 %683, label %684, label %686

684:                                              ; preds = %674
  %685 = load double, ptr %39, align 8, !tbaa !11
  br label %689

686:                                              ; preds = %674
  %687 = load double, ptr %39, align 8, !tbaa !11
  %688 = fneg double %687
  br label %689

689:                                              ; preds = %686, %684
  %690 = phi double [ %685, %684 ], [ %688, %686 ]
  %691 = load i64, ptr %49, align 8, !tbaa !9
  %692 = sitofp i64 %691 to double
  %693 = load double, ptr %50, align 8, !tbaa !11
  %694 = fmul double %692, %693
  %695 = load ptr, ptr %29, align 8, !tbaa !5
  %696 = load i64, ptr %42, align 8, !tbaa !9
  %697 = getelementptr inbounds double, ptr %695, i64 %696
  %698 = load double, ptr %697, align 8, !tbaa !11
  %699 = call double @llvm.fmuladd.f64(double %694, double %698, double %690)
  %700 = load ptr, ptr %29, align 8, !tbaa !5
  %701 = load i64, ptr %42, align 8, !tbaa !9
  %702 = getelementptr inbounds double, ptr %700, i64 %701
  store double %699, ptr %702, align 8, !tbaa !11
  br label %734

703:                                              ; preds = %667
  %704 = load ptr, ptr %29, align 8, !tbaa !5
  %705 = load ptr, ptr %18, align 8, !tbaa !5
  %706 = load i64, ptr %705, align 8, !tbaa !9
  %707 = load i64, ptr %42, align 8, !tbaa !9
  %708 = add nsw i64 %706, %707
  %709 = getelementptr inbounds double, ptr %704, i64 %708
  %710 = load double, ptr %709, align 8, !tbaa !11
  store double %710, ptr %39, align 8, !tbaa !11
  %711 = load double, ptr %39, align 8, !tbaa !11
  %712 = fcmp oge double %711, 0.000000e+00
  br i1 %712, label %713, label %715

713:                                              ; preds = %703
  %714 = load double, ptr %39, align 8, !tbaa !11
  br label %718

715:                                              ; preds = %703
  %716 = load double, ptr %39, align 8, !tbaa !11
  %717 = fneg double %716
  br label %718

718:                                              ; preds = %715, %713
  %719 = phi double [ %714, %713 ], [ %717, %715 ]
  %720 = load i64, ptr %49, align 8, !tbaa !9
  %721 = sitofp i64 %720 to double
  %722 = load double, ptr %50, align 8, !tbaa !11
  %723 = fmul double %721, %722
  %724 = load ptr, ptr %29, align 8, !tbaa !5
  %725 = load i64, ptr %42, align 8, !tbaa !9
  %726 = getelementptr inbounds double, ptr %724, i64 %725
  %727 = load double, ptr %726, align 8, !tbaa !11
  %728 = call double @llvm.fmuladd.f64(double %723, double %727, double %719)
  %729 = load double, ptr %52, align 8, !tbaa !11
  %730 = fadd double %728, %729
  %731 = load ptr, ptr %29, align 8, !tbaa !5
  %732 = load i64, ptr %42, align 8, !tbaa !9
  %733 = getelementptr inbounds double, ptr %731, i64 %732
  store double %730, ptr %733, align 8, !tbaa !11
  br label %734

734:                                              ; preds = %718, %689
  br label %735

735:                                              ; preds = %734
  %736 = load i64, ptr %42, align 8, !tbaa !9
  %737 = add nsw i64 %736, 1
  store i64 %737, ptr %42, align 8, !tbaa !9
  br label %663, !llvm.loop !21

738:                                              ; preds = %663
  store i64 0, ptr %51, align 8, !tbaa !9
  br label %739

739:                                              ; preds = %856, %738
  %740 = load ptr, ptr %18, align 8, !tbaa !5
  %741 = load ptr, ptr %29, align 8, !tbaa !5
  %742 = load ptr, ptr %18, align 8, !tbaa !5
  %743 = load i64, ptr %742, align 8, !tbaa !9
  %744 = shl i64 %743, 1
  %745 = add nsw i64 %744, 1
  %746 = getelementptr inbounds double, ptr %741, i64 %745
  %747 = load ptr, ptr %29, align 8, !tbaa !5
  %748 = load ptr, ptr %18, align 8, !tbaa !5
  %749 = load i64, ptr %748, align 8, !tbaa !9
  %750 = add nsw i64 %749, 1
  %751 = getelementptr inbounds double, ptr %747, i64 %750
  %752 = load ptr, ptr %30, align 8, !tbaa !5
  %753 = getelementptr inbounds i64, ptr %752, i64 1
  %754 = load ptr, ptr %27, align 8, !tbaa !5
  %755 = load i64, ptr %43, align 8, !tbaa !9
  %756 = getelementptr inbounds double, ptr %754, i64 %755
  %757 = getelementptr inbounds [3 x i64], ptr %54, i64 0, i64 0
  %758 = call i32 @dlacn2_(ptr noundef %740, ptr noundef %746, ptr noundef %751, ptr noundef %753, ptr noundef %756, ptr noundef %51, ptr noundef %757)
  %759 = load i64, ptr %51, align 8, !tbaa !9
  %760 = icmp ne i64 %759, 0
  br i1 %760, label %761, label %857

761:                                              ; preds = %739
  %762 = load i64, ptr %51, align 8, !tbaa !9
  %763 = icmp eq i64 %762, 1
  br i1 %763, label %764, label %808

764:                                              ; preds = %761
  %765 = load ptr, ptr %17, align 8, !tbaa !5
  %766 = load ptr, ptr %18, align 8, !tbaa !5
  %767 = load ptr, ptr %21, align 8, !tbaa !5
  %768 = getelementptr inbounds double, ptr %767, i64 1
  %769 = load ptr, ptr %22, align 8, !tbaa !5
  %770 = getelementptr inbounds i64, ptr %769, i64 1
  %771 = load ptr, ptr %29, align 8, !tbaa !5
  %772 = load ptr, ptr %18, align 8, !tbaa !5
  %773 = load i64, ptr %772, align 8, !tbaa !9
  %774 = add nsw i64 %773, 1
  %775 = getelementptr inbounds double, ptr %771, i64 %774
  %776 = load ptr, ptr %18, align 8, !tbaa !5
  %777 = load ptr, ptr %31, align 8, !tbaa !5
  %778 = call i32 @dsptrs_(ptr noundef %765, ptr noundef %766, ptr noundef @c__1, ptr noundef %768, ptr noundef %770, ptr noundef %775, ptr noundef %776, ptr noundef %777)
  %779 = load ptr, ptr %18, align 8, !tbaa !5
  %780 = load i64, ptr %779, align 8, !tbaa !9
  store i64 %780, ptr %37, align 8, !tbaa !9
  store i64 1, ptr %42, align 8, !tbaa !9
  br label %781

781:                                              ; preds = %804, %764
  %782 = load i64, ptr %42, align 8, !tbaa !9
  %783 = load i64, ptr %37, align 8, !tbaa !9
  %784 = icmp sle i64 %782, %783
  br i1 %784, label %785, label %807

785:                                              ; preds = %781
  %786 = load ptr, ptr %29, align 8, !tbaa !5
  %787 = load i64, ptr %42, align 8, !tbaa !9
  %788 = getelementptr inbounds double, ptr %786, i64 %787
  %789 = load double, ptr %788, align 8, !tbaa !11
  %790 = load ptr, ptr %29, align 8, !tbaa !5
  %791 = load ptr, ptr %18, align 8, !tbaa !5
  %792 = load i64, ptr %791, align 8, !tbaa !9
  %793 = load i64, ptr %42, align 8, !tbaa !9
  %794 = add nsw i64 %792, %793
  %795 = getelementptr inbounds double, ptr %790, i64 %794
  %796 = load double, ptr %795, align 8, !tbaa !11
  %797 = fmul double %789, %796
  %798 = load ptr, ptr %29, align 8, !tbaa !5
  %799 = load ptr, ptr %18, align 8, !tbaa !5
  %800 = load i64, ptr %799, align 8, !tbaa !9
  %801 = load i64, ptr %42, align 8, !tbaa !9
  %802 = add nsw i64 %800, %801
  %803 = getelementptr inbounds double, ptr %798, i64 %802
  store double %797, ptr %803, align 8, !tbaa !11
  br label %804

804:                                              ; preds = %785
  %805 = load i64, ptr %42, align 8, !tbaa !9
  %806 = add nsw i64 %805, 1
  store i64 %806, ptr %42, align 8, !tbaa !9
  br label %781, !llvm.loop !22

807:                                              ; preds = %781
  br label %856

808:                                              ; preds = %761
  %809 = load i64, ptr %51, align 8, !tbaa !9
  %810 = icmp eq i64 %809, 2
  br i1 %810, label %811, label %855

811:                                              ; preds = %808
  %812 = load ptr, ptr %18, align 8, !tbaa !5
  %813 = load i64, ptr %812, align 8, !tbaa !9
  store i64 %813, ptr %37, align 8, !tbaa !9
  store i64 1, ptr %42, align 8, !tbaa !9
  br label %814

814:                                              ; preds = %837, %811
  %815 = load i64, ptr %42, align 8, !tbaa !9
  %816 = load i64, ptr %37, align 8, !tbaa !9
  %817 = icmp sle i64 %815, %816
  br i1 %817, label %818, label %840

818:                                              ; preds = %814
  %819 = load ptr, ptr %29, align 8, !tbaa !5
  %820 = load i64, ptr %42, align 8, !tbaa !9
  %821 = getelementptr inbounds double, ptr %819, i64 %820
  %822 = load double, ptr %821, align 8, !tbaa !11
  %823 = load ptr, ptr %29, align 8, !tbaa !5
  %824 = load ptr, ptr %18, align 8, !tbaa !5
  %825 = load i64, ptr %824, align 8, !tbaa !9
  %826 = load i64, ptr %42, align 8, !tbaa !9
  %827 = add nsw i64 %825, %826
  %828 = getelementptr inbounds double, ptr %823, i64 %827
  %829 = load double, ptr %828, align 8, !tbaa !11
  %830 = fmul double %822, %829
  %831 = load ptr, ptr %29, align 8, !tbaa !5
  %832 = load ptr, ptr %18, align 8, !tbaa !5
  %833 = load i64, ptr %832, align 8, !tbaa !9
  %834 = load i64, ptr %42, align 8, !tbaa !9
  %835 = add nsw i64 %833, %834
  %836 = getelementptr inbounds double, ptr %831, i64 %835
  store double %830, ptr %836, align 8, !tbaa !11
  br label %837

837:                                              ; preds = %818
  %838 = load i64, ptr %42, align 8, !tbaa !9
  %839 = add nsw i64 %838, 1
  store i64 %839, ptr %42, align 8, !tbaa !9
  br label %814, !llvm.loop !23

840:                                              ; preds = %814
  %841 = load ptr, ptr %17, align 8, !tbaa !5
  %842 = load ptr, ptr %18, align 8, !tbaa !5
  %843 = load ptr, ptr %21, align 8, !tbaa !5
  %844 = getelementptr inbounds double, ptr %843, i64 1
  %845 = load ptr, ptr %22, align 8, !tbaa !5
  %846 = getelementptr inbounds i64, ptr %845, i64 1
  %847 = load ptr, ptr %29, align 8, !tbaa !5
  %848 = load ptr, ptr %18, align 8, !tbaa !5
  %849 = load i64, ptr %848, align 8, !tbaa !9
  %850 = add nsw i64 %849, 1
  %851 = getelementptr inbounds double, ptr %847, i64 %850
  %852 = load ptr, ptr %18, align 8, !tbaa !5
  %853 = load ptr, ptr %31, align 8, !tbaa !5
  %854 = call i32 @dsptrs_(ptr noundef %841, ptr noundef %842, ptr noundef @c__1, ptr noundef %844, ptr noundef %846, ptr noundef %851, ptr noundef %852, ptr noundef %853)
  br label %855

855:                                              ; preds = %840, %808
  br label %856

856:                                              ; preds = %855, %807
  br label %739

857:                                              ; preds = %739
  store double 0.000000e+00, ptr %58, align 8, !tbaa !11
  %858 = load ptr, ptr %18, align 8, !tbaa !5
  %859 = load i64, ptr %858, align 8, !tbaa !9
  store i64 %859, ptr %37, align 8, !tbaa !9
  store i64 1, ptr %42, align 8, !tbaa !9
  br label %860

860:                                              ; preds = %892, %857
  %861 = load i64, ptr %42, align 8, !tbaa !9
  %862 = load i64, ptr %37, align 8, !tbaa !9
  %863 = icmp sle i64 %861, %862
  br i1 %863, label %864, label %895

864:                                              ; preds = %860
  %865 = load double, ptr %58, align 8, !tbaa !11
  store double %865, ptr %40, align 8, !tbaa !11
  %866 = load ptr, ptr %25, align 8, !tbaa !5
  %867 = load i64, ptr %42, align 8, !tbaa !9
  %868 = load i64, ptr %43, align 8, !tbaa !9
  %869 = load i64, ptr %34, align 8, !tbaa !9
  %870 = mul nsw i64 %868, %869
  %871 = add nsw i64 %867, %870
  %872 = getelementptr inbounds double, ptr %866, i64 %871
  %873 = load double, ptr %872, align 8, !tbaa !11
  store double %873, ptr %39, align 8, !tbaa !11
  %874 = load double, ptr %39, align 8, !tbaa !11
  %875 = fcmp oge double %874, 0.000000e+00
  br i1 %875, label %876, label %878

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

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

881:                                              ; preds = %878, %876
  %882 = phi double [ %877, %876 ], [ %880, %878 ]
  store double %882, ptr %41, align 8, !tbaa !11
  %883 = load double, ptr %40, align 8, !tbaa !11
  %884 = load double, ptr %41, align 8, !tbaa !11
  %885 = fcmp oge double %883, %884
  br i1 %885, label %886, label %888

886:                                              ; preds = %881
  %887 = load double, ptr %40, align 8, !tbaa !11
  br label %890

888:                                              ; preds = %881
  %889 = load double, ptr %41, align 8, !tbaa !11
  br label %890

890:                                              ; preds = %888, %886
  %891 = phi double [ %887, %886 ], [ %889, %888 ]
  store double %891, ptr %58, align 8, !tbaa !11
  br label %892

892:                                              ; preds = %890
  %893 = load i64, ptr %42, align 8, !tbaa !9
  %894 = add nsw i64 %893, 1
  store i64 %894, ptr %42, align 8, !tbaa !9
  br label %860, !llvm.loop !24

895:                                              ; preds = %860
  %896 = load double, ptr %58, align 8, !tbaa !11
  %897 = fcmp une double %896, 0.000000e+00
  br i1 %897, label %898, label %905

898:                                              ; preds = %895
  %899 = load double, ptr %58, align 8, !tbaa !11
  %900 = load ptr, ptr %27, align 8, !tbaa !5
  %901 = load i64, ptr %43, align 8, !tbaa !9
  %902 = getelementptr inbounds double, ptr %900, i64 %901
  %903 = load double, ptr %902, align 8, !tbaa !11
  %904 = fdiv double %903, %899
  store double %904, ptr %902, align 8, !tbaa !11
  br label %905

905:                                              ; preds = %898, %895
  br label %906

906:                                              ; preds = %905
  %907 = load i64, ptr %43, align 8, !tbaa !9
  %908 = add nsw i64 %907, 1
  store i64 %908, ptr %43, align 8, !tbaa !9
  br label %197, !llvm.loop !25

909:                                              ; preds = %197
  store i32 0, ptr %16, align 4
  store i32 1, ptr %59, align 4
  br label %910

910:                                              ; preds = %909, %181, %151
  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 24, 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
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #4
  %911 = load i32, ptr %16, align 4
  ret i32 %911
}

; 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_dspmv(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 @dsptrs_(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 = distinct !{!15, !14}
!16 = distinct !{!16, !14}
!17 = distinct !{!17, !14}
!18 = distinct !{!18, !14}
!19 = distinct !{!19, !14}
!20 = distinct !{!20, !14}
!21 = distinct !{!21, !14}
!22 = distinct !{!22, !14}
!23 = distinct !{!23, !14}
!24 = distinct !{!24, !14}
!25 = distinct !{!25, !14}


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

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

34:                                               ; preds = %15
  %35 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #5
  %.not372 = icmp eq i64 %35, 0
  br i1 %.not372, label %.thread.sink.split, label %36

36:                                               ; preds = %34, %15
  %37 = load i64, ptr %1, align 8, !tbaa !5
  %38 = icmp slt i64 %37, 0
  br i1 %38, label %.thread.sink.split, label %39

39:                                               ; preds = %36
  %40 = load i64, ptr %2, align 8, !tbaa !5
  %41 = icmp slt i64 %40, 0
  br i1 %41, label %.thread.sink.split, label %42

42:                                               ; preds = %39
  %43 = load i64, ptr %7, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.umax.i64(i64 %37, i64 1)
  %44 = icmp slt i64 %43, %spec.select
  br i1 %44, label %.thread.sink.split, label %45

45:                                               ; preds = %42
  %46 = load i64, ptr %9, align 8, !tbaa !5
  %47 = icmp slt i64 %46, %spec.select
  br i1 %47, label %.thread.sink.split, label %48

48:                                               ; preds = %45
  %.pr = load i64, ptr %14, align 8, !tbaa !5
  %.not373 = icmp eq i64 %.pr, 0
  br i1 %.not373, label %52, label %.thread

.thread.sink.split:                               ; preds = %45, %42, %39, %36, %34
  %.sink = phi i64 [ -1, %34 ], [ -2, %36 ], [ -3, %39 ], [ -8, %42 ], [ -10, %45 ]
  store i64 %.sink, ptr %14, align 8, !tbaa !5
  br label %.thread

.thread:                                          ; preds = %.thread.sink.split, %48
  %49 = phi i64 [ %.pr, %48 ], [ %.sink, %.thread.sink.split ]
  %50 = sub nsw i64 0, %49
  store i64 %50, ptr %20, align 8, !tbaa !5
  %51 = call i32 @xerbla_(ptr noundef nonnull @.str.2, ptr noundef nonnull %20) #5
  br label %.loopexit

52:                                               ; preds = %48
  %53 = icmp eq i64 %37, 0
  %.not386468 = icmp eq i64 %40, 0
  br i1 %53, label %55, label %54

54:                                               ; preds = %52
  br i1 %.not386468, label %.loopexit, label %80

55:                                               ; preds = %52
  br i1 %.not386468, label %.loopexit, label %.lr.ph471.preheader

.lr.ph471.preheader:                              ; preds = %55
  %min.iters.check564 = icmp ult i64 %40, 4
  %56 = sub i64 %17, %16
  %diff.check561 = icmp ult i64 %56, 32
  %or.cond575 = or i1 %min.iters.check564, %diff.check561
  br i1 %or.cond575, label %.lr.ph471.preheader577, label %vector.ph565

vector.ph565:                                     ; preds = %.lr.ph471.preheader
  %n.vec567 = and i64 %40, 9223372036854775804
  %ind.end568 = or disjoint i64 %n.vec567, 1
  br label %vector.body570

vector.body570:                                   ; preds = %vector.body570, %vector.ph565
  %index571 = phi i64 [ 0, %vector.ph565 ], [ %index.next573, %vector.body570 ]
  %57 = getelementptr double, ptr %10, i64 %index571
  %58 = getelementptr inbounds i8, ptr %57, i64 16
  store <2 x double> zeroinitializer, ptr %57, align 8, !tbaa !9
  store <2 x double> zeroinitializer, ptr %58, align 8, !tbaa !9
  %59 = getelementptr double, ptr %11, i64 %index571
  %60 = getelementptr inbounds i8, ptr %59, i64 16
  store <2 x double> zeroinitializer, ptr %59, align 8, !tbaa !9
  store <2 x double> zeroinitializer, ptr %60, align 8, !tbaa !9
  %index.next573 = add nuw i64 %index571, 4
  %61 = icmp eq i64 %index.next573, %n.vec567
  br i1 %61, label %middle.block562, label %vector.body570, !llvm.loop !11

middle.block562:                                  ; preds = %vector.body570
  %cmp.n574 = icmp eq i64 %40, %n.vec567
  br i1 %cmp.n574, label %.loopexit, label %.lr.ph471.preheader577

.lr.ph471.preheader577:                           ; preds = %middle.block562, %.lr.ph471.preheader
  %.0357469.ph = phi i64 [ 1, %.lr.ph471.preheader ], [ %ind.end568, %middle.block562 ]
  %62 = add nuw i64 %40, 1
  %63 = sub i64 %62, %.0357469.ph
  %64 = sub i64 %40, %.0357469.ph
  %xtraiter588 = and i64 %63, 3
  %lcmp.mod589.not = icmp eq i64 %xtraiter588, 0
  br i1 %lcmp.mod589.not, label %.lr.ph471.prol.loopexit, label %.lr.ph471.prol

.lr.ph471.prol:                                   ; preds = %.lr.ph471.preheader577, %.lr.ph471.prol
  %.0357469.prol = phi i64 [ %67, %.lr.ph471.prol ], [ %.0357469.ph, %.lr.ph471.preheader577 ]
  %prol.iter = phi i64 [ %prol.iter.next, %.lr.ph471.prol ], [ 0, %.lr.ph471.preheader577 ]
  %65 = getelementptr inbounds double, ptr %30, i64 %.0357469.prol
  store double 0.000000e+00, ptr %65, align 8, !tbaa !9
  %66 = getelementptr inbounds double, ptr %31, i64 %.0357469.prol
  store double 0.000000e+00, ptr %66, align 8, !tbaa !9
  %67 = add nuw i64 %.0357469.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter588
  br i1 %prol.iter.cmp.not, label %.lr.ph471.prol.loopexit, label %.lr.ph471.prol, !llvm.loop !15

.lr.ph471.prol.loopexit:                          ; preds = %.lr.ph471.prol, %.lr.ph471.preheader577
  %.0357469.unr = phi i64 [ %.0357469.ph, %.lr.ph471.preheader577 ], [ %67, %.lr.ph471.prol ]
  %68 = icmp ult i64 %64, 3
  br i1 %68, label %.loopexit, label %.lr.ph471

.lr.ph471:                                        ; preds = %.lr.ph471.prol.loopexit, %.lr.ph471
  %.0357469 = phi i64 [ %79, %.lr.ph471 ], [ %.0357469.unr, %.lr.ph471.prol.loopexit ]
  %69 = getelementptr inbounds double, ptr %30, i64 %.0357469
  store double 0.000000e+00, ptr %69, align 8, !tbaa !9
  %70 = getelementptr inbounds double, ptr %31, i64 %.0357469
  store double 0.000000e+00, ptr %70, align 8, !tbaa !9
  %71 = getelementptr double, ptr %10, i64 %.0357469
  store double 0.000000e+00, ptr %71, align 8, !tbaa !9
  %72 = getelementptr double, ptr %11, i64 %.0357469
  store double 0.000000e+00, ptr %72, align 8, !tbaa !9
  %73 = add nuw i64 %.0357469, 2
  %74 = getelementptr inbounds double, ptr %30, i64 %73
  store double 0.000000e+00, ptr %74, align 8, !tbaa !9
  %75 = getelementptr inbounds double, ptr %31, i64 %73
  store double 0.000000e+00, ptr %75, align 8, !tbaa !9
  %76 = add nuw i64 %.0357469, 3
  %77 = getelementptr inbounds double, ptr %30, i64 %76
  store double 0.000000e+00, ptr %77, align 8, !tbaa !9
  %78 = getelementptr inbounds double, ptr %31, i64 %76
  store double 0.000000e+00, ptr %78, align 8, !tbaa !9
  %79 = add nuw i64 %.0357469, 4
  %exitcond487.not.3 = icmp eq i64 %76, %40
  br i1 %exitcond487.not.3, label %.loopexit, label %.lr.ph471, !llvm.loop !17

80:                                               ; preds = %54
  %81 = add nuw nsw i64 %37, 1
  %82 = tail call double @dlamch_(ptr noundef nonnull @.str.3) #5
  %83 = tail call double @dlamch_(ptr noundef nonnull @.str.4) #5
  %84 = uitofp nneg i64 %81 to double
  %85 = fmul double %83, %84
  %86 = fdiv double %85, %82
  %87 = load i64, ptr %2, align 8, !tbaa !5
  %invariant.gep464 = getelementptr i8, ptr %26, i64 8
  %.not374466 = icmp slt i64 %87, 1
  br i1 %.not374466, label %.loopexit, label %.preheader393.lr.ph

.preheader393.lr.ph:                              ; preds = %80
  %invariant.gep439 = getelementptr i8, ptr %29, i64 8
  %invariant.gep410 = getelementptr i8, ptr %3, i64 -16
  %88 = fmul double %82, %84
  %89 = sub i64 %19, %18
  %90 = mul i64 %24, -8
  %broadcast.splatinsert = insertelement <2 x double> poison, double %86, i64 0
  %broadcast.splat = shufflevector <2 x double> %broadcast.splatinsert, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert539 = insertelement <2 x double> poison, double %88, i64 0
  %broadcast.splat540 = shufflevector <2 x double> %broadcast.splatinsert539, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert541 = insertelement <2 x double> poison, double %85, i64 0
  %broadcast.splat542 = shufflevector <2 x double> %broadcast.splatinsert541, <2 x double> poison, <2 x i32> zeroinitializer
  br label %.preheader393

.preheader393:                                    ; preds = %.preheader393.lr.ph, %._crit_edge462.thread
  %indvar = phi i64 [ 0, %.preheader393.lr.ph ], [ %indvar.next, %._crit_edge462.thread ]
  %.1358467 = phi i64 [ 1, %.preheader393.lr.ph ], [ %328, %._crit_edge462.thread ]
  %91 = mul i64 %90, %indvar
  %92 = add i64 %89, %91
  %93 = getelementptr inbounds double, ptr %31, i64 %.1358467
  %94 = mul nsw i64 %.1358467, %24
  %gep465 = getelementptr double, ptr %invariant.gep464, i64 %94
  %95 = mul nsw i64 %.1358467, %27
  %gep440 = getelementptr double, ptr %invariant.gep439, i64 %95
  %invariant.gep = getelementptr double, ptr %26, i64 %94
  %invariant.gep408 = getelementptr double, ptr %29, i64 %95
  %diff.check = icmp ult i64 %92, 32
  br label %96

96:                                               ; preds = %.preheader393, %227
  %.0348 = phi i64 [ %234, %227 ], [ 1, %.preheader393 ]
  %.0 = phi double [ %233, %227 ], [ 3.000000e+00, %.preheader393 ]
  %97 = load i64, ptr %1, align 8, !tbaa !5
  %98 = getelementptr double, ptr %12, i64 %97
  %99 = call i32 @f2c_dcopy(ptr noundef nonnull %1, ptr noundef %gep465, ptr noundef nonnull @c__1, ptr noundef %98, ptr noundef nonnull @c__1) #5
  %100 = load i64, ptr %1, align 8, !tbaa !5
  %101 = getelementptr double, ptr %12, i64 %100
  %102 = call i32 @f2c_dspmv(ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull @c_b12, ptr noundef %3, ptr noundef %gep440, ptr noundef nonnull @c__1, ptr noundef nonnull @c_b14, ptr noundef %101, ptr noundef nonnull @c__1) #5
  %103 = load i64, ptr %1, align 8, !tbaa !5
  %.not375397 = icmp slt i64 %103, 1
  br i1 %.not375397, label %._crit_edge437, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %96
  %min.iters.check547 = icmp ult i64 %103, 4
  %or.cond576 = select i1 %min.iters.check547, i1 true, i1 %diff.check
  br i1 %or.cond576, label %.lr.ph.preheader579, label %vector.ph548

vector.ph548:                                     ; preds = %.lr.ph.preheader
  %n.vec550 = and i64 %103, 9223372036854775804
  %ind.end551 = or disjoint i64 %n.vec550, 1
  br label %vector.body553

vector.body553:                                   ; preds = %vector.body553, %vector.ph548
  %index554 = phi i64 [ 0, %vector.ph548 ], [ %index.next558, %vector.body553 ]
  %offset.idx555 = or disjoint i64 %index554, 1
  %104 = getelementptr double, ptr %invariant.gep, i64 %offset.idx555
  %105 = getelementptr i8, ptr %104, i64 16
  %wide.load556 = load <2 x double>, ptr %104, align 8, !tbaa !9
  %wide.load557 = load <2 x double>, ptr %105, align 8, !tbaa !9
  %106 = fcmp oge <2 x double> %wide.load556, zeroinitializer
  %107 = fcmp oge <2 x double> %wide.load557, zeroinitializer
  %108 = fneg <2 x double> %wide.load556
  %109 = fneg <2 x double> %wide.load557
  %110 = select <2 x i1> %106, <2 x double> %wide.load556, <2 x double> %108
  %111 = select <2 x i1> %107, <2 x double> %wide.load557, <2 x double> %109
  %112 = getelementptr double, ptr %12, i64 %index554
  %113 = getelementptr inbounds i8, ptr %112, i64 16
  store <2 x double> %110, ptr %112, align 8, !tbaa !9
  store <2 x double> %111, ptr %113, align 8, !tbaa !9
  %index.next558 = add nuw i64 %index554, 4
  %114 = icmp eq i64 %index.next558, %n.vec550
  br i1 %114, label %middle.block545, label %vector.body553, !llvm.loop !18

middle.block545:                                  ; preds = %vector.body553
  %cmp.n559 = icmp eq i64 %103, %n.vec550
  br i1 %cmp.n559, label %._crit_edge, label %.lr.ph.preheader579

.lr.ph.preheader579:                              ; preds = %middle.block545, %.lr.ph.preheader
  %.0359398.ph = phi i64 [ 1, %.lr.ph.preheader ], [ %ind.end551, %middle.block545 ]
  %xtraiter = and i64 %103, 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.preheader579
  %gep.prol = getelementptr double, ptr %invariant.gep, i64 %.0359398.ph
  %115 = load double, ptr %gep.prol, align 8, !tbaa !9
  %116 = fcmp oge double %115, 0.000000e+00
  %117 = fneg double %115
  %118 = select i1 %116, double %115, double %117
  %119 = getelementptr inbounds double, ptr %32, i64 %.0359398.ph
  store double %118, ptr %119, align 8, !tbaa !9
  %120 = add nuw i64 %.0359398.ph, 1
  br label %.lr.ph.prol.loopexit

.lr.ph.prol.loopexit:                             ; preds = %.lr.ph.prol, %.lr.ph.preheader579
  %.0359398.unr = phi i64 [ %.0359398.ph, %.lr.ph.preheader579 ], [ %120, %.lr.ph.prol ]
  %121 = icmp eq i64 %103, %.0359398.ph
  br i1 %121, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.prol.loopexit, %.lr.ph
  %.0359398 = phi i64 [ %133, %.lr.ph ], [ %.0359398.unr, %.lr.ph.prol.loopexit ]
  %gep = getelementptr double, ptr %invariant.gep, i64 %.0359398
  %122 = load double, ptr %gep, align 8, !tbaa !9
  %123 = fcmp oge double %122, 0.000000e+00
  %124 = fneg double %122
  %125 = select i1 %123, double %122, double %124
  %126 = getelementptr inbounds double, ptr %32, i64 %.0359398
  store double %125, ptr %126, align 8, !tbaa !9
  %127 = add nuw i64 %.0359398, 1
  %gep.1 = getelementptr double, ptr %invariant.gep, i64 %127
  %128 = load double, ptr %gep.1, align 8, !tbaa !9
  %129 = fcmp oge double %128, 0.000000e+00
  %130 = fneg double %128
  %131 = select i1 %129, double %128, double %130
  %132 = getelementptr double, ptr %12, i64 %.0359398
  store double %131, ptr %132, align 8, !tbaa !9
  %133 = add nuw i64 %.0359398, 2
  %exitcond.not.1 = icmp eq i64 %127, %103
  br i1 %exitcond.not.1, label %._crit_edge, label %.lr.ph, !llvm.loop !19

._crit_edge:                                      ; preds = %.lr.ph.prol.loopexit, %.lr.ph, %middle.block545
  br i1 %.not, label %.preheader, label %.preheader391

.preheader391:                                    ; preds = %._crit_edge
  br i1 %.not375397, label %._crit_edge437, label %.lr.ph415.preheader

.lr.ph415.preheader:                              ; preds = %.preheader391
  %134 = add nuw i64 %103, 1
  br label %.lr.ph415

.preheader:                                       ; preds = %._crit_edge
  br i1 %.not375397, label %._crit_edge437, label %.lr.ph431

.lr.ph431:                                        ; preds = %.preheader
  %135 = add nuw i64 %103, 1
  br label %169

.lr.ph415:                                        ; preds = %.lr.ph415.preheader, %._crit_edge407
  %indvars.iv477 = phi i64 [ 1, %.lr.ph415.preheader ], [ %indvars.iv.next478, %._crit_edge407 ]
  %indvars.iv = phi i64 [ 2, %.lr.ph415.preheader ], [ %indvars.iv.next, %._crit_edge407 ]
  %.0349414 = phi i64 [ 1, %.lr.ph415.preheader ], [ %161, %._crit_edge407 ]
  %.0355413 = phi i64 [ 1, %.lr.ph415.preheader ], [ %168, %._crit_edge407 ]
  %gep409 = getelementptr double, ptr %invariant.gep408, i64 %.0355413
  %136 = load double, ptr %gep409, align 8, !tbaa !9
  %137 = fcmp oge double %136, 0.000000e+00
  %138 = fneg double %136
  %139 = select i1 %137, double %136, double %138
  %.not385.not401 = icmp ugt i64 %.0355413, 1
  br i1 %.not385.not401, label %.lr.ph406, label %._crit_edge407

.lr.ph406:                                        ; preds = %.lr.ph415, %.lr.ph406
  %.0351404 = phi i64 [ %157, %.lr.ph406 ], [ %.0349414, %.lr.ph415 ]
  %.0353403 = phi double [ %156, %.lr.ph406 ], [ 0.000000e+00, %.lr.ph415 ]
  %.1360402 = phi i64 [ %158, %.lr.ph406 ], [ 1, %.lr.ph415 ]
  %140 = getelementptr inbounds double, ptr %23, i64 %.0351404
  %141 = load double, ptr %140, align 8, !tbaa !9
  %142 = fcmp oge double %141, 0.000000e+00
  %143 = fneg double %141
  %144 = select i1 %142, double %141, double %143
  %145 = getelementptr inbounds double, ptr %32, i64 %.1360402
  %146 = load double, ptr %145, align 8, !tbaa !9
  %147 = call double @llvm.fmuladd.f64(double %144, double %139, double %146)
  store double %147, ptr %145, align 8, !tbaa !9
  %148 = load double, ptr %140, align 8, !tbaa !9
  %149 = fcmp oge double %148, 0.000000e+00
  %150 = fneg double %148
  %151 = select i1 %149, double %148, double %150
  %gep400 = getelementptr double, ptr %invariant.gep408, i64 %.1360402
  %152 = load double, ptr %gep400, align 8, !tbaa !9
  %153 = fcmp oge double %152, 0.000000e+00
  %154 = fneg double %152
  %155 = select i1 %153, double %152, double %154
  %156 = call double @llvm.fmuladd.f64(double %151, double %155, double %.0353403)
  %157 = add i64 %.0351404, 1
  %158 = add nuw nsw i64 %.1360402, 1
  %exitcond479.not = icmp eq i64 %157, %indvars.iv477
  br i1 %exitcond479.not, label %._crit_edge407, label %.lr.ph406, !llvm.loop !20

._crit_edge407:                                   ; preds = %.lr.ph406, %.lr.ph415
  %.0353.lcssa = phi double [ 0.000000e+00, %.lr.ph415 ], [ %156, %.lr.ph406 ]
  %159 = getelementptr inbounds double, ptr %32, i64 %.0355413
  %160 = load double, ptr %159, align 8, !tbaa !9
  %161 = add nuw nsw i64 %.0349414, %.0355413
  %gep411 = getelementptr double, ptr %invariant.gep410, i64 %161
  %162 = load double, ptr %gep411, align 8, !tbaa !9
  %163 = fcmp oge double %162, 0.000000e+00
  %164 = fneg double %162
  %165 = select i1 %163, double %162, double %164
  %166 = call double @llvm.fmuladd.f64(double %165, double %139, double %160)
  %167 = fadd double %.0353.lcssa, %166
  store double %167, ptr %159, align 8, !tbaa !9
  %168 = add nuw nsw i64 %.0355413, 1
  %indvars.iv.next = add nuw i64 %indvars.iv, 1
  %indvars.iv.next478 = add i64 %indvars.iv477, %indvars.iv
  %exitcond480.not = icmp eq i64 %indvars.iv, %134
  br i1 %exitcond480.not, label %.loopexit390, label %.lr.ph415, !llvm.loop !21

169:                                              ; preds = %.lr.ph431, %._crit_edge424
  %.1350430 = phi i64 [ 1, %.lr.ph431 ], [ %204, %._crit_edge424 ]
  %.1356429 = phi i64 [ 1, %.lr.ph431 ], [ %182, %._crit_edge424 ]
  %gep427 = getelementptr double, ptr %invariant.gep408, i64 %.1356429
  %170 = load double, ptr %gep427, align 8, !tbaa !9
  %171 = fcmp oge double %170, 0.000000e+00
  %172 = fneg double %170
  %173 = select i1 %171, double %170, double %172
  %174 = getelementptr inbounds double, ptr %23, i64 %.1350430
  %175 = load double, ptr %174, align 8, !tbaa !9
  %176 = fcmp oge double %175, 0.000000e+00
  %177 = fneg double %175
  %178 = select i1 %176, double %175, double %177
  %179 = getelementptr inbounds double, ptr %32, i64 %.1356429
  %180 = load double, ptr %179, align 8, !tbaa !9
  %181 = call double @llvm.fmuladd.f64(double %178, double %173, double %180)
  store double %181, ptr %179, align 8, !tbaa !9
  %182 = add nuw i64 %.1356429, 1
  %.not377418.not = icmp slt i64 %.1356429, %103
  br i1 %.not377418.not, label %.lr.ph423, label %._crit_edge424

.lr.ph423:                                        ; preds = %169, %.lr.ph423
  %.1352.in421 = phi i64 [ %.1352, %.lr.ph423 ], [ %.1350430, %169 ]
  %.1354420 = phi double [ %199, %.lr.ph423 ], [ 0.000000e+00, %169 ]
  %.2361419 = phi i64 [ %200, %.lr.ph423 ], [ %182, %169 ]
  %.1352 = add nsw i64 %.1352.in421, 1
  %183 = getelementptr double, ptr %3, i64 %.1352.in421
  %184 = load double, ptr %183, align 8, !tbaa !9
  %185 = fcmp oge double %184, 0.000000e+00
  %186 = fneg double %184
  %187 = select i1 %185, double %184, double %186
  %188 = getelementptr inbounds double, ptr %32, i64 %.2361419
  %189 = load double, ptr %188, align 8, !tbaa !9
  %190 = call double @llvm.fmuladd.f64(double %187, double %173, double %189)
  store double %190, ptr %188, align 8, !tbaa !9
  %191 = load double, ptr %183, align 8, !tbaa !9
  %192 = fcmp oge double %191, 0.000000e+00
  %193 = fneg double %191
  %194 = select i1 %192, double %191, double %193
  %gep417 = getelementptr double, ptr %invariant.gep408, i64 %.2361419
  %195 = load double, ptr %gep417, align 8, !tbaa !9
  %196 = fcmp oge double %195, 0.000000e+00
  %197 = fneg double %195
  %198 = select i1 %196, double %195, double %197
  %199 = call double @llvm.fmuladd.f64(double %194, double %198, double %.1354420)
  %200 = add nuw nsw i64 %.2361419, 1
  %.not377.not = icmp slt i64 %.2361419, %103
  br i1 %.not377.not, label %.lr.ph423, label %._crit_edge424.loopexit, !llvm.loop !22

._crit_edge424.loopexit:                          ; preds = %.lr.ph423
  %.pre = load double, ptr %179, align 8, !tbaa !9
  br label %._crit_edge424

._crit_edge424:                                   ; preds = %._crit_edge424.loopexit, %169
  %201 = phi double [ %181, %169 ], [ %.pre, %._crit_edge424.loopexit ]
  %.1354.lcssa = phi double [ 0.000000e+00, %169 ], [ %199, %._crit_edge424.loopexit ]
  %202 = fadd double %.1354.lcssa, %201
  store double %202, ptr %179, align 8, !tbaa !9
  %203 = sub i64 %135, %.1356429
  %204 = add nsw i64 %203, %.1350430
  %exitcond481.not = icmp eq i64 %.1356429, %103
  br i1 %exitcond481.not, label %.loopexit390, label %169, !llvm.loop !23

.loopexit390:                                     ; preds = %._crit_edge407, %._crit_edge424
  br i1 %.not375397, label %._crit_edge437, label %.lr.ph436

.lr.ph436:                                        ; preds = %.loopexit390
  %205 = getelementptr double, ptr %32, i64 %103
  br label %206

206:                                              ; preds = %.lr.ph436, %206
  %.2434 = phi double [ 0.000000e+00, %.lr.ph436 ], [ %220, %206 ]
  %.3362433 = phi i64 [ 1, %.lr.ph436 ], [ %221, %206 ]
  %207 = getelementptr inbounds double, ptr %32, i64 %.3362433
  %208 = load double, ptr %207, align 8, !tbaa !9
  %209 = fcmp ogt double %208, %86
  %210 = getelementptr double, ptr %205, i64 %.3362433
  %211 = load double, ptr %210, align 8, !tbaa !9
  %212 = fcmp oge double %211, 0.000000e+00
  %213 = fneg double %211
  %214 = select i1 %212, double %211, double %213
  %215 = fdiv double %214, %208
  %216 = fadd double %85, %214
  %217 = fadd double %85, %208
  %218 = fdiv double %216, %217
  %.sink499 = select i1 %209, double %215, double %218
  %219 = fcmp oge double %.2434, %.sink499
  %220 = select i1 %219, double %.2434, double %.sink499
  %221 = add nuw i64 %.3362433, 1
  %exitcond482.not = icmp eq i64 %.3362433, %103
  br i1 %exitcond482.not, label %._crit_edge437, label %206, !llvm.loop !24

._crit_edge437:                                   ; preds = %206, %96, %.preheader, %.preheader391, %.loopexit390
  %.2.lcssa = phi double [ 0.000000e+00, %.loopexit390 ], [ 0.000000e+00, %.preheader391 ], [ 0.000000e+00, %.preheader ], [ 0.000000e+00, %96 ], [ %220, %206 ]
  store double %.2.lcssa, ptr %93, align 8, !tbaa !9
  %222 = fcmp ogt double %.2.lcssa, %82
  br i1 %222, label %223, label %235

223:                                              ; preds = %._crit_edge437
  %224 = fmul double %.2.lcssa, 2.000000e+00
  %225 = fcmp ole double %224, %.0
  %226 = icmp ult i64 %.0348, 6
  %or.cond = select i1 %225, i1 %226, i1 false
  br i1 %or.cond, label %227, label %235

227:                                              ; preds = %223
  %228 = getelementptr double, ptr %12, i64 %103
  %229 = call i32 @dsptrs_(ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull @c__1, ptr noundef %4, ptr noundef %5, ptr noundef %228, ptr noundef nonnull %1, ptr noundef nonnull %14) #5
  %230 = load i64, ptr %1, align 8, !tbaa !5
  %231 = getelementptr double, ptr %12, i64 %230
  %232 = call i32 @f2c_daxpy(ptr noundef nonnull %1, ptr noundef nonnull @c_b14, ptr noundef %231, ptr noundef nonnull @c__1, ptr noundef %gep440, ptr noundef nonnull @c__1) #5
  %233 = load double, ptr %93, align 8, !tbaa !9
  %234 = add nuw nsw i64 %.0348, 1
  br label %96

235:                                              ; preds = %223, %._crit_edge437
  br i1 %.not375397, label %._crit_edge445, label %.lr.ph444

.lr.ph444:                                        ; preds = %235
  %236 = getelementptr double, ptr %32, i64 %103
  %min.iters.check528 = icmp eq i64 %103, 1
  br i1 %min.iters.check528, label %scalar.ph527.preheader, label %vector.ph529

vector.ph529:                                     ; preds = %.lr.ph444
  %n.vec531 = and i64 %103, 9223372036854775806
  %ind.end532 = or i64 %103, 1
  br label %vector.body534

vector.body534:                                   ; preds = %vector.body534, %vector.ph529
  %index535 = phi i64 [ 0, %vector.ph529 ], [ %index.next543, %vector.body534 ]
  %offset.idx536 = or disjoint i64 %index535, 1
  %237 = getelementptr double, ptr %12, i64 %index535
  %wide.load537 = load <2 x double>, ptr %237, align 8, !tbaa !9
  %238 = fcmp ogt <2 x double> %wide.load537, %broadcast.splat
  %239 = getelementptr double, ptr %236, i64 %offset.idx536
  %wide.load538 = load <2 x double>, ptr %239, align 8, !tbaa !9
  %240 = fcmp oge <2 x double> %wide.load538, zeroinitializer
  %241 = fneg <2 x double> %wide.load538
  %242 = select <2 x i1> %240, <2 x double> %wide.load538, <2 x double> %241
  %243 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat540, <2 x double> %wide.load537, <2 x double> %242)
  %244 = fadd <2 x double> %broadcast.splat542, %243
  %245 = select <2 x i1> %238, <2 x double> %243, <2 x double> %244
  store <2 x double> %245, ptr %237, align 8, !tbaa !9
  %index.next543 = add nuw i64 %index535, 2
  %246 = icmp eq i64 %index.next543, %n.vec531
  br i1 %246, label %middle.block526, label %vector.body534, !llvm.loop !25

middle.block526:                                  ; preds = %vector.body534
  %cmp.n544 = icmp eq i64 %103, %n.vec531
  br i1 %cmp.n544, label %._crit_edge445, label %scalar.ph527.preheader

scalar.ph527.preheader:                           ; preds = %middle.block526, %.lr.ph444
  %.4442.ph = phi i64 [ 1, %.lr.ph444 ], [ %ind.end532, %middle.block526 ]
  br label %scalar.ph527

scalar.ph527:                                     ; preds = %scalar.ph527.preheader, %scalar.ph527
  %.4442 = phi i64 [ %257, %scalar.ph527 ], [ %.4442.ph, %scalar.ph527.preheader ]
  %247 = getelementptr inbounds double, ptr %32, i64 %.4442
  %248 = load double, ptr %247, align 8, !tbaa !9
  %249 = fcmp ogt double %248, %86
  %250 = getelementptr double, ptr %236, i64 %.4442
  %251 = load double, ptr %250, align 8, !tbaa !9
  %252 = fcmp oge double %251, 0.000000e+00
  %253 = fneg double %251
  %254 = select i1 %252, double %251, double %253
  %255 = call double @llvm.fmuladd.f64(double %88, double %248, double %254)
  %256 = fadd double %85, %255
  %storemerge = select i1 %249, double %255, double %256
  store double %storemerge, ptr %247, align 8, !tbaa !9
  %257 = add nuw i64 %.4442, 1
  %exitcond483.not = icmp eq i64 %.4442, %103
  br i1 %exitcond483.not, label %._crit_edge445, label %scalar.ph527, !llvm.loop !26

._crit_edge445:                                   ; preds = %scalar.ph527, %middle.block526, %235
  store i64 0, ptr %21, align 8, !tbaa !5
  %258 = getelementptr inbounds double, ptr %30, i64 %.1358467
  br label %259

259:                                              ; preds = %.loopexit389, %._crit_edge445
  %260 = phi i64 [ %.pre488, %.loopexit389 ], [ %103, %._crit_edge445 ]
  %.idx = shl i64 %260, 4
  %261 = getelementptr i8, ptr %12, i64 %.idx
  %262 = getelementptr double, ptr %12, i64 %260
  %263 = call i32 @dlacn2_(ptr noundef nonnull %1, ptr noundef %261, ptr noundef %262, ptr noundef %13, ptr noundef nonnull %258, ptr noundef nonnull %21, ptr noundef nonnull %22) #5
  %264 = load i64, ptr %21, align 8, !tbaa !5
  switch i64 %264, label %.loopexit389 [
    i64 0, label %302
    i64 1, label %265
    i64 2, label %284
  ]

265:                                              ; preds = %259
  %266 = load i64, ptr %1, align 8, !tbaa !5
  %267 = getelementptr double, ptr %12, i64 %266
  %268 = call i32 @dsptrs_(ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull @c__1, ptr noundef %4, ptr noundef %5, ptr noundef %267, ptr noundef nonnull %1, ptr noundef nonnull %14) #5
  %269 = load i64, ptr %1, align 8, !tbaa !5
  %.not384451 = icmp slt i64 %269, 1
  br i1 %.not384451, label %.loopexit389, label %.lr.ph454

.lr.ph454:                                        ; preds = %265
  %270 = getelementptr double, ptr %32, i64 %269
  %min.iters.check = icmp ult i64 %269, 4
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %.lr.ph454
  %n.vec = and i64 %269, 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
  %271 = getelementptr double, ptr %12, i64 %index
  %272 = getelementptr inbounds i8, ptr %271, i64 16
  %wide.load = load <2 x double>, ptr %271, align 8, !tbaa !9
  %wide.load506 = load <2 x double>, ptr %272, align 8, !tbaa !9
  %273 = getelementptr double, ptr %270, i64 %offset.idx
  %274 = getelementptr i8, ptr %273, i64 16
  %wide.load507 = load <2 x double>, ptr %273, align 8, !tbaa !9
  %wide.load508 = load <2 x double>, ptr %274, align 8, !tbaa !9
  %275 = fmul <2 x double> %wide.load, %wide.load507
  %276 = fmul <2 x double> %wide.load506, %wide.load508
  store <2 x double> %275, ptr %273, align 8, !tbaa !9
  store <2 x double> %276, ptr %274, align 8, !tbaa !9
  %index.next = add nuw i64 %index, 4
  %277 = icmp eq i64 %index.next, %n.vec
  br i1 %277, label %middle.block, label %vector.body, !llvm.loop !27

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

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

scalar.ph:                                        ; preds = %scalar.ph.preheader, %scalar.ph
  %.5452 = phi i64 [ %283, %scalar.ph ], [ %.5452.ph, %scalar.ph.preheader ]
  %278 = getelementptr inbounds double, ptr %32, i64 %.5452
  %279 = load double, ptr %278, align 8, !tbaa !9
  %280 = getelementptr double, ptr %270, i64 %.5452
  %281 = load double, ptr %280, align 8, !tbaa !9
  %282 = fmul double %279, %281
  store double %282, ptr %280, align 8, !tbaa !9
  %283 = add nuw i64 %.5452, 1
  %exitcond485.not = icmp eq i64 %.5452, %269
  br i1 %exitcond485.not, label %.loopexit389, label %scalar.ph, !llvm.loop !28

284:                                              ; preds = %259
  %285 = load i64, ptr %1, align 8, !tbaa !5
  %.not383446 = icmp slt i64 %285, 1
  br i1 %.not383446, label %._crit_edge450, label %.lr.ph449

.lr.ph449:                                        ; preds = %284
  %286 = getelementptr double, ptr %32, i64 %285
  %min.iters.check511 = icmp ult i64 %285, 4
  br i1 %min.iters.check511, label %scalar.ph510.preheader, label %vector.ph512

vector.ph512:                                     ; preds = %.lr.ph449
  %n.vec514 = and i64 %285, 9223372036854775804
  %ind.end515 = or disjoint i64 %n.vec514, 1
  br label %vector.body517

vector.body517:                                   ; preds = %vector.body517, %vector.ph512
  %index518 = phi i64 [ 0, %vector.ph512 ], [ %index.next524, %vector.body517 ]
  %offset.idx519 = or disjoint i64 %index518, 1
  %287 = getelementptr double, ptr %12, i64 %index518
  %288 = getelementptr inbounds i8, ptr %287, i64 16
  %wide.load520 = load <2 x double>, ptr %287, align 8, !tbaa !9
  %wide.load521 = load <2 x double>, ptr %288, align 8, !tbaa !9
  %289 = getelementptr double, ptr %286, i64 %offset.idx519
  %290 = getelementptr i8, ptr %289, i64 16
  %wide.load522 = load <2 x double>, ptr %289, align 8, !tbaa !9
  %wide.load523 = load <2 x double>, ptr %290, align 8, !tbaa !9
  %291 = fmul <2 x double> %wide.load520, %wide.load522
  %292 = fmul <2 x double> %wide.load521, %wide.load523
  store <2 x double> %291, ptr %289, align 8, !tbaa !9
  store <2 x double> %292, ptr %290, align 8, !tbaa !9
  %index.next524 = add nuw i64 %index518, 4
  %293 = icmp eq i64 %index.next524, %n.vec514
  br i1 %293, label %middle.block509, label %vector.body517, !llvm.loop !29

middle.block509:                                  ; preds = %vector.body517
  %cmp.n525 = icmp eq i64 %285, %n.vec514
  br i1 %cmp.n525, label %._crit_edge450, label %scalar.ph510.preheader

scalar.ph510.preheader:                           ; preds = %middle.block509, %.lr.ph449
  %.6447.ph = phi i64 [ 1, %.lr.ph449 ], [ %ind.end515, %middle.block509 ]
  br label %scalar.ph510

scalar.ph510:                                     ; preds = %scalar.ph510.preheader, %scalar.ph510
  %.6447 = phi i64 [ %299, %scalar.ph510 ], [ %.6447.ph, %scalar.ph510.preheader ]
  %294 = getelementptr inbounds double, ptr %32, i64 %.6447
  %295 = load double, ptr %294, align 8, !tbaa !9
  %296 = getelementptr double, ptr %286, i64 %.6447
  %297 = load double, ptr %296, align 8, !tbaa !9
  %298 = fmul double %295, %297
  store double %298, ptr %296, align 8, !tbaa !9
  %299 = add nuw i64 %.6447, 1
  %exitcond484.not = icmp eq i64 %.6447, %285
  br i1 %exitcond484.not, label %._crit_edge450, label %scalar.ph510, !llvm.loop !30

._crit_edge450:                                   ; preds = %scalar.ph510, %middle.block509, %284
  %300 = getelementptr double, ptr %12, i64 %285
  %301 = call i32 @dsptrs_(ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull @c__1, ptr noundef %4, ptr noundef %5, ptr noundef %300, ptr noundef nonnull %1, ptr noundef nonnull %14) #5
  br label %.loopexit389

.loopexit389:                                     ; preds = %scalar.ph, %middle.block, %265, %259, %._crit_edge450
  %.pre488 = load i64, ptr %1, align 8, !tbaa !5
  br label %259

302:                                              ; preds = %259
  %303 = load i64, ptr %1, align 8, !tbaa !5
  %.not382457 = icmp slt i64 %303, 1
  br i1 %.not382457, label %._crit_edge462.thread, label %.lr.ph461.preheader

.lr.ph461.preheader:                              ; preds = %302
  %xtraiter585 = and i64 %303, 1
  %304 = icmp eq i64 %303, 1
  br i1 %304, label %._crit_edge462.unr-lcssa, label %.lr.ph461.preheader.new

.lr.ph461.preheader.new:                          ; preds = %.lr.ph461.preheader
  %unroll_iter = and i64 %303, 9223372036854775806
  %invariant.gep596 = getelementptr i8, ptr %invariant.gep408, i64 8
  br label %.lr.ph461

.lr.ph461:                                        ; preds = %.lr.ph461, %.lr.ph461.preheader.new
  %.1459 = phi double [ 0.000000e+00, %.lr.ph461.preheader.new ], [ %316, %.lr.ph461 ]
  %.7458 = phi i64 [ 1, %.lr.ph461.preheader.new ], [ %317, %.lr.ph461 ]
  %niter = phi i64 [ 0, %.lr.ph461.preheader.new ], [ %niter.next.1, %.lr.ph461 ]
  %gep456 = getelementptr double, ptr %invariant.gep408, i64 %.7458
  %305 = load double, ptr %gep456, align 8, !tbaa !9
  %306 = fcmp oge double %305, 0.000000e+00
  %307 = fneg double %305
  %308 = select i1 %306, double %305, double %307
  %309 = fcmp oge double %.1459, %308
  %310 = select i1 %309, double %.1459, double %308
  %gep597 = getelementptr double, ptr %invariant.gep596, i64 %.7458
  %311 = load double, ptr %gep597, align 8, !tbaa !9
  %312 = fcmp oge double %311, 0.000000e+00
  %313 = fneg double %311
  %314 = select i1 %312, double %311, double %313
  %315 = fcmp oge double %310, %314
  %316 = select i1 %315, double %310, double %314
  %317 = add nuw i64 %.7458, 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_edge462.unr-lcssa, label %.lr.ph461, !llvm.loop !31

._crit_edge462.unr-lcssa:                         ; preds = %.lr.ph461, %.lr.ph461.preheader
  %.lcssa584.ph = phi double [ poison, %.lr.ph461.preheader ], [ %316, %.lr.ph461 ]
  %.1459.unr = phi double [ 0.000000e+00, %.lr.ph461.preheader ], [ %316, %.lr.ph461 ]
  %.7458.unr = phi i64 [ 1, %.lr.ph461.preheader ], [ %317, %.lr.ph461 ]
  %lcmp.mod586.not = icmp eq i64 %xtraiter585, 0
  br i1 %lcmp.mod586.not, label %._crit_edge462, label %.lr.ph461.epil

.lr.ph461.epil:                                   ; preds = %._crit_edge462.unr-lcssa
  %gep456.epil = getelementptr double, ptr %invariant.gep408, i64 %.7458.unr
  %318 = load double, ptr %gep456.epil, align 8, !tbaa !9
  %319 = fcmp oge double %318, 0.000000e+00
  %320 = fneg double %318
  %321 = select i1 %319, double %318, double %320
  %322 = fcmp oge double %.1459.unr, %321
  %323 = select i1 %322, double %.1459.unr, double %321
  br label %._crit_edge462

._crit_edge462:                                   ; preds = %._crit_edge462.unr-lcssa, %.lr.ph461.epil
  %.lcssa584 = phi double [ %.lcssa584.ph, %._crit_edge462.unr-lcssa ], [ %323, %.lr.ph461.epil ]
  %324 = fcmp une double %.lcssa584, 0.000000e+00
  br i1 %324, label %325, label %._crit_edge462.thread

325:                                              ; preds = %._crit_edge462
  %326 = load double, ptr %258, align 8, !tbaa !9
  %327 = fdiv double %326, %.lcssa584
  store double %327, ptr %258, align 8, !tbaa !9
  br label %._crit_edge462.thread

._crit_edge462.thread:                            ; preds = %302, %._crit_edge462, %325
  %328 = add nuw nsw i64 %.1358467, 1
  %.not374.not = icmp slt i64 %.1358467, %87
  %indvar.next = add i64 %indvar, 1
  br i1 %.not374.not, label %.preheader393, label %.loopexit, !llvm.loop !32

.loopexit:                                        ; preds = %._crit_edge462.thread, %.lr.ph471.prol.loopexit, %.lr.ph471, %middle.block562, %54, %80, %55, %.thread
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %22) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #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_dspmv(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 @dsptrs_(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 = distinct !{!18, !12, !13, !14}
!19 = distinct !{!19, !12, !13}
!20 = distinct !{!20, !12}
!21 = distinct !{!21, !12}
!22 = distinct !{!22, !12}
!23 = distinct !{!23, !12}
!24 = distinct !{!24, !12}
!25 = distinct !{!25, !12, !13, !14}
!26 = distinct !{!26, !12, !14, !13}
!27 = distinct !{!27, !12, !13, !14}
!28 = distinct !{!28, !12, !14, !13}
!29 = distinct !{!29, !12, !13, !14}
!30 = distinct !{!30, !12, !14, !13}
!31 = distinct !{!31, !12}
!32 = distinct !{!32, !12}


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