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

; 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
@c__1 = external hidden global i32, align 4
@c_b11 = external hidden global double, align 8
@c_b13 = external hidden global double, align 8

; Function Attrs: nounwind uwtable
define dso_local void @dsptri_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5) #0 {
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca i32, align 4
  %14 = alloca double, align 8
  %15 = alloca double, align 8
  %16 = alloca double, align 8
  %17 = alloca double, align 8
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca double, align 8
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca double, align 8
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca double, align 8
  %31 = alloca i32, align 4
  store ptr %0, ptr %7, align 8, !tbaa !5
  store ptr %1, ptr %8, align 8, !tbaa !5
  store ptr %2, ptr %9, align 8, !tbaa !5
  store ptr %3, ptr %10, align 8, !tbaa !5
  store ptr %4, ptr %11, align 8, !tbaa !5
  store ptr %5, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #4
  %32 = load ptr, ptr %11, align 8, !tbaa !5
  %33 = getelementptr inbounds double, ptr %32, i32 -1
  store ptr %33, ptr %11, align 8, !tbaa !5
  %34 = load ptr, ptr %10, align 8, !tbaa !5
  %35 = getelementptr inbounds i32, ptr %34, i32 -1
  store ptr %35, ptr %10, align 8, !tbaa !5
  %36 = load ptr, ptr %9, align 8, !tbaa !5
  %37 = getelementptr inbounds double, ptr %36, i32 -1
  store ptr %37, ptr %9, align 8, !tbaa !5
  %38 = load ptr, ptr %12, align 8, !tbaa !5
  store i32 0, ptr %38, align 4, !tbaa !9
  %39 = load ptr, ptr %7, align 8, !tbaa !5
  %40 = call i32 @lsame_(ptr noundef %39, ptr noundef @.str)
  store i32 %40, ptr %22, align 4, !tbaa !9
  %41 = load i32, ptr %22, align 4, !tbaa !9
  %42 = icmp ne i32 %41, 0
  br i1 %42, label %49, label %43

43:                                               ; preds = %6
  %44 = load ptr, ptr %7, align 8, !tbaa !5
  %45 = call i32 @lsame_(ptr noundef %44, ptr noundef @.str.1)
  %46 = icmp ne i32 %45, 0
  br i1 %46, label %49, label %47

47:                                               ; preds = %43
  %48 = load ptr, ptr %12, align 8, !tbaa !5
  store i32 -1, ptr %48, align 4, !tbaa !9
  br label %56

49:                                               ; preds = %43, %6
  %50 = load ptr, ptr %8, align 8, !tbaa !5
  %51 = load i32, ptr %50, align 4, !tbaa !9
  %52 = icmp slt i32 %51, 0
  br i1 %52, label %53, label %55

53:                                               ; preds = %49
  %54 = load ptr, ptr %12, align 8, !tbaa !5
  store i32 -2, ptr %54, align 4, !tbaa !9
  br label %55

55:                                               ; preds = %53, %49
  br label %56

56:                                               ; preds = %55, %47
  %57 = load ptr, ptr %12, align 8, !tbaa !5
  %58 = load i32, ptr %57, align 4, !tbaa !9
  %59 = icmp ne i32 %58, 0
  br i1 %59, label %60, label %65

60:                                               ; preds = %56
  %61 = load ptr, ptr %12, align 8, !tbaa !5
  %62 = load i32, ptr %61, align 4, !tbaa !9
  %63 = sub nsw i32 0, %62
  store i32 %63, ptr %13, align 4, !tbaa !9
  %64 = call i32 @xerbla_(ptr noundef @.str.2, ptr noundef %13, i32 noundef 6)
  store i32 1, ptr %31, align 4
  br label %1059

65:                                               ; preds = %56
  %66 = load ptr, ptr %8, align 8, !tbaa !5
  %67 = load i32, ptr %66, align 4, !tbaa !9
  %68 = icmp eq i32 %67, 0
  br i1 %68, label %69, label %70

69:                                               ; preds = %65
  store i32 1, ptr %31, align 4
  br label %1059

70:                                               ; preds = %65
  %71 = load i32, ptr %22, align 4, !tbaa !9
  %72 = icmp ne i32 %71, 0
  br i1 %72, label %73, label %114

73:                                               ; preds = %70
  %74 = load ptr, ptr %8, align 8, !tbaa !5
  %75 = load i32, ptr %74, align 4, !tbaa !9
  %76 = load ptr, ptr %8, align 8, !tbaa !5
  %77 = load i32, ptr %76, align 4, !tbaa !9
  %78 = add nsw i32 %77, 1
  %79 = mul nsw i32 %75, %78
  %80 = sdiv i32 %79, 2
  store i32 %80, ptr %25, align 4, !tbaa !9
  %81 = load ptr, ptr %8, align 8, !tbaa !5
  %82 = load i32, ptr %81, align 4, !tbaa !9
  %83 = load ptr, ptr %12, align 8, !tbaa !5
  store i32 %82, ptr %83, align 4, !tbaa !9
  br label %84

84:                                               ; preds = %109, %73
  %85 = load ptr, ptr %12, align 8, !tbaa !5
  %86 = load i32, ptr %85, align 4, !tbaa !9
  %87 = icmp sge i32 %86, 1
  br i1 %87, label %88, label %113

88:                                               ; preds = %84
  %89 = load ptr, ptr %10, align 8, !tbaa !5
  %90 = load ptr, ptr %12, align 8, !tbaa !5
  %91 = load i32, ptr %90, align 4, !tbaa !9
  %92 = sext i32 %91 to i64
  %93 = getelementptr inbounds i32, ptr %89, i64 %92
  %94 = load i32, ptr %93, align 4, !tbaa !9
  %95 = icmp sgt i32 %94, 0
  br i1 %95, label %96, label %104

96:                                               ; preds = %88
  %97 = load ptr, ptr %9, align 8, !tbaa !5
  %98 = load i32, ptr %25, align 4, !tbaa !9
  %99 = sext i32 %98 to i64
  %100 = getelementptr inbounds double, ptr %97, i64 %99
  %101 = load double, ptr %100, align 8, !tbaa !11
  %102 = fcmp oeq double %101, 0.000000e+00
  br i1 %102, label %103, label %104

103:                                              ; preds = %96
  store i32 1, ptr %31, align 4
  br label %1059

104:                                              ; preds = %96, %88
  %105 = load ptr, ptr %12, align 8, !tbaa !5
  %106 = load i32, ptr %105, align 4, !tbaa !9
  %107 = load i32, ptr %25, align 4, !tbaa !9
  %108 = sub nsw i32 %107, %106
  store i32 %108, ptr %25, align 4, !tbaa !9
  br label %109

109:                                              ; preds = %104
  %110 = load ptr, ptr %12, align 8, !tbaa !5
  %111 = load i32, ptr %110, align 4, !tbaa !9
  %112 = add nsw i32 %111, -1
  store i32 %112, ptr %110, align 4, !tbaa !9
  br label %84, !llvm.loop !13

113:                                              ; preds = %84
  br label %153

114:                                              ; preds = %70
  store i32 1, ptr %25, align 4, !tbaa !9
  %115 = load ptr, ptr %8, align 8, !tbaa !5
  %116 = load i32, ptr %115, align 4, !tbaa !9
  store i32 %116, ptr %13, align 4, !tbaa !9
  %117 = load ptr, ptr %12, align 8, !tbaa !5
  store i32 1, ptr %117, align 4, !tbaa !9
  br label %118

118:                                              ; preds = %148, %114
  %119 = load ptr, ptr %12, align 8, !tbaa !5
  %120 = load i32, ptr %119, align 4, !tbaa !9
  %121 = load i32, ptr %13, align 4, !tbaa !9
  %122 = icmp sle i32 %120, %121
  br i1 %122, label %123, label %152

123:                                              ; preds = %118
  %124 = load ptr, ptr %10, align 8, !tbaa !5
  %125 = load ptr, ptr %12, align 8, !tbaa !5
  %126 = load i32, ptr %125, align 4, !tbaa !9
  %127 = sext i32 %126 to i64
  %128 = getelementptr inbounds i32, ptr %124, i64 %127
  %129 = load i32, ptr %128, align 4, !tbaa !9
  %130 = icmp sgt i32 %129, 0
  br i1 %130, label %131, label %139

131:                                              ; preds = %123
  %132 = load ptr, ptr %9, align 8, !tbaa !5
  %133 = load i32, ptr %25, align 4, !tbaa !9
  %134 = sext i32 %133 to i64
  %135 = getelementptr inbounds double, ptr %132, i64 %134
  %136 = load double, ptr %135, align 8, !tbaa !11
  %137 = fcmp oeq double %136, 0.000000e+00
  br i1 %137, label %138, label %139

138:                                              ; preds = %131
  store i32 1, ptr %31, align 4
  br label %1059

139:                                              ; preds = %131, %123
  %140 = load i32, ptr %25, align 4, !tbaa !9
  %141 = load ptr, ptr %8, align 8, !tbaa !5
  %142 = load i32, ptr %141, align 4, !tbaa !9
  %143 = add nsw i32 %140, %142
  %144 = load ptr, ptr %12, align 8, !tbaa !5
  %145 = load i32, ptr %144, align 4, !tbaa !9
  %146 = sub nsw i32 %143, %145
  %147 = add nsw i32 %146, 1
  store i32 %147, ptr %25, align 4, !tbaa !9
  br label %148

148:                                              ; preds = %139
  %149 = load ptr, ptr %12, align 8, !tbaa !5
  %150 = load i32, ptr %149, align 4, !tbaa !9
  %151 = add nsw i32 %150, 1
  store i32 %151, ptr %149, align 4, !tbaa !9
  br label %118, !llvm.loop !15

152:                                              ; preds = %118
  br label %153

153:                                              ; preds = %152, %113
  %154 = load ptr, ptr %12, align 8, !tbaa !5
  store i32 0, ptr %154, align 4, !tbaa !9
  %155 = load i32, ptr %22, align 4, !tbaa !9
  %156 = icmp ne i32 %155, 0
  br i1 %156, label %157, label %576

157:                                              ; preds = %153
  store i32 1, ptr %19, align 4, !tbaa !9
  store i32 1, ptr %24, align 4, !tbaa !9
  br label %158

158:                                              ; preds = %570, %157
  %159 = load i32, ptr %19, align 4, !tbaa !9
  %160 = load ptr, ptr %8, align 8, !tbaa !5
  %161 = load i32, ptr %160, align 4, !tbaa !9
  %162 = icmp sgt i32 %159, %161
  br i1 %162, label %163, label %164

163:                                              ; preds = %158
  br label %575

164:                                              ; preds = %158
  %165 = load i32, ptr %24, align 4, !tbaa !9
  %166 = load i32, ptr %19, align 4, !tbaa !9
  %167 = add nsw i32 %165, %166
  store i32 %167, ptr %27, align 4, !tbaa !9
  %168 = load ptr, ptr %10, align 8, !tbaa !5
  %169 = load i32, ptr %19, align 4, !tbaa !9
  %170 = sext i32 %169 to i64
  %171 = getelementptr inbounds i32, ptr %168, i64 %170
  %172 = load i32, ptr %171, align 4, !tbaa !9
  %173 = icmp sgt i32 %172, 0
  br i1 %173, label %174, label %232

174:                                              ; preds = %164
  %175 = load ptr, ptr %9, align 8, !tbaa !5
  %176 = load i32, ptr %24, align 4, !tbaa !9
  %177 = load i32, ptr %19, align 4, !tbaa !9
  %178 = add nsw i32 %176, %177
  %179 = sub nsw i32 %178, 1
  %180 = sext i32 %179 to i64
  %181 = getelementptr inbounds double, ptr %175, i64 %180
  %182 = load double, ptr %181, align 8, !tbaa !11
  %183 = fdiv double 1.000000e+00, %182
  %184 = load ptr, ptr %9, align 8, !tbaa !5
  %185 = load i32, ptr %24, align 4, !tbaa !9
  %186 = load i32, ptr %19, align 4, !tbaa !9
  %187 = add nsw i32 %185, %186
  %188 = sub nsw i32 %187, 1
  %189 = sext i32 %188 to i64
  %190 = getelementptr inbounds double, ptr %184, i64 %189
  store double %183, ptr %190, align 8, !tbaa !11
  %191 = load i32, ptr %19, align 4, !tbaa !9
  %192 = icmp sgt i32 %191, 1
  br i1 %192, label %193, label %231

