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

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

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

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

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

80:                                               ; preds = %76
  %81 = load ptr, ptr %23, align 8, !tbaa !5
  store i64 -1, ptr %81, align 8, !tbaa !9
  br label %140

82:                                               ; preds = %76, %11
  %83 = load i64, ptr %50, align 8, !tbaa !9
  %84 = icmp ne i64 %83, 0
  br i1 %84, label %95, label %85

85:                                               ; preds = %82
  %86 = load ptr, ptr %14, align 8, !tbaa !5
  %87 = call i64 @lsame_(ptr noundef %86, ptr noundef @.str.3)
  %88 = icmp ne i64 %87, 0
  br i1 %88, label %95, label %89

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

93:                                               ; preds = %89
  %94 = load ptr, ptr %23, align 8, !tbaa !5
  store i64 -2, ptr %94, align 8, !tbaa !9
  br label %139

95:                                               ; preds = %89, %85, %82
  %96 = load i64, ptr %53, align 8, !tbaa !9
  %97 = icmp ne i64 %96, 0
  br i1 %97, label %104, label %98

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

102:                                              ; preds = %98
  %103 = load ptr, ptr %23, align 8, !tbaa !5
  store i64 -3, ptr %103, align 8, !tbaa !9
  br label %138

104:                                              ; preds = %98, %95
  %105 = load ptr, ptr %16, align 8, !tbaa !5
  %106 = call i64 @lsame_(ptr noundef %105, ptr noundef @.str.5)
  %107 = icmp ne i64 %106, 0
  br i1 %107, label %114, label %108

108:                                              ; preds = %104
  %109 = load ptr, ptr %16, align 8, !tbaa !5
  %110 = call i64 @lsame_(ptr noundef %109, ptr noundef @.str.1)
  %111 = icmp ne i64 %110, 0
  br i1 %111, label %114, label %112

112:                                              ; preds = %108
  %113 = load ptr, ptr %23, align 8, !tbaa !5
  store i64 -4, ptr %113, align 8, !tbaa !9
  br label %137

114:                                              ; preds = %108, %104
  %115 = load ptr, ptr %17, align 8, !tbaa !5
  %116 = load i64, ptr %115, align 8, !tbaa !9
  %117 = icmp slt i64 %116, 0
  br i1 %117, label %118, label %120

118:                                              ; preds = %114
  %119 = load ptr, ptr %23, align 8, !tbaa !5
  store i64 -5, ptr %119, align 8, !tbaa !9
  br label %136

120:                                              ; preds = %114
  %121 = load ptr, ptr %19, align 8, !tbaa !5
  %122 = load i64, ptr %121, align 8, !tbaa !9
  %123 = load ptr, ptr %17, align 8, !tbaa !5
  %124 = load i64, ptr %123, align 8, !tbaa !9
  %125 = icmp sge i64 1, %124
  br i1 %125, label %126, label %127

126:                                              ; preds = %120
  br label %130

127:                                              ; preds = %120
  %128 = load ptr, ptr %17, align 8, !tbaa !5
  %129 = load i64, ptr %128, align 8, !tbaa !9
  br label %130

130:                                              ; preds = %127, %126
  %131 = phi i64 [ 1, %126 ], [ %129, %127 ]
  %132 = icmp slt i64 %122, %131
  br i1 %132, label %133, label %135

133:                                              ; preds = %130
  %134 = load ptr, ptr %23, align 8, !tbaa !5
  store i64 -7, ptr %134, align 8, !tbaa !9
  br label %135

135:                                              ; preds = %133, %130
  br label %136

136:                                              ; preds = %135, %118
  br label %137

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

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

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

140:                                              ; preds = %139, %80
  %141 = load ptr, ptr %23, align 8, !tbaa !5
  %142 = load i64, ptr %141, align 8, !tbaa !9
  %143 = icmp ne i64 %142, 0
  br i1 %143, label %144, label %149

144:                                              ; preds = %140
  %145 = load ptr, ptr %23, align 8, !tbaa !5
  %146 = load i64, ptr %145, align 8, !tbaa !9
  %147 = sub nsw i64 0, %146
  store i64 %147, ptr %26, align 8, !tbaa !9
  %148 = call i32 @xerbla_(ptr noundef @.str.6, ptr noundef %26)
  store i32 0, ptr %12, align 4
  store i32 1, ptr %54, align 4
  br label %1420

149:                                              ; preds = %140
  %150 = load ptr, ptr %17, align 8, !tbaa !5
  %151 = load i64, ptr %150, align 8, !tbaa !9
  %152 = icmp eq i64 %151, 0
  br i1 %152, label %153, label %154

153:                                              ; preds = %149
  store i32 0, ptr %12, align 4
  store i32 1, ptr %54, align 4
  br label %1420

154:                                              ; preds = %149
  %155 = call double @dlamch_(ptr noundef @.str.7)
  %156 = call double @dlamch_(ptr noundef @.str.8)
  %157 = fdiv double %155, %156
  store double %157, ptr %52, align 8, !tbaa !11
  %158 = load double, ptr %52, align 8, !tbaa !11
  %159 = fdiv double 1.000000e+00, %158
  store double %159, ptr %49, align 8, !tbaa !11
  %160 = load ptr, ptr %21, align 8, !tbaa !5
  store double 1.000000e+00, ptr %160, align 8, !tbaa !11
  %161 = load ptr, ptr %16, align 8, !tbaa !5
  %162 = call i64 @lsame_(ptr noundef %161, ptr noundef @.str.1)
  %163 = icmp ne i64 %162, 0
  br i1 %163, label %164, label %225

164:                                              ; preds = %154
  %165 = load i64, ptr %48, align 8, !tbaa !9
  %166 = icmp ne i64 %165, 0
  br i1 %166, label %167, label %191

167:                                              ; preds = %164
  %168 = load ptr, ptr %17, align 8, !tbaa !5
  %169 = load i64, ptr %168, align 8, !tbaa !9
  store i64 %169, ptr %26, align 8, !tbaa !9
  store i64 1, ptr %33, align 8, !tbaa !9
  br label %170

170:                                              ; preds = %187, %167
  %171 = load i64, ptr %33, align 8, !tbaa !9
  %172 = load i64, ptr %26, align 8, !tbaa !9
  %173 = icmp sle i64 %171, %172
  br i1 %173, label %174, label %190

174:                                              ; preds = %170
  %175 = load i64, ptr %33, align 8, !tbaa !9
  %176 = sub nsw i64 %175, 1
  store i64 %176, ptr %27, align 8, !tbaa !9
  %177 = load ptr, ptr %18, align 8, !tbaa !5
  %178 = load i64, ptr %33, align 8, !tbaa !9
  %179 = load i64, ptr %24, align 8, !tbaa !9
  %180 = mul nsw i64 %178, %179
  %181 = add nsw i64 %180, 1
  %182 = getelementptr inbounds double, ptr %177, i64 %181
  %183 = call double @f2c_dasum(ptr noundef %27, ptr noundef %182, ptr noundef @c__1)
  %184 = load ptr, ptr %22, align 8, !tbaa !5
  %185 = load i64, ptr %33, align 8, !tbaa !9
  %186 = getelementptr inbounds double, ptr %184, i64 %185
  store double %183, ptr %186, align 8, !tbaa !11
  br label %187

187:                                              ; preds = %174
  %188 = load i64, ptr %33, align 8, !tbaa !9
  %189 = add nsw i64 %188, 1
  store i64 %189, ptr %33, align 8, !tbaa !9
  br label %170, !llvm.loop !13

190:                                              ; preds = %170
  br label %224

191:                                              ; preds = %164
  %192 = load ptr, ptr %17, align 8, !tbaa !5
  %193 = load i64, ptr %192, align 8, !tbaa !9
  %194 = sub nsw i64 %193, 1
  store i64 %194, ptr %26, align 8, !tbaa !9
  store i64 1, ptr %33, align 8, !tbaa !9
  br label %195

195:                                              ; preds = %216, %191
  %196 = load i64, ptr %33, align 8, !tbaa !9
  %197 = load i64, ptr %26, align 8, !tbaa !9
  %198 = icmp sle i64 %196, %197
  br i1 %198, label %199, label %219

199:                                              ; preds = %195
  %200 = load ptr, ptr %17, align 8, !tbaa !5
  %201 = load i64, ptr %200, align 8, !tbaa !9
  %202 = load i64, ptr %33, align 8, !tbaa !9
  %203 = sub nsw i64 %201, %202
  store i64 %203, ptr %27, align 8, !tbaa !9
  %204 = load ptr, ptr %18, align 8, !tbaa !5
  %205 = load i64, ptr %33, align 8, !tbaa !9
  %206 = add nsw i64 %205, 1
  %207 = load i64, ptr %33, align 8, !tbaa !9
  %208 = load i64, ptr %24, align 8, !tbaa !9
  %209 = mul nsw i64 %207, %208
  %210 = add nsw i64 %206, %209
  %211 = getelementptr inbounds double, ptr %204, i64 %210
  %212 = call double @f2c_dasum(ptr noundef %27, ptr noundef %211, ptr noundef @c__1)
  %213 = load ptr, ptr %22, align 8, !tbaa !5
  %214 = load i64, ptr %33, align 8, !tbaa !9
  %215 = getelementptr inbounds double, ptr %213, i64 %214
  store double %212, ptr %215, align 8, !tbaa !11
  br label %216

216:                                              ; preds = %199
  %217 = load i64, ptr %33, align 8, !tbaa !9
  %218 = add nsw i64 %217, 1
  store i64 %218, ptr %33, align 8, !tbaa !9
  br label %195, !llvm.loop !15

219:                                              ; preds = %195
  %220 = load ptr, ptr %22, align 8, !tbaa !5
  %221 = load ptr, ptr %17, align 8, !tbaa !5
  %222 = load i64, ptr %221, align 8, !tbaa !9
  %223 = getelementptr inbounds double, ptr %220, i64 %222
  store double 0.000000e+00, ptr %223, align 8, !tbaa !11
  br label %224

224:                                              ; preds = %219, %190
  br label %225

225:                                              ; preds = %224, %154
  %226 = load ptr, ptr %17, align 8, !tbaa !5
  %227 = load ptr, ptr %22, align 8, !tbaa !5
  %228 = getelementptr inbounds double, ptr %227, i64 1
  %229 = call i64 @f2c_idamax(ptr noundef %226, ptr noundef %228, ptr noundef @c__1)
  store i64 %229, ptr %39, align 8, !tbaa !9
  %230 = load ptr, ptr %22, align 8, !tbaa !5
  %231 = load i64, ptr %39, align 8, !tbaa !9
  %232 = getelementptr inbounds double, ptr %230, i64 %231
  %233 = load double, ptr %232, align 8, !tbaa !11
  store double %233, ptr %40, align 8, !tbaa !11
  %234 = load double, ptr %40, align 8, !tbaa !11
  %235 = load double, ptr %49, align 8, !tbaa !11
  %236 = fcmp ole double %234, %235
  br i1 %236, label %237, label %238

237:                                              ; preds = %225
  store double 1.000000e+00, ptr %45, align 8, !tbaa !11
  br label %247

238:                                              ; preds = %225
  %239 = load double, ptr %52, align 8, !tbaa !11
  %240 = load double, ptr %40, align 8, !tbaa !11
  %241 = fmul double %239, %240
  %242 = fdiv double 1.000000e+00, %241
  store double %242, ptr %45, align 8, !tbaa !11
  %243 = load ptr, ptr %17, align 8, !tbaa !5
  %244 = load ptr, ptr %22, align 8, !tbaa !5
  %245 = getelementptr inbounds double, ptr %244, i64 1
  %246 = call i32 @f2c_dscal(ptr noundef %243, ptr noundef %45, ptr noundef %245, ptr noundef @c__1)
  br label %247

247:                                              ; preds = %238, %237
  %248 = load ptr, ptr %17, align 8, !tbaa !5
  %249 = load ptr, ptr %20, align 8, !tbaa !5
  %250 = getelementptr inbounds double, ptr %249, i64 1
  %251 = call i64 @f2c_idamax(ptr noundef %248, ptr noundef %250, ptr noundef @c__1)
  store i64 %251, ptr %33, align 8, !tbaa !9
  %252 = load ptr, ptr %20, align 8, !tbaa !5
  %253 = load i64, ptr %33, align 8, !tbaa !9
  %254 = getelementptr inbounds double, ptr %252, i64 %253
  %255 = load double, ptr %254, align 8, !tbaa !11
  store double %255, ptr %29, align 8, !tbaa !11
  %256 = load double, ptr %29, align 8, !tbaa !11
  %257 = fcmp oge double %256, 0.000000e+00
  br i1 %257, label %258, label %260

258:                                              ; preds = %247
  %259 = load double, ptr %29, align 8, !tbaa !11
  br label %263

260:                                              ; preds = %247
  %261 = load double, ptr %29, align 8, !tbaa !11
  %262 = fneg double %261
  br label %263

263:                                              ; preds = %260, %258
  %264 = phi double [ %259, %258 ], [ %262, %260 ]
  store double %264, ptr %42, align 8, !tbaa !11
  %265 = load double, ptr %42, align 8, !tbaa !11
  store double %265, ptr %38, align 8, !tbaa !11
  %266 = load i64, ptr %50, align 8, !tbaa !9
  %267 = icmp ne i64 %266, 0
  br i1 %267, label %268, label %444

268:                                              ; preds = %263
  %269 = load i64, ptr %48, align 8, !tbaa !9
  %270 = icmp ne i64 %269, 0
  br i1 %270, label %271, label %274

271:                                              ; preds = %268
  %272 = load ptr, ptr %17, align 8, !tbaa !5
  %273 = load i64, ptr %272, align 8, !tbaa !9
  store i64 %273, ptr %51, align 8, !tbaa !9
  store i64 1, ptr %47, align 8, !tbaa !9
  store i64 -1, ptr %37, align 8, !tbaa !9
  br label %277

274:                                              ; preds = %268
  store i64 1, ptr %51, align 8, !tbaa !9
  %275 = load ptr, ptr %17, align 8, !tbaa !5
  %276 = load i64, ptr %275, align 8, !tbaa !9
  store i64 %276, ptr %47, align 8, !tbaa !9
  store i64 1, ptr %37, align 8, !tbaa !9
  br label %277

277:                                              ; preds = %274, %271
  %278 = load double, ptr %45, align 8, !tbaa !11
  %279 = fcmp une double %278, 1.000000e+00
  br i1 %279, label %280, label %281

280:                                              ; preds = %277
  store double 0.000000e+00, ptr %43, align 8, !tbaa !11
  br label %443

281:                                              ; preds = %277
  %282 = load i64, ptr %53, align 8, !tbaa !9
  %283 = icmp ne i64 %282, 0
  br i1 %283, label %284, label %384

284:                                              ; preds = %281
  %285 = load double, ptr %38, align 8, !tbaa !11
  %286 = load double, ptr %52, align 8, !tbaa !11
  %287 = fcmp oge double %285, %286
  br i1 %287, label %288, label %290

288:                                              ; preds = %284
  %289 = load double, ptr %38, align 8, !tbaa !11
  br label %292

290:                                              ; preds = %284
  %291 = load double, ptr %52, align 8, !tbaa !11
  br label %292

292:                                              ; preds = %290, %288
  %293 = phi double [ %289, %288 ], [ %291, %290 ]
  %294 = fdiv double 1.000000e+00, %293
  store double %294, ptr %43, align 8, !tbaa !11
  %295 = load double, ptr %43, align 8, !tbaa !11
  store double %295, ptr %38, align 8, !tbaa !11
  %296 = load i64, ptr %47, align 8, !tbaa !9
  store i64 %296, ptr %26, align 8, !tbaa !9
  %297 = load i64, ptr %37, align 8, !tbaa !9
  store i64 %297, ptr %27, align 8, !tbaa !9
  %298 = load i64, ptr %51, align 8, !tbaa !9
  store i64 %298, ptr %33, align 8, !tbaa !9
  br label %299

299:                                              ; preds = %378, %292
  %300 = load i64, ptr %27, align 8, !tbaa !9
  %301 = icmp slt i64 %300, 0
  br i1 %301, label %302, label %307

302:                                              ; preds = %299
  %303 = load i64, ptr %33, align 8, !tbaa !9
  %304 = load i64, ptr %26, align 8, !tbaa !9
  %305 = icmp sge i64 %303, %304
  %306 = zext i1 %305 to i32
  br label %312

307:                                              ; preds = %299
  %308 = load i64, ptr %33, align 8, !tbaa !9
  %309 = load i64, ptr %26, align 8, !tbaa !9
  %310 = icmp sle i64 %308, %309
  %311 = zext i1 %310 to i32
  br label %312

312:                                              ; preds = %307, %302
  %313 = phi i32 [ %306, %302 ], [ %311, %307 ]
  %314 = icmp ne i32 %313, 0
  br i1 %314, label %315, label %382

