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

; 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"

; Function Attrs: nounwind uwtable
define dso_local i32 @dlarrb_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef %13, ptr noundef %14, ptr noundef %15, ptr noundef %16) #0 {
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca ptr, align 8
  %28 = alloca ptr, align 8
  %29 = alloca ptr, align 8
  %30 = alloca ptr, align 8
  %31 = alloca ptr, align 8
  %32 = alloca ptr, align 8
  %33 = alloca ptr, align 8
  %34 = alloca ptr, align 8
  %35 = alloca i64, align 8
  %36 = alloca double, align 8
  %37 = alloca double, align 8
  %38 = alloca i64, align 8
  %39 = alloca i64, align 8
  %40 = alloca i64, align 8
  %41 = alloca i64, align 8
  %42 = alloca i64, align 8
  %43 = alloca i64, align 8
  %44 = alloca double, align 8
  %45 = alloca double, align 8
  %46 = alloca double, align 8
  %47 = alloca double, align 8
  %48 = alloca double, align 8
  %49 = alloca double, align 8
  %50 = alloca double, align 8
  %51 = alloca i64, align 8
  %52 = alloca i64, align 8
  %53 = alloca i64, align 8
  %54 = alloca i64, align 8
  %55 = alloca double, align 8
  %56 = alloca double, align 8
  %57 = alloca double, align 8
  %58 = alloca i64, align 8
  %59 = alloca double, align 8
  %60 = alloca i64, align 8
  %61 = alloca i64, align 8
  store ptr %0, ptr %18, align 8, !tbaa !5
  store ptr %1, ptr %19, align 8, !tbaa !5
  store ptr %2, ptr %20, align 8, !tbaa !5
  store ptr %3, ptr %21, align 8, !tbaa !5
  store ptr %4, ptr %22, align 8, !tbaa !5
  store ptr %5, ptr %23, align 8, !tbaa !5
  store ptr %6, ptr %24, align 8, !tbaa !5
  store ptr %7, ptr %25, align 8, !tbaa !5
  store ptr %8, ptr %26, align 8, !tbaa !5
  store ptr %9, ptr %27, align 8, !tbaa !5
  store ptr %10, ptr %28, align 8, !tbaa !5
  store ptr %11, ptr %29, align 8, !tbaa !5
  store ptr %12, ptr %30, align 8, !tbaa !5
  store ptr %13, ptr %31, align 8, !tbaa !5
  store ptr %14, ptr %32, align 8, !tbaa !5
  store ptr %15, ptr %33, align 8, !tbaa !5
  store ptr %16, ptr %34, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #4
  %62 = load ptr, ptr %30, align 8, !tbaa !5
  %63 = getelementptr inbounds i64, ptr %62, i32 -1
  store ptr %63, ptr %30, align 8, !tbaa !5
  %64 = load ptr, ptr %29, align 8, !tbaa !5
  %65 = getelementptr inbounds double, ptr %64, i32 -1
  store ptr %65, ptr %29, align 8, !tbaa !5
  %66 = load ptr, ptr %28, align 8, !tbaa !5
  %67 = getelementptr inbounds double, ptr %66, i32 -1
  store ptr %67, ptr %28, align 8, !tbaa !5
  %68 = load ptr, ptr %27, align 8, !tbaa !5
  %69 = getelementptr inbounds double, ptr %68, i32 -1
  store ptr %69, ptr %27, align 8, !tbaa !5
  %70 = load ptr, ptr %26, align 8, !tbaa !5
  %71 = getelementptr inbounds double, ptr %70, i32 -1
  store ptr %71, ptr %26, align 8, !tbaa !5
  %72 = load ptr, ptr %20, align 8, !tbaa !5
  %73 = getelementptr inbounds double, ptr %72, i32 -1
  store ptr %73, ptr %20, align 8, !tbaa !5
  %74 = load ptr, ptr %19, align 8, !tbaa !5
  %75 = getelementptr inbounds double, ptr %74, i32 -1
  store ptr %75, ptr %19, align 8, !tbaa !5
  %76 = load ptr, ptr %34, align 8, !tbaa !5
  store i64 0, ptr %76, align 8, !tbaa !9
  %77 = load ptr, ptr %32, align 8, !tbaa !5
  %78 = load double, ptr %77, align 8, !tbaa !11
  %79 = load ptr, ptr %31, align 8, !tbaa !5
  %80 = load double, ptr %79, align 8, !tbaa !11
  %81 = fadd double %78, %80
  %82 = call double @log(double noundef %81) #4
  %83 = load ptr, ptr %31, align 8, !tbaa !5
  %84 = load double, ptr %83, align 8, !tbaa !11
  %85 = call double @log(double noundef %84) #4
  %86 = fsub double %82, %85
  %87 = call double @log(double noundef 2.000000e+00) #4
  %88 = fdiv double %86, %87
  %89 = fptosi double %88 to i64
  %90 = add nsw i64 %89, 2
  store i64 %90, ptr %61, align 8, !tbaa !9
  %91 = load ptr, ptr %31, align 8, !tbaa !5
  %92 = load double, ptr %91, align 8, !tbaa !11
  %93 = fmul double %92, 2.000000e+00
  store double %93, ptr %59, align 8, !tbaa !11
  %94 = load ptr, ptr %33, align 8, !tbaa !5
  %95 = load i64, ptr %94, align 8, !tbaa !9
  store i64 %95, ptr %40, align 8, !tbaa !9
  %96 = load i64, ptr %40, align 8, !tbaa !9
  %97 = icmp slt i64 %96, 1
  br i1 %97, label %103, label %98

98:                                               ; preds = %17
  %99 = load i64, ptr %40, align 8, !tbaa !9
  %100 = load ptr, ptr %18, align 8, !tbaa !5
  %101 = load i64, ptr %100, align 8, !tbaa !9
  %102 = icmp sgt i64 %99, %101
  br i1 %102, label %103, label %106

103:                                              ; preds = %98, %17
  %104 = load ptr, ptr %18, align 8, !tbaa !5
  %105 = load i64, ptr %104, align 8, !tbaa !9
  store i64 %105, ptr %40, align 8, !tbaa !9
  br label %106

106:                                              ; preds = %103, %98
  %107 = load ptr, ptr %21, align 8, !tbaa !5
  %108 = load i64, ptr %107, align 8, !tbaa !9
  store i64 %108, ptr %41, align 8, !tbaa !9
  store i64 0, ptr %52, align 8, !tbaa !9
  store i64 0, ptr %53, align 8, !tbaa !9
  %109 = load ptr, ptr %27, align 8, !tbaa !5
  %110 = load i64, ptr %41, align 8, !tbaa !9
  %111 = load ptr, ptr %25, align 8, !tbaa !5
  %112 = load i64, ptr %111, align 8, !tbaa !9
  %113 = sub nsw i64 %110, %112
  %114 = getelementptr inbounds double, ptr %109, i64 %113
  %115 = load double, ptr %114, align 8, !tbaa !11
  store double %115, ptr %49, align 8, !tbaa !11
  %116 = load ptr, ptr %22, align 8, !tbaa !5
  %117 = load i64, ptr %116, align 8, !tbaa !9
  store i64 %117, ptr %35, align 8, !tbaa !9
  %118 = load i64, ptr %41, align 8, !tbaa !9
  store i64 %118, ptr %38, align 8, !tbaa !9
  br label %119

119:                                              ; preds = %329, %106
  %120 = load i64, ptr %38, align 8, !tbaa !9
  %121 = load i64, ptr %35, align 8, !tbaa !9
  %122 = icmp sle i64 %120, %121
  br i1 %122, label %123, label %332

123:                                              ; preds = %119
  %124 = load i64, ptr %38, align 8, !tbaa !9
  %125 = shl i64 %124, 1
  store i64 %125, ptr %39, align 8, !tbaa !9
  %126 = load i64, ptr %38, align 8, !tbaa !9
  %127 = load ptr, ptr %25, align 8, !tbaa !5
  %128 = load i64, ptr %127, align 8, !tbaa !9
  %129 = sub nsw i64 %126, %128
  store i64 %129, ptr %42, align 8, !tbaa !9
  %130 = load ptr, ptr %26, align 8, !tbaa !5
  %131 = load i64, ptr %42, align 8, !tbaa !9
  %132 = getelementptr inbounds double, ptr %130, i64 %131
  %133 = load double, ptr %132, align 8, !tbaa !11
  %134 = load ptr, ptr %28, align 8, !tbaa !5
  %135 = load i64, ptr %42, align 8, !tbaa !9
  %136 = getelementptr inbounds double, ptr %134, i64 %135
  %137 = load double, ptr %136, align 8, !tbaa !11
  %138 = fsub double %133, %137
  store double %138, ptr %50, align 8, !tbaa !11
  %139 = load ptr, ptr %26, align 8, !tbaa !5
  %140 = load i64, ptr %42, align 8, !tbaa !9
  %141 = getelementptr inbounds double, ptr %139, i64 %140
  %142 = load double, ptr %141, align 8, !tbaa !11
  %143 = load ptr, ptr %28, align 8, !tbaa !5
  %144 = load i64, ptr %42, align 8, !tbaa !9
  %145 = getelementptr inbounds double, ptr %143, i64 %144
  %146 = load double, ptr %145, align 8, !tbaa !11
  %147 = fadd double %142, %146
  store double %147, ptr %56, align 8, !tbaa !11
  %148 = load double, ptr %49, align 8, !tbaa !11
  store double %148, ptr %48, align 8, !tbaa !11
  %149 = load ptr, ptr %27, align 8, !tbaa !5
  %150 = load i64, ptr %42, align 8, !tbaa !9
  %151 = getelementptr inbounds double, ptr %149, i64 %150
  %152 = load double, ptr %151, align 8, !tbaa !11
  store double %152, ptr %49, align 8, !tbaa !11
  %153 = load double, ptr %48, align 8, !tbaa !11
  %154 = load double, ptr %49, align 8, !tbaa !11
  %155 = fcmp ole double %153, %154
  br i1 %155, label %156, label %158

