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

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

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

53:                                               ; preds = %4
  %54 = load ptr, ptr %9, align 8, !tbaa !5
  store i64 -1, ptr %54, align 8, !tbaa !9
  %55 = load ptr, ptr %9, align 8, !tbaa !5
  %56 = load i64, ptr %55, align 8, !tbaa !9
  %57 = sub nsw i64 0, %56
  store i64 %57, ptr %10, align 8, !tbaa !9
  %58 = call i32 @xerbla_(ptr noundef @.str, ptr noundef %10)
  store i32 0, ptr %5, align 4
  store i32 1, ptr %44, align 4
  br label %857

59:                                               ; preds = %4
  %60 = load ptr, ptr %6, align 8, !tbaa !5
  %61 = load i64, ptr %60, align 8, !tbaa !9
  %62 = icmp sle i64 %61, 1
  br i1 %62, label %63, label %64

63:                                               ; preds = %59
  store i32 0, ptr %5, align 4
  store i32 1, ptr %44, align 4
  br label %857

64:                                               ; preds = %59
  %65 = call double @dlamch_(ptr noundef @.str.1)
  store double %65, ptr %25, align 8, !tbaa !11
  %66 = load double, ptr %25, align 8, !tbaa !11
  store double %66, ptr %11, align 8, !tbaa !11
  %67 = load double, ptr %11, align 8, !tbaa !11
  %68 = load double, ptr %11, align 8, !tbaa !11
  %69 = fmul double %67, %68
  store double %69, ptr %28, align 8, !tbaa !11
  %70 = call double @dlamch_(ptr noundef @.str.2)
  store double %70, ptr %38, align 8, !tbaa !11
  %71 = load double, ptr %38, align 8, !tbaa !11
  %72 = fdiv double 1.000000e+00, %71
  store double %72, ptr %39, align 8, !tbaa !11
  %73 = load double, ptr %39, align 8, !tbaa !11
  %74 = call double @sqrt(double noundef %73) #5
  %75 = fdiv double %74, 3.000000e+00
  store double %75, ptr %43, align 8, !tbaa !11
  %76 = load double, ptr %38, align 8, !tbaa !11
  %77 = call double @sqrt(double noundef %76) #5
  %78 = load double, ptr %28, align 8, !tbaa !11
  %79 = fdiv double %77, %78
  store double %79, ptr %41, align 8, !tbaa !11
  %80 = load ptr, ptr %6, align 8, !tbaa !5
  %81 = load i64, ptr %80, align 8, !tbaa !9
  %82 = mul nsw i64 %81, 30
  store i64 %82, ptr %42, align 8, !tbaa !9
  store double 0.000000e+00, ptr %34, align 8, !tbaa !11
  store i64 0, ptr %31, align 8, !tbaa !9
  store i64 1, ptr %21, align 8, !tbaa !9
  br label %83

83:                                               ; preds = %826, %174, %64
  %84 = load i64, ptr %21, align 8, !tbaa !9
  %85 = load ptr, ptr %6, align 8, !tbaa !5
  %86 = load i64, ptr %85, align 8, !tbaa !9
  %87 = icmp sgt i64 %84, %86
  br i1 %87, label %88, label %89

88:                                               ; preds = %83
  br label %850

89:                                               ; preds = %83
  %90 = load i64, ptr %21, align 8, !tbaa !9
  %91 = icmp sgt i64 %90, 1
  br i1 %91, label %92, label %97

92:                                               ; preds = %89
  %93 = load ptr, ptr %8, align 8, !tbaa !5
  %94 = load i64, ptr %21, align 8, !tbaa !9
  %95 = sub nsw i64 %94, 1
  %96 = getelementptr inbounds double, ptr %93, i64 %95
  store double 0.000000e+00, ptr %96, align 8, !tbaa !11
  br label %97

97:                                               ; preds = %92, %89
  %98 = load ptr, ptr %6, align 8, !tbaa !5
  %99 = load i64, ptr %98, align 8, !tbaa !9
  %100 = sub nsw i64 %99, 1
  store i64 %100, ptr %10, align 8, !tbaa !9
  %101 = load i64, ptr %21, align 8, !tbaa !9
  store i64 %101, ptr %17, align 8, !tbaa !9
  br label %102

102:                                              ; preds = %158, %97
  %103 = load i64, ptr %17, align 8, !tbaa !9
  %104 = load i64, ptr %10, align 8, !tbaa !9
  %105 = icmp sle i64 %103, %104
  br i1 %105, label %106, label %161

106:                                              ; preds = %102
  %107 = load ptr, ptr %8, align 8, !tbaa !5
  %108 = load i64, ptr %17, align 8, !tbaa !9
  %109 = getelementptr inbounds double, ptr %107, i64 %108
  %110 = load double, ptr %109, align 8, !tbaa !11
  store double %110, ptr %13, align 8, !tbaa !11
  %111 = load double, ptr %13, align 8, !tbaa !11
  %112 = fcmp oge double %111, 0.000000e+00
  br i1 %112, label %113, label %115

113:                                              ; preds = %106
  %114 = load double, ptr %13, align 8, !tbaa !11
  br label %118

115:                                              ; preds = %106
  %116 = load double, ptr %13, align 8, !tbaa !11
  %117 = fneg double %116
  br label %118

118:                                              ; preds = %115, %113
  %119 = phi double [ %114, %113 ], [ %117, %115 ]
  %120 = load ptr, ptr %7, align 8, !tbaa !5
  %121 = load i64, ptr %17, align 8, !tbaa !9
  %122 = getelementptr inbounds double, ptr %120, i64 %121
  %123 = load double, ptr %122, align 8, !tbaa !11
  store double %123, ptr %11, align 8, !tbaa !11
  %124 = load double, ptr %11, align 8, !tbaa !11
  %125 = fcmp oge double %124, 0.000000e+00
  br i1 %125, label %126, label %128

126:                                              ; preds = %118
  %127 = load double, ptr %11, align 8, !tbaa !11
  br label %131

128:                                              ; preds = %118
  %129 = load double, ptr %11, align 8, !tbaa !11
  %130 = fneg double %129
  br label %131

131:                                              ; preds = %128, %126
  %132 = phi double [ %127, %126 ], [ %130, %128 ]
  %133 = call double @sqrt(double noundef %132) #5
  %134 = load ptr, ptr %7, align 8, !tbaa !5
  %135 = load i64, ptr %17, align 8, !tbaa !9
  %136 = add nsw i64 %135, 1
  %137 = getelementptr inbounds double, ptr %134, i64 %136
  %138 = load double, ptr %137, align 8, !tbaa !11
  store double %138, ptr %12, align 8, !tbaa !11
  %139 = load double, ptr %12, align 8, !tbaa !11
  %140 = fcmp oge double %139, 0.000000e+00
  br i1 %140, label %141, label %143

141:                                              ; preds = %131
  %142 = load double, ptr %12, align 8, !tbaa !11
  br label %146

143:                                              ; preds = %131
  %144 = load double, ptr %12, align 8, !tbaa !11
  %145 = fneg double %144
  br label %146

146:                                              ; preds = %143, %141
  %147 = phi double [ %142, %141 ], [ %145, %143 ]
  %148 = call double @sqrt(double noundef %147) #5
  %149 = fmul double %133, %148
  %150 = load double, ptr %25, align 8, !tbaa !11
  %151 = fmul double %149, %150
  %152 = fcmp ole double %119, %151
  br i1 %152, label %153, label %157

153:                                              ; preds = %146
  %154 = load ptr, ptr %8, align 8, !tbaa !5
  %155 = load i64, ptr %17, align 8, !tbaa !9
  %156 = getelementptr inbounds double, ptr %154, i64 %155
  store double 0.000000e+00, ptr %156, align 8, !tbaa !11
  br label %164

157:                                              ; preds = %146
  br label %158

158:                                              ; preds = %157
  %159 = load i64, ptr %17, align 8, !tbaa !9
  %160 = add nsw i64 %159, 1
  store i64 %160, ptr %17, align 8, !tbaa !9
  br label %102, !llvm.loop !13

161:                                              ; preds = %102
  %162 = load ptr, ptr %6, align 8, !tbaa !5
  %163 = load i64, ptr %162, align 8, !tbaa !9
  store i64 %163, ptr %17, align 8, !tbaa !9
  br label %164

164:                                              ; preds = %161, %153
  %165 = load i64, ptr %21, align 8, !tbaa !9
  store i64 %165, ptr %16, align 8, !tbaa !9
  %166 = load i64, ptr %16, align 8, !tbaa !9
  store i64 %166, ptr %27, align 8, !tbaa !9
  %167 = load i64, ptr %17, align 8, !tbaa !9
  store i64 %167, ptr %30, align 8, !tbaa !9
  %168 = load i64, ptr %30, align 8, !tbaa !9
  store i64 %168, ptr %40, align 8, !tbaa !9
  %169 = load i64, ptr %17, align 8, !tbaa !9
  %170 = add nsw i64 %169, 1
  store i64 %170, ptr %21, align 8, !tbaa !9
  %171 = load i64, ptr %30, align 8, !tbaa !9
  %172 = load i64, ptr %16, align 8, !tbaa !9
  %173 = icmp eq i64 %171, %172
  br i1 %173, label %174, label %175

174:                                              ; preds = %164
  br label %83

175:                                              ; preds = %164
  %176 = load i64, ptr %30, align 8, !tbaa !9
  %177 = load i64, ptr %16, align 8, !tbaa !9
  %178 = sub nsw i64 %176, %177
  %179 = add nsw i64 %178, 1
  store i64 %179, ptr %10, align 8, !tbaa !9
  %180 = load ptr, ptr %7, align 8, !tbaa !5
  %181 = load i64, ptr %16, align 8, !tbaa !9
  %182 = getelementptr inbounds double, ptr %180, i64 %181
  %183 = load ptr, ptr %8, align 8, !tbaa !5
  %184 = load i64, ptr %16, align 8, !tbaa !9
  %185 = getelementptr inbounds double, ptr %183, i64 %184
  %186 = call double @dlanst_(ptr noundef @.str.3, ptr noundef %10, ptr noundef %182, ptr noundef %185)
  store double %186, ptr %35, align 8, !tbaa !11
  store i64 0, ptr %36, align 8, !tbaa !9
  %187 = load double, ptr %35, align 8, !tbaa !11
  %188 = load double, ptr %43, align 8, !tbaa !11
  %189 = fcmp ogt double %187, %188
  br i1 %189, label %190, label %210

190:                                              ; preds = %175
  store i64 1, ptr %36, align 8, !tbaa !9
  %191 = load i64, ptr %30, align 8, !tbaa !9
  %192 = load i64, ptr %16, align 8, !tbaa !9
  %193 = sub nsw i64 %191, %192
  %194 = add nsw i64 %193, 1
  store i64 %194, ptr %10, align 8, !tbaa !9
  %195 = load ptr, ptr %7, align 8, !tbaa !5
  %196 = load i64, ptr %16, align 8, !tbaa !9
  %197 = getelementptr inbounds double, ptr %195, i64 %196
  %198 = load ptr, ptr %6, align 8, !tbaa !5
  %199 = load ptr, ptr %9, align 8, !tbaa !5
  %200 = call i32 @dlascl_(ptr noundef @.str.4, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %35, ptr noundef %43, ptr noundef %10, ptr noundef @c__1, ptr noundef %197, ptr noundef %198, ptr noundef %199)
  %201 = load i64, ptr %30, align 8, !tbaa !9
  %202 = load i64, ptr %16, align 8, !tbaa !9
  %203 = sub nsw i64 %201, %202
  store i64 %203, ptr %10, align 8, !tbaa !9
  %204 = load ptr, ptr %8, align 8, !tbaa !5
  %205 = load i64, ptr %16, align 8, !tbaa !9
  %206 = getelementptr inbounds double, ptr %204, i64 %205
  %207 = load ptr, ptr %6, align 8, !tbaa !5
  %208 = load ptr, ptr %9, align 8, !tbaa !5
  %209 = call i32 @dlascl_(ptr noundef @.str.4, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %35, ptr noundef %43, ptr noundef %10, ptr noundef @c__1, ptr noundef %206, ptr noundef %207, ptr noundef %208)
  br label %235

