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

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i64, align 8
@.str.7 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [2 x i8], align 1
@c_n1 = external hidden global i64, align 8
@c__3 = external hidden global i64, align 8
@c__2 = external hidden global i64, align 8
@c__0 = external hidden global i64, align 8

; Function Attrs: nounwind uwtable
define dso_local i32 @dlarrd_(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, ptr noundef %17, ptr noundef %18, ptr noundef %19, ptr noundef %20, ptr noundef %21, ptr noundef %22, ptr noundef %23, ptr noundef %24) #0 {
  %26 = alloca i32, align 4
  %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 ptr, align 8
  %36 = alloca ptr, align 8
  %37 = alloca ptr, align 8
  %38 = alloca ptr, align 8
  %39 = alloca ptr, align 8
  %40 = alloca ptr, align 8
  %41 = alloca ptr, align 8
  %42 = alloca ptr, align 8
  %43 = alloca ptr, align 8
  %44 = alloca ptr, align 8
  %45 = alloca ptr, align 8
  %46 = alloca ptr, align 8
  %47 = alloca ptr, align 8
  %48 = alloca ptr, align 8
  %49 = alloca ptr, align 8
  %50 = alloca ptr, align 8
  %51 = alloca ptr, 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 i64, align 8
  %58 = alloca i64, align 8
  %59 = alloca i64, align 8
  %60 = alloca i64, align 8
  %61 = alloca i64, align 8
  %62 = alloca i64, align 8
  %63 = alloca double, align 8
  %64 = alloca i64, align 8
  %65 = alloca i64, align 8
  %66 = alloca double, align 8
  %67 = alloca i64, align 8
  %68 = alloca i64, align 8
  %69 = alloca double, align 8
  %70 = alloca i64, align 8
  %71 = alloca double, align 8
  %72 = alloca double, align 8
  %73 = alloca i64, align 8
  %74 = alloca double, align 8
  %75 = alloca double, align 8
  %76 = alloca i64, align 8
  %77 = alloca i64, align 8
  %78 = alloca i64, align 8
  %79 = alloca i64, align 8
  %80 = alloca i64, align 8
  %81 = alloca i64, align 8
  %82 = alloca i64, align 8
  %83 = alloca i64, align 8
  %84 = alloca double, align 8
  %85 = alloca i64, align 8
  %86 = alloca i64, align 8
  %87 = alloca double, align 8
  %88 = alloca double, align 8
  %89 = alloca double, align 8
  %90 = alloca double, align 8
  %91 = alloca i64, align 8
  %92 = alloca i64, align 8
  %93 = alloca i64, align 8
  %94 = alloca [1 x i64], align 8
  %95 = alloca i64, align 8
  %96 = alloca i64, align 8
  %97 = alloca i64, align 8
  %98 = alloca i32, align 4
  store ptr %0, ptr %27, align 8, !tbaa !5
  store ptr %1, ptr %28, align 8, !tbaa !5
  store ptr %2, ptr %29, align 8, !tbaa !5
  store ptr %3, ptr %30, align 8, !tbaa !5
  store ptr %4, ptr %31, align 8, !tbaa !5
  store ptr %5, ptr %32, align 8, !tbaa !5
  store ptr %6, ptr %33, align 8, !tbaa !5
  store ptr %7, ptr %34, align 8, !tbaa !5
  store ptr %8, ptr %35, align 8, !tbaa !5
  store ptr %9, ptr %36, align 8, !tbaa !5
  store ptr %10, ptr %37, align 8, !tbaa !5
  store ptr %11, ptr %38, align 8, !tbaa !5
  store ptr %12, ptr %39, align 8, !tbaa !5
  store ptr %13, ptr %40, align 8, !tbaa !5
  store ptr %14, ptr %41, align 8, !tbaa !5
  store ptr %15, ptr %42, align 8, !tbaa !5
  store ptr %16, ptr %43, align 8, !tbaa !5
  store ptr %17, ptr %44, align 8, !tbaa !5
  store ptr %18, ptr %45, align 8, !tbaa !5
  store ptr %19, ptr %46, align 8, !tbaa !5
  store ptr %20, ptr %47, align 8, !tbaa !5
  store ptr %21, ptr %48, align 8, !tbaa !5
  store ptr %22, ptr %49, align 8, !tbaa !5
  store ptr %23, ptr %50, align 8, !tbaa !5
  store ptr %24, ptr %51, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %80) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %81) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %82) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %83) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %84) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %85) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %86) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %87) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %88) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %89) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %90) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %91) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %92) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %93) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %94) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %95) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %96) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %97) #5
  %99 = load ptr, ptr %50, align 8, !tbaa !5
  %100 = getelementptr inbounds i64, ptr %99, i32 -1
  store ptr %100, ptr %50, align 8, !tbaa !5
  %101 = load ptr, ptr %49, align 8, !tbaa !5
  %102 = getelementptr inbounds double, ptr %101, i32 -1
  store ptr %102, ptr %49, align 8, !tbaa !5
  %103 = load ptr, ptr %48, align 8, !tbaa !5
  %104 = getelementptr inbounds i64, ptr %103, i32 -1
  store ptr %104, ptr %48, align 8, !tbaa !5
  %105 = load ptr, ptr %47, align 8, !tbaa !5
  %106 = getelementptr inbounds i64, ptr %105, i32 -1
  store ptr %106, ptr %47, align 8, !tbaa !5
  %107 = load ptr, ptr %44, align 8, !tbaa !5
  %108 = getelementptr inbounds double, ptr %107, i32 -1
  store ptr %108, ptr %44, align 8, !tbaa !5
  %109 = load ptr, ptr %43, align 8, !tbaa !5
  %110 = getelementptr inbounds double, ptr %109, i32 -1
  store ptr %110, ptr %43, align 8, !tbaa !5
  %111 = load ptr, ptr %41, align 8, !tbaa !5
  %112 = getelementptr inbounds i64, ptr %111, i32 -1
  store ptr %112, ptr %41, align 8, !tbaa !5
  %113 = load ptr, ptr %38, align 8, !tbaa !5
  %114 = getelementptr inbounds double, ptr %113, i32 -1
  store ptr %114, ptr %38, align 8, !tbaa !5
  %115 = load ptr, ptr %37, align 8, !tbaa !5
  %116 = getelementptr inbounds double, ptr %115, i32 -1
  store ptr %116, ptr %37, align 8, !tbaa !5
  %117 = load ptr, ptr %36, align 8, !tbaa !5
  %118 = getelementptr inbounds double, ptr %117, i32 -1
  store ptr %118, ptr %36, align 8, !tbaa !5
  %119 = load ptr, ptr %34, align 8, !tbaa !5
  %120 = getelementptr inbounds double, ptr %119, i32 -1
  store ptr %120, ptr %34, align 8, !tbaa !5
  %121 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 0, ptr %121, align 8, !tbaa !9
  %122 = load ptr, ptr %27, align 8, !tbaa !5
  %123 = call i64 @lsame_(ptr noundef %122, ptr noundef @.str)
  %124 = icmp ne i64 %123, 0
  br i1 %124, label %125, label %126

125:                                              ; preds = %25
  store i64 1, ptr %92, align 8, !tbaa !9
  br label %139

126:                                              ; preds = %25
  %127 = load ptr, ptr %27, align 8, !tbaa !5
  %128 = call i64 @lsame_(ptr noundef %127, ptr noundef @.str.1)
  %129 = icmp ne i64 %128, 0
  br i1 %129, label %130, label %131

130:                                              ; preds = %126
  store i64 2, ptr %92, align 8, !tbaa !9
  br label %138

131:                                              ; preds = %126
  %132 = load ptr, ptr %27, align 8, !tbaa !5
  %133 = call i64 @lsame_(ptr noundef %132, ptr noundef @.str.2)
  %134 = icmp ne i64 %133, 0
  br i1 %134, label %135, label %136

135:                                              ; preds = %131
  store i64 3, ptr %92, align 8, !tbaa !9
  br label %137

136:                                              ; preds = %131
  store i64 0, ptr %92, align 8, !tbaa !9
  br label %137

137:                                              ; preds = %136, %135
  br label %138

138:                                              ; preds = %137, %130
  br label %139

139:                                              ; preds = %138, %125
  %140 = load i64, ptr %92, align 8, !tbaa !9
  %141 = icmp sle i64 %140, 0
  br i1 %141, label %142, label %144

142:                                              ; preds = %139
  %143 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 -1, ptr %143, align 8, !tbaa !9
  br label %227

144:                                              ; preds = %139
  %145 = load ptr, ptr %28, align 8, !tbaa !5
  %146 = call i64 @lsame_(ptr noundef %145, ptr noundef @.str.3)
  %147 = icmp ne i64 %146, 0
  br i1 %147, label %154, label %148

148:                                              ; preds = %144
  %149 = load ptr, ptr %28, align 8, !tbaa !5
  %150 = call i64 @lsame_(ptr noundef %149, ptr noundef @.str.4)
  %151 = icmp ne i64 %150, 0
  br i1 %151, label %154, label %152

152:                                              ; preds = %148
  %153 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 -2, ptr %153, align 8, !tbaa !9
  br label %226

154:                                              ; preds = %148, %144
  %155 = load ptr, ptr %29, align 8, !tbaa !5
  %156 = load i64, ptr %155, align 8, !tbaa !9
  %157 = icmp slt i64 %156, 0
  br i1 %157, label %158, label %160

158:                                              ; preds = %154
  %159 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 -3, ptr %159, align 8, !tbaa !9
  br label %225

160:                                              ; preds = %154
  %161 = load i64, ptr %92, align 8, !tbaa !9
  %162 = icmp eq i64 %161, 2
  br i1 %162, label %163, label %172

163:                                              ; preds = %160
  %164 = load ptr, ptr %30, align 8, !tbaa !5
  %165 = load double, ptr %164, align 8, !tbaa !11
  %166 = load ptr, ptr %31, align 8, !tbaa !5
  %167 = load double, ptr %166, align 8, !tbaa !11
  %168 = fcmp oge double %165, %167
  br i1 %168, label %169, label %171

169:                                              ; preds = %163
  %170 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 -5, ptr %170, align 8, !tbaa !9
  br label %171

171:                                              ; preds = %169, %163
  br label %224

172:                                              ; preds = %160
  %173 = load i64, ptr %92, align 8, !tbaa !9
  %174 = icmp eq i64 %173, 3
  br i1 %174, label %175, label %194

175:                                              ; preds = %172
  %176 = load ptr, ptr %32, align 8, !tbaa !5
  %177 = load i64, ptr %176, align 8, !tbaa !9
  %178 = icmp slt i64 %177, 1
  br i1 %178, label %192, label %179

179:                                              ; preds = %175
  %180 = load ptr, ptr %32, align 8, !tbaa !5
  %181 = load i64, ptr %180, align 8, !tbaa !9
  %182 = load ptr, ptr %29, align 8, !tbaa !5
  %183 = load i64, ptr %182, align 8, !tbaa !9
  %184 = icmp sge i64 1, %183
  br i1 %184, label %185, label %186

185:                                              ; preds = %179
  br label %189

186:                                              ; preds = %179
  %187 = load ptr, ptr %29, align 8, !tbaa !5
  %188 = load i64, ptr %187, align 8, !tbaa !9
  br label %189

189:                                              ; preds = %186, %185
  %190 = phi i64 [ 1, %185 ], [ %188, %186 ]
  %191 = icmp sgt i64 %181, %190
  br i1 %191, label %192, label %194

192:                                              ; preds = %189, %175
  %193 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 -6, ptr %193, align 8, !tbaa !9
  br label %223

194:                                              ; preds = %189, %172
  %195 = load i64, ptr %92, align 8, !tbaa !9
  %196 = icmp eq i64 %195, 3
  br i1 %196, label %197, label %222

197:                                              ; preds = %194
  %198 = load ptr, ptr %33, align 8, !tbaa !5
  %199 = load i64, ptr %198, align 8, !tbaa !9
  %200 = load ptr, ptr %29, align 8, !tbaa !5
  %201 = load i64, ptr %200, align 8, !tbaa !9
  %202 = load ptr, ptr %32, align 8, !tbaa !5
  %203 = load i64, ptr %202, align 8, !tbaa !9
  %204 = icmp sle i64 %201, %203
  br i1 %204, label %205, label %208

205:                                              ; preds = %197
  %206 = load ptr, ptr %29, align 8, !tbaa !5
  %207 = load i64, ptr %206, align 8, !tbaa !9
  br label %211

208:                                              ; preds = %197
  %209 = load ptr, ptr %32, align 8, !tbaa !5
  %210 = load i64, ptr %209, align 8, !tbaa !9
  br label %211

211:                                              ; preds = %208, %205
  %212 = phi i64 [ %207, %205 ], [ %210, %208 ]
  %213 = icmp slt i64 %199, %212
  br i1 %213, label %220, label %214

214:                                              ; preds = %211
  %215 = load ptr, ptr %33, align 8, !tbaa !5
  %216 = load i64, ptr %215, align 8, !tbaa !9
  %217 = load ptr, ptr %29, align 8, !tbaa !5
  %218 = load i64, ptr %217, align 8, !tbaa !9
  %219 = icmp sgt i64 %216, %218
  br i1 %219, label %220, label %222

220:                                              ; preds = %214, %211
  %221 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 -7, ptr %221, align 8, !tbaa !9
  br label %222

222:                                              ; preds = %220, %214, %194
  br label %223

223:                                              ; preds = %222, %192
  br label %224

224:                                              ; preds = %223, %171
  br label %225

225:                                              ; preds = %224, %158
  br label %226

226:                                              ; preds = %225, %152
  br label %227

227:                                              ; preds = %226, %142
  %228 = load ptr, ptr %51, align 8, !tbaa !5
  %229 = load i64, ptr %228, align 8, !tbaa !9
  %230 = icmp ne i64 %229, 0
  br i1 %230, label %231, label %232

231:                                              ; preds = %227
  store i32 0, ptr %26, align 4
  store i32 1, ptr %98, align 4
  br label %1608

232:                                              ; preds = %227
  %233 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 0, ptr %233, align 8, !tbaa !9
  store i64 0, ptr %96, align 8, !tbaa !9
  store i64 0, ptr %97, align 8, !tbaa !9
  %234 = load ptr, ptr %42, align 8, !tbaa !5
  store i64 0, ptr %234, align 8, !tbaa !9
  %235 = load ptr, ptr %29, align 8, !tbaa !5
  %236 = load i64, ptr %235, align 8, !tbaa !9
  %237 = icmp eq i64 %236, 0
  br i1 %237, label %238, label %239

238:                                              ; preds = %232
  store i32 0, ptr %26, align 4
  store i32 1, ptr %98, align 4
  br label %1608

239:                                              ; preds = %232
  %240 = load i64, ptr %92, align 8, !tbaa !9
  %241 = icmp eq i64 %240, 3
  br i1 %241, label %242, label %253

242:                                              ; preds = %239
  %243 = load ptr, ptr %32, align 8, !tbaa !5
  %244 = load i64, ptr %243, align 8, !tbaa !9
  %245 = icmp eq i64 %244, 1
  br i1 %245, label %246, label %253

246:                                              ; preds = %242
  %247 = load ptr, ptr %33, align 8, !tbaa !5
  %248 = load i64, ptr %247, align 8, !tbaa !9
  %249 = load ptr, ptr %29, align 8, !tbaa !5
  %250 = load i64, ptr %249, align 8, !tbaa !9
  %251 = icmp eq i64 %248, %250
  br i1 %251, label %252, label %253

252:                                              ; preds = %246
  store i64 1, ptr %92, align 8, !tbaa !9
  br label %253

253:                                              ; preds = %252, %246, %242, %239
  %254 = call double @dlamch_(ptr noundef @.str.5)
  store double %254, ptr %69, align 8, !tbaa !11
  %255 = call double @dlamch_(ptr noundef @.str.6)
  store double %255, ptr %89, align 8, !tbaa !11
  %256 = load ptr, ptr %29, align 8, !tbaa !5
  %257 = load i64, ptr %256, align 8, !tbaa !9
  %258 = icmp eq i64 %257, 1
  br i1 %258, label %259, label %304

259:                                              ; preds = %253
  %260 = load i64, ptr %92, align 8, !tbaa !9
  %261 = icmp eq i64 %260, 1
  br i1 %261, label %290, label %262

262:                                              ; preds = %259
  %263 = load i64, ptr %92, align 8, !tbaa !9
  %264 = icmp eq i64 %263, 2
  br i1 %264, label %265, label %279

265:                                              ; preds = %262
  %266 = load ptr, ptr %36, align 8, !tbaa !5
  %267 = getelementptr inbounds double, ptr %266, i64 1
  %268 = load double, ptr %267, align 8, !tbaa !11
  %269 = load ptr, ptr %30, align 8, !tbaa !5
  %270 = load double, ptr %269, align 8, !tbaa !11
  %271 = fcmp ogt double %268, %270
  br i1 %271, label %272, label %279

272:                                              ; preds = %265
  %273 = load ptr, ptr %36, align 8, !tbaa !5
  %274 = getelementptr inbounds double, ptr %273, i64 1
  %275 = load double, ptr %274, align 8, !tbaa !11
  %276 = load ptr, ptr %31, align 8, !tbaa !5
  %277 = load double, ptr %276, align 8, !tbaa !11
  %278 = fcmp ole double %275, %277
  br i1 %278, label %290, label %279

279:                                              ; preds = %272, %265, %262
  %280 = load i64, ptr %92, align 8, !tbaa !9
  %281 = icmp eq i64 %280, 3
  br i1 %281, label %282, label %303

282:                                              ; preds = %279
  %283 = load ptr, ptr %32, align 8, !tbaa !5
  %284 = load i64, ptr %283, align 8, !tbaa !9
  %285 = icmp eq i64 %284, 1
  br i1 %285, label %286, label %303

286:                                              ; preds = %282
  %287 = load ptr, ptr %33, align 8, !tbaa !5
  %288 = load i64, ptr %287, align 8, !tbaa !9
  %289 = icmp eq i64 %288, 1
  br i1 %289, label %290, label %303

290:                                              ; preds = %286, %272, %259
  %291 = load ptr, ptr %42, align 8, !tbaa !5
  store i64 1, ptr %291, align 8, !tbaa !9
  %292 = load ptr, ptr %36, align 8, !tbaa !5
  %293 = getelementptr inbounds double, ptr %292, i64 1
  %294 = load double, ptr %293, align 8, !tbaa !11
  %295 = load ptr, ptr %43, align 8, !tbaa !5
  %296 = getelementptr inbounds double, ptr %295, i64 1
  store double %294, ptr %296, align 8, !tbaa !11
  %297 = load ptr, ptr %44, align 8, !tbaa !5
  %298 = getelementptr inbounds double, ptr %297, i64 1
  store double 0.000000e+00, ptr %298, align 8, !tbaa !11
  %299 = load ptr, ptr %47, align 8, !tbaa !5
  %300 = getelementptr inbounds i64, ptr %299, i64 1
  store i64 1, ptr %300, align 8, !tbaa !9
  %301 = load ptr, ptr %48, align 8, !tbaa !5
  %302 = getelementptr inbounds i64, ptr %301, i64 1
  store i64 1, ptr %302, align 8, !tbaa !9
  br label %303

303:                                              ; preds = %290, %286, %282, %279
  store i32 0, ptr %26, align 4
  store i32 1, ptr %98, align 4
  br label %1608

304:                                              ; preds = %253
  %305 = load ptr, ptr %29, align 8, !tbaa !5
  %306 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.7, ptr noundef @.str.8, ptr noundef %305, ptr noundef @c_n1, ptr noundef @c_n1, ptr noundef @c_n1)
  store i64 %306, ptr %62, align 8, !tbaa !9
  %307 = load i64, ptr %62, align 8, !tbaa !9
  %308 = icmp sle i64 %307, 1
  br i1 %308, label %309, label %310

309:                                              ; preds = %304
  store i64 0, ptr %62, align 8, !tbaa !9
  br label %310

310:                                              ; preds = %309, %304
  %311 = load ptr, ptr %36, align 8, !tbaa !5
  %312 = getelementptr inbounds double, ptr %311, i64 1
  %313 = load double, ptr %312, align 8, !tbaa !11
  store double %313, ptr %63, align 8, !tbaa !11
  %314 = load ptr, ptr %36, align 8, !tbaa !5
  %315 = getelementptr inbounds double, ptr %314, i64 1
  %316 = load double, ptr %315, align 8, !tbaa !11
  store double %316, ptr %66, align 8, !tbaa !11
  %317 = load ptr, ptr %29, align 8, !tbaa !5
  %318 = load i64, ptr %317, align 8, !tbaa !9
  store i64 %318, ptr %52, align 8, !tbaa !9
  store i64 1, ptr %57, align 8, !tbaa !9
  br label %319

319:                                              ; preds = %355, %310
  %320 = load i64, ptr %57, align 8, !tbaa !9
  %321 = load i64, ptr %52, align 8, !tbaa !9
  %322 = icmp sle i64 %320, %321
  br i1 %322, label %323, label %358

323:                                              ; preds = %319
  %324 = load double, ptr %63, align 8, !tbaa !11
  store double %324, ptr %55, align 8, !tbaa !11
  %325 = load ptr, ptr %34, align 8, !tbaa !5
  %326 = load i64, ptr %57, align 8, !tbaa !9
  %327 = shl i64 %326, 1
  %328 = sub nsw i64 %327, 1
  %329 = getelementptr inbounds double, ptr %325, i64 %328
  %330 = load double, ptr %329, align 8, !tbaa !11
  store double %330, ptr %56, align 8, !tbaa !11
  %331 = load double, ptr %55, align 8, !tbaa !11
  %332 = load double, ptr %56, align 8, !tbaa !11
  %333 = fcmp ole double %331, %332
  br i1 %333, label %334, label %336

334:                                              ; preds = %323
  %335 = load double, ptr %55, align 8, !tbaa !11
  br label %338

336:                                              ; preds = %323
  %337 = load double, ptr %56, align 8, !tbaa !11
  br label %338

338:                                              ; preds = %336, %334
  %339 = phi double [ %335, %334 ], [ %337, %336 ]
  store double %339, ptr %63, align 8, !tbaa !11
  %340 = load double, ptr %66, align 8, !tbaa !11
  store double %340, ptr %55, align 8, !tbaa !11
  %341 = load ptr, ptr %34, align 8, !tbaa !5
  %342 = load i64, ptr %57, align 8, !tbaa !9
  %343 = mul nsw i64 %342, 2
  %344 = getelementptr inbounds double, ptr %341, i64 %343
  %345 = load double, ptr %344, align 8, !tbaa !11
  store double %345, ptr %56, align 8, !tbaa !11
  %346 = load double, ptr %55, align 8, !tbaa !11
  %347 = load double, ptr %56, align 8, !tbaa !11
  %348 = fcmp oge double %346, %347
  br i1 %348, label %349, label %351

349:                                              ; preds = %338
  %350 = load double, ptr %55, align 8, !tbaa !11
  br label %353

351:                                              ; preds = %338
  %352 = load double, ptr %56, align 8, !tbaa !11
  br label %353

353:                                              ; preds = %351, %349
  %354 = phi double [ %350, %349 ], [ %352, %351 ]
  store double %354, ptr %66, align 8, !tbaa !11
  br label %355

355:                                              ; preds = %353
  %356 = load i64, ptr %57, align 8, !tbaa !9
  %357 = add nsw i64 %356, 1
  store i64 %357, ptr %57, align 8, !tbaa !9
  br label %319, !llvm.loop !13

358:                                              ; preds = %319
  %359 = load double, ptr %63, align 8, !tbaa !11
  %360 = fcmp oge double %359, 0.000000e+00
  br i1 %360, label %361, label %363

361:                                              ; preds = %358
  %362 = load double, ptr %63, align 8, !tbaa !11
  br label %366

363:                                              ; preds = %358
  %364 = load double, ptr %63, align 8, !tbaa !11
  %365 = fneg double %364
  br label %366

366:                                              ; preds = %363, %361
  %367 = phi double [ %362, %361 ], [ %365, %363 ]
  store double %367, ptr %55, align 8, !tbaa !11
  %368 = load double, ptr %66, align 8, !tbaa !11
  %369 = fcmp oge double %368, 0.000000e+00
  br i1 %369, label %370, label %372

370:                                              ; preds = %366
  %371 = load double, ptr %66, align 8, !tbaa !11
  br label %375

372:                                              ; preds = %366
  %373 = load double, ptr %66, align 8, !tbaa !11
  %374 = fneg double %373
  br label %375

375:                                              ; preds = %372, %370
  %376 = phi double [ %371, %370 ], [ %374, %372 ]
  store double %376, ptr %56, align 8, !tbaa !11
  %377 = load double, ptr %55, align 8, !tbaa !11
  %378 = load double, ptr %56, align 8, !tbaa !11
  %379 = fcmp oge double %377, %378
  br i1 %379, label %380, label %382

380:                                              ; preds = %375
  %381 = load double, ptr %55, align 8, !tbaa !11
  br label %384

382:                                              ; preds = %375
  %383 = load double, ptr %56, align 8, !tbaa !11
  br label %384

