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

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

89:                                               ; preds = %332, %14
  %90 = load i64, ptr %33, align 8, !tbaa !9
  %91 = load i64, ptr %29, align 8, !tbaa !9
  %92 = icmp sle i64 %90, %91
  br i1 %92, label %93, label %335

93:                                               ; preds = %89
  %94 = load i64, ptr %33, align 8, !tbaa !9
  %95 = shl i64 %94, 1
  store i64 %95, ptr %35, align 8, !tbaa !9
  %96 = load i64, ptr %33, align 8, !tbaa !9
  %97 = load ptr, ptr %21, align 8, !tbaa !5
  %98 = load i64, ptr %97, align 8, !tbaa !9
  %99 = sub nsw i64 %96, %98
  store i64 %99, ptr %40, align 8, !tbaa !9
  %100 = load ptr, ptr %22, align 8, !tbaa !5
  %101 = load i64, ptr %40, align 8, !tbaa !9
  %102 = getelementptr inbounds double, ptr %100, i64 %101
  %103 = load double, ptr %102, align 8, !tbaa !11
  %104 = load ptr, ptr %23, align 8, !tbaa !5
  %105 = load i64, ptr %40, align 8, !tbaa !9
  %106 = getelementptr inbounds double, ptr %104, i64 %105
  %107 = load double, ptr %106, align 8, !tbaa !11
  %108 = fsub double %103, %107
  store double %108, ptr %45, align 8, !tbaa !11
  %109 = load ptr, ptr %22, align 8, !tbaa !5
  %110 = load i64, ptr %40, align 8, !tbaa !9
  %111 = getelementptr inbounds double, ptr %109, i64 %110
  %112 = load double, ptr %111, align 8, !tbaa !11
  store double %112, ptr %42, align 8, !tbaa !11
  %113 = load ptr, ptr %22, align 8, !tbaa !5
  %114 = load i64, ptr %40, align 8, !tbaa !9
  %115 = getelementptr inbounds double, ptr %113, i64 %114
  %116 = load double, ptr %115, align 8, !tbaa !11
  %117 = load ptr, ptr %23, align 8, !tbaa !5
  %118 = load i64, ptr %40, align 8, !tbaa !9
  %119 = getelementptr inbounds double, ptr %117, i64 %118
  %120 = load double, ptr %119, align 8, !tbaa !11
  %121 = fadd double %116, %120
  store double %121, ptr %51, align 8, !tbaa !11
  %122 = load double, ptr %51, align 8, !tbaa !11
  %123 = load double, ptr %42, align 8, !tbaa !11
  %124 = fsub double %122, %123
  store double %124, ptr %52, align 8, !tbaa !11
  %125 = load double, ptr %45, align 8, !tbaa !11
  %126 = fcmp oge double %125, 0.000000e+00
  br i1 %126, label %127, label %129

127:                                              ; preds = %93
  %128 = load double, ptr %45, align 8, !tbaa !11
  br label %132

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

132:                                              ; preds = %129, %127
  %133 = phi double [ %128, %127 ], [ %131, %129 ]
  store double %133, ptr %31, align 8, !tbaa !11
  %134 = load double, ptr %51, align 8, !tbaa !11
  %135 = fcmp oge double %134, 0.000000e+00
  br i1 %135, label %136, label %138

136:                                              ; preds = %132
  %137 = load double, ptr %51, align 8, !tbaa !11
  br label %141

138:                                              ; preds = %132
  %139 = load double, ptr %51, align 8, !tbaa !11
  %140 = fneg double %139
  br label %141

141:                                              ; preds = %138, %136
  %142 = phi double [ %137, %136 ], [ %140, %138 ]
  store double %142, ptr %32, align 8, !tbaa !11
  %143 = load double, ptr %31, align 8, !tbaa !11
  %144 = load double, ptr %32, align 8, !tbaa !11
  %145 = fcmp oge double %143, %144
  br i1 %145, label %146, label %148

146:                                              ; preds = %141
  %147 = load double, ptr %31, align 8, !tbaa !11
  br label %150

148:                                              ; preds = %141
  %149 = load double, ptr %32, align 8, !tbaa !11
  br label %150

150:                                              ; preds = %148, %146
  %151 = phi double [ %147, %146 ], [ %149, %148 ]
  store double %151, ptr %44, align 8, !tbaa !11
  %152 = load double, ptr %52, align 8, !tbaa !11
  %153 = load ptr, ptr %20, align 8, !tbaa !5
  %154 = load double, ptr %153, align 8, !tbaa !11
  %155 = load double, ptr %44, align 8, !tbaa !11
  %156 = fmul double %154, %155
  %157 = fcmp olt double %152, %156
  br i1 %157, label %158, label %190

158:                                              ; preds = %150
  %159 = load ptr, ptr %25, align 8, !tbaa !5
  %160 = load i64, ptr %35, align 8, !tbaa !9
  %161 = sub nsw i64 %160, 1
  %162 = getelementptr inbounds i64, ptr %159, i64 %161
  store i64 -1, ptr %162, align 8, !tbaa !9
  %163 = load i64, ptr %33, align 8, !tbaa !9
  %164 = load i64, ptr %38, align 8, !tbaa !9
  %165 = icmp eq i64 %163, %164
  br i1 %165, label %166, label %173

166:                                              ; preds = %158
  %167 = load i64, ptr %33, align 8, !tbaa !9
  %168 = load i64, ptr %39, align 8, !tbaa !9
  %169 = icmp slt i64 %167, %168
  br i1 %169, label %170, label %173

170:                                              ; preds = %166
  %171 = load i64, ptr %33, align 8, !tbaa !9
  %172 = add nsw i64 %171, 1
  store i64 %172, ptr %38, align 8, !tbaa !9
  br label %173

173:                                              ; preds = %170, %166, %158
  %174 = load i64, ptr %48, align 8, !tbaa !9
  %175 = load i64, ptr %38, align 8, !tbaa !9
  %176 = icmp sge i64 %174, %175
  br i1 %176, label %177, label %189

177:                                              ; preds = %173
  %178 = load i64, ptr %33, align 8, !tbaa !9
  %179 = load i64, ptr %39, align 8, !tbaa !9
  %180 = icmp sle i64 %178, %179
  br i1 %180, label %181, label %189

181:                                              ; preds = %177
  %182 = load i64, ptr %33, align 8, !tbaa !9
  %183 = add nsw i64 %182, 1
  %184 = load ptr, ptr %25, align 8, !tbaa !5
  %185 = load i64, ptr %48, align 8, !tbaa !9
  %186 = shl i64 %185, 1
  %187 = sub nsw i64 %186, 1
  %188 = getelementptr inbounds i64, ptr %184, i64 %187
  store i64 %183, ptr %188, align 8, !tbaa !9
  br label %189

189:                                              ; preds = %181, %177, %173
  br label %322

190:                                              ; preds = %150
  %191 = load i64, ptr %33, align 8, !tbaa !9
  store i64 %191, ptr %48, align 8, !tbaa !9
  store double 1.000000e+00, ptr %41, align 8, !tbaa !11
  br label %192

192:                                              ; preds = %240, %190
  store i64 0, ptr %43, align 8, !tbaa !9
  %193 = load double, ptr %45, align 8, !tbaa !11
  store double %193, ptr %37, align 8, !tbaa !11
  %194 = load ptr, ptr %16, align 8, !tbaa !5
  %195 = getelementptr inbounds double, ptr %194, i64 1
  %196 = load double, ptr %195, align 8, !tbaa !11
  %197 = load double, ptr %37, align 8, !tbaa !11
  %198 = fsub double %196, %197
  store double %198, ptr %53, align 8, !tbaa !11
  %199 = load double, ptr %53, align 8, !tbaa !11
  %200 = fcmp olt double %199, 0.000000e+00
  br i1 %200, label %201, label %204

201:                                              ; preds = %192
  %202 = load i64, ptr %43, align 8, !tbaa !9
  %203 = add nsw i64 %202, 1
  store i64 %203, ptr %43, align 8, !tbaa !9
  br label %204

204:                                              ; preds = %201, %192
  %205 = load ptr, ptr %15, align 8, !tbaa !5
  %206 = load i64, ptr %205, align 8, !tbaa !9
  store i64 %206, ptr %30, align 8, !tbaa !9
  store i64 2, ptr %34, align 8, !tbaa !9
  br label %207

207:                                              ; preds = %232, %204
  %208 = load i64, ptr %34, align 8, !tbaa !9
  %209 = load i64, ptr %30, align 8, !tbaa !9
  %210 = icmp sle i64 %208, %209
  br i1 %210, label %211, label %235