210:                                              ; preds = %175
  %211 = load double, ptr %35, align 8, !tbaa !11
  %212 = load double, ptr %41, align 8, !tbaa !11
  %213 = fcmp olt double %211, %212
  br i1 %213, label %214, label %234

214:                                              ; preds = %210
  store i64 2, ptr %36, align 8, !tbaa !9
  %215 = load i64, ptr %30, align 8, !tbaa !9
  %216 = load i64, ptr %16, align 8, !tbaa !9
  %217 = sub nsw i64 %215, %216
  %218 = add nsw i64 %217, 1
  store i64 %218, ptr %10, align 8, !tbaa !9
  %219 = load ptr, ptr %7, align 8, !tbaa !5
  %220 = load i64, ptr %16, align 8, !tbaa !9
  %221 = getelementptr inbounds double, ptr %219, i64 %220
  %222 = load ptr, ptr %6, align 8, !tbaa !5
  %223 = load ptr, ptr %9, align 8, !tbaa !5
  %224 = call i32 @dlascl_(ptr noundef @.str.4, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %35, ptr noundef %41, ptr noundef %10, ptr noundef @c__1, ptr noundef %221, ptr noundef %222, ptr noundef %223)
  %225 = load i64, ptr %30, align 8, !tbaa !9
  %226 = load i64, ptr %16, align 8, !tbaa !9
  %227 = sub nsw i64 %225, %226
  store i64 %227, ptr %10, align 8, !tbaa !9
  %228 = load ptr, ptr %8, align 8, !tbaa !5
  %229 = load i64, ptr %16, align 8, !tbaa !9
  %230 = getelementptr inbounds double, ptr %228, i64 %229
  %231 = load ptr, ptr %6, align 8, !tbaa !5
  %232 = load ptr, ptr %9, align 8, !tbaa !5
  %233 = call i32 @dlascl_(ptr noundef @.str.4, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %35, ptr noundef %41, ptr noundef %10, ptr noundef @c__1, ptr noundef %230, ptr noundef %231, ptr noundef %232)
  br label %234

234:                                              ; preds = %214, %210
  br label %235

235:                                              ; preds = %234, %190
  %236 = load i64, ptr %30, align 8, !tbaa !9
  %237 = sub nsw i64 %236, 1
  store i64 %237, ptr %10, align 8, !tbaa !9
  %238 = load i64, ptr %16, align 8, !tbaa !9
  store i64 %238, ptr %15, align 8, !tbaa !9
  br label %239

239:                                              ; preds = %254, %235
  %240 = load i64, ptr %15, align 8, !tbaa !9
  %241 = load i64, ptr %10, align 8, !tbaa !9
  %242 = icmp sle i64 %240, %241
  br i1 %242, label %243, label %257

243:                                              ; preds = %239
  %244 = load ptr, ptr %8, align 8, !tbaa !5
  %245 = load i64, ptr %15, align 8, !tbaa !9
  %246 = getelementptr inbounds double, ptr %244, i64 %245
  %247 = load double, ptr %246, align 8, !tbaa !11
  store double %247, ptr %11, align 8, !tbaa !11
  %248 = load double, ptr %11, align 8, !tbaa !11
  %249 = load double, ptr %11, align 8, !tbaa !11
  %250 = fmul double %248, %249
  %251 = load ptr, ptr %8, align 8, !tbaa !5
  %252 = load i64, ptr %15, align 8, !tbaa !9
  %253 = getelementptr inbounds double, ptr %251, i64 %252
  store double %250, ptr %253, align 8, !tbaa !11
  br label %254

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

257:                                              ; preds = %239
  %258 = load ptr, ptr %7, align 8, !tbaa !5
  %259 = load i64, ptr %30, align 8, !tbaa !9
  %260 = getelementptr inbounds double, ptr %258, i64 %259
  %261 = load double, ptr %260, align 8, !tbaa !11
  store double %261, ptr %11, align 8, !tbaa !11
  %262 = load double, ptr %11, align 8, !tbaa !11
  %263 = fcmp oge double %262, 0.000000e+00
  br i1 %263, label %264, label %266

264:                                              ; preds = %257
  %265 = load double, ptr %11, align 8, !tbaa !11
  br label %269

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

269:                                              ; preds = %266, %264
  %270 = phi double [ %265, %264 ], [ %268, %266 ]
  %271 = load ptr, ptr %7, align 8, !tbaa !5
  %272 = load i64, ptr %16, align 8, !tbaa !9
  %273 = getelementptr inbounds double, ptr %271, i64 %272
  %274 = load double, ptr %273, align 8, !tbaa !11
  store double %274, ptr %12, align 8, !tbaa !11
  %275 = load double, ptr %12, align 8, !tbaa !11
  %276 = fcmp oge double %275, 0.000000e+00
  br i1 %276, label %277, label %279

277:                                              ; preds = %269
  %278 = load double, ptr %12, align 8, !tbaa !11
  br label %282

279:                                              ; preds = %269
  %280 = load double, ptr %12, align 8, !tbaa !11
  %281 = fneg double %280
  br label %282

282:                                              ; preds = %279, %277
  %283 = phi double [ %278, %277 ], [ %281, %279 ]
  %284 = fcmp olt double %270, %283
  br i1 %284, label %285, label %288

285:                                              ; preds = %282
  %286 = load i64, ptr %27, align 8, !tbaa !9
  store i64 %286, ptr %30, align 8, !tbaa !9
  %287 = load i64, ptr %40, align 8, !tbaa !9
  store i64 %287, ptr %16, align 8, !tbaa !9
  br label %288

288:                                              ; preds = %285, %282
  %289 = load i64, ptr %30, align 8, !tbaa !9
  %290 = load i64, ptr %16, align 8, !tbaa !9
  %291 = icmp sge i64 %289, %290
  br i1 %291, label %292, label %543

292:                                              ; preds = %288
  br label %293

293:                                              ; preds = %541, %518, %402, %292
  %294 = load i64, ptr %16, align 8, !tbaa !9
  %295 = load i64, ptr %30, align 8, !tbaa !9
  %296 = icmp ne i64 %294, %295
  br i1 %296, label %297, label %347

297:                                              ; preds = %293
  %298 = load i64, ptr %30, align 8, !tbaa !9
  %299 = sub nsw i64 %298, 1
  store i64 %299, ptr %10, align 8, !tbaa !9
  %300 = load i64, ptr %16, align 8, !tbaa !9
  store i64 %300, ptr %17, align 8, !tbaa !9
  br label %301

301:                                              ; preds = %343, %297
  %302 = load i64, ptr %17, align 8, !tbaa !9
  %303 = load i64, ptr %10, align 8, !tbaa !9
  %304 = icmp sle i64 %302, %303
  br i1 %304, label %305, label %346

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

312:                                              ; preds = %305
  %313 = load double, ptr %12, align 8, !tbaa !11
  br label %317

314:                                              ; preds = %305
  %315 = load double, ptr %12, align 8, !tbaa !11
  %316 = fneg double %315
  br label %317

317:                                              ; preds = %314, %312
  %318 = phi double [ %313, %312 ], [ %316, %314 ]
  %319 = load double, ptr %28, align 8, !tbaa !11
  %320 = load ptr, ptr %7, align 8, !tbaa !5
  %321 = load i64, ptr %17, 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 %7, align 8, !tbaa !5
  %325 = load i64, ptr %17, align 8, !tbaa !9
  %326 = add nsw i64 %325, 1
  %327 = getelementptr inbounds double, ptr %324, i64 %326
  %328 = load double, ptr %327, align 8, !tbaa !11
  %329 = fmul double %323, %328
  store double %329, ptr %11, align 8, !tbaa !11
  %330 = load double, ptr %11, align 8, !tbaa !11
  %331 = fcmp oge double %330, 0.000000e+00
  br i1 %331, label %332, label %334

332:                                              ; preds = %317
  %333 = load double, ptr %11, align 8, !tbaa !11
  br label %337

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

337:                                              ; preds = %334, %332
  %338 = phi double [ %333, %332 ], [ %336, %334 ]
  %339 = fmul double %319, %338
  %340 = fcmp ole double %318, %339
  br i1 %340, label %341, label %342

341:                                              ; preds = %337
  br label %349

342:                                              ; preds = %337
  br label %343

343:                                              ; preds = %342
  %344 = load i64, ptr %17, align 8, !tbaa !9
  %345 = add nsw i64 %344, 1
  store i64 %345, ptr %17, align 8, !tbaa !9
  br label %301, !llvm.loop !16

346:                                              ; preds = %301
  br label %347

347:                                              ; preds = %346, %293
  %348 = load i64, ptr %30, align 8, !tbaa !9
  store i64 %348, ptr %17, align 8, !tbaa !9
  br label %349

349:                                              ; preds = %347, %341
  %350 = load i64, ptr %17, align 8, !tbaa !9
  %351 = load i64, ptr %30, align 8, !tbaa !9
  %352 = icmp slt i64 %350, %351
  br i1 %352, label %353, label %357

353:                                              ; preds = %349
  %354 = load ptr, ptr %8, align 8, !tbaa !5
  %355 = load i64, ptr %17, align 8, !tbaa !9
  %356 = getelementptr inbounds double, ptr %354, i64 %355
  store double 0.000000e+00, ptr %356, align 8, !tbaa !11
  br label %357

357:                                              ; preds = %353, %349
  %358 = load ptr, ptr %7, align 8, !tbaa !5
  %359 = load i64, ptr %16, align 8, !tbaa !9
  %360 = getelementptr inbounds double, ptr %358, i64 %359
  %361 = load double, ptr %360, align 8, !tbaa !11
  store double %361, ptr %18, align 8, !tbaa !11
  %362 = load i64, ptr %17, align 8, !tbaa !9
  %363 = load i64, ptr %16, align 8, !tbaa !9
  %364 = icmp eq i64 %362, %363
  br i1 %364, label %365, label %366

365:                                              ; preds = %357
  br label %531

366:                                              ; preds = %357
  %367 = load i64, ptr %17, align 8, !tbaa !9
  %368 = load i64, ptr %16, align 8, !tbaa !9
  %369 = add nsw i64 %368, 1
  %370 = icmp eq i64 %367, %369
  br i1 %370, label %371, label %404

371:                                              ; preds = %366
  %372 = load ptr, ptr %8, align 8, !tbaa !5
  %373 = load i64, ptr %16, align 8, !tbaa !9
  %374 = getelementptr inbounds double, ptr %372, i64 %373
  %375 = load double, ptr %374, align 8, !tbaa !11
  %376 = call double @sqrt(double noundef %375) #5
  store double %376, ptr %26, align 8, !tbaa !11
  %377 = load ptr, ptr %7, align 8, !tbaa !5
  %378 = load i64, ptr %16, align 8, !tbaa !9
  %379 = getelementptr inbounds double, ptr %377, i64 %378
  %380 = load ptr, ptr %7, align 8, !tbaa !5
  %381 = load i64, ptr %16, align 8, !tbaa !9
  %382 = add nsw i64 %381, 1
  %383 = getelementptr inbounds double, ptr %380, i64 %382
  %384 = call i32 @dlae2_(ptr noundef %379, ptr noundef %26, ptr noundef %383, ptr noundef %23, ptr noundef %24)
  %385 = load double, ptr %23, align 8, !tbaa !11
  %386 = load ptr, ptr %7, align 8, !tbaa !5
  %387 = load i64, ptr %16, align 8, !tbaa !9
  %388 = getelementptr inbounds double, ptr %386, i64 %387
  store double %385, ptr %388, align 8, !tbaa !11
  %389 = load double, ptr %24, align 8, !tbaa !11
  %390 = load ptr, ptr %7, align 8, !tbaa !5
  %391 = load i64, ptr %16, align 8, !tbaa !9
  %392 = add nsw i64 %391, 1
  %393 = getelementptr inbounds double, ptr %390, i64 %392
  store double %389, ptr %393, align 8, !tbaa !11
  %394 = load ptr, ptr %8, align 8, !tbaa !5
  %395 = load i64, ptr %16, align 8, !tbaa !9
  %396 = getelementptr inbounds double, ptr %394, i64 %395
  store double 0.000000e+00, ptr %396, align 8, !tbaa !11
  %397 = load i64, ptr %16, align 8, !tbaa !9
  %398 = add nsw i64 %397, 2
  store i64 %398, ptr %16, align 8, !tbaa !9
  %399 = load i64, ptr %16, align 8, !tbaa !9
  %400 = load i64, ptr %30, align 8, !tbaa !9
  %401 = icmp sle i64 %399, %400
  br i1 %401, label %402, label %403

