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

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

91:                                               ; preds = %14
  %92 = load ptr, ptr %16, align 8, !tbaa !5
  %93 = call i64 @lsame_(ptr noundef %92, ptr noundef @.str.1)
  %94 = icmp ne i64 %93, 0
  br i1 %94, label %97, label %95

95:                                               ; preds = %91
  %96 = load ptr, ptr %29, align 8, !tbaa !5
  store i64 -1, ptr %96, align 8, !tbaa !9
  br label %143

97:                                               ; preds = %91, %14
  %98 = load ptr, ptr %17, align 8, !tbaa !5
  %99 = load i64, ptr %98, align 8, !tbaa !9
  %100 = icmp slt i64 %99, 0
  br i1 %100, label %101, label %103

101:                                              ; preds = %97
  %102 = load ptr, ptr %29, align 8, !tbaa !5
  store i64 -2, ptr %102, align 8, !tbaa !9
  br label %142

103:                                              ; preds = %97
  %104 = load ptr, ptr %18, align 8, !tbaa !5
  %105 = load i64, ptr %104, align 8, !tbaa !9
  %106 = icmp slt i64 %105, 0
  br i1 %106, label %107, label %109

107:                                              ; preds = %103
  %108 = load ptr, ptr %29, align 8, !tbaa !5
  store i64 -3, ptr %108, align 8, !tbaa !9
  br label %141

109:                                              ; preds = %103
  %110 = load ptr, ptr %22, align 8, !tbaa !5
  %111 = load i64, ptr %110, align 8, !tbaa !9
  %112 = load ptr, ptr %17, align 8, !tbaa !5
  %113 = load i64, ptr %112, align 8, !tbaa !9
  %114 = icmp sge i64 1, %113
  br i1 %114, label %115, label %116

115:                                              ; preds = %109
  br label %119

116:                                              ; preds = %109
  %117 = load ptr, ptr %17, align 8, !tbaa !5
  %118 = load i64, ptr %117, align 8, !tbaa !9
  br label %119

119:                                              ; preds = %116, %115
  %120 = phi i64 [ 1, %115 ], [ %118, %116 ]
  %121 = icmp slt i64 %111, %120
  br i1 %121, label %122, label %124

122:                                              ; preds = %119
  %123 = load ptr, ptr %29, align 8, !tbaa !5
  store i64 -7, ptr %123, align 8, !tbaa !9
  br label %140

124:                                              ; preds = %119
  %125 = load ptr, ptr %24, align 8, !tbaa !5
  %126 = load i64, ptr %125, align 8, !tbaa !9
  %127 = load ptr, ptr %17, align 8, !tbaa !5
  %128 = load i64, ptr %127, align 8, !tbaa !9
  %129 = icmp sge i64 1, %128
  br i1 %129, label %130, label %131

130:                                              ; preds = %124
  br label %134

131:                                              ; preds = %124
  %132 = load ptr, ptr %17, align 8, !tbaa !5
  %133 = load i64, ptr %132, align 8, !tbaa !9
  br label %134

134:                                              ; preds = %131, %130
  %135 = phi i64 [ 1, %130 ], [ %133, %131 ]
  %136 = icmp slt i64 %126, %135
  br i1 %136, label %137, label %139

137:                                              ; preds = %134
  %138 = load ptr, ptr %29, align 8, !tbaa !5
  store i64 -9, ptr %138, align 8, !tbaa !9
  br label %139

139:                                              ; preds = %137, %134
  br label %140

140:                                              ; preds = %139, %122
  br label %141

141:                                              ; preds = %140, %107
  br label %142

142:                                              ; preds = %141, %101
  br label %143

143:                                              ; preds = %142, %95
  %144 = load ptr, ptr %29, align 8, !tbaa !5
  %145 = load i64, ptr %144, align 8, !tbaa !9
  %146 = icmp ne i64 %145, 0
  br i1 %146, label %147, label %152

147:                                              ; preds = %143
  %148 = load ptr, ptr %29, align 8, !tbaa !5
  %149 = load i64, ptr %148, align 8, !tbaa !9
  %150 = sub nsw i64 0, %149
  store i64 %150, ptr %34, align 8, !tbaa !9
  %151 = call i32 @xerbla_(ptr noundef @.str.2, ptr noundef %34)
  store i32 0, ptr %15, align 4
  store i32 1, ptr %57, align 4
  br label %900

152:                                              ; preds = %143
  %153 = load ptr, ptr %17, align 8, !tbaa !5
  %154 = load i64, ptr %153, align 8, !tbaa !9
  %155 = icmp eq i64 %154, 0
  br i1 %155, label %160, label %156

156:                                              ; preds = %152
  %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 %160, label %178

160:                                              ; preds = %156, %152
  %161 = load ptr, ptr %18, align 8, !tbaa !5
  %162 = load i64, ptr %161, align 8, !tbaa !9
  store i64 %162, ptr %34, align 8, !tbaa !9
  store i64 1, ptr %41, align 8, !tbaa !9
  br label %163

163:                                              ; preds = %174, %160
  %164 = load i64, ptr %41, align 8, !tbaa !9
  %165 = load i64, ptr %34, align 8, !tbaa !9
  %166 = icmp sle i64 %164, %165
  br i1 %166, label %167, label %177

167:                                              ; preds = %163
  %168 = load ptr, ptr %25, align 8, !tbaa !5
  %169 = load i64, ptr %41, align 8, !tbaa !9
  %170 = getelementptr inbounds double, ptr %168, i64 %169
  store double 0.000000e+00, ptr %170, align 8, !tbaa !11
  %171 = load ptr, ptr %26, align 8, !tbaa !5
  %172 = load i64, ptr %41, align 8, !tbaa !9
  %173 = getelementptr inbounds double, ptr %171, i64 %172
  store double 0.000000e+00, ptr %173, align 8, !tbaa !11
  br label %174

174:                                              ; preds = %167
  %175 = load i64, ptr %41, align 8, !tbaa !9
  %176 = add nsw i64 %175, 1
  store i64 %176, ptr %41, align 8, !tbaa !9
  br label %163, !llvm.loop !13

177:                                              ; preds = %163
  store i32 0, ptr %15, align 4
  store i32 1, ptr %57, align 4
  br label %900

178:                                              ; preds = %156
  %179 = load ptr, ptr %17, align 8, !tbaa !5
  %180 = load i64, ptr %179, align 8, !tbaa !9
  %181 = add nsw i64 %180, 1
  store i64 %181, ptr %47, align 8, !tbaa !9
  %182 = call double @dlamch_(ptr noundef @.str.3)
  store double %182, ptr %48, align 8, !tbaa !11
  %183 = call double @dlamch_(ptr noundef @.str.4)
  store double %183, ptr %55, align 8, !tbaa !11
  %184 = load i64, ptr %47, align 8, !tbaa !9
  %185 = sitofp i64 %184 to double
  %186 = load double, ptr %55, align 8, !tbaa !11
  %187 = fmul double %185, %186
  store double %187, ptr %50, align 8, !tbaa !11
  %188 = load double, ptr %50, align 8, !tbaa !11
  %189 = load double, ptr %48, align 8, !tbaa !11
  %190 = fdiv double %188, %189
  store double %190, ptr %51, align 8, !tbaa !11
  %191 = load ptr, ptr %18, align 8, !tbaa !5
  %192 = load i64, ptr %191, align 8, !tbaa !9
  store i64 %192, ptr %34, align 8, !tbaa !9
  store i64 1, ptr %41, align 8, !tbaa !9
  br label %193

193:                                              ; preds = %896, %178
  %194 = load i64, ptr %41, align 8, !tbaa !9
  %195 = load i64, ptr %34, align 8, !tbaa !9
  %196 = icmp sle i64 %194, %195
  br i1 %196, label %197, label %899

197:                                              ; preds = %193
  store i64 1, ptr %53, align 8, !tbaa !9
  store double 3.000000e+00, ptr %56, align 8, !tbaa !11
  br label %198

198:                                              ; preds = %622, %197
  %199 = load ptr, ptr %17, align 8, !tbaa !5
  %200 = load ptr, ptr %21, align 8, !tbaa !5
  %201 = load i64, ptr %41, align 8, !tbaa !9
  %202 = load i64, ptr %30, align 8, !tbaa !9
  %203 = mul nsw i64 %201, %202
  %204 = add nsw i64 %203, 1
  %205 = getelementptr inbounds double, ptr %200, i64 %204
  %206 = load ptr, ptr %27, align 8, !tbaa !5
  %207 = load ptr, ptr %17, align 8, !tbaa !5
  %208 = load i64, ptr %207, align 8, !tbaa !9
  %209 = add nsw i64 %208, 1
  %210 = getelementptr inbounds double, ptr %206, i64 %209
  %211 = call i32 @f2c_dcopy(ptr noundef %199, ptr noundef %205, ptr noundef @c__1, ptr noundef %210, ptr noundef @c__1)
  %212 = load ptr, ptr %16, align 8, !tbaa !5
  %213 = load ptr, ptr %17, align 8, !tbaa !5
  %214 = load ptr, ptr %19, align 8, !tbaa !5
  %215 = getelementptr inbounds double, ptr %214, i64 1
  %216 = load ptr, ptr %23, align 8, !tbaa !5
  %217 = load i64, ptr %41, align 8, !tbaa !9
  %218 = load i64, ptr %32, align 8, !tbaa !9
  %219 = mul nsw i64 %217, %218
  %220 = add nsw i64 %219, 1
  %221 = getelementptr inbounds double, ptr %216, i64 %220
  %222 = load ptr, ptr %27, align 8, !tbaa !5
  %223 = load ptr, ptr %17, align 8, !tbaa !5
  %224 = load i64, ptr %223, align 8, !tbaa !9
  %225 = add nsw i64 %224, 1
  %226 = getelementptr inbounds double, ptr %222, i64 %225
  %227 = call i32 @f2c_dspmv(ptr noundef %212, ptr noundef %213, ptr noundef @c_b12, ptr noundef %215, ptr noundef %221, ptr noundef @c__1, ptr noundef @c_b14, ptr noundef %226, ptr noundef @c__1)
  %228 = load ptr, ptr %17, align 8, !tbaa !5
  %229 = load i64, ptr %228, align 8, !tbaa !9
  store i64 %229, ptr %35, align 8, !tbaa !9
  store i64 1, ptr %40, align 8, !tbaa !9
  br label %230

230:                                              ; preds = %255, %198
  %231 = load i64, ptr %40, align 8, !tbaa !9
  %232 = load i64, ptr %35, align 8, !tbaa !9
  %233 = icmp sle i64 %231, %232
  br i1 %233, label %234, label %258

234:                                              ; preds = %230
  %235 = load ptr, ptr %21, align 8, !tbaa !5
  %236 = load i64, ptr %40, align 8, !tbaa !9
  %237 = load i64, ptr %41, align 8, !tbaa !9
  %238 = load i64, ptr %30, align 8, !tbaa !9
  %239 = mul nsw i64 %237, %238
  %240 = add nsw i64 %236, %239
  %241 = getelementptr inbounds double, ptr %235, i64 %240
  %242 = load double, ptr %241, align 8, !tbaa !11
  store double %242, ptr %37, align 8, !tbaa !11
  %243 = load double, ptr %37, align 8, !tbaa !11
  %244 = fcmp oge double %243, 0.000000e+00
  br i1 %244, label %245, label %247

245:                                              ; preds = %234
  %246 = load double, ptr %37, align 8, !tbaa !11
  br label %250

247:                                              ; preds = %234
  %248 = load double, ptr %37, align 8, !tbaa !11
  %249 = fneg double %248
  br label %250