211:                                              ; preds = %207
  %212 = load ptr, ptr %16, align 8, !tbaa !5
  %213 = load i64, ptr %34, align 8, !tbaa !9
  %214 = getelementptr inbounds double, ptr %212, i64 %213
  %215 = load double, ptr %214, align 8, !tbaa !11
  %216 = load double, ptr %37, align 8, !tbaa !11
  %217 = fsub double %215, %216
  %218 = load ptr, ptr %17, align 8, !tbaa !5
  %219 = load i64, ptr %34, align 8, !tbaa !9
  %220 = sub nsw i64 %219, 1
  %221 = getelementptr inbounds double, ptr %218, i64 %220
  %222 = load double, ptr %221, align 8, !tbaa !11
  %223 = load double, ptr %53, align 8, !tbaa !11
  %224 = fdiv double %222, %223
  %225 = fsub double %217, %224
  store double %225, ptr %53, align 8, !tbaa !11
  %226 = load double, ptr %53, align 8, !tbaa !11
  %227 = fcmp olt double %226, 0.000000e+00
  br i1 %227, label %228, label %231

228:                                              ; preds = %211
  %229 = load i64, ptr %43, align 8, !tbaa !9
  %230 = add nsw i64 %229, 1
  store i64 %230, ptr %43, align 8, !tbaa !9
  br label %231

231:                                              ; preds = %228, %211
  br label %232

232:                                              ; preds = %231
  %233 = load i64, ptr %34, align 8, !tbaa !9
  %234 = add nsw i64 %233, 1
  store i64 %234, ptr %34, align 8, !tbaa !9
  br label %207, !llvm.loop !13

235:                                              ; preds = %207
  %236 = load i64, ptr %43, align 8, !tbaa !9
  %237 = load i64, ptr %33, align 8, !tbaa !9
  %238 = sub nsw i64 %237, 1
  %239 = icmp sgt i64 %236, %238
  br i1 %239, label %240, label %251

240:                                              ; preds = %235
  %241 = load ptr, ptr %23, align 8, !tbaa !5
  %242 = load i64, ptr %40, align 8, !tbaa !9
  %243 = getelementptr inbounds double, ptr %241, i64 %242
  %244 = load double, ptr %243, align 8, !tbaa !11
  %245 = load double, ptr %41, align 8, !tbaa !11
  %246 = load double, ptr %45, align 8, !tbaa !11
  %247 = fneg double %244
  %248 = call double @llvm.fmuladd.f64(double %247, double %245, double %246)
  store double %248, ptr %45, align 8, !tbaa !11
  %249 = load double, ptr %41, align 8, !tbaa !11
  %250 = fmul double %249, 2.000000e+00
  store double %250, ptr %41, align 8, !tbaa !11
  br label %192

251:                                              ; preds = %235
  store double 1.000000e+00, ptr %41, align 8, !tbaa !11
  br label %252

252:                                              ; preds = %299, %251
  store i64 0, ptr %43, align 8, !tbaa !9
  %253 = load double, ptr %51, align 8, !tbaa !11
  store double %253, ptr %37, align 8, !tbaa !11
  %254 = load ptr, ptr %16, align 8, !tbaa !5
  %255 = getelementptr inbounds double, ptr %254, i64 1
  %256 = load double, ptr %255, align 8, !tbaa !11
  %257 = load double, ptr %37, align 8, !tbaa !11
  %258 = fsub double %256, %257
  store double %258, ptr %53, align 8, !tbaa !11
  %259 = load double, ptr %53, align 8, !tbaa !11
  %260 = fcmp olt double %259, 0.000000e+00
  br i1 %260, label %261, label %264

261:                                              ; preds = %252
  %262 = load i64, ptr %43, align 8, !tbaa !9
  %263 = add nsw i64 %262, 1
  store i64 %263, ptr %43, align 8, !tbaa !9
  br label %264

264:                                              ; preds = %261, %252
  %265 = load ptr, ptr %15, align 8, !tbaa !5
  %266 = load i64, ptr %265, align 8, !tbaa !9
  store i64 %266, ptr %30, align 8, !tbaa !9
  store i64 2, ptr %34, align 8, !tbaa !9
  br label %267

267:                                              ; preds = %292, %264
  %268 = load i64, ptr %34, align 8, !tbaa !9
  %269 = load i64, ptr %30, align 8, !tbaa !9
  %270 = icmp sle i64 %268, %269
  br i1 %270, label %271, label %295

271:                                              ; preds = %267
  %272 = load ptr, ptr %16, align 8, !tbaa !5
  %273 = load i64, ptr %34, align 8, !tbaa !9
  %274 = getelementptr inbounds double, ptr %272, i64 %273
  %275 = load double, ptr %274, align 8, !tbaa !11
  %276 = load double, ptr %37, align 8, !tbaa !11
  %277 = fsub double %275, %276
  %278 = load ptr, ptr %17, align 8, !tbaa !5
  %279 = load i64, ptr %34, align 8, !tbaa !9
  %280 = sub nsw i64 %279, 1
  %281 = getelementptr inbounds double, ptr %278, i64 %280
  %282 = load double, ptr %281, align 8, !tbaa !11
  %283 = load double, ptr %53, align 8, !tbaa !11
  %284 = fdiv double %282, %283
  %285 = fsub double %277, %284
  store double %285, ptr %53, align 8, !tbaa !11
  %286 = load double, ptr %53, align 8, !tbaa !11
  %287 = fcmp olt double %286, 0.000000e+00
  br i1 %287, label %288, label %291

288:                                              ; preds = %271
  %289 = load i64, ptr %43, align 8, !tbaa !9
  %290 = add nsw i64 %289, 1
  store i64 %290, ptr %43, align 8, !tbaa !9
  br label %291

291:                                              ; preds = %288, %271
  br label %292

292:                                              ; preds = %291
  %293 = load i64, ptr %34, align 8, !tbaa !9
  %294 = add nsw i64 %293, 1
  store i64 %294, ptr %34, align 8, !tbaa !9
  br label %267, !llvm.loop !15

295:                                              ; preds = %267
  %296 = load i64, ptr %43, align 8, !tbaa !9
  %297 = load i64, ptr %33, align 8, !tbaa !9
  %298 = icmp slt i64 %296, %297
  br i1 %298, label %299, label %309

299:                                              ; preds = %295
  %300 = load ptr, ptr %23, align 8, !tbaa !5
  %301 = load i64, ptr %40, align 8, !tbaa !9
  %302 = getelementptr inbounds double, ptr %300, i64 %301
  %303 = load double, ptr %302, align 8, !tbaa !11
  %304 = load double, ptr %41, align 8, !tbaa !11
  %305 = load double, ptr %51, align 8, !tbaa !11
  %306 = call double @llvm.fmuladd.f64(double %303, double %304, double %305)
  store double %306, ptr %51, align 8, !tbaa !11
  %307 = load double, ptr %41, align 8, !tbaa !11
  %308 = fmul double %307, 2.000000e+00
  store double %308, ptr %41, align 8, !tbaa !11
  br label %252

309:                                              ; preds = %295
  %310 = load i64, ptr %47, align 8, !tbaa !9
  %311 = add nsw i64 %310, 1
  store i64 %311, ptr %47, align 8, !tbaa !9
  %312 = load i64, ptr %33, align 8, !tbaa !9
  %313 = add nsw i64 %312, 1
  %314 = load ptr, ptr %25, align 8, !tbaa !5
  %315 = load i64, ptr %35, align 8, !tbaa !9
  %316 = sub nsw i64 %315, 1
  %317 = getelementptr inbounds i64, ptr %314, i64 %316
  store i64 %313, ptr %317, align 8, !tbaa !9
  %318 = load i64, ptr %43, align 8, !tbaa !9
  %319 = load ptr, ptr %25, align 8, !tbaa !5
  %320 = load i64, ptr %35, align 8, !tbaa !9
  %321 = getelementptr inbounds i64, ptr %319, i64 %320
  store i64 %318, ptr %321, align 8, !tbaa !9
  br label %322

322:                                              ; preds = %309, %189
  %323 = load double, ptr %45, align 8, !tbaa !11
  %324 = load ptr, ptr %24, align 8, !tbaa !5
  %325 = load i64, ptr %35, align 8, !tbaa !9
  %326 = sub nsw i64 %325, 1
  %327 = getelementptr inbounds double, ptr %324, i64 %326
  store double %323, ptr %327, align 8, !tbaa !11
  %328 = load double, ptr %51, align 8, !tbaa !11
  %329 = load ptr, ptr %24, align 8, !tbaa !5
  %330 = load i64, ptr %35, align 8, !tbaa !9
  %331 = getelementptr inbounds double, ptr %329, i64 %330
  store double %328, ptr %331, align 8, !tbaa !11
  br label %332

332:                                              ; preds = %322
  %333 = load i64, ptr %33, align 8, !tbaa !9
  %334 = add nsw i64 %333, 1
  store i64 %334, ptr %33, align 8, !tbaa !9
  br label %89, !llvm.loop !16

335:                                              ; preds = %89
  %336 = load i64, ptr %38, align 8, !tbaa !9
  store i64 %336, ptr %50, align 8, !tbaa !9
  store i64 0, ptr %46, align 8, !tbaa !9
  br label %337

337:                                              ; preds = %513, %335
  %338 = load i64, ptr %38, align 8, !tbaa !9
  %339 = sub nsw i64 %338, 1
  store i64 %339, ptr %48, align 8, !tbaa !9
  %340 = load i64, ptr %38, align 8, !tbaa !9
  store i64 %340, ptr %33, align 8, !tbaa !9
  %341 = load i64, ptr %47, align 8, !tbaa !9
  store i64 %341, ptr %54, align 8, !tbaa !9
  %342 = load i64, ptr %54, align 8, !tbaa !9
  store i64 %342, ptr %29, align 8, !tbaa !9
  store i64 1, ptr %36, align 8, !tbaa !9
  br label %343

343:                                              ; preds = %501, %337
  %344 = load i64, ptr %36, align 8, !tbaa !9
  %345 = load i64, ptr %29, align 8, !tbaa !9
  %346 = icmp sle i64 %344, %345
  br i1 %346, label %347, label %504

347:                                              ; preds = %343
  %348 = load i64, ptr %33, align 8, !tbaa !9
  %349 = shl i64 %348, 1
  store i64 %349, ptr %35, align 8, !tbaa !9
  %350 = load i64, ptr %33, align 8, !tbaa !9
  %351 = load ptr, ptr %21, align 8, !tbaa !5
  %352 = load i64, ptr %351, align 8, !tbaa !9
  %353 = sub nsw i64 %350, %352
  store i64 %353, ptr %40, align 8, !tbaa !9
  %354 = load ptr, ptr %25, align 8, !tbaa !5
  %355 = load i64, ptr %35, align 8, !tbaa !9
  %356 = sub nsw i64 %355, 1
  %357 = getelementptr inbounds i64, ptr %354, i64 %356
  %358 = load i64, ptr %357, align 8, !tbaa !9
  store i64 %358, ptr %49, align 8, !tbaa !9
  %359 = load ptr, ptr %24, align 8, !tbaa !5
  %360 = load i64, ptr %35, align 8, !tbaa !9
  %361 = sub nsw i64 %360, 1
  %362 = getelementptr inbounds double, ptr %359, i64 %361
  %363 = load double, ptr %362, align 8, !tbaa !11
  store double %363, ptr %45, align 8, !tbaa !11
  %364 = load ptr, ptr %24, align 8, !tbaa !5
  %365 = load i64, ptr %35, align 8, !tbaa !9
  %366 = getelementptr inbounds double, ptr %364, i64 %365
  %367 = load double, ptr %366, align 8, !tbaa !11
  store double %367, ptr %51, align 8, !tbaa !11
  %368 = load double, ptr %45, align 8, !tbaa !11
  %369 = load double, ptr %51, align 8, !tbaa !11
  %370 = fadd double %368, %369
  %371 = fmul double %370, 5.000000e-01
  store double %371, ptr %42, align 8, !tbaa !11
  %372 = load double, ptr %51, align 8, !tbaa !11
  %373 = load double, ptr %42, align 8, !tbaa !11
  %374 = fsub double %372, %373
  store double %374, ptr %52, align 8, !tbaa !11
  %375 = load double, ptr %45, align 8, !tbaa !11
  %376 = fcmp oge double %375, 0.000000e+00
  br i1 %376, label %377, label %379

377:                                              ; preds = %347
  %378 = load double, ptr %45, align 8, !tbaa !11
  br label %382

379:                                              ; preds = %347
  %380 = load double, ptr %45, align 8, !tbaa !11
  %381 = fneg double %380
  br label %382

382:                                              ; preds = %379, %377
  %383 = phi double [ %378, %377 ], [ %381, %379 ]
  store double %383, ptr %31, align 8, !tbaa !11
  %384 = load double, ptr %51, align 8, !tbaa !11
  %385 = fcmp oge double %384, 0.000000e+00
  br i1 %385, label %386, label %388

386:                                              ; preds = %382
  %387 = load double, ptr %51, align 8, !tbaa !11
  br label %391

388:                                              ; preds = %382
  %389 = load double, ptr %51, align 8, !tbaa !11
  %390 = fneg double %389
  br label %391

391:                                              ; preds = %388, %386
  %392 = phi double [ %387, %386 ], [ %390, %388 ]
  store double %392, ptr %32, align 8, !tbaa !11
  %393 = load double, ptr %31, align 8, !tbaa !11
  %394 = load double, ptr %32, align 8, !tbaa !11
  %395 = fcmp oge double %393, %394
  br i1 %395, label %396, label %398

396:                                              ; preds = %391
  %397 = load double, ptr %31, align 8, !tbaa !11
  br label %400

398:                                              ; preds = %391
  %399 = load double, ptr %32, align 8, !tbaa !11
  br label %400

400:                                              ; preds = %398, %396
  %401 = phi double [ %397, %396 ], [ %399, %398 ]
  store double %401, ptr %44, align 8, !tbaa !11
  %402 = load double, ptr %52, align 8, !tbaa !11
  %403 = load ptr, ptr %20, align 8, !tbaa !5
  %404 = load double, ptr %403, align 8, !tbaa !11
  %405 = load double, ptr %44, align 8, !tbaa !11
  %406 = fmul double %404, %405
  %407 = fcmp olt double %402, %406
  br i1 %407, label %412, label %408

408:                                              ; preds = %400
  %409 = load i64, ptr %46, align 8, !tbaa !9
  %410 = load i64, ptr %55, align 8, !tbaa !9
  %411 = icmp eq i64 %409, %410
  br i1 %411, label %412, label %438

412:                                              ; preds = %408, %400
  %413 = load i64, ptr %47, align 8, !tbaa !9
  %414 = add nsw i64 %413, -1
  store i64 %414, ptr %47, align 8, !tbaa !9
  %415 = load ptr, ptr %25, align 8, !tbaa !5
  %416 = load i64, ptr %35, align 8, !tbaa !9
  %417 = sub nsw i64 %416, 1
  %418 = getelementptr inbounds i64, ptr %415, i64 %417
  store i64 0, ptr %418, align 8, !tbaa !9
  %419 = load i64, ptr %38, align 8, !tbaa !9
  %420 = load i64, ptr %33, align 8, !tbaa !9
  %421 = icmp eq i64 %419, %420
  br i1 %421, label %422, label %424

422:                                              ; preds = %412
  %423 = load i64, ptr %49, align 8, !tbaa !9
  store i64 %423, ptr %38, align 8, !tbaa !9
  br label %436

424:                                              ; preds = %412
  %425 = load i64, ptr %48, align 8, !tbaa !9
  %426 = load i64, ptr %38, align 8, !tbaa !9
  %427 = icmp sge i64 %425, %426
  br i1 %427, label %428, label %435

428:                                              ; preds = %424
  %429 = load i64, ptr %49, align 8, !tbaa !9
  %430 = load ptr, ptr %25, align 8, !tbaa !5
  %431 = load i64, ptr %48, align 8, !tbaa !9
  %432 = shl i64 %431, 1
  %433 = sub nsw i64 %432, 1
  %434 = getelementptr inbounds i64, ptr %430, i64 %433
  store i64 %429, ptr %434, align 8, !tbaa !9
  br label %435

435:                                              ; preds = %428, %424
  br label %436

436:                                              ; preds = %435, %422
  %437 = load i64, ptr %49, align 8, !tbaa !9
  store i64 %437, ptr %33, align 8, !tbaa !9
  br label %500

438:                                              ; preds = %408
  %439 = load i64, ptr %33, align 8, !tbaa !9
  store i64 %439, ptr %48, align 8, !tbaa !9
  store i64 0, ptr %43, align 8, !tbaa !9
  %440 = load double, ptr %42, align 8, !tbaa !11
  store double %440, ptr %37, align 8, !tbaa !11
  %441 = load ptr, ptr %16, align 8, !tbaa !5
  %442 = getelementptr inbounds double, ptr %441, i64 1
  %443 = load double, ptr %442, align 8, !tbaa !11
  %444 = load double, ptr %37, align 8, !tbaa !11
  %445 = fsub double %443, %444
  store double %445, ptr %53, align 8, !tbaa !11
  %446 = load double, ptr %53, align 8, !tbaa !11
  %447 = fcmp olt double %446, 0.000000e+00
  br i1 %447, label %448, label %451

448:                                              ; preds = %438
  %449 = load i64, ptr %43, align 8, !tbaa !9
  %450 = add nsw i64 %449, 1
  store i64 %450, ptr %43, align 8, !tbaa !9
  br label %451

451:                                              ; preds = %448, %438
  %452 = load ptr, ptr %15, align 8, !tbaa !5
  %453 = load i64, ptr %452, align 8, !tbaa !9
  store i64 %453, ptr %30, align 8, !tbaa !9
  store i64 2, ptr %34, align 8, !tbaa !9
  br label %454

454:                                              ; preds = %479, %451
  %455 = load i64, ptr %34, align 8, !tbaa !9
  %456 = load i64, ptr %30, align 8, !tbaa !9
  %457 = icmp sle i64 %455, %456
  br i1 %457, label %458, label %482

458:                                              ; preds = %454
  %459 = load ptr, ptr %16, align 8, !tbaa !5
  %460 = load i64, ptr %34, align 8, !tbaa !9
  %461 = getelementptr inbounds double, ptr %459, i64 %460
  %462 = load double, ptr %461, align 8, !tbaa !11
  %463 = load double, ptr %37, align 8, !tbaa !11
  %464 = fsub double %462, %463
  %465 = load ptr, ptr %17, align 8, !tbaa !5
  %466 = load i64, ptr %34, align 8, !tbaa !9
  %467 = sub nsw i64 %466, 1
  %468 = getelementptr inbounds double, ptr %465, i64 %467
  %469 = load double, ptr %468, align 8, !tbaa !11
  %470 = load double, ptr %53, align 8, !tbaa !11
  %471 = fdiv double %469, %470
  %472 = fsub double %464, %471
  store double %472, ptr %53, align 8, !tbaa !11
  %473 = load double, ptr %53, align 8, !tbaa !11
  %474 = fcmp olt double %473, 0.000000e+00
  br i1 %474, label %475, label %478

475:                                              ; preds = %458
  %476 = load i64, ptr %43, align 8, !tbaa !9
  %477 = add nsw i64 %476, 1
  store i64 %477, ptr %43, align 8, !tbaa !9
  br label %478

478:                                              ; preds = %475, %458
  br label %479

479:                                              ; preds = %478
  %480 = load i64, ptr %34, align 8, !tbaa !9
  %481 = add nsw i64 %480, 1
  store i64 %481, ptr %34, align 8, !tbaa !9
  br label %454, !llvm.loop !17

482:                                              ; preds = %454
  %483 = load i64, ptr %43, align 8, !tbaa !9
  %484 = load i64, ptr %33, align 8, !tbaa !9
  %485 = sub nsw i64 %484, 1
  %486 = icmp sle i64 %483, %485
  br i1 %486, label %487, label %493

487:                                              ; preds = %482
  %488 = load double, ptr %42, align 8, !tbaa !11
  %489 = load ptr, ptr %24, align 8, !tbaa !5
  %490 = load i64, ptr %35, align 8, !tbaa !9
  %491 = sub nsw i64 %490, 1
  %492 = getelementptr inbounds double, ptr %489, i64 %491
  store double %488, ptr %492, align 8, !tbaa !11
  br label %498

493:                                              ; preds = %482
  %494 = load double, ptr %42, align 8, !tbaa !11
  %495 = load ptr, ptr %24, align 8, !tbaa !5
  %496 = load i64, ptr %35, align 8, !tbaa !9
  %497 = getelementptr inbounds double, ptr %495, i64 %496
  store double %494, ptr %497, align 8, !tbaa !11
  br label %498

498:                                              ; preds = %493, %487
  %499 = load i64, ptr %49, align 8, !tbaa !9
  store i64 %499, ptr %33, align 8, !tbaa !9
  br label %500

500:                                              ; preds = %498, %436
  br label %501

501:                                              ; preds = %500
  %502 = load i64, ptr %36, align 8, !tbaa !9
  %503 = add nsw i64 %502, 1
  store i64 %503, ptr %36, align 8, !tbaa !9
  br label %343, !llvm.loop !18

504:                                              ; preds = %343
  %505 = load i64, ptr %46, align 8, !tbaa !9
  %506 = add nsw i64 %505, 1
  store i64 %506, ptr %46, align 8, !tbaa !9
  %507 = load i64, ptr %47, align 8, !tbaa !9
  %508 = icmp sgt i64 %507, 0
  br i1 %508, label %509, label %514

509:                                              ; preds = %504
  %510 = load i64, ptr %46, align 8, !tbaa !9
  %511 = load i64, ptr %55, align 8, !tbaa !9
  %512 = icmp sle i64 %510, %511
  br i1 %512, label %513, label %514

513:                                              ; preds = %509
  br label %337

514:                                              ; preds = %509, %504
  %515 = load ptr, ptr %19, align 8, !tbaa !5
  %516 = load i64, ptr %515, align 8, !tbaa !9
  store i64 %516, ptr %29, align 8, !tbaa !9
  %517 = load i64, ptr %50, align 8, !tbaa !9
  store i64 %517, ptr %33, align 8, !tbaa !9
  br label %518

518:                                              ; preds = %563, %514
  %519 = load i64, ptr %33, align 8, !tbaa !9
  %520 = load i64, ptr %29, align 8, !tbaa !9
  %521 = icmp sle i64 %519, %520
  br i1 %521, label %522, label %566

522:                                              ; preds = %518
  %523 = load i64, ptr %33, align 8, !tbaa !9
  %524 = shl i64 %523, 1
  store i64 %524, ptr %35, align 8, !tbaa !9
  %525 = load i64, ptr %33, align 8, !tbaa !9
  %526 = load ptr, ptr %21, align 8, !tbaa !5
  %527 = load i64, ptr %526, align 8, !tbaa !9
  %528 = sub nsw i64 %525, %527
  store i64 %528, ptr %40, align 8, !tbaa !9
  %529 = load ptr, ptr %25, align 8, !tbaa !5
  %530 = load i64, ptr %35, align 8, !tbaa !9
  %531 = sub nsw i64 %530, 1
  %532 = getelementptr inbounds i64, ptr %529, i64 %531
  %533 = load i64, ptr %532, align 8, !tbaa !9
  %534 = icmp eq i64 %533, 0
  br i1 %534, label %535, label %562

535:                                              ; preds = %522
  %536 = load ptr, ptr %24, align 8, !tbaa !5
  %537 = load i64, ptr %35, align 8, !tbaa !9
  %538 = sub nsw i64 %537, 1
  %539 = getelementptr inbounds double, ptr %536, i64 %538
  %540 = load double, ptr %539, align 8, !tbaa !11
  %541 = load ptr, ptr %24, align 8, !tbaa !5
  %542 = load i64, ptr %35, align 8, !tbaa !9
  %543 = getelementptr inbounds double, ptr %541, i64 %542
  %544 = load double, ptr %543, align 8, !tbaa !11
  %545 = fadd double %540, %544
  %546 = fmul double %545, 5.000000e-01
  %547 = load ptr, ptr %22, align 8, !tbaa !5
  %548 = load i64, ptr %40, align 8, !tbaa !9
  %549 = getelementptr inbounds double, ptr %547, i64 %548
  store double %546, ptr %549, align 8, !tbaa !11
  %550 = load ptr, ptr %24, align 8, !tbaa !5
  %551 = load i64, ptr %35, align 8, !tbaa !9
  %552 = getelementptr inbounds double, ptr %550, i64 %551
  %553 = load double, ptr %552, align 8, !tbaa !11
  %554 = load ptr, ptr %22, align 8, !tbaa !5
  %555 = load i64, ptr %40, align 8, !tbaa !9
  %556 = getelementptr inbounds double, ptr %554, i64 %555
  %557 = load double, ptr %556, align 8, !tbaa !11
  %558 = fsub double %553, %557
  %559 = load ptr, ptr %23, align 8, !tbaa !5
  %560 = load i64, ptr %40, align 8, !tbaa !9
  %561 = getelementptr inbounds double, ptr %559, i64 %560
  store double %558, ptr %561, align 8, !tbaa !11
  br label %562

562:                                              ; preds = %535, %522
  br label %563

563:                                              ; preds = %562
  %564 = load i64, ptr %33, align 8, !tbaa !9
  %565 = add nsw i64 %564, 1
  store i64 %565, ptr %33, align 8, !tbaa !9
  br label %518, !llvm.loop !19

566:                                              ; preds = %518
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #4
  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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"long", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = distinct !{!13, !14}
!14 = !{!"llvm.loop.mustprogress"}
!15 = distinct !{!15, !14}
!16 = distinct !{!16, !14}
!17 = distinct !{!17, !14}
!18 = distinct !{!18, !14}
!19 = distinct !{!19, !14}


; 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: nofree nounwind memory(write, argmem: readwrite) uwtable
define dso_local noundef i32 @dlarrj_(ptr nocapture noundef readonly %0, ptr nocapture noundef readonly %1, ptr nocapture noundef readonly %2, ptr nocapture noundef readonly %3, ptr nocapture noundef readonly %4, ptr nocapture noundef readonly %5, ptr nocapture noundef readonly %6, ptr nocapture noundef %7, ptr nocapture noundef %8, ptr nocapture noundef %9, ptr nocapture noundef %10, ptr nocapture noundef readonly %11, ptr nocapture noundef readonly %12, ptr nocapture noundef writeonly %13) local_unnamed_addr #0 {
  %15 = getelementptr inbounds i8, ptr %10, i64 -8
  %16 = getelementptr inbounds i8, ptr %9, i64 -8
  %17 = getelementptr inbounds i8, ptr %8, i64 -8
  %18 = getelementptr inbounds i8, ptr %7, i64 -8
  %19 = getelementptr inbounds i8, ptr %1, i64 -8
  store i64 0, ptr %13, align 8, !tbaa !5
  %20 = load double, ptr %12, align 8, !tbaa !9
  %21 = load double, ptr %11, align 8, !tbaa !9
  %22 = fadd double %20, %21
  %23 = tail call double @log(double noundef %22) #3
  %24 = load double, ptr %11, align 8, !tbaa !9
  %25 = tail call double @log(double noundef %24) #3
  %26 = fsub double %23, %25
  %27 = fdiv double %26, 0x3FE62E42FEFA39EF
  %28 = fptosi double %27 to i64
  %29 = add nsw i64 %28, 2
  %30 = load i64, ptr %3, align 8, !tbaa !5
  %31 = load i64, ptr %4, align 8, !tbaa !5
  %invariant.gep306 = getelementptr i8, ptr %10, i64 -16
  %.not310 = icmp sgt i64 %30, %31
  br i1 %.not310, label %.preheader, label %.lr.ph318

.lr.ph318:                                        ; preds = %14
  %invariant.gep = getelementptr i8, ptr %2, i64 -16
  %32 = add i64 %31, 1
  br label %33

.preheader:                                       ; preds = %142, %14
  %.0240.lcssa = phi i64 [ %30, %14 ], [ %.2242, %142 ]
  %.0226.lcssa = phi i64 [ 0, %14 ], [ %.1227, %142 ]
  %invariant.gep321 = getelementptr i8, ptr %2, i64 -16
  br label %145

33:                                               ; preds = %.lr.ph318, %142
  %.0223316 = phi i64 [ 0, %.lr.ph318 ], [ %.1224, %142 ]
  %.0226315 = phi i64 [ 0, %.lr.ph318 ], [ %.1227, %142 ]
  %.0240314 = phi i64 [ %30, %.lr.ph318 ], [ %.2242, %142 ]
  %.0251311 = phi i64 [ %30, %.lr.ph318 ], [ %.pre-phi, %142 ]
  %34 = shl i64 %.0251311, 1
  %35 = load i64, ptr %6, align 8, !tbaa !5
  %36 = sub nsw i64 %.0251311, %35
  %37 = getelementptr inbounds double, ptr %18, i64 %36
  %38 = load double, ptr %37, align 8, !tbaa !9
  %39 = getelementptr inbounds double, ptr %17, i64 %36
  %40 = load double, ptr %39, align 8, !tbaa !9
  %41 = fsub double %38, %40
  %42 = fadd double %38, %40
  %43 = fsub double %42, %38
  %44 = fcmp oge double %41, 0.000000e+00
  %45 = fneg double %41
  %46 = select i1 %44, double %41, double %45
  %47 = fcmp oge double %42, 0.000000e+00
  %48 = fneg double %42
  %49 = select i1 %47, double %42, double %48
  %50 = fcmp oge double %46, %49
  %51 = select i1 %50, double %46, double %49
  %52 = load double, ptr %5, align 8, !tbaa !9
  %53 = fmul double %52, %51
  %54 = fcmp olt double %43, %53
  br i1 %54, label %64, label %.preheader271

.preheader271:                                    ; preds = %33
  %55 = load double, ptr %1, align 8, !tbaa !9
  %56 = load i64, ptr %0, align 8, !tbaa !5
  %.not263273 = icmp slt i64 %56, 2
  %57 = fneg double %40
  br i1 %.not263273, label %.preheader271.split.us, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %.preheader271
  %58 = add nsw i64 %56, -1
  %xtraiter = and i64 %58, 1
  %59 = icmp eq i64 %56, 2
  %unroll_iter = and i64 %58, -2
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br label %.lr.ph

.preheader271.split.us:                           ; preds = %.preheader271
  %60 = fcmp olt double %55, %41
  %.0233.us279 = zext i1 %60 to i64
  %.not264.us280 = icmp sgt i64 %.0251311, %.0233.us279
  br i1 %.not264.us280, label %.preheader270.split297.us, label %.lr.ph283

.lr.ph283:                                        ; preds = %.preheader271.split.us, %.lr.ph283
  %.0231.us282 = phi double [ %61, %.lr.ph283 ], [ %41, %.preheader271.split.us ]
  %.0238.us281 = phi double [ %62, %.lr.ph283 ], [ 1.000000e+00, %.preheader271.split.us ]
  %61 = tail call double @llvm.fmuladd.f64(double %57, double %.0238.us281, double %.0231.us282)
  %62 = fmul double %.0238.us281, 2.000000e+00
  %63 = fcmp olt double %55, %61
  %.0233.us = zext i1 %63 to i64
  %.not264.us = icmp sgt i64 %.0251311, %.0233.us
  br i1 %.not264.us, label %.preheader270, label %.lr.ph283

64:                                               ; preds = %33
  %gep307 = getelementptr i64, ptr %invariant.gep306, i64 %34
  store i64 -1, ptr %gep307, align 8, !tbaa !5
  %65 = icmp eq i64 %.0251311, %.0240314
  %66 = icmp slt i64 %.0251311, %31
  %or.cond = and i1 %66, %65
  %67 = add i64 %.0251311, 1
  %.1241 = select i1 %or.cond, i64 %67, i64 %.0240314
  %.not266 = icmp slt i64 %.0223316, %.1241
  br i1 %.not266, label %142, label %68

68:                                               ; preds = %64
  %.idx267 = shl i64 %.0223316, 4
  %gep309 = getelementptr i8, ptr %invariant.gep306, i64 %.idx267
  store i64 %67, ptr %gep309, align 8, !tbaa !5
  br label %142

.lr.ph:                                           ; preds = %.lr.ph.preheader, %104
  %.0238 = phi double [ %106, %104 ], [ 1.000000e+00, %.lr.ph.preheader ]
  %.0231 = phi double [ %105, %104 ], [ %41, %.lr.ph.preheader ]
  %69 = fsub double %55, %.0231
  %70 = fcmp olt double %69, 0.000000e+00
  %.0233 = zext i1 %70 to i64
  br i1 %59, label %._crit_edge.unr-lcssa, label %.lr.ph.new

.lr.ph.new:                                       ; preds = %.lr.ph, %.lr.ph.new
  %.0276 = phi double [ %85, %.lr.ph.new ], [ %69, %.lr.ph ]
  %.1234275 = phi i64 [ %.2235.1, %.lr.ph.new ], [ %.0233, %.lr.ph ]
  %.0248274 = phi i64 [ %88, %.lr.ph.new ], [ 2, %.lr.ph ]
  %niter = phi i64 [ %niter.next.1, %.lr.ph.new ], [ 0, %.lr.ph ]
  %71 = getelementptr inbounds double, ptr %19, i64 %.0248274
  %72 = load double, ptr %71, align 8, !tbaa !9
  %73 = fsub double %72, %.0231
  %gep = getelementptr double, ptr %invariant.gep, i64 %.0248274
  %74 = load double, ptr %gep, align 8, !tbaa !9
  %75 = fdiv double %74, %.0276
  %76 = fsub double %73, %75
  %77 = fcmp olt double %76, 0.000000e+00
  %78 = zext i1 %77 to i64
  %.2235 = add nuw nsw i64 %.1234275, %78
  %79 = or disjoint i64 %.0248274, 1
  %80 = getelementptr double, ptr %1, i64 %.0248274
  %81 = load double, ptr %80, align 8, !tbaa !9
  %82 = fsub double %81, %.0231
  %gep.1 = getelementptr double, ptr %invariant.gep, i64 %79
  %83 = load double, ptr %gep.1, align 8, !tbaa !9
  %84 = fdiv double %83, %76
  %85 = fsub double %82, %84
  %86 = fcmp olt double %85, 0.000000e+00
  %87 = zext i1 %86 to i64
  %.2235.1 = add nuw nsw i64 %.2235, %87
  %88 = add nuw i64 %.0248274, 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 %._crit_edge.unr-lcssa, label %.lr.ph.new, !llvm.loop !11

._crit_edge.unr-lcssa:                            ; preds = %.lr.ph.new, %.lr.ph
  %.2235.lcssa.ph = phi i64 [ poison, %.lr.ph ], [ %.2235.1, %.lr.ph.new ]
  %.0276.unr = phi double [ %69, %.lr.ph ], [ %85, %.lr.ph.new ]
  %.1234275.unr = phi i64 [ %.0233, %.lr.ph ], [ %.2235.1, %.lr.ph.new ]
  %.0248274.unr = phi i64 [ 2, %.lr.ph ], [ %88, %.lr.ph.new ]
  br i1 %lcmp.mod.not, label %._crit_edge, label %._crit_edge.epilog-lcssa

._crit_edge.epilog-lcssa:                         ; preds = %._crit_edge.unr-lcssa
  %89 = getelementptr inbounds double, ptr %19, i64 %.0248274.unr
  %90 = load double, ptr %89, align 8, !tbaa !9
  %91 = fsub double %90, %.0231
  %gep.epil = getelementptr double, ptr %invariant.gep, i64 %.0248274.unr
  %92 = load double, ptr %gep.epil, align 8, !tbaa !9
  %93 = fdiv double %92, %.0276.unr
  %94 = fcmp olt double %91, %93
  %95 = zext i1 %94 to i64
  %.2235.epil = add nuw nsw i64 %.1234275.unr, %95
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.unr-lcssa, %._crit_edge.epilog-lcssa
  %.2235.lcssa = phi i64 [ %.2235.lcssa.ph, %._crit_edge.unr-lcssa ], [ %.2235.epil, %._crit_edge.epilog-lcssa ]
  %.not264 = icmp slt i64 %.2235.lcssa, %.0251311
  br i1 %.not264, label %.preheader270, label %104

.preheader270:                                    ; preds = %._crit_edge, %.lr.ph283
  %.us-phi = phi double [ %61, %.lr.ph283 ], [ %.0231, %._crit_edge ]
  br i1 %.not263273, label %.preheader270.split297.us, label %.lr.ph294.preheader

.lr.ph294.preheader:                              ; preds = %.preheader270
  %96 = add nsw i64 %56, -1
  %xtraiter395 = and i64 %96, 1
  %97 = icmp eq i64 %56, 2
  %unroll_iter398 = and i64 %96, -2
  %lcmp.mod396.not = icmp eq i64 %xtraiter395, 0
  br label %.lr.ph294

.preheader270.split297.us:                        ; preds = %.preheader271.split.us, %.preheader270
  %.us-phi365 = phi double [ %.us-phi, %.preheader270 ], [ %41, %.preheader271.split.us ]
  %98 = fcmp olt double %55, %42
  %.3236.us300 = zext i1 %98 to i64
  %99 = icmp sgt i64 %.0251311, %.3236.us300
  br i1 %99, label %.lr.ph303, label %.split.us

.lr.ph303:                                        ; preds = %.preheader270.split297.us, %.lr.ph303
  %.0221.us302 = phi double [ %100, %.lr.ph303 ], [ %42, %.preheader270.split297.us ]
  %.1239.us301 = phi double [ %101, %.lr.ph303 ], [ 1.000000e+00, %.preheader270.split297.us ]
  %100 = tail call double @llvm.fmuladd.f64(double %40, double %.1239.us301, double %.0221.us302)
  %101 = fmul double %.1239.us301, 2.000000e+00
  %102 = fcmp olt double %55, %100
  %.3236.us = zext i1 %102 to i64
  %103 = icmp ugt i64 %.0251311, %.3236.us
  br i1 %103, label %.lr.ph303, label %.split.us

104:                                              ; preds = %._crit_edge
  %105 = tail call double @llvm.fmuladd.f64(double %57, double %.0238, double %.0231)
  %106 = fmul double %.0238, 2.000000e+00
  br label %.lr.ph

.lr.ph294:                                        ; preds = %.lr.ph294.preheader, %135
  %.1239 = phi double [ %137, %135 ], [ 1.000000e+00, %.lr.ph294.preheader ]
  %.0221 = phi double [ %136, %135 ], [ %42, %.lr.ph294.preheader ]
  %107 = fsub double %55, %.0221
  %108 = fcmp olt double %107, 0.000000e+00
  %.3236 = zext i1 %108 to i64
  br i1 %97, label %._crit_edge295.unr-lcssa, label %.lr.ph294.new

.lr.ph294.new:                                    ; preds = %.lr.ph294, %.lr.ph294.new
  %.1292 = phi double [ %123, %.lr.ph294.new ], [ %107, %.lr.ph294 ]
  %.4237291 = phi i64 [ %.5.1, %.lr.ph294.new ], [ %.3236, %.lr.ph294 ]
  %.1249290 = phi i64 [ %126, %.lr.ph294.new ], [ 2, %.lr.ph294 ]
  %niter399 = phi i64 [ %niter399.next.1, %.lr.ph294.new ], [ 0, %.lr.ph294 ]
  %109 = getelementptr inbounds double, ptr %19, i64 %.1249290
  %110 = load double, ptr %109, align 8, !tbaa !9
  %111 = fsub double %110, %.0221
  %gep288 = getelementptr double, ptr %invariant.gep, i64 %.1249290
  %112 = load double, ptr %gep288, align 8, !tbaa !9
  %113 = fdiv double %112, %.1292
  %114 = fsub double %111, %113
  %115 = fcmp olt double %114, 0.000000e+00
  %116 = zext i1 %115 to i64
  %.5 = add nuw nsw i64 %.4237291, %116
  %117 = or disjoint i64 %.1249290, 1
  %118 = getelementptr double, ptr %1, i64 %.1249290
  %119 = load double, ptr %118, align 8, !tbaa !9
  %120 = fsub double %119, %.0221
  %gep288.1 = getelementptr double, ptr %invariant.gep, i64 %117
  %121 = load double, ptr %gep288.1, align 8, !tbaa !9
  %122 = fdiv double %121, %114
  %123 = fsub double %120, %122
  %124 = fcmp olt double %123, 0.000000e+00
  %125 = zext i1 %124 to i64
  %.5.1 = add nuw nsw i64 %.5, %125
  %126 = add nuw i64 %.1249290, 2
  %niter399.next.1 = add i64 %niter399, 2
  %niter399.ncmp.1 = icmp eq i64 %niter399.next.1, %unroll_iter398
  br i1 %niter399.ncmp.1, label %._crit_edge295.unr-lcssa, label %.lr.ph294.new, !llvm.loop !13

._crit_edge295.unr-lcssa:                         ; preds = %.lr.ph294.new, %.lr.ph294
  %.5.lcssa.ph = phi i64 [ poison, %.lr.ph294 ], [ %.5.1, %.lr.ph294.new ]
  %.1292.unr = phi double [ %107, %.lr.ph294 ], [ %123, %.lr.ph294.new ]
  %.4237291.unr = phi i64 [ %.3236, %.lr.ph294 ], [ %.5.1, %.lr.ph294.new ]
  %.1249290.unr = phi i64 [ 2, %.lr.ph294 ], [ %126, %.lr.ph294.new ]
  br i1 %lcmp.mod396.not, label %._crit_edge295, label %._crit_edge295.epilog-lcssa

._crit_edge295.epilog-lcssa:                      ; preds = %._crit_edge295.unr-lcssa
  %127 = getelementptr inbounds double, ptr %19, i64 %.1249290.unr
  %128 = load double, ptr %127, align 8, !tbaa !9
  %129 = fsub double %128, %.0221
  %gep288.epil = getelementptr double, ptr %invariant.gep, i64 %.1249290.unr
  %130 = load double, ptr %gep288.epil, align 8, !tbaa !9
  %131 = fdiv double %130, %.1292.unr
  %132 = fcmp olt double %129, %131
  %133 = zext i1 %132 to i64
  %.5.epil = add nuw nsw i64 %.4237291.unr, %133
  br label %._crit_edge295

._crit_edge295:                                   ; preds = %._crit_edge295.unr-lcssa, %._crit_edge295.epilog-lcssa
  %.5.lcssa = phi i64 [ %.5.lcssa.ph, %._crit_edge295.unr-lcssa ], [ %.5.epil, %._crit_edge295.epilog-lcssa ]
  %134 = icmp slt i64 %.5.lcssa, %.0251311
  br i1 %134, label %135, label %.split.us

135:                                              ; preds = %._crit_edge295
  %136 = tail call double @llvm.fmuladd.f64(double %40, double %.1239, double %.0221)
  %137 = fmul double %.1239, 2.000000e+00
  br label %.lr.ph294

.split.us:                                        ; preds = %._crit_edge295, %.lr.ph303, %.preheader270.split297.us
  %.us-phi364 = phi double [ %.us-phi365, %.preheader270.split297.us ], [ %.us-phi365, %.lr.ph303 ], [ %.us-phi, %._crit_edge295 ]
  %.us-phi298 = phi double [ %42, %.preheader270.split297.us ], [ %100, %.lr.ph303 ], [ %.0221, %._crit_edge295 ]
  %.us-phi299 = phi i64 [ %.3236.us300, %.preheader270.split297.us ], [ 1, %.lr.ph303 ], [ %.5.lcssa, %._crit_edge295 ]
  %138 = add nsw i64 %.0226315, 1
  %139 = add i64 %.0251311, 1
  %140 = getelementptr i64, ptr %15, i64 %34
  %141 = getelementptr i8, ptr %140, i64 -8
  store i64 %139, ptr %141, align 8, !tbaa !5
  store i64 %.us-phi299, ptr %140, align 8, !tbaa !5
  br label %142

142:                                              ; preds = %64, %68, %.split.us
  %.pre-phi = phi i64 [ %67, %64 ], [ %67, %68 ], [ %139, %.split.us ]
  %.2242 = phi i64 [ %.1241, %64 ], [ %.1241, %68 ], [ %.0240314, %.split.us ]
  %.1232 = phi double [ %41, %64 ], [ %41, %68 ], [ %.us-phi364, %.split.us ]
  %.1227 = phi i64 [ %.0226315, %64 ], [ %.0226315, %68 ], [ %138, %.split.us ]
  %.1224 = phi i64 [ %.0223316, %64 ], [ %.0223316, %68 ], [ %.0251311, %.split.us ]
  %.1222 = phi double [ %42, %64 ], [ %42, %68 ], [ %.us-phi298, %.split.us ]
  %143 = getelementptr double, ptr %16, i64 %34
  %144 = getelementptr i8, ptr %143, i64 -8
  store double %.1232, ptr %144, align 8, !tbaa !9
  store double %.1222, ptr %143, align 8, !tbaa !9
  %exitcond358.not = icmp eq i64 %.pre-phi, %32
  br i1 %exitcond358.not, label %.preheader, label %33, !llvm.loop !14

145:                                              ; preds = %.preheader, %._crit_edge341
  %.3243 = phi i64 [ %.6246, %._crit_edge341 ], [ %.0240.lcssa, %.preheader ]
  %.0230 = phi i64 [ %224, %._crit_edge341 ], [ 0, %.preheader ]
  %.2228 = phi i64 [ %.4, %._crit_edge341 ], [ %.0226.lcssa, %.preheader ]
  %.not257333 = icmp slt i64 %.2228, 1
  br i1 %.not257333, label %._crit_edge341.thread, label %.lr.ph340

.lr.ph340:                                        ; preds = %145
  %146 = add nsw i64 %.3243, -1
  %147 = icmp eq i64 %.0230, %29
  %.fr = freeze i1 %147
  br i1 %.fr, label %.lr.ph340.split.us, label %.lr.ph340.split

.lr.ph340.split.us:                               ; preds = %.lr.ph340
  %.idx.us = shl i64 %146, 4
  %gep332.us = getelementptr i8, ptr %invariant.gep306, i64 %.idx.us
  %invariant.gep377 = getelementptr i8, ptr %10, i64 -16
  %xtraiter406 = and i64 %.2228, 1
  %148 = icmp eq i64 %.2228, 1
  br i1 %148, label %._crit_edge341.thread.loopexit.unr-lcssa, label %.lr.ph340.split.us.new

.lr.ph340.split.us.new:                           ; preds = %.lr.ph340.split.us
  %unroll_iter408 = and i64 %.2228, 9223372036854775806
  br label %149

149:                                              ; preds = %159, %.lr.ph340.split.us.new
  %.4244336.us = phi i64 [ %.3243, %.lr.ph340.split.us.new ], [ %.6246.us.1, %159 ]
  %.1252334.us = phi i64 [ %.3243, %.lr.ph340.split.us.new ], [ %155, %159 ]
  %niter409 = phi i64 [ 0, %.lr.ph340.split.us.new ], [ %niter409.next.1, %159 ]
  %.idx351 = shl i64 %.1252334.us, 4
  %gep378 = getelementptr i8, ptr %invariant.gep377, i64 %.idx351
  %150 = load i64, ptr %gep378, align 8, !tbaa !5
  store i64 0, ptr %gep378, align 8, !tbaa !5
  %151 = icmp eq i64 %.4244336.us, %.1252334.us
  br i1 %151, label %154, label %152

152:                                              ; preds = %149
  %.not262.us.not = icmp sgt i64 %.3243, %.4244336.us
  br i1 %.not262.us.not, label %153, label %154

153:                                              ; preds = %152
  store i64 %150, ptr %gep332.us, align 8, !tbaa !5
  br label %154

154:                                              ; preds = %153, %152, %149
  %.6246.us = phi i64 [ %.4244336.us, %153 ], [ %.4244336.us, %152 ], [ %150, %149 ]
  %.idx351.1 = shl i64 %150, 4
  %gep378.1 = getelementptr i8, ptr %invariant.gep377, i64 %.idx351.1
  %155 = load i64, ptr %gep378.1, align 8, !tbaa !5
  store i64 0, ptr %gep378.1, align 8, !tbaa !5
  %156 = icmp eq i64 %.6246.us, %150
  br i1 %156, label %159, label %157

157:                                              ; preds = %154
  %.not262.us.not.1 = icmp sgt i64 %.3243, %.6246.us
  br i1 %.not262.us.not.1, label %158, label %159

158:                                              ; preds = %157
  store i64 %155, ptr %gep332.us, align 8, !tbaa !5
  br label %159

159:                                              ; preds = %158, %157, %154
  %.6246.us.1 = phi i64 [ %.6246.us, %158 ], [ %.6246.us, %157 ], [ %155, %154 ]
  %niter409.next.1 = add i64 %niter409, 2
  %niter409.ncmp.1 = icmp eq i64 %niter409.next.1, %unroll_iter408
  br i1 %niter409.ncmp.1, label %._crit_edge341.thread.loopexit.unr-lcssa, label %149, !llvm.loop !15

.lr.ph340.split:                                  ; preds = %.lr.ph340, %221
  %.2225338 = phi i64 [ %.3, %221 ], [ %146, %.lr.ph340 ]
  %.3229337 = phi i64 [ %.4, %221 ], [ %.2228, %.lr.ph340 ]
  %.4244336 = phi i64 [ %.6246, %221 ], [ %.3243, %.lr.ph340 ]
  %.0247335 = phi i64 [ %222, %221 ], [ 1, %.lr.ph340 ]
  %.1252334 = phi i64 [ %163, %221 ], [ %.3243, %.lr.ph340 ]
  %160 = shl i64 %.1252334, 1
  %161 = add nsw i64 %160, -1
  %162 = getelementptr inbounds i64, ptr %15, i64 %161
  %163 = load i64, ptr %162, align 8, !tbaa !5
  %164 = getelementptr inbounds double, ptr %16, i64 %161
  %165 = getelementptr inbounds double, ptr %16, i64 %160
  %166 = load <2 x double>, ptr %164, align 8, !tbaa !9
  %167 = extractelement <2 x double> %166, i64 0
  %168 = extractelement <2 x double> %166, i64 1
  %169 = fadd double %167, %168
  %170 = fmul double %169, 5.000000e-01
  %171 = fsub double %168, %170
  %172 = fcmp oge <2 x double> %166, zeroinitializer
  %173 = fneg <2 x double> %166
  %174 = select <2 x i1> %172, <2 x double> %166, <2 x double> %173
  %175 = extractelement <2 x double> %174, i64 0
  %176 = extractelement <2 x double> %174, i64 1
  %177 = fcmp oge double %175, %176
  %178 = select i1 %177, double %175, double %176
  %179 = load double, ptr %5, align 8, !tbaa !9
  %180 = fmul double %179, %178
  %181 = fcmp olt double %171, %180
  br i1 %181, label %182, label %187

182:                                              ; preds = %.lr.ph340.split
  %183 = add nsw i64 %.3229337, -1
  store i64 0, ptr %162, align 8, !tbaa !5
  %184 = icmp eq i64 %.4244336, %.1252334
  br i1 %184, label %221, label %185

185:                                              ; preds = %182
  %.not262 = icmp slt i64 %.2225338, %.4244336
  br i1 %.not262, label %221, label %186

186:                                              ; preds = %185
  %.idx = shl i64 %.2225338, 4
  %gep332 = getelementptr i8, ptr %invariant.gep306, i64 %.idx
  store i64 %163, ptr %gep332, align 8, !tbaa !5
  br label %221

187:                                              ; preds = %.lr.ph340.split
  %188 = load double, ptr %1, align 8, !tbaa !9
  %189 = fsub double %188, %170
  %190 = fcmp olt double %189, 0.000000e+00
  %.6 = zext i1 %190 to i64
  %191 = load i64, ptr %0, align 8, !tbaa !5
  %.not260323 = icmp slt i64 %191, 2
  br i1 %.not260323, label %._crit_edge329, label %.lr.ph328.preheader

.lr.ph328.preheader:                              ; preds = %187
  %192 = add nsw i64 %191, -1
  %xtraiter400 = and i64 %192, 1
  %193 = icmp eq i64 %191, 2
  br i1 %193, label %._crit_edge329.loopexit.unr-lcssa, label %.lr.ph328.preheader.new

.lr.ph328.preheader.new:                          ; preds = %.lr.ph328.preheader
  %unroll_iter403 = and i64 %192, -2
  br label %.lr.ph328

.lr.ph328:                                        ; preds = %.lr.ph328, %.lr.ph328.preheader.new
  %.2326 = phi double [ %189, %.lr.ph328.preheader.new ], [ %208, %.lr.ph328 ]
  %.7325 = phi i64 [ %.6, %.lr.ph328.preheader.new ], [ %.8.1, %.lr.ph328 ]
  %.2250324 = phi i64 [ 2, %.lr.ph328.preheader.new ], [ %211, %.lr.ph328 ]
  %niter404 = phi i64 [ 0, %.lr.ph328.preheader.new ], [ %niter404.next.1, %.lr.ph328 ]
  %194 = getelementptr inbounds double, ptr %19, i64 %.2250324
  %195 = load double, ptr %194, align 8, !tbaa !9
  %196 = fsub double %195, %170
  %gep322 = getelementptr double, ptr %invariant.gep321, i64 %.2250324
  %197 = load double, ptr %gep322, align 8, !tbaa !9
  %198 = fdiv double %197, %.2326
  %199 = fsub double %196, %198
  %200 = fcmp olt double %199, 0.000000e+00
  %201 = zext i1 %200 to i64
  %.8 = add nuw nsw i64 %.7325, %201
  %202 = or disjoint i64 %.2250324, 1
  %203 = getelementptr double, ptr %1, i64 %.2250324
  %204 = load double, ptr %203, align 8, !tbaa !9
  %205 = fsub double %204, %170
  %gep322.1 = getelementptr double, ptr %invariant.gep321, i64 %202
  %206 = load double, ptr %gep322.1, align 8, !tbaa !9
  %207 = fdiv double %206, %199
  %208 = fsub double %205, %207
  %209 = fcmp olt double %208, 0.000000e+00
  %210 = zext i1 %209 to i64
  %.8.1 = add nuw nsw i64 %.8, %210
  %211 = add nuw i64 %.2250324, 2
  %niter404.next.1 = add i64 %niter404, 2
  %niter404.ncmp.1 = icmp eq i64 %niter404.next.1, %unroll_iter403
  br i1 %niter404.ncmp.1, label %._crit_edge329.loopexit.unr-lcssa, label %.lr.ph328, !llvm.loop !16

._crit_edge329.loopexit.unr-lcssa:                ; preds = %.lr.ph328, %.lr.ph328.preheader
  %.8.lcssa.ph = phi i64 [ poison, %.lr.ph328.preheader ], [ %.8.1, %.lr.ph328 ]
  %.2326.unr = phi double [ %189, %.lr.ph328.preheader ], [ %208, %.lr.ph328 ]
  %.7325.unr = phi i64 [ %.6, %.lr.ph328.preheader ], [ %.8.1, %.lr.ph328 ]
  %.2250324.unr = phi i64 [ 2, %.lr.ph328.preheader ], [ %211, %.lr.ph328 ]
  %lcmp.mod401.not = icmp eq i64 %xtraiter400, 0
  br i1 %lcmp.mod401.not, label %._crit_edge329, label %.lr.ph328.epil

.lr.ph328.epil:                                   ; preds = %._crit_edge329.loopexit.unr-lcssa
  %212 = getelementptr inbounds double, ptr %19, i64 %.2250324.unr
  %213 = load double, ptr %212, align 8, !tbaa !9
  %214 = fsub double %213, %170
  %gep322.epil = getelementptr double, ptr %invariant.gep321, i64 %.2250324.unr
  %215 = load double, ptr %gep322.epil, align 8, !tbaa !9
  %216 = fdiv double %215, %.2326.unr
  %217 = fcmp olt double %214, %216
  %218 = zext i1 %217 to i64
  %.8.epil = add nuw nsw i64 %.7325.unr, %218
  br label %._crit_edge329

._crit_edge329:                                   ; preds = %.lr.ph328.epil, %._crit_edge329.loopexit.unr-lcssa, %187
  %.7.lcssa = phi i64 [ %.6, %187 ], [ %.8.lcssa.ph, %._crit_edge329.loopexit.unr-lcssa ], [ %.8.epil, %.lr.ph328.epil ]
  %.not261.not = icmp slt i64 %.7.lcssa, %.1252334
  br i1 %.not261.not, label %219, label %220

219:                                              ; preds = %._crit_edge329
  store double %170, ptr %164, align 8, !tbaa !9
  br label %221

220:                                              ; preds = %._crit_edge329
  store double %170, ptr %165, align 8, !tbaa !9
  br label %221

221:                                              ; preds = %219, %220, %186, %185, %182
  %.6246 = phi i64 [ %.4244336, %186 ], [ %.4244336, %185 ], [ %163, %182 ], [ %.4244336, %220 ], [ %.4244336, %219 ]
  %.4 = phi i64 [ %183, %186 ], [ %183, %185 ], [ %183, %182 ], [ %.3229337, %220 ], [ %.3229337, %219 ]
  %.3 = phi i64 [ %.2225338, %186 ], [ %.2225338, %185 ], [ %.2225338, %182 ], [ %.1252334, %220 ], [ %.1252334, %219 ]
  %222 = add nuw i64 %.0247335, 1
  %exitcond360.not = icmp eq i64 %.0247335, %.2228
  br i1 %exitcond360.not, label %._crit_edge341, label %.lr.ph340.split, !llvm.loop !15

._crit_edge341:                                   ; preds = %221
  %223 = icmp sgt i64 %.4, 0
  %224 = add nuw nsw i64 %.0230, 1
  %.not258.not = icmp slt i64 %.0230, %29
  %or.cond269 = select i1 %223, i1 %.not258.not, i1 false
  br i1 %or.cond269, label %145, label %._crit_edge341.thread

._crit_edge341.thread.loopexit.unr-lcssa:         ; preds = %159, %.lr.ph340.split.us
  %.4244336.us.unr = phi i64 [ %.3243, %.lr.ph340.split.us ], [ %.6246.us.1, %159 ]
  %.1252334.us.unr = phi i64 [ %.3243, %.lr.ph340.split.us ], [ %155, %159 ]
  %lcmp.mod407.not = icmp eq i64 %xtraiter406, 0
  br i1 %lcmp.mod407.not, label %._crit_edge341.thread, label %.epil.preheader405

.epil.preheader405:                               ; preds = %._crit_edge341.thread.loopexit.unr-lcssa
  %.idx351.epil = shl i64 %.1252334.us.unr, 4
  %gep378.epil = getelementptr i8, ptr %invariant.gep377, i64 %.idx351.epil
  %225 = load i64, ptr %gep378.epil, align 8, !tbaa !5
  store i64 0, ptr %gep378.epil, align 8, !tbaa !5
  %226 = icmp ne i64 %.4244336.us.unr, %.1252334.us.unr
  %.not262.us.not.epil = icmp sgt i64 %.3243, %.4244336.us.unr
  %or.cond421 = select i1 %226, i1 %.not262.us.not.epil, i1 false
  br i1 %or.cond421, label %227, label %._crit_edge341.thread

227:                                              ; preds = %.epil.preheader405
  store i64 %225, ptr %gep332.us, align 8, !tbaa !5
  br label %._crit_edge341.thread

._crit_edge341.thread:                            ; preds = %145, %._crit_edge341, %._crit_edge341.thread.loopexit.unr-lcssa, %227, %.epil.preheader405
  %228 = load i64, ptr %4, align 8, !tbaa !5
  %.not259346 = icmp sgt i64 %.0240.lcssa, %228
  br i1 %.not259346, label %._crit_edge350, label %.lr.ph349

.lr.ph349:                                        ; preds = %._crit_edge341.thread, %247
  %.3254347 = phi i64 [ %248, %247 ], [ %.0240.lcssa, %._crit_edge341.thread ]
  %229 = shl i64 %.3254347, 1
  %230 = add nsw i64 %229, -1
  %231 = getelementptr inbounds i64, ptr %15, i64 %230
  %232 = load i64, ptr %231, align 8, !tbaa !5
  %233 = icmp eq i64 %232, 0
  br i1 %233, label %234, label %247

234:                                              ; preds = %.lr.ph349
  %235 = load i64, ptr %6, align 8, !tbaa !5
  %236 = sub nsw i64 %.3254347, %235
  %237 = getelementptr inbounds double, ptr %16, i64 %230
  %238 = load double, ptr %237, align 8, !tbaa !9
  %239 = getelementptr inbounds double, ptr %16, i64 %229
  %240 = load double, ptr %239, align 8, !tbaa !9
  %241 = fadd double %238, %240
  %242 = fmul double %241, 5.000000e-01
  %243 = getelementptr inbounds double, ptr %18, i64 %236
  store double %242, ptr %243, align 8, !tbaa !9
  %244 = load double, ptr %239, align 8, !tbaa !9
  %245 = fsub double %244, %242
  %246 = getelementptr inbounds double, ptr %17, i64 %236
  store double %245, ptr %246, align 8, !tbaa !9
  br label %247

247:                                              ; preds = %.lr.ph349, %234
  %248 = add i64 %.3254347, 1
  %exitcond362.not = icmp eq i64 %.3254347, %228
  br i1 %exitcond362.not, label %._crit_edge350, label %.lr.ph349, !llvm.loop !17

._crit_edge350:                                   ; preds = %247, %._crit_edge341.thread
  ret i32 0
}

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

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

attributes #0 = { nofree nounwind memory(write, argmem: readwrite) 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 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 #2 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #3 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"long", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"double", !7, i64 0}
!11 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = distinct !{!13, !12}
!14 = distinct !{!14, !12}
!15 = distinct !{!15, !12}
!16 = distinct !{!16, !12}
!17 = distinct !{!17, !12}


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