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

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

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

53:                                               ; preds = %10
  %54 = load ptr, ptr %12, align 8, !tbaa !5
  %55 = load i64, ptr %54, align 8, !tbaa !9
  br label %60

56:                                               ; preds = %10
  %57 = load ptr, ptr %12, align 8, !tbaa !5
  %58 = load i64, ptr %57, align 8, !tbaa !9
  %59 = sub nsw i64 0, %58
  br label %60

60:                                               ; preds = %56, %53
  %61 = phi i64 [ %55, %53 ], [ %59, %56 ]
  %62 = icmp sgt i64 %61, 2
  br i1 %62, label %67, label %63

63:                                               ; preds = %60
  %64 = load ptr, ptr %12, align 8, !tbaa !5
  %65 = load i64, ptr %64, align 8, !tbaa !9
  %66 = icmp eq i64 %65, 0
  br i1 %66, label %67, label %69

67:                                               ; preds = %63, %60
  %68 = load ptr, ptr %21, align 8, !tbaa !5
  store i64 -1, ptr %68, align 8, !tbaa !9
  br label %76

69:                                               ; preds = %63
  %70 = load ptr, ptr %13, align 8, !tbaa !5
  %71 = load i64, ptr %70, align 8, !tbaa !9
  %72 = icmp slt i64 %71, 0
  br i1 %72, label %73, label %75

73:                                               ; preds = %69
  %74 = load ptr, ptr %21, align 8, !tbaa !5
  store i64 -2, ptr %74, align 8, !tbaa !9
  br label %75

75:                                               ; preds = %73, %69
  br label %76

76:                                               ; preds = %75, %67
  %77 = load ptr, ptr %21, align 8, !tbaa !5
  %78 = load i64, ptr %77, align 8, !tbaa !9
  %79 = icmp ne i64 %78, 0
  br i1 %79, label %80, label %85

80:                                               ; preds = %76
  %81 = load ptr, ptr %21, align 8, !tbaa !5
  %82 = load i64, ptr %81, align 8, !tbaa !9
  %83 = sub nsw i64 0, %82
  store i64 %83, ptr %22, align 8, !tbaa !9
  %84 = call i32 @xerbla_(ptr noundef @.str, ptr noundef %22)
  store i32 0, ptr %11, align 4
  store i32 1, ptr %36, align 4
  br label %1015

85:                                               ; preds = %76
  %86 = load ptr, ptr %13, align 8, !tbaa !5
  %87 = load i64, ptr %86, align 8, !tbaa !9
  %88 = icmp eq i64 %87, 0
  br i1 %88, label %89, label %90

89:                                               ; preds = %85
  store i32 0, ptr %11, align 4
  store i32 1, ptr %36, align 4
  br label %1015

90:                                               ; preds = %85
  %91 = call double @dlamch_(ptr noundef @.str.1)
  store double %91, ptr %30, align 8, !tbaa !11
  %92 = call double @dlamch_(ptr noundef @.str.2)
  store double %92, ptr %34, align 8, !tbaa !11
  %93 = load double, ptr %34, align 8, !tbaa !11
  %94 = fdiv double 1.000000e+00, %93
  store double %94, ptr %35, align 8, !tbaa !11
  %95 = load ptr, ptr %12, align 8, !tbaa !5
  %96 = load i64, ptr %95, align 8, !tbaa !9
  %97 = icmp slt i64 %96, 0
  br i1 %97, label %98, label %269

98:                                               ; preds = %90
  %99 = load ptr, ptr %20, align 8, !tbaa !5
  %100 = load double, ptr %99, align 8, !tbaa !11
  %101 = fcmp ole double %100, 0.000000e+00
  br i1 %101, label %102, label %268

102:                                              ; preds = %98
  %103 = load ptr, ptr %14, align 8, !tbaa !5
  %104 = getelementptr inbounds double, ptr %103, i64 1
  %105 = load double, ptr %104, align 8, !tbaa !11
  %106 = fcmp oge double %105, 0.000000e+00
  br i1 %106, label %107, label %111

107:                                              ; preds = %102
  %108 = load ptr, ptr %14, align 8, !tbaa !5
  %109 = getelementptr inbounds double, ptr %108, i64 1
  %110 = load double, ptr %109, align 8, !tbaa !11
  br label %116

111:                                              ; preds = %102
  %112 = load ptr, ptr %14, align 8, !tbaa !5
  %113 = getelementptr inbounds double, ptr %112, i64 1
  %114 = load double, ptr %113, align 8, !tbaa !11
  %115 = fneg double %114
  br label %116

116:                                              ; preds = %111, %107
  %117 = phi double [ %110, %107 ], [ %115, %111 ]
  %118 = load ptr, ptr %20, align 8, !tbaa !5
  store double %117, ptr %118, align 8, !tbaa !11
  %119 = load ptr, ptr %13, align 8, !tbaa !5
  %120 = load i64, ptr %119, align 8, !tbaa !9
  %121 = icmp sgt i64 %120, 1
  br i1 %121, label %122, label %174

122:                                              ; preds = %116
  %123 = load ptr, ptr %20, align 8, !tbaa !5
  %124 = load double, ptr %123, align 8, !tbaa !11
  store double %124, ptr %23, align 8, !tbaa !11
  %125 = load ptr, ptr %14, align 8, !tbaa !5
  %126 = getelementptr inbounds double, ptr %125, i64 2
  %127 = load double, ptr %126, align 8, !tbaa !11
  %128 = fcmp oge double %127, 0.000000e+00
  br i1 %128, label %129, label %133

129:                                              ; preds = %122
  %130 = load ptr, ptr %14, align 8, !tbaa !5
  %131 = getelementptr inbounds double, ptr %130, i64 2
  %132 = load double, ptr %131, align 8, !tbaa !11
  br label %138

133:                                              ; preds = %122
  %134 = load ptr, ptr %14, align 8, !tbaa !5
  %135 = getelementptr inbounds double, ptr %134, i64 2
  %136 = load double, ptr %135, align 8, !tbaa !11
  %137 = fneg double %136
  br label %138

138:                                              ; preds = %133, %129
  %139 = phi double [ %132, %129 ], [ %137, %133 ]
  store double %139, ptr %24, align 8, !tbaa !11
  %140 = load double, ptr %23, align 8, !tbaa !11
  %141 = load double, ptr %24, align 8, !tbaa !11
  %142 = fcmp oge double %140, %141
  br i1 %142, label %143, label %145

143:                                              ; preds = %138
  %144 = load double, ptr %23, align 8, !tbaa !11
  br label %147

145:                                              ; preds = %138
  %146 = load double, ptr %24, align 8, !tbaa !11
  br label %147

147:                                              ; preds = %145, %143
  %148 = phi double [ %144, %143 ], [ %146, %145 ]
  store double %148, ptr %23, align 8, !tbaa !11
  %149 = load ptr, ptr %15, align 8, !tbaa !5
  %150 = getelementptr inbounds double, ptr %149, i64 1
  %151 = load double, ptr %150, align 8, !tbaa !11
  %152 = fcmp oge double %151, 0.000000e+00
  br i1 %152, label %153, label %157

153:                                              ; preds = %147
  %154 = load ptr, ptr %15, align 8, !tbaa !5
  %155 = getelementptr inbounds double, ptr %154, i64 1
  %156 = load double, ptr %155, align 8, !tbaa !11
  br label %162

157:                                              ; preds = %147
  %158 = load ptr, ptr %15, align 8, !tbaa !5
  %159 = getelementptr inbounds double, ptr %158, i64 1
  %160 = load double, ptr %159, align 8, !tbaa !11
  %161 = fneg double %160
  br label %162

162:                                              ; preds = %157, %153
  %163 = phi double [ %156, %153 ], [ %161, %157 ]
  store double %163, ptr %24, align 8, !tbaa !11
  %164 = load double, ptr %23, align 8, !tbaa !11
  %165 = load double, ptr %24, align 8, !tbaa !11
  %166 = fcmp oge double %164, %165
  br i1 %166, label %167, label %169

167:                                              ; preds = %162
  %168 = load double, ptr %23, align 8, !tbaa !11
  br label %171

169:                                              ; preds = %162
  %170 = load double, ptr %24, align 8, !tbaa !11
  br label %171

171:                                              ; preds = %169, %167
  %172 = phi double [ %168, %167 ], [ %170, %169 ]
  %173 = load ptr, ptr %20, align 8, !tbaa !5
  store double %172, ptr %173, align 8, !tbaa !11
  br label %174

174:                                              ; preds = %171, %116
  %175 = load ptr, ptr %13, align 8, !tbaa !5
  %176 = load i64, ptr %175, align 8, !tbaa !9
  store i64 %176, ptr %22, align 8, !tbaa !9
  store i64 3, ptr %28, align 8, !tbaa !9
  br label %177

177:                                              ; preds = %253, %174
  %178 = load i64, ptr %28, align 8, !tbaa !9
  %179 = load i64, ptr %22, align 8, !tbaa !9
  %180 = icmp sle i64 %178, %179
  br i1 %180, label %181, label %256

181:                                              ; preds = %177
  %182 = load ptr, ptr %20, align 8, !tbaa !5
  %183 = load double, ptr %182, align 8, !tbaa !11
  store double %183, ptr %26, align 8, !tbaa !11
  %184 = load ptr, ptr %14, align 8, !tbaa !5
  %185 = load i64, ptr %28, align 8, !tbaa !9
  %186 = getelementptr inbounds double, ptr %184, i64 %185
  %187 = load double, ptr %186, align 8, !tbaa !11
  store double %187, ptr %23, align 8, !tbaa !11
  %188 = load double, ptr %23, align 8, !tbaa !11
  %189 = fcmp oge double %188, 0.000000e+00
  br i1 %189, label %190, label %192

190:                                              ; preds = %181
  %191 = load double, ptr %23, align 8, !tbaa !11
  br label %195

192:                                              ; preds = %181
  %193 = load double, ptr %23, align 8, !tbaa !11
  %194 = fneg double %193
  br label %195

195:                                              ; preds = %192, %190
  %196 = phi double [ %191, %190 ], [ %194, %192 ]
  store double %196, ptr %27, align 8, !tbaa !11
  %197 = load double, ptr %26, align 8, !tbaa !11
  %198 = load double, ptr %27, align 8, !tbaa !11
  %199 = fcmp oge double %197, %198
  br i1 %199, label %200, label %202

200:                                              ; preds = %195
  %201 = load double, ptr %26, align 8, !tbaa !11
  br label %204

202:                                              ; preds = %195
  %203 = load double, ptr %27, align 8, !tbaa !11
  br label %204

204:                                              ; preds = %202, %200
  %205 = phi double [ %201, %200 ], [ %203, %202 ]
  store double %205, ptr %26, align 8, !tbaa !11
  %206 = load ptr, ptr %15, align 8, !tbaa !5
  %207 = load i64, ptr %28, align 8, !tbaa !9
  %208 = sub nsw i64 %207, 1
  %209 = getelementptr inbounds double, ptr %206, i64 %208
  %210 = load double, ptr %209, align 8, !tbaa !11
  store double %210, ptr %24, align 8, !tbaa !11
  %211 = load double, ptr %24, align 8, !tbaa !11
  %212 = fcmp oge double %211, 0.000000e+00
  br i1 %212, label %213, label %215

213:                                              ; preds = %204
  %214 = load double, ptr %24, align 8, !tbaa !11
  br label %218

215:                                              ; preds = %204
  %216 = load double, ptr %24, align 8, !tbaa !11
  %217 = fneg double %216
  br label %218

218:                                              ; preds = %215, %213
  %219 = phi double [ %214, %213 ], [ %217, %215 ]
  store double %219, ptr %27, align 8, !tbaa !11
  %220 = load double, ptr %26, align 8, !tbaa !11
  %221 = load double, ptr %27, align 8, !tbaa !11
  %222 = fcmp oge double %220, %221
  br i1 %222, label %223, label %225

223:                                              ; preds = %218
  %224 = load double, ptr %26, align 8, !tbaa !11
  br label %227

225:                                              ; preds = %218
  %226 = load double, ptr %27, align 8, !tbaa !11
  br label %227

227:                                              ; preds = %225, %223
  %228 = phi double [ %224, %223 ], [ %226, %225 ]
  store double %228, ptr %26, align 8, !tbaa !11
  %229 = load ptr, ptr %17, align 8, !tbaa !5
  %230 = load i64, ptr %28, align 8, !tbaa !9
  %231 = sub nsw i64 %230, 2
  %232 = getelementptr inbounds double, ptr %229, i64 %231
  %233 = load double, ptr %232, align 8, !tbaa !11
  store double %233, ptr %25, align 8, !tbaa !11
  %234 = load double, ptr %25, align 8, !tbaa !11
  %235 = fcmp oge double %234, 0.000000e+00
  br i1 %235, label %236, label %238

236:                                              ; preds = %227
  %237 = load double, ptr %25, align 8, !tbaa !11
  br label %241

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