250:                                              ; preds = %247, %245
  %251 = phi double [ %246, %245 ], [ %249, %247 ]
  %252 = load ptr, ptr %27, align 8, !tbaa !5
  %253 = load i64, ptr %40, align 8, !tbaa !9
  %254 = getelementptr inbounds double, ptr %252, i64 %253
  store double %251, ptr %254, align 8, !tbaa !11
  br label %255

255:                                              ; preds = %250
  %256 = load i64, ptr %40, align 8, !tbaa !9
  %257 = add nsw i64 %256, 1
  store i64 %257, ptr %40, align 8, !tbaa !9
  br label %230, !llvm.loop !15

258:                                              ; preds = %230
  store i64 1, ptr %45, align 8, !tbaa !9
  %259 = load i64, ptr %54, align 8, !tbaa !9
  %260 = icmp ne i64 %259, 0
  br i1 %260, label %261, label %385

261:                                              ; preds = %258
  %262 = load ptr, ptr %17, align 8, !tbaa !5
  %263 = load i64, ptr %262, align 8, !tbaa !9
  store i64 %263, ptr %35, align 8, !tbaa !9
  store i64 1, ptr %42, align 8, !tbaa !9
  br label %264

264:                                              ; preds = %381, %261
  %265 = load i64, ptr %42, align 8, !tbaa !9
  %266 = load i64, ptr %35, align 8, !tbaa !9
  %267 = icmp sle i64 %265, %266
  br i1 %267, label %268, label %384

268:                                              ; preds = %264
  store double 0.000000e+00, ptr %43, align 8, !tbaa !11
  %269 = load ptr, ptr %23, align 8, !tbaa !5
  %270 = load i64, ptr %42, align 8, !tbaa !9
  %271 = load i64, ptr %41, align 8, !tbaa !9
  %272 = load i64, ptr %32, align 8, !tbaa !9
  %273 = mul nsw i64 %271, %272
  %274 = add nsw i64 %270, %273
  %275 = getelementptr inbounds double, ptr %269, i64 %274
  %276 = load double, ptr %275, align 8, !tbaa !11
  store double %276, ptr %37, align 8, !tbaa !11
  %277 = load double, ptr %37, align 8, !tbaa !11
  %278 = fcmp oge double %277, 0.000000e+00
  br i1 %278, label %279, label %281

279:                                              ; preds = %268
  %280 = load double, ptr %37, align 8, !tbaa !11
  br label %284

281:                                              ; preds = %268
  %282 = load double, ptr %37, align 8, !tbaa !11
  %283 = fneg double %282
  br label %284

284:                                              ; preds = %281, %279
  %285 = phi double [ %280, %279 ], [ %283, %281 ]
  store double %285, ptr %46, align 8, !tbaa !11
  %286 = load i64, ptr %45, align 8, !tbaa !9
  store i64 %286, ptr %44, align 8, !tbaa !9
  %287 = load i64, ptr %42, align 8, !tbaa !9
  %288 = sub nsw i64 %287, 1
  store i64 %288, ptr %36, align 8, !tbaa !9
  store i64 1, ptr %40, align 8, !tbaa !9
  br label %289

289:                                              ; preds = %347, %284
  %290 = load i64, ptr %40, align 8, !tbaa !9
  %291 = load i64, ptr %36, align 8, !tbaa !9
  %292 = icmp sle i64 %290, %291
  br i1 %292, label %293, label %350

293:                                              ; preds = %289
  %294 = load ptr, ptr %19, align 8, !tbaa !5
  %295 = load i64, ptr %44, align 8, !tbaa !9
  %296 = getelementptr inbounds double, ptr %294, i64 %295
  %297 = load double, ptr %296, align 8, !tbaa !11
  store double %297, ptr %37, align 8, !tbaa !11
  %298 = load double, ptr %37, align 8, !tbaa !11
  %299 = fcmp oge double %298, 0.000000e+00
  br i1 %299, label %300, label %302

300:                                              ; preds = %293
  %301 = load double, ptr %37, align 8, !tbaa !11
  br label %305

302:                                              ; preds = %293
  %303 = load double, ptr %37, align 8, !tbaa !11
  %304 = fneg double %303
  br label %305

305:                                              ; preds = %302, %300
  %306 = phi double [ %301, %300 ], [ %304, %302 ]
  %307 = load double, ptr %46, align 8, !tbaa !11
  %308 = load ptr, ptr %27, align 8, !tbaa !5
  %309 = load i64, ptr %40, align 8, !tbaa !9
  %310 = getelementptr inbounds double, ptr %308, i64 %309
  %311 = load double, ptr %310, align 8, !tbaa !11
  %312 = call double @llvm.fmuladd.f64(double %306, double %307, double %311)
  store double %312, ptr %310, align 8, !tbaa !11
  %313 = load ptr, ptr %19, align 8, !tbaa !5
  %314 = load i64, ptr %44, align 8, !tbaa !9
  %315 = getelementptr inbounds double, ptr %313, i64 %314
  %316 = load double, ptr %315, align 8, !tbaa !11
  store double %316, ptr %37, align 8, !tbaa !11
  %317 = load double, ptr %37, align 8, !tbaa !11
  %318 = fcmp oge double %317, 0.000000e+00
  br i1 %318, label %319, label %321

319:                                              ; preds = %305
  %320 = load double, ptr %37, align 8, !tbaa !11
  br label %324

321:                                              ; preds = %305
  %322 = load double, ptr %37, align 8, !tbaa !11
  %323 = fneg double %322
  br label %324

324:                                              ; preds = %321, %319
  %325 = phi double [ %320, %319 ], [ %323, %321 ]
  %326 = load ptr, ptr %23, align 8, !tbaa !5
  %327 = load i64, ptr %40, align 8, !tbaa !9
  %328 = load i64, ptr %41, align 8, !tbaa !9
  %329 = load i64, ptr %32, align 8, !tbaa !9
  %330 = mul nsw i64 %328, %329
  %331 = add nsw i64 %327, %330
  %332 = getelementptr inbounds double, ptr %326, i64 %331
  %333 = load double, ptr %332, align 8, !tbaa !11
  store double %333, ptr %38, align 8, !tbaa !11
  %334 = load double, ptr %38, align 8, !tbaa !11
  %335 = fcmp oge double %334, 0.000000e+00
  br i1 %335, label %336, label %338

336:                                              ; preds = %324
  %337 = load double, ptr %38, align 8, !tbaa !11
  br label %341

338:                                              ; preds = %324
  %339 = load double, ptr %38, align 8, !tbaa !11
  %340 = fneg double %339
  br label %341

341:                                              ; preds = %338, %336
  %342 = phi double [ %337, %336 ], [ %340, %338 ]
  %343 = load double, ptr %43, align 8, !tbaa !11
  %344 = call double @llvm.fmuladd.f64(double %325, double %342, double %343)
  store double %344, ptr %43, align 8, !tbaa !11
  %345 = load i64, ptr %44, align 8, !tbaa !9
  %346 = add nsw i64 %345, 1
  store i64 %346, ptr %44, align 8, !tbaa !9
  br label %347

347:                                              ; preds = %341
  %348 = load i64, ptr %40, align 8, !tbaa !9
  %349 = add nsw i64 %348, 1
  store i64 %349, ptr %40, align 8, !tbaa !9
  br label %289, !llvm.loop !16

350:                                              ; preds = %289
  %351 = load ptr, ptr %27, align 8, !tbaa !5
  %352 = load i64, ptr %42, align 8, !tbaa !9
  %353 = getelementptr inbounds double, ptr %351, i64 %352
  %354 = load double, ptr %353, align 8, !tbaa !11
  %355 = load ptr, ptr %19, align 8, !tbaa !5
  %356 = load i64, ptr %45, align 8, !tbaa !9
  %357 = load i64, ptr %42, align 8, !tbaa !9
  %358 = add nsw i64 %356, %357
  %359 = sub nsw i64 %358, 1
  %360 = getelementptr inbounds double, ptr %355, i64 %359
  %361 = load double, ptr %360, align 8, !tbaa !11
  store double %361, ptr %37, align 8, !tbaa !11
  %362 = load double, ptr %37, align 8, !tbaa !11
  %363 = fcmp oge double %362, 0.000000e+00
  br i1 %363, label %364, label %366

364:                                              ; preds = %350
  %365 = load double, ptr %37, align 8, !tbaa !11
  br label %369

366:                                              ; preds = %350
  %367 = load double, ptr %37, align 8, !tbaa !11
  %368 = fneg double %367
  br label %369

369:                                              ; preds = %366, %364
  %370 = phi double [ %365, %364 ], [ %368, %366 ]
  %371 = load double, ptr %46, align 8, !tbaa !11
  %372 = call double @llvm.fmuladd.f64(double %370, double %371, double %354)
  %373 = load double, ptr %43, align 8, !tbaa !11
  %374 = fadd double %372, %373
  %375 = load ptr, ptr %27, align 8, !tbaa !5
  %376 = load i64, ptr %42, align 8, !tbaa !9
  %377 = getelementptr inbounds double, ptr %375, i64 %376
  store double %374, ptr %377, align 8, !tbaa !11
  %378 = load i64, ptr %42, align 8, !tbaa !9
  %379 = load i64, ptr %45, align 8, !tbaa !9
  %380 = add nsw i64 %379, %378
  store i64 %380, ptr %45, align 8, !tbaa !9
  br label %381

381:                                              ; preds = %369
  %382 = load i64, ptr %42, align 8, !tbaa !9
  %383 = add nsw i64 %382, 1
  store i64 %383, ptr %42, align 8, !tbaa !9
  br label %264, !llvm.loop !17

384:                                              ; preds = %264
  br label %514

385:                                              ; preds = %258
  %386 = load ptr, ptr %17, align 8, !tbaa !5
  %387 = load i64, ptr %386, align 8, !tbaa !9
  store i64 %387, ptr %35, align 8, !tbaa !9
  store i64 1, ptr %42, align 8, !tbaa !9
  br label %388

388:                                              ; preds = %510, %385
  %389 = load i64, ptr %42, align 8, !tbaa !9
  %390 = load i64, ptr %35, align 8, !tbaa !9
  %391 = icmp sle i64 %389, %390
  br i1 %391, label %392, label %513

392:                                              ; preds = %388
  store double 0.000000e+00, ptr %43, align 8, !tbaa !11
  %393 = load ptr, ptr %23, align 8, !tbaa !5
  %394 = load i64, ptr %42, align 8, !tbaa !9
  %395 = load i64, ptr %41, align 8, !tbaa !9
  %396 = load i64, ptr %32, align 8, !tbaa !9
  %397 = mul nsw i64 %395, %396
  %398 = add nsw i64 %394, %397
  %399 = getelementptr inbounds double, ptr %393, i64 %398
  %400 = load double, ptr %399, align 8, !tbaa !11
  store double %400, ptr %37, align 8, !tbaa !11
  %401 = load double, ptr %37, align 8, !tbaa !11
  %402 = fcmp oge double %401, 0.000000e+00
  br i1 %402, label %403, label %405

403:                                              ; preds = %392
  %404 = load double, ptr %37, align 8, !tbaa !11
  br label %408

405:                                              ; preds = %392
  %406 = load double, ptr %37, align 8, !tbaa !11
  %407 = fneg double %406
  br label %408

408:                                              ; preds = %405, %403
  %409 = phi double [ %404, %403 ], [ %407, %405 ]
  store double %409, ptr %46, align 8, !tbaa !11
  %410 = load ptr, ptr %19, align 8, !tbaa !5
  %411 = load i64, ptr %45, align 8, !tbaa !9
  %412 = getelementptr inbounds double, ptr %410, i64 %411
  %413 = load double, ptr %412, align 8, !tbaa !11
  store double %413, ptr %37, align 8, !tbaa !11
  %414 = load double, ptr %37, align 8, !tbaa !11
  %415 = fcmp oge double %414, 0.000000e+00
  br i1 %415, label %416, label %418