315:                                              ; preds = %312
  %316 = load double, ptr %43, align 8, !tbaa !11
  %317 = load double, ptr %52, align 8, !tbaa !11
  %318 = fcmp ole double %316, %317
  br i1 %318, label %319, label %320

319:                                              ; preds = %315
  br label %443

320:                                              ; preds = %315
  %321 = load ptr, ptr %18, align 8, !tbaa !5
  %322 = load i64, ptr %33, align 8, !tbaa !9
  %323 = load i64, ptr %33, align 8, !tbaa !9
  %324 = load i64, ptr %24, align 8, !tbaa !9
  %325 = mul nsw i64 %323, %324
  %326 = add nsw i64 %322, %325
  %327 = getelementptr inbounds double, ptr %321, i64 %326
  %328 = load double, ptr %327, align 8, !tbaa !11
  store double %328, ptr %29, align 8, !tbaa !11
  %329 = load double, ptr %29, align 8, !tbaa !11
  %330 = fcmp oge double %329, 0.000000e+00
  br i1 %330, label %331, label %333

331:                                              ; preds = %320
  %332 = load double, ptr %29, align 8, !tbaa !11
  br label %336

333:                                              ; preds = %320
  %334 = load double, ptr %29, align 8, !tbaa !11
  %335 = fneg double %334
  br label %336

336:                                              ; preds = %333, %331
  %337 = phi double [ %332, %331 ], [ %335, %333 ]
  store double %337, ptr %36, align 8, !tbaa !11
  %338 = load double, ptr %38, align 8, !tbaa !11
  store double %338, ptr %29, align 8, !tbaa !11
  %339 = load double, ptr %36, align 8, !tbaa !11
  %340 = fcmp ole double 1.000000e+00, %339
  br i1 %340, label %341, label %342

341:                                              ; preds = %336
  br label %344

342:                                              ; preds = %336
  %343 = load double, ptr %36, align 8, !tbaa !11
  br label %344

344:                                              ; preds = %342, %341
  %345 = phi double [ 1.000000e+00, %341 ], [ %343, %342 ]
  %346 = load double, ptr %43, align 8, !tbaa !11
  %347 = fmul double %345, %346
  store double %347, ptr %30, align 8, !tbaa !11
  %348 = load double, ptr %29, align 8, !tbaa !11
  %349 = load double, ptr %30, align 8, !tbaa !11
  %350 = fcmp ole double %348, %349
  br i1 %350, label %351, label %353

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

353:                                              ; preds = %344
  %354 = load double, ptr %30, align 8, !tbaa !11
  br label %355

355:                                              ; preds = %353, %351
  %356 = phi double [ %352, %351 ], [ %354, %353 ]
  store double %356, ptr %38, align 8, !tbaa !11
  %357 = load double, ptr %36, align 8, !tbaa !11
  %358 = load ptr, ptr %22, align 8, !tbaa !5
  %359 = load i64, ptr %33, align 8, !tbaa !9
  %360 = getelementptr inbounds double, ptr %358, i64 %359
  %361 = load double, ptr %360, align 8, !tbaa !11
  %362 = fadd double %357, %361
  %363 = load double, ptr %52, align 8, !tbaa !11
  %364 = fcmp oge double %362, %363
  br i1 %364, label %365, label %376

365:                                              ; preds = %355
  %366 = load double, ptr %36, align 8, !tbaa !11
  %367 = load double, ptr %36, align 8, !tbaa !11
  %368 = load ptr, ptr %22, align 8, !tbaa !5
  %369 = load i64, ptr %33, align 8, !tbaa !9
  %370 = getelementptr inbounds double, ptr %368, i64 %369
  %371 = load double, ptr %370, align 8, !tbaa !11
  %372 = fadd double %367, %371
  %373 = fdiv double %366, %372
  %374 = load double, ptr %43, align 8, !tbaa !11
  %375 = fmul double %374, %373
  store double %375, ptr %43, align 8, !tbaa !11
  br label %377

376:                                              ; preds = %355
  store double 0.000000e+00, ptr %43, align 8, !tbaa !11
  br label %377

377:                                              ; preds = %376, %365
  br label %378

378:                                              ; preds = %377
  %379 = load i64, ptr %27, align 8, !tbaa !9
  %380 = load i64, ptr %33, align 8, !tbaa !9
  %381 = add nsw i64 %380, %379
  store i64 %381, ptr %33, align 8, !tbaa !9
  br label %299, !llvm.loop !16

382:                                              ; preds = %312
  %383 = load double, ptr %38, align 8, !tbaa !11
  store double %383, ptr %43, align 8, !tbaa !11
  br label %442

384:                                              ; preds = %281
  store double 1.000000e+00, ptr %29, align 8, !tbaa !11
  %385 = load double, ptr %38, align 8, !tbaa !11
  %386 = load double, ptr %52, align 8, !tbaa !11
  %387 = fcmp oge double %385, %386
  br i1 %387, label %388, label %390

388:                                              ; preds = %384
  %389 = load double, ptr %38, align 8, !tbaa !11
  br label %392

390:                                              ; preds = %384
  %391 = load double, ptr %52, align 8, !tbaa !11
  br label %392

392:                                              ; preds = %390, %388
  %393 = phi double [ %389, %388 ], [ %391, %390 ]
  %394 = fdiv double 1.000000e+00, %393
  store double %394, ptr %30, align 8, !tbaa !11
  %395 = load double, ptr %29, align 8, !tbaa !11
  %396 = load double, ptr %30, align 8, !tbaa !11
  %397 = fcmp ole double %395, %396
  br i1 %397, label %398, label %400

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

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

402:                                              ; preds = %400, %398
  %403 = phi double [ %399, %398 ], [ %401, %400 ]
  store double %403, ptr %43, align 8, !tbaa !11
  %404 = load i64, ptr %47, align 8, !tbaa !9
  store i64 %404, ptr %27, align 8, !tbaa !9
  %405 = load i64, ptr %37, align 8, !tbaa !9
  store i64 %405, ptr %26, align 8, !tbaa !9
  %406 = load i64, ptr %51, align 8, !tbaa !9
  store i64 %406, ptr %33, align 8, !tbaa !9
  br label %407

407:                                              ; preds = %437, %402
  %408 = load i64, ptr %26, align 8, !tbaa !9
  %409 = icmp slt i64 %408, 0
  br i1 %409, label %410, label %415

410:                                              ; preds = %407
  %411 = load i64, ptr %33, align 8, !tbaa !9
  %412 = load i64, ptr %27, align 8, !tbaa !9
  %413 = icmp sge i64 %411, %412
  %414 = zext i1 %413 to i32
  br label %420

415:                                              ; preds = %407
  %416 = load i64, ptr %33, align 8, !tbaa !9
  %417 = load i64, ptr %27, align 8, !tbaa !9
  %418 = icmp sle i64 %416, %417
  %419 = zext i1 %418 to i32
  br label %420

420:                                              ; preds = %415, %410
  %421 = phi i32 [ %414, %410 ], [ %419, %415 ]
  %422 = icmp ne i32 %421, 0
  br i1 %422, label %423, label %441

423:                                              ; preds = %420
  %424 = load double, ptr %43, align 8, !tbaa !11
  %425 = load double, ptr %52, align 8, !tbaa !11
  %426 = fcmp ole double %424, %425
  br i1 %426, label %427, label %428

427:                                              ; preds = %423
  br label %443

428:                                              ; preds = %423
  %429 = load ptr, ptr %22, align 8, !tbaa !5
  %430 = load i64, ptr %33, align 8, !tbaa !9
  %431 = getelementptr inbounds double, ptr %429, i64 %430
  %432 = load double, ptr %431, align 8, !tbaa !11
  %433 = fadd double %432, 1.000000e+00
  %434 = fdiv double 1.000000e+00, %433
  %435 = load double, ptr %43, align 8, !tbaa !11
  %436 = fmul double %435, %434
  store double %436, ptr %43, align 8, !tbaa !11
  br label %437

437:                                              ; preds = %428
  %438 = load i64, ptr %26, align 8, !tbaa !9
  %439 = load i64, ptr %33, align 8, !tbaa !9
  %440 = add nsw i64 %439, %438
  store i64 %440, ptr %33, align 8, !tbaa !9
  br label %407, !llvm.loop !17

441:                                              ; preds = %420
  br label %442

442:                                              ; preds = %441, %382
  br label %443

443:                                              ; preds = %442, %427, %319, %280
  br label %616

444:                                              ; preds = %263
  %445 = load i64, ptr %48, align 8, !tbaa !9
  %446 = icmp ne i64 %445, 0
  br i1 %446, label %447, label %450

447:                                              ; preds = %444
  store i64 1, ptr %51, align 8, !tbaa !9
  %448 = load ptr, ptr %17, align 8, !tbaa !5
  %449 = load i64, ptr %448, align 8, !tbaa !9
  store i64 %449, ptr %47, align 8, !tbaa !9
  store i64 1, ptr %37, align 8, !tbaa !9
  br label %453

450:                                              ; preds = %444
  %451 = load ptr, ptr %17, align 8, !tbaa !5
  %452 = load i64, ptr %451, align 8, !tbaa !9
  store i64 %452, ptr %51, align 8, !tbaa !9
  store i64 1, ptr %47, align 8, !tbaa !9
  store i64 -1, ptr %37, align 8, !tbaa !9
  br label %453

453:                                              ; preds = %450, %447
  %454 = load double, ptr %45, align 8, !tbaa !11
  %455 = fcmp une double %454, 1.000000e+00
  br i1 %455, label %456, label %457

456:                                              ; preds = %453
  store double 0.000000e+00, ptr %43, align 8, !tbaa !11
  br label %615

457:                                              ; preds = %453
  %458 = load i64, ptr %53, align 8, !tbaa !9
  %459 = icmp ne i64 %458, 0
  br i1 %459, label %460, label %556

460:                                              ; preds = %457
  %461 = load double, ptr %38, align 8, !tbaa !11
  %462 = load double, ptr %52, align 8, !tbaa !11
  %463 = fcmp oge double %461, %462
  br i1 %463, label %464, label %466

464:                                              ; preds = %460
  %465 = load double, ptr %38, align 8, !tbaa !11
  br label %468

466:                                              ; preds = %460
  %467 = load double, ptr %52, align 8, !tbaa !11
  br label %468

468:                                              ; preds = %466, %464
  %469 = phi double [ %465, %464 ], [ %467, %466 ]
  %470 = fdiv double 1.000000e+00, %469
  store double %470, ptr %43, align 8, !tbaa !11
  %471 = load double, ptr %43, align 8, !tbaa !11
  store double %471, ptr %38, align 8, !tbaa !11
  %472 = load i64, ptr %47, align 8, !tbaa !9
  store i64 %472, ptr %26, align 8, !tbaa !9
  %473 = load i64, ptr %37, align 8, !tbaa !9
  store i64 %473, ptr %27, align 8, !tbaa !9
  %474 = load i64, ptr %51, align 8, !tbaa !9
  store i64 %474, ptr %33, align 8, !tbaa !9
  br label %475

475:                                              ; preds = %542, %468
  %476 = load i64, ptr %27, align 8, !tbaa !9
  %477 = icmp slt i64 %476, 0
  br i1 %477, label %478, label %483

478:                                              ; preds = %475
  %479 = load i64, ptr %33, align 8, !tbaa !9
  %480 = load i64, ptr %26, align 8, !tbaa !9
  %481 = icmp sge i64 %479, %480
  %482 = zext i1 %481 to i32
  br label %488

483:                                              ; preds = %475
  %484 = load i64, ptr %33, align 8, !tbaa !9
  %485 = load i64, ptr %26, align 8, !tbaa !9
  %486 = icmp sle i64 %484, %485
  %487 = zext i1 %486 to i32
  br label %488

488:                                              ; preds = %483, %478
  %489 = phi i32 [ %482, %478 ], [ %487, %483 ]
  %490 = icmp ne i32 %489, 0
  br i1 %490, label %491, label %546

491:                                              ; preds = %488
  %492 = load double, ptr %43, align 8, !tbaa !11
  %493 = load double, ptr %52, align 8, !tbaa !11
  %494 = fcmp ole double %492, %493
  br i1 %494, label %495, label %496

495:                                              ; preds = %491
  br label %615

496:                                              ; preds = %491
  %497 = load ptr, ptr %22, align 8, !tbaa !5
  %498 = load i64, ptr %33, align 8, !tbaa !9
  %499 = getelementptr inbounds double, ptr %497, i64 %498
  %500 = load double, ptr %499, align 8, !tbaa !11
  %501 = fadd double %500, 1.000000e+00
  store double %501, ptr %34, align 8, !tbaa !11
  %502 = load double, ptr %43, align 8, !tbaa !11
  store double %502, ptr %29, align 8, !tbaa !11
  %503 = load double, ptr %38, align 8, !tbaa !11
  %504 = load double, ptr %34, align 8, !tbaa !11
  %505 = fdiv double %503, %504
  store double %505, ptr %30, align 8, !tbaa !11
  %506 = load double, ptr %29, align 8, !tbaa !11
  %507 = load double, ptr %30, align 8, !tbaa !11
  %508 = fcmp ole double %506, %507
  br i1 %508, label %509, label %511

509:                                              ; preds = %496
  %510 = load double, ptr %29, align 8, !tbaa !11
  br label %513

511:                                              ; preds = %496
  %512 = load double, ptr %30, align 8, !tbaa !11
  br label %513

513:                                              ; preds = %511, %509
  %514 = phi double [ %510, %509 ], [ %512, %511 ]
  store double %514, ptr %43, align 8, !tbaa !11
  %515 = load ptr, ptr %18, align 8, !tbaa !5
  %516 = load i64, ptr %33, align 8, !tbaa !9
  %517 = load i64, ptr %33, align 8, !tbaa !9
  %518 = load i64, ptr %24, align 8, !tbaa !9
  %519 = mul nsw i64 %517, %518
  %520 = add nsw i64 %516, %519
  %521 = getelementptr inbounds double, ptr %515, i64 %520
  %522 = load double, ptr %521, align 8, !tbaa !11
  store double %522, ptr %29, align 8, !tbaa !11
  %523 = load double, ptr %29, align 8, !tbaa !11
  %524 = fcmp oge double %523, 0.000000e+00
  br i1 %524, label %525, label %527

525:                                              ; preds = %513
  %526 = load double, ptr %29, align 8, !tbaa !11
  br label %530

527:                                              ; preds = %513
  %528 = load double, ptr %29, align 8, !tbaa !11
  %529 = fneg double %528
  br label %530

530:                                              ; preds = %527, %525
  %531 = phi double [ %526, %525 ], [ %529, %527 ]
  store double %531, ptr %36, align 8, !tbaa !11
  %532 = load double, ptr %34, align 8, !tbaa !11
  %533 = load double, ptr %36, align 8, !tbaa !11
  %534 = fcmp ogt double %532, %533
  br i1 %534, label %535, label %541

535:                                              ; preds = %530
  %536 = load double, ptr %36, align 8, !tbaa !11
  %537 = load double, ptr %34, align 8, !tbaa !11
  %538 = fdiv double %536, %537
  %539 = load double, ptr %38, align 8, !tbaa !11
  %540 = fmul double %539, %538
  store double %540, ptr %38, align 8, !tbaa !11
  br label %541

541:                                              ; preds = %535, %530
  br label %542

542:                                              ; preds = %541
  %543 = load i64, ptr %27, align 8, !tbaa !9
  %544 = load i64, ptr %33, align 8, !tbaa !9
  %545 = add nsw i64 %544, %543
  store i64 %545, ptr %33, align 8, !tbaa !9
  br label %475, !llvm.loop !18

546:                                              ; preds = %488
  %547 = load double, ptr %43, align 8, !tbaa !11
  %548 = load double, ptr %38, align 8, !tbaa !11
  %549 = fcmp ole double %547, %548
  br i1 %549, label %550, label %552

550:                                              ; preds = %546
  %551 = load double, ptr %43, align 8, !tbaa !11
  br label %554

552:                                              ; preds = %546
  %553 = load double, ptr %38, align 8, !tbaa !11
  br label %554

554:                                              ; preds = %552, %550
  %555 = phi double [ %551, %550 ], [ %553, %552 ]
  store double %555, ptr %43, align 8, !tbaa !11
  br label %614

556:                                              ; preds = %457
  store double 1.000000e+00, ptr %29, align 8, !tbaa !11
  %557 = load double, ptr %38, align 8, !tbaa !11
  %558 = load double, ptr %52, align 8, !tbaa !11
  %559 = fcmp oge double %557, %558
  br i1 %559, label %560, label %562

560:                                              ; preds = %556
  %561 = load double, ptr %38, align 8, !tbaa !11
  br label %564

562:                                              ; preds = %556
  %563 = load double, ptr %52, align 8, !tbaa !11
  br label %564

