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

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

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

85:                                               ; preds = %81
  %86 = load ptr, ptr %25, align 8, !tbaa !5
  store i64 -1, ptr %86, align 8, !tbaa !9
  br label %146

87:                                               ; preds = %81, %12
  %88 = load i64, ptr %55, align 8, !tbaa !9
  %89 = icmp ne i64 %88, 0
  br i1 %89, label %100, label %90

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

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

98:                                               ; preds = %94
  %99 = load ptr, ptr %25, align 8, !tbaa !5
  store i64 -2, ptr %99, align 8, !tbaa !9
  br label %145

100:                                              ; preds = %94, %90, %87
  %101 = load i64, ptr %58, align 8, !tbaa !9
  %102 = icmp ne i64 %101, 0
  br i1 %102, label %109, label %103

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

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

109:                                              ; preds = %103, %100
  %110 = load ptr, ptr %17, align 8, !tbaa !5
  %111 = call i64 @lsame_(ptr noundef %110, ptr noundef @.str.5)
  %112 = icmp ne i64 %111, 0
  br i1 %112, label %119, label %113

113:                                              ; preds = %109
  %114 = load ptr, ptr %17, align 8, !tbaa !5
  %115 = call i64 @lsame_(ptr noundef %114, ptr noundef @.str.1)
  %116 = icmp ne i64 %115, 0
  br i1 %116, label %119, label %117

117:                                              ; preds = %113
  %118 = load ptr, ptr %25, align 8, !tbaa !5
  store i64 -4, ptr %118, align 8, !tbaa !9
  br label %143

119:                                              ; preds = %113, %109
  %120 = load ptr, ptr %18, align 8, !tbaa !5
  %121 = load i64, ptr %120, align 8, !tbaa !9
  %122 = icmp slt i64 %121, 0
  br i1 %122, label %123, label %125

123:                                              ; preds = %119
  %124 = load ptr, ptr %25, align 8, !tbaa !5
  store i64 -5, ptr %124, align 8, !tbaa !9
  br label %142

125:                                              ; preds = %119
  %126 = load ptr, ptr %19, align 8, !tbaa !5
  %127 = load i64, ptr %126, align 8, !tbaa !9
  %128 = icmp slt i64 %127, 0
  br i1 %128, label %129, label %131

129:                                              ; preds = %125
  %130 = load ptr, ptr %25, align 8, !tbaa !5
  store i64 -6, ptr %130, align 8, !tbaa !9
  br label %141

131:                                              ; preds = %125
  %132 = load ptr, ptr %21, align 8, !tbaa !5
  %133 = load i64, ptr %132, align 8, !tbaa !9
  %134 = load ptr, ptr %19, align 8, !tbaa !5
  %135 = load i64, ptr %134, align 8, !tbaa !9
  %136 = add nsw i64 %135, 1
  %137 = icmp slt i64 %133, %136
  br i1 %137, label %138, label %140

138:                                              ; preds = %131
  %139 = load ptr, ptr %25, align 8, !tbaa !5
  store i64 -8, ptr %139, align 8, !tbaa !9
  br label %140

140:                                              ; preds = %138, %131
  br label %141

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

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

143:                                              ; preds = %142, %117
  br label %144

144:                                              ; preds = %143, %107
  br label %145

145:                                              ; preds = %144, %98
  br label %146

146:                                              ; preds = %145, %85
  %147 = load ptr, ptr %25, align 8, !tbaa !5
  %148 = load i64, ptr %147, align 8, !tbaa !9
  %149 = icmp ne i64 %148, 0
  br i1 %149, label %150, label %155

150:                                              ; preds = %146
  %151 = load ptr, ptr %25, align 8, !tbaa !5
  %152 = load i64, ptr %151, align 8, !tbaa !9
  %153 = sub nsw i64 0, %152
  store i64 %153, ptr %28, align 8, !tbaa !9
  %154 = call i32 @xerbla_(ptr noundef @.str.6, ptr noundef %28)
  store i32 0, ptr %13, align 4
  store i32 1, ptr %59, align 4
  br label %1550

155:                                              ; preds = %146
  %156 = load ptr, ptr %18, align 8, !tbaa !5
  %157 = load i64, ptr %156, align 8, !tbaa !9
  %158 = icmp eq i64 %157, 0
  br i1 %158, label %159, label %160

159:                                              ; preds = %155
  store i32 0, ptr %13, align 4
  store i32 1, ptr %59, align 4
  br label %1550

160:                                              ; preds = %155
  %161 = call double @dlamch_(ptr noundef @.str.7)
  %162 = call double @dlamch_(ptr noundef @.str.8)
  %163 = fdiv double %161, %162
  store double %163, ptr %57, align 8, !tbaa !11
  %164 = load double, ptr %57, align 8, !tbaa !11
  %165 = fdiv double 1.000000e+00, %164
  store double %165, ptr %54, align 8, !tbaa !11
  %166 = load ptr, ptr %23, align 8, !tbaa !5
  store double 1.000000e+00, ptr %166, align 8, !tbaa !11
  %167 = load ptr, ptr %17, align 8, !tbaa !5
  %168 = call i64 @lsame_(ptr noundef %167, ptr noundef @.str.1)
  %169 = icmp ne i64 %168, 0
  br i1 %169, label %170, label %259

170:                                              ; preds = %160
  %171 = load i64, ptr %53, align 8, !tbaa !9
  %172 = icmp ne i64 %171, 0
  br i1 %172, label %173, label %213

173:                                              ; preds = %170
  %174 = load ptr, ptr %18, align 8, !tbaa !5
  %175 = load i64, ptr %174, align 8, !tbaa !9
  store i64 %175, ptr %28, align 8, !tbaa !9
  store i64 1, ptr %36, align 8, !tbaa !9
  br label %176

176:                                              ; preds = %209, %173
  %177 = load i64, ptr %36, align 8, !tbaa !9
  %178 = load i64, ptr %28, align 8, !tbaa !9
  %179 = icmp sle i64 %177, %178
  br i1 %179, label %180, label %212

180:                                              ; preds = %176
  %181 = load ptr, ptr %19, align 8, !tbaa !5
  %182 = load i64, ptr %181, align 8, !tbaa !9
  store i64 %182, ptr %29, align 8, !tbaa !9
  %183 = load i64, ptr %36, align 8, !tbaa !9
  %184 = sub nsw i64 %183, 1
  store i64 %184, ptr %30, align 8, !tbaa !9
  %185 = load i64, ptr %29, align 8, !tbaa !9
  %186 = load i64, ptr %30, align 8, !tbaa !9
  %187 = icmp sle i64 %185, %186
  br i1 %187, label %188, label %190

188:                                              ; preds = %180
  %189 = load i64, ptr %29, align 8, !tbaa !9
  br label %192

190:                                              ; preds = %180
  %191 = load i64, ptr %30, align 8, !tbaa !9
  br label %192

192:                                              ; preds = %190, %188
  %193 = phi i64 [ %189, %188 ], [ %191, %190 ]
  store i64 %193, ptr %41, align 8, !tbaa !9
  %194 = load ptr, ptr %20, align 8, !tbaa !5
  %195 = load ptr, ptr %19, align 8, !tbaa !5
  %196 = load i64, ptr %195, align 8, !tbaa !9
  %197 = add nsw i64 %196, 1
  %198 = load i64, ptr %41, align 8, !tbaa !9
  %199 = sub nsw i64 %197, %198
  %200 = load i64, ptr %36, align 8, !tbaa !9
  %201 = load i64, ptr %26, align 8, !tbaa !9
  %202 = mul nsw i64 %200, %201
  %203 = add nsw i64 %199, %202
  %204 = getelementptr inbounds double, ptr %194, i64 %203
  %205 = call double @f2c_dasum(ptr noundef %41, ptr noundef %204, ptr noundef @c__1)
  %206 = load ptr, ptr %24, align 8, !tbaa !5
  %207 = load i64, ptr %36, align 8, !tbaa !9
  %208 = getelementptr inbounds double, ptr %206, i64 %207
  store double %205, ptr %208, align 8, !tbaa !11
  br label %209

209:                                              ; preds = %192
  %210 = load i64, ptr %36, align 8, !tbaa !9
  %211 = add nsw i64 %210, 1
  store i64 %211, ptr %36, align 8, !tbaa !9
  br label %176, !llvm.loop !13

212:                                              ; preds = %176
  br label %258

213:                                              ; preds = %170
  %214 = load ptr, ptr %18, align 8, !tbaa !5
  %215 = load i64, ptr %214, align 8, !tbaa !9
  store i64 %215, ptr %28, align 8, !tbaa !9
  store i64 1, ptr %36, align 8, !tbaa !9
  br label %216

216:                                              ; preds = %254, %213
  %217 = load i64, ptr %36, align 8, !tbaa !9
  %218 = load i64, ptr %28, align 8, !tbaa !9
  %219 = icmp sle i64 %217, %218
  br i1 %219, label %220, label %257

220:                                              ; preds = %216
  %221 = load ptr, ptr %19, align 8, !tbaa !5
  %222 = load i64, ptr %221, align 8, !tbaa !9
  store i64 %222, ptr %29, align 8, !tbaa !9
  %223 = load ptr, ptr %18, align 8, !tbaa !5
  %224 = load i64, ptr %223, align 8, !tbaa !9
  %225 = load i64, ptr %36, align 8, !tbaa !9
  %226 = sub nsw i64 %224, %225
  store i64 %226, ptr %30, align 8, !tbaa !9
  %227 = load i64, ptr %29, align 8, !tbaa !9
  %228 = load i64, ptr %30, align 8, !tbaa !9
  %229 = icmp sle i64 %227, %228
  br i1 %229, label %230, label %232

230:                                              ; preds = %220
  %231 = load i64, ptr %29, align 8, !tbaa !9
  br label %234

232:                                              ; preds = %220
  %233 = load i64, ptr %30, align 8, !tbaa !9
  br label %234

234:                                              ; preds = %232, %230
  %235 = phi i64 [ %231, %230 ], [ %233, %232 ]
  store i64 %235, ptr %41, align 8, !tbaa !9
  %236 = load i64, ptr %41, align 8, !tbaa !9
  %237 = icmp sgt i64 %236, 0
  br i1 %237, label %238, label %249

238:                                              ; preds = %234
  %239 = load ptr, ptr %20, align 8, !tbaa !5
  %240 = load i64, ptr %36, align 8, !tbaa !9
  %241 = load i64, ptr %26, align 8, !tbaa !9
  %242 = mul nsw i64 %240, %241
  %243 = add nsw i64 %242, 2
  %244 = getelementptr inbounds double, ptr %239, i64 %243
  %245 = call double @f2c_dasum(ptr noundef %41, ptr noundef %244, ptr noundef @c__1)
  %246 = load ptr, ptr %24, align 8, !tbaa !5
  %247 = load i64, ptr %36, align 8, !tbaa !9
  %248 = getelementptr inbounds double, ptr %246, i64 %247
  store double %245, ptr %248, align 8, !tbaa !11
  br label %253

249:                                              ; preds = %234
  %250 = load ptr, ptr %24, align 8, !tbaa !5
  %251 = load i64, ptr %36, align 8, !tbaa !9
  %252 = getelementptr inbounds double, ptr %250, i64 %251
  store double 0.000000e+00, ptr %252, align 8, !tbaa !11
  br label %253

253:                                              ; preds = %249, %238
  br label %254

254:                                              ; preds = %253
  %255 = load i64, ptr %36, align 8, !tbaa !9
  %256 = add nsw i64 %255, 1
  store i64 %256, ptr %36, align 8, !tbaa !9
  br label %216, !llvm.loop !15

257:                                              ; preds = %216
  br label %258

258:                                              ; preds = %257, %212
  br label %259

259:                                              ; preds = %258, %160
  %260 = load ptr, ptr %18, align 8, !tbaa !5
  %261 = load ptr, ptr %24, align 8, !tbaa !5
  %262 = getelementptr inbounds double, ptr %261, i64 1
  %263 = call i64 @f2c_idamax(ptr noundef %260, ptr noundef %262, ptr noundef @c__1)
  store i64 %263, ptr %43, align 8, !tbaa !9
  %264 = load ptr, ptr %24, align 8, !tbaa !5
  %265 = load i64, ptr %43, align 8, !tbaa !9
  %266 = getelementptr inbounds double, ptr %264, i64 %265
  %267 = load double, ptr %266, align 8, !tbaa !11
  store double %267, ptr %44, align 8, !tbaa !11
  %268 = load double, ptr %44, align 8, !tbaa !11
  %269 = load double, ptr %54, align 8, !tbaa !11
  %270 = fcmp ole double %268, %269
  br i1 %270, label %271, label %272

271:                                              ; preds = %259
  store double 1.000000e+00, ptr %50, align 8, !tbaa !11
  br label %281

272:                                              ; preds = %259
  %273 = load double, ptr %57, align 8, !tbaa !11
  %274 = load double, ptr %44, align 8, !tbaa !11
  %275 = fmul double %273, %274
  %276 = fdiv double 1.000000e+00, %275
  store double %276, ptr %50, align 8, !tbaa !11
  %277 = load ptr, ptr %18, align 8, !tbaa !5
  %278 = load ptr, ptr %24, align 8, !tbaa !5
  %279 = getelementptr inbounds double, ptr %278, i64 1
  %280 = call i32 @f2c_dscal(ptr noundef %277, ptr noundef %50, ptr noundef %279, ptr noundef @c__1)
  br label %281

281:                                              ; preds = %272, %271
  %282 = load ptr, ptr %18, align 8, !tbaa !5
  %283 = load ptr, ptr %22, align 8, !tbaa !5
  %284 = getelementptr inbounds double, ptr %283, i64 1
  %285 = call i64 @f2c_idamax(ptr noundef %282, ptr noundef %284, ptr noundef @c__1)
  store i64 %285, ptr %36, align 8, !tbaa !9
  %286 = load ptr, ptr %22, align 8, !tbaa !5
  %287 = load i64, ptr %36, align 8, !tbaa !9
  %288 = getelementptr inbounds double, ptr %286, i64 %287
  %289 = load double, ptr %288, align 8, !tbaa !11
  store double %289, ptr %32, align 8, !tbaa !11
  %290 = load double, ptr %32, align 8, !tbaa !11
  %291 = fcmp oge double %290, 0.000000e+00
  br i1 %291, label %292, label %294

292:                                              ; preds = %281
  %293 = load double, ptr %32, align 8, !tbaa !11
  br label %297

294:                                              ; preds = %281
  %295 = load double, ptr %32, align 8, !tbaa !11
  %296 = fneg double %295
  br label %297

297:                                              ; preds = %294, %292
  %298 = phi double [ %293, %292 ], [ %296, %294 ]
  store double %298, ptr %46, align 8, !tbaa !11
  %299 = load double, ptr %46, align 8, !tbaa !11
  store double %299, ptr %42, align 8, !tbaa !11
  %300 = load i64, ptr %55, align 8, !tbaa !9
  %301 = icmp ne i64 %300, 0
  br i1 %301, label %302, label %481

302:                                              ; preds = %297
  %303 = load i64, ptr %53, align 8, !tbaa !9
  %304 = icmp ne i64 %303, 0
  br i1 %304, label %305, label %311

305:                                              ; preds = %302
  %306 = load ptr, ptr %18, align 8, !tbaa !5
  %307 = load i64, ptr %306, align 8, !tbaa !9
  store i64 %307, ptr %56, align 8, !tbaa !9
  store i64 1, ptr %52, align 8, !tbaa !9
  store i64 -1, ptr %40, align 8, !tbaa !9
  %308 = load ptr, ptr %19, align 8, !tbaa !5
  %309 = load i64, ptr %308, align 8, !tbaa !9
  %310 = add nsw i64 %309, 1
  store i64 %310, ptr %49, align 8, !tbaa !9
  br label %314

311:                                              ; preds = %302
  store i64 1, ptr %56, align 8, !tbaa !9
  %312 = load ptr, ptr %18, align 8, !tbaa !5
  %313 = load i64, ptr %312, align 8, !tbaa !9
  store i64 %313, ptr %52, align 8, !tbaa !9
  store i64 1, ptr %40, align 8, !tbaa !9
  store i64 1, ptr %49, align 8, !tbaa !9
  br label %314

314:                                              ; preds = %311, %305
  %315 = load double, ptr %50, align 8, !tbaa !11
  %316 = fcmp une double %315, 1.000000e+00
  br i1 %316, label %317, label %318

317:                                              ; preds = %314
  store double 0.000000e+00, ptr %47, align 8, !tbaa !11
  br label %480

318:                                              ; preds = %314
  %319 = load i64, ptr %58, align 8, !tbaa !9
  %320 = icmp ne i64 %319, 0
  br i1 %320, label %321, label %421

321:                                              ; preds = %318
  %322 = load double, ptr %42, align 8, !tbaa !11
  %323 = load double, ptr %57, align 8, !tbaa !11
  %324 = fcmp oge double %322, %323
  br i1 %324, label %325, label %327

325:                                              ; preds = %321
  %326 = load double, ptr %42, align 8, !tbaa !11
  br label %329

327:                                              ; preds = %321
  %328 = load double, ptr %57, align 8, !tbaa !11
  br label %329

329:                                              ; preds = %327, %325
  %330 = phi double [ %326, %325 ], [ %328, %327 ]
  %331 = fdiv double 1.000000e+00, %330
  store double %331, ptr %47, align 8, !tbaa !11
  %332 = load double, ptr %47, align 8, !tbaa !11
  store double %332, ptr %42, align 8, !tbaa !11
  %333 = load i64, ptr %52, align 8, !tbaa !9
  store i64 %333, ptr %28, align 8, !tbaa !9
  %334 = load i64, ptr %40, align 8, !tbaa !9
  store i64 %334, ptr %29, align 8, !tbaa !9
  %335 = load i64, ptr %56, align 8, !tbaa !9
  store i64 %335, ptr %36, align 8, !tbaa !9
  br label %336

336:                                              ; preds = %415, %329
  %337 = load i64, ptr %29, align 8, !tbaa !9
  %338 = icmp slt i64 %337, 0
  br i1 %338, label %339, label %344

339:                                              ; preds = %336
  %340 = load i64, ptr %36, align 8, !tbaa !9
  %341 = load i64, ptr %28, align 8, !tbaa !9
  %342 = icmp sge i64 %340, %341
  %343 = zext i1 %342 to i32
  br label %349

344:                                              ; preds = %336
  %345 = load i64, ptr %36, align 8, !tbaa !9
  %346 = load i64, ptr %28, align 8, !tbaa !9
  %347 = icmp sle i64 %345, %346
  %348 = zext i1 %347 to i32
  br label %349

349:                                              ; preds = %344, %339
  %350 = phi i32 [ %343, %339 ], [ %348, %344 ]
  %351 = icmp ne i32 %350, 0
  br i1 %351, label %352, label %419

352:                                              ; preds = %349
  %353 = load double, ptr %47, align 8, !tbaa !11
  %354 = load double, ptr %57, align 8, !tbaa !11
  %355 = fcmp ole double %353, %354
  br i1 %355, label %356, label %357

356:                                              ; preds = %352
  br label %480

357:                                              ; preds = %352
  %358 = load ptr, ptr %20, align 8, !tbaa !5
  %359 = load i64, ptr %49, align 8, !tbaa !9
  %360 = load i64, ptr %36, align 8, !tbaa !9
  %361 = load i64, ptr %26, align 8, !tbaa !9
  %362 = mul nsw i64 %360, %361
  %363 = add nsw i64 %359, %362
  %364 = getelementptr inbounds double, ptr %358, i64 %363
  %365 = load double, ptr %364, align 8, !tbaa !11
  store double %365, ptr %32, align 8, !tbaa !11
  %366 = load double, ptr %32, align 8, !tbaa !11
  %367 = fcmp oge double %366, 0.000000e+00
  br i1 %367, label %368, label %370

368:                                              ; preds = %357
  %369 = load double, ptr %32, align 8, !tbaa !11
  br label %373

370:                                              ; preds = %357
  %371 = load double, ptr %32, align 8, !tbaa !11
  %372 = fneg double %371
  br label %373

373:                                              ; preds = %370, %368
  %374 = phi double [ %369, %368 ], [ %372, %370 ]
  store double %374, ptr %39, align 8, !tbaa !11
  %375 = load double, ptr %42, align 8, !tbaa !11
  store double %375, ptr %32, align 8, !tbaa !11
  %376 = load double, ptr %39, align 8, !tbaa !11
  %377 = fcmp ole double 1.000000e+00, %376
  br i1 %377, label %378, label %379