384:                                              ; preds = %382, %380
  %385 = phi double [ %381, %380 ], [ %383, %382 ]
  store double %385, ptr %90, align 8, !tbaa !11
  %386 = load double, ptr %63, align 8, !tbaa !11
  %387 = load double, ptr %90, align 8, !tbaa !11
  %388 = fmul double %387, 2.000000e+00
  %389 = load double, ptr %69, align 8, !tbaa !11
  %390 = fmul double %388, %389
  %391 = load ptr, ptr %29, align 8, !tbaa !5
  %392 = load i64, ptr %391, align 8, !tbaa !9
  %393 = sitofp i64 %392 to double
  %394 = fneg double %390
  %395 = call double @llvm.fmuladd.f64(double %394, double %393, double %386)
  %396 = load ptr, ptr %39, align 8, !tbaa !5
  %397 = load double, ptr %396, align 8, !tbaa !11
  %398 = fneg double %397
  %399 = call double @llvm.fmuladd.f64(double %398, double 4.000000e+00, double %395)
  store double %399, ptr %63, align 8, !tbaa !11
  %400 = load double, ptr %66, align 8, !tbaa !11
  %401 = load double, ptr %90, align 8, !tbaa !11
  %402 = fmul double %401, 2.000000e+00
  %403 = load double, ptr %69, align 8, !tbaa !11
  %404 = fmul double %402, %403
  %405 = load ptr, ptr %29, align 8, !tbaa !5
  %406 = load i64, ptr %405, align 8, !tbaa !9
  %407 = sitofp i64 %406 to double
  %408 = call double @llvm.fmuladd.f64(double %404, double %407, double %400)
  %409 = load ptr, ptr %39, align 8, !tbaa !5
  %410 = load double, ptr %409, align 8, !tbaa !11
  %411 = call double @llvm.fmuladd.f64(double %410, double 4.000000e+00, double %408)
  store double %411, ptr %66, align 8, !tbaa !11
  %412 = load ptr, ptr %35, align 8, !tbaa !5
  %413 = load double, ptr %412, align 8, !tbaa !11
  store double %413, ptr %88, align 8, !tbaa !11
  %414 = load double, ptr %89, align 8, !tbaa !11
  %415 = load ptr, ptr %39, align 8, !tbaa !5
  %416 = load double, ptr %415, align 8, !tbaa !11
  %417 = fmul double %416, 4.000000e+00
  %418 = call double @llvm.fmuladd.f64(double %414, double 4.000000e+00, double %417)
  store double %418, ptr %84, align 8, !tbaa !11
  %419 = load i64, ptr %92, align 8, !tbaa !9
  %420 = icmp eq i64 %419, 3
  br i1 %420, label %421, label %618

421:                                              ; preds = %384
  %422 = load double, ptr %90, align 8, !tbaa !11
  %423 = load ptr, ptr %39, align 8, !tbaa !5
  %424 = load double, ptr %423, align 8, !tbaa !11
  %425 = fadd double %422, %424
  %426 = call double @log(double noundef %425) #5
  %427 = load ptr, ptr %39, align 8, !tbaa !5
  %428 = load double, ptr %427, align 8, !tbaa !11
  %429 = call double @log(double noundef %428) #5
  %430 = fsub double %426, %429
  %431 = call double @log(double noundef 2.000000e+00) #5
  %432 = fdiv double %430, %431
  %433 = fptosi double %432 to i64
  %434 = add nsw i64 %433, 2
  store i64 %434, ptr %86, align 8, !tbaa !9
  %435 = load double, ptr %63, align 8, !tbaa !11
  %436 = load ptr, ptr %49, align 8, !tbaa !5
  %437 = load ptr, ptr %29, align 8, !tbaa !5
  %438 = load i64, ptr %437, align 8, !tbaa !9
  %439 = add nsw i64 %438, 1
  %440 = getelementptr inbounds double, ptr %436, i64 %439
  store double %435, ptr %440, align 8, !tbaa !11
  %441 = load double, ptr %63, align 8, !tbaa !11
  %442 = load ptr, ptr %49, align 8, !tbaa !5
  %443 = load ptr, ptr %29, align 8, !tbaa !5
  %444 = load i64, ptr %443, align 8, !tbaa !9
  %445 = add nsw i64 %444, 2
  %446 = getelementptr inbounds double, ptr %442, i64 %445
  store double %441, ptr %446, align 8, !tbaa !11
  %447 = load double, ptr %66, align 8, !tbaa !11
  %448 = load ptr, ptr %49, align 8, !tbaa !5
  %449 = load ptr, ptr %29, align 8, !tbaa !5
  %450 = load i64, ptr %449, align 8, !tbaa !9
  %451 = add nsw i64 %450, 3
  %452 = getelementptr inbounds double, ptr %448, i64 %451
  store double %447, ptr %452, align 8, !tbaa !11
  %453 = load double, ptr %66, align 8, !tbaa !11
  %454 = load ptr, ptr %49, align 8, !tbaa !5
  %455 = load ptr, ptr %29, align 8, !tbaa !5
  %456 = load i64, ptr %455, align 8, !tbaa !9
  %457 = add nsw i64 %456, 4
  %458 = getelementptr inbounds double, ptr %454, i64 %457
  store double %453, ptr %458, align 8, !tbaa !11
  %459 = load double, ptr %63, align 8, !tbaa !11
  %460 = load ptr, ptr %49, align 8, !tbaa !5
  %461 = load ptr, ptr %29, align 8, !tbaa !5
  %462 = load i64, ptr %461, align 8, !tbaa !9
  %463 = add nsw i64 %462, 5
  %464 = getelementptr inbounds double, ptr %460, i64 %463
  store double %459, ptr %464, align 8, !tbaa !11
  %465 = load double, ptr %66, align 8, !tbaa !11
  %466 = load ptr, ptr %49, align 8, !tbaa !5
  %467 = load ptr, ptr %29, align 8, !tbaa !5
  %468 = load i64, ptr %467, align 8, !tbaa !9
  %469 = add nsw i64 %468, 6
  %470 = getelementptr inbounds double, ptr %466, i64 %469
  store double %465, ptr %470, align 8, !tbaa !11
  %471 = load ptr, ptr %50, align 8, !tbaa !5
  %472 = getelementptr inbounds i64, ptr %471, i64 1
  store i64 -1, ptr %472, align 8, !tbaa !9
  %473 = load ptr, ptr %50, align 8, !tbaa !5
  %474 = getelementptr inbounds i64, ptr %473, i64 2
  store i64 -1, ptr %474, align 8, !tbaa !9
  %475 = load ptr, ptr %29, align 8, !tbaa !5
  %476 = load i64, ptr %475, align 8, !tbaa !9
  %477 = add nsw i64 %476, 1
  %478 = load ptr, ptr %50, align 8, !tbaa !5
  %479 = getelementptr inbounds i64, ptr %478, i64 3
  store i64 %477, ptr %479, align 8, !tbaa !9
  %480 = load ptr, ptr %29, align 8, !tbaa !5
  %481 = load i64, ptr %480, align 8, !tbaa !9
  %482 = add nsw i64 %481, 1
  %483 = load ptr, ptr %50, align 8, !tbaa !5
  %484 = getelementptr inbounds i64, ptr %483, i64 4
  store i64 %482, ptr %484, align 8, !tbaa !9
  %485 = load ptr, ptr %32, align 8, !tbaa !5
  %486 = load i64, ptr %485, align 8, !tbaa !9
  %487 = sub nsw i64 %486, 1
  %488 = load ptr, ptr %50, align 8, !tbaa !5
  %489 = getelementptr inbounds i64, ptr %488, i64 5
  store i64 %487, ptr %489, align 8, !tbaa !9
  %490 = load ptr, ptr %33, align 8, !tbaa !5
  %491 = load i64, ptr %490, align 8, !tbaa !9
  %492 = load ptr, ptr %50, align 8, !tbaa !5
  %493 = getelementptr inbounds i64, ptr %492, i64 6
  store i64 %491, ptr %493, align 8, !tbaa !9
  %494 = load ptr, ptr %29, align 8, !tbaa !5
  %495 = load ptr, ptr %39, align 8, !tbaa !5
  %496 = load ptr, ptr %36, align 8, !tbaa !5
  %497 = getelementptr inbounds double, ptr %496, i64 1
  %498 = load ptr, ptr %37, align 8, !tbaa !5
  %499 = getelementptr inbounds double, ptr %498, i64 1
  %500 = load ptr, ptr %38, align 8, !tbaa !5
  %501 = getelementptr inbounds double, ptr %500, i64 1
  %502 = load ptr, ptr %50, align 8, !tbaa !5
  %503 = getelementptr inbounds i64, ptr %502, i64 5
  %504 = load ptr, ptr %49, align 8, !tbaa !5
  %505 = load ptr, ptr %29, align 8, !tbaa !5
  %506 = load i64, ptr %505, align 8, !tbaa !9
  %507 = add nsw i64 %506, 1
  %508 = getelementptr inbounds double, ptr %504, i64 %507
  %509 = load ptr, ptr %49, align 8, !tbaa !5
  %510 = load ptr, ptr %29, align 8, !tbaa !5
  %511 = load i64, ptr %510, align 8, !tbaa !9
  %512 = add nsw i64 %511, 5
  %513 = getelementptr inbounds double, ptr %509, i64 %512
  %514 = load ptr, ptr %50, align 8, !tbaa !5
  %515 = getelementptr inbounds i64, ptr %514, i64 1
  %516 = load ptr, ptr %43, align 8, !tbaa !5
  %517 = getelementptr inbounds double, ptr %516, i64 1
  %518 = load ptr, ptr %47, align 8, !tbaa !5
  %519 = getelementptr inbounds i64, ptr %518, i64 1
  %520 = call i32 @dlaebz_(ptr noundef @c__3, ptr noundef %86, ptr noundef %494, ptr noundef @c__2, ptr noundef @c__2, ptr noundef %62, ptr noundef %84, ptr noundef %88, ptr noundef %495, ptr noundef %497, ptr noundef %499, ptr noundef %501, ptr noundef %503, ptr noundef %508, ptr noundef %513, ptr noundef %79, ptr noundef %515, ptr noundef %517, ptr noundef %519, ptr noundef %83)
  %521 = load i64, ptr %83, align 8, !tbaa !9
  %522 = icmp ne i64 %521, 0
  br i1 %522, label %523, label %526

523:                                              ; preds = %421
  %524 = load i64, ptr %83, align 8, !tbaa !9
  %525 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 %524, ptr %525, align 8, !tbaa !9
  store i32 0, ptr %26, align 4
  store i32 1, ptr %98, align 4
  br label %1608

526:                                              ; preds = %421
  %527 = load ptr, ptr %50, align 8, !tbaa !5
  %528 = getelementptr inbounds i64, ptr %527, i64 6
  %529 = load i64, ptr %528, align 8, !tbaa !9
  %530 = load ptr, ptr %33, align 8, !tbaa !5
  %531 = load i64, ptr %530, align 8, !tbaa !9
  %532 = icmp eq i64 %529, %531
  br i1 %532, label %533, label %566

533:                                              ; preds = %526
  %534 = load ptr, ptr %49, align 8, !tbaa !5
  %535 = load ptr, ptr %29, align 8, !tbaa !5
  %536 = load i64, ptr %535, align 8, !tbaa !9
  %537 = add nsw i64 %536, 1
  %538 = getelementptr inbounds double, ptr %534, i64 %537
  %539 = load double, ptr %538, align 8, !tbaa !11
  %540 = load ptr, ptr %45, align 8, !tbaa !5
  store double %539, ptr %540, align 8, !tbaa !11
  %541 = load ptr, ptr %49, align 8, !tbaa !5
  %542 = load ptr, ptr %29, align 8, !tbaa !5
  %543 = load i64, ptr %542, align 8, !tbaa !9
  %544 = add nsw i64 %543, 3
  %545 = getelementptr inbounds double, ptr %541, i64 %544
  %546 = load double, ptr %545, align 8, !tbaa !11
  store double %546, ptr %71, align 8, !tbaa !11
  %547 = load ptr, ptr %50, align 8, !tbaa !5
  %548 = getelementptr inbounds i64, ptr %547, i64 1
  %549 = load i64, ptr %548, align 8, !tbaa !9
  store i64 %549, ptr %70, align 8, !tbaa !9
  %550 = load ptr, ptr %49, align 8, !tbaa !5
  %551 = load ptr, ptr %29, align 8, !tbaa !5
  %552 = load i64, ptr %551, align 8, !tbaa !9
  %553 = add nsw i64 %552, 4
  %554 = getelementptr inbounds double, ptr %550, i64 %553
  %555 = load double, ptr %554, align 8, !tbaa !11
  %556 = load ptr, ptr %46, align 8, !tbaa !5
  store double %555, ptr %556, align 8, !tbaa !11
  %557 = load ptr, ptr %49, align 8, !tbaa !5
  %558 = load ptr, ptr %29, align 8, !tbaa !5
  %559 = load i64, ptr %558, align 8, !tbaa !9
  %560 = add nsw i64 %559, 2
  %561 = getelementptr inbounds double, ptr %557, i64 %560
  %562 = load double, ptr %561, align 8, !tbaa !11
  store double %562, ptr %72, align 8, !tbaa !11
  %563 = load ptr, ptr %50, align 8, !tbaa !5
  %564 = getelementptr inbounds i64, ptr %563, i64 4
  %565 = load i64, ptr %564, align 8, !tbaa !9
  store i64 %565, ptr %73, align 8, !tbaa !9
  br label %599

566:                                              ; preds = %526
  %567 = load ptr, ptr %49, align 8, !tbaa !5
  %568 = load ptr, ptr %29, align 8, !tbaa !5
  %569 = load i64, ptr %568, align 8, !tbaa !9
  %570 = add nsw i64 %569, 2
  %571 = getelementptr inbounds double, ptr %567, i64 %570
  %572 = load double, ptr %571, align 8, !tbaa !11
  %573 = load ptr, ptr %45, align 8, !tbaa !5
  store double %572, ptr %573, align 8, !tbaa !11
  %574 = load ptr, ptr %49, align 8, !tbaa !5
  %575 = load ptr, ptr %29, align 8, !tbaa !5
  %576 = load i64, ptr %575, align 8, !tbaa !9
  %577 = add nsw i64 %576, 4
  %578 = getelementptr inbounds double, ptr %574, i64 %577
  %579 = load double, ptr %578, align 8, !tbaa !11
  store double %579, ptr %71, align 8, !tbaa !11
  %580 = load ptr, ptr %50, align 8, !tbaa !5
  %581 = getelementptr inbounds i64, ptr %580, i64 2
  %582 = load i64, ptr %581, align 8, !tbaa !9
  store i64 %582, ptr %70, align 8, !tbaa !9
  %583 = load ptr, ptr %49, align 8, !tbaa !5
  %584 = load ptr, ptr %29, align 8, !tbaa !5
  %585 = load i64, ptr %584, align 8, !tbaa !9
  %586 = add nsw i64 %585, 3
  %587 = getelementptr inbounds double, ptr %583, i64 %586
  %588 = load double, ptr %587, align 8, !tbaa !11
  %589 = load ptr, ptr %46, align 8, !tbaa !5
  store double %588, ptr %589, align 8, !tbaa !11
  %590 = load ptr, ptr %49, align 8, !tbaa !5
  %591 = load ptr, ptr %29, align 8, !tbaa !5
  %592 = load i64, ptr %591, align 8, !tbaa !9
  %593 = add nsw i64 %592, 1
  %594 = getelementptr inbounds double, ptr %590, i64 %593
  %595 = load double, ptr %594, align 8, !tbaa !11
  store double %595, ptr %72, align 8, !tbaa !11
  %596 = load ptr, ptr %50, align 8, !tbaa !5
  %597 = getelementptr inbounds i64, ptr %596, i64 3
  %598 = load i64, ptr %597, align 8, !tbaa !9
  store i64 %598, ptr %73, align 8, !tbaa !9
  br label %599

599:                                              ; preds = %566, %533
  %600 = load i64, ptr %70, align 8, !tbaa !9
  %601 = icmp slt i64 %600, 0
  br i1 %601, label %615, label %602

602:                                              ; preds = %599
  %603 = load i64, ptr %70, align 8, !tbaa !9
  %604 = load ptr, ptr %29, align 8, !tbaa !5
  %605 = load i64, ptr %604, align 8, !tbaa !9
  %606 = icmp sge i64 %603, %605
  br i1 %606, label %615, label %607

607:                                              ; preds = %602
  %608 = load i64, ptr %73, align 8, !tbaa !9
  %609 = icmp slt i64 %608, 1
  br i1 %609, label %615, label %610

610:                                              ; preds = %607
  %611 = load i64, ptr %73, align 8, !tbaa !9
  %612 = load ptr, ptr %29, align 8, !tbaa !5
  %613 = load i64, ptr %612, align 8, !tbaa !9
  %614 = icmp sgt i64 %611, %613
  br i1 %614, label %615, label %617

615:                                              ; preds = %610, %607, %602, %599
  %616 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 4, ptr %616, align 8, !tbaa !9
  store i32 0, ptr %26, align 4
  store i32 1, ptr %98, align 4
  br label %1608

617:                                              ; preds = %610
  br label %638

618:                                              ; preds = %384
  %619 = load i64, ptr %92, align 8, !tbaa !9
  %620 = icmp eq i64 %619, 2
  br i1 %620, label %621, label %628

621:                                              ; preds = %618
  %622 = load ptr, ptr %30, align 8, !tbaa !5
  %623 = load double, ptr %622, align 8, !tbaa !11
  %624 = load ptr, ptr %45, align 8, !tbaa !5
  store double %623, ptr %624, align 8, !tbaa !11
  %625 = load ptr, ptr %31, align 8, !tbaa !5
  %626 = load double, ptr %625, align 8, !tbaa !11
  %627 = load ptr, ptr %46, align 8, !tbaa !5
  store double %626, ptr %627, align 8, !tbaa !11
  br label %637

628:                                              ; preds = %618
  %629 = load i64, ptr %92, align 8, !tbaa !9
  %630 = icmp eq i64 %629, 1
  br i1 %630, label %631, label %636

631:                                              ; preds = %628
  %632 = load double, ptr %63, align 8, !tbaa !11
  %633 = load ptr, ptr %45, align 8, !tbaa !5
  store double %632, ptr %633, align 8, !tbaa !11
  %634 = load double, ptr %66, align 8, !tbaa !11
  %635 = load ptr, ptr %46, align 8, !tbaa !5
  store double %634, ptr %635, align 8, !tbaa !11
  br label %636

636:                                              ; preds = %631, %628
  br label %637

637:                                              ; preds = %636, %621
  br label %638

638:                                              ; preds = %637, %617
  %639 = load ptr, ptr %42, align 8, !tbaa !5
  store i64 0, ptr %639, align 8, !tbaa !9
  store i64 0, ptr %76, align 8, !tbaa !9
  %640 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 0, ptr %640, align 8, !tbaa !9
  store i64 0, ptr %70, align 8, !tbaa !9
  store i64 0, ptr %73, align 8, !tbaa !9
  %641 = load ptr, ptr %40, align 8, !tbaa !5
  %642 = load i64, ptr %641, align 8, !tbaa !9
  store i64 %642, ptr %52, align 8, !tbaa !9
  store i64 1, ptr %77, align 8, !tbaa !9
  br label %643

643:                                              ; preds = %1104, %638
  %644 = load i64, ptr %77, align 8, !tbaa !9
  %645 = load i64, ptr %52, align 8, !tbaa !9
  %646 = icmp sle i64 %644, %645
  br i1 %646, label %647, label %1107

647:                                              ; preds = %643
  %648 = load i64, ptr %76, align 8, !tbaa !9
  store i64 %648, ptr %78, align 8, !tbaa !9
  %649 = load i64, ptr %78, align 8, !tbaa !9
  %650 = add nsw i64 %649, 1
  store i64 %650, ptr %91, align 8, !tbaa !9
  %651 = load ptr, ptr %41, align 8, !tbaa !5
  %652 = load i64, ptr %77, align 8, !tbaa !9
  %653 = getelementptr inbounds i64, ptr %651, i64 %652
  %654 = load i64, ptr %653, align 8, !tbaa !9
  store i64 %654, ptr %76, align 8, !tbaa !9
  %655 = load i64, ptr %76, align 8, !tbaa !9
  %656 = load i64, ptr %78, align 8, !tbaa !9
  %657 = sub nsw i64 %655, %656
  store i64 %657, ptr %65, align 8, !tbaa !9
  %658 = load i64, ptr %65, align 8, !tbaa !9
  %659 = icmp eq i64 %658, 1
  br i1 %659, label %660, label %739

660:                                              ; preds = %647
  %661 = load ptr, ptr %45, align 8, !tbaa !5
  %662 = load double, ptr %661, align 8, !tbaa !11
  %663 = load ptr, ptr %36, align 8, !tbaa !5
  %664 = load i64, ptr %91, align 8, !tbaa !9
  %665 = getelementptr inbounds double, ptr %663, i64 %664
  %666 = load double, ptr %665, align 8, !tbaa !11
  %667 = load ptr, ptr %39, align 8, !tbaa !5
  %668 = load double, ptr %667, align 8, !tbaa !11
  %669 = fsub double %666, %668
  %670 = fcmp oge double %662, %669
  br i1 %670, label %671, label %674

671:                                              ; preds = %660
  %672 = load i64, ptr %70, align 8, !tbaa !9
  %673 = add nsw i64 %672, 1
  store i64 %673, ptr %70, align 8, !tbaa !9
  br label %674

674:                                              ; preds = %671, %660
  %675 = load ptr, ptr %46, align 8, !tbaa !5
  %676 = load double, ptr %675, align 8, !tbaa !11
  %677 = load ptr, ptr %36, align 8, !tbaa !5
  %678 = load i64, ptr %91, align 8, !tbaa !9
  %679 = getelementptr inbounds double, ptr %677, i64 %678
  %680 = load double, ptr %679, align 8, !tbaa !11
  %681 = load ptr, ptr %39, align 8, !tbaa !5
  %682 = load double, ptr %681, align 8, !tbaa !11
  %683 = fsub double %680, %682
  %684 = fcmp oge double %676, %683
  br i1 %684, label %685, label %688

685:                                              ; preds = %674
  %686 = load i64, ptr %73, align 8, !tbaa !9
  %687 = add nsw i64 %686, 1
  store i64 %687, ptr %73, align 8, !tbaa !9
  br label %688

688:                                              ; preds = %685, %674
  %689 = load i64, ptr %92, align 8, !tbaa !9
  %690 = icmp eq i64 %689, 1
  br i1 %690, label %713, label %691

691:                                              ; preds = %688
  %692 = load ptr, ptr %45, align 8, !tbaa !5
  %693 = load double, ptr %692, align 8, !tbaa !11
  %694 = load ptr, ptr %36, align 8, !tbaa !5
  %695 = load i64, ptr %91, align 8, !tbaa !9
  %696 = getelementptr inbounds double, ptr %694, i64 %695
  %697 = load double, ptr %696, align 8, !tbaa !11
  %698 = load ptr, ptr %39, align 8, !tbaa !5
  %699 = load double, ptr %698, align 8, !tbaa !11
  %700 = fsub double %697, %699
  %701 = fcmp olt double %693, %700
  br i1 %701, label %702, label %738

702:                                              ; preds = %691
  %703 = load ptr, ptr %46, align 8, !tbaa !5
  %704 = load double, ptr %703, align 8, !tbaa !11
  %705 = load ptr, ptr %36, align 8, !tbaa !5
  %706 = load i64, ptr %91, align 8, !tbaa !9
  %707 = getelementptr inbounds double, ptr %705, i64 %706
  %708 = load double, ptr %707, align 8, !tbaa !11
  %709 = load ptr, ptr %39, align 8, !tbaa !5
  %710 = load double, ptr %709, align 8, !tbaa !11
  %711 = fsub double %708, %710
  %712 = fcmp oge double %704, %711
  br i1 %712, label %713, label %738

713:                                              ; preds = %702, %688
  %714 = load ptr, ptr %42, align 8, !tbaa !5
  %715 = load i64, ptr %714, align 8, !tbaa !9
  %716 = add nsw i64 %715, 1
  store i64 %716, ptr %714, align 8, !tbaa !9
  %717 = load ptr, ptr %36, align 8, !tbaa !5
  %718 = load i64, ptr %91, align 8, !tbaa !9
  %719 = getelementptr inbounds double, ptr %717, i64 %718
  %720 = load double, ptr %719, align 8, !tbaa !11
  %721 = load ptr, ptr %43, align 8, !tbaa !5
  %722 = load ptr, ptr %42, align 8, !tbaa !5
  %723 = load i64, ptr %722, align 8, !tbaa !9
  %724 = getelementptr inbounds double, ptr %721, i64 %723
  store double %720, ptr %724, align 8, !tbaa !11
  %725 = load ptr, ptr %44, align 8, !tbaa !5
  %726 = load ptr, ptr %42, align 8, !tbaa !5
  %727 = load i64, ptr %726, align 8, !tbaa !9
  %728 = getelementptr inbounds double, ptr %725, i64 %727
  store double 0.000000e+00, ptr %728, align 8, !tbaa !11
  %729 = load i64, ptr %77, align 8, !tbaa !9
  %730 = load ptr, ptr %47, align 8, !tbaa !5
  %731 = load ptr, ptr %42, align 8, !tbaa !5
  %732 = load i64, ptr %731, align 8, !tbaa !9
  %733 = getelementptr inbounds i64, ptr %730, i64 %732
  store i64 %729, ptr %733, align 8, !tbaa !9
  %734 = load ptr, ptr %48, align 8, !tbaa !5
  %735 = load ptr, ptr %42, align 8, !tbaa !5
  %736 = load i64, ptr %735, align 8, !tbaa !9
  %737 = getelementptr inbounds i64, ptr %734, i64 %736
  store i64 1, ptr %737, align 8, !tbaa !9
  br label %738