564:                                              ; preds = %562, %560
  %565 = phi double [ %561, %560 ], [ %563, %562 ]
  %566 = fdiv double 1.000000e+00, %565
  store double %566, ptr %30, align 8, !tbaa !11
  %567 = load double, ptr %29, align 8, !tbaa !11
  %568 = load double, ptr %30, align 8, !tbaa !11
  %569 = fcmp ole double %567, %568
  br i1 %569, label %570, label %572

570:                                              ; preds = %564
  %571 = load double, ptr %29, align 8, !tbaa !11
  br label %574

572:                                              ; preds = %564
  %573 = load double, ptr %30, align 8, !tbaa !11
  br label %574

574:                                              ; preds = %572, %570
  %575 = phi double [ %571, %570 ], [ %573, %572 ]
  store double %575, ptr %43, align 8, !tbaa !11
  %576 = load i64, ptr %47, align 8, !tbaa !9
  store i64 %576, ptr %27, align 8, !tbaa !9
  %577 = load i64, ptr %37, align 8, !tbaa !9
  store i64 %577, ptr %26, align 8, !tbaa !9
  %578 = load i64, ptr %51, align 8, !tbaa !9
  store i64 %578, ptr %33, align 8, !tbaa !9
  br label %579

579:                                              ; preds = %609, %574
  %580 = load i64, ptr %26, align 8, !tbaa !9
  %581 = icmp slt i64 %580, 0
  br i1 %581, label %582, label %587

582:                                              ; preds = %579
  %583 = load i64, ptr %33, align 8, !tbaa !9
  %584 = load i64, ptr %27, align 8, !tbaa !9
  %585 = icmp sge i64 %583, %584
  %586 = zext i1 %585 to i32
  br label %592

587:                                              ; preds = %579
  %588 = load i64, ptr %33, align 8, !tbaa !9
  %589 = load i64, ptr %27, align 8, !tbaa !9
  %590 = icmp sle i64 %588, %589
  %591 = zext i1 %590 to i32
  br label %592

592:                                              ; preds = %587, %582
  %593 = phi i32 [ %586, %582 ], [ %591, %587 ]
  %594 = icmp ne i32 %593, 0
  br i1 %594, label %595, label %613

595:                                              ; preds = %592
  %596 = load double, ptr %43, align 8, !tbaa !11
  %597 = load double, ptr %52, align 8, !tbaa !11
  %598 = fcmp ole double %596, %597
  br i1 %598, label %599, label %600

599:                                              ; preds = %595
  br label %615

600:                                              ; preds = %595
  %601 = load ptr, ptr %22, align 8, !tbaa !5
  %602 = load i64, ptr %33, align 8, !tbaa !9
  %603 = getelementptr inbounds double, ptr %601, i64 %602
  %604 = load double, ptr %603, align 8, !tbaa !11
  %605 = fadd double %604, 1.000000e+00
  store double %605, ptr %34, align 8, !tbaa !11
  %606 = load double, ptr %34, align 8, !tbaa !11
  %607 = load double, ptr %43, align 8, !tbaa !11
  %608 = fdiv double %607, %606
  store double %608, ptr %43, align 8, !tbaa !11
  br label %609

609:                                              ; preds = %600
  %610 = load i64, ptr %26, align 8, !tbaa !9
  %611 = load i64, ptr %33, align 8, !tbaa !9
  %612 = add nsw i64 %611, %610
  store i64 %612, ptr %33, align 8, !tbaa !9
  br label %579, !llvm.loop !19

613:                                              ; preds = %592
  br label %614

614:                                              ; preds = %613, %554
  br label %615

615:                                              ; preds = %614, %599, %495, %456
  br label %616

616:                                              ; preds = %615, %443
  %617 = load double, ptr %43, align 8, !tbaa !11
  %618 = load double, ptr %45, align 8, !tbaa !11
  %619 = fmul double %617, %618
  %620 = load double, ptr %52, align 8, !tbaa !11
  %621 = fcmp ogt double %619, %620
  br i1 %621, label %622, label %634

622:                                              ; preds = %616
  %623 = load ptr, ptr %13, align 8, !tbaa !5
  %624 = load ptr, ptr %14, align 8, !tbaa !5
  %625 = load ptr, ptr %15, align 8, !tbaa !5
  %626 = load ptr, ptr %17, align 8, !tbaa !5
  %627 = load ptr, ptr %18, align 8, !tbaa !5
  %628 = load i64, ptr %25, align 8, !tbaa !9
  %629 = getelementptr inbounds double, ptr %627, i64 %628
  %630 = load ptr, ptr %19, align 8, !tbaa !5
  %631 = load ptr, ptr %20, align 8, !tbaa !5
  %632 = getelementptr inbounds double, ptr %631, i64 1
  %633 = call i32 @f2c_dtrsv(ptr noundef %623, ptr noundef %624, ptr noundef %625, ptr noundef %626, ptr noundef %629, ptr noundef %630, ptr noundef %632, ptr noundef @c__1)
  br label %1409

634:                                              ; preds = %616
  %635 = load double, ptr %42, align 8, !tbaa !11
  %636 = load double, ptr %49, align 8, !tbaa !11
  %637 = fcmp ogt double %635, %636
  br i1 %637, label %638, label %649

638:                                              ; preds = %634
  %639 = load double, ptr %49, align 8, !tbaa !11
  %640 = load double, ptr %42, align 8, !tbaa !11
  %641 = fdiv double %639, %640
  %642 = load ptr, ptr %21, align 8, !tbaa !5
  store double %641, ptr %642, align 8, !tbaa !11
  %643 = load ptr, ptr %17, align 8, !tbaa !5
  %644 = load ptr, ptr %21, align 8, !tbaa !5
  %645 = load ptr, ptr %20, align 8, !tbaa !5
  %646 = getelementptr inbounds double, ptr %645, i64 1
  %647 = call i32 @f2c_dscal(ptr noundef %643, ptr noundef %644, ptr noundef %646, ptr noundef @c__1)
  %648 = load double, ptr %49, align 8, !tbaa !11
  store double %648, ptr %42, align 8, !tbaa !11
  br label %649

649:                                              ; preds = %638, %634
  %650 = load i64, ptr %50, align 8, !tbaa !9
  %651 = icmp ne i64 %650, 0
  br i1 %651, label %652, label %995

652:                                              ; preds = %649
  %653 = load i64, ptr %47, align 8, !tbaa !9
  store i64 %653, ptr %26, align 8, !tbaa !9
  %654 = load i64, ptr %37, align 8, !tbaa !9
  store i64 %654, ptr %27, align 8, !tbaa !9
  %655 = load i64, ptr %51, align 8, !tbaa !9
  store i64 %655, ptr %33, align 8, !tbaa !9
  br label %656

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

659:                                              ; preds = %656
  %660 = load i64, ptr %33, align 8, !tbaa !9
  %661 = load i64, ptr %26, 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 %33, align 8, !tbaa !9
  %666 = load i64, ptr %26, 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 %994

672:                                              ; preds = %669
  %673 = load ptr, ptr %20, align 8, !tbaa !5
  %674 = load i64, ptr %33, 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 %29, align 8, !tbaa !11
  %677 = load double, ptr %29, 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 %29, align 8, !tbaa !11
  br label %684

681:                                              ; preds = %672
  %682 = load double, ptr %29, 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 %34, align 8, !tbaa !11
  %686 = load i64, ptr %53, align 8, !tbaa !9
  %687 = icmp ne i64 %686, 0
  br i1 %687, label %688, label %699

688:                                              ; preds = %684
  %689 = load ptr, ptr %18, align 8, !tbaa !5
  %690 = load i64, ptr %33, align 8, !tbaa !9
  %691 = load i64, ptr %33, align 8, !tbaa !9
  %692 = load i64, ptr %24, align 8, !tbaa !9
  %693 = mul nsw i64 %691, %692
  %694 = add nsw i64 %690, %693
  %695 = getelementptr inbounds double, ptr %689, i64 %694
  %696 = load double, ptr %695, align 8, !tbaa !11
  %697 = load double, ptr %45, align 8, !tbaa !11
  %698 = fmul double %696, %697
  store double %698, ptr %41, align 8, !tbaa !11
  br label %705

699:                                              ; preds = %684
  %700 = load double, ptr %45, align 8, !tbaa !11
  store double %700, ptr %41, align 8, !tbaa !11
  %701 = load double, ptr %45, align 8, !tbaa !11
  %702 = fcmp oeq double %701, 1.000000e+00
  br i1 %702, label %703, label %704

703:                                              ; preds = %699
  br label %842

704:                                              ; preds = %699
  br label %705

705:                                              ; preds = %704, %688
  %706 = load double, ptr %41, align 8, !tbaa !11
  %707 = fcmp oge double %706, 0.000000e+00
  br i1 %707, label %708, label %710

708:                                              ; preds = %705
  %709 = load double, ptr %41, align 8, !tbaa !11
  br label %713

710:                                              ; preds = %705
  %711 = load double, ptr %41, align 8, !tbaa !11
  %712 = fneg double %711
  br label %713

713:                                              ; preds = %710, %708
  %714 = phi double [ %709, %708 ], [ %712, %710 ]
  store double %714, ptr %36, align 8, !tbaa !11
  %715 = load double, ptr %36, align 8, !tbaa !11
  %716 = load double, ptr %52, align 8, !tbaa !11
  %717 = fcmp ogt double %715, %716
  br i1 %717, label %718, label %762

718:                                              ; preds = %713
  %719 = load double, ptr %36, align 8, !tbaa !11
  %720 = fcmp olt double %719, 1.000000e+00
  br i1 %720, label %721, label %742

721:                                              ; preds = %718
  %722 = load double, ptr %34, align 8, !tbaa !11
  %723 = load double, ptr %36, align 8, !tbaa !11
  %724 = load double, ptr %49, align 8, !tbaa !11
  %725 = fmul double %723, %724
  %726 = fcmp ogt double %722, %725
  br i1 %726, label %727, label %741

727:                                              ; preds = %721
  %728 = load double, ptr %34, align 8, !tbaa !11
  %729 = fdiv double 1.000000e+00, %728
  store double %729, ptr %35, align 8, !tbaa !11
  %730 = load ptr, ptr %17, align 8, !tbaa !5
  %731 = load ptr, ptr %20, align 8, !tbaa !5
  %732 = getelementptr inbounds double, ptr %731, i64 1
  %733 = call i32 @f2c_dscal(ptr noundef %730, ptr noundef %35, ptr noundef %732, ptr noundef @c__1)
  %734 = load double, ptr %35, align 8, !tbaa !11
  %735 = load ptr, ptr %21, align 8, !tbaa !5
  %736 = load double, ptr %735, align 8, !tbaa !11
  %737 = fmul double %736, %734
  store double %737, ptr %735, align 8, !tbaa !11
  %738 = load double, ptr %35, align 8, !tbaa !11
  %739 = load double, ptr %42, align 8, !tbaa !11
  %740 = fmul double %739, %738
  store double %740, ptr %42, align 8, !tbaa !11
  br label %741

741:                                              ; preds = %727, %721
  br label %742

742:                                              ; preds = %741, %718
  %743 = load double, ptr %41, align 8, !tbaa !11
  %744 = load ptr, ptr %20, align 8, !tbaa !5
  %745 = load i64, ptr %33, align 8, !tbaa !9
  %746 = getelementptr inbounds double, ptr %744, i64 %745
  %747 = load double, ptr %746, align 8, !tbaa !11
  %748 = fdiv double %747, %743
  store double %748, ptr %746, align 8, !tbaa !11
  %749 = load ptr, ptr %20, align 8, !tbaa !5
  %750 = load i64, ptr %33, align 8, !tbaa !9
  %751 = getelementptr inbounds double, ptr %749, i64 %750
  %752 = load double, ptr %751, align 8, !tbaa !11
  store double %752, ptr %29, align 8, !tbaa !11
  %753 = load double, ptr %29, align 8, !tbaa !11
  %754 = fcmp oge double %753, 0.000000e+00
  br i1 %754, label %755, label %757

755:                                              ; preds = %742
  %756 = load double, ptr %29, align 8, !tbaa !11
  br label %760

757:                                              ; preds = %742
  %758 = load double, ptr %29, align 8, !tbaa !11
  %759 = fneg double %758
  br label %760

760:                                              ; preds = %757, %755
  %761 = phi double [ %756, %755 ], [ %759, %757 ]
  store double %761, ptr %34, align 8, !tbaa !11
  br label %841

762:                                              ; preds = %713
  %763 = load double, ptr %36, align 8, !tbaa !11
  %764 = fcmp ogt double %763, 0.000000e+00
  br i1 %764, label %765, label %821

765:                                              ; preds = %762
  %766 = load double, ptr %34, align 8, !tbaa !11
  %767 = load double, ptr %36, align 8, !tbaa !11
  %768 = load double, ptr %49, align 8, !tbaa !11
  %769 = fmul double %767, %768
  %770 = fcmp ogt double %766, %769
  br i1 %770, label %771, label %801

771:                                              ; preds = %765
  %772 = load double, ptr %36, align 8, !tbaa !11
  %773 = load double, ptr %49, align 8, !tbaa !11
  %774 = fmul double %772, %773
  %775 = load double, ptr %34, align 8, !tbaa !11
  %776 = fdiv double %774, %775
  store double %776, ptr %35, align 8, !tbaa !11
  %777 = load ptr, ptr %22, align 8, !tbaa !5
  %778 = load i64, ptr %33, align 8, !tbaa !9
  %779 = getelementptr inbounds double, ptr %777, i64 %778
  %780 = load double, ptr %779, align 8, !tbaa !11
  %781 = fcmp ogt double %780, 1.000000e+00
  br i1 %781, label %782, label %789

782:                                              ; preds = %771
  %783 = load ptr, ptr %22, align 8, !tbaa !5
  %784 = load i64, ptr %33, align 8, !tbaa !9
  %785 = getelementptr inbounds double, ptr %783, i64 %784
  %786 = load double, ptr %785, align 8, !tbaa !11
  %787 = load double, ptr %35, align 8, !tbaa !11
  %788 = fdiv double %787, %786
  store double %788, ptr %35, align 8, !tbaa !11
  br label %789

789:                                              ; preds = %782, %771
  %790 = load ptr, ptr %17, align 8, !tbaa !5
  %791 = load ptr, ptr %20, align 8, !tbaa !5
  %792 = getelementptr inbounds double, ptr %791, i64 1
  %793 = call i32 @f2c_dscal(ptr noundef %790, ptr noundef %35, ptr noundef %792, ptr noundef @c__1)
  %794 = load double, ptr %35, align 8, !tbaa !11
  %795 = load ptr, ptr %21, align 8, !tbaa !5
  %796 = load double, ptr %795, align 8, !tbaa !11
  %797 = fmul double %796, %794
  store double %797, ptr %795, align 8, !tbaa !11
  %798 = load double, ptr %35, align 8, !tbaa !11
  %799 = load double, ptr %42, align 8, !tbaa !11
  %800 = fmul double %799, %798
  store double %800, ptr %42, align 8, !tbaa !11
  br label %801

801:                                              ; preds = %789, %765
  %802 = load double, ptr %41, align 8, !tbaa !11
  %803 = load ptr, ptr %20, align 8, !tbaa !5
  %804 = load i64, ptr %33, align 8, !tbaa !9
  %805 = getelementptr inbounds double, ptr %803, i64 %804
  %806 = load double, ptr %805, align 8, !tbaa !11
  %807 = fdiv double %806, %802
  store double %807, ptr %805, align 8, !tbaa !11
  %808 = load ptr, ptr %20, align 8, !tbaa !5
  %809 = load i64, ptr %33, align 8, !tbaa !9
  %810 = getelementptr inbounds double, ptr %808, i64 %809
  %811 = load double, ptr %810, align 8, !tbaa !11
  store double %811, ptr %29, align 8, !tbaa !11
  %812 = load double, ptr %29, align 8, !tbaa !11
  %813 = fcmp oge double %812, 0.000000e+00
  br i1 %813, label %814, label %816

814:                                              ; preds = %801
  %815 = load double, ptr %29, align 8, !tbaa !11
  br label %819

816:                                              ; preds = %801
  %817 = load double, ptr %29, align 8, !tbaa !11
  %818 = fneg double %817
  br label %819

819:                                              ; preds = %816, %814
  %820 = phi double [ %815, %814 ], [ %818, %816 ]
  store double %820, ptr %34, align 8, !tbaa !11
  br label %840

821:                                              ; preds = %762
  %822 = load ptr, ptr %17, align 8, !tbaa !5
  %823 = load i64, ptr %822, align 8, !tbaa !9
  store i64 %823, ptr %28, align 8, !tbaa !9
  store i64 1, ptr %32, align 8, !tbaa !9
  br label %824

824:                                              ; preds = %832, %821
  %825 = load i64, ptr %32, align 8, !tbaa !9
  %826 = load i64, ptr %28, align 8, !tbaa !9
  %827 = icmp sle i64 %825, %826
  br i1 %827, label %828, label %835