402:                                              ; preds = %371
  br label %293

403:                                              ; preds = %371
  br label %794

404:                                              ; preds = %366
  %405 = load i64, ptr %31, align 8, !tbaa !9
  %406 = load i64, ptr %42, align 8, !tbaa !9
  %407 = icmp eq i64 %405, %406
  br i1 %407, label %408, label %409

408:                                              ; preds = %404
  br label %794

409:                                              ; preds = %404
  %410 = load i64, ptr %31, align 8, !tbaa !9
  %411 = add nsw i64 %410, 1
  store i64 %411, ptr %31, align 8, !tbaa !9
  %412 = load ptr, ptr %8, align 8, !tbaa !5
  %413 = load i64, ptr %16, align 8, !tbaa !9
  %414 = getelementptr inbounds double, ptr %412, i64 %413
  %415 = load double, ptr %414, align 8, !tbaa !11
  %416 = call double @sqrt(double noundef %415) #5
  store double %416, ptr %26, align 8, !tbaa !11
  %417 = load ptr, ptr %7, align 8, !tbaa !5
  %418 = load i64, ptr %16, align 8, !tbaa !9
  %419 = add nsw i64 %418, 1
  %420 = getelementptr inbounds double, ptr %417, i64 %419
  %421 = load double, ptr %420, align 8, !tbaa !11
  %422 = load double, ptr %18, align 8, !tbaa !11
  %423 = fsub double %421, %422
  %424 = load double, ptr %26, align 8, !tbaa !11
  %425 = fmul double %424, 2.000000e+00
  %426 = fdiv double %423, %425
  store double %426, ptr %34, align 8, !tbaa !11
  %427 = call double @dlapy2_(ptr noundef %34, ptr noundef @c_b32)
  store double %427, ptr %19, align 8, !tbaa !11
  %428 = load double, ptr %18, align 8, !tbaa !11
  %429 = load double, ptr %26, align 8, !tbaa !11
  %430 = load double, ptr %34, align 8, !tbaa !11
  %431 = call double @d_sign(ptr noundef %19, ptr noundef %34)
  %432 = fadd double %430, %431
  %433 = fdiv double %429, %432
  %434 = fsub double %428, %433
  store double %434, ptr %34, align 8, !tbaa !11
  store double 1.000000e+00, ptr %14, align 8, !tbaa !11
  store double 0.000000e+00, ptr %20, align 8, !tbaa !11
  %435 = load ptr, ptr %7, align 8, !tbaa !5
  %436 = load i64, ptr %17, align 8, !tbaa !9
  %437 = getelementptr inbounds double, ptr %435, i64 %436
  %438 = load double, ptr %437, align 8, !tbaa !11
  %439 = load double, ptr %34, align 8, !tbaa !11
  %440 = fsub double %438, %439
  store double %440, ptr %32, align 8, !tbaa !11
  %441 = load double, ptr %32, align 8, !tbaa !11
  %442 = load double, ptr %32, align 8, !tbaa !11
  %443 = fmul double %441, %442
  store double %443, ptr %18, align 8, !tbaa !11
  %444 = load i64, ptr %16, align 8, !tbaa !9
  store i64 %444, ptr %10, align 8, !tbaa !9
  %445 = load i64, ptr %17, align 8, !tbaa !9
  %446 = sub nsw i64 %445, 1
  store i64 %446, ptr %15, align 8, !tbaa !9
  br label %447

447:                                              ; preds = %515, %409
  %448 = load i64, ptr %15, align 8, !tbaa !9
  %449 = load i64, ptr %10, align 8, !tbaa !9
  %450 = icmp sge i64 %448, %449
  br i1 %450, label %451, label %518

451:                                              ; preds = %447
  %452 = load ptr, ptr %8, align 8, !tbaa !5
  %453 = load i64, ptr %15, align 8, !tbaa !9
  %454 = getelementptr inbounds double, ptr %452, i64 %453
  %455 = load double, ptr %454, align 8, !tbaa !11
  store double %455, ptr %22, align 8, !tbaa !11
  %456 = load double, ptr %18, align 8, !tbaa !11
  %457 = load double, ptr %22, align 8, !tbaa !11
  %458 = fadd double %456, %457
  store double %458, ptr %19, align 8, !tbaa !11
  %459 = load i64, ptr %15, align 8, !tbaa !9
  %460 = load i64, ptr %17, align 8, !tbaa !9
  %461 = sub nsw i64 %460, 1
  %462 = icmp ne i64 %459, %461
  br i1 %462, label %463, label %471

463:                                              ; preds = %451
  %464 = load double, ptr %20, align 8, !tbaa !11
  %465 = load double, ptr %19, align 8, !tbaa !11
  %466 = fmul double %464, %465
  %467 = load ptr, ptr %8, align 8, !tbaa !5
  %468 = load i64, ptr %15, align 8, !tbaa !9
  %469 = add nsw i64 %468, 1
  %470 = getelementptr inbounds double, ptr %467, i64 %469
  store double %466, ptr %470, align 8, !tbaa !11
  br label %471

471:                                              ; preds = %463, %451
  %472 = load double, ptr %14, align 8, !tbaa !11
  store double %472, ptr %29, align 8, !tbaa !11
  %473 = load double, ptr %18, align 8, !tbaa !11
  %474 = load double, ptr %19, align 8, !tbaa !11
  %475 = fdiv double %473, %474
  store double %475, ptr %14, align 8, !tbaa !11
  %476 = load double, ptr %22, align 8, !tbaa !11
  %477 = load double, ptr %19, align 8, !tbaa !11
  %478 = fdiv double %476, %477
  store double %478, ptr %20, align 8, !tbaa !11
  %479 = load double, ptr %32, align 8, !tbaa !11
  store double %479, ptr %37, align 8, !tbaa !11
  %480 = load ptr, ptr %7, align 8, !tbaa !5
  %481 = load i64, ptr %15, align 8, !tbaa !9
  %482 = getelementptr inbounds double, ptr %480, i64 %481
  %483 = load double, ptr %482, align 8, !tbaa !11
  store double %483, ptr %33, align 8, !tbaa !11
  %484 = load double, ptr %14, align 8, !tbaa !11
  %485 = load double, ptr %33, align 8, !tbaa !11
  %486 = load double, ptr %34, align 8, !tbaa !11
  %487 = fsub double %485, %486
  %488 = load double, ptr %20, align 8, !tbaa !11
  %489 = load double, ptr %37, align 8, !tbaa !11
  %490 = fmul double %488, %489
  %491 = fneg double %490
  %492 = call double @llvm.fmuladd.f64(double %484, double %487, double %491)
  store double %492, ptr %32, align 8, !tbaa !11
  %493 = load double, ptr %37, align 8, !tbaa !11
  %494 = load double, ptr %33, align 8, !tbaa !11
  %495 = load double, ptr %32, align 8, !tbaa !11
  %496 = fsub double %494, %495
  %497 = fadd double %493, %496
  %498 = load ptr, ptr %7, align 8, !tbaa !5
  %499 = load i64, ptr %15, align 8, !tbaa !9
  %500 = add nsw i64 %499, 1
  %501 = getelementptr inbounds double, ptr %498, i64 %500
  store double %497, ptr %501, align 8, !tbaa !11
  %502 = load double, ptr %14, align 8, !tbaa !11
  %503 = fcmp une double %502, 0.000000e+00
  br i1 %503, label %504, label %510

504:                                              ; preds = %471
  %505 = load double, ptr %32, align 8, !tbaa !11
  %506 = load double, ptr %32, align 8, !tbaa !11
  %507 = fmul double %505, %506
  %508 = load double, ptr %14, align 8, !tbaa !11
  %509 = fdiv double %507, %508
  store double %509, ptr %18, align 8, !tbaa !11
  br label %514

510:                                              ; preds = %471
  %511 = load double, ptr %29, align 8, !tbaa !11
  %512 = load double, ptr %22, align 8, !tbaa !11
  %513 = fmul double %511, %512
  store double %513, ptr %18, align 8, !tbaa !11
  br label %514

514:                                              ; preds = %510, %504
  br label %515

515:                                              ; preds = %514
  %516 = load i64, ptr %15, align 8, !tbaa !9
  %517 = add nsw i64 %516, -1
  store i64 %517, ptr %15, align 8, !tbaa !9
  br label %447, !llvm.loop !17

518:                                              ; preds = %447
  %519 = load double, ptr %20, align 8, !tbaa !11
  %520 = load double, ptr %18, align 8, !tbaa !11
  %521 = fmul double %519, %520
  %522 = load ptr, ptr %8, align 8, !tbaa !5
  %523 = load i64, ptr %16, align 8, !tbaa !9
  %524 = getelementptr inbounds double, ptr %522, i64 %523
  store double %521, ptr %524, align 8, !tbaa !11
  %525 = load double, ptr %34, align 8, !tbaa !11
  %526 = load double, ptr %32, align 8, !tbaa !11
  %527 = fadd double %525, %526
  %528 = load ptr, ptr %7, align 8, !tbaa !5
  %529 = load i64, ptr %16, align 8, !tbaa !9
  %530 = getelementptr inbounds double, ptr %528, i64 %529
  store double %527, ptr %530, align 8, !tbaa !11
  br label %293

531:                                              ; preds = %365
  %532 = load double, ptr %18, align 8, !tbaa !11
  %533 = load ptr, ptr %7, align 8, !tbaa !5
  %534 = load i64, ptr %16, align 8, !tbaa !9
  %535 = getelementptr inbounds double, ptr %533, i64 %534
  store double %532, ptr %535, align 8, !tbaa !11
  %536 = load i64, ptr %16, align 8, !tbaa !9
  %537 = add nsw i64 %536, 1
  store i64 %537, ptr %16, align 8, !tbaa !9
  %538 = load i64, ptr %16, align 8, !tbaa !9
  %539 = load i64, ptr %30, align 8, !tbaa !9
  %540 = icmp sle i64 %538, %539
  br i1 %540, label %541, label %542

541:                                              ; preds = %531
  br label %293

542:                                              ; preds = %531
  br label %794

543:                                              ; preds = %288
  br label %544

544:                                              ; preds = %792, %768, %652, %543
  %545 = load i64, ptr %30, align 8, !tbaa !9
  %546 = add nsw i64 %545, 1
  store i64 %546, ptr %10, align 8, !tbaa !9
  %547 = load i64, ptr %16, align 8, !tbaa !9
  store i64 %547, ptr %17, align 8, !tbaa !9
  br label %548

548:                                              ; preds = %591, %544
  %549 = load i64, ptr %17, align 8, !tbaa !9
  %550 = load i64, ptr %10, align 8, !tbaa !9
  %551 = icmp sge i64 %549, %550
  br i1 %551, label %552, label %594

552:                                              ; preds = %548
  %553 = load ptr, ptr %8, align 8, !tbaa !5
  %554 = load i64, ptr %17, align 8, !tbaa !9
  %555 = sub nsw i64 %554, 1
  %556 = getelementptr inbounds double, ptr %553, i64 %555
  %557 = load double, ptr %556, align 8, !tbaa !11
  store double %557, ptr %12, align 8, !tbaa !11
  %558 = load double, ptr %12, align 8, !tbaa !11
  %559 = fcmp oge double %558, 0.000000e+00
  br i1 %559, label %560, label %562

560:                                              ; preds = %552
  %561 = load double, ptr %12, align 8, !tbaa !11
  br label %565

562:                                              ; preds = %552
  %563 = load double, ptr %12, align 8, !tbaa !11
  %564 = fneg double %563
  br label %565