156:                                              ; preds = %123
  %157 = load double, ptr %48, align 8, !tbaa !11
  br label %160

158:                                              ; preds = %123
  %159 = load double, ptr %49, align 8, !tbaa !11
  br label %160

160:                                              ; preds = %158, %156
  %161 = phi double [ %157, %156 ], [ %159, %158 ]
  store double %161, ptr %44, align 8, !tbaa !11
  %162 = load ptr, ptr %28, align 8, !tbaa !5
  %163 = load i64, ptr %42, align 8, !tbaa !9
  %164 = getelementptr inbounds double, ptr %162, i64 %163
  %165 = load double, ptr %164, align 8, !tbaa !11
  store double %165, ptr %47, align 8, !tbaa !11
  br label %166

166:                                              ; preds = %178, %160
  %167 = load ptr, ptr %18, align 8, !tbaa !5
  %168 = load ptr, ptr %19, align 8, !tbaa !5
  %169 = getelementptr inbounds double, ptr %168, i64 1
  %170 = load ptr, ptr %20, align 8, !tbaa !5
  %171 = getelementptr inbounds double, ptr %170, i64 1
  %172 = load ptr, ptr %31, align 8, !tbaa !5
  %173 = call i64 @dlaneg_(ptr noundef %167, ptr noundef %169, ptr noundef %171, ptr noundef %50, ptr noundef %172, ptr noundef %40)
  store i64 %173, ptr %58, align 8, !tbaa !9
  %174 = load i64, ptr %58, align 8, !tbaa !9
  %175 = load i64, ptr %38, align 8, !tbaa !9
  %176 = sub nsw i64 %175, 1
  %177 = icmp sgt i64 %174, %176
  br i1 %177, label %178, label %184

178:                                              ; preds = %166
  %179 = load double, ptr %47, align 8, !tbaa !11
  %180 = load double, ptr %50, align 8, !tbaa !11
  %181 = fsub double %180, %179
  store double %181, ptr %50, align 8, !tbaa !11
  %182 = load double, ptr %47, align 8, !tbaa !11
  %183 = fmul double %182, 2.000000e+00
  store double %183, ptr %47, align 8, !tbaa !11
  br label %166

184:                                              ; preds = %166
  %185 = load ptr, ptr %28, align 8, !tbaa !5
  %186 = load i64, ptr %42, align 8, !tbaa !9
  %187 = getelementptr inbounds double, ptr %185, i64 %186
  %188 = load double, ptr %187, align 8, !tbaa !11
  store double %188, ptr %47, align 8, !tbaa !11
  br label %189

189:                                              ; preds = %200, %184
  %190 = load ptr, ptr %18, align 8, !tbaa !5
  %191 = load ptr, ptr %19, align 8, !tbaa !5
  %192 = getelementptr inbounds double, ptr %191, i64 1
  %193 = load ptr, ptr %20, align 8, !tbaa !5
  %194 = getelementptr inbounds double, ptr %193, i64 1
  %195 = load ptr, ptr %31, align 8, !tbaa !5
  %196 = call i64 @dlaneg_(ptr noundef %190, ptr noundef %192, ptr noundef %194, ptr noundef %56, ptr noundef %195, ptr noundef %40)
  store i64 %196, ptr %58, align 8, !tbaa !9
  %197 = load i64, ptr %58, align 8, !tbaa !9
  %198 = load i64, ptr %38, align 8, !tbaa !9
  %199 = icmp slt i64 %197, %198
  br i1 %199, label %200, label %206

200:                                              ; preds = %189
  %201 = load double, ptr %47, align 8, !tbaa !11
  %202 = load double, ptr %56, align 8, !tbaa !11
  %203 = fadd double %202, %201
  store double %203, ptr %56, align 8, !tbaa !11
  %204 = load double, ptr %47, align 8, !tbaa !11
  %205 = fmul double %204, 2.000000e+00
  store double %205, ptr %47, align 8, !tbaa !11
  br label %189

206:                                              ; preds = %189
  %207 = load double, ptr %50, align 8, !tbaa !11
  %208 = load double, ptr %56, align 8, !tbaa !11
  %209 = fsub double %207, %208
  store double %209, ptr %36, align 8, !tbaa !11
  %210 = load double, ptr %36, align 8, !tbaa !11
  %211 = fcmp oge double %210, 0.000000e+00
  br i1 %211, label %212, label %214

212:                                              ; preds = %206
  %213 = load double, ptr %36, align 8, !tbaa !11
  br label %217

214:                                              ; preds = %206
  %215 = load double, ptr %36, align 8, !tbaa !11
  %216 = fneg double %215
  br label %217

217:                                              ; preds = %214, %212
  %218 = phi double [ %213, %212 ], [ %216, %214 ]
  %219 = fmul double %218, 5.000000e-01
  store double %219, ptr %57, align 8, !tbaa !11
  %220 = load double, ptr %50, align 8, !tbaa !11
  %221 = fcmp oge double %220, 0.000000e+00
  br i1 %221, label %222, label %224

222:                                              ; preds = %217
  %223 = load double, ptr %50, align 8, !tbaa !11
  br label %227

224:                                              ; preds = %217
  %225 = load double, ptr %50, align 8, !tbaa !11
  %226 = fneg double %225
  br label %227

227:                                              ; preds = %224, %222
  %228 = phi double [ %223, %222 ], [ %226, %224 ]
  store double %228, ptr %36, align 8, !tbaa !11
  %229 = load double, ptr %56, align 8, !tbaa !11
  %230 = fcmp oge double %229, 0.000000e+00
  br i1 %230, label %231, label %233

231:                                              ; preds = %227
  %232 = load double, ptr %56, align 8, !tbaa !11
  br label %236

233:                                              ; preds = %227
  %234 = load double, ptr %56, align 8, !tbaa !11
  %235 = fneg double %234
  br label %236

236:                                              ; preds = %233, %231
  %237 = phi double [ %232, %231 ], [ %235, %233 ]
  store double %237, ptr %37, align 8, !tbaa !11
  %238 = load double, ptr %36, align 8, !tbaa !11
  %239 = load double, ptr %37, align 8, !tbaa !11
  %240 = fcmp oge double %238, %239
  br i1 %240, label %241, label %243

241:                                              ; preds = %236
  %242 = load double, ptr %36, align 8, !tbaa !11
  br label %245

243:                                              ; preds = %236
  %244 = load double, ptr %37, align 8, !tbaa !11
  br label %245

245:                                              ; preds = %243, %241
  %246 = phi double [ %242, %241 ], [ %244, %243 ]
  store double %246, ptr %46, align 8, !tbaa !11
  %247 = load ptr, ptr %23, align 8, !tbaa !5
  %248 = load double, ptr %247, align 8, !tbaa !11
  %249 = load double, ptr %44, align 8, !tbaa !11
  %250 = fmul double %248, %249
  store double %250, ptr %36, align 8, !tbaa !11
  %251 = load ptr, ptr %24, align 8, !tbaa !5
  %252 = load double, ptr %251, align 8, !tbaa !11
  %253 = load double, ptr %46, align 8, !tbaa !11
  %254 = fmul double %252, %253
  store double %254, ptr %37, align 8, !tbaa !11
  %255 = load double, ptr %36, align 8, !tbaa !11
  %256 = load double, ptr %37, align 8, !tbaa !11
  %257 = fcmp oge double %255, %256
  br i1 %257, label %258, label %260

258:                                              ; preds = %245
  %259 = load double, ptr %36, align 8, !tbaa !11
  br label %262

260:                                              ; preds = %245
  %261 = load double, ptr %37, align 8, !tbaa !11
  br label %262