378:                                              ; preds = %373
  br label %381

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

381:                                              ; preds = %379, %378
  %382 = phi double [ 1.000000e+00, %378 ], [ %380, %379 ]
  %383 = load double, ptr %47, align 8, !tbaa !11
  %384 = fmul double %382, %383
  store double %384, ptr %33, align 8, !tbaa !11
  %385 = load double, ptr %32, align 8, !tbaa !11
  %386 = load double, ptr %33, align 8, !tbaa !11
  %387 = fcmp ole double %385, %386
  br i1 %387, label %388, label %390

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

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

392:                                              ; preds = %390, %388
  %393 = phi double [ %389, %388 ], [ %391, %390 ]
  store double %393, ptr %42, align 8, !tbaa !11
  %394 = load double, ptr %39, align 8, !tbaa !11
  %395 = load ptr, ptr %24, align 8, !tbaa !5
  %396 = load i64, ptr %36, align 8, !tbaa !9
  %397 = getelementptr inbounds double, ptr %395, i64 %396
  %398 = load double, ptr %397, align 8, !tbaa !11
  %399 = fadd double %394, %398
  %400 = load double, ptr %57, align 8, !tbaa !11
  %401 = fcmp oge double %399, %400
  br i1 %401, label %402, label %413

402:                                              ; preds = %392
  %403 = load double, ptr %39, align 8, !tbaa !11
  %404 = load double, ptr %39, align 8, !tbaa !11
  %405 = load ptr, ptr %24, align 8, !tbaa !5
  %406 = load i64, ptr %36, align 8, !tbaa !9
  %407 = getelementptr inbounds double, ptr %405, i64 %406
  %408 = load double, ptr %407, align 8, !tbaa !11
  %409 = fadd double %404, %408
  %410 = fdiv double %403, %409
  %411 = load double, ptr %47, align 8, !tbaa !11
  %412 = fmul double %411, %410
  store double %412, ptr %47, align 8, !tbaa !11
  br label %414

413:                                              ; preds = %392
  store double 0.000000e+00, ptr %47, align 8, !tbaa !11
  br label %414

414:                                              ; preds = %413, %402
  br label %415

415:                                              ; preds = %414
  %416 = load i64, ptr %29, align 8, !tbaa !9
  %417 = load i64, ptr %36, align 8, !tbaa !9
  %418 = add nsw i64 %417, %416
  store i64 %418, ptr %36, align 8, !tbaa !9
  br label %336, !llvm.loop !16

419:                                              ; preds = %349
  %420 = load double, ptr %42, align 8, !tbaa !11
  store double %420, ptr %47, align 8, !tbaa !11
  br label %479

421:                                              ; preds = %318
  store double 1.000000e+00, ptr %32, align 8, !tbaa !11
  %422 = load double, ptr %42, align 8, !tbaa !11
  %423 = load double, ptr %57, align 8, !tbaa !11
  %424 = fcmp oge double %422, %423
  br i1 %424, label %425, label %427

425:                                              ; preds = %421
  %426 = load double, ptr %42, align 8, !tbaa !11
  br label %429

427:                                              ; preds = %421
  %428 = load double, ptr %57, align 8, !tbaa !11
  br label %429

429:                                              ; preds = %427, %425
  %430 = phi double [ %426, %425 ], [ %428, %427 ]
  %431 = fdiv double 1.000000e+00, %430
  store double %431, ptr %33, align 8, !tbaa !11
  %432 = load double, ptr %32, align 8, !tbaa !11
  %433 = load double, ptr %33, align 8, !tbaa !11
  %434 = fcmp ole double %432, %433
  br i1 %434, label %435, label %437

435:                                              ; preds = %429
  %436 = load double, ptr %32, align 8, !tbaa !11
  br label %439

437:                                              ; preds = %429
  %438 = load double, ptr %33, align 8, !tbaa !11
  br label %439

439:                                              ; preds = %437, %435
  %440 = phi double [ %436, %435 ], [ %438, %437 ]
  store double %440, ptr %47, align 8, !tbaa !11
  %441 = load i64, ptr %52, align 8, !tbaa !9
  store i64 %441, ptr %29, align 8, !tbaa !9
  %442 = load i64, ptr %40, align 8, !tbaa !9
  store i64 %442, ptr %28, align 8, !tbaa !9
  %443 = load i64, ptr %56, align 8, !tbaa !9
  store i64 %443, ptr %36, align 8, !tbaa !9
  br label %444

444:                                              ; preds = %474, %439
  %445 = load i64, ptr %28, align 8, !tbaa !9
  %446 = icmp slt i64 %445, 0
  br i1 %446, label %447, label %452

447:                                              ; preds = %444
  %448 = load i64, ptr %36, align 8, !tbaa !9
  %449 = load i64, ptr %29, align 8, !tbaa !9
  %450 = icmp sge i64 %448, %449
  %451 = zext i1 %450 to i32
  br label %457

452:                                              ; preds = %444
  %453 = load i64, ptr %36, align 8, !tbaa !9
  %454 = load i64, ptr %29, align 8, !tbaa !9
  %455 = icmp sle i64 %453, %454
  %456 = zext i1 %455 to i32
  br label %457

457:                                              ; preds = %452, %447
  %458 = phi i32 [ %451, %447 ], [ %456, %452 ]
  %459 = icmp ne i32 %458, 0
  br i1 %459, label %460, label %478

460:                                              ; preds = %457
  %461 = load double, ptr %47, align 8, !tbaa !11
  %462 = load double, ptr %57, align 8, !tbaa !11
  %463 = fcmp ole double %461, %462
  br i1 %463, label %464, label %465

464:                                              ; preds = %460
  br label %480

465:                                              ; preds = %460
  %466 = load ptr, ptr %24, align 8, !tbaa !5
  %467 = load i64, ptr %36, align 8, !tbaa !9
  %468 = getelementptr inbounds double, ptr %466, i64 %467
  %469 = load double, ptr %468, align 8, !tbaa !11
  %470 = fadd double %469, 1.000000e+00
  %471 = fdiv double 1.000000e+00, %470
  %472 = load double, ptr %47, align 8, !tbaa !11
  %473 = fmul double %472, %471
  store double %473, ptr %47, align 8, !tbaa !11
  br label %474

474:                                              ; preds = %465
  %475 = load i64, ptr %28, align 8, !tbaa !9
  %476 = load i64, ptr %36, align 8, !tbaa !9
  %477 = add nsw i64 %476, %475
  store i64 %477, ptr %36, align 8, !tbaa !9
  br label %444, !llvm.loop !17

478:                                              ; preds = %457
  br label %479

479:                                              ; preds = %478, %419
  br label %480

480:                                              ; preds = %479, %464, %356, %317
  br label %656

481:                                              ; preds = %297
  %482 = load i64, ptr %53, align 8, !tbaa !9
  %483 = icmp ne i64 %482, 0
  br i1 %483, label %484, label %490

484:                                              ; preds = %481
  store i64 1, ptr %56, align 8, !tbaa !9
  %485 = load ptr, ptr %18, align 8, !tbaa !5
  %486 = load i64, ptr %485, align 8, !tbaa !9
  store i64 %486, ptr %52, align 8, !tbaa !9
  store i64 1, ptr %40, align 8, !tbaa !9
  %487 = load ptr, ptr %19, align 8, !tbaa !5
  %488 = load i64, ptr %487, align 8, !tbaa !9
  %489 = add nsw i64 %488, 1
  store i64 %489, ptr %49, align 8, !tbaa !9
  br label %493

490:                                              ; preds = %481
  %491 = load ptr, ptr %18, align 8, !tbaa !5
  %492 = load i64, ptr %491, align 8, !tbaa !9
  store i64 %492, ptr %56, align 8, !tbaa !9
  store i64 1, ptr %52, align 8, !tbaa !9
  store i64 -1, ptr %40, align 8, !tbaa !9
  store i64 1, ptr %49, align 8, !tbaa !9
  br label %493

493:                                              ; preds = %490, %484
  %494 = load double, ptr %50, align 8, !tbaa !11
  %495 = fcmp une double %494, 1.000000e+00
  br i1 %495, label %496, label %497

496:                                              ; preds = %493
  store double 0.000000e+00, ptr %47, align 8, !tbaa !11
  br label %655

497:                                              ; preds = %493
  %498 = load i64, ptr %58, align 8, !tbaa !9
  %499 = icmp ne i64 %498, 0
  br i1 %499, label %500, label %596

500:                                              ; preds = %497
  %501 = load double, ptr %42, align 8, !tbaa !11
  %502 = load double, ptr %57, align 8, !tbaa !11
  %503 = fcmp oge double %501, %502
  br i1 %503, label %504, label %506

504:                                              ; preds = %500
  %505 = load double, ptr %42, align 8, !tbaa !11
  br label %508

506:                                              ; preds = %500
  %507 = load double, ptr %57, align 8, !tbaa !11
  br label %508

508:                                              ; preds = %506, %504
  %509 = phi double [ %505, %504 ], [ %507, %506 ]
  %510 = fdiv double 1.000000e+00, %509
  store double %510, ptr %47, align 8, !tbaa !11
  %511 = load double, ptr %47, align 8, !tbaa !11
  store double %511, ptr %42, align 8, !tbaa !11
  %512 = load i64, ptr %52, align 8, !tbaa !9
  store i64 %512, ptr %28, align 8, !tbaa !9
  %513 = load i64, ptr %40, align 8, !tbaa !9
  store i64 %513, ptr %29, align 8, !tbaa !9
  %514 = load i64, ptr %56, align 8, !tbaa !9
  store i64 %514, ptr %36, align 8, !tbaa !9
  br label %515

515:                                              ; preds = %582, %508
  %516 = load i64, ptr %29, align 8, !tbaa !9
  %517 = icmp slt i64 %516, 0
  br i1 %517, label %518, label %523

518:                                              ; preds = %515
  %519 = load i64, ptr %36, align 8, !tbaa !9
  %520 = load i64, ptr %28, align 8, !tbaa !9
  %521 = icmp sge i64 %519, %520
  %522 = zext i1 %521 to i32
  br label %528

523:                                              ; preds = %515
  %524 = load i64, ptr %36, align 8, !tbaa !9
  %525 = load i64, ptr %28, align 8, !tbaa !9
  %526 = icmp sle i64 %524, %525
  %527 = zext i1 %526 to i32
  br label %528

528:                                              ; preds = %523, %518
  %529 = phi i32 [ %522, %518 ], [ %527, %523 ]
  %530 = icmp ne i32 %529, 0
  br i1 %530, label %531, label %586

531:                                              ; preds = %528
  %532 = load double, ptr %47, align 8, !tbaa !11
  %533 = load double, ptr %57, align 8, !tbaa !11
  %534 = fcmp ole double %532, %533
  br i1 %534, label %535, label %536

535:                                              ; preds = %531
  br label %655

536:                                              ; preds = %531
  %537 = load ptr, ptr %24, align 8, !tbaa !5
  %538 = load i64, ptr %36, align 8, !tbaa !9
  %539 = getelementptr inbounds double, ptr %537, i64 %538
  %540 = load double, ptr %539, align 8, !tbaa !11
  %541 = fadd double %540, 1.000000e+00
  store double %541, ptr %37, align 8, !tbaa !11
  %542 = load double, ptr %47, align 8, !tbaa !11
  store double %542, ptr %32, align 8, !tbaa !11
  %543 = load double, ptr %42, align 8, !tbaa !11
  %544 = load double, ptr %37, align 8, !tbaa !11
  %545 = fdiv double %543, %544
  store double %545, ptr %33, align 8, !tbaa !11
  %546 = load double, ptr %32, align 8, !tbaa !11
  %547 = load double, ptr %33, align 8, !tbaa !11
  %548 = fcmp ole double %546, %547
  br i1 %548, label %549, label %551

549:                                              ; preds = %536
  %550 = load double, ptr %32, align 8, !tbaa !11
  br label %553

551:                                              ; preds = %536
  %552 = load double, ptr %33, align 8, !tbaa !11
  br label %553

553:                                              ; preds = %551, %549
  %554 = phi double [ %550, %549 ], [ %552, %551 ]
  store double %554, ptr %47, align 8, !tbaa !11
  %555 = load ptr, ptr %20, align 8, !tbaa !5
  %556 = load i64, ptr %49, align 8, !tbaa !9
  %557 = load i64, ptr %36, align 8, !tbaa !9
  %558 = load i64, ptr %26, align 8, !tbaa !9
  %559 = mul nsw i64 %557, %558
  %560 = add nsw i64 %556, %559
  %561 = getelementptr inbounds double, ptr %555, i64 %560
  %562 = load double, ptr %561, align 8, !tbaa !11
  store double %562, ptr %32, align 8, !tbaa !11
  %563 = load double, ptr %32, align 8, !tbaa !11
  %564 = fcmp oge double %563, 0.000000e+00
  br i1 %564, label %565, label %567

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

567:                                              ; preds = %553
  %568 = load double, ptr %32, align 8, !tbaa !11
  %569 = fneg double %568
  br label %570

570:                                              ; preds = %567, %565
  %571 = phi double [ %566, %565 ], [ %569, %567 ]
  store double %571, ptr %39, align 8, !tbaa !11
  %572 = load double, ptr %37, align 8, !tbaa !11
  %573 = load double, ptr %39, align 8, !tbaa !11
  %574 = fcmp ogt double %572, %573
  br i1 %574, label %575, label %581

575:                                              ; preds = %570
  %576 = load double, ptr %39, align 8, !tbaa !11
  %577 = load double, ptr %37, align 8, !tbaa !11
  %578 = fdiv double %576, %577
  %579 = load double, ptr %42, align 8, !tbaa !11
  %580 = fmul double %579, %578
  store double %580, ptr %42, align 8, !tbaa !11
  br label %581

581:                                              ; preds = %575, %570
  br label %582

582:                                              ; preds = %581
  %583 = load i64, ptr %29, align 8, !tbaa !9
  %584 = load i64, ptr %36, align 8, !tbaa !9
  %585 = add nsw i64 %584, %583
  store i64 %585, ptr %36, align 8, !tbaa !9
  br label %515, !llvm.loop !18

586:                                              ; preds = %528
  %587 = load double, ptr %47, align 8, !tbaa !11
  %588 = load double, ptr %42, align 8, !tbaa !11
  %589 = fcmp ole double %587, %588
  br i1 %589, label %590, label %592

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

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

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

596:                                              ; preds = %497
  store double 1.000000e+00, ptr %32, align 8, !tbaa !11
  %597 = load double, ptr %42, align 8, !tbaa !11
  %598 = load double, ptr %57, align 8, !tbaa !11
  %599 = fcmp oge double %597, %598
  br i1 %599, label %600, label %602

600:                                              ; preds = %596
  %601 = load double, ptr %42, align 8, !tbaa !11
  br label %604

602:                                              ; preds = %596
  %603 = load double, ptr %57, align 8, !tbaa !11
  br label %604

604:                                              ; preds = %602, %600
  %605 = phi double [ %601, %600 ], [ %603, %602 ]
  %606 = fdiv double 1.000000e+00, %605
  store double %606, ptr %33, align 8, !tbaa !11
  %607 = load double, ptr %32, align 8, !tbaa !11
  %608 = load double, ptr %33, align 8, !tbaa !11
  %609 = fcmp ole double %607, %608
  br i1 %609, label %610, label %612

610:                                              ; preds = %604
  %611 = load double, ptr %32, align 8, !tbaa !11
  br label %614

612:                                              ; preds = %604
  %613 = load double, ptr %33, align 8, !tbaa !11
  br label %614

614:                                              ; preds = %612, %610
  %615 = phi double [ %611, %610 ], [ %613, %612 ]
  store double %615, ptr %47, align 8, !tbaa !11
  %616 = load i64, ptr %52, align 8, !tbaa !9
  store i64 %616, ptr %29, align 8, !tbaa !9
  %617 = load i64, ptr %40, align 8, !tbaa !9
  store i64 %617, ptr %28, align 8, !tbaa !9
  %618 = load i64, ptr %56, align 8, !tbaa !9
  store i64 %618, ptr %36, align 8, !tbaa !9
  br label %619

619:                                              ; preds = %649, %614
  %620 = load i64, ptr %28, align 8, !tbaa !9
  %621 = icmp slt i64 %620, 0
  br i1 %621, label %622, label %627

622:                                              ; preds = %619
  %623 = load i64, ptr %36, align 8, !tbaa !9
  %624 = load i64, ptr %29, align 8, !tbaa !9
  %625 = icmp sge i64 %623, %624
  %626 = zext i1 %625 to i32
  br label %632

627:                                              ; preds = %619
  %628 = load i64, ptr %36, align 8, !tbaa !9
  %629 = load i64, ptr %29, align 8, !tbaa !9
  %630 = icmp sle i64 %628, %629
  %631 = zext i1 %630 to i32
  br label %632

632:                                              ; preds = %627, %622
  %633 = phi i32 [ %626, %622 ], [ %631, %627 ]
  %634 = icmp ne i32 %633, 0
  br i1 %634, label %635, label %653

635:                                              ; preds = %632
  %636 = load double, ptr %47, align 8, !tbaa !11
  %637 = load double, ptr %57, align 8, !tbaa !11
  %638 = fcmp ole double %636, %637
  br i1 %638, label %639, label %640

639:                                              ; preds = %635
  br label %655

640:                                              ; preds = %635
  %641 = load ptr, ptr %24, align 8, !tbaa !5
  %642 = load i64, ptr %36, align 8, !tbaa !9
  %643 = getelementptr inbounds double, ptr %641, i64 %642
  %644 = load double, ptr %643, align 8, !tbaa !11
  %645 = fadd double %644, 1.000000e+00
  store double %645, ptr %37, align 8, !tbaa !11
  %646 = load double, ptr %37, align 8, !tbaa !11
  %647 = load double, ptr %47, align 8, !tbaa !11
  %648 = fdiv double %647, %646
  store double %648, ptr %47, align 8, !tbaa !11
  br label %649

649:                                              ; preds = %640
  %650 = load i64, ptr %28, align 8, !tbaa !9
  %651 = load i64, ptr %36, align 8, !tbaa !9
  %652 = add nsw i64 %651, %650
  store i64 %652, ptr %36, align 8, !tbaa !9
  br label %619, !llvm.loop !19

653:                                              ; preds = %632
  br label %654

654:                                              ; preds = %653, %594
  br label %655

655:                                              ; preds = %654, %639, %535, %496
  br label %656

656:                                              ; preds = %655, %480
  %657 = load double, ptr %47, align 8, !tbaa !11
  %658 = load double, ptr %50, align 8, !tbaa !11
  %659 = fmul double %657, %658
  %660 = load double, ptr %57, align 8, !tbaa !11
  %661 = fcmp ogt double %659, %660
  br i1 %661, label %662, label %675

662:                                              ; preds = %656
  %663 = load ptr, ptr %14, align 8, !tbaa !5
  %664 = load ptr, ptr %15, align 8, !tbaa !5
  %665 = load ptr, ptr %16, align 8, !tbaa !5
  %666 = load ptr, ptr %18, align 8, !tbaa !5
  %667 = load ptr, ptr %19, align 8, !tbaa !5
  %668 = load ptr, ptr %20, align 8, !tbaa !5
  %669 = load i64, ptr %27, align 8, !tbaa !9
  %670 = getelementptr inbounds double, ptr %668, i64 %669
  %671 = load ptr, ptr %21, align 8, !tbaa !5
  %672 = load ptr, ptr %22, align 8, !tbaa !5
  %673 = getelementptr inbounds double, ptr %672, i64 1
  %674 = call i32 @f2c_dtbsv(ptr noundef %663, ptr noundef %664, ptr noundef %665, ptr noundef %666, ptr noundef %667, ptr noundef %670, ptr noundef %671, ptr noundef %673, ptr noundef @c__1)
  br label %1539

675:                                              ; preds = %656
  %676 = load double, ptr %46, align 8, !tbaa !11
  %677 = load double, ptr %54, align 8, !tbaa !11
  %678 = fcmp ogt double %676, %677
  br i1 %678, label %679, label %690