565:                                              ; preds = %562, %560
  %566 = phi double [ %561, %560 ], [ %564, %562 ]
  %567 = load double, ptr %28, align 8, !tbaa !11
  %568 = load ptr, ptr %7, align 8, !tbaa !5
  %569 = load i64, ptr %17, align 8, !tbaa !9
  %570 = getelementptr inbounds double, ptr %568, i64 %569
  %571 = load double, ptr %570, align 8, !tbaa !11
  %572 = load ptr, ptr %7, align 8, !tbaa !5
  %573 = load i64, ptr %17, align 8, !tbaa !9
  %574 = sub nsw i64 %573, 1
  %575 = getelementptr inbounds double, ptr %572, i64 %574
  %576 = load double, ptr %575, align 8, !tbaa !11
  %577 = fmul double %571, %576
  store double %577, ptr %11, align 8, !tbaa !11
  %578 = load double, ptr %11, align 8, !tbaa !11
  %579 = fcmp oge double %578, 0.000000e+00
  br i1 %579, label %580, label %582

580:                                              ; preds = %565
  %581 = load double, ptr %11, align 8, !tbaa !11
  br label %585

582:                                              ; preds = %565
  %583 = load double, ptr %11, align 8, !tbaa !11
  %584 = fneg double %583
  br label %585

585:                                              ; preds = %582, %580
  %586 = phi double [ %581, %580 ], [ %584, %582 ]
  %587 = fmul double %567, %586
  %588 = fcmp ole double %566, %587
  br i1 %588, label %589, label %590

589:                                              ; preds = %585
  br label %596

590:                                              ; preds = %585
  br label %591

591:                                              ; preds = %590
  %592 = load i64, ptr %17, align 8, !tbaa !9
  %593 = add nsw i64 %592, -1
  store i64 %593, ptr %17, align 8, !tbaa !9
  br label %548, !llvm.loop !18

594:                                              ; preds = %548
  %595 = load i64, ptr %30, align 8, !tbaa !9
  store i64 %595, ptr %17, align 8, !tbaa !9
  br label %596

596:                                              ; preds = %594, %589
  %597 = load i64, ptr %17, align 8, !tbaa !9
  %598 = load i64, ptr %30, align 8, !tbaa !9
  %599 = icmp sgt i64 %597, %598
  br i1 %599, label %600, label %605

600:                                              ; preds = %596
  %601 = load ptr, ptr %8, align 8, !tbaa !5
  %602 = load i64, ptr %17, align 8, !tbaa !9
  %603 = sub nsw i64 %602, 1
  %604 = getelementptr inbounds double, ptr %601, i64 %603
  store double 0.000000e+00, ptr %604, align 8, !tbaa !11
  br label %605

605:                                              ; preds = %600, %596
  %606 = load ptr, ptr %7, align 8, !tbaa !5
  %607 = load i64, ptr %16, align 8, !tbaa !9
  %608 = getelementptr inbounds double, ptr %606, i64 %607
  %609 = load double, ptr %608, align 8, !tbaa !11
  store double %609, ptr %18, align 8, !tbaa !11
  %610 = load i64, ptr %17, align 8, !tbaa !9
  %611 = load i64, ptr %16, align 8, !tbaa !9
  %612 = icmp eq i64 %610, %611
  br i1 %612, label %613, label %614

613:                                              ; preds = %605
  br label %782

614:                                              ; preds = %605
  %615 = load i64, ptr %17, align 8, !tbaa !9
  %616 = load i64, ptr %16, align 8, !tbaa !9
  %617 = sub nsw i64 %616, 1
  %618 = icmp eq i64 %615, %617
  br i1 %618, label %619, label %654

619:                                              ; preds = %614
  %620 = load ptr, ptr %8, align 8, !tbaa !5
  %621 = load i64, ptr %16, align 8, !tbaa !9
  %622 = sub nsw i64 %621, 1
  %623 = getelementptr inbounds double, ptr %620, i64 %622
  %624 = load double, ptr %623, align 8, !tbaa !11
  %625 = call double @sqrt(double noundef %624) #5
  store double %625, ptr %26, align 8, !tbaa !11
  %626 = load ptr, ptr %7, align 8, !tbaa !5
  %627 = load i64, ptr %16, align 8, !tbaa !9
  %628 = getelementptr inbounds double, ptr %626, i64 %627
  %629 = load ptr, ptr %7, align 8, !tbaa !5
  %630 = load i64, ptr %16, align 8, !tbaa !9
  %631 = sub nsw i64 %630, 1
  %632 = getelementptr inbounds double, ptr %629, i64 %631
  %633 = call i32 @dlae2_(ptr noundef %628, ptr noundef %26, ptr noundef %632, ptr noundef %23, ptr noundef %24)
  %634 = load double, ptr %23, align 8, !tbaa !11
  %635 = load ptr, ptr %7, align 8, !tbaa !5
  %636 = load i64, ptr %16, align 8, !tbaa !9
  %637 = getelementptr inbounds double, ptr %635, i64 %636
  store double %634, ptr %637, align 8, !tbaa !11
  %638 = load double, ptr %24, align 8, !tbaa !11
  %639 = load ptr, ptr %7, align 8, !tbaa !5
  %640 = load i64, ptr %16, align 8, !tbaa !9
  %641 = sub nsw i64 %640, 1
  %642 = getelementptr inbounds double, ptr %639, i64 %641
  store double %638, ptr %642, align 8, !tbaa !11
  %643 = load ptr, ptr %8, align 8, !tbaa !5
  %644 = load i64, ptr %16, align 8, !tbaa !9
  %645 = sub nsw i64 %644, 1
  %646 = getelementptr inbounds double, ptr %643, i64 %645
  store double 0.000000e+00, ptr %646, align 8, !tbaa !11
  %647 = load i64, ptr %16, align 8, !tbaa !9
  %648 = add nsw i64 %647, -2
  store i64 %648, ptr %16, align 8, !tbaa !9
  %649 = load i64, ptr %16, align 8, !tbaa !9
  %650 = load i64, ptr %30, align 8, !tbaa !9
  %651 = icmp sge i64 %649, %650
  br i1 %651, label %652, label %653

652:                                              ; preds = %619
  br label %544

653:                                              ; preds = %619
  br label %794

654:                                              ; preds = %614
  %655 = load i64, ptr %31, align 8, !tbaa !9
  %656 = load i64, ptr %42, align 8, !tbaa !9
  %657 = icmp eq i64 %655, %656
  br i1 %657, label %658, label %659

658:                                              ; preds = %654
  br label %794

659:                                              ; preds = %654
  %660 = load i64, ptr %31, align 8, !tbaa !9
  %661 = add nsw i64 %660, 1
  store i64 %661, ptr %31, align 8, !tbaa !9
  %662 = load ptr, ptr %8, align 8, !tbaa !5
  %663 = load i64, ptr %16, align 8, !tbaa !9
  %664 = sub nsw i64 %663, 1
  %665 = getelementptr inbounds double, ptr %662, i64 %664
  %666 = load double, ptr %665, align 8, !tbaa !11
  %667 = call double @sqrt(double noundef %666) #5
  store double %667, ptr %26, align 8, !tbaa !11
  %668 = load ptr, ptr %7, align 8, !tbaa !5
  %669 = load i64, ptr %16, align 8, !tbaa !9
  %670 = sub nsw i64 %669, 1
  %671 = getelementptr inbounds double, ptr %668, i64 %670
  %672 = load double, ptr %671, align 8, !tbaa !11
  %673 = load double, ptr %18, align 8, !tbaa !11
  %674 = fsub double %672, %673
  %675 = load double, ptr %26, align 8, !tbaa !11
  %676 = fmul double %675, 2.000000e+00
  %677 = fdiv double %674, %676
  store double %677, ptr %34, align 8, !tbaa !11
  %678 = call double @dlapy2_(ptr noundef %34, ptr noundef @c_b32)
  store double %678, ptr %19, align 8, !tbaa !11
  %679 = load double, ptr %18, align 8, !tbaa !11
  %680 = load double, ptr %26, align 8, !tbaa !11
  %681 = load double, ptr %34, align 8, !tbaa !11
  %682 = call double @d_sign(ptr noundef %19, ptr noundef %34)
  %683 = fadd double %681, %682
  %684 = fdiv double %680, %683
  %685 = fsub double %679, %684
  store double %685, ptr %34, align 8, !tbaa !11
  store double 1.000000e+00, ptr %14, align 8, !tbaa !11
  store double 0.000000e+00, ptr %20, align 8, !tbaa !11
  %686 = load ptr, ptr %7, align 8, !tbaa !5
  %687 = load i64, ptr %17, align 8, !tbaa !9
  %688 = getelementptr inbounds double, ptr %686, i64 %687
  %689 = load double, ptr %688, align 8, !tbaa !11
  %690 = load double, ptr %34, align 8, !tbaa !11
  %691 = fsub double %689, %690
  store double %691, ptr %32, align 8, !tbaa !11
  %692 = load double, ptr %32, align 8, !tbaa !11
  %693 = load double, ptr %32, align 8, !tbaa !11
  %694 = fmul double %692, %693
  store double %694, ptr %18, align 8, !tbaa !11
  %695 = load i64, ptr %16, align 8, !tbaa !9
  %696 = sub nsw i64 %695, 1
  store i64 %696, ptr %10, align 8, !tbaa !9
  %697 = load i64, ptr %17, align 8, !tbaa !9
  store i64 %697, ptr %15, align 8, !tbaa !9
  br label %698

698:                                              ; preds = %765, %659
  %699 = load i64, ptr %15, align 8, !tbaa !9
  %700 = load i64, ptr %10, align 8, !tbaa !9
  %701 = icmp sle i64 %699, %700
  br i1 %701, label %702, label %768

702:                                              ; preds = %698
  %703 = load ptr, ptr %8, align 8, !tbaa !5
  %704 = load i64, ptr %15, align 8, !tbaa !9
  %705 = getelementptr inbounds double, ptr %703, i64 %704
  %706 = load double, ptr %705, align 8, !tbaa !11
  store double %706, ptr %22, align 8, !tbaa !11
  %707 = load double, ptr %18, align 8, !tbaa !11
  %708 = load double, ptr %22, align 8, !tbaa !11
  %709 = fadd double %707, %708
  store double %709, ptr %19, align 8, !tbaa !11
  %710 = load i64, ptr %15, align 8, !tbaa !9
  %711 = load i64, ptr %17, align 8, !tbaa !9
  %712 = icmp ne i64 %710, %711
  br i1 %712, label %713, label %721

713:                                              ; preds = %702
  %714 = load double, ptr %20, align 8, !tbaa !11
  %715 = load double, ptr %19, align 8, !tbaa !11
  %716 = fmul double %714, %715
  %717 = load ptr, ptr %8, align 8, !tbaa !5
  %718 = load i64, ptr %15, align 8, !tbaa !9
  %719 = sub nsw i64 %718, 1
  %720 = getelementptr inbounds double, ptr %717, i64 %719
  store double %716, ptr %720, align 8, !tbaa !11
  br label %721