262:                                              ; preds = %260, %258
  %263 = phi double [ %259, %258 ], [ %261, %260 ]
  store double %263, ptr %55, align 8, !tbaa !11
  %264 = load double, ptr %57, align 8, !tbaa !11
  %265 = load double, ptr %55, align 8, !tbaa !11
  %266 = fcmp ole double %264, %265
  br i1 %266, label %271, label %267

267:                                              ; preds = %262
  %268 = load double, ptr %57, align 8, !tbaa !11
  %269 = load double, ptr %59, align 8, !tbaa !11
  %270 = fcmp ole double %268, %269
  br i1 %270, label %271, label %305

271:                                              ; preds = %267, %262
  %272 = load ptr, ptr %30, align 8, !tbaa !5
  %273 = load i64, ptr %39, align 8, !tbaa !9
  %274 = sub nsw i64 %273, 1
  %275 = getelementptr inbounds i64, ptr %272, i64 %274
  store i64 -1, ptr %275, align 8, !tbaa !9
  %276 = load i64, ptr %38, align 8, !tbaa !9
  %277 = load i64, ptr %41, align 8, !tbaa !9
  %278 = icmp eq i64 %276, %277
  br i1 %278, label %279, label %287

279:                                              ; preds = %271
  %280 = load i64, ptr %38, align 8, !tbaa !9
  %281 = load ptr, ptr %22, align 8, !tbaa !5
  %282 = load i64, ptr %281, align 8, !tbaa !9
  %283 = icmp slt i64 %280, %282
  br i1 %283, label %284, label %287

284:                                              ; preds = %279
  %285 = load i64, ptr %38, align 8, !tbaa !9
  %286 = add nsw i64 %285, 1
  store i64 %286, ptr %41, align 8, !tbaa !9
  br label %287

287:                                              ; preds = %284, %279, %271
  %288 = load i64, ptr %53, align 8, !tbaa !9
  %289 = load i64, ptr %41, align 8, !tbaa !9
  %290 = icmp sge i64 %288, %289
  br i1 %290, label %291, label %304

291:                                              ; preds = %287
  %292 = load i64, ptr %38, align 8, !tbaa !9
  %293 = load ptr, ptr %22, align 8, !tbaa !5
  %294 = load i64, ptr %293, align 8, !tbaa !9
  %295 = icmp sle i64 %292, %294
  br i1 %295, label %296, label %304

296:                                              ; preds = %291
  %297 = load i64, ptr %38, align 8, !tbaa !9
  %298 = add nsw i64 %297, 1
  %299 = load ptr, ptr %30, align 8, !tbaa !5
  %300 = load i64, ptr %53, align 8, !tbaa !9
  %301 = shl i64 %300, 1
  %302 = sub nsw i64 %301, 1
  %303 = getelementptr inbounds i64, ptr %299, i64 %302
  store i64 %298, ptr %303, align 8, !tbaa !9
  br label %304

304:                                              ; preds = %296, %291, %287
  br label %319

305:                                              ; preds = %267
  %306 = load i64, ptr %38, align 8, !tbaa !9
  store i64 %306, ptr %53, align 8, !tbaa !9
  %307 = load i64, ptr %52, align 8, !tbaa !9
  %308 = add nsw i64 %307, 1
  store i64 %308, ptr %52, align 8, !tbaa !9
  %309 = load i64, ptr %38, align 8, !tbaa !9
  %310 = add nsw i64 %309, 1
  %311 = load ptr, ptr %30, align 8, !tbaa !5
  %312 = load i64, ptr %39, align 8, !tbaa !9
  %313 = sub nsw i64 %312, 1
  %314 = getelementptr inbounds i64, ptr %311, i64 %313
  store i64 %310, ptr %314, align 8, !tbaa !9
  %315 = load i64, ptr %58, align 8, !tbaa !9
  %316 = load ptr, ptr %30, align 8, !tbaa !5
  %317 = load i64, ptr %39, align 8, !tbaa !9
  %318 = getelementptr inbounds i64, ptr %316, i64 %317
  store i64 %315, ptr %318, align 8, !tbaa !9
  br label %319

319:                                              ; preds = %305, %304
  %320 = load double, ptr %50, align 8, !tbaa !11
  %321 = load ptr, ptr %29, align 8, !tbaa !5
  %322 = load i64, ptr %39, align 8, !tbaa !9
  %323 = sub nsw i64 %322, 1
  %324 = getelementptr inbounds double, ptr %321, i64 %323
  store double %320, ptr %324, align 8, !tbaa !11
  %325 = load double, ptr %56, align 8, !tbaa !11
  %326 = load ptr, ptr %29, align 8, !tbaa !5
  %327 = load i64, ptr %39, align 8, !tbaa !9
  %328 = getelementptr inbounds double, ptr %326, i64 %327
  store double %325, ptr %328, align 8, !tbaa !11
  br label %329

329:                                              ; preds = %319
  %330 = load i64, ptr %38, align 8, !tbaa !9
  %331 = add nsw i64 %330, 1
  store i64 %331, ptr %38, align 8, !tbaa !9
  br label %119, !llvm.loop !13

332:                                              ; preds = %119
  store i64 0, ptr %51, align 8, !tbaa !9
  br label %333

333:                                              ; preds = %514, %332
  %334 = load i64, ptr %41, align 8, !tbaa !9
  %335 = sub nsw i64 %334, 1
  store i64 %335, ptr %53, align 8, !tbaa !9
  %336 = load i64, ptr %41, align 8, !tbaa !9
  store i64 %336, ptr %38, align 8, !tbaa !9
  %337 = load i64, ptr %52, align 8, !tbaa !9
  store i64 %337, ptr %60, align 8, !tbaa !9
  %338 = load i64, ptr %60, align 8, !tbaa !9
  store i64 %338, ptr %35, align 8, !tbaa !9
  store i64 1, ptr %43, align 8, !tbaa !9
  br label %339

339:                                              ; preds = %502, %333
  %340 = load i64, ptr %43, align 8, !tbaa !9
  %341 = load i64, ptr %35, align 8, !tbaa !9
  %342 = icmp sle i64 %340, %341
  br i1 %342, label %343, label %505

343:                                              ; preds = %339
  %344 = load i64, ptr %38, align 8, !tbaa !9
  %345 = shl i64 %344, 1
  store i64 %345, ptr %39, align 8, !tbaa !9
  %346 = load i64, ptr %38, align 8, !tbaa !9
  %347 = load ptr, ptr %25, align 8, !tbaa !5
  %348 = load i64, ptr %347, align 8, !tbaa !9
  %349 = sub nsw i64 %346, %348
  store i64 %349, ptr %42, align 8, !tbaa !9
  %350 = load ptr, ptr %27, align 8, !tbaa !5
  %351 = load i64, ptr %42, align 8, !tbaa !9
  %352 = getelementptr inbounds double, ptr %350, i64 %351
  %353 = load double, ptr %352, align 8, !tbaa !11
  store double %353, ptr %49, align 8, !tbaa !11
  %354 = load double, ptr %49, align 8, !tbaa !11
  store double %354, ptr %48, align 8, !tbaa !11
  %355 = load i64, ptr %42, align 8, !tbaa !9
  %356 = icmp sgt i64 %355, 1
  br i1 %356, label %357, label %363

357:                                              ; preds = %343
  %358 = load ptr, ptr %27, align 8, !tbaa !5
  %359 = load i64, ptr %42, align 8, !tbaa !9
  %360 = sub nsw i64 %359, 1
  %361 = getelementptr inbounds double, ptr %358, i64 %360
  %362 = load double, ptr %361, align 8, !tbaa !11
  store double %362, ptr %48, align 8, !tbaa !11
  br label %363

363:                                              ; preds = %357, %343
  %364 = load double, ptr %48, align 8, !tbaa !11
  %365 = load double, ptr %49, align 8, !tbaa !11
  %366 = fcmp ole double %364, %365
  br i1 %366, label %367, label %369

367:                                              ; preds = %363
  %368 = load double, ptr %48, align 8, !tbaa !11
  br label %371

369:                                              ; preds = %363
  %370 = load double, ptr %49, align 8, !tbaa !11
  br label %371