241:                                              ; preds = %238, %236
  %242 = phi double [ %237, %236 ], [ %240, %238 ]
  store double %242, ptr %27, align 8, !tbaa !11
  %243 = load double, ptr %26, align 8, !tbaa !11
  %244 = load double, ptr %27, align 8, !tbaa !11
  %245 = fcmp oge double %243, %244
  br i1 %245, label %246, label %248

246:                                              ; preds = %241
  %247 = load double, ptr %26, align 8, !tbaa !11
  br label %250

248:                                              ; preds = %241
  %249 = load double, ptr %27, align 8, !tbaa !11
  br label %250

250:                                              ; preds = %248, %246
  %251 = phi double [ %247, %246 ], [ %249, %248 ]
  %252 = load ptr, ptr %20, align 8, !tbaa !5
  store double %251, ptr %252, align 8, !tbaa !11
  br label %253

253:                                              ; preds = %250
  %254 = load i64, ptr %28, align 8, !tbaa !9
  %255 = add nsw i64 %254, 1
  store i64 %255, ptr %28, align 8, !tbaa !9
  br label %177, !llvm.loop !13

256:                                              ; preds = %177
  %257 = load double, ptr %30, align 8, !tbaa !11
  %258 = load ptr, ptr %20, align 8, !tbaa !5
  %259 = load double, ptr %258, align 8, !tbaa !11
  %260 = fmul double %259, %257
  store double %260, ptr %258, align 8, !tbaa !11
  %261 = load ptr, ptr %20, align 8, !tbaa !5
  %262 = load double, ptr %261, align 8, !tbaa !11
  %263 = fcmp oeq double %262, 0.000000e+00
  br i1 %263, label %264, label %267

264:                                              ; preds = %256
  %265 = load double, ptr %30, align 8, !tbaa !11
  %266 = load ptr, ptr %20, align 8, !tbaa !5
  store double %265, ptr %266, align 8, !tbaa !11
  br label %267

267:                                              ; preds = %264, %256
  br label %268

268:                                              ; preds = %267, %98
  br label %269

269:                                              ; preds = %268, %90
  %270 = load ptr, ptr %12, align 8, !tbaa !5
  %271 = load i64, ptr %270, align 8, !tbaa !9
  %272 = icmp sge i64 %271, 0
  br i1 %272, label %273, label %276

273:                                              ; preds = %269
  %274 = load ptr, ptr %12, align 8, !tbaa !5
  %275 = load i64, ptr %274, align 8, !tbaa !9
  br label %280

276:                                              ; preds = %269
  %277 = load ptr, ptr %12, align 8, !tbaa !5
  %278 = load i64, ptr %277, align 8, !tbaa !9
  %279 = sub nsw i64 0, %278
  br label %280

280:                                              ; preds = %276, %273
  %281 = phi i64 [ %275, %273 ], [ %279, %276 ]
  %282 = icmp eq i64 %281, 1
  br i1 %282, label %283, label %651

283:                                              ; preds = %280
  %284 = load ptr, ptr %13, align 8, !tbaa !5
  %285 = load i64, ptr %284, align 8, !tbaa !9
  store i64 %285, ptr %22, align 8, !tbaa !9
  store i64 2, ptr %28, align 8, !tbaa !9
  br label %286

286:                                              ; preds = %344, %283
  %287 = load i64, ptr %28, align 8, !tbaa !9
  %288 = load i64, ptr %22, align 8, !tbaa !9
  %289 = icmp sle i64 %287, %288
  br i1 %289, label %290, label %347

290:                                              ; preds = %286
  %291 = load ptr, ptr %18, align 8, !tbaa !5
  %292 = load i64, ptr %28, align 8, !tbaa !9
  %293 = sub nsw i64 %292, 1
  %294 = getelementptr inbounds i64, ptr %291, i64 %293
  %295 = load i64, ptr %294, align 8, !tbaa !9
  %296 = icmp eq i64 %295, 0
  br i1 %296, label %297, label %314

297:                                              ; preds = %290
  %298 = load ptr, ptr %16, align 8, !tbaa !5
  %299 = load i64, ptr %28, align 8, !tbaa !9
  %300 = sub nsw i64 %299, 1
  %301 = getelementptr inbounds double, ptr %298, i64 %300
  %302 = load double, ptr %301, align 8, !tbaa !11
  %303 = load ptr, ptr %19, align 8, !tbaa !5
  %304 = load i64, ptr %28, align 8, !tbaa !9
  %305 = sub nsw i64 %304, 1
  %306 = getelementptr inbounds double, ptr %303, i64 %305
  %307 = load double, ptr %306, align 8, !tbaa !11
  %308 = load ptr, ptr %19, align 8, !tbaa !5
  %309 = load i64, ptr %28, align 8, !tbaa !9
  %310 = getelementptr inbounds double, ptr %308, i64 %309
  %311 = load double, ptr %310, align 8, !tbaa !11
  %312 = fneg double %302
  %313 = call double @llvm.fmuladd.f64(double %312, double %307, double %311)
  store double %313, ptr %310, align 8, !tbaa !11
  br label %343

314:                                              ; preds = %290
  %315 = load ptr, ptr %19, align 8, !tbaa !5
  %316 = load i64, ptr %28, align 8, !tbaa !9
  %317 = sub nsw i64 %316, 1
  %318 = getelementptr inbounds double, ptr %315, i64 %317
  %319 = load double, ptr %318, align 8, !tbaa !11
  store double %319, ptr %31, align 8, !tbaa !11
  %320 = load ptr, ptr %19, align 8, !tbaa !5
  %321 = load i64, ptr %28, align 8, !tbaa !9
  %322 = getelementptr inbounds double, ptr %320, i64 %321
  %323 = load double, ptr %322, align 8, !tbaa !11
  %324 = load ptr, ptr %19, align 8, !tbaa !5
  %325 = load i64, ptr %28, align 8, !tbaa !9
  %326 = sub nsw i64 %325, 1
  %327 = getelementptr inbounds double, ptr %324, i64 %326
  store double %323, ptr %327, align 8, !tbaa !11
  %328 = load double, ptr %31, align 8, !tbaa !11
  %329 = load ptr, ptr %16, align 8, !tbaa !5
  %330 = load i64, ptr %28, align 8, !tbaa !9
  %331 = sub nsw i64 %330, 1
  %332 = getelementptr inbounds double, ptr %329, i64 %331
  %333 = load double, ptr %332, align 8, !tbaa !11
  %334 = load ptr, ptr %19, align 8, !tbaa !5
  %335 = load i64, ptr %28, align 8, !tbaa !9
  %336 = getelementptr inbounds double, ptr %334, i64 %335
  %337 = load double, ptr %336, align 8, !tbaa !11
  %338 = fneg double %333
  %339 = call double @llvm.fmuladd.f64(double %338, double %337, double %328)
  %340 = load ptr, ptr %19, align 8, !tbaa !5
  %341 = load i64, ptr %28, align 8, !tbaa !9
  %342 = getelementptr inbounds double, ptr %340, i64 %341
  store double %339, ptr %342, align 8, !tbaa !11
  br label %343

343:                                              ; preds = %314, %297
  br label %344

344:                                              ; preds = %343
  %345 = load i64, ptr %28, align 8, !tbaa !9
  %346 = add nsw i64 %345, 1
  store i64 %346, ptr %28, align 8, !tbaa !9
  br label %286, !llvm.loop !15

347:                                              ; preds = %286
  %348 = load ptr, ptr %12, align 8, !tbaa !5
  %349 = load i64, ptr %348, align 8, !tbaa !9
  %350 = icmp eq i64 %349, 1
  br i1 %350, label %351, label %496

351:                                              ; preds = %347
  %352 = load ptr, ptr %13, align 8, !tbaa !5
  %353 = load i64, ptr %352, align 8, !tbaa !9
  store i64 %353, ptr %28, align 8, !tbaa !9
  br label %354

354:                                              ; preds = %492, %351
  %355 = load i64, ptr %28, align 8, !tbaa !9
  %356 = icmp sge i64 %355, 1
  br i1 %356, label %357, label %495

357:                                              ; preds = %354
  %358 = load i64, ptr %28, align 8, !tbaa !9
  %359 = load ptr, ptr %13, align 8, !tbaa !5
  %360 = load i64, ptr %359, align 8, !tbaa !9
  %361 = sub nsw i64 %360, 2
  %362 = icmp sle i64 %358, %361
  br i1 %362, label %363, label %390

363:                                              ; preds = %357
  %364 = load ptr, ptr %19, align 8, !tbaa !5
  %365 = load i64, ptr %28, align 8, !tbaa !9
  %366 = getelementptr inbounds double, ptr %364, i64 %365
  %367 = load double, ptr %366, align 8, !tbaa !11
  %368 = load ptr, ptr %15, align 8, !tbaa !5
  %369 = load i64, ptr %28, align 8, !tbaa !9
  %370 = getelementptr inbounds double, ptr %368, i64 %369
  %371 = load double, ptr %370, align 8, !tbaa !11
  %372 = load ptr, ptr %19, align 8, !tbaa !5
  %373 = load i64, ptr %28, align 8, !tbaa !9
  %374 = add nsw i64 %373, 1
  %375 = getelementptr inbounds double, ptr %372, i64 %374
  %376 = load double, ptr %375, align 8, !tbaa !11
  %377 = fneg double %371
  %378 = call double @llvm.fmuladd.f64(double %377, double %376, double %367)
  %379 = load ptr, ptr %17, align 8, !tbaa !5
  %380 = load i64, ptr %28, align 8, !tbaa !9
  %381 = getelementptr inbounds double, ptr %379, i64 %380
  %382 = load double, ptr %381, align 8, !tbaa !11
  %383 = load ptr, ptr %19, align 8, !tbaa !5
  %384 = load i64, ptr %28, align 8, !tbaa !9
  %385 = add nsw i64 %384, 2
  %386 = getelementptr inbounds double, ptr %383, i64 %385
  %387 = load double, ptr %386, align 8, !tbaa !11
  %388 = fneg double %382
  %389 = call double @llvm.fmuladd.f64(double %388, double %387, double %378)
  store double %389, ptr %31, align 8, !tbaa !11
  br label %418

390:                                              ; preds = %357
  %391 = load i64, ptr %28, align 8, !tbaa !9
  %392 = load ptr, ptr %13, align 8, !tbaa !5
  %393 = load i64, ptr %392, align 8, !tbaa !9
  %394 = sub nsw i64 %393, 1
  %395 = icmp eq i64 %391, %394
  br i1 %395, label %396, label %412

396:                                              ; preds = %390
  %397 = load ptr, ptr %19, align 8, !tbaa !5
  %398 = load i64, ptr %28, align 8, !tbaa !9
  %399 = getelementptr inbounds double, ptr %397, i64 %398
  %400 = load double, ptr %399, align 8, !tbaa !11
  %401 = load ptr, ptr %15, align 8, !tbaa !5
  %402 = load i64, ptr %28, align 8, !tbaa !9
  %403 = getelementptr inbounds double, ptr %401, i64 %402
  %404 = load double, ptr %403, align 8, !tbaa !11
  %405 = load ptr, ptr %19, align 8, !tbaa !5
  %406 = load i64, ptr %28, align 8, !tbaa !9
  %407 = add nsw i64 %406, 1
  %408 = getelementptr inbounds double, ptr %405, i64 %407
  %409 = load double, ptr %408, align 8, !tbaa !11
  %410 = fneg double %404
  %411 = call double @llvm.fmuladd.f64(double %410, double %409, double %400)
  store double %411, ptr %31, align 8, !tbaa !11
  br label %417

412:                                              ; preds = %390
  %413 = load ptr, ptr %19, align 8, !tbaa !5
  %414 = load i64, ptr %28, align 8, !tbaa !9
  %415 = getelementptr inbounds double, ptr %413, i64 %414
  %416 = load double, ptr %415, align 8, !tbaa !11
  store double %416, ptr %31, align 8, !tbaa !11
  br label %417

417:                                              ; preds = %412, %396
  br label %418

418:                                              ; preds = %417, %363
  %419 = load ptr, ptr %14, align 8, !tbaa !5
  %420 = load i64, ptr %28, align 8, !tbaa !9
  %421 = getelementptr inbounds double, ptr %419, i64 %420
  %422 = load double, ptr %421, align 8, !tbaa !11
  store double %422, ptr %29, align 8, !tbaa !11
  %423 = load double, ptr %29, align 8, !tbaa !11
  %424 = fcmp oge double %423, 0.000000e+00
  br i1 %424, label %425, label %427

425:                                              ; preds = %418
  %426 = load double, ptr %29, align 8, !tbaa !11
  br label %430

427:                                              ; preds = %418
  %428 = load double, ptr %29, align 8, !tbaa !11
  %429 = fneg double %428
  br label %430

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

434:                                              ; preds = %430
  %435 = load double, ptr %33, align 8, !tbaa !11
  %436 = load double, ptr %34, align 8, !tbaa !11
  %437 = fcmp olt double %435, %436
  br i1 %437, label %438, label %466

438:                                              ; preds = %434
  %439 = load double, ptr %33, align 8, !tbaa !11
  %440 = fcmp oeq double %439, 0.000000e+00
  br i1 %440, label %455, label %441