721:                                              ; preds = %713, %702
  %722 = load double, ptr %14, align 8, !tbaa !11
  store double %722, ptr %29, align 8, !tbaa !11
  %723 = load double, ptr %18, align 8, !tbaa !11
  %724 = load double, ptr %19, align 8, !tbaa !11
  %725 = fdiv double %723, %724
  store double %725, ptr %14, align 8, !tbaa !11
  %726 = load double, ptr %22, align 8, !tbaa !11
  %727 = load double, ptr %19, align 8, !tbaa !11
  %728 = fdiv double %726, %727
  store double %728, ptr %20, align 8, !tbaa !11
  %729 = load double, ptr %32, align 8, !tbaa !11
  store double %729, ptr %37, align 8, !tbaa !11
  %730 = load ptr, ptr %7, align 8, !tbaa !5
  %731 = load i64, ptr %15, align 8, !tbaa !9
  %732 = add nsw i64 %731, 1
  %733 = getelementptr inbounds double, ptr %730, i64 %732
  %734 = load double, ptr %733, align 8, !tbaa !11
  store double %734, ptr %33, align 8, !tbaa !11
  %735 = load double, ptr %14, align 8, !tbaa !11
  %736 = load double, ptr %33, align 8, !tbaa !11
  %737 = load double, ptr %34, align 8, !tbaa !11
  %738 = fsub double %736, %737
  %739 = load double, ptr %20, align 8, !tbaa !11
  %740 = load double, ptr %37, align 8, !tbaa !11
  %741 = fmul double %739, %740
  %742 = fneg double %741
  %743 = call double @llvm.fmuladd.f64(double %735, double %738, double %742)
  store double %743, ptr %32, align 8, !tbaa !11
  %744 = load double, ptr %37, align 8, !tbaa !11
  %745 = load double, ptr %33, align 8, !tbaa !11
  %746 = load double, ptr %32, align 8, !tbaa !11
  %747 = fsub double %745, %746
  %748 = fadd double %744, %747
  %749 = load ptr, ptr %7, align 8, !tbaa !5
  %750 = load i64, ptr %15, align 8, !tbaa !9
  %751 = getelementptr inbounds double, ptr %749, i64 %750
  store double %748, ptr %751, align 8, !tbaa !11
  %752 = load double, ptr %14, align 8, !tbaa !11
  %753 = fcmp une double %752, 0.000000e+00
  br i1 %753, label %754, label %760

754:                                              ; preds = %721
  %755 = load double, ptr %32, align 8, !tbaa !11
  %756 = load double, ptr %32, align 8, !tbaa !11
  %757 = fmul double %755, %756
  %758 = load double, ptr %14, align 8, !tbaa !11
  %759 = fdiv double %757, %758
  store double %759, ptr %18, align 8, !tbaa !11
  br label %764

760:                                              ; preds = %721
  %761 = load double, ptr %29, align 8, !tbaa !11
  %762 = load double, ptr %22, align 8, !tbaa !11
  %763 = fmul double %761, %762
  store double %763, ptr %18, align 8, !tbaa !11
  br label %764

764:                                              ; preds = %760, %754
  br label %765

765:                                              ; preds = %764
  %766 = load i64, ptr %15, align 8, !tbaa !9
  %767 = add nsw i64 %766, 1
  store i64 %767, ptr %15, align 8, !tbaa !9
  br label %698, !llvm.loop !19

768:                                              ; preds = %698
  %769 = load double, ptr %20, align 8, !tbaa !11
  %770 = load double, ptr %18, align 8, !tbaa !11
  %771 = fmul double %769, %770
  %772 = load ptr, ptr %8, align 8, !tbaa !5
  %773 = load i64, ptr %16, align 8, !tbaa !9
  %774 = sub nsw i64 %773, 1
  %775 = getelementptr inbounds double, ptr %772, i64 %774
  store double %771, ptr %775, align 8, !tbaa !11
  %776 = load double, ptr %34, align 8, !tbaa !11
  %777 = load double, ptr %32, align 8, !tbaa !11
  %778 = fadd double %776, %777
  %779 = load ptr, ptr %7, align 8, !tbaa !5
  %780 = load i64, ptr %16, align 8, !tbaa !9
  %781 = getelementptr inbounds double, ptr %779, i64 %780
  store double %778, ptr %781, align 8, !tbaa !11
  br label %544

782:                                              ; preds = %613
  %783 = load double, ptr %18, align 8, !tbaa !11
  %784 = load ptr, ptr %7, align 8, !tbaa !5
  %785 = load i64, ptr %16, align 8, !tbaa !9
  %786 = getelementptr inbounds double, ptr %784, i64 %785
  store double %783, ptr %786, align 8, !tbaa !11
  %787 = load i64, ptr %16, align 8, !tbaa !9
  %788 = add nsw i64 %787, -1
  store i64 %788, ptr %16, align 8, !tbaa !9
  %789 = load i64, ptr %16, align 8, !tbaa !9
  %790 = load i64, ptr %30, align 8, !tbaa !9
  %791 = icmp sge i64 %789, %790
  br i1 %791, label %792, label %793

792:                                              ; preds = %782
  br label %544

793:                                              ; preds = %782
  br label %794

794:                                              ; preds = %793, %658, %653, %542, %408, %403
  %795 = load i64, ptr %36, align 8, !tbaa !9
  %796 = icmp eq i64 %795, 1
  br i1 %796, label %797, label %808

797:                                              ; preds = %794
  %798 = load i64, ptr %40, align 8, !tbaa !9
  %799 = load i64, ptr %27, align 8, !tbaa !9
  %800 = sub nsw i64 %798, %799
  %801 = add nsw i64 %800, 1
  store i64 %801, ptr %10, align 8, !tbaa !9
  %802 = load ptr, ptr %7, align 8, !tbaa !5
  %803 = load i64, ptr %27, align 8, !tbaa !9
  %804 = getelementptr inbounds double, ptr %802, i64 %803
  %805 = load ptr, ptr %6, align 8, !tbaa !5
  %806 = load ptr, ptr %9, align 8, !tbaa !5
  %807 = call i32 @dlascl_(ptr noundef @.str.4, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %43, ptr noundef %35, ptr noundef %10, ptr noundef @c__1, ptr noundef %804, ptr noundef %805, ptr noundef %806)
  br label %808

808:                                              ; preds = %797, %794
  %809 = load i64, ptr %36, align 8, !tbaa !9
  %810 = icmp eq i64 %809, 2
  br i1 %810, label %811, label %822

811:                                              ; preds = %808
  %812 = load i64, ptr %40, align 8, !tbaa !9
  %813 = load i64, ptr %27, align 8, !tbaa !9
  %814 = sub nsw i64 %812, %813
  %815 = add nsw i64 %814, 1
  store i64 %815, ptr %10, align 8, !tbaa !9
  %816 = load ptr, ptr %7, align 8, !tbaa !5
  %817 = load i64, ptr %27, align 8, !tbaa !9
  %818 = getelementptr inbounds double, ptr %816, i64 %817
  %819 = load ptr, ptr %6, align 8, !tbaa !5
  %820 = load ptr, ptr %9, align 8, !tbaa !5
  %821 = call i32 @dlascl_(ptr noundef @.str.4, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %41, ptr noundef %35, ptr noundef %10, ptr noundef @c__1, ptr noundef %818, ptr noundef %819, ptr noundef %820)
  br label %822

822:                                              ; preds = %811, %808
  %823 = load i64, ptr %31, align 8, !tbaa !9
  %824 = load i64, ptr %42, align 8, !tbaa !9
  %825 = icmp slt i64 %823, %824
  br i1 %825, label %826, label %827

826:                                              ; preds = %822
  br label %83

827:                                              ; preds = %822
  %828 = load ptr, ptr %6, align 8, !tbaa !5
  %829 = load i64, ptr %828, align 8, !tbaa !9
  %830 = sub nsw i64 %829, 1
  store i64 %830, ptr %10, align 8, !tbaa !9
  store i64 1, ptr %15, align 8, !tbaa !9
  br label %831

831:                                              ; preds = %846, %827
  %832 = load i64, ptr %15, align 8, !tbaa !9
  %833 = load i64, ptr %10, align 8, !tbaa !9
  %834 = icmp sle i64 %832, %833
  br i1 %834, label %835, label %849

835:                                              ; preds = %831
  %836 = load ptr, ptr %8, align 8, !tbaa !5
  %837 = load i64, ptr %15, align 8, !tbaa !9
  %838 = getelementptr inbounds double, ptr %836, i64 %837
  %839 = load double, ptr %838, align 8, !tbaa !11
  %840 = fcmp une double %839, 0.000000e+00
  br i1 %840, label %841, label %845

841:                                              ; preds = %835
  %842 = load ptr, ptr %9, align 8, !tbaa !5
  %843 = load i64, ptr %842, align 8, !tbaa !9
  %844 = add nsw i64 %843, 1
  store i64 %844, ptr %842, align 8, !tbaa !9
  br label %845

845:                                              ; preds = %841, %835
  br label %846

846:                                              ; preds = %845
  %847 = load i64, ptr %15, align 8, !tbaa !9
  %848 = add nsw i64 %847, 1
  store i64 %848, ptr %15, align 8, !tbaa !9
  br label %831, !llvm.loop !20

849:                                              ; preds = %831
  br label %856

850:                                              ; preds = %88
  %851 = load ptr, ptr %6, align 8, !tbaa !5
  %852 = load ptr, ptr %7, align 8, !tbaa !5
  %853 = getelementptr inbounds double, ptr %852, i64 1
  %854 = load ptr, ptr %9, align 8, !tbaa !5
  %855 = call i32 @dlasrt_(ptr noundef @.str.3, ptr noundef %851, ptr noundef %853, ptr noundef %854)
  br label %856

856:                                              ; preds = %850, %849
  store i32 0, ptr %5, align 4
  store i32 1, ptr %44, align 4
  br label %857

857:                                              ; preds = %856, %63, %53
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #5
  %858 = load i32, ptr %5, align 4
  ret i32 %858
}

; 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: nounwind
declare double @sqrt(double noundef) #3

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

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

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

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

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

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