193:                                              ; preds = %174
  %194 = load i32, ptr %19, align 4, !tbaa !9
  %195 = sub nsw i32 %194, 1
  store i32 %195, ptr %13, align 4, !tbaa !9
  %196 = load ptr, ptr %9, align 8, !tbaa !5
  %197 = load i32, ptr %24, align 4, !tbaa !9
  %198 = sext i32 %197 to i64
  %199 = getelementptr inbounds double, ptr %196, i64 %198
  %200 = load ptr, ptr %11, align 8, !tbaa !5
  %201 = getelementptr inbounds double, ptr %200, i64 1
  call void @dcopy_(ptr noundef %13, ptr noundef %199, ptr noundef @c__1, ptr noundef %201, ptr noundef @c__1)
  %202 = load i32, ptr %19, align 4, !tbaa !9
  %203 = sub nsw i32 %202, 1
  store i32 %203, ptr %13, align 4, !tbaa !9
  %204 = load ptr, ptr %7, align 8, !tbaa !5
  %205 = load ptr, ptr %9, align 8, !tbaa !5
  %206 = getelementptr inbounds double, ptr %205, i64 1
  %207 = load ptr, ptr %11, align 8, !tbaa !5
  %208 = getelementptr inbounds double, ptr %207, i64 1
  %209 = load ptr, ptr %9, align 8, !tbaa !5
  %210 = load i32, ptr %24, align 4, !tbaa !9
  %211 = sext i32 %210 to i64
  %212 = getelementptr inbounds double, ptr %209, i64 %211
  call void @dspmv_(ptr noundef %204, ptr noundef %13, ptr noundef @c_b11, ptr noundef %206, ptr noundef %208, ptr noundef @c__1, ptr noundef @c_b13, ptr noundef %212, ptr noundef @c__1)
  %213 = load i32, ptr %19, align 4, !tbaa !9
  %214 = sub nsw i32 %213, 1
  store i32 %214, ptr %13, align 4, !tbaa !9
  %215 = load ptr, ptr %11, align 8, !tbaa !5
  %216 = getelementptr inbounds double, ptr %215, i64 1
  %217 = load ptr, ptr %9, align 8, !tbaa !5
  %218 = load i32, ptr %24, align 4, !tbaa !9
  %219 = sext i32 %218 to i64
  %220 = getelementptr inbounds double, ptr %217, i64 %219
  %221 = call double @ddot_(ptr noundef %13, ptr noundef %216, ptr noundef @c__1, ptr noundef %220, ptr noundef @c__1)
  %222 = load ptr, ptr %9, align 8, !tbaa !5
  %223 = load i32, ptr %24, align 4, !tbaa !9
  %224 = load i32, ptr %19, align 4, !tbaa !9
  %225 = add nsw i32 %223, %224
  %226 = sub nsw i32 %225, 1
  %227 = sext i32 %226 to i64
  %228 = getelementptr inbounds double, ptr %222, i64 %227
  %229 = load double, ptr %228, align 8, !tbaa !11
  %230 = fsub double %229, %221
  store double %230, ptr %228, align 8, !tbaa !11
  br label %231

231:                                              ; preds = %193, %174
  store i32 1, ptr %21, align 4, !tbaa !9
  br label %415

232:                                              ; preds = %164
  %233 = load ptr, ptr %9, align 8, !tbaa !5
  %234 = load i32, ptr %27, align 4, !tbaa !9
  %235 = load i32, ptr %19, align 4, !tbaa !9
  %236 = add nsw i32 %234, %235
  %237 = sub nsw i32 %236, 1
  %238 = sext i32 %237 to i64
  %239 = getelementptr inbounds double, ptr %233, i64 %238
  %240 = load double, ptr %239, align 8, !tbaa !11
  store double %240, ptr %14, align 8, !tbaa !11
  %241 = load double, ptr %14, align 8, !tbaa !11
  %242 = fcmp oge double %241, 0.000000e+00
  br i1 %242, label %243, label %245

243:                                              ; preds = %232
  %244 = load double, ptr %14, align 8, !tbaa !11
  br label %248

245:                                              ; preds = %232
  %246 = load double, ptr %14, align 8, !tbaa !11
  %247 = fneg double %246
  br label %248

248:                                              ; preds = %245, %243
  %249 = phi double [ %244, %243 ], [ %247, %245 ]
  store double %249, ptr %20, align 8, !tbaa !11
  %250 = load ptr, ptr %9, align 8, !tbaa !5
  %251 = load i32, ptr %24, align 4, !tbaa !9
  %252 = load i32, ptr %19, align 4, !tbaa !9
  %253 = add nsw i32 %251, %252
  %254 = sub nsw i32 %253, 1
  %255 = sext i32 %254 to i64
  %256 = getelementptr inbounds double, ptr %250, i64 %255
  %257 = load double, ptr %256, align 8, !tbaa !11
  %258 = load double, ptr %20, align 8, !tbaa !11
  %259 = fdiv double %257, %258
  store double %259, ptr %23, align 8, !tbaa !11
  %260 = load ptr, ptr %9, align 8, !tbaa !5
  %261 = load i32, ptr %27, align 4, !tbaa !9
  %262 = load i32, ptr %19, align 4, !tbaa !9
  %263 = add nsw i32 %261, %262
  %264 = sext i32 %263 to i64
  %265 = getelementptr inbounds double, ptr %260, i64 %264
  %266 = load double, ptr %265, align 8, !tbaa !11
  %267 = load double, ptr %20, align 8, !tbaa !11
  %268 = fdiv double %266, %267
  store double %268, ptr %30, align 8, !tbaa !11
  %269 = load ptr, ptr %9, align 8, !tbaa !5
  %270 = load i32, ptr %27, align 4, !tbaa !9
  %271 = load i32, ptr %19, align 4, !tbaa !9
  %272 = add nsw i32 %270, %271
  %273 = sub nsw i32 %272, 1
  %274 = sext i32 %273 to i64
  %275 = getelementptr inbounds double, ptr %269, i64 %274
  %276 = load double, ptr %275, align 8, !tbaa !11
  %277 = load double, ptr %20, align 8, !tbaa !11
  %278 = fdiv double %276, %277
  store double %278, ptr %16, align 8, !tbaa !11
  %279 = load double, ptr %20, align 8, !tbaa !11
  %280 = load double, ptr %23, align 8, !tbaa !11
  %281 = load double, ptr %30, align 8, !tbaa !11
  %282 = call double @llvm.fmuladd.f64(double %280, double %281, double -1.000000e+00)
  %283 = fmul double %279, %282
  store double %283, ptr %17, align 8, !tbaa !11
  %284 = load double, ptr %30, align 8, !tbaa !11
  %285 = load double, ptr %17, align 8, !tbaa !11
  %286 = fdiv double %284, %285
  %287 = load ptr, ptr %9, align 8, !tbaa !5
  %288 = load i32, ptr %24, align 4, !tbaa !9
  %289 = load i32, ptr %19, align 4, !tbaa !9
  %290 = add nsw i32 %288, %289
  %291 = sub nsw i32 %290, 1
  %292 = sext i32 %291 to i64
  %293 = getelementptr inbounds double, ptr %287, i64 %292
  store double %286, ptr %293, align 8, !tbaa !11
  %294 = load double, ptr %23, align 8, !tbaa !11
  %295 = load double, ptr %17, align 8, !tbaa !11
  %296 = fdiv double %294, %295
  %297 = load ptr, ptr %9, align 8, !tbaa !5
  %298 = load i32, ptr %27, align 4, !tbaa !9
  %299 = load i32, ptr %19, align 4, !tbaa !9
  %300 = add nsw i32 %298, %299
  %301 = sext i32 %300 to i64
  %302 = getelementptr inbounds double, ptr %297, i64 %301
  store double %296, ptr %302, align 8, !tbaa !11
  %303 = load double, ptr %16, align 8, !tbaa !11
  %304 = fneg double %303
  %305 = load double, ptr %17, align 8, !tbaa !11
  %306 = fdiv double %304, %305
  %307 = load ptr, ptr %9, align 8, !tbaa !5
  %308 = load i32, ptr %27, align 4, !tbaa !9
  %309 = load i32, ptr %19, align 4, !tbaa !9
  %310 = add nsw i32 %308, %309
  %311 = sub nsw i32 %310, 1
  %312 = sext i32 %311 to i64
  %313 = getelementptr inbounds double, ptr %307, i64 %312
  store double %306, ptr %313, align 8, !tbaa !11
  %314 = load i32, ptr %19, align 4, !tbaa !9
  %315 = icmp sgt i32 %314, 1
  br i1 %315, label %316, label %410

316:                                              ; preds = %248
  %317 = load i32, ptr %19, align 4, !tbaa !9
  %318 = sub nsw i32 %317, 1
  store i32 %318, ptr %13, align 4, !tbaa !9
  %319 = load ptr, ptr %9, align 8, !tbaa !5
  %320 = load i32, ptr %24, align 4, !tbaa !9
  %321 = sext i32 %320 to i64
  %322 = getelementptr inbounds double, ptr %319, i64 %321
  %323 = load ptr, ptr %11, align 8, !tbaa !5
  %324 = getelementptr inbounds double, ptr %323, i64 1
  call void @dcopy_(ptr noundef %13, ptr noundef %322, ptr noundef @c__1, ptr noundef %324, ptr noundef @c__1)
  %325 = load i32, ptr %19, align 4, !tbaa !9
  %326 = sub nsw i32 %325, 1
  store i32 %326, ptr %13, align 4, !tbaa !9
  %327 = load ptr, ptr %7, align 8, !tbaa !5
  %328 = load ptr, ptr %9, align 8, !tbaa !5
  %329 = getelementptr inbounds double, ptr %328, i64 1
  %330 = load ptr, ptr %11, align 8, !tbaa !5
  %331 = getelementptr inbounds double, ptr %330, i64 1
  %332 = load ptr, ptr %9, align 8, !tbaa !5
  %333 = load i32, ptr %24, align 4, !tbaa !9
  %334 = sext i32 %333 to i64
  %335 = getelementptr inbounds double, ptr %332, i64 %334
  call void @dspmv_(ptr noundef %327, ptr noundef %13, ptr noundef @c_b11, ptr noundef %329, ptr noundef %331, ptr noundef @c__1, ptr noundef @c_b13, ptr noundef %335, ptr noundef @c__1)
  %336 = load i32, ptr %19, align 4, !tbaa !9
  %337 = sub nsw i32 %336, 1
  store i32 %337, ptr %13, align 4, !tbaa !9
  %338 = load ptr, ptr %11, align 8, !tbaa !5
  %339 = getelementptr inbounds double, ptr %338, i64 1
  %340 = load ptr, ptr %9, align 8, !tbaa !5
  %341 = load i32, ptr %24, align 4, !tbaa !9
  %342 = sext i32 %341 to i64
  %343 = getelementptr inbounds double, ptr %340, i64 %342
  %344 = call double @ddot_(ptr noundef %13, ptr noundef %339, ptr noundef @c__1, ptr noundef %343, ptr noundef @c__1)
  %345 = load ptr, ptr %9, align 8, !tbaa !5
  %346 = load i32, ptr %24, align 4, !tbaa !9
  %347 = load i32, ptr %19, align 4, !tbaa !9
  %348 = add nsw i32 %346, %347
  %349 = sub nsw i32 %348, 1
  %350 = sext i32 %349 to i64
  %351 = getelementptr inbounds double, ptr %345, i64 %350
  %352 = load double, ptr %351, align 8, !tbaa !11
  %353 = fsub double %352, %344
  store double %353, ptr %351, align 8, !tbaa !11
  %354 = load i32, ptr %19, align 4, !tbaa !9
  %355 = sub nsw i32 %354, 1
  store i32 %355, ptr %13, align 4, !tbaa !9
  %356 = load ptr, ptr %9, align 8, !tbaa !5
  %357 = load i32, ptr %24, align 4, !tbaa !9
  %358 = sext i32 %357 to i64
  %359 = getelementptr inbounds double, ptr %356, i64 %358
  %360 = load ptr, ptr %9, align 8, !tbaa !5
  %361 = load i32, ptr %27, align 4, !tbaa !9
  %362 = sext i32 %361 to i64
  %363 = getelementptr inbounds double, ptr %360, i64 %362
  %364 = call double @ddot_(ptr noundef %13, ptr noundef %359, ptr noundef @c__1, ptr noundef %363, ptr noundef @c__1)
  %365 = load ptr, ptr %9, align 8, !tbaa !5
  %366 = load i32, ptr %27, align 4, !tbaa !9
  %367 = load i32, ptr %19, align 4, !tbaa !9
  %368 = add nsw i32 %366, %367
  %369 = sub nsw i32 %368, 1
  %370 = sext i32 %369 to i64
  %371 = getelementptr inbounds double, ptr %365, i64 %370
  %372 = load double, ptr %371, align 8, !tbaa !11
  %373 = fsub double %372, %364
  store double %373, ptr %371, align 8, !tbaa !11
  %374 = load i32, ptr %19, align 4, !tbaa !9
  %375 = sub nsw i32 %374, 1
  store i32 %375, ptr %13, align 4, !tbaa !9
  %376 = load ptr, ptr %9, align 8, !tbaa !5
  %377 = load i32, ptr %27, align 4, !tbaa !9
  %378 = sext i32 %377 to i64
  %379 = getelementptr inbounds double, ptr %376, i64 %378
  %380 = load ptr, ptr %11, align 8, !tbaa !5
  %381 = getelementptr inbounds double, ptr %380, i64 1
  call void @dcopy_(ptr noundef %13, ptr noundef %379, ptr noundef @c__1, ptr noundef %381, ptr noundef @c__1)
  %382 = load i32, ptr %19, align 4, !tbaa !9
  %383 = sub nsw i32 %382, 1
  store i32 %383, ptr %13, align 4, !tbaa !9
  %384 = load ptr, ptr %7, align 8, !tbaa !5
  %385 = load ptr, ptr %9, align 8, !tbaa !5
  %386 = getelementptr inbounds double, ptr %385, i64 1
  %387 = load ptr, ptr %11, align 8, !tbaa !5
  %388 = getelementptr inbounds double, ptr %387, i64 1
  %389 = load ptr, ptr %9, align 8, !tbaa !5
  %390 = load i32, ptr %27, align 4, !tbaa !9
  %391 = sext i32 %390 to i64
  %392 = getelementptr inbounds double, ptr %389, i64 %391
  call void @dspmv_(ptr noundef %384, ptr noundef %13, ptr noundef @c_b11, ptr noundef %386, ptr noundef %388, ptr noundef @c__1, ptr noundef @c_b13, ptr noundef %392, ptr noundef @c__1)
  %393 = load i32, ptr %19, align 4, !tbaa !9
  %394 = sub nsw i32 %393, 1
  store i32 %394, ptr %13, align 4, !tbaa !9
  %395 = load ptr, ptr %11, align 8, !tbaa !5
  %396 = getelementptr inbounds double, ptr %395, i64 1
  %397 = load ptr, ptr %9, align 8, !tbaa !5
  %398 = load i32, ptr %27, align 4, !tbaa !9
  %399 = sext i32 %398 to i64
  %400 = getelementptr inbounds double, ptr %397, i64 %399
  %401 = call double @ddot_(ptr noundef %13, ptr noundef %396, ptr noundef @c__1, ptr noundef %400, ptr noundef @c__1)
  %402 = load ptr, ptr %9, align 8, !tbaa !5
  %403 = load i32, ptr %27, align 4, !tbaa !9
  %404 = load i32, ptr %19, align 4, !tbaa !9
  %405 = add nsw i32 %403, %404
  %406 = sext i32 %405 to i64
  %407 = getelementptr inbounds double, ptr %402, i64 %406
  %408 = load double, ptr %407, align 8, !tbaa !11
  %409 = fsub double %408, %401
  store double %409, ptr %407, align 8, !tbaa !11
  br label %410