371:                                              ; preds = %369, %367
  %372 = phi double [ %368, %367 ], [ %370, %369 ]
  store double %372, ptr %44, align 8, !tbaa !11
  %373 = load ptr, ptr %30, align 8, !tbaa !5
  %374 = load i64, ptr %39, align 8, !tbaa !9
  %375 = sub nsw i64 %374, 1
  %376 = getelementptr inbounds i64, ptr %373, i64 %375
  %377 = load i64, ptr %376, align 8, !tbaa !9
  store i64 %377, ptr %54, align 8, !tbaa !9
  %378 = load ptr, ptr %29, align 8, !tbaa !5
  %379 = load i64, ptr %39, align 8, !tbaa !9
  %380 = sub nsw i64 %379, 1
  %381 = getelementptr inbounds double, ptr %378, i64 %380
  %382 = load double, ptr %381, align 8, !tbaa !11
  store double %382, ptr %50, align 8, !tbaa !11
  %383 = load ptr, ptr %29, align 8, !tbaa !5
  %384 = load i64, ptr %39, align 8, !tbaa !9
  %385 = getelementptr inbounds double, ptr %383, i64 %384
  %386 = load double, ptr %385, align 8, !tbaa !11
  store double %386, ptr %56, align 8, !tbaa !11
  %387 = load double, ptr %50, align 8, !tbaa !11
  %388 = load double, ptr %56, align 8, !tbaa !11
  %389 = fadd double %387, %388
  %390 = fmul double %389, 5.000000e-01
  store double %390, ptr %45, align 8, !tbaa !11
  %391 = load double, ptr %56, align 8, !tbaa !11
  %392 = load double, ptr %45, align 8, !tbaa !11
  %393 = fsub double %391, %392
  store double %393, ptr %57, align 8, !tbaa !11
  %394 = load double, ptr %50, align 8, !tbaa !11
  %395 = fcmp oge double %394, 0.000000e+00
  br i1 %395, label %396, label %398

396:                                              ; preds = %371
  %397 = load double, ptr %50, align 8, !tbaa !11
  br label %401

398:                                              ; preds = %371
  %399 = load double, ptr %50, align 8, !tbaa !11
  %400 = fneg double %399
  br label %401

401:                                              ; preds = %398, %396
  %402 = phi double [ %397, %396 ], [ %400, %398 ]
  store double %402, ptr %36, align 8, !tbaa !11
  %403 = load double, ptr %56, align 8, !tbaa !11
  %404 = fcmp oge double %403, 0.000000e+00
  br i1 %404, label %405, label %407

405:                                              ; preds = %401
  %406 = load double, ptr %56, align 8, !tbaa !11
  br label %410

407:                                              ; preds = %401
  %408 = load double, ptr %56, align 8, !tbaa !11
  %409 = fneg double %408
  br label %410

410:                                              ; preds = %407, %405
  %411 = phi double [ %406, %405 ], [ %409, %407 ]
  store double %411, ptr %37, align 8, !tbaa !11
  %412 = load double, ptr %36, align 8, !tbaa !11
  %413 = load double, ptr %37, align 8, !tbaa !11
  %414 = fcmp oge double %412, %413
  br i1 %414, label %415, label %417

415:                                              ; preds = %410
  %416 = load double, ptr %36, align 8, !tbaa !11
  br label %419

417:                                              ; preds = %410
  %418 = load double, ptr %37, align 8, !tbaa !11
  br label %419

419:                                              ; preds = %417, %415
  %420 = phi double [ %416, %415 ], [ %418, %417 ]
  store double %420, ptr %46, align 8, !tbaa !11
  %421 = load ptr, ptr %23, align 8, !tbaa !5
  %422 = load double, ptr %421, align 8, !tbaa !11
  %423 = load double, ptr %44, align 8, !tbaa !11
  %424 = fmul double %422, %423
  store double %424, ptr %36, align 8, !tbaa !11
  %425 = load ptr, ptr %24, align 8, !tbaa !5
  %426 = load double, ptr %425, align 8, !tbaa !11
  %427 = load double, ptr %46, align 8, !tbaa !11
  %428 = fmul double %426, %427
  store double %428, ptr %37, align 8, !tbaa !11
  %429 = load double, ptr %36, align 8, !tbaa !11
  %430 = load double, ptr %37, align 8, !tbaa !11
  %431 = fcmp oge double %429, %430
  br i1 %431, label %432, label %434

432:                                              ; preds = %419
  %433 = load double, ptr %36, align 8, !tbaa !11
  br label %436

434:                                              ; preds = %419
  %435 = load double, ptr %37, align 8, !tbaa !11
  br label %436

436:                                              ; preds = %434, %432
  %437 = phi double [ %433, %432 ], [ %435, %434 ]
  store double %437, ptr %55, align 8, !tbaa !11
  %438 = load double, ptr %57, align 8, !tbaa !11
  %439 = load double, ptr %55, align 8, !tbaa !11
  %440 = fcmp ole double %438, %439
  br i1 %440, label %449, label %441

441:                                              ; preds = %436
  %442 = load double, ptr %57, align 8, !tbaa !11
  %443 = load double, ptr %59, align 8, !tbaa !11
  %444 = fcmp ole double %442, %443
  br i1 %444, label %449, label %445

445:                                              ; preds = %441
  %446 = load i64, ptr %51, align 8, !tbaa !9
  %447 = load i64, ptr %61, align 8, !tbaa !9
  %448 = icmp eq i64 %446, %447
  br i1 %448, label %449, label %475

449:                                              ; preds = %445, %441, %436
  %450 = load i64, ptr %52, align 8, !tbaa !9
  %451 = add nsw i64 %450, -1
  store i64 %451, ptr %52, align 8, !tbaa !9
  %452 = load ptr, ptr %30, align 8, !tbaa !5
  %453 = load i64, ptr %39, align 8, !tbaa !9
  %454 = sub nsw i64 %453, 1
  %455 = getelementptr inbounds i64, ptr %452, i64 %454
  store i64 0, ptr %455, align 8, !tbaa !9
  %456 = load i64, ptr %41, align 8, !tbaa !9
  %457 = load i64, ptr %38, align 8, !tbaa !9
  %458 = icmp eq i64 %456, %457
  br i1 %458, label %459, label %461

459:                                              ; preds = %449
  %460 = load i64, ptr %54, align 8, !tbaa !9
  store i64 %460, ptr %41, align 8, !tbaa !9
  br label %473

461:                                              ; preds = %449
  %462 = load i64, ptr %53, align 8, !tbaa !9
  %463 = load i64, ptr %41, align 8, !tbaa !9
  %464 = icmp sge i64 %462, %463
  br i1 %464, label %465, label %472

465:                                              ; preds = %461
  %466 = load i64, ptr %54, align 8, !tbaa !9
  %467 = load ptr, ptr %30, align 8, !tbaa !5
  %468 = load i64, ptr %53, align 8, !tbaa !9
  %469 = shl i64 %468, 1
  %470 = sub nsw i64 %469, 1
  %471 = getelementptr inbounds i64, ptr %467, i64 %470
  store i64 %466, ptr %471, align 8, !tbaa !9
  br label %472

472:                                              ; preds = %465, %461
  br label %473

473:                                              ; preds = %472, %459
  %474 = load i64, ptr %54, align 8, !tbaa !9
  store i64 %474, ptr %38, align 8, !tbaa !9
  br label %501

475:                                              ; preds = %445
  %476 = load i64, ptr %38, align 8, !tbaa !9
  store i64 %476, ptr %53, align 8, !tbaa !9
  %477 = load ptr, ptr %18, align 8, !tbaa !5
  %478 = load ptr, ptr %19, align 8, !tbaa !5
  %479 = getelementptr inbounds double, ptr %478, i64 1
  %480 = load ptr, ptr %20, align 8, !tbaa !5
  %481 = getelementptr inbounds double, ptr %480, i64 1
  %482 = load ptr, ptr %31, align 8, !tbaa !5
  %483 = call i64 @dlaneg_(ptr noundef %477, ptr noundef %479, ptr noundef %481, ptr noundef %45, ptr noundef %482, ptr noundef %40)
  store i64 %483, ptr %58, align 8, !tbaa !9
  %484 = load i64, ptr %58, align 8, !tbaa !9
  %485 = load i64, ptr %38, align 8, !tbaa !9
  %486 = sub nsw i64 %485, 1
  %487 = icmp sle i64 %484, %486
  br i1 %487, label %488, label %494

488:                                              ; preds = %475
  %489 = load double, ptr %45, align 8, !tbaa !11
  %490 = load ptr, ptr %29, align 8, !tbaa !5
  %491 = load i64, ptr %39, align 8, !tbaa !9
  %492 = sub nsw i64 %491, 1
  %493 = getelementptr inbounds double, ptr %490, i64 %492
  store double %489, ptr %493, align 8, !tbaa !11
  br label %499

494:                                              ; preds = %475
  %495 = load double, ptr %45, align 8, !tbaa !11
  %496 = load ptr, ptr %29, align 8, !tbaa !5
  %497 = load i64, ptr %39, align 8, !tbaa !9
  %498 = getelementptr inbounds double, ptr %496, i64 %497
  store double %495, ptr %498, align 8, !tbaa !11
  br label %499

499:                                              ; preds = %494, %488
  %500 = load i64, ptr %54, align 8, !tbaa !9
  store i64 %500, ptr %38, align 8, !tbaa !9
  br label %501

501:                                              ; preds = %499, %473
  br label %502

502:                                              ; preds = %501
  %503 = load i64, ptr %43, align 8, !tbaa !9
  %504 = add nsw i64 %503, 1
  store i64 %504, ptr %43, align 8, !tbaa !9
  br label %339, !llvm.loop !15