679:                                              ; preds = %675
  %680 = load double, ptr %54, align 8, !tbaa !11
  %681 = load double, ptr %46, align 8, !tbaa !11
  %682 = fdiv double %680, %681
  %683 = load ptr, ptr %23, align 8, !tbaa !5
  store double %682, ptr %683, align 8, !tbaa !11
  %684 = load ptr, ptr %18, align 8, !tbaa !5
  %685 = load ptr, ptr %23, align 8, !tbaa !5
  %686 = load ptr, ptr %22, align 8, !tbaa !5
  %687 = getelementptr inbounds double, ptr %686, i64 1
  %688 = call i32 @f2c_dscal(ptr noundef %684, ptr noundef %685, ptr noundef %687, ptr noundef @c__1)
  %689 = load double, ptr %54, align 8, !tbaa !11
  store double %689, ptr %46, align 8, !tbaa !11
  br label %690

690:                                              ; preds = %679, %675
  %691 = load i64, ptr %55, align 8, !tbaa !9
  %692 = icmp ne i64 %691, 0
  br i1 %692, label %693, label %1068

693:                                              ; preds = %690
  %694 = load i64, ptr %52, align 8, !tbaa !9
  store i64 %694, ptr %28, align 8, !tbaa !9
  %695 = load i64, ptr %40, align 8, !tbaa !9
  store i64 %695, ptr %29, align 8, !tbaa !9
  %696 = load i64, ptr %56, align 8, !tbaa !9
  store i64 %696, ptr %36, align 8, !tbaa !9
  br label %697

697:                                              ; preds = %1063, %693
  %698 = load i64, ptr %29, align 8, !tbaa !9
  %699 = icmp slt i64 %698, 0
  br i1 %699, label %700, label %705

700:                                              ; preds = %697
  %701 = load i64, ptr %36, align 8, !tbaa !9
  %702 = load i64, ptr %28, align 8, !tbaa !9
  %703 = icmp sge i64 %701, %702
  %704 = zext i1 %703 to i32
  br label %710

705:                                              ; preds = %697
  %706 = load i64, ptr %36, align 8, !tbaa !9
  %707 = load i64, ptr %28, align 8, !tbaa !9
  %708 = icmp sle i64 %706, %707
  %709 = zext i1 %708 to i32
  br label %710

710:                                              ; preds = %705, %700
  %711 = phi i32 [ %704, %700 ], [ %709, %705 ]
  %712 = icmp ne i32 %711, 0
  br i1 %712, label %713, label %1067

713:                                              ; preds = %710
  %714 = load ptr, ptr %22, align 8, !tbaa !5
  %715 = load i64, ptr %36, align 8, !tbaa !9
  %716 = getelementptr inbounds double, ptr %714, i64 %715
  %717 = load double, ptr %716, align 8, !tbaa !11
  store double %717, ptr %32, align 8, !tbaa !11
  %718 = load double, ptr %32, align 8, !tbaa !11
  %719 = fcmp oge double %718, 0.000000e+00
  br i1 %719, label %720, label %722

720:                                              ; preds = %713
  %721 = load double, ptr %32, align 8, !tbaa !11
  br label %725

722:                                              ; preds = %713
  %723 = load double, ptr %32, align 8, !tbaa !11
  %724 = fneg double %723
  br label %725

725:                                              ; preds = %722, %720
  %726 = phi double [ %721, %720 ], [ %724, %722 ]
  store double %726, ptr %37, align 8, !tbaa !11
  %727 = load i64, ptr %58, align 8, !tbaa !9
  %728 = icmp ne i64 %727, 0
  br i1 %728, label %729, label %740

729:                                              ; preds = %725
  %730 = load ptr, ptr %20, align 8, !tbaa !5
  %731 = load i64, ptr %49, align 8, !tbaa !9
  %732 = load i64, ptr %36, align 8, !tbaa !9
  %733 = load i64, ptr %26, align 8, !tbaa !9
  %734 = mul nsw i64 %732, %733
  %735 = add nsw i64 %731, %734
  %736 = getelementptr inbounds double, ptr %730, i64 %735
  %737 = load double, ptr %736, align 8, !tbaa !11
  %738 = load double, ptr %50, align 8, !tbaa !11
  %739 = fmul double %737, %738
  store double %739, ptr %45, align 8, !tbaa !11
  br label %746

740:                                              ; preds = %725
  %741 = load double, ptr %50, align 8, !tbaa !11
  store double %741, ptr %45, align 8, !tbaa !11
  %742 = load double, ptr %50, align 8, !tbaa !11
  %743 = fcmp oeq double %742, 1.000000e+00
  br i1 %743, label %744, label %745

744:                                              ; preds = %740
  br label %883

745:                                              ; preds = %740
  br label %746

746:                                              ; preds = %745, %729
  %747 = load double, ptr %45, align 8, !tbaa !11
  %748 = fcmp oge double %747, 0.000000e+00
  br i1 %748, label %749, label %751

749:                                              ; preds = %746
  %750 = load double, ptr %45, align 8, !tbaa !11
  br label %754

751:                                              ; preds = %746
  %752 = load double, ptr %45, align 8, !tbaa !11
  %753 = fneg double %752
  br label %754

754:                                              ; preds = %751, %749
  %755 = phi double [ %750, %749 ], [ %753, %751 ]
  store double %755, ptr %39, align 8, !tbaa !11
  %756 = load double, ptr %39, align 8, !tbaa !11
  %757 = load double, ptr %57, align 8, !tbaa !11
  %758 = fcmp ogt double %756, %757
  br i1 %758, label %759, label %803

759:                                              ; preds = %754
  %760 = load double, ptr %39, align 8, !tbaa !11
  %761 = fcmp olt double %760, 1.000000e+00
  br i1 %761, label %762, label %783

762:                                              ; preds = %759
  %763 = load double, ptr %37, align 8, !tbaa !11
  %764 = load double, ptr %39, align 8, !tbaa !11
  %765 = load double, ptr %54, align 8, !tbaa !11
  %766 = fmul double %764, %765
  %767 = fcmp ogt double %763, %766
  br i1 %767, label %768, label %782

768:                                              ; preds = %762
  %769 = load double, ptr %37, align 8, !tbaa !11
  %770 = fdiv double 1.000000e+00, %769
  store double %770, ptr %38, align 8, !tbaa !11
  %771 = load ptr, ptr %18, align 8, !tbaa !5
  %772 = load ptr, ptr %22, align 8, !tbaa !5
  %773 = getelementptr inbounds double, ptr %772, i64 1
  %774 = call i32 @f2c_dscal(ptr noundef %771, ptr noundef %38, ptr noundef %773, ptr noundef @c__1)
  %775 = load double, ptr %38, align 8, !tbaa !11
  %776 = load ptr, ptr %23, align 8, !tbaa !5
  %777 = load double, ptr %776, align 8, !tbaa !11
  %778 = fmul double %777, %775
  store double %778, ptr %776, align 8, !tbaa !11
  %779 = load double, ptr %38, align 8, !tbaa !11
  %780 = load double, ptr %46, align 8, !tbaa !11
  %781 = fmul double %780, %779
  store double %781, ptr %46, align 8, !tbaa !11
  br label %782

782:                                              ; preds = %768, %762
  br label %783

783:                                              ; preds = %782, %759
  %784 = load double, ptr %45, align 8, !tbaa !11
  %785 = load ptr, ptr %22, align 8, !tbaa !5
  %786 = load i64, ptr %36, align 8, !tbaa !9
  %787 = getelementptr inbounds double, ptr %785, i64 %786
  %788 = load double, ptr %787, align 8, !tbaa !11
  %789 = fdiv double %788, %784
  store double %789, ptr %787, align 8, !tbaa !11
  %790 = load ptr, ptr %22, align 8, !tbaa !5
  %791 = load i64, ptr %36, align 8, !tbaa !9
  %792 = getelementptr inbounds double, ptr %790, i64 %791
  %793 = load double, ptr %792, align 8, !tbaa !11
  store double %793, ptr %32, align 8, !tbaa !11
  %794 = load double, ptr %32, align 8, !tbaa !11
  %795 = fcmp oge double %794, 0.000000e+00
  br i1 %795, label %796, label %798

796:                                              ; preds = %783
  %797 = load double, ptr %32, align 8, !tbaa !11
  br label %801

798:                                              ; preds = %783
  %799 = load double, ptr %32, align 8, !tbaa !11
  %800 = fneg double %799
  br label %801

801:                                              ; preds = %798, %796
  %802 = phi double [ %797, %796 ], [ %800, %798 ]
  store double %802, ptr %37, align 8, !tbaa !11
  br label %882

803:                                              ; preds = %754
  %804 = load double, ptr %39, align 8, !tbaa !11
  %805 = fcmp ogt double %804, 0.000000e+00
  br i1 %805, label %806, label %862

806:                                              ; preds = %803
  %807 = load double, ptr %37, align 8, !tbaa !11
  %808 = load double, ptr %39, align 8, !tbaa !11
  %809 = load double, ptr %54, align 8, !tbaa !11
  %810 = fmul double %808, %809
  %811 = fcmp ogt double %807, %810
  br i1 %811, label %812, label %842

812:                                              ; preds = %806
  %813 = load double, ptr %39, align 8, !tbaa !11
  %814 = load double, ptr %54, align 8, !tbaa !11
  %815 = fmul double %813, %814
  %816 = load double, ptr %37, align 8, !tbaa !11
  %817 = fdiv double %815, %816
  store double %817, ptr %38, align 8, !tbaa !11
  %818 = load ptr, ptr %24, align 8, !tbaa !5
  %819 = load i64, ptr %36, align 8, !tbaa !9
  %820 = getelementptr inbounds double, ptr %818, i64 %819
  %821 = load double, ptr %820, align 8, !tbaa !11
  %822 = fcmp ogt double %821, 1.000000e+00
  br i1 %822, label %823, label %830

823:                                              ; preds = %812
  %824 = load ptr, ptr %24, align 8, !tbaa !5
  %825 = load i64, ptr %36, align 8, !tbaa !9
  %826 = getelementptr inbounds double, ptr %824, i64 %825
  %827 = load double, ptr %826, align 8, !tbaa !11
  %828 = load double, ptr %38, align 8, !tbaa !11
  %829 = fdiv double %828, %827
  store double %829, ptr %38, align 8, !tbaa !11
  br label %830

830:                                              ; preds = %823, %812
  %831 = load ptr, ptr %18, align 8, !tbaa !5
  %832 = load ptr, ptr %22, align 8, !tbaa !5
  %833 = getelementptr inbounds double, ptr %832, i64 1
  %834 = call i32 @f2c_dscal(ptr noundef %831, ptr noundef %38, ptr noundef %833, ptr noundef @c__1)
  %835 = load double, ptr %38, align 8, !tbaa !11
  %836 = load ptr, ptr %23, align 8, !tbaa !5
  %837 = load double, ptr %836, align 8, !tbaa !11
  %838 = fmul double %837, %835
  store double %838, ptr %836, align 8, !tbaa !11
  %839 = load double, ptr %38, align 8, !tbaa !11
  %840 = load double, ptr %46, align 8, !tbaa !11
  %841 = fmul double %840, %839
  store double %841, ptr %46, align 8, !tbaa !11
  br label %842

842:                                              ; preds = %830, %806
  %843 = load double, ptr %45, align 8, !tbaa !11
  %844 = load ptr, ptr %22, align 8, !tbaa !5
  %845 = load i64, ptr %36, align 8, !tbaa !9
  %846 = getelementptr inbounds double, ptr %844, i64 %845
  %847 = load double, ptr %846, align 8, !tbaa !11
  %848 = fdiv double %847, %843
  store double %848, ptr %846, align 8, !tbaa !11
  %849 = load ptr, ptr %22, align 8, !tbaa !5
  %850 = load i64, ptr %36, align 8, !tbaa !9
  %851 = getelementptr inbounds double, ptr %849, i64 %850
  %852 = load double, ptr %851, align 8, !tbaa !11
  store double %852, ptr %32, align 8, !tbaa !11
  %853 = load double, ptr %32, align 8, !tbaa !11
  %854 = fcmp oge double %853, 0.000000e+00
  br i1 %854, label %855, label %857

855:                                              ; preds = %842
  %856 = load double, ptr %32, align 8, !tbaa !11
  br label %860

857:                                              ; preds = %842
  %858 = load double, ptr %32, align 8, !tbaa !11
  %859 = fneg double %858
  br label %860

860:                                              ; preds = %857, %855
  %861 = phi double [ %856, %855 ], [ %859, %857 ]
  store double %861, ptr %37, align 8, !tbaa !11
  br label %881

862:                                              ; preds = %803
  %863 = load ptr, ptr %18, align 8, !tbaa !5
  %864 = load i64, ptr %863, align 8, !tbaa !9
  store i64 %864, ptr %30, align 8, !tbaa !9
  store i64 1, ptr %35, align 8, !tbaa !9
  br label %865

865:                                              ; preds = %873, %862
  %866 = load i64, ptr %35, align 8, !tbaa !9
  %867 = load i64, ptr %30, align 8, !tbaa !9
  %868 = icmp sle i64 %866, %867
  br i1 %868, label %869, label %876

869:                                              ; preds = %865
  %870 = load ptr, ptr %22, align 8, !tbaa !5
  %871 = load i64, ptr %35, align 8, !tbaa !9
  %872 = getelementptr inbounds double, ptr %870, i64 %871
  store double 0.000000e+00, ptr %872, align 8, !tbaa !11
  br label %873

873:                                              ; preds = %869
  %874 = load i64, ptr %35, align 8, !tbaa !9
  %875 = add nsw i64 %874, 1
  store i64 %875, ptr %35, align 8, !tbaa !9
  br label %865, !llvm.loop !20

876:                                              ; preds = %865
  %877 = load ptr, ptr %22, align 8, !tbaa !5
  %878 = load i64, ptr %36, align 8, !tbaa !9
  %879 = getelementptr inbounds double, ptr %877, i64 %878
  store double 1.000000e+00, ptr %879, align 8, !tbaa !11
  store double 1.000000e+00, ptr %37, align 8, !tbaa !11
  %880 = load ptr, ptr %23, align 8, !tbaa !5
  store double 0.000000e+00, ptr %880, align 8, !tbaa !11
  store double 0.000000e+00, ptr %46, align 8, !tbaa !11
  br label %881

881:                                              ; preds = %876, %860
  br label %882

882:                                              ; preds = %881, %801
  br label %883

883:                                              ; preds = %882, %744
  %884 = load double, ptr %37, align 8, !tbaa !11
  %885 = fcmp ogt double %884, 1.000000e+00
  br i1 %885, label %886, label %911

886:                                              ; preds = %883
  %887 = load double, ptr %37, align 8, !tbaa !11
  %888 = fdiv double 1.000000e+00, %887
  store double %888, ptr %38, align 8, !tbaa !11
  %889 = load ptr, ptr %24, align 8, !tbaa !5
  %890 = load i64, ptr %36, align 8, !tbaa !9
  %891 = getelementptr inbounds double, ptr %889, i64 %890
  %892 = load double, ptr %891, align 8, !tbaa !11
  %893 = load double, ptr %54, align 8, !tbaa !11
  %894 = load double, ptr %46, align 8, !tbaa !11
  %895 = fsub double %893, %894
  %896 = load double, ptr %38, align 8, !tbaa !11
  %897 = fmul double %895, %896
  %898 = fcmp ogt double %892, %897
  br i1 %898, label %899, label %910

899:                                              ; preds = %886
  %900 = load double, ptr %38, align 8, !tbaa !11
  %901 = fmul double %900, 5.000000e-01
  store double %901, ptr %38, align 8, !tbaa !11
  %902 = load ptr, ptr %18, align 8, !tbaa !5
  %903 = load ptr, ptr %22, align 8, !tbaa !5
  %904 = getelementptr inbounds double, ptr %903, i64 1
  %905 = call i32 @f2c_dscal(ptr noundef %902, ptr noundef %38, ptr noundef %904, ptr noundef @c__1)
  %906 = load double, ptr %38, align 8, !tbaa !11
  %907 = load ptr, ptr %23, align 8, !tbaa !5
  %908 = load double, ptr %907, align 8, !tbaa !11
  %909 = fmul double %908, %906
  store double %909, ptr %907, align 8, !tbaa !11
  br label %910

910:                                              ; preds = %899, %886
  br label %931

911:                                              ; preds = %883
  %912 = load double, ptr %37, align 8, !tbaa !11
  %913 = load ptr, ptr %24, align 8, !tbaa !5
  %914 = load i64, ptr %36, align 8, !tbaa !9
  %915 = getelementptr inbounds double, ptr %913, i64 %914
  %916 = load double, ptr %915, align 8, !tbaa !11
  %917 = fmul double %912, %916
  %918 = load double, ptr %54, align 8, !tbaa !11
  %919 = load double, ptr %46, align 8, !tbaa !11
  %920 = fsub double %918, %919
  %921 = fcmp ogt double %917, %920
  br i1 %921, label %922, label %930

922:                                              ; preds = %911
  %923 = load ptr, ptr %18, align 8, !tbaa !5
  %924 = load ptr, ptr %22, align 8, !tbaa !5
  %925 = getelementptr inbounds double, ptr %924, i64 1
  %926 = call i32 @f2c_dscal(ptr noundef %923, ptr noundef @c_b36, ptr noundef %925, ptr noundef @c__1)
  %927 = load ptr, ptr %23, align 8, !tbaa !5
  %928 = load double, ptr %927, align 8, !tbaa !11
  %929 = fmul double %928, 5.000000e-01
  store double %929, ptr %927, align 8, !tbaa !11
  br label %930

930:                                              ; preds = %922, %911
  br label %931

931:                                              ; preds = %930, %910
  %932 = load i64, ptr %53, align 8, !tbaa !9
  %933 = icmp ne i64 %932, 0
  br i1 %933, label %934, label %994

934:                                              ; preds = %931
  %935 = load i64, ptr %36, align 8, !tbaa !9
  %936 = icmp sgt i64 %935, 1
  br i1 %936, label %937, label %993

937:                                              ; preds = %934
  %938 = load ptr, ptr %19, align 8, !tbaa !5
  %939 = load i64, ptr %938, align 8, !tbaa !9
  store i64 %939, ptr %30, align 8, !tbaa !9
  %940 = load i64, ptr %36, align 8, !tbaa !9
  %941 = sub nsw i64 %940, 1
  store i64 %941, ptr %31, align 8, !tbaa !9
  %942 = load i64, ptr %30, align 8, !tbaa !9
  %943 = load i64, ptr %31, align 8, !tbaa !9
  %944 = icmp sle i64 %942, %943
  br i1 %944, label %945, label %947

945:                                              ; preds = %937
  %946 = load i64, ptr %30, align 8, !tbaa !9
  br label %949

947:                                              ; preds = %937
  %948 = load i64, ptr %31, align 8, !tbaa !9
  br label %949

949:                                              ; preds = %947, %945
  %950 = phi i64 [ %946, %945 ], [ %948, %947 ]
  store i64 %950, ptr %41, align 8, !tbaa !9
  %951 = load ptr, ptr %22, align 8, !tbaa !5
  %952 = load i64, ptr %36, align 8, !tbaa !9
  %953 = getelementptr inbounds double, ptr %951, i64 %952
  %954 = load double, ptr %953, align 8, !tbaa !11
  %955 = fneg double %954
  %956 = load double, ptr %50, align 8, !tbaa !11
  %957 = fmul double %955, %956
  store double %957, ptr %32, align 8, !tbaa !11
  %958 = load ptr, ptr %20, align 8, !tbaa !5
  %959 = load ptr, ptr %19, align 8, !tbaa !5
  %960 = load i64, ptr %959, align 8, !tbaa !9
  %961 = add nsw i64 %960, 1
  %962 = load i64, ptr %41, align 8, !tbaa !9
  %963 = sub nsw i64 %961, %962
  %964 = load i64, ptr %36, align 8, !tbaa !9
  %965 = load i64, ptr %26, align 8, !tbaa !9
  %966 = mul nsw i64 %964, %965
  %967 = add nsw i64 %963, %966
  %968 = getelementptr inbounds double, ptr %958, i64 %967
  %969 = load ptr, ptr %22, align 8, !tbaa !5
  %970 = load i64, ptr %36, align 8, !tbaa !9
  %971 = load i64, ptr %41, align 8, !tbaa !9
  %972 = sub nsw i64 %970, %971
  %973 = getelementptr inbounds double, ptr %969, i64 %972
  %974 = call i32 @f2c_daxpy(ptr noundef %41, ptr noundef %32, ptr noundef %968, ptr noundef @c__1, ptr noundef %973, ptr noundef @c__1)
  %975 = load i64, ptr %36, align 8, !tbaa !9
  %976 = sub nsw i64 %975, 1
  store i64 %976, ptr %30, align 8, !tbaa !9
  %977 = load ptr, ptr %22, align 8, !tbaa !5
  %978 = getelementptr inbounds double, ptr %977, i64 1
  %979 = call i64 @f2c_idamax(ptr noundef %30, ptr noundef %978, ptr noundef @c__1)
  store i64 %979, ptr %35, align 8, !tbaa !9
  %980 = load ptr, ptr %22, align 8, !tbaa !5
  %981 = load i64, ptr %35, align 8, !tbaa !9
  %982 = getelementptr inbounds double, ptr %980, i64 %981
  %983 = load double, ptr %982, align 8, !tbaa !11
  store double %983, ptr %32, align 8, !tbaa !11
  %984 = load double, ptr %32, align 8, !tbaa !11
  %985 = fcmp oge double %984, 0.000000e+00
  br i1 %985, label %986, label %988

986:                                              ; preds = %949
  %987 = load double, ptr %32, align 8, !tbaa !11
  br label %991

988:                                              ; preds = %949
  %989 = load double, ptr %32, align 8, !tbaa !11
  %990 = fneg double %989
  br label %991

991:                                              ; preds = %988, %986
  %992 = phi double [ %987, %986 ], [ %990, %988 ]
  store double %992, ptr %46, align 8, !tbaa !11
  br label %993

993:                                              ; preds = %991, %934
  br label %1062

994:                                              ; preds = %931
  %995 = load i64, ptr %36, align 8, !tbaa !9
  %996 = load ptr, ptr %18, align 8, !tbaa !5
  %997 = load i64, ptr %996, align 8, !tbaa !9
  %998 = icmp slt i64 %995, %997
  br i1 %998, label %999, label %1061

999:                                              ; preds = %994
  %1000 = load ptr, ptr %19, align 8, !tbaa !5
  %1001 = load i64, ptr %1000, align 8, !tbaa !9
  store i64 %1001, ptr %30, align 8, !tbaa !9
  %1002 = load ptr, ptr %18, align 8, !tbaa !5
  %1003 = load i64, ptr %1002, align 8, !tbaa !9
  %1004 = load i64, ptr %36, align 8, !tbaa !9
  %1005 = sub nsw i64 %1003, %1004
  store i64 %1005, ptr %31, align 8, !tbaa !9
  %1006 = load i64, ptr %30, align 8, !tbaa !9
  %1007 = load i64, ptr %31, align 8, !tbaa !9
  %1008 = icmp sle i64 %1006, %1007
  br i1 %1008, label %1009, label %1011

1009:                                             ; preds = %999
  %1010 = load i64, ptr %30, align 8, !tbaa !9
  br label %1013

1011:                                             ; preds = %999
  %1012 = load i64, ptr %31, align 8, !tbaa !9
  br label %1013

1013:                                             ; preds = %1011, %1009
  %1014 = phi i64 [ %1010, %1009 ], [ %1012, %1011 ]
  store i64 %1014, ptr %41, align 8, !tbaa !9
  %1015 = load i64, ptr %41, align 8, !tbaa !9
  %1016 = icmp sgt i64 %1015, 0
  br i1 %1016, label %1017, label %1036

1017:                                             ; preds = %1013
  %1018 = load ptr, ptr %22, align 8, !tbaa !5
  %1019 = load i64, ptr %36, align 8, !tbaa !9
  %1020 = getelementptr inbounds double, ptr %1018, i64 %1019
  %1021 = load double, ptr %1020, align 8, !tbaa !11
  %1022 = fneg double %1021
  %1023 = load double, ptr %50, align 8, !tbaa !11
  %1024 = fmul double %1022, %1023
  store double %1024, ptr %32, align 8, !tbaa !11
  %1025 = load ptr, ptr %20, align 8, !tbaa !5
  %1026 = load i64, ptr %36, align 8, !tbaa !9
  %1027 = load i64, ptr %26, align 8, !tbaa !9
  %1028 = mul nsw i64 %1026, %1027
  %1029 = add nsw i64 %1028, 2
  %1030 = getelementptr inbounds double, ptr %1025, i64 %1029
  %1031 = load ptr, ptr %22, align 8, !tbaa !5
  %1032 = load i64, ptr %36, align 8, !tbaa !9
  %1033 = add nsw i64 %1032, 1
  %1034 = getelementptr inbounds double, ptr %1031, i64 %1033
  %1035 = call i32 @f2c_daxpy(ptr noundef %41, ptr noundef %32, ptr noundef %1030, ptr noundef @c__1, ptr noundef %1034, ptr noundef @c__1)
  br label %1036

1036:                                             ; preds = %1017, %1013
  %1037 = load ptr, ptr %18, align 8, !tbaa !5
  %1038 = load i64, ptr %1037, align 8, !tbaa !9
  %1039 = load i64, ptr %36, align 8, !tbaa !9
  %1040 = sub nsw i64 %1038, %1039
  store i64 %1040, ptr %30, align 8, !tbaa !9
  %1041 = load i64, ptr %36, align 8, !tbaa !9
  %1042 = load ptr, ptr %22, align 8, !tbaa !5
  %1043 = load i64, ptr %36, align 8, !tbaa !9
  %1044 = add nsw i64 %1043, 1
  %1045 = getelementptr inbounds double, ptr %1042, i64 %1044
  %1046 = call i64 @f2c_idamax(ptr noundef %30, ptr noundef %1045, ptr noundef @c__1)
  %1047 = add nsw i64 %1041, %1046
  store i64 %1047, ptr %35, align 8, !tbaa !9
  %1048 = load ptr, ptr %22, align 8, !tbaa !5
  %1049 = load i64, ptr %35, align 8, !tbaa !9
  %1050 = getelementptr inbounds double, ptr %1048, i64 %1049
  %1051 = load double, ptr %1050, align 8, !tbaa !11
  store double %1051, ptr %32, align 8, !tbaa !11
  %1052 = load double, ptr %32, align 8, !tbaa !11
  %1053 = fcmp oge double %1052, 0.000000e+00
  br i1 %1053, label %1054, label %1056

1054:                                             ; preds = %1036
  %1055 = load double, ptr %32, align 8, !tbaa !11
  br label %1059

1056:                                             ; preds = %1036
  %1057 = load double, ptr %32, align 8, !tbaa !11
  %1058 = fneg double %1057
  br label %1059

1059:                                             ; preds = %1056, %1054
  %1060 = phi double [ %1055, %1054 ], [ %1058, %1056 ]
  store double %1060, ptr %46, align 8, !tbaa !11
  br label %1061

1061:                                             ; preds = %1059, %994
  br label %1062

1062:                                             ; preds = %1061, %993
  br label %1063

1063:                                             ; preds = %1062
  %1064 = load i64, ptr %29, align 8, !tbaa !9
  %1065 = load i64, ptr %36, align 8, !tbaa !9
  %1066 = add nsw i64 %1065, %1064
  store i64 %1066, ptr %36, align 8, !tbaa !9
  br label %697, !llvm.loop !21

1067:                                             ; preds = %710
  br label %1534

1068:                                             ; preds = %690
  %1069 = load i64, ptr %52, align 8, !tbaa !9
  store i64 %1069, ptr %29, align 8, !tbaa !9
  %1070 = load i64, ptr %40, align 8, !tbaa !9
  store i64 %1070, ptr %28, align 8, !tbaa !9
  %1071 = load i64, ptr %56, align 8, !tbaa !9
  store i64 %1071, ptr %36, align 8, !tbaa !9
  br label %1072

1072:                                             ; preds = %1529, %1068
  %1073 = load i64, ptr %28, align 8, !tbaa !9
  %1074 = icmp slt i64 %1073, 0
  br i1 %1074, label %1075, label %1080

1075:                                             ; preds = %1072
  %1076 = load i64, ptr %36, align 8, !tbaa !9
  %1077 = load i64, ptr %29, align 8, !tbaa !9
  %1078 = icmp sge i64 %1076, %1077
  %1079 = zext i1 %1078 to i32
  br label %1085

1080:                                             ; preds = %1072
  %1081 = load i64, ptr %36, align 8, !tbaa !9
  %1082 = load i64, ptr %29, align 8, !tbaa !9
  %1083 = icmp sle i64 %1081, %1082
  %1084 = zext i1 %1083 to i32
  br label %1085

1085:                                             ; preds = %1080, %1075
  %1086 = phi i32 [ %1079, %1075 ], [ %1084, %1080 ]
  %1087 = icmp ne i32 %1086, 0
  br i1 %1087, label %1088, label %1533

1088:                                             ; preds = %1085
  %1089 = load ptr, ptr %22, align 8, !tbaa !5
  %1090 = load i64, ptr %36, align 8, !tbaa !9
  %1091 = getelementptr inbounds double, ptr %1089, i64 %1090
  %1092 = load double, ptr %1091, align 8, !tbaa !11
  store double %1092, ptr %32, align 8, !tbaa !11
  %1093 = load double, ptr %32, align 8, !tbaa !11
  %1094 = fcmp oge double %1093, 0.000000e+00
  br i1 %1094, label %1095, label %1097

1095:                                             ; preds = %1088
  %1096 = load double, ptr %32, align 8, !tbaa !11
  br label %1100

1097:                                             ; preds = %1088
  %1098 = load double, ptr %32, align 8, !tbaa !11
  %1099 = fneg double %1098
  br label %1100

1100:                                             ; preds = %1097, %1095
  %1101 = phi double [ %1096, %1095 ], [ %1099, %1097 ]
  store double %1101, ptr %37, align 8, !tbaa !11
  %1102 = load double, ptr %50, align 8, !tbaa !11
  store double %1102, ptr %51, align 8, !tbaa !11
  %1103 = load double, ptr %46, align 8, !tbaa !11
  %1104 = fcmp oge double %1103, 1.000000e+00
  br i1 %1104, label %1105, label %1107

1105:                                             ; preds = %1100
  %1106 = load double, ptr %46, align 8, !tbaa !11
  br label %1108

1107:                                             ; preds = %1100
  br label %1108

1108:                                             ; preds = %1107, %1105
  %1109 = phi double [ %1106, %1105 ], [ 1.000000e+00, %1107 ]
  %1110 = fdiv double 1.000000e+00, %1109
  store double %1110, ptr %38, align 8, !tbaa !11
  %1111 = load ptr, ptr %24, align 8, !tbaa !5
  %1112 = load i64, ptr %36, align 8, !tbaa !9
  %1113 = getelementptr inbounds double, ptr %1111, i64 %1112
  %1114 = load double, ptr %1113, align 8, !tbaa !11
  %1115 = load double, ptr %54, align 8, !tbaa !11
  %1116 = load double, ptr %37, align 8, !tbaa !11
  %1117 = fsub double %1115, %1116
  %1118 = load double, ptr %38, align 8, !tbaa !11
  %1119 = fmul double %1117, %1118
  %1120 = fcmp ogt double %1114, %1119
  br i1 %1120, label %1121, label %1183

1121:                                             ; preds = %1108
  %1122 = load double, ptr %38, align 8, !tbaa !11
  %1123 = fmul double %1122, 5.000000e-01
  store double %1123, ptr %38, align 8, !tbaa !11
  %1124 = load i64, ptr %58, align 8, !tbaa !9
  %1125 = icmp ne i64 %1124, 0
  br i1 %1125, label %1126, label %1137

1126:                                             ; preds = %1121
  %1127 = load ptr, ptr %20, align 8, !tbaa !5
  %1128 = load i64, ptr %49, align 8, !tbaa !9
  %1129 = load i64, ptr %36, align 8, !tbaa !9
  %1130 = load i64, ptr %26, align 8, !tbaa !9
  %1131 = mul nsw i64 %1129, %1130
  %1132 = add nsw i64 %1128, %1131
  %1133 = getelementptr inbounds double, ptr %1127, i64 %1132
  %1134 = load double, ptr %1133, align 8, !tbaa !11
  %1135 = load double, ptr %50, align 8, !tbaa !11
  %1136 = fmul double %1134, %1135
  store double %1136, ptr %45, align 8, !tbaa !11
  br label %1139

1137:                                             ; preds = %1121
  %1138 = load double, ptr %50, align 8, !tbaa !11
  store double %1138, ptr %45, align 8, !tbaa !11
  br label %1139

1139:                                             ; preds = %1137, %1126
  %1140 = load double, ptr %45, align 8, !tbaa !11
  %1141 = fcmp oge double %1140, 0.000000e+00
  br i1 %1141, label %1142, label %1144

1142:                                             ; preds = %1139
  %1143 = load double, ptr %45, align 8, !tbaa !11
  br label %1147

1144:                                             ; preds = %1139
  %1145 = load double, ptr %45, align 8, !tbaa !11
  %1146 = fneg double %1145
  br label %1147

1147:                                             ; preds = %1144, %1142
  %1148 = phi double [ %1143, %1142 ], [ %1146, %1144 ]
  store double %1148, ptr %39, align 8, !tbaa !11
  %1149 = load double, ptr %39, align 8, !tbaa !11
  %1150 = fcmp ogt double %1149, 1.000000e+00
  br i1 %1150, label %1151, label %1167

1151:                                             ; preds = %1147
  store double 1.000000e+00, ptr %32, align 8, !tbaa !11
  %1152 = load double, ptr %38, align 8, !tbaa !11
  %1153 = load double, ptr %39, align 8, !tbaa !11
  %1154 = fmul double %1152, %1153
  store double %1154, ptr %33, align 8, !tbaa !11
  %1155 = load double, ptr %32, align 8, !tbaa !11
  %1156 = load double, ptr %33, align 8, !tbaa !11
  %1157 = fcmp ole double %1155, %1156
  br i1 %1157, label %1158, label %1160

1158:                                             ; preds = %1151
  %1159 = load double, ptr %32, align 8, !tbaa !11
  br label %1162

1160:                                             ; preds = %1151
  %1161 = load double, ptr %33, align 8, !tbaa !11
  br label %1162

1162:                                             ; preds = %1160, %1158
  %1163 = phi double [ %1159, %1158 ], [ %1161, %1160 ]
  store double %1163, ptr %38, align 8, !tbaa !11
  %1164 = load double, ptr %45, align 8, !tbaa !11
  %1165 = load double, ptr %51, align 8, !tbaa !11
  %1166 = fdiv double %1165, %1164
  store double %1166, ptr %51, align 8, !tbaa !11
  br label %1167

1167:                                             ; preds = %1162, %1147
  %1168 = load double, ptr %38, align 8, !tbaa !11
  %1169 = fcmp olt double %1168, 1.000000e+00
  br i1 %1169, label %1170, label %1182

1170:                                             ; preds = %1167
  %1171 = load ptr, ptr %18, align 8, !tbaa !5
  %1172 = load ptr, ptr %22, align 8, !tbaa !5
  %1173 = getelementptr inbounds double, ptr %1172, i64 1
  %1174 = call i32 @f2c_dscal(ptr noundef %1171, ptr noundef %38, ptr noundef %1173, ptr noundef @c__1)
  %1175 = load double, ptr %38, align 8, !tbaa !11
  %1176 = load ptr, ptr %23, align 8, !tbaa !5
  %1177 = load double, ptr %1176, align 8, !tbaa !11
  %1178 = fmul double %1177, %1175
  store double %1178, ptr %1176, align 8, !tbaa !11
  %1179 = load double, ptr %38, align 8, !tbaa !11
  %1180 = load double, ptr %46, align 8, !tbaa !11
  %1181 = fmul double %1180, %1179
  store double %1181, ptr %46, align 8, !tbaa !11
  br label %1182

1182:                                             ; preds = %1170, %1167
  br label %1183

1183:                                             ; preds = %1182, %1108
  store double 0.000000e+00, ptr %48, align 8, !tbaa !11
  %1184 = load double, ptr %51, align 8, !tbaa !11
  %1185 = fcmp oeq double %1184, 1.000000e+00
  br i1 %1185, label %1186, label %1252

1186:                                             ; preds = %1183
  %1187 = load i64, ptr %53, align 8, !tbaa !9
  %1188 = icmp ne i64 %1187, 0
  br i1 %1188, label %1189, label %1220

1189:                                             ; preds = %1186
  %1190 = load ptr, ptr %19, align 8, !tbaa !5
  %1191 = load i64, ptr %1190, align 8, !tbaa !9
  store i64 %1191, ptr %30, align 8, !tbaa !9
  %1192 = load i64, ptr %36, align 8, !tbaa !9
  %1193 = sub nsw i64 %1192, 1
  store i64 %1193, ptr %31, align 8, !tbaa !9
  %1194 = load i64, ptr %30, align 8, !tbaa !9
  %1195 = load i64, ptr %31, align 8, !tbaa !9
  %1196 = icmp sle i64 %1194, %1195
  br i1 %1196, label %1197, label %1199

1197:                                             ; preds = %1189
  %1198 = load i64, ptr %30, align 8, !tbaa !9
  br label %1201

1199:                                             ; preds = %1189
  %1200 = load i64, ptr %31, align 8, !tbaa !9
  br label %1201

1201:                                             ; preds = %1199, %1197
  %1202 = phi i64 [ %1198, %1197 ], [ %1200, %1199 ]
  store i64 %1202, ptr %41, align 8, !tbaa !9
  %1203 = load ptr, ptr %20, align 8, !tbaa !5
  %1204 = load ptr, ptr %19, align 8, !tbaa !5
  %1205 = load i64, ptr %1204, align 8, !tbaa !9
  %1206 = add nsw i64 %1205, 1
  %1207 = load i64, ptr %41, align 8, !tbaa !9
  %1208 = sub nsw i64 %1206, %1207
  %1209 = load i64, ptr %36, align 8, !tbaa !9
  %1210 = load i64, ptr %26, align 8, !tbaa !9
  %1211 = mul nsw i64 %1209, %1210
  %1212 = add nsw i64 %1208, %1211
  %1213 = getelementptr inbounds double, ptr %1203, i64 %1212
  %1214 = load ptr, ptr %22, align 8, !tbaa !5
  %1215 = load i64, ptr %36, align 8, !tbaa !9
  %1216 = load i64, ptr %41, align 8, !tbaa !9
  %1217 = sub nsw i64 %1215, %1216
  %1218 = getelementptr inbounds double, ptr %1214, i64 %1217
  %1219 = call double @f2c_ddot(ptr noundef %41, ptr noundef %1213, ptr noundef @c__1, ptr noundef %1218, ptr noundef @c__1)
  store double %1219, ptr %48, align 8, !tbaa !11
  br label %1251

1220:                                             ; preds = %1186
  %1221 = load ptr, ptr %19, align 8, !tbaa !5
  %1222 = load i64, ptr %1221, align 8, !tbaa !9
  store i64 %1222, ptr %30, align 8, !tbaa !9
  %1223 = load ptr, ptr %18, align 8, !tbaa !5
  %1224 = load i64, ptr %1223, align 8, !tbaa !9
  %1225 = load i64, ptr %36, align 8, !tbaa !9
  %1226 = sub nsw i64 %1224, %1225
  store i64 %1226, ptr %31, align 8, !tbaa !9
  %1227 = load i64, ptr %30, align 8, !tbaa !9
  %1228 = load i64, ptr %31, align 8, !tbaa !9
  %1229 = icmp sle i64 %1227, %1228
  br i1 %1229, label %1230, label %1232

1230:                                             ; preds = %1220
  %1231 = load i64, ptr %30, align 8, !tbaa !9
  br label %1234

1232:                                             ; preds = %1220
  %1233 = load i64, ptr %31, align 8, !tbaa !9
  br label %1234

1234:                                             ; preds = %1232, %1230
  %1235 = phi i64 [ %1231, %1230 ], [ %1233, %1232 ]
  store i64 %1235, ptr %41, align 8, !tbaa !9
  %1236 = load i64, ptr %41, align 8, !tbaa !9
  %1237 = icmp sgt i64 %1236, 0
  br i1 %1237, label %1238, label %1250

1238:                                             ; preds = %1234
  %1239 = load ptr, ptr %20, align 8, !tbaa !5
  %1240 = load i64, ptr %36, align 8, !tbaa !9
  %1241 = load i64, ptr %26, align 8, !tbaa !9
  %1242 = mul nsw i64 %1240, %1241
  %1243 = add nsw i64 %1242, 2
  %1244 = getelementptr inbounds double, ptr %1239, i64 %1243
  %1245 = load ptr, ptr %22, align 8, !tbaa !5
  %1246 = load i64, ptr %36, align 8, !tbaa !9
  %1247 = add nsw i64 %1246, 1
  %1248 = getelementptr inbounds double, ptr %1245, i64 %1247
  %1249 = call double @f2c_ddot(ptr noundef %41, ptr noundef %1244, ptr noundef @c__1, ptr noundef %1248, ptr noundef @c__1)
  store double %1249, ptr %48, align 8, !tbaa !11
  br label %1250

1250:                                             ; preds = %1238, %1234
  br label %1251

1251:                                             ; preds = %1250, %1201
  br label %1351

1252:                                             ; preds = %1183
  %1253 = load i64, ptr %53, align 8, !tbaa !9
  %1254 = icmp ne i64 %1253, 0
  br i1 %1254, label %1255, label %1305

1255:                                             ; preds = %1252
  %1256 = load ptr, ptr %19, align 8, !tbaa !5
  %1257 = load i64, ptr %1256, align 8, !tbaa !9
  store i64 %1257, ptr %30, align 8, !tbaa !9
  %1258 = load i64, ptr %36, align 8, !tbaa !9
  %1259 = sub nsw i64 %1258, 1
  store i64 %1259, ptr %31, align 8, !tbaa !9
  %1260 = load i64, ptr %30, align 8, !tbaa !9
  %1261 = load i64, ptr %31, align 8, !tbaa !9
  %1262 = icmp sle i64 %1260, %1261
  br i1 %1262, label %1263, label %1265

1263:                                             ; preds = %1255
  %1264 = load i64, ptr %30, align 8, !tbaa !9
  br label %1267

1265:                                             ; preds = %1255
  %1266 = load i64, ptr %31, align 8, !tbaa !9
  br label %1267

1267:                                             ; preds = %1265, %1263
  %1268 = phi i64 [ %1264, %1263 ], [ %1266, %1265 ]
  store i64 %1268, ptr %41, align 8, !tbaa !9
  %1269 = load i64, ptr %41, align 8, !tbaa !9
  store i64 %1269, ptr %30, align 8, !tbaa !9
  store i64 1, ptr %35, align 8, !tbaa !9
  br label %1270

1270:                                             ; preds = %1301, %1267
  %1271 = load i64, ptr %35, align 8, !tbaa !9
  %1272 = load i64, ptr %30, align 8, !tbaa !9
  %1273 = icmp sle i64 %1271, %1272
  br i1 %1273, label %1274, label %1304

1274:                                             ; preds = %1270
  %1275 = load ptr, ptr %20, align 8, !tbaa !5
  %1276 = load ptr, ptr %19, align 8, !tbaa !5
  %1277 = load i64, ptr %1276, align 8, !tbaa !9
  %1278 = load i64, ptr %35, align 8, !tbaa !9
  %1279 = add nsw i64 %1277, %1278
  %1280 = load i64, ptr %41, align 8, !tbaa !9
  %1281 = sub nsw i64 %1279, %1280
  %1282 = load i64, ptr %36, align 8, !tbaa !9
  %1283 = load i64, ptr %26, align 8, !tbaa !9
  %1284 = mul nsw i64 %1282, %1283
  %1285 = add nsw i64 %1281, %1284
  %1286 = getelementptr inbounds double, ptr %1275, i64 %1285
  %1287 = load double, ptr %1286, align 8, !tbaa !11
  %1288 = load double, ptr %51, align 8, !tbaa !11
  %1289 = fmul double %1287, %1288
  %1290 = load ptr, ptr %22, align 8, !tbaa !5
  %1291 = load i64, ptr %36, align 8, !tbaa !9
  %1292 = load i64, ptr %41, align 8, !tbaa !9
  %1293 = sub nsw i64 %1291, %1292
  %1294 = sub nsw i64 %1293, 1
  %1295 = load i64, ptr %35, align 8, !tbaa !9
  %1296 = add nsw i64 %1294, %1295
  %1297 = getelementptr inbounds double, ptr %1290, i64 %1296
  %1298 = load double, ptr %1297, align 8, !tbaa !11
  %1299 = load double, ptr %48, align 8, !tbaa !11
  %1300 = call double @llvm.fmuladd.f64(double %1289, double %1298, double %1299)
  store double %1300, ptr %48, align 8, !tbaa !11
  br label %1301

1301:                                             ; preds = %1274
  %1302 = load i64, ptr %35, align 8, !tbaa !9
  %1303 = add nsw i64 %1302, 1
  store i64 %1303, ptr %35, align 8, !tbaa !9
  br label %1270, !llvm.loop !22

1304:                                             ; preds = %1270
  br label %1350

1305:                                             ; preds = %1252
  %1306 = load ptr, ptr %19, align 8, !tbaa !5
  %1307 = load i64, ptr %1306, align 8, !tbaa !9
  store i64 %1307, ptr %30, align 8, !tbaa !9
  %1308 = load ptr, ptr %18, align 8, !tbaa !5
  %1309 = load i64, ptr %1308, align 8, !tbaa !9
  %1310 = load i64, ptr %36, align 8, !tbaa !9
  %1311 = sub nsw i64 %1309, %1310
  store i64 %1311, ptr %31, align 8, !tbaa !9
  %1312 = load i64, ptr %30, align 8, !tbaa !9
  %1313 = load i64, ptr %31, align 8, !tbaa !9
  %1314 = icmp sle i64 %1312, %1313
  br i1 %1314, label %1315, label %1317

1315:                                             ; preds = %1305
  %1316 = load i64, ptr %30, align 8, !tbaa !9
  br label %1319

1317:                                             ; preds = %1305
  %1318 = load i64, ptr %31, align 8, !tbaa !9
  br label %1319

1319:                                             ; preds = %1317, %1315
  %1320 = phi i64 [ %1316, %1315 ], [ %1318, %1317 ]
  store i64 %1320, ptr %41, align 8, !tbaa !9
  %1321 = load i64, ptr %41, align 8, !tbaa !9
  store i64 %1321, ptr %30, align 8, !tbaa !9
  store i64 1, ptr %35, align 8, !tbaa !9
  br label %1322

1322:                                             ; preds = %1346, %1319
  %1323 = load i64, ptr %35, align 8, !tbaa !9
  %1324 = load i64, ptr %30, align 8, !tbaa !9
  %1325 = icmp sle i64 %1323, %1324
  br i1 %1325, label %1326, label %1349

1326:                                             ; preds = %1322
  %1327 = load ptr, ptr %20, align 8, !tbaa !5
  %1328 = load i64, ptr %35, align 8, !tbaa !9
  %1329 = add nsw i64 %1328, 1
  %1330 = load i64, ptr %36, align 8, !tbaa !9
  %1331 = load i64, ptr %26, align 8, !tbaa !9
  %1332 = mul nsw i64 %1330, %1331
  %1333 = add nsw i64 %1329, %1332
  %1334 = getelementptr inbounds double, ptr %1327, i64 %1333
  %1335 = load double, ptr %1334, align 8, !tbaa !11
  %1336 = load double, ptr %51, align 8, !tbaa !11
  %1337 = fmul double %1335, %1336
  %1338 = load ptr, ptr %22, align 8, !tbaa !5
  %1339 = load i64, ptr %36, align 8, !tbaa !9
  %1340 = load i64, ptr %35, align 8, !tbaa !9
  %1341 = add nsw i64 %1339, %1340
  %1342 = getelementptr inbounds double, ptr %1338, i64 %1341
  %1343 = load double, ptr %1342, align 8, !tbaa !11
  %1344 = load double, ptr %48, align 8, !tbaa !11
  %1345 = call double @llvm.fmuladd.f64(double %1337, double %1343, double %1344)
  store double %1345, ptr %48, align 8, !tbaa !11
  br label %1346

1346:                                             ; preds = %1326
  %1347 = load i64, ptr %35, align 8, !tbaa !9
  %1348 = add nsw i64 %1347, 1
  store i64 %1348, ptr %35, align 8, !tbaa !9
  br label %1322, !llvm.loop !23

1349:                                             ; preds = %1322
  br label %1350

1350:                                             ; preds = %1349, %1304
  br label %1351

1351:                                             ; preds = %1350, %1251
  %1352 = load double, ptr %51, align 8, !tbaa !11
  %1353 = load double, ptr %50, align 8, !tbaa !11
  %1354 = fcmp oeq double %1352, %1353
  br i1 %1354, label %1355, label %1493

1355:                                             ; preds = %1351
  %1356 = load double, ptr %48, align 8, !tbaa !11
  %1357 = load ptr, ptr %22, align 8, !tbaa !5
  %1358 = load i64, ptr %36, align 8, !tbaa !9
  %1359 = getelementptr inbounds double, ptr %1357, i64 %1358
  %1360 = load double, ptr %1359, align 8, !tbaa !11
  %1361 = fsub double %1360, %1356
  store double %1361, ptr %1359, align 8, !tbaa !11
  %1362 = load ptr, ptr %22, align 8, !tbaa !5
  %1363 = load i64, ptr %36, align 8, !tbaa !9
  %1364 = getelementptr inbounds double, ptr %1362, i64 %1363
  %1365 = load double, ptr %1364, align 8, !tbaa !11
  store double %1365, ptr %32, align 8, !tbaa !11
  %1366 = load double, ptr %32, align 8, !tbaa !11
  %1367 = fcmp oge double %1366, 0.000000e+00
  br i1 %1367, label %1368, label %1370

1368:                                             ; preds = %1355
  %1369 = load double, ptr %32, align 8, !tbaa !11
  br label %1373

1370:                                             ; preds = %1355
  %1371 = load double, ptr %32, align 8, !tbaa !11
  %1372 = fneg double %1371
  br label %1373

1373:                                             ; preds = %1370, %1368
  %1374 = phi double [ %1369, %1368 ], [ %1372, %1370 ]
  store double %1374, ptr %37, align 8, !tbaa !11
  %1375 = load i64, ptr %58, align 8, !tbaa !9
  %1376 = icmp ne i64 %1375, 0
  br i1 %1376, label %1377, label %1388

1377:                                             ; preds = %1373
  %1378 = load ptr, ptr %20, align 8, !tbaa !5
  %1379 = load i64, ptr %49, align 8, !tbaa !9
  %1380 = load i64, ptr %36, align 8, !tbaa !9
  %1381 = load i64, ptr %26, align 8, !tbaa !9
  %1382 = mul nsw i64 %1380, %1381
  %1383 = add nsw i64 %1379, %1382
  %1384 = getelementptr inbounds double, ptr %1378, i64 %1383
  %1385 = load double, ptr %1384, align 8, !tbaa !11
  %1386 = load double, ptr %50, align 8, !tbaa !11
  %1387 = fmul double %1385, %1386
  store double %1387, ptr %45, align 8, !tbaa !11
  br label %1394

1388:                                             ; preds = %1373
  %1389 = load double, ptr %50, align 8, !tbaa !11
  store double %1389, ptr %45, align 8, !tbaa !11
  %1390 = load double, ptr %50, align 8, !tbaa !11
  %1391 = fcmp oeq double %1390, 1.000000e+00
  br i1 %1391, label %1392, label %1393

1392:                                             ; preds = %1388
  br label %1492

1393:                                             ; preds = %1388
  br label %1394

1394:                                             ; preds = %1393, %1377
  %1395 = load double, ptr %45, align 8, !tbaa !11
  %1396 = fcmp oge double %1395, 0.000000e+00
  br i1 %1396, label %1397, label %1399

1397:                                             ; preds = %1394
  %1398 = load double, ptr %45, align 8, !tbaa !11
  br label %1402

1399:                                             ; preds = %1394
  %1400 = load double, ptr %45, align 8, !tbaa !11
  %1401 = fneg double %1400
  br label %1402

1402:                                             ; preds = %1399, %1397
  %1403 = phi double [ %1398, %1397 ], [ %1401, %1399 ]
  store double %1403, ptr %39, align 8, !tbaa !11
  %1404 = load double, ptr %39, align 8, !tbaa !11
  %1405 = load double, ptr %57, align 8, !tbaa !11
  %1406 = fcmp ogt double %1404, %1405
  br i1 %1406, label %1407, label %1438

1407:                                             ; preds = %1402
  %1408 = load double, ptr %39, align 8, !tbaa !11
  %1409 = fcmp olt double %1408, 1.000000e+00
  br i1 %1409, label %1410, label %1431

1410:                                             ; preds = %1407
  %1411 = load double, ptr %37, align 8, !tbaa !11
  %1412 = load double, ptr %39, align 8, !tbaa !11
  %1413 = load double, ptr %54, align 8, !tbaa !11
  %1414 = fmul double %1412, %1413
  %1415 = fcmp ogt double %1411, %1414
  br i1 %1415, label %1416, label %1430

1416:                                             ; preds = %1410
  %1417 = load double, ptr %37, align 8, !tbaa !11
  %1418 = fdiv double 1.000000e+00, %1417
  store double %1418, ptr %38, align 8, !tbaa !11
  %1419 = load ptr, ptr %18, align 8, !tbaa !5
  %1420 = load ptr, ptr %22, align 8, !tbaa !5
  %1421 = getelementptr inbounds double, ptr %1420, i64 1
  %1422 = call i32 @f2c_dscal(ptr noundef %1419, ptr noundef %38, ptr noundef %1421, ptr noundef @c__1)
  %1423 = load double, ptr %38, align 8, !tbaa !11
  %1424 = load ptr, ptr %23, align 8, !tbaa !5
  %1425 = load double, ptr %1424, align 8, !tbaa !11
  %1426 = fmul double %1425, %1423
  store double %1426, ptr %1424, align 8, !tbaa !11
  %1427 = load double, ptr %38, align 8, !tbaa !11
  %1428 = load double, ptr %46, align 8, !tbaa !11
  %1429 = fmul double %1428, %1427
  store double %1429, ptr %46, align 8, !tbaa !11
  br label %1430

1430:                                             ; preds = %1416, %1410
  br label %1431

1431:                                             ; preds = %1430, %1407
  %1432 = load double, ptr %45, align 8, !tbaa !11
  %1433 = load ptr, ptr %22, align 8, !tbaa !5
  %1434 = load i64, ptr %36, align 8, !tbaa !9
  %1435 = getelementptr inbounds double, ptr %1433, i64 %1434
  %1436 = load double, ptr %1435, align 8, !tbaa !11
  %1437 = fdiv double %1436, %1432
  store double %1437, ptr %1435, align 8, !tbaa !11
  br label %1491

1438:                                             ; preds = %1402
  %1439 = load double, ptr %39, align 8, !tbaa !11
  %1440 = fcmp ogt double %1439, 0.000000e+00
  br i1 %1440, label %1441, label %1471

1441:                                             ; preds = %1438
  %1442 = load double, ptr %37, align 8, !tbaa !11
  %1443 = load double, ptr %39, align 8, !tbaa !11
  %1444 = load double, ptr %54, align 8, !tbaa !11
  %1445 = fmul double %1443, %1444
  %1446 = fcmp ogt double %1442, %1445
  br i1 %1446, label %1447, label %1464

1447:                                             ; preds = %1441
  %1448 = load double, ptr %39, align 8, !tbaa !11
  %1449 = load double, ptr %54, align 8, !tbaa !11
  %1450 = fmul double %1448, %1449
  %1451 = load double, ptr %37, align 8, !tbaa !11
  %1452 = fdiv double %1450, %1451
  store double %1452, ptr %38, align 8, !tbaa !11
  %1453 = load ptr, ptr %18, align 8, !tbaa !5
  %1454 = load ptr, ptr %22, align 8, !tbaa !5
  %1455 = getelementptr inbounds double, ptr %1454, i64 1
  %1456 = call i32 @f2c_dscal(ptr noundef %1453, ptr noundef %38, ptr noundef %1455, ptr noundef @c__1)
  %1457 = load double, ptr %38, align 8, !tbaa !11
  %1458 = load ptr, ptr %23, align 8, !tbaa !5
  %1459 = load double, ptr %1458, align 8, !tbaa !11
  %1460 = fmul double %1459, %1457
  store double %1460, ptr %1458, align 8, !tbaa !11
  %1461 = load double, ptr %38, align 8, !tbaa !11
  %1462 = load double, ptr %46, align 8, !tbaa !11
  %1463 = fmul double %1462, %1461
  store double %1463, ptr %46, align 8, !tbaa !11
  br label %1464

1464:                                             ; preds = %1447, %1441
  %1465 = load double, ptr %45, align 8, !tbaa !11
  %1466 = load ptr, ptr %22, align 8, !tbaa !5
  %1467 = load i64, ptr %36, align 8, !tbaa !9
  %1468 = getelementptr inbounds double, ptr %1466, i64 %1467
  %1469 = load double, ptr %1468, align 8, !tbaa !11
  %1470 = fdiv double %1469, %1465
  store double %1470, ptr %1468, align 8, !tbaa !11
  br label %1490

1471:                                             ; preds = %1438
  %1472 = load ptr, ptr %18, align 8, !tbaa !5
  %1473 = load i64, ptr %1472, align 8, !tbaa !9
  store i64 %1473, ptr %30, align 8, !tbaa !9
  store i64 1, ptr %35, align 8, !tbaa !9
  br label %1474

1474:                                             ; preds = %1482, %1471
  %1475 = load i64, ptr %35, align 8, !tbaa !9
  %1476 = load i64, ptr %30, align 8, !tbaa !9
  %1477 = icmp sle i64 %1475, %1476
  br i1 %1477, label %1478, label %1485

1478:                                             ; preds = %1474
  %1479 = load ptr, ptr %22, align 8, !tbaa !5
  %1480 = load i64, ptr %35, align 8, !tbaa !9
  %1481 = getelementptr inbounds double, ptr %1479, i64 %1480
  store double 0.000000e+00, ptr %1481, align 8, !tbaa !11
  br label %1482

1482:                                             ; preds = %1478
  %1483 = load i64, ptr %35, align 8, !tbaa !9
  %1484 = add nsw i64 %1483, 1
  store i64 %1484, ptr %35, align 8, !tbaa !9
  br label %1474, !llvm.loop !24

1485:                                             ; preds = %1474
  %1486 = load ptr, ptr %22, align 8, !tbaa !5
  %1487 = load i64, ptr %36, align 8, !tbaa !9
  %1488 = getelementptr inbounds double, ptr %1486, i64 %1487
  store double 1.000000e+00, ptr %1488, align 8, !tbaa !11
  %1489 = load ptr, ptr %23, align 8, !tbaa !5
  store double 0.000000e+00, ptr %1489, align 8, !tbaa !11
  store double 0.000000e+00, ptr %46, align 8, !tbaa !11
  br label %1490

1490:                                             ; preds = %1485, %1464
  br label %1491

1491:                                             ; preds = %1490, %1431
  br label %1492

1492:                                             ; preds = %1491, %1392
  br label %1505

1493:                                             ; preds = %1351
  %1494 = load ptr, ptr %22, align 8, !tbaa !5
  %1495 = load i64, ptr %36, align 8, !tbaa !9
  %1496 = getelementptr inbounds double, ptr %1494, i64 %1495
  %1497 = load double, ptr %1496, align 8, !tbaa !11
  %1498 = load double, ptr %45, align 8, !tbaa !11
  %1499 = fdiv double %1497, %1498
  %1500 = load double, ptr %48, align 8, !tbaa !11
  %1501 = fsub double %1499, %1500
  %1502 = load ptr, ptr %22, align 8, !tbaa !5
  %1503 = load i64, ptr %36, align 8, !tbaa !9
  %1504 = getelementptr inbounds double, ptr %1502, i64 %1503
  store double %1501, ptr %1504, align 8, !tbaa !11
  br label %1505

1505:                                             ; preds = %1493, %1492
  %1506 = load double, ptr %46, align 8, !tbaa !11
  store double %1506, ptr %33, align 8, !tbaa !11
  %1507 = load ptr, ptr %22, align 8, !tbaa !5
  %1508 = load i64, ptr %36, align 8, !tbaa !9
  %1509 = getelementptr inbounds double, ptr %1507, i64 %1508
  %1510 = load double, ptr %1509, align 8, !tbaa !11
  store double %1510, ptr %32, align 8, !tbaa !11
  %1511 = load double, ptr %32, align 8, !tbaa !11
  %1512 = fcmp oge double %1511, 0.000000e+00
  br i1 %1512, label %1513, label %1515

1513:                                             ; preds = %1505
  %1514 = load double, ptr %32, align 8, !tbaa !11
  br label %1518

1515:                                             ; preds = %1505
  %1516 = load double, ptr %32, align 8, !tbaa !11
  %1517 = fneg double %1516
  br label %1518

1518:                                             ; preds = %1515, %1513
  %1519 = phi double [ %1514, %1513 ], [ %1517, %1515 ]
  store double %1519, ptr %34, align 8, !tbaa !11
  %1520 = load double, ptr %33, align 8, !tbaa !11
  %1521 = load double, ptr %34, align 8, !tbaa !11
  %1522 = fcmp oge double %1520, %1521
  br i1 %1522, label %1523, label %1525

1523:                                             ; preds = %1518
  %1524 = load double, ptr %33, align 8, !tbaa !11
  br label %1527

1525:                                             ; preds = %1518
  %1526 = load double, ptr %34, align 8, !tbaa !11
  br label %1527

1527:                                             ; preds = %1525, %1523
  %1528 = phi double [ %1524, %1523 ], [ %1526, %1525 ]
  store double %1528, ptr %46, align 8, !tbaa !11
  br label %1529

1529:                                             ; preds = %1527
  %1530 = load i64, ptr %28, align 8, !tbaa !9
  %1531 = load i64, ptr %36, align 8, !tbaa !9
  %1532 = add nsw i64 %1531, %1530
  store i64 %1532, ptr %36, align 8, !tbaa !9
  br label %1072, !llvm.loop !25

1533:                                             ; preds = %1085
  br label %1534

1534:                                             ; preds = %1533, %1067
  %1535 = load double, ptr %50, align 8, !tbaa !11
  %1536 = load ptr, ptr %23, align 8, !tbaa !5
  %1537 = load double, ptr %1536, align 8, !tbaa !11
  %1538 = fdiv double %1537, %1535
  store double %1538, ptr %1536, align 8, !tbaa !11
  br label %1539

1539:                                             ; preds = %1534, %662
  %1540 = load double, ptr %50, align 8, !tbaa !11
  %1541 = fcmp une double %1540, 1.000000e+00
  br i1 %1541, label %1542, label %1549

1542:                                             ; preds = %1539
  %1543 = load double, ptr %50, align 8, !tbaa !11
  %1544 = fdiv double 1.000000e+00, %1543
  store double %1544, ptr %32, align 8, !tbaa !11
  %1545 = load ptr, ptr %18, align 8, !tbaa !5
  %1546 = load ptr, ptr %24, align 8, !tbaa !5
  %1547 = getelementptr inbounds double, ptr %1546, i64 1
  %1548 = call i32 @f2c_dscal(ptr noundef %1545, ptr noundef %32, ptr noundef %1547, ptr noundef @c__1)
  br label %1549

1549:                                             ; preds = %1542, %1539
  store i32 0, ptr %13, align 4
  store i32 1, ptr %59, align 4
  br label %1550

1550:                                             ; preds = %1549, %159, %150
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 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
  %1551 = load i32, ptr %13, align 4
  ret i32 %1551
}

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

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

29:                                               ; preds = %27, %12
  %.not567 = icmp eq i64 %25, 0
  br i1 %.not567, label %30, label %34

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

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

34:                                               ; preds = %32, %30, %29
  %.not570 = icmp eq i64 %26, 0
  br i1 %.not570, label %35, label %37

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

37:                                               ; preds = %35, %34
  %38 = tail call i64 @lsame_(ptr noundef %3, ptr noundef nonnull @.str.5) #6
  %.not572 = icmp eq i64 %38, 0
  br i1 %.not572, label %39, label %41

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

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

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

47:                                               ; preds = %44
  %48 = load i64, ptr %7, align 8, !tbaa !5
  %.not574 = icmp sgt i64 %48, %45
  br i1 %.not574, label %49, label %.thread.sink.split

49:                                               ; preds = %47
  %.pr = load i64, ptr %11, align 8, !tbaa !5
  %.not575 = icmp eq i64 %.pr, 0
  br i1 %.not575, label %53, label %.thread

.thread.sink.split:                               ; preds = %47, %44, %41, %39, %35, %32, %27
  %.sink732 = phi i64 [ -1, %27 ], [ -2, %32 ], [ -3, %35 ], [ -4, %39 ], [ -5, %41 ], [ -6, %44 ], [ -8, %47 ]
  store i64 %.sink732, ptr %11, align 8, !tbaa !5
  br label %.thread

.thread:                                          ; preds = %.thread.sink.split, %49
  %50 = phi i64 [ %.pr, %49 ], [ %.sink732, %.thread.sink.split ]
  %51 = sub nsw i64 0, %50
  store i64 %51, ptr %13, align 8, !tbaa !5
  %52 = call i32 @xerbla_(ptr noundef nonnull @.str.6, ptr noundef nonnull %13) #6
  br label %594

53:                                               ; preds = %49
  %54 = icmp eq i64 %42, 0
  br i1 %54, label %594, label %55

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

61:                                               ; preds = %55
  %62 = load i64, ptr %4, align 8, !tbaa !5
  %.not577632 = icmp slt i64 %62, 1
  br i1 %.not.not.not, label %75, label %63

63:                                               ; preds = %61
  store i64 %62, ptr %13, align 8, !tbaa !5
  br i1 %.not577632, label %.loopexit626, label %.lr.ph

.lr.ph:                                           ; preds = %63, %.lr.ph
  %.0528631 = phi i64 [ %74, %.lr.ph ], [ 1, %63 ]
  %64 = load i64, ptr %5, align 8, !tbaa !5
  %65 = add nsw i64 %.0528631, -1
  store i64 %65, ptr %14, align 8, !tbaa !5
  %66 = call i64 @llvm.smin.i64(i64 %64, i64 %65)
  store i64 %66, ptr %17, align 8, !tbaa !5
  %67 = add nsw i64 %64, 1
  %68 = sub i64 %67, %66
  %69 = mul nsw i64 %.0528631, %19
  %70 = getelementptr double, ptr %21, i64 %68
  %71 = getelementptr double, ptr %70, i64 %69
  %72 = call double @f2c_dasum(ptr noundef nonnull %17, ptr noundef %71, ptr noundef nonnull @c__1) #6
  %73 = getelementptr inbounds double, ptr %23, i64 %.0528631
  store double %72, ptr %73, align 8, !tbaa !9
  %74 = add nuw nsw i64 %.0528631, 1
  %.not579.not = icmp slt i64 %.0528631, %62
  br i1 %.not579.not, label %.lr.ph, label %.loopexit626, !llvm.loop !11

75:                                               ; preds = %61
  %invariant.gep = getelementptr i8, ptr %21, i64 16
  br i1 %.not577632, label %.loopexit626, label %.lr.ph634

.lr.ph634:                                        ; preds = %75, %84
  %.1529633 = phi i64 [ %86, %84 ], [ 1, %75 ]
  %76 = load i64, ptr %5, align 8, !tbaa !5
  %77 = load i64, ptr %4, align 8, !tbaa !5
  %78 = sub nsw i64 %77, %.1529633
  store i64 %78, ptr %14, align 8, !tbaa !5
  %79 = call i64 @llvm.smin.i64(i64 %76, i64 %78)
  store i64 %79, ptr %17, align 8, !tbaa !5
  %80 = icmp sgt i64 %79, 0
  br i1 %80, label %81, label %84

81:                                               ; preds = %.lr.ph634
  %82 = mul nsw i64 %.1529633, %19
  %gep = getelementptr double, ptr %invariant.gep, i64 %82
  %83 = call double @f2c_dasum(ptr noundef nonnull %17, ptr noundef %gep, ptr noundef nonnull @c__1) #6
  br label %84

84:                                               ; preds = %.lr.ph634, %81
  %.sink = phi double [ %83, %81 ], [ 0.000000e+00, %.lr.ph634 ]
  %85 = getelementptr inbounds double, ptr %23, i64 %.1529633
  store double %.sink, ptr %85, align 8
  %86 = add nuw nsw i64 %.1529633, 1
  %.not577.not = icmp slt i64 %.1529633, %62
  br i1 %.not577.not, label %.lr.ph634, label %.loopexit626, !llvm.loop !13

.loopexit626:                                     ; preds = %.lr.ph, %84, %63, %75, %55
  %87 = call i64 @f2c_idamax(ptr noundef nonnull %4, ptr noundef %10, ptr noundef nonnull @c__1) #6
  %88 = getelementptr inbounds double, ptr %23, i64 %87
  %89 = load double, ptr %88, align 8, !tbaa !9
  %90 = fcmp ugt double %89, %59
  br i1 %90, label %92, label %91

91:                                               ; preds = %.loopexit626
  store double 1.000000e+00, ptr %18, align 8, !tbaa !9
  br label %96

92:                                               ; preds = %.loopexit626
  %93 = fmul double %58, %89
  %94 = fdiv double 1.000000e+00, %93
  store double %94, ptr %18, align 8, !tbaa !9
  %95 = call i32 @f2c_dscal(ptr noundef nonnull %4, ptr noundef nonnull %18, ptr noundef nonnull %10, ptr noundef nonnull @c__1) #6
  br label %96

96:                                               ; preds = %92, %91
  %97 = call i64 @f2c_idamax(ptr noundef nonnull %4, ptr noundef %8, ptr noundef nonnull @c__1) #6
  %98 = getelementptr inbounds double, ptr %22, i64 %97
  %99 = load double, ptr %98, align 8, !tbaa !9
  store double %99, ptr %15, align 8, !tbaa !9
  %100 = fcmp oge double %99, 0.000000e+00
  %101 = fneg double %99
  %102 = select i1 %100, double %99, double %101
  %103 = load i64, ptr %4, align 8, !tbaa !5
  br i1 %.not567, label %160, label %104

104:                                              ; preds = %96
  br i1 %.not.not.not, label %108, label %105

105:                                              ; preds = %104
  %106 = load i64, ptr %5, align 8, !tbaa !5
  %107 = add nsw i64 %106, 1
  br label %108

108:                                              ; preds = %104, %105
  %.0524 = phi i64 [ -1, %105 ], [ 1, %104 ]
  %.0500 = phi i64 [ %107, %105 ], [ 1, %104 ]
  %.0495 = phi i64 [ 1, %105 ], [ %103, %104 ]
  %.0494 = phi i64 [ %103, %105 ], [ 1, %104 ]
  %109 = load double, ptr %18, align 8, !tbaa !9
  %110 = fcmp une double %109, 1.000000e+00
  br i1 %110, label %.loopexit622, label %111

111:                                              ; preds = %108
  br i1 %.not570, label %142, label %112

112:                                              ; preds = %111
  %113 = fcmp oge double %102, %58
  %114 = select i1 %113, double %102, double %58
  %115 = fdiv double 1.000000e+00, %114
  %116 = icmp sge i64 %.0494, %.0495
  %117 = icmp sle i64 %.0494, %.0495
  %.in585635 = select i1 %.not.not.not, i1 %117, i1 %116
  br i1 %.in585635, label %.lr.ph639, label %.loopexit622

.lr.ph639:                                        ; preds = %112
  %118 = getelementptr double, ptr %21, i64 %.0500
  br label %119

119:                                              ; preds = %.lr.ph639, %121
  %.0506638 = phi double [ %115, %.lr.ph639 ], [ %.1507, %121 ]
  %.0521637 = phi double [ %115, %.lr.ph639 ], [ %132, %121 ]
  %.2530636 = phi i64 [ %.0494, %.lr.ph639 ], [ %139, %121 ]
  %120 = fcmp ugt double %.0506638, %58
  br i1 %120, label %121, label %.loopexit622

121:                                              ; preds = %119
  %122 = mul nsw i64 %.2530636, %19
  %123 = getelementptr double, ptr %118, i64 %122
  %124 = load double, ptr %123, align 8, !tbaa !9
  %125 = fcmp oge double %124, 0.000000e+00
  %126 = fneg double %124
  %127 = select i1 %125, double %124, double %126
  store double %.0521637, ptr %15, align 8, !tbaa !9
  %128 = fcmp oge double %127, 1.000000e+00
  %129 = select i1 %128, double 1.000000e+00, double %127
  %130 = fmul double %.0506638, %129
  %131 = fcmp ole double %.0521637, %130
  %132 = select i1 %131, double %.0521637, double %130
  %133 = getelementptr inbounds double, ptr %23, i64 %.2530636
  %134 = load double, ptr %133, align 8, !tbaa !9
  %135 = fadd double %127, %134
  %136 = fcmp ult double %135, %58
  %137 = fdiv double %127, %135
  %138 = fmul double %.0506638, %137
  %.1507 = select i1 %136, double 0.000000e+00, double %138
  %139 = add nsw i64 %.2530636, %.0524
  %140 = icmp sge i64 %139, %.0495
  %141 = icmp sle i64 %139, %.0495
  %.in585 = select i1 %.not.not.not, i1 %141, i1 %140
  br i1 %.in585, label %119, label %.loopexit622, !llvm.loop !14

142:                                              ; preds = %111
  store double 1.000000e+00, ptr %15, align 8, !tbaa !9
  %143 = fcmp oge double %102, %58
  %144 = select i1 %143, double %102, double %58
  %145 = fdiv double 1.000000e+00, %144
  %146 = fcmp oge double %145, 1.000000e+00
  %147 = select i1 %146, double 1.000000e+00, double %145
  %148 = icmp sge i64 %.0494, %.0495
  %149 = icmp sle i64 %.0494, %.0495
  %.in584642 = select i1 %.not.not.not, i1 %149, i1 %148
  %150 = fcmp ugt double %147, %58
  %or.cond643 = select i1 %.in584642, i1 %150, i1 false
  br i1 %or.cond643, label %.lr.ph646, label %.loopexit622

.lr.ph646:                                        ; preds = %142, %.lr.ph646
  %.2508645 = phi double [ %155, %.lr.ph646 ], [ %147, %142 ]
  %.3531644 = phi i64 [ %156, %.lr.ph646 ], [ %.0494, %142 ]
  %151 = getelementptr inbounds double, ptr %23, i64 %.3531644
  %152 = load double, ptr %151, align 8, !tbaa !9
  %153 = fadd double %152, 1.000000e+00
  %154 = fdiv double 1.000000e+00, %153
  %155 = fmul double %.2508645, %154
  %156 = add nsw i64 %.3531644, %.0524
  %157 = icmp sge i64 %156, %.0495
  %158 = icmp sle i64 %156, %.0495
  %.in584 = select i1 %.not.not.not, i1 %158, i1 %157
  %159 = fcmp ugt double %155, %58
  %or.cond = select i1 %.in584, i1 %159, i1 false
  br i1 %or.cond, label %.lr.ph646, label %.loopexit622, !llvm.loop !15

160:                                              ; preds = %96
  br i1 %.not.not.not, label %164, label %161

161:                                              ; preds = %160
  %162 = load i64, ptr %5, align 8, !tbaa !5
  %163 = add nsw i64 %162, 1
  br label %164

164:                                              ; preds = %160, %161
  %.1525 = phi i64 [ 1, %161 ], [ -1, %160 ]
  %.1501 = phi i64 [ %163, %161 ], [ 1, %160 ]
  %.1496 = phi i64 [ %103, %161 ], [ 1, %160 ]
  %.1 = phi i64 [ 1, %161 ], [ %103, %160 ]
  %165 = load double, ptr %18, align 8, !tbaa !9
  %166 = fcmp une double %165, 1.000000e+00
  br i1 %166, label %.loopexit622, label %167

167:                                              ; preds = %164
  br i1 %.not570, label %198, label %168

168:                                              ; preds = %167
  %169 = fcmp oge double %102, %58
  %170 = select i1 %169, double %102, double %58
  %171 = fdiv double 1.000000e+00, %170
  store i64 %.1496, ptr %13, align 8, !tbaa !5
  %172 = icmp sge i64 %.1, %.1496
  %173 = icmp sle i64 %.1, %.1496
  %.in582648 = select i1 %.not.not.not, i1 %172, i1 %173
  br i1 %.in582648, label %.lr.ph652, label %._crit_edge

.lr.ph652:                                        ; preds = %168
  %174 = getelementptr double, ptr %21, i64 %.1501
  br label %175

175:                                              ; preds = %.lr.ph652, %177
  %.3651 = phi double [ %171, %.lr.ph652 ], [ %183, %177 ]
  %.1522650 = phi double [ %171, %.lr.ph652 ], [ %.2523, %177 ]
  %.4532649 = phi i64 [ %.1, %.lr.ph652 ], [ %193, %177 ]
  %176 = fcmp ugt double %.3651, %58
  br i1 %176, label %177, label %.loopexit622

177:                                              ; preds = %175
  %178 = getelementptr inbounds double, ptr %23, i64 %.4532649
  %179 = load double, ptr %178, align 8, !tbaa !9
  %180 = fadd double %179, 1.000000e+00
  %181 = fdiv double %.1522650, %180
  %182 = fcmp ole double %.3651, %181
  %183 = select i1 %182, double %.3651, double %181
  %184 = mul nsw i64 %.4532649, %19
  %185 = getelementptr double, ptr %174, i64 %184
  %186 = load double, ptr %185, align 8, !tbaa !9
  store double %186, ptr %15, align 8, !tbaa !9
  %187 = fcmp oge double %186, 0.000000e+00
  %188 = fneg double %186
  %189 = select i1 %187, double %186, double %188
  %190 = fcmp ogt double %180, %189
  %191 = fdiv double %189, %180
  %192 = fmul double %.1522650, %191
  %.2523 = select i1 %190, double %192, double %.1522650
  %193 = add nsw i64 %.4532649, %.1525
  %194 = icmp sge i64 %193, %.1496
  %195 = icmp sle i64 %193, %.1496
  %.in582 = select i1 %.not.not.not, i1 %194, i1 %195
  br i1 %.in582, label %175, label %._crit_edge, !llvm.loop !16

._crit_edge:                                      ; preds = %177, %168
  %.1522.lcssa = phi double [ %171, %168 ], [ %.2523, %177 ]
  %.3.lcssa = phi double [ %171, %168 ], [ %183, %177 ]
  %196 = fcmp ole double %.3.lcssa, %.1522.lcssa
  %197 = select i1 %196, double %.3.lcssa, double %.1522.lcssa
  br label %.loopexit622

198:                                              ; preds = %167
  store double 1.000000e+00, ptr %15, align 8, !tbaa !9
  %199 = fcmp oge double %102, %58
  %200 = select i1 %199, double %102, double %58
  %201 = fdiv double 1.000000e+00, %200
  %202 = fcmp oge double %201, 1.000000e+00
  %203 = select i1 %202, double 1.000000e+00, double %201
  %204 = icmp sge i64 %.1, %.1496
  %205 = icmp sle i64 %.1, %.1496
  %.in655 = select i1 %.not.not.not, i1 %204, i1 %205
  %206 = fcmp ugt double %203, %58
  %or.cond601656 = select i1 %.in655, i1 %206, i1 false
  br i1 %or.cond601656, label %.lr.ph660, label %.loopexit622

.lr.ph660:                                        ; preds = %198, %.lr.ph660
  %.4658 = phi double [ %210, %.lr.ph660 ], [ %203, %198 ]
  %.5533657 = phi i64 [ %211, %.lr.ph660 ], [ %.1, %198 ]
  %207 = getelementptr inbounds double, ptr %23, i64 %.5533657
  %208 = load double, ptr %207, align 8, !tbaa !9
  %209 = fadd double %208, 1.000000e+00
  %210 = fdiv double %.4658, %209
  %211 = add nsw i64 %.5533657, %.1525
  %212 = icmp sge i64 %211, %.1496
  %213 = icmp sle i64 %211, %.1496
  %.in = select i1 %.not.not.not, i1 %212, i1 %213
  %214 = fcmp ugt double %210, %58
  %or.cond601 = select i1 %.in, i1 %214, i1 false
  br i1 %or.cond601, label %.lr.ph660, label %.loopexit622, !llvm.loop !17

.loopexit622:                                     ; preds = %119, %121, %.lr.ph646, %175, %.lr.ph660, %112, %142, %198, %164, %108, %._crit_edge
  %215 = phi double [ 1.000000e+00, %._crit_edge ], [ %109, %108 ], [ %165, %164 ], [ 1.000000e+00, %198 ], [ 1.000000e+00, %142 ], [ 1.000000e+00, %112 ], [ 1.000000e+00, %.lr.ph660 ], [ 1.000000e+00, %175 ], [ 1.000000e+00, %.lr.ph646 ], [ 1.000000e+00, %121 ], [ 1.000000e+00, %119 ]
  %216 = phi i64 [ %.1525, %._crit_edge ], [ %.0524, %108 ], [ %.1525, %164 ], [ %.1525, %198 ], [ %.0524, %142 ], [ %.0524, %112 ], [ %.1525, %.lr.ph660 ], [ %.1525, %175 ], [ %.0524, %.lr.ph646 ], [ %.0524, %121 ], [ %.0524, %119 ]
  %.5 = phi double [ %197, %._crit_edge ], [ 0.000000e+00, %108 ], [ 0.000000e+00, %164 ], [ %203, %198 ], [ %147, %142 ], [ %115, %112 ], [ %210, %.lr.ph660 ], [ %.3651, %175 ], [ %155, %.lr.ph646 ], [ %.0506638, %119 ], [ %132, %121 ]
  %.2502 = phi i64 [ %.1501, %._crit_edge ], [ %.0500, %108 ], [ %.1501, %164 ], [ %.1501, %198 ], [ %.0500, %142 ], [ %.0500, %112 ], [ %.1501, %.lr.ph660 ], [ %.1501, %175 ], [ %.0500, %.lr.ph646 ], [ %.0500, %121 ], [ %.0500, %119 ]
  %217 = phi i64 [ %.1496, %._crit_edge ], [ %.0495, %108 ], [ %.1496, %164 ], [ %.1496, %198 ], [ %.0495, %142 ], [ %.0495, %112 ], [ %.1496, %.lr.ph660 ], [ %.1496, %175 ], [ %.0495, %.lr.ph646 ], [ %.0495, %121 ], [ %.0495, %119 ]
  %.2 = phi i64 [ %.1, %._crit_edge ], [ %.0494, %108 ], [ %.1, %164 ], [ %.1, %198 ], [ %.0494, %142 ], [ %.0494, %112 ], [ %.1, %.lr.ph660 ], [ %.1, %175 ], [ %.0494, %.lr.ph646 ], [ %.0494, %121 ], [ %.0494, %119 ]
  %218 = fmul double %.5, %215
  %219 = fcmp ogt double %218, %58
  br i1 %219, label %220, label %222

220:                                              ; preds = %.loopexit622
  %221 = call i32 @f2c_dtbsv(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef nonnull %4, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %8, ptr noundef nonnull @c__1) #6
  %.pr615 = load double, ptr %18, align 8, !tbaa !9
  br label %588

222:                                              ; preds = %.loopexit622
  %223 = fcmp ogt double %102, %59
  br i1 %223, label %224, label %227

224:                                              ; preds = %222
  %225 = fdiv double %59, %102
  store double %225, ptr %9, align 8, !tbaa !9
  %226 = call i32 @f2c_dscal(ptr noundef nonnull %4, ptr noundef nonnull %9, ptr noundef %8, ptr noundef nonnull @c__1) #6
  br label %227

227:                                              ; preds = %224, %222
  %.0509 = phi double [ %59, %224 ], [ %102, %222 ]
  %228 = icmp sge i64 %.2, %217
  %229 = icmp sle i64 %.2, %217
  br i1 %.not567, label %375, label %230

230:                                              ; preds = %227
  %231 = icmp slt i64 %216, 0
  %invariant.gep666 = getelementptr i8, ptr %21, i64 16
  %.in595668 = select i1 %231, i1 %228, i1 %229
  br i1 %.in595668, label %.lr.ph672, label %.loopexit620

.lr.ph672:                                        ; preds = %230
  %232 = getelementptr double, ptr %21, i64 %.2502
  br label %233

233:                                              ; preds = %.lr.ph672, %371
  %.1510670 = phi double [ %.0509, %.lr.ph672 ], [ %.5514, %371 ]
  %.6534669 = phi i64 [ %.2, %.lr.ph672 ], [ %372, %371 ]
  %234 = getelementptr inbounds double, ptr %22, i64 %.6534669
  %235 = load double, ptr %234, align 8, !tbaa !9
  store double %235, ptr %15, align 8, !tbaa !9
  %236 = fcmp oge double %235, 0.000000e+00
  %237 = fneg double %235
  %238 = select i1 %236, double %235, double %237
  br i1 %.not570, label %245, label %239

239:                                              ; preds = %233
  %240 = mul nsw i64 %.6534669, %19
  %241 = getelementptr double, ptr %232, i64 %240
  %242 = load double, ptr %241, align 8, !tbaa !9
  %243 = load double, ptr %18, align 8, !tbaa !9
  %244 = fmul double %242, %243
  br label %248

245:                                              ; preds = %233
  %246 = load double, ptr %18, align 8, !tbaa !9
  %247 = fcmp oeq double %246, 1.000000e+00
  br i1 %247, label %297, label %248

248:                                              ; preds = %245, %239
  %.0515 = phi double [ %244, %239 ], [ %246, %245 ]
  %249 = fcmp oge double %.0515, 0.000000e+00
  %250 = fneg double %.0515
  %251 = select i1 %249, double %.0515, double %250
  %252 = fcmp ogt double %251, %58
  br i1 %252, label %253, label %270

253:                                              ; preds = %248
  %254 = fcmp olt double %251, 1.000000e+00
  %255 = fmul double %59, %251
  %256 = fcmp ogt double %238, %255
  %or.cond603 = select i1 %254, i1 %256, i1 false
  br i1 %or.cond603, label %257, label %264

257:                                              ; preds = %253
  %258 = fdiv double 1.000000e+00, %238
  store double %258, ptr %16, align 8, !tbaa !9
  %259 = call i32 @f2c_dscal(ptr noundef nonnull %4, ptr noundef nonnull %16, ptr noundef nonnull %8, ptr noundef nonnull @c__1) #6
  %260 = load double, ptr %16, align 8, !tbaa !9
  %261 = load double, ptr %9, align 8, !tbaa !9
  %262 = fmul double %260, %261
  store double %262, ptr %9, align 8, !tbaa !9
  %263 = fmul double %.1510670, %260
  %.pre715 = load double, ptr %234, align 8, !tbaa !9
  br label %264

264:                                              ; preds = %257, %253
  %265 = phi double [ %.pre715, %257 ], [ %235, %253 ]
  %.2511 = phi double [ %263, %257 ], [ %.1510670, %253 ]
  %266 = fdiv double %265, %.0515
  store double %266, ptr %234, align 8, !tbaa !9
  store double %266, ptr %15, align 8, !tbaa !9
  %267 = fcmp oge double %266, 0.000000e+00
  %268 = fneg double %266
  %269 = select i1 %267, double %266, double %268
  br label %297

270:                                              ; preds = %248
  %271 = fcmp ogt double %251, 0.000000e+00
  br i1 %271, label %272, label %294

272:                                              ; preds = %270
  %273 = fmul double %59, %251
  %274 = fcmp ogt double %238, %273
  br i1 %274, label %275, label %288

275:                                              ; preds = %272
  %276 = fdiv double %273, %238
  store double %276, ptr %16, align 8, !tbaa !9
  %277 = getelementptr inbounds double, ptr %23, i64 %.6534669
  %278 = load double, ptr %277, align 8, !tbaa !9
  %279 = fcmp ogt double %278, 1.000000e+00
  br i1 %279, label %280, label %282

280:                                              ; preds = %275
  %281 = fdiv double %276, %278
  store double %281, ptr %16, align 8, !tbaa !9
  br label %282

282:                                              ; preds = %280, %275
  %283 = call i32 @f2c_dscal(ptr noundef nonnull %4, ptr noundef nonnull %16, ptr noundef nonnull %8, ptr noundef nonnull @c__1) #6
  %284 = load double, ptr %16, align 8, !tbaa !9
  %285 = load double, ptr %9, align 8, !tbaa !9
  %286 = fmul double %284, %285
  store double %286, ptr %9, align 8, !tbaa !9
  %287 = fmul double %.1510670, %284
  %.pre = load double, ptr %234, align 8, !tbaa !9
  br label %288

288:                                              ; preds = %282, %272
  %289 = phi double [ %.pre, %282 ], [ %235, %272 ]
  %.3512 = phi double [ %287, %282 ], [ %.1510670, %272 ]
  %290 = fdiv double %289, %.0515
  store double %290, ptr %234, align 8, !tbaa !9
  store double %290, ptr %15, align 8, !tbaa !9
  %291 = fcmp oge double %290, 0.000000e+00
  %292 = fneg double %290
  %293 = select i1 %291, double %290, double %292
  br label %297

294:                                              ; preds = %270
  %295 = load i64, ptr %4, align 8, !tbaa !5
  store i64 %295, ptr %14, align 8, !tbaa !5
  %.not597662 = icmp slt i64 %295, 1
  br i1 %.not597662, label %.thread607, label %.lr.ph665.preheader

.lr.ph665.preheader:                              ; preds = %294
  %296 = shl nuw i64 %295, 3
  call void @llvm.memset.p0.i64(ptr nonnull align 8 %8, i8 0, i64 %296, i1 false), !tbaa !9
  br label %.thread607

.thread607:                                       ; preds = %.lr.ph665.preheader, %294
  store double 1.000000e+00, ptr %234, align 8, !tbaa !9
  store double 0.000000e+00, ptr %9, align 8, !tbaa !9
  br label %312

297:                                              ; preds = %264, %288, %245
  %.0527 = phi double [ %269, %264 ], [ %293, %288 ], [ %238, %245 ]
  %.4513 = phi double [ %.2511, %264 ], [ %.3512, %288 ], [ %.1510670, %245 ]
  %298 = fcmp ogt double %.0527, 1.000000e+00
  br i1 %298, label %299, label %312

299:                                              ; preds = %297
  %300 = fdiv double 1.000000e+00, %.0527
  store double %300, ptr %16, align 8, !tbaa !9
  %301 = getelementptr inbounds double, ptr %23, i64 %.6534669
  %302 = load double, ptr %301, align 8, !tbaa !9
  %303 = fsub double %59, %.4513
  %304 = fmul double %300, %303
  %305 = fcmp ogt double %302, %304
  br i1 %305, label %306, label %322

306:                                              ; preds = %299
  %307 = fmul double %300, 5.000000e-01
  store double %307, ptr %16, align 8, !tbaa !9
  %308 = call i32 @f2c_dscal(ptr noundef nonnull %4, ptr noundef nonnull %16, ptr noundef nonnull %8, ptr noundef nonnull @c__1) #6
  %309 = load double, ptr %16, align 8, !tbaa !9
  %310 = load double, ptr %9, align 8, !tbaa !9
  %311 = fmul double %309, %310
  br label %.sink.split

312:                                              ; preds = %.thread607, %297
  %.4513612 = phi double [ 0.000000e+00, %.thread607 ], [ %.4513, %297 ]
  %.0527610 = phi double [ 1.000000e+00, %.thread607 ], [ %.0527, %297 ]
  %313 = getelementptr inbounds double, ptr %23, i64 %.6534669
  %314 = load double, ptr %313, align 8, !tbaa !9
  %315 = fmul double %.0527610, %314
  %316 = fsub double %59, %.4513612
  %317 = fcmp ogt double %315, %316
  br i1 %317, label %318, label %322

318:                                              ; preds = %312
  %319 = call i32 @f2c_dscal(ptr noundef nonnull %4, ptr noundef nonnull @c_b36, ptr noundef nonnull %8, ptr noundef nonnull @c__1) #6
  %320 = load double, ptr %9, align 8, !tbaa !9
  %321 = fmul double %320, 5.000000e-01
  br label %.sink.split

.sink.split:                                      ; preds = %306, %318
  %.sink733 = phi double [ %321, %318 ], [ %311, %306 ]
  %.4513611.ph = phi double [ %.4513612, %318 ], [ %.4513, %306 ]
  store double %.sink733, ptr %9, align 8, !tbaa !9
  br label %322

322:                                              ; preds = %.sink.split, %312, %299
  %.4513611 = phi double [ %.4513612, %312 ], [ %.4513, %299 ], [ %.4513611.ph, %.sink.split ]
  br i1 %.not.not.not, label %347, label %323

323:                                              ; preds = %322
  %324 = icmp sgt i64 %.6534669, 1
  br i1 %324, label %325, label %371

325:                                              ; preds = %323
  %326 = load i64, ptr %5, align 8, !tbaa !5
  store i64 %326, ptr %14, align 8, !tbaa !5
  %327 = add nsw i64 %.6534669, -1
  %328 = call i64 @llvm.smin.i64(i64 %326, i64 %327)
  store i64 %328, ptr %17, align 8, !tbaa !5
  %329 = load double, ptr %234, align 8, !tbaa !9
  %330 = fneg double %329
  %331 = load double, ptr %18, align 8, !tbaa !9
  %332 = fmul double %331, %330
  store double %332, ptr %15, align 8, !tbaa !9
  %333 = add nsw i64 %326, 1
  %334 = sub i64 %333, %328
  %335 = mul nsw i64 %.6534669, %19
  %336 = getelementptr double, ptr %21, i64 %334
  %337 = getelementptr double, ptr %336, i64 %335
  %338 = sub nsw i64 %.6534669, %328
  %339 = getelementptr inbounds double, ptr %22, i64 %338
  %340 = call i32 @f2c_daxpy(ptr noundef nonnull %17, ptr noundef nonnull %15, ptr noundef %337, ptr noundef nonnull @c__1, ptr noundef nonnull %339, ptr noundef nonnull @c__1) #6
  store i64 %327, ptr %14, align 8, !tbaa !5
  %341 = call i64 @f2c_idamax(ptr noundef nonnull %14, ptr noundef nonnull %8, ptr noundef nonnull @c__1) #6
  %342 = getelementptr inbounds double, ptr %22, i64 %341
  %343 = load double, ptr %342, align 8, !tbaa !9
  store double %343, ptr %15, align 8, !tbaa !9
  %344 = fcmp oge double %343, 0.000000e+00
  %345 = fneg double %343
  %346 = select i1 %344, double %343, double %345
  br label %371

347:                                              ; preds = %322
  %348 = load i64, ptr %4, align 8, !tbaa !5
  %349 = icmp slt i64 %.6534669, %348
  br i1 %349, label %350, label %371

350:                                              ; preds = %347
  %351 = load i64, ptr %5, align 8, !tbaa !5
  store i64 %351, ptr %14, align 8, !tbaa !5
  %352 = sub nsw i64 %348, %.6534669
  %353 = call i64 @llvm.smin.i64(i64 %351, i64 %352)
  store i64 %353, ptr %17, align 8, !tbaa !5
  %354 = icmp sgt i64 %353, 0
  br i1 %354, label %355, label %363

355:                                              ; preds = %350
  %356 = load double, ptr %234, align 8, !tbaa !9
  %357 = fneg double %356
  %358 = load double, ptr %18, align 8, !tbaa !9
  %359 = fmul double %358, %357
  store double %359, ptr %15, align 8, !tbaa !9
  %360 = mul nsw i64 %.6534669, %19
  %gep667 = getelementptr double, ptr %invariant.gep666, i64 %360
  %361 = getelementptr double, ptr %8, i64 %.6534669
  %362 = call i32 @f2c_daxpy(ptr noundef nonnull %17, ptr noundef nonnull %15, ptr noundef %gep667, ptr noundef nonnull @c__1, ptr noundef %361, ptr noundef nonnull @c__1) #6
  %.pre716 = load i64, ptr %4, align 8, !tbaa !5
  %.pre720 = sub nsw i64 %.pre716, %.6534669
  br label %363

363:                                              ; preds = %355, %350
  %.pre-phi = phi i64 [ %.pre720, %355 ], [ %352, %350 ]
  store i64 %.pre-phi, ptr %14, align 8, !tbaa !5
  %364 = getelementptr double, ptr %8, i64 %.6534669
  %365 = call i64 @f2c_idamax(ptr noundef nonnull %14, ptr noundef %364, ptr noundef nonnull @c__1) #6
  %366 = getelementptr double, ptr %234, i64 %365
  %367 = load double, ptr %366, align 8, !tbaa !9
  store double %367, ptr %15, align 8, !tbaa !9
  %368 = fcmp oge double %367, 0.000000e+00
  %369 = fneg double %367
  %370 = select i1 %368, double %367, double %369
  br label %371

371:                                              ; preds = %325, %323, %363, %347
  %.5514 = phi double [ %346, %325 ], [ %.4513611, %323 ], [ %370, %363 ], [ %.4513611, %347 ]
  %372 = add nsw i64 %.6534669, %216
  %373 = icmp sge i64 %372, %217
  %374 = icmp sle i64 %372, %217
  %.in595 = select i1 %231, i1 %373, i1 %374
  br i1 %.in595, label %233, label %.loopexit620, !llvm.loop !18

375:                                              ; preds = %227
  %invariant.gep694 = getelementptr i8, ptr %21, i64 16
  %376 = icmp slt i64 %216, 0
  %.in586696 = select i1 %376, i1 %228, i1 %229
  br i1 %.in586696, label %.lr.ph702, label %.loopexit620

.lr.ph702:                                        ; preds = %375
  %377 = getelementptr double, ptr %21, i64 %.2502
  br label %378

378:                                              ; preds = %.lr.ph702, %575
  %.6700 = phi double [ %.0509, %.lr.ph702 ], [ %581, %575 ]
  %.1516699 = phi double [ undef, %.lr.ph702 ], [ %.5520, %575 ]
  %.7535697 = phi i64 [ %.2, %.lr.ph702 ], [ %582, %575 ]
  %379 = getelementptr inbounds double, ptr %22, i64 %.7535697
  %380 = load double, ptr %379, align 8, !tbaa !9
  store double %380, ptr %15, align 8, !tbaa !9
  %381 = fcmp oge double %380, 0.000000e+00
  %382 = fneg double %380
  %383 = select i1 %381, double %380, double %382
  %384 = load double, ptr %18, align 8, !tbaa !9
  %385 = fcmp oge double %.6700, 1.000000e+00
  %386 = select i1 %385, double %.6700, double 1.000000e+00
  %387 = fdiv double 1.000000e+00, %386
  store double %387, ptr %16, align 8, !tbaa !9
  %388 = getelementptr inbounds double, ptr %23, i64 %.7535697
  %389 = load double, ptr %388, align 8, !tbaa !9
  %390 = fsub double %59, %383
  %391 = fmul double %387, %390
  %392 = fcmp ogt double %389, %391
  br i1 %392, label %393, label %418

393:                                              ; preds = %378
  %394 = fmul double %387, 5.000000e-01
  store double %394, ptr %16, align 8, !tbaa !9
  br i1 %.not570, label %400, label %395

395:                                              ; preds = %393
  %396 = mul nsw i64 %.7535697, %19
  %397 = getelementptr double, ptr %377, i64 %396
  %398 = load double, ptr %397, align 8, !tbaa !9
  %399 = fmul double %384, %398
  br label %400

400:                                              ; preds = %393, %395
  %.2517 = phi double [ %399, %395 ], [ %384, %393 ]
  %401 = fcmp oge double %.2517, 0.000000e+00
  %402 = fneg double %.2517
  %403 = select i1 %401, double %.2517, double %402
  %404 = fcmp ogt double %403, 1.000000e+00
  br i1 %404, label %405, label %thread-pre-split613

405:                                              ; preds = %400
  store double 1.000000e+00, ptr %15, align 8, !tbaa !9
  %406 = fmul double %394, %403
  %407 = fcmp oge double %406, 1.000000e+00
  %408 = select i1 %407, double 1.000000e+00, double %406
  store double %408, ptr %16, align 8, !tbaa !9
  %409 = fdiv double %384, %.2517
  br label %thread-pre-split613

thread-pre-split613:                              ; preds = %400, %405
  %410 = phi double [ %408, %405 ], [ %394, %400 ]
  %.0498 = phi double [ %409, %405 ], [ %384, %400 ]
  %411 = fcmp olt double %410, 1.000000e+00
  br i1 %411, label %412, label %418

412:                                              ; preds = %thread-pre-split613
  %413 = call i32 @f2c_dscal(ptr noundef nonnull %4, ptr noundef nonnull %16, ptr noundef nonnull %8, ptr noundef nonnull @c__1) #6
  %414 = load double, ptr %16, align 8, !tbaa !9
  %415 = load double, ptr %9, align 8, !tbaa !9
  %416 = fmul double %414, %415
  store double %416, ptr %9, align 8, !tbaa !9
  %417 = fmul double %.6700, %414
  br label %418

418:                                              ; preds = %thread-pre-split613, %412, %378
  %.3518 = phi double [ %.2517, %412 ], [ %.2517, %thread-pre-split613 ], [ %.1516699, %378 ]
  %.7 = phi double [ %417, %412 ], [ %.6700, %thread-pre-split613 ], [ %.6700, %378 ]
  %.1499 = phi double [ %.0498, %412 ], [ %.0498, %thread-pre-split613 ], [ %384, %378 ]
  %419 = fcmp oeq double %.1499, 1.000000e+00
  %420 = load i64, ptr %5, align 8, !tbaa !5
  br i1 %419, label %421, label %442

421:                                              ; preds = %418
  store i64 %420, ptr %14, align 8, !tbaa !5
  br i1 %.not.not.not, label %433, label %422

422:                                              ; preds = %421
  %423 = add nsw i64 %.7535697, -1
  %424 = call i64 @llvm.smin.i64(i64 %420, i64 %423)
  store i64 %424, ptr %17, align 8, !tbaa !5
  %425 = add nsw i64 %420, 1
  %426 = sub i64 %425, %424
  %427 = mul nsw i64 %.7535697, %19
  %428 = getelementptr double, ptr %21, i64 %426
  %429 = getelementptr double, ptr %428, i64 %427
  %430 = sub nsw i64 %.7535697, %424
  %431 = getelementptr inbounds double, ptr %22, i64 %430
  %432 = call double @f2c_ddot(ptr noundef nonnull %17, ptr noundef %429, ptr noundef nonnull @c__1, ptr noundef nonnull %431, ptr noundef nonnull @c__1) #6
  br label %.loopexit

433:                                              ; preds = %421
  %434 = load i64, ptr %4, align 8, !tbaa !5
  %435 = sub nsw i64 %434, %.7535697
  %436 = call i64 @llvm.smin.i64(i64 %420, i64 %435)
  store i64 %436, ptr %17, align 8, !tbaa !5
  %437 = icmp sgt i64 %436, 0
  br i1 %437, label %438, label %.loopexit

438:                                              ; preds = %433
  %439 = mul nsw i64 %.7535697, %19
  %gep695 = getelementptr double, ptr %invariant.gep694, i64 %439
  %440 = getelementptr double, ptr %8, i64 %.7535697
  %441 = call double @f2c_ddot(ptr noundef nonnull %17, ptr noundef %gep695, ptr noundef nonnull @c__1, ptr noundef %440, ptr noundef nonnull @c__1) #6
  br label %.loopexit

442:                                              ; preds = %418
  br i1 %.not.not.not, label %477, label %443

443:                                              ; preds = %442
  %444 = add nsw i64 %.7535697, -1
  %445 = call i64 @llvm.smin.i64(i64 %420, i64 %444)
  store i64 %445, ptr %17, align 8, !tbaa !5
  store i64 %445, ptr %14, align 8, !tbaa !5
  %.not590673 = icmp slt i64 %445, 1
  br i1 %.not590673, label %.loopexit, label %.lr.ph677

.lr.ph677:                                        ; preds = %443
  %446 = sub i64 %420, %445
  %447 = mul nsw i64 %.7535697, %19
  %invariant.gep679 = getelementptr double, ptr %21, i64 %447
  %448 = xor i64 %445, -1
  %449 = getelementptr double, ptr %379, i64 %448
  %450 = getelementptr double, ptr %invariant.gep679, i64 %446
  %xtraiter = and i64 %445, 3
  %451 = icmp ult i64 %445, 4
  br i1 %451, label %.loopexit.loopexit745.unr-lcssa, label %.lr.ph677.new

.lr.ph677.new:                                    ; preds = %.lr.ph677
  %unroll_iter = and i64 %445, 9223372036854775804
  br label %452

452:                                              ; preds = %452, %.lr.ph677.new
  %.0503675 = phi double [ 0.000000e+00, %.lr.ph677.new ], [ %475, %452 ]
  %.1537674 = phi i64 [ 1, %.lr.ph677.new ], [ %476, %452 ]
  %niter = phi i64 [ 0, %.lr.ph677.new ], [ %niter.next.3, %452 ]
  %gep680 = getelementptr double, ptr %450, i64 %.1537674
  %453 = load double, ptr %gep680, align 8, !tbaa !9
  %454 = fmul double %.1499, %453
  %455 = getelementptr double, ptr %449, i64 %.1537674
  %456 = load double, ptr %455, align 8, !tbaa !9
  %457 = call double @llvm.fmuladd.f64(double %454, double %456, double %.0503675)
  %458 = add nuw nsw i64 %.1537674, 1
  %gep680.1 = getelementptr double, ptr %450, i64 %458
  %459 = load double, ptr %gep680.1, align 8, !tbaa !9
  %460 = fmul double %.1499, %459
  %461 = getelementptr double, ptr %449, i64 %458
  %462 = load double, ptr %461, align 8, !tbaa !9
  %463 = call double @llvm.fmuladd.f64(double %460, double %462, double %457)
  %464 = add nuw nsw i64 %.1537674, 2
  %gep680.2 = getelementptr double, ptr %450, i64 %464
  %465 = load double, ptr %gep680.2, align 8, !tbaa !9
  %466 = fmul double %.1499, %465
  %467 = getelementptr double, ptr %449, i64 %464
  %468 = load double, ptr %467, align 8, !tbaa !9
  %469 = call double @llvm.fmuladd.f64(double %466, double %468, double %463)
  %470 = add nuw i64 %.1537674, 3
  %gep680.3 = getelementptr double, ptr %450, i64 %470
  %471 = load double, ptr %gep680.3, align 8, !tbaa !9
  %472 = fmul double %.1499, %471
  %473 = getelementptr double, ptr %449, i64 %470
  %474 = load double, ptr %473, align 8, !tbaa !9
  %475 = call double @llvm.fmuladd.f64(double %472, double %474, double %469)
  %476 = add nuw i64 %.1537674, 4
  %niter.next.3 = add i64 %niter, 4
  %niter.ncmp.3 = icmp eq i64 %niter.next.3, %unroll_iter
  br i1 %niter.ncmp.3, label %.loopexit.loopexit745.unr-lcssa, label %452, !llvm.loop !19

477:                                              ; preds = %442
  %478 = load i64, ptr %4, align 8, !tbaa !5
  %479 = sub nsw i64 %478, %.7535697
  %480 = call i64 @llvm.smin.i64(i64 %420, i64 %479)
  store i64 %480, ptr %17, align 8, !tbaa !5
  store i64 %480, ptr %14, align 8, !tbaa !5
  %.not588681 = icmp slt i64 %480, 1
  br i1 %.not588681, label %.loopexit, label %.lr.ph685

.lr.ph685:                                        ; preds = %477
  %481 = mul nsw i64 %.7535697, %19
  %invariant.gep687 = getelementptr double, ptr %21, i64 %481
  %xtraiter758 = and i64 %480, 3
  %482 = icmp ult i64 %480, 4
  br i1 %482, label %.loopexit.loopexit.unr-lcssa, label %.lr.ph685.new

.lr.ph685.new:                                    ; preds = %.lr.ph685
  %unroll_iter762 = and i64 %480, 9223372036854775804
  br label %483

483:                                              ; preds = %483, %.lr.ph685.new
  %.1504683 = phi double [ 0.000000e+00, %.lr.ph685.new ], [ %507, %483 ]
  %.2538682 = phi i64 [ 1, %.lr.ph685.new ], [ %502, %483 ]
  %niter763 = phi i64 [ 0, %.lr.ph685.new ], [ %niter763.next.3, %483 ]
  %484 = add nuw nsw i64 %.2538682, 1
  %gep688 = getelementptr double, ptr %invariant.gep687, i64 %484
  %485 = load double, ptr %gep688, align 8, !tbaa !9
  %486 = fmul double %.1499, %485
  %487 = getelementptr double, ptr %379, i64 %.2538682
  %488 = load double, ptr %487, align 8, !tbaa !9
  %489 = call double @llvm.fmuladd.f64(double %486, double %488, double %.1504683)
  %490 = add nuw nsw i64 %.2538682, 2
  %gep688.1 = getelementptr double, ptr %invariant.gep687, i64 %490
  %491 = load double, ptr %gep688.1, align 8, !tbaa !9
  %492 = fmul double %.1499, %491
  %493 = getelementptr double, ptr %379, i64 %484
  %494 = load double, ptr %493, align 8, !tbaa !9
  %495 = call double @llvm.fmuladd.f64(double %492, double %494, double %489)
  %496 = add nuw nsw i64 %.2538682, 3
  %gep688.2 = getelementptr double, ptr %invariant.gep687, i64 %496
  %497 = load double, ptr %gep688.2, align 8, !tbaa !9
  %498 = fmul double %.1499, %497
  %499 = getelementptr double, ptr %379, i64 %490
  %500 = load double, ptr %499, align 8, !tbaa !9
  %501 = call double @llvm.fmuladd.f64(double %498, double %500, double %495)
  %502 = add nuw nsw i64 %.2538682, 4
  %gep688.3 = getelementptr double, ptr %invariant.gep687, i64 %502
  %503 = load double, ptr %gep688.3, align 8, !tbaa !9
  %504 = fmul double %.1499, %503
  %505 = getelementptr double, ptr %379, i64 %496
  %506 = load double, ptr %505, align 8, !tbaa !9
  %507 = call double @llvm.fmuladd.f64(double %504, double %506, double %501)
  %niter763.next.3 = add i64 %niter763, 4
  %niter763.ncmp.3 = icmp eq i64 %niter763.next.3, %unroll_iter762
  br i1 %niter763.ncmp.3, label %.loopexit.loopexit.unr-lcssa, label %483, !llvm.loop !20

.loopexit.loopexit.unr-lcssa:                     ; preds = %483, %.lr.ph685
  %.lcssa746.ph = phi double [ poison, %.lr.ph685 ], [ %507, %483 ]
  %.1504683.unr = phi double [ 0.000000e+00, %.lr.ph685 ], [ %507, %483 ]
  %.2538682.unr = phi i64 [ 1, %.lr.ph685 ], [ %502, %483 ]
  %lcmp.mod760.not = icmp eq i64 %xtraiter758, 0
  br i1 %lcmp.mod760.not, label %.loopexit, label %.epil.preheader757

.epil.preheader757:                               ; preds = %.loopexit.loopexit.unr-lcssa, %.epil.preheader757
  %.1504683.epil = phi double [ %513, %.epil.preheader757 ], [ %.1504683.unr, %.loopexit.loopexit.unr-lcssa ]
  %.2538682.epil = phi i64 [ %508, %.epil.preheader757 ], [ %.2538682.unr, %.loopexit.loopexit.unr-lcssa ]
  %epil.iter759 = phi i64 [ %epil.iter759.next, %.epil.preheader757 ], [ 0, %.loopexit.loopexit.unr-lcssa ]
  %508 = add nuw nsw i64 %.2538682.epil, 1
  %gep688.epil = getelementptr double, ptr %invariant.gep687, i64 %508
  %509 = load double, ptr %gep688.epil, align 8, !tbaa !9
  %510 = fmul double %.1499, %509
  %511 = getelementptr double, ptr %379, i64 %.2538682.epil
  %512 = load double, ptr %511, align 8, !tbaa !9
  %513 = call double @llvm.fmuladd.f64(double %510, double %512, double %.1504683.epil)
  %epil.iter759.next = add i64 %epil.iter759, 1
  %epil.iter759.cmp.not = icmp eq i64 %epil.iter759.next, %xtraiter758
  br i1 %epil.iter759.cmp.not, label %.loopexit, label %.epil.preheader757, !llvm.loop !21

.loopexit.loopexit745.unr-lcssa:                  ; preds = %452, %.lr.ph677
  %.lcssa.ph = phi double [ poison, %.lr.ph677 ], [ %475, %452 ]
  %.0503675.unr = phi double [ 0.000000e+00, %.lr.ph677 ], [ %475, %452 ]
  %.1537674.unr = phi i64 [ 1, %.lr.ph677 ], [ %476, %452 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.loopexit, label %.epil.preheader

.epil.preheader:                                  ; preds = %.loopexit.loopexit745.unr-lcssa, %.epil.preheader
  %.0503675.epil = phi double [ %518, %.epil.preheader ], [ %.0503675.unr, %.loopexit.loopexit745.unr-lcssa ]
  %.1537674.epil = phi i64 [ %519, %.epil.preheader ], [ %.1537674.unr, %.loopexit.loopexit745.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.epil.preheader ], [ 0, %.loopexit.loopexit745.unr-lcssa ]
  %gep680.epil = getelementptr double, ptr %450, i64 %.1537674.epil
  %514 = load double, ptr %gep680.epil, align 8, !tbaa !9
  %515 = fmul double %.1499, %514
  %516 = getelementptr double, ptr %449, i64 %.1537674.epil
  %517 = load double, ptr %516, align 8, !tbaa !9
  %518 = call double @llvm.fmuladd.f64(double %515, double %517, double %.0503675.epil)
  %519 = add nuw i64 %.1537674.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter
  br i1 %epil.iter.cmp.not, label %.loopexit, label %.epil.preheader, !llvm.loop !23

.loopexit:                                        ; preds = %.loopexit.loopexit745.unr-lcssa, %.epil.preheader, %.loopexit.loopexit.unr-lcssa, %.epil.preheader757, %443, %477, %422, %438, %433
  %.2505 = phi double [ %432, %422 ], [ %441, %438 ], [ 0.000000e+00, %433 ], [ 0.000000e+00, %477 ], [ 0.000000e+00, %443 ], [ %.lcssa746.ph, %.loopexit.loopexit.unr-lcssa ], [ %513, %.epil.preheader757 ], [ %.lcssa.ph, %.loopexit.loopexit745.unr-lcssa ], [ %518, %.epil.preheader ]
  %520 = load double, ptr %18, align 8, !tbaa !9
  %521 = fcmp oeq double %.1499, %520
  %522 = load double, ptr %379, align 8, !tbaa !9
  br i1 %521, label %523, label %572

523:                                              ; preds = %.loopexit
  %524 = fsub double %522, %.2505
  store double %524, ptr %379, align 8, !tbaa !9
  store double %524, ptr %15, align 8, !tbaa !9
  %525 = fcmp oge double %524, 0.000000e+00
  %526 = fneg double %524
  %527 = select i1 %525, double %524, double %526
  br i1 %.not570, label %533, label %528

528:                                              ; preds = %523
  %529 = mul nsw i64 %.7535697, %19
  %530 = getelementptr double, ptr %377, i64 %529
  %531 = load double, ptr %530, align 8, !tbaa !9
  %532 = fmul double %520, %531
  br label %535

533:                                              ; preds = %523
  %534 = fcmp oeq double %520, 1.000000e+00
  br i1 %534, label %575, label %535

535:                                              ; preds = %533, %528
  %.4519 = phi double [ %532, %528 ], [ %520, %533 ]
  %536 = fcmp oge double %.4519, 0.000000e+00
  %537 = fneg double %.4519
  %538 = select i1 %536, double %.4519, double %537
  %539 = fcmp ogt double %538, %58
  br i1 %539, label %540, label %554

540:                                              ; preds = %535
  %541 = fcmp olt double %538, 1.000000e+00
  %542 = fmul double %59, %538
  %543 = fcmp ogt double %527, %542
  %or.cond605 = select i1 %541, i1 %543, i1 false
  br i1 %or.cond605, label %544, label %551

544:                                              ; preds = %540
  %545 = fdiv double 1.000000e+00, %527
  store double %545, ptr %16, align 8, !tbaa !9
  %546 = call i32 @f2c_dscal(ptr noundef nonnull %4, ptr noundef nonnull %16, ptr noundef nonnull %8, ptr noundef nonnull @c__1) #6
  %547 = load double, ptr %16, align 8, !tbaa !9
  %548 = load double, ptr %9, align 8, !tbaa !9
  %549 = fmul double %547, %548
  store double %549, ptr %9, align 8, !tbaa !9
  %550 = fmul double %.7, %547
  %.pre718 = load double, ptr %379, align 8, !tbaa !9
  br label %551

551:                                              ; preds = %544, %540
  %552 = phi double [ %.pre718, %544 ], [ %524, %540 ]
  %.8 = phi double [ %550, %544 ], [ %.7, %540 ]
  %553 = fdiv double %552, %.4519
  store double %553, ptr %379, align 8, !tbaa !9
  br label %575

554:                                              ; preds = %535
  %555 = fcmp ogt double %538, 0.000000e+00
  br i1 %555, label %556, label %569

556:                                              ; preds = %554
  %557 = fmul double %59, %538
  %558 = fcmp ogt double %527, %557
  br i1 %558, label %559, label %566

559:                                              ; preds = %556
  %560 = fdiv double %557, %527
  store double %560, ptr %16, align 8, !tbaa !9
  %561 = call i32 @f2c_dscal(ptr noundef nonnull %4, ptr noundef nonnull %16, ptr noundef nonnull %8, ptr noundef nonnull @c__1) #6
  %562 = load double, ptr %16, align 8, !tbaa !9
  %563 = load double, ptr %9, align 8, !tbaa !9
  %564 = fmul double %562, %563
  store double %564, ptr %9, align 8, !tbaa !9
  %565 = fmul double %.7, %562
  %.pre717 = load double, ptr %379, align 8, !tbaa !9
  br label %566

566:                                              ; preds = %559, %556
  %567 = phi double [ %.pre717, %559 ], [ %524, %556 ]
  %.9 = phi double [ %565, %559 ], [ %.7, %556 ]
  %568 = fdiv double %567, %.4519
  store double %568, ptr %379, align 8, !tbaa !9
  br label %575

569:                                              ; preds = %554
  %570 = load i64, ptr %4, align 8, !tbaa !5
  store i64 %570, ptr %14, align 8, !tbaa !5
  %.not594689 = icmp slt i64 %570, 1
  br i1 %.not594689, label %._crit_edge693, label %.lr.ph692.preheader

.lr.ph692.preheader:                              ; preds = %569
  %571 = shl nuw i64 %570, 3
  call void @llvm.memset.p0.i64(ptr nonnull align 8 %8, i8 0, i64 %571, i1 false), !tbaa !9
  br label %._crit_edge693

._crit_edge693:                                   ; preds = %.lr.ph692.preheader, %569
  store double 1.000000e+00, ptr %379, align 8, !tbaa !9
  store double 0.000000e+00, ptr %9, align 8, !tbaa !9
  %.pre719 = load double, ptr %379, align 8, !tbaa !9
  br label %575

572:                                              ; preds = %.loopexit
  %573 = fdiv double %522, %.3518
  %574 = fsub double %573, %.2505
  store double %574, ptr %379, align 8, !tbaa !9
  br label %575

575:                                              ; preds = %533, %566, %._crit_edge693, %551, %572
  %576 = phi double [ %553, %551 ], [ %568, %566 ], [ %.pre719, %._crit_edge693 ], [ %524, %533 ], [ %574, %572 ]
  %.5520 = phi double [ %.4519, %551 ], [ %.4519, %566 ], [ %.4519, %._crit_edge693 ], [ 1.000000e+00, %533 ], [ %.3518, %572 ]
  %.10 = phi double [ %.8, %551 ], [ %.9, %566 ], [ 0.000000e+00, %._crit_edge693 ], [ %.7, %533 ], [ %.7, %572 ]
  store double %576, ptr %15, align 8, !tbaa !9
  %577 = fcmp oge double %576, 0.000000e+00
  %578 = fneg double %576
  %579 = select i1 %577, double %576, double %578
  %580 = fcmp oge double %.10, %579
  %581 = select i1 %580, double %.10, double %579
  %582 = add nsw i64 %216, %.7535697
  %583 = icmp sge i64 %582, %217
  %584 = icmp sle i64 %582, %217
  %.in586 = select i1 %376, i1 %583, i1 %584
  br i1 %.in586, label %378, label %.loopexit620, !llvm.loop !24

.loopexit620:                                     ; preds = %371, %575, %230, %375
  %585 = load double, ptr %18, align 8, !tbaa !9
  %586 = load double, ptr %9, align 8, !tbaa !9
  %587 = fdiv double %586, %585
  store double %587, ptr %9, align 8, !tbaa !9
  br label %588

588:                                              ; preds = %.loopexit620, %220
  %589 = phi double [ %585, %.loopexit620 ], [ %.pr615, %220 ]
  %590 = fcmp une double %589, 1.000000e+00
  br i1 %590, label %591, label %594

591:                                              ; preds = %588
  %592 = fdiv double 1.000000e+00, %589
  store double %592, ptr %15, align 8, !tbaa !9
  %593 = call i32 @f2c_dscal(ptr noundef nonnull %4, ptr noundef nonnull %15, ptr noundef %10, ptr noundef nonnull @c__1) #6
  br label %594

594:                                              ; preds = %588, %591, %53, %.thread
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #6
  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
  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_dtbsv(ptr noundef, 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.smin.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, !22}
!22 = !{!"llvm.loop.unroll.disable"}
!23 = distinct !{!23, !22}
!24 = distinct !{!24, !12}


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