828:                                              ; preds = %824
  %829 = load ptr, ptr %20, align 8, !tbaa !5
  %830 = load i64, ptr %32, align 8, !tbaa !9
  %831 = getelementptr inbounds double, ptr %829, i64 %830
  store double 0.000000e+00, ptr %831, align 8, !tbaa !11
  br label %832

832:                                              ; preds = %828
  %833 = load i64, ptr %32, align 8, !tbaa !9
  %834 = add nsw i64 %833, 1
  store i64 %834, ptr %32, align 8, !tbaa !9
  br label %824, !llvm.loop !20

835:                                              ; preds = %824
  %836 = load ptr, ptr %20, align 8, !tbaa !5
  %837 = load i64, ptr %33, align 8, !tbaa !9
  %838 = getelementptr inbounds double, ptr %836, i64 %837
  store double 1.000000e+00, ptr %838, align 8, !tbaa !11
  store double 1.000000e+00, ptr %34, align 8, !tbaa !11
  %839 = load ptr, ptr %21, align 8, !tbaa !5
  store double 0.000000e+00, ptr %839, align 8, !tbaa !11
  store double 0.000000e+00, ptr %42, align 8, !tbaa !11
  br label %840

840:                                              ; preds = %835, %819
  br label %841

841:                                              ; preds = %840, %760
  br label %842

842:                                              ; preds = %841, %703
  %843 = load double, ptr %34, align 8, !tbaa !11
  %844 = fcmp ogt double %843, 1.000000e+00
  br i1 %844, label %845, label %870

845:                                              ; preds = %842
  %846 = load double, ptr %34, align 8, !tbaa !11
  %847 = fdiv double 1.000000e+00, %846
  store double %847, ptr %35, align 8, !tbaa !11
  %848 = load ptr, ptr %22, align 8, !tbaa !5
  %849 = load i64, ptr %33, align 8, !tbaa !9
  %850 = getelementptr inbounds double, ptr %848, i64 %849
  %851 = load double, ptr %850, align 8, !tbaa !11
  %852 = load double, ptr %49, align 8, !tbaa !11
  %853 = load double, ptr %42, align 8, !tbaa !11
  %854 = fsub double %852, %853
  %855 = load double, ptr %35, align 8, !tbaa !11
  %856 = fmul double %854, %855
  %857 = fcmp ogt double %851, %856
  br i1 %857, label %858, label %869

858:                                              ; preds = %845
  %859 = load double, ptr %35, align 8, !tbaa !11
  %860 = fmul double %859, 5.000000e-01
  store double %860, ptr %35, align 8, !tbaa !11
  %861 = load ptr, ptr %17, align 8, !tbaa !5
  %862 = load ptr, ptr %20, align 8, !tbaa !5
  %863 = getelementptr inbounds double, ptr %862, i64 1
  %864 = call i32 @f2c_dscal(ptr noundef %861, ptr noundef %35, ptr noundef %863, ptr noundef @c__1)
  %865 = load double, ptr %35, align 8, !tbaa !11
  %866 = load ptr, ptr %21, align 8, !tbaa !5
  %867 = load double, ptr %866, align 8, !tbaa !11
  %868 = fmul double %867, %865
  store double %868, ptr %866, align 8, !tbaa !11
  br label %869

869:                                              ; preds = %858, %845
  br label %890

870:                                              ; preds = %842
  %871 = load double, ptr %34, align 8, !tbaa !11
  %872 = load ptr, ptr %22, align 8, !tbaa !5
  %873 = load i64, ptr %33, align 8, !tbaa !9
  %874 = getelementptr inbounds double, ptr %872, i64 %873
  %875 = load double, ptr %874, align 8, !tbaa !11
  %876 = fmul double %871, %875
  %877 = load double, ptr %49, align 8, !tbaa !11
  %878 = load double, ptr %42, align 8, !tbaa !11
  %879 = fsub double %877, %878
  %880 = fcmp ogt double %876, %879
  br i1 %880, label %881, label %889

881:                                              ; preds = %870
  %882 = load ptr, ptr %17, align 8, !tbaa !5
  %883 = load ptr, ptr %20, align 8, !tbaa !5
  %884 = getelementptr inbounds double, ptr %883, i64 1
  %885 = call i32 @f2c_dscal(ptr noundef %882, ptr noundef @c_b36, ptr noundef %884, ptr noundef @c__1)
  %886 = load ptr, ptr %21, align 8, !tbaa !5
  %887 = load double, ptr %886, align 8, !tbaa !11
  %888 = fmul double %887, 5.000000e-01
  store double %888, ptr %886, align 8, !tbaa !11
  br label %889

889:                                              ; preds = %881, %870
  br label %890

890:                                              ; preds = %889, %869
  %891 = load i64, ptr %48, align 8, !tbaa !9
  %892 = icmp ne i64 %891, 0
  br i1 %892, label %893, label %934

893:                                              ; preds = %890
  %894 = load i64, ptr %33, align 8, !tbaa !9
  %895 = icmp sgt i64 %894, 1
  br i1 %895, label %896, label %933

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

926:                                              ; preds = %896
  %927 = load double, ptr %29, align 8, !tbaa !11
  br label %931

928:                                              ; preds = %896
  %929 = load double, ptr %29, align 8, !tbaa !11
  %930 = fneg double %929
  br label %931

931:                                              ; preds = %928, %926
  %932 = phi double [ %927, %926 ], [ %930, %928 ]
  store double %932, ptr %42, align 8, !tbaa !11
  br label %933

933:                                              ; preds = %931, %893
  br label %989

934:                                              ; preds = %890
  %935 = load i64, ptr %33, align 8, !tbaa !9
  %936 = load ptr, ptr %17, align 8, !tbaa !5
  %937 = load i64, ptr %936, align 8, !tbaa !9
  %938 = icmp slt i64 %935, %937
  br i1 %938, label %939, label %988

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

981:                                              ; preds = %939
  %982 = load double, ptr %29, align 8, !tbaa !11
  br label %986

983:                                              ; preds = %939
  %984 = load double, ptr %29, align 8, !tbaa !11
  %985 = fneg double %984
  br label %986

986:                                              ; preds = %983, %981
  %987 = phi double [ %982, %981 ], [ %985, %983 ]
  store double %987, ptr %42, align 8, !tbaa !11
  br label %988

988:                                              ; preds = %986, %934
  br label %989

989:                                              ; preds = %988, %933
  br label %990

990:                                              ; preds = %989
  %991 = load i64, ptr %27, align 8, !tbaa !9
  %992 = load i64, ptr %33, align 8, !tbaa !9
  %993 = add nsw i64 %992, %991
  store i64 %993, ptr %33, align 8, !tbaa !9
  br label %656, !llvm.loop !21

994:                                              ; preds = %669
  br label %1404

995:                                              ; preds = %649
  %996 = load i64, ptr %47, align 8, !tbaa !9
  store i64 %996, ptr %27, align 8, !tbaa !9
  %997 = load i64, ptr %37, align 8, !tbaa !9
  store i64 %997, ptr %26, align 8, !tbaa !9
  %998 = load i64, ptr %51, align 8, !tbaa !9
  store i64 %998, ptr %33, align 8, !tbaa !9
  br label %999

999:                                              ; preds = %1399, %995
  %1000 = load i64, ptr %26, align 8, !tbaa !9
  %1001 = icmp slt i64 %1000, 0
  br i1 %1001, label %1002, label %1007

1002:                                             ; preds = %999
  %1003 = load i64, ptr %33, align 8, !tbaa !9
  %1004 = load i64, ptr %27, align 8, !tbaa !9
  %1005 = icmp sge i64 %1003, %1004
  %1006 = zext i1 %1005 to i32
  br label %1012

1007:                                             ; preds = %999
  %1008 = load i64, ptr %33, align 8, !tbaa !9
  %1009 = load i64, ptr %27, align 8, !tbaa !9
  %1010 = icmp sle i64 %1008, %1009
  %1011 = zext i1 %1010 to i32
  br label %1012

1012:                                             ; preds = %1007, %1002
  %1013 = phi i32 [ %1006, %1002 ], [ %1011, %1007 ]
  %1014 = icmp ne i32 %1013, 0
  br i1 %1014, label %1015, label %1403

1015:                                             ; preds = %1012
  %1016 = load ptr, ptr %20, align 8, !tbaa !5
  %1017 = load i64, ptr %33, align 8, !tbaa !9
  %1018 = getelementptr inbounds double, ptr %1016, i64 %1017
  %1019 = load double, ptr %1018, align 8, !tbaa !11
  store double %1019, ptr %29, align 8, !tbaa !11
  %1020 = load double, ptr %29, align 8, !tbaa !11
  %1021 = fcmp oge double %1020, 0.000000e+00
  br i1 %1021, label %1022, label %1024

1022:                                             ; preds = %1015
  %1023 = load double, ptr %29, align 8, !tbaa !11
  br label %1027

1024:                                             ; preds = %1015
  %1025 = load double, ptr %29, align 8, !tbaa !11
  %1026 = fneg double %1025
  br label %1027

1027:                                             ; preds = %1024, %1022
  %1028 = phi double [ %1023, %1022 ], [ %1026, %1024 ]
  store double %1028, ptr %34, align 8, !tbaa !11
  %1029 = load double, ptr %45, align 8, !tbaa !11
  store double %1029, ptr %46, align 8, !tbaa !11
  %1030 = load double, ptr %42, align 8, !tbaa !11
  %1031 = fcmp oge double %1030, 1.000000e+00
  br i1 %1031, label %1032, label %1034

1032:                                             ; preds = %1027
  %1033 = load double, ptr %42, align 8, !tbaa !11
  br label %1035

1034:                                             ; preds = %1027
  br label %1035

1035:                                             ; preds = %1034, %1032
  %1036 = phi double [ %1033, %1032 ], [ 1.000000e+00, %1034 ]
  %1037 = fdiv double 1.000000e+00, %1036
  store double %1037, ptr %35, align 8, !tbaa !11
  %1038 = load ptr, ptr %22, align 8, !tbaa !5
  %1039 = load i64, ptr %33, align 8, !tbaa !9
  %1040 = getelementptr inbounds double, ptr %1038, i64 %1039
  %1041 = load double, ptr %1040, align 8, !tbaa !11
  %1042 = load double, ptr %49, align 8, !tbaa !11
  %1043 = load double, ptr %34, align 8, !tbaa !11
  %1044 = fsub double %1042, %1043
  %1045 = load double, ptr %35, align 8, !tbaa !11
  %1046 = fmul double %1044, %1045
  %1047 = fcmp ogt double %1041, %1046
  br i1 %1047, label %1048, label %1110

1048:                                             ; preds = %1035
  %1049 = load double, ptr %35, align 8, !tbaa !11
  %1050 = fmul double %1049, 5.000000e-01
  store double %1050, ptr %35, align 8, !tbaa !11
  %1051 = load i64, ptr %53, align 8, !tbaa !9
  %1052 = icmp ne i64 %1051, 0
  br i1 %1052, label %1053, label %1064

1053:                                             ; preds = %1048
  %1054 = load ptr, ptr %18, align 8, !tbaa !5
  %1055 = load i64, ptr %33, align 8, !tbaa !9
  %1056 = load i64, ptr %33, align 8, !tbaa !9
  %1057 = load i64, ptr %24, align 8, !tbaa !9
  %1058 = mul nsw i64 %1056, %1057
  %1059 = add nsw i64 %1055, %1058
  %1060 = getelementptr inbounds double, ptr %1054, i64 %1059
  %1061 = load double, ptr %1060, align 8, !tbaa !11
  %1062 = load double, ptr %45, align 8, !tbaa !11
  %1063 = fmul double %1061, %1062
  store double %1063, ptr %41, align 8, !tbaa !11
  br label %1066

1064:                                             ; preds = %1048
  %1065 = load double, ptr %45, align 8, !tbaa !11
  store double %1065, ptr %41, align 8, !tbaa !11
  br label %1066

1066:                                             ; preds = %1064, %1053
  %1067 = load double, ptr %41, align 8, !tbaa !11
  %1068 = fcmp oge double %1067, 0.000000e+00
  br i1 %1068, label %1069, label %1071

1069:                                             ; preds = %1066
  %1070 = load double, ptr %41, align 8, !tbaa !11
  br label %1074

1071:                                             ; preds = %1066
  %1072 = load double, ptr %41, align 8, !tbaa !11
  %1073 = fneg double %1072
  br label %1074

1074:                                             ; preds = %1071, %1069
  %1075 = phi double [ %1070, %1069 ], [ %1073, %1071 ]
  store double %1075, ptr %36, align 8, !tbaa !11
  %1076 = load double, ptr %36, align 8, !tbaa !11
  %1077 = fcmp ogt double %1076, 1.000000e+00
  br i1 %1077, label %1078, label %1094

1078:                                             ; preds = %1074
  store double 1.000000e+00, ptr %29, align 8, !tbaa !11
  %1079 = load double, ptr %35, align 8, !tbaa !11
  %1080 = load double, ptr %36, align 8, !tbaa !11
  %1081 = fmul double %1079, %1080
  store double %1081, ptr %30, align 8, !tbaa !11
  %1082 = load double, ptr %29, align 8, !tbaa !11
  %1083 = load double, ptr %30, align 8, !tbaa !11
  %1084 = fcmp ole double %1082, %1083
  br i1 %1084, label %1085, label %1087

1085:                                             ; preds = %1078
  %1086 = load double, ptr %29, align 8, !tbaa !11
  br label %1089

1087:                                             ; preds = %1078
  %1088 = load double, ptr %30, align 8, !tbaa !11
  br label %1089

1089:                                             ; preds = %1087, %1085
  %1090 = phi double [ %1086, %1085 ], [ %1088, %1087 ]
  store double %1090, ptr %35, align 8, !tbaa !11
  %1091 = load double, ptr %41, align 8, !tbaa !11
  %1092 = load double, ptr %46, align 8, !tbaa !11
  %1093 = fdiv double %1092, %1091
  store double %1093, ptr %46, align 8, !tbaa !11
  br label %1094

1094:                                             ; preds = %1089, %1074
  %1095 = load double, ptr %35, align 8, !tbaa !11
  %1096 = fcmp olt double %1095, 1.000000e+00
  br i1 %1096, label %1097, label %1109

1097:                                             ; preds = %1094
  %1098 = load ptr, ptr %17, align 8, !tbaa !5
  %1099 = load ptr, ptr %20, align 8, !tbaa !5
  %1100 = getelementptr inbounds double, ptr %1099, i64 1
  %1101 = call i32 @f2c_dscal(ptr noundef %1098, ptr noundef %35, ptr noundef %1100, ptr noundef @c__1)
  %1102 = load double, ptr %35, align 8, !tbaa !11
  %1103 = load ptr, ptr %21, align 8, !tbaa !5
  %1104 = load double, ptr %1103, align 8, !tbaa !11
  %1105 = fmul double %1104, %1102
  store double %1105, ptr %1103, align 8, !tbaa !11
  %1106 = load double, ptr %35, align 8, !tbaa !11
  %1107 = load double, ptr %42, align 8, !tbaa !11
  %1108 = fmul double %1107, %1106
  store double %1108, ptr %42, align 8, !tbaa !11
  br label %1109

1109:                                             ; preds = %1097, %1094
  br label %1110

1110:                                             ; preds = %1109, %1035
  store double 0.000000e+00, ptr %44, align 8, !tbaa !11
  %1111 = load double, ptr %46, align 8, !tbaa !11
  %1112 = fcmp oeq double %1111, 1.000000e+00
  br i1 %1112, label %1113, label %1153

1113:                                             ; preds = %1110
  %1114 = load i64, ptr %48, align 8, !tbaa !9
  %1115 = icmp ne i64 %1114, 0
  br i1 %1115, label %1116, label %1128

1116:                                             ; preds = %1113
  %1117 = load i64, ptr %33, align 8, !tbaa !9
  %1118 = sub nsw i64 %1117, 1
  store i64 %1118, ptr %28, align 8, !tbaa !9
  %1119 = load ptr, ptr %18, align 8, !tbaa !5
  %1120 = load i64, ptr %33, align 8, !tbaa !9
  %1121 = load i64, ptr %24, align 8, !tbaa !9
  %1122 = mul nsw i64 %1120, %1121
  %1123 = add nsw i64 %1122, 1
  %1124 = getelementptr inbounds double, ptr %1119, i64 %1123
  %1125 = load ptr, ptr %20, align 8, !tbaa !5
  %1126 = getelementptr inbounds double, ptr %1125, i64 1
  %1127 = call double @f2c_ddot(ptr noundef %28, ptr noundef %1124, ptr noundef @c__1, ptr noundef %1126, ptr noundef @c__1)
  store double %1127, ptr %44, align 8, !tbaa !11
  br label %1152

1128:                                             ; preds = %1113
  %1129 = load i64, ptr %33, align 8, !tbaa !9
  %1130 = load ptr, ptr %17, align 8, !tbaa !5
  %1131 = load i64, ptr %1130, align 8, !tbaa !9
  %1132 = icmp slt i64 %1129, %1131
  br i1 %1132, label %1133, label %1151