505:                                              ; preds = %339
  %506 = load i64, ptr %51, align 8, !tbaa !9
  %507 = add nsw i64 %506, 1
  store i64 %507, ptr %51, align 8, !tbaa !9
  %508 = load i64, ptr %52, align 8, !tbaa !9
  %509 = icmp sgt i64 %508, 0
  br i1 %509, label %510, label %515

510:                                              ; preds = %505
  %511 = load i64, ptr %51, align 8, !tbaa !9
  %512 = load i64, ptr %61, align 8, !tbaa !9
  %513 = icmp sle i64 %511, %512
  br i1 %513, label %514, label %515

514:                                              ; preds = %510
  br label %333

515:                                              ; preds = %510, %505
  %516 = load ptr, ptr %22, align 8, !tbaa !5
  %517 = load i64, ptr %516, align 8, !tbaa !9
  store i64 %517, ptr %35, align 8, !tbaa !9
  %518 = load ptr, ptr %21, align 8, !tbaa !5
  %519 = load i64, ptr %518, align 8, !tbaa !9
  store i64 %519, ptr %38, align 8, !tbaa !9
  br label %520

520:                                              ; preds = %565, %515
  %521 = load i64, ptr %38, align 8, !tbaa !9
  %522 = load i64, ptr %35, align 8, !tbaa !9
  %523 = icmp sle i64 %521, %522
  br i1 %523, label %524, label %568

524:                                              ; preds = %520
  %525 = load i64, ptr %38, align 8, !tbaa !9
  %526 = shl i64 %525, 1
  store i64 %526, ptr %39, align 8, !tbaa !9
  %527 = load i64, ptr %38, align 8, !tbaa !9
  %528 = load ptr, ptr %25, align 8, !tbaa !5
  %529 = load i64, ptr %528, align 8, !tbaa !9
  %530 = sub nsw i64 %527, %529
  store i64 %530, ptr %42, align 8, !tbaa !9
  %531 = load ptr, ptr %30, align 8, !tbaa !5
  %532 = load i64, ptr %39, align 8, !tbaa !9
  %533 = sub nsw i64 %532, 1
  %534 = getelementptr inbounds i64, ptr %531, i64 %533
  %535 = load i64, ptr %534, align 8, !tbaa !9
  %536 = icmp eq i64 %535, 0
  br i1 %536, label %537, label %564

537:                                              ; preds = %524
  %538 = load ptr, ptr %29, align 8, !tbaa !5
  %539 = load i64, ptr %39, align 8, !tbaa !9
  %540 = sub nsw i64 %539, 1
  %541 = getelementptr inbounds double, ptr %538, i64 %540
  %542 = load double, ptr %541, align 8, !tbaa !11
  %543 = load ptr, ptr %29, align 8, !tbaa !5
  %544 = load i64, ptr %39, align 8, !tbaa !9
  %545 = getelementptr inbounds double, ptr %543, i64 %544
  %546 = load double, ptr %545, align 8, !tbaa !11
  %547 = fadd double %542, %546
  %548 = fmul double %547, 5.000000e-01
  %549 = load ptr, ptr %26, align 8, !tbaa !5
  %550 = load i64, ptr %42, align 8, !tbaa !9
  %551 = getelementptr inbounds double, ptr %549, i64 %550
  store double %548, ptr %551, align 8, !tbaa !11
  %552 = load ptr, ptr %29, align 8, !tbaa !5
  %553 = load i64, ptr %39, align 8, !tbaa !9
  %554 = getelementptr inbounds double, ptr %552, i64 %553
  %555 = load double, ptr %554, align 8, !tbaa !11
  %556 = load ptr, ptr %26, align 8, !tbaa !5
  %557 = load i64, ptr %42, align 8, !tbaa !9
  %558 = getelementptr inbounds double, ptr %556, i64 %557
  %559 = load double, ptr %558, align 8, !tbaa !11
  %560 = fsub double %555, %559
  %561 = load ptr, ptr %28, align 8, !tbaa !5
  %562 = load i64, ptr %42, align 8, !tbaa !9
  %563 = getelementptr inbounds double, ptr %561, i64 %562
  store double %560, ptr %563, align 8, !tbaa !11
  br label %564

564:                                              ; preds = %537, %524
  br label %565

565:                                              ; preds = %564
  %566 = load i64, ptr %38, align 8, !tbaa !9
  %567 = add nsw i64 %566, 1
  store i64 %567, ptr %38, align 8, !tbaa !9
  br label %520, !llvm.loop !16

568:                                              ; preds = %520
  %569 = load ptr, ptr %22, align 8, !tbaa !5
  %570 = load i64, ptr %569, align 8, !tbaa !9
  store i64 %570, ptr %35, align 8, !tbaa !9
  %571 = load ptr, ptr %21, align 8, !tbaa !5
  %572 = load i64, ptr %571, align 8, !tbaa !9
  %573 = add nsw i64 %572, 1
  store i64 %573, ptr %38, align 8, !tbaa !9
  br label %574

574:                                              ; preds = %619, %568
  %575 = load i64, ptr %38, align 8, !tbaa !9
  %576 = load i64, ptr %35, align 8, !tbaa !9
  %577 = icmp sle i64 %575, %576
  br i1 %577, label %578, label %622

578:                                              ; preds = %574
  %579 = load i64, ptr %38, align 8, !tbaa !9
  %580 = shl i64 %579, 1
  store i64 %580, ptr %39, align 8, !tbaa !9
  %581 = load i64, ptr %38, align 8, !tbaa !9
  %582 = load ptr, ptr %25, align 8, !tbaa !5
  %583 = load i64, ptr %582, align 8, !tbaa !9
  %584 = sub nsw i64 %581, %583
  store i64 %584, ptr %42, align 8, !tbaa !9
  store double 0.000000e+00, ptr %36, align 8, !tbaa !11
  %585 = load ptr, ptr %26, align 8, !tbaa !5
  %586 = load i64, ptr %42, align 8, !tbaa !9
  %587 = getelementptr inbounds double, ptr %585, i64 %586
  %588 = load double, ptr %587, align 8, !tbaa !11
  %589 = load ptr, ptr %28, align 8, !tbaa !5
  %590 = load i64, ptr %42, align 8, !tbaa !9
  %591 = getelementptr inbounds double, ptr %589, i64 %590
  %592 = load double, ptr %591, align 8, !tbaa !11
  %593 = fsub double %588, %592
  %594 = load ptr, ptr %26, align 8, !tbaa !5
  %595 = load i64, ptr %42, align 8, !tbaa !9
  %596 = sub nsw i64 %595, 1
  %597 = getelementptr inbounds double, ptr %594, i64 %596
  %598 = load double, ptr %597, align 8, !tbaa !11
  %599 = fsub double %593, %598
  %600 = load ptr, ptr %28, align 8, !tbaa !5
  %601 = load i64, ptr %42, align 8, !tbaa !9
  %602 = sub nsw i64 %601, 1
  %603 = getelementptr inbounds double, ptr %600, i64 %602
  %604 = load double, ptr %603, align 8, !tbaa !11
  %605 = fsub double %599, %604
  store double %605, ptr %37, align 8, !tbaa !11
  %606 = load double, ptr %36, align 8, !tbaa !11
  %607 = load double, ptr %37, align 8, !tbaa !11
  %608 = fcmp oge double %606, %607
  br i1 %608, label %609, label %611

609:                                              ; preds = %578
  %610 = load double, ptr %36, align 8, !tbaa !11
  br label %613

611:                                              ; preds = %578
  %612 = load double, ptr %37, align 8, !tbaa !11
  br label %613

613:                                              ; preds = %611, %609
  %614 = phi double [ %610, %609 ], [ %612, %611 ]
  %615 = load ptr, ptr %27, align 8, !tbaa !5
  %616 = load i64, ptr %42, align 8, !tbaa !9
  %617 = sub nsw i64 %616, 1
  %618 = getelementptr inbounds double, ptr %615, i64 %617
  store double %614, ptr %618, align 8, !tbaa !11
  br label %619

619:                                              ; preds = %613
  %620 = load i64, ptr %38, align 8, !tbaa !9
  %621 = add nsw i64 %620, 1
  store i64 %621, ptr %38, align 8, !tbaa !9
  br label %574, !llvm.loop !17

622:                                              ; preds = %574
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #4
  ret i32 0
}

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

; Function Attrs: nounwind
declare double @log(double noundef) #2

declare i64 @dlaneg_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #3

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

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