declare i32 @dlasrt_(ptr noundef, ptr noundef, 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 = { nounwind "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 #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 = !{!"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 [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@c__0 = external hidden global i64, align 8
@c__1 = external hidden global i64, align 8
@c_b32 = external hidden global double, align 8

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @dsterf_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3) local_unnamed_addr #0 {
  %5 = alloca i64, align 8
  %6 = alloca double, align 8
  %7 = alloca double, align 8
  %8 = alloca double, align 8
  %9 = alloca double, align 8
  %10 = alloca double, align 8
  %11 = alloca double, align 8
  %12 = alloca double, align 8
  %13 = alloca double, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #5
  %14 = getelementptr inbounds i8, ptr %2, i64 -8
  %15 = getelementptr inbounds i8, ptr %1, i64 -8
  store i64 0, ptr %3, align 8, !tbaa !5
  %16 = load i64, ptr %0, align 8, !tbaa !5
  %17 = icmp slt i64 %16, 0
  br i1 %17, label %18, label %20

18:                                               ; preds = %4
  store i64 -1, ptr %3, align 8, !tbaa !5
  store i64 1, ptr %5, align 8, !tbaa !5
  %19 = call i32 @xerbla_(ptr noundef nonnull @.str, ptr noundef nonnull %5) #5
  br label %.loopexit

20:                                               ; preds = %4
  %21 = icmp ult i64 %16, 2
  br i1 %21, label %.loopexit, label %22

22:                                               ; preds = %20
  %23 = tail call double @dlamch_(ptr noundef nonnull @.str.1) #5
  %24 = fmul double %23, %23
  %25 = tail call double @dlamch_(ptr noundef nonnull @.str.2) #5
  %26 = fdiv double 1.000000e+00, %25
  %27 = tail call double @sqrt(double noundef %26) #5
  %28 = fdiv double %27, 3.000000e+00
  store double %28, ptr %13, align 8, !tbaa !9
  %29 = tail call double @sqrt(double noundef %25) #5
  %30 = fdiv double %29, %24
  store double %30, ptr %12, align 8, !tbaa !9
  %31 = load i64, ptr %0, align 8, !tbaa !5
  %32 = mul i64 %31, 30
  store double 0.000000e+00, ptr %10, align 8, !tbaa !9
  %invariant.gep = getelementptr i8, ptr %2, i64 -16
  br label %.outer398

.outer398:                                        ; preds = %338, %22
  %.0348.ph = phi i64 [ %66, %338 ], [ 1, %22 ]
  %.0339.ph = phi i64 [ %.3, %338 ], [ 0, %22 ]
  br label %33

33:                                               ; preds = %.outer398, %._crit_edge
  %.0348 = phi i64 [ %66, %._crit_edge ], [ %.0348.ph, %.outer398 ]
  %34 = load i64, ptr %0, align 8, !tbaa !5
  %35 = icmp sgt i64 %.0348, %34
  br i1 %35, label %358, label %36

36:                                               ; preds = %33
  %37 = icmp sgt i64 %.0348, 1
  br i1 %37, label %38, label %39

38:                                               ; preds = %36
  %gep = getelementptr double, ptr %invariant.gep, i64 %.0348
  store double 0.000000e+00, ptr %gep, align 8, !tbaa !9
  br label %39

39:                                               ; preds = %38, %36
  %40 = add nsw i64 %34, -1
  store i64 %40, ptr %5, align 8, !tbaa !5
  %.not422.not = icmp slt i64 %.0348, %34
  br i1 %.not422.not, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %39, %63
  %.0355423 = phi i64 [ %64, %63 ], [ %.0348, %39 ]
  %41 = getelementptr inbounds double, ptr %14, i64 %.0355423
  %42 = load double, ptr %41, align 8, !tbaa !9
  %43 = fcmp oge double %42, 0.000000e+00
  %44 = fneg double %42
  %45 = select i1 %43, double %42, double %44
  %46 = getelementptr inbounds double, ptr %15, i64 %.0355423
  %47 = load double, ptr %46, align 8, !tbaa !9
  %48 = fcmp oge double %47, 0.000000e+00
  %49 = fneg double %47
  %50 = select i1 %48, double %47, double %49
  %51 = call double @sqrt(double noundef %50) #5
  %52 = getelementptr double, ptr %1, i64 %.0355423
  %53 = load double, ptr %52, align 8, !tbaa !9
  %54 = fcmp oge double %53, 0.000000e+00
  %55 = fneg double %53
  %56 = select i1 %54, double %53, double %55
  %57 = call double @sqrt(double noundef %56) #5
  %58 = fmul double %51, %57
  %59 = fmul double %23, %58
  %60 = fcmp ugt double %45, %59
  br i1 %60, label %63, label %61

61:                                               ; preds = %.lr.ph
  %62 = getelementptr inbounds double, ptr %14, i64 %.0355423
  store double 0.000000e+00, ptr %62, align 8, !tbaa !9
  br label %._crit_edge

63:                                               ; preds = %.lr.ph
  %64 = add nsw i64 %.0355423, 1
  %65 = load i64, ptr %5, align 8, !tbaa !5
  %.not.not = icmp slt i64 %.0355423, %65
  br i1 %.not.not, label %.lr.ph, label %._crit_edge.loopexit, !llvm.loop !11

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

._crit_edge:                                      ; preds = %39, %._crit_edge.loopexit, %61
  %.1356 = phi i64 [ %.0355423, %61 ], [ %.pre, %._crit_edge.loopexit ], [ %34, %39 ]
  %66 = add nsw i64 %.1356, 1
  %67 = icmp eq i64 %.1356, %.0348
  br i1 %67, label %33, label %68

68:                                               ; preds = %._crit_edge
  %69 = sub nsw i64 %.1356, %.0348
  %70 = add nsw i64 %69, 1
  store i64 %70, ptr %5, align 8, !tbaa !5
  %71 = getelementptr inbounds double, ptr %15, i64 %.0348
  %72 = getelementptr inbounds double, ptr %14, i64 %.0348
  %73 = call double @dlanst_(ptr noundef nonnull @.str.3, ptr noundef nonnull %5, ptr noundef nonnull %71, ptr noundef nonnull %72) #5
  store double %73, ptr %11, align 8, !tbaa !9
  %74 = load double, ptr %13, align 8, !tbaa !9
  %75 = fcmp ule double %73, %74
  br i1 %75, label %76, label %.sink.split

76:                                               ; preds = %68
  %77 = load double, ptr %12, align 8, !tbaa !9
  %78 = fcmp olt double %73, %77
  br i1 %78, label %.sink.split, label %81

.sink.split:                                      ; preds = %76, %68
  %.sink547 = phi ptr [ %13, %68 ], [ %12, %76 ]
  store i64 %70, ptr %5, align 8, !tbaa !5
  %79 = call i32 @dlascl_(ptr noundef nonnull @.str.4, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %11, ptr noundef nonnull %.sink547, ptr noundef nonnull %5, ptr noundef nonnull @c__1, ptr noundef nonnull %71, ptr noundef nonnull %0, ptr noundef nonnull %3) #5
  store i64 %69, ptr %5, align 8, !tbaa !5
  %80 = call i32 @dlascl_(ptr noundef nonnull @.str.4, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %11, ptr noundef nonnull %.sink547, ptr noundef nonnull %5, ptr noundef nonnull @c__1, ptr noundef nonnull %72, ptr noundef nonnull %0, ptr noundef nonnull %3) #5
  br label %81

81:                                               ; preds = %.sink.split, %76
  %82 = phi i1 [ false, %76 ], [ %75, %.sink.split ]
  %83 = add nsw i64 %.1356, -1
  store i64 %83, ptr %5, align 8, !tbaa !5
  %.not373.not424 = icmp slt i64 %.0348, %.1356
  br i1 %.not373.not424, label %.lr.ph427.preheader, label %._crit_edge428

.lr.ph427.preheader:                              ; preds = %81
  %84 = sub i64 %.1356, %.0348
  %min.iters.check = icmp ult i64 %84, 4
  br i1 %min.iters.check, label %.lr.ph427.preheader551, label %vector.ph

vector.ph:                                        ; preds = %.lr.ph427.preheader
  %n.vec = and i64 %84, -4
  %ind.end = add i64 %.0348, %n.vec
  %85 = getelementptr double, ptr %14, i64 %.0348
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %86 = getelementptr double, ptr %85, i64 %index
  %87 = getelementptr inbounds i8, ptr %86, i64 16
  %wide.load = load <2 x double>, ptr %86, align 8, !tbaa !9
  %wide.load546 = load <2 x double>, ptr %87, align 8, !tbaa !9
  %88 = fmul <2 x double> %wide.load, %wide.load
  %89 = fmul <2 x double> %wide.load546, %wide.load546
  store <2 x double> %88, ptr %86, align 8, !tbaa !9
  store <2 x double> %89, ptr %87, align 8, !tbaa !9
  %index.next = add nuw i64 %index, 4
  %90 = icmp eq i64 %index.next, %n.vec
  br i1 %90, label %middle.block, label %vector.body, !llvm.loop !13

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %84, %n.vec
  br i1 %cmp.n, label %._crit_edge428, label %.lr.ph427.preheader551

.lr.ph427.preheader551:                           ; preds = %middle.block, %.lr.ph427.preheader
  %.0344425.ph = phi i64 [ %.0348, %.lr.ph427.preheader ], [ %ind.end, %middle.block ]
  br label %.lr.ph427

.lr.ph427:                                        ; preds = %.lr.ph427.preheader551, %.lr.ph427
  %.0344425 = phi i64 [ %94, %.lr.ph427 ], [ %.0344425.ph, %.lr.ph427.preheader551 ]
  %91 = getelementptr inbounds double, ptr %14, i64 %.0344425
  %92 = load double, ptr %91, align 8, !tbaa !9
  %93 = fmul double %92, %92
  store double %93, ptr %91, align 8, !tbaa !9
  %94 = add nsw i64 %.0344425, 1
  %exitcond.not = icmp eq i64 %94, %.1356
  br i1 %exitcond.not, label %._crit_edge428, label %.lr.ph427, !llvm.loop !16

._crit_edge428:                                   ; preds = %.lr.ph427, %middle.block, %81
  %95 = getelementptr inbounds double, ptr %15, i64 %.1356
  %96 = load double, ptr %95, align 8, !tbaa !9
  %97 = fcmp oge double %96, 0.000000e+00
  %98 = fneg double %96
  %99 = select i1 %97, double %96, double %98
  %100 = load double, ptr %71, align 8, !tbaa !9
  %101 = fcmp oge double %100, 0.000000e+00
  %102 = fneg double %100
  %103 = select i1 %101, double %100, double %102
  %104 = fcmp olt double %99, %103
  %.0359 = select i1 %104, i64 %.1356, i64 %.0348
  %.0341 = select i1 %104, i64 %.0348, i64 %.1356
  %.not374 = icmp slt i64 %.0341, %.0359
  br i1 %.not374, label %.preheader, label %.preheader394

.preheader394:                                    ; preds = %._crit_edge428
  %105 = add nsw i64 %.0341, -1
  br label %.outer396

.preheader:                                       ; preds = %._crit_edge428
  %106 = add nsw i64 %.0341, 1
  br label %.outer

107:                                              ; preds = %.outer396, %217
  %.1340 = phi i64 [ %145, %217 ], [ %.1340.ph, %.outer396 ]
  br i1 %.not380, label %.thread, label %108

108:                                              ; preds = %107
  store i64 %105, ptr %5, align 8, !tbaa !5
  br i1 %.not381.not429, label %.lr.ph432, label %.thread.thread

.lr.ph432:                                        ; preds = %108, %124
  %.2357430 = phi i64 [ %125, %124 ], [ %.1360.ph, %108 ]
  %109 = getelementptr inbounds double, ptr %14, i64 %.2357430
  %110 = load double, ptr %109, align 8, !tbaa !9
  %111 = fcmp oge double %110, 0.000000e+00
  %112 = fneg double %110
  %113 = select i1 %111, double %110, double %112
  %114 = getelementptr inbounds double, ptr %15, i64 %.2357430
  %115 = load double, ptr %114, align 8, !tbaa !9
  %116 = getelementptr double, ptr %1, i64 %.2357430
  %117 = load double, ptr %116, align 8, !tbaa !9
  %118 = fmul double %115, %117
  %119 = fcmp oge double %118, 0.000000e+00
  %120 = fneg double %118
  %121 = select i1 %119, double %118, double %120
  %122 = fmul double %24, %121
  %123 = fcmp ugt double %113, %122
  br i1 %123, label %124, label %126

124:                                              ; preds = %.lr.ph432
  %125 = add i64 %.2357430, 1
  %exitcond484.not = icmp eq i64 %125, %.0341
  br i1 %exitcond484.not, label %.thread, label %.lr.ph432, !llvm.loop !17

126:                                              ; preds = %.lr.ph432
  %127 = getelementptr inbounds double, ptr %14, i64 %.2357430
  store double 0.000000e+00, ptr %127, align 8, !tbaa !9
  br label %.thread

.thread:                                          ; preds = %124, %107, %126
  %.3358388 = phi i64 [ %.2357430, %126 ], [ %.0341, %107 ], [ %.0341, %124 ]
  %128 = icmp eq i64 %.3358388, %.1360.ph
  br i1 %128, label %220, label %.thread.thread

.thread.thread:                                   ; preds = %108, %.thread
  %.3358388492 = phi i64 [ %.3358388, %.thread ], [ %.0341, %108 ]
  %129 = load double, ptr %138, align 8, !tbaa !9
  %130 = icmp eq i64 %.3358388492, %139
  br i1 %130, label %131, label %142

131:                                              ; preds = %.thread.thread
  %132 = load double, ptr %140, align 8, !tbaa !9
  %133 = call double @sqrt(double noundef %132) #5
  store double %133, ptr %9, align 8, !tbaa !9
  %134 = call i32 @dlae2_(ptr noundef nonnull %138, ptr noundef nonnull %9, ptr noundef %141, ptr noundef nonnull %7, ptr noundef nonnull %8) #5
  %135 = load double, ptr %7, align 8, !tbaa !9
  store double %135, ptr %138, align 8, !tbaa !9
  %136 = load double, ptr %8, align 8, !tbaa !9
  store double %136, ptr %141, align 8, !tbaa !9
  store double 0.000000e+00, ptr %140, align 8, !tbaa !9
  %137 = add nsw i64 %.1360.ph, 2
  %.not384 = icmp sgt i64 %137, %.0341
  br i1 %.not384, label %.loopexit392, label %.outer396.backedge

.outer396:                                        ; preds = %.outer396.backedge, %.preheader394
  %.1360.ph = phi i64 [ %.0359, %.preheader394 ], [ %.1360.ph.be, %.outer396.backedge ]
  %.1340.ph = phi i64 [ %.0339.ph, %.preheader394 ], [ %.1340, %.outer396.backedge ]
  %.not380 = icmp eq i64 %.1360.ph, %.0341
  %138 = getelementptr inbounds double, ptr %15, i64 %.1360.ph
  %.not381.not429 = icmp slt i64 %.1360.ph, %.0341
  %139 = add nsw i64 %.1360.ph, 1
  %140 = getelementptr inbounds double, ptr %14, i64 %.1360.ph
  %141 = getelementptr double, ptr %1, i64 %.1360.ph
  br label %107

142:                                              ; preds = %.thread.thread
  %143 = icmp eq i64 %.1340, %32
  br i1 %143, label %.loopexit392, label %144

144:                                              ; preds = %142
  %145 = add nsw i64 %.1340, 1
  %146 = load double, ptr %140, align 8, !tbaa !9
  %147 = call double @sqrt(double noundef %146) #5
  store double %147, ptr %9, align 8, !tbaa !9
  %148 = load double, ptr %141, align 8, !tbaa !9
  %149 = fsub double %148, %129
  %150 = fmul double %147, 2.000000e+00
  %151 = fdiv double %149, %150
  store double %151, ptr %10, align 8, !tbaa !9
  %152 = call double @dlapy2_(ptr noundef nonnull %10, ptr noundef nonnull @c_b32) #5
  store double %152, ptr %6, align 8, !tbaa !9
  %153 = load double, ptr %9, align 8, !tbaa !9
  %154 = load double, ptr %10, align 8, !tbaa !9
  %155 = call double @d_sign(ptr noundef nonnull %6, ptr noundef nonnull %10) #5
  %156 = fadd double %154, %155
  %157 = fdiv double %153, %156
  %158 = fsub double %129, %157
  store double %158, ptr %10, align 8, !tbaa !9
  %159 = getelementptr inbounds double, ptr %15, i64 %.3358388492
  %160 = load double, ptr %159, align 8, !tbaa !9
  %161 = fsub double %160, %158
  %162 = fmul double %161, %161
  store i64 %.1360.ph, ptr %5, align 8, !tbaa !5
  %163 = add nsw i64 %.3358388492, -1
  %.not382433.not = icmp sgt i64 %.3358388492, %.1360.ph
  br i1 %.not382433.not, label %164, label %217

164:                                              ; preds = %144
  %165 = getelementptr inbounds double, ptr %14, i64 %163
  %166 = load double, ptr %165, align 8, !tbaa !9
  %167 = fadd double %162, %166
  %.phi.trans.insert = getelementptr inbounds double, ptr %15, i64 %163
  %.pre488 = load double, ptr %.phi.trans.insert, align 8, !tbaa !9
  %168 = insertelement <2 x double> poison, double %162, i64 0
  %169 = insertelement <2 x double> %168, double %166, i64 1
  %170 = insertelement <2 x double> poison, double %167, i64 0
  %171 = shufflevector <2 x double> %170, <2 x double> poison, <2 x i32> zeroinitializer
  %172 = fdiv <2 x double> %169, %171
  %173 = fsub double %.pre488, %158
  %174 = extractelement <2 x double> %172, i64 1
  %175 = fneg double %174
  %176 = fmul double %161, %175
  %177 = extractelement <2 x double> %172, i64 0
  %178 = call double @llvm.fmuladd.f64(double %177, double %173, double %176)
  %179 = fsub double %.pre488, %178
  %180 = fadd double %161, %179
  %181 = getelementptr double, ptr %1, i64 %163
  store double %180, ptr %181, align 8, !tbaa !9
  %182 = fcmp une double %177, 0.000000e+00
  %183 = fmul double %178, %178
  %184 = fdiv double %183, %177
  %.1352.peel = select i1 %182, double %184, double %166
  %.not382.not.peel = icmp sgt i64 %163, %.1360.ph
  br i1 %.not382.not.peel, label %.lr.ph440.peel.next, label %._crit_edge441

.lr.ph440.peel.next:                              ; preds = %164
  %185 = add nsw i64 %.3358388492, -2
  br label %.lr.ph440

.lr.ph440:                                        ; preds = %.lr.ph440.peel.next, %194
  %.0338438 = phi double [ %207, %194 ], [ %178, %.lr.ph440.peel.next ]
  %.1345436 = phi i64 [ %216, %194 ], [ %185, %.lr.ph440.peel.next ]
  %.0351434 = phi double [ %.1352, %194 ], [ %.1352.peel, %.lr.ph440.peel.next ]
  %186 = phi <2 x double> [ %199, %194 ], [ %172, %.lr.ph440.peel.next ]
  %187 = getelementptr inbounds double, ptr %14, i64 %.1345436
  %188 = load double, ptr %187, align 8, !tbaa !9
  %189 = fadd double %.0351434, %188
  %.not383 = icmp eq i64 %.1345436, %163
  br i1 %.not383, label %194, label %190

190:                                              ; preds = %.lr.ph440
  %191 = extractelement <2 x double> %186, i64 1
  %192 = fmul double %191, %189
  %193 = getelementptr double, ptr %2, i64 %.1345436
  store double %192, ptr %193, align 8, !tbaa !9
  br label %194

194:                                              ; preds = %190, %.lr.ph440
  %195 = insertelement <2 x double> poison, double %.0351434, i64 0
  %196 = insertelement <2 x double> %195, double %188, i64 1
  %197 = insertelement <2 x double> poison, double %189, i64 0
  %198 = shufflevector <2 x double> %197, <2 x double> poison, <2 x i32> zeroinitializer
  %199 = fdiv <2 x double> %196, %198
  %200 = getelementptr inbounds double, ptr %15, i64 %.1345436
  %201 = load double, ptr %200, align 8, !tbaa !9
  %202 = fsub double %201, %158
  %203 = extractelement <2 x double> %199, i64 1
  %204 = fneg double %203
  %205 = fmul double %.0338438, %204
  %206 = extractelement <2 x double> %199, i64 0
  %207 = call double @llvm.fmuladd.f64(double %206, double %202, double %205)
  %208 = fsub double %201, %207
  %209 = fadd double %.0338438, %208
  %210 = getelementptr double, ptr %1, i64 %.1345436
  store double %209, ptr %210, align 8, !tbaa !9
  %211 = fcmp une double %206, 0.000000e+00
  %212 = fmul double %207, %207
  %213 = fdiv double %212, %206
  %214 = extractelement <2 x double> %186, i64 0
  %215 = fmul double %214, %188
  %.1352 = select i1 %211, double %213, double %215
  %216 = add nsw i64 %.1345436, -1
  %.not382.not = icmp sgt i64 %.1345436, %.1360.ph
  br i1 %.not382.not, label %.lr.ph440, label %._crit_edge441, !llvm.loop !18

._crit_edge441:                                   ; preds = %194, %164
  %.lcssa471 = phi double [ %174, %164 ], [ %203, %194 ]
  %.lcssa470 = phi double [ %178, %164 ], [ %207, %194 ]
  %.1352.lcssa = phi double [ %.1352.peel, %164 ], [ %.1352, %194 ]
  %.lcssa469 = phi double [ %167, %164 ], [ %189, %194 ]
  store double %.lcssa469, ptr %6, align 8, !tbaa !9
  br label %217

217:                                              ; preds = %._crit_edge441, %144
  %.0351.lcssa = phi double [ %.1352.lcssa, %._crit_edge441 ], [ %162, %144 ]
  %.0349.lcssa = phi double [ %.lcssa471, %._crit_edge441 ], [ 0.000000e+00, %144 ]
  %.0338.lcssa = phi double [ %.lcssa470, %._crit_edge441 ], [ %161, %144 ]
  %218 = fmul double %.0351.lcssa, %.0349.lcssa
  store double %218, ptr %140, align 8, !tbaa !9
  %219 = fadd double %158, %.0338.lcssa
  store double %219, ptr %138, align 8, !tbaa !9
  br label %107

220:                                              ; preds = %.thread
  br i1 %.not381.not429, label %.outer396.backedge, label %.loopexit392

.outer396.backedge:                               ; preds = %220, %131
  %.1360.ph.be = phi i64 [ %137, %131 ], [ %139, %220 ]
  br label %.outer396

221:                                              ; preds = %.outer, %329
  %.2 = phi i64 [ %259, %329 ], [ %.2.ph, %.outer ]
  store i64 %106, ptr %5, align 8, !tbaa !5
  br label %222

222:                                              ; preds = %223, %221
  %.4 = phi i64 [ %.2361.ph, %221 ], [ %224, %223 ]
  %.not375.not = icmp sgt i64 %.4, %.0341
  br i1 %.not375.not, label %223, label %.thread389

223:                                              ; preds = %222
  %224 = add nsw i64 %.4, -1
  %225 = getelementptr inbounds double, ptr %14, i64 %224
  %226 = load double, ptr %225, align 8, !tbaa !9
  %227 = fcmp oge double %226, 0.000000e+00
  %228 = fneg double %226
  %229 = select i1 %227, double %226, double %228
  %230 = getelementptr inbounds double, ptr %15, i64 %.4
  %231 = load double, ptr %230, align 8, !tbaa !9
  %232 = getelementptr inbounds double, ptr %15, i64 %224
  %233 = load double, ptr %232, align 8, !tbaa !9
  %234 = fmul double %231, %233
  %235 = fcmp oge double %234, 0.000000e+00
  %236 = fneg double %234
  %237 = select i1 %235, double %234, double %236
  %238 = fmul double %24, %237
  %239 = fcmp ugt double %229, %238
  br i1 %239, label %222, label %240, !llvm.loop !20

240:                                              ; preds = %223
  %gep458 = getelementptr double, ptr %invariant.gep, i64 %.4
  store double 0.000000e+00, ptr %gep458, align 8, !tbaa !9
  br label %.thread389

.thread389:                                       ; preds = %222, %240
  %.5391 = phi i64 [ %.4, %240 ], [ %.0341, %222 ]
  %241 = load double, ptr %252, align 8, !tbaa !9
  %242 = icmp eq i64 %.5391, %.2361.ph
  br i1 %242, label %332, label %243

243:                                              ; preds = %.thread389
  %244 = icmp eq i64 %.5391, %253
  br i1 %244, label %245, label %256

245:                                              ; preds = %243
  %246 = load double, ptr %254, align 8, !tbaa !9
  %247 = call double @sqrt(double noundef %246) #5
  store double %247, ptr %9, align 8, !tbaa !9
  %248 = call i32 @dlae2_(ptr noundef nonnull %252, ptr noundef nonnull %9, ptr noundef nonnull %255, ptr noundef nonnull %7, ptr noundef nonnull %8) #5
  %249 = load double, ptr %7, align 8, !tbaa !9
  store double %249, ptr %252, align 8, !tbaa !9
  %250 = load double, ptr %8, align 8, !tbaa !9
  store double %250, ptr %255, align 8, !tbaa !9
  store double 0.000000e+00, ptr %254, align 8, !tbaa !9
  %251 = add nsw i64 %.2361.ph, -2
  %.not378 = icmp slt i64 %251, %.0341
  br i1 %.not378, label %.loopexit392, label %.outer.backedge

.outer:                                           ; preds = %.outer.backedge, %.preheader
  %.2361.ph = phi i64 [ %.0359, %.preheader ], [ %.2361.ph.be, %.outer.backedge ]
  %.2.ph = phi i64 [ %.0339.ph, %.preheader ], [ %.2, %.outer.backedge ]
  %252 = getelementptr inbounds double, ptr %15, i64 %.2361.ph
  %253 = add nsw i64 %.2361.ph, -1
  %254 = getelementptr inbounds double, ptr %14, i64 %253
  %255 = getelementptr inbounds double, ptr %15, i64 %253
  br label %221

256:                                              ; preds = %243
  %257 = icmp eq i64 %.2, %32
  br i1 %257, label %.loopexit392, label %258

258:                                              ; preds = %256
  %259 = add nsw i64 %.2, 1
  %260 = load double, ptr %254, align 8, !tbaa !9
  %261 = call double @sqrt(double noundef %260) #5
  store double %261, ptr %9, align 8, !tbaa !9
  %262 = load double, ptr %255, align 8, !tbaa !9
  %263 = fsub double %262, %241
  %264 = fmul double %261, 2.000000e+00
  %265 = fdiv double %263, %264
  store double %265, ptr %10, align 8, !tbaa !9
  %266 = call double @dlapy2_(ptr noundef nonnull %10, ptr noundef nonnull @c_b32) #5
  store double %266, ptr %6, align 8, !tbaa !9
  %267 = load double, ptr %9, align 8, !tbaa !9
  %268 = load double, ptr %10, align 8, !tbaa !9
  %269 = call double @d_sign(ptr noundef nonnull %6, ptr noundef nonnull %10) #5
  %270 = fadd double %268, %269
  %271 = fdiv double %267, %270
  %272 = fsub double %241, %271
  store double %272, ptr %10, align 8, !tbaa !9
  %273 = getelementptr inbounds double, ptr %15, i64 %.5391
  %274 = load double, ptr %273, align 8, !tbaa !9
  %275 = fsub double %274, %272
  %276 = fmul double %275, %275
  store i64 %253, ptr %5, align 8, !tbaa !5
  %.not376.not444 = icmp slt i64 %.5391, %.2361.ph
  br i1 %.not376.not444, label %277, label %329

277:                                              ; preds = %258
  %278 = getelementptr inbounds double, ptr %14, i64 %.5391
  %279 = load double, ptr %278, align 8, !tbaa !9
  %280 = fadd double %276, %279
  %.phi.trans.insert489 = getelementptr double, ptr %1, i64 %.5391
  %.pre490 = load double, ptr %.phi.trans.insert489, align 8, !tbaa !9
  %281 = insertelement <2 x double> poison, double %276, i64 0
  %282 = insertelement <2 x double> %281, double %279, i64 1
  %283 = insertelement <2 x double> poison, double %280, i64 0
  %284 = shufflevector <2 x double> %283, <2 x double> poison, <2 x i32> zeroinitializer
  %285 = fdiv <2 x double> %282, %284
  %286 = add nsw i64 %.5391, 1
  %287 = fsub double %.pre490, %272
  %288 = extractelement <2 x double> %285, i64 1
  %289 = fneg double %288
  %290 = fmul double %275, %289
  %291 = extractelement <2 x double> %285, i64 0
  %292 = call double @llvm.fmuladd.f64(double %291, double %287, double %290)
  %293 = fsub double %.pre490, %292
  %294 = fadd double %275, %293
  store double %294, ptr %273, align 8, !tbaa !9
  %295 = fcmp une double %291, 0.000000e+00
  %296 = fmul double %292, %292
  %297 = fdiv double %296, %291
  %.3354.peel = select i1 %295, double %297, double %279
  %.not376.not.peel = icmp slt i64 %286, %.2361.ph
  br i1 %.not376.not.peel, label %.lr.ph451, label %._crit_edge452

.lr.ph451:                                        ; preds = %277, %306
  %.1449 = phi double [ %320, %306 ], [ %292, %277 ]
  %.2346447 = phi i64 [ %312, %306 ], [ %286, %277 ]
  %.2353445 = phi double [ %.3354, %306 ], [ %.3354.peel, %277 ]
  %298 = phi <2 x double> [ %311, %306 ], [ %285, %277 ]
  %299 = getelementptr inbounds double, ptr %14, i64 %.2346447
  %300 = load double, ptr %299, align 8, !tbaa !9
  %301 = fadd double %.2353445, %300
  %.not377 = icmp eq i64 %.2346447, %.5391
  br i1 %.not377, label %306, label %302

302:                                              ; preds = %.lr.ph451
  %303 = extractelement <2 x double> %298, i64 1
  %304 = fmul double %303, %301
  %305 = getelementptr i8, ptr %299, i64 -8
  store double %304, ptr %305, align 8, !tbaa !9
  br label %306

306:                                              ; preds = %302, %.lr.ph451
  %307 = insertelement <2 x double> poison, double %.2353445, i64 0
  %308 = insertelement <2 x double> %307, double %300, i64 1
  %309 = insertelement <2 x double> poison, double %301, i64 0
  %310 = shufflevector <2 x double> %309, <2 x double> poison, <2 x i32> zeroinitializer
  %311 = fdiv <2 x double> %308, %310
  %312 = add nsw i64 %.2346447, 1
  %313 = getelementptr double, ptr %1, i64 %.2346447
  %314 = load double, ptr %313, align 8, !tbaa !9
  %315 = fsub double %314, %272
  %316 = extractelement <2 x double> %311, i64 1
  %317 = fneg double %316
  %318 = fmul double %.1449, %317
  %319 = extractelement <2 x double> %311, i64 0
  %320 = call double @llvm.fmuladd.f64(double %319, double %315, double %318)
  %321 = fsub double %314, %320
  %322 = fadd double %.1449, %321
  %323 = getelementptr inbounds double, ptr %15, i64 %.2346447
  store double %322, ptr %323, align 8, !tbaa !9
  %324 = fcmp une double %319, 0.000000e+00
  %325 = fmul double %320, %320
  %326 = fdiv double %325, %319
  %327 = extractelement <2 x double> %298, i64 0
  %328 = fmul double %327, %300
  %.3354 = select i1 %324, double %326, double %328
  %.not376.not = icmp slt i64 %312, %.2361.ph
  br i1 %.not376.not, label %.lr.ph451, label %._crit_edge452, !llvm.loop !21

._crit_edge452:                                   ; preds = %306, %277
  %.lcssa479 = phi double [ %288, %277 ], [ %316, %306 ]
  %.lcssa478 = phi double [ %292, %277 ], [ %320, %306 ]
  %.3354.lcssa = phi double [ %.3354.peel, %277 ], [ %.3354, %306 ]
  %.lcssa477 = phi double [ %280, %277 ], [ %301, %306 ]
  store double %.lcssa477, ptr %6, align 8, !tbaa !9
  br label %329

329:                                              ; preds = %._crit_edge452, %258
  %.2353.lcssa = phi double [ %.3354.lcssa, %._crit_edge452 ], [ %276, %258 ]
  %.1350.lcssa = phi double [ %.lcssa479, %._crit_edge452 ], [ 0.000000e+00, %258 ]
  %.1.lcssa = phi double [ %.lcssa478, %._crit_edge452 ], [ %275, %258 ]
  %330 = fmul double %.2353.lcssa, %.1350.lcssa
  store double %330, ptr %254, align 8, !tbaa !9
  %331 = fadd double %272, %.1.lcssa
  store double %331, ptr %252, align 8, !tbaa !9
  br label %221

332:                                              ; preds = %.thread389
  %.not379.not = icmp sgt i64 %.2361.ph, %.0341
  br i1 %.not379.not, label %.outer.backedge, label %.loopexit392

.outer.backedge:                                  ; preds = %332, %245
  %.2361.ph.be = phi i64 [ %251, %245 ], [ %253, %332 ]
  br label %.outer

.loopexit392:                                     ; preds = %220, %131, %332, %245, %142, %256
  %.3 = phi i64 [ %32, %256 ], [ %32, %142 ], [ %.2, %245 ], [ %.2, %332 ], [ %.1340, %131 ], [ %.1340, %220 ]
  br i1 %75, label %335, label %333

333:                                              ; preds = %.loopexit392
  store i64 %70, ptr %5, align 8, !tbaa !5
  %334 = call i32 @dlascl_(ptr noundef nonnull @.str.4, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %13, ptr noundef nonnull %11, ptr noundef nonnull %5, ptr noundef nonnull @c__1, ptr noundef nonnull %71, ptr noundef nonnull %0, ptr noundef nonnull %3) #5
  br label %335

335:                                              ; preds = %333, %.loopexit392
  br i1 %82, label %336, label %338

336:                                              ; preds = %335
  store i64 %70, ptr %5, align 8, !tbaa !5
  %337 = call i32 @dlascl_(ptr noundef nonnull @.str.4, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %12, ptr noundef nonnull %11, ptr noundef nonnull %5, ptr noundef nonnull @c__1, ptr noundef nonnull %71, ptr noundef nonnull %0, ptr noundef nonnull %3) #5
  br label %338

338:                                              ; preds = %336, %335
  %339 = icmp slt i64 %.3, %32
  br i1 %339, label %.outer398, label %340

340:                                              ; preds = %338
  %341 = load i64, ptr %0, align 8, !tbaa !5
  %.not386.not459 = icmp sgt i64 %341, 1
  br i1 %.not386.not459, label %.lr.ph462.preheader, label %.loopexit

.lr.ph462.preheader:                              ; preds = %340
  %342 = add nsw i64 %341, -1
  %xtraiter = and i64 %342, 1
  %343 = icmp eq i64 %341, 2
  br i1 %343, label %.loopexit.loopexit.unr-lcssa, label %.lr.ph462.preheader.new

.lr.ph462.preheader.new:                          ; preds = %.lr.ph462.preheader
  %unroll_iter = and i64 %342, -2
  br label %.lr.ph462

.lr.ph462:                                        ; preds = %356, %.lr.ph462.preheader.new
  %.3347460 = phi i64 [ 1, %.lr.ph462.preheader.new ], [ %357, %356 ]
  %niter = phi i64 [ 0, %.lr.ph462.preheader.new ], [ %niter.next.1, %356 ]
  %344 = getelementptr inbounds double, ptr %14, i64 %.3347460
  %345 = load double, ptr %344, align 8, !tbaa !9
  %346 = fcmp une double %345, 0.000000e+00
  br i1 %346, label %347, label %.lr.ph462.1

347:                                              ; preds = %.lr.ph462
  %348 = load i64, ptr %3, align 8, !tbaa !5
  %349 = add nsw i64 %348, 1
  store i64 %349, ptr %3, align 8, !tbaa !5
  br label %.lr.ph462.1

.lr.ph462.1:                                      ; preds = %.lr.ph462, %347
  %350 = getelementptr double, ptr %2, i64 %.3347460
  %351 = load double, ptr %350, align 8, !tbaa !9
  %352 = fcmp une double %351, 0.000000e+00
  br i1 %352, label %353, label %356

353:                                              ; preds = %.lr.ph462.1
  %354 = load i64, ptr %3, align 8, !tbaa !5
  %355 = add nsw i64 %354, 1
  store i64 %355, ptr %3, align 8, !tbaa !5
  br label %356

356:                                              ; preds = %353, %.lr.ph462.1
  %357 = add nuw nsw i64 %.3347460, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %.loopexit.loopexit.unr-lcssa, label %.lr.ph462, !llvm.loop !22

358:                                              ; preds = %33
  %359 = call i32 @dlasrt_(ptr noundef nonnull @.str.3, ptr noundef nonnull %0, ptr noundef %1, ptr noundef nonnull %3) #5
  br label %.loopexit

.loopexit.loopexit.unr-lcssa:                     ; preds = %356, %.lr.ph462.preheader
  %.3347460.unr = phi i64 [ 1, %.lr.ph462.preheader ], [ %357, %356 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.loopexit, label %.lr.ph462.epil

.lr.ph462.epil:                                   ; preds = %.loopexit.loopexit.unr-lcssa
  %360 = getelementptr inbounds double, ptr %14, i64 %.3347460.unr
  %361 = load double, ptr %360, align 8, !tbaa !9
  %362 = fcmp une double %361, 0.000000e+00
  br i1 %362, label %363, label %.loopexit

363:                                              ; preds = %.lr.ph462.epil
  %364 = load i64, ptr %3, align 8, !tbaa !5
  %365 = add nsw i64 %364, 1
  store i64 %365, ptr %3, align 8, !tbaa !5
  br label %.loopexit

.loopexit:                                        ; preds = %.loopexit.loopexit.unr-lcssa, %363, %.lr.ph462.epil, %340, %358, %20, %18
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #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 nofree nounwind willreturn memory(write)
declare double @sqrt(double noundef) local_unnamed_addr #3

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

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

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

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

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

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

declare i32 @dlasrt_(ptr noundef, ptr noundef, 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

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 nofree nounwind willreturn memory(write) "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 #4 = { mustprogress 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, !15}
!14 = !{!"llvm.loop.isvectorized", i32 1}
!15 = !{!"llvm.loop.unroll.runtime.disable"}
!16 = distinct !{!16, !12, !15, !14}
!17 = distinct !{!17, !12}
!18 = distinct !{!18, !12, !19}
!19 = !{!"llvm.loop.peeled.count", i32 1}
!20 = distinct !{!20, !12}
!21 = distinct !{!21, !12, !19}
!22 = distinct !{!22, !12}


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