416:                                              ; preds = %408
  %417 = load double, ptr %37, align 8, !tbaa !11
  br label %421

418:                                              ; preds = %408
  %419 = load double, ptr %37, align 8, !tbaa !11
  %420 = fneg double %419
  br label %421

421:                                              ; preds = %418, %416
  %422 = phi double [ %417, %416 ], [ %420, %418 ]
  %423 = load double, ptr %46, align 8, !tbaa !11
  %424 = load ptr, ptr %27, align 8, !tbaa !5
  %425 = load i64, ptr %42, align 8, !tbaa !9
  %426 = getelementptr inbounds double, ptr %424, i64 %425
  %427 = load double, ptr %426, align 8, !tbaa !11
  %428 = call double @llvm.fmuladd.f64(double %422, double %423, double %427)
  store double %428, ptr %426, align 8, !tbaa !11
  %429 = load i64, ptr %45, align 8, !tbaa !9
  %430 = add nsw i64 %429, 1
  store i64 %430, ptr %44, align 8, !tbaa !9
  %431 = load ptr, ptr %17, align 8, !tbaa !5
  %432 = load i64, ptr %431, align 8, !tbaa !9
  store i64 %432, ptr %36, align 8, !tbaa !9
  %433 = load i64, ptr %42, align 8, !tbaa !9
  %434 = add nsw i64 %433, 1
  store i64 %434, ptr %40, align 8, !tbaa !9
  br label %435

435:                                              ; preds = %493, %421
  %436 = load i64, ptr %40, align 8, !tbaa !9
  %437 = load i64, ptr %36, align 8, !tbaa !9
  %438 = icmp sle i64 %436, %437
  br i1 %438, label %439, label %496

439:                                              ; preds = %435
  %440 = load ptr, ptr %19, align 8, !tbaa !5
  %441 = load i64, ptr %44, align 8, !tbaa !9
  %442 = getelementptr inbounds double, ptr %440, i64 %441
  %443 = load double, ptr %442, align 8, !tbaa !11
  store double %443, ptr %37, align 8, !tbaa !11
  %444 = load double, ptr %37, align 8, !tbaa !11
  %445 = fcmp oge double %444, 0.000000e+00
  br i1 %445, label %446, label %448

446:                                              ; preds = %439
  %447 = load double, ptr %37, align 8, !tbaa !11
  br label %451

448:                                              ; preds = %439
  %449 = load double, ptr %37, align 8, !tbaa !11
  %450 = fneg double %449
  br label %451

451:                                              ; preds = %448, %446
  %452 = phi double [ %447, %446 ], [ %450, %448 ]
  %453 = load double, ptr %46, align 8, !tbaa !11
  %454 = load ptr, ptr %27, align 8, !tbaa !5
  %455 = load i64, ptr %40, align 8, !tbaa !9
  %456 = getelementptr inbounds double, ptr %454, i64 %455
  %457 = load double, ptr %456, align 8, !tbaa !11
  %458 = call double @llvm.fmuladd.f64(double %452, double %453, double %457)
  store double %458, ptr %456, align 8, !tbaa !11
  %459 = load ptr, ptr %19, align 8, !tbaa !5
  %460 = load i64, ptr %44, align 8, !tbaa !9
  %461 = getelementptr inbounds double, ptr %459, i64 %460
  %462 = load double, ptr %461, align 8, !tbaa !11
  store double %462, ptr %37, align 8, !tbaa !11
  %463 = load double, ptr %37, align 8, !tbaa !11
  %464 = fcmp oge double %463, 0.000000e+00
  br i1 %464, label %465, label %467

465:                                              ; preds = %451
  %466 = load double, ptr %37, align 8, !tbaa !11
  br label %470

467:                                              ; preds = %451
  %468 = load double, ptr %37, align 8, !tbaa !11
  %469 = fneg double %468
  br label %470

470:                                              ; preds = %467, %465
  %471 = phi double [ %466, %465 ], [ %469, %467 ]
  %472 = load ptr, ptr %23, align 8, !tbaa !5
  %473 = load i64, ptr %40, align 8, !tbaa !9
  %474 = load i64, ptr %41, align 8, !tbaa !9
  %475 = load i64, ptr %32, align 8, !tbaa !9
  %476 = mul nsw i64 %474, %475
  %477 = add nsw i64 %473, %476
  %478 = getelementptr inbounds double, ptr %472, i64 %477
  %479 = load double, ptr %478, align 8, !tbaa !11
  store double %479, ptr %38, align 8, !tbaa !11
  %480 = load double, ptr %38, align 8, !tbaa !11
  %481 = fcmp oge double %480, 0.000000e+00
  br i1 %481, label %482, label %484

482:                                              ; preds = %470
  %483 = load double, ptr %38, align 8, !tbaa !11
  br label %487

484:                                              ; preds = %470
  %485 = load double, ptr %38, align 8, !tbaa !11
  %486 = fneg double %485
  br label %487

487:                                              ; preds = %484, %482
  %488 = phi double [ %483, %482 ], [ %486, %484 ]
  %489 = load double, ptr %43, align 8, !tbaa !11
  %490 = call double @llvm.fmuladd.f64(double %471, double %488, double %489)
  store double %490, ptr %43, align 8, !tbaa !11
  %491 = load i64, ptr %44, align 8, !tbaa !9
  %492 = add nsw i64 %491, 1
  store i64 %492, ptr %44, align 8, !tbaa !9
  br label %493

493:                                              ; preds = %487
  %494 = load i64, ptr %40, align 8, !tbaa !9
  %495 = add nsw i64 %494, 1
  store i64 %495, ptr %40, align 8, !tbaa !9
  br label %435, !llvm.loop !18

496:                                              ; preds = %435
  %497 = load double, ptr %43, align 8, !tbaa !11
  %498 = load ptr, ptr %27, align 8, !tbaa !5
  %499 = load i64, ptr %42, align 8, !tbaa !9
  %500 = getelementptr inbounds double, ptr %498, i64 %499
  %501 = load double, ptr %500, align 8, !tbaa !11
  %502 = fadd double %501, %497
  store double %502, ptr %500, align 8, !tbaa !11
  %503 = load ptr, ptr %17, align 8, !tbaa !5
  %504 = load i64, ptr %503, align 8, !tbaa !9
  %505 = load i64, ptr %42, align 8, !tbaa !9
  %506 = sub nsw i64 %504, %505
  %507 = add nsw i64 %506, 1
  %508 = load i64, ptr %45, align 8, !tbaa !9
  %509 = add nsw i64 %508, %507
  store i64 %509, ptr %45, align 8, !tbaa !9
  br label %510

510:                                              ; preds = %496
  %511 = load i64, ptr %42, align 8, !tbaa !9
  %512 = add nsw i64 %511, 1
  store i64 %512, ptr %42, align 8, !tbaa !9
  br label %388, !llvm.loop !19

513:                                              ; preds = %388
  br label %514

514:                                              ; preds = %513, %384
  store double 0.000000e+00, ptr %43, align 8, !tbaa !11
  %515 = load ptr, ptr %17, align 8, !tbaa !5
  %516 = load i64, ptr %515, align 8, !tbaa !9
  store i64 %516, ptr %35, align 8, !tbaa !9
  store i64 1, ptr %40, align 8, !tbaa !9
  br label %517

517:                                              ; preds = %597, %514
  %518 = load i64, ptr %40, align 8, !tbaa !9
  %519 = load i64, ptr %35, align 8, !tbaa !9
  %520 = icmp sle i64 %518, %519
  br i1 %520, label %521, label %600

521:                                              ; preds = %517
  %522 = load ptr, ptr %27, align 8, !tbaa !5
  %523 = load i64, ptr %40, align 8, !tbaa !9
  %524 = getelementptr inbounds double, ptr %522, i64 %523
  %525 = load double, ptr %524, align 8, !tbaa !11
  %526 = load double, ptr %51, align 8, !tbaa !11
  %527 = fcmp ogt double %525, %526
  br i1 %527, label %528, label %560

528:                                              ; preds = %521
  %529 = load double, ptr %43, align 8, !tbaa !11
  store double %529, ptr %38, align 8, !tbaa !11
  %530 = load ptr, ptr %27, align 8, !tbaa !5
  %531 = load ptr, ptr %17, align 8, !tbaa !5
  %532 = load i64, ptr %531, align 8, !tbaa !9
  %533 = load i64, ptr %40, align 8, !tbaa !9
  %534 = add nsw i64 %532, %533
  %535 = getelementptr inbounds double, ptr %530, i64 %534
  %536 = load double, ptr %535, align 8, !tbaa !11
  store double %536, ptr %37, align 8, !tbaa !11
  %537 = load double, ptr %37, align 8, !tbaa !11
  %538 = fcmp oge double %537, 0.000000e+00
  br i1 %538, label %539, label %541

539:                                              ; preds = %528
  %540 = load double, ptr %37, align 8, !tbaa !11
  br label %544

541:                                              ; preds = %528
  %542 = load double, ptr %37, align 8, !tbaa !11
  %543 = fneg double %542
  br label %544

544:                                              ; preds = %541, %539
  %545 = phi double [ %540, %539 ], [ %543, %541 ]
  %546 = load ptr, ptr %27, align 8, !tbaa !5
  %547 = load i64, ptr %40, align 8, !tbaa !9
  %548 = getelementptr inbounds double, ptr %546, i64 %547
  %549 = load double, ptr %548, align 8, !tbaa !11
  %550 = fdiv double %545, %549
  store double %550, ptr %39, align 8, !tbaa !11
  %551 = load double, ptr %38, align 8, !tbaa !11
  %552 = load double, ptr %39, align 8, !tbaa !11
  %553 = fcmp oge double %551, %552
  br i1 %553, label %554, label %556

554:                                              ; preds = %544
  %555 = load double, ptr %38, align 8, !tbaa !11
  br label %558

556:                                              ; preds = %544
  %557 = load double, ptr %39, align 8, !tbaa !11
  br label %558

558:                                              ; preds = %556, %554
  %559 = phi double [ %555, %554 ], [ %557, %556 ]
  store double %559, ptr %43, align 8, !tbaa !11
  br label %596

560:                                              ; preds = %521
  %561 = load double, ptr %43, align 8, !tbaa !11
  store double %561, ptr %38, align 8, !tbaa !11
  %562 = load ptr, ptr %27, align 8, !tbaa !5
  %563 = load ptr, ptr %17, align 8, !tbaa !5
  %564 = load i64, ptr %563, align 8, !tbaa !9
  %565 = load i64, ptr %40, align 8, !tbaa !9
  %566 = add nsw i64 %564, %565
  %567 = getelementptr inbounds double, ptr %562, i64 %566
  %568 = load double, ptr %567, align 8, !tbaa !11
  store double %568, ptr %37, align 8, !tbaa !11
  %569 = load double, ptr %37, align 8, !tbaa !11
  %570 = fcmp oge double %569, 0.000000e+00
  br i1 %570, label %571, label %573

571:                                              ; preds = %560
  %572 = load double, ptr %37, align 8, !tbaa !11
  br label %576

573:                                              ; preds = %560
  %574 = load double, ptr %37, align 8, !tbaa !11
  %575 = fneg double %574
  br label %576

576:                                              ; preds = %573, %571
  %577 = phi double [ %572, %571 ], [ %575, %573 ]
  %578 = load double, ptr %50, align 8, !tbaa !11
  %579 = fadd double %577, %578
  %580 = load ptr, ptr %27, align 8, !tbaa !5
  %581 = load i64, ptr %40, align 8, !tbaa !9
  %582 = getelementptr inbounds double, ptr %580, i64 %581
  %583 = load double, ptr %582, align 8, !tbaa !11
  %584 = load double, ptr %50, align 8, !tbaa !11
  %585 = fadd double %583, %584
  %586 = fdiv double %579, %585
  store double %586, ptr %39, align 8, !tbaa !11
  %587 = load double, ptr %38, align 8, !tbaa !11
  %588 = load double, ptr %39, align 8, !tbaa !11
  %589 = fcmp oge double %587, %588
  br i1 %589, label %590, label %592

590:                                              ; preds = %576
  %591 = load double, ptr %38, align 8, !tbaa !11
  br label %594

592:                                              ; preds = %576
  %593 = load double, ptr %39, align 8, !tbaa !11
  br label %594

594:                                              ; preds = %592, %590
  %595 = phi double [ %591, %590 ], [ %593, %592 ]
  store double %595, ptr %43, align 8, !tbaa !11
  br label %596

596:                                              ; preds = %594, %558
  br label %597

597:                                              ; preds = %596
  %598 = load i64, ptr %40, align 8, !tbaa !9
  %599 = add nsw i64 %598, 1
  store i64 %599, ptr %40, align 8, !tbaa !9
  br label %517, !llvm.loop !20

600:                                              ; preds = %517
  %601 = load double, ptr %43, align 8, !tbaa !11
  %602 = load ptr, ptr %26, align 8, !tbaa !5
  %603 = load i64, ptr %41, align 8, !tbaa !9
  %604 = getelementptr inbounds double, ptr %602, i64 %603
  store double %601, ptr %604, align 8, !tbaa !11
  %605 = load ptr, ptr %26, align 8, !tbaa !5
  %606 = load i64, ptr %41, align 8, !tbaa !9
  %607 = getelementptr inbounds double, ptr %605, i64 %606
  %608 = load double, ptr %607, align 8, !tbaa !11
  %609 = load double, ptr %48, align 8, !tbaa !11
  %610 = fcmp ogt double %608, %609
  br i1 %610, label %611, label %654

611:                                              ; preds = %600
  %612 = load ptr, ptr %26, align 8, !tbaa !5
  %613 = load i64, ptr %41, align 8, !tbaa !9
  %614 = getelementptr inbounds double, ptr %612, i64 %613
  %615 = load double, ptr %614, align 8, !tbaa !11
  %616 = fmul double %615, 2.000000e+00
  %617 = load double, ptr %56, align 8, !tbaa !11
  %618 = fcmp ole double %616, %617
  br i1 %618, label %619, label %654

619:                                              ; preds = %611
  %620 = load i64, ptr %53, align 8, !tbaa !9
  %621 = icmp sle i64 %620, 5
  br i1 %621, label %622, label %654

622:                                              ; preds = %619
  %623 = load ptr, ptr %16, align 8, !tbaa !5
  %624 = load ptr, ptr %17, align 8, !tbaa !5
  %625 = load ptr, ptr %20, align 8, !tbaa !5
  %626 = getelementptr inbounds double, ptr %625, i64 1
  %627 = load ptr, ptr %27, align 8, !tbaa !5
  %628 = load ptr, ptr %17, align 8, !tbaa !5
  %629 = load i64, ptr %628, align 8, !tbaa !9
  %630 = add nsw i64 %629, 1
  %631 = getelementptr inbounds double, ptr %627, i64 %630
  %632 = load ptr, ptr %17, align 8, !tbaa !5
  %633 = load ptr, ptr %29, align 8, !tbaa !5
  %634 = call i32 @dpptrs_(ptr noundef %623, ptr noundef %624, ptr noundef @c__1, ptr noundef %626, ptr noundef %631, ptr noundef %632, ptr noundef %633)
  %635 = load ptr, ptr %17, align 8, !tbaa !5
  %636 = load ptr, ptr %27, align 8, !tbaa !5
  %637 = load ptr, ptr %17, align 8, !tbaa !5
  %638 = load i64, ptr %637, align 8, !tbaa !9
  %639 = add nsw i64 %638, 1
  %640 = getelementptr inbounds double, ptr %636, i64 %639
  %641 = load ptr, ptr %23, align 8, !tbaa !5
  %642 = load i64, ptr %41, align 8, !tbaa !9
  %643 = load i64, ptr %32, align 8, !tbaa !9
  %644 = mul nsw i64 %642, %643
  %645 = add nsw i64 %644, 1
  %646 = getelementptr inbounds double, ptr %641, i64 %645
  %647 = call i32 @f2c_daxpy(ptr noundef %635, ptr noundef @c_b14, ptr noundef %640, ptr noundef @c__1, ptr noundef %646, ptr noundef @c__1)
  %648 = load ptr, ptr %26, align 8, !tbaa !5
  %649 = load i64, ptr %41, align 8, !tbaa !9
  %650 = getelementptr inbounds double, ptr %648, i64 %649
  %651 = load double, ptr %650, align 8, !tbaa !11
  store double %651, ptr %56, align 8, !tbaa !11
  %652 = load i64, ptr %53, align 8, !tbaa !9
  %653 = add nsw i64 %652, 1
  store i64 %653, ptr %53, align 8, !tbaa !9
  br label %198

654:                                              ; preds = %619, %611, %600
  %655 = load ptr, ptr %17, align 8, !tbaa !5
  %656 = load i64, ptr %655, align 8, !tbaa !9
  store i64 %656, ptr %35, align 8, !tbaa !9
  store i64 1, ptr %40, align 8, !tbaa !9
  br label %657

657:                                              ; preds = %729, %654
  %658 = load i64, ptr %40, align 8, !tbaa !9
  %659 = load i64, ptr %35, align 8, !tbaa !9
  %660 = icmp sle i64 %658, %659
  br i1 %660, label %661, label %732

661:                                              ; preds = %657
  %662 = load ptr, ptr %27, align 8, !tbaa !5
  %663 = load i64, ptr %40, align 8, !tbaa !9
  %664 = getelementptr inbounds double, ptr %662, i64 %663
  %665 = load double, ptr %664, align 8, !tbaa !11
  %666 = load double, ptr %51, align 8, !tbaa !11
  %667 = fcmp ogt double %665, %666
  br i1 %667, label %668, label %697

668:                                              ; preds = %661
  %669 = load ptr, ptr %27, align 8, !tbaa !5
  %670 = load ptr, ptr %17, align 8, !tbaa !5
  %671 = load i64, ptr %670, align 8, !tbaa !9
  %672 = load i64, ptr %40, align 8, !tbaa !9
  %673 = add nsw i64 %671, %672
  %674 = getelementptr inbounds double, ptr %669, i64 %673
  %675 = load double, ptr %674, align 8, !tbaa !11
  store double %675, ptr %37, align 8, !tbaa !11
  %676 = load double, ptr %37, align 8, !tbaa !11
  %677 = fcmp oge double %676, 0.000000e+00
  br i1 %677, label %678, label %680

678:                                              ; preds = %668
  %679 = load double, ptr %37, align 8, !tbaa !11
  br label %683

680:                                              ; preds = %668
  %681 = load double, ptr %37, align 8, !tbaa !11
  %682 = fneg double %681
  br label %683

683:                                              ; preds = %680, %678
  %684 = phi double [ %679, %678 ], [ %682, %680 ]
  %685 = load i64, ptr %47, align 8, !tbaa !9
  %686 = sitofp i64 %685 to double
  %687 = load double, ptr %48, align 8, !tbaa !11
  %688 = fmul double %686, %687
  %689 = load ptr, ptr %27, align 8, !tbaa !5
  %690 = load i64, ptr %40, align 8, !tbaa !9
  %691 = getelementptr inbounds double, ptr %689, i64 %690
  %692 = load double, ptr %691, align 8, !tbaa !11
  %693 = call double @llvm.fmuladd.f64(double %688, double %692, double %684)
  %694 = load ptr, ptr %27, align 8, !tbaa !5
  %695 = load i64, ptr %40, align 8, !tbaa !9
  %696 = getelementptr inbounds double, ptr %694, i64 %695
  store double %693, ptr %696, align 8, !tbaa !11
  br label %728

697:                                              ; preds = %661
  %698 = load ptr, ptr %27, align 8, !tbaa !5
  %699 = load ptr, ptr %17, align 8, !tbaa !5
  %700 = load i64, ptr %699, align 8, !tbaa !9
  %701 = load i64, ptr %40, align 8, !tbaa !9
  %702 = add nsw i64 %700, %701
  %703 = getelementptr inbounds double, ptr %698, i64 %702
  %704 = load double, ptr %703, align 8, !tbaa !11
  store double %704, ptr %37, align 8, !tbaa !11
  %705 = load double, ptr %37, align 8, !tbaa !11
  %706 = fcmp oge double %705, 0.000000e+00
  br i1 %706, label %707, label %709

707:                                              ; preds = %697
  %708 = load double, ptr %37, align 8, !tbaa !11
  br label %712

709:                                              ; preds = %697
  %710 = load double, ptr %37, align 8, !tbaa !11
  %711 = fneg double %710
  br label %712

712:                                              ; preds = %709, %707
  %713 = phi double [ %708, %707 ], [ %711, %709 ]
  %714 = load i64, ptr %47, align 8, !tbaa !9
  %715 = sitofp i64 %714 to double
  %716 = load double, ptr %48, align 8, !tbaa !11
  %717 = fmul double %715, %716
  %718 = load ptr, ptr %27, align 8, !tbaa !5
  %719 = load i64, ptr %40, align 8, !tbaa !9
  %720 = getelementptr inbounds double, ptr %718, i64 %719
  %721 = load double, ptr %720, align 8, !tbaa !11
  %722 = call double @llvm.fmuladd.f64(double %717, double %721, double %713)
  %723 = load double, ptr %50, align 8, !tbaa !11
  %724 = fadd double %722, %723
  %725 = load ptr, ptr %27, align 8, !tbaa !5
  %726 = load i64, ptr %40, align 8, !tbaa !9
  %727 = getelementptr inbounds double, ptr %725, i64 %726
  store double %724, ptr %727, align 8, !tbaa !11
  br label %728

728:                                              ; preds = %712, %683
  br label %729

729:                                              ; preds = %728
  %730 = load i64, ptr %40, align 8, !tbaa !9
  %731 = add nsw i64 %730, 1
  store i64 %731, ptr %40, align 8, !tbaa !9
  br label %657, !llvm.loop !21

732:                                              ; preds = %657
  store i64 0, ptr %49, align 8, !tbaa !9
  br label %733

733:                                              ; preds = %846, %732
  %734 = load ptr, ptr %17, align 8, !tbaa !5
  %735 = load ptr, ptr %27, align 8, !tbaa !5
  %736 = load ptr, ptr %17, align 8, !tbaa !5
  %737 = load i64, ptr %736, align 8, !tbaa !9
  %738 = shl i64 %737, 1
  %739 = add nsw i64 %738, 1
  %740 = getelementptr inbounds double, ptr %735, i64 %739
  %741 = load ptr, ptr %27, align 8, !tbaa !5
  %742 = load ptr, ptr %17, align 8, !tbaa !5
  %743 = load i64, ptr %742, align 8, !tbaa !9
  %744 = add nsw i64 %743, 1
  %745 = getelementptr inbounds double, ptr %741, i64 %744
  %746 = load ptr, ptr %28, align 8, !tbaa !5
  %747 = getelementptr inbounds i64, ptr %746, i64 1
  %748 = load ptr, ptr %25, align 8, !tbaa !5
  %749 = load i64, ptr %41, align 8, !tbaa !9
  %750 = getelementptr inbounds double, ptr %748, i64 %749
  %751 = getelementptr inbounds [3 x i64], ptr %52, i64 0, i64 0
  %752 = call i32 @dlacn2_(ptr noundef %734, ptr noundef %740, ptr noundef %745, ptr noundef %747, ptr noundef %750, ptr noundef %49, ptr noundef %751)
  %753 = load i64, ptr %49, align 8, !tbaa !9
  %754 = icmp ne i64 %753, 0
  br i1 %754, label %755, label %847

755:                                              ; preds = %733
  %756 = load i64, ptr %49, align 8, !tbaa !9
  %757 = icmp eq i64 %756, 1
  br i1 %757, label %758, label %800

758:                                              ; preds = %755
  %759 = load ptr, ptr %16, align 8, !tbaa !5
  %760 = load ptr, ptr %17, align 8, !tbaa !5
  %761 = load ptr, ptr %20, align 8, !tbaa !5
  %762 = getelementptr inbounds double, ptr %761, i64 1
  %763 = load ptr, ptr %27, align 8, !tbaa !5
  %764 = load ptr, ptr %17, align 8, !tbaa !5
  %765 = load i64, ptr %764, align 8, !tbaa !9
  %766 = add nsw i64 %765, 1
  %767 = getelementptr inbounds double, ptr %763, i64 %766
  %768 = load ptr, ptr %17, align 8, !tbaa !5
  %769 = load ptr, ptr %29, align 8, !tbaa !5
  %770 = call i32 @dpptrs_(ptr noundef %759, ptr noundef %760, ptr noundef @c__1, ptr noundef %762, ptr noundef %767, ptr noundef %768, ptr noundef %769)
  %771 = load ptr, ptr %17, align 8, !tbaa !5
  %772 = load i64, ptr %771, align 8, !tbaa !9
  store i64 %772, ptr %35, align 8, !tbaa !9
  store i64 1, ptr %40, align 8, !tbaa !9
  br label %773

773:                                              ; preds = %796, %758
  %774 = load i64, ptr %40, align 8, !tbaa !9
  %775 = load i64, ptr %35, align 8, !tbaa !9
  %776 = icmp sle i64 %774, %775
  br i1 %776, label %777, label %799

777:                                              ; preds = %773
  %778 = load ptr, ptr %27, align 8, !tbaa !5
  %779 = load i64, ptr %40, align 8, !tbaa !9
  %780 = getelementptr inbounds double, ptr %778, i64 %779
  %781 = load double, ptr %780, align 8, !tbaa !11
  %782 = load ptr, ptr %27, align 8, !tbaa !5
  %783 = load ptr, ptr %17, align 8, !tbaa !5
  %784 = load i64, ptr %783, align 8, !tbaa !9
  %785 = load i64, ptr %40, align 8, !tbaa !9
  %786 = add nsw i64 %784, %785
  %787 = getelementptr inbounds double, ptr %782, i64 %786
  %788 = load double, ptr %787, align 8, !tbaa !11
  %789 = fmul double %781, %788
  %790 = load ptr, ptr %27, align 8, !tbaa !5
  %791 = load ptr, ptr %17, align 8, !tbaa !5
  %792 = load i64, ptr %791, align 8, !tbaa !9
  %793 = load i64, ptr %40, align 8, !tbaa !9
  %794 = add nsw i64 %792, %793
  %795 = getelementptr inbounds double, ptr %790, i64 %794
  store double %789, ptr %795, align 8, !tbaa !11
  br label %796

796:                                              ; preds = %777
  %797 = load i64, ptr %40, align 8, !tbaa !9
  %798 = add nsw i64 %797, 1
  store i64 %798, ptr %40, align 8, !tbaa !9
  br label %773, !llvm.loop !22

799:                                              ; preds = %773
  br label %846

800:                                              ; preds = %755
  %801 = load i64, ptr %49, align 8, !tbaa !9
  %802 = icmp eq i64 %801, 2
  br i1 %802, label %803, label %845

803:                                              ; preds = %800
  %804 = load ptr, ptr %17, align 8, !tbaa !5
  %805 = load i64, ptr %804, align 8, !tbaa !9
  store i64 %805, ptr %35, align 8, !tbaa !9
  store i64 1, ptr %40, align 8, !tbaa !9
  br label %806

806:                                              ; preds = %829, %803
  %807 = load i64, ptr %40, align 8, !tbaa !9
  %808 = load i64, ptr %35, align 8, !tbaa !9
  %809 = icmp sle i64 %807, %808
  br i1 %809, label %810, label %832

810:                                              ; preds = %806
  %811 = load ptr, ptr %27, align 8, !tbaa !5
  %812 = load i64, ptr %40, align 8, !tbaa !9
  %813 = getelementptr inbounds double, ptr %811, i64 %812
  %814 = load double, ptr %813, align 8, !tbaa !11
  %815 = load ptr, ptr %27, align 8, !tbaa !5
  %816 = load ptr, ptr %17, align 8, !tbaa !5
  %817 = load i64, ptr %816, align 8, !tbaa !9
  %818 = load i64, ptr %40, align 8, !tbaa !9
  %819 = add nsw i64 %817, %818
  %820 = getelementptr inbounds double, ptr %815, i64 %819
  %821 = load double, ptr %820, align 8, !tbaa !11
  %822 = fmul double %814, %821
  %823 = load ptr, ptr %27, align 8, !tbaa !5
  %824 = load ptr, ptr %17, align 8, !tbaa !5
  %825 = load i64, ptr %824, align 8, !tbaa !9
  %826 = load i64, ptr %40, align 8, !tbaa !9
  %827 = add nsw i64 %825, %826
  %828 = getelementptr inbounds double, ptr %823, i64 %827
  store double %822, ptr %828, align 8, !tbaa !11
  br label %829

829:                                              ; preds = %810
  %830 = load i64, ptr %40, align 8, !tbaa !9
  %831 = add nsw i64 %830, 1
  store i64 %831, ptr %40, align 8, !tbaa !9
  br label %806, !llvm.loop !23

832:                                              ; preds = %806
  %833 = load ptr, ptr %16, align 8, !tbaa !5
  %834 = load ptr, ptr %17, align 8, !tbaa !5
  %835 = load ptr, ptr %20, align 8, !tbaa !5
  %836 = getelementptr inbounds double, ptr %835, i64 1
  %837 = load ptr, ptr %27, align 8, !tbaa !5
  %838 = load ptr, ptr %17, align 8, !tbaa !5
  %839 = load i64, ptr %838, align 8, !tbaa !9
  %840 = add nsw i64 %839, 1
  %841 = getelementptr inbounds double, ptr %837, i64 %840
  %842 = load ptr, ptr %17, align 8, !tbaa !5
  %843 = load ptr, ptr %29, align 8, !tbaa !5
  %844 = call i32 @dpptrs_(ptr noundef %833, ptr noundef %834, ptr noundef @c__1, ptr noundef %836, ptr noundef %841, ptr noundef %842, ptr noundef %843)
  br label %845

845:                                              ; preds = %832, %800
  br label %846

846:                                              ; preds = %845, %799
  br label %733

847:                                              ; preds = %733
  store double 0.000000e+00, ptr %56, align 8, !tbaa !11
  %848 = load ptr, ptr %17, align 8, !tbaa !5
  %849 = load i64, ptr %848, align 8, !tbaa !9
  store i64 %849, ptr %35, align 8, !tbaa !9
  store i64 1, ptr %40, align 8, !tbaa !9
  br label %850

850:                                              ; preds = %882, %847
  %851 = load i64, ptr %40, align 8, !tbaa !9
  %852 = load i64, ptr %35, align 8, !tbaa !9
  %853 = icmp sle i64 %851, %852
  br i1 %853, label %854, label %885

854:                                              ; preds = %850
  %855 = load double, ptr %56, align 8, !tbaa !11
  store double %855, ptr %38, align 8, !tbaa !11
  %856 = load ptr, ptr %23, align 8, !tbaa !5
  %857 = load i64, ptr %40, align 8, !tbaa !9
  %858 = load i64, ptr %41, align 8, !tbaa !9
  %859 = load i64, ptr %32, align 8, !tbaa !9
  %860 = mul nsw i64 %858, %859
  %861 = add nsw i64 %857, %860
  %862 = getelementptr inbounds double, ptr %856, i64 %861
  %863 = load double, ptr %862, align 8, !tbaa !11
  store double %863, ptr %37, align 8, !tbaa !11
  %864 = load double, ptr %37, align 8, !tbaa !11
  %865 = fcmp oge double %864, 0.000000e+00
  br i1 %865, label %866, label %868

866:                                              ; preds = %854
  %867 = load double, ptr %37, align 8, !tbaa !11
  br label %871

868:                                              ; preds = %854
  %869 = load double, ptr %37, align 8, !tbaa !11
  %870 = fneg double %869
  br label %871

871:                                              ; preds = %868, %866
  %872 = phi double [ %867, %866 ], [ %870, %868 ]
  store double %872, ptr %39, align 8, !tbaa !11
  %873 = load double, ptr %38, align 8, !tbaa !11
  %874 = load double, ptr %39, align 8, !tbaa !11
  %875 = fcmp oge double %873, %874
  br i1 %875, label %876, label %878

876:                                              ; preds = %871
  %877 = load double, ptr %38, align 8, !tbaa !11
  br label %880

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

880:                                              ; preds = %878, %876
  %881 = phi double [ %877, %876 ], [ %879, %878 ]
  store double %881, ptr %56, align 8, !tbaa !11
  br label %882

882:                                              ; preds = %880
  %883 = load i64, ptr %40, align 8, !tbaa !9
  %884 = add nsw i64 %883, 1
  store i64 %884, ptr %40, align 8, !tbaa !9
  br label %850, !llvm.loop !24

885:                                              ; preds = %850
  %886 = load double, ptr %56, align 8, !tbaa !11
  %887 = fcmp une double %886, 0.000000e+00
  br i1 %887, label %888, label %895

888:                                              ; preds = %885
  %889 = load double, ptr %56, align 8, !tbaa !11
  %890 = load ptr, ptr %25, align 8, !tbaa !5
  %891 = load i64, ptr %41, align 8, !tbaa !9
  %892 = getelementptr inbounds double, ptr %890, i64 %891
  %893 = load double, ptr %892, align 8, !tbaa !11
  %894 = fdiv double %893, %889
  store double %894, ptr %892, align 8, !tbaa !11
  br label %895

895:                                              ; preds = %888, %885
  br label %896

896:                                              ; preds = %895
  %897 = load i64, ptr %41, align 8, !tbaa !9
  %898 = add nsw i64 %897, 1
  store i64 %898, ptr %41, align 8, !tbaa !9
  br label %193, !llvm.loop !25

899:                                              ; preds = %193
  store i32 0, ptr %15, align 4
  store i32 1, ptr %57, align 4
  br label %900

900:                                              ; preds = %899, %177, %147
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 24, 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
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #4
  %901 = load i32, ptr %15, align 4
  ret i32 %901
}

; 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 @dpptrs_(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 @dpprfs_(ptr noundef %0, ptr noundef %1, ptr nocapture noundef readonly %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr nocapture noundef readonly %6, ptr noundef %7, ptr nocapture noundef readonly %8, ptr noundef %9, ptr nocapture noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef %13) local_unnamed_addr #0 {
  %15 = ptrtoint ptr %9 to i64
  %16 = ptrtoint ptr %10 to i64
  %17 = ptrtoint ptr %5 to i64
  %18 = ptrtoint ptr %11 to i64
  %19 = alloca i64, align 8
  %20 = alloca i64, align 8
  %21 = alloca [3 x i64], align 16
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #5
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %21) #5
  %22 = getelementptr inbounds i8, ptr %3, i64 -8
  %23 = load i64, ptr %6, align 8, !tbaa !5
  %24 = xor i64 %23, -1
  %25 = getelementptr inbounds double, ptr %5, i64 %24
  %26 = load i64, ptr %8, align 8, !tbaa !5
  %27 = xor i64 %26, -1
  %28 = getelementptr inbounds double, ptr %7, i64 %27
  %29 = getelementptr inbounds i8, ptr %9, i64 -8
  %30 = getelementptr inbounds i8, ptr %10, i64 -8
  %31 = getelementptr inbounds i8, ptr %11, i64 -8
  store i64 0, ptr %13, align 8, !tbaa !5
  %32 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #5
  %.not = icmp eq i64 %32, 0
  br i1 %.not, label %33, label %35

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

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

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

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

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

47:                                               ; preds = %44
  %.pr = load i64, ptr %13, align 8, !tbaa !5
  %.not369 = icmp eq i64 %.pr, 0
  br i1 %.not369, label %51, label %.thread

.thread.sink.split:                               ; preds = %44, %41, %38, %35, %33
  %.sink = phi i64 [ -1, %33 ], [ -2, %35 ], [ -3, %38 ], [ -7, %41 ], [ -9, %44 ]
  store i64 %.sink, ptr %13, align 8, !tbaa !5
  br label %.thread

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

51:                                               ; preds = %47
  %52 = icmp eq i64 %36, 0
  %.not382464 = icmp eq i64 %39, 0
  br i1 %52, label %54, label %53

53:                                               ; preds = %51
  br i1 %.not382464, label %.loopexit, label %79

54:                                               ; preds = %51
  br i1 %.not382464, label %.loopexit, label %.lr.ph467.preheader

.lr.ph467.preheader:                              ; preds = %54
  %min.iters.check560 = icmp ult i64 %39, 4
  %55 = sub i64 %16, %15
  %diff.check557 = icmp ult i64 %55, 32
  %or.cond571 = or i1 %min.iters.check560, %diff.check557
  br i1 %or.cond571, label %.lr.ph467.preheader573, label %vector.ph561

vector.ph561:                                     ; preds = %.lr.ph467.preheader
  %n.vec563 = and i64 %39, 9223372036854775804
  %ind.end564 = or disjoint i64 %n.vec563, 1
  br label %vector.body566

vector.body566:                                   ; preds = %vector.body566, %vector.ph561
  %index567 = phi i64 [ 0, %vector.ph561 ], [ %index.next569, %vector.body566 ]
  %56 = getelementptr double, ptr %9, i64 %index567
  %57 = getelementptr inbounds i8, ptr %56, i64 16
  store <2 x double> zeroinitializer, ptr %56, align 8, !tbaa !9
  store <2 x double> zeroinitializer, ptr %57, align 8, !tbaa !9
  %58 = getelementptr double, ptr %10, i64 %index567
  %59 = getelementptr inbounds i8, ptr %58, i64 16
  store <2 x double> zeroinitializer, ptr %58, align 8, !tbaa !9
  store <2 x double> zeroinitializer, ptr %59, align 8, !tbaa !9
  %index.next569 = add nuw i64 %index567, 4
  %60 = icmp eq i64 %index.next569, %n.vec563
  br i1 %60, label %middle.block558, label %vector.body566, !llvm.loop !11

middle.block558:                                  ; preds = %vector.body566
  %cmp.n570 = icmp eq i64 %39, %n.vec563
  br i1 %cmp.n570, label %.loopexit, label %.lr.ph467.preheader573

.lr.ph467.preheader573:                           ; preds = %middle.block558, %.lr.ph467.preheader
  %.0353465.ph = phi i64 [ 1, %.lr.ph467.preheader ], [ %ind.end564, %middle.block558 ]
  %61 = add nuw i64 %39, 1
  %62 = sub i64 %61, %.0353465.ph
  %63 = sub i64 %39, %.0353465.ph
  %xtraiter584 = and i64 %62, 3
  %lcmp.mod585.not = icmp eq i64 %xtraiter584, 0
  br i1 %lcmp.mod585.not, label %.lr.ph467.prol.loopexit, label %.lr.ph467.prol

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

.lr.ph467.prol.loopexit:                          ; preds = %.lr.ph467.prol, %.lr.ph467.preheader573
  %.0353465.unr = phi i64 [ %.0353465.ph, %.lr.ph467.preheader573 ], [ %66, %.lr.ph467.prol ]
  %67 = icmp ult i64 %63, 3
  br i1 %67, label %.loopexit, label %.lr.ph467

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

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

.preheader389.lr.ph:                              ; preds = %79
  %invariant.gep435 = getelementptr i8, ptr %28, i64 8
  %invariant.gep406 = getelementptr i8, ptr %3, i64 -16
  %87 = fmul double %81, %83
  %88 = sub i64 %18, %17
  %89 = mul i64 %23, -8
  %broadcast.splatinsert = insertelement <2 x double> poison, double %85, i64 0
  %broadcast.splat = shufflevector <2 x double> %broadcast.splatinsert, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert535 = insertelement <2 x double> poison, double %87, i64 0
  %broadcast.splat536 = shufflevector <2 x double> %broadcast.splatinsert535, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert537 = insertelement <2 x double> poison, double %84, i64 0
  %broadcast.splat538 = shufflevector <2 x double> %broadcast.splatinsert537, <2 x double> poison, <2 x i32> zeroinitializer
  br label %.preheader389

.preheader389:                                    ; preds = %.preheader389.lr.ph, %._crit_edge458.thread
  %indvar = phi i64 [ 0, %.preheader389.lr.ph ], [ %indvar.next, %._crit_edge458.thread ]
  %.1354463 = phi i64 [ 1, %.preheader389.lr.ph ], [ %327, %._crit_edge458.thread ]
  %90 = mul i64 %89, %indvar
  %91 = add i64 %88, %90
  %92 = getelementptr inbounds double, ptr %30, i64 %.1354463
  %93 = mul nsw i64 %.1354463, %23
  %gep461 = getelementptr double, ptr %invariant.gep460, i64 %93
  %94 = mul nsw i64 %.1354463, %26
  %gep436 = getelementptr double, ptr %invariant.gep435, i64 %94
  %invariant.gep = getelementptr double, ptr %25, i64 %93
  %invariant.gep404 = getelementptr double, ptr %28, i64 %94
  %diff.check = icmp ult i64 %91, 32
  br label %95

95:                                               ; preds = %.preheader389, %226
  %.0344 = phi i64 [ %233, %226 ], [ 1, %.preheader389 ]
  %.0 = phi double [ %232, %226 ], [ 3.000000e+00, %.preheader389 ]
  %96 = load i64, ptr %1, align 8, !tbaa !5
  %97 = getelementptr double, ptr %11, i64 %96
  %98 = call i32 @f2c_dcopy(ptr noundef nonnull %1, ptr noundef %gep461, ptr noundef nonnull @c__1, ptr noundef %97, ptr noundef nonnull @c__1) #5
  %99 = load i64, ptr %1, align 8, !tbaa !5
  %100 = getelementptr double, ptr %11, i64 %99
  %101 = call i32 @f2c_dspmv(ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull @c_b12, ptr noundef %3, ptr noundef %gep436, ptr noundef nonnull @c__1, ptr noundef nonnull @c_b14, ptr noundef %100, ptr noundef nonnull @c__1) #5
  %102 = load i64, ptr %1, align 8, !tbaa !5
  %.not371393 = icmp slt i64 %102, 1
  br i1 %.not371393, label %._crit_edge433, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %95
  %min.iters.check543 = icmp ult i64 %102, 4
  %or.cond572 = select i1 %min.iters.check543, i1 true, i1 %diff.check
  br i1 %or.cond572, label %.lr.ph.preheader575, label %vector.ph544

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

vector.body549:                                   ; preds = %vector.body549, %vector.ph544
  %index550 = phi i64 [ 0, %vector.ph544 ], [ %index.next554, %vector.body549 ]
  %offset.idx551 = or disjoint i64 %index550, 1
  %103 = getelementptr double, ptr %invariant.gep, i64 %offset.idx551
  %104 = getelementptr i8, ptr %103, i64 16
  %wide.load552 = load <2 x double>, ptr %103, align 8, !tbaa !9
  %wide.load553 = load <2 x double>, ptr %104, align 8, !tbaa !9
  %105 = fcmp oge <2 x double> %wide.load552, zeroinitializer
  %106 = fcmp oge <2 x double> %wide.load553, zeroinitializer
  %107 = fneg <2 x double> %wide.load552
  %108 = fneg <2 x double> %wide.load553
  %109 = select <2 x i1> %105, <2 x double> %wide.load552, <2 x double> %107
  %110 = select <2 x i1> %106, <2 x double> %wide.load553, <2 x double> %108
  %111 = getelementptr double, ptr %11, i64 %index550
  %112 = getelementptr inbounds i8, ptr %111, i64 16
  store <2 x double> %109, ptr %111, align 8, !tbaa !9
  store <2 x double> %110, ptr %112, align 8, !tbaa !9
  %index.next554 = add nuw i64 %index550, 4
  %113 = icmp eq i64 %index.next554, %n.vec546
  br i1 %113, label %middle.block541, label %vector.body549, !llvm.loop !18

middle.block541:                                  ; preds = %vector.body549
  %cmp.n555 = icmp eq i64 %102, %n.vec546
  br i1 %cmp.n555, label %._crit_edge, label %.lr.ph.preheader575

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

.lr.ph.prol.loopexit:                             ; preds = %.lr.ph.prol, %.lr.ph.preheader575
  %.0355394.unr = phi i64 [ %.0355394.ph, %.lr.ph.preheader575 ], [ %119, %.lr.ph.prol ]
  %120 = icmp eq i64 %102, %.0355394.ph
  br i1 %120, label %._crit_edge, label %.lr.ph

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

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

.preheader387:                                    ; preds = %._crit_edge
  br i1 %.not371393, label %._crit_edge433, label %.lr.ph411.preheader

.lr.ph411.preheader:                              ; preds = %.preheader387
  %133 = add nuw i64 %102, 1
  br label %.lr.ph411

.preheader:                                       ; preds = %._crit_edge
  br i1 %.not371393, label %._crit_edge433, label %.lr.ph427

.lr.ph427:                                        ; preds = %.preheader
  %134 = add nuw i64 %102, 1
  br label %168

.lr.ph411:                                        ; preds = %.lr.ph411.preheader, %._crit_edge403
  %indvars.iv473 = phi i64 [ 1, %.lr.ph411.preheader ], [ %indvars.iv.next474, %._crit_edge403 ]
  %indvars.iv = phi i64 [ 2, %.lr.ph411.preheader ], [ %indvars.iv.next, %._crit_edge403 ]
  %.0345410 = phi i64 [ 1, %.lr.ph411.preheader ], [ %160, %._crit_edge403 ]
  %.0351409 = phi i64 [ 1, %.lr.ph411.preheader ], [ %167, %._crit_edge403 ]
  %gep405 = getelementptr double, ptr %invariant.gep404, i64 %.0351409
  %135 = load double, ptr %gep405, align 8, !tbaa !9
  %136 = fcmp oge double %135, 0.000000e+00
  %137 = fneg double %135
  %138 = select i1 %136, double %135, double %137
  %.not381.not397 = icmp ugt i64 %.0351409, 1
  br i1 %.not381.not397, label %.lr.ph402, label %._crit_edge403

.lr.ph402:                                        ; preds = %.lr.ph411, %.lr.ph402
  %.0347400 = phi i64 [ %156, %.lr.ph402 ], [ %.0345410, %.lr.ph411 ]
  %.0349399 = phi double [ %155, %.lr.ph402 ], [ 0.000000e+00, %.lr.ph411 ]
  %.1356398 = phi i64 [ %157, %.lr.ph402 ], [ 1, %.lr.ph411 ]
  %139 = getelementptr inbounds double, ptr %22, i64 %.0347400
  %140 = load double, ptr %139, align 8, !tbaa !9
  %141 = fcmp oge double %140, 0.000000e+00
  %142 = fneg double %140
  %143 = select i1 %141, double %140, double %142
  %144 = getelementptr inbounds double, ptr %31, i64 %.1356398
  %145 = load double, ptr %144, align 8, !tbaa !9
  %146 = call double @llvm.fmuladd.f64(double %143, double %138, double %145)
  store double %146, ptr %144, align 8, !tbaa !9
  %147 = load double, ptr %139, align 8, !tbaa !9
  %148 = fcmp oge double %147, 0.000000e+00
  %149 = fneg double %147
  %150 = select i1 %148, double %147, double %149
  %gep396 = getelementptr double, ptr %invariant.gep404, i64 %.1356398
  %151 = load double, ptr %gep396, align 8, !tbaa !9
  %152 = fcmp oge double %151, 0.000000e+00
  %153 = fneg double %151
  %154 = select i1 %152, double %151, double %153
  %155 = call double @llvm.fmuladd.f64(double %150, double %154, double %.0349399)
  %156 = add i64 %.0347400, 1
  %157 = add nuw nsw i64 %.1356398, 1
  %exitcond475.not = icmp eq i64 %156, %indvars.iv473
  br i1 %exitcond475.not, label %._crit_edge403, label %.lr.ph402, !llvm.loop !20

._crit_edge403:                                   ; preds = %.lr.ph402, %.lr.ph411
  %.0349.lcssa = phi double [ 0.000000e+00, %.lr.ph411 ], [ %155, %.lr.ph402 ]
  %158 = getelementptr inbounds double, ptr %31, i64 %.0351409
  %159 = load double, ptr %158, align 8, !tbaa !9
  %160 = add nuw nsw i64 %.0345410, %.0351409
  %gep407 = getelementptr double, ptr %invariant.gep406, i64 %160
  %161 = load double, ptr %gep407, align 8, !tbaa !9
  %162 = fcmp oge double %161, 0.000000e+00
  %163 = fneg double %161
  %164 = select i1 %162, double %161, double %163
  %165 = call double @llvm.fmuladd.f64(double %164, double %138, double %159)
  %166 = fadd double %.0349.lcssa, %165
  store double %166, ptr %158, align 8, !tbaa !9
  %167 = add nuw nsw i64 %.0351409, 1
  %indvars.iv.next = add nuw i64 %indvars.iv, 1
  %indvars.iv.next474 = add i64 %indvars.iv473, %indvars.iv
  %exitcond476.not = icmp eq i64 %indvars.iv, %133
  br i1 %exitcond476.not, label %.loopexit386, label %.lr.ph411, !llvm.loop !21

168:                                              ; preds = %.lr.ph427, %._crit_edge420
  %.1346426 = phi i64 [ 1, %.lr.ph427 ], [ %203, %._crit_edge420 ]
  %.1352425 = phi i64 [ 1, %.lr.ph427 ], [ %181, %._crit_edge420 ]
  %gep423 = getelementptr double, ptr %invariant.gep404, i64 %.1352425
  %169 = load double, ptr %gep423, align 8, !tbaa !9
  %170 = fcmp oge double %169, 0.000000e+00
  %171 = fneg double %169
  %172 = select i1 %170, double %169, double %171
  %173 = getelementptr inbounds double, ptr %22, i64 %.1346426
  %174 = load double, ptr %173, align 8, !tbaa !9
  %175 = fcmp oge double %174, 0.000000e+00
  %176 = fneg double %174
  %177 = select i1 %175, double %174, double %176
  %178 = getelementptr inbounds double, ptr %31, i64 %.1352425
  %179 = load double, ptr %178, align 8, !tbaa !9
  %180 = call double @llvm.fmuladd.f64(double %177, double %172, double %179)
  store double %180, ptr %178, align 8, !tbaa !9
  %181 = add nuw i64 %.1352425, 1
  %.not373414.not = icmp slt i64 %.1352425, %102
  br i1 %.not373414.not, label %.lr.ph419, label %._crit_edge420

.lr.ph419:                                        ; preds = %168, %.lr.ph419
  %.1348.in417 = phi i64 [ %.1348, %.lr.ph419 ], [ %.1346426, %168 ]
  %.1350416 = phi double [ %198, %.lr.ph419 ], [ 0.000000e+00, %168 ]
  %.2357415 = phi i64 [ %199, %.lr.ph419 ], [ %181, %168 ]
  %.1348 = add nsw i64 %.1348.in417, 1
  %182 = getelementptr double, ptr %3, i64 %.1348.in417
  %183 = load double, ptr %182, align 8, !tbaa !9
  %184 = fcmp oge double %183, 0.000000e+00
  %185 = fneg double %183
  %186 = select i1 %184, double %183, double %185
  %187 = getelementptr inbounds double, ptr %31, i64 %.2357415
  %188 = load double, ptr %187, align 8, !tbaa !9
  %189 = call double @llvm.fmuladd.f64(double %186, double %172, double %188)
  store double %189, ptr %187, align 8, !tbaa !9
  %190 = load double, ptr %182, align 8, !tbaa !9
  %191 = fcmp oge double %190, 0.000000e+00
  %192 = fneg double %190
  %193 = select i1 %191, double %190, double %192
  %gep413 = getelementptr double, ptr %invariant.gep404, i64 %.2357415
  %194 = load double, ptr %gep413, align 8, !tbaa !9
  %195 = fcmp oge double %194, 0.000000e+00
  %196 = fneg double %194
  %197 = select i1 %195, double %194, double %196
  %198 = call double @llvm.fmuladd.f64(double %193, double %197, double %.1350416)
  %199 = add nuw nsw i64 %.2357415, 1
  %.not373.not = icmp slt i64 %.2357415, %102
  br i1 %.not373.not, label %.lr.ph419, label %._crit_edge420.loopexit, !llvm.loop !22

._crit_edge420.loopexit:                          ; preds = %.lr.ph419
  %.pre = load double, ptr %178, align 8, !tbaa !9
  br label %._crit_edge420

._crit_edge420:                                   ; preds = %._crit_edge420.loopexit, %168
  %200 = phi double [ %180, %168 ], [ %.pre, %._crit_edge420.loopexit ]
  %.1350.lcssa = phi double [ 0.000000e+00, %168 ], [ %198, %._crit_edge420.loopexit ]
  %201 = fadd double %.1350.lcssa, %200
  store double %201, ptr %178, align 8, !tbaa !9
  %202 = sub i64 %134, %.1352425
  %203 = add nsw i64 %202, %.1346426
  %exitcond477.not = icmp eq i64 %.1352425, %102
  br i1 %exitcond477.not, label %.loopexit386, label %168, !llvm.loop !23

.loopexit386:                                     ; preds = %._crit_edge403, %._crit_edge420
  br i1 %.not371393, label %._crit_edge433, label %.lr.ph432

.lr.ph432:                                        ; preds = %.loopexit386
  %204 = getelementptr double, ptr %31, i64 %102
  br label %205

205:                                              ; preds = %.lr.ph432, %205
  %.2430 = phi double [ 0.000000e+00, %.lr.ph432 ], [ %219, %205 ]
  %.3358429 = phi i64 [ 1, %.lr.ph432 ], [ %220, %205 ]
  %206 = getelementptr inbounds double, ptr %31, i64 %.3358429
  %207 = load double, ptr %206, align 8, !tbaa !9
  %208 = fcmp ogt double %207, %85
  %209 = getelementptr double, ptr %204, i64 %.3358429
  %210 = load double, ptr %209, align 8, !tbaa !9
  %211 = fcmp oge double %210, 0.000000e+00
  %212 = fneg double %210
  %213 = select i1 %211, double %210, double %212
  %214 = fdiv double %213, %207
  %215 = fadd double %84, %213
  %216 = fadd double %84, %207
  %217 = fdiv double %215, %216
  %.sink495 = select i1 %208, double %214, double %217
  %218 = fcmp oge double %.2430, %.sink495
  %219 = select i1 %218, double %.2430, double %.sink495
  %220 = add nuw i64 %.3358429, 1
  %exitcond478.not = icmp eq i64 %.3358429, %102
  br i1 %exitcond478.not, label %._crit_edge433, label %205, !llvm.loop !24

._crit_edge433:                                   ; preds = %205, %95, %.preheader, %.preheader387, %.loopexit386
  %.2.lcssa = phi double [ 0.000000e+00, %.loopexit386 ], [ 0.000000e+00, %.preheader387 ], [ 0.000000e+00, %.preheader ], [ 0.000000e+00, %95 ], [ %219, %205 ]
  store double %.2.lcssa, ptr %92, align 8, !tbaa !9
  %221 = fcmp ogt double %.2.lcssa, %81
  br i1 %221, label %222, label %234

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

226:                                              ; preds = %222
  %227 = getelementptr double, ptr %11, i64 %102
  %228 = call i32 @dpptrs_(ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull @c__1, ptr noundef %4, ptr noundef %227, ptr noundef nonnull %1, ptr noundef nonnull %13) #5
  %229 = load i64, ptr %1, align 8, !tbaa !5
  %230 = getelementptr double, ptr %11, i64 %229
  %231 = call i32 @f2c_daxpy(ptr noundef nonnull %1, ptr noundef nonnull @c_b14, ptr noundef %230, ptr noundef nonnull @c__1, ptr noundef %gep436, ptr noundef nonnull @c__1) #5
  %232 = load double, ptr %92, align 8, !tbaa !9
  %233 = add nuw nsw i64 %.0344, 1
  br label %95

234:                                              ; preds = %222, %._crit_edge433
  br i1 %.not371393, label %._crit_edge441, label %.lr.ph440

.lr.ph440:                                        ; preds = %234
  %235 = getelementptr double, ptr %31, i64 %102
  %min.iters.check524 = icmp eq i64 %102, 1
  br i1 %min.iters.check524, label %scalar.ph523.preheader, label %vector.ph525

vector.ph525:                                     ; preds = %.lr.ph440
  %n.vec527 = and i64 %102, 9223372036854775806
  %ind.end528 = or i64 %102, 1
  br label %vector.body530

vector.body530:                                   ; preds = %vector.body530, %vector.ph525
  %index531 = phi i64 [ 0, %vector.ph525 ], [ %index.next539, %vector.body530 ]
  %offset.idx532 = or disjoint i64 %index531, 1
  %236 = getelementptr double, ptr %11, i64 %index531
  %wide.load533 = load <2 x double>, ptr %236, align 8, !tbaa !9
  %237 = fcmp ogt <2 x double> %wide.load533, %broadcast.splat
  %238 = getelementptr double, ptr %235, i64 %offset.idx532
  %wide.load534 = load <2 x double>, ptr %238, align 8, !tbaa !9
  %239 = fcmp oge <2 x double> %wide.load534, zeroinitializer
  %240 = fneg <2 x double> %wide.load534
  %241 = select <2 x i1> %239, <2 x double> %wide.load534, <2 x double> %240
  %242 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat536, <2 x double> %wide.load533, <2 x double> %241)
  %243 = fadd <2 x double> %broadcast.splat538, %242
  %244 = select <2 x i1> %237, <2 x double> %242, <2 x double> %243
  store <2 x double> %244, ptr %236, align 8, !tbaa !9
  %index.next539 = add nuw i64 %index531, 2
  %245 = icmp eq i64 %index.next539, %n.vec527
  br i1 %245, label %middle.block522, label %vector.body530, !llvm.loop !25

middle.block522:                                  ; preds = %vector.body530
  %cmp.n540 = icmp eq i64 %102, %n.vec527
  br i1 %cmp.n540, label %._crit_edge441, label %scalar.ph523.preheader

scalar.ph523.preheader:                           ; preds = %middle.block522, %.lr.ph440
  %.4438.ph = phi i64 [ 1, %.lr.ph440 ], [ %ind.end528, %middle.block522 ]
  br label %scalar.ph523

scalar.ph523:                                     ; preds = %scalar.ph523.preheader, %scalar.ph523
  %.4438 = phi i64 [ %256, %scalar.ph523 ], [ %.4438.ph, %scalar.ph523.preheader ]
  %246 = getelementptr inbounds double, ptr %31, i64 %.4438
  %247 = load double, ptr %246, align 8, !tbaa !9
  %248 = fcmp ogt double %247, %85
  %249 = getelementptr double, ptr %235, i64 %.4438
  %250 = load double, ptr %249, align 8, !tbaa !9
  %251 = fcmp oge double %250, 0.000000e+00
  %252 = fneg double %250
  %253 = select i1 %251, double %250, double %252
  %254 = call double @llvm.fmuladd.f64(double %87, double %247, double %253)
  %255 = fadd double %84, %254
  %storemerge = select i1 %248, double %254, double %255
  store double %storemerge, ptr %246, align 8, !tbaa !9
  %256 = add nuw i64 %.4438, 1
  %exitcond479.not = icmp eq i64 %.4438, %102
  br i1 %exitcond479.not, label %._crit_edge441, label %scalar.ph523, !llvm.loop !26

._crit_edge441:                                   ; preds = %scalar.ph523, %middle.block522, %234
  store i64 0, ptr %20, align 8, !tbaa !5
  %257 = getelementptr inbounds double, ptr %29, i64 %.1354463
  br label %258

258:                                              ; preds = %.loopexit385, %._crit_edge441
  %259 = phi i64 [ %.pre484, %.loopexit385 ], [ %102, %._crit_edge441 ]
  %.idx = shl i64 %259, 4
  %260 = getelementptr i8, ptr %11, i64 %.idx
  %261 = getelementptr double, ptr %11, i64 %259
  %262 = call i32 @dlacn2_(ptr noundef nonnull %1, ptr noundef %260, ptr noundef %261, ptr noundef %12, ptr noundef nonnull %257, ptr noundef nonnull %20, ptr noundef nonnull %21) #5
  %263 = load i64, ptr %20, align 8, !tbaa !5
  switch i64 %263, label %.loopexit385 [
    i64 0, label %301
    i64 1, label %264
    i64 2, label %283
  ]

264:                                              ; preds = %258
  %265 = load i64, ptr %1, align 8, !tbaa !5
  %266 = getelementptr double, ptr %11, i64 %265
  %267 = call i32 @dpptrs_(ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull @c__1, ptr noundef %4, ptr noundef %266, ptr noundef nonnull %1, ptr noundef nonnull %13) #5
  %268 = load i64, ptr %1, align 8, !tbaa !5
  %.not380447 = icmp slt i64 %268, 1
  br i1 %.not380447, label %.loopexit385, label %.lr.ph450

.lr.ph450:                                        ; preds = %264
  %269 = getelementptr double, ptr %31, i64 %268
  %min.iters.check = icmp ult i64 %268, 4
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.ph

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

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

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

scalar.ph:                                        ; preds = %scalar.ph.preheader, %scalar.ph
  %.5448 = phi i64 [ %282, %scalar.ph ], [ %.5448.ph, %scalar.ph.preheader ]
  %277 = getelementptr inbounds double, ptr %31, i64 %.5448
  %278 = load double, ptr %277, align 8, !tbaa !9
  %279 = getelementptr double, ptr %269, i64 %.5448
  %280 = load double, ptr %279, align 8, !tbaa !9
  %281 = fmul double %278, %280
  store double %281, ptr %279, align 8, !tbaa !9
  %282 = add nuw i64 %.5448, 1
  %exitcond481.not = icmp eq i64 %.5448, %268
  br i1 %exitcond481.not, label %.loopexit385, label %scalar.ph, !llvm.loop !28

283:                                              ; preds = %258
  %284 = load i64, ptr %1, align 8, !tbaa !5
  %.not379442 = icmp slt i64 %284, 1
  br i1 %.not379442, label %._crit_edge446, label %.lr.ph445

.lr.ph445:                                        ; preds = %283
  %285 = getelementptr double, ptr %31, i64 %284
  %min.iters.check507 = icmp ult i64 %284, 4
  br i1 %min.iters.check507, label %scalar.ph506.preheader, label %vector.ph508

vector.ph508:                                     ; preds = %.lr.ph445
  %n.vec510 = and i64 %284, 9223372036854775804
  %ind.end511 = or disjoint i64 %n.vec510, 1
  br label %vector.body513

vector.body513:                                   ; preds = %vector.body513, %vector.ph508
  %index514 = phi i64 [ 0, %vector.ph508 ], [ %index.next520, %vector.body513 ]
  %offset.idx515 = or disjoint i64 %index514, 1
  %286 = getelementptr double, ptr %11, i64 %index514
  %287 = getelementptr inbounds i8, ptr %286, i64 16
  %wide.load516 = load <2 x double>, ptr %286, align 8, !tbaa !9
  %wide.load517 = load <2 x double>, ptr %287, align 8, !tbaa !9
  %288 = getelementptr double, ptr %285, i64 %offset.idx515
  %289 = getelementptr i8, ptr %288, i64 16
  %wide.load518 = load <2 x double>, ptr %288, align 8, !tbaa !9
  %wide.load519 = load <2 x double>, ptr %289, align 8, !tbaa !9
  %290 = fmul <2 x double> %wide.load516, %wide.load518
  %291 = fmul <2 x double> %wide.load517, %wide.load519
  store <2 x double> %290, ptr %288, align 8, !tbaa !9
  store <2 x double> %291, ptr %289, align 8, !tbaa !9
  %index.next520 = add nuw i64 %index514, 4
  %292 = icmp eq i64 %index.next520, %n.vec510
  br i1 %292, label %middle.block505, label %vector.body513, !llvm.loop !29

middle.block505:                                  ; preds = %vector.body513
  %cmp.n521 = icmp eq i64 %284, %n.vec510
  br i1 %cmp.n521, label %._crit_edge446, label %scalar.ph506.preheader

scalar.ph506.preheader:                           ; preds = %middle.block505, %.lr.ph445
  %.6443.ph = phi i64 [ 1, %.lr.ph445 ], [ %ind.end511, %middle.block505 ]
  br label %scalar.ph506

scalar.ph506:                                     ; preds = %scalar.ph506.preheader, %scalar.ph506
  %.6443 = phi i64 [ %298, %scalar.ph506 ], [ %.6443.ph, %scalar.ph506.preheader ]
  %293 = getelementptr inbounds double, ptr %31, i64 %.6443
  %294 = load double, ptr %293, align 8, !tbaa !9
  %295 = getelementptr double, ptr %285, i64 %.6443
  %296 = load double, ptr %295, align 8, !tbaa !9
  %297 = fmul double %294, %296
  store double %297, ptr %295, align 8, !tbaa !9
  %298 = add nuw i64 %.6443, 1
  %exitcond480.not = icmp eq i64 %.6443, %284
  br i1 %exitcond480.not, label %._crit_edge446, label %scalar.ph506, !llvm.loop !30

._crit_edge446:                                   ; preds = %scalar.ph506, %middle.block505, %283
  %299 = getelementptr double, ptr %11, i64 %284
  %300 = call i32 @dpptrs_(ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull @c__1, ptr noundef %4, ptr noundef %299, ptr noundef nonnull %1, ptr noundef nonnull %13) #5
  br label %.loopexit385

.loopexit385:                                     ; preds = %scalar.ph, %middle.block, %264, %258, %._crit_edge446
  %.pre484 = load i64, ptr %1, align 8, !tbaa !5
  br label %258

301:                                              ; preds = %258
  %302 = load i64, ptr %1, align 8, !tbaa !5
  %.not378453 = icmp slt i64 %302, 1
  br i1 %.not378453, label %._crit_edge458.thread, label %.lr.ph457.preheader

.lr.ph457.preheader:                              ; preds = %301
  %xtraiter581 = and i64 %302, 1
  %303 = icmp eq i64 %302, 1
  br i1 %303, label %._crit_edge458.unr-lcssa, label %.lr.ph457.preheader.new

.lr.ph457.preheader.new:                          ; preds = %.lr.ph457.preheader
  %unroll_iter = and i64 %302, 9223372036854775806
  %invariant.gep592 = getelementptr i8, ptr %invariant.gep404, i64 8
  br label %.lr.ph457

.lr.ph457:                                        ; preds = %.lr.ph457, %.lr.ph457.preheader.new
  %.1455 = phi double [ 0.000000e+00, %.lr.ph457.preheader.new ], [ %315, %.lr.ph457 ]
  %.7454 = phi i64 [ 1, %.lr.ph457.preheader.new ], [ %316, %.lr.ph457 ]
  %niter = phi i64 [ 0, %.lr.ph457.preheader.new ], [ %niter.next.1, %.lr.ph457 ]
  %gep452 = getelementptr double, ptr %invariant.gep404, i64 %.7454
  %304 = load double, ptr %gep452, align 8, !tbaa !9
  %305 = fcmp oge double %304, 0.000000e+00
  %306 = fneg double %304
  %307 = select i1 %305, double %304, double %306
  %308 = fcmp oge double %.1455, %307
  %309 = select i1 %308, double %.1455, double %307
  %gep593 = getelementptr double, ptr %invariant.gep592, i64 %.7454
  %310 = load double, ptr %gep593, align 8, !tbaa !9
  %311 = fcmp oge double %310, 0.000000e+00
  %312 = fneg double %310
  %313 = select i1 %311, double %310, double %312
  %314 = fcmp oge double %309, %313
  %315 = select i1 %314, double %309, double %313
  %316 = add nuw i64 %.7454, 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_edge458.unr-lcssa, label %.lr.ph457, !llvm.loop !31

._crit_edge458.unr-lcssa:                         ; preds = %.lr.ph457, %.lr.ph457.preheader
  %.lcssa580.ph = phi double [ poison, %.lr.ph457.preheader ], [ %315, %.lr.ph457 ]
  %.1455.unr = phi double [ 0.000000e+00, %.lr.ph457.preheader ], [ %315, %.lr.ph457 ]
  %.7454.unr = phi i64 [ 1, %.lr.ph457.preheader ], [ %316, %.lr.ph457 ]
  %lcmp.mod582.not = icmp eq i64 %xtraiter581, 0
  br i1 %lcmp.mod582.not, label %._crit_edge458, label %.lr.ph457.epil

.lr.ph457.epil:                                   ; preds = %._crit_edge458.unr-lcssa
  %gep452.epil = getelementptr double, ptr %invariant.gep404, i64 %.7454.unr
  %317 = load double, ptr %gep452.epil, align 8, !tbaa !9
  %318 = fcmp oge double %317, 0.000000e+00
  %319 = fneg double %317
  %320 = select i1 %318, double %317, double %319
  %321 = fcmp oge double %.1455.unr, %320
  %322 = select i1 %321, double %.1455.unr, double %320
  br label %._crit_edge458

._crit_edge458:                                   ; preds = %._crit_edge458.unr-lcssa, %.lr.ph457.epil
  %.lcssa580 = phi double [ %.lcssa580.ph, %._crit_edge458.unr-lcssa ], [ %322, %.lr.ph457.epil ]
  %323 = fcmp une double %.lcssa580, 0.000000e+00
  br i1 %323, label %324, label %._crit_edge458.thread

324:                                              ; preds = %._crit_edge458
  %325 = load double, ptr %257, align 8, !tbaa !9
  %326 = fdiv double %325, %.lcssa580
  store double %326, ptr %257, align 8, !tbaa !9
  br label %._crit_edge458.thread

._crit_edge458.thread:                            ; preds = %301, %._crit_edge458, %324
  %327 = add nuw nsw i64 %.1354463, 1
  %.not370.not = icmp slt i64 %.1354463, %86
  %indvar.next = add i64 %indvar, 1
  br i1 %.not370.not, label %.preheader389, label %.loopexit, !llvm.loop !32

.loopexit:                                        ; preds = %._crit_edge458.thread, %.lr.ph467.prol.loopexit, %.lr.ph467, %middle.block558, %53, %79, %54, %.thread
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %21) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #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 @dpptrs_(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