738:                                              ; preds = %713, %702, %691
  br label %1102

739:                                              ; preds = %647
  %740 = load ptr, ptr %36, align 8, !tbaa !5
  %741 = load i64, ptr %91, align 8, !tbaa !9
  %742 = getelementptr inbounds double, ptr %740, i64 %741
  %743 = load double, ptr %742, align 8, !tbaa !11
  store double %743, ptr %66, align 8, !tbaa !11
  %744 = load ptr, ptr %36, align 8, !tbaa !5
  %745 = load i64, ptr %91, align 8, !tbaa !9
  %746 = getelementptr inbounds double, ptr %744, i64 %745
  %747 = load double, ptr %746, align 8, !tbaa !11
  store double %747, ptr %63, align 8, !tbaa !11
  store double 0.000000e+00, ptr %74, align 8, !tbaa !11
  %748 = load i64, ptr %76, align 8, !tbaa !9
  store i64 %748, ptr %53, align 8, !tbaa !9
  %749 = load i64, ptr %91, align 8, !tbaa !9
  store i64 %749, ptr %58, align 8, !tbaa !9
  br label %750

750:                                              ; preds = %786, %739
  %751 = load i64, ptr %58, align 8, !tbaa !9
  %752 = load i64, ptr %53, align 8, !tbaa !9
  %753 = icmp sle i64 %751, %752
  br i1 %753, label %754, label %789

754:                                              ; preds = %750
  %755 = load double, ptr %63, align 8, !tbaa !11
  store double %755, ptr %55, align 8, !tbaa !11
  %756 = load ptr, ptr %34, align 8, !tbaa !5
  %757 = load i64, ptr %58, align 8, !tbaa !9
  %758 = shl i64 %757, 1
  %759 = sub nsw i64 %758, 1
  %760 = getelementptr inbounds double, ptr %756, i64 %759
  %761 = load double, ptr %760, align 8, !tbaa !11
  store double %761, ptr %56, align 8, !tbaa !11
  %762 = load double, ptr %55, align 8, !tbaa !11
  %763 = load double, ptr %56, align 8, !tbaa !11
  %764 = fcmp ole double %762, %763
  br i1 %764, label %765, label %767

765:                                              ; preds = %754
  %766 = load double, ptr %55, align 8, !tbaa !11
  br label %769

767:                                              ; preds = %754
  %768 = load double, ptr %56, align 8, !tbaa !11
  br label %769

769:                                              ; preds = %767, %765
  %770 = phi double [ %766, %765 ], [ %768, %767 ]
  store double %770, ptr %63, align 8, !tbaa !11
  %771 = load double, ptr %66, align 8, !tbaa !11
  store double %771, ptr %55, align 8, !tbaa !11
  %772 = load ptr, ptr %34, align 8, !tbaa !5
  %773 = load i64, ptr %58, align 8, !tbaa !9
  %774 = mul nsw i64 %773, 2
  %775 = getelementptr inbounds double, ptr %772, i64 %774
  %776 = load double, ptr %775, align 8, !tbaa !11
  store double %776, ptr %56, align 8, !tbaa !11
  %777 = load double, ptr %55, align 8, !tbaa !11
  %778 = load double, ptr %56, align 8, !tbaa !11
  %779 = fcmp oge double %777, %778
  br i1 %779, label %780, label %782

780:                                              ; preds = %769
  %781 = load double, ptr %55, align 8, !tbaa !11
  br label %784

782:                                              ; preds = %769
  %783 = load double, ptr %56, align 8, !tbaa !11
  br label %784

784:                                              ; preds = %782, %780
  %785 = phi double [ %781, %780 ], [ %783, %782 ]
  store double %785, ptr %66, align 8, !tbaa !11
  br label %786

786:                                              ; preds = %784
  %787 = load i64, ptr %58, align 8, !tbaa !9
  %788 = add nsw i64 %787, 1
  store i64 %788, ptr %58, align 8, !tbaa !9
  br label %750, !llvm.loop !15

789:                                              ; preds = %750
  %790 = load double, ptr %63, align 8, !tbaa !11
  %791 = load double, ptr %90, align 8, !tbaa !11
  %792 = fmul double %791, 2.000000e+00
  %793 = load double, ptr %69, align 8, !tbaa !11
  %794 = fmul double %792, %793
  %795 = load i64, ptr %65, align 8, !tbaa !9
  %796 = sitofp i64 %795 to double
  %797 = fneg double %794
  %798 = call double @llvm.fmuladd.f64(double %797, double %796, double %790)
  %799 = load ptr, ptr %39, align 8, !tbaa !5
  %800 = load double, ptr %799, align 8, !tbaa !11
  %801 = fneg double %800
  %802 = call double @llvm.fmuladd.f64(double %801, double 2.000000e+00, double %798)
  store double %802, ptr %63, align 8, !tbaa !11
  %803 = load double, ptr %66, align 8, !tbaa !11
  %804 = load double, ptr %90, align 8, !tbaa !11
  %805 = fmul double %804, 2.000000e+00
  %806 = load double, ptr %69, align 8, !tbaa !11
  %807 = fmul double %805, %806
  %808 = load i64, ptr %65, align 8, !tbaa !9
  %809 = sitofp i64 %808 to double
  %810 = call double @llvm.fmuladd.f64(double %807, double %809, double %803)
  %811 = load ptr, ptr %39, align 8, !tbaa !5
  %812 = load double, ptr %811, align 8, !tbaa !11
  %813 = call double @llvm.fmuladd.f64(double %812, double 2.000000e+00, double %810)
  store double %813, ptr %66, align 8, !tbaa !11
  %814 = load i64, ptr %92, align 8, !tbaa !9
  %815 = icmp sgt i64 %814, 1
  br i1 %815, label %816, label %856

816:                                              ; preds = %789
  %817 = load double, ptr %66, align 8, !tbaa !11
  %818 = load ptr, ptr %45, align 8, !tbaa !5
  %819 = load double, ptr %818, align 8, !tbaa !11
  %820 = fcmp olt double %817, %819
  br i1 %820, label %821, label %828

821:                                              ; preds = %816
  %822 = load i64, ptr %65, align 8, !tbaa !9
  %823 = load i64, ptr %70, align 8, !tbaa !9
  %824 = add nsw i64 %823, %822
  store i64 %824, ptr %70, align 8, !tbaa !9
  %825 = load i64, ptr %65, align 8, !tbaa !9
  %826 = load i64, ptr %73, align 8, !tbaa !9
  %827 = add nsw i64 %826, %825
  store i64 %827, ptr %73, align 8, !tbaa !9
  br label %1103

828:                                              ; preds = %816
  %829 = load double, ptr %63, align 8, !tbaa !11
  %830 = load ptr, ptr %45, align 8, !tbaa !5
  %831 = load double, ptr %830, align 8, !tbaa !11
  %832 = fcmp oge double %829, %831
  br i1 %832, label %833, label %835

833:                                              ; preds = %828
  %834 = load double, ptr %63, align 8, !tbaa !11
  br label %838

835:                                              ; preds = %828
  %836 = load ptr, ptr %45, align 8, !tbaa !5
  %837 = load double, ptr %836, align 8, !tbaa !11
  br label %838

838:                                              ; preds = %835, %833
  %839 = phi double [ %834, %833 ], [ %837, %835 ]
  store double %839, ptr %63, align 8, !tbaa !11
  %840 = load double, ptr %66, align 8, !tbaa !11
  %841 = load ptr, ptr %46, align 8, !tbaa !5
  %842 = load double, ptr %841, align 8, !tbaa !11
  %843 = fcmp ole double %840, %842
  br i1 %843, label %844, label %846

844:                                              ; preds = %838
  %845 = load double, ptr %66, align 8, !tbaa !11
  br label %849

846:                                              ; preds = %838
  %847 = load ptr, ptr %46, align 8, !tbaa !5
  %848 = load double, ptr %847, align 8, !tbaa !11
  br label %849

849:                                              ; preds = %846, %844
  %850 = phi double [ %845, %844 ], [ %848, %846 ]
  store double %850, ptr %66, align 8, !tbaa !11
  %851 = load double, ptr %63, align 8, !tbaa !11
  %852 = load double, ptr %66, align 8, !tbaa !11
  %853 = fcmp oge double %851, %852
  br i1 %853, label %854, label %855

854:                                              ; preds = %849
  br label %1103

855:                                              ; preds = %849
  br label %856

856:                                              ; preds = %855, %789
  %857 = load double, ptr %63, align 8, !tbaa !11
  %858 = load ptr, ptr %49, align 8, !tbaa !5
  %859 = load ptr, ptr %29, align 8, !tbaa !5
  %860 = load i64, ptr %859, align 8, !tbaa !9
  %861 = add nsw i64 %860, 1
  %862 = getelementptr inbounds double, ptr %858, i64 %861
  store double %857, ptr %862, align 8, !tbaa !11
  %863 = load double, ptr %66, align 8, !tbaa !11
  %864 = load ptr, ptr %49, align 8, !tbaa !5
  %865 = load ptr, ptr %29, align 8, !tbaa !5
  %866 = load i64, ptr %865, align 8, !tbaa !9
  %867 = load i64, ptr %65, align 8, !tbaa !9
  %868 = add nsw i64 %866, %867
  %869 = add nsw i64 %868, 1
  %870 = getelementptr inbounds double, ptr %864, i64 %869
  store double %863, ptr %870, align 8, !tbaa !11
  %871 = load ptr, ptr %39, align 8, !tbaa !5
  %872 = load ptr, ptr %36, align 8, !tbaa !5
  %873 = load i64, ptr %91, align 8, !tbaa !9
  %874 = getelementptr inbounds double, ptr %872, i64 %873
  %875 = load ptr, ptr %37, align 8, !tbaa !5
  %876 = load i64, ptr %91, align 8, !tbaa !9
  %877 = getelementptr inbounds double, ptr %875, i64 %876
  %878 = load ptr, ptr %38, align 8, !tbaa !5
  %879 = load i64, ptr %91, align 8, !tbaa !9
  %880 = getelementptr inbounds double, ptr %878, i64 %879
  %881 = getelementptr inbounds [1 x i64], ptr %94, i64 0, i64 0
  %882 = load ptr, ptr %49, align 8, !tbaa !5
  %883 = load ptr, ptr %29, align 8, !tbaa !5
  %884 = load i64, ptr %883, align 8, !tbaa !9
  %885 = add nsw i64 %884, 1
  %886 = getelementptr inbounds double, ptr %882, i64 %885
  %887 = load ptr, ptr %49, align 8, !tbaa !5
  %888 = load ptr, ptr %29, align 8, !tbaa !5
  %889 = load i64, ptr %888, align 8, !tbaa !9
  %890 = load i64, ptr %65, align 8, !tbaa !9
  %891 = shl i64 %890, 1
  %892 = add nsw i64 %889, %891
  %893 = add nsw i64 %892, 1
  %894 = getelementptr inbounds double, ptr %887, i64 %893
  %895 = load ptr, ptr %50, align 8, !tbaa !5
  %896 = getelementptr inbounds i64, ptr %895, i64 1
  %897 = load ptr, ptr %43, align 8, !tbaa !5
  %898 = load ptr, ptr %42, align 8, !tbaa !5
  %899 = load i64, ptr %898, align 8, !tbaa !9
  %900 = add nsw i64 %899, 1
  %901 = getelementptr inbounds double, ptr %897, i64 %900
  %902 = load ptr, ptr %47, align 8, !tbaa !5
  %903 = load ptr, ptr %42, align 8, !tbaa !5
  %904 = load i64, ptr %903, align 8, !tbaa !9
  %905 = add nsw i64 %904, 1
  %906 = getelementptr inbounds i64, ptr %902, i64 %905
  %907 = call i32 @dlaebz_(ptr noundef @c__1, ptr noundef @c__0, ptr noundef %65, ptr noundef %65, ptr noundef @c__1, ptr noundef %62, ptr noundef %84, ptr noundef %88, ptr noundef %871, ptr noundef %874, ptr noundef %877, ptr noundef %880, ptr noundef %881, ptr noundef %886, ptr noundef %894, ptr noundef %64, ptr noundef %896, ptr noundef %901, ptr noundef %906, ptr noundef %83)
  %908 = load i64, ptr %83, align 8, !tbaa !9
  %909 = icmp ne i64 %908, 0
  br i1 %909, label %910, label %913

910:                                              ; preds = %856
  %911 = load i64, ptr %83, align 8, !tbaa !9
  %912 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 %911, ptr %912, align 8, !tbaa !9
  store i32 0, ptr %26, align 4
  store i32 1, ptr %98, align 4
  br label %1608

913:                                              ; preds = %856
  %914 = load ptr, ptr %50, align 8, !tbaa !5
  %915 = getelementptr inbounds i64, ptr %914, i64 1
  %916 = load i64, ptr %915, align 8, !tbaa !9
  %917 = load i64, ptr %70, align 8, !tbaa !9
  %918 = add nsw i64 %917, %916
  store i64 %918, ptr %70, align 8, !tbaa !9
  %919 = load ptr, ptr %50, align 8, !tbaa !5
  %920 = load i64, ptr %65, align 8, !tbaa !9
  %921 = add nsw i64 %920, 1
  %922 = getelementptr inbounds i64, ptr %919, i64 %921
  %923 = load i64, ptr %922, align 8, !tbaa !9
  %924 = load i64, ptr %73, align 8, !tbaa !9
  %925 = add nsw i64 %924, %923
  store i64 %925, ptr %73, align 8, !tbaa !9
  %926 = load ptr, ptr %42, align 8, !tbaa !5
  %927 = load i64, ptr %926, align 8, !tbaa !9
  %928 = load ptr, ptr %50, align 8, !tbaa !5
  %929 = getelementptr inbounds i64, ptr %928, i64 1
  %930 = load i64, ptr %929, align 8, !tbaa !9
  %931 = sub nsw i64 %927, %930
  store i64 %931, ptr %85, align 8, !tbaa !9
  %932 = load double, ptr %66, align 8, !tbaa !11
  %933 = load double, ptr %63, align 8, !tbaa !11
  %934 = fsub double %932, %933
  %935 = load ptr, ptr %39, align 8, !tbaa !5
  %936 = load double, ptr %935, align 8, !tbaa !11
  %937 = fadd double %934, %936
  %938 = call double @log(double noundef %937) #5
  %939 = load ptr, ptr %39, align 8, !tbaa !5
  %940 = load double, ptr %939, align 8, !tbaa !11
  %941 = call double @log(double noundef %940) #5
  %942 = fsub double %938, %941
  %943 = call double @log(double noundef 2.000000e+00) #5
  %944 = fdiv double %942, %943
  %945 = fptosi double %944 to i64
  %946 = add nsw i64 %945, 2
  store i64 %946, ptr %86, align 8, !tbaa !9
  %947 = load ptr, ptr %39, align 8, !tbaa !5
  %948 = load ptr, ptr %36, align 8, !tbaa !5
  %949 = load i64, ptr %91, align 8, !tbaa !9
  %950 = getelementptr inbounds double, ptr %948, i64 %949
  %951 = load ptr, ptr %37, align 8, !tbaa !5
  %952 = load i64, ptr %91, align 8, !tbaa !9
  %953 = getelementptr inbounds double, ptr %951, i64 %952
  %954 = load ptr, ptr %38, align 8, !tbaa !5
  %955 = load i64, ptr %91, align 8, !tbaa !9
  %956 = getelementptr inbounds double, ptr %954, i64 %955
  %957 = getelementptr inbounds [1 x i64], ptr %94, i64 0, i64 0
  %958 = load ptr, ptr %49, align 8, !tbaa !5
  %959 = load ptr, ptr %29, align 8, !tbaa !5
  %960 = load i64, ptr %959, align 8, !tbaa !9
  %961 = add nsw i64 %960, 1
  %962 = getelementptr inbounds double, ptr %958, i64 %961
  %963 = load ptr, ptr %49, align 8, !tbaa !5
  %964 = load ptr, ptr %29, align 8, !tbaa !5
  %965 = load i64, ptr %964, align 8, !tbaa !9
  %966 = load i64, ptr %65, align 8, !tbaa !9
  %967 = shl i64 %966, 1
  %968 = add nsw i64 %965, %967
  %969 = add nsw i64 %968, 1
  %970 = getelementptr inbounds double, ptr %963, i64 %969
  %971 = load ptr, ptr %50, align 8, !tbaa !5
  %972 = getelementptr inbounds i64, ptr %971, i64 1
  %973 = load ptr, ptr %43, align 8, !tbaa !5
  %974 = load ptr, ptr %42, align 8, !tbaa !5
  %975 = load i64, ptr %974, align 8, !tbaa !9
  %976 = add nsw i64 %975, 1
  %977 = getelementptr inbounds double, ptr %973, i64 %976
  %978 = load ptr, ptr %47, align 8, !tbaa !5
  %979 = load ptr, ptr %42, align 8, !tbaa !5
  %980 = load i64, ptr %979, align 8, !tbaa !9
  %981 = add nsw i64 %980, 1
  %982 = getelementptr inbounds i64, ptr %978, i64 %981
  %983 = call i32 @dlaebz_(ptr noundef @c__2, ptr noundef %86, ptr noundef %65, ptr noundef %65, ptr noundef @c__1, ptr noundef %62, ptr noundef %84, ptr noundef %88, ptr noundef %947, ptr noundef %950, ptr noundef %953, ptr noundef %956, ptr noundef %957, ptr noundef %962, ptr noundef %970, ptr noundef %79, ptr noundef %972, ptr noundef %977, ptr noundef %982, ptr noundef %83)
  %984 = load i64, ptr %83, align 8, !tbaa !9
  %985 = icmp ne i64 %984, 0
  br i1 %985, label %986, label %989

986:                                              ; preds = %913
  %987 = load i64, ptr %83, align 8, !tbaa !9
  %988 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 %987, ptr %988, align 8, !tbaa !9
  store i32 0, ptr %26, align 4
  store i32 1, ptr %98, align 4
  br label %1608

989:                                              ; preds = %913
  %990 = load i64, ptr %79, align 8, !tbaa !9
  store i64 %990, ptr %53, align 8, !tbaa !9
  store i64 1, ptr %58, align 8, !tbaa !9
  br label %991

991:                                              ; preds = %1094, %989
  %992 = load i64, ptr %58, align 8, !tbaa !9
  %993 = load i64, ptr %53, align 8, !tbaa !9
  %994 = icmp sle i64 %992, %993
  br i1 %994, label %995, label %1097

995:                                              ; preds = %991
  %996 = load ptr, ptr %49, align 8, !tbaa !5
  %997 = load i64, ptr %58, align 8, !tbaa !9
  %998 = load ptr, ptr %29, align 8, !tbaa !5
  %999 = load i64, ptr %998, align 8, !tbaa !9
  %1000 = add nsw i64 %997, %999
  %1001 = getelementptr inbounds double, ptr %996, i64 %1000
  %1002 = load double, ptr %1001, align 8, !tbaa !11
  %1003 = load ptr, ptr %49, align 8, !tbaa !5
  %1004 = load i64, ptr %58, align 8, !tbaa !9
  %1005 = load i64, ptr %65, align 8, !tbaa !9
  %1006 = add nsw i64 %1004, %1005
  %1007 = load ptr, ptr %29, align 8, !tbaa !5
  %1008 = load i64, ptr %1007, align 8, !tbaa !9
  %1009 = add nsw i64 %1006, %1008
  %1010 = getelementptr inbounds double, ptr %1003, i64 %1009
  %1011 = load double, ptr %1010, align 8, !tbaa !11
  %1012 = fadd double %1002, %1011
  %1013 = fmul double %1012, 5.000000e-01
  store double %1013, ptr %74, align 8, !tbaa !11
  %1014 = load ptr, ptr %49, align 8, !tbaa !5
  %1015 = load i64, ptr %58, align 8, !tbaa !9
  %1016 = load ptr, ptr %29, align 8, !tbaa !5
  %1017 = load i64, ptr %1016, align 8, !tbaa !9
  %1018 = add nsw i64 %1015, %1017
  %1019 = getelementptr inbounds double, ptr %1014, i64 %1018
  %1020 = load double, ptr %1019, align 8, !tbaa !11
  %1021 = load ptr, ptr %49, align 8, !tbaa !5
  %1022 = load i64, ptr %58, align 8, !tbaa !9
  %1023 = load i64, ptr %65, align 8, !tbaa !9
  %1024 = add nsw i64 %1022, %1023
  %1025 = load ptr, ptr %29, align 8, !tbaa !5
  %1026 = load i64, ptr %1025, align 8, !tbaa !9
  %1027 = add nsw i64 %1024, %1026
  %1028 = getelementptr inbounds double, ptr %1021, i64 %1027
  %1029 = load double, ptr %1028, align 8, !tbaa !11
  %1030 = fsub double %1020, %1029
  store double %1030, ptr %55, align 8, !tbaa !11
  %1031 = load double, ptr %55, align 8, !tbaa !11
  %1032 = fcmp oge double %1031, 0.000000e+00
  br i1 %1032, label %1033, label %1035

1033:                                             ; preds = %995
  %1034 = load double, ptr %55, align 8, !tbaa !11
  br label %1038

1035:                                             ; preds = %995
  %1036 = load double, ptr %55, align 8, !tbaa !11
  %1037 = fneg double %1036
  br label %1038

1038:                                             ; preds = %1035, %1033
  %1039 = phi double [ %1034, %1033 ], [ %1037, %1035 ]
  %1040 = fmul double %1039, 5.000000e-01
  store double %1040, ptr %75, align 8, !tbaa !11
  %1041 = load i64, ptr %58, align 8, !tbaa !9
  %1042 = load i64, ptr %79, align 8, !tbaa !9
  %1043 = load i64, ptr %83, align 8, !tbaa !9
  %1044 = sub nsw i64 %1042, %1043
  %1045 = icmp sgt i64 %1041, %1044
  br i1 %1045, label %1046, label %1049

1046:                                             ; preds = %1038
  store i64 1, ptr %96, align 8, !tbaa !9
  %1047 = load i64, ptr %77, align 8, !tbaa !9
  %1048 = sub nsw i64 0, %1047
  store i64 %1048, ptr %59, align 8, !tbaa !9
  br label %1051

1049:                                             ; preds = %1038
  %1050 = load i64, ptr %77, align 8, !tbaa !9
  store i64 %1050, ptr %59, align 8, !tbaa !9
  br label %1051

1051:                                             ; preds = %1049, %1046
  %1052 = load ptr, ptr %50, align 8, !tbaa !5
  %1053 = load i64, ptr %58, align 8, !tbaa !9
  %1054 = load i64, ptr %65, align 8, !tbaa !9
  %1055 = add nsw i64 %1053, %1054
  %1056 = getelementptr inbounds i64, ptr %1052, i64 %1055
  %1057 = load i64, ptr %1056, align 8, !tbaa !9
  %1058 = load i64, ptr %85, align 8, !tbaa !9
  %1059 = add nsw i64 %1057, %1058
  store i64 %1059, ptr %54, align 8, !tbaa !9
  %1060 = load ptr, ptr %50, align 8, !tbaa !5
  %1061 = load i64, ptr %58, align 8, !tbaa !9
  %1062 = getelementptr inbounds i64, ptr %1060, i64 %1061
  %1063 = load i64, ptr %1062, align 8, !tbaa !9
  %1064 = add nsw i64 %1063, 1
  %1065 = load i64, ptr %85, align 8, !tbaa !9
  %1066 = add nsw i64 %1064, %1065
  store i64 %1066, ptr %61, align 8, !tbaa !9
  br label %1067

1067:                                             ; preds = %1090, %1051
  %1068 = load i64, ptr %61, align 8, !tbaa !9
  %1069 = load i64, ptr %54, align 8, !tbaa !9
  %1070 = icmp sle i64 %1068, %1069
  br i1 %1070, label %1071, label %1093