1133:                                             ; preds = %1128
  %1134 = load ptr, ptr %17, align 8, !tbaa !5
  %1135 = load i64, ptr %1134, align 8, !tbaa !9
  %1136 = load i64, ptr %33, align 8, !tbaa !9
  %1137 = sub nsw i64 %1135, %1136
  store i64 %1137, ptr %28, align 8, !tbaa !9
  %1138 = load ptr, ptr %18, align 8, !tbaa !5
  %1139 = load i64, ptr %33, align 8, !tbaa !9
  %1140 = add nsw i64 %1139, 1
  %1141 = load i64, ptr %33, align 8, !tbaa !9
  %1142 = load i64, ptr %24, align 8, !tbaa !9
  %1143 = mul nsw i64 %1141, %1142
  %1144 = add nsw i64 %1140, %1143
  %1145 = getelementptr inbounds double, ptr %1138, i64 %1144
  %1146 = load ptr, ptr %20, align 8, !tbaa !5
  %1147 = load i64, ptr %33, align 8, !tbaa !9
  %1148 = add nsw i64 %1147, 1
  %1149 = getelementptr inbounds double, ptr %1146, i64 %1148
  %1150 = call double @f2c_ddot(ptr noundef %28, ptr noundef %1145, ptr noundef @c__1, ptr noundef %1149, ptr noundef @c__1)
  store double %1150, ptr %44, align 8, !tbaa !11
  br label %1151

1151:                                             ; preds = %1133, %1128
  br label %1152

1152:                                             ; preds = %1151, %1116
  br label %1221

1153:                                             ; preds = %1110
  %1154 = load i64, ptr %48, align 8, !tbaa !9
  %1155 = icmp ne i64 %1154, 0
  br i1 %1155, label %1156, label %1184

1156:                                             ; preds = %1153
  %1157 = load i64, ptr %33, align 8, !tbaa !9
  %1158 = sub nsw i64 %1157, 1
  store i64 %1158, ptr %28, align 8, !tbaa !9
  store i64 1, ptr %32, align 8, !tbaa !9
  br label %1159

1159:                                             ; preds = %1180, %1156
  %1160 = load i64, ptr %32, align 8, !tbaa !9
  %1161 = load i64, ptr %28, align 8, !tbaa !9
  %1162 = icmp sle i64 %1160, %1161
  br i1 %1162, label %1163, label %1183

1163:                                             ; preds = %1159
  %1164 = load ptr, ptr %18, align 8, !tbaa !5
  %1165 = load i64, ptr %32, align 8, !tbaa !9
  %1166 = load i64, ptr %33, align 8, !tbaa !9
  %1167 = load i64, ptr %24, align 8, !tbaa !9
  %1168 = mul nsw i64 %1166, %1167
  %1169 = add nsw i64 %1165, %1168
  %1170 = getelementptr inbounds double, ptr %1164, i64 %1169
  %1171 = load double, ptr %1170, align 8, !tbaa !11
  %1172 = load double, ptr %46, align 8, !tbaa !11
  %1173 = fmul double %1171, %1172
  %1174 = load ptr, ptr %20, align 8, !tbaa !5
  %1175 = load i64, ptr %32, align 8, !tbaa !9
  %1176 = getelementptr inbounds double, ptr %1174, i64 %1175
  %1177 = load double, ptr %1176, align 8, !tbaa !11
  %1178 = load double, ptr %44, align 8, !tbaa !11
  %1179 = call double @llvm.fmuladd.f64(double %1173, double %1177, double %1178)
  store double %1179, ptr %44, align 8, !tbaa !11
  br label %1180

1180:                                             ; preds = %1163
  %1181 = load i64, ptr %32, align 8, !tbaa !9
  %1182 = add nsw i64 %1181, 1
  store i64 %1182, ptr %32, align 8, !tbaa !9
  br label %1159, !llvm.loop !22

1183:                                             ; preds = %1159
  br label %1220

1184:                                             ; preds = %1153
  %1185 = load i64, ptr %33, align 8, !tbaa !9
  %1186 = load ptr, ptr %17, align 8, !tbaa !5
  %1187 = load i64, ptr %1186, align 8, !tbaa !9
  %1188 = icmp slt i64 %1185, %1187
  br i1 %1188, label %1189, label %1219

1189:                                             ; preds = %1184
  %1190 = load ptr, ptr %17, align 8, !tbaa !5
  %1191 = load i64, ptr %1190, align 8, !tbaa !9
  store i64 %1191, ptr %28, align 8, !tbaa !9
  %1192 = load i64, ptr %33, align 8, !tbaa !9
  %1193 = add nsw i64 %1192, 1
  store i64 %1193, ptr %32, align 8, !tbaa !9
  br label %1194

1194:                                             ; preds = %1215, %1189
  %1195 = load i64, ptr %32, align 8, !tbaa !9
  %1196 = load i64, ptr %28, align 8, !tbaa !9
  %1197 = icmp sle i64 %1195, %1196
  br i1 %1197, label %1198, label %1218

1198:                                             ; preds = %1194
  %1199 = load ptr, ptr %18, align 8, !tbaa !5
  %1200 = load i64, ptr %32, align 8, !tbaa !9
  %1201 = load i64, ptr %33, align 8, !tbaa !9
  %1202 = load i64, ptr %24, align 8, !tbaa !9
  %1203 = mul nsw i64 %1201, %1202
  %1204 = add nsw i64 %1200, %1203
  %1205 = getelementptr inbounds double, ptr %1199, i64 %1204
  %1206 = load double, ptr %1205, align 8, !tbaa !11
  %1207 = load double, ptr %46, align 8, !tbaa !11
  %1208 = fmul double %1206, %1207
  %1209 = load ptr, ptr %20, align 8, !tbaa !5
  %1210 = load i64, ptr %32, align 8, !tbaa !9
  %1211 = getelementptr inbounds double, ptr %1209, i64 %1210
  %1212 = load double, ptr %1211, align 8, !tbaa !11
  %1213 = load double, ptr %44, align 8, !tbaa !11
  %1214 = call double @llvm.fmuladd.f64(double %1208, double %1212, double %1213)
  store double %1214, ptr %44, align 8, !tbaa !11
  br label %1215

1215:                                             ; preds = %1198
  %1216 = load i64, ptr %32, align 8, !tbaa !9
  %1217 = add nsw i64 %1216, 1
  store i64 %1217, ptr %32, align 8, !tbaa !9
  br label %1194, !llvm.loop !23

1218:                                             ; preds = %1194
  br label %1219

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

1220:                                             ; preds = %1219, %1183
  br label %1221

1221:                                             ; preds = %1220, %1152
  %1222 = load double, ptr %46, align 8, !tbaa !11
  %1223 = load double, ptr %45, align 8, !tbaa !11
  %1224 = fcmp oeq double %1222, %1223
  br i1 %1224, label %1225, label %1363

1225:                                             ; preds = %1221
  %1226 = load double, ptr %44, align 8, !tbaa !11
  %1227 = load ptr, ptr %20, align 8, !tbaa !5
  %1228 = load i64, ptr %33, align 8, !tbaa !9
  %1229 = getelementptr inbounds double, ptr %1227, i64 %1228
  %1230 = load double, ptr %1229, align 8, !tbaa !11
  %1231 = fsub double %1230, %1226
  store double %1231, ptr %1229, align 8, !tbaa !11
  %1232 = load ptr, ptr %20, align 8, !tbaa !5
  %1233 = load i64, ptr %33, align 8, !tbaa !9
  %1234 = getelementptr inbounds double, ptr %1232, i64 %1233
  %1235 = load double, ptr %1234, align 8, !tbaa !11
  store double %1235, ptr %29, align 8, !tbaa !11
  %1236 = load double, ptr %29, align 8, !tbaa !11
  %1237 = fcmp oge double %1236, 0.000000e+00
  br i1 %1237, label %1238, label %1240

1238:                                             ; preds = %1225
  %1239 = load double, ptr %29, align 8, !tbaa !11
  br label %1243

1240:                                             ; preds = %1225
  %1241 = load double, ptr %29, align 8, !tbaa !11
  %1242 = fneg double %1241
  br label %1243

1243:                                             ; preds = %1240, %1238
  %1244 = phi double [ %1239, %1238 ], [ %1242, %1240 ]
  store double %1244, ptr %34, align 8, !tbaa !11
  %1245 = load i64, ptr %53, align 8, !tbaa !9
  %1246 = icmp ne i64 %1245, 0
  br i1 %1246, label %1247, label %1258

1247:                                             ; preds = %1243
  %1248 = load ptr, ptr %18, align 8, !tbaa !5
  %1249 = load i64, ptr %33, align 8, !tbaa !9
  %1250 = load i64, ptr %33, align 8, !tbaa !9
  %1251 = load i64, ptr %24, align 8, !tbaa !9
  %1252 = mul nsw i64 %1250, %1251
  %1253 = add nsw i64 %1249, %1252
  %1254 = getelementptr inbounds double, ptr %1248, i64 %1253
  %1255 = load double, ptr %1254, align 8, !tbaa !11
  %1256 = load double, ptr %45, align 8, !tbaa !11
  %1257 = fmul double %1255, %1256
  store double %1257, ptr %41, align 8, !tbaa !11
  br label %1264

1258:                                             ; preds = %1243
  %1259 = load double, ptr %45, align 8, !tbaa !11
  store double %1259, ptr %41, align 8, !tbaa !11
  %1260 = load double, ptr %45, align 8, !tbaa !11
  %1261 = fcmp oeq double %1260, 1.000000e+00
  br i1 %1261, label %1262, label %1263

1262:                                             ; preds = %1258
  br label %1362

1263:                                             ; preds = %1258
  br label %1264

1264:                                             ; preds = %1263, %1247
  %1265 = load double, ptr %41, align 8, !tbaa !11
  %1266 = fcmp oge double %1265, 0.000000e+00
  br i1 %1266, label %1267, label %1269

1267:                                             ; preds = %1264
  %1268 = load double, ptr %41, align 8, !tbaa !11
  br label %1272

1269:                                             ; preds = %1264
  %1270 = load double, ptr %41, align 8, !tbaa !11
  %1271 = fneg double %1270
  br label %1272

1272:                                             ; preds = %1269, %1267
  %1273 = phi double [ %1268, %1267 ], [ %1271, %1269 ]
  store double %1273, ptr %36, align 8, !tbaa !11
  %1274 = load double, ptr %36, align 8, !tbaa !11
  %1275 = load double, ptr %52, align 8, !tbaa !11
  %1276 = fcmp ogt double %1274, %1275
  br i1 %1276, label %1277, label %1308

1277:                                             ; preds = %1272
  %1278 = load double, ptr %36, align 8, !tbaa !11
  %1279 = fcmp olt double %1278, 1.000000e+00
  br i1 %1279, label %1280, label %1301

1280:                                             ; preds = %1277
  %1281 = load double, ptr %34, align 8, !tbaa !11
  %1282 = load double, ptr %36, align 8, !tbaa !11
  %1283 = load double, ptr %49, align 8, !tbaa !11
  %1284 = fmul double %1282, %1283
  %1285 = fcmp ogt double %1281, %1284
  br i1 %1285, label %1286, label %1300

1286:                                             ; preds = %1280
  %1287 = load double, ptr %34, align 8, !tbaa !11
  %1288 = fdiv double 1.000000e+00, %1287
  store double %1288, ptr %35, align 8, !tbaa !11
  %1289 = load ptr, ptr %17, align 8, !tbaa !5
  %1290 = load ptr, ptr %20, align 8, !tbaa !5
  %1291 = getelementptr inbounds double, ptr %1290, i64 1
  %1292 = call i32 @f2c_dscal(ptr noundef %1289, ptr noundef %35, ptr noundef %1291, ptr noundef @c__1)
  %1293 = load double, ptr %35, align 8, !tbaa !11
  %1294 = load ptr, ptr %21, align 8, !tbaa !5
  %1295 = load double, ptr %1294, align 8, !tbaa !11
  %1296 = fmul double %1295, %1293
  store double %1296, ptr %1294, align 8, !tbaa !11
  %1297 = load double, ptr %35, align 8, !tbaa !11
  %1298 = load double, ptr %42, align 8, !tbaa !11
  %1299 = fmul double %1298, %1297
  store double %1299, ptr %42, align 8, !tbaa !11
  br label %1300

1300:                                             ; preds = %1286, %1280
  br label %1301

1301:                                             ; preds = %1300, %1277
  %1302 = load double, ptr %41, align 8, !tbaa !11
  %1303 = load ptr, ptr %20, align 8, !tbaa !5
  %1304 = load i64, ptr %33, align 8, !tbaa !9
  %1305 = getelementptr inbounds double, ptr %1303, i64 %1304
  %1306 = load double, ptr %1305, align 8, !tbaa !11
  %1307 = fdiv double %1306, %1302
  store double %1307, ptr %1305, align 8, !tbaa !11
  br label %1361

1308:                                             ; preds = %1272
  %1309 = load double, ptr %36, align 8, !tbaa !11
  %1310 = fcmp ogt double %1309, 0.000000e+00
  br i1 %1310, label %1311, label %1341

1311:                                             ; preds = %1308
  %1312 = load double, ptr %34, align 8, !tbaa !11
  %1313 = load double, ptr %36, align 8, !tbaa !11
  %1314 = load double, ptr %49, align 8, !tbaa !11
  %1315 = fmul double %1313, %1314
  %1316 = fcmp ogt double %1312, %1315
  br i1 %1316, label %1317, label %1334

1317:                                             ; preds = %1311
  %1318 = load double, ptr %36, align 8, !tbaa !11
  %1319 = load double, ptr %49, align 8, !tbaa !11
  %1320 = fmul double %1318, %1319
  %1321 = load double, ptr %34, align 8, !tbaa !11
  %1322 = fdiv double %1320, %1321
  store double %1322, ptr %35, align 8, !tbaa !11
  %1323 = load ptr, ptr %17, align 8, !tbaa !5
  %1324 = load ptr, ptr %20, align 8, !tbaa !5
  %1325 = getelementptr inbounds double, ptr %1324, i64 1
  %1326 = call i32 @f2c_dscal(ptr noundef %1323, ptr noundef %35, ptr noundef %1325, ptr noundef @c__1)
  %1327 = load double, ptr %35, align 8, !tbaa !11
  %1328 = load ptr, ptr %21, align 8, !tbaa !5
  %1329 = load double, ptr %1328, align 8, !tbaa !11
  %1330 = fmul double %1329, %1327
  store double %1330, ptr %1328, align 8, !tbaa !11
  %1331 = load double, ptr %35, align 8, !tbaa !11
  %1332 = load double, ptr %42, align 8, !tbaa !11
  %1333 = fmul double %1332, %1331
  store double %1333, ptr %42, align 8, !tbaa !11
  br label %1334

1334:                                             ; preds = %1317, %1311
  %1335 = load double, ptr %41, align 8, !tbaa !11
  %1336 = load ptr, ptr %20, align 8, !tbaa !5
  %1337 = load i64, ptr %33, align 8, !tbaa !9
  %1338 = getelementptr inbounds double, ptr %1336, i64 %1337
  %1339 = load double, ptr %1338, align 8, !tbaa !11
  %1340 = fdiv double %1339, %1335
  store double %1340, ptr %1338, align 8, !tbaa !11
  br label %1360

1341:                                             ; preds = %1308
  %1342 = load ptr, ptr %17, align 8, !tbaa !5
  %1343 = load i64, ptr %1342, align 8, !tbaa !9
  store i64 %1343, ptr %28, align 8, !tbaa !9
  store i64 1, ptr %32, align 8, !tbaa !9
  br label %1344

1344:                                             ; preds = %1352, %1341
  %1345 = load i64, ptr %32, align 8, !tbaa !9
  %1346 = load i64, ptr %28, align 8, !tbaa !9
  %1347 = icmp sle i64 %1345, %1346
  br i1 %1347, label %1348, label %1355

1348:                                             ; preds = %1344
  %1349 = load ptr, ptr %20, align 8, !tbaa !5
  %1350 = load i64, ptr %32, align 8, !tbaa !9
  %1351 = getelementptr inbounds double, ptr %1349, i64 %1350
  store double 0.000000e+00, ptr %1351, align 8, !tbaa !11
  br label %1352

1352:                                             ; preds = %1348
  %1353 = load i64, ptr %32, align 8, !tbaa !9
  %1354 = add nsw i64 %1353, 1
  store i64 %1354, ptr %32, align 8, !tbaa !9
  br label %1344, !llvm.loop !24

1355:                                             ; preds = %1344
  %1356 = load ptr, ptr %20, align 8, !tbaa !5
  %1357 = load i64, ptr %33, align 8, !tbaa !9
  %1358 = getelementptr inbounds double, ptr %1356, i64 %1357
  store double 1.000000e+00, ptr %1358, align 8, !tbaa !11
  %1359 = load ptr, ptr %21, align 8, !tbaa !5
  store double 0.000000e+00, ptr %1359, align 8, !tbaa !11
  store double 0.000000e+00, ptr %42, align 8, !tbaa !11
  br label %1360