441:                                              ; preds = %438
  %442 = load double, ptr %31, align 8, !tbaa !11
  %443 = fcmp oge double %442, 0.000000e+00
  br i1 %443, label %444, label %446

444:                                              ; preds = %441
  %445 = load double, ptr %31, align 8, !tbaa !11
  br label %449

446:                                              ; preds = %441
  %447 = load double, ptr %31, align 8, !tbaa !11
  %448 = fneg double %447
  br label %449

449:                                              ; preds = %446, %444
  %450 = phi double [ %445, %444 ], [ %448, %446 ]
  %451 = load double, ptr %34, align 8, !tbaa !11
  %452 = fmul double %450, %451
  %453 = load double, ptr %33, align 8, !tbaa !11
  %454 = fcmp ogt double %452, %453
  br i1 %454, label %455, label %458

455:                                              ; preds = %449, %438
  %456 = load i64, ptr %28, align 8, !tbaa !9
  %457 = load ptr, ptr %21, align 8, !tbaa !5
  store i64 %456, ptr %457, align 8, !tbaa !9
  store i32 0, ptr %11, align 4
  store i32 1, ptr %36, align 4
  br label %1015

458:                                              ; preds = %449
  %459 = load double, ptr %35, align 8, !tbaa !11
  %460 = load double, ptr %31, align 8, !tbaa !11
  %461 = fmul double %460, %459
  store double %461, ptr %31, align 8, !tbaa !11
  %462 = load double, ptr %35, align 8, !tbaa !11
  %463 = load double, ptr %29, align 8, !tbaa !11
  %464 = fmul double %463, %462
  store double %464, ptr %29, align 8, !tbaa !11
  br label %465

465:                                              ; preds = %458
  br label %484

466:                                              ; preds = %434
  %467 = load double, ptr %31, align 8, !tbaa !11
  %468 = fcmp oge double %467, 0.000000e+00
  br i1 %468, label %469, label %471

469:                                              ; preds = %466
  %470 = load double, ptr %31, align 8, !tbaa !11
  br label %474

471:                                              ; preds = %466
  %472 = load double, ptr %31, align 8, !tbaa !11
  %473 = fneg double %472
  br label %474

474:                                              ; preds = %471, %469
  %475 = phi double [ %470, %469 ], [ %473, %471 ]
  %476 = load double, ptr %33, align 8, !tbaa !11
  %477 = load double, ptr %35, align 8, !tbaa !11
  %478 = fmul double %476, %477
  %479 = fcmp ogt double %475, %478
  br i1 %479, label %480, label %483

480:                                              ; preds = %474
  %481 = load i64, ptr %28, align 8, !tbaa !9
  %482 = load ptr, ptr %21, align 8, !tbaa !5
  store i64 %481, ptr %482, align 8, !tbaa !9
  store i32 0, ptr %11, align 4
  store i32 1, ptr %36, align 4
  br label %1015

483:                                              ; preds = %474
  br label %484

484:                                              ; preds = %483, %465
  br label %485

485:                                              ; preds = %484, %430
  %486 = load double, ptr %31, align 8, !tbaa !11
  %487 = load double, ptr %29, align 8, !tbaa !11
  %488 = fdiv double %486, %487
  %489 = load ptr, ptr %19, align 8, !tbaa !5
  %490 = load i64, ptr %28, align 8, !tbaa !9
  %491 = getelementptr inbounds double, ptr %489, i64 %490
  store double %488, ptr %491, align 8, !tbaa !11
  br label %492

492:                                              ; preds = %485
  %493 = load i64, ptr %28, align 8, !tbaa !9
  %494 = add nsw i64 %493, -1
  store i64 %494, ptr %28, align 8, !tbaa !9
  br label %354, !llvm.loop !16

495:                                              ; preds = %354
  br label %650

496:                                              ; preds = %347
  %497 = load ptr, ptr %13, align 8, !tbaa !5
  %498 = load i64, ptr %497, align 8, !tbaa !9
  store i64 %498, ptr %28, align 8, !tbaa !9
  br label %499

499:                                              ; preds = %646, %496
  %500 = load i64, ptr %28, align 8, !tbaa !9
  %501 = icmp sge i64 %500, 1
  br i1 %501, label %502, label %649

502:                                              ; preds = %499
  %503 = load i64, ptr %28, align 8, !tbaa !9
  %504 = load ptr, ptr %13, align 8, !tbaa !5
  %505 = load i64, ptr %504, align 8, !tbaa !9
  %506 = sub nsw i64 %505, 2
  %507 = icmp sle i64 %503, %506
  br i1 %507, label %508, label %535

508:                                              ; preds = %502
  %509 = load ptr, ptr %19, align 8, !tbaa !5
  %510 = load i64, ptr %28, align 8, !tbaa !9
  %511 = getelementptr inbounds double, ptr %509, i64 %510
  %512 = load double, ptr %511, align 8, !tbaa !11
  %513 = load ptr, ptr %15, align 8, !tbaa !5
  %514 = load i64, ptr %28, align 8, !tbaa !9
  %515 = getelementptr inbounds double, ptr %513, i64 %514
  %516 = load double, ptr %515, align 8, !tbaa !11
  %517 = load ptr, ptr %19, align 8, !tbaa !5
  %518 = load i64, ptr %28, align 8, !tbaa !9
  %519 = add nsw i64 %518, 1
  %520 = getelementptr inbounds double, ptr %517, i64 %519
  %521 = load double, ptr %520, align 8, !tbaa !11
  %522 = fneg double %516
  %523 = call double @llvm.fmuladd.f64(double %522, double %521, double %512)
  %524 = load ptr, ptr %17, align 8, !tbaa !5
  %525 = load i64, ptr %28, align 8, !tbaa !9
  %526 = getelementptr inbounds double, ptr %524, i64 %525
  %527 = load double, ptr %526, align 8, !tbaa !11
  %528 = load ptr, ptr %19, align 8, !tbaa !5
  %529 = load i64, ptr %28, align 8, !tbaa !9
  %530 = add nsw i64 %529, 2
  %531 = getelementptr inbounds double, ptr %528, i64 %530
  %532 = load double, ptr %531, align 8, !tbaa !11
  %533 = fneg double %527
  %534 = call double @llvm.fmuladd.f64(double %533, double %532, double %523)
  store double %534, ptr %31, align 8, !tbaa !11
  br label %563

535:                                              ; preds = %502
  %536 = load i64, ptr %28, align 8, !tbaa !9
  %537 = load ptr, ptr %13, align 8, !tbaa !5
  %538 = load i64, ptr %537, align 8, !tbaa !9
  %539 = sub nsw i64 %538, 1
  %540 = icmp eq i64 %536, %539
  br i1 %540, label %541, label %557

541:                                              ; preds = %535
  %542 = load ptr, ptr %19, align 8, !tbaa !5
  %543 = load i64, ptr %28, align 8, !tbaa !9
  %544 = getelementptr inbounds double, ptr %542, i64 %543
  %545 = load double, ptr %544, align 8, !tbaa !11
  %546 = load ptr, ptr %15, align 8, !tbaa !5
  %547 = load i64, ptr %28, align 8, !tbaa !9
  %548 = getelementptr inbounds double, ptr %546, i64 %547
  %549 = load double, ptr %548, align 8, !tbaa !11
  %550 = load ptr, ptr %19, align 8, !tbaa !5
  %551 = load i64, ptr %28, align 8, !tbaa !9
  %552 = add nsw i64 %551, 1
  %553 = getelementptr inbounds double, ptr %550, i64 %552
  %554 = load double, ptr %553, align 8, !tbaa !11
  %555 = fneg double %549
  %556 = call double @llvm.fmuladd.f64(double %555, double %554, double %545)
  store double %556, ptr %31, align 8, !tbaa !11
  br label %562

557:                                              ; preds = %535
  %558 = load ptr, ptr %19, align 8, !tbaa !5
  %559 = load i64, ptr %28, align 8, !tbaa !9
  %560 = getelementptr inbounds double, ptr %558, i64 %559
  %561 = load double, ptr %560, align 8, !tbaa !11
  store double %561, ptr %31, align 8, !tbaa !11
  br label %562

562:                                              ; preds = %557, %541
  br label %563

563:                                              ; preds = %562, %508
  %564 = load ptr, ptr %14, align 8, !tbaa !5
  %565 = load i64, ptr %28, align 8, !tbaa !9
  %566 = getelementptr inbounds double, ptr %564, i64 %565
  %567 = load double, ptr %566, align 8, !tbaa !11
  store double %567, ptr %29, align 8, !tbaa !11
  %568 = load ptr, ptr %20, align 8, !tbaa !5
  %569 = call double @d_sign(ptr noundef %568, ptr noundef %29)
  store double %569, ptr %32, align 8, !tbaa !11
  br label %570

570:                                              ; preds = %631, %603, %563
  %571 = load double, ptr %29, align 8, !tbaa !11
  %572 = fcmp oge double %571, 0.000000e+00
  br i1 %572, label %573, label %575

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

575:                                              ; preds = %570
  %576 = load double, ptr %29, align 8, !tbaa !11
  %577 = fneg double %576
  br label %578

578:                                              ; preds = %575, %573
  %579 = phi double [ %574, %573 ], [ %577, %575 ]
  store double %579, ptr %33, align 8, !tbaa !11
  %580 = load double, ptr %33, align 8, !tbaa !11
  %581 = fcmp olt double %580, 1.000000e+00
  br i1 %581, label %582, label %639

582:                                              ; preds = %578
  %583 = load double, ptr %33, align 8, !tbaa !11
  %584 = load double, ptr %34, align 8, !tbaa !11
  %585 = fcmp olt double %583, %584
  br i1 %585, label %586, label %617

586:                                              ; preds = %582
  %587 = load double, ptr %33, align 8, !tbaa !11
  %588 = fcmp oeq double %587, 0.000000e+00
  br i1 %588, label %603, label %589

589:                                              ; preds = %586
  %590 = load double, ptr %31, align 8, !tbaa !11
  %591 = fcmp oge double %590, 0.000000e+00
  br i1 %591, label %592, label %594

592:                                              ; preds = %589
  %593 = load double, ptr %31, align 8, !tbaa !11
  br label %597

594:                                              ; preds = %589
  %595 = load double, ptr %31, align 8, !tbaa !11
  %596 = fneg double %595
  br label %597

597:                                              ; preds = %594, %592
  %598 = phi double [ %593, %592 ], [ %596, %594 ]
  %599 = load double, ptr %34, align 8, !tbaa !11
  %600 = fmul double %598, %599
  %601 = load double, ptr %33, align 8, !tbaa !11
  %602 = fcmp ogt double %600, %601
  br i1 %602, label %603, label %609

603:                                              ; preds = %597, %586
  %604 = load double, ptr %32, align 8, !tbaa !11
  %605 = load double, ptr %29, align 8, !tbaa !11
  %606 = fadd double %605, %604
  store double %606, ptr %29, align 8, !tbaa !11
  %607 = load double, ptr %32, align 8, !tbaa !11
  %608 = fmul double %607, 2.000000e+00
  store double %608, ptr %32, align 8, !tbaa !11
  br label %570

609:                                              ; preds = %597
  %610 = load double, ptr %35, align 8, !tbaa !11
  %611 = load double, ptr %31, align 8, !tbaa !11
  %612 = fmul double %611, %610
  store double %612, ptr %31, align 8, !tbaa !11
  %613 = load double, ptr %35, align 8, !tbaa !11
  %614 = load double, ptr %29, align 8, !tbaa !11
  %615 = fmul double %614, %613
  store double %615, ptr %29, align 8, !tbaa !11
  br label %616

616:                                              ; preds = %609
  br label %638

617:                                              ; preds = %582
  %618 = load double, ptr %31, align 8, !tbaa !11
  %619 = fcmp oge double %618, 0.000000e+00
  br i1 %619, label %620, label %622

620:                                              ; preds = %617
  %621 = load double, ptr %31, align 8, !tbaa !11
  br label %625

622:                                              ; preds = %617
  %623 = load double, ptr %31, align 8, !tbaa !11
  %624 = fneg double %623
  br label %625

625:                                              ; preds = %622, %620
  %626 = phi double [ %621, %620 ], [ %624, %622 ]
  %627 = load double, ptr %33, align 8, !tbaa !11
  %628 = load double, ptr %35, align 8, !tbaa !11
  %629 = fmul double %627, %628
  %630 = fcmp ogt double %626, %629
  br i1 %630, label %631, label %637

631:                                              ; preds = %625
  %632 = load double, ptr %32, align 8, !tbaa !11
  %633 = load double, ptr %29, align 8, !tbaa !11
  %634 = fadd double %633, %632
  store double %634, ptr %29, align 8, !tbaa !11
  %635 = load double, ptr %32, align 8, !tbaa !11
  %636 = fmul double %635, 2.000000e+00
  store double %636, ptr %32, align 8, !tbaa !11
  br label %570

637:                                              ; preds = %625
  br label %638