; 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"

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @dlarrb_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr nocapture noundef readonly %3, ptr nocapture noundef readonly %4, ptr nocapture noundef readonly %5, ptr nocapture noundef readonly %6, ptr nocapture noundef readonly %7, ptr nocapture noundef %8, ptr nocapture noundef %9, ptr nocapture noundef %10, ptr nocapture noundef %11, ptr nocapture noundef %12, ptr noundef %13, ptr nocapture noundef readonly %14, ptr nocapture noundef readonly %15, ptr nocapture noundef writeonly %16) local_unnamed_addr #0 {
  %18 = alloca i64, align 8
  %19 = alloca double, align 8
  %20 = alloca double, align 8
  %21 = alloca double, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #5
  %22 = getelementptr inbounds i8, ptr %12, i64 -8
  %23 = getelementptr inbounds i8, ptr %11, i64 -8
  %24 = getelementptr inbounds i8, ptr %10, i64 -8
  %25 = getelementptr inbounds i8, ptr %9, i64 -8
  %26 = getelementptr inbounds i8, ptr %8, i64 -8
  store i64 0, ptr %16, align 8, !tbaa !5
  %27 = load double, ptr %14, align 8, !tbaa !9
  %28 = load double, ptr %13, align 8, !tbaa !9
  %29 = fadd double %27, %28
  %30 = tail call double @log(double noundef %29) #5
  %31 = load double, ptr %13, align 8, !tbaa !9
  %32 = tail call double @log(double noundef %31) #5
  %33 = fsub double %30, %32
  %34 = fdiv double %33, 0x3FE62E42FEFA39EF
  %35 = fptosi double %34 to i64
  %36 = add nsw i64 %35, 2
  %37 = load double, ptr %13, align 8, !tbaa !9
  %38 = fmul double %37, 2.000000e+00
  %39 = load i64, ptr %15, align 8, !tbaa !5
  store i64 %39, ptr %18, align 8, !tbaa !5
  %40 = icmp slt i64 %39, 1
  %.pre = load i64, ptr %0, align 8, !tbaa !5
  %41 = tail call i64 @llvm.smin.i64(i64 %39, i64 %.pre)
  %spec.store.select = select i1 %40, i64 %.pre, i64 %41
  store i64 %spec.store.select, ptr %18, align 8
  %42 = load i64, ptr %3, align 8, !tbaa !5
  %43 = load i64, ptr %4, align 8, !tbaa !5
  %invariant.gep = getelementptr i8, ptr %12, i64 -16
  %.not273 = icmp sgt i64 %42, %43
  br i1 %.not273, label %.preheader264.preheader, label %.lr.ph280.preheader

.lr.ph280.preheader:                              ; preds = %17
  %44 = load i64, ptr %7, align 8, !tbaa !5
  %45 = sub nsw i64 %42, %44
  %46 = getelementptr inbounds double, ptr %25, i64 %45
  %47 = load double, ptr %46, align 8, !tbaa !9
  br label %.lr.ph280

.lr.ph280:                                        ; preds = %.lr.ph280.preheader, %113
  %.0278 = phi i64 [ %.1, %113 ], [ 0, %.lr.ph280.preheader ]
  %.0222277 = phi i64 [ %.1223, %113 ], [ 0, %.lr.ph280.preheader ]
  %.0227276 = phi double [ %58, %113 ], [ %47, %.lr.ph280.preheader ]
  %.0232275 = phi i64 [ %.2234, %113 ], [ %42, %.lr.ph280.preheader ]
  %.0237274 = phi i64 [ %116, %113 ], [ %42, %.lr.ph280.preheader ]
  %48 = shl i64 %.0237274, 1
  %49 = load i64, ptr %7, align 8, !tbaa !5
  %50 = sub nsw i64 %.0237274, %49
  %51 = getelementptr inbounds double, ptr %26, i64 %50
  %52 = load double, ptr %51, align 8, !tbaa !9
  %53 = getelementptr inbounds double, ptr %24, i64 %50
  %54 = load double, ptr %53, align 8, !tbaa !9
  %55 = fsub double %52, %54
  store double %55, ptr %20, align 8, !tbaa !9
  %56 = fadd double %52, %54
  store double %56, ptr %21, align 8, !tbaa !9
  %57 = getelementptr inbounds double, ptr %25, i64 %50
  %58 = load double, ptr %57, align 8, !tbaa !9
  %59 = fcmp ole double %.0227276, %58
  %60 = select i1 %59, double %.0227276, double %58
  %61 = call i64 @dlaneg_(ptr noundef nonnull %0, ptr noundef %1, ptr noundef %2, ptr noundef nonnull %20, ptr noundef nonnull %13, ptr noundef nonnull %18) #5
  %.not254265 = icmp slt i64 %61, %.0237274
  br i1 %.not254265, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph280, %.lr.ph
  %.0229266 = phi double [ %64, %.lr.ph ], [ %54, %.lr.ph280 ]
  %62 = load double, ptr %20, align 8, !tbaa !9
  %63 = fsub double %62, %.0229266
  store double %63, ptr %20, align 8, !tbaa !9
  %64 = fmul double %.0229266, 2.000000e+00
  %65 = call i64 @dlaneg_(ptr noundef nonnull %0, ptr noundef %1, ptr noundef %2, ptr noundef nonnull %20, ptr noundef nonnull %13, ptr noundef nonnull %18) #5
  %.not254 = icmp slt i64 %65, %.0237274
  br i1 %.not254, label %._crit_edge, label %.lr.ph

._crit_edge:                                      ; preds = %.lr.ph, %.lr.ph280
  %66 = load double, ptr %53, align 8, !tbaa !9
  %67 = call i64 @dlaneg_(ptr noundef nonnull %0, ptr noundef %1, ptr noundef %2, ptr noundef nonnull %21, ptr noundef nonnull %13, ptr noundef nonnull %18) #5
  %68 = icmp slt i64 %67, %.0237274
  br i1 %68, label %.lr.ph269, label %._crit_edge270

.lr.ph269:                                        ; preds = %._crit_edge, %.lr.ph269
  %.1230267 = phi double [ %71, %.lr.ph269 ], [ %66, %._crit_edge ]
  %69 = load double, ptr %21, align 8, !tbaa !9
  %70 = fadd double %.1230267, %69
  store double %70, ptr %21, align 8, !tbaa !9
  %71 = fmul double %.1230267, 2.000000e+00
  %72 = call i64 @dlaneg_(ptr noundef nonnull %0, ptr noundef %1, ptr noundef %2, ptr noundef nonnull %21, ptr noundef nonnull %13, ptr noundef nonnull %18) #5
  %73 = icmp slt i64 %72, %.0237274
  br i1 %73, label %.lr.ph269, label %._crit_edge270

._crit_edge270:                                   ; preds = %.lr.ph269, %._crit_edge
  %.lcssa = phi i64 [ %67, %._crit_edge ], [ %72, %.lr.ph269 ]
  %74 = load double, ptr %20, align 8
  %75 = load double, ptr %21, align 8
  %76 = fsub double %74, %75
  %77 = fcmp oge double %76, 0.000000e+00
  %78 = fneg double %76
  %79 = select i1 %77, double %76, double %78
  %80 = fmul double %79, 5.000000e-01
  %81 = fcmp oge double %74, 0.000000e+00
  %82 = fneg double %74
  %83 = select i1 %81, double %74, double %82
  %84 = fcmp oge double %75, 0.000000e+00
  %85 = fneg double %75
  %86 = select i1 %84, double %75, double %85
  %87 = fcmp oge double %83, %86
  %88 = select i1 %87, double %83, double %86
  %89 = load double, ptr %5, align 8, !tbaa !9
  %90 = fmul double %60, %89
  %91 = load double, ptr %6, align 8, !tbaa !9
  %92 = fmul double %91, %88
  %93 = fcmp oge double %90, %92
  %94 = select i1 %93, double %90, double %92
  %95 = fcmp ugt double %80, %94
  %96 = fcmp ugt double %80, %38
  %or.cond = select i1 %95, i1 %96, i1 false
  br i1 %or.cond, label %108, label %97

97:                                               ; preds = %._crit_edge270
  %gep = getelementptr i64, ptr %invariant.gep, i64 %48
  store i64 -1, ptr %gep, align 8, !tbaa !5
  %98 = icmp eq i64 %.0237274, %.0232275
  br i1 %98, label %99, label %103

99:                                               ; preds = %97
  %100 = load i64, ptr %4, align 8, !tbaa !5
  %101 = icmp slt i64 %.0232275, %100
  %102 = zext i1 %101 to i64
  %spec.select = add nsw i64 %.0232275, %102
  br label %103

103:                                              ; preds = %99, %97
  %.1233 = phi i64 [ %.0232275, %97 ], [ %spec.select, %99 ]
  %.not255 = icmp slt i64 %.0278, %.1233
  br i1 %.not255, label %113, label %104

104:                                              ; preds = %103
  %105 = load i64, ptr %4, align 8, !tbaa !5
  %.not256 = icmp sgt i64 %.0237274, %105
  br i1 %.not256, label %113, label %106

106:                                              ; preds = %104
  %107 = add nsw i64 %.0237274, 1
  %.idx257 = shl i64 %.0278, 4
  %gep272 = getelementptr i8, ptr %invariant.gep, i64 %.idx257
  store i64 %107, ptr %gep272, align 8, !tbaa !5
  br label %113