1360:                                             ; preds = %1355, %1334
  br label %1361

1361:                                             ; preds = %1360, %1301
  br label %1362

1362:                                             ; preds = %1361, %1262
  br label %1375

1363:                                             ; preds = %1221
  %1364 = load ptr, ptr %20, align 8, !tbaa !5
  %1365 = load i64, ptr %33, align 8, !tbaa !9
  %1366 = getelementptr inbounds double, ptr %1364, i64 %1365
  %1367 = load double, ptr %1366, align 8, !tbaa !11
  %1368 = load double, ptr %41, align 8, !tbaa !11
  %1369 = fdiv double %1367, %1368
  %1370 = load double, ptr %44, align 8, !tbaa !11
  %1371 = fsub double %1369, %1370
  %1372 = load ptr, ptr %20, align 8, !tbaa !5
  %1373 = load i64, ptr %33, align 8, !tbaa !9
  %1374 = getelementptr inbounds double, ptr %1372, i64 %1373
  store double %1371, ptr %1374, align 8, !tbaa !11
  br label %1375

1375:                                             ; preds = %1363, %1362
  %1376 = load double, ptr %42, align 8, !tbaa !11
  store double %1376, ptr %30, align 8, !tbaa !11
  %1377 = load ptr, ptr %20, align 8, !tbaa !5
  %1378 = load i64, ptr %33, align 8, !tbaa !9
  %1379 = getelementptr inbounds double, ptr %1377, i64 %1378
  %1380 = load double, ptr %1379, align 8, !tbaa !11
  store double %1380, ptr %29, align 8, !tbaa !11
  %1381 = load double, ptr %29, align 8, !tbaa !11
  %1382 = fcmp oge double %1381, 0.000000e+00
  br i1 %1382, label %1383, label %1385

1383:                                             ; preds = %1375
  %1384 = load double, ptr %29, align 8, !tbaa !11
  br label %1388

1385:                                             ; preds = %1375
  %1386 = load double, ptr %29, align 8, !tbaa !11
  %1387 = fneg double %1386
  br label %1388

1388:                                             ; preds = %1385, %1383
  %1389 = phi double [ %1384, %1383 ], [ %1387, %1385 ]
  store double %1389, ptr %31, align 8, !tbaa !11
  %1390 = load double, ptr %30, align 8, !tbaa !11
  %1391 = load double, ptr %31, align 8, !tbaa !11
  %1392 = fcmp oge double %1390, %1391
  br i1 %1392, label %1393, label %1395

1393:                                             ; preds = %1388
  %1394 = load double, ptr %30, align 8, !tbaa !11
  br label %1397

1395:                                             ; preds = %1388
  %1396 = load double, ptr %31, align 8, !tbaa !11
  br label %1397

1397:                                             ; preds = %1395, %1393
  %1398 = phi double [ %1394, %1393 ], [ %1396, %1395 ]
  store double %1398, ptr %42, align 8, !tbaa !11
  br label %1399

1399:                                             ; preds = %1397
  %1400 = load i64, ptr %26, align 8, !tbaa !9
  %1401 = load i64, ptr %33, align 8, !tbaa !9
  %1402 = add nsw i64 %1401, %1400
  store i64 %1402, ptr %33, align 8, !tbaa !9
  br label %999, !llvm.loop !25

1403:                                             ; preds = %1012
  br label %1404

1404:                                             ; preds = %1403, %994
  %1405 = load double, ptr %45, align 8, !tbaa !11
  %1406 = load ptr, ptr %21, align 8, !tbaa !5
  %1407 = load double, ptr %1406, align 8, !tbaa !11
  %1408 = fdiv double %1407, %1405
  store double %1408, ptr %1406, align 8, !tbaa !11
  br label %1409

1409:                                             ; preds = %1404, %622
  %1410 = load double, ptr %45, align 8, !tbaa !11
  %1411 = fcmp une double %1410, 1.000000e+00
  br i1 %1411, label %1412, label %1419

1412:                                             ; preds = %1409
  %1413 = load double, ptr %45, align 8, !tbaa !11
  %1414 = fdiv double 1.000000e+00, %1413
  store double %1414, ptr %29, align 8, !tbaa !11
  %1415 = load ptr, ptr %17, align 8, !tbaa !5
  %1416 = load ptr, ptr %22, align 8, !tbaa !5
  %1417 = getelementptr inbounds double, ptr %1416, i64 1
  %1418 = call i32 @f2c_dscal(ptr noundef %1415, ptr noundef %29, ptr noundef %1417, ptr noundef @c__1)
  br label %1419

1419:                                             ; preds = %1412, %1409
  store i32 0, ptr %12, align 4
  store i32 1, ptr %54, align 4
  br label %1420

1420:                                             ; preds = %1419, %153, %144
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #4
  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
  %1421 = load i32, ptr %12, align 4
  ret i32 %1421
}

; 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_dtrsv(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

declare 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 @dlatrs_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr nocapture noundef %10) local_unnamed_addr #0 {
  %12 = alloca i64, align 8
  %13 = alloca i64, align 8
  %14 = alloca i64, align 8
  %15 = alloca double, align 8
  %16 = alloca double, align 8
  %17 = alloca double, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #6
  %18 = load i64, ptr %6, align 8, !tbaa !5
  %19 = xor i64 %18, -1
  %20 = getelementptr inbounds double, ptr %5, i64 %19
  %21 = getelementptr inbounds i8, ptr %7, i64 -8
  %22 = getelementptr inbounds i8, ptr %9, i64 -8
  store i64 0, ptr %10, align 8, !tbaa !5
  %23 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #6
  %24 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #6
  %25 = tail call i64 @lsame_(ptr noundef %2, ptr noundef nonnull @.str.1) #6
  %.not.not.not = icmp eq i64 %23, 0
  br i1 %.not.not.not, label %26, label %28

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

.lr.ph:                                           ; preds = %60, %.lr.ph
  %.0481578 = phi i64 [ %65, %.lr.ph ], [ 1, %60 ]
  %61 = add nsw i64 %.0481578, -1
  store i64 %61, ptr %13, align 8, !tbaa !5
  %62 = mul nsw i64 %.0481578, %18
  %gep = getelementptr double, ptr %invariant.gep, i64 %62
  %63 = call double @f2c_dasum(ptr noundef nonnull %13, ptr noundef %gep, ptr noundef nonnull @c__1) #6
  %64 = getelementptr inbounds double, ptr %22, i64 %.0481578
  store double %63, ptr %64, align 8, !tbaa !9
  %65 = add nuw nsw i64 %.0481578, 1
  %.not536.not = icmp slt i64 %.0481578, %59
  br i1 %.not536.not, label %.lr.ph, label %.loopexit574, !llvm.loop !11

66:                                               ; preds = %58
  %67 = add nsw i64 %59, -1
  store i64 %67, ptr %12, align 8, !tbaa !5
  %.not535579 = icmp slt i64 %59, 2
  br i1 %.not535579, label %._crit_edge, label %.lr.ph581

.lr.ph581:                                        ; preds = %66, %.lr.ph581
  %.1482580 = phi i64 [ %70, %.lr.ph581 ], [ 1, %66 ]
  %68 = load i64, ptr %4, align 8, !tbaa !5
  %69 = sub nsw i64 %68, %.1482580
  store i64 %69, ptr %13, align 8, !tbaa !5
  %70 = add nuw nsw i64 %.1482580, 1
  %71 = mul nsw i64 %.1482580, %18
  %72 = getelementptr double, ptr %20, i64 %70
  %73 = getelementptr double, ptr %72, i64 %71
  %74 = call double @f2c_dasum(ptr noundef nonnull %13, ptr noundef %73, ptr noundef nonnull @c__1) #6
  %75 = getelementptr inbounds double, ptr %22, i64 %.1482580
  store double %74, ptr %75, align 8, !tbaa !9
  %.not535.not = icmp slt i64 %.1482580, %67
  br i1 %.not535.not, label %.lr.ph581, label %._crit_edge.loopexit, !llvm.loop !13

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

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %66
  %76 = phi i64 [ %.pre, %._crit_edge.loopexit ], [ %59, %66 ]
  %77 = getelementptr inbounds double, ptr %22, i64 %76
  store double 0.000000e+00, ptr %77, align 8, !tbaa !9
  br label %.loopexit574

.loopexit574:                                     ; preds = %.lr.ph, %60, %._crit_edge, %52
  %78 = call i64 @f2c_idamax(ptr noundef nonnull %4, ptr noundef %9, ptr noundef nonnull @c__1) #6
  %79 = getelementptr inbounds double, ptr %22, i64 %78
  %80 = load double, ptr %79, align 8, !tbaa !9
  %81 = fcmp ugt double %80, %56
  br i1 %81, label %83, label %82

82:                                               ; preds = %.loopexit574
  store double 1.000000e+00, ptr %17, align 8, !tbaa !9
  br label %87

83:                                               ; preds = %.loopexit574
  %84 = fmul double %55, %80
  %85 = fdiv double 1.000000e+00, %84
  store double %85, ptr %17, align 8, !tbaa !9
  %86 = call i32 @f2c_dscal(ptr noundef nonnull %4, ptr noundef nonnull %17, ptr noundef nonnull %9, ptr noundef nonnull @c__1) #6
  br label %87

87:                                               ; preds = %83, %82
  %88 = call i64 @f2c_idamax(ptr noundef nonnull %4, ptr noundef %7, ptr noundef nonnull @c__1) #6
  %89 = getelementptr inbounds double, ptr %21, i64 %88
  %90 = load double, ptr %89, align 8, !tbaa !9
  store double %90, ptr %15, align 8, !tbaa !9
  %91 = fcmp oge double %90, 0.000000e+00
  %92 = fneg double %90
  %93 = select i1 %91, double %90, double %92
  %94 = load i64, ptr %4, align 8, !tbaa !5
  %95 = load double, ptr %17, align 8, !tbaa !9
  %96 = fcmp une double %95, 1.000000e+00
  br i1 %.not526, label %147, label %97

97:                                               ; preds = %87
  %. = select i1 %.not.not.not, i64 1, i64 -1
  %.681 = select i1 %.not.not.not, i64 %94, i64 1
  %.682 = select i1 %.not.not.not, i64 1, i64 %94
  br i1 %96, label %.loopexit570, label %98

98:                                               ; preds = %97
  br i1 %.not529, label %129, label %99

99:                                               ; preds = %98
  %100 = fcmp oge double %93, %55
  %101 = select i1 %100, double %93, double %55
  %102 = fdiv double 1.000000e+00, %101
  store i64 %., ptr %13, align 8, !tbaa !5
  %103 = icmp sge i64 %.682, %.681
  %104 = icmp sle i64 %.682, %.681
  %.in542582 = select i1 %.not.not.not, i1 %104, i1 %103
  br i1 %.in542582, label %.lr.ph587, label %.loopexit570

.lr.ph587:                                        ; preds = %99
  %105 = add i64 %18, 1
  br label %106

106:                                              ; preds = %.lr.ph587, %108
  %.0462585 = phi double [ %102, %.lr.ph587 ], [ %.1463, %108 ]
  %.2483584 = phi i64 [ %.682, %.lr.ph587 ], [ %126, %108 ]
  %.0489583 = phi double [ %102, %.lr.ph587 ], [ %119, %108 ]
  %107 = fcmp ugt double %.0462585, %55
  br i1 %107, label %108, label %.loopexit570

108:                                              ; preds = %106
  %109 = mul i64 %.2483584, %105
  %110 = getelementptr inbounds double, ptr %20, i64 %109
  %111 = load double, ptr %110, align 8, !tbaa !9
  %112 = fcmp oge double %111, 0.000000e+00
  %113 = fneg double %111
  %114 = select i1 %112, double %111, double %113
  store double %.0489583, ptr %15, align 8, !tbaa !9
  %115 = fcmp oge double %114, 1.000000e+00
  %116 = select i1 %115, double 1.000000e+00, double %114
  %117 = fmul double %.0462585, %116
  %118 = fcmp ole double %.0489583, %117
  %119 = select i1 %118, double %.0489583, double %117
  %120 = getelementptr inbounds double, ptr %22, i64 %.2483584
  %121 = load double, ptr %120, align 8, !tbaa !9
  %122 = fadd double %114, %121
  %123 = fcmp ult double %122, %55
  %124 = fdiv double %114, %122
  %125 = fmul double %.0462585, %124
  %.1463 = select i1 %123, double 0.000000e+00, double %125
  %126 = add nsw i64 %.2483584, %.
  %127 = icmp sge i64 %126, %.681
  %128 = icmp sle i64 %126, %.681
  %.in542 = select i1 %.not.not.not, i1 %128, i1 %127
  br i1 %.in542, label %106, label %.loopexit570, !llvm.loop !14

129:                                              ; preds = %98
  store double 1.000000e+00, ptr %15, align 8, !tbaa !9
  %130 = fcmp oge double %93, %55
  %131 = select i1 %130, double %93, double %55
  %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 %.681, ptr %13, align 8, !tbaa !5
  %135 = icmp sge i64 %.682, %.681
  %136 = icmp sle i64 %.682, %.681
  %.in541590 = select i1 %.not.not.not, i1 %136, i1 %135
  %137 = fcmp ugt double %134, %55
  %or.cond591 = select i1 %.in541590, i1 %137, i1 false
  br i1 %or.cond591, label %.lr.ph595, label %.loopexit570

.lr.ph595:                                        ; preds = %129, %.lr.ph595
  %.2464593 = phi double [ %142, %.lr.ph595 ], [ %134, %129 ]
  %.3484592 = phi i64 [ %143, %.lr.ph595 ], [ %.682, %129 ]
  %138 = getelementptr inbounds double, ptr %22, i64 %.3484592
  %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 %.2464593, %141
  %143 = add nsw i64 %.3484592, %.
  %144 = icmp sge i64 %143, %.681
  %145 = icmp sle i64 %143, %.681
  %.in541 = select i1 %.not.not.not, i1 %145, i1 %144
  %146 = fcmp ugt double %142, %55
  %or.cond = select i1 %.in541, i1 %146, i1 false
  br i1 %or.cond, label %.lr.ph595, label %.loopexit570, !llvm.loop !15

147:                                              ; preds = %87
  %.683 = select i1 %.not.not.not, i64 -1, i64 1
  %.684 = select i1 %.not.not.not, i64 1, i64 %94
  %.685 = select i1 %.not.not.not, i64 %94, i64 1
  br i1 %96, label %.loopexit570, label %148

148:                                              ; preds = %147
  br i1 %.not529, label %179, label %149

149:                                              ; preds = %148
  %150 = fcmp oge double %93, %55
  %151 = select i1 %150, double %93, double %55
  %152 = fdiv double 1.000000e+00, %151
  store i64 %.684, ptr %12, align 8, !tbaa !5
  store i64 %.683, ptr %13, align 8, !tbaa !5
  %153 = icmp sge i64 %.685, %.684
  %154 = icmp sle i64 %.685, %.684
  %.in539597 = select i1 %.not.not.not, i1 %153, i1 %154
  br i1 %.in539597, label %.lr.ph602, label %._crit_edge603

.lr.ph602:                                        ; preds = %149
  %155 = add i64 %18, 1
  br label %156

156:                                              ; preds = %.lr.ph602, %158
  %.3600 = phi double [ %152, %.lr.ph602 ], [ %164, %158 ]
  %.4485599 = phi i64 [ %.685, %.lr.ph602 ], [ %174, %158 ]
  %.1490598 = phi double [ %152, %.lr.ph602 ], [ %.2491, %158 ]
  %157 = fcmp ugt double %.3600, %55
  br i1 %157, label %158, label %.loopexit570

158:                                              ; preds = %156
  %159 = getelementptr inbounds double, ptr %22, i64 %.4485599
  %160 = load double, ptr %159, align 8, !tbaa !9
  %161 = fadd double %160, 1.000000e+00
  %162 = fdiv double %.1490598, %161
  %163 = fcmp ole double %.3600, %162
  %164 = select i1 %163, double %.3600, double %162
  %165 = mul i64 %.4485599, %155
  %166 = getelementptr inbounds double, ptr %20, i64 %165
  %167 = load double, ptr %166, align 8, !tbaa !9
  store double %167, ptr %15, 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 %161, %170
  %172 = fdiv double %170, %161
  %173 = fmul double %.1490598, %172
  %.2491 = select i1 %171, double %173, double %.1490598
  %174 = add nsw i64 %.4485599, %.683
  %175 = icmp sge i64 %174, %.684
  %176 = icmp sle i64 %174, %.684
  %.in539 = select i1 %.not.not.not, i1 %175, i1 %176
  br i1 %.in539, label %156, label %._crit_edge603, !llvm.loop !16

._crit_edge603:                                   ; preds = %158, %149
  %.1490.lcssa = phi double [ %152, %149 ], [ %.2491, %158 ]
  %.3.lcssa = phi double [ %152, %149 ], [ %164, %158 ]
  %177 = fcmp ole double %.3.lcssa, %.1490.lcssa
  %178 = select i1 %177, double %.3.lcssa, double %.1490.lcssa
  br label %.loopexit570

179:                                              ; preds = %148
  store double 1.000000e+00, ptr %15, align 8, !tbaa !9
  %180 = fcmp oge double %93, %55
  %181 = select i1 %180, double %93, double %55
  %182 = fdiv double 1.000000e+00, %181
  %183 = fcmp oge double %182, 1.000000e+00
  %184 = select i1 %183, double 1.000000e+00, double %182
  store i64 %.684, ptr %13, align 8, !tbaa !5
  %185 = icmp sge i64 %.685, %.684
  %186 = icmp sle i64 %.685, %.684
  %.in606 = select i1 %.not.not.not, i1 %185, i1 %186
  %187 = fcmp ugt double %184, %55
  %or.cond552607 = select i1 %.in606, i1 %187, i1 false
  br i1 %or.cond552607, label %.lr.ph611, label %.loopexit570

.lr.ph611:                                        ; preds = %179, %.lr.ph611
  %.4609 = phi double [ %191, %.lr.ph611 ], [ %184, %179 ]
  %.5486608 = phi i64 [ %192, %.lr.ph611 ], [ %.685, %179 ]
  %188 = getelementptr inbounds double, ptr %22, i64 %.5486608
  %189 = load double, ptr %188, align 8, !tbaa !9
  %190 = fadd double %189, 1.000000e+00
  %191 = fdiv double %.4609, %190
  %192 = add nsw i64 %.5486608, %.683
  %193 = icmp sge i64 %192, %.684
  %194 = icmp sle i64 %192, %.684
  %.in = select i1 %.not.not.not, i1 %193, i1 %194
  %195 = fcmp ugt double %191, %55
  %or.cond552 = select i1 %.in, i1 %195, i1 false
  br i1 %or.cond552, label %.lr.ph611, label %.loopexit570, !llvm.loop !17

.loopexit570:                                     ; preds = %106, %108, %.lr.ph595, %156, %.lr.ph611, %99, %129, %179, %147, %97, %._crit_edge603
  %196 = phi double [ 1.000000e+00, %._crit_edge603 ], [ %95, %97 ], [ %95, %147 ], [ 1.000000e+00, %179 ], [ 1.000000e+00, %129 ], [ 1.000000e+00, %99 ], [ 1.000000e+00, %.lr.ph611 ], [ 1.000000e+00, %156 ], [ 1.000000e+00, %.lr.ph595 ], [ 1.000000e+00, %108 ], [ 1.000000e+00, %106 ]
  %197 = phi i64 [ %.683, %._crit_edge603 ], [ %., %97 ], [ %.683, %147 ], [ %.683, %179 ], [ %., %129 ], [ %., %99 ], [ %.683, %.lr.ph611 ], [ %.683, %156 ], [ %., %.lr.ph595 ], [ %., %108 ], [ %., %106 ]
  %.5 = phi double [ %178, %._crit_edge603 ], [ 0.000000e+00, %97 ], [ 0.000000e+00, %147 ], [ %184, %179 ], [ %134, %129 ], [ %102, %99 ], [ %191, %.lr.ph611 ], [ %.3600, %156 ], [ %142, %.lr.ph595 ], [ %.0462585, %106 ], [ %119, %108 ]
  %198 = phi i64 [ %.684, %._crit_edge603 ], [ %.681, %97 ], [ %.684, %147 ], [ %.684, %179 ], [ %.681, %129 ], [ %.681, %99 ], [ %.684, %.lr.ph611 ], [ %.684, %156 ], [ %.681, %.lr.ph595 ], [ %.681, %108 ], [ %.681, %106 ]
  %.2 = phi i64 [ %.685, %._crit_edge603 ], [ %.682, %97 ], [ %.685, %147 ], [ %.685, %179 ], [ %.682, %129 ], [ %.682, %99 ], [ %.685, %.lr.ph611 ], [ %.685, %156 ], [ %.682, %.lr.ph595 ], [ %.682, %108 ], [ %.682, %106 ]
  %199 = fmul double %.5, %196
  %200 = fcmp ogt double %199, %55
  br i1 %200, label %201, label %203

201:                                              ; preds = %.loopexit570
  %202 = call i32 @f2c_dtrsv(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef nonnull @c__1) #6
  %.pr566 = load double, ptr %17, align 8, !tbaa !9
  br label %496

203:                                              ; preds = %.loopexit570
  %204 = fcmp ogt double %93, %56
  br i1 %204, label %205, label %208

205:                                              ; preds = %203
  %206 = fdiv double %56, %93
  store double %206, ptr %8, align 8, !tbaa !9
  %207 = call i32 @f2c_dscal(ptr noundef nonnull %4, ptr noundef nonnull %8, ptr noundef %7, ptr noundef nonnull @c__1) #6
  br label %208

208:                                              ; preds = %205, %203
  %.0465 = phi double [ %56, %205 ], [ %93, %203 ]
  %invariant.gep643 = getelementptr i8, ptr %20, i64 8
  %209 = icmp slt i64 %197, 0
  %210 = icmp sge i64 %.2, %198
  %211 = icmp sle i64 %.2, %198
  %.in543647 = select i1 %209, i1 %210, i1 %211
  br i1 %.not526, label %347, label %212

212:                                              ; preds = %208
  store i64 %197, ptr %13, align 8, !tbaa !5
  br i1 %.in543647, label %.lr.ph625, label %.loopexit568

.lr.ph625:                                        ; preds = %212
  %213 = add i64 %18, 1
  br label %214

214:                                              ; preds = %.lr.ph625, %341
  %.1466623 = phi double [ %.0465, %.lr.ph625 ], [ %.5470, %341 ]
  %.6487622 = phi i64 [ %.2, %.lr.ph625 ], [ %343, %341 ]
  %215 = getelementptr inbounds double, ptr %21, i64 %.6487622
  %216 = load double, ptr %215, align 8, !tbaa !9
  store double %216, ptr %15, align 8, !tbaa !9
  %217 = fcmp oge double %216, 0.000000e+00
  %218 = fneg double %216
  %219 = select i1 %217, double %216, double %218
  br i1 %.not529, label %226, label %220

220:                                              ; preds = %214
  %221 = mul i64 %.6487622, %213
  %222 = getelementptr inbounds double, ptr %20, i64 %221
  %223 = load double, ptr %222, align 8, !tbaa !9
  %224 = load double, ptr %17, align 8, !tbaa !9
  %225 = fmul double %223, %224
  br label %229

226:                                              ; preds = %214
  %227 = load double, ptr %17, align 8, !tbaa !9
  %228 = fcmp oeq double %227, 1.000000e+00
  br i1 %228, label %278, label %229

229:                                              ; preds = %226, %220
  %.0471 = phi double [ %225, %220 ], [ %227, %226 ]
  %230 = fcmp oge double %.0471, 0.000000e+00
  %231 = fneg double %.0471
  %232 = select i1 %230, double %.0471, double %231
  %233 = fcmp ogt double %232, %55
  br i1 %233, label %234, label %251

234:                                              ; preds = %229
  %235 = fcmp olt double %232, 1.000000e+00
  %236 = fmul double %56, %232
  %237 = fcmp ogt double %219, %236
  %or.cond554 = select i1 %235, i1 %237, i1 false
  br i1 %or.cond554, label %238, label %245

238:                                              ; preds = %234
  %239 = fdiv double 1.000000e+00, %219
  store double %239, ptr %16, align 8, !tbaa !9
  %240 = call i32 @f2c_dscal(ptr noundef nonnull %4, ptr noundef nonnull %16, ptr noundef nonnull %7, ptr noundef nonnull @c__1) #6
  %241 = load double, ptr %16, align 8, !tbaa !9
  %242 = load double, ptr %8, align 8, !tbaa !9
  %243 = fmul double %241, %242
  store double %243, ptr %8, align 8, !tbaa !9
  %244 = fmul double %.1466623, %241
  %.pre667 = load double, ptr %215, align 8, !tbaa !9
  br label %245

245:                                              ; preds = %238, %234
  %246 = phi double [ %.pre667, %238 ], [ %216, %234 ]
  %.2467 = phi double [ %244, %238 ], [ %.1466623, %234 ]
  %247 = fdiv double %246, %.0471
  store double %247, ptr %215, align 8, !tbaa !9
  store double %247, ptr %15, align 8, !tbaa !9
  %248 = fcmp oge double %247, 0.000000e+00
  %249 = fneg double %247
  %250 = select i1 %248, double %247, double %249
  br label %278

251:                                              ; preds = %229
  %252 = fcmp ogt double %232, 0.000000e+00
  br i1 %252, label %253, label %275

253:                                              ; preds = %251
  %254 = fmul double %56, %232
  %255 = fcmp ogt double %219, %254
  br i1 %255, label %256, label %269

256:                                              ; preds = %253
  %257 = fdiv double %254, %219
  store double %257, ptr %16, align 8, !tbaa !9
  %258 = getelementptr inbounds double, ptr %22, i64 %.6487622
  %259 = load double, ptr %258, align 8, !tbaa !9
  %260 = fcmp ogt double %259, 1.000000e+00
  br i1 %260, label %261, label %263

261:                                              ; preds = %256
  %262 = fdiv double %257, %259
  store double %262, ptr %16, align 8, !tbaa !9
  br label %263

263:                                              ; preds = %261, %256
  %264 = call i32 @f2c_dscal(ptr noundef nonnull %4, ptr noundef nonnull %16, ptr noundef nonnull %7, ptr noundef nonnull @c__1) #6
  %265 = load double, ptr %16, align 8, !tbaa !9
  %266 = load double, ptr %8, align 8, !tbaa !9
  %267 = fmul double %265, %266
  store double %267, ptr %8, align 8, !tbaa !9
  %268 = fmul double %.1466623, %265
  %.pre666 = load double, ptr %215, align 8, !tbaa !9
  br label %269

269:                                              ; preds = %263, %253
  %270 = phi double [ %.pre666, %263 ], [ %216, %253 ]
  %.3468 = phi double [ %268, %263 ], [ %.1466623, %253 ]
  %271 = fdiv double %270, %.0471
  store double %271, ptr %215, align 8, !tbaa !9
  store double %271, ptr %15, align 8, !tbaa !9
  %272 = fcmp oge double %271, 0.000000e+00
  %273 = fneg double %271
  %274 = select i1 %272, double %271, double %273
  br label %278

275:                                              ; preds = %251
  %276 = load i64, ptr %4, align 8, !tbaa !5
  store i64 %276, ptr %14, align 8, !tbaa !5
  %.not551613 = icmp slt i64 %276, 1
  br i1 %.not551613, label %.thread558, label %.lr.ph616.preheader

.lr.ph616.preheader:                              ; preds = %275
  %277 = shl nuw i64 %276, 3
  call void @llvm.memset.p0.i64(ptr nonnull align 8 %7, i8 0, i64 %277, i1 false), !tbaa !9
  br label %.thread558

.thread558:                                       ; preds = %.lr.ph616.preheader, %275
  store double 1.000000e+00, ptr %215, align 8, !tbaa !9
  store double 0.000000e+00, ptr %8, align 8, !tbaa !9
  br label %293

278:                                              ; preds = %245, %269, %226
  %.0495 = phi double [ %250, %245 ], [ %274, %269 ], [ %219, %226 ]
  %.4469 = phi double [ %.2467, %245 ], [ %.3468, %269 ], [ %.1466623, %226 ]
  %279 = fcmp ogt double %.0495, 1.000000e+00
  br i1 %279, label %280, label %293

280:                                              ; preds = %278
  %281 = fdiv double 1.000000e+00, %.0495
  store double %281, ptr %16, align 8, !tbaa !9
  %282 = getelementptr inbounds double, ptr %22, i64 %.6487622
  %283 = load double, ptr %282, align 8, !tbaa !9
  %284 = fsub double %56, %.4469
  %285 = fmul double %281, %284
  %286 = fcmp ogt double %283, %285
  br i1 %286, label %287, label %303

287:                                              ; preds = %280
  %288 = fmul double %281, 5.000000e-01
  store double %288, ptr %16, align 8, !tbaa !9
  %289 = call i32 @f2c_dscal(ptr noundef nonnull %4, ptr noundef nonnull %16, ptr noundef nonnull %7, ptr noundef nonnull @c__1) #6
  %290 = load double, ptr %16, align 8, !tbaa !9
  %291 = load double, ptr %8, align 8, !tbaa !9
  %292 = fmul double %290, %291
  br label %.sink.split

293:                                              ; preds = %.thread558, %278
  %.4469563 = phi double [ 0.000000e+00, %.thread558 ], [ %.4469, %278 ]
  %.0495561 = phi double [ 1.000000e+00, %.thread558 ], [ %.0495, %278 ]
  %294 = getelementptr inbounds double, ptr %22, i64 %.6487622
  %295 = load double, ptr %294, align 8, !tbaa !9
  %296 = fmul double %.0495561, %295
  %297 = fsub double %56, %.4469563
  %298 = fcmp ogt double %296, %297
  br i1 %298, label %299, label %303

299:                                              ; preds = %293
  %300 = call i32 @f2c_dscal(ptr noundef nonnull %4, ptr noundef nonnull @c_b36, ptr noundef nonnull %7, ptr noundef nonnull @c__1) #6
  %301 = load double, ptr %8, align 8, !tbaa !9
  %302 = fmul double %301, 5.000000e-01
  br label %.sink.split

.sink.split:                                      ; preds = %287, %299
  %.sink686 = phi double [ %302, %299 ], [ %292, %287 ]
  %.4469562.ph = phi double [ %.4469563, %299 ], [ %.4469, %287 ]
  store double %.sink686, ptr %8, align 8, !tbaa !9
  br label %303

303:                                              ; preds = %.sink.split, %293, %280
  %.4469562 = phi double [ %.4469563, %293 ], [ %.4469, %280 ], [ %.4469562.ph, %.sink.split ]
  br i1 %.not.not.not, label %320, label %304

304:                                              ; preds = %303
  %305 = icmp sgt i64 %.6487622, 1
  br i1 %305, label %306, label %341

306:                                              ; preds = %304
  %307 = add nsw i64 %.6487622, -1
  store i64 %307, ptr %14, align 8, !tbaa !5
  %308 = load double, ptr %215, align 8, !tbaa !9
  %309 = fneg double %308
  %310 = load double, ptr %17, align 8, !tbaa !9
  %311 = fmul double %310, %309
  store double %311, ptr %15, align 8, !tbaa !9
  %312 = mul nsw i64 %.6487622, %18
  %gep618 = getelementptr double, ptr %invariant.gep643, i64 %312
  %313 = call i32 @f2c_daxpy(ptr noundef nonnull %14, ptr noundef nonnull %15, ptr noundef %gep618, ptr noundef nonnull @c__1, ptr noundef nonnull %7, ptr noundef nonnull @c__1) #6
  store i64 %307, ptr %14, align 8, !tbaa !5
  %314 = call i64 @f2c_idamax(ptr noundef nonnull %14, ptr noundef nonnull %7, ptr noundef nonnull @c__1) #6
  %315 = getelementptr inbounds double, ptr %21, i64 %314
  %316 = load double, ptr %315, align 8, !tbaa !9
  store double %316, ptr %15, align 8, !tbaa !9
  %317 = fcmp oge double %316, 0.000000e+00
  %318 = fneg double %316
  %319 = select i1 %317, double %316, double %318
  br label %341

320:                                              ; preds = %303
  %321 = load i64, ptr %4, align 8, !tbaa !5
  %322 = icmp slt i64 %.6487622, %321
  br i1 %322, label %323, label %341

323:                                              ; preds = %320
  %324 = sub nsw i64 %321, %.6487622
  store i64 %324, ptr %14, align 8, !tbaa !5
  %325 = load double, ptr %215, align 8, !tbaa !9
  %326 = fneg double %325
  %327 = load double, ptr %17, align 8, !tbaa !9
  %328 = fmul double %327, %326
  store double %328, ptr %15, align 8, !tbaa !9
  %329 = mul nsw i64 %.6487622, %18
  %gep620 = getelementptr double, ptr %invariant.gep643, i64 %.6487622
  %330 = getelementptr double, ptr %gep620, i64 %329
  %331 = getelementptr double, ptr %7, i64 %.6487622
  %332 = call i32 @f2c_daxpy(ptr noundef nonnull %14, ptr noundef nonnull %15, ptr noundef %330, ptr noundef nonnull @c__1, ptr noundef %331, ptr noundef nonnull @c__1) #6
  %333 = load i64, ptr %4, align 8, !tbaa !5
  %334 = sub nsw i64 %333, %.6487622
  store i64 %334, ptr %14, align 8, !tbaa !5
  %335 = call i64 @f2c_idamax(ptr noundef nonnull %14, ptr noundef %331, ptr noundef nonnull @c__1) #6
  %336 = getelementptr double, ptr %215, i64 %335
  %337 = load double, ptr %336, align 8, !tbaa !9
  store double %337, ptr %15, align 8, !tbaa !9
  %338 = fcmp oge double %337, 0.000000e+00
  %339 = fneg double %337
  %340 = select i1 %338, double %337, double %339
  br label %341