410:                                              ; preds = %316, %248
  store i32 2, ptr %21, align 4, !tbaa !9
  %411 = load i32, ptr %27, align 4, !tbaa !9
  %412 = load i32, ptr %19, align 4, !tbaa !9
  %413 = add nsw i32 %411, %412
  %414 = add nsw i32 %413, 1
  store i32 %414, ptr %27, align 4, !tbaa !9
  br label %415

415:                                              ; preds = %410, %231
  %416 = load ptr, ptr %10, align 8, !tbaa !5
  %417 = load i32, ptr %19, align 4, !tbaa !9
  %418 = sext i32 %417 to i64
  %419 = getelementptr inbounds i32, ptr %416, i64 %418
  %420 = load i32, ptr %419, align 4, !tbaa !9
  store i32 %420, ptr %13, align 4, !tbaa !9
  %421 = load i32, ptr %13, align 4, !tbaa !9
  %422 = icmp sge i32 %421, 0
  br i1 %422, label %423, label %425

423:                                              ; preds = %415
  %424 = load i32, ptr %13, align 4, !tbaa !9
  br label %428

425:                                              ; preds = %415
  %426 = load i32, ptr %13, align 4, !tbaa !9
  %427 = sub nsw i32 0, %426
  br label %428

428:                                              ; preds = %425, %423
  %429 = phi i32 [ %424, %423 ], [ %427, %425 ]
  store i32 %429, ptr %25, align 4, !tbaa !9
  %430 = load i32, ptr %25, align 4, !tbaa !9
  %431 = load i32, ptr %19, align 4, !tbaa !9
  %432 = icmp ne i32 %430, %431
  br i1 %432, label %433, label %570

433:                                              ; preds = %428
  %434 = load i32, ptr %25, align 4, !tbaa !9
  %435 = sub nsw i32 %434, 1
  %436 = load i32, ptr %25, align 4, !tbaa !9
  %437 = mul nsw i32 %435, %436
  %438 = sdiv i32 %437, 2
  %439 = add nsw i32 %438, 1
  store i32 %439, ptr %28, align 4, !tbaa !9
  %440 = load i32, ptr %25, align 4, !tbaa !9
  %441 = sub nsw i32 %440, 1
  store i32 %441, ptr %13, align 4, !tbaa !9
  %442 = load ptr, ptr %9, align 8, !tbaa !5
  %443 = load i32, ptr %24, align 4, !tbaa !9
  %444 = sext i32 %443 to i64
  %445 = getelementptr inbounds double, ptr %442, i64 %444
  %446 = load ptr, ptr %9, align 8, !tbaa !5
  %447 = load i32, ptr %28, align 4, !tbaa !9
  %448 = sext i32 %447 to i64
  %449 = getelementptr inbounds double, ptr %446, i64 %448
  call void @dswap_(ptr noundef %13, ptr noundef %445, ptr noundef @c__1, ptr noundef %449, ptr noundef @c__1)
  %450 = load i32, ptr %28, align 4, !tbaa !9
  %451 = load i32, ptr %25, align 4, !tbaa !9
  %452 = add nsw i32 %450, %451
  %453 = sub nsw i32 %452, 1
  store i32 %453, ptr %26, align 4, !tbaa !9
  %454 = load i32, ptr %19, align 4, !tbaa !9
  %455 = sub nsw i32 %454, 1
  store i32 %455, ptr %13, align 4, !tbaa !9
  %456 = load i32, ptr %25, align 4, !tbaa !9
  %457 = add nsw i32 %456, 1
  store i32 %457, ptr %18, align 4, !tbaa !9
  br label %458

458:                                              ; preds = %492, %433
  %459 = load i32, ptr %18, align 4, !tbaa !9
  %460 = load i32, ptr %13, align 4, !tbaa !9
  %461 = icmp sle i32 %459, %460
  br i1 %461, label %462, label %495

462:                                              ; preds = %458
  %463 = load i32, ptr %26, align 4, !tbaa !9
  %464 = load i32, ptr %18, align 4, !tbaa !9
  %465 = add nsw i32 %463, %464
  %466 = sub nsw i32 %465, 1
  store i32 %466, ptr %26, align 4, !tbaa !9
  %467 = load ptr, ptr %9, align 8, !tbaa !5
  %468 = load i32, ptr %24, align 4, !tbaa !9
  %469 = load i32, ptr %18, align 4, !tbaa !9
  %470 = add nsw i32 %468, %469
  %471 = sub nsw i32 %470, 1
  %472 = sext i32 %471 to i64
  %473 = getelementptr inbounds double, ptr %467, i64 %472
  %474 = load double, ptr %473, align 8, !tbaa !11
  store double %474, ptr %15, align 8, !tbaa !11
  %475 = load ptr, ptr %9, align 8, !tbaa !5
  %476 = load i32, ptr %26, align 4, !tbaa !9
  %477 = sext i32 %476 to i64
  %478 = getelementptr inbounds double, ptr %475, i64 %477
  %479 = load double, ptr %478, align 8, !tbaa !11
  %480 = load ptr, ptr %9, align 8, !tbaa !5
  %481 = load i32, ptr %24, align 4, !tbaa !9
  %482 = load i32, ptr %18, align 4, !tbaa !9
  %483 = add nsw i32 %481, %482
  %484 = sub nsw i32 %483, 1
  %485 = sext i32 %484 to i64
  %486 = getelementptr inbounds double, ptr %480, i64 %485
  store double %479, ptr %486, align 8, !tbaa !11
  %487 = load double, ptr %15, align 8, !tbaa !11
  %488 = load ptr, ptr %9, align 8, !tbaa !5
  %489 = load i32, ptr %26, align 4, !tbaa !9
  %490 = sext i32 %489 to i64
  %491 = getelementptr inbounds double, ptr %488, i64 %490
  store double %487, ptr %491, align 8, !tbaa !11
  br label %492

492:                                              ; preds = %462
  %493 = load i32, ptr %18, align 4, !tbaa !9
  %494 = add nsw i32 %493, 1
  store i32 %494, ptr %18, align 4, !tbaa !9
  br label %458, !llvm.loop !16

495:                                              ; preds = %458
  %496 = load ptr, ptr %9, align 8, !tbaa !5
  %497 = load i32, ptr %24, align 4, !tbaa !9
  %498 = load i32, ptr %19, align 4, !tbaa !9
  %499 = add nsw i32 %497, %498
  %500 = sub nsw i32 %499, 1
  %501 = sext i32 %500 to i64
  %502 = getelementptr inbounds double, ptr %496, i64 %501
  %503 = load double, ptr %502, align 8, !tbaa !11
  store double %503, ptr %15, align 8, !tbaa !11
  %504 = load ptr, ptr %9, align 8, !tbaa !5
  %505 = load i32, ptr %28, align 4, !tbaa !9
  %506 = load i32, ptr %25, align 4, !tbaa !9
  %507 = add nsw i32 %505, %506
  %508 = sub nsw i32 %507, 1
  %509 = sext i32 %508 to i64
  %510 = getelementptr inbounds double, ptr %504, i64 %509
  %511 = load double, ptr %510, align 8, !tbaa !11
  %512 = load ptr, ptr %9, align 8, !tbaa !5
  %513 = load i32, ptr %24, align 4, !tbaa !9
  %514 = load i32, ptr %19, align 4, !tbaa !9
  %515 = add nsw i32 %513, %514
  %516 = sub nsw i32 %515, 1
  %517 = sext i32 %516 to i64
  %518 = getelementptr inbounds double, ptr %512, i64 %517
  store double %511, ptr %518, align 8, !tbaa !11
  %519 = load double, ptr %15, align 8, !tbaa !11
  %520 = load ptr, ptr %9, align 8, !tbaa !5
  %521 = load i32, ptr %28, align 4, !tbaa !9
  %522 = load i32, ptr %25, align 4, !tbaa !9
  %523 = add nsw i32 %521, %522
  %524 = sub nsw i32 %523, 1
  %525 = sext i32 %524 to i64
  %526 = getelementptr inbounds double, ptr %520, i64 %525
  store double %519, ptr %526, align 8, !tbaa !11
  %527 = load i32, ptr %21, align 4, !tbaa !9
  %528 = icmp eq i32 %527, 2
  br i1 %528, label %529, label %569

529:                                              ; preds = %495
  %530 = load ptr, ptr %9, align 8, !tbaa !5
  %531 = load i32, ptr %24, align 4, !tbaa !9
  %532 = load i32, ptr %19, align 4, !tbaa !9
  %533 = add nsw i32 %531, %532
  %534 = load i32, ptr %19, align 4, !tbaa !9
  %535 = add nsw i32 %533, %534
  %536 = sub nsw i32 %535, 1
  %537 = sext i32 %536 to i64
  %538 = getelementptr inbounds double, ptr %530, i64 %537
  %539 = load double, ptr %538, align 8, !tbaa !11
  store double %539, ptr %15, align 8, !tbaa !11
  %540 = load ptr, ptr %9, align 8, !tbaa !5
  %541 = load i32, ptr %24, align 4, !tbaa !9
  %542 = load i32, ptr %19, align 4, !tbaa !9
  %543 = add nsw i32 %541, %542
  %544 = load i32, ptr %25, align 4, !tbaa !9
  %545 = add nsw i32 %543, %544
  %546 = sub nsw i32 %545, 1
  %547 = sext i32 %546 to i64
  %548 = getelementptr inbounds double, ptr %540, i64 %547
  %549 = load double, ptr %548, align 8, !tbaa !11
  %550 = load ptr, ptr %9, align 8, !tbaa !5
  %551 = load i32, ptr %24, align 4, !tbaa !9
  %552 = load i32, ptr %19, align 4, !tbaa !9
  %553 = add nsw i32 %551, %552
  %554 = load i32, ptr %19, align 4, !tbaa !9
  %555 = add nsw i32 %553, %554
  %556 = sub nsw i32 %555, 1
  %557 = sext i32 %556 to i64
  %558 = getelementptr inbounds double, ptr %550, i64 %557
  store double %549, ptr %558, align 8, !tbaa !11
  %559 = load double, ptr %15, align 8, !tbaa !11
  %560 = load ptr, ptr %9, align 8, !tbaa !5
  %561 = load i32, ptr %24, align 4, !tbaa !9
  %562 = load i32, ptr %19, align 4, !tbaa !9
  %563 = add nsw i32 %561, %562
  %564 = load i32, ptr %25, align 4, !tbaa !9
  %565 = add nsw i32 %563, %564
  %566 = sub nsw i32 %565, 1
  %567 = sext i32 %566 to i64
  %568 = getelementptr inbounds double, ptr %560, i64 %567
  store double %559, ptr %568, align 8, !tbaa !11
  br label %569

569:                                              ; preds = %529, %495
  br label %570

570:                                              ; preds = %569, %428
  %571 = load i32, ptr %21, align 4, !tbaa !9
  %572 = load i32, ptr %19, align 4, !tbaa !9
  %573 = add nsw i32 %572, %571
  store i32 %573, ptr %19, align 4, !tbaa !9
  %574 = load i32, ptr %27, align 4, !tbaa !9
  store i32 %574, ptr %24, align 4, !tbaa !9
  br label %158

575:                                              ; preds = %163
  br label %1058

576:                                              ; preds = %153
  %577 = load ptr, ptr %8, align 8, !tbaa !5
  %578 = load i32, ptr %577, align 4, !tbaa !9
  %579 = load ptr, ptr %8, align 8, !tbaa !5
  %580 = load i32, ptr %579, align 4, !tbaa !9
  %581 = add nsw i32 %580, 1
  %582 = mul nsw i32 %578, %581
  %583 = sdiv i32 %582, 2
  store i32 %583, ptr %29, align 4, !tbaa !9
  %584 = load ptr, ptr %8, align 8, !tbaa !5
  %585 = load i32, ptr %584, align 4, !tbaa !9
  store i32 %585, ptr %19, align 4, !tbaa !9
  %586 = load i32, ptr %29, align 4, !tbaa !9
  store i32 %586, ptr %24, align 4, !tbaa !9
  br label %587

587:                                              ; preds = %1052, %576
  %588 = load i32, ptr %19, align 4, !tbaa !9
  %589 = icmp slt i32 %588, 1
  br i1 %589, label %590, label %591

590:                                              ; preds = %587
  br label %1057

591:                                              ; preds = %587
  %592 = load i32, ptr %24, align 4, !tbaa !9
  %593 = load ptr, ptr %8, align 8, !tbaa !5
  %594 = load i32, ptr %593, align 4, !tbaa !9
  %595 = load i32, ptr %19, align 4, !tbaa !9
  %596 = sub nsw i32 %594, %595
  %597 = add nsw i32 %596, 2
  %598 = sub nsw i32 %592, %597
  store i32 %598, ptr %27, align 4, !tbaa !9
  %599 = load ptr, ptr %10, align 8, !tbaa !5
  %600 = load i32, ptr %19, align 4, !tbaa !9
  %601 = sext i32 %600 to i64
  %602 = getelementptr inbounds i32, ptr %599, i64 %601
  %603 = load i32, ptr %602, align 4, !tbaa !9
  %604 = icmp sgt i32 %603, 0
  br i1 %604, label %605, label %673

605:                                              ; preds = %591
  %606 = load ptr, ptr %9, align 8, !tbaa !5
  %607 = load i32, ptr %24, align 4, !tbaa !9
  %608 = sext i32 %607 to i64
  %609 = getelementptr inbounds double, ptr %606, i64 %608
  %610 = load double, ptr %609, align 8, !tbaa !11
  %611 = fdiv double 1.000000e+00, %610
  %612 = load ptr, ptr %9, align 8, !tbaa !5
  %613 = load i32, ptr %24, align 4, !tbaa !9
  %614 = sext i32 %613 to i64
  %615 = getelementptr inbounds double, ptr %612, i64 %614
  store double %611, ptr %615, align 8, !tbaa !11
  %616 = load i32, ptr %19, align 4, !tbaa !9
  %617 = load ptr, ptr %8, align 8, !tbaa !5
  %618 = load i32, ptr %617, align 4, !tbaa !9
  %619 = icmp slt i32 %616, %618
  br i1 %619, label %620, label %672

620:                                              ; preds = %605
  %621 = load ptr, ptr %8, align 8, !tbaa !5
  %622 = load i32, ptr %621, align 4, !tbaa !9
  %623 = load i32, ptr %19, align 4, !tbaa !9
  %624 = sub nsw i32 %622, %623
  store i32 %624, ptr %13, align 4, !tbaa !9
  %625 = load ptr, ptr %9, align 8, !tbaa !5
  %626 = load i32, ptr %24, align 4, !tbaa !9
  %627 = add nsw i32 %626, 1
  %628 = sext i32 %627 to i64
  %629 = getelementptr inbounds double, ptr %625, i64 %628
  %630 = load ptr, ptr %11, align 8, !tbaa !5
  %631 = getelementptr inbounds double, ptr %630, i64 1
  call void @dcopy_(ptr noundef %13, ptr noundef %629, ptr noundef @c__1, ptr noundef %631, ptr noundef @c__1)
  %632 = load ptr, ptr %8, align 8, !tbaa !5
  %633 = load i32, ptr %632, align 4, !tbaa !9
  %634 = load i32, ptr %19, align 4, !tbaa !9
  %635 = sub nsw i32 %633, %634
  store i32 %635, ptr %13, align 4, !tbaa !9
  %636 = load ptr, ptr %7, align 8, !tbaa !5
  %637 = load ptr, ptr %9, align 8, !tbaa !5
  %638 = load i32, ptr %24, align 4, !tbaa !9
  %639 = load ptr, ptr %8, align 8, !tbaa !5
  %640 = load i32, ptr %639, align 4, !tbaa !9
  %641 = add nsw i32 %638, %640
  %642 = load i32, ptr %19, align 4, !tbaa !9
  %643 = sub nsw i32 %641, %642
  %644 = add nsw i32 %643, 1
  %645 = sext i32 %644 to i64
  %646 = getelementptr inbounds double, ptr %637, i64 %645
  %647 = load ptr, ptr %11, align 8, !tbaa !5
  %648 = getelementptr inbounds double, ptr %647, i64 1
  %649 = load ptr, ptr %9, align 8, !tbaa !5
  %650 = load i32, ptr %24, align 4, !tbaa !9
  %651 = add nsw i32 %650, 1
  %652 = sext i32 %651 to i64
  %653 = getelementptr inbounds double, ptr %649, i64 %652
  call void @dspmv_(ptr noundef %636, ptr noundef %13, ptr noundef @c_b11, ptr noundef %646, ptr noundef %648, ptr noundef @c__1, ptr noundef @c_b13, ptr noundef %653, ptr noundef @c__1)
  %654 = load ptr, ptr %8, align 8, !tbaa !5
  %655 = load i32, ptr %654, align 4, !tbaa !9
  %656 = load i32, ptr %19, align 4, !tbaa !9
  %657 = sub nsw i32 %655, %656
  store i32 %657, ptr %13, align 4, !tbaa !9
  %658 = load ptr, ptr %11, align 8, !tbaa !5
  %659 = getelementptr inbounds double, ptr %658, i64 1
  %660 = load ptr, ptr %9, align 8, !tbaa !5
  %661 = load i32, ptr %24, align 4, !tbaa !9
  %662 = add nsw i32 %661, 1
  %663 = sext i32 %662 to i64
  %664 = getelementptr inbounds double, ptr %660, i64 %663
  %665 = call double @ddot_(ptr noundef %13, ptr noundef %659, ptr noundef @c__1, ptr noundef %664, ptr noundef @c__1)
  %666 = load ptr, ptr %9, align 8, !tbaa !5
  %667 = load i32, ptr %24, align 4, !tbaa !9
  %668 = sext i32 %667 to i64
  %669 = getelementptr inbounds double, ptr %666, i64 %668
  %670 = load double, ptr %669, align 8, !tbaa !11
  %671 = fsub double %670, %665
  store double %671, ptr %669, align 8, !tbaa !11
  br label %672

672:                                              ; preds = %620, %605
  store i32 1, ptr %21, align 4, !tbaa !9
  br label %876

673:                                              ; preds = %591
  %674 = load ptr, ptr %9, align 8, !tbaa !5
  %675 = load i32, ptr %27, align 4, !tbaa !9
  %676 = add nsw i32 %675, 1
  %677 = sext i32 %676 to i64
  %678 = getelementptr inbounds double, ptr %674, i64 %677
  %679 = load double, ptr %678, align 8, !tbaa !11
  store double %679, ptr %14, align 8, !tbaa !11
  %680 = load double, ptr %14, align 8, !tbaa !11
  %681 = fcmp oge double %680, 0.000000e+00
  br i1 %681, label %682, label %684

682:                                              ; preds = %673
  %683 = load double, ptr %14, align 8, !tbaa !11
  br label %687

684:                                              ; preds = %673
  %685 = load double, ptr %14, align 8, !tbaa !11
  %686 = fneg double %685
  br label %687

687:                                              ; preds = %684, %682
  %688 = phi double [ %683, %682 ], [ %686, %684 ]
  store double %688, ptr %20, align 8, !tbaa !11
  %689 = load ptr, ptr %9, align 8, !tbaa !5
  %690 = load i32, ptr %27, align 4, !tbaa !9
  %691 = sext i32 %690 to i64
  %692 = getelementptr inbounds double, ptr %689, i64 %691
  %693 = load double, ptr %692, align 8, !tbaa !11
  %694 = load double, ptr %20, align 8, !tbaa !11
  %695 = fdiv double %693, %694
  store double %695, ptr %23, align 8, !tbaa !11
  %696 = load ptr, ptr %9, align 8, !tbaa !5
  %697 = load i32, ptr %24, align 4, !tbaa !9
  %698 = sext i32 %697 to i64
  %699 = getelementptr inbounds double, ptr %696, i64 %698
  %700 = load double, ptr %699, align 8, !tbaa !11
  %701 = load double, ptr %20, align 8, !tbaa !11
  %702 = fdiv double %700, %701
  store double %702, ptr %30, align 8, !tbaa !11
  %703 = load ptr, ptr %9, align 8, !tbaa !5
  %704 = load i32, ptr %27, align 4, !tbaa !9
  %705 = add nsw i32 %704, 1
  %706 = sext i32 %705 to i64
  %707 = getelementptr inbounds double, ptr %703, i64 %706
  %708 = load double, ptr %707, align 8, !tbaa !11
  %709 = load double, ptr %20, align 8, !tbaa !11
  %710 = fdiv double %708, %709
  store double %710, ptr %16, align 8, !tbaa !11
  %711 = load double, ptr %20, align 8, !tbaa !11
  %712 = load double, ptr %23, align 8, !tbaa !11
  %713 = load double, ptr %30, align 8, !tbaa !11
  %714 = call double @llvm.fmuladd.f64(double %712, double %713, double -1.000000e+00)
  %715 = fmul double %711, %714
  store double %715, ptr %17, align 8, !tbaa !11
  %716 = load double, ptr %30, align 8, !tbaa !11
  %717 = load double, ptr %17, align 8, !tbaa !11
  %718 = fdiv double %716, %717
  %719 = load ptr, ptr %9, align 8, !tbaa !5
  %720 = load i32, ptr %27, align 4, !tbaa !9
  %721 = sext i32 %720 to i64
  %722 = getelementptr inbounds double, ptr %719, i64 %721
  store double %718, ptr %722, align 8, !tbaa !11
  %723 = load double, ptr %23, align 8, !tbaa !11
  %724 = load double, ptr %17, align 8, !tbaa !11
  %725 = fdiv double %723, %724
  %726 = load ptr, ptr %9, align 8, !tbaa !5
  %727 = load i32, ptr %24, align 4, !tbaa !9
  %728 = sext i32 %727 to i64
  %729 = getelementptr inbounds double, ptr %726, i64 %728
  store double %725, ptr %729, align 8, !tbaa !11
  %730 = load double, ptr %16, align 8, !tbaa !11
  %731 = fneg double %730
  %732 = load double, ptr %17, align 8, !tbaa !11
  %733 = fdiv double %731, %732
  %734 = load ptr, ptr %9, align 8, !tbaa !5
  %735 = load i32, ptr %27, align 4, !tbaa !9
  %736 = add nsw i32 %735, 1
  %737 = sext i32 %736 to i64
  %738 = getelementptr inbounds double, ptr %734, i64 %737
  store double %733, ptr %738, align 8, !tbaa !11
  %739 = load i32, ptr %19, align 4, !tbaa !9
  %740 = load ptr, ptr %8, align 8, !tbaa !5
  %741 = load i32, ptr %740, align 4, !tbaa !9
  %742 = icmp slt i32 %739, %741
  br i1 %742, label %743, label %868