1071:                                             ; preds = %1067
  %1072 = load double, ptr %74, align 8, !tbaa !11
  %1073 = load ptr, ptr %43, align 8, !tbaa !5
  %1074 = load i64, ptr %61, align 8, !tbaa !9
  %1075 = getelementptr inbounds double, ptr %1073, i64 %1074
  store double %1072, ptr %1075, align 8, !tbaa !11
  %1076 = load double, ptr %75, align 8, !tbaa !11
  %1077 = load ptr, ptr %44, align 8, !tbaa !5
  %1078 = load i64, ptr %61, align 8, !tbaa !9
  %1079 = getelementptr inbounds double, ptr %1077, i64 %1078
  store double %1076, ptr %1079, align 8, !tbaa !11
  %1080 = load i64, ptr %61, align 8, !tbaa !9
  %1081 = load i64, ptr %85, align 8, !tbaa !9
  %1082 = sub nsw i64 %1080, %1081
  %1083 = load ptr, ptr %48, align 8, !tbaa !5
  %1084 = load i64, ptr %61, align 8, !tbaa !9
  %1085 = getelementptr inbounds i64, ptr %1083, i64 %1084
  store i64 %1082, ptr %1085, align 8, !tbaa !9
  %1086 = load i64, ptr %59, align 8, !tbaa !9
  %1087 = load ptr, ptr %47, align 8, !tbaa !5
  %1088 = load i64, ptr %61, align 8, !tbaa !9
  %1089 = getelementptr inbounds i64, ptr %1087, i64 %1088
  store i64 %1086, ptr %1089, align 8, !tbaa !9
  br label %1090

1090:                                             ; preds = %1071
  %1091 = load i64, ptr %61, align 8, !tbaa !9
  %1092 = add nsw i64 %1091, 1
  store i64 %1092, ptr %61, align 8, !tbaa !9
  br label %1067, !llvm.loop !16

1093:                                             ; preds = %1067
  br label %1094

1094:                                             ; preds = %1093
  %1095 = load i64, ptr %58, align 8, !tbaa !9
  %1096 = add nsw i64 %1095, 1
  store i64 %1096, ptr %58, align 8, !tbaa !9
  br label %991, !llvm.loop !17

1097:                                             ; preds = %991
  %1098 = load i64, ptr %64, align 8, !tbaa !9
  %1099 = load ptr, ptr %42, align 8, !tbaa !5
  %1100 = load i64, ptr %1099, align 8, !tbaa !9
  %1101 = add nsw i64 %1100, %1098
  store i64 %1101, ptr %1099, align 8, !tbaa !9
  br label %1102

1102:                                             ; preds = %1097, %738
  br label %1103

1103:                                             ; preds = %1102, %854, %821
  br label %1104

1104:                                             ; preds = %1103
  %1105 = load i64, ptr %77, align 8, !tbaa !9
  %1106 = add nsw i64 %1105, 1
  store i64 %1106, ptr %77, align 8, !tbaa !9
  br label %643, !llvm.loop !18

1107:                                             ; preds = %643
  %1108 = load i64, ptr %92, align 8, !tbaa !9
  %1109 = icmp eq i64 %1108, 3
  br i1 %1109, label %1110, label %1458

1110:                                             ; preds = %1107
  %1111 = load ptr, ptr %32, align 8, !tbaa !5
  %1112 = load i64, ptr %1111, align 8, !tbaa !9
  %1113 = sub nsw i64 %1112, 1
  %1114 = load i64, ptr %70, align 8, !tbaa !9
  %1115 = sub nsw i64 %1113, %1114
  store i64 %1115, ptr %93, align 8, !tbaa !9
  %1116 = load i64, ptr %73, align 8, !tbaa !9
  %1117 = load ptr, ptr %33, align 8, !tbaa !5
  %1118 = load i64, ptr %1117, align 8, !tbaa !9
  %1119 = sub nsw i64 %1116, %1118
  store i64 %1119, ptr %95, align 8, !tbaa !9
  %1120 = load i64, ptr %93, align 8, !tbaa !9
  %1121 = icmp sgt i64 %1120, 0
  br i1 %1121, label %1122, label %1180

1122:                                             ; preds = %1110
  store i64 0, ptr %64, align 8, !tbaa !9
  %1123 = load ptr, ptr %42, align 8, !tbaa !5
  %1124 = load i64, ptr %1123, align 8, !tbaa !9
  store i64 %1124, ptr %52, align 8, !tbaa !9
  store i64 1, ptr %61, align 8, !tbaa !9
  br label %1125

1125:                                             ; preds = %1174, %1122
  %1126 = load i64, ptr %61, align 8, !tbaa !9
  %1127 = load i64, ptr %52, align 8, !tbaa !9
  %1128 = icmp sle i64 %1126, %1127
  br i1 %1128, label %1129, label %1177

1129:                                             ; preds = %1125
  %1130 = load ptr, ptr %43, align 8, !tbaa !5
  %1131 = load i64, ptr %61, align 8, !tbaa !9
  %1132 = getelementptr inbounds double, ptr %1130, i64 %1131
  %1133 = load double, ptr %1132, align 8, !tbaa !11
  %1134 = load double, ptr %71, align 8, !tbaa !11
  %1135 = fcmp ole double %1133, %1134
  br i1 %1135, label %1136, label %1142

1136:                                             ; preds = %1129
  %1137 = load i64, ptr %93, align 8, !tbaa !9
  %1138 = icmp sgt i64 %1137, 0
  br i1 %1138, label %1139, label %1142

1139:                                             ; preds = %1136
  %1140 = load i64, ptr %93, align 8, !tbaa !9
  %1141 = add nsw i64 %1140, -1
  store i64 %1141, ptr %93, align 8, !tbaa !9
  br label %1173

1142:                                             ; preds = %1136, %1129
  %1143 = load i64, ptr %64, align 8, !tbaa !9
  %1144 = add nsw i64 %1143, 1
  store i64 %1144, ptr %64, align 8, !tbaa !9
  %1145 = load ptr, ptr %43, align 8, !tbaa !5
  %1146 = load i64, ptr %61, align 8, !tbaa !9
  %1147 = getelementptr inbounds double, ptr %1145, i64 %1146
  %1148 = load double, ptr %1147, align 8, !tbaa !11
  %1149 = load ptr, ptr %43, align 8, !tbaa !5
  %1150 = load i64, ptr %64, align 8, !tbaa !9
  %1151 = getelementptr inbounds double, ptr %1149, i64 %1150
  store double %1148, ptr %1151, align 8, !tbaa !11
  %1152 = load ptr, ptr %44, align 8, !tbaa !5
  %1153 = load i64, ptr %61, align 8, !tbaa !9
  %1154 = getelementptr inbounds double, ptr %1152, i64 %1153
  %1155 = load double, ptr %1154, align 8, !tbaa !11
  %1156 = load ptr, ptr %44, align 8, !tbaa !5
  %1157 = load i64, ptr %64, align 8, !tbaa !9
  %1158 = getelementptr inbounds double, ptr %1156, i64 %1157
  store double %1155, ptr %1158, align 8, !tbaa !11
  %1159 = load ptr, ptr %48, align 8, !tbaa !5
  %1160 = load i64, ptr %61, align 8, !tbaa !9
  %1161 = getelementptr inbounds i64, ptr %1159, i64 %1160
  %1162 = load i64, ptr %1161, align 8, !tbaa !9
  %1163 = load ptr, ptr %48, align 8, !tbaa !5
  %1164 = load i64, ptr %64, align 8, !tbaa !9
  %1165 = getelementptr inbounds i64, ptr %1163, i64 %1164
  store i64 %1162, ptr %1165, align 8, !tbaa !9
  %1166 = load ptr, ptr %47, align 8, !tbaa !5
  %1167 = load i64, ptr %61, align 8, !tbaa !9
  %1168 = getelementptr inbounds i64, ptr %1166, i64 %1167
  %1169 = load i64, ptr %1168, align 8, !tbaa !9
  %1170 = load ptr, ptr %47, align 8, !tbaa !5
  %1171 = load i64, ptr %64, align 8, !tbaa !9
  %1172 = getelementptr inbounds i64, ptr %1170, i64 %1171
  store i64 %1169, ptr %1172, align 8, !tbaa !9
  br label %1173

1173:                                             ; preds = %1142, %1139
  br label %1174

1174:                                             ; preds = %1173
  %1175 = load i64, ptr %61, align 8, !tbaa !9
  %1176 = add nsw i64 %1175, 1
  store i64 %1176, ptr %61, align 8, !tbaa !9
  br label %1125, !llvm.loop !19

1177:                                             ; preds = %1125
  %1178 = load i64, ptr %64, align 8, !tbaa !9
  %1179 = load ptr, ptr %42, align 8, !tbaa !5
  store i64 %1178, ptr %1179, align 8, !tbaa !9
  br label %1180

1180:                                             ; preds = %1177, %1110
  %1181 = load i64, ptr %95, align 8, !tbaa !9
  %1182 = icmp sgt i64 %1181, 0
  br i1 %1182, label %1183, label %1289

1183:                                             ; preds = %1180
  %1184 = load ptr, ptr %42, align 8, !tbaa !5
  %1185 = load i64, ptr %1184, align 8, !tbaa !9
  %1186 = add nsw i64 %1185, 1
  store i64 %1186, ptr %64, align 8, !tbaa !9
  %1187 = load ptr, ptr %42, align 8, !tbaa !5
  %1188 = load i64, ptr %1187, align 8, !tbaa !9
  store i64 %1188, ptr %61, align 8, !tbaa !9
  br label %1189

1189:                                             ; preds = %1237, %1183
  %1190 = load i64, ptr %61, align 8, !tbaa !9
  %1191 = icmp sge i64 %1190, 1
  br i1 %1191, label %1192, label %1240

1192:                                             ; preds = %1189
  %1193 = load ptr, ptr %43, align 8, !tbaa !5
  %1194 = load i64, ptr %61, align 8, !tbaa !9
  %1195 = getelementptr inbounds double, ptr %1193, i64 %1194
  %1196 = load double, ptr %1195, align 8, !tbaa !11
  %1197 = load double, ptr %72, align 8, !tbaa !11
  %1198 = fcmp oge double %1196, %1197
  br i1 %1198, label %1199, label %1205

1199:                                             ; preds = %1192
  %1200 = load i64, ptr %95, align 8, !tbaa !9
  %1201 = icmp sgt i64 %1200, 0
  br i1 %1201, label %1202, label %1205

1202:                                             ; preds = %1199
  %1203 = load i64, ptr %95, align 8, !tbaa !9
  %1204 = add nsw i64 %1203, -1
  store i64 %1204, ptr %95, align 8, !tbaa !9
  br label %1236

1205:                                             ; preds = %1199, %1192
  %1206 = load i64, ptr %64, align 8, !tbaa !9
  %1207 = add nsw i64 %1206, -1
  store i64 %1207, ptr %64, align 8, !tbaa !9
  %1208 = load ptr, ptr %43, align 8, !tbaa !5
  %1209 = load i64, ptr %61, align 8, !tbaa !9
  %1210 = getelementptr inbounds double, ptr %1208, i64 %1209
  %1211 = load double, ptr %1210, align 8, !tbaa !11
  %1212 = load ptr, ptr %43, align 8, !tbaa !5
  %1213 = load i64, ptr %64, align 8, !tbaa !9
  %1214 = getelementptr inbounds double, ptr %1212, i64 %1213
  store double %1211, ptr %1214, align 8, !tbaa !11
  %1215 = load ptr, ptr %44, align 8, !tbaa !5
  %1216 = load i64, ptr %61, align 8, !tbaa !9
  %1217 = getelementptr inbounds double, ptr %1215, i64 %1216
  %1218 = load double, ptr %1217, align 8, !tbaa !11
  %1219 = load ptr, ptr %44, align 8, !tbaa !5
  %1220 = load i64, ptr %64, align 8, !tbaa !9
  %1221 = getelementptr inbounds double, ptr %1219, i64 %1220
  store double %1218, ptr %1221, align 8, !tbaa !11
  %1222 = load ptr, ptr %48, align 8, !tbaa !5
  %1223 = load i64, ptr %61, align 8, !tbaa !9
  %1224 = getelementptr inbounds i64, ptr %1222, i64 %1223
  %1225 = load i64, ptr %1224, align 8, !tbaa !9
  %1226 = load ptr, ptr %48, align 8, !tbaa !5
  %1227 = load i64, ptr %64, align 8, !tbaa !9
  %1228 = getelementptr inbounds i64, ptr %1226, i64 %1227
  store i64 %1225, ptr %1228, align 8, !tbaa !9
  %1229 = load ptr, ptr %47, align 8, !tbaa !5
  %1230 = load i64, ptr %61, align 8, !tbaa !9
  %1231 = getelementptr inbounds i64, ptr %1229, i64 %1230
  %1232 = load i64, ptr %1231, align 8, !tbaa !9
  %1233 = load ptr, ptr %47, align 8, !tbaa !5
  %1234 = load i64, ptr %64, align 8, !tbaa !9
  %1235 = getelementptr inbounds i64, ptr %1233, i64 %1234
  store i64 %1232, ptr %1235, align 8, !tbaa !9
  br label %1236

1236:                                             ; preds = %1205, %1202
  br label %1237

1237:                                             ; preds = %1236
  %1238 = load i64, ptr %61, align 8, !tbaa !9
  %1239 = add nsw i64 %1238, -1
  store i64 %1239, ptr %61, align 8, !tbaa !9
  br label %1189, !llvm.loop !20

1240:                                             ; preds = %1189
  store i64 0, ptr %68, align 8, !tbaa !9
  %1241 = load ptr, ptr %42, align 8, !tbaa !5
  %1242 = load i64, ptr %1241, align 8, !tbaa !9
  store i64 %1242, ptr %52, align 8, !tbaa !9
  %1243 = load i64, ptr %64, align 8, !tbaa !9
  store i64 %1243, ptr %61, align 8, !tbaa !9
  br label %1244

1244:                                             ; preds = %1279, %1240
  %1245 = load i64, ptr %61, align 8, !tbaa !9
  %1246 = load i64, ptr %52, align 8, !tbaa !9
  %1247 = icmp sle i64 %1245, %1246
  br i1 %1247, label %1248, label %1282

1248:                                             ; preds = %1244
  %1249 = load i64, ptr %68, align 8, !tbaa !9
  %1250 = add nsw i64 %1249, 1
  store i64 %1250, ptr %68, align 8, !tbaa !9
  %1251 = load ptr, ptr %43, align 8, !tbaa !5
  %1252 = load i64, ptr %61, align 8, !tbaa !9
  %1253 = getelementptr inbounds double, ptr %1251, i64 %1252
  %1254 = load double, ptr %1253, align 8, !tbaa !11
  %1255 = load ptr, ptr %43, align 8, !tbaa !5
  %1256 = load i64, ptr %68, align 8, !tbaa !9
  %1257 = getelementptr inbounds double, ptr %1255, i64 %1256
  store double %1254, ptr %1257, align 8, !tbaa !11
  %1258 = load ptr, ptr %44, align 8, !tbaa !5
  %1259 = load i64, ptr %61, align 8, !tbaa !9
  %1260 = getelementptr inbounds double, ptr %1258, i64 %1259
  %1261 = load double, ptr %1260, align 8, !tbaa !11
  %1262 = load ptr, ptr %44, align 8, !tbaa !5
  %1263 = load i64, ptr %68, align 8, !tbaa !9
  %1264 = getelementptr inbounds double, ptr %1262, i64 %1263
  store double %1261, ptr %1264, align 8, !tbaa !11
  %1265 = load ptr, ptr %48, align 8, !tbaa !5
  %1266 = load i64, ptr %61, align 8, !tbaa !9
  %1267 = getelementptr inbounds i64, ptr %1265, i64 %1266
  %1268 = load i64, ptr %1267, align 8, !tbaa !9
  %1269 = load ptr, ptr %48, align 8, !tbaa !5
  %1270 = load i64, ptr %68, align 8, !tbaa !9
  %1271 = getelementptr inbounds i64, ptr %1269, i64 %1270
  store i64 %1268, ptr %1271, align 8, !tbaa !9
  %1272 = load ptr, ptr %47, align 8, !tbaa !5
  %1273 = load i64, ptr %61, align 8, !tbaa !9
  %1274 = getelementptr inbounds i64, ptr %1272, i64 %1273
  %1275 = load i64, ptr %1274, align 8, !tbaa !9
  %1276 = load ptr, ptr %47, align 8, !tbaa !5
  %1277 = load i64, ptr %68, align 8, !tbaa !9
  %1278 = getelementptr inbounds i64, ptr %1276, i64 %1277
  store i64 %1275, ptr %1278, align 8, !tbaa !9
  br label %1279

1279:                                             ; preds = %1248
  %1280 = load i64, ptr %61, align 8, !tbaa !9
  %1281 = add nsw i64 %1280, 1
  store i64 %1281, ptr %61, align 8, !tbaa !9
  br label %1244, !llvm.loop !21

1282:                                             ; preds = %1244
  %1283 = load ptr, ptr %42, align 8, !tbaa !5
  %1284 = load i64, ptr %1283, align 8, !tbaa !9
  %1285 = load i64, ptr %64, align 8, !tbaa !9
  %1286 = sub nsw i64 %1284, %1285
  %1287 = add nsw i64 %1286, 1
  %1288 = load ptr, ptr %42, align 8, !tbaa !5
  store i64 %1287, ptr %1288, align 8, !tbaa !9
  br label %1289

1289:                                             ; preds = %1282, %1180
  %1290 = load i64, ptr %93, align 8, !tbaa !9
  %1291 = icmp sgt i64 %1290, 0
  br i1 %1291, label %1295, label %1292

1292:                                             ; preds = %1289
  %1293 = load i64, ptr %95, align 8, !tbaa !9
  %1294 = icmp sgt i64 %1293, 0
  br i1 %1294, label %1295, label %1450

1295:                                             ; preds = %1292, %1289
  %1296 = load i64, ptr %93, align 8, !tbaa !9
  %1297 = icmp sgt i64 %1296, 0
  br i1 %1297, label %1298, label %1347

1298:                                             ; preds = %1295
  %1299 = load ptr, ptr %46, align 8, !tbaa !5
  %1300 = load double, ptr %1299, align 8, !tbaa !11
  store double %1300, ptr %87, align 8, !tbaa !11
  %1301 = load i64, ptr %93, align 8, !tbaa !9
  store i64 %1301, ptr %52, align 8, !tbaa !9
  store i64 1, ptr %82, align 8, !tbaa !9
  br label %1302

1302:                                             ; preds = %1343, %1298
  %1303 = load i64, ptr %82, align 8, !tbaa !9
  %1304 = load i64, ptr %52, align 8, !tbaa !9
  %1305 = icmp sle i64 %1303, %1304
  br i1 %1305, label %1306, label %1346

1306:                                             ; preds = %1302
  store i64 0, ptr %67, align 8, !tbaa !9
  %1307 = load ptr, ptr %42, align 8, !tbaa !5
  %1308 = load i64, ptr %1307, align 8, !tbaa !9
  store i64 %1308, ptr %53, align 8, !tbaa !9
  store i64 1, ptr %61, align 8, !tbaa !9
  br label %1309

1309:                                             ; preds = %1336, %1306
  %1310 = load i64, ptr %61, align 8, !tbaa !9
  %1311 = load i64, ptr %53, align 8, !tbaa !9
  %1312 = icmp sle i64 %1310, %1311
  br i1 %1312, label %1313, label %1339

1313:                                             ; preds = %1309
  %1314 = load ptr, ptr %47, align 8, !tbaa !5
  %1315 = load i64, ptr %61, align 8, !tbaa !9
  %1316 = getelementptr inbounds i64, ptr %1314, i64 %1315
  %1317 = load i64, ptr %1316, align 8, !tbaa !9
  %1318 = icmp ne i64 %1317, 0
  br i1 %1318, label %1319, label %1335

1319:                                             ; preds = %1313
  %1320 = load ptr, ptr %43, align 8, !tbaa !5
  %1321 = load i64, ptr %61, align 8, !tbaa !9
  %1322 = getelementptr inbounds double, ptr %1320, i64 %1321
  %1323 = load double, ptr %1322, align 8, !tbaa !11
  %1324 = load double, ptr %87, align 8, !tbaa !11
  %1325 = fcmp olt double %1323, %1324
  br i1 %1325, label %1329, label %1326

1326:                                             ; preds = %1319
  %1327 = load i64, ptr %67, align 8, !tbaa !9
  %1328 = icmp eq i64 %1327, 0
  br i1 %1328, label %1329, label %1335

1329:                                             ; preds = %1326, %1319
  %1330 = load i64, ptr %61, align 8, !tbaa !9
  store i64 %1330, ptr %67, align 8, !tbaa !9
  %1331 = load ptr, ptr %43, align 8, !tbaa !5
  %1332 = load i64, ptr %61, align 8, !tbaa !9
  %1333 = getelementptr inbounds double, ptr %1331, i64 %1332
  %1334 = load double, ptr %1333, align 8, !tbaa !11
  store double %1334, ptr %87, align 8, !tbaa !11
  br label %1335

1335:                                             ; preds = %1329, %1326, %1313
  br label %1336

1336:                                             ; preds = %1335
  %1337 = load i64, ptr %61, align 8, !tbaa !9
  %1338 = add nsw i64 %1337, 1
  store i64 %1338, ptr %61, align 8, !tbaa !9
  br label %1309, !llvm.loop !22

1339:                                             ; preds = %1309
  %1340 = load ptr, ptr %47, align 8, !tbaa !5
  %1341 = load i64, ptr %67, align 8, !tbaa !9
  %1342 = getelementptr inbounds i64, ptr %1340, i64 %1341
  store i64 0, ptr %1342, align 8, !tbaa !9
  br label %1343

1343:                                             ; preds = %1339
  %1344 = load i64, ptr %82, align 8, !tbaa !9
  %1345 = add nsw i64 %1344, 1
  store i64 %1345, ptr %82, align 8, !tbaa !9
  br label %1302, !llvm.loop !23

1346:                                             ; preds = %1302
  br label %1347

1347:                                             ; preds = %1346, %1295
  %1348 = load i64, ptr %95, align 8, !tbaa !9
  %1349 = icmp sgt i64 %1348, 0
  br i1 %1349, label %1350, label %1399

1350:                                             ; preds = %1347
  %1351 = load ptr, ptr %45, align 8, !tbaa !5
  %1352 = load double, ptr %1351, align 8, !tbaa !11
  store double %1352, ptr %87, align 8, !tbaa !11
  %1353 = load i64, ptr %95, align 8, !tbaa !9
  store i64 %1353, ptr %52, align 8, !tbaa !9
  store i64 1, ptr %82, align 8, !tbaa !9
  br label %1354

1354:                                             ; preds = %1395, %1350
  %1355 = load i64, ptr %82, align 8, !tbaa !9
  %1356 = load i64, ptr %52, align 8, !tbaa !9
  %1357 = icmp sle i64 %1355, %1356
  br i1 %1357, label %1358, label %1398

1358:                                             ; preds = %1354
  store i64 0, ptr %67, align 8, !tbaa !9
  %1359 = load ptr, ptr %42, align 8, !tbaa !5
  %1360 = load i64, ptr %1359, align 8, !tbaa !9
  store i64 %1360, ptr %53, align 8, !tbaa !9
  store i64 1, ptr %61, align 8, !tbaa !9
  br label %1361

1361:                                             ; preds = %1388, %1358
  %1362 = load i64, ptr %61, align 8, !tbaa !9
  %1363 = load i64, ptr %53, align 8, !tbaa !9
  %1364 = icmp sle i64 %1362, %1363
  br i1 %1364, label %1365, label %1391

1365:                                             ; preds = %1361
  %1366 = load ptr, ptr %47, align 8, !tbaa !5
  %1367 = load i64, ptr %61, align 8, !tbaa !9
  %1368 = getelementptr inbounds i64, ptr %1366, i64 %1367
  %1369 = load i64, ptr %1368, align 8, !tbaa !9
  %1370 = icmp ne i64 %1369, 0
  br i1 %1370, label %1371, label %1387

1371:                                             ; preds = %1365
  %1372 = load ptr, ptr %43, align 8, !tbaa !5
  %1373 = load i64, ptr %61, align 8, !tbaa !9
  %1374 = getelementptr inbounds double, ptr %1372, i64 %1373
  %1375 = load double, ptr %1374, align 8, !tbaa !11
  %1376 = load double, ptr %87, align 8, !tbaa !11
  %1377 = fcmp oge double %1375, %1376
  br i1 %1377, label %1381, label %1378

1378:                                             ; preds = %1371
  %1379 = load i64, ptr %67, align 8, !tbaa !9
  %1380 = icmp eq i64 %1379, 0
  br i1 %1380, label %1381, label %1387

1381:                                             ; preds = %1378, %1371
  %1382 = load i64, ptr %61, align 8, !tbaa !9
  store i64 %1382, ptr %67, align 8, !tbaa !9
  %1383 = load ptr, ptr %43, align 8, !tbaa !5
  %1384 = load i64, ptr %61, align 8, !tbaa !9
  %1385 = getelementptr inbounds double, ptr %1383, i64 %1384
  %1386 = load double, ptr %1385, align 8, !tbaa !11
  store double %1386, ptr %87, align 8, !tbaa !11
  br label %1387

1387:                                             ; preds = %1381, %1378, %1365
  br label %1388

1388:                                             ; preds = %1387
  %1389 = load i64, ptr %61, align 8, !tbaa !9
  %1390 = add nsw i64 %1389, 1
  store i64 %1390, ptr %61, align 8, !tbaa !9
  br label %1361, !llvm.loop !24