341:                                              ; preds = %306, %304, %323, %320
  %.5470 = phi double [ %319, %306 ], [ %.4469562, %304 ], [ %340, %323 ], [ %.4469562, %320 ]
  %342 = load i64, ptr %13, align 8, !tbaa !5
  %343 = add nsw i64 %342, %.6487622
  %344 = icmp slt i64 %342, 0
  %345 = icmp sge i64 %343, %198
  %346 = icmp sle i64 %343, %198
  %.in549 = select i1 %344, i1 %345, i1 %346
  br i1 %.in549, label %214, label %.loopexit568, !llvm.loop !18

347:                                              ; preds = %208
  store i64 %198, ptr %13, align 8, !tbaa !5
  br i1 %.in543647, label %.lr.ph654, label %.loopexit568

.lr.ph654:                                        ; preds = %347
  %348 = add i64 %18, 1
  br label %349

349:                                              ; preds = %.lr.ph654, %482
  %.6652 = phi double [ %.0465, %.lr.ph654 ], [ %488, %482 ]
  %.1472651 = phi double [ undef, %.lr.ph654 ], [ %.5476, %482 ]
  %.7488648 = phi i64 [ %.2, %.lr.ph654 ], [ %489, %482 ]
  %350 = getelementptr inbounds double, ptr %21, i64 %.7488648
  %351 = load double, ptr %350, align 8, !tbaa !9
  store double %351, ptr %15, align 8, !tbaa !9
  %352 = fcmp oge double %351, 0.000000e+00
  %353 = fneg double %351
  %354 = select i1 %352, double %351, double %353
  %355 = load double, ptr %17, align 8, !tbaa !9
  %356 = fcmp oge double %.6652, 1.000000e+00
  %357 = select i1 %356, double %.6652, double 1.000000e+00
  %358 = fdiv double 1.000000e+00, %357
  store double %358, ptr %16, align 8, !tbaa !9
  %359 = getelementptr inbounds double, ptr %22, i64 %.7488648
  %360 = load double, ptr %359, align 8, !tbaa !9
  %361 = fsub double %56, %354
  %362 = fmul double %358, %361
  %363 = fcmp ogt double %360, %362
  br i1 %363, label %364, label %389

364:                                              ; preds = %349
  %365 = fmul double %358, 5.000000e-01
  store double %365, ptr %16, align 8, !tbaa !9
  br i1 %.not529, label %371, label %366

366:                                              ; preds = %364
  %367 = mul i64 %.7488648, %348
  %368 = getelementptr inbounds double, ptr %20, i64 %367
  %369 = load double, ptr %368, align 8, !tbaa !9
  %370 = fmul double %355, %369
  br label %371

371:                                              ; preds = %364, %366
  %.2473 = phi double [ %370, %366 ], [ %355, %364 ]
  %372 = fcmp oge double %.2473, 0.000000e+00
  %373 = fneg double %.2473
  %374 = select i1 %372, double %.2473, double %373
  %375 = fcmp ogt double %374, 1.000000e+00
  br i1 %375, label %376, label %thread-pre-split564

376:                                              ; preds = %371
  store double 1.000000e+00, ptr %15, align 8, !tbaa !9
  %377 = fmul double %365, %374
  %378 = fcmp oge double %377, 1.000000e+00
  %379 = select i1 %378, double 1.000000e+00, double %377
  store double %379, ptr %16, align 8, !tbaa !9
  %380 = fdiv double %355, %.2473
  br label %thread-pre-split564

thread-pre-split564:                              ; preds = %371, %376
  %381 = phi double [ %379, %376 ], [ %365, %371 ]
  %.0457 = phi double [ %380, %376 ], [ %355, %371 ]
  %382 = fcmp olt double %381, 1.000000e+00
  br i1 %382, label %383, label %389

383:                                              ; preds = %thread-pre-split564
  %384 = call i32 @f2c_dscal(ptr noundef nonnull %4, ptr noundef nonnull %16, ptr noundef nonnull %7, ptr noundef nonnull @c__1) #6
  %385 = load double, ptr %16, align 8, !tbaa !9
  %386 = load double, ptr %8, align 8, !tbaa !9
  %387 = fmul double %385, %386
  store double %387, ptr %8, align 8, !tbaa !9
  %388 = fmul double %.6652, %385
  br label %389

389:                                              ; preds = %thread-pre-split564, %383, %349
  %.3474 = phi double [ %.2473, %383 ], [ %.2473, %thread-pre-split564 ], [ %.1472651, %349 ]
  %.7 = phi double [ %388, %383 ], [ %.6652, %thread-pre-split564 ], [ %.6652, %349 ]
  %.1458 = phi double [ %.0457, %383 ], [ %.0457, %thread-pre-split564 ], [ %355, %349 ]
  %390 = fcmp oeq double %.1458, 1.000000e+00
  br i1 %390, label %391, label %405

391:                                              ; preds = %389
  br i1 %.not.not.not, label %396, label %392

392:                                              ; preds = %391
  %393 = add nsw i64 %.7488648, -1
  store i64 %393, ptr %14, align 8, !tbaa !5
  %394 = mul nsw i64 %.7488648, %18
  %gep644 = getelementptr double, ptr %invariant.gep643, i64 %394
  %395 = call double @f2c_ddot(ptr noundef nonnull %14, ptr noundef %gep644, ptr noundef nonnull @c__1, ptr noundef nonnull %7, ptr noundef nonnull @c__1) #6
  br label %.loopexit

396:                                              ; preds = %391
  %397 = load i64, ptr %4, align 8, !tbaa !5
  %398 = icmp slt i64 %.7488648, %397
  br i1 %398, label %399, label %.loopexit

399:                                              ; preds = %396
  %400 = sub nsw i64 %397, %.7488648
  store i64 %400, ptr %14, align 8, !tbaa !5
  %401 = mul nsw i64 %.7488648, %18
  %gep646 = getelementptr double, ptr %invariant.gep643, i64 %.7488648
  %402 = getelementptr double, ptr %gep646, i64 %401
  %403 = getelementptr double, ptr %7, i64 %.7488648
  %404 = call double @f2c_ddot(ptr noundef nonnull %14, ptr noundef %402, ptr noundef nonnull @c__1, ptr noundef %403, ptr noundef nonnull @c__1) #6
  br label %.loopexit

405:                                              ; preds = %389
  br i1 %.not.not.not, label %416, label %406

406:                                              ; preds = %405
  %407 = add nsw i64 %.7488648, -1
  store i64 %407, ptr %14, align 8, !tbaa !5
  %.not546.not626 = icmp sgt i64 %.7488648, 1
  br i1 %.not546.not626, label %.lr.ph630, label %.loopexit

.lr.ph630:                                        ; preds = %406
  %408 = mul nsw i64 %.7488648, %18
  %invariant.gep632 = getelementptr double, ptr %20, i64 %408
  br label %409

409:                                              ; preds = %.lr.ph630, %409
  %.0459628 = phi double [ 0.000000e+00, %.lr.ph630 ], [ %414, %409 ]
  %.1478627 = phi i64 [ 1, %.lr.ph630 ], [ %415, %409 ]
  %gep633 = getelementptr double, ptr %invariant.gep632, i64 %.1478627
  %410 = load double, ptr %gep633, align 8, !tbaa !9
  %411 = fmul double %.1458, %410
  %412 = getelementptr inbounds double, ptr %21, i64 %.1478627
  %413 = load double, ptr %412, align 8, !tbaa !9
  %414 = call double @llvm.fmuladd.f64(double %411, double %413, double %.0459628)
  %415 = add nuw nsw i64 %.1478627, 1
  %exitcond.not = icmp eq i64 %415, %.7488648
  br i1 %exitcond.not, label %.loopexit, label %409, !llvm.loop !19

416:                                              ; preds = %405
  %417 = load i64, ptr %4, align 8, !tbaa !5
  %418 = icmp slt i64 %.7488648, %417
  br i1 %418, label %419, label %.loopexit

419:                                              ; preds = %416
  store i64 %417, ptr %14, align 8, !tbaa !5
  %420 = mul nsw i64 %.7488648, %18
  %invariant.gep636 = getelementptr double, ptr %20, i64 %420
  br label %421

421:                                              ; preds = %419, %421
  %.1460635 = phi double [ 0.000000e+00, %419 ], [ %426, %421 ]
  %.2479.in634 = phi i64 [ %.7488648, %419 ], [ %.2479, %421 ]
  %.2479 = add nsw i64 %.2479.in634, 1
  %gep637 = getelementptr double, ptr %invariant.gep636, i64 %.2479
  %422 = load double, ptr %gep637, align 8, !tbaa !9
  %423 = fmul double %.1458, %422
  %424 = getelementptr double, ptr %7, i64 %.2479.in634
  %425 = load double, ptr %424, align 8, !tbaa !9
  %426 = call double @llvm.fmuladd.f64(double %423, double %425, double %.1460635)
  %exitcond665.not = icmp eq i64 %.2479, %417
  br i1 %exitcond665.not, label %.loopexit, label %421, !llvm.loop !20

.loopexit:                                        ; preds = %409, %421, %406, %416, %392, %399, %396
  %.2461 = phi double [ %395, %392 ], [ %404, %399 ], [ 0.000000e+00, %396 ], [ 0.000000e+00, %416 ], [ 0.000000e+00, %406 ], [ %426, %421 ], [ %414, %409 ]
  %427 = load double, ptr %17, align 8, !tbaa !9
  %428 = fcmp oeq double %.1458, %427
  %429 = load double, ptr %350, align 8, !tbaa !9
  br i1 %428, label %430, label %479

430:                                              ; preds = %.loopexit
  %431 = fsub double %429, %.2461
  store double %431, ptr %350, align 8, !tbaa !9
  store double %431, ptr %15, align 8, !tbaa !9
  %432 = fcmp oge double %431, 0.000000e+00
  %433 = fneg double %431
  %434 = select i1 %432, double %431, double %433
  br i1 %.not529, label %440, label %435

435:                                              ; preds = %430
  %436 = mul i64 %.7488648, %348
  %437 = getelementptr inbounds double, ptr %20, i64 %436
  %438 = load double, ptr %437, align 8, !tbaa !9
  %439 = fmul double %427, %438
  br label %442

440:                                              ; preds = %430
  %441 = fcmp oeq double %427, 1.000000e+00
  br i1 %441, label %482, label %442

442:                                              ; preds = %440, %435
  %.4475 = phi double [ %439, %435 ], [ %427, %440 ]
  %443 = fcmp oge double %.4475, 0.000000e+00
  %444 = fneg double %.4475
  %445 = select i1 %443, double %.4475, double %444
  %446 = fcmp ogt double %445, %55
  br i1 %446, label %447, label %461

447:                                              ; preds = %442
  %448 = fcmp olt double %445, 1.000000e+00
  %449 = fmul double %56, %445
  %450 = fcmp ogt double %434, %449
  %or.cond556 = select i1 %448, i1 %450, i1 false
  br i1 %or.cond556, label %451, label %458

451:                                              ; preds = %447
  %452 = fdiv double 1.000000e+00, %434
  store double %452, ptr %16, align 8, !tbaa !9
  %453 = call i32 @f2c_dscal(ptr noundef nonnull %4, ptr noundef nonnull %16, ptr noundef nonnull %7, ptr noundef nonnull @c__1) #6
  %454 = load double, ptr %16, align 8, !tbaa !9
  %455 = load double, ptr %8, align 8, !tbaa !9
  %456 = fmul double %454, %455
  store double %456, ptr %8, align 8, !tbaa !9
  %457 = fmul double %.7, %454
  %.pre669 = load double, ptr %350, align 8, !tbaa !9
  br label %458

458:                                              ; preds = %451, %447
  %459 = phi double [ %.pre669, %451 ], [ %431, %447 ]
  %.8 = phi double [ %457, %451 ], [ %.7, %447 ]
  %460 = fdiv double %459, %.4475
  store double %460, ptr %350, align 8, !tbaa !9
  br label %482

461:                                              ; preds = %442
  %462 = fcmp ogt double %445, 0.000000e+00
  br i1 %462, label %463, label %476

463:                                              ; preds = %461
  %464 = fmul double %56, %445
  %465 = fcmp ogt double %434, %464
  br i1 %465, label %466, label %473

466:                                              ; preds = %463
  %467 = fdiv double %464, %434
  store double %467, ptr %16, align 8, !tbaa !9
  %468 = call i32 @f2c_dscal(ptr noundef nonnull %4, ptr noundef nonnull %16, ptr noundef nonnull %7, ptr noundef nonnull @c__1) #6
  %469 = load double, ptr %16, align 8, !tbaa !9
  %470 = load double, ptr %8, align 8, !tbaa !9
  %471 = fmul double %469, %470
  store double %471, ptr %8, align 8, !tbaa !9
  %472 = fmul double %.7, %469
  %.pre668 = load double, ptr %350, align 8, !tbaa !9
  br label %473

473:                                              ; preds = %466, %463
  %474 = phi double [ %.pre668, %466 ], [ %431, %463 ]
  %.9 = phi double [ %472, %466 ], [ %.7, %463 ]
  %475 = fdiv double %474, %.4475
  store double %475, ptr %350, align 8, !tbaa !9
  br label %482

476:                                              ; preds = %461
  %477 = load i64, ptr %4, align 8, !tbaa !5
  store i64 %477, ptr %14, align 8, !tbaa !5
  %.not548638 = icmp slt i64 %477, 1
  br i1 %.not548638, label %._crit_edge642, label %.lr.ph641.preheader

.lr.ph641.preheader:                              ; preds = %476
  %478 = shl nuw i64 %477, 3
  call void @llvm.memset.p0.i64(ptr nonnull align 8 %7, i8 0, i64 %478, i1 false), !tbaa !9
  br label %._crit_edge642

._crit_edge642:                                   ; preds = %.lr.ph641.preheader, %476
  store double 1.000000e+00, ptr %350, align 8, !tbaa !9
  store double 0.000000e+00, ptr %8, align 8, !tbaa !9
  %.pre670 = load double, ptr %350, align 8, !tbaa !9
  br label %482

479:                                              ; preds = %.loopexit
  %480 = fdiv double %429, %.3474
  %481 = fsub double %480, %.2461
  store double %481, ptr %350, align 8, !tbaa !9
  br label %482

482:                                              ; preds = %440, %473, %._crit_edge642, %458, %479
  %483 = phi double [ %460, %458 ], [ %475, %473 ], [ %.pre670, %._crit_edge642 ], [ %431, %440 ], [ %481, %479 ]
  %.5476 = phi double [ %.4475, %458 ], [ %.4475, %473 ], [ %.4475, %._crit_edge642 ], [ 1.000000e+00, %440 ], [ %.3474, %479 ]
  %.10 = phi double [ %.8, %458 ], [ %.9, %473 ], [ 0.000000e+00, %._crit_edge642 ], [ %.7, %440 ], [ %.7, %479 ]
  store double %483, ptr %15, align 8, !tbaa !9
  %484 = fcmp oge double %483, 0.000000e+00
  %485 = fneg double %483
  %486 = select i1 %484, double %483, double %485
  %487 = fcmp oge double %.10, %486
  %488 = select i1 %487, double %.10, double %486
  %489 = add nsw i64 %197, %.7488648
  %490 = load i64, ptr %13, align 8
  %491 = icmp sge i64 %489, %490
  %492 = icmp sle i64 %489, %490
  %.in543 = select i1 %209, i1 %491, i1 %492
  br i1 %.in543, label %349, label %.loopexit568, !llvm.loop !21

.loopexit568:                                     ; preds = %341, %482, %212, %347
  %493 = load double, ptr %17, align 8, !tbaa !9
  %494 = load double, ptr %8, align 8, !tbaa !9
  %495 = fdiv double %494, %493
  store double %495, ptr %8, align 8, !tbaa !9
  br label %496

496:                                              ; preds = %.loopexit568, %201
  %497 = phi double [ %493, %.loopexit568 ], [ %.pr566, %201 ]
  %498 = fcmp une double %497, 1.000000e+00
  br i1 %498, label %499, label %502

499:                                              ; preds = %496
  %500 = fdiv double 1.000000e+00, %497
  store double %500, ptr %15, align 8, !tbaa !9
  %501 = call i32 @f2c_dscal(ptr noundef nonnull %4, ptr noundef nonnull %15, ptr noundef %9, ptr noundef nonnull @c__1) #6
  br label %502

502:                                              ; preds = %496, %499, %50, %.thread
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #6
  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_dtrsv(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

declare 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 nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.umax.i64(i64, i64) #4

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"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, !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