743:                                              ; preds = %687
  %744 = load ptr, ptr %8, align 8, !tbaa !5
  %745 = load i32, ptr %744, align 4, !tbaa !9
  %746 = load i32, ptr %19, align 4, !tbaa !9
  %747 = sub nsw i32 %745, %746
  store i32 %747, ptr %13, align 4, !tbaa !9
  %748 = load ptr, ptr %9, align 8, !tbaa !5
  %749 = load i32, ptr %24, align 4, !tbaa !9
  %750 = add nsw i32 %749, 1
  %751 = sext i32 %750 to i64
  %752 = getelementptr inbounds double, ptr %748, i64 %751
  %753 = load ptr, ptr %11, align 8, !tbaa !5
  %754 = getelementptr inbounds double, ptr %753, i64 1
  call void @dcopy_(ptr noundef %13, ptr noundef %752, ptr noundef @c__1, ptr noundef %754, ptr noundef @c__1)
  %755 = load ptr, ptr %8, align 8, !tbaa !5
  %756 = load i32, ptr %755, align 4, !tbaa !9
  %757 = load i32, ptr %19, align 4, !tbaa !9
  %758 = sub nsw i32 %756, %757
  store i32 %758, ptr %13, align 4, !tbaa !9
  %759 = load ptr, ptr %7, align 8, !tbaa !5
  %760 = load ptr, ptr %9, align 8, !tbaa !5
  %761 = load i32, ptr %24, align 4, !tbaa !9
  %762 = load ptr, ptr %8, align 8, !tbaa !5
  %763 = load i32, ptr %762, align 4, !tbaa !9
  %764 = load i32, ptr %19, align 4, !tbaa !9
  %765 = sub nsw i32 %763, %764
  %766 = add nsw i32 %765, 1
  %767 = add nsw i32 %761, %766
  %768 = sext i32 %767 to i64
  %769 = getelementptr inbounds double, ptr %760, i64 %768
  %770 = load ptr, ptr %11, align 8, !tbaa !5
  %771 = getelementptr inbounds double, ptr %770, i64 1
  %772 = load ptr, ptr %9, align 8, !tbaa !5
  %773 = load i32, ptr %24, align 4, !tbaa !9
  %774 = add nsw i32 %773, 1
  %775 = sext i32 %774 to i64
  %776 = getelementptr inbounds double, ptr %772, i64 %775
  call void @dspmv_(ptr noundef %759, ptr noundef %13, ptr noundef @c_b11, ptr noundef %769, ptr noundef %771, ptr noundef @c__1, ptr noundef @c_b13, ptr noundef %776, ptr noundef @c__1)
  %777 = load ptr, ptr %8, align 8, !tbaa !5
  %778 = load i32, ptr %777, align 4, !tbaa !9
  %779 = load i32, ptr %19, align 4, !tbaa !9
  %780 = sub nsw i32 %778, %779
  store i32 %780, ptr %13, align 4, !tbaa !9
  %781 = load ptr, ptr %11, align 8, !tbaa !5
  %782 = getelementptr inbounds double, ptr %781, i64 1
  %783 = load ptr, ptr %9, align 8, !tbaa !5
  %784 = load i32, ptr %24, align 4, !tbaa !9
  %785 = add nsw i32 %784, 1
  %786 = sext i32 %785 to i64
  %787 = getelementptr inbounds double, ptr %783, i64 %786
  %788 = call double @ddot_(ptr noundef %13, ptr noundef %782, ptr noundef @c__1, ptr noundef %787, ptr noundef @c__1)
  %789 = load ptr, ptr %9, align 8, !tbaa !5
  %790 = load i32, ptr %24, align 4, !tbaa !9
  %791 = sext i32 %790 to i64
  %792 = getelementptr inbounds double, ptr %789, i64 %791
  %793 = load double, ptr %792, align 8, !tbaa !11
  %794 = fsub double %793, %788
  store double %794, ptr %792, align 8, !tbaa !11
  %795 = load ptr, ptr %8, align 8, !tbaa !5
  %796 = load i32, ptr %795, align 4, !tbaa !9
  %797 = load i32, ptr %19, align 4, !tbaa !9
  %798 = sub nsw i32 %796, %797
  store i32 %798, ptr %13, align 4, !tbaa !9
  %799 = load ptr, ptr %9, align 8, !tbaa !5
  %800 = load i32, ptr %24, align 4, !tbaa !9
  %801 = add nsw i32 %800, 1
  %802 = sext i32 %801 to i64
  %803 = getelementptr inbounds double, ptr %799, i64 %802
  %804 = load ptr, ptr %9, align 8, !tbaa !5
  %805 = load i32, ptr %27, align 4, !tbaa !9
  %806 = add nsw i32 %805, 2
  %807 = sext i32 %806 to i64
  %808 = getelementptr inbounds double, ptr %804, i64 %807
  %809 = call double @ddot_(ptr noundef %13, ptr noundef %803, ptr noundef @c__1, ptr noundef %808, ptr noundef @c__1)
  %810 = load ptr, ptr %9, align 8, !tbaa !5
  %811 = load i32, ptr %27, align 4, !tbaa !9
  %812 = add nsw i32 %811, 1
  %813 = sext i32 %812 to i64
  %814 = getelementptr inbounds double, ptr %810, i64 %813
  %815 = load double, ptr %814, align 8, !tbaa !11
  %816 = fsub double %815, %809
  store double %816, ptr %814, align 8, !tbaa !11
  %817 = load ptr, ptr %8, align 8, !tbaa !5
  %818 = load i32, ptr %817, align 4, !tbaa !9
  %819 = load i32, ptr %19, align 4, !tbaa !9
  %820 = sub nsw i32 %818, %819
  store i32 %820, ptr %13, align 4, !tbaa !9
  %821 = load ptr, ptr %9, align 8, !tbaa !5
  %822 = load i32, ptr %27, align 4, !tbaa !9
  %823 = add nsw i32 %822, 2
  %824 = sext i32 %823 to i64
  %825 = getelementptr inbounds double, ptr %821, i64 %824
  %826 = load ptr, ptr %11, align 8, !tbaa !5
  %827 = getelementptr inbounds double, ptr %826, i64 1
  call void @dcopy_(ptr noundef %13, ptr noundef %825, ptr noundef @c__1, ptr noundef %827, ptr noundef @c__1)
  %828 = load ptr, ptr %8, align 8, !tbaa !5
  %829 = load i32, ptr %828, align 4, !tbaa !9
  %830 = load i32, ptr %19, align 4, !tbaa !9
  %831 = sub nsw i32 %829, %830
  store i32 %831, ptr %13, align 4, !tbaa !9
  %832 = load ptr, ptr %7, align 8, !tbaa !5
  %833 = load ptr, ptr %9, align 8, !tbaa !5
  %834 = load i32, ptr %24, align 4, !tbaa !9
  %835 = load ptr, ptr %8, align 8, !tbaa !5
  %836 = load i32, ptr %835, align 4, !tbaa !9
  %837 = load i32, ptr %19, align 4, !tbaa !9
  %838 = sub nsw i32 %836, %837
  %839 = add nsw i32 %838, 1
  %840 = add nsw i32 %834, %839
  %841 = sext i32 %840 to i64
  %842 = getelementptr inbounds double, ptr %833, i64 %841
  %843 = load ptr, ptr %11, align 8, !tbaa !5
  %844 = getelementptr inbounds double, ptr %843, i64 1
  %845 = load ptr, ptr %9, align 8, !tbaa !5
  %846 = load i32, ptr %27, align 4, !tbaa !9
  %847 = add nsw i32 %846, 2
  %848 = sext i32 %847 to i64
  %849 = getelementptr inbounds double, ptr %845, i64 %848
  call void @dspmv_(ptr noundef %832, ptr noundef %13, ptr noundef @c_b11, ptr noundef %842, ptr noundef %844, ptr noundef @c__1, ptr noundef @c_b13, ptr noundef %849, ptr noundef @c__1)
  %850 = load ptr, ptr %8, align 8, !tbaa !5
  %851 = load i32, ptr %850, align 4, !tbaa !9
  %852 = load i32, ptr %19, align 4, !tbaa !9
  %853 = sub nsw i32 %851, %852
  store i32 %853, ptr %13, align 4, !tbaa !9
  %854 = load ptr, ptr %11, align 8, !tbaa !5
  %855 = getelementptr inbounds double, ptr %854, i64 1
  %856 = load ptr, ptr %9, align 8, !tbaa !5
  %857 = load i32, ptr %27, align 4, !tbaa !9
  %858 = add nsw i32 %857, 2
  %859 = sext i32 %858 to i64
  %860 = getelementptr inbounds double, ptr %856, i64 %859
  %861 = call double @ddot_(ptr noundef %13, ptr noundef %855, ptr noundef @c__1, ptr noundef %860, ptr noundef @c__1)
  %862 = load ptr, ptr %9, align 8, !tbaa !5
  %863 = load i32, ptr %27, align 4, !tbaa !9
  %864 = sext i32 %863 to i64
  %865 = getelementptr inbounds double, ptr %862, i64 %864
  %866 = load double, ptr %865, align 8, !tbaa !11
  %867 = fsub double %866, %861
  store double %867, ptr %865, align 8, !tbaa !11
  br label %868

868:                                              ; preds = %743, %687
  store i32 2, ptr %21, align 4, !tbaa !9
  %869 = load ptr, ptr %8, align 8, !tbaa !5
  %870 = load i32, ptr %869, align 4, !tbaa !9
  %871 = load i32, ptr %19, align 4, !tbaa !9
  %872 = sub nsw i32 %870, %871
  %873 = add nsw i32 %872, 3
  %874 = load i32, ptr %27, align 4, !tbaa !9
  %875 = sub nsw i32 %874, %873
  store i32 %875, ptr %27, align 4, !tbaa !9
  br label %876

876:                                              ; preds = %868, %672
  %877 = load ptr, ptr %10, align 8, !tbaa !5
  %878 = load i32, ptr %19, align 4, !tbaa !9
  %879 = sext i32 %878 to i64
  %880 = getelementptr inbounds i32, ptr %877, i64 %879
  %881 = load i32, ptr %880, align 4, !tbaa !9
  store i32 %881, ptr %13, align 4, !tbaa !9
  %882 = load i32, ptr %13, align 4, !tbaa !9
  %883 = icmp sge i32 %882, 0
  br i1 %883, label %884, label %886

884:                                              ; preds = %876
  %885 = load i32, ptr %13, align 4, !tbaa !9
  br label %889

886:                                              ; preds = %876
  %887 = load i32, ptr %13, align 4, !tbaa !9
  %888 = sub nsw i32 0, %887
  br label %889

889:                                              ; preds = %886, %884
  %890 = phi i32 [ %885, %884 ], [ %888, %886 ]
  store i32 %890, ptr %25, align 4, !tbaa !9
  %891 = load i32, ptr %25, align 4, !tbaa !9
  %892 = load i32, ptr %19, align 4, !tbaa !9
  %893 = icmp ne i32 %891, %892
  br i1 %893, label %894, label %1052

894:                                              ; preds = %889
  %895 = load i32, ptr %29, align 4, !tbaa !9
  %896 = load ptr, ptr %8, align 8, !tbaa !5
  %897 = load i32, ptr %896, align 4, !tbaa !9
  %898 = load i32, ptr %25, align 4, !tbaa !9
  %899 = sub nsw i32 %897, %898
  %900 = add nsw i32 %899, 1
  %901 = load ptr, ptr %8, align 8, !tbaa !5
  %902 = load i32, ptr %901, align 4, !tbaa !9
  %903 = load i32, ptr %25, align 4, !tbaa !9
  %904 = sub nsw i32 %902, %903
  %905 = add nsw i32 %904, 2
  %906 = mul nsw i32 %900, %905
  %907 = sdiv i32 %906, 2
  %908 = sub nsw i32 %895, %907
  %909 = add nsw i32 %908, 1
  store i32 %909, ptr %28, align 4, !tbaa !9
  %910 = load i32, ptr %25, align 4, !tbaa !9
  %911 = load ptr, ptr %8, align 8, !tbaa !5
  %912 = load i32, ptr %911, align 4, !tbaa !9
  %913 = icmp slt i32 %910, %912
  br i1 %913, label %914, label %933

914:                                              ; preds = %894
  %915 = load ptr, ptr %8, align 8, !tbaa !5
  %916 = load i32, ptr %915, align 4, !tbaa !9
  %917 = load i32, ptr %25, align 4, !tbaa !9
  %918 = sub nsw i32 %916, %917
  store i32 %918, ptr %13, align 4, !tbaa !9
  %919 = load ptr, ptr %9, align 8, !tbaa !5
  %920 = load i32, ptr %24, align 4, !tbaa !9
  %921 = load i32, ptr %25, align 4, !tbaa !9
  %922 = add nsw i32 %920, %921
  %923 = load i32, ptr %19, align 4, !tbaa !9
  %924 = sub nsw i32 %922, %923
  %925 = add nsw i32 %924, 1
  %926 = sext i32 %925 to i64
  %927 = getelementptr inbounds double, ptr %919, i64 %926
  %928 = load ptr, ptr %9, align 8, !tbaa !5
  %929 = load i32, ptr %28, align 4, !tbaa !9
  %930 = add nsw i32 %929, 1
  %931 = sext i32 %930 to i64
  %932 = getelementptr inbounds double, ptr %928, i64 %931
  call void @dswap_(ptr noundef %13, ptr noundef %927, ptr noundef @c__1, ptr noundef %932, ptr noundef @c__1)
  br label %933

933:                                              ; preds = %914, %894
  %934 = load i32, ptr %24, align 4, !tbaa !9
  %935 = load i32, ptr %25, align 4, !tbaa !9
  %936 = add nsw i32 %934, %935
  %937 = load i32, ptr %19, align 4, !tbaa !9
  %938 = sub nsw i32 %936, %937
  store i32 %938, ptr %26, align 4, !tbaa !9
  %939 = load i32, ptr %25, align 4, !tbaa !9
  %940 = sub nsw i32 %939, 1
  store i32 %940, ptr %13, align 4, !tbaa !9
  %941 = load i32, ptr %19, align 4, !tbaa !9
  %942 = add nsw i32 %941, 1
  store i32 %942, ptr %18, align 4, !tbaa !9
  br label %943

943:                                              ; preds = %982, %933
  %944 = load i32, ptr %18, align 4, !tbaa !9
  %945 = load i32, ptr %13, align 4, !tbaa !9
  %946 = icmp sle i32 %944, %945
  br i1 %946, label %947, label %985

947:                                              ; preds = %943
  %948 = load i32, ptr %26, align 4, !tbaa !9
  %949 = load ptr, ptr %8, align 8, !tbaa !5
  %950 = load i32, ptr %949, align 4, !tbaa !9
  %951 = add nsw i32 %948, %950
  %952 = load i32, ptr %18, align 4, !tbaa !9
  %953 = sub nsw i32 %951, %952
  %954 = add nsw i32 %953, 1
  store i32 %954, ptr %26, align 4, !tbaa !9
  %955 = load ptr, ptr %9, align 8, !tbaa !5
  %956 = load i32, ptr %24, align 4, !tbaa !9
  %957 = load i32, ptr %18, align 4, !tbaa !9
  %958 = add nsw i32 %956, %957
  %959 = load i32, ptr %19, align 4, !tbaa !9
  %960 = sub nsw i32 %958, %959
  %961 = sext i32 %960 to i64
  %962 = getelementptr inbounds double, ptr %955, i64 %961
  %963 = load double, ptr %962, align 8, !tbaa !11
  store double %963, ptr %15, align 8, !tbaa !11
  %964 = load ptr, ptr %9, align 8, !tbaa !5
  %965 = load i32, ptr %26, align 4, !tbaa !9
  %966 = sext i32 %965 to i64
  %967 = getelementptr inbounds double, ptr %964, i64 %966
  %968 = load double, ptr %967, align 8, !tbaa !11
  %969 = load ptr, ptr %9, align 8, !tbaa !5
  %970 = load i32, ptr %24, align 4, !tbaa !9
  %971 = load i32, ptr %18, align 4, !tbaa !9
  %972 = add nsw i32 %970, %971
  %973 = load i32, ptr %19, align 4, !tbaa !9
  %974 = sub nsw i32 %972, %973
  %975 = sext i32 %974 to i64
  %976 = getelementptr inbounds double, ptr %969, i64 %975
  store double %968, ptr %976, align 8, !tbaa !11
  %977 = load double, ptr %15, align 8, !tbaa !11
  %978 = load ptr, ptr %9, align 8, !tbaa !5
  %979 = load i32, ptr %26, align 4, !tbaa !9
  %980 = sext i32 %979 to i64
  %981 = getelementptr inbounds double, ptr %978, i64 %980
  store double %977, ptr %981, align 8, !tbaa !11
  br label %982

982:                                              ; preds = %947
  %983 = load i32, ptr %18, align 4, !tbaa !9
  %984 = add nsw i32 %983, 1
  store i32 %984, ptr %18, align 4, !tbaa !9
  br label %943, !llvm.loop !17

985:                                              ; preds = %943
  %986 = load ptr, ptr %9, align 8, !tbaa !5
  %987 = load i32, ptr %24, align 4, !tbaa !9
  %988 = sext i32 %987 to i64
  %989 = getelementptr inbounds double, ptr %986, i64 %988
  %990 = load double, ptr %989, align 8, !tbaa !11
  store double %990, ptr %15, align 8, !tbaa !11
  %991 = load ptr, ptr %9, align 8, !tbaa !5
  %992 = load i32, ptr %28, align 4, !tbaa !9
  %993 = sext i32 %992 to i64
  %994 = getelementptr inbounds double, ptr %991, i64 %993
  %995 = load double, ptr %994, align 8, !tbaa !11
  %996 = load ptr, ptr %9, align 8, !tbaa !5
  %997 = load i32, ptr %24, align 4, !tbaa !9
  %998 = sext i32 %997 to i64
  %999 = getelementptr inbounds double, ptr %996, i64 %998
  store double %995, ptr %999, align 8, !tbaa !11
  %1000 = load double, ptr %15, align 8, !tbaa !11
  %1001 = load ptr, ptr %9, align 8, !tbaa !5
  %1002 = load i32, ptr %28, align 4, !tbaa !9
  %1003 = sext i32 %1002 to i64
  %1004 = getelementptr inbounds double, ptr %1001, i64 %1003
  store double %1000, ptr %1004, align 8, !tbaa !11
  %1005 = load i32, ptr %21, align 4, !tbaa !9
  %1006 = icmp eq i32 %1005, 2
  br i1 %1006, label %1007, label %1051

1007:                                             ; preds = %985
  %1008 = load ptr, ptr %9, align 8, !tbaa !5
  %1009 = load i32, ptr %24, align 4, !tbaa !9
  %1010 = load ptr, ptr %8, align 8, !tbaa !5
  %1011 = load i32, ptr %1010, align 4, !tbaa !9
  %1012 = sub nsw i32 %1009, %1011
  %1013 = load i32, ptr %19, align 4, !tbaa !9
  %1014 = add nsw i32 %1012, %1013
  %1015 = sub nsw i32 %1014, 1
  %1016 = sext i32 %1015 to i64
  %1017 = getelementptr inbounds double, ptr %1008, i64 %1016
  %1018 = load double, ptr %1017, align 8, !tbaa !11
  store double %1018, ptr %15, align 8, !tbaa !11
  %1019 = load ptr, ptr %9, align 8, !tbaa !5
  %1020 = load i32, ptr %24, align 4, !tbaa !9
  %1021 = load ptr, ptr %8, align 8, !tbaa !5
  %1022 = load i32, ptr %1021, align 4, !tbaa !9
  %1023 = sub nsw i32 %1020, %1022
  %1024 = load i32, ptr %25, align 4, !tbaa !9
  %1025 = add nsw i32 %1023, %1024
  %1026 = sub nsw i32 %1025, 1
  %1027 = sext i32 %1026 to i64
  %1028 = getelementptr inbounds double, ptr %1019, i64 %1027
  %1029 = load double, ptr %1028, align 8, !tbaa !11
  %1030 = load ptr, ptr %9, align 8, !tbaa !5
  %1031 = load i32, ptr %24, align 4, !tbaa !9
  %1032 = load ptr, ptr %8, align 8, !tbaa !5
  %1033 = load i32, ptr %1032, align 4, !tbaa !9
  %1034 = sub nsw i32 %1031, %1033
  %1035 = load i32, ptr %19, align 4, !tbaa !9
  %1036 = add nsw i32 %1034, %1035
  %1037 = sub nsw i32 %1036, 1
  %1038 = sext i32 %1037 to i64
  %1039 = getelementptr inbounds double, ptr %1030, i64 %1038
  store double %1029, ptr %1039, align 8, !tbaa !11
  %1040 = load double, ptr %15, align 8, !tbaa !11
  %1041 = load ptr, ptr %9, align 8, !tbaa !5
  %1042 = load i32, ptr %24, align 4, !tbaa !9
  %1043 = load ptr, ptr %8, align 8, !tbaa !5
  %1044 = load i32, ptr %1043, align 4, !tbaa !9
  %1045 = sub nsw i32 %1042, %1044
  %1046 = load i32, ptr %25, align 4, !tbaa !9
  %1047 = add nsw i32 %1045, %1046
  %1048 = sub nsw i32 %1047, 1
  %1049 = sext i32 %1048 to i64
  %1050 = getelementptr inbounds double, ptr %1041, i64 %1049
  store double %1040, ptr %1050, align 8, !tbaa !11
  br label %1051

1051:                                             ; preds = %1007, %985
  br label %1052

1052:                                             ; preds = %1051, %889
  %1053 = load i32, ptr %21, align 4, !tbaa !9
  %1054 = load i32, ptr %19, align 4, !tbaa !9
  %1055 = sub nsw i32 %1054, %1053
  store i32 %1055, ptr %19, align 4, !tbaa !9
  %1056 = load i32, ptr %27, align 4, !tbaa !9
  store i32 %1056, ptr %24, align 4, !tbaa !9
  br label %587

1057:                                             ; preds = %590
  br label %1058

1058:                                             ; preds = %1057, %575
  store i32 1, ptr %31, align 4
  br label %1059

1059:                                             ; preds = %1058, %138, %103, %69, %60
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #4
  ret void
}

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

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

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

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

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

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

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