638:                                              ; preds = %637, %616
  br label %639

639:                                              ; preds = %638, %578
  %640 = load double, ptr %31, align 8, !tbaa !11
  %641 = load double, ptr %29, align 8, !tbaa !11
  %642 = fdiv double %640, %641
  %643 = load ptr, ptr %19, align 8, !tbaa !5
  %644 = load i64, ptr %28, align 8, !tbaa !9
  %645 = getelementptr inbounds double, ptr %643, i64 %644
  store double %642, ptr %645, align 8, !tbaa !11
  br label %646

646:                                              ; preds = %639
  %647 = load i64, ptr %28, align 8, !tbaa !9
  %648 = add nsw i64 %647, -1
  store i64 %648, ptr %28, align 8, !tbaa !9
  br label %499, !llvm.loop !17

649:                                              ; preds = %499
  br label %650

650:                                              ; preds = %649, %495
  br label %1014

651:                                              ; preds = %280
  %652 = load ptr, ptr %12, align 8, !tbaa !5
  %653 = load i64, ptr %652, align 8, !tbaa !9
  %654 = icmp eq i64 %653, 2
  br i1 %654, label %655, label %798

655:                                              ; preds = %651
  %656 = load ptr, ptr %13, align 8, !tbaa !5
  %657 = load i64, ptr %656, align 8, !tbaa !9
  store i64 %657, ptr %22, align 8, !tbaa !9
  store i64 1, ptr %28, align 8, !tbaa !9
  br label %658

658:                                              ; preds = %794, %655
  %659 = load i64, ptr %28, align 8, !tbaa !9
  %660 = load i64, ptr %22, align 8, !tbaa !9
  %661 = icmp sle i64 %659, %660
  br i1 %661, label %662, label %797

662:                                              ; preds = %658
  %663 = load i64, ptr %28, align 8, !tbaa !9
  %664 = icmp sge i64 %663, 3
  br i1 %664, label %665, label %694

665:                                              ; preds = %662
  %666 = load ptr, ptr %19, align 8, !tbaa !5
  %667 = load i64, ptr %28, align 8, !tbaa !9
  %668 = getelementptr inbounds double, ptr %666, i64 %667
  %669 = load double, ptr %668, align 8, !tbaa !11
  %670 = load ptr, ptr %15, align 8, !tbaa !5
  %671 = load i64, ptr %28, align 8, !tbaa !9
  %672 = sub nsw i64 %671, 1
  %673 = getelementptr inbounds double, ptr %670, i64 %672
  %674 = load double, ptr %673, align 8, !tbaa !11
  %675 = load ptr, ptr %19, align 8, !tbaa !5
  %676 = load i64, ptr %28, align 8, !tbaa !9
  %677 = sub nsw i64 %676, 1
  %678 = getelementptr inbounds double, ptr %675, i64 %677
  %679 = load double, ptr %678, align 8, !tbaa !11
  %680 = fneg double %674
  %681 = call double @llvm.fmuladd.f64(double %680, double %679, double %669)
  %682 = load ptr, ptr %17, align 8, !tbaa !5
  %683 = load i64, ptr %28, align 8, !tbaa !9
  %684 = sub nsw i64 %683, 2
  %685 = getelementptr inbounds double, ptr %682, i64 %684
  %686 = load double, ptr %685, align 8, !tbaa !11
  %687 = load ptr, ptr %19, align 8, !tbaa !5
  %688 = load i64, ptr %28, align 8, !tbaa !9
  %689 = sub nsw i64 %688, 2
  %690 = getelementptr inbounds double, ptr %687, i64 %689
  %691 = load double, ptr %690, align 8, !tbaa !11
  %692 = fneg double %686
  %693 = call double @llvm.fmuladd.f64(double %692, double %691, double %681)
  store double %693, ptr %31, align 8, !tbaa !11
  br label %720

694:                                              ; preds = %662
  %695 = load i64, ptr %28, align 8, !tbaa !9
  %696 = icmp eq i64 %695, 2
  br i1 %696, label %697, label %714

697:                                              ; preds = %694
  %698 = load ptr, ptr %19, align 8, !tbaa !5
  %699 = load i64, ptr %28, align 8, !tbaa !9
  %700 = getelementptr inbounds double, ptr %698, i64 %699
  %701 = load double, ptr %700, align 8, !tbaa !11
  %702 = load ptr, ptr %15, align 8, !tbaa !5
  %703 = load i64, ptr %28, align 8, !tbaa !9
  %704 = sub nsw i64 %703, 1
  %705 = getelementptr inbounds double, ptr %702, i64 %704
  %706 = load double, ptr %705, align 8, !tbaa !11
  %707 = load ptr, ptr %19, align 8, !tbaa !5
  %708 = load i64, ptr %28, align 8, !tbaa !9
  %709 = sub nsw i64 %708, 1
  %710 = getelementptr inbounds double, ptr %707, i64 %709
  %711 = load double, ptr %710, align 8, !tbaa !11
  %712 = fneg double %706
  %713 = call double @llvm.fmuladd.f64(double %712, double %711, double %701)
  store double %713, ptr %31, align 8, !tbaa !11
  br label %719

714:                                              ; preds = %694
  %715 = load ptr, ptr %19, align 8, !tbaa !5
  %716 = load i64, ptr %28, align 8, !tbaa !9
  %717 = getelementptr inbounds double, ptr %715, i64 %716
  %718 = load double, ptr %717, align 8, !tbaa !11
  store double %718, ptr %31, align 8, !tbaa !11
  br label %719

719:                                              ; preds = %714, %697
  br label %720

720:                                              ; preds = %719, %665
  %721 = load ptr, ptr %14, align 8, !tbaa !5
  %722 = load i64, ptr %28, align 8, !tbaa !9
  %723 = getelementptr inbounds double, ptr %721, i64 %722
  %724 = load double, ptr %723, align 8, !tbaa !11
  store double %724, ptr %29, align 8, !tbaa !11
  %725 = load double, ptr %29, align 8, !tbaa !11
  %726 = fcmp oge double %725, 0.000000e+00
  br i1 %726, label %727, label %729

727:                                              ; preds = %720
  %728 = load double, ptr %29, align 8, !tbaa !11
  br label %732

729:                                              ; preds = %720
  %730 = load double, ptr %29, align 8, !tbaa !11
  %731 = fneg double %730
  br label %732

732:                                              ; preds = %729, %727
  %733 = phi double [ %728, %727 ], [ %731, %729 ]
  store double %733, ptr %33, align 8, !tbaa !11
  %734 = load double, ptr %33, align 8, !tbaa !11
  %735 = fcmp olt double %734, 1.000000e+00
  br i1 %735, label %736, label %787

736:                                              ; preds = %732
  %737 = load double, ptr %33, align 8, !tbaa !11
  %738 = load double, ptr %34, align 8, !tbaa !11
  %739 = fcmp olt double %737, %738
  br i1 %739, label %740, label %768

740:                                              ; preds = %736
  %741 = load double, ptr %33, align 8, !tbaa !11
  %742 = fcmp oeq double %741, 0.000000e+00
  br i1 %742, label %757, label %743

743:                                              ; preds = %740
  %744 = load double, ptr %31, align 8, !tbaa !11
  %745 = fcmp oge double %744, 0.000000e+00
  br i1 %745, label %746, label %748

746:                                              ; preds = %743
  %747 = load double, ptr %31, align 8, !tbaa !11
  br label %751

748:                                              ; preds = %743
  %749 = load double, ptr %31, align 8, !tbaa !11
  %750 = fneg double %749
  br label %751

751:                                              ; preds = %748, %746
  %752 = phi double [ %747, %746 ], [ %750, %748 ]
  %753 = load double, ptr %34, align 8, !tbaa !11
  %754 = fmul double %752, %753
  %755 = load double, ptr %33, align 8, !tbaa !11
  %756 = fcmp ogt double %754, %755
  br i1 %756, label %757, label %760

757:                                              ; preds = %751, %740
  %758 = load i64, ptr %28, align 8, !tbaa !9
  %759 = load ptr, ptr %21, align 8, !tbaa !5
  store i64 %758, ptr %759, align 8, !tbaa !9
  store i32 0, ptr %11, align 4
  store i32 1, ptr %36, align 4
  br label %1015

760:                                              ; preds = %751
  %761 = load double, ptr %35, align 8, !tbaa !11
  %762 = load double, ptr %31, align 8, !tbaa !11
  %763 = fmul double %762, %761
  store double %763, ptr %31, align 8, !tbaa !11
  %764 = load double, ptr %35, align 8, !tbaa !11
  %765 = load double, ptr %29, align 8, !tbaa !11
  %766 = fmul double %765, %764
  store double %766, ptr %29, align 8, !tbaa !11
  br label %767

767:                                              ; preds = %760
  br label %786

768:                                              ; preds = %736
  %769 = load double, ptr %31, align 8, !tbaa !11
  %770 = fcmp oge double %769, 0.000000e+00
  br i1 %770, label %771, label %773

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

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

776:                                              ; preds = %773, %771
  %777 = phi double [ %772, %771 ], [ %775, %773 ]
  %778 = load double, ptr %33, align 8, !tbaa !11
  %779 = load double, ptr %35, align 8, !tbaa !11
  %780 = fmul double %778, %779
  %781 = fcmp ogt double %777, %780
  br i1 %781, label %782, label %785

782:                                              ; preds = %776
  %783 = load i64, ptr %28, align 8, !tbaa !9
  %784 = load ptr, ptr %21, align 8, !tbaa !5
  store i64 %783, ptr %784, align 8, !tbaa !9
  store i32 0, ptr %11, align 4
  store i32 1, ptr %36, align 4
  br label %1015

785:                                              ; preds = %776
  br label %786

786:                                              ; preds = %785, %767
  br label %787

787:                                              ; preds = %786, %732
  %788 = load double, ptr %31, align 8, !tbaa !11
  %789 = load double, ptr %29, align 8, !tbaa !11
  %790 = fdiv double %788, %789
  %791 = load ptr, ptr %19, align 8, !tbaa !5
  %792 = load i64, ptr %28, align 8, !tbaa !9
  %793 = getelementptr inbounds double, ptr %791, i64 %792
  store double %790, ptr %793, align 8, !tbaa !11
  br label %794

794:                                              ; preds = %787
  %795 = load i64, ptr %28, align 8, !tbaa !9
  %796 = add nsw i64 %795, 1
  store i64 %796, ptr %28, align 8, !tbaa !9
  br label %658, !llvm.loop !18

797:                                              ; preds = %658
  br label %950

798:                                              ; preds = %651
  %799 = load ptr, ptr %13, align 8, !tbaa !5
  %800 = load i64, ptr %799, align 8, !tbaa !9
  store i64 %800, ptr %22, align 8, !tbaa !9
  store i64 1, ptr %28, align 8, !tbaa !9
  br label %801

801:                                              ; preds = %946, %798
  %802 = load i64, ptr %28, align 8, !tbaa !9
  %803 = load i64, ptr %22, align 8, !tbaa !9
  %804 = icmp sle i64 %802, %803
  br i1 %804, label %805, label %949

805:                                              ; preds = %801
  %806 = load i64, ptr %28, align 8, !tbaa !9
  %807 = icmp sge i64 %806, 3
  br i1 %807, label %808, label %837

808:                                              ; preds = %805
  %809 = load ptr, ptr %19, align 8, !tbaa !5
  %810 = load i64, ptr %28, align 8, !tbaa !9
  %811 = getelementptr inbounds double, ptr %809, i64 %810
  %812 = load double, ptr %811, align 8, !tbaa !11
  %813 = load ptr, ptr %15, align 8, !tbaa !5
  %814 = load i64, ptr %28, align 8, !tbaa !9
  %815 = sub nsw i64 %814, 1
  %816 = getelementptr inbounds double, ptr %813, i64 %815
  %817 = load double, ptr %816, align 8, !tbaa !11
  %818 = load ptr, ptr %19, align 8, !tbaa !5
  %819 = load i64, ptr %28, align 8, !tbaa !9
  %820 = sub nsw i64 %819, 1
  %821 = getelementptr inbounds double, ptr %818, i64 %820
  %822 = load double, ptr %821, align 8, !tbaa !11
  %823 = fneg double %817
  %824 = call double @llvm.fmuladd.f64(double %823, double %822, double %812)
  %825 = load ptr, ptr %17, align 8, !tbaa !5
  %826 = load i64, ptr %28, align 8, !tbaa !9
  %827 = sub nsw i64 %826, 2
  %828 = getelementptr inbounds double, ptr %825, i64 %827
  %829 = load double, ptr %828, align 8, !tbaa !11
  %830 = load ptr, ptr %19, align 8, !tbaa !5
  %831 = load i64, ptr %28, align 8, !tbaa !9
  %832 = sub nsw i64 %831, 2
  %833 = getelementptr inbounds double, ptr %830, i64 %832
  %834 = load double, ptr %833, align 8, !tbaa !11
  %835 = fneg double %829
  %836 = call double @llvm.fmuladd.f64(double %835, double %834, double %824)
  store double %836, ptr %31, align 8, !tbaa !11
  br label %863

