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

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [10 x i8], align 1
@c__1 = external hidden global i32, align 4
@c_b36 = external hidden global double, align 8

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

77:                                               ; preds = %11
  %78 = load ptr, ptr %12, align 8, !tbaa !5
  %79 = call i32 @lsame_(ptr noundef %78, ptr noundef @.str.2)
  %80 = icmp ne i32 %79, 0
  br i1 %80, label %83, label %81

81:                                               ; preds = %77
  %82 = load ptr, ptr %22, align 8, !tbaa !5
  store i32 -1, ptr %82, align 4, !tbaa !9
  br label %141

83:                                               ; preds = %77, %11
  %84 = load i32, ptr %47, align 4, !tbaa !9
  %85 = icmp ne i32 %84, 0
  br i1 %85, label %96, label %86

86:                                               ; preds = %83
  %87 = load ptr, ptr %13, align 8, !tbaa !5
  %88 = call i32 @lsame_(ptr noundef %87, ptr noundef @.str.3)
  %89 = icmp ne i32 %88, 0
  br i1 %89, label %96, label %90

90:                                               ; preds = %86
  %91 = load ptr, ptr %13, align 8, !tbaa !5
  %92 = call i32 @lsame_(ptr noundef %91, ptr noundef @.str.4)
  %93 = icmp ne i32 %92, 0
  br i1 %93, label %96, label %94

94:                                               ; preds = %90
  %95 = load ptr, ptr %22, align 8, !tbaa !5
  store i32 -2, ptr %95, align 4, !tbaa !9
  br label %140

96:                                               ; preds = %90, %86, %83
  %97 = load i32, ptr %50, align 4, !tbaa !9
  %98 = icmp ne i32 %97, 0
  br i1 %98, label %105, label %99

99:                                               ; preds = %96
  %100 = load ptr, ptr %14, align 8, !tbaa !5
  %101 = call i32 @lsame_(ptr noundef %100, ptr noundef @.str)
  %102 = icmp ne i32 %101, 0
  br i1 %102, label %105, label %103

103:                                              ; preds = %99
  %104 = load ptr, ptr %22, align 8, !tbaa !5
  store i32 -3, ptr %104, align 4, !tbaa !9
  br label %139

105:                                              ; preds = %99, %96
  %106 = load ptr, ptr %15, align 8, !tbaa !5
  %107 = call i32 @lsame_(ptr noundef %106, ptr noundef @.str.5)
  %108 = icmp ne i32 %107, 0
  br i1 %108, label %115, label %109

109:                                              ; preds = %105
  %110 = load ptr, ptr %15, align 8, !tbaa !5
  %111 = call i32 @lsame_(ptr noundef %110, ptr noundef @.str.1)
  %112 = icmp ne i32 %111, 0
  br i1 %112, label %115, label %113

113:                                              ; preds = %109
  %114 = load ptr, ptr %22, align 8, !tbaa !5
  store i32 -4, ptr %114, align 4, !tbaa !9
  br label %138

115:                                              ; preds = %109, %105
  %116 = load ptr, ptr %16, align 8, !tbaa !5
  %117 = load i32, ptr %116, align 4, !tbaa !9
  %118 = icmp slt i32 %117, 0
  br i1 %118, label %119, label %121

119:                                              ; preds = %115
  %120 = load ptr, ptr %22, align 8, !tbaa !5
  store i32 -5, ptr %120, align 4, !tbaa !9
  br label %137

121:                                              ; preds = %115
  %122 = load ptr, ptr %18, align 8, !tbaa !5
  %123 = load i32, ptr %122, align 4, !tbaa !9
  %124 = load ptr, ptr %16, align 8, !tbaa !5
  %125 = load i32, ptr %124, align 4, !tbaa !9
  %126 = icmp sge i32 1, %125
  br i1 %126, label %127, label %128

127:                                              ; preds = %121
  br label %131

128:                                              ; preds = %121
  %129 = load ptr, ptr %16, align 8, !tbaa !5
  %130 = load i32, ptr %129, align 4, !tbaa !9
  br label %131

131:                                              ; preds = %128, %127
  %132 = phi i32 [ 1, %127 ], [ %130, %128 ]
  %133 = icmp slt i32 %123, %132
  br i1 %133, label %134, label %136

134:                                              ; preds = %131
  %135 = load ptr, ptr %22, align 8, !tbaa !5
  store i32 -7, ptr %135, align 4, !tbaa !9
  br label %136

136:                                              ; preds = %134, %131
  br label %137

137:                                              ; preds = %136, %119
  br label %138

138:                                              ; preds = %137, %113
  br label %139

139:                                              ; preds = %138, %103
  br label %140

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

141:                                              ; preds = %140, %81
  %142 = load ptr, ptr %22, align 8, !tbaa !5
  %143 = load i32, ptr %142, align 4, !tbaa !9
  %144 = icmp ne i32 %143, 0
  br i1 %144, label %145, label %150

145:                                              ; preds = %141
  %146 = load ptr, ptr %22, align 8, !tbaa !5
  %147 = load i32, ptr %146, align 4, !tbaa !9
  %148 = sub nsw i32 0, %147
  store i32 %148, ptr %25, align 4, !tbaa !9
  %149 = call i32 @xerbla_(ptr noundef @.str.6, ptr noundef %25, i32 noundef 6)
  store i32 1, ptr %53, align 4
  br label %1463

150:                                              ; preds = %141
  %151 = load ptr, ptr %16, align 8, !tbaa !5
  %152 = load i32, ptr %151, align 4, !tbaa !9
  %153 = icmp eq i32 %152, 0
  br i1 %153, label %154, label %155

154:                                              ; preds = %150
  store i32 1, ptr %53, align 4
  br label %1463

155:                                              ; preds = %150
  %156 = call double @dlamch_(ptr noundef @.str.7)
  %157 = call double @dlamch_(ptr noundef @.str.8)
  %158 = fdiv double %156, %157
  store double %158, ptr %49, align 8, !tbaa !11
  %159 = load double, ptr %49, align 8, !tbaa !11
  %160 = fdiv double 1.000000e+00, %159
  store double %160, ptr %46, align 8, !tbaa !11
  %161 = load ptr, ptr %20, align 8, !tbaa !5
  store double 1.000000e+00, ptr %161, align 8, !tbaa !11
  %162 = load ptr, ptr %15, align 8, !tbaa !5
  %163 = call i32 @lsame_(ptr noundef %162, ptr noundef @.str.1)
  %164 = icmp ne i32 %163, 0
  br i1 %164, label %165, label %231

165:                                              ; preds = %155
  %166 = load i32, ptr %44, align 4, !tbaa !9
  %167 = icmp ne i32 %166, 0
  br i1 %167, label %168, label %194

168:                                              ; preds = %165
  %169 = load ptr, ptr %16, align 8, !tbaa !5
  %170 = load i32, ptr %169, align 4, !tbaa !9
  store i32 %170, ptr %25, align 4, !tbaa !9
  store i32 1, ptr %40, align 4, !tbaa !9
  br label %171

171:                                              ; preds = %190, %168
  %172 = load i32, ptr %40, align 4, !tbaa !9
  %173 = load i32, ptr %25, align 4, !tbaa !9
  %174 = icmp sle i32 %172, %173
  br i1 %174, label %175, label %193

175:                                              ; preds = %171
  %176 = load i32, ptr %40, align 4, !tbaa !9
  %177 = sub nsw i32 %176, 1
  store i32 %177, ptr %26, align 4, !tbaa !9
  %178 = load ptr, ptr %17, align 8, !tbaa !5
  %179 = load i32, ptr %40, align 4, !tbaa !9
  %180 = load i32, ptr %23, align 4, !tbaa !9
  %181 = mul nsw i32 %179, %180
  %182 = add nsw i32 %181, 1
  %183 = sext i32 %182 to i64
  %184 = getelementptr inbounds double, ptr %178, i64 %183
  %185 = call double @dasum_(ptr noundef %26, ptr noundef %184, ptr noundef @c__1)
  %186 = load ptr, ptr %21, align 8, !tbaa !5
  %187 = load i32, ptr %40, align 4, !tbaa !9
  %188 = sext i32 %187 to i64
  %189 = getelementptr inbounds double, ptr %186, i64 %188
  store double %185, ptr %189, align 8, !tbaa !11
  br label %190

190:                                              ; preds = %175
  %191 = load i32, ptr %40, align 4, !tbaa !9
  %192 = add nsw i32 %191, 1
  store i32 %192, ptr %40, align 4, !tbaa !9
  br label %171, !llvm.loop !13

193:                                              ; preds = %171
  br label %230

194:                                              ; preds = %165
  %195 = load ptr, ptr %16, align 8, !tbaa !5
  %196 = load i32, ptr %195, align 4, !tbaa !9
  %197 = sub nsw i32 %196, 1
  store i32 %197, ptr %25, align 4, !tbaa !9
  store i32 1, ptr %40, align 4, !tbaa !9
  br label %198

198:                                              ; preds = %221, %194
  %199 = load i32, ptr %40, align 4, !tbaa !9
  %200 = load i32, ptr %25, align 4, !tbaa !9
  %201 = icmp sle i32 %199, %200
  br i1 %201, label %202, label %224

202:                                              ; preds = %198
  %203 = load ptr, ptr %16, align 8, !tbaa !5
  %204 = load i32, ptr %203, align 4, !tbaa !9
  %205 = load i32, ptr %40, align 4, !tbaa !9
  %206 = sub nsw i32 %204, %205
  store i32 %206, ptr %26, align 4, !tbaa !9
  %207 = load ptr, ptr %17, align 8, !tbaa !5
  %208 = load i32, ptr %40, align 4, !tbaa !9
  %209 = add nsw i32 %208, 1
  %210 = load i32, ptr %40, align 4, !tbaa !9
  %211 = load i32, ptr %23, align 4, !tbaa !9
  %212 = mul nsw i32 %210, %211
  %213 = add nsw i32 %209, %212
  %214 = sext i32 %213 to i64
  %215 = getelementptr inbounds double, ptr %207, i64 %214
  %216 = call double @dasum_(ptr noundef %26, ptr noundef %215, ptr noundef @c__1)
  %217 = load ptr, ptr %21, align 8, !tbaa !5
  %218 = load i32, ptr %40, align 4, !tbaa !9
  %219 = sext i32 %218 to i64
  %220 = getelementptr inbounds double, ptr %217, i64 %219
  store double %216, ptr %220, align 8, !tbaa !11
  br label %221

221:                                              ; preds = %202
  %222 = load i32, ptr %40, align 4, !tbaa !9
  %223 = add nsw i32 %222, 1
  store i32 %223, ptr %40, align 4, !tbaa !9
  br label %198, !llvm.loop !15

224:                                              ; preds = %198
  %225 = load ptr, ptr %21, align 8, !tbaa !5
  %226 = load ptr, ptr %16, align 8, !tbaa !5
  %227 = load i32, ptr %226, align 4, !tbaa !9
  %228 = sext i32 %227 to i64
  %229 = getelementptr inbounds double, ptr %225, i64 %228
  store double 0.000000e+00, ptr %229, align 8, !tbaa !11
  br label %230

230:                                              ; preds = %224, %193
  br label %231

231:                                              ; preds = %230, %155
  %232 = load ptr, ptr %16, align 8, !tbaa !5
  %233 = load ptr, ptr %21, align 8, !tbaa !5
  %234 = getelementptr inbounds double, ptr %233, i64 1
  %235 = call i32 @idamax_(ptr noundef %232, ptr noundef %234, ptr noundef @c__1)
  store i32 %235, ptr %33, align 4, !tbaa !9
  %236 = load ptr, ptr %21, align 8, !tbaa !5
  %237 = load i32, ptr %33, align 4, !tbaa !9
  %238 = sext i32 %237 to i64
  %239 = getelementptr inbounds double, ptr %236, i64 %238
  %240 = load double, ptr %239, align 8, !tbaa !11
  store double %240, ptr %34, align 8, !tbaa !11
  %241 = load double, ptr %34, align 8, !tbaa !11
  %242 = load double, ptr %46, align 8, !tbaa !11
  %243 = fcmp ole double %241, %242
  br i1 %243, label %244, label %245

244:                                              ; preds = %231
  store double 1.000000e+00, ptr %41, align 8, !tbaa !11
  br label %253

245:                                              ; preds = %231
  %246 = load double, ptr %49, align 8, !tbaa !11
  %247 = load double, ptr %34, align 8, !tbaa !11
  %248 = fmul double %246, %247
  %249 = fdiv double 1.000000e+00, %248
  store double %249, ptr %41, align 8, !tbaa !11
  %250 = load ptr, ptr %16, align 8, !tbaa !5
  %251 = load ptr, ptr %21, align 8, !tbaa !5
  %252 = getelementptr inbounds double, ptr %251, i64 1
  call void @dscal_(ptr noundef %250, ptr noundef %41, ptr noundef %252, ptr noundef @c__1)
  br label %253

253:                                              ; preds = %245, %244
  %254 = load ptr, ptr %16, align 8, !tbaa !5
  %255 = load ptr, ptr %19, align 8, !tbaa !5
  %256 = getelementptr inbounds double, ptr %255, i64 1
  %257 = call i32 @idamax_(ptr noundef %254, ptr noundef %256, ptr noundef @c__1)
  store i32 %257, ptr %40, align 4, !tbaa !9
  %258 = load ptr, ptr %19, align 8, !tbaa !5
  %259 = load i32, ptr %40, align 4, !tbaa !9
  %260 = sext i32 %259 to i64
  %261 = getelementptr inbounds double, ptr %258, i64 %260
  %262 = load double, ptr %261, align 8, !tbaa !11
  store double %262, ptr %28, align 8, !tbaa !11
  %263 = load double, ptr %28, align 8, !tbaa !11
  %264 = fcmp oge double %263, 0.000000e+00
  br i1 %264, label %265, label %267

265:                                              ; preds = %253
  %266 = load double, ptr %28, align 8, !tbaa !11
  br label %270

267:                                              ; preds = %253
  %268 = load double, ptr %28, align 8, !tbaa !11
  %269 = fneg double %268
  br label %270

270:                                              ; preds = %267, %265
  %271 = phi double [ %266, %265 ], [ %269, %267 ]
  store double %271, ptr %36, align 8, !tbaa !11
  %272 = load double, ptr %36, align 8, !tbaa !11
  store double %272, ptr %32, align 8, !tbaa !11
  %273 = load i32, ptr %47, align 4, !tbaa !9
  %274 = icmp ne i32 %273, 0
  br i1 %274, label %275, label %455

275:                                              ; preds = %270
  %276 = load i32, ptr %44, align 4, !tbaa !9
  %277 = icmp ne i32 %276, 0
  br i1 %277, label %278, label %281

278:                                              ; preds = %275
  %279 = load ptr, ptr %16, align 8, !tbaa !5
  %280 = load i32, ptr %279, align 4, !tbaa !9
  store i32 %280, ptr %48, align 4, !tbaa !9
  store i32 1, ptr %43, align 4, !tbaa !9
  store i32 -1, ptr %31, align 4, !tbaa !9
  br label %284

281:                                              ; preds = %275
  store i32 1, ptr %48, align 4, !tbaa !9
  %282 = load ptr, ptr %16, align 8, !tbaa !5
  %283 = load i32, ptr %282, align 4, !tbaa !9
  store i32 %283, ptr %43, align 4, !tbaa !9
  store i32 1, ptr %31, align 4, !tbaa !9
  br label %284

284:                                              ; preds = %281, %278
  %285 = load double, ptr %41, align 8, !tbaa !11
  %286 = fcmp une double %285, 1.000000e+00
  br i1 %286, label %287, label %288

287:                                              ; preds = %284
  store double 0.000000e+00, ptr %37, align 8, !tbaa !11
  br label %454

288:                                              ; preds = %284
  %289 = load i32, ptr %50, align 4, !tbaa !9
  %290 = icmp ne i32 %289, 0
  br i1 %290, label %291, label %394

291:                                              ; preds = %288
  %292 = load double, ptr %32, align 8, !tbaa !11
  %293 = load double, ptr %49, align 8, !tbaa !11
  %294 = fcmp oge double %292, %293
  br i1 %294, label %295, label %297

295:                                              ; preds = %291
  %296 = load double, ptr %32, align 8, !tbaa !11
  br label %299

297:                                              ; preds = %291
  %298 = load double, ptr %49, align 8, !tbaa !11
  br label %299

299:                                              ; preds = %297, %295
  %300 = phi double [ %296, %295 ], [ %298, %297 ]
  %301 = fdiv double 1.000000e+00, %300
  store double %301, ptr %37, align 8, !tbaa !11
  %302 = load double, ptr %37, align 8, !tbaa !11
  store double %302, ptr %32, align 8, !tbaa !11
  %303 = load i32, ptr %43, align 4, !tbaa !9
  store i32 %303, ptr %25, align 4, !tbaa !9
  %304 = load i32, ptr %31, align 4, !tbaa !9
  store i32 %304, ptr %26, align 4, !tbaa !9
  %305 = load i32, ptr %48, align 4, !tbaa !9
  store i32 %305, ptr %40, align 4, !tbaa !9
  br label %306

306:                                              ; preds = %388, %299
  %307 = load i32, ptr %26, align 4, !tbaa !9
  %308 = icmp slt i32 %307, 0
  br i1 %308, label %309, label %314

309:                                              ; preds = %306
  %310 = load i32, ptr %40, align 4, !tbaa !9
  %311 = load i32, ptr %25, align 4, !tbaa !9
  %312 = icmp sge i32 %310, %311
  %313 = zext i1 %312 to i32
  br label %319

314:                                              ; preds = %306
  %315 = load i32, ptr %40, align 4, !tbaa !9
  %316 = load i32, ptr %25, align 4, !tbaa !9
  %317 = icmp sle i32 %315, %316
  %318 = zext i1 %317 to i32
  br label %319

319:                                              ; preds = %314, %309
  %320 = phi i32 [ %313, %309 ], [ %318, %314 ]
  %321 = icmp ne i32 %320, 0
  br i1 %321, label %322, label %392

322:                                              ; preds = %319
  %323 = load double, ptr %37, align 8, !tbaa !11
  %324 = load double, ptr %49, align 8, !tbaa !11
  %325 = fcmp ole double %323, %324
  br i1 %325, label %326, label %327

326:                                              ; preds = %322
  br label %454

327:                                              ; preds = %322
  %328 = load ptr, ptr %17, align 8, !tbaa !5
  %329 = load i32, ptr %40, align 4, !tbaa !9
  %330 = load i32, ptr %40, align 4, !tbaa !9
  %331 = load i32, ptr %23, align 4, !tbaa !9
  %332 = mul nsw i32 %330, %331
  %333 = add nsw i32 %329, %332
  %334 = sext i32 %333 to i64
  %335 = getelementptr inbounds double, ptr %328, i64 %334
  %336 = load double, ptr %335, align 8, !tbaa !11
  store double %336, ptr %28, align 8, !tbaa !11
  %337 = load double, ptr %28, align 8, !tbaa !11
  %338 = fcmp oge double %337, 0.000000e+00
  br i1 %338, label %339, label %341

339:                                              ; preds = %327
  %340 = load double, ptr %28, align 8, !tbaa !11
  br label %344

341:                                              ; preds = %327
  %342 = load double, ptr %28, align 8, !tbaa !11
  %343 = fneg double %342
  br label %344

344:                                              ; preds = %341, %339
  %345 = phi double [ %340, %339 ], [ %343, %341 ]
  store double %345, ptr %52, align 8, !tbaa !11
  %346 = load double, ptr %32, align 8, !tbaa !11
  store double %346, ptr %28, align 8, !tbaa !11
  %347 = load double, ptr %52, align 8, !tbaa !11
  %348 = fcmp ole double 1.000000e+00, %347
  br i1 %348, label %349, label %350

349:                                              ; preds = %344
  br label %352

350:                                              ; preds = %344
  %351 = load double, ptr %52, align 8, !tbaa !11
  br label %352

352:                                              ; preds = %350, %349
  %353 = phi double [ 1.000000e+00, %349 ], [ %351, %350 ]
  %354 = load double, ptr %37, align 8, !tbaa !11
  %355 = fmul double %353, %354
  store double %355, ptr %29, align 8, !tbaa !11
  %356 = load double, ptr %28, align 8, !tbaa !11
  %357 = load double, ptr %29, align 8, !tbaa !11
  %358 = fcmp ole double %356, %357
  br i1 %358, label %359, label %361

359:                                              ; preds = %352
  %360 = load double, ptr %28, align 8, !tbaa !11
  br label %363

361:                                              ; preds = %352
  %362 = load double, ptr %29, align 8, !tbaa !11
  br label %363

363:                                              ; preds = %361, %359
  %364 = phi double [ %360, %359 ], [ %362, %361 ]
  store double %364, ptr %32, align 8, !tbaa !11
  %365 = load double, ptr %52, align 8, !tbaa !11
  %366 = load ptr, ptr %21, align 8, !tbaa !5
  %367 = load i32, ptr %40, align 4, !tbaa !9
  %368 = sext i32 %367 to i64
  %369 = getelementptr inbounds double, ptr %366, i64 %368
  %370 = load double, ptr %369, align 8, !tbaa !11
  %371 = fadd double %365, %370
  %372 = load double, ptr %49, align 8, !tbaa !11
  %373 = fcmp oge double %371, %372
  br i1 %373, label %374, label %386

374:                                              ; preds = %363
  %375 = load double, ptr %52, align 8, !tbaa !11
  %376 = load double, ptr %52, align 8, !tbaa !11
  %377 = load ptr, ptr %21, align 8, !tbaa !5
  %378 = load i32, ptr %40, align 4, !tbaa !9
  %379 = sext i32 %378 to i64
  %380 = getelementptr inbounds double, ptr %377, i64 %379
  %381 = load double, ptr %380, align 8, !tbaa !11
  %382 = fadd double %376, %381
  %383 = fdiv double %375, %382
  %384 = load double, ptr %37, align 8, !tbaa !11
  %385 = fmul double %384, %383
  store double %385, ptr %37, align 8, !tbaa !11
  br label %387

386:                                              ; preds = %363
  store double 0.000000e+00, ptr %37, align 8, !tbaa !11
  br label %387

387:                                              ; preds = %386, %374
  br label %388

388:                                              ; preds = %387
  %389 = load i32, ptr %26, align 4, !tbaa !9
  %390 = load i32, ptr %40, align 4, !tbaa !9
  %391 = add nsw i32 %390, %389
  store i32 %391, ptr %40, align 4, !tbaa !9
  br label %306, !llvm.loop !16

392:                                              ; preds = %319
  %393 = load double, ptr %32, align 8, !tbaa !11
  store double %393, ptr %37, align 8, !tbaa !11
  br label %453

394:                                              ; preds = %288
  store double 1.000000e+00, ptr %28, align 8, !tbaa !11
  %395 = load double, ptr %32, align 8, !tbaa !11
  %396 = load double, ptr %49, align 8, !tbaa !11
  %397 = fcmp oge double %395, %396
  br i1 %397, label %398, label %400

398:                                              ; preds = %394
  %399 = load double, ptr %32, align 8, !tbaa !11
  br label %402

400:                                              ; preds = %394
  %401 = load double, ptr %49, align 8, !tbaa !11
  br label %402

402:                                              ; preds = %400, %398
  %403 = phi double [ %399, %398 ], [ %401, %400 ]
  %404 = fdiv double 1.000000e+00, %403
  store double %404, ptr %29, align 8, !tbaa !11
  %405 = load double, ptr %28, align 8, !tbaa !11
  %406 = load double, ptr %29, align 8, !tbaa !11
  %407 = fcmp ole double %405, %406
  br i1 %407, label %408, label %410

408:                                              ; preds = %402
  %409 = load double, ptr %28, align 8, !tbaa !11
  br label %412

410:                                              ; preds = %402
  %411 = load double, ptr %29, align 8, !tbaa !11
  br label %412

412:                                              ; preds = %410, %408
  %413 = phi double [ %409, %408 ], [ %411, %410 ]
  store double %413, ptr %37, align 8, !tbaa !11
  %414 = load i32, ptr %43, align 4, !tbaa !9
  store i32 %414, ptr %26, align 4, !tbaa !9
  %415 = load i32, ptr %31, align 4, !tbaa !9
  store i32 %415, ptr %25, align 4, !tbaa !9
  %416 = load i32, ptr %48, align 4, !tbaa !9
  store i32 %416, ptr %40, align 4, !tbaa !9
  br label %417

417:                                              ; preds = %448, %412
  %418 = load i32, ptr %25, align 4, !tbaa !9
  %419 = icmp slt i32 %418, 0
  br i1 %419, label %420, label %425

420:                                              ; preds = %417
  %421 = load i32, ptr %40, align 4, !tbaa !9
  %422 = load i32, ptr %26, align 4, !tbaa !9
  %423 = icmp sge i32 %421, %422
  %424 = zext i1 %423 to i32
  br label %430

425:                                              ; preds = %417
  %426 = load i32, ptr %40, align 4, !tbaa !9
  %427 = load i32, ptr %26, align 4, !tbaa !9
  %428 = icmp sle i32 %426, %427
  %429 = zext i1 %428 to i32
  br label %430

430:                                              ; preds = %425, %420
  %431 = phi i32 [ %424, %420 ], [ %429, %425 ]
  %432 = icmp ne i32 %431, 0
  br i1 %432, label %433, label %452

433:                                              ; preds = %430
  %434 = load double, ptr %37, align 8, !tbaa !11
  %435 = load double, ptr %49, align 8, !tbaa !11
  %436 = fcmp ole double %434, %435
  br i1 %436, label %437, label %438

437:                                              ; preds = %433
  br label %454

438:                                              ; preds = %433
  %439 = load ptr, ptr %21, align 8, !tbaa !5
  %440 = load i32, ptr %40, align 4, !tbaa !9
  %441 = sext i32 %440 to i64
  %442 = getelementptr inbounds double, ptr %439, i64 %441
  %443 = load double, ptr %442, align 8, !tbaa !11
  %444 = fadd double %443, 1.000000e+00
  %445 = fdiv double 1.000000e+00, %444
  %446 = load double, ptr %37, align 8, !tbaa !11
  %447 = fmul double %446, %445
  store double %447, ptr %37, align 8, !tbaa !11
  br label %448

448:                                              ; preds = %438
  %449 = load i32, ptr %25, align 4, !tbaa !9
  %450 = load i32, ptr %40, align 4, !tbaa !9
  %451 = add nsw i32 %450, %449
  store i32 %451, ptr %40, align 4, !tbaa !9
  br label %417, !llvm.loop !17

452:                                              ; preds = %430
  br label %453

453:                                              ; preds = %452, %392
  br label %454

454:                                              ; preds = %453, %437, %326, %287
  br label %630

455:                                              ; preds = %270
  %456 = load i32, ptr %44, align 4, !tbaa !9
  %457 = icmp ne i32 %456, 0
  br i1 %457, label %458, label %461

458:                                              ; preds = %455
  store i32 1, ptr %48, align 4, !tbaa !9
  %459 = load ptr, ptr %16, align 8, !tbaa !5
  %460 = load i32, ptr %459, align 4, !tbaa !9
  store i32 %460, ptr %43, align 4, !tbaa !9
  store i32 1, ptr %31, align 4, !tbaa !9
  br label %464

461:                                              ; preds = %455
  %462 = load ptr, ptr %16, align 8, !tbaa !5
  %463 = load i32, ptr %462, align 4, !tbaa !9
  store i32 %463, ptr %48, align 4, !tbaa !9
  store i32 1, ptr %43, align 4, !tbaa !9
  store i32 -1, ptr %31, align 4, !tbaa !9
  br label %464

464:                                              ; preds = %461, %458
  %465 = load double, ptr %41, align 8, !tbaa !11
  %466 = fcmp une double %465, 1.000000e+00
  br i1 %466, label %467, label %468

467:                                              ; preds = %464
  store double 0.000000e+00, ptr %37, align 8, !tbaa !11
  br label %629

468:                                              ; preds = %464
  %469 = load i32, ptr %50, align 4, !tbaa !9
  %470 = icmp ne i32 %469, 0
  br i1 %470, label %471, label %569

471:                                              ; preds = %468
  %472 = load double, ptr %32, align 8, !tbaa !11
  %473 = load double, ptr %49, align 8, !tbaa !11
  %474 = fcmp oge double %472, %473
  br i1 %474, label %475, label %477

475:                                              ; preds = %471
  %476 = load double, ptr %32, align 8, !tbaa !11
  br label %479

477:                                              ; preds = %471
  %478 = load double, ptr %49, align 8, !tbaa !11
  br label %479

479:                                              ; preds = %477, %475
  %480 = phi double [ %476, %475 ], [ %478, %477 ]
  %481 = fdiv double 1.000000e+00, %480
  store double %481, ptr %37, align 8, !tbaa !11
  %482 = load double, ptr %37, align 8, !tbaa !11
  store double %482, ptr %32, align 8, !tbaa !11
  %483 = load i32, ptr %43, align 4, !tbaa !9
  store i32 %483, ptr %25, align 4, !tbaa !9
  %484 = load i32, ptr %31, align 4, !tbaa !9
  store i32 %484, ptr %26, align 4, !tbaa !9
  %485 = load i32, ptr %48, align 4, !tbaa !9
  store i32 %485, ptr %40, align 4, !tbaa !9
  br label %486

486:                                              ; preds = %555, %479
  %487 = load i32, ptr %26, align 4, !tbaa !9
  %488 = icmp slt i32 %487, 0
  br i1 %488, label %489, label %494

489:                                              ; preds = %486
  %490 = load i32, ptr %40, align 4, !tbaa !9
  %491 = load i32, ptr %25, align 4, !tbaa !9
  %492 = icmp sge i32 %490, %491
  %493 = zext i1 %492 to i32
  br label %499

494:                                              ; preds = %486
  %495 = load i32, ptr %40, align 4, !tbaa !9
  %496 = load i32, ptr %25, align 4, !tbaa !9
  %497 = icmp sle i32 %495, %496
  %498 = zext i1 %497 to i32
  br label %499

499:                                              ; preds = %494, %489
  %500 = phi i32 [ %493, %489 ], [ %498, %494 ]
  %501 = icmp ne i32 %500, 0
  br i1 %501, label %502, label %559

502:                                              ; preds = %499
  %503 = load double, ptr %37, align 8, !tbaa !11
  %504 = load double, ptr %49, align 8, !tbaa !11
  %505 = fcmp ole double %503, %504
  br i1 %505, label %506, label %507

506:                                              ; preds = %502
  br label %629

507:                                              ; preds = %502
  %508 = load ptr, ptr %21, align 8, !tbaa !5
  %509 = load i32, ptr %40, align 4, !tbaa !9
  %510 = sext i32 %509 to i64
  %511 = getelementptr inbounds double, ptr %508, i64 %510
  %512 = load double, ptr %511, align 8, !tbaa !11
  %513 = fadd double %512, 1.000000e+00
  store double %513, ptr %45, align 8, !tbaa !11
  %514 = load double, ptr %37, align 8, !tbaa !11
  store double %514, ptr %28, align 8, !tbaa !11
  %515 = load double, ptr %32, align 8, !tbaa !11
  %516 = load double, ptr %45, align 8, !tbaa !11
  %517 = fdiv double %515, %516
  store double %517, ptr %29, align 8, !tbaa !11
  %518 = load double, ptr %28, align 8, !tbaa !11
  %519 = load double, ptr %29, align 8, !tbaa !11
  %520 = fcmp ole double %518, %519
  br i1 %520, label %521, label %523

521:                                              ; preds = %507
  %522 = load double, ptr %28, align 8, !tbaa !11
  br label %525

523:                                              ; preds = %507
  %524 = load double, ptr %29, align 8, !tbaa !11
  br label %525

525:                                              ; preds = %523, %521
  %526 = phi double [ %522, %521 ], [ %524, %523 ]
  store double %526, ptr %37, align 8, !tbaa !11
  %527 = load ptr, ptr %17, align 8, !tbaa !5
  %528 = load i32, ptr %40, align 4, !tbaa !9
  %529 = load i32, ptr %40, align 4, !tbaa !9
  %530 = load i32, ptr %23, align 4, !tbaa !9
  %531 = mul nsw i32 %529, %530
  %532 = add nsw i32 %528, %531
  %533 = sext i32 %532 to i64
  %534 = getelementptr inbounds double, ptr %527, i64 %533
  %535 = load double, ptr %534, align 8, !tbaa !11
  store double %535, ptr %28, align 8, !tbaa !11
  %536 = load double, ptr %28, align 8, !tbaa !11
  %537 = fcmp oge double %536, 0.000000e+00
  br i1 %537, label %538, label %540

538:                                              ; preds = %525
  %539 = load double, ptr %28, align 8, !tbaa !11
  br label %543

540:                                              ; preds = %525
  %541 = load double, ptr %28, align 8, !tbaa !11
  %542 = fneg double %541
  br label %543

543:                                              ; preds = %540, %538
  %544 = phi double [ %539, %538 ], [ %542, %540 ]
  store double %544, ptr %52, align 8, !tbaa !11
  %545 = load double, ptr %45, align 8, !tbaa !11
  %546 = load double, ptr %52, align 8, !tbaa !11
  %547 = fcmp ogt double %545, %546
  br i1 %547, label %548, label %554

548:                                              ; preds = %543
  %549 = load double, ptr %52, align 8, !tbaa !11
  %550 = load double, ptr %45, align 8, !tbaa !11
  %551 = fdiv double %549, %550
  %552 = load double, ptr %32, align 8, !tbaa !11
  %553 = fmul double %552, %551
  store double %553, ptr %32, align 8, !tbaa !11
  br label %554

554:                                              ; preds = %548, %543
  br label %555

555:                                              ; preds = %554
  %556 = load i32, ptr %26, align 4, !tbaa !9
  %557 = load i32, ptr %40, align 4, !tbaa !9
  %558 = add nsw i32 %557, %556
  store i32 %558, ptr %40, align 4, !tbaa !9
  br label %486, !llvm.loop !18

559:                                              ; preds = %499
  %560 = load double, ptr %37, align 8, !tbaa !11
  %561 = load double, ptr %32, align 8, !tbaa !11
  %562 = fcmp ole double %560, %561
  br i1 %562, label %563, label %565

563:                                              ; preds = %559
  %564 = load double, ptr %37, align 8, !tbaa !11
  br label %567

565:                                              ; preds = %559
  %566 = load double, ptr %32, align 8, !tbaa !11
  br label %567

567:                                              ; preds = %565, %563
  %568 = phi double [ %564, %563 ], [ %566, %565 ]
  store double %568, ptr %37, align 8, !tbaa !11
  br label %628

569:                                              ; preds = %468
  store double 1.000000e+00, ptr %28, align 8, !tbaa !11
  %570 = load double, ptr %32, align 8, !tbaa !11
  %571 = load double, ptr %49, align 8, !tbaa !11
  %572 = fcmp oge double %570, %571
  br i1 %572, label %573, label %575

573:                                              ; preds = %569
  %574 = load double, ptr %32, align 8, !tbaa !11
  br label %577

575:                                              ; preds = %569
  %576 = load double, ptr %49, align 8, !tbaa !11
  br label %577

577:                                              ; preds = %575, %573
  %578 = phi double [ %574, %573 ], [ %576, %575 ]
  %579 = fdiv double 1.000000e+00, %578
  store double %579, ptr %29, align 8, !tbaa !11
  %580 = load double, ptr %28, align 8, !tbaa !11
  %581 = load double, ptr %29, align 8, !tbaa !11
  %582 = fcmp ole double %580, %581
  br i1 %582, label %583, label %585

583:                                              ; preds = %577
  %584 = load double, ptr %28, align 8, !tbaa !11
  br label %587

585:                                              ; preds = %577
  %586 = load double, ptr %29, align 8, !tbaa !11
  br label %587

587:                                              ; preds = %585, %583
  %588 = phi double [ %584, %583 ], [ %586, %585 ]
  store double %588, ptr %37, align 8, !tbaa !11
  %589 = load i32, ptr %43, align 4, !tbaa !9
  store i32 %589, ptr %26, align 4, !tbaa !9
  %590 = load i32, ptr %31, align 4, !tbaa !9
  store i32 %590, ptr %25, align 4, !tbaa !9
  %591 = load i32, ptr %48, align 4, !tbaa !9
  store i32 %591, ptr %40, align 4, !tbaa !9
  br label %592

592:                                              ; preds = %623, %587
  %593 = load i32, ptr %25, align 4, !tbaa !9
  %594 = icmp slt i32 %593, 0
  br i1 %594, label %595, label %600

595:                                              ; preds = %592
  %596 = load i32, ptr %40, align 4, !tbaa !9
  %597 = load i32, ptr %26, align 4, !tbaa !9
  %598 = icmp sge i32 %596, %597
  %599 = zext i1 %598 to i32
  br label %605

600:                                              ; preds = %592
  %601 = load i32, ptr %40, align 4, !tbaa !9
  %602 = load i32, ptr %26, align 4, !tbaa !9
  %603 = icmp sle i32 %601, %602
  %604 = zext i1 %603 to i32
  br label %605

605:                                              ; preds = %600, %595
  %606 = phi i32 [ %599, %595 ], [ %604, %600 ]
  %607 = icmp ne i32 %606, 0
  br i1 %607, label %608, label %627

608:                                              ; preds = %605
  %609 = load double, ptr %37, align 8, !tbaa !11
  %610 = load double, ptr %49, align 8, !tbaa !11
  %611 = fcmp ole double %609, %610
  br i1 %611, label %612, label %613

612:                                              ; preds = %608
  br label %629

613:                                              ; preds = %608
  %614 = load ptr, ptr %21, align 8, !tbaa !5
  %615 = load i32, ptr %40, align 4, !tbaa !9
  %616 = sext i32 %615 to i64
  %617 = getelementptr inbounds double, ptr %614, i64 %616
  %618 = load double, ptr %617, align 8, !tbaa !11
  %619 = fadd double %618, 1.000000e+00
  store double %619, ptr %45, align 8, !tbaa !11
  %620 = load double, ptr %45, align 8, !tbaa !11
  %621 = load double, ptr %37, align 8, !tbaa !11
  %622 = fdiv double %621, %620
  store double %622, ptr %37, align 8, !tbaa !11
  br label %623

623:                                              ; preds = %613
  %624 = load i32, ptr %25, align 4, !tbaa !9
  %625 = load i32, ptr %40, align 4, !tbaa !9
  %626 = add nsw i32 %625, %624
  store i32 %626, ptr %40, align 4, !tbaa !9
  br label %592, !llvm.loop !19

627:                                              ; preds = %605
  br label %628

628:                                              ; preds = %627, %567
  br label %629

629:                                              ; preds = %628, %612, %506, %467
  br label %630

630:                                              ; preds = %629, %454
  %631 = load double, ptr %37, align 8, !tbaa !11
  %632 = load double, ptr %41, align 8, !tbaa !11
  %633 = fmul double %631, %632
  %634 = load double, ptr %49, align 8, !tbaa !11
  %635 = fcmp ogt double %633, %634
  br i1 %635, label %636, label %648

636:                                              ; preds = %630
  %637 = load ptr, ptr %12, align 8, !tbaa !5
  %638 = load ptr, ptr %13, align 8, !tbaa !5
  %639 = load ptr, ptr %14, align 8, !tbaa !5
  %640 = load ptr, ptr %16, align 8, !tbaa !5
  %641 = load ptr, ptr %17, align 8, !tbaa !5
  %642 = load i32, ptr %24, align 4, !tbaa !9
  %643 = sext i32 %642 to i64
  %644 = getelementptr inbounds double, ptr %641, i64 %643
  %645 = load ptr, ptr %18, align 8, !tbaa !5
  %646 = load ptr, ptr %19, align 8, !tbaa !5
  %647 = getelementptr inbounds double, ptr %646, i64 1
  call void @dtrsv_(ptr noundef %637, ptr noundef %638, ptr noundef %639, ptr noundef %640, ptr noundef %644, ptr noundef %645, ptr noundef %647, ptr noundef @c__1)
  br label %1453

648:                                              ; preds = %630
  %649 = load double, ptr %36, align 8, !tbaa !11
  %650 = load double, ptr %46, align 8, !tbaa !11
  %651 = fcmp ogt double %649, %650
  br i1 %651, label %652, label %662

652:                                              ; preds = %648
  %653 = load double, ptr %46, align 8, !tbaa !11
  %654 = load double, ptr %36, align 8, !tbaa !11
  %655 = fdiv double %653, %654
  %656 = load ptr, ptr %20, align 8, !tbaa !5
  store double %655, ptr %656, align 8, !tbaa !11
  %657 = load ptr, ptr %16, align 8, !tbaa !5
  %658 = load ptr, ptr %20, align 8, !tbaa !5
  %659 = load ptr, ptr %19, align 8, !tbaa !5
  %660 = getelementptr inbounds double, ptr %659, i64 1
  call void @dscal_(ptr noundef %657, ptr noundef %658, ptr noundef %660, ptr noundef @c__1)
  %661 = load double, ptr %46, align 8, !tbaa !11
  store double %661, ptr %36, align 8, !tbaa !11
  br label %662

662:                                              ; preds = %652, %648
  %663 = load i32, ptr %47, align 4, !tbaa !9
  %664 = icmp ne i32 %663, 0
  br i1 %664, label %665, label %1022

665:                                              ; preds = %662
  %666 = load i32, ptr %43, align 4, !tbaa !9
  store i32 %666, ptr %25, align 4, !tbaa !9
  %667 = load i32, ptr %31, align 4, !tbaa !9
  store i32 %667, ptr %26, align 4, !tbaa !9
  %668 = load i32, ptr %48, align 4, !tbaa !9
  store i32 %668, ptr %40, align 4, !tbaa !9
  br label %669

669:                                              ; preds = %1017, %665
  %670 = load i32, ptr %26, align 4, !tbaa !9
  %671 = icmp slt i32 %670, 0
  br i1 %671, label %672, label %677

672:                                              ; preds = %669
  %673 = load i32, ptr %40, align 4, !tbaa !9
  %674 = load i32, ptr %25, align 4, !tbaa !9
  %675 = icmp sge i32 %673, %674
  %676 = zext i1 %675 to i32
  br label %682

677:                                              ; preds = %669
  %678 = load i32, ptr %40, align 4, !tbaa !9
  %679 = load i32, ptr %25, align 4, !tbaa !9
  %680 = icmp sle i32 %678, %679
  %681 = zext i1 %680 to i32
  br label %682

682:                                              ; preds = %677, %672
  %683 = phi i32 [ %676, %672 ], [ %681, %677 ]
  %684 = icmp ne i32 %683, 0
  br i1 %684, label %685, label %1021

685:                                              ; preds = %682
  %686 = load ptr, ptr %19, align 8, !tbaa !5
  %687 = load i32, ptr %40, align 4, !tbaa !9
  %688 = sext i32 %687 to i64
  %689 = getelementptr inbounds double, ptr %686, i64 %688
  %690 = load double, ptr %689, align 8, !tbaa !11
  store double %690, ptr %28, align 8, !tbaa !11
  %691 = load double, ptr %28, align 8, !tbaa !11
  %692 = fcmp oge double %691, 0.000000e+00
  br i1 %692, label %693, label %695

693:                                              ; preds = %685
  %694 = load double, ptr %28, align 8, !tbaa !11
  br label %698

695:                                              ; preds = %685
  %696 = load double, ptr %28, align 8, !tbaa !11
  %697 = fneg double %696
  br label %698

698:                                              ; preds = %695, %693
  %699 = phi double [ %694, %693 ], [ %697, %695 ]
  store double %699, ptr %45, align 8, !tbaa !11
  %700 = load i32, ptr %50, align 4, !tbaa !9
  %701 = icmp ne i32 %700, 0
  br i1 %701, label %702, label %714

702:                                              ; preds = %698
  %703 = load ptr, ptr %17, align 8, !tbaa !5
  %704 = load i32, ptr %40, align 4, !tbaa !9
  %705 = load i32, ptr %40, align 4, !tbaa !9
  %706 = load i32, ptr %23, align 4, !tbaa !9
  %707 = mul nsw i32 %705, %706
  %708 = add nsw i32 %704, %707
  %709 = sext i32 %708 to i64
  %710 = getelementptr inbounds double, ptr %703, i64 %709
  %711 = load double, ptr %710, align 8, !tbaa !11
  %712 = load double, ptr %41, align 8, !tbaa !11
  %713 = fmul double %711, %712
  store double %713, ptr %35, align 8, !tbaa !11
  br label %720

714:                                              ; preds = %698
  %715 = load double, ptr %41, align 8, !tbaa !11
  store double %715, ptr %35, align 8, !tbaa !11
  %716 = load double, ptr %41, align 8, !tbaa !11
  %717 = fcmp oeq double %716, 1.000000e+00
  br i1 %717, label %718, label %719

718:                                              ; preds = %714
  br label %863

719:                                              ; preds = %714
  br label %720

720:                                              ; preds = %719, %702
  %721 = load double, ptr %35, align 8, !tbaa !11
  %722 = fcmp oge double %721, 0.000000e+00
  br i1 %722, label %723, label %725

723:                                              ; preds = %720
  %724 = load double, ptr %35, align 8, !tbaa !11
  br label %728

725:                                              ; preds = %720
  %726 = load double, ptr %35, align 8, !tbaa !11
  %727 = fneg double %726
  br label %728

728:                                              ; preds = %725, %723
  %729 = phi double [ %724, %723 ], [ %727, %725 ]
  store double %729, ptr %52, align 8, !tbaa !11
  %730 = load double, ptr %52, align 8, !tbaa !11
  %731 = load double, ptr %49, align 8, !tbaa !11
  %732 = fcmp ogt double %730, %731
  br i1 %732, label %733, label %778

733:                                              ; preds = %728
  %734 = load double, ptr %52, align 8, !tbaa !11
  %735 = fcmp olt double %734, 1.000000e+00
  br i1 %735, label %736, label %756

736:                                              ; preds = %733
  %737 = load double, ptr %45, align 8, !tbaa !11
  %738 = load double, ptr %52, align 8, !tbaa !11
  %739 = load double, ptr %46, align 8, !tbaa !11
  %740 = fmul double %738, %739
  %741 = fcmp ogt double %737, %740
  br i1 %741, label %742, label %755

742:                                              ; preds = %736
  %743 = load double, ptr %45, align 8, !tbaa !11
  %744 = fdiv double 1.000000e+00, %743
  store double %744, ptr %51, align 8, !tbaa !11
  %745 = load ptr, ptr %16, align 8, !tbaa !5
  %746 = load ptr, ptr %19, align 8, !tbaa !5
  %747 = getelementptr inbounds double, ptr %746, i64 1
  call void @dscal_(ptr noundef %745, ptr noundef %51, ptr noundef %747, ptr noundef @c__1)
  %748 = load double, ptr %51, align 8, !tbaa !11
  %749 = load ptr, ptr %20, align 8, !tbaa !5
  %750 = load double, ptr %749, align 8, !tbaa !11
  %751 = fmul double %750, %748
  store double %751, ptr %749, align 8, !tbaa !11
  %752 = load double, ptr %51, align 8, !tbaa !11
  %753 = load double, ptr %36, align 8, !tbaa !11
  %754 = fmul double %753, %752
  store double %754, ptr %36, align 8, !tbaa !11
  br label %755

755:                                              ; preds = %742, %736
  br label %756

756:                                              ; preds = %755, %733
  %757 = load double, ptr %35, align 8, !tbaa !11
  %758 = load ptr, ptr %19, align 8, !tbaa !5
  %759 = load i32, ptr %40, align 4, !tbaa !9
  %760 = sext i32 %759 to i64
  %761 = getelementptr inbounds double, ptr %758, i64 %760
  %762 = load double, ptr %761, align 8, !tbaa !11
  %763 = fdiv double %762, %757
  store double %763, ptr %761, align 8, !tbaa !11
  %764 = load ptr, ptr %19, align 8, !tbaa !5
  %765 = load i32, ptr %40, align 4, !tbaa !9
  %766 = sext i32 %765 to i64
  %767 = getelementptr inbounds double, ptr %764, i64 %766
  %768 = load double, ptr %767, align 8, !tbaa !11
  store double %768, ptr %28, align 8, !tbaa !11
  %769 = load double, ptr %28, align 8, !tbaa !11
  %770 = fcmp oge double %769, 0.000000e+00
  br i1 %770, label %771, label %773

771:                                              ; preds = %756
  %772 = load double, ptr %28, align 8, !tbaa !11
  br label %776

773:                                              ; preds = %756
  %774 = load double, ptr %28, align 8, !tbaa !11
  %775 = fneg double %774
  br label %776

776:                                              ; preds = %773, %771
  %777 = phi double [ %772, %771 ], [ %775, %773 ]
  store double %777, ptr %45, align 8, !tbaa !11
  br label %862

778:                                              ; preds = %728
  %779 = load double, ptr %52, align 8, !tbaa !11
  %780 = fcmp ogt double %779, 0.000000e+00
  br i1 %780, label %781, label %840

781:                                              ; preds = %778
  %782 = load double, ptr %45, align 8, !tbaa !11
  %783 = load double, ptr %52, align 8, !tbaa !11
  %784 = load double, ptr %46, align 8, !tbaa !11
  %785 = fmul double %783, %784
  %786 = fcmp ogt double %782, %785
  br i1 %786, label %787, label %818

787:                                              ; preds = %781
  %788 = load double, ptr %52, align 8, !tbaa !11
  %789 = load double, ptr %46, align 8, !tbaa !11
  %790 = fmul double %788, %789
  %791 = load double, ptr %45, align 8, !tbaa !11
  %792 = fdiv double %790, %791
  store double %792, ptr %51, align 8, !tbaa !11
  %793 = load ptr, ptr %21, align 8, !tbaa !5
  %794 = load i32, ptr %40, align 4, !tbaa !9
  %795 = sext i32 %794 to i64
  %796 = getelementptr inbounds double, ptr %793, i64 %795
  %797 = load double, ptr %796, align 8, !tbaa !11
  %798 = fcmp ogt double %797, 1.000000e+00
  br i1 %798, label %799, label %807

799:                                              ; preds = %787
  %800 = load ptr, ptr %21, align 8, !tbaa !5
  %801 = load i32, ptr %40, align 4, !tbaa !9
  %802 = sext i32 %801 to i64
  %803 = getelementptr inbounds double, ptr %800, i64 %802
  %804 = load double, ptr %803, align 8, !tbaa !11
  %805 = load double, ptr %51, align 8, !tbaa !11
  %806 = fdiv double %805, %804
  store double %806, ptr %51, align 8, !tbaa !11
  br label %807

807:                                              ; preds = %799, %787
  %808 = load ptr, ptr %16, align 8, !tbaa !5
  %809 = load ptr, ptr %19, align 8, !tbaa !5
  %810 = getelementptr inbounds double, ptr %809, i64 1
  call void @dscal_(ptr noundef %808, ptr noundef %51, ptr noundef %810, ptr noundef @c__1)
  %811 = load double, ptr %51, align 8, !tbaa !11
  %812 = load ptr, ptr %20, align 8, !tbaa !5
  %813 = load double, ptr %812, align 8, !tbaa !11
  %814 = fmul double %813, %811
  store double %814, ptr %812, align 8, !tbaa !11
  %815 = load double, ptr %51, align 8, !tbaa !11
  %816 = load double, ptr %36, align 8, !tbaa !11
  %817 = fmul double %816, %815
  store double %817, ptr %36, align 8, !tbaa !11
  br label %818

818:                                              ; preds = %807, %781
  %819 = load double, ptr %35, align 8, !tbaa !11
  %820 = load ptr, ptr %19, align 8, !tbaa !5
  %821 = load i32, ptr %40, align 4, !tbaa !9
  %822 = sext i32 %821 to i64
  %823 = getelementptr inbounds double, ptr %820, i64 %822
  %824 = load double, ptr %823, align 8, !tbaa !11
  %825 = fdiv double %824, %819
  store double %825, ptr %823, align 8, !tbaa !11
  %826 = load ptr, ptr %19, align 8, !tbaa !5
  %827 = load i32, ptr %40, align 4, !tbaa !9
  %828 = sext i32 %827 to i64
  %829 = getelementptr inbounds double, ptr %826, i64 %828
  %830 = load double, ptr %829, align 8, !tbaa !11
  store double %830, ptr %28, align 8, !tbaa !11
  %831 = load double, ptr %28, align 8, !tbaa !11
  %832 = fcmp oge double %831, 0.000000e+00
  br i1 %832, label %833, label %835

833:                                              ; preds = %818
  %834 = load double, ptr %28, align 8, !tbaa !11
  br label %838

835:                                              ; preds = %818
  %836 = load double, ptr %28, align 8, !tbaa !11
  %837 = fneg double %836
  br label %838

838:                                              ; preds = %835, %833
  %839 = phi double [ %834, %833 ], [ %837, %835 ]
  store double %839, ptr %45, align 8, !tbaa !11
  br label %861

840:                                              ; preds = %778
  %841 = load ptr, ptr %16, align 8, !tbaa !5
  %842 = load i32, ptr %841, align 4, !tbaa !9
  store i32 %842, ptr %27, align 4, !tbaa !9
  store i32 1, ptr %39, align 4, !tbaa !9
  br label %843

843:                                              ; preds = %852, %840
  %844 = load i32, ptr %39, align 4, !tbaa !9
  %845 = load i32, ptr %27, align 4, !tbaa !9
  %846 = icmp sle i32 %844, %845
  br i1 %846, label %847, label %855

847:                                              ; preds = %843
  %848 = load ptr, ptr %19, align 8, !tbaa !5
  %849 = load i32, ptr %39, align 4, !tbaa !9
  %850 = sext i32 %849 to i64
  %851 = getelementptr inbounds double, ptr %848, i64 %850
  store double 0.000000e+00, ptr %851, align 8, !tbaa !11
  br label %852

852:                                              ; preds = %847
  %853 = load i32, ptr %39, align 4, !tbaa !9
  %854 = add nsw i32 %853, 1
  store i32 %854, ptr %39, align 4, !tbaa !9
  br label %843, !llvm.loop !20

855:                                              ; preds = %843
  %856 = load ptr, ptr %19, align 8, !tbaa !5
  %857 = load i32, ptr %40, align 4, !tbaa !9
  %858 = sext i32 %857 to i64
  %859 = getelementptr inbounds double, ptr %856, i64 %858
  store double 1.000000e+00, ptr %859, align 8, !tbaa !11
  store double 1.000000e+00, ptr %45, align 8, !tbaa !11
  %860 = load ptr, ptr %20, align 8, !tbaa !5
  store double 0.000000e+00, ptr %860, align 8, !tbaa !11
  store double 0.000000e+00, ptr %36, align 8, !tbaa !11
  br label %861

861:                                              ; preds = %855, %838
  br label %862

862:                                              ; preds = %861, %776
  br label %863

863:                                              ; preds = %862, %718
  %864 = load double, ptr %45, align 8, !tbaa !11
  %865 = fcmp ogt double %864, 1.000000e+00
  br i1 %865, label %866, label %891

866:                                              ; preds = %863
  %867 = load double, ptr %45, align 8, !tbaa !11
  %868 = fdiv double 1.000000e+00, %867
  store double %868, ptr %51, align 8, !tbaa !11
  %869 = load ptr, ptr %21, align 8, !tbaa !5
  %870 = load i32, ptr %40, align 4, !tbaa !9
  %871 = sext i32 %870 to i64
  %872 = getelementptr inbounds double, ptr %869, i64 %871
  %873 = load double, ptr %872, align 8, !tbaa !11
  %874 = load double, ptr %46, align 8, !tbaa !11
  %875 = load double, ptr %36, align 8, !tbaa !11
  %876 = fsub double %874, %875
  %877 = load double, ptr %51, align 8, !tbaa !11
  %878 = fmul double %876, %877
  %879 = fcmp ogt double %873, %878
  br i1 %879, label %880, label %890

880:                                              ; preds = %866
  %881 = load double, ptr %51, align 8, !tbaa !11
  %882 = fmul double %881, 5.000000e-01
  store double %882, ptr %51, align 8, !tbaa !11
  %883 = load ptr, ptr %16, align 8, !tbaa !5
  %884 = load ptr, ptr %19, align 8, !tbaa !5
  %885 = getelementptr inbounds double, ptr %884, i64 1
  call void @dscal_(ptr noundef %883, ptr noundef %51, ptr noundef %885, ptr noundef @c__1)
  %886 = load double, ptr %51, align 8, !tbaa !11
  %887 = load ptr, ptr %20, align 8, !tbaa !5
  %888 = load double, ptr %887, align 8, !tbaa !11
  %889 = fmul double %888, %886
  store double %889, ptr %887, align 8, !tbaa !11
  br label %890

890:                                              ; preds = %880, %866
  br label %911

891:                                              ; preds = %863
  %892 = load double, ptr %45, align 8, !tbaa !11
  %893 = load ptr, ptr %21, align 8, !tbaa !5
  %894 = load i32, ptr %40, align 4, !tbaa !9
  %895 = sext i32 %894 to i64
  %896 = getelementptr inbounds double, ptr %893, i64 %895
  %897 = load double, ptr %896, align 8, !tbaa !11
  %898 = fmul double %892, %897
  %899 = load double, ptr %46, align 8, !tbaa !11
  %900 = load double, ptr %36, align 8, !tbaa !11
  %901 = fsub double %899, %900
  %902 = fcmp ogt double %898, %901
  br i1 %902, label %903, label %910

903:                                              ; preds = %891
  %904 = load ptr, ptr %16, align 8, !tbaa !5
  %905 = load ptr, ptr %19, align 8, !tbaa !5
  %906 = getelementptr inbounds double, ptr %905, i64 1
  call void @dscal_(ptr noundef %904, ptr noundef @c_b36, ptr noundef %906, ptr noundef @c__1)
  %907 = load ptr, ptr %20, align 8, !tbaa !5
  %908 = load double, ptr %907, align 8, !tbaa !11
  %909 = fmul double %908, 5.000000e-01
  store double %909, ptr %907, align 8, !tbaa !11
  br label %910

910:                                              ; preds = %903, %891
  br label %911

911:                                              ; preds = %910, %890
  %912 = load i32, ptr %44, align 4, !tbaa !9
  %913 = icmp ne i32 %912, 0
  br i1 %913, label %914, label %957

914:                                              ; preds = %911
  %915 = load i32, ptr %40, align 4, !tbaa !9
  %916 = icmp sgt i32 %915, 1
  br i1 %916, label %917, label %956

917:                                              ; preds = %914
  %918 = load i32, ptr %40, align 4, !tbaa !9
  %919 = sub nsw i32 %918, 1
  store i32 %919, ptr %27, align 4, !tbaa !9
  %920 = load ptr, ptr %19, align 8, !tbaa !5
  %921 = load i32, ptr %40, align 4, !tbaa !9
  %922 = sext i32 %921 to i64
  %923 = getelementptr inbounds double, ptr %920, i64 %922
  %924 = load double, ptr %923, align 8, !tbaa !11
  %925 = fneg double %924
  %926 = load double, ptr %41, align 8, !tbaa !11
  %927 = fmul double %925, %926
  store double %927, ptr %28, align 8, !tbaa !11
  %928 = load ptr, ptr %17, align 8, !tbaa !5
  %929 = load i32, ptr %40, align 4, !tbaa !9
  %930 = load i32, ptr %23, align 4, !tbaa !9
  %931 = mul nsw i32 %929, %930
  %932 = add nsw i32 %931, 1
  %933 = sext i32 %932 to i64
  %934 = getelementptr inbounds double, ptr %928, i64 %933
  %935 = load ptr, ptr %19, align 8, !tbaa !5
  %936 = getelementptr inbounds double, ptr %935, i64 1
  call void @daxpy_(ptr noundef %27, ptr noundef %28, ptr noundef %934, ptr noundef @c__1, ptr noundef %936, ptr noundef @c__1)
  %937 = load i32, ptr %40, align 4, !tbaa !9
  %938 = sub nsw i32 %937, 1
  store i32 %938, ptr %27, align 4, !tbaa !9
  %939 = load ptr, ptr %19, align 8, !tbaa !5
  %940 = getelementptr inbounds double, ptr %939, i64 1
  %941 = call i32 @idamax_(ptr noundef %27, ptr noundef %940, ptr noundef @c__1)
  store i32 %941, ptr %39, align 4, !tbaa !9
  %942 = load ptr, ptr %19, align 8, !tbaa !5
  %943 = load i32, ptr %39, align 4, !tbaa !9
  %944 = sext i32 %943 to i64
  %945 = getelementptr inbounds double, ptr %942, i64 %944
  %946 = load double, ptr %945, align 8, !tbaa !11
  store double %946, ptr %28, align 8, !tbaa !11
  %947 = load double, ptr %28, align 8, !tbaa !11
  %948 = fcmp oge double %947, 0.000000e+00
  br i1 %948, label %949, label %951

949:                                              ; preds = %917
  %950 = load double, ptr %28, align 8, !tbaa !11
  br label %954

951:                                              ; preds = %917
  %952 = load double, ptr %28, align 8, !tbaa !11
  %953 = fneg double %952
  br label %954

954:                                              ; preds = %951, %949
  %955 = phi double [ %950, %949 ], [ %953, %951 ]
  store double %955, ptr %36, align 8, !tbaa !11
  br label %956

956:                                              ; preds = %954, %914
  br label %1016

957:                                              ; preds = %911
  %958 = load i32, ptr %40, align 4, !tbaa !9
  %959 = load ptr, ptr %16, align 8, !tbaa !5
  %960 = load i32, ptr %959, align 4, !tbaa !9
  %961 = icmp slt i32 %958, %960
  br i1 %961, label %962, label %1015

962:                                              ; preds = %957
  %963 = load ptr, ptr %16, align 8, !tbaa !5
  %964 = load i32, ptr %963, align 4, !tbaa !9
  %965 = load i32, ptr %40, align 4, !tbaa !9
  %966 = sub nsw i32 %964, %965
  store i32 %966, ptr %27, align 4, !tbaa !9
  %967 = load ptr, ptr %19, align 8, !tbaa !5
  %968 = load i32, ptr %40, align 4, !tbaa !9
  %969 = sext i32 %968 to i64
  %970 = getelementptr inbounds double, ptr %967, i64 %969
  %971 = load double, ptr %970, align 8, !tbaa !11
  %972 = fneg double %971
  %973 = load double, ptr %41, align 8, !tbaa !11
  %974 = fmul double %972, %973
  store double %974, ptr %28, align 8, !tbaa !11
  %975 = load ptr, ptr %17, align 8, !tbaa !5
  %976 = load i32, ptr %40, align 4, !tbaa !9
  %977 = add nsw i32 %976, 1
  %978 = load i32, ptr %40, align 4, !tbaa !9
  %979 = load i32, ptr %23, align 4, !tbaa !9
  %980 = mul nsw i32 %978, %979
  %981 = add nsw i32 %977, %980
  %982 = sext i32 %981 to i64
  %983 = getelementptr inbounds double, ptr %975, i64 %982
  %984 = load ptr, ptr %19, align 8, !tbaa !5
  %985 = load i32, ptr %40, align 4, !tbaa !9
  %986 = add nsw i32 %985, 1
  %987 = sext i32 %986 to i64
  %988 = getelementptr inbounds double, ptr %984, i64 %987
  call void @daxpy_(ptr noundef %27, ptr noundef %28, ptr noundef %983, ptr noundef @c__1, ptr noundef %988, ptr noundef @c__1)
  %989 = load ptr, ptr %16, align 8, !tbaa !5
  %990 = load i32, ptr %989, align 4, !tbaa !9
  %991 = load i32, ptr %40, align 4, !tbaa !9
  %992 = sub nsw i32 %990, %991
  store i32 %992, ptr %27, align 4, !tbaa !9
  %993 = load i32, ptr %40, align 4, !tbaa !9
  %994 = load ptr, ptr %19, align 8, !tbaa !5
  %995 = load i32, ptr %40, align 4, !tbaa !9
  %996 = add nsw i32 %995, 1
  %997 = sext i32 %996 to i64
  %998 = getelementptr inbounds double, ptr %994, i64 %997
  %999 = call i32 @idamax_(ptr noundef %27, ptr noundef %998, ptr noundef @c__1)
  %1000 = add nsw i32 %993, %999
  store i32 %1000, ptr %39, align 4, !tbaa !9
  %1001 = load ptr, ptr %19, align 8, !tbaa !5
  %1002 = load i32, ptr %39, align 4, !tbaa !9
  %1003 = sext i32 %1002 to i64
  %1004 = getelementptr inbounds double, ptr %1001, i64 %1003
  %1005 = load double, ptr %1004, align 8, !tbaa !11
  store double %1005, ptr %28, align 8, !tbaa !11
  %1006 = load double, ptr %28, align 8, !tbaa !11
  %1007 = fcmp oge double %1006, 0.000000e+00
  br i1 %1007, label %1008, label %1010

1008:                                             ; preds = %962
  %1009 = load double, ptr %28, align 8, !tbaa !11
  br label %1013

1010:                                             ; preds = %962
  %1011 = load double, ptr %28, align 8, !tbaa !11
  %1012 = fneg double %1011
  br label %1013

1013:                                             ; preds = %1010, %1008
  %1014 = phi double [ %1009, %1008 ], [ %1012, %1010 ]
  store double %1014, ptr %36, align 8, !tbaa !11
  br label %1015

1015:                                             ; preds = %1013, %957
  br label %1016

1016:                                             ; preds = %1015, %956
  br label %1017

1017:                                             ; preds = %1016
  %1018 = load i32, ptr %26, align 4, !tbaa !9
  %1019 = load i32, ptr %40, align 4, !tbaa !9
  %1020 = add nsw i32 %1019, %1018
  store i32 %1020, ptr %40, align 4, !tbaa !9
  br label %669, !llvm.loop !21

1021:                                             ; preds = %682
  br label %1448

1022:                                             ; preds = %662
  %1023 = load i32, ptr %43, align 4, !tbaa !9
  store i32 %1023, ptr %26, align 4, !tbaa !9
  %1024 = load i32, ptr %31, align 4, !tbaa !9
  store i32 %1024, ptr %25, align 4, !tbaa !9
  %1025 = load i32, ptr %48, align 4, !tbaa !9
  store i32 %1025, ptr %40, align 4, !tbaa !9
  br label %1026

1026:                                             ; preds = %1443, %1022
  %1027 = load i32, ptr %25, align 4, !tbaa !9
  %1028 = icmp slt i32 %1027, 0
  br i1 %1028, label %1029, label %1034

1029:                                             ; preds = %1026
  %1030 = load i32, ptr %40, align 4, !tbaa !9
  %1031 = load i32, ptr %26, align 4, !tbaa !9
  %1032 = icmp sge i32 %1030, %1031
  %1033 = zext i1 %1032 to i32
  br label %1039

1034:                                             ; preds = %1026
  %1035 = load i32, ptr %40, align 4, !tbaa !9
  %1036 = load i32, ptr %26, align 4, !tbaa !9
  %1037 = icmp sle i32 %1035, %1036
  %1038 = zext i1 %1037 to i32
  br label %1039

1039:                                             ; preds = %1034, %1029
  %1040 = phi i32 [ %1033, %1029 ], [ %1038, %1034 ]
  %1041 = icmp ne i32 %1040, 0
  br i1 %1041, label %1042, label %1447

1042:                                             ; preds = %1039
  %1043 = load ptr, ptr %19, align 8, !tbaa !5
  %1044 = load i32, ptr %40, align 4, !tbaa !9
  %1045 = sext i32 %1044 to i64
  %1046 = getelementptr inbounds double, ptr %1043, i64 %1045
  %1047 = load double, ptr %1046, align 8, !tbaa !11
  store double %1047, ptr %28, align 8, !tbaa !11
  %1048 = load double, ptr %28, align 8, !tbaa !11
  %1049 = fcmp oge double %1048, 0.000000e+00
  br i1 %1049, label %1050, label %1052

1050:                                             ; preds = %1042
  %1051 = load double, ptr %28, align 8, !tbaa !11
  br label %1055

1052:                                             ; preds = %1042
  %1053 = load double, ptr %28, align 8, !tbaa !11
  %1054 = fneg double %1053
  br label %1055

1055:                                             ; preds = %1052, %1050
  %1056 = phi double [ %1051, %1050 ], [ %1054, %1052 ]
  store double %1056, ptr %45, align 8, !tbaa !11
  %1057 = load double, ptr %41, align 8, !tbaa !11
  store double %1057, ptr %42, align 8, !tbaa !11
  %1058 = load double, ptr %36, align 8, !tbaa !11
  %1059 = fcmp oge double %1058, 1.000000e+00
  br i1 %1059, label %1060, label %1062

1060:                                             ; preds = %1055
  %1061 = load double, ptr %36, align 8, !tbaa !11
  br label %1063

1062:                                             ; preds = %1055
  br label %1063

1063:                                             ; preds = %1062, %1060
  %1064 = phi double [ %1061, %1060 ], [ 1.000000e+00, %1062 ]
  %1065 = fdiv double 1.000000e+00, %1064
  store double %1065, ptr %51, align 8, !tbaa !11
  %1066 = load ptr, ptr %21, align 8, !tbaa !5
  %1067 = load i32, ptr %40, align 4, !tbaa !9
  %1068 = sext i32 %1067 to i64
  %1069 = getelementptr inbounds double, ptr %1066, i64 %1068
  %1070 = load double, ptr %1069, align 8, !tbaa !11
  %1071 = load double, ptr %46, align 8, !tbaa !11
  %1072 = load double, ptr %45, align 8, !tbaa !11
  %1073 = fsub double %1071, %1072
  %1074 = load double, ptr %51, align 8, !tbaa !11
  %1075 = fmul double %1073, %1074
  %1076 = fcmp ogt double %1070, %1075
  br i1 %1076, label %1077, label %1139

1077:                                             ; preds = %1063
  %1078 = load double, ptr %51, align 8, !tbaa !11
  %1079 = fmul double %1078, 5.000000e-01
  store double %1079, ptr %51, align 8, !tbaa !11
  %1080 = load i32, ptr %50, align 4, !tbaa !9
  %1081 = icmp ne i32 %1080, 0
  br i1 %1081, label %1082, label %1094

1082:                                             ; preds = %1077
  %1083 = load ptr, ptr %17, align 8, !tbaa !5
  %1084 = load i32, ptr %40, align 4, !tbaa !9
  %1085 = load i32, ptr %40, align 4, !tbaa !9
  %1086 = load i32, ptr %23, align 4, !tbaa !9
  %1087 = mul nsw i32 %1085, %1086
  %1088 = add nsw i32 %1084, %1087
  %1089 = sext i32 %1088 to i64
  %1090 = getelementptr inbounds double, ptr %1083, i64 %1089
  %1091 = load double, ptr %1090, align 8, !tbaa !11
  %1092 = load double, ptr %41, align 8, !tbaa !11
  %1093 = fmul double %1091, %1092
  store double %1093, ptr %35, align 8, !tbaa !11
  br label %1096

1094:                                             ; preds = %1077
  %1095 = load double, ptr %41, align 8, !tbaa !11
  store double %1095, ptr %35, align 8, !tbaa !11
  br label %1096

1096:                                             ; preds = %1094, %1082
  %1097 = load double, ptr %35, align 8, !tbaa !11
  %1098 = fcmp oge double %1097, 0.000000e+00
  br i1 %1098, label %1099, label %1101

1099:                                             ; preds = %1096
  %1100 = load double, ptr %35, align 8, !tbaa !11
  br label %1104

1101:                                             ; preds = %1096
  %1102 = load double, ptr %35, align 8, !tbaa !11
  %1103 = fneg double %1102
  br label %1104

1104:                                             ; preds = %1101, %1099
  %1105 = phi double [ %1100, %1099 ], [ %1103, %1101 ]
  store double %1105, ptr %52, align 8, !tbaa !11
  %1106 = load double, ptr %52, align 8, !tbaa !11
  %1107 = fcmp ogt double %1106, 1.000000e+00
  br i1 %1107, label %1108, label %1124

1108:                                             ; preds = %1104
  store double 1.000000e+00, ptr %28, align 8, !tbaa !11
  %1109 = load double, ptr %51, align 8, !tbaa !11
  %1110 = load double, ptr %52, align 8, !tbaa !11
  %1111 = fmul double %1109, %1110
  store double %1111, ptr %29, align 8, !tbaa !11
  %1112 = load double, ptr %28, align 8, !tbaa !11
  %1113 = load double, ptr %29, align 8, !tbaa !11
  %1114 = fcmp ole double %1112, %1113
  br i1 %1114, label %1115, label %1117

1115:                                             ; preds = %1108
  %1116 = load double, ptr %28, align 8, !tbaa !11
  br label %1119

1117:                                             ; preds = %1108
  %1118 = load double, ptr %29, align 8, !tbaa !11
  br label %1119

1119:                                             ; preds = %1117, %1115
  %1120 = phi double [ %1116, %1115 ], [ %1118, %1117 ]
  store double %1120, ptr %51, align 8, !tbaa !11
  %1121 = load double, ptr %35, align 8, !tbaa !11
  %1122 = load double, ptr %42, align 8, !tbaa !11
  %1123 = fdiv double %1122, %1121
  store double %1123, ptr %42, align 8, !tbaa !11
  br label %1124

1124:                                             ; preds = %1119, %1104
  %1125 = load double, ptr %51, align 8, !tbaa !11
  %1126 = fcmp olt double %1125, 1.000000e+00
  br i1 %1126, label %1127, label %1138

1127:                                             ; preds = %1124
  %1128 = load ptr, ptr %16, align 8, !tbaa !5
  %1129 = load ptr, ptr %19, align 8, !tbaa !5
  %1130 = getelementptr inbounds double, ptr %1129, i64 1
  call void @dscal_(ptr noundef %1128, ptr noundef %51, ptr noundef %1130, ptr noundef @c__1)
  %1131 = load double, ptr %51, align 8, !tbaa !11
  %1132 = load ptr, ptr %20, align 8, !tbaa !5
  %1133 = load double, ptr %1132, align 8, !tbaa !11
  %1134 = fmul double %1133, %1131
  store double %1134, ptr %1132, align 8, !tbaa !11
  %1135 = load double, ptr %51, align 8, !tbaa !11
  %1136 = load double, ptr %36, align 8, !tbaa !11
  %1137 = fmul double %1136, %1135
  store double %1137, ptr %36, align 8, !tbaa !11
  br label %1138

1138:                                             ; preds = %1127, %1124
  br label %1139

1139:                                             ; preds = %1138, %1063
  store double 0.000000e+00, ptr %38, align 8, !tbaa !11
  %1140 = load double, ptr %42, align 8, !tbaa !11
  %1141 = fcmp oeq double %1140, 1.000000e+00
  br i1 %1141, label %1142, label %1185

1142:                                             ; preds = %1139
  %1143 = load i32, ptr %44, align 4, !tbaa !9
  %1144 = icmp ne i32 %1143, 0
  br i1 %1144, label %1145, label %1158

1145:                                             ; preds = %1142
  %1146 = load i32, ptr %40, align 4, !tbaa !9
  %1147 = sub nsw i32 %1146, 1
  store i32 %1147, ptr %27, align 4, !tbaa !9
  %1148 = load ptr, ptr %17, align 8, !tbaa !5
  %1149 = load i32, ptr %40, align 4, !tbaa !9
  %1150 = load i32, ptr %23, align 4, !tbaa !9
  %1151 = mul nsw i32 %1149, %1150
  %1152 = add nsw i32 %1151, 1
  %1153 = sext i32 %1152 to i64
  %1154 = getelementptr inbounds double, ptr %1148, i64 %1153
  %1155 = load ptr, ptr %19, align 8, !tbaa !5
  %1156 = getelementptr inbounds double, ptr %1155, i64 1
  %1157 = call double @ddot_(ptr noundef %27, ptr noundef %1154, ptr noundef @c__1, ptr noundef %1156, ptr noundef @c__1)
  store double %1157, ptr %38, align 8, !tbaa !11
  br label %1184

1158:                                             ; preds = %1142
  %1159 = load i32, ptr %40, align 4, !tbaa !9
  %1160 = load ptr, ptr %16, align 8, !tbaa !5
  %1161 = load i32, ptr %1160, align 4, !tbaa !9
  %1162 = icmp slt i32 %1159, %1161
  br i1 %1162, label %1163, label %1183

1163:                                             ; preds = %1158
  %1164 = load ptr, ptr %16, align 8, !tbaa !5
  %1165 = load i32, ptr %1164, align 4, !tbaa !9
  %1166 = load i32, ptr %40, align 4, !tbaa !9
  %1167 = sub nsw i32 %1165, %1166
  store i32 %1167, ptr %27, align 4, !tbaa !9
  %1168 = load ptr, ptr %17, align 8, !tbaa !5
  %1169 = load i32, ptr %40, align 4, !tbaa !9
  %1170 = add nsw i32 %1169, 1
  %1171 = load i32, ptr %40, align 4, !tbaa !9
  %1172 = load i32, ptr %23, align 4, !tbaa !9
  %1173 = mul nsw i32 %1171, %1172
  %1174 = add nsw i32 %1170, %1173
  %1175 = sext i32 %1174 to i64
  %1176 = getelementptr inbounds double, ptr %1168, i64 %1175
  %1177 = load ptr, ptr %19, align 8, !tbaa !5
  %1178 = load i32, ptr %40, align 4, !tbaa !9
  %1179 = add nsw i32 %1178, 1
  %1180 = sext i32 %1179 to i64
  %1181 = getelementptr inbounds double, ptr %1177, i64 %1180
  %1182 = call double @ddot_(ptr noundef %27, ptr noundef %1176, ptr noundef @c__1, ptr noundef %1181, ptr noundef @c__1)
  store double %1182, ptr %38, align 8, !tbaa !11
  br label %1183

1183:                                             ; preds = %1163, %1158
  br label %1184

1184:                                             ; preds = %1183, %1145
  br label %1257

1185:                                             ; preds = %1139
  %1186 = load i32, ptr %44, align 4, !tbaa !9
  %1187 = icmp ne i32 %1186, 0
  br i1 %1187, label %1188, label %1218

1188:                                             ; preds = %1185
  %1189 = load i32, ptr %40, align 4, !tbaa !9
  %1190 = sub nsw i32 %1189, 1
  store i32 %1190, ptr %27, align 4, !tbaa !9
  store i32 1, ptr %39, align 4, !tbaa !9
  br label %1191

1191:                                             ; preds = %1214, %1188
  %1192 = load i32, ptr %39, align 4, !tbaa !9
  %1193 = load i32, ptr %27, align 4, !tbaa !9
  %1194 = icmp sle i32 %1192, %1193
  br i1 %1194, label %1195, label %1217

1195:                                             ; preds = %1191
  %1196 = load ptr, ptr %17, align 8, !tbaa !5
  %1197 = load i32, ptr %39, align 4, !tbaa !9
  %1198 = load i32, ptr %40, align 4, !tbaa !9
  %1199 = load i32, ptr %23, align 4, !tbaa !9
  %1200 = mul nsw i32 %1198, %1199
  %1201 = add nsw i32 %1197, %1200
  %1202 = sext i32 %1201 to i64
  %1203 = getelementptr inbounds double, ptr %1196, i64 %1202
  %1204 = load double, ptr %1203, align 8, !tbaa !11
  %1205 = load double, ptr %42, align 8, !tbaa !11
  %1206 = fmul double %1204, %1205
  %1207 = load ptr, ptr %19, align 8, !tbaa !5
  %1208 = load i32, ptr %39, align 4, !tbaa !9
  %1209 = sext i32 %1208 to i64
  %1210 = getelementptr inbounds double, ptr %1207, i64 %1209
  %1211 = load double, ptr %1210, align 8, !tbaa !11
  %1212 = load double, ptr %38, align 8, !tbaa !11
  %1213 = call double @llvm.fmuladd.f64(double %1206, double %1211, double %1212)
  store double %1213, ptr %38, align 8, !tbaa !11
  br label %1214

1214:                                             ; preds = %1195
  %1215 = load i32, ptr %39, align 4, !tbaa !9
  %1216 = add nsw i32 %1215, 1
  store i32 %1216, ptr %39, align 4, !tbaa !9
  br label %1191, !llvm.loop !22

1217:                                             ; preds = %1191
  br label %1256

1218:                                             ; preds = %1185
  %1219 = load i32, ptr %40, align 4, !tbaa !9
  %1220 = load ptr, ptr %16, align 8, !tbaa !5
  %1221 = load i32, ptr %1220, align 4, !tbaa !9
  %1222 = icmp slt i32 %1219, %1221
  br i1 %1222, label %1223, label %1255

1223:                                             ; preds = %1218
  %1224 = load ptr, ptr %16, align 8, !tbaa !5
  %1225 = load i32, ptr %1224, align 4, !tbaa !9
  store i32 %1225, ptr %27, align 4, !tbaa !9
  %1226 = load i32, ptr %40, align 4, !tbaa !9
  %1227 = add nsw i32 %1226, 1
  store i32 %1227, ptr %39, align 4, !tbaa !9
  br label %1228

1228:                                             ; preds = %1251, %1223
  %1229 = load i32, ptr %39, align 4, !tbaa !9
  %1230 = load i32, ptr %27, align 4, !tbaa !9
  %1231 = icmp sle i32 %1229, %1230
  br i1 %1231, label %1232, label %1254

1232:                                             ; preds = %1228
  %1233 = load ptr, ptr %17, align 8, !tbaa !5
  %1234 = load i32, ptr %39, align 4, !tbaa !9
  %1235 = load i32, ptr %40, align 4, !tbaa !9
  %1236 = load i32, ptr %23, align 4, !tbaa !9
  %1237 = mul nsw i32 %1235, %1236
  %1238 = add nsw i32 %1234, %1237
  %1239 = sext i32 %1238 to i64
  %1240 = getelementptr inbounds double, ptr %1233, i64 %1239
  %1241 = load double, ptr %1240, align 8, !tbaa !11
  %1242 = load double, ptr %42, align 8, !tbaa !11
  %1243 = fmul double %1241, %1242
  %1244 = load ptr, ptr %19, align 8, !tbaa !5
  %1245 = load i32, ptr %39, align 4, !tbaa !9
  %1246 = sext i32 %1245 to i64
  %1247 = getelementptr inbounds double, ptr %1244, i64 %1246
  %1248 = load double, ptr %1247, align 8, !tbaa !11
  %1249 = load double, ptr %38, align 8, !tbaa !11
  %1250 = call double @llvm.fmuladd.f64(double %1243, double %1248, double %1249)
  store double %1250, ptr %38, align 8, !tbaa !11
  br label %1251

1251:                                             ; preds = %1232
  %1252 = load i32, ptr %39, align 4, !tbaa !9
  %1253 = add nsw i32 %1252, 1
  store i32 %1253, ptr %39, align 4, !tbaa !9
  br label %1228, !llvm.loop !23

1254:                                             ; preds = %1228
  br label %1255

1255:                                             ; preds = %1254, %1218
  br label %1256

1256:                                             ; preds = %1255, %1217
  br label %1257

1257:                                             ; preds = %1256, %1184
  %1258 = load double, ptr %42, align 8, !tbaa !11
  %1259 = load double, ptr %41, align 8, !tbaa !11
  %1260 = fcmp oeq double %1258, %1259
  br i1 %1260, label %1261, label %1404

1261:                                             ; preds = %1257
  %1262 = load double, ptr %38, align 8, !tbaa !11
  %1263 = load ptr, ptr %19, align 8, !tbaa !5
  %1264 = load i32, ptr %40, align 4, !tbaa !9
  %1265 = sext i32 %1264 to i64
  %1266 = getelementptr inbounds double, ptr %1263, i64 %1265
  %1267 = load double, ptr %1266, align 8, !tbaa !11
  %1268 = fsub double %1267, %1262
  store double %1268, ptr %1266, align 8, !tbaa !11
  %1269 = load ptr, ptr %19, align 8, !tbaa !5
  %1270 = load i32, ptr %40, align 4, !tbaa !9
  %1271 = sext i32 %1270 to i64
  %1272 = getelementptr inbounds double, ptr %1269, i64 %1271
  %1273 = load double, ptr %1272, align 8, !tbaa !11
  store double %1273, ptr %28, align 8, !tbaa !11
  %1274 = load double, ptr %28, align 8, !tbaa !11
  %1275 = fcmp oge double %1274, 0.000000e+00
  br i1 %1275, label %1276, label %1278

1276:                                             ; preds = %1261
  %1277 = load double, ptr %28, align 8, !tbaa !11
  br label %1281

1278:                                             ; preds = %1261
  %1279 = load double, ptr %28, align 8, !tbaa !11
  %1280 = fneg double %1279
  br label %1281

1281:                                             ; preds = %1278, %1276
  %1282 = phi double [ %1277, %1276 ], [ %1280, %1278 ]
  store double %1282, ptr %45, align 8, !tbaa !11
  %1283 = load i32, ptr %50, align 4, !tbaa !9
  %1284 = icmp ne i32 %1283, 0
  br i1 %1284, label %1285, label %1297

1285:                                             ; preds = %1281
  %1286 = load ptr, ptr %17, align 8, !tbaa !5
  %1287 = load i32, ptr %40, align 4, !tbaa !9
  %1288 = load i32, ptr %40, align 4, !tbaa !9
  %1289 = load i32, ptr %23, align 4, !tbaa !9
  %1290 = mul nsw i32 %1288, %1289
  %1291 = add nsw i32 %1287, %1290
  %1292 = sext i32 %1291 to i64
  %1293 = getelementptr inbounds double, ptr %1286, i64 %1292
  %1294 = load double, ptr %1293, align 8, !tbaa !11
  %1295 = load double, ptr %41, align 8, !tbaa !11
  %1296 = fmul double %1294, %1295
  store double %1296, ptr %35, align 8, !tbaa !11
  br label %1303

1297:                                             ; preds = %1281
  %1298 = load double, ptr %41, align 8, !tbaa !11
  store double %1298, ptr %35, align 8, !tbaa !11
  %1299 = load double, ptr %41, align 8, !tbaa !11
  %1300 = fcmp oeq double %1299, 1.000000e+00
  br i1 %1300, label %1301, label %1302

1301:                                             ; preds = %1297
  br label %1403

1302:                                             ; preds = %1297
  br label %1303

1303:                                             ; preds = %1302, %1285
  %1304 = load double, ptr %35, align 8, !tbaa !11
  %1305 = fcmp oge double %1304, 0.000000e+00
  br i1 %1305, label %1306, label %1308

1306:                                             ; preds = %1303
  %1307 = load double, ptr %35, align 8, !tbaa !11
  br label %1311

1308:                                             ; preds = %1303
  %1309 = load double, ptr %35, align 8, !tbaa !11
  %1310 = fneg double %1309
  br label %1311

1311:                                             ; preds = %1308, %1306
  %1312 = phi double [ %1307, %1306 ], [ %1310, %1308 ]
  store double %1312, ptr %52, align 8, !tbaa !11
  %1313 = load double, ptr %52, align 8, !tbaa !11
  %1314 = load double, ptr %49, align 8, !tbaa !11
  %1315 = fcmp ogt double %1313, %1314
  br i1 %1315, label %1316, label %1347

1316:                                             ; preds = %1311
  %1317 = load double, ptr %52, align 8, !tbaa !11
  %1318 = fcmp olt double %1317, 1.000000e+00
  br i1 %1318, label %1319, label %1339

1319:                                             ; preds = %1316
  %1320 = load double, ptr %45, align 8, !tbaa !11
  %1321 = load double, ptr %52, align 8, !tbaa !11
  %1322 = load double, ptr %46, align 8, !tbaa !11
  %1323 = fmul double %1321, %1322
  %1324 = fcmp ogt double %1320, %1323
  br i1 %1324, label %1325, label %1338

1325:                                             ; preds = %1319
  %1326 = load double, ptr %45, align 8, !tbaa !11
  %1327 = fdiv double 1.000000e+00, %1326
  store double %1327, ptr %51, align 8, !tbaa !11
  %1328 = load ptr, ptr %16, align 8, !tbaa !5
  %1329 = load ptr, ptr %19, align 8, !tbaa !5
  %1330 = getelementptr inbounds double, ptr %1329, i64 1
  call void @dscal_(ptr noundef %1328, ptr noundef %51, ptr noundef %1330, ptr noundef @c__1)
  %1331 = load double, ptr %51, align 8, !tbaa !11
  %1332 = load ptr, ptr %20, align 8, !tbaa !5
  %1333 = load double, ptr %1332, align 8, !tbaa !11
  %1334 = fmul double %1333, %1331
  store double %1334, ptr %1332, align 8, !tbaa !11
  %1335 = load double, ptr %51, align 8, !tbaa !11
  %1336 = load double, ptr %36, align 8, !tbaa !11
  %1337 = fmul double %1336, %1335
  store double %1337, ptr %36, align 8, !tbaa !11
  br label %1338

1338:                                             ; preds = %1325, %1319
  br label %1339

1339:                                             ; preds = %1338, %1316
  %1340 = load double, ptr %35, align 8, !tbaa !11
  %1341 = load ptr, ptr %19, align 8, !tbaa !5
  %1342 = load i32, ptr %40, align 4, !tbaa !9
  %1343 = sext i32 %1342 to i64
  %1344 = getelementptr inbounds double, ptr %1341, i64 %1343
  %1345 = load double, ptr %1344, align 8, !tbaa !11
  %1346 = fdiv double %1345, %1340
  store double %1346, ptr %1344, align 8, !tbaa !11
  br label %1402

1347:                                             ; preds = %1311
  %1348 = load double, ptr %52, align 8, !tbaa !11
  %1349 = fcmp ogt double %1348, 0.000000e+00
  br i1 %1349, label %1350, label %1380

1350:                                             ; preds = %1347
  %1351 = load double, ptr %45, align 8, !tbaa !11
  %1352 = load double, ptr %52, align 8, !tbaa !11
  %1353 = load double, ptr %46, align 8, !tbaa !11
  %1354 = fmul double %1352, %1353
  %1355 = fcmp ogt double %1351, %1354
  br i1 %1355, label %1356, label %1372

1356:                                             ; preds = %1350
  %1357 = load double, ptr %52, align 8, !tbaa !11
  %1358 = load double, ptr %46, align 8, !tbaa !11
  %1359 = fmul double %1357, %1358
  %1360 = load double, ptr %45, align 8, !tbaa !11
  %1361 = fdiv double %1359, %1360
  store double %1361, ptr %51, align 8, !tbaa !11
  %1362 = load ptr, ptr %16, align 8, !tbaa !5
  %1363 = load ptr, ptr %19, align 8, !tbaa !5
  %1364 = getelementptr inbounds double, ptr %1363, i64 1
  call void @dscal_(ptr noundef %1362, ptr noundef %51, ptr noundef %1364, ptr noundef @c__1)
  %1365 = load double, ptr %51, align 8, !tbaa !11
  %1366 = load ptr, ptr %20, align 8, !tbaa !5
  %1367 = load double, ptr %1366, align 8, !tbaa !11
  %1368 = fmul double %1367, %1365
  store double %1368, ptr %1366, align 8, !tbaa !11
  %1369 = load double, ptr %51, align 8, !tbaa !11
  %1370 = load double, ptr %36, align 8, !tbaa !11
  %1371 = fmul double %1370, %1369
  store double %1371, ptr %36, align 8, !tbaa !11
  br label %1372

1372:                                             ; preds = %1356, %1350
  %1373 = load double, ptr %35, align 8, !tbaa !11
  %1374 = load ptr, ptr %19, align 8, !tbaa !5
  %1375 = load i32, ptr %40, align 4, !tbaa !9
  %1376 = sext i32 %1375 to i64
  %1377 = getelementptr inbounds double, ptr %1374, i64 %1376
  %1378 = load double, ptr %1377, align 8, !tbaa !11
  %1379 = fdiv double %1378, %1373
  store double %1379, ptr %1377, align 8, !tbaa !11
  br label %1401

1380:                                             ; preds = %1347
  %1381 = load ptr, ptr %16, align 8, !tbaa !5
  %1382 = load i32, ptr %1381, align 4, !tbaa !9
  store i32 %1382, ptr %27, align 4, !tbaa !9
  store i32 1, ptr %39, align 4, !tbaa !9
  br label %1383

1383:                                             ; preds = %1392, %1380
  %1384 = load i32, ptr %39, align 4, !tbaa !9
  %1385 = load i32, ptr %27, align 4, !tbaa !9
  %1386 = icmp sle i32 %1384, %1385
  br i1 %1386, label %1387, label %1395

1387:                                             ; preds = %1383
  %1388 = load ptr, ptr %19, align 8, !tbaa !5
  %1389 = load i32, ptr %39, align 4, !tbaa !9
  %1390 = sext i32 %1389 to i64
  %1391 = getelementptr inbounds double, ptr %1388, i64 %1390
  store double 0.000000e+00, ptr %1391, align 8, !tbaa !11
  br label %1392

1392:                                             ; preds = %1387
  %1393 = load i32, ptr %39, align 4, !tbaa !9
  %1394 = add nsw i32 %1393, 1
  store i32 %1394, ptr %39, align 4, !tbaa !9
  br label %1383, !llvm.loop !24

1395:                                             ; preds = %1383
  %1396 = load ptr, ptr %19, align 8, !tbaa !5
  %1397 = load i32, ptr %40, align 4, !tbaa !9
  %1398 = sext i32 %1397 to i64
  %1399 = getelementptr inbounds double, ptr %1396, i64 %1398
  store double 1.000000e+00, ptr %1399, align 8, !tbaa !11
  %1400 = load ptr, ptr %20, align 8, !tbaa !5
  store double 0.000000e+00, ptr %1400, align 8, !tbaa !11
  store double 0.000000e+00, ptr %36, align 8, !tbaa !11
  br label %1401

1401:                                             ; preds = %1395, %1372
  br label %1402

1402:                                             ; preds = %1401, %1339
  br label %1403

1403:                                             ; preds = %1402, %1301
  br label %1418

1404:                                             ; preds = %1257
  %1405 = load ptr, ptr %19, align 8, !tbaa !5
  %1406 = load i32, ptr %40, align 4, !tbaa !9
  %1407 = sext i32 %1406 to i64
  %1408 = getelementptr inbounds double, ptr %1405, i64 %1407
  %1409 = load double, ptr %1408, align 8, !tbaa !11
  %1410 = load double, ptr %35, align 8, !tbaa !11
  %1411 = fdiv double %1409, %1410
  %1412 = load double, ptr %38, align 8, !tbaa !11
  %1413 = fsub double %1411, %1412
  %1414 = load ptr, ptr %19, align 8, !tbaa !5
  %1415 = load i32, ptr %40, align 4, !tbaa !9
  %1416 = sext i32 %1415 to i64
  %1417 = getelementptr inbounds double, ptr %1414, i64 %1416
  store double %1413, ptr %1417, align 8, !tbaa !11
  br label %1418

1418:                                             ; preds = %1404, %1403
  %1419 = load double, ptr %36, align 8, !tbaa !11
  store double %1419, ptr %29, align 8, !tbaa !11
  %1420 = load ptr, ptr %19, align 8, !tbaa !5
  %1421 = load i32, ptr %40, align 4, !tbaa !9
  %1422 = sext i32 %1421 to i64
  %1423 = getelementptr inbounds double, ptr %1420, i64 %1422
  %1424 = load double, ptr %1423, align 8, !tbaa !11
  store double %1424, ptr %28, align 8, !tbaa !11
  %1425 = load double, ptr %28, align 8, !tbaa !11
  %1426 = fcmp oge double %1425, 0.000000e+00
  br i1 %1426, label %1427, label %1429

1427:                                             ; preds = %1418
  %1428 = load double, ptr %28, align 8, !tbaa !11
  br label %1432

1429:                                             ; preds = %1418
  %1430 = load double, ptr %28, align 8, !tbaa !11
  %1431 = fneg double %1430
  br label %1432

1432:                                             ; preds = %1429, %1427
  %1433 = phi double [ %1428, %1427 ], [ %1431, %1429 ]
  store double %1433, ptr %30, align 8, !tbaa !11
  %1434 = load double, ptr %29, align 8, !tbaa !11
  %1435 = load double, ptr %30, align 8, !tbaa !11
  %1436 = fcmp oge double %1434, %1435
  br i1 %1436, label %1437, label %1439

1437:                                             ; preds = %1432
  %1438 = load double, ptr %29, align 8, !tbaa !11
  br label %1441

1439:                                             ; preds = %1432
  %1440 = load double, ptr %30, align 8, !tbaa !11
  br label %1441

1441:                                             ; preds = %1439, %1437
  %1442 = phi double [ %1438, %1437 ], [ %1440, %1439 ]
  store double %1442, ptr %36, align 8, !tbaa !11
  br label %1443

1443:                                             ; preds = %1441
  %1444 = load i32, ptr %25, align 4, !tbaa !9
  %1445 = load i32, ptr %40, align 4, !tbaa !9
  %1446 = add nsw i32 %1445, %1444
  store i32 %1446, ptr %40, align 4, !tbaa !9
  br label %1026, !llvm.loop !25

1447:                                             ; preds = %1039
  br label %1448

1448:                                             ; preds = %1447, %1021
  %1449 = load double, ptr %41, align 8, !tbaa !11
  %1450 = load ptr, ptr %20, align 8, !tbaa !5
  %1451 = load double, ptr %1450, align 8, !tbaa !11
  %1452 = fdiv double %1451, %1449
  store double %1452, ptr %1450, align 8, !tbaa !11
  br label %1453

1453:                                             ; preds = %1448, %636
  %1454 = load double, ptr %41, align 8, !tbaa !11
  %1455 = fcmp une double %1454, 1.000000e+00
  br i1 %1455, label %1456, label %1462

1456:                                             ; preds = %1453
  %1457 = load double, ptr %41, align 8, !tbaa !11
  %1458 = fdiv double 1.000000e+00, %1457
  store double %1458, ptr %28, align 8, !tbaa !11
  %1459 = load ptr, ptr %16, align 8, !tbaa !5
  %1460 = load ptr, ptr %21, align 8, !tbaa !5
  %1461 = getelementptr inbounds double, ptr %1460, i64 1
  call void @dscal_(ptr noundef %1459, ptr noundef %28, ptr noundef %1461, ptr noundef @c__1)
  br label %1462

1462:                                             ; preds = %1456, %1453
  store i32 1, ptr %53, align 4
  br label %1463

1463:                                             ; preds = %1462, %154, %145
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #4
  call void @llvm.lifetime.end.p0(i64 8, 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 4, ptr %23) #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 double @dlamch_(ptr noundef) #2

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

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

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

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

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

declare 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

; 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}
!18 = distinct !{!18, !14}
!19 = distinct !{!19, !14}
!20 = distinct !{!20, !14}
!21 = distinct !{!21, !14}
!22 = distinct !{!22, !14}
!23 = distinct !{!23, !14}
!24 = distinct !{!24, !14}
!25 = distinct !{!25, !14}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [10 x i8], align 1
@c__1 = external hidden global i32, align 4
@c_b36 = external hidden global double, align 8

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

26:                                               ; preds = %11
  %27 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #6
  %.not524 = icmp eq i32 %27, 0
  br i1 %.not524, label %.thread.sink.split, label %28

28:                                               ; preds = %26, %11
  %.not525 = icmp eq i32 %24, 0
  br i1 %.not525, label %29, label %33

29:                                               ; preds = %28
  %30 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.3) #6
  %.not526 = icmp eq i32 %30, 0
  br i1 %.not526, label %31, label %33

31:                                               ; preds = %29
  %32 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.4) #6
  %.not527 = icmp eq i32 %32, 0
  br i1 %.not527, label %.thread.sink.split, label %33

33:                                               ; preds = %31, %29, %28
  %.not528 = icmp eq i32 %25, 0
  br i1 %.not528, label %34, label %36

34:                                               ; preds = %33
  %35 = tail call i32 @lsame_(ptr noundef %2, ptr noundef nonnull @.str) #6
  %.not529 = icmp eq i32 %35, 0
  br i1 %.not529, label %.thread.sink.split, label %36

36:                                               ; preds = %34, %33
  %37 = tail call i32 @lsame_(ptr noundef %3, ptr noundef nonnull @.str.5) #6
  %.not530 = icmp eq i32 %37, 0
  br i1 %.not530, label %38, label %40

38:                                               ; preds = %36
  %39 = tail call i32 @lsame_(ptr noundef %3, ptr noundef nonnull @.str.1) #6
  %.not531 = icmp eq i32 %39, 0
  br i1 %.not531, label %.thread.sink.split, label %40

40:                                               ; preds = %38, %36
  %41 = load i32, ptr %4, align 4, !tbaa !5
  %42 = icmp slt i32 %41, 0
  br i1 %42, label %.thread.sink.split, label %43

43:                                               ; preds = %40
  %44 = load i32, ptr %6, align 4, !tbaa !5
  %spec.select = tail call i32 @llvm.umax.i32(i32 %41, i32 1)
  %45 = icmp slt i32 %44, %spec.select
  br i1 %45, label %.thread.sink.split, label %46

46:                                               ; preds = %43
  %.pr = load i32, ptr %10, align 4, !tbaa !5
  %.not532 = icmp eq i32 %.pr, 0
  br i1 %.not532, label %50, label %.thread

.thread.sink.split:                               ; preds = %43, %40, %38, %34, %31, %26
  %.sink = phi i32 [ -1, %26 ], [ -2, %31 ], [ -3, %34 ], [ -4, %38 ], [ -5, %40 ], [ -7, %43 ]
  store i32 %.sink, ptr %10, align 4, !tbaa !5
  br label %.thread

.thread:                                          ; preds = %.thread.sink.split, %46
  %47 = phi i32 [ %.pr, %46 ], [ %.sink, %.thread.sink.split ]
  %48 = sub nsw i32 0, %47
  store i32 %48, ptr %12, align 4, !tbaa !5
  %49 = call i32 @xerbla_(ptr noundef nonnull @.str.6, ptr noundef nonnull %12, i32 noundef 6) #6
  br label %553

50:                                               ; preds = %46
  %51 = icmp eq i32 %41, 0
  br i1 %51, label %553, label %52

52:                                               ; preds = %50
  %53 = tail call double @dlamch_(ptr noundef nonnull @.str.7) #6
  %54 = tail call double @dlamch_(ptr noundef nonnull @.str.8) #6
  %55 = fdiv double %53, %54
  %56 = fdiv double 1.000000e+00, %55
  store double 1.000000e+00, ptr %8, align 8, !tbaa !9
  %57 = tail call i32 @lsame_(ptr noundef %3, ptr noundef nonnull @.str.1) #6
  %.not533 = icmp eq i32 %57, 0
  br i1 %.not533, label %.loopexit573, label %58

58:                                               ; preds = %52
  %59 = load i32, ptr %4, align 4, !tbaa !5
  br i1 %.not.not.not, label %68, label %60

60:                                               ; preds = %58
  store i32 %59, ptr %12, align 4, !tbaa !5
  %invariant.gep = getelementptr i8, ptr %20, i64 8
  %.not535576 = icmp slt i32 %59, 1
  br i1 %.not535576, label %.loopexit573, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %60
  %61 = sext i32 %18 to i64
  %62 = zext nneg i32 %59 to i64
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.preheader, %.lr.ph
  %indvars.iv = phi i64 [ 1, %.lr.ph.preheader ], [ %indvars.iv.next, %.lr.ph ]
  %63 = trunc i64 %indvars.iv to i32
  %64 = add i32 %63, -1
  store i32 %64, ptr %13, align 4, !tbaa !5
  %65 = mul nsw i64 %indvars.iv, %61
  %gep = getelementptr double, ptr %invariant.gep, i64 %65
  %66 = call double @dasum_(ptr noundef nonnull %13, ptr noundef %gep, ptr noundef nonnull @c__1) #6
  %67 = getelementptr inbounds double, ptr %22, i64 %indvars.iv
  store double %66, ptr %67, align 8, !tbaa !9
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %.not535.not = icmp ult i64 %indvars.iv, %62
  br i1 %.not535.not, label %.lr.ph, label %.loopexit573, !llvm.loop !11

68:                                               ; preds = %58
  %69 = add nsw i32 %59, -1
  store i32 %69, ptr %12, align 4, !tbaa !5
  %.not534578 = icmp slt i32 %59, 2
  br i1 %.not534578, label %._crit_edge, label %.lr.ph580.preheader

.lr.ph580.preheader:                              ; preds = %68
  %70 = sext i32 %18 to i64
  %71 = sext i32 %69 to i64
  br label %.lr.ph580

.lr.ph580:                                        ; preds = %.lr.ph580.preheader, %.lr.ph580
  %indvars.iv657 = phi i64 [ 1, %.lr.ph580.preheader ], [ %indvars.iv.next658, %.lr.ph580 ]
  %72 = load i32, ptr %4, align 4, !tbaa !5
  %73 = trunc nuw nsw i64 %indvars.iv657 to i32
  %74 = sub nsw i32 %72, %73
  store i32 %74, ptr %13, align 4, !tbaa !5
  %indvars.iv.next658 = add nuw nsw i64 %indvars.iv657, 1
  %75 = mul nsw i64 %indvars.iv657, %70
  %76 = getelementptr double, ptr %20, i64 %indvars.iv.next658
  %77 = getelementptr double, ptr %76, i64 %75
  %78 = call double @dasum_(ptr noundef nonnull %13, ptr noundef %77, ptr noundef nonnull @c__1) #6
  %79 = getelementptr inbounds double, ptr %22, i64 %indvars.iv657
  store double %78, ptr %79, align 8, !tbaa !9
  %.not534.not = icmp slt i64 %indvars.iv657, %71
  br i1 %.not534.not, label %.lr.ph580, label %._crit_edge.loopexit, !llvm.loop !13

._crit_edge.loopexit:                             ; preds = %.lr.ph580
  %.pre = load i32, ptr %4, align 4, !tbaa !5
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %68
  %80 = phi i32 [ %.pre, %._crit_edge.loopexit ], [ %59, %68 ]
  %81 = sext i32 %80 to i64
  %82 = getelementptr inbounds double, ptr %22, i64 %81
  store double 0.000000e+00, ptr %82, align 8, !tbaa !9
  br label %.loopexit573

.loopexit573:                                     ; preds = %.lr.ph, %60, %._crit_edge, %52
  %83 = call i32 @idamax_(ptr noundef nonnull %4, ptr noundef %9, ptr noundef nonnull @c__1) #6
  %84 = sext i32 %83 to i64
  %85 = getelementptr inbounds double, ptr %22, i64 %84
  %86 = load double, ptr %85, align 8, !tbaa !9
  %87 = fcmp ugt double %86, %56
  br i1 %87, label %89, label %88

88:                                               ; preds = %.loopexit573
  store double 1.000000e+00, ptr %16, align 8, !tbaa !9
  br label %92

89:                                               ; preds = %.loopexit573
  %90 = fmul double %55, %86
  %91 = fdiv double 1.000000e+00, %90
  store double %91, ptr %16, align 8, !tbaa !9
  call void @dscal_(ptr noundef nonnull %4, ptr noundef nonnull %16, ptr noundef nonnull %9, ptr noundef nonnull @c__1) #6
  br label %92

92:                                               ; preds = %89, %88
  %93 = call i32 @idamax_(ptr noundef nonnull %4, ptr noundef %7, ptr noundef nonnull @c__1) #6
  %94 = sext i32 %93 to i64
  %95 = getelementptr inbounds double, ptr %21, i64 %94
  %96 = load double, ptr %95, align 8, !tbaa !9
  store double %96, ptr %15, align 8, !tbaa !9
  %97 = fcmp oge double %96, 0.000000e+00
  %98 = fneg double %96
  %99 = select i1 %97, double %96, double %98
  %100 = load i32, ptr %4, align 4, !tbaa !5
  %101 = load double, ptr %16, align 8, !tbaa !9
  %102 = fcmp une double %101, 1.000000e+00
  br i1 %.not525, label %159, label %103

103:                                              ; preds = %92
  %. = select i1 %.not.not.not, i32 %100, i32 1
  %.705 = select i1 %.not.not.not, i32 1, i32 -1
  %.706 = select i1 %.not.not.not, i32 1, i32 %100
  br i1 %102, label %.loopexit569, label %104

104:                                              ; preds = %103
  br i1 %.not528, label %139, label %105

105:                                              ; preds = %104
  %106 = fcmp oge double %99, %55
  %107 = select i1 %106, double %99, double %55
  %108 = fdiv double 1.000000e+00, %107
  store i32 %.705, ptr %13, align 4, !tbaa !5
  %109 = icmp sge i32 %.706, %.
  %110 = icmp sle i32 %.706, %.
  %.in541581 = select i1 %.not.not.not, i1 %110, i1 %109
  br i1 %.in541581, label %.lr.ph586, label %.loopexit569

.lr.ph586:                                        ; preds = %105
  %111 = add i32 %18, 1
  %112 = sext i32 %.706 to i64
  %113 = sext i32 %.705 to i64
  %114 = sext i32 %. to i64
  br label %115

115:                                              ; preds = %.lr.ph586, %117
  %indvars.iv660 = phi i64 [ %112, %.lr.ph586 ], [ %indvars.iv.next661, %117 ]
  %.0471583 = phi double [ %108, %.lr.ph586 ], [ %.1472, %117 ]
  %.0491582 = phi double [ %108, %.lr.ph586 ], [ %130, %117 ]
  %116 = fcmp ugt double %.0471583, %55
  br i1 %116, label %117, label %.loopexit569

117:                                              ; preds = %115
  %118 = trunc nsw i64 %indvars.iv660 to i32
  %119 = mul i32 %111, %118
  %120 = sext i32 %119 to i64
  %121 = getelementptr inbounds double, ptr %20, i64 %120
  %122 = load double, ptr %121, align 8, !tbaa !9
  %123 = fcmp oge double %122, 0.000000e+00
  %124 = fneg double %122
  %125 = select i1 %123, double %122, double %124
  store double %.0491582, ptr %15, align 8, !tbaa !9
  %126 = fcmp oge double %125, 1.000000e+00
  %127 = select i1 %126, double 1.000000e+00, double %125
  %128 = fmul double %.0471583, %127
  %129 = fcmp ole double %.0491582, %128
  %130 = select i1 %129, double %.0491582, double %128
  %131 = getelementptr inbounds double, ptr %22, i64 %indvars.iv660
  %132 = load double, ptr %131, align 8, !tbaa !9
  %133 = fadd double %125, %132
  %134 = fcmp ult double %133, %55
  %135 = fdiv double %125, %133
  %136 = fmul double %.0471583, %135
  %.1472 = select i1 %134, double 0.000000e+00, double %136
  %indvars.iv.next661 = add nsw i64 %indvars.iv660, %113
  %137 = icmp sge i64 %indvars.iv.next661, %114
  %138 = icmp sle i64 %indvars.iv.next661, %114
  %.in541 = select i1 %.not.not.not, i1 %138, i1 %137
  br i1 %.in541, label %115, label %.loopexit569, !llvm.loop !14

139:                                              ; preds = %104
  store double 1.000000e+00, ptr %15, align 8, !tbaa !9
  %140 = fcmp oge double %99, %55
  %141 = select i1 %140, double %99, double %55
  %142 = fdiv double 1.000000e+00, %141
  %143 = fcmp oge double %142, 1.000000e+00
  %144 = select i1 %143, double 1.000000e+00, double %142
  store i32 %., ptr %13, align 4, !tbaa !5
  %145 = icmp sge i32 %.706, %.
  %146 = icmp sle i32 %.706, %.
  %.in540589 = select i1 %.not.not.not, i1 %146, i1 %145
  %147 = fcmp ugt double %144, %55
  %or.cond590 = select i1 %.in540589, i1 %147, i1 false
  br i1 %or.cond590, label %.lr.ph594.preheader, label %.loopexit569

.lr.ph594.preheader:                              ; preds = %139
  %148 = sext i32 %.706 to i64
  %149 = sext i32 %.705 to i64
  %150 = sext i32 %. to i64
  br label %.lr.ph594

.lr.ph594:                                        ; preds = %.lr.ph594.preheader, %.lr.ph594
  %indvars.iv663 = phi i64 [ %148, %.lr.ph594.preheader ], [ %indvars.iv.next664, %.lr.ph594 ]
  %.2473591 = phi double [ %144, %.lr.ph594.preheader ], [ %155, %.lr.ph594 ]
  %151 = getelementptr inbounds double, ptr %22, i64 %indvars.iv663
  %152 = load double, ptr %151, align 8, !tbaa !9
  %153 = fadd double %152, 1.000000e+00
  %154 = fdiv double 1.000000e+00, %153
  %155 = fmul double %.2473591, %154
  %indvars.iv.next664 = add nsw i64 %indvars.iv663, %149
  %156 = icmp sge i64 %indvars.iv.next664, %150
  %157 = icmp sle i64 %indvars.iv.next664, %150
  %.in540 = select i1 %.not.not.not, i1 %157, i1 %156
  %158 = fcmp ugt double %155, %55
  %or.cond = select i1 %.in540, i1 %158, i1 false
  br i1 %or.cond, label %.lr.ph594, label %.loopexit569, !llvm.loop !15

159:                                              ; preds = %92
  %.707 = select i1 %.not.not.not, i32 1, i32 %100
  %.708 = select i1 %.not.not.not, i32 -1, i32 1
  %.709 = select i1 %.not.not.not, i32 %100, i32 1
  br i1 %102, label %.loopexit569, label %160

160:                                              ; preds = %159
  br i1 %.not528, label %195, label %161

161:                                              ; preds = %160
  %162 = fcmp oge double %99, %55
  %163 = select i1 %162, double %99, double %55
  %164 = fdiv double 1.000000e+00, %163
  store i32 %.707, ptr %12, align 4, !tbaa !5
  store i32 %.708, ptr %13, align 4, !tbaa !5
  %165 = icmp sge i32 %.709, %.707
  %166 = icmp sle i32 %.709, %.707
  %.in538596 = select i1 %.not.not.not, i1 %165, i1 %166
  br i1 %.in538596, label %.lr.ph601, label %._crit_edge602

.lr.ph601:                                        ; preds = %161
  %167 = add i32 %18, 1
  %168 = sext i32 %.709 to i64
  %169 = sext i32 %.708 to i64
  %170 = sext i32 %.707 to i64
  br label %171

171:                                              ; preds = %.lr.ph601, %173
  %indvars.iv666 = phi i64 [ %168, %.lr.ph601 ], [ %indvars.iv.next667, %173 ]
  %.3474598 = phi double [ %164, %.lr.ph601 ], [ %179, %173 ]
  %.1492597 = phi double [ %164, %.lr.ph601 ], [ %.2493, %173 ]
  %172 = fcmp ugt double %.3474598, %55
  br i1 %172, label %173, label %.loopexit569

173:                                              ; preds = %171
  %174 = getelementptr inbounds double, ptr %22, i64 %indvars.iv666
  %175 = load double, ptr %174, align 8, !tbaa !9
  %176 = fadd double %175, 1.000000e+00
  %177 = fdiv double %.1492597, %176
  %178 = fcmp ole double %.3474598, %177
  %179 = select i1 %178, double %.3474598, double %177
  %180 = trunc nsw i64 %indvars.iv666 to i32
  %181 = mul i32 %167, %180
  %182 = sext i32 %181 to i64
  %183 = getelementptr inbounds double, ptr %20, i64 %182
  %184 = load double, ptr %183, align 8, !tbaa !9
  store double %184, ptr %15, align 8, !tbaa !9
  %185 = fcmp oge double %184, 0.000000e+00
  %186 = fneg double %184
  %187 = select i1 %185, double %184, double %186
  %188 = fcmp ogt double %176, %187
  %189 = fdiv double %187, %176
  %190 = fmul double %.1492597, %189
  %.2493 = select i1 %188, double %190, double %.1492597
  %indvars.iv.next667 = add nsw i64 %indvars.iv666, %169
  %191 = icmp sge i64 %indvars.iv.next667, %170
  %192 = icmp sle i64 %indvars.iv.next667, %170
  %.in538 = select i1 %.not.not.not, i1 %191, i1 %192
  br i1 %.in538, label %171, label %._crit_edge602, !llvm.loop !16

._crit_edge602:                                   ; preds = %173, %161
  %.1492.lcssa = phi double [ %164, %161 ], [ %.2493, %173 ]
  %.3474.lcssa = phi double [ %164, %161 ], [ %179, %173 ]
  %193 = fcmp ole double %.3474.lcssa, %.1492.lcssa
  %194 = select i1 %193, double %.3474.lcssa, double %.1492.lcssa
  br label %.loopexit569

195:                                              ; preds = %160
  store double 1.000000e+00, ptr %15, align 8, !tbaa !9
  %196 = fcmp oge double %99, %55
  %197 = select i1 %196, double %99, double %55
  %198 = fdiv double 1.000000e+00, %197
  %199 = fcmp oge double %198, 1.000000e+00
  %200 = select i1 %199, double 1.000000e+00, double %198
  store i32 %.707, ptr %13, align 4, !tbaa !5
  %201 = icmp sge i32 %.709, %.707
  %202 = icmp sle i32 %.709, %.707
  %.in605 = select i1 %.not.not.not, i1 %201, i1 %202
  %203 = fcmp ugt double %200, %55
  %or.cond551606 = select i1 %.in605, i1 %203, i1 false
  br i1 %or.cond551606, label %.lr.ph610.preheader, label %.loopexit569

.lr.ph610.preheader:                              ; preds = %195
  %204 = sext i32 %.709 to i64
  %205 = sext i32 %.708 to i64
  %206 = sext i32 %.707 to i64
  br label %.lr.ph610

.lr.ph610:                                        ; preds = %.lr.ph610.preheader, %.lr.ph610
  %indvars.iv669 = phi i64 [ %204, %.lr.ph610.preheader ], [ %indvars.iv.next670, %.lr.ph610 ]
  %.4475607 = phi double [ %200, %.lr.ph610.preheader ], [ %210, %.lr.ph610 ]
  %207 = getelementptr inbounds double, ptr %22, i64 %indvars.iv669
  %208 = load double, ptr %207, align 8, !tbaa !9
  %209 = fadd double %208, 1.000000e+00
  %210 = fdiv double %.4475607, %209
  %indvars.iv.next670 = add nsw i64 %indvars.iv669, %205
  %211 = icmp sge i64 %indvars.iv.next670, %206
  %212 = icmp sle i64 %indvars.iv.next670, %206
  %.in = select i1 %.not.not.not, i1 %211, i1 %212
  %213 = fcmp ugt double %210, %55
  %or.cond551 = select i1 %.in, i1 %213, i1 false
  br i1 %or.cond551, label %.lr.ph610, label %.loopexit569, !llvm.loop !17

.loopexit569:                                     ; preds = %115, %117, %.lr.ph594, %171, %.lr.ph610, %105, %139, %195, %159, %103, %._crit_edge602
  %214 = phi double [ 1.000000e+00, %._crit_edge602 ], [ %101, %103 ], [ %101, %159 ], [ 1.000000e+00, %195 ], [ 1.000000e+00, %139 ], [ 1.000000e+00, %105 ], [ 1.000000e+00, %.lr.ph610 ], [ 1.000000e+00, %171 ], [ 1.000000e+00, %.lr.ph594 ], [ 1.000000e+00, %117 ], [ 1.000000e+00, %115 ]
  %.5476 = phi double [ %194, %._crit_edge602 ], [ 0.000000e+00, %103 ], [ 0.000000e+00, %159 ], [ %200, %195 ], [ %144, %139 ], [ %108, %105 ], [ %210, %.lr.ph610 ], [ %.3474598, %171 ], [ %155, %.lr.ph594 ], [ %.0471583, %115 ], [ %130, %117 ]
  %215 = phi i32 [ %.707, %._crit_edge602 ], [ %., %103 ], [ %.707, %159 ], [ %.707, %195 ], [ %., %139 ], [ %., %105 ], [ %.707, %.lr.ph610 ], [ %.707, %171 ], [ %., %.lr.ph594 ], [ %., %117 ], [ %., %115 ]
  %216 = phi i32 [ %.708, %._crit_edge602 ], [ %.705, %103 ], [ %.708, %159 ], [ %.708, %195 ], [ %.705, %139 ], [ %.705, %105 ], [ %.708, %.lr.ph610 ], [ %.708, %171 ], [ %.705, %.lr.ph594 ], [ %.705, %117 ], [ %.705, %115 ]
  %.2 = phi i32 [ %.709, %._crit_edge602 ], [ %.706, %103 ], [ %.709, %159 ], [ %.709, %195 ], [ %.706, %139 ], [ %.706, %105 ], [ %.709, %.lr.ph610 ], [ %.709, %171 ], [ %.706, %.lr.ph594 ], [ %.706, %117 ], [ %.706, %115 ]
  %217 = fmul double %.5476, %214
  %218 = fcmp ogt double %217, %55
  br i1 %218, label %219, label %220

219:                                              ; preds = %.loopexit569
  call void @dtrsv_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef nonnull @c__1) #6
  %.pr565 = load double, ptr %16, align 8, !tbaa !9
  br label %548

220:                                              ; preds = %.loopexit569
  %221 = fcmp ogt double %99, %56
  br i1 %221, label %222, label %224

222:                                              ; preds = %220
  %223 = fdiv double %56, %99
  store double %223, ptr %8, align 8, !tbaa !9
  call void @dscal_(ptr noundef nonnull %4, ptr noundef nonnull %8, ptr noundef %7, ptr noundef nonnull @c__1) #6
  br label %224

224:                                              ; preds = %222, %220
  %.0477 = phi double [ %56, %222 ], [ %99, %220 ]
  %invariant.gep636 = getelementptr i8, ptr %20, i64 8
  %225 = icmp slt i32 %216, 0
  %226 = icmp sge i32 %.2, %215
  %227 = icmp sle i32 %.2, %215
  %.in542638 = select i1 %225, i1 %226, i1 %227
  br i1 %.not525, label %368, label %228

228:                                              ; preds = %224
  store i32 %216, ptr %13, align 4, !tbaa !5
  br i1 %.in542638, label %.lr.ph622, label %.loopexit567

.lr.ph622:                                        ; preds = %228
  %229 = add i32 %18, 1
  br label %230

230:                                              ; preds = %.lr.ph622, %362
  %.6620 = phi i32 [ %.2, %.lr.ph622 ], [ %364, %362 ]
  %.1478619 = phi double [ %.0477, %.lr.ph622 ], [ %.5482, %362 ]
  %231 = sext i32 %.6620 to i64
  %232 = getelementptr inbounds double, ptr %21, i64 %231
  %233 = load double, ptr %232, align 8, !tbaa !9
  store double %233, ptr %15, align 8, !tbaa !9
  %234 = fcmp oge double %233, 0.000000e+00
  %235 = fneg double %233
  %236 = select i1 %234, double %233, double %235
  br i1 %.not528, label %244, label %237

237:                                              ; preds = %230
  %238 = mul i32 %.6620, %229
  %239 = sext i32 %238 to i64
  %240 = getelementptr inbounds double, ptr %20, i64 %239
  %241 = load double, ptr %240, align 8, !tbaa !9
  %242 = load double, ptr %16, align 8, !tbaa !9
  %243 = fmul double %241, %242
  br label %247

244:                                              ; preds = %230
  %245 = load double, ptr %16, align 8, !tbaa !9
  %246 = fcmp oeq double %245, 1.000000e+00
  br i1 %246, label %295, label %247

247:                                              ; preds = %244, %237
  %.0485 = phi double [ %243, %237 ], [ %245, %244 ]
  %248 = fcmp oge double %.0485, 0.000000e+00
  %249 = fneg double %.0485
  %250 = select i1 %248, double %.0485, double %249
  %251 = fcmp ogt double %250, %55
  br i1 %251, label %252, label %268

252:                                              ; preds = %247
  %253 = fcmp olt double %250, 1.000000e+00
  %254 = fmul double %56, %250
  %255 = fcmp ogt double %236, %254
  %or.cond553 = select i1 %253, i1 %255, i1 false
  br i1 %or.cond553, label %256, label %262

256:                                              ; preds = %252
  %257 = fdiv double 1.000000e+00, %236
  store double %257, ptr %17, align 8, !tbaa !9
  call void @dscal_(ptr noundef nonnull %4, ptr noundef nonnull %17, ptr noundef nonnull %7, ptr noundef nonnull @c__1) #6
  %258 = load double, ptr %17, align 8, !tbaa !9
  %259 = load double, ptr %8, align 8, !tbaa !9
  %260 = fmul double %258, %259
  store double %260, ptr %8, align 8, !tbaa !9
  %261 = fmul double %.1478619, %258
  %.pre687 = load double, ptr %232, align 8, !tbaa !9
  br label %262

262:                                              ; preds = %256, %252
  %263 = phi double [ %.pre687, %256 ], [ %233, %252 ]
  %.2479 = phi double [ %261, %256 ], [ %.1478619, %252 ]
  %264 = fdiv double %263, %.0485
  store double %264, ptr %232, align 8, !tbaa !9
  store double %264, ptr %15, align 8, !tbaa !9
  %265 = fcmp oge double %264, 0.000000e+00
  %266 = fneg double %264
  %267 = select i1 %265, double %264, double %266
  br label %295

268:                                              ; preds = %247
  %269 = fcmp ogt double %250, 0.000000e+00
  br i1 %269, label %270, label %291

270:                                              ; preds = %268
  %271 = fmul double %56, %250
  %272 = fcmp ogt double %236, %271
  br i1 %272, label %273, label %285

273:                                              ; preds = %270
  %274 = fdiv double %271, %236
  store double %274, ptr %17, align 8, !tbaa !9
  %275 = getelementptr inbounds double, ptr %22, i64 %231
  %276 = load double, ptr %275, align 8, !tbaa !9
  %277 = fcmp ogt double %276, 1.000000e+00
  br i1 %277, label %278, label %280

278:                                              ; preds = %273
  %279 = fdiv double %274, %276
  store double %279, ptr %17, align 8, !tbaa !9
  br label %280

280:                                              ; preds = %278, %273
  call void @dscal_(ptr noundef nonnull %4, ptr noundef nonnull %17, ptr noundef nonnull %7, ptr noundef nonnull @c__1) #6
  %281 = load double, ptr %17, align 8, !tbaa !9
  %282 = load double, ptr %8, align 8, !tbaa !9
  %283 = fmul double %281, %282
  store double %283, ptr %8, align 8, !tbaa !9
  %284 = fmul double %.1478619, %281
  %.pre686 = load double, ptr %232, align 8, !tbaa !9
  br label %285

285:                                              ; preds = %280, %270
  %286 = phi double [ %.pre686, %280 ], [ %233, %270 ]
  %.3480 = phi double [ %284, %280 ], [ %.1478619, %270 ]
  %287 = fdiv double %286, %.0485
  store double %287, ptr %232, align 8, !tbaa !9
  store double %287, ptr %15, align 8, !tbaa !9
  %288 = fcmp oge double %287, 0.000000e+00
  %289 = fneg double %287
  %290 = select i1 %288, double %287, double %289
  br label %295

291:                                              ; preds = %268
  %292 = load i32, ptr %4, align 4, !tbaa !5
  store i32 %292, ptr %14, align 4, !tbaa !5
  %.not550612 = icmp slt i32 %292, 1
  br i1 %.not550612, label %.thread557, label %.lr.ph615.preheader

.lr.ph615.preheader:                              ; preds = %291
  %293 = zext nneg i32 %292 to i64
  %294 = shl nuw nsw i64 %293, 3
  call void @llvm.memset.p0.i64(ptr nonnull align 8 %7, i8 0, i64 %294, i1 false), !tbaa !9
  br label %.thread557

.thread557:                                       ; preds = %.lr.ph615.preheader, %291
  store double 1.000000e+00, ptr %232, align 8, !tbaa !9
  store double 0.000000e+00, ptr %8, align 8, !tbaa !9
  br label %309

295:                                              ; preds = %262, %285, %244
  %.4481 = phi double [ %.2479, %262 ], [ %.3480, %285 ], [ %.1478619, %244 ]
  %.0452 = phi double [ %267, %262 ], [ %290, %285 ], [ %236, %244 ]
  %296 = fcmp ogt double %.0452, 1.000000e+00
  br i1 %296, label %297, label %309

297:                                              ; preds = %295
  %298 = fdiv double 1.000000e+00, %.0452
  store double %298, ptr %17, align 8, !tbaa !9
  %299 = getelementptr inbounds double, ptr %22, i64 %231
  %300 = load double, ptr %299, align 8, !tbaa !9
  %301 = fsub double %56, %.4481
  %302 = fmul double %301, %298
  %303 = fcmp ogt double %300, %302
  br i1 %303, label %304, label %318

304:                                              ; preds = %297
  %305 = fmul double %298, 5.000000e-01
  store double %305, ptr %17, align 8, !tbaa !9
  call void @dscal_(ptr noundef nonnull %4, ptr noundef nonnull %17, ptr noundef nonnull %7, ptr noundef nonnull @c__1) #6
  %306 = load double, ptr %17, align 8, !tbaa !9
  %307 = load double, ptr %8, align 8, !tbaa !9
  %308 = fmul double %306, %307
  br label %.sink.split

309:                                              ; preds = %.thread557, %295
  %.0452562 = phi double [ 1.000000e+00, %.thread557 ], [ %.0452, %295 ]
  %.4481561 = phi double [ 0.000000e+00, %.thread557 ], [ %.4481, %295 ]
  %310 = getelementptr inbounds double, ptr %22, i64 %231
  %311 = load double, ptr %310, align 8, !tbaa !9
  %312 = fmul double %.0452562, %311
  %313 = fsub double %56, %.4481561
  %314 = fcmp ogt double %312, %313
  br i1 %314, label %315, label %318

315:                                              ; preds = %309
  call void @dscal_(ptr noundef nonnull %4, ptr noundef nonnull @c_b36, ptr noundef nonnull %7, ptr noundef nonnull @c__1) #6
  %316 = load double, ptr %8, align 8, !tbaa !9
  %317 = fmul double %316, 5.000000e-01
  br label %.sink.split

.sink.split:                                      ; preds = %304, %315
  %.sink710 = phi double [ %317, %315 ], [ %308, %304 ]
  %.4481560.ph = phi double [ %.4481561, %315 ], [ %.4481, %304 ]
  store double %.sink710, ptr %8, align 8, !tbaa !9
  br label %318

318:                                              ; preds = %.sink.split, %309, %297
  %.4481560 = phi double [ %.4481561, %309 ], [ %.4481, %297 ], [ %.4481560.ph, %.sink.split ]
  br i1 %.not.not.not, label %336, label %319

319:                                              ; preds = %318
  %320 = icmp sgt i32 %.6620, 1
  br i1 %320, label %321, label %362

321:                                              ; preds = %319
  %322 = add nsw i32 %.6620, -1
  store i32 %322, ptr %14, align 4, !tbaa !5
  %323 = load double, ptr %232, align 8, !tbaa !9
  %324 = fneg double %323
  %325 = load double, ptr %16, align 8, !tbaa !9
  %326 = fmul double %325, %324
  store double %326, ptr %15, align 8, !tbaa !9
  %327 = mul nsw i32 %.6620, %18
  %328 = sext i32 %327 to i64
  %gep617 = getelementptr double, ptr %invariant.gep636, i64 %328
  call void @daxpy_(ptr noundef nonnull %14, ptr noundef nonnull %15, ptr noundef %gep617, ptr noundef nonnull @c__1, ptr noundef nonnull %7, ptr noundef nonnull @c__1) #6
  store i32 %322, ptr %14, align 4, !tbaa !5
  %329 = call i32 @idamax_(ptr noundef nonnull %14, ptr noundef nonnull %7, ptr noundef nonnull @c__1) #6
  %330 = sext i32 %329 to i64
  %331 = getelementptr inbounds double, ptr %21, i64 %330
  %332 = load double, ptr %331, align 8, !tbaa !9
  store double %332, ptr %15, align 8, !tbaa !9
  %333 = fcmp oge double %332, 0.000000e+00
  %334 = fneg double %332
  %335 = select i1 %333, double %332, double %334
  br label %362

336:                                              ; preds = %318
  %337 = load i32, ptr %4, align 4, !tbaa !5
  %338 = icmp slt i32 %.6620, %337
  br i1 %338, label %339, label %362

339:                                              ; preds = %336
  %340 = sub nsw i32 %337, %.6620
  store i32 %340, ptr %14, align 4, !tbaa !5
  %341 = load double, ptr %232, align 8, !tbaa !9
  %342 = fneg double %341
  %343 = load double, ptr %16, align 8, !tbaa !9
  %344 = fmul double %343, %342
  store double %344, ptr %15, align 8, !tbaa !9
  %345 = add nsw i32 %.6620, 1
  %346 = mul nsw i32 %.6620, %18
  %347 = add nsw i32 %345, %346
  %348 = sext i32 %347 to i64
  %349 = getelementptr inbounds double, ptr %20, i64 %348
  %350 = sext i32 %345 to i64
  %351 = getelementptr inbounds double, ptr %21, i64 %350
  call void @daxpy_(ptr noundef nonnull %14, ptr noundef nonnull %15, ptr noundef %349, ptr noundef nonnull @c__1, ptr noundef nonnull %351, ptr noundef nonnull @c__1) #6
  %352 = load i32, ptr %4, align 4, !tbaa !5
  %353 = sub nsw i32 %352, %.6620
  store i32 %353, ptr %14, align 4, !tbaa !5
  %354 = call i32 @idamax_(ptr noundef nonnull %14, ptr noundef nonnull %351, ptr noundef nonnull @c__1) #6
  %355 = add nsw i32 %354, %.6620
  %356 = sext i32 %355 to i64
  %357 = getelementptr inbounds double, ptr %21, i64 %356
  %358 = load double, ptr %357, align 8, !tbaa !9
  store double %358, ptr %15, align 8, !tbaa !9
  %359 = fcmp oge double %358, 0.000000e+00
  %360 = fneg double %358
  %361 = select i1 %359, double %358, double %360
  br label %362

362:                                              ; preds = %321, %319, %339, %336
  %.5482 = phi double [ %335, %321 ], [ %.4481560, %319 ], [ %361, %339 ], [ %.4481560, %336 ]
  %363 = load i32, ptr %13, align 4, !tbaa !5
  %364 = add nsw i32 %363, %.6620
  %365 = icmp slt i32 %363, 0
  %366 = icmp sge i32 %364, %215
  %367 = icmp sle i32 %364, %215
  %.in548 = select i1 %365, i1 %366, i1 %367
  br i1 %.in548, label %230, label %.loopexit567, !llvm.loop !18

368:                                              ; preds = %224
  store i32 %215, ptr %13, align 4, !tbaa !5
  br i1 %.in542638, label %.lr.ph645, label %.loopexit567

.lr.ph645:                                        ; preds = %368
  %369 = add i32 %18, 1
  br label %370

370:                                              ; preds = %.lr.ph645, %534
  %.7641 = phi i32 [ %.2, %.lr.ph645 ], [ %541, %534 ]
  %.6483640 = phi double [ %.0477, %.lr.ph645 ], [ %540, %534 ]
  %.1486639 = phi double [ undef, %.lr.ph645 ], [ %.5490, %534 ]
  %371 = zext i32 %.7641 to i64
  %372 = add nsw i64 %371, -1
  %373 = add nsw i64 %371, -2
  %374 = sext i32 %.7641 to i64
  %375 = getelementptr inbounds double, ptr %21, i64 %374
  %376 = load double, ptr %375, align 8, !tbaa !9
  store double %376, ptr %15, align 8, !tbaa !9
  %377 = fcmp oge double %376, 0.000000e+00
  %378 = fneg double %376
  %379 = select i1 %377, double %376, double %378
  %380 = load double, ptr %16, align 8, !tbaa !9
  %381 = fcmp oge double %.6483640, 1.000000e+00
  %382 = select i1 %381, double %.6483640, double 1.000000e+00
  %383 = fdiv double 1.000000e+00, %382
  store double %383, ptr %17, align 8, !tbaa !9
  %384 = getelementptr inbounds double, ptr %22, i64 %374
  %385 = load double, ptr %384, align 8, !tbaa !9
  %386 = fsub double %56, %379
  %387 = fmul double %383, %386
  %388 = fcmp ogt double %385, %387
  br i1 %388, label %389, label %414

389:                                              ; preds = %370
  %390 = fmul double %383, 5.000000e-01
  store double %390, ptr %17, align 8, !tbaa !9
  br i1 %.not528, label %397, label %391

391:                                              ; preds = %389
  %392 = mul i32 %.7641, %369
  %393 = sext i32 %392 to i64
  %394 = getelementptr inbounds double, ptr %20, i64 %393
  %395 = load double, ptr %394, align 8, !tbaa !9
  %396 = fmul double %380, %395
  br label %397

397:                                              ; preds = %389, %391
  %.2487 = phi double [ %396, %391 ], [ %380, %389 ]
  %398 = fcmp oge double %.2487, 0.000000e+00
  %399 = fneg double %.2487
  %400 = select i1 %398, double %.2487, double %399
  %401 = fcmp ogt double %400, 1.000000e+00
  br i1 %401, label %402, label %thread-pre-split563

402:                                              ; preds = %397
  store double 1.000000e+00, ptr %15, align 8, !tbaa !9
  %403 = fmul double %390, %400
  %404 = fcmp oge double %403, 1.000000e+00
  %405 = select i1 %404, double 1.000000e+00, double %403
  store double %405, ptr %17, align 8, !tbaa !9
  %406 = fdiv double %380, %.2487
  br label %thread-pre-split563

thread-pre-split563:                              ; preds = %397, %402
  %407 = phi double [ %405, %402 ], [ %390, %397 ]
  %.0459 = phi double [ %406, %402 ], [ %380, %397 ]
  %408 = fcmp olt double %407, 1.000000e+00
  br i1 %408, label %409, label %414

409:                                              ; preds = %thread-pre-split563
  call void @dscal_(ptr noundef nonnull %4, ptr noundef nonnull %17, ptr noundef nonnull %7, ptr noundef nonnull @c__1) #6
  %410 = load double, ptr %17, align 8, !tbaa !9
  %411 = load double, ptr %8, align 8, !tbaa !9
  %412 = fmul double %410, %411
  store double %412, ptr %8, align 8, !tbaa !9
  %413 = fmul double %.6483640, %410
  br label %414

414:                                              ; preds = %thread-pre-split563, %409, %370
  %.3488 = phi double [ %.2487, %409 ], [ %.2487, %thread-pre-split563 ], [ %.1486639, %370 ]
  %.7484 = phi double [ %413, %409 ], [ %.6483640, %thread-pre-split563 ], [ %.6483640, %370 ]
  %.1460 = phi double [ %.0459, %409 ], [ %.0459, %thread-pre-split563 ], [ %380, %370 ]
  %415 = fcmp oeq double %.1460, 1.000000e+00
  br i1 %415, label %416, label %435

416:                                              ; preds = %414
  br i1 %.not.not.not, label %422, label %417

417:                                              ; preds = %416
  %418 = add nsw i32 %.7641, -1
  store i32 %418, ptr %14, align 4, !tbaa !5
  %419 = mul nsw i32 %.7641, %18
  %420 = sext i32 %419 to i64
  %gep637 = getelementptr double, ptr %invariant.gep636, i64 %420
  %421 = call double @ddot_(ptr noundef nonnull %14, ptr noundef %gep637, ptr noundef nonnull @c__1, ptr noundef nonnull %7, ptr noundef nonnull @c__1) #6
  br label %.loopexit

422:                                              ; preds = %416
  %423 = load i32, ptr %4, align 4, !tbaa !5
  %424 = icmp slt i32 %.7641, %423
  br i1 %424, label %425, label %.loopexit

425:                                              ; preds = %422
  %426 = sub nsw i32 %423, %.7641
  store i32 %426, ptr %14, align 4, !tbaa !5
  %427 = add nsw i32 %.7641, 1
  %428 = mul nsw i32 %.7641, %18
  %429 = add nsw i32 %427, %428
  %430 = sext i32 %429 to i64
  %431 = getelementptr inbounds double, ptr %20, i64 %430
  %432 = sext i32 %427 to i64
  %433 = getelementptr inbounds double, ptr %21, i64 %432
  %434 = call double @ddot_(ptr noundef nonnull %14, ptr noundef %431, ptr noundef nonnull @c__1, ptr noundef nonnull %433, ptr noundef nonnull @c__1) #6
  br label %.loopexit

435:                                              ; preds = %414
  br i1 %.not.not.not, label %462, label %436

436:                                              ; preds = %435
  %437 = add nsw i32 %.7641, -1
  store i32 %437, ptr %14, align 4, !tbaa !5
  %.not545.not623 = icmp sgt i32 %.7641, 1
  br i1 %.not545.not623, label %.lr.ph627, label %.loopexit

.lr.ph627:                                        ; preds = %436
  %438 = mul nsw i32 %.7641, %18
  %439 = sext i32 %438 to i64
  %invariant.gep701 = getelementptr double, ptr %20, i64 %439
  %xtraiter = and i64 %372, 3
  %440 = icmp ult i64 %373, 3
  br i1 %440, label %.loopexit.loopexit721.unr-lcssa, label %.lr.ph627.new

.lr.ph627.new:                                    ; preds = %.lr.ph627
  %unroll_iter = and i64 %372, -4
  %invariant.gep739 = getelementptr i8, ptr %invariant.gep701, i64 8
  br label %441

441:                                              ; preds = %441, %.lr.ph627.new
  %indvars.iv675 = phi i64 [ 1, %.lr.ph627.new ], [ %indvars.iv.next676.3, %441 ]
  %.0468624 = phi double [ 0.000000e+00, %.lr.ph627.new ], [ %461, %441 ]
  %niter = phi i64 [ 0, %.lr.ph627.new ], [ %niter.next.3, %441 ]
  %gep702 = getelementptr double, ptr %invariant.gep701, i64 %indvars.iv675
  %442 = load double, ptr %gep702, align 8, !tbaa !9
  %443 = fmul double %.1460, %442
  %444 = getelementptr inbounds double, ptr %21, i64 %indvars.iv675
  %445 = load double, ptr %444, align 8, !tbaa !9
  %446 = call double @llvm.fmuladd.f64(double %443, double %445, double %.0468624)
  %gep740 = getelementptr double, ptr %invariant.gep739, i64 %indvars.iv675
  %447 = load double, ptr %gep740, align 8, !tbaa !9
  %448 = fmul double %.1460, %447
  %449 = getelementptr double, ptr %7, i64 %indvars.iv675
  %450 = load double, ptr %449, align 8, !tbaa !9
  %451 = call double @llvm.fmuladd.f64(double %448, double %450, double %446)
  %indvars.iv.next676.1 = add nuw nsw i64 %indvars.iv675, 2
  %gep702.2 = getelementptr double, ptr %invariant.gep701, i64 %indvars.iv.next676.1
  %452 = load double, ptr %gep702.2, align 8, !tbaa !9
  %453 = fmul double %.1460, %452
  %454 = getelementptr inbounds double, ptr %21, i64 %indvars.iv.next676.1
  %455 = load double, ptr %454, align 8, !tbaa !9
  %456 = call double @llvm.fmuladd.f64(double %453, double %455, double %451)
  %indvars.iv.next676.2 = add nuw nsw i64 %indvars.iv675, 3
  %gep702.3 = getelementptr double, ptr %invariant.gep701, i64 %indvars.iv.next676.2
  %457 = load double, ptr %gep702.3, align 8, !tbaa !9
  %458 = fmul double %.1460, %457
  %459 = getelementptr inbounds double, ptr %21, i64 %indvars.iv.next676.2
  %460 = load double, ptr %459, align 8, !tbaa !9
  %461 = call double @llvm.fmuladd.f64(double %458, double %460, double %456)
  %indvars.iv.next676.3 = add nuw nsw i64 %indvars.iv675, 4
  %niter.next.3 = add i64 %niter, 4
  %niter.ncmp.3 = icmp eq i64 %niter.next.3, %unroll_iter
  br i1 %niter.ncmp.3, label %.loopexit.loopexit721.unr-lcssa, label %441, !llvm.loop !19

462:                                              ; preds = %435
  %463 = load i32, ptr %4, align 4, !tbaa !5
  %464 = icmp slt i32 %.7641, %463
  br i1 %464, label %465, label %.loopexit

465:                                              ; preds = %462
  store i32 %463, ptr %14, align 4, !tbaa !5
  %466 = mul nsw i32 %.7641, %18
  %467 = sext i32 %466 to i64
  %wide.trip.count681 = sext i32 %463 to i64
  %invariant.gep703 = getelementptr double, ptr %20, i64 %467
  br label %468

468:                                              ; preds = %465, %468
  %indvars.iv678 = phi i64 [ %374, %465 ], [ %indvars.iv.next679, %468 ]
  %.1469629 = phi double [ 0.000000e+00, %465 ], [ %473, %468 ]
  %indvars.iv.next679 = add nsw i64 %indvars.iv678, 1
  %gep704 = getelementptr double, ptr %invariant.gep703, i64 %indvars.iv.next679
  %469 = load double, ptr %gep704, align 8, !tbaa !9
  %470 = fmul double %.1460, %469
  %471 = getelementptr double, ptr %7, i64 %indvars.iv678
  %472 = load double, ptr %471, align 8, !tbaa !9
  %473 = call double @llvm.fmuladd.f64(double %470, double %472, double %.1469629)
  %exitcond682.not = icmp eq i64 %indvars.iv.next679, %wide.trip.count681
  br i1 %exitcond682.not, label %.loopexit, label %468, !llvm.loop !20

.loopexit.loopexit721.unr-lcssa:                  ; preds = %441, %.lr.ph627
  %.lcssa.ph = phi double [ poison, %.lr.ph627 ], [ %461, %441 ]
  %indvars.iv675.unr = phi i64 [ 1, %.lr.ph627 ], [ %indvars.iv.next676.3, %441 ]
  %.0468624.unr = phi double [ 0.000000e+00, %.lr.ph627 ], [ %461, %441 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.loopexit, label %.epil.preheader

.epil.preheader:                                  ; preds = %.loopexit.loopexit721.unr-lcssa, %.epil.preheader
  %indvars.iv675.epil = phi i64 [ %indvars.iv.next676.epil, %.epil.preheader ], [ %indvars.iv675.unr, %.loopexit.loopexit721.unr-lcssa ]
  %.0468624.epil = phi double [ %478, %.epil.preheader ], [ %.0468624.unr, %.loopexit.loopexit721.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.epil.preheader ], [ 0, %.loopexit.loopexit721.unr-lcssa ]
  %gep702.epil = getelementptr double, ptr %invariant.gep701, i64 %indvars.iv675.epil
  %474 = load double, ptr %gep702.epil, align 8, !tbaa !9
  %475 = fmul double %.1460, %474
  %476 = getelementptr inbounds double, ptr %21, i64 %indvars.iv675.epil
  %477 = load double, ptr %476, align 8, !tbaa !9
  %478 = call double @llvm.fmuladd.f64(double %475, double %477, double %.0468624.epil)
  %indvars.iv.next676.epil = add nuw nsw i64 %indvars.iv675.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter
  br i1 %epil.iter.cmp.not, label %.loopexit, label %.epil.preheader, !llvm.loop !21

.loopexit:                                        ; preds = %.loopexit.loopexit721.unr-lcssa, %.epil.preheader, %468, %436, %462, %417, %425, %422
  %.2470 = phi double [ %421, %417 ], [ %434, %425 ], [ 0.000000e+00, %422 ], [ 0.000000e+00, %462 ], [ 0.000000e+00, %436 ], [ %473, %468 ], [ %.lcssa.ph, %.loopexit.loopexit721.unr-lcssa ], [ %478, %.epil.preheader ]
  %479 = load double, ptr %16, align 8, !tbaa !9
  %480 = fcmp oeq double %.1460, %479
  %481 = load double, ptr %375, align 8, !tbaa !9
  br i1 %480, label %482, label %531

482:                                              ; preds = %.loopexit
  %483 = fsub double %481, %.2470
  store double %483, ptr %375, align 8, !tbaa !9
  store double %483, ptr %15, align 8, !tbaa !9
  %484 = fcmp oge double %483, 0.000000e+00
  %485 = fneg double %483
  %486 = select i1 %484, double %483, double %485
  br i1 %.not528, label %493, label %487

487:                                              ; preds = %482
  %488 = mul i32 %.7641, %369
  %489 = sext i32 %488 to i64
  %490 = getelementptr inbounds double, ptr %20, i64 %489
  %491 = load double, ptr %490, align 8, !tbaa !9
  %492 = fmul double %479, %491
  br label %495

493:                                              ; preds = %482
  %494 = fcmp oeq double %479, 1.000000e+00
  br i1 %494, label %534, label %495

495:                                              ; preds = %493, %487
  %.4489 = phi double [ %492, %487 ], [ %479, %493 ]
  %496 = fcmp oge double %.4489, 0.000000e+00
  %497 = fneg double %.4489
  %498 = select i1 %496, double %.4489, double %497
  %499 = fcmp ogt double %498, %55
  br i1 %499, label %500, label %513

500:                                              ; preds = %495
  %501 = fcmp olt double %498, 1.000000e+00
  %502 = fmul double %56, %498
  %503 = fcmp ogt double %486, %502
  %or.cond555 = select i1 %501, i1 %503, i1 false
  br i1 %or.cond555, label %504, label %510

504:                                              ; preds = %500
  %505 = fdiv double 1.000000e+00, %486
  store double %505, ptr %17, align 8, !tbaa !9
  call void @dscal_(ptr noundef nonnull %4, ptr noundef nonnull %17, ptr noundef nonnull %7, ptr noundef nonnull @c__1) #6
  %506 = load double, ptr %17, align 8, !tbaa !9
  %507 = load double, ptr %8, align 8, !tbaa !9
  %508 = fmul double %506, %507
  store double %508, ptr %8, align 8, !tbaa !9
  %509 = fmul double %.7484, %506
  %.pre689 = load double, ptr %375, align 8, !tbaa !9
  br label %510

510:                                              ; preds = %504, %500
  %511 = phi double [ %.pre689, %504 ], [ %483, %500 ]
  %.8 = phi double [ %509, %504 ], [ %.7484, %500 ]
  %512 = fdiv double %511, %.4489
  store double %512, ptr %375, align 8, !tbaa !9
  br label %534

513:                                              ; preds = %495
  %514 = fcmp ogt double %498, 0.000000e+00
  br i1 %514, label %515, label %527

515:                                              ; preds = %513
  %516 = fmul double %56, %498
  %517 = fcmp ogt double %486, %516
  br i1 %517, label %518, label %524

518:                                              ; preds = %515
  %519 = fdiv double %516, %486
  store double %519, ptr %17, align 8, !tbaa !9
  call void @dscal_(ptr noundef nonnull %4, ptr noundef nonnull %17, ptr noundef nonnull %7, ptr noundef nonnull @c__1) #6
  %520 = load double, ptr %17, align 8, !tbaa !9
  %521 = load double, ptr %8, align 8, !tbaa !9
  %522 = fmul double %520, %521
  store double %522, ptr %8, align 8, !tbaa !9
  %523 = fmul double %.7484, %520
  %.pre688 = load double, ptr %375, align 8, !tbaa !9
  br label %524

524:                                              ; preds = %518, %515
  %525 = phi double [ %.pre688, %518 ], [ %483, %515 ]
  %.9 = phi double [ %523, %518 ], [ %.7484, %515 ]
  %526 = fdiv double %525, %.4489
  store double %526, ptr %375, align 8, !tbaa !9
  br label %534

527:                                              ; preds = %513
  %528 = load i32, ptr %4, align 4, !tbaa !5
  store i32 %528, ptr %14, align 4, !tbaa !5
  %.not547631 = icmp slt i32 %528, 1
  br i1 %.not547631, label %._crit_edge635, label %.lr.ph634.preheader

.lr.ph634.preheader:                              ; preds = %527
  %529 = zext nneg i32 %528 to i64
  %530 = shl nuw nsw i64 %529, 3
  call void @llvm.memset.p0.i64(ptr nonnull align 8 %7, i8 0, i64 %530, i1 false), !tbaa !9
  br label %._crit_edge635

._crit_edge635:                                   ; preds = %.lr.ph634.preheader, %527
  store double 1.000000e+00, ptr %375, align 8, !tbaa !9
  store double 0.000000e+00, ptr %8, align 8, !tbaa !9
  %.pre690 = load double, ptr %375, align 8, !tbaa !9
  br label %534

531:                                              ; preds = %.loopexit
  %532 = fdiv double %481, %.3488
  %533 = fsub double %532, %.2470
  store double %533, ptr %375, align 8, !tbaa !9
  br label %534

534:                                              ; preds = %493, %524, %._crit_edge635, %510, %531
  %535 = phi double [ %512, %510 ], [ %526, %524 ], [ %.pre690, %._crit_edge635 ], [ %483, %493 ], [ %533, %531 ]
  %.5490 = phi double [ %.4489, %510 ], [ %.4489, %524 ], [ %.4489, %._crit_edge635 ], [ 1.000000e+00, %493 ], [ %.3488, %531 ]
  %.10 = phi double [ %.8, %510 ], [ %.9, %524 ], [ 0.000000e+00, %._crit_edge635 ], [ %.7484, %493 ], [ %.7484, %531 ]
  store double %535, ptr %15, align 8, !tbaa !9
  %536 = fcmp oge double %535, 0.000000e+00
  %537 = fneg double %535
  %538 = select i1 %536, double %535, double %537
  %539 = fcmp oge double %.10, %538
  %540 = select i1 %539, double %.10, double %538
  %541 = add nsw i32 %216, %.7641
  %542 = load i32, ptr %13, align 4
  %543 = icmp sge i32 %541, %542
  %544 = icmp sle i32 %541, %542
  %.in542 = select i1 %225, i1 %543, i1 %544
  br i1 %.in542, label %370, label %.loopexit567, !llvm.loop !23

.loopexit567:                                     ; preds = %362, %534, %228, %368
  %545 = load double, ptr %16, align 8, !tbaa !9
  %546 = load double, ptr %8, align 8, !tbaa !9
  %547 = fdiv double %546, %545
  store double %547, ptr %8, align 8, !tbaa !9
  br label %548

548:                                              ; preds = %.loopexit567, %219
  %549 = phi double [ %545, %.loopexit567 ], [ %.pr565, %219 ]
  %550 = fcmp une double %549, 1.000000e+00
  br i1 %550, label %551, label %553

551:                                              ; preds = %548
  %552 = fdiv double 1.000000e+00, %549
  store double %552, ptr %15, align 8, !tbaa !9
  call void @dscal_(ptr noundef nonnull %4, ptr noundef nonnull %15, ptr noundef %9, ptr noundef nonnull @c__1) #6
  br label %553

553:                                              ; preds = %548, %551, %50, %.thread
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #6
  ret void
}

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

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

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

declare double @dlamch_(ptr noundef) local_unnamed_addr #2

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

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

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

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

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

declare 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

; 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.umax.i32(i32, i32) #4

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #5

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

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

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


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