1391:                                             ; preds = %1361
  %1392 = load ptr, ptr %47, align 8, !tbaa !5
  %1393 = load i64, ptr %67, align 8, !tbaa !9
  %1394 = getelementptr inbounds i64, ptr %1392, i64 %1393
  store i64 0, ptr %1394, align 8, !tbaa !9
  br label %1395

1395:                                             ; preds = %1391
  %1396 = load i64, ptr %82, align 8, !tbaa !9
  %1397 = add nsw i64 %1396, 1
  store i64 %1397, ptr %82, align 8, !tbaa !9
  br label %1354, !llvm.loop !25

1398:                                             ; preds = %1354
  br label %1399

1399:                                             ; preds = %1398, %1347
  store i64 0, ptr %64, align 8, !tbaa !9
  %1400 = load ptr, ptr %42, align 8, !tbaa !5
  %1401 = load i64, ptr %1400, align 8, !tbaa !9
  store i64 %1401, ptr %52, align 8, !tbaa !9
  store i64 1, ptr %61, align 8, !tbaa !9
  br label %1402

1402:                                             ; preds = %1444, %1399
  %1403 = load i64, ptr %61, align 8, !tbaa !9
  %1404 = load i64, ptr %52, align 8, !tbaa !9
  %1405 = icmp sle i64 %1403, %1404
  br i1 %1405, label %1406, label %1447

1406:                                             ; preds = %1402
  %1407 = load ptr, ptr %47, align 8, !tbaa !5
  %1408 = load i64, ptr %61, align 8, !tbaa !9
  %1409 = getelementptr inbounds i64, ptr %1407, i64 %1408
  %1410 = load i64, ptr %1409, align 8, !tbaa !9
  %1411 = icmp ne i64 %1410, 0
  br i1 %1411, label %1412, label %1443

1412:                                             ; preds = %1406
  %1413 = load i64, ptr %64, align 8, !tbaa !9
  %1414 = add nsw i64 %1413, 1
  store i64 %1414, ptr %64, align 8, !tbaa !9
  %1415 = load ptr, ptr %43, align 8, !tbaa !5
  %1416 = load i64, ptr %61, align 8, !tbaa !9
  %1417 = getelementptr inbounds double, ptr %1415, i64 %1416
  %1418 = load double, ptr %1417, align 8, !tbaa !11
  %1419 = load ptr, ptr %43, align 8, !tbaa !5
  %1420 = load i64, ptr %64, align 8, !tbaa !9
  %1421 = getelementptr inbounds double, ptr %1419, i64 %1420
  store double %1418, ptr %1421, align 8, !tbaa !11
  %1422 = load ptr, ptr %44, align 8, !tbaa !5
  %1423 = load i64, ptr %61, align 8, !tbaa !9
  %1424 = getelementptr inbounds double, ptr %1422, i64 %1423
  %1425 = load double, ptr %1424, align 8, !tbaa !11
  %1426 = load ptr, ptr %44, align 8, !tbaa !5
  %1427 = load i64, ptr %64, align 8, !tbaa !9
  %1428 = getelementptr inbounds double, ptr %1426, i64 %1427
  store double %1425, ptr %1428, align 8, !tbaa !11
  %1429 = load ptr, ptr %48, align 8, !tbaa !5
  %1430 = load i64, ptr %61, align 8, !tbaa !9
  %1431 = getelementptr inbounds i64, ptr %1429, i64 %1430
  %1432 = load i64, ptr %1431, align 8, !tbaa !9
  %1433 = load ptr, ptr %48, align 8, !tbaa !5
  %1434 = load i64, ptr %64, align 8, !tbaa !9
  %1435 = getelementptr inbounds i64, ptr %1433, i64 %1434
  store i64 %1432, ptr %1435, align 8, !tbaa !9
  %1436 = load ptr, ptr %47, align 8, !tbaa !5
  %1437 = load i64, ptr %61, align 8, !tbaa !9
  %1438 = getelementptr inbounds i64, ptr %1436, i64 %1437
  %1439 = load i64, ptr %1438, align 8, !tbaa !9
  %1440 = load ptr, ptr %47, align 8, !tbaa !5
  %1441 = load i64, ptr %64, align 8, !tbaa !9
  %1442 = getelementptr inbounds i64, ptr %1440, i64 %1441
  store i64 %1439, ptr %1442, align 8, !tbaa !9
  br label %1443

1443:                                             ; preds = %1412, %1406
  br label %1444

1444:                                             ; preds = %1443
  %1445 = load i64, ptr %61, align 8, !tbaa !9
  %1446 = add nsw i64 %1445, 1
  store i64 %1446, ptr %61, align 8, !tbaa !9
  br label %1402, !llvm.loop !26

1447:                                             ; preds = %1402
  %1448 = load i64, ptr %64, align 8, !tbaa !9
  %1449 = load ptr, ptr %42, align 8, !tbaa !5
  store i64 %1448, ptr %1449, align 8, !tbaa !9
  br label %1450

1450:                                             ; preds = %1447, %1292
  %1451 = load i64, ptr %93, align 8, !tbaa !9
  %1452 = icmp slt i64 %1451, 0
  br i1 %1452, label %1456, label %1453

1453:                                             ; preds = %1450
  %1454 = load i64, ptr %95, align 8, !tbaa !9
  %1455 = icmp slt i64 %1454, 0
  br i1 %1455, label %1456, label %1457

1456:                                             ; preds = %1453, %1450
  store i64 1, ptr %97, align 8, !tbaa !9
  br label %1457

1457:                                             ; preds = %1456, %1453
  br label %1458

1458:                                             ; preds = %1457, %1107
  %1459 = load i64, ptr %92, align 8, !tbaa !9
  %1460 = icmp eq i64 %1459, 1
  br i1 %1460, label %1461, label %1467

1461:                                             ; preds = %1458
  %1462 = load ptr, ptr %42, align 8, !tbaa !5
  %1463 = load i64, ptr %1462, align 8, !tbaa !9
  %1464 = load ptr, ptr %29, align 8, !tbaa !5
  %1465 = load i64, ptr %1464, align 8, !tbaa !9
  %1466 = icmp ne i64 %1463, %1465
  br i1 %1466, label %1480, label %1467

1467:                                             ; preds = %1461, %1458
  %1468 = load i64, ptr %92, align 8, !tbaa !9
  %1469 = icmp eq i64 %1468, 3
  br i1 %1469, label %1470, label %1481

1470:                                             ; preds = %1467
  %1471 = load ptr, ptr %42, align 8, !tbaa !5
  %1472 = load i64, ptr %1471, align 8, !tbaa !9
  %1473 = load ptr, ptr %33, align 8, !tbaa !5
  %1474 = load i64, ptr %1473, align 8, !tbaa !9
  %1475 = load ptr, ptr %32, align 8, !tbaa !5
  %1476 = load i64, ptr %1475, align 8, !tbaa !9
  %1477 = sub nsw i64 %1474, %1476
  %1478 = add nsw i64 %1477, 1
  %1479 = icmp ne i64 %1472, %1478
  br i1 %1479, label %1480, label %1481

1480:                                             ; preds = %1470, %1461
  store i64 1, ptr %97, align 8, !tbaa !9
  br label %1481

1481:                                             ; preds = %1480, %1470, %1467
  %1482 = load ptr, ptr %28, align 8, !tbaa !5
  %1483 = call i64 @lsame_(ptr noundef %1482, ptr noundef @.str.4)
  %1484 = icmp ne i64 %1483, 0
  br i1 %1484, label %1485, label %1592

1485:                                             ; preds = %1481
  %1486 = load ptr, ptr %40, align 8, !tbaa !5
  %1487 = load i64, ptr %1486, align 8, !tbaa !9
  %1488 = icmp sgt i64 %1487, 1
  br i1 %1488, label %1489, label %1592

1489:                                             ; preds = %1485
  %1490 = load ptr, ptr %42, align 8, !tbaa !5
  %1491 = load i64, ptr %1490, align 8, !tbaa !9
  %1492 = sub nsw i64 %1491, 1
  store i64 %1492, ptr %52, align 8, !tbaa !9
  store i64 1, ptr %61, align 8, !tbaa !9
  br label %1493

1493:                                             ; preds = %1588, %1489
  %1494 = load i64, ptr %61, align 8, !tbaa !9
  %1495 = load i64, ptr %52, align 8, !tbaa !9
  %1496 = icmp sle i64 %1494, %1495
  br i1 %1496, label %1497, label %1591

1497:                                             ; preds = %1493
  store i64 0, ptr %60, align 8, !tbaa !9
  %1498 = load ptr, ptr %43, align 8, !tbaa !5
  %1499 = load i64, ptr %61, align 8, !tbaa !9
  %1500 = getelementptr inbounds double, ptr %1498, i64 %1499
  %1501 = load double, ptr %1500, align 8, !tbaa !11
  store double %1501, ptr %74, align 8, !tbaa !11
  %1502 = load ptr, ptr %42, align 8, !tbaa !5
  %1503 = load i64, ptr %1502, align 8, !tbaa !9
  store i64 %1503, ptr %53, align 8, !tbaa !9
  %1504 = load i64, ptr %61, align 8, !tbaa !9
  %1505 = add nsw i64 %1504, 1
  store i64 %1505, ptr %58, align 8, !tbaa !9
  br label %1506

1506:                                             ; preds = %1524, %1497
  %1507 = load i64, ptr %58, align 8, !tbaa !9
  %1508 = load i64, ptr %53, align 8, !tbaa !9
  %1509 = icmp sle i64 %1507, %1508
  br i1 %1509, label %1510, label %1527

1510:                                             ; preds = %1506
  %1511 = load ptr, ptr %43, align 8, !tbaa !5
  %1512 = load i64, ptr %58, align 8, !tbaa !9
  %1513 = getelementptr inbounds double, ptr %1511, i64 %1512
  %1514 = load double, ptr %1513, align 8, !tbaa !11
  %1515 = load double, ptr %74, align 8, !tbaa !11
  %1516 = fcmp olt double %1514, %1515
  br i1 %1516, label %1517, label %1523

1517:                                             ; preds = %1510
  %1518 = load i64, ptr %58, align 8, !tbaa !9
  store i64 %1518, ptr %60, align 8, !tbaa !9
  %1519 = load ptr, ptr %43, align 8, !tbaa !5
  %1520 = load i64, ptr %58, align 8, !tbaa !9
  %1521 = getelementptr inbounds double, ptr %1519, i64 %1520
  %1522 = load double, ptr %1521, align 8, !tbaa !11
  store double %1522, ptr %74, align 8, !tbaa !11
  br label %1523

1523:                                             ; preds = %1517, %1510
  br label %1524

1524:                                             ; preds = %1523
  %1525 = load i64, ptr %58, align 8, !tbaa !9
  %1526 = add nsw i64 %1525, 1
  store i64 %1526, ptr %58, align 8, !tbaa !9
  br label %1506, !llvm.loop !27

1527:                                             ; preds = %1506
  %1528 = load i64, ptr %60, align 8, !tbaa !9
  %1529 = icmp ne i64 %1528, 0
  br i1 %1529, label %1530, label %1587

1530:                                             ; preds = %1527
  %1531 = load ptr, ptr %44, align 8, !tbaa !5
  %1532 = load i64, ptr %60, align 8, !tbaa !9
  %1533 = getelementptr inbounds double, ptr %1531, i64 %1532
  %1534 = load double, ptr %1533, align 8, !tbaa !11
  store double %1534, ptr %75, align 8, !tbaa !11
  %1535 = load ptr, ptr %47, align 8, !tbaa !5
  %1536 = load i64, ptr %60, align 8, !tbaa !9
  %1537 = getelementptr inbounds i64, ptr %1535, i64 %1536
  %1538 = load i64, ptr %1537, align 8, !tbaa !9
  store i64 %1538, ptr %80, align 8, !tbaa !9
  %1539 = load ptr, ptr %48, align 8, !tbaa !5
  %1540 = load i64, ptr %60, align 8, !tbaa !9
  %1541 = getelementptr inbounds i64, ptr %1539, i64 %1540
  %1542 = load i64, ptr %1541, align 8, !tbaa !9
  store i64 %1542, ptr %81, align 8, !tbaa !9
  %1543 = load ptr, ptr %43, align 8, !tbaa !5
  %1544 = load i64, ptr %61, align 8, !tbaa !9
  %1545 = getelementptr inbounds double, ptr %1543, i64 %1544
  %1546 = load double, ptr %1545, align 8, !tbaa !11
  %1547 = load ptr, ptr %43, align 8, !tbaa !5
  %1548 = load i64, ptr %60, align 8, !tbaa !9
  %1549 = getelementptr inbounds double, ptr %1547, i64 %1548
  store double %1546, ptr %1549, align 8, !tbaa !11
  %1550 = load ptr, ptr %44, align 8, !tbaa !5
  %1551 = load i64, ptr %61, align 8, !tbaa !9
  %1552 = getelementptr inbounds double, ptr %1550, i64 %1551
  %1553 = load double, ptr %1552, align 8, !tbaa !11
  %1554 = load ptr, ptr %44, align 8, !tbaa !5
  %1555 = load i64, ptr %60, align 8, !tbaa !9
  %1556 = getelementptr inbounds double, ptr %1554, i64 %1555
  store double %1553, ptr %1556, align 8, !tbaa !11
  %1557 = load ptr, ptr %47, align 8, !tbaa !5
  %1558 = load i64, ptr %61, align 8, !tbaa !9
  %1559 = getelementptr inbounds i64, ptr %1557, i64 %1558
  %1560 = load i64, ptr %1559, align 8, !tbaa !9
  %1561 = load ptr, ptr %47, align 8, !tbaa !5
  %1562 = load i64, ptr %60, align 8, !tbaa !9
  %1563 = getelementptr inbounds i64, ptr %1561, i64 %1562
  store i64 %1560, ptr %1563, align 8, !tbaa !9
  %1564 = load ptr, ptr %48, align 8, !tbaa !5
  %1565 = load i64, ptr %61, align 8, !tbaa !9
  %1566 = getelementptr inbounds i64, ptr %1564, i64 %1565
  %1567 = load i64, ptr %1566, align 8, !tbaa !9
  %1568 = load ptr, ptr %48, align 8, !tbaa !5
  %1569 = load i64, ptr %60, align 8, !tbaa !9
  %1570 = getelementptr inbounds i64, ptr %1568, i64 %1569
  store i64 %1567, ptr %1570, align 8, !tbaa !9
  %1571 = load double, ptr %74, align 8, !tbaa !11
  %1572 = load ptr, ptr %43, align 8, !tbaa !5
  %1573 = load i64, ptr %61, align 8, !tbaa !9
  %1574 = getelementptr inbounds double, ptr %1572, i64 %1573
  store double %1571, ptr %1574, align 8, !tbaa !11
  %1575 = load double, ptr %75, align 8, !tbaa !11
  %1576 = load ptr, ptr %44, align 8, !tbaa !5
  %1577 = load i64, ptr %61, align 8, !tbaa !9
  %1578 = getelementptr inbounds double, ptr %1576, i64 %1577
  store double %1575, ptr %1578, align 8, !tbaa !11
  %1579 = load i64, ptr %80, align 8, !tbaa !9
  %1580 = load ptr, ptr %47, align 8, !tbaa !5
  %1581 = load i64, ptr %61, align 8, !tbaa !9
  %1582 = getelementptr inbounds i64, ptr %1580, i64 %1581
  store i64 %1579, ptr %1582, align 8, !tbaa !9
  %1583 = load i64, ptr %81, align 8, !tbaa !9
  %1584 = load ptr, ptr %48, align 8, !tbaa !5
  %1585 = load i64, ptr %61, align 8, !tbaa !9
  %1586 = getelementptr inbounds i64, ptr %1584, i64 %1585
  store i64 %1583, ptr %1586, align 8, !tbaa !9
  br label %1587

1587:                                             ; preds = %1530, %1527
  br label %1588

1588:                                             ; preds = %1587
  %1589 = load i64, ptr %61, align 8, !tbaa !9
  %1590 = add nsw i64 %1589, 1
  store i64 %1590, ptr %61, align 8, !tbaa !9
  br label %1493, !llvm.loop !28

1591:                                             ; preds = %1493
  br label %1592

1592:                                             ; preds = %1591, %1485, %1481
  %1593 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 0, ptr %1593, align 8, !tbaa !9
  %1594 = load i64, ptr %96, align 8, !tbaa !9
  %1595 = icmp ne i64 %1594, 0
  br i1 %1595, label %1596, label %1600

1596:                                             ; preds = %1592
  %1597 = load ptr, ptr %51, align 8, !tbaa !5
  %1598 = load i64, ptr %1597, align 8, !tbaa !9
  %1599 = add nsw i64 %1598, 1
  store i64 %1599, ptr %1597, align 8, !tbaa !9
  br label %1600

1600:                                             ; preds = %1596, %1592
  %1601 = load i64, ptr %97, align 8, !tbaa !9
  %1602 = icmp ne i64 %1601, 0
  br i1 %1602, label %1603, label %1607

1603:                                             ; preds = %1600
  %1604 = load ptr, ptr %51, align 8, !tbaa !5
  %1605 = load i64, ptr %1604, align 8, !tbaa !9
  %1606 = add nsw i64 %1605, 2
  store i64 %1606, ptr %1604, align 8, !tbaa !9
  br label %1607

1607:                                             ; preds = %1603, %1600
  store i32 0, ptr %26, align 4
  store i32 1, ptr %98, align 4
  br label %1608

1608:                                             ; preds = %1607, %986, %910, %615, %523, %303, %238, %231
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #5
  %1609 = load i32, ptr %26, align 4
  ret i32 %1609
}

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

declare i64 @lsame_(ptr noundef, ptr noundef) #2

declare double @dlamch_(ptr noundef) #2

declare i64 @ilaenv_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

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

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

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

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

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

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


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i64, align 8
@.str.7 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [2 x i8], align 1
@c_n1 = external hidden global i64, align 8
@c__3 = external hidden global i64, align 8
@c__2 = external hidden global i64, align 8
@c__0 = external hidden global i64, align 8

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @dlarrd_(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 readonly %8, ptr noundef %9, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr nocapture noundef readonly %13, ptr nocapture noundef readonly %14, ptr nocapture noundef %15, ptr noundef %16, ptr nocapture noundef %17, ptr nocapture noundef %18, ptr nocapture noundef %19, ptr noundef %20, ptr nocapture noundef %21, ptr noundef %22, ptr noundef %23, ptr nocapture noundef %24) local_unnamed_addr #0 {
  %26 = ptrtoint ptr %21 to i64
  %27 = ptrtoint ptr %20 to i64
  %28 = ptrtoint ptr %16 to i64
  %29 = ptrtoint ptr %17 to i64
  %30 = ptrtoint ptr %21 to i64
  %31 = ptrtoint ptr %20 to i64
  %32 = ptrtoint ptr %16 to i64
  %33 = ptrtoint ptr %17 to i64
  %34 = alloca i64, align 8
  %35 = alloca i64, align 8
  %36 = alloca i64, align 8
  %37 = alloca i64, align 8
  %38 = alloca i64, align 8
  %39 = alloca double, align 8
  %40 = alloca i64, align 8
  %41 = alloca double, align 8
  %42 = alloca [1 x i64], align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %34) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %36) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %37) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %38) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %39) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %40) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %41) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %42) #7
  %43 = getelementptr inbounds i8, ptr %23, i64 -8
  %44 = getelementptr inbounds i8, ptr %22, i64 -8
  %45 = getelementptr inbounds i8, ptr %21, i64 -8
  %46 = getelementptr inbounds i8, ptr %20, i64 -8
  %47 = getelementptr inbounds i8, ptr %17, i64 -8
  %48 = getelementptr inbounds i8, ptr %16, i64 -8
  %49 = getelementptr inbounds i8, ptr %14, i64 -8
  %50 = getelementptr inbounds i8, ptr %7, i64 -8
  store i64 0, ptr %24, align 8, !tbaa !5
  %51 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #7
  %.not = icmp eq i64 %51, 0
  br i1 %.not, label %52, label %.thread

52:                                               ; preds = %25
  %53 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #7
  %.not677 = icmp eq i64 %53, 0
  br i1 %.not677, label %54, label %.thread

54:                                               ; preds = %52
  %55 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #7
  %.not678 = icmp eq i64 %55, 0
  br i1 %.not678, label %56, label %.thread

56:                                               ; preds = %54
  store i64 -1, ptr %24, align 8, !tbaa !5
  br label %.critedge.thread

.thread:                                          ; preds = %52, %25, %54
  %.0606724 = phi i64 [ 3, %54 ], [ 2, %52 ], [ 1, %25 ]
  %57 = phi i1 [ true, %54 ], [ false, %52 ], [ false, %25 ]
  %58 = phi i1 [ false, %54 ], [ true, %52 ], [ false, %25 ]
  %59 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.3) #7
  %.not679 = icmp eq i64 %59, 0
  br i1 %.not679, label %60, label %63

60:                                               ; preds = %.thread
  %61 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.4) #7
  %.not680 = icmp eq i64 %61, 0
  br i1 %.not680, label %62, label %63

62:                                               ; preds = %60
  store i64 -2, ptr %24, align 8, !tbaa !5
  br label %.critedge.thread

63:                                               ; preds = %60, %.thread
  %64 = load i64, ptr %2, align 8, !tbaa !5
  %65 = icmp slt i64 %64, 0
  br i1 %65, label %66, label %67

66:                                               ; preds = %63
  store i64 -3, ptr %24, align 8, !tbaa !5
  br label %.critedge.thread

67:                                               ; preds = %63
  br i1 %58, label %68, label %73

68:                                               ; preds = %67
  %69 = load double, ptr %3, align 8, !tbaa !9
  %70 = load double, ptr %4, align 8, !tbaa !9
  %71 = fcmp ult double %69, %70
  br i1 %71, label %.critedge, label %72

72:                                               ; preds = %68
  store i64 -5, ptr %24, align 8, !tbaa !5
  br label %.critedge.thread

73:                                               ; preds = %67
  br i1 %57, label %74, label %.critedge

74:                                               ; preds = %73
  %75 = load i64, ptr %5, align 8, !tbaa !5
  %76 = icmp slt i64 %75, 1
  %spec.select = tail call i64 @llvm.umax.i64(i64 %64, i64 1)
  %77 = icmp ugt i64 %75, %spec.select
  %or.cond = or i1 %76, %77
  br i1 %or.cond, label %78, label %79

78:                                               ; preds = %74
  store i64 -6, ptr %24, align 8, !tbaa !5
  br label %.critedge.thread

79:                                               ; preds = %74
  %80 = load i64, ptr %6, align 8, !tbaa !5
  %.716 = tail call i64 @llvm.umin.i64(i64 %64, i64 %75)
  %81 = icmp slt i64 %80, %.716
  %82 = icmp ugt i64 %80, %64
  %or.cond736 = or i1 %81, %82
  br i1 %or.cond736, label %83, label %.critedge

83:                                               ; preds = %79
  store i64 -7, ptr %24, align 8, !tbaa !5
  br label %.critedge.thread

.critedge:                                        ; preds = %79, %73, %68
  %.pr = load i64, ptr %24, align 8, !tbaa !5
  %.not682 = icmp eq i64 %.pr, 0
  br i1 %.not682, label %84, label %.critedge.thread

84:                                               ; preds = %.critedge
  store i64 0, ptr %15, align 8, !tbaa !5
  %85 = load i64, ptr %2, align 8, !tbaa !5
  %86 = icmp eq i64 %85, 0
  br i1 %86, label %.critedge.thread, label %87

87:                                               ; preds = %84
  br i1 %57, label %88, label %94

88:                                               ; preds = %87
  %89 = load i64, ptr %5, align 8, !tbaa !5
  %90 = icmp eq i64 %89, 1
  br i1 %90, label %91, label %94

91:                                               ; preds = %88
  %92 = load i64, ptr %6, align 8, !tbaa !5
  %93 = icmp eq i64 %92, %85
  %spec.select717 = select i1 %93, i64 1, i64 3
  br label %94

94:                                               ; preds = %91, %88, %87
  %.1607 = phi i64 [ 3, %88 ], [ %.0606724, %87 ], [ %spec.select717, %91 ]
  %95 = tail call double @dlamch_(ptr noundef nonnull @.str.5) #7
  %96 = tail call double @dlamch_(ptr noundef nonnull @.str.6) #7
  %97 = load i64, ptr %2, align 8, !tbaa !5
  %98 = icmp eq i64 %97, 1
  br i1 %98, label %99, label %115

99:                                               ; preds = %94
  switch i64 %.1607, label %default.unreachable [
    i64 1, label %113
    i64 2, label %100
    i64 3, label %107
  ]

100:                                              ; preds = %99
  %101 = load double, ptr %9, align 8, !tbaa !9
  %102 = load double, ptr %3, align 8, !tbaa !9
  %103 = fcmp ogt double %101, %102
  br i1 %103, label %104, label %.critedge.thread

104:                                              ; preds = %100
  %105 = load double, ptr %4, align 8, !tbaa !9
  %106 = fcmp ugt double %101, %105
  br i1 %106, label %.critedge.thread, label %113

107:                                              ; preds = %99
  %108 = load i64, ptr %5, align 8, !tbaa !5
  %109 = icmp eq i64 %108, 1
  br i1 %109, label %110, label %.critedge.thread

110:                                              ; preds = %107
  %111 = load i64, ptr %6, align 8, !tbaa !5
  %112 = icmp eq i64 %111, 1
  br i1 %112, label %113, label %.critedge.thread

113:                                              ; preds = %99, %110, %104
  store i64 1, ptr %15, align 8, !tbaa !5
  %114 = load double, ptr %9, align 8, !tbaa !9
  store double %114, ptr %16, align 8, !tbaa !9
  store double 0.000000e+00, ptr %17, align 8, !tbaa !9
  store i64 1, ptr %20, align 8, !tbaa !5
  store i64 1, ptr %21, align 8, !tbaa !5
  br label %.critedge.thread

115:                                              ; preds = %94
  %116 = tail call i64 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.8, ptr noundef nonnull %2, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1) #7
  %117 = icmp slt i64 %116, 2
  %spec.store.select = select i1 %117, i64 0, i64 %116
  store i64 %spec.store.select, ptr %34, align 8
  %118 = load double, ptr %9, align 8, !tbaa !9
  %119 = load i64, ptr %2, align 8, !tbaa !5
  %.not683750 = icmp slt i64 %119, 1
  %120 = insertelement <2 x double> poison, double %118, i64 0
  %121 = shufflevector <2 x double> %120, <2 x double> poison, <2 x i32> zeroinitializer
  br i1 %.not683750, label %._crit_edge, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %115
  %xtraiter = and i64 %119, 1
  %122 = icmp eq i64 %119, 1
  br i1 %122, label %._crit_edge.loopexit.unr-lcssa, label %.lr.ph.preheader.new

.lr.ph.preheader.new:                             ; preds = %.lr.ph.preheader
  %unroll_iter = and i64 %119, 9223372036854775806
  %invariant.gep = getelementptr i8, ptr %50, i64 -8
  %invariant.gep970 = getelementptr i8, ptr %50, i64 8
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph, %.lr.ph.preheader.new
  %.0654751 = phi i64 [ 1, %.lr.ph.preheader.new ], [ %135, %.lr.ph ]
  %123 = phi <2 x double> [ %121, %.lr.ph.preheader.new ], [ %134, %.lr.ph ]
  %niter = phi i64 [ 0, %.lr.ph.preheader.new ], [ %niter.next.1, %.lr.ph ]
  %.idx712 = shl i64 %.0654751, 4
  %gep = getelementptr i8, ptr %invariant.gep, i64 %.idx712
  %124 = load <2 x double>, ptr %gep, align 8, !tbaa !9
  %125 = shufflevector <2 x double> %123, <2 x double> %124, <2 x i32> <i32 0, i32 3>
  %126 = shufflevector <2 x double> %124, <2 x double> %123, <2 x i32> <i32 0, i32 3>
  %127 = fcmp ole <2 x double> %125, %126
  %128 = select <2 x i1> %127, <2 x double> %123, <2 x double> %124
  %129 = shl i64 %.0654751, 4
  %gep971 = getelementptr i8, ptr %invariant.gep970, i64 %129
  %130 = load <2 x double>, ptr %gep971, align 8, !tbaa !9
  %131 = shufflevector <2 x double> %128, <2 x double> %130, <2 x i32> <i32 0, i32 3>
  %132 = shufflevector <2 x double> %130, <2 x double> %128, <2 x i32> <i32 0, i32 3>
  %133 = fcmp ole <2 x double> %131, %132
  %134 = select <2 x i1> %133, <2 x double> %128, <2 x double> %130
  %135 = add nuw i64 %.0654751, 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.loopexit.unr-lcssa, label %.lr.ph, !llvm.loop !11

._crit_edge.loopexit.unr-lcssa:                   ; preds = %.lr.ph, %.lr.ph.preheader
  %.lcssa943.ph = phi <2 x double> [ poison, %.lr.ph.preheader ], [ %134, %.lr.ph ]
  %.0654751.unr = phi i64 [ 1, %.lr.ph.preheader ], [ %135, %.lr.ph ]
  %.unr = phi <2 x double> [ %121, %.lr.ph.preheader ], [ %134, %.lr.ph ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge, label %.lr.ph.epil

.lr.ph.epil:                                      ; preds = %._crit_edge.loopexit.unr-lcssa
  %.idx712.epil = shl i64 %.0654751.unr, 4
  %136 = getelementptr i8, ptr %50, i64 %.idx712.epil
  %137 = getelementptr i8, ptr %136, i64 -8
  %138 = load <2 x double>, ptr %137, align 8, !tbaa !9
  %139 = shufflevector <2 x double> %.unr, <2 x double> %138, <2 x i32> <i32 0, i32 3>
  %140 = shufflevector <2 x double> %138, <2 x double> %.unr, <2 x i32> <i32 0, i32 3>
  %141 = fcmp ole <2 x double> %139, %140
  %142 = select <2 x i1> %141, <2 x double> %.unr, <2 x double> %138
  br label %._crit_edge

._crit_edge:                                      ; preds = %.lr.ph.epil, %._crit_edge.loopexit.unr-lcssa, %115
  %143 = phi <2 x double> [ %121, %115 ], [ %.lcssa943.ph, %._crit_edge.loopexit.unr-lcssa ], [ %142, %.lr.ph.epil ]
  %144 = fcmp oge <2 x double> %143, zeroinitializer
  %145 = fneg <2 x double> %143
  %146 = select <2 x i1> %144, <2 x double> %143, <2 x double> %145
  %147 = extractelement <2 x double> %146, i64 0
  %148 = extractelement <2 x double> %146, i64 1
  %149 = fcmp oge double %147, %148
  %150 = select i1 %149, double %147, double %148
  %151 = fmul double %150, 2.000000e+00
  %152 = fmul double %95, %151
  %153 = sitofp i64 %119 to double
  %154 = fneg double %152
  %155 = load double, ptr %12, align 8, !tbaa !9
  %156 = fneg double %155
  %157 = insertelement <2 x double> poison, double %154, i64 0
  %158 = insertelement <2 x double> %157, double %152, i64 1
  %159 = insertelement <2 x double> poison, double %153, i64 0
  %160 = shufflevector <2 x double> %159, <2 x double> poison, <2 x i32> zeroinitializer
  %161 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %158, <2 x double> %160, <2 x double> %143)
  %162 = insertelement <2 x double> poison, double %156, i64 0
  %163 = insertelement <2 x double> %162, double %155, i64 1
  %164 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %163, <2 x double> <double 4.000000e+00, double 4.000000e+00>, <2 x double> %161)
  %165 = load double, ptr %8, align 8, !tbaa !9
  store double %165, ptr %41, align 8, !tbaa !9
  %166 = fmul double %155, 4.000000e+00
  %167 = tail call double @llvm.fmuladd.f64(double %96, double 4.000000e+00, double %166)
  store double %167, ptr %39, align 8, !tbaa !9
  %168 = icmp eq i64 %.1607, 3
  br i1 %168, label %169, label %233

169:                                              ; preds = %._crit_edge
  %170 = fadd double %150, %155
  %171 = tail call double @log(double noundef %170) #7
  %172 = load double, ptr %12, align 8, !tbaa !9
  %173 = tail call double @log(double noundef %172) #7
  %174 = fsub double %171, %173
  %175 = fdiv double %174, 0x3FE62E42FEFA39EF
  %176 = fptosi double %175 to i64
  %177 = add nsw i64 %176, 2
  store i64 %177, ptr %40, align 8, !tbaa !5
  %178 = load i64, ptr %2, align 8, !tbaa !5
  %179 = getelementptr double, ptr %22, i64 %178
  %180 = extractelement <2 x double> %164, i64 0
  store double %180, ptr %179, align 8, !tbaa !9
  %181 = getelementptr double, ptr %44, i64 %178
  %182 = getelementptr i8, ptr %181, i64 16
  store <2 x double> %164, ptr %182, align 8, !tbaa !9
  %183 = getelementptr i8, ptr %181, i64 32
  %184 = extractelement <2 x double> %164, i64 1
  store double %184, ptr %183, align 8, !tbaa !9
  %185 = getelementptr i8, ptr %181, i64 40
  store <2 x double> %164, ptr %185, align 8, !tbaa !9
  %186 = getelementptr inbounds i8, ptr %23, i64 8
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %23, i8 -1, i64 16, i1 false)
  %187 = load i64, ptr %2, align 8, !tbaa !5
  %188 = add nsw i64 %187, 1
  %189 = getelementptr inbounds i8, ptr %23, i64 16
  store i64 %188, ptr %189, align 8, !tbaa !5
  %190 = load i64, ptr %2, align 8, !tbaa !5
  %191 = add nsw i64 %190, 1
  %192 = getelementptr inbounds i8, ptr %23, i64 24
  store i64 %191, ptr %192, align 8, !tbaa !5
  %193 = load i64, ptr %5, align 8, !tbaa !5
  %194 = add nsw i64 %193, -1
  %195 = getelementptr inbounds i8, ptr %23, i64 32
  store i64 %194, ptr %195, align 8, !tbaa !5
  %196 = load i64, ptr %6, align 8, !tbaa !5
  %197 = getelementptr inbounds i8, ptr %23, i64 40
  store i64 %196, ptr %197, align 8, !tbaa !5
  %198 = load i64, ptr %2, align 8, !tbaa !5
  %199 = getelementptr double, ptr %22, i64 %198
  %200 = getelementptr double, ptr %44, i64 %198
  %201 = getelementptr i8, ptr %200, i64 40
  %202 = call i32 @dlaebz_(ptr noundef nonnull @c__3, ptr noundef nonnull %40, ptr noundef nonnull %2, ptr noundef nonnull @c__2, ptr noundef nonnull @c__2, ptr noundef nonnull %34, ptr noundef nonnull %39, ptr noundef nonnull %41, ptr noundef nonnull %12, ptr noundef nonnull %9, ptr noundef %10, ptr noundef %11, ptr noundef nonnull %195, ptr noundef %199, ptr noundef %201, ptr noundef nonnull %37, ptr noundef nonnull %23, ptr noundef %16, ptr noundef %20, ptr noundef nonnull %38) #7
  %203 = load i64, ptr %38, align 8, !tbaa !5
  %.not684 = icmp eq i64 %203, 0
  br i1 %.not684, label %205, label %204

204:                                              ; preds = %169
  store i64 %203, ptr %24, align 8, !tbaa !5
  br label %.critedge.thread

205:                                              ; preds = %169
  %206 = load i64, ptr %197, align 8, !tbaa !5
  %207 = load i64, ptr %6, align 8, !tbaa !5
  %208 = icmp eq i64 %206, %207
  %209 = load i64, ptr %2, align 8, !tbaa !5
  br i1 %208, label %210, label %217

210:                                              ; preds = %205
  %211 = getelementptr double, ptr %22, i64 %209
  %212 = load double, ptr %211, align 8, !tbaa !9
  store double %212, ptr %18, align 8, !tbaa !9
  %213 = getelementptr double, ptr %44, i64 %209
  %214 = getelementptr i8, ptr %213, i64 24
  %215 = getelementptr i8, ptr %213, i64 32
  %216 = getelementptr i8, ptr %213, i64 16
  br label %224

217:                                              ; preds = %205
  %218 = getelementptr double, ptr %44, i64 %209
  %219 = getelementptr i8, ptr %218, i64 16
  %220 = load double, ptr %219, align 8, !tbaa !9
  store double %220, ptr %18, align 8, !tbaa !9
  %221 = getelementptr i8, ptr %218, i64 32
  %222 = getelementptr i8, ptr %218, i64 24
  %223 = getelementptr double, ptr %22, i64 %209
  br label %224

224:                                              ; preds = %217, %210
  %.sink.in = phi ptr [ %215, %210 ], [ %222, %217 ]
  %.0627.in = phi ptr [ %23, %210 ], [ %186, %217 ]
  %.0625.in = phi ptr [ %214, %210 ], [ %221, %217 ]
  %.0623.in = phi ptr [ %216, %210 ], [ %223, %217 ]
  %.0619.in = phi ptr [ %192, %210 ], [ %189, %217 ]
  %.0625 = load double, ptr %.0625.in, align 8, !tbaa !9
  %.0627 = load i64, ptr %.0627.in, align 8, !tbaa !5
  %.sink = load double, ptr %.sink.in, align 8, !tbaa !9
  store double %.sink, ptr %19, align 8
  %225 = icmp slt i64 %.0627, 0
  br i1 %225, label %232, label %226

226:                                              ; preds = %224
  %.0623 = load double, ptr %.0623.in, align 8, !tbaa !9
  %.0619 = load i64, ptr %.0619.in, align 8, !tbaa !5
  %227 = load i64, ptr %2, align 8, !tbaa !5
  %228 = icmp sge i64 %.0627, %227
  %229 = icmp slt i64 %.0619, 1
  %230 = icmp sgt i64 %.0619, %227
  %231 = or i1 %229, %230
  %or.cond718 = select i1 %228, i1 true, i1 %231
  br i1 %or.cond718, label %232, label %240

232:                                              ; preds = %226, %224
  store i64 4, ptr %24, align 8, !tbaa !5
  br label %.critedge.thread

233:                                              ; preds = %._crit_edge
  switch i64 %.1607, label %240 [
    i64 2, label %234
    i64 1, label %237
  ]

234:                                              ; preds = %233
  %235 = load double, ptr %3, align 8, !tbaa !9
  store double %235, ptr %18, align 8, !tbaa !9
  %236 = load double, ptr %4, align 8, !tbaa !9
  br label %.sink.split

237:                                              ; preds = %233
  %238 = extractelement <2 x double> %164, i64 0
  store double %238, ptr %18, align 8, !tbaa !9
  %239 = extractelement <2 x double> %164, i64 1
  br label %.sink.split

.sink.split:                                      ; preds = %237, %234
  %.sink886 = phi double [ %236, %234 ], [ %239, %237 ]
  store double %.sink886, ptr %19, align 8, !tbaa !9
  br label %240

240:                                              ; preds = %.sink.split, %233, %226
  %.1626 = phi double [ %.0625, %226 ], [ undef, %233 ], [ undef, %.sink.split ]
  %.1624 = phi double [ %.0623, %226 ], [ undef, %233 ], [ undef, %.sink.split ]
  store i64 0, ptr %15, align 8, !tbaa !5
  store i64 0, ptr %24, align 8, !tbaa !5
  %241 = load i64, ptr %13, align 8, !tbaa !5
  %.not685776 = icmp slt i64 %241, 1
  br i1 %.not685776, label %._crit_edge785, label %.lr.ph784

.lr.ph784:                                        ; preds = %240
  %242 = icmp sgt i64 %.1607, 1
  %243 = icmp eq i64 %.1607, 1
  %244 = sub i64 %33, %32
  %245 = sub i64 %31, %30
  %invariant.gep976 = getelementptr i8, ptr %50, i64 -8
  %invariant.gep972 = getelementptr i8, ptr %50, i64 8
  %invariant.gep974 = getelementptr i8, ptr %50, i64 -8
  %diff.check = icmp ult i64 %244, 32
  %diff.check896 = icmp ult i64 %245, 32
  %conflict.rdx = or i1 %diff.check, %diff.check896
  br label %246

246:                                              ; preds = %.lr.ph784, %419
  %.0598782 = phi i64 [ 0, %.lr.ph784 ], [ %.3, %419 ]
  %.0615780 = phi i64 [ 1, %.lr.ph784 ], [ %420, %419 ]
  %.0616779 = phi i64 [ 0, %.lr.ph784 ], [ %248, %419 ]
  %.1620778 = phi i64 [ 0, %.lr.ph784 ], [ %.3622, %419 ]
  %.1628777 = phi i64 [ 0, %.lr.ph784 ], [ %.3630, %419 ]
  %247 = getelementptr inbounds i64, ptr %49, i64 %.0615780
  %248 = load i64, ptr %247, align 8, !tbaa !5
  %249 = sub nsw i64 %248, %.0616779
  store i64 %249, ptr %36, align 8, !tbaa !5
  %250 = icmp eq i64 %249, 1
  br i1 %250, label %251, label %272

251:                                              ; preds = %246
  %252 = load double, ptr %18, align 8, !tbaa !9
  %253 = getelementptr double, ptr %9, i64 %.0616779
  %254 = load double, ptr %253, align 8, !tbaa !9
  %255 = load double, ptr %12, align 8, !tbaa !9
  %256 = fsub double %254, %255
  %257 = fcmp oge double %252, %256
  %258 = zext i1 %257 to i64
  %.2629 = add nsw i64 %.1628777, %258
  %259 = load double, ptr %19, align 8, !tbaa !9
  %260 = fcmp ult double %259, %256
  %not. = xor i1 %260, true
  %261 = zext i1 %not. to i64
  %.2621 = add nsw i64 %.1620778, %261
  br i1 %243, label %264, label %262

262:                                              ; preds = %251
  %263 = fcmp uge double %252, %256
  %brmerge = select i1 %263, i1 true, i1 %260
  %.2621.mux = select i1 %263, i64 %.2621, i64 %.1620778
  br i1 %brmerge, label %419, label %264

264:                                              ; preds = %262, %251
  %265 = load i64, ptr %15, align 8, !tbaa !5
  %266 = add nsw i64 %265, 1
  store i64 %266, ptr %15, align 8, !tbaa !5
  %267 = getelementptr double, ptr %16, i64 %265
  store double %254, ptr %267, align 8, !tbaa !9
  %268 = getelementptr double, ptr %17, i64 %265
  store double 0.000000e+00, ptr %268, align 8, !tbaa !9
  %269 = getelementptr i64, ptr %20, i64 %265
  store i64 %.0615780, ptr %269, align 8, !tbaa !5
  %270 = load i64, ptr %15, align 8, !tbaa !5
  %271 = getelementptr inbounds i64, ptr %45, i64 %270
  store i64 1, ptr %271, align 8, !tbaa !5
  br label %419

272:                                              ; preds = %246
  %273 = getelementptr double, ptr %9, i64 %.0616779
  %274 = load double, ptr %273, align 8, !tbaa !9
  %.not704.not755 = icmp slt i64 %.0616779, %248
  %275 = insertelement <2 x double> poison, double %274, i64 0
  %276 = shufflevector <2 x double> %275, <2 x double> poison, <2 x i32> zeroinitializer
  br i1 %.not704.not755, label %.lr.ph760.preheader, label %._crit_edge761

.lr.ph760.preheader:                              ; preds = %272
  %.neg = add i64 %.0616779, 1
  %xtraiter945 = and i64 %249, 1
  %lcmp.mod946.not = icmp eq i64 %xtraiter945, 0
  br i1 %lcmp.mod946.not, label %.lr.ph760.prol.loopexit, label %.lr.ph760.prol

.lr.ph760.prol:                                   ; preds = %.lr.ph760.preheader
  %.0651.prol = add nsw i64 %.0616779, 1
  %.idx710.prol = shl i64 %.0651.prol, 4
  %gep977 = getelementptr i8, ptr %invariant.gep976, i64 %.idx710.prol
  %277 = load <2 x double>, ptr %gep977, align 8, !tbaa !9
  %278 = insertelement <2 x double> %277, double %274, i64 0
  %279 = shufflevector <2 x double> %277, <2 x double> %276, <2 x i32> <i32 0, i32 3>
  %280 = fcmp ole <2 x double> %278, %279
  %281 = select <2 x i1> %280, <2 x double> %276, <2 x double> %277
  br label %.lr.ph760.prol.loopexit

.lr.ph760.prol.loopexit:                          ; preds = %.lr.ph760.prol, %.lr.ph760.preheader
  %.lcssa939.unr = phi <2 x double> [ poison, %.lr.ph760.preheader ], [ %281, %.lr.ph760.prol ]
  %.0651.in756.unr = phi i64 [ %.0616779, %.lr.ph760.preheader ], [ %.0651.prol, %.lr.ph760.prol ]
  %.unr947 = phi <2 x double> [ %276, %.lr.ph760.preheader ], [ %281, %.lr.ph760.prol ]
  %282 = icmp eq i64 %248, %.neg
  br i1 %282, label %._crit_edge761, label %.lr.ph760

.lr.ph760:                                        ; preds = %.lr.ph760.prol.loopexit, %.lr.ph760
  %.0651.in756 = phi i64 [ %.0651.1, %.lr.ph760 ], [ %.0651.in756.unr, %.lr.ph760.prol.loopexit ]
  %283 = phi <2 x double> [ %293, %.lr.ph760 ], [ %.unr947, %.lr.ph760.prol.loopexit ]
  %.0651 = shl i64 %.0651.in756, 4
  %gep973 = getelementptr i8, ptr %invariant.gep972, i64 %.0651
  %284 = load <2 x double>, ptr %gep973, align 8, !tbaa !9
  %285 = shufflevector <2 x double> %283, <2 x double> %284, <2 x i32> <i32 0, i32 3>
  %286 = shufflevector <2 x double> %284, <2 x double> %283, <2 x i32> <i32 0, i32 3>
  %287 = fcmp ole <2 x double> %285, %286
  %288 = select <2 x i1> %287, <2 x double> %283, <2 x double> %284
  %.0651.1 = add nsw i64 %.0651.in756, 2
  %.idx710.1 = shl i64 %.0651.1, 4
  %gep975 = getelementptr i8, ptr %invariant.gep974, i64 %.idx710.1
  %289 = load <2 x double>, ptr %gep975, align 8, !tbaa !9
  %290 = shufflevector <2 x double> %288, <2 x double> %289, <2 x i32> <i32 0, i32 3>
  %291 = shufflevector <2 x double> %289, <2 x double> %288, <2 x i32> <i32 0, i32 3>
  %292 = fcmp ole <2 x double> %290, %291
  %293 = select <2 x i1> %292, <2 x double> %288, <2 x double> %289
  %exitcond856.not.1 = icmp eq i64 %.0651.1, %248
  br i1 %exitcond856.not.1, label %._crit_edge761, label %.lr.ph760, !llvm.loop !13

._crit_edge761:                                   ; preds = %.lr.ph760.prol.loopexit, %.lr.ph760, %272
  %294 = phi <2 x double> [ %276, %272 ], [ %.lcssa939.unr, %.lr.ph760.prol.loopexit ], [ %293, %.lr.ph760 ]
  %295 = sitofp i64 %249 to double
  %296 = load double, ptr %12, align 8, !tbaa !9
  %297 = fneg double %296
  %298 = insertelement <2 x double> poison, double %295, i64 0
  %299 = shufflevector <2 x double> %298, <2 x double> poison, <2 x i32> zeroinitializer
  %300 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %158, <2 x double> %299, <2 x double> %294)
  %301 = insertelement <2 x double> poison, double %297, i64 0
  %302 = insertelement <2 x double> %301, double %296, i64 1
  %303 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %302, <2 x double> <double 2.000000e+00, double 2.000000e+00>, <2 x double> %300)
  br i1 %242, label %304, label %322

304:                                              ; preds = %._crit_edge761
  %305 = load double, ptr %18, align 8, !tbaa !9
  %306 = extractelement <2 x double> %303, i64 1
  %307 = fcmp olt double %306, %305
  br i1 %307, label %308, label %311

308:                                              ; preds = %304
  %309 = add nsw i64 %249, %.1628777
  %310 = add nsw i64 %249, %.1620778
  br label %419

311:                                              ; preds = %304
  %312 = load double, ptr %19, align 8, !tbaa !9
  %313 = insertelement <2 x double> %303, double %312, i64 1
  %314 = insertelement <2 x double> %303, double %305, i64 0
  %315 = fcmp oge <2 x double> %313, %314
  %316 = insertelement <2 x double> poison, double %305, i64 0
  %317 = insertelement <2 x double> %316, double %312, i64 1
  %318 = select <2 x i1> %315, <2 x double> %303, <2 x double> %317
  %319 = extractelement <2 x double> %318, i64 0
  %320 = extractelement <2 x double> %318, i64 1
  %321 = fcmp ult double %319, %320
  br i1 %321, label %322, label %419

322:                                              ; preds = %311, %._crit_edge761
  %323 = phi <2 x double> [ %318, %311 ], [ %303, %._crit_edge761 ]
  %324 = load i64, ptr %2, align 8, !tbaa !5
  %325 = getelementptr double, ptr %22, i64 %324
  %326 = extractelement <2 x double> %323, i64 0
  store double %326, ptr %325, align 8, !tbaa !9
  %327 = getelementptr double, ptr %325, i64 %249
  %328 = extractelement <2 x double> %323, i64 1
  store double %328, ptr %327, align 8, !tbaa !9
  %329 = getelementptr double, ptr %10, i64 %.0616779
  %330 = getelementptr double, ptr %11, i64 %.0616779
  %.idx = shl i64 %249, 4
  %331 = getelementptr i8, ptr %325, i64 %.idx
  %332 = load i64, ptr %15, align 8, !tbaa !5
  %333 = getelementptr double, ptr %16, i64 %332
  %334 = getelementptr i64, ptr %20, i64 %332
  %335 = call i32 @dlaebz_(ptr noundef nonnull @c__1, ptr noundef nonnull @c__0, ptr noundef nonnull %36, ptr noundef nonnull %36, ptr noundef nonnull @c__1, ptr noundef nonnull %34, ptr noundef nonnull %39, ptr noundef nonnull %41, ptr noundef nonnull %12, ptr noundef nonnull %273, ptr noundef %329, ptr noundef %330, ptr noundef nonnull %42, ptr noundef nonnull %325, ptr noundef %331, ptr noundef nonnull %35, ptr noundef %23, ptr noundef %333, ptr noundef %334, ptr noundef nonnull %38) #7
  %336 = load i64, ptr %38, align 8, !tbaa !5
  %.not705 = icmp eq i64 %336, 0
  br i1 %.not705, label %338, label %337

337:                                              ; preds = %322
  store i64 %336, ptr %24, align 8, !tbaa !5
  br label %.critedge.thread

338:                                              ; preds = %322
  %339 = load i64, ptr %23, align 8, !tbaa !5
  %340 = add nsw i64 %339, %.1628777
  %341 = load i64, ptr %36, align 8, !tbaa !5
  %342 = getelementptr i64, ptr %23, i64 %341
  %343 = load i64, ptr %342, align 8, !tbaa !5
  %344 = add nsw i64 %343, %.1620778
  %345 = load i64, ptr %15, align 8, !tbaa !5
  %346 = sub nsw i64 %345, %339
  %347 = fsub double %328, %326
  %348 = load double, ptr %12, align 8, !tbaa !9
  %349 = fadd double %347, %348
  %350 = call double @log(double noundef %349) #7
  %351 = load double, ptr %12, align 8, !tbaa !9
  %352 = call double @log(double noundef %351) #7
  %353 = fsub double %350, %352
  %354 = fdiv double %353, 0x3FE62E42FEFA39EF
  %355 = fptosi double %354 to i64
  %356 = add nsw i64 %355, 2
  store i64 %356, ptr %40, align 8, !tbaa !5
  %357 = load i64, ptr %2, align 8, !tbaa !5
  %358 = getelementptr double, ptr %22, i64 %357
  %359 = load i64, ptr %36, align 8, !tbaa !5
  %.idx706 = shl i64 %359, 4
  %360 = getelementptr i8, ptr %358, i64 %.idx706
  %361 = load i64, ptr %15, align 8, !tbaa !5
  %362 = getelementptr double, ptr %16, i64 %361
  %363 = getelementptr i64, ptr %20, i64 %361
  %364 = call i32 @dlaebz_(ptr noundef nonnull @c__2, ptr noundef nonnull %40, ptr noundef nonnull %36, ptr noundef nonnull %36, ptr noundef nonnull @c__1, ptr noundef nonnull %34, ptr noundef nonnull %39, ptr noundef nonnull %41, ptr noundef nonnull %12, ptr noundef nonnull %273, ptr noundef %329, ptr noundef %330, ptr noundef nonnull %42, ptr noundef %358, ptr noundef %360, ptr noundef nonnull %37, ptr noundef nonnull %23, ptr noundef %362, ptr noundef %363, ptr noundef nonnull %38) #7
  %365 = load i64, ptr %38, align 8, !tbaa !5
  %.not707 = icmp eq i64 %365, 0
  br i1 %.not707, label %367, label %366

366:                                              ; preds = %338
  store i64 %365, ptr %24, align 8, !tbaa !5
  br label %.critedge.thread

367:                                              ; preds = %338
  %368 = load i64, ptr %37, align 8, !tbaa !5
  %.not708769 = icmp slt i64 %368, 1
  br i1 %.not708769, label %._crit_edge774, label %.lr.ph773

.lr.ph773:                                        ; preds = %367
  %369 = load i64, ptr %36, align 8, !tbaa !5
  %370 = sub nsw i64 0, %.0615780
  %371 = add i64 %346, 1
  %372 = add i64 %345, 1
  %373 = sub i64 %372, %339
  %broadcast.splatinsert900 = insertelement <2 x i64> poison, i64 %346, i64 0
  %broadcast.splat901 = shufflevector <2 x i64> %broadcast.splatinsert900, <2 x i64> poison, <2 x i32> zeroinitializer
  br label %374

374:                                              ; preds = %.lr.ph773, %._crit_edge768
  %.1599771 = phi i64 [ %.0598782, %.lr.ph773 ], [ %.2, %._crit_edge768 ]
  %.1652770 = phi i64 [ 1, %.lr.ph773 ], [ %415, %._crit_edge768 ]
  %375 = load i64, ptr %2, align 8, !tbaa !5
  %376 = getelementptr double, ptr %44, i64 %.1652770
  %377 = getelementptr double, ptr %376, i64 %375
  %378 = load double, ptr %377, align 8, !tbaa !9
  %379 = getelementptr double, ptr %376, i64 %369
  %380 = getelementptr double, ptr %379, i64 %375
  %381 = load double, ptr %380, align 8, !tbaa !9
  %382 = fadd double %378, %381
  %383 = fmul double %382, 5.000000e-01
  %384 = fsub double %378, %381
  %385 = fcmp oge double %384, 0.000000e+00
  %386 = fneg double %384
  %387 = select i1 %385, double %384, double %386
  %388 = fmul double %387, 5.000000e-01
  %389 = icmp sgt i64 %.1652770, %368
  %.0650 = select i1 %389, i64 %370, i64 %.0615780
  %.2 = select i1 %389, i64 1, i64 %.1599771
  %390 = getelementptr i64, ptr %43, i64 %.1652770
  %391 = getelementptr i64, ptr %390, i64 %369
  %392 = load i64, ptr %391, align 8, !tbaa !5
  %393 = add nsw i64 %392, %346
  %394 = load i64, ptr %390, align 8, !tbaa !5
  %395 = add i64 %371, %394
  %.not709764 = icmp sgt i64 %395, %393
  br i1 %.not709764, label %._crit_edge768, label %.lr.ph767.preheader

.lr.ph767.preheader:                              ; preds = %374
  %396 = add i64 %373, %392
  %397 = sub i64 %392, %394
  %min.iters.check = icmp ult i64 %397, 4
  %brmerge978 = or i1 %min.iters.check, %conflict.rdx
  br i1 %brmerge978, label %.lr.ph767.preheader938, label %vector.ph

vector.ph:                                        ; preds = %.lr.ph767.preheader
  %n.vec = and i64 %397, -4
  %ind.end = add i64 %395, %n.vec
  %.splatinsert = insertelement <2 x i64> poison, i64 %395, i64 0
  %.splat = shufflevector <2 x i64> %.splatinsert, <2 x i64> poison, <2 x i32> zeroinitializer
  %induction = add <2 x i64> %.splat, <i64 0, i64 1>
  %broadcast.splatinsert = insertelement <2 x double> poison, double %383, i64 0
  %broadcast.splat = shufflevector <2 x double> %broadcast.splatinsert, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert898 = insertelement <2 x double> poison, double %388, i64 0
  %broadcast.splat899 = shufflevector <2 x double> %broadcast.splatinsert898, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert902 = insertelement <2 x i64> poison, i64 %.0650, i64 0
  %broadcast.splat903 = shufflevector <2 x i64> %broadcast.splatinsert902, <2 x i64> poison, <2 x i32> zeroinitializer
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %vec.ind = phi <2 x i64> [ %induction, %vector.ph ], [ %vec.ind.next, %vector.body ]
  %step.add = add <2 x i64> %vec.ind, <i64 2, i64 2>
  %offset.idx = add i64 %395, %index
  %398 = getelementptr inbounds double, ptr %48, i64 %offset.idx
  %399 = getelementptr inbounds i8, ptr %398, i64 16
  store <2 x double> %broadcast.splat, ptr %398, align 8, !tbaa !9
  store <2 x double> %broadcast.splat, ptr %399, align 8, !tbaa !9
  %400 = getelementptr inbounds double, ptr %47, i64 %offset.idx
  %401 = getelementptr inbounds i8, ptr %400, i64 16
  store <2 x double> %broadcast.splat899, ptr %400, align 8, !tbaa !9
  store <2 x double> %broadcast.splat899, ptr %401, align 8, !tbaa !9
  %402 = sub nsw <2 x i64> %vec.ind, %broadcast.splat901
  %403 = sub nsw <2 x i64> %step.add, %broadcast.splat901
  %404 = getelementptr inbounds i64, ptr %45, i64 %offset.idx
  %405 = getelementptr inbounds i8, ptr %404, i64 16
  store <2 x i64> %402, ptr %404, align 8, !tbaa !5
  store <2 x i64> %403, ptr %405, align 8, !tbaa !5
  %406 = getelementptr inbounds i64, ptr %46, i64 %offset.idx
  %407 = getelementptr inbounds i8, ptr %406, i64 16
  store <2 x i64> %broadcast.splat903, ptr %406, align 8, !tbaa !5
  store <2 x i64> %broadcast.splat903, ptr %407, align 8, !tbaa !5
  %index.next = add nuw i64 %index, 4
  %vec.ind.next = add <2 x i64> %vec.ind, <i64 4, i64 4>
  %408 = icmp eq i64 %index.next, %n.vec
  br i1 %408, label %middle.block, label %vector.body, !llvm.loop !14

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %397, %n.vec
  br i1 %cmp.n, label %._crit_edge768, label %.lr.ph767.preheader938

.lr.ph767.preheader938:                           ; preds = %.lr.ph767.preheader, %middle.block
  %.0642765.ph = phi i64 [ %395, %.lr.ph767.preheader ], [ %ind.end, %middle.block ]
  br label %.lr.ph767

.lr.ph767:                                        ; preds = %.lr.ph767.preheader938, %.lr.ph767
  %.0642765 = phi i64 [ %414, %.lr.ph767 ], [ %.0642765.ph, %.lr.ph767.preheader938 ]
  %409 = getelementptr inbounds double, ptr %48, i64 %.0642765
  store double %383, ptr %409, align 8, !tbaa !9
  %410 = getelementptr inbounds double, ptr %47, i64 %.0642765
  store double %388, ptr %410, align 8, !tbaa !9
  %411 = sub nsw i64 %.0642765, %346
  %412 = getelementptr inbounds i64, ptr %45, i64 %.0642765
  store i64 %411, ptr %412, align 8, !tbaa !5
  %413 = getelementptr inbounds i64, ptr %46, i64 %.0642765
  store i64 %.0650, ptr %413, align 8, !tbaa !5
  %414 = add i64 %.0642765, 1
  %exitcond857.not = icmp eq i64 %414, %396
  br i1 %exitcond857.not, label %._crit_edge768, label %.lr.ph767, !llvm.loop !17

._crit_edge768:                                   ; preds = %.lr.ph767, %middle.block, %374
  %415 = add nuw i64 %.1652770, 1
  %exitcond858.not = icmp eq i64 %.1652770, %368
  br i1 %exitcond858.not, label %._crit_edge774, label %374, !llvm.loop !18

._crit_edge774:                                   ; preds = %._crit_edge768, %367
  %.1599.lcssa = phi i64 [ %.0598782, %367 ], [ %.2, %._crit_edge768 ]
  %416 = load i64, ptr %35, align 8, !tbaa !5
  %417 = load i64, ptr %15, align 8, !tbaa !5
  %418 = add nsw i64 %417, %416
  store i64 %418, ptr %15, align 8, !tbaa !5
  br label %419

419:                                              ; preds = %262, %308, %311, %264, %._crit_edge774
  %.3630 = phi i64 [ %.2629, %264 ], [ %.2629, %262 ], [ %309, %308 ], [ %.1628777, %311 ], [ %340, %._crit_edge774 ]
  %.3622 = phi i64 [ %.2621, %264 ], [ %.2621.mux, %262 ], [ %310, %308 ], [ %.1620778, %311 ], [ %344, %._crit_edge774 ]
  %.3 = phi i64 [ %.0598782, %264 ], [ %.0598782, %262 ], [ %.0598782, %308 ], [ %.0598782, %311 ], [ %.1599.lcssa, %._crit_edge774 ]
  %420 = add nuw i64 %.0615780, 1
  %exitcond859.not = icmp eq i64 %.0615780, %241
  br i1 %exitcond859.not, label %._crit_edge785, label %246, !llvm.loop !19

._crit_edge785:                                   ; preds = %419, %240
  %.1628.lcssa = phi i64 [ 0, %240 ], [ %.3630, %419 ]
  %.1620.lcssa = phi i64 [ 0, %240 ], [ %.3622, %419 ]
  %.0598.lcssa = phi i64 [ 0, %240 ], [ %.3, %419 ]
  br i1 %168, label %421, label %.thread730

421:                                              ; preds = %._crit_edge785
  %422 = load i64, ptr %5, align 8, !tbaa !5
  %423 = xor i64 %.1628.lcssa, -1
  %424 = add i64 %422, %423
  %425 = load i64, ptr %6, align 8, !tbaa !5
  %426 = sub nsw i64 %.1620.lcssa, %425
  %427 = icmp sgt i64 %424, 0
  br i1 %427, label %428, label %453

428:                                              ; preds = %421
  store i64 0, ptr %35, align 8, !tbaa !5
  %429 = load i64, ptr %15, align 8, !tbaa !5
  %.not686789 = icmp slt i64 %429, 1
  br i1 %.not686789, label %._crit_edge794, label %.lr.ph793

.lr.ph793:                                        ; preds = %428, %449
  %.0603791 = phi i64 [ %.1604, %449 ], [ %424, %428 ]
  %.1643790 = phi i64 [ %451, %449 ], [ 1, %428 ]
  %430 = phi i64 [ %450, %449 ], [ 0, %428 ]
  %431 = getelementptr inbounds double, ptr %48, i64 %.1643790
  %432 = load double, ptr %431, align 8, !tbaa !9
  %433 = fcmp ole double %432, %.1626
  %434 = icmp sgt i64 %.0603791, 0
  %or.cond3 = select i1 %433, i1 %434, i1 false
  br i1 %or.cond3, label %435, label %437

435:                                              ; preds = %.lr.ph793
  %436 = add nsw i64 %.0603791, -1
  br label %449

437:                                              ; preds = %.lr.ph793
  %438 = add nsw i64 %430, 1
  store i64 %438, ptr %35, align 8, !tbaa !5
  %439 = getelementptr double, ptr %16, i64 %430
  store double %432, ptr %439, align 8, !tbaa !9
  %440 = getelementptr inbounds double, ptr %47, i64 %.1643790
  %441 = load double, ptr %440, align 8, !tbaa !9
  %442 = getelementptr double, ptr %17, i64 %430
  store double %441, ptr %442, align 8, !tbaa !9
  %443 = getelementptr inbounds i64, ptr %45, i64 %.1643790
  %444 = load i64, ptr %443, align 8, !tbaa !5
  %445 = getelementptr i64, ptr %21, i64 %430
  store i64 %444, ptr %445, align 8, !tbaa !5
  %446 = getelementptr inbounds i64, ptr %46, i64 %.1643790
  %447 = load i64, ptr %446, align 8, !tbaa !5
  %448 = getelementptr i64, ptr %20, i64 %430
  store i64 %447, ptr %448, align 8, !tbaa !5
  br label %449

449:                                              ; preds = %435, %437
  %450 = phi i64 [ %430, %435 ], [ %438, %437 ]
  %.1604 = phi i64 [ %436, %435 ], [ %.0603791, %437 ]
  %451 = add nuw i64 %.1643790, 1
  %exitcond860.not = icmp eq i64 %.1643790, %429
  br i1 %exitcond860.not, label %._crit_edge794, label %.lr.ph793, !llvm.loop !20

._crit_edge794:                                   ; preds = %449, %428
  %452 = phi i64 [ 0, %428 ], [ %450, %449 ]
  %.0603.lcssa = phi i64 [ %424, %428 ], [ %.1604, %449 ]
  store i64 %452, ptr %15, align 8, !tbaa !5
  br label %453

453:                                              ; preds = %._crit_edge794, %421
  %.2605 = phi i64 [ %.0603.lcssa, %._crit_edge794 ], [ %424, %421 ]
  %454 = icmp sgt i64 %426, 0
  br i1 %454, label %455, label %525

455:                                              ; preds = %453
  %456 = load i64, ptr %15, align 8, !tbaa !5
  %457 = add nsw i64 %456, 1
  store i64 %457, ptr %35, align 8, !tbaa !5
  %458 = icmp sgt i64 %456, 0
  br i1 %458, label %.lr.ph800, label %._crit_edge808

.lr.ph800:                                        ; preds = %455, %478
  %.0600798 = phi i64 [ %.1601, %478 ], [ %426, %455 ]
  %.2644797 = phi i64 [ %480, %478 ], [ %456, %455 ]
  %459 = phi i64 [ %479, %478 ], [ %457, %455 ]
  %460 = getelementptr inbounds double, ptr %48, i64 %.2644797
  %461 = load double, ptr %460, align 8, !tbaa !9
  %462 = fcmp oge double %461, %.1624
  %463 = icmp sgt i64 %.0600798, 0
  %or.cond5 = select i1 %462, i1 %463, i1 false
  br i1 %or.cond5, label %464, label %466

464:                                              ; preds = %.lr.ph800
  %465 = add nsw i64 %.0600798, -1
  br label %478

466:                                              ; preds = %.lr.ph800
  %467 = add nsw i64 %459, -1
  store i64 %467, ptr %35, align 8, !tbaa !5
  %468 = getelementptr inbounds double, ptr %48, i64 %467
  store double %461, ptr %468, align 8, !tbaa !9
  %469 = getelementptr inbounds double, ptr %47, i64 %.2644797
  %470 = load double, ptr %469, align 8, !tbaa !9
  %471 = getelementptr inbounds double, ptr %47, i64 %467
  store double %470, ptr %471, align 8, !tbaa !9
  %472 = getelementptr inbounds i64, ptr %45, i64 %.2644797
  %473 = load i64, ptr %472, align 8, !tbaa !5
  %474 = getelementptr inbounds i64, ptr %45, i64 %467
  store i64 %473, ptr %474, align 8, !tbaa !5
  %475 = getelementptr inbounds i64, ptr %46, i64 %.2644797
  %476 = load i64, ptr %475, align 8, !tbaa !5
  %477 = getelementptr inbounds i64, ptr %46, i64 %467
  store i64 %476, ptr %477, align 8, !tbaa !5
  br label %478

478:                                              ; preds = %464, %466
  %479 = phi i64 [ %459, %464 ], [ %467, %466 ]
  %.1601 = phi i64 [ %465, %464 ], [ %.0600798, %466 ]
  %480 = add nsw i64 %.2644797, -1
  %481 = icmp sgt i64 %.2644797, 1
  br i1 %481, label %.lr.ph800, label %._crit_edge801, !llvm.loop !21

._crit_edge801:                                   ; preds = %478
  %.pre = load i64, ptr %15, align 8, !tbaa !5
  %.not687803 = icmp sgt i64 %479, %.pre
  br i1 %.not687803, label %._crit_edge808, label %.lr.ph807.preheader

.lr.ph807.preheader:                              ; preds = %._crit_edge801
  %482 = add i64 %.pre, 1
  %483 = sub i64 %482, %479
  %min.iters.check920 = icmp ult i64 %483, 28
  br i1 %min.iters.check920, label %.lr.ph807.preheader935, label %vector.memcheck904

vector.memcheck904:                               ; preds = %.lr.ph807.preheader
  %484 = add i64 %29, 8
  %485 = shl i64 %479, 3
  %486 = add i64 %485, %28
  %487 = sub i64 %484, %486
  %diff.check905 = icmp ult i64 %487, 16
  %488 = add i64 %29, -8
  %489 = sub i64 %488, %28
  %490 = add i64 %489, %485
  %diff.check906 = icmp ult i64 %490, 16
  %conflict.rdx907 = or i1 %diff.check905, %diff.check906
  %491 = sub i64 %29, %28
  %diff.check908 = icmp ult i64 %491, 16
  %conflict.rdx909 = or i1 %conflict.rdx907, %diff.check908
  %492 = add i64 %27, 8
  %493 = add i64 %485, %26
  %494 = sub i64 %492, %493
  %diff.check910 = icmp ult i64 %494, 16
  %conflict.rdx911 = or i1 %conflict.rdx909, %diff.check910
  %495 = add i64 %27, -8
  %496 = sub i64 %495, %26
  %497 = add i64 %496, %485
  %diff.check912 = icmp ult i64 %497, 16
  %conflict.rdx913 = or i1 %conflict.rdx911, %diff.check912
  %498 = sub i64 %27, %26
  %diff.check914 = icmp ult i64 %498, 16
  %conflict.rdx915 = or i1 %conflict.rdx913, %diff.check914
  %diff.check916 = icmp ult i64 %485, 16
  %conflict.rdx917 = or i1 %conflict.rdx915, %diff.check916
  br i1 %conflict.rdx917, label %.lr.ph807.preheader935, label %vector.ph921

vector.ph921:                                     ; preds = %vector.memcheck904
  %n.vec923 = and i64 %483, -2
  %ind.end925 = add i64 %479, %n.vec923
  br label %vector.body927

vector.body927:                                   ; preds = %vector.body927, %vector.ph921
  %index928 = phi i64 [ 0, %vector.ph921 ], [ %index.next933, %vector.body927 ]
  %offset.idx929 = add i64 %479, %index928
  %499 = getelementptr inbounds double, ptr %48, i64 %offset.idx929
  %wide.load = load <2 x double>, ptr %499, align 8, !tbaa !9
  %500 = getelementptr double, ptr %16, i64 %index928
  store <2 x double> %wide.load, ptr %500, align 8, !tbaa !9
  %501 = getelementptr inbounds double, ptr %47, i64 %offset.idx929
  %wide.load930 = load <2 x double>, ptr %501, align 8, !tbaa !9
  %502 = getelementptr double, ptr %17, i64 %index928
  store <2 x double> %wide.load930, ptr %502, align 8, !tbaa !9
  %503 = getelementptr inbounds i64, ptr %45, i64 %offset.idx929
  %wide.load931 = load <2 x i64>, ptr %503, align 8, !tbaa !5
  %504 = getelementptr i64, ptr %21, i64 %index928
  store <2 x i64> %wide.load931, ptr %504, align 8, !tbaa !5
  %505 = getelementptr inbounds i64, ptr %46, i64 %offset.idx929
  %wide.load932 = load <2 x i64>, ptr %505, align 8, !tbaa !5
  %506 = getelementptr i64, ptr %20, i64 %index928
  store <2 x i64> %wide.load932, ptr %506, align 8, !tbaa !5
  %index.next933 = add nuw i64 %index928, 2
  %507 = icmp eq i64 %index.next933, %n.vec923
  br i1 %507, label %middle.block918, label %vector.body927, !llvm.loop !22

middle.block918:                                  ; preds = %vector.body927
  %cmp.n934 = icmp eq i64 %483, %n.vec923
  br i1 %cmp.n934, label %._crit_edge808.loopexit, label %.lr.ph807.preheader935

.lr.ph807.preheader935:                           ; preds = %middle.block918, %vector.memcheck904, %.lr.ph807.preheader
  %.0631805.ph = phi i64 [ 0, %vector.memcheck904 ], [ 0, %.lr.ph807.preheader ], [ %n.vec923, %middle.block918 ]
  %.3645804.ph = phi i64 [ %479, %vector.memcheck904 ], [ %479, %.lr.ph807.preheader ], [ %ind.end925, %middle.block918 ]
  br label %.lr.ph807

.lr.ph807:                                        ; preds = %.lr.ph807.preheader935, %.lr.ph807
  %.0631805 = phi i64 [ %508, %.lr.ph807 ], [ %.0631805.ph, %.lr.ph807.preheader935 ]
  %.3645804 = phi i64 [ %521, %.lr.ph807 ], [ %.3645804.ph, %.lr.ph807.preheader935 ]
  %508 = add nuw i64 %.0631805, 1
  %509 = getelementptr inbounds double, ptr %48, i64 %.3645804
  %510 = load double, ptr %509, align 8, !tbaa !9
  %511 = getelementptr double, ptr %16, i64 %.0631805
  store double %510, ptr %511, align 8, !tbaa !9
  %512 = getelementptr inbounds double, ptr %47, i64 %.3645804
  %513 = load double, ptr %512, align 8, !tbaa !9
  %514 = getelementptr double, ptr %17, i64 %.0631805
  store double %513, ptr %514, align 8, !tbaa !9
  %515 = getelementptr inbounds i64, ptr %45, i64 %.3645804
  %516 = load i64, ptr %515, align 8, !tbaa !5
  %517 = getelementptr i64, ptr %21, i64 %.0631805
  store i64 %516, ptr %517, align 8, !tbaa !5
  %518 = getelementptr inbounds i64, ptr %46, i64 %.3645804
  %519 = load i64, ptr %518, align 8, !tbaa !5
  %520 = getelementptr i64, ptr %20, i64 %.0631805
  store i64 %519, ptr %520, align 8, !tbaa !5
  %521 = add nsw i64 %.3645804, 1
  %exitcond861.not = icmp eq i64 %508, %483
  br i1 %exitcond861.not, label %._crit_edge808.loopexit, label %.lr.ph807, !llvm.loop !23

._crit_edge808.loopexit:                          ; preds = %.lr.ph807, %middle.block918
  %.pre868 = load i64, ptr %15, align 8, !tbaa !5
  br label %._crit_edge808