837:                                              ; preds = %805
  %838 = load i64, ptr %28, align 8, !tbaa !9
  %839 = icmp eq i64 %838, 2
  br i1 %839, label %840, label %857

840:                                              ; preds = %837
  %841 = load ptr, ptr %19, align 8, !tbaa !5
  %842 = load i64, ptr %28, align 8, !tbaa !9
  %843 = getelementptr inbounds double, ptr %841, i64 %842
  %844 = load double, ptr %843, align 8, !tbaa !11
  %845 = load ptr, ptr %15, align 8, !tbaa !5
  %846 = load i64, ptr %28, align 8, !tbaa !9
  %847 = sub nsw i64 %846, 1
  %848 = getelementptr inbounds double, ptr %845, i64 %847
  %849 = load double, ptr %848, align 8, !tbaa !11
  %850 = load ptr, ptr %19, align 8, !tbaa !5
  %851 = load i64, ptr %28, align 8, !tbaa !9
  %852 = sub nsw i64 %851, 1
  %853 = getelementptr inbounds double, ptr %850, i64 %852
  %854 = load double, ptr %853, align 8, !tbaa !11
  %855 = fneg double %849
  %856 = call double @llvm.fmuladd.f64(double %855, double %854, double %844)
  store double %856, ptr %31, align 8, !tbaa !11
  br label %862

857:                                              ; preds = %837
  %858 = load ptr, ptr %19, align 8, !tbaa !5
  %859 = load i64, ptr %28, align 8, !tbaa !9
  %860 = getelementptr inbounds double, ptr %858, i64 %859
  %861 = load double, ptr %860, align 8, !tbaa !11
  store double %861, ptr %31, align 8, !tbaa !11
  br label %862

862:                                              ; preds = %857, %840
  br label %863

863:                                              ; preds = %862, %808
  %864 = load ptr, ptr %14, align 8, !tbaa !5
  %865 = load i64, ptr %28, align 8, !tbaa !9
  %866 = getelementptr inbounds double, ptr %864, i64 %865
  %867 = load double, ptr %866, align 8, !tbaa !11
  store double %867, ptr %29, align 8, !tbaa !11
  %868 = load ptr, ptr %20, align 8, !tbaa !5
  %869 = call double @d_sign(ptr noundef %868, ptr noundef %29)
  store double %869, ptr %32, align 8, !tbaa !11
  br label %870

870:                                              ; preds = %931, %903, %863
  %871 = load double, ptr %29, align 8, !tbaa !11
  %872 = fcmp oge double %871, 0.000000e+00
  br i1 %872, label %873, label %875

873:                                              ; preds = %870
  %874 = load double, ptr %29, align 8, !tbaa !11
  br label %878

875:                                              ; preds = %870
  %876 = load double, ptr %29, align 8, !tbaa !11
  %877 = fneg double %876
  br label %878

878:                                              ; preds = %875, %873
  %879 = phi double [ %874, %873 ], [ %877, %875 ]
  store double %879, ptr %33, align 8, !tbaa !11
  %880 = load double, ptr %33, align 8, !tbaa !11
  %881 = fcmp olt double %880, 1.000000e+00
  br i1 %881, label %882, label %939

882:                                              ; preds = %878
  %883 = load double, ptr %33, align 8, !tbaa !11
  %884 = load double, ptr %34, align 8, !tbaa !11
  %885 = fcmp olt double %883, %884
  br i1 %885, label %886, label %917

886:                                              ; preds = %882
  %887 = load double, ptr %33, align 8, !tbaa !11
  %888 = fcmp oeq double %887, 0.000000e+00
  br i1 %888, label %903, label %889

889:                                              ; preds = %886
  %890 = load double, ptr %31, align 8, !tbaa !11
  %891 = fcmp oge double %890, 0.000000e+00
  br i1 %891, label %892, label %894

892:                                              ; preds = %889
  %893 = load double, ptr %31, align 8, !tbaa !11
  br label %897

894:                                              ; preds = %889
  %895 = load double, ptr %31, align 8, !tbaa !11
  %896 = fneg double %895
  br label %897

897:                                              ; preds = %894, %892
  %898 = phi double [ %893, %892 ], [ %896, %894 ]
  %899 = load double, ptr %34, align 8, !tbaa !11
  %900 = fmul double %898, %899
  %901 = load double, ptr %33, align 8, !tbaa !11
  %902 = fcmp ogt double %900, %901
  br i1 %902, label %903, label %909

903:                                              ; preds = %897, %886
  %904 = load double, ptr %32, align 8, !tbaa !11
  %905 = load double, ptr %29, align 8, !tbaa !11
  %906 = fadd double %905, %904
  store double %906, ptr %29, align 8, !tbaa !11
  %907 = load double, ptr %32, align 8, !tbaa !11
  %908 = fmul double %907, 2.000000e+00
  store double %908, ptr %32, align 8, !tbaa !11
  br label %870

909:                                              ; preds = %897
  %910 = load double, ptr %35, align 8, !tbaa !11
  %911 = load double, ptr %31, align 8, !tbaa !11
  %912 = fmul double %911, %910
  store double %912, ptr %31, align 8, !tbaa !11
  %913 = load double, ptr %35, align 8, !tbaa !11
  %914 = load double, ptr %29, align 8, !tbaa !11
  %915 = fmul double %914, %913
  store double %915, ptr %29, align 8, !tbaa !11
  br label %916

916:                                              ; preds = %909
  br label %938

917:                                              ; preds = %882
  %918 = load double, ptr %31, align 8, !tbaa !11
  %919 = fcmp oge double %918, 0.000000e+00
  br i1 %919, label %920, label %922

920:                                              ; preds = %917
  %921 = load double, ptr %31, align 8, !tbaa !11
  br label %925

922:                                              ; preds = %917
  %923 = load double, ptr %31, align 8, !tbaa !11
  %924 = fneg double %923
  br label %925

925:                                              ; preds = %922, %920
  %926 = phi double [ %921, %920 ], [ %924, %922 ]
  %927 = load double, ptr %33, align 8, !tbaa !11
  %928 = load double, ptr %35, align 8, !tbaa !11
  %929 = fmul double %927, %928
  %930 = fcmp ogt double %926, %929
  br i1 %930, label %931, label %937

931:                                              ; preds = %925
  %932 = load double, ptr %32, align 8, !tbaa !11
  %933 = load double, ptr %29, align 8, !tbaa !11
  %934 = fadd double %933, %932
  store double %934, ptr %29, align 8, !tbaa !11
  %935 = load double, ptr %32, align 8, !tbaa !11
  %936 = fmul double %935, 2.000000e+00
  store double %936, ptr %32, align 8, !tbaa !11
  br label %870

937:                                              ; preds = %925
  br label %938

938:                                              ; preds = %937, %916
  br label %939

939:                                              ; preds = %938, %878
  %940 = load double, ptr %31, align 8, !tbaa !11
  %941 = load double, ptr %29, align 8, !tbaa !11
  %942 = fdiv double %940, %941
  %943 = load ptr, ptr %19, align 8, !tbaa !5
  %944 = load i64, ptr %28, align 8, !tbaa !9
  %945 = getelementptr inbounds double, ptr %943, i64 %944
  store double %942, ptr %945, align 8, !tbaa !11
  br label %946

946:                                              ; preds = %939
  %947 = load i64, ptr %28, align 8, !tbaa !9
  %948 = add nsw i64 %947, 1
  store i64 %948, ptr %28, align 8, !tbaa !9
  br label %801, !llvm.loop !19

949:                                              ; preds = %801
  br label %950

950:                                              ; preds = %949, %797
  %951 = load ptr, ptr %13, align 8, !tbaa !5
  %952 = load i64, ptr %951, align 8, !tbaa !9
  store i64 %952, ptr %28, align 8, !tbaa !9
  br label %953

953:                                              ; preds = %1010, %950
  %954 = load i64, ptr %28, align 8, !tbaa !9
  %955 = icmp sge i64 %954, 2
  br i1 %955, label %956, label %1013

956:                                              ; preds = %953
  %957 = load ptr, ptr %18, align 8, !tbaa !5
  %958 = load i64, ptr %28, align 8, !tbaa !9
  %959 = sub nsw i64 %958, 1
  %960 = getelementptr inbounds i64, ptr %957, i64 %959
  %961 = load i64, ptr %960, align 8, !tbaa !9
  %962 = icmp eq i64 %961, 0
  br i1 %962, label %963, label %980

963:                                              ; preds = %956
  %964 = load ptr, ptr %16, align 8, !tbaa !5
  %965 = load i64, ptr %28, align 8, !tbaa !9
  %966 = sub nsw i64 %965, 1
  %967 = getelementptr inbounds double, ptr %964, i64 %966
  %968 = load double, ptr %967, align 8, !tbaa !11
  %969 = load ptr, ptr %19, align 8, !tbaa !5
  %970 = load i64, ptr %28, align 8, !tbaa !9
  %971 = getelementptr inbounds double, ptr %969, i64 %970
  %972 = load double, ptr %971, align 8, !tbaa !11
  %973 = load ptr, ptr %19, align 8, !tbaa !5
  %974 = load i64, ptr %28, align 8, !tbaa !9
  %975 = sub nsw i64 %974, 1
  %976 = getelementptr inbounds double, ptr %973, i64 %975
  %977 = load double, ptr %976, align 8, !tbaa !11
  %978 = fneg double %968
  %979 = call double @llvm.fmuladd.f64(double %978, double %972, double %977)
  store double %979, ptr %976, align 8, !tbaa !11
  br label %1009

980:                                              ; preds = %956
  %981 = load ptr, ptr %19, align 8, !tbaa !5
  %982 = load i64, ptr %28, align 8, !tbaa !9
  %983 = sub nsw i64 %982, 1
  %984 = getelementptr inbounds double, ptr %981, i64 %983
  %985 = load double, ptr %984, align 8, !tbaa !11
  store double %985, ptr %31, align 8, !tbaa !11
  %986 = load ptr, ptr %19, align 8, !tbaa !5
  %987 = load i64, ptr %28, align 8, !tbaa !9
  %988 = getelementptr inbounds double, ptr %986, i64 %987
  %989 = load double, ptr %988, align 8, !tbaa !11
  %990 = load ptr, ptr %19, align 8, !tbaa !5
  %991 = load i64, ptr %28, align 8, !tbaa !9
  %992 = sub nsw i64 %991, 1
  %993 = getelementptr inbounds double, ptr %990, i64 %992
  store double %989, ptr %993, align 8, !tbaa !11
  %994 = load double, ptr %31, align 8, !tbaa !11
  %995 = load ptr, ptr %16, align 8, !tbaa !5
  %996 = load i64, ptr %28, align 8, !tbaa !9
  %997 = sub nsw i64 %996, 1
  %998 = getelementptr inbounds double, ptr %995, i64 %997
  %999 = load double, ptr %998, align 8, !tbaa !11
  %1000 = load ptr, ptr %19, align 8, !tbaa !5
  %1001 = load i64, ptr %28, align 8, !tbaa !9
  %1002 = getelementptr inbounds double, ptr %1000, i64 %1001
  %1003 = load double, ptr %1002, align 8, !tbaa !11
  %1004 = fneg double %999
  %1005 = call double @llvm.fmuladd.f64(double %1004, double %1003, double %994)
  %1006 = load ptr, ptr %19, align 8, !tbaa !5
  %1007 = load i64, ptr %28, align 8, !tbaa !9
  %1008 = getelementptr inbounds double, ptr %1006, i64 %1007
  store double %1005, ptr %1008, align 8, !tbaa !11
  br label %1009

1009:                                             ; preds = %980, %963
  br label %1010

1010:                                             ; preds = %1009
  %1011 = load i64, ptr %28, align 8, !tbaa !9
  %1012 = add nsw i64 %1011, -1
  store i64 %1012, ptr %28, align 8, !tbaa !9
  br label %953, !llvm.loop !20

1013:                                             ; preds = %953
  br label %1014

1014:                                             ; preds = %1013, %650
  store i32 0, ptr %11, align 4
  store i32 1, ptr %36, align 4
  br label %1015

1015:                                             ; preds = %1014, %782, %757, %480, %455, %89, %80
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #4
  %1016 = load i32, ptr %11, align 4
  ret i32 %1016
}

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

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

declare double @dlamch_(ptr noundef) #2

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

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

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

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

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

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


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

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @dlagts_(ptr nocapture noundef readonly %0, ptr nocapture noundef readonly %1, ptr nocapture noundef readonly %2, ptr nocapture noundef readonly %3, ptr nocapture noundef readonly %4, ptr nocapture noundef readonly %5, ptr nocapture noundef readonly %6, ptr nocapture noundef %7, ptr noundef %8, ptr nocapture noundef writeonly %9) local_unnamed_addr #0 {
  %11 = alloca i64, align 8
  %12 = alloca double, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #5
  %13 = getelementptr inbounds i8, ptr %7, i64 -8
  %14 = getelementptr inbounds i8, ptr %6, i64 -8
  %15 = getelementptr inbounds i8, ptr %5, i64 -8
  %16 = getelementptr inbounds i8, ptr %4, i64 -8
  %17 = getelementptr inbounds i8, ptr %3, i64 -8
  %18 = getelementptr inbounds i8, ptr %2, i64 -8
  store i64 0, ptr %9, align 8, !tbaa !5
  %19 = load i64, ptr %0, align 8, !tbaa !5
  %20 = tail call i64 @llvm.abs.i64(i64 %19, i1 true)
  %21 = icmp ugt i64 %20, 2
  %22 = icmp eq i64 %19, 0
  %or.cond = or i1 %22, %21
  br i1 %or.cond, label %.thread, label %23

23:                                               ; preds = %10
  %24 = load i64, ptr %1, align 8, !tbaa !5
  %25 = icmp slt i64 %24, 0
  br i1 %25, label %.thread, label %28

.thread:                                          ; preds = %23, %10
  %storemerge = phi i64 [ -1, %10 ], [ -2, %23 ]
  store i64 %storemerge, ptr %9, align 8, !tbaa !5
  %26 = sub nsw i64 0, %storemerge
  store i64 %26, ptr %11, align 8, !tbaa !5
  %27 = call i32 @xerbla_(ptr noundef nonnull @.str, ptr noundef nonnull %11) #5
  br label %.loopexit372

28:                                               ; preds = %23
  %29 = icmp eq i64 %24, 0
  br i1 %29, label %.loopexit372, label %30

30:                                               ; preds = %28
  %31 = tail call double @dlamch_(ptr noundef nonnull @.str.1) #5
  %32 = tail call double @dlamch_(ptr noundef nonnull @.str.2) #5
  %33 = fdiv double 1.000000e+00, %32
  %34 = load i64, ptr %0, align 8, !tbaa !5
  %35 = icmp slt i64 %34, 0
  br i1 %35, label %36, label %85

36:                                               ; preds = %30
  %37 = load double, ptr %8, align 8, !tbaa !9
  %38 = fcmp ugt double %37, 0.000000e+00
  br i1 %38, label %85, label %39

39:                                               ; preds = %36
  %40 = load double, ptr %2, align 8, !tbaa !9
  %41 = fcmp ult double %40, 0.000000e+00
  %42 = fneg double %40
  %43 = select i1 %41, double %42, double %40
  store double %43, ptr %8, align 8, !tbaa !9
  %44 = load i64, ptr %1, align 8, !tbaa !5
  %45 = icmp sgt i64 %44, 1
  br i1 %45, label %46, label %._crit_edge

46:                                               ; preds = %39
  %47 = getelementptr inbounds i8, ptr %2, i64 8
  %48 = load double, ptr %47, align 8, !tbaa !9
  %49 = fcmp ult double %48, 0.000000e+00
  %50 = fneg double %48
  %51 = select i1 %49, double %50, double %48
  %52 = fcmp oge double %43, %51
  %53 = select i1 %52, double %43, double %51
  %54 = load double, ptr %3, align 8, !tbaa !9
  %55 = fcmp ult double %54, 0.000000e+00
  %56 = fneg double %54
  %57 = select i1 %55, double %56, double %54
  %58 = fcmp oge double %53, %57
  %59 = select i1 %58, double %53, double %57
  store double %59, ptr %8, align 8, !tbaa !9
  %invariant.gep = getelementptr i8, ptr %3, i64 -16
  %invariant.gep385 = getelementptr i8, ptr %5, i64 -24
  %.not361387 = icmp eq i64 %44, 2
  br i1 %.not361387, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %46, %.lr.ph
  %60 = phi double [ %79, %.lr.ph ], [ %59, %46 ]
  %.0336388 = phi i64 [ %80, %.lr.ph ], [ 3, %46 ]
  %61 = getelementptr inbounds double, ptr %18, i64 %.0336388
  %62 = load double, ptr %61, align 8, !tbaa !9
  %63 = fcmp oge double %62, 0.000000e+00
  %64 = fneg double %62
  %65 = select i1 %63, double %62, double %64
  %66 = fcmp oge double %60, %65
  %67 = select i1 %66, double %60, double %65
  %gep = getelementptr double, ptr %invariant.gep, i64 %.0336388
  %68 = load double, ptr %gep, align 8, !tbaa !9
  %69 = fcmp oge double %68, 0.000000e+00
  %70 = fneg double %68
  %71 = select i1 %69, double %68, double %70
  %72 = fcmp oge double %67, %71
  %73 = select i1 %72, double %67, double %71
  %gep386 = getelementptr double, ptr %invariant.gep385, i64 %.0336388
  %74 = load double, ptr %gep386, align 8, !tbaa !9
  %75 = fcmp oge double %74, 0.000000e+00
  %76 = fneg double %74
  %77 = select i1 %75, double %74, double %76
  %78 = fcmp oge double %73, %77
  %79 = select i1 %78, double %73, double %77
  store double %79, ptr %8, align 8, !tbaa !9
  %80 = add nuw i64 %.0336388, 1
  %exitcond.not = icmp eq i64 %.0336388, %44
  br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !11

._crit_edge:                                      ; preds = %.lr.ph, %39, %46
  %81 = phi double [ %59, %46 ], [ %43, %39 ], [ %79, %.lr.ph ]
  %82 = fmul double %31, %81
  store double %82, ptr %8, align 8, !tbaa !9
  %83 = fcmp oeq double %82, 0.000000e+00
  br i1 %83, label %84, label %85

84:                                               ; preds = %._crit_edge
  store double %31, ptr %8, align 8, !tbaa !9
  br label %85

85:                                               ; preds = %36, %84, %._crit_edge, %30
  %86 = tail call i64 @llvm.abs.i64(i64 %34, i1 true)
  %87 = icmp eq i64 %86, 1
  br i1 %87, label %88, label %294

88:                                               ; preds = %85
  %89 = load i64, ptr %1, align 8, !tbaa !5
  %.not364407 = icmp slt i64 %89, 2
  br i1 %.not364407, label %._crit_edge411, label %.lr.ph410

.lr.ph410:                                        ; preds = %88, %112
  %.1337408 = phi i64 [ %113, %112 ], [ 2, %88 ]
  %90 = add nsw i64 %.1337408, -1
  %91 = getelementptr inbounds i64, ptr %14, i64 %90
  %92 = load i64, ptr %91, align 8, !tbaa !5
  %93 = icmp eq i64 %92, 0
  br i1 %93, label %94, label %103

94:                                               ; preds = %.lr.ph410
  %95 = getelementptr inbounds double, ptr %16, i64 %90
  %96 = load double, ptr %95, align 8, !tbaa !9
  %97 = getelementptr inbounds double, ptr %13, i64 %90
  %98 = load double, ptr %97, align 8, !tbaa !9
  %99 = getelementptr inbounds double, ptr %13, i64 %.1337408
  %100 = load double, ptr %99, align 8, !tbaa !9
  %101 = fneg double %96
  %102 = tail call double @llvm.fmuladd.f64(double %101, double %98, double %100)
  store double %102, ptr %99, align 8, !tbaa !9
  br label %112

103:                                              ; preds = %.lr.ph410
  %104 = getelementptr inbounds double, ptr %13, i64 %90
  %105 = load double, ptr %104, align 8, !tbaa !9
  %106 = getelementptr inbounds double, ptr %13, i64 %.1337408
  %107 = load double, ptr %106, align 8, !tbaa !9
  store double %107, ptr %104, align 8, !tbaa !9
  %108 = getelementptr inbounds double, ptr %16, i64 %90
  %109 = load double, ptr %108, align 8, !tbaa !9
  %110 = fneg double %109
  %111 = tail call double @llvm.fmuladd.f64(double %110, double %107, double %105)
  store double %111, ptr %106, align 8, !tbaa !9
  br label %112

112:                                              ; preds = %94, %103
  %113 = add nuw i64 %.1337408, 1
  %exitcond452.not = icmp eq i64 %.1337408, %89
  br i1 %exitcond452.not, label %._crit_edge411, label %.lr.ph410, !llvm.loop !13

._crit_edge411:                                   ; preds = %112, %88
  %114 = icmp eq i64 %34, 1
  %115 = icmp sgt i64 %89, 0
  br i1 %114, label %.preheader, label %.preheader371

.preheader371:                                    ; preds = %._crit_edge411
  br i1 %115, label %.lr.ph417, label %.loopexit372

.preheader:                                       ; preds = %._crit_edge411
  br i1 %115, label %116, label %.loopexit372

116:                                              ; preds = %.preheader
  %117 = add nsw i64 %89, -2
  %118 = add nsw i64 %89, -1
  %119 = getelementptr inbounds double, ptr %13, i64 %89
  %120 = load double, ptr %119, align 8, !tbaa !9
  %121 = getelementptr inbounds double, ptr %18, i64 %89
  %122 = load double, ptr %121, align 8, !tbaa !9
  %123 = fcmp oge double %122, 0.000000e+00
  %124 = fneg double %122
  %125 = select i1 %123, double %122, double %124
  %126 = fcmp olt double %125, 1.000000e+00
  br i1 %126, label %127, label %146

127:                                              ; preds = %116
  %128 = fcmp olt double %125, %32
  br i1 %128, label %135, label %129

129:                                              ; preds = %127
  %130 = fcmp oge double %120, 0.000000e+00
  %131 = fneg double %120
  %132 = select i1 %130, double %120, double %131
  %133 = fmul double %33, %125
  %134 = fcmp ogt double %132, %133
  br i1 %134, label %.loopexit460, label %146

135:                                              ; preds = %127
  %136 = fcmp oeq double %122, 0.000000e+00
  br i1 %136, label %.loopexit461, label %137

137:                                              ; preds = %135
  %138 = fcmp oge double %120, 0.000000e+00
  %139 = fneg double %120
  %140 = select i1 %138, double %120, double %139
  %141 = fmul double %32, %140
  %142 = fcmp ogt double %141, %125
  br i1 %142, label %.loopexit461, label %143

143:                                              ; preds = %137
  %144 = fmul double %33, %120
  %145 = fmul double %33, %122
  br label %146

146:                                              ; preds = %143, %129, %116
  %147 = phi double [ %145, %143 ], [ %122, %129 ], [ %122, %116 ]
  %.1335.peel = phi double [ %144, %143 ], [ %120, %129 ], [ %120, %116 ]
  %148 = fdiv double %.1335.peel, %147
  %149 = getelementptr inbounds double, ptr %13, i64 %89
  store double %148, ptr %149, align 8, !tbaa !9
  %.not = icmp eq i64 %89, 1
  br i1 %.not, label %.loopexit372, label %150

150:                                              ; preds = %146
  %151 = getelementptr inbounds double, ptr %13, i64 %118
  %152 = load double, ptr %151, align 8, !tbaa !9
  %153 = getelementptr inbounds double, ptr %17, i64 %118
  %154 = load double, ptr %153, align 8, !tbaa !9
  %155 = fneg double %154
  %156 = tail call double @llvm.fmuladd.f64(double %155, double %148, double %152)
  %157 = getelementptr inbounds double, ptr %18, i64 %118
  %158 = load double, ptr %157, align 8, !tbaa !9
  %159 = fcmp oge double %158, 0.000000e+00
  %160 = fneg double %158
  %161 = select i1 %159, double %158, double %160
  %162 = fcmp olt double %161, 1.000000e+00
  br i1 %162, label %163, label %182

163:                                              ; preds = %150
  %164 = fcmp olt double %161, %32
  br i1 %164, label %171, label %165

165:                                              ; preds = %163
  %166 = fcmp oge double %156, 0.000000e+00
  %167 = fneg double %156
  %168 = select i1 %166, double %156, double %167
  %169 = fmul double %33, %161
  %170 = fcmp ogt double %168, %169
  br i1 %170, label %.loopexit460, label %182

171:                                              ; preds = %163
  %172 = fcmp oeq double %158, 0.000000e+00
  br i1 %172, label %.loopexit461, label %173

173:                                              ; preds = %171
  %174 = fcmp oge double %156, 0.000000e+00
  %175 = fneg double %156
  %176 = select i1 %174, double %156, double %175
  %177 = fmul double %32, %176
  %178 = fcmp ogt double %177, %161
  br i1 %178, label %.loopexit461, label %179

179:                                              ; preds = %173
  %180 = fmul double %33, %156
  %181 = fmul double %33, %158
  br label %182

182:                                              ; preds = %179, %165, %150
  %183 = phi double [ %181, %179 ], [ %158, %165 ], [ %158, %150 ]
  %.1335.peel458 = phi double [ %180, %179 ], [ %156, %165 ], [ %156, %150 ]
  %184 = fdiv double %.1335.peel458, %183
  %185 = getelementptr inbounds double, ptr %13, i64 %118
  store double %184, ptr %185, align 8, !tbaa !9
  %186 = icmp ugt i64 %89, 2
  br i1 %186, label %.peel.next455, label %.loopexit372

.peel.next455:                                    ; preds = %182
  %187 = add nsw i64 %89, -2
  br label %188

188:                                              ; preds = %.peel.next455, %230
  %.2338422 = phi i64 [ %187, %.peel.next455 ], [ %234, %230 ]
  %.not366 = icmp sgt i64 %.2338422, %117
  %189 = getelementptr inbounds double, ptr %13, i64 %.2338422
  %190 = load double, ptr %189, align 8, !tbaa !9
  br i1 %.not366, label %204, label %191

191:                                              ; preds = %188
  %192 = getelementptr inbounds double, ptr %17, i64 %.2338422
  %193 = load double, ptr %192, align 8, !tbaa !9
  %194 = getelementptr double, ptr %7, i64 %.2338422
  %195 = load double, ptr %194, align 8, !tbaa !9
  %196 = fneg double %193
  %197 = tail call double @llvm.fmuladd.f64(double %196, double %195, double %190)
  %198 = getelementptr inbounds double, ptr %15, i64 %.2338422
  %199 = load double, ptr %198, align 8, !tbaa !9
  %200 = getelementptr inbounds i8, ptr %189, i64 16
  %201 = load double, ptr %200, align 8, !tbaa !9
  %202 = fneg double %199
  %203 = tail call double @llvm.fmuladd.f64(double %202, double %201, double %197)
  br label %204

204:                                              ; preds = %188, %191
  %.0334 = phi double [ %203, %191 ], [ %190, %188 ]
  %205 = getelementptr inbounds double, ptr %18, i64 %.2338422
  %206 = load double, ptr %205, align 8, !tbaa !9
  %207 = fcmp oge double %206, 0.000000e+00
  %208 = fneg double %206
  %209 = select i1 %207, double %206, double %208
  %210 = fcmp olt double %209, 1.000000e+00
  br i1 %210, label %211, label %230

211:                                              ; preds = %204
  %212 = fcmp olt double %209, %32
  br i1 %212, label %213, label %224

213:                                              ; preds = %211
  %214 = fcmp oeq double %206, 0.000000e+00
  br i1 %214, label %.loopexit461, label %215

215:                                              ; preds = %213
  %216 = fcmp oge double %.0334, 0.000000e+00
  %217 = fneg double %.0334
  %218 = select i1 %216, double %.0334, double %217
  %219 = fmul double %32, %218
  %220 = fcmp ogt double %219, %209
  br i1 %220, label %.loopexit461, label %221

.loopexit461:                                     ; preds = %215, %213, %173, %171, %137, %135
  %.2338422.lcssa428 = phi i64 [ %89, %135 ], [ %89, %137 ], [ %118, %171 ], [ %118, %173 ], [ %.2338422, %213 ], [ %.2338422, %215 ]
  store i64 %.2338422.lcssa428, ptr %9, align 8, !tbaa !5
  br label %.loopexit372

221:                                              ; preds = %215
  %222 = fmul double %33, %.0334
  %223 = fmul double %33, %206
  br label %230

224:                                              ; preds = %211
  %225 = fcmp oge double %.0334, 0.000000e+00
  %226 = fneg double %.0334
  %227 = select i1 %225, double %.0334, double %226
  %228 = fmul double %33, %209
  %229 = fcmp ogt double %227, %228
  br i1 %229, label %.loopexit460, label %230

.loopexit460:                                     ; preds = %224, %165, %129
  %.2338422.lcssa = phi i64 [ %89, %129 ], [ %118, %165 ], [ %.2338422, %224 ]
  store i64 %.2338422.lcssa, ptr %9, align 8, !tbaa !5
  br label %.loopexit372

230:                                              ; preds = %221, %224, %204
  %231 = phi double [ %223, %221 ], [ %206, %224 ], [ %206, %204 ]
  %.1335 = phi double [ %222, %221 ], [ %.0334, %224 ], [ %.0334, %204 ]
  %232 = fdiv double %.1335, %231
  %233 = getelementptr inbounds double, ptr %13, i64 %.2338422
  store double %232, ptr %233, align 8, !tbaa !9
  %234 = add nsw i64 %.2338422, -1
  %235 = icmp sgt i64 %.2338422, 1
  br i1 %235, label %188, label %.loopexit372, !llvm.loop !14

.lr.ph417:                                        ; preds = %.preheader371, %.loopexit370
  %.3339416 = phi i64 [ %292, %.loopexit370 ], [ %89, %.preheader371 ]
  %236 = load i64, ptr %1, align 8, !tbaa !5
  %237 = add nsw i64 %236, -2
  %.not365 = icmp sgt i64 %.3339416, %237
  br i1 %.not365, label %248, label %238

238:                                              ; preds = %.lr.ph417
  %239 = getelementptr inbounds double, ptr %13, i64 %.3339416
  %240 = load double, ptr %239, align 8, !tbaa !9
  %241 = getelementptr inbounds double, ptr %17, i64 %.3339416
  %242 = load double, ptr %241, align 8, !tbaa !9
  %243 = getelementptr double, ptr %7, i64 %.3339416
  %244 = load double, ptr %243, align 8, !tbaa !9
  %245 = fneg double %242
  %246 = call double @llvm.fmuladd.f64(double %245, double %244, double %240)
  %247 = getelementptr inbounds i8, ptr %239, i64 16
  br label %.sink.split

248:                                              ; preds = %.lr.ph417
  %249 = add nsw i64 %236, -1
  %250 = icmp eq i64 %.3339416, %249
  %251 = getelementptr inbounds double, ptr %13, i64 %.3339416
  %252 = load double, ptr %251, align 8, !tbaa !9
  br i1 %250, label %253, label %260

253:                                              ; preds = %248
  %254 = getelementptr double, ptr %7, i64 %.3339416
  br label %.sink.split

.sink.split:                                      ; preds = %238, %253
  %.sink = phi ptr [ %254, %253 ], [ %247, %238 ]
  %255 = phi ptr [ %3, %253 ], [ %5, %238 ]
  %.sink481 = phi double [ %252, %253 ], [ %246, %238 ]
  %256 = getelementptr inbounds i8, ptr %255, i64 -8
  %.sink482.in = getelementptr inbounds double, ptr %256, i64 %.3339416
  %.sink482 = load double, ptr %.sink482.in, align 8, !tbaa !9
  %257 = load double, ptr %.sink, align 8, !tbaa !9
  %258 = fneg double %.sink482
  %259 = call double @llvm.fmuladd.f64(double %258, double %257, double %.sink481)
  br label %260

260:                                              ; preds = %.sink.split, %248
  %.2 = phi double [ %252, %248 ], [ %259, %.sink.split ]
  %261 = getelementptr inbounds double, ptr %18, i64 %.3339416
  %262 = load double, ptr %261, align 8, !tbaa !9
  store double %262, ptr %12, align 8, !tbaa !9
  %263 = call double @d_sign(ptr noundef %8, ptr noundef nonnull %12) #5
  %.pr368 = load double, ptr %12, align 8
  %264 = fcmp oge double %.pr368, 0.000000e+00
  %265 = fneg double %.pr368
  %266 = select i1 %264, double %.pr368, double %265
  %267 = fcmp olt double %266, 1.000000e+00
  br i1 %267, label %.lr.ph414, label %.loopexit370

.lr.ph414:                                        ; preds = %260
  %268 = fcmp oge double %.2, 0.000000e+00
  %269 = fneg double %.2
  %270 = select i1 %268, double %.2, double %269
  %271 = fmul double %32, %270
  br label %272

272:                                              ; preds = %.lr.ph414, %.backedge
  %273 = phi double [ %266, %.lr.ph414 ], [ %281, %.backedge ]
  %.0333412 = phi double [ %263, %.lr.ph414 ], [ %.0333.be, %.backedge ]
  %274 = phi double [ %.pr368, %.lr.ph414 ], [ %.be, %.backedge ]
  %275 = fcmp olt double %273, %32
  br i1 %275, label %276, label %286

276:                                              ; preds = %272
  %277 = fcmp oeq double %274, 0.000000e+00
  %278 = fcmp ogt double %271, %273
  %or.cond425 = select i1 %277, i1 true, i1 %278
  br i1 %or.cond425, label %.backedge, label %283

.backedge:                                        ; preds = %286, %276
  %.be = fadd double %274, %.0333412
  store double %.be, ptr %12, align 8, !tbaa !9
  %.0333.be = fmul double %.0333412, 2.000000e+00
  %279 = fcmp oge double %.be, 0.000000e+00
  %280 = fneg double %.be
  %281 = select i1 %279, double %.be, double %280
  %282 = fcmp olt double %281, 1.000000e+00
  br i1 %282, label %272, label %.loopexit370

283:                                              ; preds = %276
  %284 = fmul double %33, %.2
  %285 = fmul double %33, %274
  store double %285, ptr %12, align 8, !tbaa !9
  br label %.loopexit370

286:                                              ; preds = %272
  %287 = fmul double %33, %273
  %288 = fcmp ogt double %270, %287
  br i1 %288, label %.backedge, label %.loopexit370

.loopexit370:                                     ; preds = %.backedge, %286, %260, %283
  %289 = phi double [ %285, %283 ], [ %.pr368, %260 ], [ %.be, %.backedge ], [ %274, %286 ]
  %.3 = phi double [ %284, %283 ], [ %.2, %260 ], [ %.2, %286 ], [ %.2, %.backedge ]
  %290 = fdiv double %.3, %289
  %291 = getelementptr inbounds double, ptr %13, i64 %.3339416
  store double %290, ptr %291, align 8, !tbaa !9
  %292 = add nsw i64 %.3339416, -1
  %293 = icmp sgt i64 %.3339416, 1
  br i1 %293, label %.lr.ph417, label %.loopexit372, !llvm.loop !16

294:                                              ; preds = %85
  %295 = icmp eq i64 %34, 2
  %296 = load i64, ptr %1, align 8, !tbaa !5
  %.not363400 = icmp slt i64 %296, 1
  br i1 %295, label %297, label %407

297:                                              ; preds = %294
  br i1 %.not363400, label %.loopexit378, label %298

298:                                              ; preds = %297
  %299 = getelementptr inbounds i8, ptr %7, i64 8
  %300 = add nuw i64 %296, 1
  %301 = load double, ptr %7, align 8, !tbaa !9
  %302 = load double, ptr %2, align 8, !tbaa !9
  %303 = fcmp oge double %302, 0.000000e+00
  %304 = fneg double %302
  %305 = select i1 %303, double %302, double %304
  %306 = fcmp olt double %305, 1.000000e+00
  br i1 %306, label %307, label %326

307:                                              ; preds = %298
  %308 = fcmp olt double %305, %32
  br i1 %308, label %315, label %309

309:                                              ; preds = %307
  %310 = fcmp oge double %301, 0.000000e+00
  %311 = fneg double %301
  %312 = select i1 %310, double %301, double %311
  %313 = fmul double %33, %305
  %314 = fcmp ogt double %312, %313
  br i1 %314, label %.loopexit450, label %326

315:                                              ; preds = %307
  %316 = fcmp oeq double %302, 0.000000e+00
  br i1 %316, label %.loopexit451, label %317

317:                                              ; preds = %315
  %318 = fcmp oge double %301, 0.000000e+00
  %319 = fneg double %301
  %320 = select i1 %318, double %301, double %319
  %321 = fmul double %32, %320
  %322 = fcmp ogt double %321, %305
  br i1 %322, label %.loopexit451, label %323

323:                                              ; preds = %317
  %324 = fmul double %33, %301
  %325 = fmul double %33, %302
  br label %326

326:                                              ; preds = %323, %309, %298
  %327 = phi double [ %325, %323 ], [ %302, %309 ], [ %302, %298 ]
  %.5.peel = phi double [ %324, %323 ], [ %301, %309 ], [ %301, %298 ]
  %328 = fdiv double %.5.peel, %327
  store double %328, ptr %7, align 8, !tbaa !9
  %exitcond444.peel.not = icmp eq i64 %300, 2
  br i1 %exitcond444.peel.not, label %.loopexit378, label %329

329:                                              ; preds = %326
  %330 = load double, ptr %299, align 8, !tbaa !9
  %331 = load double, ptr %3, align 8, !tbaa !9
  %332 = fneg double %331
  %333 = tail call double @llvm.fmuladd.f64(double %332, double %328, double %330)
  %334 = getelementptr inbounds i8, ptr %2, i64 8
  %335 = load double, ptr %334, align 8, !tbaa !9
  %336 = fcmp oge double %335, 0.000000e+00
  %337 = fneg double %335
  %338 = select i1 %336, double %335, double %337
  %339 = fcmp olt double %338, 1.000000e+00
  br i1 %339, label %340, label %359

340:                                              ; preds = %329
  %341 = fcmp olt double %338, %32
  br i1 %341, label %348, label %342

342:                                              ; preds = %340
  %343 = fcmp oge double %333, 0.000000e+00
  %344 = fneg double %333
  %345 = select i1 %343, double %333, double %344
  %346 = fmul double %33, %338
  %347 = fcmp ogt double %345, %346
  br i1 %347, label %.loopexit450, label %359

348:                                              ; preds = %340
  %349 = fcmp oeq double %335, 0.000000e+00
  br i1 %349, label %.loopexit451, label %350