108:                                              ; preds = %._crit_edge270
  %109 = add nsw i64 %.0222277, 1
  %110 = add nsw i64 %.0237274, 1
  %111 = getelementptr i64, ptr %22, i64 %48
  %112 = getelementptr i8, ptr %111, i64 -8
  store i64 %110, ptr %112, align 8, !tbaa !5
  store i64 %.lcssa, ptr %111, align 8, !tbaa !5
  br label %113

113:                                              ; preds = %103, %104, %106, %108
  %.2234 = phi i64 [ %.1233, %106 ], [ %.1233, %104 ], [ %.1233, %103 ], [ %.0232275, %108 ]
  %.1223 = phi i64 [ %.0222277, %106 ], [ %.0222277, %104 ], [ %.0222277, %103 ], [ %109, %108 ]
  %.1 = phi i64 [ %.0278, %106 ], [ %.0278, %104 ], [ %.0278, %103 ], [ %.0237274, %108 ]
  %114 = getelementptr double, ptr %23, i64 %48
  %115 = getelementptr i8, ptr %114, i64 -8
  store double %74, ptr %115, align 8, !tbaa !9
  store double %75, ptr %114, align 8, !tbaa !9
  %116 = add i64 %.0237274, 1
  %exitcond.not = icmp eq i64 %.0237274, %43
  br i1 %exitcond.not, label %.preheader264.preheader, label %.lr.ph280, !llvm.loop !11

.preheader264.preheader:                          ; preds = %113, %17
  %.3235.ph = phi i64 [ %42, %17 ], [ %.2234, %113 ]
  %.2224.ph = phi i64 [ 0, %17 ], [ %.1223, %113 ]
  br label %.preheader264

.preheader264:                                    ; preds = %.preheader264.preheader, %._crit_edge293
  %.3235 = phi i64 [ %.6, %._crit_edge293 ], [ %.3235.ph, %.preheader264.preheader ]
  %.0226 = phi i64 [ %171, %._crit_edge293 ], [ 0, %.preheader264.preheader ]
  %.2224 = phi i64 [ %.4, %._crit_edge293 ], [ %.2224.ph, %.preheader264.preheader ]
  %.not248285 = icmp slt i64 %.2224, 1
  br i1 %.not248285, label %._crit_edge293.thread, label %.lr.ph292

.lr.ph292:                                        ; preds = %.preheader264
  %117 = add nsw i64 %.3235, -1
  %118 = icmp eq i64 %.0226, %36
  br label %119

119:                                              ; preds = %.lr.ph292, %168
  %.2290 = phi i64 [ %117, %.lr.ph292 ], [ %.3, %168 ]
  %.3225289 = phi i64 [ %.2224, %.lr.ph292 ], [ %.4, %168 ]
  %.0231288 = phi i64 [ 1, %.lr.ph292 ], [ %169, %168 ]
  %.4236287 = phi i64 [ %.3235, %.lr.ph292 ], [ %.6, %168 ]
  %.1238286 = phi i64 [ %.3235, %.lr.ph292 ], [ %134, %168 ]
  %120 = shl i64 %.1238286, 1
  %121 = load i64, ptr %7, align 8, !tbaa !5
  %122 = sub nsw i64 %.1238286, %121
  %123 = getelementptr inbounds double, ptr %25, i64 %122
  %124 = load double, ptr %123, align 8, !tbaa !9
  %125 = icmp sgt i64 %122, 1
  br i1 %125, label %126, label %129

126:                                              ; preds = %119
  %127 = getelementptr i8, ptr %123, i64 -8
  %128 = load double, ptr %127, align 8, !tbaa !9
  br label %129

129:                                              ; preds = %126, %119
  %.0228 = phi double [ %128, %126 ], [ %124, %119 ]
  %130 = fcmp ole double %.0228, %124
  %131 = select i1 %130, double %.0228, double %124
  %132 = add nsw i64 %120, -1
  %133 = getelementptr inbounds i64, ptr %22, i64 %132
  %134 = load i64, ptr %133, align 8, !tbaa !5
  %135 = getelementptr inbounds double, ptr %23, i64 %132
  %136 = getelementptr inbounds double, ptr %23, i64 %120
  %137 = load <2 x double>, ptr %135, align 8, !tbaa !9
  %138 = extractelement <2 x double> %137, i64 0
  store double %138, ptr %20, align 8, !tbaa !9
  %139 = extractelement <2 x double> %137, i64 1
  store double %139, ptr %21, align 8, !tbaa !9
  %140 = fadd double %138, %139
  %141 = fmul double %140, 5.000000e-01
  store double %141, ptr %19, align 8, !tbaa !9
  %142 = fsub double %139, %141
  %143 = fcmp oge <2 x double> %137, zeroinitializer
  %144 = fneg <2 x double> %137
  %145 = select <2 x i1> %143, <2 x double> %137, <2 x double> %144
  %146 = extractelement <2 x double> %145, i64 0
  %147 = extractelement <2 x double> %145, i64 1
  %148 = fcmp oge double %146, %147
  %149 = select i1 %148, double %146, double %147
  %150 = load double, ptr %5, align 8, !tbaa !9
  %151 = fmul double %131, %150
  %152 = load double, ptr %6, align 8, !tbaa !9
  %153 = fmul double %152, %149
  %154 = fcmp oge double %151, %153
  %155 = select i1 %154, double %151, double %153
  %156 = fcmp ole double %142, %155
  %157 = fcmp ole double %142, %38
  %or.cond258.not263 = select i1 %156, i1 true, i1 %157
  %or.cond259 = select i1 %or.cond258.not263, i1 true, i1 %118
  br i1 %or.cond259, label %158, label %163

158:                                              ; preds = %129
  %159 = add nsw i64 %.3225289, -1
  store i64 0, ptr %133, align 8, !tbaa !5
  %160 = icmp eq i64 %.4236287, %.1238286
  br i1 %160, label %168, label %161

161:                                              ; preds = %158
  %.not253 = icmp slt i64 %.2290, %.4236287
  br i1 %.not253, label %168, label %162

162:                                              ; preds = %161
  %.idx = shl i64 %.2290, 4
  %gep284 = getelementptr i8, ptr %invariant.gep, i64 %.idx
  store i64 %134, ptr %gep284, align 8, !tbaa !5
  br label %168

163:                                              ; preds = %129
  %164 = call i64 @dlaneg_(ptr noundef nonnull %0, ptr noundef %1, ptr noundef %2, ptr noundef nonnull %19, ptr noundef nonnull %13, ptr noundef nonnull %18) #5
  %.not252.not = icmp slt i64 %164, %.1238286
  %165 = load double, ptr %19, align 8, !tbaa !9
  br i1 %.not252.not, label %166, label %167

166:                                              ; preds = %163
  store double %165, ptr %135, align 8, !tbaa !9
  br label %168

167:                                              ; preds = %163
  store double %165, ptr %136, align 8, !tbaa !9
  br label %168

168:                                              ; preds = %166, %167, %162, %161, %158
  %.6 = phi i64 [ %.4236287, %162 ], [ %.4236287, %161 ], [ %134, %158 ], [ %.4236287, %167 ], [ %.4236287, %166 ]
  %.4 = phi i64 [ %159, %162 ], [ %159, %161 ], [ %159, %158 ], [ %.3225289, %167 ], [ %.3225289, %166 ]
  %.3 = phi i64 [ %.2290, %162 ], [ %.2290, %161 ], [ %.2290, %158 ], [ %.1238286, %167 ], [ %.1238286, %166 ]
  %169 = add nuw i64 %.0231288, 1
  %exitcond305.not = icmp eq i64 %.0231288, %.2224
  br i1 %exitcond305.not, label %._crit_edge293, label %119, !llvm.loop !13

._crit_edge293:                                   ; preds = %168
  %170 = icmp sgt i64 %.4, 0
  %171 = add nuw nsw i64 %.0226, 1
  %.not249.not = icmp slt i64 %.0226, %36
  %or.cond260 = select i1 %170, i1 %.not249.not, i1 false
  br i1 %or.cond260, label %.preheader264, label %._crit_edge293.thread

._crit_edge293.thread:                            ; preds = %.preheader264, %._crit_edge293
  %172 = load i64, ptr %4, align 8, !tbaa !5
  %173 = load i64, ptr %3, align 8, !tbaa !5
  %.not250296 = icmp sgt i64 %173, %172
  br i1 %.not250296, label %.preheader, label %.lr.ph299

.preheader:                                       ; preds = %226, %._crit_edge293.thread
  %.not251.not300 = icmp slt i64 %173, %172
  br i1 %.not251.not300, label %.lr.ph302, label %._crit_edge303