._crit_edge808:                                   ; preds = %455, %._crit_edge808.loopexit, %._crit_edge801
  %.0600.lcssa873 = phi i64 [ %.1601, %._crit_edge808.loopexit ], [ %.1601, %._crit_edge801 ], [ %426, %455 ]
  %522 = phi i64 [ %479, %._crit_edge808.loopexit ], [ %479, %._crit_edge801 ], [ %457, %455 ]
  %523 = phi i64 [ %.pre868, %._crit_edge808.loopexit ], [ %.pre, %._crit_edge801 ], [ %456, %455 ]
  %reass.sub = sub i64 %523, %522
  %524 = add i64 %reass.sub, 1
  store i64 %524, ptr %15, align 8, !tbaa !5
  br label %525

525:                                              ; preds = %._crit_edge808, %453
  %.2602 = phi i64 [ %.0600.lcssa873, %._crit_edge808 ], [ %426, %453 ]
  %526 = icmp sgt i64 %.2605, 0
  %527 = icmp sgt i64 %.2602, 0
  %or.cond7 = select i1 %526, i1 true, i1 %527
  br i1 %or.cond7, label %528, label %._crit_edge869

._crit_edge869:                                   ; preds = %525
  %.pre870 = load i64, ptr %15, align 8, !tbaa !5
  br label %618

528:                                              ; preds = %525
  br i1 %526, label %529, label %.loopexit741

529:                                              ; preds = %528
  %530 = load double, ptr %19, align 8, !tbaa !9
  br label %531

531:                                              ; preds = %529, %._crit_edge815
  %.0609819 = phi double [ %530, %529 ], [ %.1610.lcssa, %._crit_edge815 ]
  %.0613818 = phi i64 [ 1, %529 ], [ %562, %._crit_edge815 ]
  %532 = load i64, ptr %15, align 8, !tbaa !5
  %.not702809 = icmp slt i64 %532, 1
  br i1 %.not702809, label %._crit_edge815, label %.lr.ph814.preheader

.lr.ph814.preheader:                              ; preds = %531
  %xtraiter948 = and i64 %532, 1
  %533 = icmp eq i64 %532, 1
  br i1 %533, label %._crit_edge815.loopexit.unr-lcssa, label %.lr.ph814.preheader.new

.lr.ph814.preheader.new:                          ; preds = %.lr.ph814.preheader
  %unroll_iter952 = and i64 %532, 9223372036854775806
  br label %.lr.ph814

.lr.ph814:                                        ; preds = %551, %.lr.ph814.preheader.new
  %.1610812 = phi double [ %.0609819, %.lr.ph814.preheader.new ], [ %.2611.1, %551 ]
  %.0632811 = phi i64 [ 0, %.lr.ph814.preheader.new ], [ %.1633.1, %551 ]
  %.4646810 = phi i64 [ 1, %.lr.ph814.preheader.new ], [ %552, %551 ]
  %niter953 = phi i64 [ 0, %.lr.ph814.preheader.new ], [ %niter953.next.1, %551 ]
  %534 = getelementptr inbounds i64, ptr %46, i64 %.4646810
  %535 = load i64, ptr %534, align 8, !tbaa !5
  %.not703 = icmp eq i64 %535, 0
  br i1 %.not703, label %.lr.ph814.1, label %536

536:                                              ; preds = %.lr.ph814
  %537 = getelementptr inbounds double, ptr %48, i64 %.4646810
  %538 = load double, ptr %537, align 8, !tbaa !9
  %539 = fcmp olt double %538, %.1610812
  %540 = icmp eq i64 %.0632811, 0
  %or.cond9 = select i1 %539, i1 true, i1 %540
  br i1 %or.cond9, label %541, label %.lr.ph814.1

541:                                              ; preds = %536
  br label %.lr.ph814.1

.lr.ph814.1:                                      ; preds = %.lr.ph814, %541, %536
  %.1633 = phi i64 [ %.4646810, %541 ], [ %.0632811, %536 ], [ %.0632811, %.lr.ph814 ]
  %.2611 = phi double [ %538, %541 ], [ %.1610812, %536 ], [ %.1610812, %.lr.ph814 ]
  %542 = add nuw i64 %.4646810, 1
  %543 = getelementptr i64, ptr %20, i64 %.4646810
  %544 = load i64, ptr %543, align 8, !tbaa !5
  %.not703.1 = icmp eq i64 %544, 0
  br i1 %.not703.1, label %551, label %545

545:                                              ; preds = %.lr.ph814.1
  %546 = getelementptr double, ptr %16, i64 %.4646810
  %547 = load double, ptr %546, align 8, !tbaa !9
  %548 = fcmp olt double %547, %.2611
  %549 = icmp eq i64 %.1633, 0
  %or.cond9.1 = select i1 %548, i1 true, i1 %549
  br i1 %or.cond9.1, label %550, label %551

550:                                              ; preds = %545
  br label %551

551:                                              ; preds = %550, %545, %.lr.ph814.1
  %.1633.1 = phi i64 [ %542, %550 ], [ %.1633, %545 ], [ %.1633, %.lr.ph814.1 ]
  %.2611.1 = phi double [ %547, %550 ], [ %.2611, %545 ], [ %.2611, %.lr.ph814.1 ]
  %552 = add nuw i64 %.4646810, 2
  %niter953.next.1 = add i64 %niter953, 2
  %niter953.ncmp.1 = icmp eq i64 %niter953.next.1, %unroll_iter952
  br i1 %niter953.ncmp.1, label %._crit_edge815.loopexit.unr-lcssa, label %.lr.ph814, !llvm.loop !24

._crit_edge815.loopexit.unr-lcssa:                ; preds = %551, %.lr.ph814.preheader
  %.1633.lcssa.ph = phi i64 [ poison, %.lr.ph814.preheader ], [ %.1633.1, %551 ]
  %.2611.lcssa.ph = phi double [ poison, %.lr.ph814.preheader ], [ %.2611.1, %551 ]
  %.1610812.unr = phi double [ %.0609819, %.lr.ph814.preheader ], [ %.2611.1, %551 ]
  %.0632811.unr = phi i64 [ 0, %.lr.ph814.preheader ], [ %.1633.1, %551 ]
  %.4646810.unr = phi i64 [ 1, %.lr.ph814.preheader ], [ %552, %551 ]
  %lcmp.mod949.not = icmp eq i64 %xtraiter948, 0
  br i1 %lcmp.mod949.not, label %._crit_edge815, label %.lr.ph814.epil

.lr.ph814.epil:                                   ; preds = %._crit_edge815.loopexit.unr-lcssa
  %553 = getelementptr inbounds i64, ptr %46, i64 %.4646810.unr
  %554 = load i64, ptr %553, align 8, !tbaa !5
  %.not703.epil = icmp eq i64 %554, 0
  br i1 %.not703.epil, label %._crit_edge815, label %555

555:                                              ; preds = %.lr.ph814.epil
  %556 = getelementptr inbounds double, ptr %48, i64 %.4646810.unr
  %557 = load double, ptr %556, align 8, !tbaa !9
  %558 = fcmp olt double %557, %.1610812.unr
  %559 = icmp eq i64 %.0632811.unr, 0
  %or.cond9.epil = select i1 %558, i1 true, i1 %559
  br i1 %or.cond9.epil, label %560, label %._crit_edge815

560:                                              ; preds = %555
  br label %._crit_edge815

._crit_edge815:                                   ; preds = %._crit_edge815.loopexit.unr-lcssa, %560, %555, %.lr.ph814.epil, %531
  %.0632.lcssa = phi i64 [ 0, %531 ], [ %.1633.lcssa.ph, %._crit_edge815.loopexit.unr-lcssa ], [ %.4646810.unr, %560 ], [ %.0632811.unr, %555 ], [ %.0632811.unr, %.lr.ph814.epil ]
  %.1610.lcssa = phi double [ %.0609819, %531 ], [ %.2611.lcssa.ph, %._crit_edge815.loopexit.unr-lcssa ], [ %557, %560 ], [ %.1610812.unr, %555 ], [ %.1610812.unr, %.lr.ph814.epil ]
  %561 = getelementptr inbounds i64, ptr %46, i64 %.0632.lcssa
  store i64 0, ptr %561, align 8, !tbaa !5
  %562 = add nuw i64 %.0613818, 1
  %exitcond863.not = icmp eq i64 %.0613818, %.2605
  br i1 %exitcond863.not, label %.loopexit741, label %531, !llvm.loop !25

.loopexit741:                                     ; preds = %._crit_edge815, %528
  br i1 %527, label %563, label %.loopexit740

563:                                              ; preds = %.loopexit741
  %564 = load double, ptr %18, align 8, !tbaa !9
  br label %565

565:                                              ; preds = %563, %._crit_edge826
  %.3612830 = phi double [ %564, %563 ], [ %.4.lcssa, %._crit_edge826 ]
  %.1614829 = phi i64 [ 1, %563 ], [ %596, %._crit_edge826 ]
  %566 = load i64, ptr %15, align 8, !tbaa !5
  %.not700820 = icmp slt i64 %566, 1
  br i1 %.not700820, label %._crit_edge826, label %.lr.ph825.preheader

.lr.ph825.preheader:                              ; preds = %565
  %xtraiter954 = and i64 %566, 1
  %567 = icmp eq i64 %566, 1
  br i1 %567, label %._crit_edge826.loopexit.unr-lcssa, label %.lr.ph825.preheader.new

.lr.ph825.preheader.new:                          ; preds = %.lr.ph825.preheader
  %unroll_iter958 = and i64 %566, 9223372036854775806
  br label %.lr.ph825

.lr.ph825:                                        ; preds = %585, %.lr.ph825.preheader.new
  %.4823 = phi double [ %.3612830, %.lr.ph825.preheader.new ], [ %.5.1, %585 ]
  %.2634822 = phi i64 [ 0, %.lr.ph825.preheader.new ], [ %.3635.1, %585 ]
  %.5647821 = phi i64 [ 1, %.lr.ph825.preheader.new ], [ %586, %585 ]
  %niter959 = phi i64 [ 0, %.lr.ph825.preheader.new ], [ %niter959.next.1, %585 ]
  %568 = getelementptr inbounds i64, ptr %46, i64 %.5647821
  %569 = load i64, ptr %568, align 8, !tbaa !5
  %.not701 = icmp eq i64 %569, 0
  br i1 %.not701, label %.lr.ph825.1, label %570

570:                                              ; preds = %.lr.ph825
  %571 = getelementptr inbounds double, ptr %48, i64 %.5647821
  %572 = load double, ptr %571, align 8, !tbaa !9
  %573 = fcmp oge double %572, %.4823
  %574 = icmp eq i64 %.2634822, 0
  %or.cond11 = select i1 %573, i1 true, i1 %574
  br i1 %or.cond11, label %575, label %.lr.ph825.1

575:                                              ; preds = %570
  br label %.lr.ph825.1

.lr.ph825.1:                                      ; preds = %.lr.ph825, %575, %570
  %.3635 = phi i64 [ %.5647821, %575 ], [ %.2634822, %570 ], [ %.2634822, %.lr.ph825 ]
  %.5 = phi double [ %572, %575 ], [ %.4823, %570 ], [ %.4823, %.lr.ph825 ]
  %576 = add nuw i64 %.5647821, 1
  %577 = getelementptr i64, ptr %20, i64 %.5647821
  %578 = load i64, ptr %577, align 8, !tbaa !5
  %.not701.1 = icmp eq i64 %578, 0
  br i1 %.not701.1, label %585, label %579

579:                                              ; preds = %.lr.ph825.1
  %580 = getelementptr double, ptr %16, i64 %.5647821
  %581 = load double, ptr %580, align 8, !tbaa !9
  %582 = fcmp oge double %581, %.5
  %583 = icmp eq i64 %.3635, 0
  %or.cond11.1 = select i1 %582, i1 true, i1 %583
  br i1 %or.cond11.1, label %584, label %585

584:                                              ; preds = %579
  br label %585

585:                                              ; preds = %584, %579, %.lr.ph825.1
  %.3635.1 = phi i64 [ %576, %584 ], [ %.3635, %579 ], [ %.3635, %.lr.ph825.1 ]
  %.5.1 = phi double [ %581, %584 ], [ %.5, %579 ], [ %.5, %.lr.ph825.1 ]
  %586 = add nuw i64 %.5647821, 2
  %niter959.next.1 = add i64 %niter959, 2
  %niter959.ncmp.1 = icmp eq i64 %niter959.next.1, %unroll_iter958
  br i1 %niter959.ncmp.1, label %._crit_edge826.loopexit.unr-lcssa, label %.lr.ph825, !llvm.loop !26

._crit_edge826.loopexit.unr-lcssa:                ; preds = %585, %.lr.ph825.preheader
  %.3635.lcssa.ph = phi i64 [ poison, %.lr.ph825.preheader ], [ %.3635.1, %585 ]
  %.5.lcssa.ph = phi double [ poison, %.lr.ph825.preheader ], [ %.5.1, %585 ]
  %.4823.unr = phi double [ %.3612830, %.lr.ph825.preheader ], [ %.5.1, %585 ]
  %.2634822.unr = phi i64 [ 0, %.lr.ph825.preheader ], [ %.3635.1, %585 ]
  %.5647821.unr = phi i64 [ 1, %.lr.ph825.preheader ], [ %586, %585 ]
  %lcmp.mod955.not = icmp eq i64 %xtraiter954, 0
  br i1 %lcmp.mod955.not, label %._crit_edge826, label %.lr.ph825.epil

.lr.ph825.epil:                                   ; preds = %._crit_edge826.loopexit.unr-lcssa
  %587 = getelementptr inbounds i64, ptr %46, i64 %.5647821.unr
  %588 = load i64, ptr %587, align 8, !tbaa !5
  %.not701.epil = icmp eq i64 %588, 0
  br i1 %.not701.epil, label %._crit_edge826, label %589

589:                                              ; preds = %.lr.ph825.epil
  %590 = getelementptr inbounds double, ptr %48, i64 %.5647821.unr
  %591 = load double, ptr %590, align 8, !tbaa !9
  %592 = fcmp oge double %591, %.4823.unr
  %593 = icmp eq i64 %.2634822.unr, 0
  %or.cond11.epil = select i1 %592, i1 true, i1 %593
  br i1 %or.cond11.epil, label %594, label %._crit_edge826

594:                                              ; preds = %589
  br label %._crit_edge826

._crit_edge826:                                   ; preds = %._crit_edge826.loopexit.unr-lcssa, %594, %589, %.lr.ph825.epil, %565
  %.2634.lcssa = phi i64 [ 0, %565 ], [ %.3635.lcssa.ph, %._crit_edge826.loopexit.unr-lcssa ], [ %.5647821.unr, %594 ], [ %.2634822.unr, %589 ], [ %.2634822.unr, %.lr.ph825.epil ]
  %.4.lcssa = phi double [ %.3612830, %565 ], [ %.5.lcssa.ph, %._crit_edge826.loopexit.unr-lcssa ], [ %591, %594 ], [ %.4823.unr, %589 ], [ %.4823.unr, %.lr.ph825.epil ]
  %595 = getelementptr inbounds i64, ptr %46, i64 %.2634.lcssa
  store i64 0, ptr %595, align 8, !tbaa !5
  %596 = add nuw i64 %.1614829, 1
  %exitcond865.not = icmp eq i64 %.1614829, %.2602
  br i1 %exitcond865.not, label %.loopexit740, label %565, !llvm.loop !27

.loopexit740:                                     ; preds = %._crit_edge826, %.loopexit741
  store i64 0, ptr %35, align 8, !tbaa !5
  %597 = load i64, ptr %15, align 8, !tbaa !5
  %.not690832 = icmp slt i64 %597, 1
  br i1 %.not690832, label %._crit_edge836, label %.lr.ph835

.lr.ph835:                                        ; preds = %.loopexit740, %614
  %.6833 = phi i64 [ %616, %614 ], [ 1, %.loopexit740 ]
  %598 = phi i64 [ %615, %614 ], [ 0, %.loopexit740 ]
  %599 = getelementptr inbounds i64, ptr %46, i64 %.6833
  %600 = load i64, ptr %599, align 8, !tbaa !5
  %.not699 = icmp eq i64 %600, 0
  br i1 %.not699, label %614, label %601

601:                                              ; preds = %.lr.ph835
  %602 = add nsw i64 %598, 1
  store i64 %602, ptr %35, align 8, !tbaa !5
  %603 = getelementptr inbounds double, ptr %48, i64 %.6833
  %604 = load double, ptr %603, align 8, !tbaa !9
  %605 = getelementptr double, ptr %16, i64 %598
  store double %604, ptr %605, align 8, !tbaa !9
  %606 = getelementptr inbounds double, ptr %47, i64 %.6833
  %607 = load double, ptr %606, align 8, !tbaa !9
  %608 = getelementptr double, ptr %17, i64 %598
  store double %607, ptr %608, align 8, !tbaa !9
  %609 = getelementptr inbounds i64, ptr %45, i64 %.6833
  %610 = load i64, ptr %609, align 8, !tbaa !5
  %611 = getelementptr i64, ptr %21, i64 %598
  store i64 %610, ptr %611, align 8, !tbaa !5
  %612 = load i64, ptr %599, align 8, !tbaa !5
  %613 = getelementptr i64, ptr %20, i64 %598
  store i64 %612, ptr %613, align 8, !tbaa !5
  br label %614

614:                                              ; preds = %.lr.ph835, %601
  %615 = phi i64 [ %598, %.lr.ph835 ], [ %602, %601 ]
  %616 = add nuw i64 %.6833, 1
  %exitcond866.not = icmp eq i64 %.6833, %597
  br i1 %exitcond866.not, label %._crit_edge836, label %.lr.ph835, !llvm.loop !28

._crit_edge836:                                   ; preds = %614, %.loopexit740
  %617 = phi i64 [ 0, %.loopexit740 ], [ %615, %614 ]
  store i64 %617, ptr %15, align 8, !tbaa !5
  br label %618

618:                                              ; preds = %._crit_edge869, %._crit_edge836
  %619 = phi i64 [ %.pre870, %._crit_edge869 ], [ %617, %._crit_edge836 ]
  %620 = icmp slt i64 %.2605, 0
  %621 = icmp slt i64 %.2602, 0
  %or.cond13 = select i1 %620, i1 true, i1 %621
  %622 = load i64, ptr %6, align 8, !tbaa !5
  %623 = load i64, ptr %5, align 8, !tbaa !5
  %624 = add i64 %622, 1
  %625 = sub i64 %624, %623
  %.not692 = icmp eq i64 %619, %625
  br i1 %.not692, label %.thread734, label %630

.thread730:                                       ; preds = %._crit_edge785
  %626 = icmp eq i64 %.1607, 1
  br i1 %626, label %627, label %.thread734

627:                                              ; preds = %.thread730
  %628 = load i64, ptr %15, align 8, !tbaa !5
  %629 = load i64, ptr %2, align 8, !tbaa !5
  %.not691 = icmp eq i64 %628, %629
  br i1 %.not691, label %.thread734, label %630

630:                                              ; preds = %618, %627
  br label %.thread734

.thread734:                                       ; preds = %627, %.thread730, %630, %618
  %.1.shrunk = phi i1 [ true, %630 ], [ %or.cond13, %618 ], [ false, %.thread730 ], [ false, %627 ]
  %631 = call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.4) #7
  %.not693 = icmp eq i64 %631, 0
  br i1 %.not693, label %.loopexit, label %632

632:                                              ; preds = %.thread734
  %633 = load i64, ptr %13, align 8, !tbaa !5
  %634 = icmp sgt i64 %633, 1
  br i1 %634, label %635, label %.loopexit

635:                                              ; preds = %632
  %636 = load i64, ptr %15, align 8, !tbaa !5
  %.not694.not846 = icmp sgt i64 %636, 1
  br i1 %.not694.not846, label %.lr.ph849, label %.loopexit

.lr.ph849:                                        ; preds = %635, %._crit_edge843.thread
  %.7847 = phi i64 [ %640, %._crit_edge843.thread ], [ 1, %635 ]
  %637 = getelementptr inbounds double, ptr %48, i64 %.7847
  %638 = load double, ptr %637, align 8, !tbaa !9
  %639 = load i64, ptr %15, align 8, !tbaa !5
  %640 = add nuw nsw i64 %.7847, 1
  %.not697837.not = icmp slt i64 %.7847, %639
  br i1 %.not697837.not, label %.lr.ph842, label %._crit_edge843.thread

.lr.ph842:                                        ; preds = %.lr.ph849, %.lr.ph842
  %.0617840 = phi double [ %.1618, %.lr.ph842 ], [ %638, %.lr.ph849 ]
  %.0648839 = phi i64 [ %.1649, %.lr.ph842 ], [ 0, %.lr.ph849 ]
  %.2653838 = phi i64 [ %644, %.lr.ph842 ], [ %640, %.lr.ph849 ]
  %641 = getelementptr inbounds double, ptr %48, i64 %.2653838
  %642 = load double, ptr %641, align 8, !tbaa !9
  %643 = fcmp olt double %642, %.0617840
  %.1649 = select i1 %643, i64 %.2653838, i64 %.0648839
  %.1618 = select i1 %643, double %642, double %.0617840
  %644 = add nuw nsw i64 %.2653838, 1
  %.not697.not = icmp slt i64 %.2653838, %639
  br i1 %.not697.not, label %.lr.ph842, label %._crit_edge843, !llvm.loop !29

._crit_edge843:                                   ; preds = %.lr.ph842
  %.not698 = icmp eq i64 %.1649, 0
  br i1 %.not698, label %._crit_edge843.thread, label %645

645:                                              ; preds = %._crit_edge843
  %646 = getelementptr inbounds double, ptr %47, i64 %.1649
  %647 = load double, ptr %646, align 8, !tbaa !9
  %648 = getelementptr inbounds i64, ptr %46, i64 %.1649
  %649 = load i64, ptr %648, align 8, !tbaa !5
  %650 = getelementptr inbounds i64, ptr %45, i64 %.1649
  %651 = load i64, ptr %650, align 8, !tbaa !5
  %652 = getelementptr inbounds double, ptr %48, i64 %.1649
  store double %638, ptr %652, align 8, !tbaa !9
  %653 = getelementptr inbounds double, ptr %47, i64 %.7847
  %654 = load double, ptr %653, align 8, !tbaa !9
  store double %654, ptr %646, align 8, !tbaa !9
  %655 = getelementptr inbounds i64, ptr %46, i64 %.7847
  %656 = load i64, ptr %655, align 8, !tbaa !5
  store i64 %656, ptr %648, align 8, !tbaa !5
  %657 = getelementptr inbounds i64, ptr %45, i64 %.7847
  %658 = load i64, ptr %657, align 8, !tbaa !5
  store i64 %658, ptr %650, align 8, !tbaa !5
  store double %.1618, ptr %637, align 8, !tbaa !9
  store double %647, ptr %653, align 8, !tbaa !9
  store i64 %649, ptr %655, align 8, !tbaa !5
  store i64 %651, ptr %657, align 8, !tbaa !5
  br label %._crit_edge843.thread

._crit_edge843.thread:                            ; preds = %.lr.ph849, %._crit_edge843, %645
  %exitcond867.not = icmp eq i64 %640, %636
  br i1 %exitcond867.not, label %.loopexit, label %.lr.ph849, !llvm.loop !30

.loopexit:                                        ; preds = %._crit_edge843.thread, %635, %632, %.thread734
  %.not695 = icmp ne i64 %.0598.lcssa, 0
  %spec.select721 = zext i1 %.not695 to i64
  store i64 %spec.select721, ptr %24, align 8, !tbaa !5
  br i1 %.1.shrunk, label %659, label %.critedge.thread

659:                                              ; preds = %.loopexit
  %660 = select i1 %.not695, i64 3, i64 2
  store i64 %660, ptr %24, align 8, !tbaa !5
  br label %.critedge.thread

default.unreachable:                              ; preds = %99
  unreachable

.critedge.thread:                                 ; preds = %56, %66, %78, %83, %72, %62, %100, %104, %.loopexit, %659, %107, %110, %113, %84, %.critedge, %366, %337, %232, %204
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #7
  ret i32 0
}

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

declare i64 @lsame_(ptr noundef, ptr noundef) local_unnamed_addr #2

declare double @dlamch_(ptr noundef) local_unnamed_addr #2

declare i64 @ilaenv_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #6

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare <2 x double> @llvm.fmuladd.v2f64(<2 x double>, <2 x double>, <2 x double>) #5

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #4 = { 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 #5 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #6 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #7 = { 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, !16}
!15 = !{!"llvm.loop.isvectorized", i32 1}
!16 = !{!"llvm.loop.unroll.runtime.disable"}
!17 = distinct !{!17, !12, !15}
!18 = distinct !{!18, !12}
!19 = distinct !{!19, !12}
!20 = distinct !{!20, !12}
!21 = distinct !{!21, !12}
!22 = distinct !{!22, !12, !15, !16}
!23 = distinct !{!23, !12, !15}
!24 = distinct !{!24, !12}
!25 = distinct !{!25, !12}
!26 = distinct !{!26, !12}
!27 = distinct !{!27, !12}
!28 = distinct !{!28, !12}
!29 = distinct !{!29, !12}
!30 = distinct !{!30, !12}


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