350:                                              ; preds = %348
  %351 = fcmp oge double %333, 0.000000e+00
  %352 = fneg double %333
  %353 = select i1 %351, double %333, double %352
  %354 = fmul double %32, %353
  %355 = fcmp ogt double %354, %338
  br i1 %355, label %.loopexit451, label %356

356:                                              ; preds = %350
  %357 = fmul double %33, %333
  %358 = fmul double %33, %335
  br label %359

359:                                              ; preds = %356, %342, %329
  %360 = phi double [ %358, %356 ], [ %335, %342 ], [ %335, %329 ]
  %.5.peel447 = phi double [ %357, %356 ], [ %333, %342 ], [ %333, %329 ]
  %361 = fdiv double %.5.peel447, %360
  %362 = getelementptr inbounds i8, ptr %7, i64 8
  store double %361, ptr %362, align 8, !tbaa !9
  %exitcond444.peel448.not = icmp eq i64 %300, 3
  br i1 %exitcond444.peel448.not, label %.loopexit378, label %.peel.next445

.peel.next445:                                    ; preds = %359
  %invariant.gep478 = getelementptr i8, ptr %3, i64 -16
  br label %363

363:                                              ; preds = %.peel.next445, %402
  %364 = phi double [ %361, %.peel.next445 ], [ %404, %402 ]
  %.4340401 = phi i64 [ 3, %.peel.next445 ], [ %406, %402 ]
  %365 = getelementptr inbounds double, ptr %13, i64 %.4340401
  %366 = load double, ptr %365, align 8, !tbaa !9
  %gep479 = getelementptr double, ptr %invariant.gep478, i64 %.4340401
  %367 = load double, ptr %gep479, align 8, !tbaa !9
  %368 = fneg double %367
  %369 = tail call double @llvm.fmuladd.f64(double %368, double %364, double %366)
  %370 = add nsw i64 %.4340401, -2
  %371 = getelementptr inbounds double, ptr %15, i64 %370
  %372 = load double, ptr %371, align 8, !tbaa !9
  %373 = getelementptr inbounds double, ptr %13, i64 %370
  %374 = load double, ptr %373, align 8, !tbaa !9
  %375 = fneg double %372
  %376 = tail call double @llvm.fmuladd.f64(double %375, double %374, double %369)
  %377 = getelementptr inbounds double, ptr %18, i64 %.4340401
  %378 = load double, ptr %377, align 8, !tbaa !9
  %379 = fcmp oge double %378, 0.000000e+00
  %380 = fneg double %378
  %381 = select i1 %379, double %378, double %380
  %382 = fcmp olt double %381, 1.000000e+00
  br i1 %382, label %383, label %402

383:                                              ; preds = %363
  %384 = fcmp olt double %381, %32
  br i1 %384, label %385, label %396

385:                                              ; preds = %383
  %386 = fcmp oeq double %378, 0.000000e+00
  br i1 %386, label %.loopexit451, label %387

387:                                              ; preds = %385
  %388 = fcmp oge double %376, 0.000000e+00
  %389 = fneg double %376
  %390 = select i1 %388, double %376, double %389
  %391 = fmul double %32, %390
  %392 = fcmp ogt double %391, %381
  br i1 %392, label %.loopexit451, label %393

.loopexit451:                                     ; preds = %387, %385, %350, %348, %317, %315
  %.4340401.lcssa436 = phi i64 [ 1, %315 ], [ 1, %317 ], [ 2, %348 ], [ 2, %350 ], [ %.4340401, %385 ], [ %.4340401, %387 ]
  store i64 %.4340401.lcssa436, ptr %9, align 8, !tbaa !5
  br label %.loopexit372

393:                                              ; preds = %387
  %394 = fmul double %33, %376
  %395 = fmul double %33, %378
  br label %402

396:                                              ; preds = %383
  %397 = fcmp oge double %376, 0.000000e+00
  %398 = fneg double %376
  %399 = select i1 %397, double %376, double %398
  %400 = fmul double %33, %381
  %401 = fcmp ogt double %399, %400
  br i1 %401, label %.loopexit450, label %402

.loopexit450:                                     ; preds = %396, %342, %309
  %.4340401.lcssa = phi i64 [ 1, %309 ], [ 2, %342 ], [ %.4340401, %396 ]
  store i64 %.4340401.lcssa, ptr %9, align 8, !tbaa !5
  br label %.loopexit372

402:                                              ; preds = %393, %396, %363
  %403 = phi double [ %395, %393 ], [ %378, %396 ], [ %378, %363 ]
  %.5 = phi double [ %394, %393 ], [ %376, %396 ], [ %376, %363 ]
  %404 = fdiv double %.5, %403
  %405 = getelementptr inbounds double, ptr %13, i64 %.4340401
  store double %404, ptr %405, align 8, !tbaa !9
  %406 = add nuw i64 %.4340401, 1
  %exitcond444.not = icmp eq i64 %.4340401, %296
  br i1 %exitcond444.not, label %.loopexit378, label %363, !llvm.loop !17

407:                                              ; preds = %294
  br i1 %.not363400, label %.loopexit372, label %.lr.ph396

.lr.ph396:                                        ; preds = %407
  %408 = getelementptr inbounds i8, ptr %7, i64 8
  br label %409

409:                                              ; preds = %.lr.ph396, %.loopexit375
  %.5341394 = phi i64 [ 1, %.lr.ph396 ], [ %471, %.loopexit375 ]
  %410 = icmp ugt i64 %.5341394, 2
  br i1 %410, label %411, label %428

411:                                              ; preds = %409
  %412 = getelementptr inbounds double, ptr %13, i64 %.5341394
  %413 = load double, ptr %412, align 8, !tbaa !9
  %414 = add nsw i64 %.5341394, -1
  %415 = getelementptr inbounds double, ptr %17, i64 %414
  %416 = load double, ptr %415, align 8, !tbaa !9
  %417 = getelementptr inbounds double, ptr %13, i64 %414
  %418 = load double, ptr %417, align 8, !tbaa !9
  %419 = fneg double %416
  %420 = call double @llvm.fmuladd.f64(double %419, double %418, double %413)
  %421 = add nsw i64 %.5341394, -2
  %422 = getelementptr inbounds double, ptr %15, i64 %421
  %423 = load double, ptr %422, align 8, !tbaa !9
  %424 = getelementptr inbounds double, ptr %13, i64 %421
  %425 = load double, ptr %424, align 8, !tbaa !9
  %426 = fneg double %423
  %427 = call double @llvm.fmuladd.f64(double %426, double %425, double %420)
  br label %439

428:                                              ; preds = %409
  %429 = icmp eq i64 %.5341394, 2
  br i1 %429, label %430, label %436

430:                                              ; preds = %428
  %431 = load double, ptr %408, align 8, !tbaa !9
  %432 = load double, ptr %3, align 8, !tbaa !9
  %433 = load double, ptr %7, align 8, !tbaa !9
  %434 = fneg double %432
  %435 = call double @llvm.fmuladd.f64(double %434, double %433, double %431)
  br label %439

436:                                              ; preds = %428
  %437 = getelementptr inbounds double, ptr %13, i64 %.5341394
  %438 = load double, ptr %437, align 8, !tbaa !9
  br label %439

439:                                              ; preds = %430, %436, %411
  %.6 = phi double [ %427, %411 ], [ %435, %430 ], [ %438, %436 ]
  %440 = getelementptr inbounds double, ptr %18, i64 %.5341394
  %441 = load double, ptr %440, align 8, !tbaa !9
  store double %441, ptr %12, align 8, !tbaa !9
  %442 = call double @d_sign(ptr noundef %8, ptr noundef nonnull %12) #5
  %.pr369 = load double, ptr %12, align 8
  %443 = fcmp oge double %.pr369, 0.000000e+00
  %444 = fneg double %.pr369
  %445 = select i1 %443, double %.pr369, double %444
  %446 = fcmp olt double %445, 1.000000e+00
  br i1 %446, label %.lr.ph391, label %.loopexit375

.lr.ph391:                                        ; preds = %439
  %447 = fcmp oge double %.6, 0.000000e+00
  %448 = fneg double %.6
  %449 = select i1 %447, double %.6, double %448
  %450 = fmul double %32, %449
  br label %451

451:                                              ; preds = %.lr.ph391, %.backedge376
  %452 = phi double [ %445, %.lr.ph391 ], [ %460, %.backedge376 ]
  %.1389 = phi double [ %442, %.lr.ph391 ], [ %.1.be, %.backedge376 ]
  %453 = phi double [ %.pr369, %.lr.ph391 ], [ %.be377, %.backedge376 ]
  %454 = fcmp olt double %452, %32
  br i1 %454, label %455, label %465

455:                                              ; preds = %451
  %456 = fcmp oeq double %453, 0.000000e+00
  %457 = fcmp ogt double %450, %452
  %or.cond426 = select i1 %456, i1 true, i1 %457
  br i1 %or.cond426, label %.backedge376, label %462

.backedge376:                                     ; preds = %465, %455
  %.be377 = fadd double %453, %.1389
  store double %.be377, ptr %12, align 8, !tbaa !9
  %.1.be = fmul double %.1389, 2.000000e+00
  %458 = fcmp oge double %.be377, 0.000000e+00
  %459 = fneg double %.be377
  %460 = select i1 %458, double %.be377, double %459
  %461 = fcmp olt double %460, 1.000000e+00
  br i1 %461, label %451, label %.loopexit375

462:                                              ; preds = %455
  %463 = fmul double %33, %.6
  %464 = fmul double %33, %453
  store double %464, ptr %12, align 8, !tbaa !9
  br label %.loopexit375

465:                                              ; preds = %451
  %466 = fmul double %33, %452
  %467 = fcmp ogt double %449, %466
  br i1 %467, label %.backedge376, label %.loopexit375

.loopexit375:                                     ; preds = %.backedge376, %465, %439, %462
  %468 = phi double [ %464, %462 ], [ %.pr369, %439 ], [ %.be377, %.backedge376 ], [ %453, %465 ]
  %.7 = phi double [ %463, %462 ], [ %.6, %439 ], [ %.6, %465 ], [ %.6, %.backedge376 ]
  %469 = fdiv double %.7, %468
  %470 = getelementptr inbounds double, ptr %13, i64 %.5341394
  store double %469, ptr %470, align 8, !tbaa !9
  %471 = add nuw nsw i64 %.5341394, 1
  %.not362.not = icmp slt i64 %.5341394, %296
  br i1 %.not362.not, label %409, label %.loopexit378.loopexit, !llvm.loop !18

.loopexit378.loopexit:                            ; preds = %.loopexit375
  %.pre = load i64, ptr %1, align 8, !tbaa !5
  br label %.loopexit378

.loopexit378:                                     ; preds = %402, %297, %359, %326, %.loopexit378.loopexit
  %472 = phi i64 [ %.pre, %.loopexit378.loopexit ], [ %296, %326 ], [ %296, %359 ], [ %296, %297 ], [ %296, %402 ]
  %473 = icmp sgt i64 %472, 1
  br i1 %473, label %.lr.ph406, label %.loopexit372

.lr.ph406:                                        ; preds = %.loopexit378, %483
  %.6342404 = phi i64 [ %474, %483 ], [ %472, %.loopexit378 ]
  %474 = add nsw i64 %.6342404, -1
  %475 = getelementptr inbounds i64, ptr %14, i64 %474
  %476 = load i64, ptr %475, align 8, !tbaa !5
  %477 = icmp eq i64 %476, 0
  %478 = getelementptr inbounds double, ptr %13, i64 %.6342404
  %479 = load double, ptr %478, align 8, !tbaa !9
  %480 = getelementptr inbounds double, ptr %13, i64 %474
  %481 = load double, ptr %480, align 8, !tbaa !9
  br i1 %477, label %483, label %482

482:                                              ; preds = %.lr.ph406
  store double %479, ptr %480, align 8, !tbaa !9
  br label %483

483:                                              ; preds = %.lr.ph406, %482
  %.sink484 = phi ptr [ %478, %482 ], [ %480, %.lr.ph406 ]
  %.sink487.in = getelementptr inbounds double, ptr %16, i64 %474
  %.sink487 = load double, ptr %.sink487.in, align 8, !tbaa !9
  %484 = fneg double %.sink487
  %485 = call double @llvm.fmuladd.f64(double %484, double %479, double %481)
  store double %485, ptr %.sink484, align 8, !tbaa !9
  %486 = icmp ugt i64 %.6342404, 2
  br i1 %486, label %.lr.ph406, label %.loopexit372, !llvm.loop !19

.loopexit372:                                     ; preds = %483, %.loopexit370, %230, %.preheader, %182, %146, %407, %.loopexit378, %.preheader371, %28, %.loopexit450, %.loopexit451, %.loopexit460, %.loopexit461, %.thread
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #5
  ret i32 0
}

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

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

declare double @dlamch_(ptr noundef) local_unnamed_addr #2

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

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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.abs.i64(i64, i1 immarg) #4

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

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

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


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