.lr.ph302:                                        ; preds = %.preheader
  %174 = load i64, ptr %7, align 8, !tbaa !5
  %175 = sub i64 %172, %173
  %min.iters.check = icmp ult i64 %175, 10
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.memcheck

scalar.ph.preheader:                              ; preds = %middle.block, %vector.memcheck, %.lr.ph302
  %.4241.in301.ph = phi i64 [ %173, %vector.memcheck ], [ %173, %.lr.ph302 ], [ %ind.end, %middle.block ]
  br label %scalar.ph

vector.memcheck:                                  ; preds = %.lr.ph302
  %176 = shl i64 %173, 3
  %177 = add i64 %176, -8
  %178 = shl i64 %174, 3
  %179 = sub i64 %177, %178
  %scevgep = getelementptr i8, ptr %9, i64 %179
  %180 = shl i64 %172, 3
  %181 = add i64 %180, -8
  %182 = sub i64 %181, %178
  %scevgep315 = getelementptr i8, ptr %9, i64 %182
  %scevgep316 = getelementptr i8, ptr %8, i64 %179
  %183 = sub i64 %180, %178
  %scevgep317 = getelementptr i8, ptr %8, i64 %183
  %scevgep318 = getelementptr i8, ptr %10, i64 %179
  %scevgep319 = getelementptr i8, ptr %10, i64 %183
  %bound0 = icmp ult ptr %scevgep, %scevgep317
  %bound1 = icmp ult ptr %scevgep316, %scevgep315
  %found.conflict = and i1 %bound0, %bound1
  %bound0320 = icmp ult ptr %scevgep, %scevgep319
  %bound1321 = icmp ult ptr %scevgep318, %scevgep315
  %found.conflict322 = and i1 %bound0320, %bound1321
  %conflict.rdx = or i1 %found.conflict, %found.conflict322
  br i1 %conflict.rdx, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %vector.memcheck
  %n.vec = and i64 %175, -4
  %ind.end = add i64 %173, %n.vec
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %offset.idx = add i64 %173, %index
  %184 = add nsw i64 %offset.idx, 1
  %185 = sub nsw i64 %184, %174
  %186 = getelementptr inbounds double, ptr %26, i64 %185
  %187 = getelementptr inbounds i8, ptr %186, i64 16
  %wide.load = load <2 x double>, ptr %186, align 8, !tbaa !9, !alias.scope !14
  %wide.load323 = load <2 x double>, ptr %187, align 8, !tbaa !9, !alias.scope !14
  %188 = getelementptr inbounds double, ptr %24, i64 %185
  %189 = getelementptr inbounds i8, ptr %188, i64 16
  %wide.load324 = load <2 x double>, ptr %188, align 8, !tbaa !9, !alias.scope !17
  %wide.load325 = load <2 x double>, ptr %189, align 8, !tbaa !9, !alias.scope !17
  %190 = fsub <2 x double> %wide.load, %wide.load324
  %191 = fsub <2 x double> %wide.load323, %wide.load325
  %192 = add nsw i64 %185, -1
  %193 = getelementptr inbounds double, ptr %26, i64 %192
  %194 = getelementptr inbounds i8, ptr %193, i64 16
  %wide.load326 = load <2 x double>, ptr %193, align 8, !tbaa !9, !alias.scope !14
  %wide.load327 = load <2 x double>, ptr %194, align 8, !tbaa !9, !alias.scope !14
  %195 = fsub <2 x double> %190, %wide.load326
  %196 = fsub <2 x double> %191, %wide.load327
  %197 = getelementptr inbounds double, ptr %24, i64 %192
  %198 = getelementptr inbounds i8, ptr %197, i64 16
  %wide.load328 = load <2 x double>, ptr %197, align 8, !tbaa !9, !alias.scope !17
  %wide.load329 = load <2 x double>, ptr %198, align 8, !tbaa !9, !alias.scope !17
  %199 = fsub <2 x double> %195, %wide.load328
  %200 = fsub <2 x double> %196, %wide.load329
  %201 = fcmp ole <2 x double> %199, zeroinitializer
  %202 = fcmp ole <2 x double> %200, zeroinitializer
  %203 = select <2 x i1> %201, <2 x double> zeroinitializer, <2 x double> %199
  %204 = select <2 x i1> %202, <2 x double> zeroinitializer, <2 x double> %200
  %205 = getelementptr inbounds double, ptr %25, i64 %192
  %206 = getelementptr inbounds i8, ptr %205, i64 16
  store <2 x double> %203, ptr %205, align 8, !tbaa !9, !alias.scope !19, !noalias !21
  store <2 x double> %204, ptr %206, align 8, !tbaa !9, !alias.scope !19, !noalias !21
  %index.next = add nuw i64 %index, 4
  %207 = icmp eq i64 %index.next, %n.vec
  br i1 %207, label %middle.block, label %vector.body, !llvm.loop !22

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %175, %n.vec
  br i1 %cmp.n, label %._crit_edge303, label %scalar.ph.preheader

.lr.ph299:                                        ; preds = %._crit_edge293.thread, %226
  %.3240297 = phi i64 [ %227, %226 ], [ %173, %._crit_edge293.thread ]
  %208 = shl i64 %.3240297, 1
  %209 = add nsw i64 %208, -1
  %210 = getelementptr inbounds i64, ptr %22, i64 %209
  %211 = load i64, ptr %210, align 8, !tbaa !5
  %212 = icmp eq i64 %211, 0
  br i1 %212, label %213, label %226

213:                                              ; preds = %.lr.ph299
  %214 = load i64, ptr %7, align 8, !tbaa !5
  %215 = sub nsw i64 %.3240297, %214
  %216 = getelementptr inbounds double, ptr %23, i64 %209
  %217 = load double, ptr %216, align 8, !tbaa !9
  %218 = getelementptr inbounds double, ptr %23, i64 %208
  %219 = load double, ptr %218, align 8, !tbaa !9
  %220 = fadd double %217, %219
  %221 = fmul double %220, 5.000000e-01
  %222 = getelementptr inbounds double, ptr %26, i64 %215
  store double %221, ptr %222, align 8, !tbaa !9
  %223 = load double, ptr %218, align 8, !tbaa !9
  %224 = fsub double %223, %221
  %225 = getelementptr inbounds double, ptr %24, i64 %215
  store double %224, ptr %225, align 8, !tbaa !9
  br label %226

226:                                              ; preds = %.lr.ph299, %213
  %227 = add i64 %.3240297, 1
  %exitcond306.not = icmp eq i64 %.3240297, %172
  br i1 %exitcond306.not, label %.preheader, label %.lr.ph299, !llvm.loop !25

scalar.ph:                                        ; preds = %scalar.ph.preheader, %scalar.ph
  %.4241.in301 = phi i64 [ %.4241, %scalar.ph ], [ %.4241.in301.ph, %scalar.ph.preheader ]
  %.4241 = add nsw i64 %.4241.in301, 1
  %228 = sub nsw i64 %.4241, %174
  %229 = getelementptr inbounds double, ptr %26, i64 %228
  %230 = load double, ptr %229, align 8, !tbaa !9
  %231 = getelementptr inbounds double, ptr %24, i64 %228
  %232 = load double, ptr %231, align 8, !tbaa !9
  %233 = fsub double %230, %232
  %234 = add nsw i64 %228, -1
  %235 = getelementptr inbounds double, ptr %26, i64 %234
  %236 = load double, ptr %235, align 8, !tbaa !9
  %237 = fsub double %233, %236
  %238 = getelementptr inbounds double, ptr %24, i64 %234
  %239 = load double, ptr %238, align 8, !tbaa !9
  %240 = fsub double %237, %239
  %241 = fcmp ole double %240, 0.000000e+00
  %242 = select i1 %241, double 0.000000e+00, double %240
  %243 = getelementptr inbounds double, ptr %25, i64 %234
  store double %242, ptr %243, align 8, !tbaa !9
  %exitcond307.not = icmp eq i64 %.4241, %172
  br i1 %exitcond307.not, label %._crit_edge303, label %scalar.ph, !llvm.loop !26

._crit_edge303:                                   ; preds = %scalar.ph, %middle.block, %.preheader
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #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

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare double @log(double noundef) local_unnamed_addr #2

declare i64 @dlaneg_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

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

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

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 = { 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 #3 = { "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 = !{!"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}
!15 = distinct !{!15, !16}
!16 = distinct !{!16, !"LVerDomain"}
!17 = !{!18}
!18 = distinct !{!18, !16}
!19 = !{!20}
!20 = distinct !{!20, !16}
!21 = !{!15, !18}
!22 = distinct !{!22, !12, !23, !24}
!23 = !{!"llvm.loop.isvectorized", i32 1}
!24 = !{!"llvm.loop.unroll.runtime.disable"}
!25 = distinct !{!25, !12}
!26 = distinct !{!26, !12, !23}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopLoadEliminationPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,LoopVectorizePass,PostOrderFunctionAttrsPass,ReassociatePass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass