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

; 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 i64, align 8
@c_b36 = external hidden global double, align 8

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

68:                                               ; preds = %10
  %69 = load ptr, ptr %12, align 8, !tbaa !5
  %70 = call i64 @lsame_(ptr noundef %69, ptr noundef @.str.2)
  %71 = icmp ne i64 %70, 0
  br i1 %71, label %74, label %72

72:                                               ; preds = %68
  %73 = load ptr, ptr %21, align 8, !tbaa !5
  store i64 -1, ptr %73, align 8, !tbaa !9
  br label %116

74:                                               ; preds = %68, %10
  %75 = load i64, ptr %48, align 8, !tbaa !9
  %76 = icmp ne i64 %75, 0
  br i1 %76, label %87, label %77

77:                                               ; preds = %74
  %78 = load ptr, ptr %13, align 8, !tbaa !5
  %79 = call i64 @lsame_(ptr noundef %78, ptr noundef @.str.3)
  %80 = icmp ne i64 %79, 0
  br i1 %80, label %87, label %81

81:                                               ; preds = %77
  %82 = load ptr, ptr %13, align 8, !tbaa !5
  %83 = call i64 @lsame_(ptr noundef %82, ptr noundef @.str.4)
  %84 = icmp ne i64 %83, 0
  br i1 %84, label %87, label %85

85:                                               ; preds = %81
  %86 = load ptr, ptr %21, align 8, !tbaa !5
  store i64 -2, ptr %86, align 8, !tbaa !9
  br label %115

87:                                               ; preds = %81, %77, %74
  %88 = load i64, ptr %51, align 8, !tbaa !9
  %89 = icmp ne i64 %88, 0
  br i1 %89, label %96, label %90

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

94:                                               ; preds = %90
  %95 = load ptr, ptr %21, align 8, !tbaa !5
  store i64 -3, ptr %95, align 8, !tbaa !9
  br label %114

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

100:                                              ; preds = %96
  %101 = load ptr, ptr %15, align 8, !tbaa !5
  %102 = call i64 @lsame_(ptr noundef %101, ptr noundef @.str.1)
  %103 = icmp ne i64 %102, 0
  br i1 %103, label %106, label %104

104:                                              ; preds = %100
  %105 = load ptr, ptr %21, align 8, !tbaa !5
  store i64 -4, ptr %105, align 8, !tbaa !9
  br label %113

106:                                              ; preds = %100, %96
  %107 = load ptr, ptr %16, align 8, !tbaa !5
  %108 = load i64, ptr %107, align 8, !tbaa !9
  %109 = icmp slt i64 %108, 0
  br i1 %109, label %110, label %112

110:                                              ; preds = %106
  %111 = load ptr, ptr %21, align 8, !tbaa !5
  store i64 -5, ptr %111, align 8, !tbaa !9
  br label %112

112:                                              ; preds = %110, %106
  br label %113

113:                                              ; preds = %112, %104
  br label %114

114:                                              ; preds = %113, %94
  br label %115

115:                                              ; preds = %114, %85
  br label %116

116:                                              ; preds = %115, %72
  %117 = load ptr, ptr %21, align 8, !tbaa !5
  %118 = load i64, ptr %117, align 8, !tbaa !9
  %119 = icmp ne i64 %118, 0
  br i1 %119, label %120, label %125

120:                                              ; preds = %116
  %121 = load ptr, ptr %21, align 8, !tbaa !5
  %122 = load i64, ptr %121, align 8, !tbaa !9
  %123 = sub nsw i64 0, %122
  store i64 %123, ptr %22, align 8, !tbaa !9
  %124 = call i32 @xerbla_(ptr noundef @.str.6, ptr noundef %22)
  store i32 0, ptr %11, align 4
  store i32 1, ptr %52, align 4
  br label %1422

125:                                              ; preds = %116
  %126 = load ptr, ptr %16, align 8, !tbaa !5
  %127 = load i64, ptr %126, align 8, !tbaa !9
  %128 = icmp eq i64 %127, 0
  br i1 %128, label %129, label %130

129:                                              ; preds = %125
  store i32 0, ptr %11, align 4
  store i32 1, ptr %52, align 4
  br label %1422

130:                                              ; preds = %125
  %131 = call double @dlamch_(ptr noundef @.str.7)
  %132 = call double @dlamch_(ptr noundef @.str.8)
  %133 = fdiv double %131, %132
  store double %133, ptr %50, align 8, !tbaa !11
  %134 = load double, ptr %50, align 8, !tbaa !11
  %135 = fdiv double 1.000000e+00, %134
  store double %135, ptr %47, align 8, !tbaa !11
  %136 = load ptr, ptr %19, align 8, !tbaa !5
  store double 1.000000e+00, ptr %136, align 8, !tbaa !11
  %137 = load ptr, ptr %15, align 8, !tbaa !5
  %138 = call i64 @lsame_(ptr noundef %137, ptr noundef @.str.1)
  %139 = icmp ne i64 %138, 0
  br i1 %139, label %140, label %204

140:                                              ; preds = %130
  %141 = load i64, ptr %46, align 8, !tbaa !9
  %142 = icmp ne i64 %141, 0
  br i1 %142, label %143, label %167

143:                                              ; preds = %140
  store i64 1, ptr %30, align 8, !tbaa !9
  %144 = load ptr, ptr %16, align 8, !tbaa !5
  %145 = load i64, ptr %144, align 8, !tbaa !9
  store i64 %145, ptr %22, align 8, !tbaa !9
  store i64 1, ptr %29, align 8, !tbaa !9
  br label %146

146:                                              ; preds = %163, %143
  %147 = load i64, ptr %29, align 8, !tbaa !9
  %148 = load i64, ptr %22, align 8, !tbaa !9
  %149 = icmp sle i64 %147, %148
  br i1 %149, label %150, label %166

150:                                              ; preds = %146
  %151 = load i64, ptr %29, align 8, !tbaa !9
  %152 = sub nsw i64 %151, 1
  store i64 %152, ptr %23, align 8, !tbaa !9
  %153 = load ptr, ptr %17, align 8, !tbaa !5
  %154 = load i64, ptr %30, align 8, !tbaa !9
  %155 = getelementptr inbounds double, ptr %153, i64 %154
  %156 = call double @f2c_dasum(ptr noundef %23, ptr noundef %155, ptr noundef @c__1)
  %157 = load ptr, ptr %20, align 8, !tbaa !5
  %158 = load i64, ptr %29, align 8, !tbaa !9
  %159 = getelementptr inbounds double, ptr %157, i64 %158
  store double %156, ptr %159, align 8, !tbaa !11
  %160 = load i64, ptr %29, align 8, !tbaa !9
  %161 = load i64, ptr %30, align 8, !tbaa !9
  %162 = add nsw i64 %161, %160
  store i64 %162, ptr %30, align 8, !tbaa !9
  br label %163

163:                                              ; preds = %150
  %164 = load i64, ptr %29, align 8, !tbaa !9
  %165 = add nsw i64 %164, 1
  store i64 %165, ptr %29, align 8, !tbaa !9
  br label %146, !llvm.loop !13

166:                                              ; preds = %146
  br label %203

167:                                              ; preds = %140
  store i64 1, ptr %30, align 8, !tbaa !9
  %168 = load ptr, ptr %16, align 8, !tbaa !5
  %169 = load i64, ptr %168, align 8, !tbaa !9
  %170 = sub nsw i64 %169, 1
  store i64 %170, ptr %22, align 8, !tbaa !9
  store i64 1, ptr %29, align 8, !tbaa !9
  br label %171

171:                                              ; preds = %195, %167
  %172 = load i64, ptr %29, align 8, !tbaa !9
  %173 = load i64, ptr %22, align 8, !tbaa !9
  %174 = icmp sle i64 %172, %173
  br i1 %174, label %175, label %198

175:                                              ; preds = %171
  %176 = load ptr, ptr %16, align 8, !tbaa !5
  %177 = load i64, ptr %176, align 8, !tbaa !9
  %178 = load i64, ptr %29, align 8, !tbaa !9
  %179 = sub nsw i64 %177, %178
  store i64 %179, ptr %23, align 8, !tbaa !9
  %180 = load ptr, ptr %17, align 8, !tbaa !5
  %181 = load i64, ptr %30, align 8, !tbaa !9
  %182 = add nsw i64 %181, 1
  %183 = getelementptr inbounds double, ptr %180, i64 %182
  %184 = call double @f2c_dasum(ptr noundef %23, ptr noundef %183, ptr noundef @c__1)
  %185 = load ptr, ptr %20, align 8, !tbaa !5
  %186 = load i64, ptr %29, align 8, !tbaa !9
  %187 = getelementptr inbounds double, ptr %185, i64 %186
  store double %184, ptr %187, align 8, !tbaa !11
  %188 = load i64, ptr %30, align 8, !tbaa !9
  %189 = load ptr, ptr %16, align 8, !tbaa !5
  %190 = load i64, ptr %189, align 8, !tbaa !9
  %191 = add nsw i64 %188, %190
  %192 = load i64, ptr %29, align 8, !tbaa !9
  %193 = sub nsw i64 %191, %192
  %194 = add nsw i64 %193, 1
  store i64 %194, ptr %30, align 8, !tbaa !9
  br label %195

195:                                              ; preds = %175
  %196 = load i64, ptr %29, align 8, !tbaa !9
  %197 = add nsw i64 %196, 1
  store i64 %197, ptr %29, align 8, !tbaa !9
  br label %171, !llvm.loop !15

198:                                              ; preds = %171
  %199 = load ptr, ptr %20, align 8, !tbaa !5
  %200 = load ptr, ptr %16, align 8, !tbaa !5
  %201 = load i64, ptr %200, align 8, !tbaa !9
  %202 = getelementptr inbounds double, ptr %199, i64 %201
  store double 0.000000e+00, ptr %202, align 8, !tbaa !11
  br label %203

203:                                              ; preds = %198, %166
  br label %204

204:                                              ; preds = %203, %130
  %205 = load ptr, ptr %16, align 8, !tbaa !5
  %206 = load ptr, ptr %20, align 8, !tbaa !5
  %207 = getelementptr inbounds double, ptr %206, i64 1
  %208 = call i64 @f2c_idamax(ptr noundef %205, ptr noundef %207, ptr noundef @c__1)
  store i64 %208, ptr %37, align 8, !tbaa !9
  %209 = load ptr, ptr %20, align 8, !tbaa !5
  %210 = load i64, ptr %37, align 8, !tbaa !9
  %211 = getelementptr inbounds double, ptr %209, i64 %210
  %212 = load double, ptr %211, align 8, !tbaa !11
  store double %212, ptr %38, align 8, !tbaa !11
  %213 = load double, ptr %38, align 8, !tbaa !11
  %214 = load double, ptr %47, align 8, !tbaa !11
  %215 = fcmp ole double %213, %214
  br i1 %215, label %216, label %217

216:                                              ; preds = %204
  store double 1.000000e+00, ptr %43, align 8, !tbaa !11
  br label %226

217:                                              ; preds = %204
  %218 = load double, ptr %50, align 8, !tbaa !11
  %219 = load double, ptr %38, align 8, !tbaa !11
  %220 = fmul double %218, %219
  %221 = fdiv double 1.000000e+00, %220
  store double %221, ptr %43, align 8, !tbaa !11
  %222 = load ptr, ptr %16, align 8, !tbaa !5
  %223 = load ptr, ptr %20, align 8, !tbaa !5
  %224 = getelementptr inbounds double, ptr %223, i64 1
  %225 = call i32 @f2c_dscal(ptr noundef %222, ptr noundef %43, ptr noundef %224, ptr noundef @c__1)
  br label %226

226:                                              ; preds = %217, %216
  %227 = load ptr, ptr %16, align 8, !tbaa !5
  %228 = load ptr, ptr %18, align 8, !tbaa !5
  %229 = getelementptr inbounds double, ptr %228, i64 1
  %230 = call i64 @f2c_idamax(ptr noundef %227, ptr noundef %229, ptr noundef @c__1)
  store i64 %230, ptr %29, align 8, !tbaa !9
  %231 = load ptr, ptr %18, align 8, !tbaa !5
  %232 = load i64, ptr %29, align 8, !tbaa !9
  %233 = getelementptr inbounds double, ptr %231, i64 %232
  %234 = load double, ptr %233, align 8, !tbaa !11
  store double %234, ptr %25, align 8, !tbaa !11
  %235 = load double, ptr %25, align 8, !tbaa !11
  %236 = fcmp oge double %235, 0.000000e+00
  br i1 %236, label %237, label %239

237:                                              ; preds = %226
  %238 = load double, ptr %25, align 8, !tbaa !11
  br label %242

239:                                              ; preds = %226
  %240 = load double, ptr %25, align 8, !tbaa !11
  %241 = fneg double %240
  br label %242

242:                                              ; preds = %239, %237
  %243 = phi double [ %238, %237 ], [ %241, %239 ]
  store double %243, ptr %40, align 8, !tbaa !11
  %244 = load double, ptr %40, align 8, !tbaa !11
  store double %244, ptr %36, align 8, !tbaa !11
  %245 = load i64, ptr %48, align 8, !tbaa !9
  %246 = icmp ne i64 %245, 0
  br i1 %246, label %247, label %433

247:                                              ; preds = %242
  %248 = load i64, ptr %46, align 8, !tbaa !9
  %249 = icmp ne i64 %248, 0
  br i1 %249, label %250, label %253

250:                                              ; preds = %247
  %251 = load ptr, ptr %16, align 8, !tbaa !5
  %252 = load i64, ptr %251, align 8, !tbaa !9
  store i64 %252, ptr %49, align 8, !tbaa !9
  store i64 1, ptr %45, align 8, !tbaa !9
  store i64 -1, ptr %34, align 8, !tbaa !9
  br label %256

253:                                              ; preds = %247
  store i64 1, ptr %49, align 8, !tbaa !9
  %254 = load ptr, ptr %16, align 8, !tbaa !5
  %255 = load i64, ptr %254, align 8, !tbaa !9
  store i64 %255, ptr %45, align 8, !tbaa !9
  store i64 1, ptr %34, align 8, !tbaa !9
  br label %256

256:                                              ; preds = %253, %250
  %257 = load double, ptr %43, align 8, !tbaa !11
  %258 = fcmp une double %257, 1.000000e+00
  br i1 %258, label %259, label %260

259:                                              ; preds = %256
  store double 0.000000e+00, ptr %41, align 8, !tbaa !11
  br label %432

260:                                              ; preds = %256
  %261 = load i64, ptr %51, align 8, !tbaa !9
  %262 = icmp ne i64 %261, 0
  br i1 %262, label %263, label %373

263:                                              ; preds = %260
  %264 = load double, ptr %36, align 8, !tbaa !11
  %265 = load double, ptr %50, align 8, !tbaa !11
  %266 = fcmp oge double %264, %265
  br i1 %266, label %267, label %269

267:                                              ; preds = %263
  %268 = load double, ptr %36, align 8, !tbaa !11
  br label %271

269:                                              ; preds = %263
  %270 = load double, ptr %50, align 8, !tbaa !11
  br label %271

271:                                              ; preds = %269, %267
  %272 = phi double [ %268, %267 ], [ %270, %269 ]
  %273 = fdiv double 1.000000e+00, %272
  store double %273, ptr %41, align 8, !tbaa !11
  %274 = load double, ptr %41, align 8, !tbaa !11
  store double %274, ptr %36, align 8, !tbaa !11
  %275 = load i64, ptr %49, align 8, !tbaa !9
  %276 = load i64, ptr %49, align 8, !tbaa !9
  %277 = add nsw i64 %276, 1
  %278 = mul nsw i64 %275, %277
  %279 = sdiv i64 %278, 2
  store i64 %279, ptr %30, align 8, !tbaa !9
  %280 = load ptr, ptr %16, align 8, !tbaa !5
  %281 = load i64, ptr %280, align 8, !tbaa !9
  store i64 %281, ptr %35, align 8, !tbaa !9
  %282 = load i64, ptr %45, align 8, !tbaa !9
  store i64 %282, ptr %22, align 8, !tbaa !9
  %283 = load i64, ptr %34, align 8, !tbaa !9
  store i64 %283, ptr %23, align 8, !tbaa !9
  %284 = load i64, ptr %49, align 8, !tbaa !9
  store i64 %284, ptr %29, align 8, !tbaa !9
  br label %285

285:                                              ; preds = %367, %271
  %286 = load i64, ptr %23, align 8, !tbaa !9
  %287 = icmp slt i64 %286, 0
  br i1 %287, label %288, label %293

288:                                              ; preds = %285
  %289 = load i64, ptr %29, align 8, !tbaa !9
  %290 = load i64, ptr %22, align 8, !tbaa !9
  %291 = icmp sge i64 %289, %290
  %292 = zext i1 %291 to i32
  br label %298

293:                                              ; preds = %285
  %294 = load i64, ptr %29, align 8, !tbaa !9
  %295 = load i64, ptr %22, align 8, !tbaa !9
  %296 = icmp sle i64 %294, %295
  %297 = zext i1 %296 to i32
  br label %298

298:                                              ; preds = %293, %288
  %299 = phi i32 [ %292, %288 ], [ %297, %293 ]
  %300 = icmp ne i32 %299, 0
  br i1 %300, label %301, label %371

301:                                              ; preds = %298
  %302 = load double, ptr %41, align 8, !tbaa !11
  %303 = load double, ptr %50, align 8, !tbaa !11
  %304 = fcmp ole double %302, %303
  br i1 %304, label %305, label %306

305:                                              ; preds = %301
  br label %432

306:                                              ; preds = %301
  %307 = load ptr, ptr %17, align 8, !tbaa !5
  %308 = load i64, ptr %30, align 8, !tbaa !9
  %309 = getelementptr inbounds double, ptr %307, i64 %308
  %310 = load double, ptr %309, align 8, !tbaa !11
  store double %310, ptr %25, align 8, !tbaa !11
  %311 = load double, ptr %25, align 8, !tbaa !11
  %312 = fcmp oge double %311, 0.000000e+00
  br i1 %312, label %313, label %315

313:                                              ; preds = %306
  %314 = load double, ptr %25, align 8, !tbaa !11
  br label %318

315:                                              ; preds = %306
  %316 = load double, ptr %25, align 8, !tbaa !11
  %317 = fneg double %316
  br label %318

318:                                              ; preds = %315, %313
  %319 = phi double [ %314, %313 ], [ %317, %315 ]
  store double %319, ptr %33, align 8, !tbaa !11
  %320 = load double, ptr %36, align 8, !tbaa !11
  store double %320, ptr %25, align 8, !tbaa !11
  %321 = load double, ptr %33, align 8, !tbaa !11
  %322 = fcmp ole double 1.000000e+00, %321
  br i1 %322, label %323, label %324

323:                                              ; preds = %318
  br label %326

324:                                              ; preds = %318
  %325 = load double, ptr %33, align 8, !tbaa !11
  br label %326

326:                                              ; preds = %324, %323
  %327 = phi double [ 1.000000e+00, %323 ], [ %325, %324 ]
  %328 = load double, ptr %41, align 8, !tbaa !11
  %329 = fmul double %327, %328
  store double %329, ptr %26, align 8, !tbaa !11
  %330 = load double, ptr %25, align 8, !tbaa !11
  %331 = load double, ptr %26, align 8, !tbaa !11
  %332 = fcmp ole double %330, %331
  br i1 %332, label %333, label %335

333:                                              ; preds = %326
  %334 = load double, ptr %25, align 8, !tbaa !11
  br label %337

335:                                              ; preds = %326
  %336 = load double, ptr %26, align 8, !tbaa !11
  br label %337

337:                                              ; preds = %335, %333
  %338 = phi double [ %334, %333 ], [ %336, %335 ]
  store double %338, ptr %36, align 8, !tbaa !11
  %339 = load double, ptr %33, align 8, !tbaa !11
  %340 = load ptr, ptr %20, align 8, !tbaa !5
  %341 = load i64, ptr %29, align 8, !tbaa !9
  %342 = getelementptr inbounds double, ptr %340, i64 %341
  %343 = load double, ptr %342, align 8, !tbaa !11
  %344 = fadd double %339, %343
  %345 = load double, ptr %50, align 8, !tbaa !11
  %346 = fcmp oge double %344, %345
  br i1 %346, label %347, label %358

347:                                              ; preds = %337
  %348 = load double, ptr %33, align 8, !tbaa !11
  %349 = load double, ptr %33, align 8, !tbaa !11
  %350 = load ptr, ptr %20, align 8, !tbaa !5
  %351 = load i64, ptr %29, align 8, !tbaa !9
  %352 = getelementptr inbounds double, ptr %350, i64 %351
  %353 = load double, ptr %352, align 8, !tbaa !11
  %354 = fadd double %349, %353
  %355 = fdiv double %348, %354
  %356 = load double, ptr %41, align 8, !tbaa !11
  %357 = fmul double %356, %355
  store double %357, ptr %41, align 8, !tbaa !11
  br label %359

358:                                              ; preds = %337
  store double 0.000000e+00, ptr %41, align 8, !tbaa !11
  br label %359

359:                                              ; preds = %358, %347
  %360 = load i64, ptr %34, align 8, !tbaa !9
  %361 = load i64, ptr %35, align 8, !tbaa !9
  %362 = mul nsw i64 %360, %361
  %363 = load i64, ptr %30, align 8, !tbaa !9
  %364 = add nsw i64 %363, %362
  store i64 %364, ptr %30, align 8, !tbaa !9
  %365 = load i64, ptr %35, align 8, !tbaa !9
  %366 = add nsw i64 %365, -1
  store i64 %366, ptr %35, align 8, !tbaa !9
  br label %367

367:                                              ; preds = %359
  %368 = load i64, ptr %23, align 8, !tbaa !9
  %369 = load i64, ptr %29, align 8, !tbaa !9
  %370 = add nsw i64 %369, %368
  store i64 %370, ptr %29, align 8, !tbaa !9
  br label %285, !llvm.loop !16

371:                                              ; preds = %298
  %372 = load double, ptr %36, align 8, !tbaa !11
  store double %372, ptr %41, align 8, !tbaa !11
  br label %431

373:                                              ; preds = %260
  store double 1.000000e+00, ptr %25, align 8, !tbaa !11
  %374 = load double, ptr %36, align 8, !tbaa !11
  %375 = load double, ptr %50, align 8, !tbaa !11
  %376 = fcmp oge double %374, %375
  br i1 %376, label %377, label %379

377:                                              ; preds = %373
  %378 = load double, ptr %36, align 8, !tbaa !11
  br label %381

379:                                              ; preds = %373
  %380 = load double, ptr %50, align 8, !tbaa !11
  br label %381

381:                                              ; preds = %379, %377
  %382 = phi double [ %378, %377 ], [ %380, %379 ]
  %383 = fdiv double 1.000000e+00, %382
  store double %383, ptr %26, align 8, !tbaa !11
  %384 = load double, ptr %25, align 8, !tbaa !11
  %385 = load double, ptr %26, align 8, !tbaa !11
  %386 = fcmp ole double %384, %385
  br i1 %386, label %387, label %389

387:                                              ; preds = %381
  %388 = load double, ptr %25, align 8, !tbaa !11
  br label %391

389:                                              ; preds = %381
  %390 = load double, ptr %26, align 8, !tbaa !11
  br label %391

391:                                              ; preds = %389, %387
  %392 = phi double [ %388, %387 ], [ %390, %389 ]
  store double %392, ptr %41, align 8, !tbaa !11
  %393 = load i64, ptr %45, align 8, !tbaa !9
  store i64 %393, ptr %23, align 8, !tbaa !9
  %394 = load i64, ptr %34, align 8, !tbaa !9
  store i64 %394, ptr %22, align 8, !tbaa !9
  %395 = load i64, ptr %49, align 8, !tbaa !9
  store i64 %395, ptr %29, align 8, !tbaa !9
  br label %396

396:                                              ; preds = %426, %391
  %397 = load i64, ptr %22, align 8, !tbaa !9
  %398 = icmp slt i64 %397, 0
  br i1 %398, label %399, label %404

399:                                              ; preds = %396
  %400 = load i64, ptr %29, align 8, !tbaa !9
  %401 = load i64, ptr %23, align 8, !tbaa !9
  %402 = icmp sge i64 %400, %401
  %403 = zext i1 %402 to i32
  br label %409

404:                                              ; preds = %396
  %405 = load i64, ptr %29, align 8, !tbaa !9
  %406 = load i64, ptr %23, align 8, !tbaa !9
  %407 = icmp sle i64 %405, %406
  %408 = zext i1 %407 to i32
  br label %409

409:                                              ; preds = %404, %399
  %410 = phi i32 [ %403, %399 ], [ %408, %404 ]
  %411 = icmp ne i32 %410, 0
  br i1 %411, label %412, label %430

412:                                              ; preds = %409
  %413 = load double, ptr %41, align 8, !tbaa !11
  %414 = load double, ptr %50, align 8, !tbaa !11
  %415 = fcmp ole double %413, %414
  br i1 %415, label %416, label %417

416:                                              ; preds = %412
  br label %432

417:                                              ; preds = %412
  %418 = load ptr, ptr %20, align 8, !tbaa !5
  %419 = load i64, ptr %29, align 8, !tbaa !9
  %420 = getelementptr inbounds double, ptr %418, i64 %419
  %421 = load double, ptr %420, align 8, !tbaa !11
  %422 = fadd double %421, 1.000000e+00
  %423 = fdiv double 1.000000e+00, %422
  %424 = load double, ptr %41, align 8, !tbaa !11
  %425 = fmul double %424, %423
  store double %425, ptr %41, align 8, !tbaa !11
  br label %426

426:                                              ; preds = %417
  %427 = load i64, ptr %22, align 8, !tbaa !9
  %428 = load i64, ptr %29, align 8, !tbaa !9
  %429 = add nsw i64 %428, %427
  store i64 %429, ptr %29, align 8, !tbaa !9
  br label %396, !llvm.loop !17

430:                                              ; preds = %409
  br label %431

431:                                              ; preds = %430, %371
  br label %432

432:                                              ; preds = %431, %416, %305, %259
  br label %613

433:                                              ; preds = %242
  %434 = load i64, ptr %46, align 8, !tbaa !9
  %435 = icmp ne i64 %434, 0
  br i1 %435, label %436, label %439

436:                                              ; preds = %433
  store i64 1, ptr %49, align 8, !tbaa !9
  %437 = load ptr, ptr %16, align 8, !tbaa !5
  %438 = load i64, ptr %437, align 8, !tbaa !9
  store i64 %438, ptr %45, align 8, !tbaa !9
  store i64 1, ptr %34, align 8, !tbaa !9
  br label %442

439:                                              ; preds = %433
  %440 = load ptr, ptr %16, align 8, !tbaa !5
  %441 = load i64, ptr %440, align 8, !tbaa !9
  store i64 %441, ptr %49, align 8, !tbaa !9
  store i64 1, ptr %45, align 8, !tbaa !9
  store i64 -1, ptr %34, align 8, !tbaa !9
  br label %442

442:                                              ; preds = %439, %436
  %443 = load double, ptr %43, align 8, !tbaa !11
  %444 = fcmp une double %443, 1.000000e+00
  br i1 %444, label %445, label %446

445:                                              ; preds = %442
  store double 0.000000e+00, ptr %41, align 8, !tbaa !11
  br label %612

446:                                              ; preds = %442
  %447 = load i64, ptr %51, align 8, !tbaa !9
  %448 = icmp ne i64 %447, 0
  br i1 %448, label %449, label %553

449:                                              ; preds = %446
  %450 = load double, ptr %36, align 8, !tbaa !11
  %451 = load double, ptr %50, align 8, !tbaa !11
  %452 = fcmp oge double %450, %451
  br i1 %452, label %453, label %455

453:                                              ; preds = %449
  %454 = load double, ptr %36, align 8, !tbaa !11
  br label %457

455:                                              ; preds = %449
  %456 = load double, ptr %50, align 8, !tbaa !11
  br label %457

457:                                              ; preds = %455, %453
  %458 = phi double [ %454, %453 ], [ %456, %455 ]
  %459 = fdiv double 1.000000e+00, %458
  store double %459, ptr %41, align 8, !tbaa !11
  %460 = load double, ptr %41, align 8, !tbaa !11
  store double %460, ptr %36, align 8, !tbaa !11
  %461 = load i64, ptr %49, align 8, !tbaa !9
  %462 = load i64, ptr %49, align 8, !tbaa !9
  %463 = add nsw i64 %462, 1
  %464 = mul nsw i64 %461, %463
  %465 = sdiv i64 %464, 2
  store i64 %465, ptr %30, align 8, !tbaa !9
  store i64 1, ptr %35, align 8, !tbaa !9
  %466 = load i64, ptr %45, align 8, !tbaa !9
  store i64 %466, ptr %22, align 8, !tbaa !9
  %467 = load i64, ptr %34, align 8, !tbaa !9
  store i64 %467, ptr %23, align 8, !tbaa !9
  %468 = load i64, ptr %49, align 8, !tbaa !9
  store i64 %468, ptr %29, align 8, !tbaa !9
  br label %469

469:                                              ; preds = %539, %457
  %470 = load i64, ptr %23, align 8, !tbaa !9
  %471 = icmp slt i64 %470, 0
  br i1 %471, label %472, label %477

472:                                              ; preds = %469
  %473 = load i64, ptr %29, align 8, !tbaa !9
  %474 = load i64, ptr %22, align 8, !tbaa !9
  %475 = icmp sge i64 %473, %474
  %476 = zext i1 %475 to i32
  br label %482

477:                                              ; preds = %469
  %478 = load i64, ptr %29, align 8, !tbaa !9
  %479 = load i64, ptr %22, align 8, !tbaa !9
  %480 = icmp sle i64 %478, %479
  %481 = zext i1 %480 to i32
  br label %482

482:                                              ; preds = %477, %472
  %483 = phi i32 [ %476, %472 ], [ %481, %477 ]
  %484 = icmp ne i32 %483, 0
  br i1 %484, label %485, label %543

485:                                              ; preds = %482
  %486 = load double, ptr %41, align 8, !tbaa !11
  %487 = load double, ptr %50, align 8, !tbaa !11
  %488 = fcmp ole double %486, %487
  br i1 %488, label %489, label %490

489:                                              ; preds = %485
  br label %612

490:                                              ; preds = %485
  %491 = load ptr, ptr %20, align 8, !tbaa !5
  %492 = load i64, ptr %29, align 8, !tbaa !9
  %493 = getelementptr inbounds double, ptr %491, i64 %492
  %494 = load double, ptr %493, align 8, !tbaa !11
  %495 = fadd double %494, 1.000000e+00
  store double %495, ptr %31, align 8, !tbaa !11
  %496 = load double, ptr %41, align 8, !tbaa !11
  store double %496, ptr %25, align 8, !tbaa !11
  %497 = load double, ptr %36, align 8, !tbaa !11
  %498 = load double, ptr %31, align 8, !tbaa !11
  %499 = fdiv double %497, %498
  store double %499, ptr %26, align 8, !tbaa !11
  %500 = load double, ptr %25, align 8, !tbaa !11
  %501 = load double, ptr %26, align 8, !tbaa !11
  %502 = fcmp ole double %500, %501
  br i1 %502, label %503, label %505

503:                                              ; preds = %490
  %504 = load double, ptr %25, align 8, !tbaa !11
  br label %507

505:                                              ; preds = %490
  %506 = load double, ptr %26, align 8, !tbaa !11
  br label %507

507:                                              ; preds = %505, %503
  %508 = phi double [ %504, %503 ], [ %506, %505 ]
  store double %508, ptr %41, align 8, !tbaa !11
  %509 = load ptr, ptr %17, align 8, !tbaa !5
  %510 = load i64, ptr %30, align 8, !tbaa !9
  %511 = getelementptr inbounds double, ptr %509, i64 %510
  %512 = load double, ptr %511, align 8, !tbaa !11
  store double %512, ptr %25, align 8, !tbaa !11
  %513 = load double, ptr %25, align 8, !tbaa !11
  %514 = fcmp oge double %513, 0.000000e+00
  br i1 %514, label %515, label %517

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

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

520:                                              ; preds = %517, %515
  %521 = phi double [ %516, %515 ], [ %519, %517 ]
  store double %521, ptr %33, align 8, !tbaa !11
  %522 = load double, ptr %31, align 8, !tbaa !11
  %523 = load double, ptr %33, align 8, !tbaa !11
  %524 = fcmp ogt double %522, %523
  br i1 %524, label %525, label %531

525:                                              ; preds = %520
  %526 = load double, ptr %33, align 8, !tbaa !11
  %527 = load double, ptr %31, align 8, !tbaa !11
  %528 = fdiv double %526, %527
  %529 = load double, ptr %36, align 8, !tbaa !11
  %530 = fmul double %529, %528
  store double %530, ptr %36, align 8, !tbaa !11
  br label %531

531:                                              ; preds = %525, %520
  %532 = load i64, ptr %35, align 8, !tbaa !9
  %533 = add nsw i64 %532, 1
  store i64 %533, ptr %35, align 8, !tbaa !9
  %534 = load i64, ptr %34, align 8, !tbaa !9
  %535 = load i64, ptr %35, align 8, !tbaa !9
  %536 = mul nsw i64 %534, %535
  %537 = load i64, ptr %30, align 8, !tbaa !9
  %538 = add nsw i64 %537, %536
  store i64 %538, ptr %30, align 8, !tbaa !9
  br label %539

539:                                              ; preds = %531
  %540 = load i64, ptr %23, align 8, !tbaa !9
  %541 = load i64, ptr %29, align 8, !tbaa !9
  %542 = add nsw i64 %541, %540
  store i64 %542, ptr %29, align 8, !tbaa !9
  br label %469, !llvm.loop !18

543:                                              ; preds = %482
  %544 = load double, ptr %41, align 8, !tbaa !11
  %545 = load double, ptr %36, align 8, !tbaa !11
  %546 = fcmp ole double %544, %545
  br i1 %546, label %547, label %549

547:                                              ; preds = %543
  %548 = load double, ptr %41, align 8, !tbaa !11
  br label %551

549:                                              ; preds = %543
  %550 = load double, ptr %36, align 8, !tbaa !11
  br label %551

551:                                              ; preds = %549, %547
  %552 = phi double [ %548, %547 ], [ %550, %549 ]
  store double %552, ptr %41, align 8, !tbaa !11
  br label %611

553:                                              ; preds = %446
  store double 1.000000e+00, ptr %25, align 8, !tbaa !11
  %554 = load double, ptr %36, align 8, !tbaa !11
  %555 = load double, ptr %50, align 8, !tbaa !11
  %556 = fcmp oge double %554, %555
  br i1 %556, label %557, label %559

557:                                              ; preds = %553
  %558 = load double, ptr %36, align 8, !tbaa !11
  br label %561

559:                                              ; preds = %553
  %560 = load double, ptr %50, align 8, !tbaa !11
  br label %561

561:                                              ; preds = %559, %557
  %562 = phi double [ %558, %557 ], [ %560, %559 ]
  %563 = fdiv double 1.000000e+00, %562
  store double %563, ptr %26, align 8, !tbaa !11
  %564 = load double, ptr %25, align 8, !tbaa !11
  %565 = load double, ptr %26, align 8, !tbaa !11
  %566 = fcmp ole double %564, %565
  br i1 %566, label %567, label %569

567:                                              ; preds = %561
  %568 = load double, ptr %25, align 8, !tbaa !11
  br label %571

569:                                              ; preds = %561
  %570 = load double, ptr %26, align 8, !tbaa !11
  br label %571

571:                                              ; preds = %569, %567
  %572 = phi double [ %568, %567 ], [ %570, %569 ]
  store double %572, ptr %41, align 8, !tbaa !11
  %573 = load i64, ptr %45, align 8, !tbaa !9
  store i64 %573, ptr %23, align 8, !tbaa !9
  %574 = load i64, ptr %34, align 8, !tbaa !9
  store i64 %574, ptr %22, align 8, !tbaa !9
  %575 = load i64, ptr %49, align 8, !tbaa !9
  store i64 %575, ptr %29, align 8, !tbaa !9
  br label %576

576:                                              ; preds = %606, %571
  %577 = load i64, ptr %22, align 8, !tbaa !9
  %578 = icmp slt i64 %577, 0
  br i1 %578, label %579, label %584

579:                                              ; preds = %576
  %580 = load i64, ptr %29, align 8, !tbaa !9
  %581 = load i64, ptr %23, align 8, !tbaa !9
  %582 = icmp sge i64 %580, %581
  %583 = zext i1 %582 to i32
  br label %589

584:                                              ; preds = %576
  %585 = load i64, ptr %29, align 8, !tbaa !9
  %586 = load i64, ptr %23, align 8, !tbaa !9
  %587 = icmp sle i64 %585, %586
  %588 = zext i1 %587 to i32
  br label %589

589:                                              ; preds = %584, %579
  %590 = phi i32 [ %583, %579 ], [ %588, %584 ]
  %591 = icmp ne i32 %590, 0
  br i1 %591, label %592, label %610

592:                                              ; preds = %589
  %593 = load double, ptr %41, align 8, !tbaa !11
  %594 = load double, ptr %50, align 8, !tbaa !11
  %595 = fcmp ole double %593, %594
  br i1 %595, label %596, label %597

596:                                              ; preds = %592
  br label %612

597:                                              ; preds = %592
  %598 = load ptr, ptr %20, align 8, !tbaa !5
  %599 = load i64, ptr %29, align 8, !tbaa !9
  %600 = getelementptr inbounds double, ptr %598, i64 %599
  %601 = load double, ptr %600, align 8, !tbaa !11
  %602 = fadd double %601, 1.000000e+00
  store double %602, ptr %31, align 8, !tbaa !11
  %603 = load double, ptr %31, align 8, !tbaa !11
  %604 = load double, ptr %41, align 8, !tbaa !11
  %605 = fdiv double %604, %603
  store double %605, ptr %41, align 8, !tbaa !11
  br label %606

606:                                              ; preds = %597
  %607 = load i64, ptr %22, align 8, !tbaa !9
  %608 = load i64, ptr %29, align 8, !tbaa !9
  %609 = add nsw i64 %608, %607
  store i64 %609, ptr %29, align 8, !tbaa !9
  br label %576, !llvm.loop !19

610:                                              ; preds = %589
  br label %611

611:                                              ; preds = %610, %551
  br label %612

612:                                              ; preds = %611, %596, %489, %445
  br label %613

613:                                              ; preds = %612, %432
  %614 = load double, ptr %41, align 8, !tbaa !11
  %615 = load double, ptr %43, align 8, !tbaa !11
  %616 = fmul double %614, %615
  %617 = load double, ptr %50, align 8, !tbaa !11
  %618 = fcmp ogt double %616, %617
  br i1 %618, label %619, label %629

619:                                              ; preds = %613
  %620 = load ptr, ptr %12, align 8, !tbaa !5
  %621 = load ptr, ptr %13, align 8, !tbaa !5
  %622 = load ptr, ptr %14, align 8, !tbaa !5
  %623 = load ptr, ptr %16, align 8, !tbaa !5
  %624 = load ptr, ptr %17, align 8, !tbaa !5
  %625 = getelementptr inbounds double, ptr %624, i64 1
  %626 = load ptr, ptr %18, align 8, !tbaa !5
  %627 = getelementptr inbounds double, ptr %626, i64 1
  %628 = call i32 @f2c_dtpsv(ptr noundef %620, ptr noundef %621, ptr noundef %622, ptr noundef %623, ptr noundef %625, ptr noundef %627, ptr noundef @c__1)
  br label %1411

629:                                              ; preds = %613
  %630 = load double, ptr %40, align 8, !tbaa !11
  %631 = load double, ptr %47, align 8, !tbaa !11
  %632 = fcmp ogt double %630, %631
  br i1 %632, label %633, label %644

633:                                              ; preds = %629
  %634 = load double, ptr %47, align 8, !tbaa !11
  %635 = load double, ptr %40, align 8, !tbaa !11
  %636 = fdiv double %634, %635
  %637 = load ptr, ptr %19, align 8, !tbaa !5
  store double %636, ptr %637, align 8, !tbaa !11
  %638 = load ptr, ptr %16, align 8, !tbaa !5
  %639 = load ptr, ptr %19, align 8, !tbaa !5
  %640 = load ptr, ptr %18, align 8, !tbaa !5
  %641 = getelementptr inbounds double, ptr %640, i64 1
  %642 = call i32 @f2c_dscal(ptr noundef %638, ptr noundef %639, ptr noundef %641, ptr noundef @c__1)
  %643 = load double, ptr %47, align 8, !tbaa !11
  store double %643, ptr %40, align 8, !tbaa !11
  br label %644

644:                                              ; preds = %633, %629
  %645 = load i64, ptr %48, align 8, !tbaa !9
  %646 = icmp ne i64 %645, 0
  br i1 %646, label %647, label %997

647:                                              ; preds = %644
  %648 = load i64, ptr %49, align 8, !tbaa !9
  %649 = load i64, ptr %49, align 8, !tbaa !9
  %650 = add nsw i64 %649, 1
  %651 = mul nsw i64 %648, %650
  %652 = sdiv i64 %651, 2
  store i64 %652, ptr %30, align 8, !tbaa !9
  %653 = load i64, ptr %45, align 8, !tbaa !9
  store i64 %653, ptr %22, align 8, !tbaa !9
  %654 = load i64, ptr %34, align 8, !tbaa !9
  store i64 %654, ptr %23, align 8, !tbaa !9
  %655 = load i64, ptr %49, align 8, !tbaa !9
  store i64 %655, ptr %29, align 8, !tbaa !9
  br label %656

656:                                              ; preds = %992, %647
  %657 = load i64, ptr %23, align 8, !tbaa !9
  %658 = icmp slt i64 %657, 0
  br i1 %658, label %659, label %664

659:                                              ; preds = %656
  %660 = load i64, ptr %29, align 8, !tbaa !9
  %661 = load i64, ptr %22, align 8, !tbaa !9
  %662 = icmp sge i64 %660, %661
  %663 = zext i1 %662 to i32
  br label %669

664:                                              ; preds = %656
  %665 = load i64, ptr %29, align 8, !tbaa !9
  %666 = load i64, ptr %22, align 8, !tbaa !9
  %667 = icmp sle i64 %665, %666
  %668 = zext i1 %667 to i32
  br label %669

669:                                              ; preds = %664, %659
  %670 = phi i32 [ %663, %659 ], [ %668, %664 ]
  %671 = icmp ne i32 %670, 0
  br i1 %671, label %672, label %996

672:                                              ; preds = %669
  %673 = load ptr, ptr %18, align 8, !tbaa !5
  %674 = load i64, ptr %29, align 8, !tbaa !9
  %675 = getelementptr inbounds double, ptr %673, i64 %674
  %676 = load double, ptr %675, align 8, !tbaa !11
  store double %676, ptr %25, align 8, !tbaa !11
  %677 = load double, ptr %25, align 8, !tbaa !11
  %678 = fcmp oge double %677, 0.000000e+00
  br i1 %678, label %679, label %681

679:                                              ; preds = %672
  %680 = load double, ptr %25, align 8, !tbaa !11
  br label %684

681:                                              ; preds = %672
  %682 = load double, ptr %25, align 8, !tbaa !11
  %683 = fneg double %682
  br label %684

684:                                              ; preds = %681, %679
  %685 = phi double [ %680, %679 ], [ %683, %681 ]
  store double %685, ptr %31, align 8, !tbaa !11
  %686 = load i64, ptr %51, align 8, !tbaa !9
  %687 = icmp ne i64 %686, 0
  br i1 %687, label %688, label %695

688:                                              ; preds = %684
  %689 = load ptr, ptr %17, align 8, !tbaa !5
  %690 = load i64, ptr %30, align 8, !tbaa !9
  %691 = getelementptr inbounds double, ptr %689, i64 %690
  %692 = load double, ptr %691, align 8, !tbaa !11
  %693 = load double, ptr %43, align 8, !tbaa !11
  %694 = fmul double %692, %693
  store double %694, ptr %39, align 8, !tbaa !11
  br label %701

695:                                              ; preds = %684
  %696 = load double, ptr %43, align 8, !tbaa !11
  store double %696, ptr %39, align 8, !tbaa !11
  %697 = load double, ptr %43, align 8, !tbaa !11
  %698 = fcmp oeq double %697, 1.000000e+00
  br i1 %698, label %699, label %700

699:                                              ; preds = %695
  br label %838

700:                                              ; preds = %695
  br label %701

701:                                              ; preds = %700, %688
  %702 = load double, ptr %39, align 8, !tbaa !11
  %703 = fcmp oge double %702, 0.000000e+00
  br i1 %703, label %704, label %706

704:                                              ; preds = %701
  %705 = load double, ptr %39, align 8, !tbaa !11
  br label %709

706:                                              ; preds = %701
  %707 = load double, ptr %39, align 8, !tbaa !11
  %708 = fneg double %707
  br label %709

709:                                              ; preds = %706, %704
  %710 = phi double [ %705, %704 ], [ %708, %706 ]
  store double %710, ptr %33, align 8, !tbaa !11
  %711 = load double, ptr %33, align 8, !tbaa !11
  %712 = load double, ptr %50, align 8, !tbaa !11
  %713 = fcmp ogt double %711, %712
  br i1 %713, label %714, label %758

714:                                              ; preds = %709
  %715 = load double, ptr %33, align 8, !tbaa !11
  %716 = fcmp olt double %715, 1.000000e+00
  br i1 %716, label %717, label %738

717:                                              ; preds = %714
  %718 = load double, ptr %31, align 8, !tbaa !11
  %719 = load double, ptr %33, align 8, !tbaa !11
  %720 = load double, ptr %47, align 8, !tbaa !11
  %721 = fmul double %719, %720
  %722 = fcmp ogt double %718, %721
  br i1 %722, label %723, label %737

723:                                              ; preds = %717
  %724 = load double, ptr %31, align 8, !tbaa !11
  %725 = fdiv double 1.000000e+00, %724
  store double %725, ptr %32, align 8, !tbaa !11
  %726 = load ptr, ptr %16, align 8, !tbaa !5
  %727 = load ptr, ptr %18, align 8, !tbaa !5
  %728 = getelementptr inbounds double, ptr %727, i64 1
  %729 = call i32 @f2c_dscal(ptr noundef %726, ptr noundef %32, ptr noundef %728, ptr noundef @c__1)
  %730 = load double, ptr %32, align 8, !tbaa !11
  %731 = load ptr, ptr %19, align 8, !tbaa !5
  %732 = load double, ptr %731, align 8, !tbaa !11
  %733 = fmul double %732, %730
  store double %733, ptr %731, align 8, !tbaa !11
  %734 = load double, ptr %32, align 8, !tbaa !11
  %735 = load double, ptr %40, align 8, !tbaa !11
  %736 = fmul double %735, %734
  store double %736, ptr %40, align 8, !tbaa !11
  br label %737

737:                                              ; preds = %723, %717
  br label %738

738:                                              ; preds = %737, %714
  %739 = load double, ptr %39, align 8, !tbaa !11
  %740 = load ptr, ptr %18, align 8, !tbaa !5
  %741 = load i64, ptr %29, align 8, !tbaa !9
  %742 = getelementptr inbounds double, ptr %740, i64 %741
  %743 = load double, ptr %742, align 8, !tbaa !11
  %744 = fdiv double %743, %739
  store double %744, ptr %742, align 8, !tbaa !11
  %745 = load ptr, ptr %18, align 8, !tbaa !5
  %746 = load i64, ptr %29, align 8, !tbaa !9
  %747 = getelementptr inbounds double, ptr %745, i64 %746
  %748 = load double, ptr %747, align 8, !tbaa !11
  store double %748, ptr %25, align 8, !tbaa !11
  %749 = load double, ptr %25, align 8, !tbaa !11
  %750 = fcmp oge double %749, 0.000000e+00
  br i1 %750, label %751, label %753

751:                                              ; preds = %738
  %752 = load double, ptr %25, align 8, !tbaa !11
  br label %756

753:                                              ; preds = %738
  %754 = load double, ptr %25, align 8, !tbaa !11
  %755 = fneg double %754
  br label %756

756:                                              ; preds = %753, %751
  %757 = phi double [ %752, %751 ], [ %755, %753 ]
  store double %757, ptr %31, align 8, !tbaa !11
  br label %837

758:                                              ; preds = %709
  %759 = load double, ptr %33, align 8, !tbaa !11
  %760 = fcmp ogt double %759, 0.000000e+00
  br i1 %760, label %761, label %817

761:                                              ; preds = %758
  %762 = load double, ptr %31, align 8, !tbaa !11
  %763 = load double, ptr %33, align 8, !tbaa !11
  %764 = load double, ptr %47, align 8, !tbaa !11
  %765 = fmul double %763, %764
  %766 = fcmp ogt double %762, %765
  br i1 %766, label %767, label %797

767:                                              ; preds = %761
  %768 = load double, ptr %33, align 8, !tbaa !11
  %769 = load double, ptr %47, align 8, !tbaa !11
  %770 = fmul double %768, %769
  %771 = load double, ptr %31, align 8, !tbaa !11
  %772 = fdiv double %770, %771
  store double %772, ptr %32, align 8, !tbaa !11
  %773 = load ptr, ptr %20, align 8, !tbaa !5
  %774 = load i64, ptr %29, align 8, !tbaa !9
  %775 = getelementptr inbounds double, ptr %773, i64 %774
  %776 = load double, ptr %775, align 8, !tbaa !11
  %777 = fcmp ogt double %776, 1.000000e+00
  br i1 %777, label %778, label %785

778:                                              ; preds = %767
  %779 = load ptr, ptr %20, align 8, !tbaa !5
  %780 = load i64, ptr %29, align 8, !tbaa !9
  %781 = getelementptr inbounds double, ptr %779, i64 %780
  %782 = load double, ptr %781, align 8, !tbaa !11
  %783 = load double, ptr %32, align 8, !tbaa !11
  %784 = fdiv double %783, %782
  store double %784, ptr %32, align 8, !tbaa !11
  br label %785

785:                                              ; preds = %778, %767
  %786 = load ptr, ptr %16, align 8, !tbaa !5
  %787 = load ptr, ptr %18, align 8, !tbaa !5
  %788 = getelementptr inbounds double, ptr %787, i64 1
  %789 = call i32 @f2c_dscal(ptr noundef %786, ptr noundef %32, ptr noundef %788, ptr noundef @c__1)
  %790 = load double, ptr %32, align 8, !tbaa !11
  %791 = load ptr, ptr %19, align 8, !tbaa !5
  %792 = load double, ptr %791, align 8, !tbaa !11
  %793 = fmul double %792, %790
  store double %793, ptr %791, align 8, !tbaa !11
  %794 = load double, ptr %32, align 8, !tbaa !11
  %795 = load double, ptr %40, align 8, !tbaa !11
  %796 = fmul double %795, %794
  store double %796, ptr %40, align 8, !tbaa !11
  br label %797

797:                                              ; preds = %785, %761
  %798 = load double, ptr %39, align 8, !tbaa !11
  %799 = load ptr, ptr %18, align 8, !tbaa !5
  %800 = load i64, ptr %29, align 8, !tbaa !9
  %801 = getelementptr inbounds double, ptr %799, i64 %800
  %802 = load double, ptr %801, align 8, !tbaa !11
  %803 = fdiv double %802, %798
  store double %803, ptr %801, align 8, !tbaa !11
  %804 = load ptr, ptr %18, align 8, !tbaa !5
  %805 = load i64, ptr %29, align 8, !tbaa !9
  %806 = getelementptr inbounds double, ptr %804, i64 %805
  %807 = load double, ptr %806, align 8, !tbaa !11
  store double %807, ptr %25, align 8, !tbaa !11
  %808 = load double, ptr %25, align 8, !tbaa !11
  %809 = fcmp oge double %808, 0.000000e+00
  br i1 %809, label %810, label %812

810:                                              ; preds = %797
  %811 = load double, ptr %25, align 8, !tbaa !11
  br label %815

812:                                              ; preds = %797
  %813 = load double, ptr %25, align 8, !tbaa !11
  %814 = fneg double %813
  br label %815

815:                                              ; preds = %812, %810
  %816 = phi double [ %811, %810 ], [ %814, %812 ]
  store double %816, ptr %31, align 8, !tbaa !11
  br label %836

817:                                              ; preds = %758
  %818 = load ptr, ptr %16, align 8, !tbaa !5
  %819 = load i64, ptr %818, align 8, !tbaa !9
  store i64 %819, ptr %24, align 8, !tbaa !9
  store i64 1, ptr %28, align 8, !tbaa !9
  br label %820

820:                                              ; preds = %828, %817
  %821 = load i64, ptr %28, align 8, !tbaa !9
  %822 = load i64, ptr %24, align 8, !tbaa !9
  %823 = icmp sle i64 %821, %822
  br i1 %823, label %824, label %831

824:                                              ; preds = %820
  %825 = load ptr, ptr %18, align 8, !tbaa !5
  %826 = load i64, ptr %28, align 8, !tbaa !9
  %827 = getelementptr inbounds double, ptr %825, i64 %826
  store double 0.000000e+00, ptr %827, align 8, !tbaa !11
  br label %828

828:                                              ; preds = %824
  %829 = load i64, ptr %28, align 8, !tbaa !9
  %830 = add nsw i64 %829, 1
  store i64 %830, ptr %28, align 8, !tbaa !9
  br label %820, !llvm.loop !20

831:                                              ; preds = %820
  %832 = load ptr, ptr %18, align 8, !tbaa !5
  %833 = load i64, ptr %29, align 8, !tbaa !9
  %834 = getelementptr inbounds double, ptr %832, i64 %833
  store double 1.000000e+00, ptr %834, align 8, !tbaa !11
  store double 1.000000e+00, ptr %31, align 8, !tbaa !11
  %835 = load ptr, ptr %19, align 8, !tbaa !5
  store double 0.000000e+00, ptr %835, align 8, !tbaa !11
  store double 0.000000e+00, ptr %40, align 8, !tbaa !11
  br label %836

836:                                              ; preds = %831, %815
  br label %837

837:                                              ; preds = %836, %756
  br label %838

838:                                              ; preds = %837, %699
  %839 = load double, ptr %31, align 8, !tbaa !11
  %840 = fcmp ogt double %839, 1.000000e+00
  br i1 %840, label %841, label %866

841:                                              ; preds = %838
  %842 = load double, ptr %31, align 8, !tbaa !11
  %843 = fdiv double 1.000000e+00, %842
  store double %843, ptr %32, align 8, !tbaa !11
  %844 = load ptr, ptr %20, align 8, !tbaa !5
  %845 = load i64, ptr %29, align 8, !tbaa !9
  %846 = getelementptr inbounds double, ptr %844, i64 %845
  %847 = load double, ptr %846, align 8, !tbaa !11
  %848 = load double, ptr %47, align 8, !tbaa !11
  %849 = load double, ptr %40, align 8, !tbaa !11
  %850 = fsub double %848, %849
  %851 = load double, ptr %32, align 8, !tbaa !11
  %852 = fmul double %850, %851
  %853 = fcmp ogt double %847, %852
  br i1 %853, label %854, label %865

854:                                              ; preds = %841
  %855 = load double, ptr %32, align 8, !tbaa !11
  %856 = fmul double %855, 5.000000e-01
  store double %856, ptr %32, align 8, !tbaa !11
  %857 = load ptr, ptr %16, align 8, !tbaa !5
  %858 = load ptr, ptr %18, align 8, !tbaa !5
  %859 = getelementptr inbounds double, ptr %858, i64 1
  %860 = call i32 @f2c_dscal(ptr noundef %857, ptr noundef %32, ptr noundef %859, ptr noundef @c__1)
  %861 = load double, ptr %32, align 8, !tbaa !11
  %862 = load ptr, ptr %19, align 8, !tbaa !5
  %863 = load double, ptr %862, align 8, !tbaa !11
  %864 = fmul double %863, %861
  store double %864, ptr %862, align 8, !tbaa !11
  br label %865

865:                                              ; preds = %854, %841
  br label %886

866:                                              ; preds = %838
  %867 = load double, ptr %31, align 8, !tbaa !11
  %868 = load ptr, ptr %20, align 8, !tbaa !5
  %869 = load i64, ptr %29, align 8, !tbaa !9
  %870 = getelementptr inbounds double, ptr %868, i64 %869
  %871 = load double, ptr %870, align 8, !tbaa !11
  %872 = fmul double %867, %871
  %873 = load double, ptr %47, align 8, !tbaa !11
  %874 = load double, ptr %40, align 8, !tbaa !11
  %875 = fsub double %873, %874
  %876 = fcmp ogt double %872, %875
  br i1 %876, label %877, label %885

877:                                              ; preds = %866
  %878 = load ptr, ptr %16, align 8, !tbaa !5
  %879 = load ptr, ptr %18, align 8, !tbaa !5
  %880 = getelementptr inbounds double, ptr %879, i64 1
  %881 = call i32 @f2c_dscal(ptr noundef %878, ptr noundef @c_b36, ptr noundef %880, ptr noundef @c__1)
  %882 = load ptr, ptr %19, align 8, !tbaa !5
  %883 = load double, ptr %882, align 8, !tbaa !11
  %884 = fmul double %883, 5.000000e-01
  store double %884, ptr %882, align 8, !tbaa !11
  br label %885

885:                                              ; preds = %877, %866
  br label %886

886:                                              ; preds = %885, %865
  %887 = load i64, ptr %46, align 8, !tbaa !9
  %888 = icmp ne i64 %887, 0
  br i1 %888, label %889, label %933

889:                                              ; preds = %886
  %890 = load i64, ptr %29, align 8, !tbaa !9
  %891 = icmp sgt i64 %890, 1
  br i1 %891, label %892, label %929

892:                                              ; preds = %889
  %893 = load i64, ptr %29, align 8, !tbaa !9
  %894 = sub nsw i64 %893, 1
  store i64 %894, ptr %24, align 8, !tbaa !9
  %895 = load ptr, ptr %18, align 8, !tbaa !5
  %896 = load i64, ptr %29, align 8, !tbaa !9
  %897 = getelementptr inbounds double, ptr %895, i64 %896
  %898 = load double, ptr %897, align 8, !tbaa !11
  %899 = fneg double %898
  %900 = load double, ptr %43, align 8, !tbaa !11
  %901 = fmul double %899, %900
  store double %901, ptr %25, align 8, !tbaa !11
  %902 = load ptr, ptr %17, align 8, !tbaa !5
  %903 = load i64, ptr %30, align 8, !tbaa !9
  %904 = load i64, ptr %29, align 8, !tbaa !9
  %905 = sub nsw i64 %903, %904
  %906 = add nsw i64 %905, 1
  %907 = getelementptr inbounds double, ptr %902, i64 %906
  %908 = load ptr, ptr %18, align 8, !tbaa !5
  %909 = getelementptr inbounds double, ptr %908, i64 1
  %910 = call i32 @f2c_daxpy(ptr noundef %24, ptr noundef %25, ptr noundef %907, ptr noundef @c__1, ptr noundef %909, ptr noundef @c__1)
  %911 = load i64, ptr %29, align 8, !tbaa !9
  %912 = sub nsw i64 %911, 1
  store i64 %912, ptr %24, align 8, !tbaa !9
  %913 = load ptr, ptr %18, align 8, !tbaa !5
  %914 = getelementptr inbounds double, ptr %913, i64 1
  %915 = call i64 @f2c_idamax(ptr noundef %24, ptr noundef %914, ptr noundef @c__1)
  store i64 %915, ptr %28, align 8, !tbaa !9
  %916 = load ptr, ptr %18, align 8, !tbaa !5
  %917 = load i64, ptr %28, align 8, !tbaa !9
  %918 = getelementptr inbounds double, ptr %916, i64 %917
  %919 = load double, ptr %918, align 8, !tbaa !11
  store double %919, ptr %25, align 8, !tbaa !11
  %920 = load double, ptr %25, align 8, !tbaa !11
  %921 = fcmp oge double %920, 0.000000e+00
  br i1 %921, label %922, label %924

922:                                              ; preds = %892
  %923 = load double, ptr %25, align 8, !tbaa !11
  br label %927

924:                                              ; preds = %892
  %925 = load double, ptr %25, align 8, !tbaa !11
  %926 = fneg double %925
  br label %927

927:                                              ; preds = %924, %922
  %928 = phi double [ %923, %922 ], [ %926, %924 ]
  store double %928, ptr %40, align 8, !tbaa !11
  br label %929

929:                                              ; preds = %927, %889
  %930 = load i64, ptr %29, align 8, !tbaa !9
  %931 = load i64, ptr %30, align 8, !tbaa !9
  %932 = sub nsw i64 %931, %930
  store i64 %932, ptr %30, align 8, !tbaa !9
  br label %991

933:                                              ; preds = %886
  %934 = load i64, ptr %29, align 8, !tbaa !9
  %935 = load ptr, ptr %16, align 8, !tbaa !5
  %936 = load i64, ptr %935, align 8, !tbaa !9
  %937 = icmp slt i64 %934, %936
  br i1 %937, label %938, label %983

938:                                              ; preds = %933
  %939 = load ptr, ptr %16, align 8, !tbaa !5
  %940 = load i64, ptr %939, align 8, !tbaa !9
  %941 = load i64, ptr %29, align 8, !tbaa !9
  %942 = sub nsw i64 %940, %941
  store i64 %942, ptr %24, align 8, !tbaa !9
  %943 = load ptr, ptr %18, align 8, !tbaa !5
  %944 = load i64, ptr %29, align 8, !tbaa !9
  %945 = getelementptr inbounds double, ptr %943, i64 %944
  %946 = load double, ptr %945, align 8, !tbaa !11
  %947 = fneg double %946
  %948 = load double, ptr %43, align 8, !tbaa !11
  %949 = fmul double %947, %948
  store double %949, ptr %25, align 8, !tbaa !11
  %950 = load ptr, ptr %17, align 8, !tbaa !5
  %951 = load i64, ptr %30, align 8, !tbaa !9
  %952 = add nsw i64 %951, 1
  %953 = getelementptr inbounds double, ptr %950, i64 %952
  %954 = load ptr, ptr %18, align 8, !tbaa !5
  %955 = load i64, ptr %29, align 8, !tbaa !9
  %956 = add nsw i64 %955, 1
  %957 = getelementptr inbounds double, ptr %954, i64 %956
  %958 = call i32 @f2c_daxpy(ptr noundef %24, ptr noundef %25, ptr noundef %953, ptr noundef @c__1, ptr noundef %957, ptr noundef @c__1)
  %959 = load ptr, ptr %16, align 8, !tbaa !5
  %960 = load i64, ptr %959, align 8, !tbaa !9
  %961 = load i64, ptr %29, align 8, !tbaa !9
  %962 = sub nsw i64 %960, %961
  store i64 %962, ptr %24, align 8, !tbaa !9
  %963 = load i64, ptr %29, align 8, !tbaa !9
  %964 = load ptr, ptr %18, align 8, !tbaa !5
  %965 = load i64, ptr %29, align 8, !tbaa !9
  %966 = add nsw i64 %965, 1
  %967 = getelementptr inbounds double, ptr %964, i64 %966
  %968 = call i64 @f2c_idamax(ptr noundef %24, ptr noundef %967, ptr noundef @c__1)
  %969 = add nsw i64 %963, %968
  store i64 %969, ptr %28, align 8, !tbaa !9
  %970 = load ptr, ptr %18, align 8, !tbaa !5
  %971 = load i64, ptr %28, align 8, !tbaa !9
  %972 = getelementptr inbounds double, ptr %970, i64 %971
  %973 = load double, ptr %972, align 8, !tbaa !11
  store double %973, ptr %25, align 8, !tbaa !11
  %974 = load double, ptr %25, align 8, !tbaa !11
  %975 = fcmp oge double %974, 0.000000e+00
  br i1 %975, label %976, label %978

976:                                              ; preds = %938
  %977 = load double, ptr %25, align 8, !tbaa !11
  br label %981

978:                                              ; preds = %938
  %979 = load double, ptr %25, align 8, !tbaa !11
  %980 = fneg double %979
  br label %981

981:                                              ; preds = %978, %976
  %982 = phi double [ %977, %976 ], [ %980, %978 ]
  store double %982, ptr %40, align 8, !tbaa !11
  br label %983

983:                                              ; preds = %981, %933
  %984 = load i64, ptr %30, align 8, !tbaa !9
  %985 = load ptr, ptr %16, align 8, !tbaa !5
  %986 = load i64, ptr %985, align 8, !tbaa !9
  %987 = add nsw i64 %984, %986
  %988 = load i64, ptr %29, align 8, !tbaa !9
  %989 = sub nsw i64 %987, %988
  %990 = add nsw i64 %989, 1
  store i64 %990, ptr %30, align 8, !tbaa !9
  br label %991

991:                                              ; preds = %983, %929
  br label %992

992:                                              ; preds = %991
  %993 = load i64, ptr %23, align 8, !tbaa !9
  %994 = load i64, ptr %29, align 8, !tbaa !9
  %995 = add nsw i64 %994, %993
  store i64 %995, ptr %29, align 8, !tbaa !9
  br label %656, !llvm.loop !21

996:                                              ; preds = %669
  br label %1406

997:                                              ; preds = %644
  %998 = load i64, ptr %49, align 8, !tbaa !9
  %999 = load i64, ptr %49, align 8, !tbaa !9
  %1000 = add nsw i64 %999, 1
  %1001 = mul nsw i64 %998, %1000
  %1002 = sdiv i64 %1001, 2
  store i64 %1002, ptr %30, align 8, !tbaa !9
  store i64 1, ptr %35, align 8, !tbaa !9
  %1003 = load i64, ptr %45, align 8, !tbaa !9
  store i64 %1003, ptr %23, align 8, !tbaa !9
  %1004 = load i64, ptr %34, align 8, !tbaa !9
  store i64 %1004, ptr %22, align 8, !tbaa !9
  %1005 = load i64, ptr %49, align 8, !tbaa !9
  store i64 %1005, ptr %29, align 8, !tbaa !9
  br label %1006

1006:                                             ; preds = %1401, %997
  %1007 = load i64, ptr %22, align 8, !tbaa !9
  %1008 = icmp slt i64 %1007, 0
  br i1 %1008, label %1009, label %1014

1009:                                             ; preds = %1006
  %1010 = load i64, ptr %29, align 8, !tbaa !9
  %1011 = load i64, ptr %23, align 8, !tbaa !9
  %1012 = icmp sge i64 %1010, %1011
  %1013 = zext i1 %1012 to i32
  br label %1019

1014:                                             ; preds = %1006
  %1015 = load i64, ptr %29, align 8, !tbaa !9
  %1016 = load i64, ptr %23, align 8, !tbaa !9
  %1017 = icmp sle i64 %1015, %1016
  %1018 = zext i1 %1017 to i32
  br label %1019

1019:                                             ; preds = %1014, %1009
  %1020 = phi i32 [ %1013, %1009 ], [ %1018, %1014 ]
  %1021 = icmp ne i32 %1020, 0
  br i1 %1021, label %1022, label %1405

1022:                                             ; preds = %1019
  %1023 = load ptr, ptr %18, align 8, !tbaa !5
  %1024 = load i64, ptr %29, align 8, !tbaa !9
  %1025 = getelementptr inbounds double, ptr %1023, i64 %1024
  %1026 = load double, ptr %1025, align 8, !tbaa !11
  store double %1026, ptr %25, align 8, !tbaa !11
  %1027 = load double, ptr %25, align 8, !tbaa !11
  %1028 = fcmp oge double %1027, 0.000000e+00
  br i1 %1028, label %1029, label %1031

1029:                                             ; preds = %1022
  %1030 = load double, ptr %25, align 8, !tbaa !11
  br label %1034

1031:                                             ; preds = %1022
  %1032 = load double, ptr %25, align 8, !tbaa !11
  %1033 = fneg double %1032
  br label %1034

1034:                                             ; preds = %1031, %1029
  %1035 = phi double [ %1030, %1029 ], [ %1033, %1031 ]
  store double %1035, ptr %31, align 8, !tbaa !11
  %1036 = load double, ptr %43, align 8, !tbaa !11
  store double %1036, ptr %44, align 8, !tbaa !11
  %1037 = load double, ptr %40, align 8, !tbaa !11
  %1038 = fcmp oge double %1037, 1.000000e+00
  br i1 %1038, label %1039, label %1041

1039:                                             ; preds = %1034
  %1040 = load double, ptr %40, align 8, !tbaa !11
  br label %1042

1041:                                             ; preds = %1034
  br label %1042

1042:                                             ; preds = %1041, %1039
  %1043 = phi double [ %1040, %1039 ], [ 1.000000e+00, %1041 ]
  %1044 = fdiv double 1.000000e+00, %1043
  store double %1044, ptr %32, align 8, !tbaa !11
  %1045 = load ptr, ptr %20, align 8, !tbaa !5
  %1046 = load i64, ptr %29, align 8, !tbaa !9
  %1047 = getelementptr inbounds double, ptr %1045, i64 %1046
  %1048 = load double, ptr %1047, align 8, !tbaa !11
  %1049 = load double, ptr %47, align 8, !tbaa !11
  %1050 = load double, ptr %31, align 8, !tbaa !11
  %1051 = fsub double %1049, %1050
  %1052 = load double, ptr %32, align 8, !tbaa !11
  %1053 = fmul double %1051, %1052
  %1054 = fcmp ogt double %1048, %1053
  br i1 %1054, label %1055, label %1113

1055:                                             ; preds = %1042
  %1056 = load double, ptr %32, align 8, !tbaa !11
  %1057 = fmul double %1056, 5.000000e-01
  store double %1057, ptr %32, align 8, !tbaa !11
  %1058 = load i64, ptr %51, align 8, !tbaa !9
  %1059 = icmp ne i64 %1058, 0
  br i1 %1059, label %1060, label %1067

1060:                                             ; preds = %1055
  %1061 = load ptr, ptr %17, align 8, !tbaa !5
  %1062 = load i64, ptr %30, align 8, !tbaa !9
  %1063 = getelementptr inbounds double, ptr %1061, i64 %1062
  %1064 = load double, ptr %1063, align 8, !tbaa !11
  %1065 = load double, ptr %43, align 8, !tbaa !11
  %1066 = fmul double %1064, %1065
  store double %1066, ptr %39, align 8, !tbaa !11
  br label %1069

1067:                                             ; preds = %1055
  %1068 = load double, ptr %43, align 8, !tbaa !11
  store double %1068, ptr %39, align 8, !tbaa !11
  br label %1069

1069:                                             ; preds = %1067, %1060
  %1070 = load double, ptr %39, align 8, !tbaa !11
  %1071 = fcmp oge double %1070, 0.000000e+00
  br i1 %1071, label %1072, label %1074

1072:                                             ; preds = %1069
  %1073 = load double, ptr %39, align 8, !tbaa !11
  br label %1077

1074:                                             ; preds = %1069
  %1075 = load double, ptr %39, align 8, !tbaa !11
  %1076 = fneg double %1075
  br label %1077

1077:                                             ; preds = %1074, %1072
  %1078 = phi double [ %1073, %1072 ], [ %1076, %1074 ]
  store double %1078, ptr %33, align 8, !tbaa !11
  %1079 = load double, ptr %33, align 8, !tbaa !11
  %1080 = fcmp ogt double %1079, 1.000000e+00
  br i1 %1080, label %1081, label %1097

1081:                                             ; preds = %1077
  store double 1.000000e+00, ptr %25, align 8, !tbaa !11
  %1082 = load double, ptr %32, align 8, !tbaa !11
  %1083 = load double, ptr %33, align 8, !tbaa !11
  %1084 = fmul double %1082, %1083
  store double %1084, ptr %26, align 8, !tbaa !11
  %1085 = load double, ptr %25, align 8, !tbaa !11
  %1086 = load double, ptr %26, align 8, !tbaa !11
  %1087 = fcmp ole double %1085, %1086
  br i1 %1087, label %1088, label %1090

1088:                                             ; preds = %1081
  %1089 = load double, ptr %25, align 8, !tbaa !11
  br label %1092

1090:                                             ; preds = %1081
  %1091 = load double, ptr %26, align 8, !tbaa !11
  br label %1092

1092:                                             ; preds = %1090, %1088
  %1093 = phi double [ %1089, %1088 ], [ %1091, %1090 ]
  store double %1093, ptr %32, align 8, !tbaa !11
  %1094 = load double, ptr %39, align 8, !tbaa !11
  %1095 = load double, ptr %44, align 8, !tbaa !11
  %1096 = fdiv double %1095, %1094
  store double %1096, ptr %44, align 8, !tbaa !11
  br label %1097

1097:                                             ; preds = %1092, %1077
  %1098 = load double, ptr %32, align 8, !tbaa !11
  %1099 = fcmp olt double %1098, 1.000000e+00
  br i1 %1099, label %1100, label %1112

1100:                                             ; preds = %1097
  %1101 = load ptr, ptr %16, align 8, !tbaa !5
  %1102 = load ptr, ptr %18, align 8, !tbaa !5
  %1103 = getelementptr inbounds double, ptr %1102, i64 1
  %1104 = call i32 @f2c_dscal(ptr noundef %1101, ptr noundef %32, ptr noundef %1103, ptr noundef @c__1)
  %1105 = load double, ptr %32, align 8, !tbaa !11
  %1106 = load ptr, ptr %19, align 8, !tbaa !5
  %1107 = load double, ptr %1106, align 8, !tbaa !11
  %1108 = fmul double %1107, %1105
  store double %1108, ptr %1106, align 8, !tbaa !11
  %1109 = load double, ptr %32, align 8, !tbaa !11
  %1110 = load double, ptr %40, align 8, !tbaa !11
  %1111 = fmul double %1110, %1109
  store double %1111, ptr %40, align 8, !tbaa !11
  br label %1112

1112:                                             ; preds = %1100, %1097
  br label %1113

1113:                                             ; preds = %1112, %1042
  store double 0.000000e+00, ptr %42, align 8, !tbaa !11
  %1114 = load double, ptr %44, align 8, !tbaa !11
  %1115 = fcmp oeq double %1114, 1.000000e+00
  br i1 %1115, label %1116, label %1152

1116:                                             ; preds = %1113
  %1117 = load i64, ptr %46, align 8, !tbaa !9
  %1118 = icmp ne i64 %1117, 0
  br i1 %1118, label %1119, label %1131

1119:                                             ; preds = %1116
  %1120 = load i64, ptr %29, align 8, !tbaa !9
  %1121 = sub nsw i64 %1120, 1
  store i64 %1121, ptr %24, align 8, !tbaa !9
  %1122 = load ptr, ptr %17, align 8, !tbaa !5
  %1123 = load i64, ptr %30, align 8, !tbaa !9
  %1124 = load i64, ptr %29, align 8, !tbaa !9
  %1125 = sub nsw i64 %1123, %1124
  %1126 = add nsw i64 %1125, 1
  %1127 = getelementptr inbounds double, ptr %1122, i64 %1126
  %1128 = load ptr, ptr %18, align 8, !tbaa !5
  %1129 = getelementptr inbounds double, ptr %1128, i64 1
  %1130 = call double @f2c_ddot(ptr noundef %24, ptr noundef %1127, ptr noundef @c__1, ptr noundef %1129, ptr noundef @c__1)
  store double %1130, ptr %42, align 8, !tbaa !11
  br label %1151

1131:                                             ; preds = %1116
  %1132 = load i64, ptr %29, align 8, !tbaa !9
  %1133 = load ptr, ptr %16, align 8, !tbaa !5
  %1134 = load i64, ptr %1133, align 8, !tbaa !9
  %1135 = icmp slt i64 %1132, %1134
  br i1 %1135, label %1136, label %1150

1136:                                             ; preds = %1131
  %1137 = load ptr, ptr %16, align 8, !tbaa !5
  %1138 = load i64, ptr %1137, align 8, !tbaa !9
  %1139 = load i64, ptr %29, align 8, !tbaa !9
  %1140 = sub nsw i64 %1138, %1139
  store i64 %1140, ptr %24, align 8, !tbaa !9
  %1141 = load ptr, ptr %17, align 8, !tbaa !5
  %1142 = load i64, ptr %30, align 8, !tbaa !9
  %1143 = add nsw i64 %1142, 1
  %1144 = getelementptr inbounds double, ptr %1141, i64 %1143
  %1145 = load ptr, ptr %18, align 8, !tbaa !5
  %1146 = load i64, ptr %29, align 8, !tbaa !9
  %1147 = add nsw i64 %1146, 1
  %1148 = getelementptr inbounds double, ptr %1145, i64 %1147
  %1149 = call double @f2c_ddot(ptr noundef %24, ptr noundef %1144, ptr noundef @c__1, ptr noundef %1148, ptr noundef @c__1)
  store double %1149, ptr %42, align 8, !tbaa !11
  br label %1150

1150:                                             ; preds = %1136, %1131
  br label %1151

1151:                                             ; preds = %1150, %1119
  br label %1220

1152:                                             ; preds = %1113
  %1153 = load i64, ptr %46, align 8, !tbaa !9
  %1154 = icmp ne i64 %1153, 0
  br i1 %1154, label %1155, label %1183

1155:                                             ; preds = %1152
  %1156 = load i64, ptr %29, align 8, !tbaa !9
  %1157 = sub nsw i64 %1156, 1
  store i64 %1157, ptr %24, align 8, !tbaa !9
  store i64 1, ptr %28, align 8, !tbaa !9
  br label %1158

1158:                                             ; preds = %1179, %1155
  %1159 = load i64, ptr %28, align 8, !tbaa !9
  %1160 = load i64, ptr %24, align 8, !tbaa !9
  %1161 = icmp sle i64 %1159, %1160
  br i1 %1161, label %1162, label %1182

1162:                                             ; preds = %1158
  %1163 = load ptr, ptr %17, align 8, !tbaa !5
  %1164 = load i64, ptr %30, align 8, !tbaa !9
  %1165 = load i64, ptr %29, align 8, !tbaa !9
  %1166 = sub nsw i64 %1164, %1165
  %1167 = load i64, ptr %28, align 8, !tbaa !9
  %1168 = add nsw i64 %1166, %1167
  %1169 = getelementptr inbounds double, ptr %1163, i64 %1168
  %1170 = load double, ptr %1169, align 8, !tbaa !11
  %1171 = load double, ptr %44, align 8, !tbaa !11
  %1172 = fmul double %1170, %1171
  %1173 = load ptr, ptr %18, align 8, !tbaa !5
  %1174 = load i64, ptr %28, align 8, !tbaa !9
  %1175 = getelementptr inbounds double, ptr %1173, i64 %1174
  %1176 = load double, ptr %1175, align 8, !tbaa !11
  %1177 = load double, ptr %42, align 8, !tbaa !11
  %1178 = call double @llvm.fmuladd.f64(double %1172, double %1176, double %1177)
  store double %1178, ptr %42, align 8, !tbaa !11
  br label %1179

1179:                                             ; preds = %1162
  %1180 = load i64, ptr %28, align 8, !tbaa !9
  %1181 = add nsw i64 %1180, 1
  store i64 %1181, ptr %28, align 8, !tbaa !9
  br label %1158, !llvm.loop !22

1182:                                             ; preds = %1158
  br label %1219

1183:                                             ; preds = %1152
  %1184 = load i64, ptr %29, align 8, !tbaa !9
  %1185 = load ptr, ptr %16, align 8, !tbaa !5
  %1186 = load i64, ptr %1185, align 8, !tbaa !9
  %1187 = icmp slt i64 %1184, %1186
  br i1 %1187, label %1188, label %1218

1188:                                             ; preds = %1183
  %1189 = load ptr, ptr %16, align 8, !tbaa !5
  %1190 = load i64, ptr %1189, align 8, !tbaa !9
  %1191 = load i64, ptr %29, align 8, !tbaa !9
  %1192 = sub nsw i64 %1190, %1191
  store i64 %1192, ptr %24, align 8, !tbaa !9
  store i64 1, ptr %28, align 8, !tbaa !9
  br label %1193

1193:                                             ; preds = %1214, %1188
  %1194 = load i64, ptr %28, align 8, !tbaa !9
  %1195 = load i64, ptr %24, align 8, !tbaa !9
  %1196 = icmp sle i64 %1194, %1195
  br i1 %1196, label %1197, label %1217

1197:                                             ; preds = %1193
  %1198 = load ptr, ptr %17, align 8, !tbaa !5
  %1199 = load i64, ptr %30, align 8, !tbaa !9
  %1200 = load i64, ptr %28, align 8, !tbaa !9
  %1201 = add nsw i64 %1199, %1200
  %1202 = getelementptr inbounds double, ptr %1198, i64 %1201
  %1203 = load double, ptr %1202, align 8, !tbaa !11
  %1204 = load double, ptr %44, align 8, !tbaa !11
  %1205 = fmul double %1203, %1204
  %1206 = load ptr, ptr %18, align 8, !tbaa !5
  %1207 = load i64, ptr %29, align 8, !tbaa !9
  %1208 = load i64, ptr %28, align 8, !tbaa !9
  %1209 = add nsw i64 %1207, %1208
  %1210 = getelementptr inbounds double, ptr %1206, i64 %1209
  %1211 = load double, ptr %1210, align 8, !tbaa !11
  %1212 = load double, ptr %42, align 8, !tbaa !11
  %1213 = call double @llvm.fmuladd.f64(double %1205, double %1211, double %1212)
  store double %1213, ptr %42, align 8, !tbaa !11
  br label %1214

1214:                                             ; preds = %1197
  %1215 = load i64, ptr %28, align 8, !tbaa !9
  %1216 = add nsw i64 %1215, 1
  store i64 %1216, ptr %28, align 8, !tbaa !9
  br label %1193, !llvm.loop !23

1217:                                             ; preds = %1193
  br label %1218

1218:                                             ; preds = %1217, %1183
  br label %1219

1219:                                             ; preds = %1218, %1182
  br label %1220

1220:                                             ; preds = %1219, %1151
  %1221 = load double, ptr %44, align 8, !tbaa !11
  %1222 = load double, ptr %43, align 8, !tbaa !11
  %1223 = fcmp oeq double %1221, %1222
  br i1 %1223, label %1224, label %1358

1224:                                             ; preds = %1220
  %1225 = load double, ptr %42, align 8, !tbaa !11
  %1226 = load ptr, ptr %18, align 8, !tbaa !5
  %1227 = load i64, ptr %29, align 8, !tbaa !9
  %1228 = getelementptr inbounds double, ptr %1226, i64 %1227
  %1229 = load double, ptr %1228, align 8, !tbaa !11
  %1230 = fsub double %1229, %1225
  store double %1230, ptr %1228, align 8, !tbaa !11
  %1231 = load ptr, ptr %18, align 8, !tbaa !5
  %1232 = load i64, ptr %29, align 8, !tbaa !9
  %1233 = getelementptr inbounds double, ptr %1231, i64 %1232
  %1234 = load double, ptr %1233, align 8, !tbaa !11
  store double %1234, ptr %25, align 8, !tbaa !11
  %1235 = load double, ptr %25, align 8, !tbaa !11
  %1236 = fcmp oge double %1235, 0.000000e+00
  br i1 %1236, label %1237, label %1239

1237:                                             ; preds = %1224
  %1238 = load double, ptr %25, align 8, !tbaa !11
  br label %1242

1239:                                             ; preds = %1224
  %1240 = load double, ptr %25, align 8, !tbaa !11
  %1241 = fneg double %1240
  br label %1242

1242:                                             ; preds = %1239, %1237
  %1243 = phi double [ %1238, %1237 ], [ %1241, %1239 ]
  store double %1243, ptr %31, align 8, !tbaa !11
  %1244 = load i64, ptr %51, align 8, !tbaa !9
  %1245 = icmp ne i64 %1244, 0
  br i1 %1245, label %1246, label %1253

1246:                                             ; preds = %1242
  %1247 = load ptr, ptr %17, align 8, !tbaa !5
  %1248 = load i64, ptr %30, align 8, !tbaa !9
  %1249 = getelementptr inbounds double, ptr %1247, i64 %1248
  %1250 = load double, ptr %1249, align 8, !tbaa !11
  %1251 = load double, ptr %43, align 8, !tbaa !11
  %1252 = fmul double %1250, %1251
  store double %1252, ptr %39, align 8, !tbaa !11
  br label %1259

1253:                                             ; preds = %1242
  %1254 = load double, ptr %43, align 8, !tbaa !11
  store double %1254, ptr %39, align 8, !tbaa !11
  %1255 = load double, ptr %43, align 8, !tbaa !11
  %1256 = fcmp oeq double %1255, 1.000000e+00
  br i1 %1256, label %1257, label %1258

1257:                                             ; preds = %1253
  br label %1357

1258:                                             ; preds = %1253
  br label %1259

1259:                                             ; preds = %1258, %1246
  %1260 = load double, ptr %39, align 8, !tbaa !11
  %1261 = fcmp oge double %1260, 0.000000e+00
  br i1 %1261, label %1262, label %1264

1262:                                             ; preds = %1259
  %1263 = load double, ptr %39, align 8, !tbaa !11
  br label %1267

1264:                                             ; preds = %1259
  %1265 = load double, ptr %39, align 8, !tbaa !11
  %1266 = fneg double %1265
  br label %1267

1267:                                             ; preds = %1264, %1262
  %1268 = phi double [ %1263, %1262 ], [ %1266, %1264 ]
  store double %1268, ptr %33, align 8, !tbaa !11
  %1269 = load double, ptr %33, align 8, !tbaa !11
  %1270 = load double, ptr %50, align 8, !tbaa !11
  %1271 = fcmp ogt double %1269, %1270
  br i1 %1271, label %1272, label %1303

1272:                                             ; preds = %1267
  %1273 = load double, ptr %33, align 8, !tbaa !11
  %1274 = fcmp olt double %1273, 1.000000e+00
  br i1 %1274, label %1275, label %1296

1275:                                             ; preds = %1272
  %1276 = load double, ptr %31, align 8, !tbaa !11
  %1277 = load double, ptr %33, align 8, !tbaa !11
  %1278 = load double, ptr %47, align 8, !tbaa !11
  %1279 = fmul double %1277, %1278
  %1280 = fcmp ogt double %1276, %1279
  br i1 %1280, label %1281, label %1295

1281:                                             ; preds = %1275
  %1282 = load double, ptr %31, align 8, !tbaa !11
  %1283 = fdiv double 1.000000e+00, %1282
  store double %1283, ptr %32, align 8, !tbaa !11
  %1284 = load ptr, ptr %16, align 8, !tbaa !5
  %1285 = load ptr, ptr %18, align 8, !tbaa !5
  %1286 = getelementptr inbounds double, ptr %1285, i64 1
  %1287 = call i32 @f2c_dscal(ptr noundef %1284, ptr noundef %32, ptr noundef %1286, ptr noundef @c__1)
  %1288 = load double, ptr %32, align 8, !tbaa !11
  %1289 = load ptr, ptr %19, align 8, !tbaa !5
  %1290 = load double, ptr %1289, align 8, !tbaa !11
  %1291 = fmul double %1290, %1288
  store double %1291, ptr %1289, align 8, !tbaa !11
  %1292 = load double, ptr %32, align 8, !tbaa !11
  %1293 = load double, ptr %40, align 8, !tbaa !11
  %1294 = fmul double %1293, %1292
  store double %1294, ptr %40, align 8, !tbaa !11
  br label %1295

1295:                                             ; preds = %1281, %1275
  br label %1296

1296:                                             ; preds = %1295, %1272
  %1297 = load double, ptr %39, align 8, !tbaa !11
  %1298 = load ptr, ptr %18, align 8, !tbaa !5
  %1299 = load i64, ptr %29, align 8, !tbaa !9
  %1300 = getelementptr inbounds double, ptr %1298, i64 %1299
  %1301 = load double, ptr %1300, align 8, !tbaa !11
  %1302 = fdiv double %1301, %1297
  store double %1302, ptr %1300, align 8, !tbaa !11
  br label %1356

1303:                                             ; preds = %1267
  %1304 = load double, ptr %33, align 8, !tbaa !11
  %1305 = fcmp ogt double %1304, 0.000000e+00
  br i1 %1305, label %1306, label %1336

1306:                                             ; preds = %1303
  %1307 = load double, ptr %31, align 8, !tbaa !11
  %1308 = load double, ptr %33, align 8, !tbaa !11
  %1309 = load double, ptr %47, align 8, !tbaa !11
  %1310 = fmul double %1308, %1309
  %1311 = fcmp ogt double %1307, %1310
  br i1 %1311, label %1312, label %1329

1312:                                             ; preds = %1306
  %1313 = load double, ptr %33, align 8, !tbaa !11
  %1314 = load double, ptr %47, align 8, !tbaa !11
  %1315 = fmul double %1313, %1314
  %1316 = load double, ptr %31, align 8, !tbaa !11
  %1317 = fdiv double %1315, %1316
  store double %1317, ptr %32, align 8, !tbaa !11
  %1318 = load ptr, ptr %16, align 8, !tbaa !5
  %1319 = load ptr, ptr %18, align 8, !tbaa !5
  %1320 = getelementptr inbounds double, ptr %1319, i64 1
  %1321 = call i32 @f2c_dscal(ptr noundef %1318, ptr noundef %32, ptr noundef %1320, ptr noundef @c__1)
  %1322 = load double, ptr %32, align 8, !tbaa !11
  %1323 = load ptr, ptr %19, align 8, !tbaa !5
  %1324 = load double, ptr %1323, align 8, !tbaa !11
  %1325 = fmul double %1324, %1322
  store double %1325, ptr %1323, align 8, !tbaa !11
  %1326 = load double, ptr %32, align 8, !tbaa !11
  %1327 = load double, ptr %40, align 8, !tbaa !11
  %1328 = fmul double %1327, %1326
  store double %1328, ptr %40, align 8, !tbaa !11
  br label %1329

1329:                                             ; preds = %1312, %1306
  %1330 = load double, ptr %39, align 8, !tbaa !11
  %1331 = load ptr, ptr %18, align 8, !tbaa !5
  %1332 = load i64, ptr %29, align 8, !tbaa !9
  %1333 = getelementptr inbounds double, ptr %1331, i64 %1332
  %1334 = load double, ptr %1333, align 8, !tbaa !11
  %1335 = fdiv double %1334, %1330
  store double %1335, ptr %1333, align 8, !tbaa !11
  br label %1355

1336:                                             ; preds = %1303
  %1337 = load ptr, ptr %16, align 8, !tbaa !5
  %1338 = load i64, ptr %1337, align 8, !tbaa !9
  store i64 %1338, ptr %24, align 8, !tbaa !9
  store i64 1, ptr %28, align 8, !tbaa !9
  br label %1339

1339:                                             ; preds = %1347, %1336
  %1340 = load i64, ptr %28, align 8, !tbaa !9
  %1341 = load i64, ptr %24, align 8, !tbaa !9
  %1342 = icmp sle i64 %1340, %1341
  br i1 %1342, label %1343, label %1350

1343:                                             ; preds = %1339
  %1344 = load ptr, ptr %18, align 8, !tbaa !5
  %1345 = load i64, ptr %28, align 8, !tbaa !9
  %1346 = getelementptr inbounds double, ptr %1344, i64 %1345
  store double 0.000000e+00, ptr %1346, align 8, !tbaa !11
  br label %1347

1347:                                             ; preds = %1343
  %1348 = load i64, ptr %28, align 8, !tbaa !9
  %1349 = add nsw i64 %1348, 1
  store i64 %1349, ptr %28, align 8, !tbaa !9
  br label %1339, !llvm.loop !24

1350:                                             ; preds = %1339
  %1351 = load ptr, ptr %18, align 8, !tbaa !5
  %1352 = load i64, ptr %29, align 8, !tbaa !9
  %1353 = getelementptr inbounds double, ptr %1351, i64 %1352
  store double 1.000000e+00, ptr %1353, align 8, !tbaa !11
  %1354 = load ptr, ptr %19, align 8, !tbaa !5
  store double 0.000000e+00, ptr %1354, align 8, !tbaa !11
  store double 0.000000e+00, ptr %40, align 8, !tbaa !11
  br label %1355

1355:                                             ; preds = %1350, %1329
  br label %1356

1356:                                             ; preds = %1355, %1296
  br label %1357

1357:                                             ; preds = %1356, %1257
  br label %1370

1358:                                             ; preds = %1220
  %1359 = load ptr, ptr %18, align 8, !tbaa !5
  %1360 = load i64, ptr %29, align 8, !tbaa !9
  %1361 = getelementptr inbounds double, ptr %1359, i64 %1360
  %1362 = load double, ptr %1361, align 8, !tbaa !11
  %1363 = load double, ptr %39, align 8, !tbaa !11
  %1364 = fdiv double %1362, %1363
  %1365 = load double, ptr %42, align 8, !tbaa !11
  %1366 = fsub double %1364, %1365
  %1367 = load ptr, ptr %18, align 8, !tbaa !5
  %1368 = load i64, ptr %29, align 8, !tbaa !9
  %1369 = getelementptr inbounds double, ptr %1367, i64 %1368
  store double %1366, ptr %1369, align 8, !tbaa !11
  br label %1370

1370:                                             ; preds = %1358, %1357
  %1371 = load double, ptr %40, align 8, !tbaa !11
  store double %1371, ptr %26, align 8, !tbaa !11
  %1372 = load ptr, ptr %18, align 8, !tbaa !5
  %1373 = load i64, ptr %29, align 8, !tbaa !9
  %1374 = getelementptr inbounds double, ptr %1372, i64 %1373
  %1375 = load double, ptr %1374, align 8, !tbaa !11
  store double %1375, ptr %25, align 8, !tbaa !11
  %1376 = load double, ptr %25, align 8, !tbaa !11
  %1377 = fcmp oge double %1376, 0.000000e+00
  br i1 %1377, label %1378, label %1380

1378:                                             ; preds = %1370
  %1379 = load double, ptr %25, align 8, !tbaa !11
  br label %1383

1380:                                             ; preds = %1370
  %1381 = load double, ptr %25, align 8, !tbaa !11
  %1382 = fneg double %1381
  br label %1383

1383:                                             ; preds = %1380, %1378
  %1384 = phi double [ %1379, %1378 ], [ %1382, %1380 ]
  store double %1384, ptr %27, align 8, !tbaa !11
  %1385 = load double, ptr %26, align 8, !tbaa !11
  %1386 = load double, ptr %27, align 8, !tbaa !11
  %1387 = fcmp oge double %1385, %1386
  br i1 %1387, label %1388, label %1390

1388:                                             ; preds = %1383
  %1389 = load double, ptr %26, align 8, !tbaa !11
  br label %1392

1390:                                             ; preds = %1383
  %1391 = load double, ptr %27, align 8, !tbaa !11
  br label %1392

1392:                                             ; preds = %1390, %1388
  %1393 = phi double [ %1389, %1388 ], [ %1391, %1390 ]
  store double %1393, ptr %40, align 8, !tbaa !11
  %1394 = load i64, ptr %35, align 8, !tbaa !9
  %1395 = add nsw i64 %1394, 1
  store i64 %1395, ptr %35, align 8, !tbaa !9
  %1396 = load i64, ptr %34, align 8, !tbaa !9
  %1397 = load i64, ptr %35, align 8, !tbaa !9
  %1398 = mul nsw i64 %1396, %1397
  %1399 = load i64, ptr %30, align 8, !tbaa !9
  %1400 = add nsw i64 %1399, %1398
  store i64 %1400, ptr %30, align 8, !tbaa !9
  br label %1401

1401:                                             ; preds = %1392
  %1402 = load i64, ptr %22, align 8, !tbaa !9
  %1403 = load i64, ptr %29, align 8, !tbaa !9
  %1404 = add nsw i64 %1403, %1402
  store i64 %1404, ptr %29, align 8, !tbaa !9
  br label %1006, !llvm.loop !25

1405:                                             ; preds = %1019
  br label %1406

1406:                                             ; preds = %1405, %996
  %1407 = load double, ptr %43, align 8, !tbaa !11
  %1408 = load ptr, ptr %19, align 8, !tbaa !5
  %1409 = load double, ptr %1408, align 8, !tbaa !11
  %1410 = fdiv double %1409, %1407
  store double %1410, ptr %1408, align 8, !tbaa !11
  br label %1411

1411:                                             ; preds = %1406, %619
  %1412 = load double, ptr %43, align 8, !tbaa !11
  %1413 = fcmp une double %1412, 1.000000e+00
  br i1 %1413, label %1414, label %1421

1414:                                             ; preds = %1411
  %1415 = load double, ptr %43, align 8, !tbaa !11
  %1416 = fdiv double 1.000000e+00, %1415
  store double %1416, ptr %25, align 8, !tbaa !11
  %1417 = load ptr, ptr %16, align 8, !tbaa !5
  %1418 = load ptr, ptr %20, align 8, !tbaa !5
  %1419 = getelementptr inbounds double, ptr %1418, i64 1
  %1420 = call i32 @f2c_dscal(ptr noundef %1417, ptr noundef %25, ptr noundef %1419, ptr noundef @c__1)
  br label %1421

1421:                                             ; preds = %1414, %1411
  store i32 0, ptr %11, align 4
  store i32 1, ptr %52, align 4
  br label %1422

1422:                                             ; preds = %1421, %129, %120
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #4
  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 8, ptr %27) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #4
  %1423 = load i32, ptr %11, align 4
  ret i32 %1423
}

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

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

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

declare double @dlamch_(ptr noundef) #2

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

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

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

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

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

declare double @f2c_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 = !{!"long", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = distinct !{!13, !14}
!14 = !{!"llvm.loop.mustprogress"}
!15 = distinct !{!15, !14}
!16 = distinct !{!16, !14}
!17 = distinct !{!17, !14}
!18 = distinct !{!18, !14}
!19 = distinct !{!19, !14}
!20 = distinct !{!20, !14}
!21 = distinct !{!21, !14}
!22 = distinct !{!22, !14}
!23 = distinct !{!23, !14}
!24 = distinct !{!24, !14}
!25 = distinct !{!25, !14}


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

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [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 i64, align 8
@c_b36 = external hidden global double, align 8

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @dlatps_(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 nocapture noundef %9) local_unnamed_addr #0 {
  %11 = alloca i64, align 8
  %12 = alloca i64, align 8
  %13 = alloca i64, align 8
  %14 = alloca double, align 8
  %15 = alloca double, align 8
  %16 = alloca double, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #5
  %17 = getelementptr inbounds i8, ptr %8, i64 -8
  %18 = getelementptr inbounds i8, ptr %6, i64 -8
  %19 = getelementptr inbounds i8, ptr %5, i64 -8
  store i64 0, ptr %9, align 8, !tbaa !5
  %20 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #5
  %21 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #5
  %22 = tail call i64 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.1) #5
  %.not.not.not = icmp eq i64 %20, 0
  br i1 %.not.not.not, label %23, label %25

23:                                               ; preds = %10
  %24 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #5
  %.not539 = icmp eq i64 %24, 0
  br i1 %.not539, label %.thread.sink.split, label %25

25:                                               ; preds = %23, %10
  %.not540 = icmp eq i64 %21, 0
  br i1 %.not540, label %26, label %30

26:                                               ; preds = %25
  %27 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.3) #5
  %.not541 = icmp eq i64 %27, 0
  br i1 %.not541, label %28, label %30

28:                                               ; preds = %26
  %29 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.4) #5
  %.not542 = icmp eq i64 %29, 0
  br i1 %.not542, label %.thread.sink.split, label %30

30:                                               ; preds = %28, %26, %25
  %.not543 = icmp eq i64 %22, 0
  br i1 %.not543, label %31, label %33

31:                                               ; preds = %30
  %32 = tail call i64 @lsame_(ptr noundef %2, ptr noundef nonnull @.str) #5
  %.not544 = icmp eq i64 %32, 0
  br i1 %.not544, label %.thread.sink.split, label %33

33:                                               ; preds = %31, %30
  %34 = tail call i64 @lsame_(ptr noundef %3, ptr noundef nonnull @.str.5) #5
  %.not545 = icmp eq i64 %34, 0
  br i1 %.not545, label %35, label %37

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

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

40:                                               ; preds = %37
  %.pr = load i64, ptr %9, align 8, !tbaa !5
  %.not547 = icmp eq i64 %.pr, 0
  br i1 %.not547, label %44, label %.thread

.thread.sink.split:                               ; preds = %37, %35, %31, %28, %23
  %.sink = phi i64 [ -1, %23 ], [ -2, %28 ], [ -3, %31 ], [ -4, %35 ], [ -5, %37 ]
  store i64 %.sink, ptr %9, align 8, !tbaa !5
  br label %.thread

.thread:                                          ; preds = %.thread.sink.split, %40
  %41 = phi i64 [ %.pr, %40 ], [ %.sink, %.thread.sink.split ]
  %42 = sub nsw i64 0, %41
  store i64 %42, ptr %11, align 8, !tbaa !5
  %43 = call i32 @xerbla_(ptr noundef nonnull @.str.6, ptr noundef nonnull %11) #5
  br label %551

44:                                               ; preds = %40
  %45 = icmp eq i64 %38, 0
  br i1 %45, label %551, label %46

46:                                               ; preds = %44
  %47 = tail call double @dlamch_(ptr noundef nonnull @.str.7) #5
  %48 = tail call double @dlamch_(ptr noundef nonnull @.str.8) #5
  %49 = fdiv double %47, %48
  %50 = fdiv double 1.000000e+00, %49
  store double 1.000000e+00, ptr %7, align 8, !tbaa !9
  %51 = tail call i64 @lsame_(ptr noundef %3, ptr noundef nonnull @.str.1) #5
  %.not548 = icmp eq i64 %51, 0
  br i1 %.not548, label %.loopexit588, label %52

52:                                               ; preds = %46
  %53 = load i64, ptr %4, align 8, !tbaa !5
  br i1 %.not.not.not, label %61, label %54

54:                                               ; preds = %52
  store i64 %53, ptr %11, align 8, !tbaa !5
  %.not550591 = icmp slt i64 %53, 1
  br i1 %.not550591, label %.loopexit588, label %.lr.ph

.lr.ph:                                           ; preds = %54, %.lr.ph
  %.0486593 = phi i64 [ %60, %.lr.ph ], [ 1, %54 ]
  %.0504592 = phi i64 [ %59, %.lr.ph ], [ 1, %54 ]
  %55 = add nsw i64 %.0486593, -1
  store i64 %55, ptr %12, align 8, !tbaa !5
  %56 = getelementptr inbounds double, ptr %19, i64 %.0504592
  %57 = call double @f2c_dasum(ptr noundef nonnull %12, ptr noundef nonnull %56, ptr noundef nonnull @c__1) #5
  %58 = getelementptr inbounds double, ptr %17, i64 %.0486593
  store double %57, ptr %58, align 8, !tbaa !9
  %59 = add nuw nsw i64 %.0486593, %.0504592
  %60 = add nuw nsw i64 %.0486593, 1
  %.not550.not = icmp slt i64 %.0486593, %53
  br i1 %.not550.not, label %.lr.ph, label %.loopexit588, !llvm.loop !11

61:                                               ; preds = %52
  %62 = add nsw i64 %53, -1
  store i64 %62, ptr %11, align 8, !tbaa !5
  %.not549594 = icmp slt i64 %53, 2
  br i1 %.not549594, label %._crit_edge, label %.lr.ph597

.lr.ph597:                                        ; preds = %61, %.lr.ph597
  %63 = phi i64 [ %68, %.lr.ph597 ], [ %53, %61 ]
  %.1487596 = phi i64 [ %72, %.lr.ph597 ], [ 1, %61 ]
  %.1505595 = phi i64 [ %71, %.lr.ph597 ], [ 1, %61 ]
  %64 = sub nsw i64 %63, %.1487596
  store i64 %64, ptr %12, align 8, !tbaa !5
  %65 = getelementptr double, ptr %5, i64 %.1505595
  %66 = call double @f2c_dasum(ptr noundef nonnull %12, ptr noundef %65, ptr noundef nonnull @c__1) #5
  %67 = getelementptr inbounds double, ptr %17, i64 %.1487596
  store double %66, ptr %67, align 8, !tbaa !9
  %68 = load i64, ptr %4, align 8, !tbaa !5
  %69 = add i64 %.1505595, 1
  %70 = sub i64 %69, %.1487596
  %71 = add i64 %70, %68
  %72 = add nuw nsw i64 %.1487596, 1
  %.not549.not = icmp slt i64 %.1487596, %62
  br i1 %.not549.not, label %.lr.ph597, label %._crit_edge, !llvm.loop !13

._crit_edge:                                      ; preds = %.lr.ph597, %61
  %73 = phi i64 [ %53, %61 ], [ %68, %.lr.ph597 ]
  %74 = getelementptr inbounds double, ptr %17, i64 %73
  store double 0.000000e+00, ptr %74, align 8, !tbaa !9
  br label %.loopexit588

.loopexit588:                                     ; preds = %.lr.ph, %54, %._crit_edge, %46
  %75 = call i64 @f2c_idamax(ptr noundef nonnull %4, ptr noundef %8, ptr noundef nonnull @c__1) #5
  %76 = getelementptr inbounds double, ptr %17, i64 %75
  %77 = load double, ptr %76, align 8, !tbaa !9
  %78 = fcmp ugt double %77, %50
  br i1 %78, label %80, label %79

79:                                               ; preds = %.loopexit588
  store double 1.000000e+00, ptr %16, align 8, !tbaa !9
  br label %84

80:                                               ; preds = %.loopexit588
  %81 = fmul double %49, %77
  %82 = fdiv double 1.000000e+00, %81
  store double %82, ptr %16, align 8, !tbaa !9
  %83 = call i32 @f2c_dscal(ptr noundef nonnull %4, ptr noundef nonnull %16, ptr noundef nonnull %8, ptr noundef nonnull @c__1) #5
  br label %84

84:                                               ; preds = %80, %79
  %85 = call i64 @f2c_idamax(ptr noundef nonnull %4, ptr noundef %6, ptr noundef nonnull @c__1) #5
  %86 = getelementptr inbounds double, ptr %18, i64 %85
  %87 = load double, ptr %86, align 8, !tbaa !9
  store double %87, ptr %14, align 8, !tbaa !9
  %88 = fcmp oge double %87, 0.000000e+00
  %89 = fneg double %87
  %90 = select i1 %88, double %87, double %89
  %91 = load i64, ptr %4, align 8, !tbaa !5
  %92 = load double, ptr %16, align 8, !tbaa !9
  %93 = fcmp une double %92, 1.000000e+00
  br i1 %.not540, label %147, label %94

94:                                               ; preds = %84
  %. = select i1 %.not.not.not, i64 1, i64 -1
  %.700 = select i1 %.not.not.not, i64 %91, i64 1
  %.701 = select i1 %.not.not.not, i64 1, i64 %91
  br i1 %93, label %.loopexit584, label %95

95:                                               ; preds = %94
  br i1 %.not543, label %129, label %96

96:                                               ; preds = %95
  %97 = fcmp oge double %90, %49
  %98 = select i1 %97, double %90, double %49
  %99 = fdiv double 1.000000e+00, %98
  store i64 %., ptr %12, align 8, !tbaa !5
  %100 = icmp sge i64 %.701, %.700
  %101 = icmp sle i64 %.701, %.700
  %.in556598 = select i1 %.not.not.not, i1 %101, i1 %100
  br i1 %.in556598, label %.lr.ph605.preheader, label %.loopexit584

.lr.ph605.preheader:                              ; preds = %96
  %102 = add nsw i64 %.701, 1
  %103 = mul nsw i64 %102, %.701
  %104 = sdiv i64 %103, 2
  br label %.lr.ph605

.lr.ph605:                                        ; preds = %.lr.ph605.preheader, %106
  %.0467603 = phi double [ %.1468, %106 ], [ %99, %.lr.ph605.preheader ]
  %.2488602 = phi i64 [ %126, %106 ], [ %.701, %.lr.ph605.preheader ]
  %.0494601 = phi double [ %116, %106 ], [ %99, %.lr.ph605.preheader ]
  %.0497600 = phi i64 [ %125, %106 ], [ %91, %.lr.ph605.preheader ]
  %.2506599 = phi i64 [ %124, %106 ], [ %104, %.lr.ph605.preheader ]
  %105 = fcmp ugt double %.0467603, %49
  br i1 %105, label %106, label %.loopexit584

106:                                              ; preds = %.lr.ph605
  %107 = getelementptr inbounds double, ptr %19, i64 %.2506599
  %108 = load double, ptr %107, align 8, !tbaa !9
  %109 = fcmp oge double %108, 0.000000e+00
  %110 = fneg double %108
  %111 = select i1 %109, double %108, double %110
  store double %.0494601, ptr %14, align 8, !tbaa !9
  %112 = fcmp oge double %111, 1.000000e+00
  %113 = select i1 %112, double 1.000000e+00, double %111
  %114 = fmul double %.0467603, %113
  %115 = fcmp ole double %.0494601, %114
  %116 = select i1 %115, double %.0494601, double %114
  %117 = getelementptr inbounds double, ptr %17, i64 %.2488602
  %118 = load double, ptr %117, align 8, !tbaa !9
  %119 = fadd double %111, %118
  %120 = fcmp ult double %119, %49
  %121 = fdiv double %111, %119
  %122 = fmul double %.0467603, %121
  %.1468 = select i1 %120, double 0.000000e+00, double %122
  %123 = mul nsw i64 %.0497600, %.
  %124 = add nsw i64 %123, %.2506599
  %125 = add nsw i64 %.0497600, -1
  %126 = add nsw i64 %.2488602, %.
  %127 = icmp sge i64 %126, %.700
  %128 = icmp sle i64 %126, %.700
  %.in556 = select i1 %.not.not.not, i1 %128, i1 %127
  br i1 %.in556, label %.lr.ph605, label %.loopexit584, !llvm.loop !14

129:                                              ; preds = %95
  store double 1.000000e+00, ptr %14, align 8, !tbaa !9
  %130 = fcmp oge double %90, %49
  %131 = select i1 %130, double %90, double %49
  %132 = fdiv double 1.000000e+00, %131
  %133 = fcmp oge double %132, 1.000000e+00
  %134 = select i1 %133, double 1.000000e+00, double %132
  store i64 %.700, ptr %12, align 8, !tbaa !5
  %135 = icmp sge i64 %.701, %.700
  %136 = icmp sle i64 %.701, %.700
  %.in555608 = select i1 %.not.not.not, i1 %136, i1 %135
  %137 = fcmp ugt double %134, %49
  %or.cond609 = select i1 %.in555608, i1 %137, i1 false
  br i1 %or.cond609, label %.lr.ph613, label %.loopexit584

.lr.ph613:                                        ; preds = %129, %.lr.ph613
  %.2469611 = phi double [ %142, %.lr.ph613 ], [ %134, %129 ]
  %.3489610 = phi i64 [ %143, %.lr.ph613 ], [ %.701, %129 ]
  %138 = getelementptr inbounds double, ptr %17, i64 %.3489610
  %139 = load double, ptr %138, align 8, !tbaa !9
  %140 = fadd double %139, 1.000000e+00
  %141 = fdiv double 1.000000e+00, %140
  %142 = fmul double %.2469611, %141
  %143 = add nsw i64 %.3489610, %.
  %144 = icmp sge i64 %143, %.700
  %145 = icmp sle i64 %143, %.700
  %.in555 = select i1 %.not.not.not, i1 %145, i1 %144
  %146 = fcmp ugt double %142, %49
  %or.cond = select i1 %.in555, i1 %146, i1 false
  br i1 %or.cond, label %.lr.ph613, label %.loopexit584, !llvm.loop !15

147:                                              ; preds = %84
  %.702 = select i1 %.not.not.not, i64 -1, i64 1
  %.703 = select i1 %.not.not.not, i64 1, i64 %91
  %.704 = select i1 %.not.not.not, i64 %91, i64 1
  br i1 %93, label %.loopexit584, label %148

148:                                              ; preds = %147
  br i1 %.not543, label %182, label %149

149:                                              ; preds = %148
  %150 = fcmp oge double %90, %49
  %151 = select i1 %150, double %90, double %49
  %152 = fdiv double 1.000000e+00, %151
  store i64 %.703, ptr %11, align 8, !tbaa !5
  store i64 %.702, ptr %12, align 8, !tbaa !5
  %153 = icmp sge i64 %.704, %.703
  %154 = icmp sle i64 %.704, %.703
  %.in553615 = select i1 %.not.not.not, i1 %153, i1 %154
  br i1 %.in553615, label %.lr.ph622.preheader, label %._crit_edge623

.lr.ph622.preheader:                              ; preds = %149
  %155 = add nsw i64 %.704, 1
  %156 = mul nsw i64 %155, %.704
  %157 = sdiv i64 %156, 2
  br label %.lr.ph622

.lr.ph622:                                        ; preds = %.lr.ph622.preheader, %159
  %.3620 = phi double [ %165, %159 ], [ %152, %.lr.ph622.preheader ]
  %.4490619 = phi i64 [ %177, %159 ], [ %.704, %.lr.ph622.preheader ]
  %.1495618 = phi double [ %.2496, %159 ], [ %152, %.lr.ph622.preheader ]
  %.1498617 = phi i64 [ %174, %159 ], [ 1, %.lr.ph622.preheader ]
  %.3507616 = phi i64 [ %176, %159 ], [ %157, %.lr.ph622.preheader ]
  %158 = fcmp ugt double %.3620, %49
  br i1 %158, label %159, label %.loopexit584

159:                                              ; preds = %.lr.ph622
  %160 = getelementptr inbounds double, ptr %17, i64 %.4490619
  %161 = load double, ptr %160, align 8, !tbaa !9
  %162 = fadd double %161, 1.000000e+00
  %163 = fdiv double %.1495618, %162
  %164 = fcmp ole double %.3620, %163
  %165 = select i1 %164, double %.3620, double %163
  %166 = getelementptr inbounds double, ptr %19, i64 %.3507616
  %167 = load double, ptr %166, align 8, !tbaa !9
  store double %167, ptr %14, align 8, !tbaa !9
  %168 = fcmp oge double %167, 0.000000e+00
  %169 = fneg double %167
  %170 = select i1 %168, double %167, double %169
  %171 = fcmp ogt double %162, %170
  %172 = fdiv double %170, %162
  %173 = fmul double %.1495618, %172
  %.2496 = select i1 %171, double %173, double %.1495618
  %174 = add nuw nsw i64 %.1498617, 1
  %175 = mul nsw i64 %174, %.702
  %176 = add nsw i64 %175, %.3507616
  %177 = add nsw i64 %.4490619, %.702
  %178 = icmp sge i64 %177, %.703
  %179 = icmp sle i64 %177, %.703
  %.in553 = select i1 %.not.not.not, i1 %178, i1 %179
  br i1 %.in553, label %.lr.ph622, label %._crit_edge623, !llvm.loop !16

._crit_edge623:                                   ; preds = %159, %149
  %.1495.lcssa = phi double [ %152, %149 ], [ %.2496, %159 ]
  %.3.lcssa = phi double [ %152, %149 ], [ %165, %159 ]
  %180 = fcmp ole double %.3.lcssa, %.1495.lcssa
  %181 = select i1 %180, double %.3.lcssa, double %.1495.lcssa
  br label %.loopexit584

182:                                              ; preds = %148
  store double 1.000000e+00, ptr %14, align 8, !tbaa !9
  %183 = fcmp oge double %90, %49
  %184 = select i1 %183, double %90, double %49
  %185 = fdiv double 1.000000e+00, %184
  %186 = fcmp oge double %185, 1.000000e+00
  %187 = select i1 %186, double 1.000000e+00, double %185
  store i64 %.703, ptr %12, align 8, !tbaa !5
  %188 = icmp sge i64 %.704, %.703
  %189 = icmp sle i64 %.704, %.703
  %.in626 = select i1 %.not.not.not, i1 %188, i1 %189
  %190 = fcmp ugt double %187, %49
  %or.cond566627 = select i1 %.in626, i1 %190, i1 false
  br i1 %or.cond566627, label %.lr.ph631, label %.loopexit584

.lr.ph631:                                        ; preds = %182, %.lr.ph631
  %.4629 = phi double [ %194, %.lr.ph631 ], [ %187, %182 ]
  %.5491628 = phi i64 [ %195, %.lr.ph631 ], [ %.704, %182 ]
  %191 = getelementptr inbounds double, ptr %17, i64 %.5491628
  %192 = load double, ptr %191, align 8, !tbaa !9
  %193 = fadd double %192, 1.000000e+00
  %194 = fdiv double %.4629, %193
  %195 = add nsw i64 %.5491628, %.702
  %196 = icmp sge i64 %195, %.703
  %197 = icmp sle i64 %195, %.703
  %.in = select i1 %.not.not.not, i1 %196, i1 %197
  %198 = fcmp ugt double %194, %49
  %or.cond566 = select i1 %.in, i1 %198, i1 false
  br i1 %or.cond566, label %.lr.ph631, label %.loopexit584, !llvm.loop !17

.loopexit584:                                     ; preds = %.lr.ph605, %106, %.lr.ph613, %.lr.ph622, %.lr.ph631, %96, %129, %182, %147, %94, %._crit_edge623
  %199 = phi double [ 1.000000e+00, %._crit_edge623 ], [ %92, %94 ], [ %92, %147 ], [ 1.000000e+00, %182 ], [ 1.000000e+00, %129 ], [ 1.000000e+00, %96 ], [ 1.000000e+00, %.lr.ph631 ], [ 1.000000e+00, %.lr.ph622 ], [ 1.000000e+00, %.lr.ph613 ], [ 1.000000e+00, %106 ], [ 1.000000e+00, %.lr.ph605 ]
  %200 = phi i64 [ %.702, %._crit_edge623 ], [ %., %94 ], [ %.702, %147 ], [ %.702, %182 ], [ %., %129 ], [ %., %96 ], [ %.702, %.lr.ph631 ], [ %.702, %.lr.ph622 ], [ %., %.lr.ph613 ], [ %., %106 ], [ %., %.lr.ph605 ]
  %.5 = phi double [ %181, %._crit_edge623 ], [ 0.000000e+00, %94 ], [ 0.000000e+00, %147 ], [ %187, %182 ], [ %134, %129 ], [ %99, %96 ], [ %194, %.lr.ph631 ], [ %.3620, %.lr.ph622 ], [ %142, %.lr.ph613 ], [ %.0467603, %.lr.ph605 ], [ %116, %106 ]
  %201 = phi i64 [ %.703, %._crit_edge623 ], [ %.700, %94 ], [ %.703, %147 ], [ %.703, %182 ], [ %.700, %129 ], [ %.700, %96 ], [ %.703, %.lr.ph631 ], [ %.703, %.lr.ph622 ], [ %.700, %.lr.ph613 ], [ %.700, %106 ], [ %.700, %.lr.ph605 ]
  %.2 = phi i64 [ %.704, %._crit_edge623 ], [ %.701, %94 ], [ %.704, %147 ], [ %.704, %182 ], [ %.701, %129 ], [ %.701, %96 ], [ %.704, %.lr.ph631 ], [ %.704, %.lr.ph622 ], [ %.701, %.lr.ph613 ], [ %.701, %106 ], [ %.701, %.lr.ph605 ]
  %202 = fmul double %.5, %199
  %203 = fcmp ogt double %202, %49
  br i1 %203, label %204, label %206

204:                                              ; preds = %.loopexit584
  %205 = call i32 @f2c_dtpsv(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef nonnull %4, ptr noundef %5, ptr noundef %6, ptr noundef nonnull @c__1) #5
  %.pr580 = load double, ptr %16, align 8, !tbaa !9
  br label %545

206:                                              ; preds = %.loopexit584
  %207 = fcmp ogt double %90, %50
  br i1 %207, label %208, label %211

208:                                              ; preds = %206
  %209 = fdiv double %50, %90
  store double %209, ptr %7, align 8, !tbaa !9
  %210 = call i32 @f2c_dscal(ptr noundef nonnull %4, ptr noundef nonnull %7, ptr noundef %6, ptr noundef nonnull @c__1) #5
  br label %211

211:                                              ; preds = %208, %206
  %.0470 = phi double [ %50, %208 ], [ %90, %206 ]
  %212 = icmp slt i64 %200, 0
  %213 = icmp sge i64 %.2, %201
  %214 = icmp sle i64 %.2, %201
  %.in557661 = select i1 %212, i1 %213, i1 %214
  br i1 %.not540, label %356, label %215

215:                                              ; preds = %211
  store i64 %200, ptr %12, align 8, !tbaa !5
  br i1 %.in557661, label %.lr.ph643, label %.loopexit582

.lr.ph643:                                        ; preds = %215
  %216 = add nsw i64 %.2, 1
  %217 = mul nsw i64 %216, %.2
  %218 = sdiv i64 %217, 2
  br label %219

219:                                              ; preds = %.lr.ph643, %350
  %.1471641 = phi double [ %.0470, %.lr.ph643 ], [ %.7, %350 ]
  %.6492639 = phi i64 [ %.2, %.lr.ph643 ], [ %352, %350 ]
  %.4508638 = phi i64 [ %218, %.lr.ph643 ], [ %.5509, %350 ]
  %220 = getelementptr inbounds double, ptr %18, i64 %.6492639
  %221 = load double, ptr %220, align 8, !tbaa !9
  store double %221, ptr %14, align 8, !tbaa !9
  %222 = fcmp oge double %221, 0.000000e+00
  %223 = fneg double %221
  %224 = select i1 %222, double %221, double %223
  br i1 %.not543, label %230, label %225

225:                                              ; preds = %219
  %226 = getelementptr inbounds double, ptr %19, i64 %.4508638
  %227 = load double, ptr %226, align 8, !tbaa !9
  %228 = load double, ptr %16, align 8, !tbaa !9
  %229 = fmul double %227, %228
  br label %233

230:                                              ; preds = %219
  %231 = load double, ptr %16, align 8, !tbaa !9
  %232 = fcmp oeq double %231, 1.000000e+00
  br i1 %232, label %282, label %233

233:                                              ; preds = %230, %225
  %.0476 = phi double [ %229, %225 ], [ %231, %230 ]
  %234 = fcmp oge double %.0476, 0.000000e+00
  %235 = fneg double %.0476
  %236 = select i1 %234, double %.0476, double %235
  %237 = fcmp ogt double %236, %49
  br i1 %237, label %238, label %255

238:                                              ; preds = %233
  %239 = fcmp olt double %236, 1.000000e+00
  %240 = fmul double %50, %236
  %241 = fcmp ogt double %224, %240
  %or.cond568 = select i1 %239, i1 %241, i1 false
  br i1 %or.cond568, label %242, label %249

242:                                              ; preds = %238
  %243 = fdiv double 1.000000e+00, %224
  store double %243, ptr %15, align 8, !tbaa !9
  %244 = call i32 @f2c_dscal(ptr noundef nonnull %4, ptr noundef nonnull %15, ptr noundef nonnull %6, ptr noundef nonnull @c__1) #5
  %245 = load double, ptr %15, align 8, !tbaa !9
  %246 = load double, ptr %7, align 8, !tbaa !9
  %247 = fmul double %245, %246
  store double %247, ptr %7, align 8, !tbaa !9
  %248 = fmul double %.1471641, %245
  %.pre682 = load double, ptr %220, align 8, !tbaa !9
  br label %249

249:                                              ; preds = %242, %238
  %250 = phi double [ %.pre682, %242 ], [ %221, %238 ]
  %.2472 = phi double [ %248, %242 ], [ %.1471641, %238 ]
  %251 = fdiv double %250, %.0476
  store double %251, ptr %220, align 8, !tbaa !9
  store double %251, ptr %14, align 8, !tbaa !9
  %252 = fcmp oge double %251, 0.000000e+00
  %253 = fneg double %251
  %254 = select i1 %252, double %251, double %253
  br label %282

255:                                              ; preds = %233
  %256 = fcmp ogt double %236, 0.000000e+00
  br i1 %256, label %257, label %279

257:                                              ; preds = %255
  %258 = fmul double %50, %236
  %259 = fcmp ogt double %224, %258
  br i1 %259, label %260, label %273

260:                                              ; preds = %257
  %261 = fdiv double %258, %224
  store double %261, ptr %15, align 8, !tbaa !9
  %262 = getelementptr inbounds double, ptr %17, i64 %.6492639
  %263 = load double, ptr %262, align 8, !tbaa !9
  %264 = fcmp ogt double %263, 1.000000e+00
  br i1 %264, label %265, label %267

265:                                              ; preds = %260
  %266 = fdiv double %261, %263
  store double %266, ptr %15, align 8, !tbaa !9
  br label %267

267:                                              ; preds = %265, %260
  %268 = call i32 @f2c_dscal(ptr noundef nonnull %4, ptr noundef nonnull %15, ptr noundef nonnull %6, ptr noundef nonnull @c__1) #5
  %269 = load double, ptr %15, align 8, !tbaa !9
  %270 = load double, ptr %7, align 8, !tbaa !9
  %271 = fmul double %269, %270
  store double %271, ptr %7, align 8, !tbaa !9
  %272 = fmul double %.1471641, %269
  %.pre = load double, ptr %220, align 8, !tbaa !9
  br label %273

273:                                              ; preds = %267, %257
  %274 = phi double [ %.pre, %267 ], [ %221, %257 ]
  %.3473 = phi double [ %272, %267 ], [ %.1471641, %257 ]
  %275 = fdiv double %274, %.0476
  store double %275, ptr %220, align 8, !tbaa !9
  store double %275, ptr %14, align 8, !tbaa !9
  %276 = fcmp oge double %275, 0.000000e+00
  %277 = fneg double %275
  %278 = select i1 %276, double %275, double %277
  br label %282

279:                                              ; preds = %255
  %280 = load i64, ptr %4, align 8, !tbaa !5
  store i64 %280, ptr %13, align 8, !tbaa !5
  %.not565633 = icmp slt i64 %280, 1
  br i1 %.not565633, label %.thread572, label %.lr.ph636.preheader

.lr.ph636.preheader:                              ; preds = %279
  %281 = shl nuw i64 %280, 3
  call void @llvm.memset.p0.i64(ptr nonnull align 8 %6, i8 0, i64 %281, i1 false), !tbaa !9
  br label %.thread572

.thread572:                                       ; preds = %.lr.ph636.preheader, %279
  store double 1.000000e+00, ptr %220, align 8, !tbaa !9
  store double 0.000000e+00, ptr %7, align 8, !tbaa !9
  br label %297

282:                                              ; preds = %249, %273, %230
  %.0503 = phi double [ %254, %249 ], [ %278, %273 ], [ %224, %230 ]
  %.4474 = phi double [ %.2472, %249 ], [ %.3473, %273 ], [ %.1471641, %230 ]
  %283 = fcmp ogt double %.0503, 1.000000e+00
  br i1 %283, label %284, label %297

284:                                              ; preds = %282
  %285 = fdiv double 1.000000e+00, %.0503
  store double %285, ptr %15, align 8, !tbaa !9
  %286 = getelementptr inbounds double, ptr %17, i64 %.6492639
  %287 = load double, ptr %286, align 8, !tbaa !9
  %288 = fsub double %50, %.4474
  %289 = fmul double %285, %288
  %290 = fcmp ogt double %287, %289
  br i1 %290, label %291, label %307

291:                                              ; preds = %284
  %292 = fmul double %285, 5.000000e-01
  store double %292, ptr %15, align 8, !tbaa !9
  %293 = call i32 @f2c_dscal(ptr noundef nonnull %4, ptr noundef nonnull %15, ptr noundef nonnull %6, ptr noundef nonnull @c__1) #5
  %294 = load double, ptr %15, align 8, !tbaa !9
  %295 = load double, ptr %7, align 8, !tbaa !9
  %296 = fmul double %294, %295
  br label %.sink.split

297:                                              ; preds = %.thread572, %282
  %.4474577 = phi double [ 0.000000e+00, %.thread572 ], [ %.4474, %282 ]
  %.0503575 = phi double [ 1.000000e+00, %.thread572 ], [ %.0503, %282 ]
  %298 = getelementptr inbounds double, ptr %17, i64 %.6492639
  %299 = load double, ptr %298, align 8, !tbaa !9
  %300 = fmul double %.0503575, %299
  %301 = fsub double %50, %.4474577
  %302 = fcmp ogt double %300, %301
  br i1 %302, label %303, label %307

303:                                              ; preds = %297
  %304 = call i32 @f2c_dscal(ptr noundef nonnull %4, ptr noundef nonnull @c_b36, ptr noundef nonnull %6, ptr noundef nonnull @c__1) #5
  %305 = load double, ptr %7, align 8, !tbaa !9
  %306 = fmul double %305, 5.000000e-01
  br label %.sink.split

.sink.split:                                      ; preds = %291, %303
  %.sink705 = phi double [ %306, %303 ], [ %296, %291 ]
  %.4474576.ph = phi double [ %.4474577, %303 ], [ %.4474, %291 ]
  store double %.sink705, ptr %7, align 8, !tbaa !9
  br label %307

307:                                              ; preds = %.sink.split, %297, %284
  %.4474576 = phi double [ %.4474577, %297 ], [ %.4474, %284 ], [ %.4474576.ph, %.sink.split ]
  br i1 %.not.not.not, label %325, label %308

308:                                              ; preds = %307
  %309 = icmp sgt i64 %.6492639, 1
  br i1 %309, label %310, label %._crit_edge687

._crit_edge687:                                   ; preds = %308
  %.pre688 = sub nsw i64 %.4508638, %.6492639
  br label %350

310:                                              ; preds = %308
  %311 = add nsw i64 %.6492639, -1
  store i64 %311, ptr %13, align 8, !tbaa !5
  %312 = load double, ptr %220, align 8, !tbaa !9
  %313 = fneg double %312
  %314 = load double, ptr %16, align 8, !tbaa !9
  %315 = fmul double %314, %313
  store double %315, ptr %14, align 8, !tbaa !9
  %316 = sub nsw i64 %.4508638, %.6492639
  %317 = getelementptr double, ptr %5, i64 %316
  %318 = call i32 @f2c_daxpy(ptr noundef nonnull %13, ptr noundef nonnull %14, ptr noundef %317, ptr noundef nonnull @c__1, ptr noundef nonnull %6, ptr noundef nonnull @c__1) #5
  store i64 %311, ptr %13, align 8, !tbaa !5
  %319 = call i64 @f2c_idamax(ptr noundef nonnull %13, ptr noundef nonnull %6, ptr noundef nonnull @c__1) #5
  %320 = getelementptr inbounds double, ptr %18, i64 %319
  %321 = load double, ptr %320, align 8, !tbaa !9
  store double %321, ptr %14, align 8, !tbaa !9
  %322 = fcmp oge double %321, 0.000000e+00
  %323 = fneg double %321
  %324 = select i1 %322, double %321, double %323
  br label %350

325:                                              ; preds = %307
  %326 = load i64, ptr %4, align 8, !tbaa !5
  %327 = icmp slt i64 %.6492639, %326
  br i1 %327, label %328, label %345

328:                                              ; preds = %325
  %329 = sub nsw i64 %326, %.6492639
  store i64 %329, ptr %13, align 8, !tbaa !5
  %330 = load double, ptr %220, align 8, !tbaa !9
  %331 = fneg double %330
  %332 = load double, ptr %16, align 8, !tbaa !9
  %333 = fmul double %332, %331
  store double %333, ptr %14, align 8, !tbaa !9
  %334 = getelementptr double, ptr %5, i64 %.4508638
  %335 = getelementptr double, ptr %6, i64 %.6492639
  %336 = call i32 @f2c_daxpy(ptr noundef nonnull %13, ptr noundef nonnull %14, ptr noundef %334, ptr noundef nonnull @c__1, ptr noundef %335, ptr noundef nonnull @c__1) #5
  %337 = load i64, ptr %4, align 8, !tbaa !5
  %338 = sub nsw i64 %337, %.6492639
  store i64 %338, ptr %13, align 8, !tbaa !5
  %339 = call i64 @f2c_idamax(ptr noundef nonnull %13, ptr noundef %335, ptr noundef nonnull @c__1) #5
  %340 = getelementptr double, ptr %220, i64 %339
  %341 = load double, ptr %340, align 8, !tbaa !9
  store double %341, ptr %14, align 8, !tbaa !9
  %342 = fcmp oge double %341, 0.000000e+00
  %343 = fneg double %341
  %344 = select i1 %342, double %341, double %343
  %.pre683 = load i64, ptr %4, align 8, !tbaa !5
  br label %345

345:                                              ; preds = %328, %325
  %346 = phi i64 [ %.pre683, %328 ], [ %326, %325 ]
  %.6 = phi double [ %344, %328 ], [ %.4474576, %325 ]
  %347 = add i64 %.4508638, 1
  %348 = sub i64 %347, %.6492639
  %349 = add i64 %348, %346
  br label %350

350:                                              ; preds = %310, %._crit_edge687, %345
  %.5509 = phi i64 [ %349, %345 ], [ %.pre688, %._crit_edge687 ], [ %316, %310 ]
  %.7 = phi double [ %.6, %345 ], [ %.4474576, %._crit_edge687 ], [ %324, %310 ]
  %351 = load i64, ptr %12, align 8, !tbaa !5
  %352 = add nsw i64 %351, %.6492639
  %353 = icmp slt i64 %351, 0
  %354 = icmp sge i64 %352, %201
  %355 = icmp sle i64 %352, %201
  %.in563 = select i1 %353, i1 %354, i1 %355
  br i1 %.in563, label %219, label %.loopexit582, !llvm.loop !18

356:                                              ; preds = %211
  store i64 %201, ptr %12, align 8, !tbaa !5
  br i1 %.in557661, label %.lr.ph670, label %.loopexit582

.lr.ph670:                                        ; preds = %356
  %357 = add nsw i64 %.2, 1
  %358 = mul nsw i64 %357, %.2
  %359 = sdiv i64 %358, 2
  br label %360

360:                                              ; preds = %.lr.ph670, %528
  %indvar = phi i64 [ 0, %.lr.ph670 ], [ %indvar.next, %528 ]
  %.8668 = phi double [ %.0470, %.lr.ph670 ], [ %534, %528 ]
  %.1477667 = phi double [ undef, %.lr.ph670 ], [ %.5481, %528 ]
  %.7493665 = phi i64 [ %.2, %.lr.ph670 ], [ %538, %528 ]
  %.2499664 = phi i64 [ 1, %.lr.ph670 ], [ %535, %528 ]
  %.6510662 = phi i64 [ %359, %.lr.ph670 ], [ %537, %528 ]
  %361 = mul i64 %200, %indvar
  %362 = getelementptr inbounds double, ptr %18, i64 %.7493665
  %363 = load double, ptr %362, align 8, !tbaa !9
  store double %363, ptr %14, align 8, !tbaa !9
  %364 = fcmp oge double %363, 0.000000e+00
  %365 = fneg double %363
  %366 = select i1 %364, double %363, double %365
  %367 = load double, ptr %16, align 8, !tbaa !9
  %368 = fcmp oge double %.8668, 1.000000e+00
  %369 = select i1 %368, double %.8668, double 1.000000e+00
  %370 = fdiv double 1.000000e+00, %369
  store double %370, ptr %15, align 8, !tbaa !9
  %371 = getelementptr inbounds double, ptr %17, i64 %.7493665
  %372 = load double, ptr %371, align 8, !tbaa !9
  %373 = fsub double %50, %366
  %374 = fmul double %370, %373
  %375 = fcmp ogt double %372, %374
  br i1 %375, label %376, label %400

376:                                              ; preds = %360
  %377 = fmul double %370, 5.000000e-01
  store double %377, ptr %15, align 8, !tbaa !9
  br i1 %.not543, label %382, label %378

378:                                              ; preds = %376
  %379 = getelementptr inbounds double, ptr %19, i64 %.6510662
  %380 = load double, ptr %379, align 8, !tbaa !9
  %381 = fmul double %367, %380
  br label %382

382:                                              ; preds = %376, %378
  %.2478 = phi double [ %381, %378 ], [ %367, %376 ]
  %383 = fcmp oge double %.2478, 0.000000e+00
  %384 = fneg double %.2478
  %385 = select i1 %383, double %.2478, double %384
  %386 = fcmp ogt double %385, 1.000000e+00
  br i1 %386, label %387, label %thread-pre-split578

387:                                              ; preds = %382
  store double 1.000000e+00, ptr %14, align 8, !tbaa !9
  %388 = fmul double %377, %385
  %389 = fcmp oge double %388, 1.000000e+00
  %390 = select i1 %389, double 1.000000e+00, double %388
  store double %390, ptr %15, align 8, !tbaa !9
  %391 = fdiv double %367, %.2478
  br label %thread-pre-split578

thread-pre-split578:                              ; preds = %382, %387
  %392 = phi double [ %390, %387 ], [ %377, %382 ]
  %.0462 = phi double [ %391, %387 ], [ %367, %382 ]
  %393 = fcmp olt double %392, 1.000000e+00
  br i1 %393, label %394, label %400

394:                                              ; preds = %thread-pre-split578
  %395 = call i32 @f2c_dscal(ptr noundef nonnull %4, ptr noundef nonnull %15, ptr noundef nonnull %6, ptr noundef nonnull @c__1) #5
  %396 = load double, ptr %15, align 8, !tbaa !9
  %397 = load double, ptr %7, align 8, !tbaa !9
  %398 = fmul double %396, %397
  store double %398, ptr %7, align 8, !tbaa !9
  %399 = fmul double %.8668, %396
  br label %400

400:                                              ; preds = %thread-pre-split578, %394, %360
  %.3479 = phi double [ %.2478, %394 ], [ %.2478, %thread-pre-split578 ], [ %.1477667, %360 ]
  %.9 = phi double [ %399, %394 ], [ %.8668, %thread-pre-split578 ], [ %.8668, %360 ]
  %.1463 = phi double [ %.0462, %394 ], [ %.0462, %thread-pre-split578 ], [ %367, %360 ]
  %401 = fcmp oeq double %.1463, 1.000000e+00
  br i1 %401, label %402, label %416

402:                                              ; preds = %400
  br i1 %.not.not.not, label %408, label %403

403:                                              ; preds = %402
  %404 = add nsw i64 %.7493665, -1
  store i64 %404, ptr %13, align 8, !tbaa !5
  %405 = sub nsw i64 %.6510662, %.7493665
  %406 = getelementptr double, ptr %5, i64 %405
  %407 = call double @f2c_ddot(ptr noundef nonnull %13, ptr noundef %406, ptr noundef nonnull @c__1, ptr noundef nonnull %6, ptr noundef nonnull @c__1) #5
  br label %.loopexit

408:                                              ; preds = %402
  %409 = load i64, ptr %4, align 8, !tbaa !5
  %410 = icmp slt i64 %.7493665, %409
  br i1 %410, label %411, label %.loopexit

411:                                              ; preds = %408
  %412 = sub nsw i64 %409, %.7493665
  store i64 %412, ptr %13, align 8, !tbaa !5
  %413 = getelementptr double, ptr %5, i64 %.6510662
  %414 = getelementptr double, ptr %6, i64 %.7493665
  %415 = call double @f2c_ddot(ptr noundef nonnull %13, ptr noundef %413, ptr noundef nonnull @c__1, ptr noundef %414, ptr noundef nonnull @c__1) #5
  br label %.loopexit

416:                                              ; preds = %400
  br i1 %.not.not.not, label %429, label %417

417:                                              ; preds = %416
  %418 = add nsw i64 %.7493665, -1
  store i64 %418, ptr %13, align 8, !tbaa !5
  %.not560.not644 = icmp sgt i64 %.7493665, 1
  br i1 %.not560.not644, label %.lr.ph648, label %.loopexit

.lr.ph648:                                        ; preds = %417
  %419 = sub nsw i64 %.6510662, %.7493665
  %420 = getelementptr double, ptr %19, i64 %419
  br label %421

421:                                              ; preds = %.lr.ph648, %421
  %.0464646 = phi double [ 0.000000e+00, %.lr.ph648 ], [ %427, %421 ]
  %.1483645 = phi i64 [ 1, %.lr.ph648 ], [ %428, %421 ]
  %422 = getelementptr double, ptr %420, i64 %.1483645
  %423 = load double, ptr %422, align 8, !tbaa !9
  %424 = fmul double %.1463, %423
  %425 = getelementptr inbounds double, ptr %18, i64 %.1483645
  %426 = load double, ptr %425, align 8, !tbaa !9
  %427 = call double @llvm.fmuladd.f64(double %424, double %426, double %.0464646)
  %428 = add nuw nsw i64 %.1483645, 1
  %exitcond.not = icmp eq i64 %428, %.7493665
  br i1 %exitcond.not, label %.loopexit, label %421, !llvm.loop !19

429:                                              ; preds = %416
  %430 = load i64, ptr %4, align 8, !tbaa !5
  %431 = icmp slt i64 %.7493665, %430
  br i1 %431, label %432, label %.loopexit

432:                                              ; preds = %429
  %433 = sub nsw i64 %430, %.7493665
  store i64 %433, ptr %13, align 8, !tbaa !5
  %.not559650 = icmp slt i64 %433, 1
  br i1 %.not559650, label %.loopexit, label %.lr.ph654

.lr.ph654:                                        ; preds = %432
  %434 = getelementptr double, ptr %19, i64 %.6510662
  %xtraiter = and i64 %433, 3
  %435 = add i64 %.2, %361
  %436 = sub i64 %435, %430
  %437 = icmp ugt i64 %436, -4
  br i1 %437, label %.loopexit.loopexit.unr-lcssa, label %.lr.ph654.new

.lr.ph654.new:                                    ; preds = %.lr.ph654
  %unroll_iter = and i64 %433, 9223372036854775804
  br label %438

438:                                              ; preds = %438, %.lr.ph654.new
  %.1465652 = phi double [ 0.000000e+00, %.lr.ph654.new ], [ %465, %438 ]
  %.2484651 = phi i64 [ 1, %.lr.ph654.new ], [ %466, %438 ]
  %niter = phi i64 [ 0, %.lr.ph654.new ], [ %niter.next.3, %438 ]
  %439 = getelementptr double, ptr %434, i64 %.2484651
  %440 = load double, ptr %439, align 8, !tbaa !9
  %441 = fmul double %.1463, %440
  %442 = getelementptr double, ptr %362, i64 %.2484651
  %443 = load double, ptr %442, align 8, !tbaa !9
  %444 = call double @llvm.fmuladd.f64(double %441, double %443, double %.1465652)
  %445 = add nuw nsw i64 %.2484651, 1
  %446 = getelementptr double, ptr %434, i64 %445
  %447 = load double, ptr %446, align 8, !tbaa !9
  %448 = fmul double %.1463, %447
  %449 = getelementptr double, ptr %362, i64 %445
  %450 = load double, ptr %449, align 8, !tbaa !9
  %451 = call double @llvm.fmuladd.f64(double %448, double %450, double %444)
  %452 = add nuw nsw i64 %.2484651, 2
  %453 = getelementptr double, ptr %434, i64 %452
  %454 = load double, ptr %453, align 8, !tbaa !9
  %455 = fmul double %.1463, %454
  %456 = getelementptr double, ptr %362, i64 %452
  %457 = load double, ptr %456, align 8, !tbaa !9
  %458 = call double @llvm.fmuladd.f64(double %455, double %457, double %451)
  %459 = add nuw i64 %.2484651, 3
  %460 = getelementptr double, ptr %434, i64 %459
  %461 = load double, ptr %460, align 8, !tbaa !9
  %462 = fmul double %.1463, %461
  %463 = getelementptr double, ptr %362, i64 %459
  %464 = load double, ptr %463, align 8, !tbaa !9
  %465 = call double @llvm.fmuladd.f64(double %462, double %464, double %458)
  %466 = add nuw i64 %.2484651, 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.loopexit.unr-lcssa, label %438, !llvm.loop !20

.loopexit.loopexit.unr-lcssa:                     ; preds = %438, %.lr.ph654
  %.lcssa718.ph = phi double [ poison, %.lr.ph654 ], [ %465, %438 ]
  %.1465652.unr = phi double [ 0.000000e+00, %.lr.ph654 ], [ %465, %438 ]
  %.2484651.unr = phi i64 [ 1, %.lr.ph654 ], [ %466, %438 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.loopexit, label %.epil.preheader

.epil.preheader:                                  ; preds = %.loopexit.loopexit.unr-lcssa, %.epil.preheader
  %.1465652.epil = phi double [ %472, %.epil.preheader ], [ %.1465652.unr, %.loopexit.loopexit.unr-lcssa ]
  %.2484651.epil = phi i64 [ %473, %.epil.preheader ], [ %.2484651.unr, %.loopexit.loopexit.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.epil.preheader ], [ 0, %.loopexit.loopexit.unr-lcssa ]
  %467 = getelementptr double, ptr %434, i64 %.2484651.epil
  %468 = load double, ptr %467, align 8, !tbaa !9
  %469 = fmul double %.1463, %468
  %470 = getelementptr double, ptr %362, i64 %.2484651.epil
  %471 = load double, ptr %470, align 8, !tbaa !9
  %472 = call double @llvm.fmuladd.f64(double %469, double %471, double %.1465652.epil)
  %473 = add nuw i64 %.2484651.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 = %421, %.loopexit.loopexit.unr-lcssa, %.epil.preheader, %417, %432, %429, %403, %411, %408
  %.2466 = phi double [ %407, %403 ], [ %415, %411 ], [ 0.000000e+00, %408 ], [ 0.000000e+00, %429 ], [ 0.000000e+00, %432 ], [ 0.000000e+00, %417 ], [ %.lcssa718.ph, %.loopexit.loopexit.unr-lcssa ], [ %472, %.epil.preheader ], [ %427, %421 ]
  %474 = load double, ptr %16, align 8, !tbaa !9
  %475 = fcmp oeq double %.1463, %474
  %476 = load double, ptr %362, align 8, !tbaa !9
  br i1 %475, label %477, label %525

477:                                              ; preds = %.loopexit
  %478 = fsub double %476, %.2466
  store double %478, ptr %362, align 8, !tbaa !9
  store double %478, ptr %14, align 8, !tbaa !9
  %479 = fcmp oge double %478, 0.000000e+00
  %480 = fneg double %478
  %481 = select i1 %479, double %478, double %480
  br i1 %.not543, label %486, label %482

482:                                              ; preds = %477
  %483 = getelementptr inbounds double, ptr %19, i64 %.6510662
  %484 = load double, ptr %483, align 8, !tbaa !9
  %485 = fmul double %474, %484
  br label %488

486:                                              ; preds = %477
  %487 = fcmp oeq double %474, 1.000000e+00
  br i1 %487, label %528, label %488

488:                                              ; preds = %486, %482
  %.4480 = phi double [ %485, %482 ], [ %474, %486 ]
  %489 = fcmp oge double %.4480, 0.000000e+00
  %490 = fneg double %.4480
  %491 = select i1 %489, double %.4480, double %490
  %492 = fcmp ogt double %491, %49
  br i1 %492, label %493, label %507

493:                                              ; preds = %488
  %494 = fcmp olt double %491, 1.000000e+00
  %495 = fmul double %50, %491
  %496 = fcmp ogt double %481, %495
  %or.cond570 = select i1 %494, i1 %496, i1 false
  br i1 %or.cond570, label %497, label %504

497:                                              ; preds = %493
  %498 = fdiv double 1.000000e+00, %481
  store double %498, ptr %15, align 8, !tbaa !9
  %499 = call i32 @f2c_dscal(ptr noundef nonnull %4, ptr noundef nonnull %15, ptr noundef nonnull %6, ptr noundef nonnull @c__1) #5
  %500 = load double, ptr %15, align 8, !tbaa !9
  %501 = load double, ptr %7, align 8, !tbaa !9
  %502 = fmul double %500, %501
  store double %502, ptr %7, align 8, !tbaa !9
  %503 = fmul double %.9, %500
  %.pre685 = load double, ptr %362, align 8, !tbaa !9
  br label %504

504:                                              ; preds = %497, %493
  %505 = phi double [ %.pre685, %497 ], [ %478, %493 ]
  %.10 = phi double [ %503, %497 ], [ %.9, %493 ]
  %506 = fdiv double %505, %.4480
  store double %506, ptr %362, align 8, !tbaa !9
  br label %528

507:                                              ; preds = %488
  %508 = fcmp ogt double %491, 0.000000e+00
  br i1 %508, label %509, label %522

509:                                              ; preds = %507
  %510 = fmul double %50, %491
  %511 = fcmp ogt double %481, %510
  br i1 %511, label %512, label %519

512:                                              ; preds = %509
  %513 = fdiv double %510, %481
  store double %513, ptr %15, align 8, !tbaa !9
  %514 = call i32 @f2c_dscal(ptr noundef nonnull %4, ptr noundef nonnull %15, ptr noundef nonnull %6, ptr noundef nonnull @c__1) #5
  %515 = load double, ptr %15, align 8, !tbaa !9
  %516 = load double, ptr %7, align 8, !tbaa !9
  %517 = fmul double %515, %516
  store double %517, ptr %7, align 8, !tbaa !9
  %518 = fmul double %.9, %515
  %.pre684 = load double, ptr %362, align 8, !tbaa !9
  br label %519

519:                                              ; preds = %512, %509
  %520 = phi double [ %.pre684, %512 ], [ %478, %509 ]
  %.11 = phi double [ %518, %512 ], [ %.9, %509 ]
  %521 = fdiv double %520, %.4480
  store double %521, ptr %362, align 8, !tbaa !9
  br label %528

522:                                              ; preds = %507
  %523 = load i64, ptr %4, align 8, !tbaa !5
  store i64 %523, ptr %13, align 8, !tbaa !5
  %.not562656 = icmp slt i64 %523, 1
  br i1 %.not562656, label %._crit_edge660, label %.lr.ph659.preheader

.lr.ph659.preheader:                              ; preds = %522
  %524 = shl nuw i64 %523, 3
  call void @llvm.memset.p0.i64(ptr nonnull align 8 %6, i8 0, i64 %524, i1 false), !tbaa !9
  br label %._crit_edge660

._crit_edge660:                                   ; preds = %.lr.ph659.preheader, %522
  store double 1.000000e+00, ptr %362, align 8, !tbaa !9
  store double 0.000000e+00, ptr %7, align 8, !tbaa !9
  %.pre686 = load double, ptr %362, align 8, !tbaa !9
  br label %528

525:                                              ; preds = %.loopexit
  %526 = fdiv double %476, %.3479
  %527 = fsub double %526, %.2466
  store double %527, ptr %362, align 8, !tbaa !9
  br label %528

528:                                              ; preds = %486, %519, %._crit_edge660, %504, %525
  %529 = phi double [ %506, %504 ], [ %521, %519 ], [ %.pre686, %._crit_edge660 ], [ %478, %486 ], [ %527, %525 ]
  %.5481 = phi double [ %.4480, %504 ], [ %.4480, %519 ], [ %.4480, %._crit_edge660 ], [ 1.000000e+00, %486 ], [ %.3479, %525 ]
  %.12 = phi double [ %.10, %504 ], [ %.11, %519 ], [ 0.000000e+00, %._crit_edge660 ], [ %.9, %486 ], [ %.9, %525 ]
  store double %529, ptr %14, align 8, !tbaa !9
  %530 = fcmp oge double %529, 0.000000e+00
  %531 = fneg double %529
  %532 = select i1 %530, double %529, double %531
  %533 = fcmp oge double %.12, %532
  %534 = select i1 %533, double %.12, double %532
  %535 = add nuw nsw i64 %.2499664, 1
  %536 = mul nsw i64 %535, %200
  %537 = add nsw i64 %536, %.6510662
  %538 = add nsw i64 %200, %.7493665
  %539 = load i64, ptr %12, align 8
  %540 = icmp sge i64 %538, %539
  %541 = icmp sle i64 %538, %539
  %.in557 = select i1 %212, i1 %540, i1 %541
  %indvar.next = add i64 %indvar, 1
  br i1 %.in557, label %360, label %.loopexit582, !llvm.loop !23

.loopexit582:                                     ; preds = %350, %528, %215, %356
  %542 = load double, ptr %16, align 8, !tbaa !9
  %543 = load double, ptr %7, align 8, !tbaa !9
  %544 = fdiv double %543, %542
  store double %544, ptr %7, align 8, !tbaa !9
  br label %545

545:                                              ; preds = %.loopexit582, %204
  %546 = phi double [ %542, %.loopexit582 ], [ %.pr580, %204 ]
  %547 = fcmp une double %546, 1.000000e+00
  br i1 %547, label %548, label %551

548:                                              ; preds = %545
  %549 = fdiv double 1.000000e+00, %546
  store double %549, ptr %14, align 8, !tbaa !9
  %550 = call i32 @f2c_dscal(ptr noundef nonnull %4, ptr noundef nonnull %14, ptr noundef %8, ptr noundef nonnull @c__1) #5
  br label %551

551:                                              ; preds = %545, %548, %44, %.thread
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #5
  ret i32 0
}

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

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

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

declare double @dlamch_(ptr noundef) local_unnamed_addr #2

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

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

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

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

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

declare double @f2c_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 nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #4

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"long", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"double", !7, i64 0}
!11 = distinct !{!11, !12}
!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