declare void @dswap_(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 = !{!"int", !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}


; 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
@c__1 = external hidden global i32, align 4
@c_b11 = external hidden global double, align 8
@c_b13 = external hidden global double, align 8

; Function Attrs: nounwind uwtable
define dso_local void @dsptri_(ptr noundef %0, ptr nocapture noundef readonly %1, ptr noundef %2, ptr nocapture noundef readonly %3, ptr noundef %4, ptr nocapture noundef %5) local_unnamed_addr #0 {
  %7 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #5
  %8 = getelementptr inbounds i8, ptr %3, i64 -4
  %9 = getelementptr inbounds i8, ptr %2, i64 -8
  store i32 0, ptr %5, align 4, !tbaa !5
  %10 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #5
  %.not = icmp eq i32 %10, 0
  br i1 %.not, label %11, label %13

11:                                               ; preds = %6
  %12 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #5
  %.not429 = icmp eq i32 %12, 0
  br i1 %.not429, label %.thread.sink.split, label %13

13:                                               ; preds = %11, %6
  %14 = load i32, ptr %1, align 4, !tbaa !5
  %15 = icmp slt i32 %14, 0
  br i1 %15, label %.thread.sink.split, label %16

16:                                               ; preds = %13
  %.pr = load i32, ptr %5, align 4, !tbaa !5
  %.not430 = icmp eq i32 %.pr, 0
  br i1 %.not430, label %20, label %.thread

.thread.sink.split:                               ; preds = %13, %11
  %.sink = phi i32 [ -1, %11 ], [ -2, %13 ]
  store i32 %.sink, ptr %5, align 4, !tbaa !5
  br label %.thread

.thread:                                          ; preds = %.thread.sink.split, %16
  %17 = phi i32 [ %.pr, %16 ], [ %.sink, %.thread.sink.split ]
  %18 = sub nsw i32 0, %17
  store i32 %18, ptr %7, align 4, !tbaa !5
  %19 = call i32 @xerbla_(ptr noundef nonnull @.str.2, ptr noundef nonnull %7, i32 noundef 6) #5
  br label %.loopexit

20:                                               ; preds = %16
  %21 = icmp eq i32 %14, 0
  br i1 %21, label %.loopexit, label %22

22:                                               ; preds = %20
  %23 = add nuw i32 %14, 1
  br i1 %.not, label %.lr.ph453.preheader, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %22
  store i32 %14, ptr %5, align 4, !tbaa !5
  %24 = mul nuw nsw i32 %23, %14
  %25 = lshr i32 %24, 1
  %26 = zext nneg i32 %14 to i64
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.preheader, %35
  %indvars.iv = phi i64 [ %26, %.lr.ph.preheader ], [ %indvars.iv.next, %35 ]
  %.0411449 = phi i32 [ %25, %.lr.ph.preheader ], [ %37, %35 ]
  %27 = getelementptr inbounds i32, ptr %8, i64 %indvars.iv
  %28 = load i32, ptr %27, align 4, !tbaa !5
  %29 = icmp sgt i32 %28, 0
  br i1 %29, label %30, label %35

30:                                               ; preds = %.lr.ph
  %31 = sext i32 %.0411449 to i64
  %32 = getelementptr inbounds double, ptr %9, i64 %31
  %33 = load double, ptr %32, align 8, !tbaa !9
  %34 = fcmp oeq double %33, 0.000000e+00
  br i1 %34, label %.loopexit, label %35

35:                                               ; preds = %30, %.lr.ph
  %36 = trunc nuw nsw i64 %indvars.iv to i32
  %37 = sub nsw i32 %.0411449, %36
  %indvars.iv.next = add nsw i64 %indvars.iv, -1
  %38 = trunc nuw nsw i64 %indvars.iv.next to i32
  store i32 %38, ptr %5, align 4, !tbaa !5
  %39 = icmp sgt i64 %indvars.iv, 1
  br i1 %39, label %.lr.ph, label %.loopexit444, !llvm.loop !11

.lr.ph453.preheader:                              ; preds = %22
  store i32 1, ptr %5, align 4, !tbaa !5
  %wide.trip.count = zext i32 %23 to i64
  br label %.lr.ph453

.lr.ph453:                                        ; preds = %.lr.ph453.preheader, %48
  %indvars.iv500 = phi i64 [ 1, %.lr.ph453.preheader ], [ %indvars.iv.next501, %48 ]
  %.1412452 = phi i32 [ 1, %.lr.ph453.preheader ], [ %52, %48 ]
  %40 = getelementptr inbounds i32, ptr %8, i64 %indvars.iv500
  %41 = load i32, ptr %40, align 4, !tbaa !5
  %42 = icmp sgt i32 %41, 0
  br i1 %42, label %43, label %48

43:                                               ; preds = %.lr.ph453
  %44 = sext i32 %.1412452 to i64
  %45 = getelementptr inbounds double, ptr %9, i64 %44
  %46 = load double, ptr %45, align 8, !tbaa !9
  %47 = fcmp oeq double %46, 0.000000e+00
  br i1 %47, label %.loopexit, label %48

48:                                               ; preds = %43, %.lr.ph453
  %49 = load i32, ptr %1, align 4, !tbaa !5
  %50 = trunc nuw nsw i64 %indvars.iv500 to i32
  %reass.sub = sub i32 %.1412452, %50
  %51 = add i32 %reass.sub, 1
  %52 = add i32 %51, %49
  %indvars.iv.next501 = add nuw nsw i64 %indvars.iv500, 1
  %53 = trunc nuw i64 %indvars.iv.next501 to i32
  store i32 %53, ptr %5, align 4, !tbaa !5
  %exitcond.not = icmp eq i64 %indvars.iv.next501, %wide.trip.count
  br i1 %exitcond.not, label %.loopexit444, label %.lr.ph453, !llvm.loop !13

.loopexit444:                                     ; preds = %35, %48
  store i32 0, ptr %5, align 4, !tbaa !5
  br i1 %.not, label %178, label %.preheader

.preheader:                                       ; preds = %.loopexit444
  %invariant.gep = getelementptr i8, ptr %2, i64 -16
  %54 = load i32, ptr %1, align 4, !tbaa !5
  %55 = icmp slt i32 %54, 1
  br i1 %55, label %.loopexit, label %.lr.ph468

.lr.ph468:                                        ; preds = %.preheader, %174
  %.0413467 = phi i32 [ %.0, %174 ], [ 1, %.preheader ]
  %.0417466 = phi i32 [ %175, %174 ], [ 1, %.preheader ]
  %56 = add nsw i32 %.0413467, %.0417466
  %57 = zext nneg i32 %.0417466 to i64
  %58 = getelementptr inbounds i32, ptr %8, i64 %57
  %59 = load i32, ptr %58, align 4, !tbaa !5
  %60 = icmp slt i32 %59, 1
  br i1 %60, label %73, label %61

61:                                               ; preds = %.lr.ph468
  %62 = sext i32 %56 to i64
  %gep = getelementptr double, ptr %invariant.gep, i64 %62
  %63 = load double, ptr %gep, align 8, !tbaa !9
  %64 = fdiv double 1.000000e+00, %63
  store double %64, ptr %gep, align 8, !tbaa !9
  %65 = icmp ugt i32 %.0417466, 1
  br i1 %65, label %66, label %116

66:                                               ; preds = %61
  %67 = add nsw i32 %.0417466, -1
  store i32 %67, ptr %7, align 4, !tbaa !5
  %68 = sext i32 %.0413467 to i64
  %69 = getelementptr inbounds double, ptr %9, i64 %68
  call void @dcopy_(ptr noundef nonnull %7, ptr noundef nonnull %69, ptr noundef nonnull @c__1, ptr noundef %4, ptr noundef nonnull @c__1) #5
  store i32 %67, ptr %7, align 4, !tbaa !5
  call void @dspmv_(ptr noundef %0, ptr noundef nonnull %7, ptr noundef nonnull @c_b11, ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull @c__1, ptr noundef nonnull @c_b13, ptr noundef nonnull %69, ptr noundef nonnull @c__1) #5
  store i32 %67, ptr %7, align 4, !tbaa !5
  %70 = call double @ddot_(ptr noundef nonnull %7, ptr noundef %4, ptr noundef nonnull @c__1, ptr noundef nonnull %69, ptr noundef nonnull @c__1) #5
  %71 = load double, ptr %gep, align 8, !tbaa !9
  %72 = fsub double %71, %70
  store double %72, ptr %gep, align 8, !tbaa !9
  br label %116

73:                                               ; preds = %.lr.ph468
  %74 = add nsw i32 %56, %.0417466
  %75 = sext i32 %74 to i64
  %76 = getelementptr double, ptr %9, i64 %75
  %77 = getelementptr i8, ptr %76, i64 -8
  %78 = load double, ptr %77, align 8, !tbaa !9
  %79 = fcmp oge double %78, 0.000000e+00
  %80 = fneg double %78
  %81 = select i1 %79, double %78, double %80
  %82 = sext i32 %56 to i64
  %83 = getelementptr double, ptr %9, i64 %82
  %84 = getelementptr i8, ptr %83, i64 -8
  %85 = load double, ptr %84, align 8, !tbaa !9
  %86 = load double, ptr %76, align 8, !tbaa !9
  %87 = fdiv double %86, %81
  %88 = insertelement <2 x double> poison, double %80, i64 0
  %89 = insertelement <2 x double> %88, double %85, i64 1
  %90 = insertelement <2 x double> poison, double %81, i64 0
  %91 = shufflevector <2 x double> %90, <2 x double> poison, <2 x i32> zeroinitializer
  %92 = fdiv <2 x double> %89, %91
  %93 = extractelement <2 x double> %92, i64 1
  %94 = call double @llvm.fmuladd.f64(double %93, double %87, double -1.000000e+00)
  %95 = fmul double %81, %94
  %96 = fdiv double %87, %95
  store double %96, ptr %84, align 8, !tbaa !9
  %97 = insertelement <2 x double> poison, double %95, i64 0
  %98 = shufflevector <2 x double> %97, <2 x double> poison, <2 x i32> zeroinitializer
  %99 = fdiv <2 x double> %92, %98
  store <2 x double> %99, ptr %77, align 8, !tbaa !9
  %100 = icmp ugt i32 %.0417466, 1
  br i1 %100, label %101, label %114

101:                                              ; preds = %73
  %102 = add nsw i32 %.0417466, -1
  store i32 %102, ptr %7, align 4, !tbaa !5
  %103 = sext i32 %.0413467 to i64
  %104 = getelementptr inbounds double, ptr %9, i64 %103
  call void @dcopy_(ptr noundef nonnull %7, ptr noundef nonnull %104, ptr noundef nonnull @c__1, ptr noundef %4, ptr noundef nonnull @c__1) #5
  store i32 %102, ptr %7, align 4, !tbaa !5
  call void @dspmv_(ptr noundef %0, ptr noundef nonnull %7, ptr noundef nonnull @c_b11, ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull @c__1, ptr noundef nonnull @c_b13, ptr noundef nonnull %104, ptr noundef nonnull @c__1) #5
  store i32 %102, ptr %7, align 4, !tbaa !5
  %105 = call double @ddot_(ptr noundef nonnull %7, ptr noundef %4, ptr noundef nonnull @c__1, ptr noundef nonnull %104, ptr noundef nonnull @c__1) #5
  %106 = load double, ptr %84, align 8, !tbaa !9
  %107 = fsub double %106, %105
  store double %107, ptr %84, align 8, !tbaa !9
  store i32 %102, ptr %7, align 4, !tbaa !5
  %108 = call double @ddot_(ptr noundef nonnull %7, ptr noundef nonnull %104, ptr noundef nonnull @c__1, ptr noundef nonnull %83, ptr noundef nonnull @c__1) #5
  %109 = load double, ptr %77, align 8, !tbaa !9
  %110 = fsub double %109, %108
  store double %110, ptr %77, align 8, !tbaa !9
  store i32 %102, ptr %7, align 4, !tbaa !5
  call void @dcopy_(ptr noundef nonnull %7, ptr noundef nonnull %83, ptr noundef nonnull @c__1, ptr noundef %4, ptr noundef nonnull @c__1) #5
  store i32 %102, ptr %7, align 4, !tbaa !5
  call void @dspmv_(ptr noundef %0, ptr noundef nonnull %7, ptr noundef nonnull @c_b11, ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull @c__1, ptr noundef nonnull @c_b13, ptr noundef nonnull %83, ptr noundef nonnull @c__1) #5
  store i32 %102, ptr %7, align 4, !tbaa !5
  %111 = call double @ddot_(ptr noundef nonnull %7, ptr noundef %4, ptr noundef nonnull @c__1, ptr noundef nonnull %83, ptr noundef nonnull @c__1) #5
  %112 = load double, ptr %76, align 8, !tbaa !9
  %113 = fsub double %112, %111
  store double %113, ptr %76, align 8, !tbaa !9
  br label %114

114:                                              ; preds = %101, %73
  %115 = add nsw i32 %74, 1
  br label %116

116:                                              ; preds = %61, %66, %114
  %.0415 = phi i32 [ 2, %114 ], [ 1, %66 ], [ 1, %61 ]
  %.0 = phi i32 [ %115, %114 ], [ %56, %66 ], [ %56, %61 ]
  %117 = load i32, ptr %58, align 4, !tbaa !5
  store i32 %117, ptr %7, align 4, !tbaa !5
  %118 = call i32 @llvm.abs.i32(i32 %117, i1 true)
  %.not439 = icmp eq i32 %118, %.0417466
  br i1 %.not439, label %174, label %119

119:                                              ; preds = %116
  %120 = add nsw i32 %118, -1
  %121 = mul nsw i32 %120, %118
  %122 = sdiv i32 %121, 2
  store i32 %120, ptr %7, align 4, !tbaa !5
  %123 = sext i32 %.0413467 to i64
  %124 = getelementptr inbounds double, ptr %9, i64 %123
  %125 = sext i32 %122 to i64
  %gep459 = getelementptr double, ptr %2, i64 %125
  call void @dswap_(ptr noundef nonnull %7, ptr noundef nonnull %124, ptr noundef nonnull @c__1, ptr noundef nonnull %gep459, ptr noundef nonnull @c__1) #5
  %126 = add i32 %122, %118
  %127 = add nsw i32 %.0417466, -1
  store i32 %127, ptr %7, align 4, !tbaa !5
  %.not440.not454 = icmp slt i32 %118, %127
  br i1 %.not440.not454, label %.lr.ph457.preheader, label %._crit_edge

.lr.ph457.preheader:                              ; preds = %119
  %128 = call i32 @llvm.abs.i32(i32 %117, i1 true)
  %smax = zext nneg i32 %128 to i64
  %129 = add nuw i32 %127, %128
  %130 = sub i32 %129, %118
  %131 = add nsw i32 %.0417466, -2
  %132 = sub nsw i32 %118, %.0417466
  %133 = and i32 %132, 1
  %lcmp.mod.not.not = icmp eq i32 %133, 0
  br i1 %lcmp.mod.not.not, label %.lr.ph457.prol, label %.lr.ph457.prol.loopexit

.lr.ph457.prol:                                   ; preds = %.lr.ph457.preheader
  %indvars.iv.next504.prol = add nuw nsw i64 %smax, 1
  %134 = add i32 %126, %128
  %135 = add i32 %.0413467, %128
  %136 = sext i32 %135 to i64
  %137 = getelementptr inbounds double, ptr %9, i64 %136
  %138 = load double, ptr %137, align 8, !tbaa !9
  %139 = sext i32 %134 to i64
  %140 = getelementptr inbounds double, ptr %9, i64 %139
  %141 = load double, ptr %140, align 8, !tbaa !9
  store double %141, ptr %137, align 8, !tbaa !9
  store double %138, ptr %140, align 8, !tbaa !9
  br label %.lr.ph457.prol.loopexit

.lr.ph457.prol.loopexit:                          ; preds = %.lr.ph457.prol, %.lr.ph457.preheader
  %indvars.iv503.unr = phi i64 [ %smax, %.lr.ph457.preheader ], [ %indvars.iv.next504.prol, %.lr.ph457.prol ]
  %.0409456.unr = phi i32 [ %126, %.lr.ph457.preheader ], [ %134, %.lr.ph457.prol ]
  %142 = icmp eq i32 %131, %118
  br i1 %142, label %._crit_edge, label %.lr.ph457

.lr.ph457:                                        ; preds = %.lr.ph457.prol.loopexit, %.lr.ph457
  %indvars.iv503 = phi i64 [ %indvars.iv.next504.1, %.lr.ph457 ], [ %indvars.iv503.unr, %.lr.ph457.prol.loopexit ]
  %.0409456 = phi i32 [ %154, %.lr.ph457 ], [ %.0409456.unr, %.lr.ph457.prol.loopexit ]
  %143 = trunc nsw i64 %indvars.iv503 to i32
  %144 = add i32 %.0409456, %143
  %145 = add i32 %.0413467, %143
  %146 = sext i32 %145 to i64
  %147 = getelementptr inbounds double, ptr %9, i64 %146
  %148 = load double, ptr %147, align 8, !tbaa !9
  %149 = sext i32 %144 to i64
  %150 = getelementptr inbounds double, ptr %9, i64 %149
  %151 = load double, ptr %150, align 8, !tbaa !9
  store double %151, ptr %147, align 8, !tbaa !9
  store double %148, ptr %150, align 8, !tbaa !9
  %indvars.iv.next504.1 = add nuw nsw i64 %indvars.iv503, 2
  %152 = trunc i64 %indvars.iv503 to i32
  %153 = add i32 %152, 1
  %154 = add i32 %144, %153
  %155 = add i32 %.0413467, %153
  %156 = sext i32 %155 to i64
  %157 = getelementptr inbounds double, ptr %9, i64 %156
  %158 = load double, ptr %157, align 8, !tbaa !9
  %159 = sext i32 %154 to i64
  %160 = getelementptr inbounds double, ptr %9, i64 %159
  %161 = load double, ptr %160, align 8, !tbaa !9
  store double %161, ptr %157, align 8, !tbaa !9
  store double %158, ptr %160, align 8, !tbaa !9
  %lftr.wideiv.1 = trunc i64 %indvars.iv.next504.1 to i32
  %exitcond505.not.1 = icmp eq i32 %130, %lftr.wideiv.1
  br i1 %exitcond505.not.1, label %._crit_edge, label %.lr.ph457, !llvm.loop !14

._crit_edge:                                      ; preds = %.lr.ph457.prol.loopexit, %.lr.ph457, %119
  %162 = sext i32 %56 to i64
  %gep461 = getelementptr double, ptr %invariant.gep, i64 %162
  %163 = load double, ptr %gep461, align 8, !tbaa !9
  %164 = sext i32 %126 to i64
  %165 = getelementptr inbounds double, ptr %9, i64 %164
  %166 = load double, ptr %165, align 8, !tbaa !9
  store double %166, ptr %gep461, align 8, !tbaa !9
  store double %163, ptr %165, align 8, !tbaa !9
  br i1 %60, label %167, label %174

167:                                              ; preds = %._crit_edge
  %168 = add nsw i32 %56, %.0417466
  %169 = sext i32 %168 to i64
  %gep463 = getelementptr double, ptr %invariant.gep, i64 %169
  %170 = load double, ptr %gep463, align 8, !tbaa !9
  %171 = add nsw i32 %118, %56
  %172 = sext i32 %171 to i64
  %gep465 = getelementptr double, ptr %invariant.gep, i64 %172
  %173 = load double, ptr %gep465, align 8, !tbaa !9
  store double %173, ptr %gep463, align 8, !tbaa !9
  store double %170, ptr %gep465, align 8, !tbaa !9
  br label %174

174:                                              ; preds = %._crit_edge, %167, %116
  %175 = add nuw nsw i32 %.0415, %.0417466
  %176 = load i32, ptr %1, align 4, !tbaa !5
  %177 = icmp sgt i32 %175, %176
  br i1 %177, label %.loopexit, label %.lr.ph468

178:                                              ; preds = %.loopexit444
  %179 = load i32, ptr %1, align 4, !tbaa !5
  %180 = add nsw i32 %179, 1
  %181 = mul nsw i32 %180, %179
  %182 = sdiv i32 %181, 2
  %invariant.gep479 = getelementptr i8, ptr %2, i64 8
  %invariant.gep483 = getelementptr i8, ptr %2, i64 -16
  %183 = icmp slt i32 %179, 1
  br i1 %183, label %.loopexit, label %.lr.ph494

.lr.ph494:                                        ; preds = %178, %338
  %.1414490 = phi i32 [ %.1, %338 ], [ %182, %178 ]
  %.1418488 = phi i32 [ %339, %338 ], [ %179, %178 ]
  %184 = load i32, ptr %1, align 4, !tbaa !5
  %.neg = sub i32 %.1418488, %184
  %.neg433 = add i32 %.1414490, -2
  %185 = add i32 %.neg433, %.neg
  %186 = zext nneg i32 %.1418488 to i64
  %187 = getelementptr inbounds i32, ptr %8, i64 %186
  %188 = load i32, ptr %187, align 4, !tbaa !5
  %189 = icmp slt i32 %188, 1
  br i1 %189, label %209, label %190

190:                                              ; preds = %.lr.ph494
  %191 = sext i32 %.1414490 to i64
  %192 = getelementptr inbounds double, ptr %9, i64 %191
  %193 = load double, ptr %192, align 8, !tbaa !9
  %194 = fdiv double 1.000000e+00, %193
  store double %194, ptr %192, align 8, !tbaa !9
  %195 = icmp slt i32 %.1418488, %184
  br i1 %195, label %196, label %267

196:                                              ; preds = %190
  %197 = sub nsw i32 %184, %.1418488
  store i32 %197, ptr %7, align 4, !tbaa !5
  %198 = getelementptr i8, ptr %192, i64 8
  call void @dcopy_(ptr noundef nonnull %7, ptr noundef %198, ptr noundef nonnull @c__1, ptr noundef %4, ptr noundef nonnull @c__1) #5
  %199 = load i32, ptr %1, align 4, !tbaa !5
  %200 = sub nsw i32 %199, %.1418488
  store i32 %200, ptr %7, align 4, !tbaa !5
  %201 = sub i32 %.1414490, %.1418488
  %202 = add i32 %201, %199
  %203 = sext i32 %202 to i64
  %gep476 = getelementptr double, ptr %2, i64 %203
  call void @dspmv_(ptr noundef %0, ptr noundef nonnull %7, ptr noundef nonnull @c_b11, ptr noundef %gep476, ptr noundef %4, ptr noundef nonnull @c__1, ptr noundef nonnull @c_b13, ptr noundef %198, ptr noundef nonnull @c__1) #5
  %204 = load i32, ptr %1, align 4, !tbaa !5
  %205 = sub nsw i32 %204, %.1418488
  store i32 %205, ptr %7, align 4, !tbaa !5
  %206 = call double @ddot_(ptr noundef nonnull %7, ptr noundef %4, ptr noundef nonnull @c__1, ptr noundef %198, ptr noundef nonnull @c__1) #5
  %207 = load double, ptr %192, align 8, !tbaa !9
  %208 = fsub double %207, %206
  store double %208, ptr %192, align 8, !tbaa !9
  br label %267

209:                                              ; preds = %.lr.ph494
  %210 = sext i32 %185 to i64
  %211 = getelementptr double, ptr %9, i64 %210
  %212 = getelementptr i8, ptr %211, i64 8
  %213 = load double, ptr %212, align 8, !tbaa !9
  %214 = fcmp oge double %213, 0.000000e+00
  %215 = fneg double %213
  %216 = select i1 %214, double %213, double %215
  %217 = load double, ptr %211, align 8, !tbaa !9
  %218 = fdiv double %217, %216
  %219 = sext i32 %.1414490 to i64
  %220 = getelementptr inbounds double, ptr %9, i64 %219
  %221 = load double, ptr %220, align 8, !tbaa !9
  %222 = fdiv double %221, %216
  %223 = call double @llvm.fmuladd.f64(double %218, double %222, double -1.000000e+00)
  %224 = fmul double %216, %223
  %225 = fdiv double %222, %224
  store double %225, ptr %211, align 8, !tbaa !9
  %226 = fdiv double %218, %224
  store double %226, ptr %220, align 8, !tbaa !9
  %227 = fdiv double %215, %216
  %228 = fdiv double %227, %224
  store double %228, ptr %212, align 8, !tbaa !9
  %229 = icmp slt i32 %.1418488, %184
  br i1 %229, label %230, label %264

230:                                              ; preds = %209
  %231 = sub nsw i32 %184, %.1418488
  store i32 %231, ptr %7, align 4, !tbaa !5
  %232 = getelementptr i8, ptr %220, i64 8
  call void @dcopy_(ptr noundef nonnull %7, ptr noundef %232, ptr noundef nonnull @c__1, ptr noundef %4, ptr noundef nonnull @c__1) #5
  %233 = load i32, ptr %1, align 4, !tbaa !5
  %234 = sub nsw i32 %233, %.1418488
  store i32 %234, ptr %7, align 4, !tbaa !5
  %235 = add i32 %.1414490, 1
  %236 = add i32 %235, %234
  %237 = sext i32 %236 to i64
  %238 = getelementptr inbounds double, ptr %9, i64 %237
  call void @dspmv_(ptr noundef %0, ptr noundef nonnull %7, ptr noundef nonnull @c_b11, ptr noundef nonnull %238, ptr noundef %4, ptr noundef nonnull @c__1, ptr noundef nonnull @c_b13, ptr noundef %232, ptr noundef nonnull @c__1) #5
  %239 = load i32, ptr %1, align 4, !tbaa !5
  %240 = sub nsw i32 %239, %.1418488
  store i32 %240, ptr %7, align 4, !tbaa !5
  %241 = call double @ddot_(ptr noundef nonnull %7, ptr noundef %4, ptr noundef nonnull @c__1, ptr noundef %232, ptr noundef nonnull @c__1) #5
  %242 = load double, ptr %220, align 8, !tbaa !9
  %243 = fsub double %242, %241
  store double %243, ptr %220, align 8, !tbaa !9
  %244 = load i32, ptr %1, align 4, !tbaa !5
  %245 = sub nsw i32 %244, %.1418488
  store i32 %245, ptr %7, align 4, !tbaa !5
  %246 = add i32 %.neg, %.1414490
  %247 = sext i32 %246 to i64
  %248 = getelementptr inbounds double, ptr %9, i64 %247
  %249 = call double @ddot_(ptr noundef nonnull %7, ptr noundef %232, ptr noundef nonnull @c__1, ptr noundef nonnull %248, ptr noundef nonnull @c__1) #5
  %250 = load double, ptr %212, align 8, !tbaa !9
  %251 = fsub double %250, %249
  store double %251, ptr %212, align 8, !tbaa !9
  %252 = load i32, ptr %1, align 4, !tbaa !5
  %253 = sub nsw i32 %252, %.1418488
  store i32 %253, ptr %7, align 4, !tbaa !5
  call void @dcopy_(ptr noundef nonnull %7, ptr noundef nonnull %248, ptr noundef nonnull @c__1, ptr noundef %4, ptr noundef nonnull @c__1) #5
  %254 = load i32, ptr %1, align 4, !tbaa !5
  %255 = sub nsw i32 %254, %.1418488
  store i32 %255, ptr %7, align 4, !tbaa !5
  %256 = add i32 %235, %255
  %257 = sext i32 %256 to i64
  %258 = getelementptr inbounds double, ptr %9, i64 %257
  call void @dspmv_(ptr noundef %0, ptr noundef nonnull %7, ptr noundef nonnull @c_b11, ptr noundef nonnull %258, ptr noundef %4, ptr noundef nonnull @c__1, ptr noundef nonnull @c_b13, ptr noundef nonnull %248, ptr noundef nonnull @c__1) #5
  %259 = load i32, ptr %1, align 4, !tbaa !5
  %260 = sub nsw i32 %259, %.1418488
  store i32 %260, ptr %7, align 4, !tbaa !5
  %261 = call double @ddot_(ptr noundef nonnull %7, ptr noundef %4, ptr noundef nonnull @c__1, ptr noundef nonnull %248, ptr noundef nonnull @c__1) #5
  %262 = load double, ptr %211, align 8, !tbaa !9
  %263 = fsub double %262, %261
  store double %263, ptr %211, align 8, !tbaa !9
  %.pre = load i32, ptr %1, align 4, !tbaa !5
  br label %264

264:                                              ; preds = %230, %209
  %265 = phi i32 [ %.pre, %230 ], [ %184, %209 ]
  %.neg434 = add nsw i32 %.1418488, -3
  %.neg435 = add i32 %.neg434, %185
  %266 = sub i32 %.neg435, %265
  br label %267

267:                                              ; preds = %190, %196, %264
  %.1416.neg = phi i32 [ -2, %264 ], [ -1, %196 ], [ -1, %190 ]
  %.1 = phi i32 [ %266, %264 ], [ %185, %196 ], [ %185, %190 ]
  %268 = load i32, ptr %187, align 4, !tbaa !5
  store i32 %268, ptr %7, align 4, !tbaa !5
  %269 = call i32 @llvm.abs.i32(i32 %268, i1 true)
  %.not436 = icmp eq i32 %269, %.1418488
  br i1 %.not436, label %338, label %270

270:                                              ; preds = %267
  %271 = load i32, ptr %1, align 4, !tbaa !5
  %272 = sub nsw i32 %271, %269
  %273 = add nsw i32 %272, 1
  %274 = add nsw i32 %272, 2
  %275 = mul nsw i32 %273, %274
  %.neg437 = sdiv i32 %275, -2
  %276 = add nsw i32 %.neg437, %182
  %277 = icmp slt i32 %269, %271
  br i1 %277, label %278, label %283

278:                                              ; preds = %270
  store i32 %272, ptr %7, align 4, !tbaa !5
  %279 = sub i32 %.1414490, %.1418488
  %280 = add i32 %279, %269
  %281 = sext i32 %280 to i64
  %gep478 = getelementptr double, ptr %2, i64 %281
  %282 = sext i32 %276 to i64
  %gep480 = getelementptr double, ptr %invariant.gep479, i64 %282
  call void @dswap_(ptr noundef nonnull %7, ptr noundef %gep478, ptr noundef nonnull @c__1, ptr noundef %gep480, ptr noundef nonnull @c__1) #5
  br label %283

283:                                              ; preds = %278, %270
  %284 = add nsw i32 %269, -1
  store i32 %284, ptr %7, align 4, !tbaa !5
  %.not438.not469 = icmp slt i32 %.1418488, %284
  br i1 %.not438.not469, label %.lr.ph473, label %._crit_edge474

.lr.ph473:                                        ; preds = %283
  %285 = sub i32 %.1414490, %.1418488
  %286 = add i32 %285, %269
  %287 = load i32, ptr %1, align 4, !tbaa !5
  %288 = sext i32 %.1418488 to i64
  %wide.trip.count509 = sext i32 %284 to i64
  %289 = sub nsw i64 %wide.trip.count509, %288
  %xtraiter523 = and i64 %289, 1
  %lcmp.mod524.not = icmp eq i64 %xtraiter523, 0
  br i1 %lcmp.mod524.not, label %.prol.loopexit, label %.prol.loopexit.unr-lcssa

.prol.loopexit.unr-lcssa:                         ; preds = %.lr.ph473
  %indvars.iv.next507.prol = add nsw i64 %288, 1
  %290 = sub i32 %286, %.1418488
  %291 = add i32 %290, %287
  %292 = trunc nsw i64 %indvars.iv.next507.prol to i32
  %293 = add i32 %285, %292
  %294 = sext i32 %293 to i64
  %295 = getelementptr inbounds double, ptr %9, i64 %294
  %296 = load double, ptr %295, align 8, !tbaa !9
  %297 = sext i32 %291 to i64
  %298 = getelementptr inbounds double, ptr %9, i64 %297
  %299 = load double, ptr %298, align 8, !tbaa !9
  store double %299, ptr %295, align 8, !tbaa !9
  store double %296, ptr %298, align 8, !tbaa !9
  br label %.prol.loopexit

.prol.loopexit:                                   ; preds = %.prol.loopexit.unr-lcssa, %.lr.ph473
  %indvars.iv506.unr = phi i64 [ %288, %.lr.ph473 ], [ %indvars.iv.next507.prol, %.prol.loopexit.unr-lcssa ]
  %.1410471.unr = phi i32 [ %286, %.lr.ph473 ], [ %291, %.prol.loopexit.unr-lcssa ]
  %300 = add nsw i64 %wide.trip.count509, -1
  %301 = icmp eq i64 %300, %288
  br i1 %301, label %._crit_edge474, label %.lr.ph473.new

.lr.ph473.new:                                    ; preds = %.prol.loopexit, %.lr.ph473.new
  %indvars.iv506 = phi i64 [ %indvars.iv.next507.1, %.lr.ph473.new ], [ %indvars.iv506.unr, %.prol.loopexit ]
  %.1410471 = phi i32 [ %315, %.lr.ph473.new ], [ %.1410471.unr, %.prol.loopexit ]
  %indvars.iv.next507 = add nsw i64 %indvars.iv506, 1
  %302 = trunc nsw i64 %indvars.iv506 to i32
  %303 = sub i32 %.1410471, %302
  %304 = add i32 %303, %287
  %305 = trunc nsw i64 %indvars.iv.next507 to i32
  %306 = add i32 %285, %305
  %307 = sext i32 %306 to i64
  %308 = getelementptr inbounds double, ptr %9, i64 %307
  %309 = load double, ptr %308, align 8, !tbaa !9
  %310 = sext i32 %304 to i64
  %311 = getelementptr inbounds double, ptr %9, i64 %310
  %312 = load double, ptr %311, align 8, !tbaa !9
  store double %312, ptr %308, align 8, !tbaa !9
  store double %309, ptr %311, align 8, !tbaa !9
  %indvars.iv.next507.1 = add nsw i64 %indvars.iv506, 2
  %313 = trunc nsw i64 %indvars.iv.next507 to i32
  %314 = sub i32 %304, %313
  %315 = add i32 %314, %287
  %316 = trunc nsw i64 %indvars.iv.next507.1 to i32
  %317 = add i32 %285, %316
  %318 = sext i32 %317 to i64
  %319 = getelementptr inbounds double, ptr %9, i64 %318
  %320 = load double, ptr %319, align 8, !tbaa !9
  %321 = sext i32 %315 to i64
  %322 = getelementptr inbounds double, ptr %9, i64 %321
  %323 = load double, ptr %322, align 8, !tbaa !9
  store double %323, ptr %319, align 8, !tbaa !9
  store double %320, ptr %322, align 8, !tbaa !9
  %exitcond510.not.1 = icmp eq i64 %indvars.iv.next507.1, %wide.trip.count509
  br i1 %exitcond510.not.1, label %._crit_edge474, label %.lr.ph473.new, !llvm.loop !15

._crit_edge474:                                   ; preds = %.prol.loopexit, %.lr.ph473.new, %283
  %324 = sext i32 %.1414490 to i64
  %325 = getelementptr inbounds double, ptr %9, i64 %324
  %326 = load double, ptr %325, align 8, !tbaa !9
  %327 = sext i32 %276 to i64
  %gep482 = getelementptr double, ptr %2, i64 %327
  %328 = load double, ptr %gep482, align 8, !tbaa !9
  store double %328, ptr %325, align 8, !tbaa !9
  store double %326, ptr %gep482, align 8, !tbaa !9
  br i1 %189, label %329, label %338

329:                                              ; preds = %._crit_edge474
  %330 = load i32, ptr %1, align 4, !tbaa !5
  %331 = sub nsw i32 %.1414490, %330
  %332 = add nsw i32 %331, %.1418488
  %333 = sext i32 %332 to i64
  %gep484 = getelementptr double, ptr %invariant.gep483, i64 %333
  %334 = load double, ptr %gep484, align 8, !tbaa !9
  %335 = add nsw i32 %331, %269
  %336 = sext i32 %335 to i64
  %gep486 = getelementptr double, ptr %invariant.gep483, i64 %336
  %337 = load double, ptr %gep486, align 8, !tbaa !9
  store double %337, ptr %gep484, align 8, !tbaa !9
  store double %334, ptr %gep486, align 8, !tbaa !9
  br label %338

338:                                              ; preds = %._crit_edge474, %329, %267
  %339 = add nsw i32 %.1416.neg, %.1418488
  %340 = icmp slt i32 %339, 1
  br i1 %340, label %.loopexit, label %.lr.ph494

.loopexit:                                        ; preds = %30, %43, %174, %338, %.preheader, %178, %20, %.thread
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #5
  ret void
}

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

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

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

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

declare void @dspmv_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

declare void @dswap_(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 i32 @llvm.abs.i32(i32, i1 immarg) #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 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"double", !7, i64 0}
!11 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = distinct !{!13, !12}
!14 = distinct !{!14, !12}
!15 = distinct !{!15, !12}


; Effective O3 passes: CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,ReassociatePass,SCCPPass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass