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

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

108:                                              ; preds = %18
  store i64 1, ptr %80, align 8, !tbaa !9
  br label %122

109:                                              ; preds = %18
  %110 = load ptr, ptr %20, align 8, !tbaa !5
  %111 = call i64 @lsame_(ptr noundef %110, ptr noundef @.str.1)
  %112 = icmp ne i64 %111, 0
  br i1 %112, label %113, label %114

113:                                              ; preds = %109
  store i64 2, ptr %80, align 8, !tbaa !9
  br label %121

114:                                              ; preds = %109
  %115 = load ptr, ptr %20, align 8, !tbaa !5
  %116 = call i64 @lsame_(ptr noundef %115, ptr noundef @.str.2)
  %117 = icmp ne i64 %116, 0
  br i1 %117, label %118, label %119

118:                                              ; preds = %114
  store i64 3, ptr %80, align 8, !tbaa !9
  br label %120

119:                                              ; preds = %114
  store i64 0, ptr %80, align 8, !tbaa !9
  br label %120

120:                                              ; preds = %119, %118
  br label %121

121:                                              ; preds = %120, %113
  br label %122

122:                                              ; preds = %121, %108
  %123 = load ptr, ptr %21, align 8, !tbaa !5
  %124 = call i64 @lsame_(ptr noundef %123, ptr noundef @.str.3)
  %125 = icmp ne i64 %124, 0
  br i1 %125, label %126, label %127

126:                                              ; preds = %122
  store i64 2, ptr %85, align 8, !tbaa !9
  br label %134

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

131:                                              ; preds = %127
  store i64 1, ptr %85, align 8, !tbaa !9
  br label %133

132:                                              ; preds = %127
  store i64 0, ptr %85, align 8, !tbaa !9
  br label %133

133:                                              ; preds = %132, %131
  br label %134

134:                                              ; preds = %133, %126
  %135 = load i64, ptr %80, align 8, !tbaa !9
  %136 = icmp sle i64 %135, 0
  br i1 %136, label %137, label %139

137:                                              ; preds = %134
  %138 = load ptr, ptr %37, align 8, !tbaa !5
  store i64 -1, ptr %138, align 8, !tbaa !9
  br label %217

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

142:                                              ; preds = %139
  %143 = load ptr, ptr %37, align 8, !tbaa !5
  store i64 -2, ptr %143, align 8, !tbaa !9
  br label %216

144:                                              ; preds = %139
  %145 = load ptr, ptr %22, align 8, !tbaa !5
  %146 = load i64, ptr %145, align 8, !tbaa !9
  %147 = icmp slt i64 %146, 0
  br i1 %147, label %148, label %150

148:                                              ; preds = %144
  %149 = load ptr, ptr %37, align 8, !tbaa !5
  store i64 -3, ptr %149, align 8, !tbaa !9
  br label %215

150:                                              ; preds = %144
  %151 = load i64, ptr %80, align 8, !tbaa !9
  %152 = icmp eq i64 %151, 2
  br i1 %152, label %153, label %162

153:                                              ; preds = %150
  %154 = load ptr, ptr %23, align 8, !tbaa !5
  %155 = load double, ptr %154, align 8, !tbaa !11
  %156 = load ptr, ptr %24, align 8, !tbaa !5
  %157 = load double, ptr %156, align 8, !tbaa !11
  %158 = fcmp oge double %155, %157
  br i1 %158, label %159, label %161

159:                                              ; preds = %153
  %160 = load ptr, ptr %37, align 8, !tbaa !5
  store i64 -5, ptr %160, align 8, !tbaa !9
  br label %161

161:                                              ; preds = %159, %153
  br label %214

162:                                              ; preds = %150
  %163 = load i64, ptr %80, align 8, !tbaa !9
  %164 = icmp eq i64 %163, 3
  br i1 %164, label %165, label %184

165:                                              ; preds = %162
  %166 = load ptr, ptr %25, align 8, !tbaa !5
  %167 = load i64, ptr %166, align 8, !tbaa !9
  %168 = icmp slt i64 %167, 1
  br i1 %168, label %182, label %169

169:                                              ; preds = %165
  %170 = load ptr, ptr %25, align 8, !tbaa !5
  %171 = load i64, ptr %170, align 8, !tbaa !9
  %172 = load ptr, ptr %22, align 8, !tbaa !5
  %173 = load i64, ptr %172, align 8, !tbaa !9
  %174 = icmp sge i64 1, %173
  br i1 %174, label %175, label %176

175:                                              ; preds = %169
  br label %179

176:                                              ; preds = %169
  %177 = load ptr, ptr %22, align 8, !tbaa !5
  %178 = load i64, ptr %177, align 8, !tbaa !9
  br label %179

179:                                              ; preds = %176, %175
  %180 = phi i64 [ 1, %175 ], [ %178, %176 ]
  %181 = icmp sgt i64 %171, %180
  br i1 %181, label %182, label %184

182:                                              ; preds = %179, %165
  %183 = load ptr, ptr %37, align 8, !tbaa !5
  store i64 -6, ptr %183, align 8, !tbaa !9
  br label %213

184:                                              ; preds = %179, %162
  %185 = load i64, ptr %80, align 8, !tbaa !9
  %186 = icmp eq i64 %185, 3
  br i1 %186, label %187, label %212

187:                                              ; preds = %184
  %188 = load ptr, ptr %26, align 8, !tbaa !5
  %189 = load i64, ptr %188, align 8, !tbaa !9
  %190 = load ptr, ptr %22, align 8, !tbaa !5
  %191 = load i64, ptr %190, align 8, !tbaa !9
  %192 = load ptr, ptr %25, align 8, !tbaa !5
  %193 = load i64, ptr %192, align 8, !tbaa !9
  %194 = icmp sle i64 %191, %193
  br i1 %194, label %195, label %198

195:                                              ; preds = %187
  %196 = load ptr, ptr %22, align 8, !tbaa !5
  %197 = load i64, ptr %196, align 8, !tbaa !9
  br label %201

198:                                              ; preds = %187
  %199 = load ptr, ptr %25, align 8, !tbaa !5
  %200 = load i64, ptr %199, align 8, !tbaa !9
  br label %201

201:                                              ; preds = %198, %195
  %202 = phi i64 [ %197, %195 ], [ %200, %198 ]
  %203 = icmp slt i64 %189, %202
  br i1 %203, label %210, label %204

204:                                              ; preds = %201
  %205 = load ptr, ptr %26, align 8, !tbaa !5
  %206 = load i64, ptr %205, align 8, !tbaa !9
  %207 = load ptr, ptr %22, align 8, !tbaa !5
  %208 = load i64, ptr %207, align 8, !tbaa !9
  %209 = icmp sgt i64 %206, %208
  br i1 %209, label %210, label %212

210:                                              ; preds = %204, %201
  %211 = load ptr, ptr %37, align 8, !tbaa !5
  store i64 -7, ptr %211, align 8, !tbaa !9
  br label %212

212:                                              ; preds = %210, %204, %184
  br label %213

213:                                              ; preds = %212, %182
  br label %214

214:                                              ; preds = %213, %161
  br label %215

215:                                              ; preds = %214, %148
  br label %216

216:                                              ; preds = %215, %142
  br label %217

217:                                              ; preds = %216, %137
  %218 = load ptr, ptr %37, align 8, !tbaa !5
  %219 = load i64, ptr %218, align 8, !tbaa !9
  %220 = icmp ne i64 %219, 0
  br i1 %220, label %221, label %226

221:                                              ; preds = %217
  %222 = load ptr, ptr %37, align 8, !tbaa !5
  %223 = load i64, ptr %222, align 8, !tbaa !9
  %224 = sub nsw i64 0, %223
  store i64 %224, ptr %38, align 8, !tbaa !9
  %225 = call i32 @xerbla_(ptr noundef @.str.5, ptr noundef %38)
  store i32 0, ptr %19, align 4
  store i32 1, ptr %89, align 4
  br label %1721

226:                                              ; preds = %217
  %227 = load ptr, ptr %37, align 8, !tbaa !5
  store i64 0, ptr %227, align 8, !tbaa !9
  store i64 0, ptr %86, align 8, !tbaa !9
  store i64 0, ptr %88, align 8, !tbaa !9
  %228 = load ptr, ptr %30, align 8, !tbaa !5
  store i64 0, ptr %228, align 8, !tbaa !9
  %229 = load ptr, ptr %22, align 8, !tbaa !5
  %230 = load i64, ptr %229, align 8, !tbaa !9
  %231 = icmp eq i64 %230, 0
  br i1 %231, label %232, label %233

232:                                              ; preds = %226
  store i32 0, ptr %19, align 4
  store i32 1, ptr %89, align 4
  br label %1721

233:                                              ; preds = %226
  %234 = load i64, ptr %80, align 8, !tbaa !9
  %235 = icmp eq i64 %234, 3
  br i1 %235, label %236, label %247

236:                                              ; preds = %233
  %237 = load ptr, ptr %25, align 8, !tbaa !5
  %238 = load i64, ptr %237, align 8, !tbaa !9
  %239 = icmp eq i64 %238, 1
  br i1 %239, label %240, label %247

240:                                              ; preds = %236
  %241 = load ptr, ptr %26, align 8, !tbaa !5
  %242 = load i64, ptr %241, align 8, !tbaa !9
  %243 = load ptr, ptr %22, align 8, !tbaa !5
  %244 = load i64, ptr %243, align 8, !tbaa !9
  %245 = icmp eq i64 %242, %244
  br i1 %245, label %246, label %247

246:                                              ; preds = %240
  store i64 1, ptr %80, align 8, !tbaa !9
  br label %247

247:                                              ; preds = %246, %240, %236, %233
  %248 = call double @dlamch_(ptr noundef @.str.6)
  store double %248, ptr %82, align 8, !tbaa !11
  %249 = call double @dlamch_(ptr noundef @.str.7)
  store double %249, ptr %60, align 8, !tbaa !11
  %250 = load double, ptr %60, align 8, !tbaa !11
  %251 = fmul double %250, 2.000000e+00
  store double %251, ptr %77, align 8, !tbaa !11
  %252 = load ptr, ptr %22, align 8, !tbaa !5
  %253 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.5, ptr noundef @.str.8, ptr noundef %252, ptr noundef @c_n1, ptr noundef @c_n1, ptr noundef @c_n1)
  store i64 %253, ptr %51, align 8, !tbaa !9
  %254 = load i64, ptr %51, align 8, !tbaa !9
  %255 = icmp sle i64 %254, 1
  br i1 %255, label %256, label %257

256:                                              ; preds = %247
  store i64 0, ptr %51, align 8, !tbaa !9
  br label %257

257:                                              ; preds = %256, %247
  %258 = load ptr, ptr %22, align 8, !tbaa !5
  %259 = load i64, ptr %258, align 8, !tbaa !9
  %260 = icmp eq i64 %259, 1
  br i1 %260, label %261, label %293

261:                                              ; preds = %257
  %262 = load ptr, ptr %31, align 8, !tbaa !5
  store i64 1, ptr %262, align 8, !tbaa !9
  %263 = load ptr, ptr %34, align 8, !tbaa !5
  %264 = getelementptr inbounds i64, ptr %263, i64 1
  store i64 1, ptr %264, align 8, !tbaa !9
  %265 = load i64, ptr %80, align 8, !tbaa !9
  %266 = icmp eq i64 %265, 2
  br i1 %266, label %267, label %283

267:                                              ; preds = %261
  %268 = load ptr, ptr %23, align 8, !tbaa !5
  %269 = load double, ptr %268, align 8, !tbaa !11
  %270 = load ptr, ptr %28, align 8, !tbaa !5
  %271 = getelementptr inbounds double, ptr %270, i64 1
  %272 = load double, ptr %271, align 8, !tbaa !11
  %273 = fcmp oge double %269, %272
  br i1 %273, label %281, label %274

274:                                              ; preds = %267
  %275 = load ptr, ptr %24, align 8, !tbaa !5
  %276 = load double, ptr %275, align 8, !tbaa !11
  %277 = load ptr, ptr %28, align 8, !tbaa !5
  %278 = getelementptr inbounds double, ptr %277, i64 1
  %279 = load double, ptr %278, align 8, !tbaa !11
  %280 = fcmp olt double %276, %279
  br i1 %280, label %281, label %283

281:                                              ; preds = %274, %267
  %282 = load ptr, ptr %30, align 8, !tbaa !5
  store i64 0, ptr %282, align 8, !tbaa !9
  br label %292

283:                                              ; preds = %274, %261
  %284 = load ptr, ptr %28, align 8, !tbaa !5
  %285 = getelementptr inbounds double, ptr %284, i64 1
  %286 = load double, ptr %285, align 8, !tbaa !11
  %287 = load ptr, ptr %32, align 8, !tbaa !5
  %288 = getelementptr inbounds double, ptr %287, i64 1
  store double %286, ptr %288, align 8, !tbaa !11
  %289 = load ptr, ptr %33, align 8, !tbaa !5
  %290 = getelementptr inbounds i64, ptr %289, i64 1
  store i64 1, ptr %290, align 8, !tbaa !9
  %291 = load ptr, ptr %30, align 8, !tbaa !5
  store i64 1, ptr %291, align 8, !tbaa !9
  br label %292

292:                                              ; preds = %283, %281
  store i32 0, ptr %19, align 4
  store i32 1, ptr %89, align 4
  br label %1721

293:                                              ; preds = %257
  %294 = load ptr, ptr %31, align 8, !tbaa !5
  store i64 1, ptr %294, align 8, !tbaa !9
  %295 = load ptr, ptr %35, align 8, !tbaa !5
  %296 = load ptr, ptr %22, align 8, !tbaa !5
  %297 = load i64, ptr %296, align 8, !tbaa !9
  %298 = getelementptr inbounds double, ptr %295, i64 %297
  store double 0.000000e+00, ptr %298, align 8, !tbaa !11
  store double 1.000000e+00, ptr %87, align 8, !tbaa !11
  %299 = load ptr, ptr %22, align 8, !tbaa !5
  %300 = load i64, ptr %299, align 8, !tbaa !9
  store i64 %300, ptr %38, align 8, !tbaa !9
  store i64 2, ptr %46, align 8, !tbaa !9
  br label %301

301:                                              ; preds = %371, %293
  %302 = load i64, ptr %46, align 8, !tbaa !9
  %303 = load i64, ptr %38, align 8, !tbaa !9
  %304 = icmp sle i64 %302, %303
  br i1 %304, label %305, label %374

305:                                              ; preds = %301
  %306 = load ptr, ptr %29, align 8, !tbaa !5
  %307 = load i64, ptr %46, align 8, !tbaa !9
  %308 = sub nsw i64 %307, 1
  %309 = getelementptr inbounds double, ptr %306, i64 %308
  %310 = load double, ptr %309, align 8, !tbaa !11
  store double %310, ptr %41, align 8, !tbaa !11
  %311 = load double, ptr %41, align 8, !tbaa !11
  %312 = load double, ptr %41, align 8, !tbaa !11
  %313 = fmul double %311, %312
  store double %313, ptr %64, align 8, !tbaa !11
  %314 = load double, ptr %60, align 8, !tbaa !11
  store double %314, ptr %42, align 8, !tbaa !11
  %315 = load ptr, ptr %28, align 8, !tbaa !5
  %316 = load i64, ptr %46, align 8, !tbaa !9
  %317 = getelementptr inbounds double, ptr %315, i64 %316
  %318 = load double, ptr %317, align 8, !tbaa !11
  %319 = load ptr, ptr %28, align 8, !tbaa !5
  %320 = load i64, ptr %46, align 8, !tbaa !9
  %321 = sub nsw i64 %320, 1
  %322 = getelementptr inbounds double, ptr %319, i64 %321
  %323 = load double, ptr %322, align 8, !tbaa !11
  %324 = fmul double %318, %323
  store double %324, ptr %41, align 8, !tbaa !11
  %325 = load double, ptr %41, align 8, !tbaa !11
  %326 = fcmp oge double %325, 0.000000e+00
  br i1 %326, label %327, label %329

327:                                              ; preds = %305
  %328 = load double, ptr %41, align 8, !tbaa !11
  br label %332

329:                                              ; preds = %305
  %330 = load double, ptr %41, align 8, !tbaa !11
  %331 = fneg double %330
  br label %332

332:                                              ; preds = %329, %327
  %333 = phi double [ %328, %327 ], [ %331, %329 ]
  %334 = load double, ptr %42, align 8, !tbaa !11
  %335 = load double, ptr %42, align 8, !tbaa !11
  %336 = fmul double %334, %335
  %337 = load double, ptr %82, align 8, !tbaa !11
  %338 = call double @llvm.fmuladd.f64(double %333, double %336, double %337)
  %339 = load double, ptr %64, align 8, !tbaa !11
  %340 = fcmp ogt double %338, %339
  br i1 %340, label %341, label %355

341:                                              ; preds = %332
  %342 = load i64, ptr %46, align 8, !tbaa !9
  %343 = sub nsw i64 %342, 1
  %344 = load ptr, ptr %34, align 8, !tbaa !5
  %345 = load ptr, ptr %31, align 8, !tbaa !5
  %346 = load i64, ptr %345, align 8, !tbaa !9
  %347 = getelementptr inbounds i64, ptr %344, i64 %346
  store i64 %343, ptr %347, align 8, !tbaa !9
  %348 = load ptr, ptr %31, align 8, !tbaa !5
  %349 = load i64, ptr %348, align 8, !tbaa !9
  %350 = add nsw i64 %349, 1
  store i64 %350, ptr %348, align 8, !tbaa !9
  %351 = load ptr, ptr %35, align 8, !tbaa !5
  %352 = load i64, ptr %46, align 8, !tbaa !9
  %353 = sub nsw i64 %352, 1
  %354 = getelementptr inbounds double, ptr %351, i64 %353
  store double 0.000000e+00, ptr %354, align 8, !tbaa !11
  br label %370

355:                                              ; preds = %332
  %356 = load double, ptr %64, align 8, !tbaa !11
  %357 = load ptr, ptr %35, align 8, !tbaa !5
  %358 = load i64, ptr %46, align 8, !tbaa !9
  %359 = sub nsw i64 %358, 1
  %360 = getelementptr inbounds double, ptr %357, i64 %359
  store double %356, ptr %360, align 8, !tbaa !11
  %361 = load double, ptr %87, align 8, !tbaa !11
  %362 = load double, ptr %64, align 8, !tbaa !11
  %363 = fcmp oge double %361, %362
  br i1 %363, label %364, label %366

364:                                              ; preds = %355
  %365 = load double, ptr %87, align 8, !tbaa !11
  br label %368

366:                                              ; preds = %355
  %367 = load double, ptr %64, align 8, !tbaa !11
  br label %368

368:                                              ; preds = %366, %364
  %369 = phi double [ %365, %364 ], [ %367, %366 ]
  store double %369, ptr %87, align 8, !tbaa !11
  br label %370

370:                                              ; preds = %368, %341
  br label %371

371:                                              ; preds = %370
  %372 = load i64, ptr %46, align 8, !tbaa !9
  %373 = add nsw i64 %372, 1
  store i64 %373, ptr %46, align 8, !tbaa !9
  br label %301, !llvm.loop !13

374:                                              ; preds = %301
  %375 = load ptr, ptr %22, align 8, !tbaa !5
  %376 = load i64, ptr %375, align 8, !tbaa !9
  %377 = load ptr, ptr %34, align 8, !tbaa !5
  %378 = load ptr, ptr %31, align 8, !tbaa !5
  %379 = load i64, ptr %378, align 8, !tbaa !9
  %380 = getelementptr inbounds i64, ptr %377, i64 %379
  store i64 %376, ptr %380, align 8, !tbaa !9
  %381 = load double, ptr %82, align 8, !tbaa !11
  %382 = load double, ptr %87, align 8, !tbaa !11
  %383 = fmul double %382, %381
  store double %383, ptr %87, align 8, !tbaa !11
  %384 = load i64, ptr %80, align 8, !tbaa !9
  %385 = icmp eq i64 %384, 3
  br i1 %385, label %386, label %726

386:                                              ; preds = %374
  %387 = load ptr, ptr %28, align 8, !tbaa !5
  %388 = getelementptr inbounds double, ptr %387, i64 1
  %389 = load double, ptr %388, align 8, !tbaa !11
  store double %389, ptr %55, align 8, !tbaa !11
  %390 = load ptr, ptr %28, align 8, !tbaa !5
  %391 = getelementptr inbounds double, ptr %390, i64 1
  %392 = load double, ptr %391, align 8, !tbaa !11
  store double %392, ptr %52, align 8, !tbaa !11
  store double 0.000000e+00, ptr %64, align 8, !tbaa !11
  %393 = load ptr, ptr %22, align 8, !tbaa !5
  %394 = load i64, ptr %393, align 8, !tbaa !9
  %395 = sub nsw i64 %394, 1
  store i64 %395, ptr %38, align 8, !tbaa !9
  store i64 1, ptr %46, align 8, !tbaa !9
  br label %396

396:                                              ; preds = %443, %386
  %397 = load i64, ptr %46, align 8, !tbaa !9
  %398 = load i64, ptr %38, align 8, !tbaa !9
  %399 = icmp sle i64 %397, %398
  br i1 %399, label %400, label %446

400:                                              ; preds = %396
  %401 = load ptr, ptr %35, align 8, !tbaa !5
  %402 = load i64, ptr %46, align 8, !tbaa !9
  %403 = getelementptr inbounds double, ptr %401, i64 %402
  %404 = load double, ptr %403, align 8, !tbaa !11
  %405 = call double @sqrt(double noundef %404) #5
  store double %405, ptr %65, align 8, !tbaa !11
  %406 = load double, ptr %55, align 8, !tbaa !11
  store double %406, ptr %41, align 8, !tbaa !11
  %407 = load ptr, ptr %28, align 8, !tbaa !5
  %408 = load i64, ptr %46, align 8, !tbaa !9
  %409 = getelementptr inbounds double, ptr %407, i64 %408
  %410 = load double, ptr %409, align 8, !tbaa !11
  %411 = load double, ptr %64, align 8, !tbaa !11
  %412 = fadd double %410, %411
  %413 = load double, ptr %65, align 8, !tbaa !11
  %414 = fadd double %412, %413
  store double %414, ptr %42, align 8, !tbaa !11
  %415 = load double, ptr %41, align 8, !tbaa !11
  %416 = load double, ptr %42, align 8, !tbaa !11
  %417 = fcmp oge double %415, %416
  br i1 %417, label %418, label %420

418:                                              ; preds = %400
  %419 = load double, ptr %41, align 8, !tbaa !11
  br label %422

420:                                              ; preds = %400
  %421 = load double, ptr %42, align 8, !tbaa !11
  br label %422

422:                                              ; preds = %420, %418
  %423 = phi double [ %419, %418 ], [ %421, %420 ]
  store double %423, ptr %55, align 8, !tbaa !11
  %424 = load double, ptr %52, align 8, !tbaa !11
  store double %424, ptr %41, align 8, !tbaa !11
  %425 = load ptr, ptr %28, align 8, !tbaa !5
  %426 = load i64, ptr %46, align 8, !tbaa !9
  %427 = getelementptr inbounds double, ptr %425, i64 %426
  %428 = load double, ptr %427, align 8, !tbaa !11
  %429 = load double, ptr %64, align 8, !tbaa !11
  %430 = fsub double %428, %429
  %431 = load double, ptr %65, align 8, !tbaa !11
  %432 = fsub double %430, %431
  store double %432, ptr %42, align 8, !tbaa !11
  %433 = load double, ptr %41, align 8, !tbaa !11
  %434 = load double, ptr %42, align 8, !tbaa !11
  %435 = fcmp ole double %433, %434
  br i1 %435, label %436, label %438

436:                                              ; preds = %422
  %437 = load double, ptr %41, align 8, !tbaa !11
  br label %440

438:                                              ; preds = %422
  %439 = load double, ptr %42, align 8, !tbaa !11
  br label %440

440:                                              ; preds = %438, %436
  %441 = phi double [ %437, %436 ], [ %439, %438 ]
  store double %441, ptr %52, align 8, !tbaa !11
  %442 = load double, ptr %65, align 8, !tbaa !11
  store double %442, ptr %64, align 8, !tbaa !11
  br label %443

443:                                              ; preds = %440
  %444 = load i64, ptr %46, align 8, !tbaa !9
  %445 = add nsw i64 %444, 1
  store i64 %445, ptr %46, align 8, !tbaa !9
  br label %396, !llvm.loop !15

446:                                              ; preds = %396
  %447 = load double, ptr %55, align 8, !tbaa !11
  store double %447, ptr %41, align 8, !tbaa !11
  %448 = load ptr, ptr %28, align 8, !tbaa !5
  %449 = load ptr, ptr %22, align 8, !tbaa !5
  %450 = load i64, ptr %449, align 8, !tbaa !9
  %451 = getelementptr inbounds double, ptr %448, i64 %450
  %452 = load double, ptr %451, align 8, !tbaa !11
  %453 = load double, ptr %64, align 8, !tbaa !11
  %454 = fadd double %452, %453
  store double %454, ptr %42, align 8, !tbaa !11
  %455 = load double, ptr %41, align 8, !tbaa !11
  %456 = load double, ptr %42, align 8, !tbaa !11
  %457 = fcmp oge double %455, %456
  br i1 %457, label %458, label %460

458:                                              ; preds = %446
  %459 = load double, ptr %41, align 8, !tbaa !11
  br label %462

460:                                              ; preds = %446
  %461 = load double, ptr %42, align 8, !tbaa !11
  br label %462

462:                                              ; preds = %460, %458
  %463 = phi double [ %459, %458 ], [ %461, %460 ]
  store double %463, ptr %55, align 8, !tbaa !11
  %464 = load double, ptr %52, align 8, !tbaa !11
  store double %464, ptr %41, align 8, !tbaa !11
  %465 = load ptr, ptr %28, align 8, !tbaa !5
  %466 = load ptr, ptr %22, align 8, !tbaa !5
  %467 = load i64, ptr %466, align 8, !tbaa !9
  %468 = getelementptr inbounds double, ptr %465, i64 %467
  %469 = load double, ptr %468, align 8, !tbaa !11
  %470 = load double, ptr %64, align 8, !tbaa !11
  %471 = fsub double %469, %470
  store double %471, ptr %42, align 8, !tbaa !11
  %472 = load double, ptr %41, align 8, !tbaa !11
  %473 = load double, ptr %42, align 8, !tbaa !11
  %474 = fcmp ole double %472, %473
  br i1 %474, label %475, label %477

475:                                              ; preds = %462
  %476 = load double, ptr %41, align 8, !tbaa !11
  br label %479

477:                                              ; preds = %462
  %478 = load double, ptr %42, align 8, !tbaa !11
  br label %479

479:                                              ; preds = %477, %475
  %480 = phi double [ %476, %475 ], [ %478, %477 ]
  store double %480, ptr %52, align 8, !tbaa !11
  %481 = load double, ptr %52, align 8, !tbaa !11
  %482 = fcmp oge double %481, 0.000000e+00
  br i1 %482, label %483, label %485

483:                                              ; preds = %479
  %484 = load double, ptr %52, align 8, !tbaa !11
  br label %488

485:                                              ; preds = %479
  %486 = load double, ptr %52, align 8, !tbaa !11
  %487 = fneg double %486
  br label %488

488:                                              ; preds = %485, %483
  %489 = phi double [ %484, %483 ], [ %487, %485 ]
  store double %489, ptr %41, align 8, !tbaa !11
  %490 = load double, ptr %55, align 8, !tbaa !11
  %491 = fcmp oge double %490, 0.000000e+00
  br i1 %491, label %492, label %494

492:                                              ; preds = %488
  %493 = load double, ptr %55, align 8, !tbaa !11
  br label %497

494:                                              ; preds = %488
  %495 = load double, ptr %55, align 8, !tbaa !11
  %496 = fneg double %495
  br label %497

497:                                              ; preds = %494, %492
  %498 = phi double [ %493, %492 ], [ %496, %494 ]
  store double %498, ptr %42, align 8, !tbaa !11
  %499 = load double, ptr %41, align 8, !tbaa !11
  %500 = load double, ptr %42, align 8, !tbaa !11
  %501 = fcmp oge double %499, %500
  br i1 %501, label %502, label %504

502:                                              ; preds = %497
  %503 = load double, ptr %41, align 8, !tbaa !11
  br label %506

504:                                              ; preds = %497
  %505 = load double, ptr %42, align 8, !tbaa !11
  br label %506

506:                                              ; preds = %504, %502
  %507 = phi double [ %503, %502 ], [ %505, %504 ]
  store double %507, ptr %78, align 8, !tbaa !11
  %508 = load double, ptr %52, align 8, !tbaa !11
  %509 = load double, ptr %78, align 8, !tbaa !11
  %510 = fmul double %509, 2.100000e+00
  %511 = load double, ptr %60, align 8, !tbaa !11
  %512 = fmul double %510, %511
  %513 = load ptr, ptr %22, align 8, !tbaa !5
  %514 = load i64, ptr %513, align 8, !tbaa !9
  %515 = sitofp i64 %514 to double
  %516 = fneg double %512
  %517 = call double @llvm.fmuladd.f64(double %516, double %515, double %508)
  %518 = load double, ptr %87, align 8, !tbaa !11
  %519 = fneg double %518
  %520 = call double @llvm.fmuladd.f64(double %519, double 4.200000e+00, double %517)
  store double %520, ptr %52, align 8, !tbaa !11
  %521 = load double, ptr %55, align 8, !tbaa !11
  %522 = load double, ptr %78, align 8, !tbaa !11
  %523 = fmul double %522, 2.100000e+00
  %524 = load double, ptr %60, align 8, !tbaa !11
  %525 = fmul double %523, %524
  %526 = load ptr, ptr %22, align 8, !tbaa !5
  %527 = load i64, ptr %526, align 8, !tbaa !9
  %528 = sitofp i64 %527 to double
  %529 = call double @llvm.fmuladd.f64(double %525, double %528, double %521)
  %530 = load double, ptr %87, align 8, !tbaa !11
  %531 = call double @llvm.fmuladd.f64(double %530, double 2.100000e+00, double %529)
  store double %531, ptr %55, align 8, !tbaa !11
  %532 = load double, ptr %78, align 8, !tbaa !11
  %533 = load double, ptr %87, align 8, !tbaa !11
  %534 = fadd double %532, %533
  %535 = call double @log(double noundef %534) #5
  %536 = load double, ptr %87, align 8, !tbaa !11
  %537 = call double @log(double noundef %536) #5
  %538 = fsub double %535, %537
  %539 = call double @log(double noundef 2.000000e+00) #5
  %540 = fdiv double %538, %539
  %541 = fptosi double %540 to i64
  %542 = add nsw i64 %541, 2
  store i64 %542, ptr %75, align 8, !tbaa !9
  %543 = load ptr, ptr %27, align 8, !tbaa !5
  %544 = load double, ptr %543, align 8, !tbaa !11
  %545 = fcmp ole double %544, 0.000000e+00
  br i1 %545, label %546, label %550

546:                                              ; preds = %506
  %547 = load double, ptr %60, align 8, !tbaa !11
  %548 = load double, ptr %78, align 8, !tbaa !11
  %549 = fmul double %547, %548
  store double %549, ptr %72, align 8, !tbaa !11
  br label %553

550:                                              ; preds = %506
  %551 = load ptr, ptr %27, align 8, !tbaa !5
  %552 = load double, ptr %551, align 8, !tbaa !11
  store double %552, ptr %72, align 8, !tbaa !11
  br label %553

553:                                              ; preds = %550, %546
  %554 = load double, ptr %52, align 8, !tbaa !11
  %555 = load ptr, ptr %35, align 8, !tbaa !5
  %556 = load ptr, ptr %22, align 8, !tbaa !5
  %557 = load i64, ptr %556, align 8, !tbaa !9
  %558 = add nsw i64 %557, 1
  %559 = getelementptr inbounds double, ptr %555, i64 %558
  store double %554, ptr %559, align 8, !tbaa !11
  %560 = load double, ptr %52, align 8, !tbaa !11
  %561 = load ptr, ptr %35, align 8, !tbaa !5
  %562 = load ptr, ptr %22, align 8, !tbaa !5
  %563 = load i64, ptr %562, align 8, !tbaa !9
  %564 = add nsw i64 %563, 2
  %565 = getelementptr inbounds double, ptr %561, i64 %564
  store double %560, ptr %565, align 8, !tbaa !11
  %566 = load double, ptr %55, align 8, !tbaa !11
  %567 = load ptr, ptr %35, align 8, !tbaa !5
  %568 = load ptr, ptr %22, align 8, !tbaa !5
  %569 = load i64, ptr %568, align 8, !tbaa !9
  %570 = add nsw i64 %569, 3
  %571 = getelementptr inbounds double, ptr %567, i64 %570
  store double %566, ptr %571, align 8, !tbaa !11
  %572 = load double, ptr %55, align 8, !tbaa !11
  %573 = load ptr, ptr %35, align 8, !tbaa !5
  %574 = load ptr, ptr %22, align 8, !tbaa !5
  %575 = load i64, ptr %574, align 8, !tbaa !9
  %576 = add nsw i64 %575, 4
  %577 = getelementptr inbounds double, ptr %573, i64 %576
  store double %572, ptr %577, align 8, !tbaa !11
  %578 = load double, ptr %52, align 8, !tbaa !11
  %579 = load ptr, ptr %35, align 8, !tbaa !5
  %580 = load ptr, ptr %22, align 8, !tbaa !5
  %581 = load i64, ptr %580, align 8, !tbaa !9
  %582 = add nsw i64 %581, 5
  %583 = getelementptr inbounds double, ptr %579, i64 %582
  store double %578, ptr %583, align 8, !tbaa !11
  %584 = load double, ptr %55, align 8, !tbaa !11
  %585 = load ptr, ptr %35, align 8, !tbaa !5
  %586 = load ptr, ptr %22, align 8, !tbaa !5
  %587 = load i64, ptr %586, align 8, !tbaa !9
  %588 = add nsw i64 %587, 6
  %589 = getelementptr inbounds double, ptr %585, i64 %588
  store double %584, ptr %589, align 8, !tbaa !11
  %590 = load ptr, ptr %36, align 8, !tbaa !5
  %591 = getelementptr inbounds i64, ptr %590, i64 1
  store i64 -1, ptr %591, align 8, !tbaa !9
  %592 = load ptr, ptr %36, align 8, !tbaa !5
  %593 = getelementptr inbounds i64, ptr %592, i64 2
  store i64 -1, ptr %593, align 8, !tbaa !9
  %594 = load ptr, ptr %22, align 8, !tbaa !5
  %595 = load i64, ptr %594, align 8, !tbaa !9
  %596 = add nsw i64 %595, 1
  %597 = load ptr, ptr %36, align 8, !tbaa !5
  %598 = getelementptr inbounds i64, ptr %597, i64 3
  store i64 %596, ptr %598, align 8, !tbaa !9
  %599 = load ptr, ptr %22, align 8, !tbaa !5
  %600 = load i64, ptr %599, align 8, !tbaa !9
  %601 = add nsw i64 %600, 1
  %602 = load ptr, ptr %36, align 8, !tbaa !5
  %603 = getelementptr inbounds i64, ptr %602, i64 4
  store i64 %601, ptr %603, align 8, !tbaa !9
  %604 = load ptr, ptr %25, align 8, !tbaa !5
  %605 = load i64, ptr %604, align 8, !tbaa !9
  %606 = sub nsw i64 %605, 1
  %607 = load ptr, ptr %36, align 8, !tbaa !5
  %608 = getelementptr inbounds i64, ptr %607, i64 5
  store i64 %606, ptr %608, align 8, !tbaa !9
  %609 = load ptr, ptr %26, align 8, !tbaa !5
  %610 = load i64, ptr %609, align 8, !tbaa !9
  %611 = load ptr, ptr %36, align 8, !tbaa !5
  %612 = getelementptr inbounds i64, ptr %611, i64 6
  store i64 %610, ptr %612, align 8, !tbaa !9
  %613 = load ptr, ptr %22, align 8, !tbaa !5
  %614 = load ptr, ptr %28, align 8, !tbaa !5
  %615 = getelementptr inbounds double, ptr %614, i64 1
  %616 = load ptr, ptr %29, align 8, !tbaa !5
  %617 = getelementptr inbounds double, ptr %616, i64 1
  %618 = load ptr, ptr %35, align 8, !tbaa !5
  %619 = getelementptr inbounds double, ptr %618, i64 1
  %620 = load ptr, ptr %36, align 8, !tbaa !5
  %621 = getelementptr inbounds i64, ptr %620, i64 5
  %622 = load ptr, ptr %35, align 8, !tbaa !5
  %623 = load ptr, ptr %22, align 8, !tbaa !5
  %624 = load i64, ptr %623, align 8, !tbaa !9
  %625 = add nsw i64 %624, 1
  %626 = getelementptr inbounds double, ptr %622, i64 %625
  %627 = load ptr, ptr %35, align 8, !tbaa !5
  %628 = load ptr, ptr %22, align 8, !tbaa !5
  %629 = load i64, ptr %628, align 8, !tbaa !9
  %630 = add nsw i64 %629, 5
  %631 = getelementptr inbounds double, ptr %627, i64 %630
  %632 = load ptr, ptr %36, align 8, !tbaa !5
  %633 = getelementptr inbounds i64, ptr %632, i64 1
  %634 = load ptr, ptr %32, align 8, !tbaa !5
  %635 = getelementptr inbounds double, ptr %634, i64 1
  %636 = load ptr, ptr %33, align 8, !tbaa !5
  %637 = getelementptr inbounds i64, ptr %636, i64 1
  %638 = call i32 @dlaebz_(ptr noundef @c__3, ptr noundef %75, ptr noundef %613, ptr noundef @c__2, ptr noundef @c__2, ptr noundef %51, ptr noundef %72, ptr noundef %77, ptr noundef %87, ptr noundef %615, ptr noundef %617, ptr noundef %619, ptr noundef %621, ptr noundef %626, ptr noundef %631, ptr noundef %68, ptr noundef %633, ptr noundef %635, ptr noundef %637, ptr noundef %71)
  %639 = load ptr, ptr %36, align 8, !tbaa !5
  %640 = getelementptr inbounds i64, ptr %639, i64 6
  %641 = load i64, ptr %640, align 8, !tbaa !9
  %642 = load ptr, ptr %26, align 8, !tbaa !5
  %643 = load i64, ptr %642, align 8, !tbaa !9
  %644 = icmp eq i64 %641, %643
  br i1 %644, label %645, label %676

645:                                              ; preds = %553
  %646 = load ptr, ptr %35, align 8, !tbaa !5
  %647 = load ptr, ptr %22, align 8, !tbaa !5
  %648 = load i64, ptr %647, align 8, !tbaa !9
  %649 = add nsw i64 %648, 1
  %650 = getelementptr inbounds double, ptr %646, i64 %649
  %651 = load double, ptr %650, align 8, !tbaa !11
  store double %651, ptr %57, align 8, !tbaa !11
  %652 = load ptr, ptr %35, align 8, !tbaa !5
  %653 = load ptr, ptr %22, align 8, !tbaa !5
  %654 = load i64, ptr %653, align 8, !tbaa !9
  %655 = add nsw i64 %654, 3
  %656 = getelementptr inbounds double, ptr %652, i64 %655
  %657 = load double, ptr %656, align 8, !tbaa !11
  store double %657, ptr %61, align 8, !tbaa !11
  %658 = load ptr, ptr %36, align 8, !tbaa !5
  %659 = getelementptr inbounds i64, ptr %658, i64 1
  %660 = load i64, ptr %659, align 8, !tbaa !9
  store i64 %660, ptr %59, align 8, !tbaa !9
  %661 = load ptr, ptr %35, align 8, !tbaa !5
  %662 = load ptr, ptr %22, align 8, !tbaa !5
  %663 = load i64, ptr %662, align 8, !tbaa !9
  %664 = add nsw i64 %663, 4
  %665 = getelementptr inbounds double, ptr %661, i64 %664
  %666 = load double, ptr %665, align 8, !tbaa !11
  store double %666, ptr %58, align 8, !tbaa !11
  %667 = load ptr, ptr %35, align 8, !tbaa !5
  %668 = load ptr, ptr %22, align 8, !tbaa !5
  %669 = load i64, ptr %668, align 8, !tbaa !9
  %670 = add nsw i64 %669, 2
  %671 = getelementptr inbounds double, ptr %667, i64 %670
  %672 = load double, ptr %671, align 8, !tbaa !11
  store double %672, ptr %62, align 8, !tbaa !11
  %673 = load ptr, ptr %36, align 8, !tbaa !5
  %674 = getelementptr inbounds i64, ptr %673, i64 4
  %675 = load i64, ptr %674, align 8, !tbaa !9
  store i64 %675, ptr %63, align 8, !tbaa !9
  br label %707

676:                                              ; preds = %553
  %677 = load ptr, ptr %35, align 8, !tbaa !5
  %678 = load ptr, ptr %22, align 8, !tbaa !5
  %679 = load i64, ptr %678, align 8, !tbaa !9
  %680 = add nsw i64 %679, 2
  %681 = getelementptr inbounds double, ptr %677, i64 %680
  %682 = load double, ptr %681, align 8, !tbaa !11
  store double %682, ptr %57, align 8, !tbaa !11
  %683 = load ptr, ptr %35, align 8, !tbaa !5
  %684 = load ptr, ptr %22, align 8, !tbaa !5
  %685 = load i64, ptr %684, align 8, !tbaa !9
  %686 = add nsw i64 %685, 4
  %687 = getelementptr inbounds double, ptr %683, i64 %686
  %688 = load double, ptr %687, align 8, !tbaa !11
  store double %688, ptr %61, align 8, !tbaa !11
  %689 = load ptr, ptr %36, align 8, !tbaa !5
  %690 = getelementptr inbounds i64, ptr %689, i64 2
  %691 = load i64, ptr %690, align 8, !tbaa !9
  store i64 %691, ptr %59, align 8, !tbaa !9
  %692 = load ptr, ptr %35, align 8, !tbaa !5
  %693 = load ptr, ptr %22, align 8, !tbaa !5
  %694 = load i64, ptr %693, align 8, !tbaa !9
  %695 = add nsw i64 %694, 3
  %696 = getelementptr inbounds double, ptr %692, i64 %695
  %697 = load double, ptr %696, align 8, !tbaa !11
  store double %697, ptr %58, align 8, !tbaa !11
  %698 = load ptr, ptr %35, align 8, !tbaa !5
  %699 = load ptr, ptr %22, align 8, !tbaa !5
  %700 = load i64, ptr %699, align 8, !tbaa !9
  %701 = add nsw i64 %700, 1
  %702 = getelementptr inbounds double, ptr %698, i64 %701
  %703 = load double, ptr %702, align 8, !tbaa !11
  store double %703, ptr %62, align 8, !tbaa !11
  %704 = load ptr, ptr %36, align 8, !tbaa !5
  %705 = getelementptr inbounds i64, ptr %704, i64 3
  %706 = load i64, ptr %705, align 8, !tbaa !9
  store i64 %706, ptr %63, align 8, !tbaa !9
  br label %707

707:                                              ; preds = %676, %645
  %708 = load i64, ptr %59, align 8, !tbaa !9
  %709 = icmp slt i64 %708, 0
  br i1 %709, label %723, label %710

710:                                              ; preds = %707
  %711 = load i64, ptr %59, align 8, !tbaa !9
  %712 = load ptr, ptr %22, align 8, !tbaa !5
  %713 = load i64, ptr %712, align 8, !tbaa !9
  %714 = icmp sge i64 %711, %713
  br i1 %714, label %723, label %715

715:                                              ; preds = %710
  %716 = load i64, ptr %63, align 8, !tbaa !9
  %717 = icmp slt i64 %716, 1
  br i1 %717, label %723, label %718

718:                                              ; preds = %715
  %719 = load i64, ptr %63, align 8, !tbaa !9
  %720 = load ptr, ptr %22, align 8, !tbaa !5
  %721 = load i64, ptr %720, align 8, !tbaa !9
  %722 = icmp sgt i64 %719, %721
  br i1 %722, label %723, label %725

723:                                              ; preds = %718, %715, %710, %707
  %724 = load ptr, ptr %37, align 8, !tbaa !5
  store i64 4, ptr %724, align 8, !tbaa !9
  store i32 0, ptr %19, align 4
  store i32 1, ptr %89, align 4
  br label %1721

725:                                              ; preds = %718
  br label %881

726:                                              ; preds = %374
  %727 = load ptr, ptr %28, align 8, !tbaa !5
  %728 = getelementptr inbounds double, ptr %727, i64 1
  %729 = load double, ptr %728, align 8, !tbaa !11
  %730 = fcmp oge double %729, 0.000000e+00
  br i1 %730, label %731, label %735

731:                                              ; preds = %726
  %732 = load ptr, ptr %28, align 8, !tbaa !5
  %733 = getelementptr inbounds double, ptr %732, i64 1
  %734 = load double, ptr %733, align 8, !tbaa !11
  br label %740

735:                                              ; preds = %726
  %736 = load ptr, ptr %28, align 8, !tbaa !5
  %737 = getelementptr inbounds double, ptr %736, i64 1
  %738 = load double, ptr %737, align 8, !tbaa !11
  %739 = fneg double %738
  br label %740

740:                                              ; preds = %735, %731
  %741 = phi double [ %734, %731 ], [ %739, %735 ]
  %742 = load ptr, ptr %29, align 8, !tbaa !5
  %743 = getelementptr inbounds double, ptr %742, i64 1
  %744 = load double, ptr %743, align 8, !tbaa !11
  %745 = fcmp oge double %744, 0.000000e+00
  br i1 %745, label %746, label %750

746:                                              ; preds = %740
  %747 = load ptr, ptr %29, align 8, !tbaa !5
  %748 = getelementptr inbounds double, ptr %747, i64 1
  %749 = load double, ptr %748, align 8, !tbaa !11
  br label %755

750:                                              ; preds = %740
  %751 = load ptr, ptr %29, align 8, !tbaa !5
  %752 = getelementptr inbounds double, ptr %751, i64 1
  %753 = load double, ptr %752, align 8, !tbaa !11
  %754 = fneg double %753
  br label %755

755:                                              ; preds = %750, %746
  %756 = phi double [ %749, %746 ], [ %754, %750 ]
  %757 = fadd double %741, %756
  store double %757, ptr %43, align 8, !tbaa !11
  %758 = load ptr, ptr %28, align 8, !tbaa !5
  %759 = load ptr, ptr %22, align 8, !tbaa !5
  %760 = load i64, ptr %759, align 8, !tbaa !9
  %761 = getelementptr inbounds double, ptr %758, i64 %760
  %762 = load double, ptr %761, align 8, !tbaa !11
  store double %762, ptr %41, align 8, !tbaa !11
  %763 = load double, ptr %41, align 8, !tbaa !11
  %764 = fcmp oge double %763, 0.000000e+00
  br i1 %764, label %765, label %767

765:                                              ; preds = %755
  %766 = load double, ptr %41, align 8, !tbaa !11
  br label %770

767:                                              ; preds = %755
  %768 = load double, ptr %41, align 8, !tbaa !11
  %769 = fneg double %768
  br label %770

770:                                              ; preds = %767, %765
  %771 = phi double [ %766, %765 ], [ %769, %767 ]
  %772 = load ptr, ptr %29, align 8, !tbaa !5
  %773 = load ptr, ptr %22, align 8, !tbaa !5
  %774 = load i64, ptr %773, align 8, !tbaa !9
  %775 = sub nsw i64 %774, 1
  %776 = getelementptr inbounds double, ptr %772, i64 %775
  %777 = load double, ptr %776, align 8, !tbaa !11
  store double %777, ptr %42, align 8, !tbaa !11
  %778 = load double, ptr %42, align 8, !tbaa !11
  %779 = fcmp oge double %778, 0.000000e+00
  br i1 %779, label %780, label %782

780:                                              ; preds = %770
  %781 = load double, ptr %42, align 8, !tbaa !11
  br label %785

782:                                              ; preds = %770
  %783 = load double, ptr %42, align 8, !tbaa !11
  %784 = fneg double %783
  br label %785

785:                                              ; preds = %782, %780
  %786 = phi double [ %781, %780 ], [ %784, %782 ]
  %787 = fadd double %771, %786
  store double %787, ptr %44, align 8, !tbaa !11
  %788 = load double, ptr %43, align 8, !tbaa !11
  %789 = load double, ptr %44, align 8, !tbaa !11
  %790 = fcmp oge double %788, %789
  br i1 %790, label %791, label %793

791:                                              ; preds = %785
  %792 = load double, ptr %43, align 8, !tbaa !11
  br label %795

793:                                              ; preds = %785
  %794 = load double, ptr %44, align 8, !tbaa !11
  br label %795

795:                                              ; preds = %793, %791
  %796 = phi double [ %792, %791 ], [ %794, %793 ]
  store double %796, ptr %78, align 8, !tbaa !11
  %797 = load ptr, ptr %22, align 8, !tbaa !5
  %798 = load i64, ptr %797, align 8, !tbaa !9
  %799 = sub nsw i64 %798, 1
  store i64 %799, ptr %38, align 8, !tbaa !9
  store i64 2, ptr %46, align 8, !tbaa !9
  br label %800

800:                                              ; preds = %857, %795
  %801 = load i64, ptr %46, align 8, !tbaa !9
  %802 = load i64, ptr %38, align 8, !tbaa !9
  %803 = icmp sle i64 %801, %802
  br i1 %803, label %804, label %860

804:                                              ; preds = %800
  %805 = load double, ptr %78, align 8, !tbaa !11
  store double %805, ptr %44, align 8, !tbaa !11
  %806 = load ptr, ptr %28, align 8, !tbaa !5
  %807 = load i64, ptr %46, align 8, !tbaa !9
  %808 = getelementptr inbounds double, ptr %806, i64 %807
  %809 = load double, ptr %808, align 8, !tbaa !11
  store double %809, ptr %41, align 8, !tbaa !11
  %810 = load double, ptr %41, align 8, !tbaa !11
  %811 = fcmp oge double %810, 0.000000e+00
  br i1 %811, label %812, label %814

812:                                              ; preds = %804
  %813 = load double, ptr %41, align 8, !tbaa !11
  br label %817

814:                                              ; preds = %804
  %815 = load double, ptr %41, align 8, !tbaa !11
  %816 = fneg double %815
  br label %817

817:                                              ; preds = %814, %812
  %818 = phi double [ %813, %812 ], [ %816, %814 ]
  %819 = load ptr, ptr %29, align 8, !tbaa !5
  %820 = load i64, ptr %46, align 8, !tbaa !9
  %821 = sub nsw i64 %820, 1
  %822 = getelementptr inbounds double, ptr %819, i64 %821
  %823 = load double, ptr %822, align 8, !tbaa !11
  store double %823, ptr %42, align 8, !tbaa !11
  %824 = load double, ptr %42, align 8, !tbaa !11
  %825 = fcmp oge double %824, 0.000000e+00
  br i1 %825, label %826, label %828

826:                                              ; preds = %817
  %827 = load double, ptr %42, align 8, !tbaa !11
  br label %831

828:                                              ; preds = %817
  %829 = load double, ptr %42, align 8, !tbaa !11
  %830 = fneg double %829
  br label %831

831:                                              ; preds = %828, %826
  %832 = phi double [ %827, %826 ], [ %830, %828 ]
  %833 = fadd double %818, %832
  %834 = load ptr, ptr %29, align 8, !tbaa !5
  %835 = load i64, ptr %46, align 8, !tbaa !9
  %836 = getelementptr inbounds double, ptr %834, i64 %835
  %837 = load double, ptr %836, align 8, !tbaa !11
  store double %837, ptr %43, align 8, !tbaa !11
  %838 = load double, ptr %43, align 8, !tbaa !11
  %839 = fcmp oge double %838, 0.000000e+00
  br i1 %839, label %840, label %842

840:                                              ; preds = %831
  %841 = load double, ptr %43, align 8, !tbaa !11
  br label %845

842:                                              ; preds = %831
  %843 = load double, ptr %43, align 8, !tbaa !11
  %844 = fneg double %843
  br label %845

845:                                              ; preds = %842, %840
  %846 = phi double [ %841, %840 ], [ %844, %842 ]
  %847 = fadd double %833, %846
  store double %847, ptr %45, align 8, !tbaa !11
  %848 = load double, ptr %44, align 8, !tbaa !11
  %849 = load double, ptr %45, align 8, !tbaa !11
  %850 = fcmp oge double %848, %849
  br i1 %850, label %851, label %853

851:                                              ; preds = %845
  %852 = load double, ptr %44, align 8, !tbaa !11
  br label %855

853:                                              ; preds = %845
  %854 = load double, ptr %45, align 8, !tbaa !11
  br label %855

855:                                              ; preds = %853, %851
  %856 = phi double [ %852, %851 ], [ %854, %853 ]
  store double %856, ptr %78, align 8, !tbaa !11
  br label %857

857:                                              ; preds = %855
  %858 = load i64, ptr %46, align 8, !tbaa !9
  %859 = add nsw i64 %858, 1
  store i64 %859, ptr %46, align 8, !tbaa !9
  br label %800, !llvm.loop !16

860:                                              ; preds = %800
  %861 = load ptr, ptr %27, align 8, !tbaa !5
  %862 = load double, ptr %861, align 8, !tbaa !11
  %863 = fcmp ole double %862, 0.000000e+00
  br i1 %863, label %864, label %868

864:                                              ; preds = %860
  %865 = load double, ptr %60, align 8, !tbaa !11
  %866 = load double, ptr %78, align 8, !tbaa !11
  %867 = fmul double %865, %866
  store double %867, ptr %72, align 8, !tbaa !11
  br label %871

868:                                              ; preds = %860
  %869 = load ptr, ptr %27, align 8, !tbaa !5
  %870 = load double, ptr %869, align 8, !tbaa !11
  store double %870, ptr %72, align 8, !tbaa !11
  br label %871

871:                                              ; preds = %868, %864
  %872 = load i64, ptr %80, align 8, !tbaa !9
  %873 = icmp eq i64 %872, 2
  br i1 %873, label %874, label %879

874:                                              ; preds = %871
  %875 = load ptr, ptr %23, align 8, !tbaa !5
  %876 = load double, ptr %875, align 8, !tbaa !11
  store double %876, ptr %57, align 8, !tbaa !11
  %877 = load ptr, ptr %24, align 8, !tbaa !5
  %878 = load double, ptr %877, align 8, !tbaa !11
  store double %878, ptr %58, align 8, !tbaa !11
  br label %880

879:                                              ; preds = %871
  store double 0.000000e+00, ptr %57, align 8, !tbaa !11
  store double 0.000000e+00, ptr %58, align 8, !tbaa !11
  br label %880

880:                                              ; preds = %879, %874
  br label %881

881:                                              ; preds = %880, %725
  %882 = load ptr, ptr %30, align 8, !tbaa !5
  store i64 0, ptr %882, align 8, !tbaa !9
  store i64 0, ptr %66, align 8, !tbaa !9
  %883 = load ptr, ptr %37, align 8, !tbaa !5
  store i64 0, ptr %883, align 8, !tbaa !9
  store i64 0, ptr %59, align 8, !tbaa !9
  store i64 0, ptr %63, align 8, !tbaa !9
  %884 = load ptr, ptr %31, align 8, !tbaa !5
  %885 = load i64, ptr %884, align 8, !tbaa !9
  store i64 %885, ptr %38, align 8, !tbaa !9
  store i64 1, ptr %48, align 8, !tbaa !9
  br label %886

886:                                              ; preds = %1393, %881
  %887 = load i64, ptr %48, align 8, !tbaa !9
  %888 = load i64, ptr %38, align 8, !tbaa !9
  %889 = icmp sle i64 %887, %888
  br i1 %889, label %890, label %1396

890:                                              ; preds = %886
  %891 = load i64, ptr %66, align 8, !tbaa !9
  store i64 %891, ptr %67, align 8, !tbaa !9
  %892 = load i64, ptr %67, align 8, !tbaa !9
  %893 = add nsw i64 %892, 1
  store i64 %893, ptr %79, align 8, !tbaa !9
  %894 = load ptr, ptr %34, align 8, !tbaa !5
  %895 = load i64, ptr %48, align 8, !tbaa !9
  %896 = getelementptr inbounds i64, ptr %894, i64 %895
  %897 = load i64, ptr %896, align 8, !tbaa !9
  store i64 %897, ptr %66, align 8, !tbaa !9
  %898 = load i64, ptr %66, align 8, !tbaa !9
  %899 = load i64, ptr %67, align 8, !tbaa !9
  %900 = sub nsw i64 %898, %899
  store i64 %900, ptr %54, align 8, !tbaa !9
  %901 = load i64, ptr %54, align 8, !tbaa !9
  %902 = icmp eq i64 %901, 1
  br i1 %902, label %903, label %972

903:                                              ; preds = %890
  %904 = load i64, ptr %80, align 8, !tbaa !9
  %905 = icmp eq i64 %904, 1
  br i1 %905, label %915, label %906

906:                                              ; preds = %903
  %907 = load double, ptr %57, align 8, !tbaa !11
  %908 = load ptr, ptr %28, align 8, !tbaa !5
  %909 = load i64, ptr %79, align 8, !tbaa !9
  %910 = getelementptr inbounds double, ptr %908, i64 %909
  %911 = load double, ptr %910, align 8, !tbaa !11
  %912 = load double, ptr %87, align 8, !tbaa !11
  %913 = fsub double %911, %912
  %914 = fcmp oge double %907, %913
  br i1 %914, label %915, label %918

915:                                              ; preds = %906, %903
  %916 = load i64, ptr %59, align 8, !tbaa !9
  %917 = add nsw i64 %916, 1
  store i64 %917, ptr %59, align 8, !tbaa !9
  br label %918

918:                                              ; preds = %915, %906
  %919 = load i64, ptr %80, align 8, !tbaa !9
  %920 = icmp eq i64 %919, 1
  br i1 %920, label %930, label %921

921:                                              ; preds = %918
  %922 = load double, ptr %58, align 8, !tbaa !11
  %923 = load ptr, ptr %28, align 8, !tbaa !5
  %924 = load i64, ptr %79, align 8, !tbaa !9
  %925 = getelementptr inbounds double, ptr %923, i64 %924
  %926 = load double, ptr %925, align 8, !tbaa !11
  %927 = load double, ptr %87, align 8, !tbaa !11
  %928 = fsub double %926, %927
  %929 = fcmp oge double %922, %928
  br i1 %929, label %930, label %933

930:                                              ; preds = %921, %918
  %931 = load i64, ptr %63, align 8, !tbaa !9
  %932 = add nsw i64 %931, 1
  store i64 %932, ptr %63, align 8, !tbaa !9
  br label %933

933:                                              ; preds = %930, %921
  %934 = load i64, ptr %80, align 8, !tbaa !9
  %935 = icmp eq i64 %934, 1
  br i1 %935, label %954, label %936

936:                                              ; preds = %933
  %937 = load double, ptr %57, align 8, !tbaa !11
  %938 = load ptr, ptr %28, align 8, !tbaa !5
  %939 = load i64, ptr %79, align 8, !tbaa !9
  %940 = getelementptr inbounds double, ptr %938, i64 %939
  %941 = load double, ptr %940, align 8, !tbaa !11
  %942 = load double, ptr %87, align 8, !tbaa !11
  %943 = fsub double %941, %942
  %944 = fcmp olt double %937, %943
  br i1 %944, label %945, label %971

945:                                              ; preds = %936
  %946 = load double, ptr %58, align 8, !tbaa !11
  %947 = load ptr, ptr %28, align 8, !tbaa !5
  %948 = load i64, ptr %79, align 8, !tbaa !9
  %949 = getelementptr inbounds double, ptr %947, i64 %948
  %950 = load double, ptr %949, align 8, !tbaa !11
  %951 = load double, ptr %87, align 8, !tbaa !11
  %952 = fsub double %950, %951
  %953 = fcmp oge double %946, %952
  br i1 %953, label %954, label %971

954:                                              ; preds = %945, %933
  %955 = load ptr, ptr %30, align 8, !tbaa !5
  %956 = load i64, ptr %955, align 8, !tbaa !9
  %957 = add nsw i64 %956, 1
  store i64 %957, ptr %955, align 8, !tbaa !9
  %958 = load ptr, ptr %28, align 8, !tbaa !5
  %959 = load i64, ptr %79, align 8, !tbaa !9
  %960 = getelementptr inbounds double, ptr %958, i64 %959
  %961 = load double, ptr %960, align 8, !tbaa !11
  %962 = load ptr, ptr %32, align 8, !tbaa !5
  %963 = load ptr, ptr %30, align 8, !tbaa !5
  %964 = load i64, ptr %963, align 8, !tbaa !9
  %965 = getelementptr inbounds double, ptr %962, i64 %964
  store double %961, ptr %965, align 8, !tbaa !11
  %966 = load i64, ptr %48, align 8, !tbaa !9
  %967 = load ptr, ptr %33, align 8, !tbaa !5
  %968 = load ptr, ptr %30, align 8, !tbaa !5
  %969 = load i64, ptr %968, align 8, !tbaa !9
  %970 = getelementptr inbounds i64, ptr %967, i64 %969
  store i64 %966, ptr %970, align 8, !tbaa !9
  br label %971

971:                                              ; preds = %954, %945, %936
  br label %1391

972:                                              ; preds = %890
  %973 = load ptr, ptr %28, align 8, !tbaa !5
  %974 = load i64, ptr %79, align 8, !tbaa !9
  %975 = getelementptr inbounds double, ptr %973, i64 %974
  %976 = load double, ptr %975, align 8, !tbaa !11
  store double %976, ptr %55, align 8, !tbaa !11
  %977 = load ptr, ptr %28, align 8, !tbaa !5
  %978 = load i64, ptr %79, align 8, !tbaa !9
  %979 = getelementptr inbounds double, ptr %977, i64 %978
  %980 = load double, ptr %979, align 8, !tbaa !11
  store double %980, ptr %52, align 8, !tbaa !11
  store double 0.000000e+00, ptr %64, align 8, !tbaa !11
  %981 = load i64, ptr %66, align 8, !tbaa !9
  %982 = sub nsw i64 %981, 1
  store i64 %982, ptr %39, align 8, !tbaa !9
  %983 = load i64, ptr %79, align 8, !tbaa !9
  store i64 %983, ptr %46, align 8, !tbaa !9
  br label %984

984:                                              ; preds = %1039, %972
  %985 = load i64, ptr %46, align 8, !tbaa !9
  %986 = load i64, ptr %39, align 8, !tbaa !9
  %987 = icmp sle i64 %985, %986
  br i1 %987, label %988, label %1042

988:                                              ; preds = %984
  %989 = load ptr, ptr %29, align 8, !tbaa !5
  %990 = load i64, ptr %46, align 8, !tbaa !9
  %991 = getelementptr inbounds double, ptr %989, i64 %990
  %992 = load double, ptr %991, align 8, !tbaa !11
  store double %992, ptr %41, align 8, !tbaa !11
  %993 = load double, ptr %41, align 8, !tbaa !11
  %994 = fcmp oge double %993, 0.000000e+00
  br i1 %994, label %995, label %997

995:                                              ; preds = %988
  %996 = load double, ptr %41, align 8, !tbaa !11
  br label %1000

997:                                              ; preds = %988
  %998 = load double, ptr %41, align 8, !tbaa !11
  %999 = fneg double %998
  br label %1000

1000:                                             ; preds = %997, %995
  %1001 = phi double [ %996, %995 ], [ %999, %997 ]
  store double %1001, ptr %65, align 8, !tbaa !11
  %1002 = load double, ptr %55, align 8, !tbaa !11
  store double %1002, ptr %41, align 8, !tbaa !11
  %1003 = load ptr, ptr %28, align 8, !tbaa !5
  %1004 = load i64, ptr %46, align 8, !tbaa !9
  %1005 = getelementptr inbounds double, ptr %1003, i64 %1004
  %1006 = load double, ptr %1005, align 8, !tbaa !11
  %1007 = load double, ptr %64, align 8, !tbaa !11
  %1008 = fadd double %1006, %1007
  %1009 = load double, ptr %65, align 8, !tbaa !11
  %1010 = fadd double %1008, %1009
  store double %1010, ptr %42, align 8, !tbaa !11
  %1011 = load double, ptr %41, align 8, !tbaa !11
  %1012 = load double, ptr %42, align 8, !tbaa !11
  %1013 = fcmp oge double %1011, %1012
  br i1 %1013, label %1014, label %1016

1014:                                             ; preds = %1000
  %1015 = load double, ptr %41, align 8, !tbaa !11
  br label %1018

1016:                                             ; preds = %1000
  %1017 = load double, ptr %42, align 8, !tbaa !11
  br label %1018

1018:                                             ; preds = %1016, %1014
  %1019 = phi double [ %1015, %1014 ], [ %1017, %1016 ]
  store double %1019, ptr %55, align 8, !tbaa !11
  %1020 = load double, ptr %52, align 8, !tbaa !11
  store double %1020, ptr %41, align 8, !tbaa !11
  %1021 = load ptr, ptr %28, align 8, !tbaa !5
  %1022 = load i64, ptr %46, align 8, !tbaa !9
  %1023 = getelementptr inbounds double, ptr %1021, i64 %1022
  %1024 = load double, ptr %1023, align 8, !tbaa !11
  %1025 = load double, ptr %64, align 8, !tbaa !11
  %1026 = fsub double %1024, %1025
  %1027 = load double, ptr %65, align 8, !tbaa !11
  %1028 = fsub double %1026, %1027
  store double %1028, ptr %42, align 8, !tbaa !11
  %1029 = load double, ptr %41, align 8, !tbaa !11
  %1030 = load double, ptr %42, align 8, !tbaa !11
  %1031 = fcmp ole double %1029, %1030
  br i1 %1031, label %1032, label %1034

1032:                                             ; preds = %1018
  %1033 = load double, ptr %41, align 8, !tbaa !11
  br label %1036

1034:                                             ; preds = %1018
  %1035 = load double, ptr %42, align 8, !tbaa !11
  br label %1036

1036:                                             ; preds = %1034, %1032
  %1037 = phi double [ %1033, %1032 ], [ %1035, %1034 ]
  store double %1037, ptr %52, align 8, !tbaa !11
  %1038 = load double, ptr %65, align 8, !tbaa !11
  store double %1038, ptr %64, align 8, !tbaa !11
  br label %1039

1039:                                             ; preds = %1036
  %1040 = load i64, ptr %46, align 8, !tbaa !9
  %1041 = add nsw i64 %1040, 1
  store i64 %1041, ptr %46, align 8, !tbaa !9
  br label %984, !llvm.loop !17

1042:                                             ; preds = %984
  %1043 = load double, ptr %55, align 8, !tbaa !11
  store double %1043, ptr %41, align 8, !tbaa !11
  %1044 = load ptr, ptr %28, align 8, !tbaa !5
  %1045 = load i64, ptr %66, align 8, !tbaa !9
  %1046 = getelementptr inbounds double, ptr %1044, i64 %1045
  %1047 = load double, ptr %1046, align 8, !tbaa !11
  %1048 = load double, ptr %64, align 8, !tbaa !11
  %1049 = fadd double %1047, %1048
  store double %1049, ptr %42, align 8, !tbaa !11
  %1050 = load double, ptr %41, align 8, !tbaa !11
  %1051 = load double, ptr %42, align 8, !tbaa !11
  %1052 = fcmp oge double %1050, %1051
  br i1 %1052, label %1053, label %1055

1053:                                             ; preds = %1042
  %1054 = load double, ptr %41, align 8, !tbaa !11
  br label %1057

1055:                                             ; preds = %1042
  %1056 = load double, ptr %42, align 8, !tbaa !11
  br label %1057

1057:                                             ; preds = %1055, %1053
  %1058 = phi double [ %1054, %1053 ], [ %1056, %1055 ]
  store double %1058, ptr %55, align 8, !tbaa !11
  %1059 = load double, ptr %52, align 8, !tbaa !11
  store double %1059, ptr %41, align 8, !tbaa !11
  %1060 = load ptr, ptr %28, align 8, !tbaa !5
  %1061 = load i64, ptr %66, align 8, !tbaa !9
  %1062 = getelementptr inbounds double, ptr %1060, i64 %1061
  %1063 = load double, ptr %1062, align 8, !tbaa !11
  %1064 = load double, ptr %64, align 8, !tbaa !11
  %1065 = fsub double %1063, %1064
  store double %1065, ptr %42, align 8, !tbaa !11
  %1066 = load double, ptr %41, align 8, !tbaa !11
  %1067 = load double, ptr %42, align 8, !tbaa !11
  %1068 = fcmp ole double %1066, %1067
  br i1 %1068, label %1069, label %1071

1069:                                             ; preds = %1057
  %1070 = load double, ptr %41, align 8, !tbaa !11
  br label %1073

1071:                                             ; preds = %1057
  %1072 = load double, ptr %42, align 8, !tbaa !11
  br label %1073

1073:                                             ; preds = %1071, %1069
  %1074 = phi double [ %1070, %1069 ], [ %1072, %1071 ]
  store double %1074, ptr %52, align 8, !tbaa !11
  %1075 = load double, ptr %52, align 8, !tbaa !11
  %1076 = fcmp oge double %1075, 0.000000e+00
  br i1 %1076, label %1077, label %1079

1077:                                             ; preds = %1073
  %1078 = load double, ptr %52, align 8, !tbaa !11
  br label %1082

1079:                                             ; preds = %1073
  %1080 = load double, ptr %52, align 8, !tbaa !11
  %1081 = fneg double %1080
  br label %1082

1082:                                             ; preds = %1079, %1077
  %1083 = phi double [ %1078, %1077 ], [ %1081, %1079 ]
  store double %1083, ptr %41, align 8, !tbaa !11
  %1084 = load double, ptr %55, align 8, !tbaa !11
  %1085 = fcmp oge double %1084, 0.000000e+00
  br i1 %1085, label %1086, label %1088

1086:                                             ; preds = %1082
  %1087 = load double, ptr %55, align 8, !tbaa !11
  br label %1091

1088:                                             ; preds = %1082
  %1089 = load double, ptr %55, align 8, !tbaa !11
  %1090 = fneg double %1089
  br label %1091

1091:                                             ; preds = %1088, %1086
  %1092 = phi double [ %1087, %1086 ], [ %1090, %1088 ]
  store double %1092, ptr %42, align 8, !tbaa !11
  %1093 = load double, ptr %41, align 8, !tbaa !11
  %1094 = load double, ptr %42, align 8, !tbaa !11
  %1095 = fcmp oge double %1093, %1094
  br i1 %1095, label %1096, label %1098

1096:                                             ; preds = %1091
  %1097 = load double, ptr %41, align 8, !tbaa !11
  br label %1100

1098:                                             ; preds = %1091
  %1099 = load double, ptr %42, align 8, !tbaa !11
  br label %1100

1100:                                             ; preds = %1098, %1096
  %1101 = phi double [ %1097, %1096 ], [ %1099, %1098 ]
  store double %1101, ptr %74, align 8, !tbaa !11
  %1102 = load double, ptr %52, align 8, !tbaa !11
  %1103 = load double, ptr %74, align 8, !tbaa !11
  %1104 = fmul double %1103, 2.100000e+00
  %1105 = load double, ptr %60, align 8, !tbaa !11
  %1106 = fmul double %1104, %1105
  %1107 = load i64, ptr %54, align 8, !tbaa !9
  %1108 = sitofp i64 %1107 to double
  %1109 = fneg double %1106
  %1110 = call double @llvm.fmuladd.f64(double %1109, double %1108, double %1102)
  %1111 = load double, ptr %87, align 8, !tbaa !11
  %1112 = fneg double %1111
  %1113 = call double @llvm.fmuladd.f64(double %1112, double 2.100000e+00, double %1110)
  store double %1113, ptr %52, align 8, !tbaa !11
  %1114 = load double, ptr %55, align 8, !tbaa !11
  %1115 = load double, ptr %74, align 8, !tbaa !11
  %1116 = fmul double %1115, 2.100000e+00
  %1117 = load double, ptr %60, align 8, !tbaa !11
  %1118 = fmul double %1116, %1117
  %1119 = load i64, ptr %54, align 8, !tbaa !9
  %1120 = sitofp i64 %1119 to double
  %1121 = call double @llvm.fmuladd.f64(double %1118, double %1120, double %1114)
  %1122 = load double, ptr %87, align 8, !tbaa !11
  %1123 = call double @llvm.fmuladd.f64(double %1122, double 2.100000e+00, double %1121)
  store double %1123, ptr %55, align 8, !tbaa !11
  %1124 = load ptr, ptr %27, align 8, !tbaa !5
  %1125 = load double, ptr %1124, align 8, !tbaa !11
  %1126 = fcmp ole double %1125, 0.000000e+00
  br i1 %1126, label %1127, label %1157

1127:                                             ; preds = %1100
  %1128 = load double, ptr %52, align 8, !tbaa !11
  %1129 = fcmp oge double %1128, 0.000000e+00
  br i1 %1129, label %1130, label %1132

1130:                                             ; preds = %1127
  %1131 = load double, ptr %52, align 8, !tbaa !11
  br label %1135

1132:                                             ; preds = %1127
  %1133 = load double, ptr %52, align 8, !tbaa !11
  %1134 = fneg double %1133
  br label %1135

1135:                                             ; preds = %1132, %1130
  %1136 = phi double [ %1131, %1130 ], [ %1134, %1132 ]
  store double %1136, ptr %41, align 8, !tbaa !11
  %1137 = load double, ptr %55, align 8, !tbaa !11
  %1138 = fcmp oge double %1137, 0.000000e+00
  br i1 %1138, label %1139, label %1141

1139:                                             ; preds = %1135
  %1140 = load double, ptr %55, align 8, !tbaa !11
  br label %1144

1141:                                             ; preds = %1135
  %1142 = load double, ptr %55, align 8, !tbaa !11
  %1143 = fneg double %1142
  br label %1144

1144:                                             ; preds = %1141, %1139
  %1145 = phi double [ %1140, %1139 ], [ %1143, %1141 ]
  store double %1145, ptr %42, align 8, !tbaa !11
  %1146 = load double, ptr %60, align 8, !tbaa !11
  %1147 = load double, ptr %41, align 8, !tbaa !11
  %1148 = load double, ptr %42, align 8, !tbaa !11
  %1149 = fcmp oge double %1147, %1148
  br i1 %1149, label %1150, label %1152

1150:                                             ; preds = %1144
  %1151 = load double, ptr %41, align 8, !tbaa !11
  br label %1154

1152:                                             ; preds = %1144
  %1153 = load double, ptr %42, align 8, !tbaa !11
  br label %1154

1154:                                             ; preds = %1152, %1150
  %1155 = phi double [ %1151, %1150 ], [ %1153, %1152 ]
  %1156 = fmul double %1146, %1155
  store double %1156, ptr %72, align 8, !tbaa !11
  br label %1160

1157:                                             ; preds = %1100
  %1158 = load ptr, ptr %27, align 8, !tbaa !5
  %1159 = load double, ptr %1158, align 8, !tbaa !11
  store double %1159, ptr %72, align 8, !tbaa !11
  br label %1160

1160:                                             ; preds = %1157, %1154
  %1161 = load i64, ptr %80, align 8, !tbaa !9
  %1162 = icmp sgt i64 %1161, 1
  br i1 %1162, label %1163, label %1198

1163:                                             ; preds = %1160
  %1164 = load double, ptr %55, align 8, !tbaa !11
  %1165 = load double, ptr %57, align 8, !tbaa !11
  %1166 = fcmp olt double %1164, %1165
  br i1 %1166, label %1167, label %1174

1167:                                             ; preds = %1163
  %1168 = load i64, ptr %54, align 8, !tbaa !9
  %1169 = load i64, ptr %59, align 8, !tbaa !9
  %1170 = add nsw i64 %1169, %1168
  store i64 %1170, ptr %59, align 8, !tbaa !9
  %1171 = load i64, ptr %54, align 8, !tbaa !9
  %1172 = load i64, ptr %63, align 8, !tbaa !9
  %1173 = add nsw i64 %1172, %1171
  store i64 %1173, ptr %63, align 8, !tbaa !9
  br label %1392

1174:                                             ; preds = %1163
  %1175 = load double, ptr %52, align 8, !tbaa !11
  %1176 = load double, ptr %57, align 8, !tbaa !11
  %1177 = fcmp oge double %1175, %1176
  br i1 %1177, label %1178, label %1180

1178:                                             ; preds = %1174
  %1179 = load double, ptr %52, align 8, !tbaa !11
  br label %1182

1180:                                             ; preds = %1174
  %1181 = load double, ptr %57, align 8, !tbaa !11
  br label %1182

1182:                                             ; preds = %1180, %1178
  %1183 = phi double [ %1179, %1178 ], [ %1181, %1180 ]
  store double %1183, ptr %52, align 8, !tbaa !11
  %1184 = load double, ptr %55, align 8, !tbaa !11
  %1185 = load double, ptr %58, align 8, !tbaa !11
  %1186 = fcmp ole double %1184, %1185
  br i1 %1186, label %1187, label %1189

1187:                                             ; preds = %1182
  %1188 = load double, ptr %55, align 8, !tbaa !11
  br label %1191

1189:                                             ; preds = %1182
  %1190 = load double, ptr %58, align 8, !tbaa !11
  br label %1191

1191:                                             ; preds = %1189, %1187
  %1192 = phi double [ %1188, %1187 ], [ %1190, %1189 ]
  store double %1192, ptr %55, align 8, !tbaa !11
  %1193 = load double, ptr %52, align 8, !tbaa !11
  %1194 = load double, ptr %55, align 8, !tbaa !11
  %1195 = fcmp oge double %1193, %1194
  br i1 %1195, label %1196, label %1197

1196:                                             ; preds = %1191
  br label %1392

1197:                                             ; preds = %1191
  br label %1198

1198:                                             ; preds = %1197, %1160
  %1199 = load double, ptr %52, align 8, !tbaa !11
  %1200 = load ptr, ptr %35, align 8, !tbaa !5
  %1201 = load ptr, ptr %22, align 8, !tbaa !5
  %1202 = load i64, ptr %1201, align 8, !tbaa !9
  %1203 = add nsw i64 %1202, 1
  %1204 = getelementptr inbounds double, ptr %1200, i64 %1203
  store double %1199, ptr %1204, align 8, !tbaa !11
  %1205 = load double, ptr %55, align 8, !tbaa !11
  %1206 = load ptr, ptr %35, align 8, !tbaa !5
  %1207 = load ptr, ptr %22, align 8, !tbaa !5
  %1208 = load i64, ptr %1207, align 8, !tbaa !9
  %1209 = load i64, ptr %54, align 8, !tbaa !9
  %1210 = add nsw i64 %1208, %1209
  %1211 = add nsw i64 %1210, 1
  %1212 = getelementptr inbounds double, ptr %1206, i64 %1211
  store double %1205, ptr %1212, align 8, !tbaa !11
  %1213 = load ptr, ptr %28, align 8, !tbaa !5
  %1214 = load i64, ptr %79, align 8, !tbaa !9
  %1215 = getelementptr inbounds double, ptr %1213, i64 %1214
  %1216 = load ptr, ptr %29, align 8, !tbaa !5
  %1217 = load i64, ptr %79, align 8, !tbaa !9
  %1218 = getelementptr inbounds double, ptr %1216, i64 %1217
  %1219 = load ptr, ptr %35, align 8, !tbaa !5
  %1220 = load i64, ptr %79, align 8, !tbaa !9
  %1221 = getelementptr inbounds double, ptr %1219, i64 %1220
  %1222 = getelementptr inbounds [1 x i64], ptr %83, i64 0, i64 0
  %1223 = load ptr, ptr %35, align 8, !tbaa !5
  %1224 = load ptr, ptr %22, align 8, !tbaa !5
  %1225 = load i64, ptr %1224, align 8, !tbaa !9
  %1226 = add nsw i64 %1225, 1
  %1227 = getelementptr inbounds double, ptr %1223, i64 %1226
  %1228 = load ptr, ptr %35, align 8, !tbaa !5
  %1229 = load ptr, ptr %22, align 8, !tbaa !5
  %1230 = load i64, ptr %1229, align 8, !tbaa !9
  %1231 = load i64, ptr %54, align 8, !tbaa !9
  %1232 = shl i64 %1231, 1
  %1233 = add nsw i64 %1230, %1232
  %1234 = add nsw i64 %1233, 1
  %1235 = getelementptr inbounds double, ptr %1228, i64 %1234
  %1236 = load ptr, ptr %36, align 8, !tbaa !5
  %1237 = getelementptr inbounds i64, ptr %1236, i64 1
  %1238 = load ptr, ptr %32, align 8, !tbaa !5
  %1239 = load ptr, ptr %30, align 8, !tbaa !5
  %1240 = load i64, ptr %1239, align 8, !tbaa !9
  %1241 = add nsw i64 %1240, 1
  %1242 = getelementptr inbounds double, ptr %1238, i64 %1241
  %1243 = load ptr, ptr %33, align 8, !tbaa !5
  %1244 = load ptr, ptr %30, align 8, !tbaa !5
  %1245 = load i64, ptr %1244, align 8, !tbaa !9
  %1246 = add nsw i64 %1245, 1
  %1247 = getelementptr inbounds i64, ptr %1243, i64 %1246
  %1248 = call i32 @dlaebz_(ptr noundef @c__1, ptr noundef @c__0, ptr noundef %54, ptr noundef %54, ptr noundef @c__1, ptr noundef %51, ptr noundef %72, ptr noundef %77, ptr noundef %87, ptr noundef %1215, ptr noundef %1218, ptr noundef %1221, ptr noundef %1222, ptr noundef %1227, ptr noundef %1235, ptr noundef %53, ptr noundef %1237, ptr noundef %1242, ptr noundef %1247, ptr noundef %71)
  %1249 = load ptr, ptr %36, align 8, !tbaa !5
  %1250 = getelementptr inbounds i64, ptr %1249, i64 1
  %1251 = load i64, ptr %1250, align 8, !tbaa !9
  %1252 = load i64, ptr %59, align 8, !tbaa !9
  %1253 = add nsw i64 %1252, %1251
  store i64 %1253, ptr %59, align 8, !tbaa !9
  %1254 = load ptr, ptr %36, align 8, !tbaa !5
  %1255 = load i64, ptr %54, align 8, !tbaa !9
  %1256 = add nsw i64 %1255, 1
  %1257 = getelementptr inbounds i64, ptr %1254, i64 %1256
  %1258 = load i64, ptr %1257, align 8, !tbaa !9
  %1259 = load i64, ptr %63, align 8, !tbaa !9
  %1260 = add nsw i64 %1259, %1258
  store i64 %1260, ptr %63, align 8, !tbaa !9
  %1261 = load ptr, ptr %30, align 8, !tbaa !5
  %1262 = load i64, ptr %1261, align 8, !tbaa !9
  %1263 = load ptr, ptr %36, align 8, !tbaa !5
  %1264 = getelementptr inbounds i64, ptr %1263, i64 1
  %1265 = load i64, ptr %1264, align 8, !tbaa !9
  %1266 = sub nsw i64 %1262, %1265
  store i64 %1266, ptr %73, align 8, !tbaa !9
  %1267 = load double, ptr %55, align 8, !tbaa !11
  %1268 = load double, ptr %52, align 8, !tbaa !11
  %1269 = fsub double %1267, %1268
  %1270 = load double, ptr %87, align 8, !tbaa !11
  %1271 = fadd double %1269, %1270
  %1272 = call double @log(double noundef %1271) #5
  %1273 = load double, ptr %87, align 8, !tbaa !11
  %1274 = call double @log(double noundef %1273) #5
  %1275 = fsub double %1272, %1274
  %1276 = call double @log(double noundef 2.000000e+00) #5
  %1277 = fdiv double %1275, %1276
  %1278 = fptosi double %1277 to i64
  %1279 = add nsw i64 %1278, 2
  store i64 %1279, ptr %75, align 8, !tbaa !9
  %1280 = load ptr, ptr %28, align 8, !tbaa !5
  %1281 = load i64, ptr %79, align 8, !tbaa !9
  %1282 = getelementptr inbounds double, ptr %1280, i64 %1281
  %1283 = load ptr, ptr %29, align 8, !tbaa !5
  %1284 = load i64, ptr %79, align 8, !tbaa !9
  %1285 = getelementptr inbounds double, ptr %1283, i64 %1284
  %1286 = load ptr, ptr %35, align 8, !tbaa !5
  %1287 = load i64, ptr %79, align 8, !tbaa !9
  %1288 = getelementptr inbounds double, ptr %1286, i64 %1287
  %1289 = getelementptr inbounds [1 x i64], ptr %83, i64 0, i64 0
  %1290 = load ptr, ptr %35, align 8, !tbaa !5
  %1291 = load ptr, ptr %22, align 8, !tbaa !5
  %1292 = load i64, ptr %1291, align 8, !tbaa !9
  %1293 = add nsw i64 %1292, 1
  %1294 = getelementptr inbounds double, ptr %1290, i64 %1293
  %1295 = load ptr, ptr %35, align 8, !tbaa !5
  %1296 = load ptr, ptr %22, align 8, !tbaa !5
  %1297 = load i64, ptr %1296, align 8, !tbaa !9
  %1298 = load i64, ptr %54, align 8, !tbaa !9
  %1299 = shl i64 %1298, 1
  %1300 = add nsw i64 %1297, %1299
  %1301 = add nsw i64 %1300, 1
  %1302 = getelementptr inbounds double, ptr %1295, i64 %1301
  %1303 = load ptr, ptr %36, align 8, !tbaa !5
  %1304 = getelementptr inbounds i64, ptr %1303, i64 1
  %1305 = load ptr, ptr %32, align 8, !tbaa !5
  %1306 = load ptr, ptr %30, align 8, !tbaa !5
  %1307 = load i64, ptr %1306, align 8, !tbaa !9
  %1308 = add nsw i64 %1307, 1
  %1309 = getelementptr inbounds double, ptr %1305, i64 %1308
  %1310 = load ptr, ptr %33, align 8, !tbaa !5
  %1311 = load ptr, ptr %30, align 8, !tbaa !5
  %1312 = load i64, ptr %1311, align 8, !tbaa !9
  %1313 = add nsw i64 %1312, 1
  %1314 = getelementptr inbounds i64, ptr %1310, i64 %1313
  %1315 = call i32 @dlaebz_(ptr noundef @c__2, ptr noundef %75, ptr noundef %54, ptr noundef %54, ptr noundef @c__1, ptr noundef %51, ptr noundef %72, ptr noundef %77, ptr noundef %87, ptr noundef %1282, ptr noundef %1285, ptr noundef %1288, ptr noundef %1289, ptr noundef %1294, ptr noundef %1302, ptr noundef %68, ptr noundef %1304, ptr noundef %1309, ptr noundef %1314, ptr noundef %71)
  %1316 = load i64, ptr %68, align 8, !tbaa !9
  store i64 %1316, ptr %39, align 8, !tbaa !9
  store i64 1, ptr %46, align 8, !tbaa !9
  br label %1317

1317:                                             ; preds = %1383, %1198
  %1318 = load i64, ptr %46, align 8, !tbaa !9
  %1319 = load i64, ptr %39, align 8, !tbaa !9
  %1320 = icmp sle i64 %1318, %1319
  br i1 %1320, label %1321, label %1386

1321:                                             ; preds = %1317
  %1322 = load ptr, ptr %35, align 8, !tbaa !5
  %1323 = load i64, ptr %46, align 8, !tbaa !9
  %1324 = load ptr, ptr %22, align 8, !tbaa !5
  %1325 = load i64, ptr %1324, align 8, !tbaa !9
  %1326 = add nsw i64 %1323, %1325
  %1327 = getelementptr inbounds double, ptr %1322, i64 %1326
  %1328 = load double, ptr %1327, align 8, !tbaa !11
  %1329 = load ptr, ptr %35, align 8, !tbaa !5
  %1330 = load i64, ptr %46, align 8, !tbaa !9
  %1331 = load i64, ptr %54, align 8, !tbaa !9
  %1332 = add nsw i64 %1330, %1331
  %1333 = load ptr, ptr %22, align 8, !tbaa !5
  %1334 = load i64, ptr %1333, align 8, !tbaa !9
  %1335 = add nsw i64 %1332, %1334
  %1336 = getelementptr inbounds double, ptr %1329, i64 %1335
  %1337 = load double, ptr %1336, align 8, !tbaa !11
  %1338 = fadd double %1328, %1337
  %1339 = fmul double %1338, 5.000000e-01
  store double %1339, ptr %64, align 8, !tbaa !11
  %1340 = load i64, ptr %46, align 8, !tbaa !9
  %1341 = load i64, ptr %68, align 8, !tbaa !9
  %1342 = load i64, ptr %71, align 8, !tbaa !9
  %1343 = sub nsw i64 %1341, %1342
  %1344 = icmp sgt i64 %1340, %1343
  br i1 %1344, label %1345, label %1348

1345:                                             ; preds = %1321
  store i64 1, ptr %86, align 8, !tbaa !9
  %1346 = load i64, ptr %48, align 8, !tbaa !9
  %1347 = sub nsw i64 0, %1346
  store i64 %1347, ptr %47, align 8, !tbaa !9
  br label %1350

1348:                                             ; preds = %1321
  %1349 = load i64, ptr %48, align 8, !tbaa !9
  store i64 %1349, ptr %47, align 8, !tbaa !9
  br label %1350

1350:                                             ; preds = %1348, %1345
  %1351 = load ptr, ptr %36, align 8, !tbaa !5
  %1352 = load i64, ptr %46, align 8, !tbaa !9
  %1353 = load i64, ptr %54, align 8, !tbaa !9
  %1354 = add nsw i64 %1352, %1353
  %1355 = getelementptr inbounds i64, ptr %1351, i64 %1354
  %1356 = load i64, ptr %1355, align 8, !tbaa !9
  %1357 = load i64, ptr %73, align 8, !tbaa !9
  %1358 = add nsw i64 %1356, %1357
  store i64 %1358, ptr %40, align 8, !tbaa !9
  %1359 = load ptr, ptr %36, align 8, !tbaa !5
  %1360 = load i64, ptr %46, align 8, !tbaa !9
  %1361 = getelementptr inbounds i64, ptr %1359, i64 %1360
  %1362 = load i64, ptr %1361, align 8, !tbaa !9
  %1363 = add nsw i64 %1362, 1
  %1364 = load i64, ptr %73, align 8, !tbaa !9
  %1365 = add nsw i64 %1363, %1364
  store i64 %1365, ptr %50, align 8, !tbaa !9
  br label %1366

1366:                                             ; preds = %1379, %1350
  %1367 = load i64, ptr %50, align 8, !tbaa !9
  %1368 = load i64, ptr %40, align 8, !tbaa !9
  %1369 = icmp sle i64 %1367, %1368
  br i1 %1369, label %1370, label %1382

1370:                                             ; preds = %1366
  %1371 = load double, ptr %64, align 8, !tbaa !11
  %1372 = load ptr, ptr %32, align 8, !tbaa !5
  %1373 = load i64, ptr %50, align 8, !tbaa !9
  %1374 = getelementptr inbounds double, ptr %1372, i64 %1373
  store double %1371, ptr %1374, align 8, !tbaa !11
  %1375 = load i64, ptr %47, align 8, !tbaa !9
  %1376 = load ptr, ptr %33, align 8, !tbaa !5
  %1377 = load i64, ptr %50, align 8, !tbaa !9
  %1378 = getelementptr inbounds i64, ptr %1376, i64 %1377
  store i64 %1375, ptr %1378, align 8, !tbaa !9
  br label %1379

1379:                                             ; preds = %1370
  %1380 = load i64, ptr %50, align 8, !tbaa !9
  %1381 = add nsw i64 %1380, 1
  store i64 %1381, ptr %50, align 8, !tbaa !9
  br label %1366, !llvm.loop !18

1382:                                             ; preds = %1366
  br label %1383

1383:                                             ; preds = %1382
  %1384 = load i64, ptr %46, align 8, !tbaa !9
  %1385 = add nsw i64 %1384, 1
  store i64 %1385, ptr %46, align 8, !tbaa !9
  br label %1317, !llvm.loop !19

1386:                                             ; preds = %1317
  %1387 = load i64, ptr %53, align 8, !tbaa !9
  %1388 = load ptr, ptr %30, align 8, !tbaa !5
  %1389 = load i64, ptr %1388, align 8, !tbaa !9
  %1390 = add nsw i64 %1389, %1387
  store i64 %1390, ptr %1388, align 8, !tbaa !9
  br label %1391

1391:                                             ; preds = %1386, %971
  br label %1392

1392:                                             ; preds = %1391, %1196, %1167
  br label %1393

1393:                                             ; preds = %1392
  %1394 = load i64, ptr %48, align 8, !tbaa !9
  %1395 = add nsw i64 %1394, 1
  store i64 %1395, ptr %48, align 8, !tbaa !9
  br label %886, !llvm.loop !20

1396:                                             ; preds = %886
  %1397 = load i64, ptr %80, align 8, !tbaa !9
  %1398 = icmp eq i64 %1397, 3
  br i1 %1398, label %1399, label %1625

1399:                                             ; preds = %1396
  store i64 0, ptr %53, align 8, !tbaa !9
  %1400 = load ptr, ptr %25, align 8, !tbaa !5
  %1401 = load i64, ptr %1400, align 8, !tbaa !9
  %1402 = sub nsw i64 %1401, 1
  %1403 = load i64, ptr %59, align 8, !tbaa !9
  %1404 = sub nsw i64 %1402, %1403
  store i64 %1404, ptr %81, align 8, !tbaa !9
  %1405 = load i64, ptr %63, align 8, !tbaa !9
  %1406 = load ptr, ptr %26, align 8, !tbaa !5
  %1407 = load i64, ptr %1406, align 8, !tbaa !9
  %1408 = sub nsw i64 %1405, %1407
  store i64 %1408, ptr %84, align 8, !tbaa !9
  %1409 = load i64, ptr %81, align 8, !tbaa !9
  %1410 = icmp sgt i64 %1409, 0
  br i1 %1410, label %1414, label %1411

1411:                                             ; preds = %1399
  %1412 = load i64, ptr %84, align 8, !tbaa !9
  %1413 = icmp sgt i64 %1412, 0
  br i1 %1413, label %1414, label %1472

1414:                                             ; preds = %1411, %1399
  %1415 = load ptr, ptr %30, align 8, !tbaa !5
  %1416 = load i64, ptr %1415, align 8, !tbaa !9
  store i64 %1416, ptr %38, align 8, !tbaa !9
  store i64 1, ptr %50, align 8, !tbaa !9
  br label %1417

1417:                                             ; preds = %1466, %1414
  %1418 = load i64, ptr %50, align 8, !tbaa !9
  %1419 = load i64, ptr %38, align 8, !tbaa !9
  %1420 = icmp sle i64 %1418, %1419
  br i1 %1420, label %1421, label %1469

1421:                                             ; preds = %1417
  %1422 = load ptr, ptr %32, align 8, !tbaa !5
  %1423 = load i64, ptr %50, align 8, !tbaa !9
  %1424 = getelementptr inbounds double, ptr %1422, i64 %1423
  %1425 = load double, ptr %1424, align 8, !tbaa !11
  %1426 = load double, ptr %61, align 8, !tbaa !11
  %1427 = fcmp ole double %1425, %1426
  br i1 %1427, label %1428, label %1434

1428:                                             ; preds = %1421
  %1429 = load i64, ptr %81, align 8, !tbaa !9
  %1430 = icmp sgt i64 %1429, 0
  br i1 %1430, label %1431, label %1434

1431:                                             ; preds = %1428
  %1432 = load i64, ptr %81, align 8, !tbaa !9
  %1433 = add nsw i64 %1432, -1
  store i64 %1433, ptr %81, align 8, !tbaa !9
  br label %1465

1434:                                             ; preds = %1428, %1421
  %1435 = load ptr, ptr %32, align 8, !tbaa !5
  %1436 = load i64, ptr %50, align 8, !tbaa !9
  %1437 = getelementptr inbounds double, ptr %1435, i64 %1436
  %1438 = load double, ptr %1437, align 8, !tbaa !11
  %1439 = load double, ptr %62, align 8, !tbaa !11
  %1440 = fcmp oge double %1438, %1439
  br i1 %1440, label %1441, label %1447

1441:                                             ; preds = %1434
  %1442 = load i64, ptr %84, align 8, !tbaa !9
  %1443 = icmp sgt i64 %1442, 0
  br i1 %1443, label %1444, label %1447

1444:                                             ; preds = %1441
  %1445 = load i64, ptr %84, align 8, !tbaa !9
  %1446 = add nsw i64 %1445, -1
  store i64 %1446, ptr %84, align 8, !tbaa !9
  br label %1464

1447:                                             ; preds = %1441, %1434
  %1448 = load i64, ptr %53, align 8, !tbaa !9
  %1449 = add nsw i64 %1448, 1
  store i64 %1449, ptr %53, align 8, !tbaa !9
  %1450 = load ptr, ptr %32, align 8, !tbaa !5
  %1451 = load i64, ptr %50, align 8, !tbaa !9
  %1452 = getelementptr inbounds double, ptr %1450, i64 %1451
  %1453 = load double, ptr %1452, align 8, !tbaa !11
  %1454 = load ptr, ptr %32, align 8, !tbaa !5
  %1455 = load i64, ptr %53, align 8, !tbaa !9
  %1456 = getelementptr inbounds double, ptr %1454, i64 %1455
  store double %1453, ptr %1456, align 8, !tbaa !11
  %1457 = load ptr, ptr %33, align 8, !tbaa !5
  %1458 = load i64, ptr %50, align 8, !tbaa !9
  %1459 = getelementptr inbounds i64, ptr %1457, i64 %1458
  %1460 = load i64, ptr %1459, align 8, !tbaa !9
  %1461 = load ptr, ptr %33, align 8, !tbaa !5
  %1462 = load i64, ptr %53, align 8, !tbaa !9
  %1463 = getelementptr inbounds i64, ptr %1461, i64 %1462
  store i64 %1460, ptr %1463, align 8, !tbaa !9
  br label %1464

1464:                                             ; preds = %1447, %1444
  br label %1465

1465:                                             ; preds = %1464, %1431
  br label %1466

1466:                                             ; preds = %1465
  %1467 = load i64, ptr %50, align 8, !tbaa !9
  %1468 = add nsw i64 %1467, 1
  store i64 %1468, ptr %50, align 8, !tbaa !9
  br label %1417, !llvm.loop !21

1469:                                             ; preds = %1417
  %1470 = load i64, ptr %53, align 8, !tbaa !9
  %1471 = load ptr, ptr %30, align 8, !tbaa !5
  store i64 %1470, ptr %1471, align 8, !tbaa !9
  br label %1472

1472:                                             ; preds = %1469, %1411
  %1473 = load i64, ptr %81, align 8, !tbaa !9
  %1474 = icmp sgt i64 %1473, 0
  br i1 %1474, label %1478, label %1475

1475:                                             ; preds = %1472
  %1476 = load i64, ptr %84, align 8, !tbaa !9
  %1477 = icmp sgt i64 %1476, 0
  br i1 %1477, label %1478, label %1617

1478:                                             ; preds = %1475, %1472
  %1479 = load i64, ptr %81, align 8, !tbaa !9
  %1480 = icmp sgt i64 %1479, 0
  br i1 %1480, label %1481, label %1529

1481:                                             ; preds = %1478
  %1482 = load double, ptr %58, align 8, !tbaa !11
  store double %1482, ptr %76, align 8, !tbaa !11
  %1483 = load i64, ptr %81, align 8, !tbaa !9
  store i64 %1483, ptr %38, align 8, !tbaa !9
  store i64 1, ptr %70, align 8, !tbaa !9
  br label %1484

1484:                                             ; preds = %1525, %1481
  %1485 = load i64, ptr %70, align 8, !tbaa !9
  %1486 = load i64, ptr %38, align 8, !tbaa !9
  %1487 = icmp sle i64 %1485, %1486
  br i1 %1487, label %1488, label %1528

1488:                                             ; preds = %1484
  store i64 0, ptr %56, align 8, !tbaa !9
  %1489 = load ptr, ptr %30, align 8, !tbaa !5
  %1490 = load i64, ptr %1489, align 8, !tbaa !9
  store i64 %1490, ptr %39, align 8, !tbaa !9
  store i64 1, ptr %50, align 8, !tbaa !9
  br label %1491

1491:                                             ; preds = %1518, %1488
  %1492 = load i64, ptr %50, align 8, !tbaa !9
  %1493 = load i64, ptr %39, align 8, !tbaa !9
  %1494 = icmp sle i64 %1492, %1493
  br i1 %1494, label %1495, label %1521

1495:                                             ; preds = %1491
  %1496 = load ptr, ptr %33, align 8, !tbaa !5
  %1497 = load i64, ptr %50, align 8, !tbaa !9
  %1498 = getelementptr inbounds i64, ptr %1496, i64 %1497
  %1499 = load i64, ptr %1498, align 8, !tbaa !9
  %1500 = icmp ne i64 %1499, 0
  br i1 %1500, label %1501, label %1517

1501:                                             ; preds = %1495
  %1502 = load ptr, ptr %32, align 8, !tbaa !5
  %1503 = load i64, ptr %50, align 8, !tbaa !9
  %1504 = getelementptr inbounds double, ptr %1502, i64 %1503
  %1505 = load double, ptr %1504, align 8, !tbaa !11
  %1506 = load double, ptr %76, align 8, !tbaa !11
  %1507 = fcmp olt double %1505, %1506
  br i1 %1507, label %1511, label %1508

1508:                                             ; preds = %1501
  %1509 = load i64, ptr %56, align 8, !tbaa !9
  %1510 = icmp eq i64 %1509, 0
  br i1 %1510, label %1511, label %1517

1511:                                             ; preds = %1508, %1501
  %1512 = load i64, ptr %50, align 8, !tbaa !9
  store i64 %1512, ptr %56, align 8, !tbaa !9
  %1513 = load ptr, ptr %32, align 8, !tbaa !5
  %1514 = load i64, ptr %50, align 8, !tbaa !9
  %1515 = getelementptr inbounds double, ptr %1513, i64 %1514
  %1516 = load double, ptr %1515, align 8, !tbaa !11
  store double %1516, ptr %76, align 8, !tbaa !11
  br label %1517

1517:                                             ; preds = %1511, %1508, %1495
  br label %1518

1518:                                             ; preds = %1517
  %1519 = load i64, ptr %50, align 8, !tbaa !9
  %1520 = add nsw i64 %1519, 1
  store i64 %1520, ptr %50, align 8, !tbaa !9
  br label %1491, !llvm.loop !22

1521:                                             ; preds = %1491
  %1522 = load ptr, ptr %33, align 8, !tbaa !5
  %1523 = load i64, ptr %56, align 8, !tbaa !9
  %1524 = getelementptr inbounds i64, ptr %1522, i64 %1523
  store i64 0, ptr %1524, align 8, !tbaa !9
  br label %1525

1525:                                             ; preds = %1521
  %1526 = load i64, ptr %70, align 8, !tbaa !9
  %1527 = add nsw i64 %1526, 1
  store i64 %1527, ptr %70, align 8, !tbaa !9
  br label %1484, !llvm.loop !23

1528:                                             ; preds = %1484
  br label %1529

1529:                                             ; preds = %1528, %1478
  %1530 = load i64, ptr %84, align 8, !tbaa !9
  %1531 = icmp sgt i64 %1530, 0
  br i1 %1531, label %1532, label %1580

1532:                                             ; preds = %1529
  %1533 = load double, ptr %57, align 8, !tbaa !11
  store double %1533, ptr %76, align 8, !tbaa !11
  %1534 = load i64, ptr %84, align 8, !tbaa !9
  store i64 %1534, ptr %38, align 8, !tbaa !9
  store i64 1, ptr %70, align 8, !tbaa !9
  br label %1535

1535:                                             ; preds = %1576, %1532
  %1536 = load i64, ptr %70, align 8, !tbaa !9
  %1537 = load i64, ptr %38, align 8, !tbaa !9
  %1538 = icmp sle i64 %1536, %1537
  br i1 %1538, label %1539, label %1579

1539:                                             ; preds = %1535
  store i64 0, ptr %56, align 8, !tbaa !9
  %1540 = load ptr, ptr %30, align 8, !tbaa !5
  %1541 = load i64, ptr %1540, align 8, !tbaa !9
  store i64 %1541, ptr %39, align 8, !tbaa !9
  store i64 1, ptr %50, align 8, !tbaa !9
  br label %1542

1542:                                             ; preds = %1569, %1539
  %1543 = load i64, ptr %50, align 8, !tbaa !9
  %1544 = load i64, ptr %39, align 8, !tbaa !9
  %1545 = icmp sle i64 %1543, %1544
  br i1 %1545, label %1546, label %1572

1546:                                             ; preds = %1542
  %1547 = load ptr, ptr %33, align 8, !tbaa !5
  %1548 = load i64, ptr %50, align 8, !tbaa !9
  %1549 = getelementptr inbounds i64, ptr %1547, i64 %1548
  %1550 = load i64, ptr %1549, align 8, !tbaa !9
  %1551 = icmp ne i64 %1550, 0
  br i1 %1551, label %1552, label %1568

1552:                                             ; preds = %1546
  %1553 = load ptr, ptr %32, align 8, !tbaa !5
  %1554 = load i64, ptr %50, align 8, !tbaa !9
  %1555 = getelementptr inbounds double, ptr %1553, i64 %1554
  %1556 = load double, ptr %1555, align 8, !tbaa !11
  %1557 = load double, ptr %76, align 8, !tbaa !11
  %1558 = fcmp ogt double %1556, %1557
  br i1 %1558, label %1562, label %1559

1559:                                             ; preds = %1552
  %1560 = load i64, ptr %56, align 8, !tbaa !9
  %1561 = icmp eq i64 %1560, 0
  br i1 %1561, label %1562, label %1568

1562:                                             ; preds = %1559, %1552
  %1563 = load i64, ptr %50, align 8, !tbaa !9
  store i64 %1563, ptr %56, align 8, !tbaa !9
  %1564 = load ptr, ptr %32, align 8, !tbaa !5
  %1565 = load i64, ptr %50, align 8, !tbaa !9
  %1566 = getelementptr inbounds double, ptr %1564, i64 %1565
  %1567 = load double, ptr %1566, align 8, !tbaa !11
  store double %1567, ptr %76, align 8, !tbaa !11
  br label %1568

1568:                                             ; preds = %1562, %1559, %1546
  br label %1569

1569:                                             ; preds = %1568
  %1570 = load i64, ptr %50, align 8, !tbaa !9
  %1571 = add nsw i64 %1570, 1
  store i64 %1571, ptr %50, align 8, !tbaa !9
  br label %1542, !llvm.loop !24

1572:                                             ; preds = %1542
  %1573 = load ptr, ptr %33, align 8, !tbaa !5
  %1574 = load i64, ptr %56, align 8, !tbaa !9
  %1575 = getelementptr inbounds i64, ptr %1573, i64 %1574
  store i64 0, ptr %1575, align 8, !tbaa !9
  br label %1576

1576:                                             ; preds = %1572
  %1577 = load i64, ptr %70, align 8, !tbaa !9
  %1578 = add nsw i64 %1577, 1
  store i64 %1578, ptr %70, align 8, !tbaa !9
  br label %1535, !llvm.loop !25

1579:                                             ; preds = %1535
  br label %1580

1580:                                             ; preds = %1579, %1529
  store i64 0, ptr %53, align 8, !tbaa !9
  %1581 = load ptr, ptr %30, align 8, !tbaa !5
  %1582 = load i64, ptr %1581, align 8, !tbaa !9
  store i64 %1582, ptr %38, align 8, !tbaa !9
  store i64 1, ptr %50, align 8, !tbaa !9
  br label %1583

1583:                                             ; preds = %1611, %1580
  %1584 = load i64, ptr %50, align 8, !tbaa !9
  %1585 = load i64, ptr %38, align 8, !tbaa !9
  %1586 = icmp sle i64 %1584, %1585
  br i1 %1586, label %1587, label %1614

1587:                                             ; preds = %1583
  %1588 = load ptr, ptr %33, align 8, !tbaa !5
  %1589 = load i64, ptr %50, align 8, !tbaa !9
  %1590 = getelementptr inbounds i64, ptr %1588, i64 %1589
  %1591 = load i64, ptr %1590, align 8, !tbaa !9
  %1592 = icmp ne i64 %1591, 0
  br i1 %1592, label %1593, label %1610

1593:                                             ; preds = %1587
  %1594 = load i64, ptr %53, align 8, !tbaa !9
  %1595 = add nsw i64 %1594, 1
  store i64 %1595, ptr %53, align 8, !tbaa !9
  %1596 = load ptr, ptr %32, align 8, !tbaa !5
  %1597 = load i64, ptr %50, align 8, !tbaa !9
  %1598 = getelementptr inbounds double, ptr %1596, i64 %1597
  %1599 = load double, ptr %1598, align 8, !tbaa !11
  %1600 = load ptr, ptr %32, align 8, !tbaa !5
  %1601 = load i64, ptr %53, align 8, !tbaa !9
  %1602 = getelementptr inbounds double, ptr %1600, i64 %1601
  store double %1599, ptr %1602, align 8, !tbaa !11
  %1603 = load ptr, ptr %33, align 8, !tbaa !5
  %1604 = load i64, ptr %50, align 8, !tbaa !9
  %1605 = getelementptr inbounds i64, ptr %1603, i64 %1604
  %1606 = load i64, ptr %1605, align 8, !tbaa !9
  %1607 = load ptr, ptr %33, align 8, !tbaa !5
  %1608 = load i64, ptr %53, align 8, !tbaa !9
  %1609 = getelementptr inbounds i64, ptr %1607, i64 %1608
  store i64 %1606, ptr %1609, align 8, !tbaa !9
  br label %1610

1610:                                             ; preds = %1593, %1587
  br label %1611

1611:                                             ; preds = %1610
  %1612 = load i64, ptr %50, align 8, !tbaa !9
  %1613 = add nsw i64 %1612, 1
  store i64 %1613, ptr %50, align 8, !tbaa !9
  br label %1583, !llvm.loop !26

1614:                                             ; preds = %1583
  %1615 = load i64, ptr %53, align 8, !tbaa !9
  %1616 = load ptr, ptr %30, align 8, !tbaa !5
  store i64 %1615, ptr %1616, align 8, !tbaa !9
  br label %1617

1617:                                             ; preds = %1614, %1475
  %1618 = load i64, ptr %81, align 8, !tbaa !9
  %1619 = icmp slt i64 %1618, 0
  br i1 %1619, label %1623, label %1620

1620:                                             ; preds = %1617
  %1621 = load i64, ptr %84, align 8, !tbaa !9
  %1622 = icmp slt i64 %1621, 0
  br i1 %1622, label %1623, label %1624

1623:                                             ; preds = %1620, %1617
  store i64 1, ptr %88, align 8, !tbaa !9
  br label %1624

1624:                                             ; preds = %1623, %1620
  br label %1625

1625:                                             ; preds = %1624, %1396
  %1626 = load i64, ptr %85, align 8, !tbaa !9
  %1627 = icmp eq i64 %1626, 1
  br i1 %1627, label %1628, label %1705

1628:                                             ; preds = %1625
  %1629 = load ptr, ptr %31, align 8, !tbaa !5
  %1630 = load i64, ptr %1629, align 8, !tbaa !9
  %1631 = icmp sgt i64 %1630, 1
  br i1 %1631, label %1632, label %1705

1632:                                             ; preds = %1628
  %1633 = load ptr, ptr %30, align 8, !tbaa !5
  %1634 = load i64, ptr %1633, align 8, !tbaa !9
  %1635 = sub nsw i64 %1634, 1
  store i64 %1635, ptr %38, align 8, !tbaa !9
  store i64 1, ptr %50, align 8, !tbaa !9
  br label %1636

1636:                                             ; preds = %1701, %1632
  %1637 = load i64, ptr %50, align 8, !tbaa !9
  %1638 = load i64, ptr %38, align 8, !tbaa !9
  %1639 = icmp sle i64 %1637, %1638
  br i1 %1639, label %1640, label %1704

1640:                                             ; preds = %1636
  store i64 0, ptr %49, align 8, !tbaa !9
  %1641 = load ptr, ptr %32, align 8, !tbaa !5
  %1642 = load i64, ptr %50, align 8, !tbaa !9
  %1643 = getelementptr inbounds double, ptr %1641, i64 %1642
  %1644 = load double, ptr %1643, align 8, !tbaa !11
  store double %1644, ptr %64, align 8, !tbaa !11
  %1645 = load ptr, ptr %30, align 8, !tbaa !5
  %1646 = load i64, ptr %1645, align 8, !tbaa !9
  store i64 %1646, ptr %39, align 8, !tbaa !9
  %1647 = load i64, ptr %50, align 8, !tbaa !9
  %1648 = add nsw i64 %1647, 1
  store i64 %1648, ptr %46, align 8, !tbaa !9
  br label %1649

1649:                                             ; preds = %1667, %1640
  %1650 = load i64, ptr %46, align 8, !tbaa !9
  %1651 = load i64, ptr %39, align 8, !tbaa !9
  %1652 = icmp sle i64 %1650, %1651
  br i1 %1652, label %1653, label %1670

1653:                                             ; preds = %1649
  %1654 = load ptr, ptr %32, align 8, !tbaa !5
  %1655 = load i64, ptr %46, align 8, !tbaa !9
  %1656 = getelementptr inbounds double, ptr %1654, i64 %1655
  %1657 = load double, ptr %1656, align 8, !tbaa !11
  %1658 = load double, ptr %64, align 8, !tbaa !11
  %1659 = fcmp olt double %1657, %1658
  br i1 %1659, label %1660, label %1666

1660:                                             ; preds = %1653
  %1661 = load i64, ptr %46, align 8, !tbaa !9
  store i64 %1661, ptr %49, align 8, !tbaa !9
  %1662 = load ptr, ptr %32, align 8, !tbaa !5
  %1663 = load i64, ptr %46, align 8, !tbaa !9
  %1664 = getelementptr inbounds double, ptr %1662, i64 %1663
  %1665 = load double, ptr %1664, align 8, !tbaa !11
  store double %1665, ptr %64, align 8, !tbaa !11
  br label %1666

1666:                                             ; preds = %1660, %1653
  br label %1667

1667:                                             ; preds = %1666
  %1668 = load i64, ptr %46, align 8, !tbaa !9
  %1669 = add nsw i64 %1668, 1
  store i64 %1669, ptr %46, align 8, !tbaa !9
  br label %1649, !llvm.loop !27

1670:                                             ; preds = %1649
  %1671 = load i64, ptr %49, align 8, !tbaa !9
  %1672 = icmp ne i64 %1671, 0
  br i1 %1672, label %1673, label %1700

1673:                                             ; preds = %1670
  %1674 = load ptr, ptr %33, align 8, !tbaa !5
  %1675 = load i64, ptr %49, align 8, !tbaa !9
  %1676 = getelementptr inbounds i64, ptr %1674, i64 %1675
  %1677 = load i64, ptr %1676, align 8, !tbaa !9
  store i64 %1677, ptr %69, align 8, !tbaa !9
  %1678 = load ptr, ptr %32, align 8, !tbaa !5
  %1679 = load i64, ptr %50, align 8, !tbaa !9
  %1680 = getelementptr inbounds double, ptr %1678, i64 %1679
  %1681 = load double, ptr %1680, align 8, !tbaa !11
  %1682 = load ptr, ptr %32, align 8, !tbaa !5
  %1683 = load i64, ptr %49, align 8, !tbaa !9
  %1684 = getelementptr inbounds double, ptr %1682, i64 %1683
  store double %1681, ptr %1684, align 8, !tbaa !11
  %1685 = load ptr, ptr %33, align 8, !tbaa !5
  %1686 = load i64, ptr %50, align 8, !tbaa !9
  %1687 = getelementptr inbounds i64, ptr %1685, i64 %1686
  %1688 = load i64, ptr %1687, align 8, !tbaa !9
  %1689 = load ptr, ptr %33, align 8, !tbaa !5
  %1690 = load i64, ptr %49, align 8, !tbaa !9
  %1691 = getelementptr inbounds i64, ptr %1689, i64 %1690
  store i64 %1688, ptr %1691, align 8, !tbaa !9
  %1692 = load double, ptr %64, align 8, !tbaa !11
  %1693 = load ptr, ptr %32, align 8, !tbaa !5
  %1694 = load i64, ptr %50, align 8, !tbaa !9
  %1695 = getelementptr inbounds double, ptr %1693, i64 %1694
  store double %1692, ptr %1695, align 8, !tbaa !11
  %1696 = load i64, ptr %69, align 8, !tbaa !9
  %1697 = load ptr, ptr %33, align 8, !tbaa !5
  %1698 = load i64, ptr %50, align 8, !tbaa !9
  %1699 = getelementptr inbounds i64, ptr %1697, i64 %1698
  store i64 %1696, ptr %1699, align 8, !tbaa !9
  br label %1700

1700:                                             ; preds = %1673, %1670
  br label %1701

1701:                                             ; preds = %1700
  %1702 = load i64, ptr %50, align 8, !tbaa !9
  %1703 = add nsw i64 %1702, 1
  store i64 %1703, ptr %50, align 8, !tbaa !9
  br label %1636, !llvm.loop !28

1704:                                             ; preds = %1636
  br label %1705

1705:                                             ; preds = %1704, %1628, %1625
  %1706 = load ptr, ptr %37, align 8, !tbaa !5
  store i64 0, ptr %1706, align 8, !tbaa !9
  %1707 = load i64, ptr %86, align 8, !tbaa !9
  %1708 = icmp ne i64 %1707, 0
  br i1 %1708, label %1709, label %1713

1709:                                             ; preds = %1705
  %1710 = load ptr, ptr %37, align 8, !tbaa !5
  %1711 = load i64, ptr %1710, align 8, !tbaa !9
  %1712 = add nsw i64 %1711, 1
  store i64 %1712, ptr %1710, align 8, !tbaa !9
  br label %1713

1713:                                             ; preds = %1709, %1705
  %1714 = load i64, ptr %88, align 8, !tbaa !9
  %1715 = icmp ne i64 %1714, 0
  br i1 %1715, label %1716, label %1720

1716:                                             ; preds = %1713
  %1717 = load ptr, ptr %37, align 8, !tbaa !5
  %1718 = load i64, ptr %1717, align 8, !tbaa !9
  %1719 = add nsw i64 %1718, 2
  store i64 %1719, ptr %1717, align 8, !tbaa !9
  br label %1720

1720:                                             ; preds = %1716, %1713
  store i32 0, ptr %19, align 4
  store i32 1, ptr %89, align 4
  br label %1721

1721:                                             ; preds = %1720, %723, %292, %232, %221
  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
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #5
  %1722 = load i32, ptr %19, align 4
  ret i32 %1722
}

; 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 i32 @xerbla_(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 @sqrt(double noundef) #4

; 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 [7 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [2 x i8], align 1
@c__1 = external hidden global i64, align 8
@.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 @dstebz_(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 noundef %8, ptr noundef %9, ptr nocapture noundef %10, ptr nocapture noundef %11, ptr noundef %12, ptr noundef %13, ptr nocapture noundef %14, ptr noundef %15, ptr noundef %16, ptr nocapture noundef %17) local_unnamed_addr #0 {
  %19 = alloca i64, align 8
  %20 = alloca i64, align 8
  %21 = alloca i64, align 8
  %22 = alloca i64, align 8
  %23 = alloca i64, align 8
  %24 = alloca i64, align 8
  %25 = alloca double, align 8
  %26 = alloca i64, align 8
  %27 = alloca double, align 8
  %28 = alloca [1 x i64], align 8
  %29 = alloca double, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #7
  %30 = getelementptr inbounds i8, ptr %16, i64 -8
  %31 = getelementptr inbounds i8, ptr %15, i64 -8
  %32 = getelementptr inbounds i8, ptr %14, i64 -8
  %33 = getelementptr inbounds i8, ptr %13, i64 -8
  %34 = getelementptr inbounds i8, ptr %12, i64 -8
  %35 = getelementptr inbounds i8, ptr %9, i64 -8
  %36 = getelementptr inbounds i8, ptr %8, i64 -8
  store i64 0, ptr %17, align 8, !tbaa !5
  %37 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #7
  %.not = icmp eq i64 %37, 0
  br i1 %.not, label %38, label %42

38:                                               ; preds = %18
  %39 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #7
  %.not711 = icmp eq i64 %39, 0
  br i1 %.not711, label %40, label %42

40:                                               ; preds = %38
  %41 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #7
  %.not712 = icmp eq i64 %41, 0
  %not..not712 = xor i1 %.not712, true
  %.744 = select i1 %.not712, i64 0, i64 3
  br label %42

42:                                               ; preds = %40, %38, %18
  %43 = phi i1 [ false, %18 ], [ false, %38 ], [ %.not712, %40 ]
  %44 = phi i1 [ false, %18 ], [ true, %38 ], [ false, %40 ]
  %45 = phi i1 [ false, %18 ], [ false, %38 ], [ %not..not712, %40 ]
  %.0632 = phi i64 [ 1, %18 ], [ 2, %38 ], [ %.744, %40 ]
  %46 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.3) #7
  %.not713 = icmp eq i64 %46, 0
  br i1 %.not713, label %47, label %.thread

47:                                               ; preds = %42
  %48 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.4) #7
  br i1 %43, label %.critedge.thread.sink.split, label %49

.thread:                                          ; preds = %42
  br i1 %43, label %.critedge.thread.sink.split, label %.thread753

49:                                               ; preds = %47
  %.not714 = icmp eq i64 %48, 0
  br i1 %.not714, label %.critedge.thread.sink.split, label %.thread753

.thread753:                                       ; preds = %.thread, %49
  %50 = load i64, ptr %2, align 8, !tbaa !5
  %51 = icmp slt i64 %50, 0
  br i1 %51, label %.critedge.thread.sink.split, label %52

52:                                               ; preds = %.thread753
  br i1 %44, label %53, label %57

53:                                               ; preds = %52
  %54 = load double, ptr %3, align 8, !tbaa !9
  %55 = load double, ptr %4, align 8, !tbaa !9
  %56 = fcmp ult double %54, %55
  br i1 %56, label %.critedge, label %.critedge.thread.sink.split

57:                                               ; preds = %52
  br i1 %45, label %58, label %.critedge

58:                                               ; preds = %57
  %59 = load i64, ptr %5, align 8, !tbaa !5
  %60 = icmp slt i64 %59, 1
  %spec.select = tail call i64 @llvm.umax.i64(i64 %50, i64 1)
  %61 = icmp ugt i64 %59, %spec.select
  %or.cond = or i1 %60, %61
  br i1 %or.cond, label %.critedge.thread.sink.split, label %62

62:                                               ; preds = %58
  %63 = load i64, ptr %6, align 8, !tbaa !5
  %.747 = tail call i64 @llvm.umin.i64(i64 %50, i64 %59)
  %64 = icmp slt i64 %63, %.747
  %65 = icmp ugt i64 %63, %50
  %or.cond771 = or i1 %64, %65
  br i1 %or.cond771, label %.critedge.thread.sink.split, label %.critedge

.critedge:                                        ; preds = %62, %57, %53
  %.pr = load i64, ptr %17, align 8, !tbaa !5
  %.not716 = icmp eq i64 %.pr, 0
  br i1 %.not716, label %69, label %.critedge.thread

.critedge.thread.sink.split:                      ; preds = %62, %58, %53, %.thread753, %49, %47, %.thread
  %.sink917 = phi i64 [ -1, %.thread ], [ -1, %47 ], [ -2, %49 ], [ -3, %.thread753 ], [ -5, %53 ], [ -6, %58 ], [ -7, %62 ]
  store i64 %.sink917, ptr %17, align 8, !tbaa !5
  br label %.critedge.thread

.critedge.thread:                                 ; preds = %.critedge.thread.sink.split, %.critedge
  %66 = phi i64 [ %.pr, %.critedge ], [ %.sink917, %.critedge.thread.sink.split ]
  %67 = sub nsw i64 0, %66
  store i64 %67, ptr %19, align 8, !tbaa !5
  %68 = call i32 @xerbla_(ptr noundef nonnull @.str.5, ptr noundef nonnull %19) #7
  br label %580

69:                                               ; preds = %.critedge
  store i64 0, ptr %10, align 8, !tbaa !5
  %70 = load i64, ptr %2, align 8, !tbaa !5
  %71 = icmp eq i64 %70, 0
  br i1 %71, label %580, label %72

72:                                               ; preds = %69
  br i1 %45, label %73, label %79

73:                                               ; preds = %72
  %74 = load i64, ptr %5, align 8, !tbaa !5
  %75 = icmp eq i64 %74, 1
  br i1 %75, label %76, label %79

76:                                               ; preds = %73
  %77 = load i64, ptr %6, align 8, !tbaa !5
  %78 = icmp eq i64 %77, %70
  %spec.select748 = select i1 %78, i64 1, i64 3
  br label %79

79:                                               ; preds = %76, %73, %72
  %.1633 = phi i64 [ 3, %73 ], [ %.0632, %72 ], [ %spec.select748, %76 ]
  %80 = tail call double @dlamch_(ptr noundef nonnull @.str.6) #7
  %81 = tail call double @dlamch_(ptr noundef nonnull @.str.7) #7
  %82 = fmul double %81, 2.000000e+00
  store double %82, ptr %27, align 8, !tbaa !9
  %83 = tail call i64 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.5, 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
  %84 = icmp slt i64 %83, 2
  %spec.store.select = select i1 %84, i64 0, i64 %83
  store i64 %spec.store.select, ptr %20, align 8
  %85 = load i64, ptr %2, align 8, !tbaa !5
  %86 = icmp eq i64 %85, 1
  store i64 1, ptr %11, align 8, !tbaa !5
  br i1 %86, label %87, label %97

87:                                               ; preds = %79
  store i64 1, ptr %14, align 8, !tbaa !5
  %88 = icmp eq i64 %.1633, 2
  %.pre905 = load double, ptr %8, align 8, !tbaa !9
  br i1 %88, label %89, label %95

89:                                               ; preds = %87
  %90 = load double, ptr %3, align 8, !tbaa !9
  %91 = fcmp ult double %90, %.pre905
  br i1 %91, label %92, label %96

92:                                               ; preds = %89
  %93 = load double, ptr %4, align 8, !tbaa !9
  %94 = fcmp olt double %93, %.pre905
  br i1 %94, label %96, label %95

95:                                               ; preds = %92, %87
  store double %.pre905, ptr %12, align 8, !tbaa !9
  store i64 1, ptr %13, align 8, !tbaa !5
  br label %96

96:                                               ; preds = %89, %92, %95
  %storemerge742 = phi i64 [ 1, %95 ], [ 0, %92 ], [ 0, %89 ]
  store i64 %storemerge742, ptr %10, align 8, !tbaa !5
  br label %580

97:                                               ; preds = %79
  %98 = load i64, ptr %2, align 8, !tbaa !5
  %99 = getelementptr inbounds double, ptr %31, i64 %98
  store double 0.000000e+00, ptr %99, align 8, !tbaa !9
  %.not717776 = icmp slt i64 %98, 2
  br i1 %.not717776, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %97
  %100 = fmul double %81, %81
  br label %101

101:                                              ; preds = %.lr.ph, %125
  %.0682777 = phi i64 [ 2, %.lr.ph ], [ %128, %125 ]
  %102 = phi double [ 1.000000e+00, %.lr.ph ], [ %126, %125 ]
  %103 = add nsw i64 %.0682777, -1
  %104 = getelementptr inbounds double, ptr %35, i64 %103
  %105 = load double, ptr %104, align 8, !tbaa !9
  %106 = fmul double %105, %105
  %107 = getelementptr inbounds double, ptr %36, i64 %.0682777
  %108 = load double, ptr %107, align 8, !tbaa !9
  %109 = getelementptr inbounds double, ptr %36, i64 %103
  %110 = load double, ptr %109, align 8, !tbaa !9
  %111 = fmul double %108, %110
  %112 = fcmp oge double %111, 0.000000e+00
  %113 = fneg double %111
  %114 = select i1 %112, double %111, double %113
  %115 = tail call double @llvm.fmuladd.f64(double %114, double %100, double %80)
  %116 = fcmp ogt double %115, %106
  br i1 %116, label %117, label %122

117:                                              ; preds = %101
  %118 = load i64, ptr %11, align 8, !tbaa !5
  %119 = getelementptr inbounds i64, ptr %32, i64 %118
  store i64 %103, ptr %119, align 8, !tbaa !5
  %120 = load i64, ptr %11, align 8, !tbaa !5
  %121 = add nsw i64 %120, 1
  store i64 %121, ptr %11, align 8, !tbaa !5
  br label %125

122:                                              ; preds = %101
  %123 = fcmp oge double %102, %106
  %124 = select i1 %123, double %102, double %106
  br label %125

125:                                              ; preds = %117, %122
  %.sink = phi double [ 0.000000e+00, %117 ], [ %106, %122 ]
  %126 = phi double [ %102, %117 ], [ %124, %122 ]
  %127 = getelementptr inbounds double, ptr %31, i64 %103
  store double %.sink, ptr %127, align 8
  %128 = add nuw i64 %.0682777, 1
  %exitcond.not = icmp eq i64 %.0682777, %98
  br i1 %exitcond.not, label %._crit_edge.loopexit, label %101, !llvm.loop !11

._crit_edge.loopexit:                             ; preds = %125
  %.pre = load i64, ptr %2, align 8, !tbaa !5
  %.pre902 = load i64, ptr %11, align 8, !tbaa !5
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %97
  %129 = phi double [ %126, %._crit_edge.loopexit ], [ 1.000000e+00, %97 ]
  %130 = phi i64 [ %.pre902, %._crit_edge.loopexit ], [ 1, %97 ]
  %131 = phi i64 [ %.pre, %._crit_edge.loopexit ], [ %98, %97 ]
  %132 = getelementptr inbounds i64, ptr %32, i64 %130
  store i64 %131, ptr %132, align 8, !tbaa !5
  %133 = fmul double %80, %129
  store double %133, ptr %29, align 8, !tbaa !9
  %134 = icmp eq i64 %.1633, 3
  %135 = load i64, ptr %2, align 8, !tbaa !5
  br i1 %134, label %136, label %._crit_edge783

136:                                              ; preds = %._crit_edge
  %137 = load double, ptr %8, align 8, !tbaa !9
  %138 = add nsw i64 %135, -1
  store i64 %138, ptr %19, align 8, !tbaa !5
  %.not719784 = icmp slt i64 %135, 2
  %139 = insertelement <2 x double> poison, double %137, i64 0
  %140 = shufflevector <2 x double> %139, <2 x double> poison, <2 x i32> zeroinitializer
  br i1 %.not719784, label %._crit_edge791, label %.lr.ph790

.lr.ph790:                                        ; preds = %136, %.lr.ph790
  %.0642788 = phi double [ %144, %.lr.ph790 ], [ 0.000000e+00, %136 ]
  %.1683785 = phi i64 [ %156, %.lr.ph790 ], [ 1, %136 ]
  %141 = phi <2 x double> [ %155, %.lr.ph790 ], [ %140, %136 ]
  %142 = getelementptr inbounds double, ptr %31, i64 %.1683785
  %143 = load double, ptr %142, align 8, !tbaa !9
  %144 = tail call double @sqrt(double noundef %143) #7
  %145 = getelementptr inbounds double, ptr %36, i64 %.1683785
  %146 = load double, ptr %145, align 8, !tbaa !9
  %147 = fadd double %.0642788, %146
  %148 = fadd double %144, %147
  %149 = fsub double %146, %.0642788
  %150 = fsub double %149, %144
  %151 = insertelement <2 x double> %141, double %150, i64 1
  %152 = insertelement <2 x double> %141, double %148, i64 0
  %153 = fcmp oge <2 x double> %151, %152
  %154 = insertelement <2 x double> %151, double %148, i64 0
  %155 = select <2 x i1> %153, <2 x double> %141, <2 x double> %154
  %156 = add nuw i64 %.1683785, 1
  %exitcond891.not = icmp eq i64 %156, %135
  br i1 %exitcond891.not, label %._crit_edge791.loopexit, label %.lr.ph790, !llvm.loop !13

._crit_edge791.loopexit:                          ; preds = %.lr.ph790
  %.pre903 = load i64, ptr %2, align 8, !tbaa !5
  br label %._crit_edge791

._crit_edge791:                                   ; preds = %._crit_edge791.loopexit, %136
  %157 = phi i64 [ %135, %136 ], [ %.pre903, %._crit_edge791.loopexit ]
  %.0642.lcssa = phi double [ 0.000000e+00, %136 ], [ %144, %._crit_edge791.loopexit ]
  %158 = phi <2 x double> [ %140, %136 ], [ %155, %._crit_edge791.loopexit ]
  %159 = getelementptr inbounds double, ptr %36, i64 %157
  %160 = load double, ptr %159, align 8, !tbaa !9
  %161 = fadd double %.0642.lcssa, %160
  %162 = fsub double %160, %.0642.lcssa
  %163 = sitofp i64 %157 to double
  %164 = fneg double %133
  %165 = insertelement <2 x double> %158, double %162, i64 1
  %166 = insertelement <2 x double> %158, double %161, i64 0
  %167 = fcmp oge <2 x double> %165, %166
  %168 = insertelement <2 x double> %165, double %161, i64 0
  %169 = select <2 x i1> %167, <2 x double> %158, <2 x double> %168
  %170 = fcmp oge <2 x double> %169, zeroinitializer
  %171 = fneg <2 x double> %169
  %172 = select <2 x i1> %170, <2 x double> %169, <2 x double> %171
  %173 = extractelement <2 x double> %172, i64 0
  %174 = extractelement <2 x double> %172, i64 1
  %175 = fcmp oge double %174, %173
  %176 = select i1 %175, double %174, double %173
  %177 = fmul double %176, 2.100000e+00
  %178 = fmul double %81, %177
  %179 = fneg double %178
  %180 = insertelement <2 x double> poison, double %178, i64 0
  %181 = insertelement <2 x double> %180, double %179, i64 1
  %182 = insertelement <2 x double> poison, double %163, i64 0
  %183 = shufflevector <2 x double> %182, <2 x double> poison, <2 x i32> zeroinitializer
  %184 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %181, <2 x double> %183, <2 x double> %169)
  %185 = insertelement <2 x double> poison, double %133, i64 0
  %186 = insertelement <2 x double> %185, double %164, i64 1
  %187 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %186, <2 x double> <double 2.100000e+00, double 4.200000e+00>, <2 x double> %184)
  %188 = fadd double %133, %176
  %189 = tail call double @log(double noundef %188) #7
  %190 = tail call double @log(double noundef %133) #7
  %191 = fsub double %189, %190
  %192 = fdiv double %191, 0x3FE62E42FEFA39EF
  %193 = fptosi double %192 to i64
  %194 = add nsw i64 %193, 2
  store i64 %194, ptr %26, align 8, !tbaa !5
  %195 = load double, ptr %7, align 8, !tbaa !9
  %196 = fcmp ugt double %195, 0.000000e+00
  %197 = fmul double %81, %176
  %storemerge720 = select i1 %196, double %195, double %197
  store double %storemerge720, ptr %25, align 8, !tbaa !9
  %198 = load i64, ptr %2, align 8, !tbaa !5
  %199 = getelementptr double, ptr %15, i64 %198
  %200 = extractelement <2 x double> %187, i64 1
  store double %200, ptr %199, align 8, !tbaa !9
  %201 = getelementptr double, ptr %31, i64 %198
  %202 = getelementptr i8, ptr %201, i64 16
  store double %200, ptr %202, align 8, !tbaa !9
  %203 = getelementptr i8, ptr %201, i64 24
  %204 = extractelement <2 x double> %187, i64 0
  store double %204, ptr %203, align 8, !tbaa !9
  %205 = getelementptr i8, ptr %201, i64 32
  store <2 x double> %187, ptr %205, align 8, !tbaa !9
  %206 = getelementptr i8, ptr %201, i64 48
  store double %204, ptr %206, align 8, !tbaa !9
  tail call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %16, i8 -1, i64 16, i1 false)
  %207 = load i64, ptr %2, align 8, !tbaa !5
  %208 = add nsw i64 %207, 1
  %209 = getelementptr inbounds i8, ptr %16, i64 16
  store i64 %208, ptr %209, align 8, !tbaa !5
  %210 = load i64, ptr %2, align 8, !tbaa !5
  %211 = add nsw i64 %210, 1
  %212 = getelementptr inbounds i8, ptr %16, i64 24
  store i64 %211, ptr %212, align 8, !tbaa !5
  %213 = load i64, ptr %5, align 8, !tbaa !5
  %214 = add nsw i64 %213, -1
  %215 = getelementptr inbounds i8, ptr %16, i64 32
  store i64 %214, ptr %215, align 8, !tbaa !5
  %216 = load i64, ptr %6, align 8, !tbaa !5
  %217 = getelementptr inbounds i8, ptr %16, i64 40
  store i64 %216, ptr %217, align 8, !tbaa !5
  %218 = load i64, ptr %2, align 8, !tbaa !5
  %219 = getelementptr double, ptr %15, i64 %218
  %220 = getelementptr double, ptr %31, i64 %218
  %221 = getelementptr i8, ptr %220, i64 40
  %222 = call i32 @dlaebz_(ptr noundef nonnull @c__3, ptr noundef nonnull %26, ptr noundef nonnull %2, ptr noundef nonnull @c__2, ptr noundef nonnull @c__2, ptr noundef nonnull %20, ptr noundef nonnull %25, ptr noundef nonnull %27, ptr noundef nonnull %29, ptr noundef nonnull %8, ptr noundef %9, ptr noundef nonnull %15, ptr noundef nonnull %215, ptr noundef %219, ptr noundef %221, ptr noundef nonnull %23, ptr noundef nonnull %16, ptr noundef %12, ptr noundef %13, ptr noundef nonnull %24) #7
  %223 = load i64, ptr %217, align 8, !tbaa !5
  %224 = load i64, ptr %6, align 8, !tbaa !5
  %225 = icmp eq i64 %223, %224
  %226 = load i64, ptr %2, align 8, !tbaa !5
  %227 = getelementptr double, ptr %31, i64 %226
  %228 = getelementptr i8, ptr %227, i64 32
  br i1 %225, label %229, label %233

229:                                              ; preds = %._crit_edge791
  %230 = getelementptr double, ptr %15, i64 %226
  %231 = getelementptr i8, ptr %227, i64 24
  %232 = getelementptr i8, ptr %227, i64 16
  br label %238

233:                                              ; preds = %._crit_edge791
  %234 = getelementptr inbounds i8, ptr %16, i64 8
  %235 = getelementptr i8, ptr %227, i64 16
  %236 = getelementptr i8, ptr %227, i64 24
  %237 = getelementptr double, ptr %15, i64 %226
  br label %238

238:                                              ; preds = %233, %229
  %.0660.in = phi ptr [ %230, %229 ], [ %235, %233 ]
  %.0658.in = phi ptr [ %228, %229 ], [ %236, %233 ]
  %.0654.in = phi ptr [ %16, %229 ], [ %234, %233 ]
  %.0652.in = phi ptr [ %231, %229 ], [ %228, %233 ]
  %.0650.in = phi ptr [ %232, %229 ], [ %237, %233 ]
  %.0646.in = phi ptr [ %212, %229 ], [ %209, %233 ]
  %.0654 = load i64, ptr %.0654.in, align 8, !tbaa !5
  %239 = icmp slt i64 %.0654, 0
  br i1 %239, label %245, label %240

240:                                              ; preds = %238
  %.0660 = load double, ptr %.0660.in, align 8, !tbaa !9
  %.0658 = load double, ptr %.0658.in, align 8, !tbaa !9
  %.0652 = load double, ptr %.0652.in, align 8, !tbaa !9
  %.0650 = load double, ptr %.0650.in, align 8, !tbaa !9
  %.0646 = load i64, ptr %.0646.in, align 8, !tbaa !5
  %241 = icmp sge i64 %.0654, %226
  %242 = icmp slt i64 %.0646, 1
  %243 = icmp sgt i64 %.0646, %226
  %244 = or i1 %242, %243
  %or.cond749 = select i1 %241, i1 true, i1 %244
  br i1 %or.cond749, label %245, label %250

245:                                              ; preds = %240, %238
  store i64 4, ptr %17, align 8, !tbaa !5
  br label %580

._crit_edge783:                                   ; preds = %._crit_edge
  %246 = icmp eq i64 %.1633, 2
  br i1 %246, label %247, label %250

247:                                              ; preds = %._crit_edge783
  %248 = load double, ptr %3, align 8, !tbaa !9
  %249 = load double, ptr %4, align 8, !tbaa !9
  br label %250

250:                                              ; preds = %._crit_edge783, %240, %247
  %.1661 = phi double [ %248, %247 ], [ %.0660, %240 ], [ 0.000000e+00, %._crit_edge783 ]
  %.1659 = phi double [ %249, %247 ], [ %.0658, %240 ], [ 0.000000e+00, %._crit_edge783 ]
  %.1653 = phi double [ undef, %247 ], [ %.0652, %240 ], [ undef, %._crit_edge783 ]
  %.1651 = phi double [ undef, %247 ], [ %.0650, %240 ], [ undef, %._crit_edge783 ]
  store i64 0, ptr %10, align 8, !tbaa !5
  store i64 0, ptr %17, align 8, !tbaa !5
  %251 = load i64, ptr %11, align 8, !tbaa !5
  %.not721820 = icmp slt i64 %251, 1
  br i1 %.not721820, label %._crit_edge829, label %.lr.ph828

.lr.ph828:                                        ; preds = %250
  %252 = icmp sgt i64 %.1633, 1
  %253 = icmp eq i64 %.1633, 1
  br label %254

254:                                              ; preds = %.lr.ph828, %422
  %.0623826 = phi i64 [ 0, %.lr.ph828 ], [ %.3, %422 ]
  %.0641825 = phi i64 [ 0, %.lr.ph828 ], [ %256, %422 ]
  %.1647824 = phi i64 [ 0, %.lr.ph828 ], [ %.3649, %422 ]
  %.1655823 = phi i64 [ 0, %.lr.ph828 ], [ %.3657, %422 ]
  %.0680821 = phi i64 [ 1, %.lr.ph828 ], [ %423, %422 ]
  %255 = getelementptr inbounds i64, ptr %32, i64 %.0680821
  %256 = load i64, ptr %255, align 8, !tbaa !5
  %257 = sub nsw i64 %256, %.0641825
  store i64 %257, ptr %22, align 8, !tbaa !5
  %258 = icmp eq i64 %257, 1
  br i1 %258, label %259, label %278

259:                                              ; preds = %254
  br i1 %253, label %.thread769, label %.thread756

.thread769:                                       ; preds = %259
  %260 = add nsw i64 %.1655823, 1
  %261 = add nsw i64 %.1647824, 1
  %.phi.trans.insert = getelementptr double, ptr %8, i64 %.0641825
  %.pre904 = load double, ptr %.phi.trans.insert, align 8, !tbaa !9
  br label %272

.thread756:                                       ; preds = %259
  %262 = getelementptr double, ptr %8, i64 %.0641825
  %263 = load double, ptr %262, align 8, !tbaa !9
  %264 = load double, ptr %29, align 8, !tbaa !9
  %265 = fsub double %263, %264
  %266 = fcmp oge double %.1661, %265
  %267 = zext i1 %266 to i64
  %.2656760 = add nsw i64 %.1655823, %267
  %268 = fcmp oge double %.1659, %265
  %269 = zext i1 %268 to i64
  %.2648767 = add nsw i64 %.1647824, %269
  %270 = fcmp uge double %.1661, %265
  %271 = fcmp ult double %.1659, %265
  %or.cond750 = select i1 %270, i1 true, i1 %271
  br i1 %or.cond750, label %422, label %272

272:                                              ; preds = %.thread769, %.thread756
  %273 = phi double [ %263, %.thread756 ], [ %.pre904, %.thread769 ]
  %.2648768 = phi i64 [ %.2648767, %.thread756 ], [ %261, %.thread769 ]
  %.2656759766 = phi i64 [ %.2656760, %.thread756 ], [ %260, %.thread769 ]
  %274 = load i64, ptr %10, align 8, !tbaa !5
  %275 = add nsw i64 %274, 1
  store i64 %275, ptr %10, align 8, !tbaa !5
  %276 = getelementptr double, ptr %12, i64 %274
  store double %273, ptr %276, align 8, !tbaa !9
  %277 = getelementptr i64, ptr %13, i64 %274
  store i64 %.0680821, ptr %277, align 8, !tbaa !5
  br label %422

278:                                              ; preds = %254
  %279 = getelementptr double, ptr %8, i64 %.0641825
  %280 = load double, ptr %279, align 8, !tbaa !9
  %.3685795 = add nsw i64 %.0641825, 1
  %.not737.not796 = icmp slt i64 %.3685795, %256
  br i1 %.not737.not796, label %.lr.ph803, label %._crit_edge804

.lr.ph803:                                        ; preds = %278, %.lr.ph803
  %.3685801 = phi i64 [ %.3685, %.lr.ph803 ], [ %.3685795, %278 ]
  %.1643800 = phi double [ %285, %.lr.ph803 ], [ 0.000000e+00, %278 ]
  %.1667799 = phi double [ %291, %.lr.ph803 ], [ %280, %278 ]
  %.1670798 = phi double [ %295, %.lr.ph803 ], [ %280, %278 ]
  %.3685.in797 = phi i64 [ %.3685801, %.lr.ph803 ], [ %.0641825, %278 ]
  %281 = getelementptr double, ptr %9, i64 %.3685.in797
  %282 = load double, ptr %281, align 8, !tbaa !9
  %283 = fcmp oge double %282, 0.000000e+00
  %284 = fneg double %282
  %285 = select i1 %283, double %282, double %284
  %286 = getelementptr double, ptr %8, i64 %.3685.in797
  %287 = load double, ptr %286, align 8, !tbaa !9
  %288 = fadd double %.1643800, %287
  %289 = fadd double %288, %285
  %290 = fcmp oge double %.1667799, %289
  %291 = select i1 %290, double %.1667799, double %289
  %292 = fsub double %287, %.1643800
  %293 = fsub double %292, %285
  %294 = fcmp ole double %.1670798, %293
  %295 = select i1 %294, double %.1670798, double %293
  %.3685 = add nsw i64 %.3685801, 1
  %exitcond892.not = icmp eq i64 %.3685, %256
  br i1 %exitcond892.not, label %._crit_edge804, label %.lr.ph803, !llvm.loop !14

._crit_edge804:                                   ; preds = %.lr.ph803, %278
  %.1670.lcssa = phi double [ %280, %278 ], [ %295, %.lr.ph803 ]
  %.1667.lcssa = phi double [ %280, %278 ], [ %291, %.lr.ph803 ]
  %.1643.lcssa = phi double [ 0.000000e+00, %278 ], [ %285, %.lr.ph803 ]
  %296 = getelementptr inbounds double, ptr %36, i64 %256
  %297 = load double, ptr %296, align 8, !tbaa !9
  %298 = fadd double %.1643.lcssa, %297
  %299 = fcmp oge double %.1667.lcssa, %298
  %300 = select i1 %299, double %.1667.lcssa, double %298
  %301 = fsub double %297, %.1643.lcssa
  %302 = fcmp ole double %.1670.lcssa, %301
  %303 = select i1 %302, double %.1670.lcssa, double %301
  %304 = fcmp oge double %303, 0.000000e+00
  %305 = fneg double %303
  %306 = select i1 %304, double %303, double %305
  %307 = fcmp oge double %300, 0.000000e+00
  %308 = fneg double %300
  %309 = select i1 %307, double %300, double %308
  %310 = fcmp oge double %306, %309
  %311 = select i1 %310, double %306, double %309
  %312 = fmul double %311, 2.100000e+00
  %313 = fmul double %81, %312
  %314 = sitofp i64 %257 to double
  %315 = fneg double %313
  %316 = call double @llvm.fmuladd.f64(double %315, double %314, double %303)
  %317 = load double, ptr %29, align 8, !tbaa !9
  %318 = fneg double %317
  %319 = call double @llvm.fmuladd.f64(double %318, double 2.100000e+00, double %316)
  %320 = call double @llvm.fmuladd.f64(double %313, double %314, double %300)
  %321 = call double @llvm.fmuladd.f64(double %317, double 2.100000e+00, double %320)
  %322 = load double, ptr %7, align 8, !tbaa !9
  %323 = fcmp ugt double %322, 0.000000e+00
  br i1 %323, label %334, label %324

324:                                              ; preds = %._crit_edge804
  %325 = fcmp oge double %319, 0.000000e+00
  %326 = fneg double %319
  %327 = select i1 %325, double %319, double %326
  %328 = fcmp oge double %321, 0.000000e+00
  %329 = fneg double %321
  %330 = select i1 %328, double %321, double %329
  %331 = fcmp oge double %327, %330
  %332 = select i1 %331, double %327, double %330
  %333 = fmul double %81, %332
  br label %334

334:                                              ; preds = %._crit_edge804, %324
  %storemerge738 = phi double [ %333, %324 ], [ %322, %._crit_edge804 ]
  store double %storemerge738, ptr %25, align 8, !tbaa !9
  br i1 %252, label %335, label %346

335:                                              ; preds = %334
  %336 = fcmp olt double %321, %.1661
  br i1 %336, label %337, label %340

337:                                              ; preds = %335
  %338 = add nsw i64 %257, %.1655823
  %339 = add nsw i64 %257, %.1647824
  br label %422

340:                                              ; preds = %335
  %341 = fcmp oge double %319, %.1661
  %342 = select i1 %341, double %319, double %.1661
  %343 = fcmp ole double %321, %.1659
  %344 = select i1 %343, double %321, double %.1659
  %345 = fcmp ult double %342, %344
  br i1 %345, label %346, label %422

346:                                              ; preds = %340, %334
  %.2671 = phi double [ %342, %340 ], [ %319, %334 ]
  %.2668 = phi double [ %344, %340 ], [ %321, %334 ]
  %347 = load i64, ptr %2, align 8, !tbaa !5
  %348 = getelementptr double, ptr %15, i64 %347
  store double %.2671, ptr %348, align 8, !tbaa !9
  %349 = getelementptr double, ptr %348, i64 %257
  store double %.2668, ptr %349, align 8, !tbaa !9
  %350 = getelementptr double, ptr %9, i64 %.0641825
  %351 = getelementptr double, ptr %15, i64 %.0641825
  %.idx = shl i64 %257, 4
  %352 = getelementptr i8, ptr %348, i64 %.idx
  %353 = load i64, ptr %10, align 8, !tbaa !5
  %354 = getelementptr double, ptr %12, i64 %353
  %355 = getelementptr i64, ptr %13, i64 %353
  %356 = call i32 @dlaebz_(ptr noundef nonnull @c__1, ptr noundef nonnull @c__0, ptr noundef nonnull %22, ptr noundef nonnull %22, ptr noundef nonnull @c__1, ptr noundef nonnull %20, ptr noundef nonnull %25, ptr noundef nonnull %27, ptr noundef nonnull %29, ptr noundef nonnull %279, ptr noundef %350, ptr noundef %351, ptr noundef nonnull %28, ptr noundef nonnull %348, ptr noundef %352, ptr noundef nonnull %21, ptr noundef %16, ptr noundef %354, ptr noundef %355, ptr noundef nonnull %24) #7
  %357 = load i64, ptr %16, align 8, !tbaa !5
  %358 = add nsw i64 %357, %.1655823
  %359 = load i64, ptr %22, align 8, !tbaa !5
  %360 = getelementptr i64, ptr %16, i64 %359
  %361 = load i64, ptr %360, align 8, !tbaa !5
  %362 = add nsw i64 %361, %.1647824
  %363 = load i64, ptr %10, align 8, !tbaa !5
  %364 = sub nsw i64 %363, %357
  %365 = fsub double %.2668, %.2671
  %366 = load double, ptr %29, align 8, !tbaa !9
  %367 = fadd double %365, %366
  %368 = call double @log(double noundef %367) #7
  %369 = load double, ptr %29, align 8, !tbaa !9
  %370 = call double @log(double noundef %369) #7
  %371 = fsub double %368, %370
  %372 = fdiv double %371, 0x3FE62E42FEFA39EF
  %373 = fptosi double %372 to i64
  %374 = add nsw i64 %373, 2
  store i64 %374, ptr %26, align 8, !tbaa !5
  %375 = load i64, ptr %2, align 8, !tbaa !5
  %376 = getelementptr double, ptr %15, i64 %375
  %377 = load i64, ptr %22, align 8, !tbaa !5
  %.idx739 = shl i64 %377, 4
  %378 = getelementptr i8, ptr %376, i64 %.idx739
  %379 = load i64, ptr %10, align 8, !tbaa !5
  %380 = getelementptr double, ptr %12, i64 %379
  %381 = getelementptr i64, ptr %13, i64 %379
  %382 = call i32 @dlaebz_(ptr noundef nonnull @c__2, ptr noundef nonnull %26, ptr noundef nonnull %22, ptr noundef nonnull %22, ptr noundef nonnull @c__1, ptr noundef nonnull %20, ptr noundef nonnull %25, ptr noundef nonnull %27, ptr noundef nonnull %29, ptr noundef nonnull %279, ptr noundef %350, ptr noundef %351, ptr noundef nonnull %28, ptr noundef %376, ptr noundef %378, ptr noundef nonnull %23, ptr noundef nonnull %16, ptr noundef %380, ptr noundef %381, ptr noundef nonnull %24) #7
  %383 = load i64, ptr %23, align 8, !tbaa !5
  %.not740813 = icmp slt i64 %383, 1
  br i1 %.not740813, label %._crit_edge818, label %.lr.ph817

.lr.ph817:                                        ; preds = %346
  %384 = load i64, ptr %22, align 8, !tbaa !5
  %385 = load i64, ptr %24, align 8, !tbaa !5
  %386 = sub nsw i64 %383, %385
  %387 = sub nsw i64 0, %.0680821
  %388 = add i64 %364, 1
  %389 = add i64 %363, 1
  %390 = sub i64 %389, %357
  br label %391

391:                                              ; preds = %.lr.ph817, %._crit_edge812
  %.1815 = phi i64 [ %.0623826, %.lr.ph817 ], [ %.2, %._crit_edge812 ]
  %.4686814 = phi i64 [ 1, %.lr.ph817 ], [ %418, %._crit_edge812 ]
  %392 = load i64, ptr %2, align 8, !tbaa !5
  %393 = getelementptr double, ptr %31, i64 %.4686814
  %394 = getelementptr double, ptr %393, i64 %392
  %395 = load double, ptr %394, align 8, !tbaa !9
  %396 = getelementptr double, ptr %393, i64 %384
  %397 = getelementptr double, ptr %396, i64 %392
  %398 = load double, ptr %397, align 8, !tbaa !9
  %399 = fadd double %395, %398
  %400 = fmul double %399, 5.000000e-01
  %401 = icmp sgt i64 %.4686814, %386
  %.0681 = select i1 %401, i64 %387, i64 %.0680821
  %.2 = select i1 %401, i64 1, i64 %.1815
  %402 = getelementptr i64, ptr %30, i64 %.4686814
  %403 = getelementptr i64, ptr %402, i64 %384
  %404 = load i64, ptr %403, align 8, !tbaa !5
  %405 = add nsw i64 %404, %364
  %406 = load i64, ptr %402, align 8, !tbaa !5
  %407 = add i64 %388, %406
  %.not741808 = icmp sgt i64 %407, %405
  br i1 %.not741808, label %._crit_edge812, label %.lr.ph811.preheader

.lr.ph811.preheader:                              ; preds = %391
  %408 = add i64 %390, %404
  %409 = sub i64 %404, %406
  %min.iters.check = icmp ult i64 %409, 4
  br i1 %min.iters.check, label %.lr.ph811.preheader930, label %vector.ph

vector.ph:                                        ; preds = %.lr.ph811.preheader
  %n.vec = and i64 %409, -4
  %ind.end = add i64 %407, %n.vec
  %broadcast.splatinsert = insertelement <2 x double> poison, double %400, i64 0
  %broadcast.splat = shufflevector <2 x double> %broadcast.splatinsert, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert927 = insertelement <2 x i64> poison, i64 %.0681, i64 0
  %broadcast.splat928 = shufflevector <2 x i64> %broadcast.splatinsert927, <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 ]
  %offset.idx = add i64 %407, %index
  %410 = getelementptr inbounds double, ptr %34, i64 %offset.idx
  %411 = getelementptr inbounds i8, ptr %410, i64 16
  store <2 x double> %broadcast.splat, ptr %410, align 8, !tbaa !9
  store <2 x double> %broadcast.splat, ptr %411, align 8, !tbaa !9
  %412 = getelementptr inbounds i64, ptr %33, i64 %offset.idx
  %413 = getelementptr inbounds i8, ptr %412, i64 16
  store <2 x i64> %broadcast.splat928, ptr %412, align 8, !tbaa !5
  store <2 x i64> %broadcast.splat928, ptr %413, align 8, !tbaa !5
  %index.next = add nuw i64 %index, 4
  %414 = icmp eq i64 %index.next, %n.vec
  br i1 %414, label %middle.block, label %vector.body, !llvm.loop !15

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %409, %n.vec
  br i1 %cmp.n, label %._crit_edge812, label %.lr.ph811.preheader930

.lr.ph811.preheader930:                           ; preds = %middle.block, %.lr.ph811.preheader
  %.0672809.ph = phi i64 [ %407, %.lr.ph811.preheader ], [ %ind.end, %middle.block ]
  br label %.lr.ph811

.lr.ph811:                                        ; preds = %.lr.ph811.preheader930, %.lr.ph811
  %.0672809 = phi i64 [ %417, %.lr.ph811 ], [ %.0672809.ph, %.lr.ph811.preheader930 ]
  %415 = getelementptr inbounds double, ptr %34, i64 %.0672809
  store double %400, ptr %415, align 8, !tbaa !9
  %416 = getelementptr inbounds i64, ptr %33, i64 %.0672809
  store i64 %.0681, ptr %416, align 8, !tbaa !5
  %417 = add i64 %.0672809, 1
  %exitcond893.not = icmp eq i64 %417, %408
  br i1 %exitcond893.not, label %._crit_edge812, label %.lr.ph811, !llvm.loop !18

._crit_edge812:                                   ; preds = %.lr.ph811, %middle.block, %391
  %418 = add nuw i64 %.4686814, 1
  %exitcond894.not = icmp eq i64 %.4686814, %383
  br i1 %exitcond894.not, label %._crit_edge818, label %391, !llvm.loop !19

._crit_edge818:                                   ; preds = %._crit_edge812, %346
  %.1.lcssa = phi i64 [ %.0623826, %346 ], [ %.2, %._crit_edge812 ]
  %419 = load i64, ptr %21, align 8, !tbaa !5
  %420 = load i64, ptr %10, align 8, !tbaa !5
  %421 = add nsw i64 %420, %419
  store i64 %421, ptr %10, align 8, !tbaa !5
  br label %422

422:                                              ; preds = %337, %340, %.thread756, %272, %._crit_edge818
  %.3657 = phi i64 [ %.2656759766, %272 ], [ %.2656760, %.thread756 ], [ %338, %337 ], [ %.1655823, %340 ], [ %358, %._crit_edge818 ]
  %.3649 = phi i64 [ %.2648768, %272 ], [ %.2648767, %.thread756 ], [ %339, %337 ], [ %.1647824, %340 ], [ %362, %._crit_edge818 ]
  %.3 = phi i64 [ %.0623826, %272 ], [ %.0623826, %.thread756 ], [ %.0623826, %337 ], [ %.0623826, %340 ], [ %.1.lcssa, %._crit_edge818 ]
  %423 = add nuw nsw i64 %.0680821, 1
  %.not721.not = icmp slt i64 %.0680821, %251
  br i1 %.not721.not, label %254, label %._crit_edge829.loopexit, !llvm.loop !20

._crit_edge829.loopexit:                          ; preds = %422
  %424 = xor i64 %.3657, -1
  %425 = icmp ne i64 %.3, 0
  br label %._crit_edge829

._crit_edge829:                                   ; preds = %._crit_edge829.loopexit, %250
  %.1655.lcssa = phi i64 [ -1, %250 ], [ %424, %._crit_edge829.loopexit ]
  %.1647.lcssa = phi i64 [ 0, %250 ], [ %.3649, %._crit_edge829.loopexit ]
  %.0623.lcssa = phi i1 [ false, %250 ], [ %425, %._crit_edge829.loopexit ]
  br i1 %134, label %426, label %558

426:                                              ; preds = %._crit_edge829
  %427 = load i64, ptr %5, align 8, !tbaa !5
  %428 = add i64 %427, %.1655.lcssa
  %429 = load i64, ptr %6, align 8, !tbaa !5
  %430 = sub nsw i64 %.1647.lcssa, %429
  %431 = icmp sgt i64 %428, 0
  %432 = icmp sgt i64 %430, 0
  %or.cond3 = select i1 %431, i1 true, i1 %432
  br i1 %or.cond3, label %433, label %457

433:                                              ; preds = %426
  %434 = load i64, ptr %10, align 8, !tbaa !5
  %.not722834 = icmp slt i64 %434, 1
  br i1 %.not722834, label %._crit_edge840, label %.lr.ph839

.lr.ph839:                                        ; preds = %433, %453
  %.0625837 = phi i64 [ %.1626, %453 ], [ %430, %433 ]
  %.0629836 = phi i64 [ %.1630, %453 ], [ %428, %433 ]
  %.1673835 = phi i64 [ %455, %453 ], [ 1, %433 ]
  %435 = phi i64 [ %454, %453 ], [ 0, %433 ]
  %436 = getelementptr inbounds double, ptr %34, i64 %.1673835
  %437 = load double, ptr %436, align 8, !tbaa !9
  %438 = fcmp ole double %437, %.1653
  %439 = icmp sgt i64 %.0629836, 0
  %or.cond5 = select i1 %438, i1 %439, i1 false
  br i1 %or.cond5, label %440, label %442

440:                                              ; preds = %.lr.ph839
  %441 = add nsw i64 %.0629836, -1
  br label %453

442:                                              ; preds = %.lr.ph839
  %443 = fcmp oge double %437, %.1651
  %444 = icmp sgt i64 %.0625837, 0
  %or.cond7 = select i1 %443, i1 %444, i1 false
  br i1 %or.cond7, label %445, label %447

445:                                              ; preds = %442
  %446 = add nsw i64 %.0625837, -1
  br label %453

447:                                              ; preds = %442
  %448 = add nsw i64 %435, 1
  %449 = getelementptr double, ptr %12, i64 %435
  store double %437, ptr %449, align 8, !tbaa !9
  %450 = getelementptr inbounds i64, ptr %33, i64 %.1673835
  %451 = load i64, ptr %450, align 8, !tbaa !5
  %452 = getelementptr i64, ptr %13, i64 %435
  store i64 %451, ptr %452, align 8, !tbaa !5
  br label %453

453:                                              ; preds = %440, %447, %445
  %454 = phi i64 [ %435, %440 ], [ %435, %445 ], [ %448, %447 ]
  %.1630 = phi i64 [ %441, %440 ], [ %.0629836, %445 ], [ %.0629836, %447 ]
  %.1626 = phi i64 [ %.0625837, %440 ], [ %446, %445 ], [ %.0625837, %447 ]
  %455 = add nuw i64 %.1673835, 1
  %exitcond895.not = icmp eq i64 %.1673835, %434
  br i1 %exitcond895.not, label %._crit_edge840, label %.lr.ph839, !llvm.loop !21

._crit_edge840:                                   ; preds = %453, %433
  %456 = phi i64 [ 0, %433 ], [ %454, %453 ]
  %.0629.lcssa = phi i64 [ %428, %433 ], [ %.1630, %453 ]
  %.0625.lcssa = phi i64 [ %430, %433 ], [ %.1626, %453 ]
  store i64 %456, ptr %10, align 8, !tbaa !5
  br label %457

457:                                              ; preds = %426, %._crit_edge840
  %.2631 = phi i64 [ %.0629.lcssa, %._crit_edge840 ], [ %428, %426 ]
  %.2627 = phi i64 [ %.0625.lcssa, %._crit_edge840 ], [ %430, %426 ]
  %458 = icmp sgt i64 %.2631, 0
  %459 = icmp sgt i64 %.2627, 0
  %or.cond9 = select i1 %458, i1 true, i1 %459
  br i1 %or.cond9, label %460, label %555

460:                                              ; preds = %457
  br i1 %458, label %.preheader918, label %.loopexit775

.preheader918:                                    ; preds = %460, %._crit_edge849
  %.0635853 = phi double [ %.1636.lcssa, %._crit_edge849 ], [ %.1659, %460 ]
  %.0639852 = phi i64 [ %491, %._crit_edge849 ], [ 1, %460 ]
  %461 = load i64, ptr %10, align 8, !tbaa !5
  %.not735843 = icmp slt i64 %461, 1
  br i1 %.not735843, label %._crit_edge849, label %.lr.ph848.preheader

.lr.ph848.preheader:                              ; preds = %.preheader918
  %xtraiter = and i64 %461, 1
  %462 = icmp eq i64 %461, 1
  br i1 %462, label %._crit_edge849.loopexit.unr-lcssa, label %.lr.ph848.preheader.new

.lr.ph848.preheader.new:                          ; preds = %.lr.ph848.preheader
  %unroll_iter = and i64 %461, 9223372036854775806
  br label %.lr.ph848

.lr.ph848:                                        ; preds = %480, %.lr.ph848.preheader.new
  %.1636846 = phi double [ %.0635853, %.lr.ph848.preheader.new ], [ %.2637.1, %480 ]
  %.0662845 = phi i64 [ 0, %.lr.ph848.preheader.new ], [ %.1663.1, %480 ]
  %.2674844 = phi i64 [ 1, %.lr.ph848.preheader.new ], [ %481, %480 ]
  %niter = phi i64 [ 0, %.lr.ph848.preheader.new ], [ %niter.next.1, %480 ]
  %463 = getelementptr inbounds i64, ptr %33, i64 %.2674844
  %464 = load i64, ptr %463, align 8, !tbaa !5
  %.not736 = icmp eq i64 %464, 0
  br i1 %.not736, label %.lr.ph848.1, label %465

465:                                              ; preds = %.lr.ph848
  %466 = getelementptr inbounds double, ptr %34, i64 %.2674844
  %467 = load double, ptr %466, align 8, !tbaa !9
  %468 = fcmp olt double %467, %.1636846
  %469 = icmp eq i64 %.0662845, 0
  %or.cond11 = select i1 %468, i1 true, i1 %469
  br i1 %or.cond11, label %470, label %.lr.ph848.1

470:                                              ; preds = %465
  br label %.lr.ph848.1

.lr.ph848.1:                                      ; preds = %.lr.ph848, %470, %465
  %.1663 = phi i64 [ %.2674844, %470 ], [ %.0662845, %465 ], [ %.0662845, %.lr.ph848 ]
  %.2637 = phi double [ %467, %470 ], [ %.1636846, %465 ], [ %.1636846, %.lr.ph848 ]
  %471 = add nuw i64 %.2674844, 1
  %472 = getelementptr i64, ptr %13, i64 %.2674844
  %473 = load i64, ptr %472, align 8, !tbaa !5
  %.not736.1 = icmp eq i64 %473, 0
  br i1 %.not736.1, label %480, label %474

474:                                              ; preds = %.lr.ph848.1
  %475 = getelementptr double, ptr %12, i64 %.2674844
  %476 = load double, ptr %475, align 8, !tbaa !9
  %477 = fcmp olt double %476, %.2637
  %478 = icmp eq i64 %.1663, 0
  %or.cond11.1 = select i1 %477, i1 true, i1 %478
  br i1 %or.cond11.1, label %479, label %480

479:                                              ; preds = %474
  br label %480

480:                                              ; preds = %479, %474, %.lr.ph848.1
  %.1663.1 = phi i64 [ %471, %479 ], [ %.1663, %474 ], [ %.1663, %.lr.ph848.1 ]
  %.2637.1 = phi double [ %476, %479 ], [ %.2637, %474 ], [ %.2637, %.lr.ph848.1 ]
  %481 = add nuw i64 %.2674844, 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_edge849.loopexit.unr-lcssa, label %.lr.ph848, !llvm.loop !22

._crit_edge849.loopexit.unr-lcssa:                ; preds = %480, %.lr.ph848.preheader
  %.1663.lcssa.ph = phi i64 [ poison, %.lr.ph848.preheader ], [ %.1663.1, %480 ]
  %.2637.lcssa.ph = phi double [ poison, %.lr.ph848.preheader ], [ %.2637.1, %480 ]
  %.1636846.unr = phi double [ %.0635853, %.lr.ph848.preheader ], [ %.2637.1, %480 ]
  %.0662845.unr = phi i64 [ 0, %.lr.ph848.preheader ], [ %.1663.1, %480 ]
  %.2674844.unr = phi i64 [ 1, %.lr.ph848.preheader ], [ %481, %480 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge849, label %.lr.ph848.epil

.lr.ph848.epil:                                   ; preds = %._crit_edge849.loopexit.unr-lcssa
  %482 = getelementptr inbounds i64, ptr %33, i64 %.2674844.unr
  %483 = load i64, ptr %482, align 8, !tbaa !5
  %.not736.epil = icmp eq i64 %483, 0
  br i1 %.not736.epil, label %._crit_edge849, label %484

484:                                              ; preds = %.lr.ph848.epil
  %485 = getelementptr inbounds double, ptr %34, i64 %.2674844.unr
  %486 = load double, ptr %485, align 8, !tbaa !9
  %487 = fcmp olt double %486, %.1636846.unr
  %488 = icmp eq i64 %.0662845.unr, 0
  %or.cond11.epil = select i1 %487, i1 true, i1 %488
  br i1 %or.cond11.epil, label %489, label %._crit_edge849

489:                                              ; preds = %484
  br label %._crit_edge849

._crit_edge849:                                   ; preds = %._crit_edge849.loopexit.unr-lcssa, %489, %484, %.lr.ph848.epil, %.preheader918
  %.0662.lcssa = phi i64 [ 0, %.preheader918 ], [ %.1663.lcssa.ph, %._crit_edge849.loopexit.unr-lcssa ], [ %.2674844.unr, %489 ], [ %.0662845.unr, %484 ], [ %.0662845.unr, %.lr.ph848.epil ]
  %.1636.lcssa = phi double [ %.0635853, %.preheader918 ], [ %.2637.lcssa.ph, %._crit_edge849.loopexit.unr-lcssa ], [ %486, %489 ], [ %.1636846.unr, %484 ], [ %.1636846.unr, %.lr.ph848.epil ]
  %490 = getelementptr inbounds i64, ptr %33, i64 %.0662.lcssa
  store i64 0, ptr %490, align 8, !tbaa !5
  %491 = add nuw i64 %.0639852, 1
  %exitcond897.not = icmp eq i64 %.0639852, %.2631
  br i1 %exitcond897.not, label %.loopexit775, label %.preheader918, !llvm.loop !23

.loopexit775:                                     ; preds = %._crit_edge849, %460
  br i1 %459, label %.preheader, label %.loopexit774

.preheader:                                       ; preds = %.loopexit775, %._crit_edge860
  %.3638864 = phi double [ %.4.lcssa, %._crit_edge860 ], [ %.1661, %.loopexit775 ]
  %.1640863 = phi i64 [ %522, %._crit_edge860 ], [ 1, %.loopexit775 ]
  %492 = load i64, ptr %10, align 8, !tbaa !5
  %.not733854 = icmp slt i64 %492, 1
  br i1 %.not733854, label %._crit_edge860, label %.lr.ph859.preheader

.lr.ph859.preheader:                              ; preds = %.preheader
  %xtraiter939 = and i64 %492, 1
  %493 = icmp eq i64 %492, 1
  br i1 %493, label %._crit_edge860.loopexit.unr-lcssa, label %.lr.ph859.preheader.new

.lr.ph859.preheader.new:                          ; preds = %.lr.ph859.preheader
  %unroll_iter943 = and i64 %492, 9223372036854775806
  br label %.lr.ph859

.lr.ph859:                                        ; preds = %511, %.lr.ph859.preheader.new
  %.4857 = phi double [ %.3638864, %.lr.ph859.preheader.new ], [ %.5.1, %511 ]
  %.2664856 = phi i64 [ 0, %.lr.ph859.preheader.new ], [ %.3665.1, %511 ]
  %.3675855 = phi i64 [ 1, %.lr.ph859.preheader.new ], [ %512, %511 ]
  %niter944 = phi i64 [ 0, %.lr.ph859.preheader.new ], [ %niter944.next.1, %511 ]
  %494 = getelementptr inbounds i64, ptr %33, i64 %.3675855
  %495 = load i64, ptr %494, align 8, !tbaa !5
  %.not734 = icmp eq i64 %495, 0
  br i1 %.not734, label %.lr.ph859.1, label %496

496:                                              ; preds = %.lr.ph859
  %497 = getelementptr inbounds double, ptr %34, i64 %.3675855
  %498 = load double, ptr %497, align 8, !tbaa !9
  %499 = fcmp ogt double %498, %.4857
  %500 = icmp eq i64 %.2664856, 0
  %or.cond13 = select i1 %499, i1 true, i1 %500
  br i1 %or.cond13, label %501, label %.lr.ph859.1

501:                                              ; preds = %496
  br label %.lr.ph859.1

.lr.ph859.1:                                      ; preds = %.lr.ph859, %501, %496
  %.3665 = phi i64 [ %.3675855, %501 ], [ %.2664856, %496 ], [ %.2664856, %.lr.ph859 ]
  %.5 = phi double [ %498, %501 ], [ %.4857, %496 ], [ %.4857, %.lr.ph859 ]
  %502 = add nuw i64 %.3675855, 1
  %503 = getelementptr i64, ptr %13, i64 %.3675855
  %504 = load i64, ptr %503, align 8, !tbaa !5
  %.not734.1 = icmp eq i64 %504, 0
  br i1 %.not734.1, label %511, label %505

505:                                              ; preds = %.lr.ph859.1
  %506 = getelementptr double, ptr %12, i64 %.3675855
  %507 = load double, ptr %506, align 8, !tbaa !9
  %508 = fcmp ogt double %507, %.5
  %509 = icmp eq i64 %.3665, 0
  %or.cond13.1 = select i1 %508, i1 true, i1 %509
  br i1 %or.cond13.1, label %510, label %511

510:                                              ; preds = %505
  br label %511

511:                                              ; preds = %510, %505, %.lr.ph859.1
  %.3665.1 = phi i64 [ %502, %510 ], [ %.3665, %505 ], [ %.3665, %.lr.ph859.1 ]
  %.5.1 = phi double [ %507, %510 ], [ %.5, %505 ], [ %.5, %.lr.ph859.1 ]
  %512 = add nuw i64 %.3675855, 2
  %niter944.next.1 = add i64 %niter944, 2
  %niter944.ncmp.1 = icmp eq i64 %niter944.next.1, %unroll_iter943
  br i1 %niter944.ncmp.1, label %._crit_edge860.loopexit.unr-lcssa, label %.lr.ph859, !llvm.loop !24

._crit_edge860.loopexit.unr-lcssa:                ; preds = %511, %.lr.ph859.preheader
  %.3665.lcssa.ph = phi i64 [ poison, %.lr.ph859.preheader ], [ %.3665.1, %511 ]
  %.5.lcssa.ph = phi double [ poison, %.lr.ph859.preheader ], [ %.5.1, %511 ]
  %.4857.unr = phi double [ %.3638864, %.lr.ph859.preheader ], [ %.5.1, %511 ]
  %.2664856.unr = phi i64 [ 0, %.lr.ph859.preheader ], [ %.3665.1, %511 ]
  %.3675855.unr = phi i64 [ 1, %.lr.ph859.preheader ], [ %512, %511 ]
  %lcmp.mod940.not = icmp eq i64 %xtraiter939, 0
  br i1 %lcmp.mod940.not, label %._crit_edge860, label %.lr.ph859.epil

.lr.ph859.epil:                                   ; preds = %._crit_edge860.loopexit.unr-lcssa
  %513 = getelementptr inbounds i64, ptr %33, i64 %.3675855.unr
  %514 = load i64, ptr %513, align 8, !tbaa !5
  %.not734.epil = icmp eq i64 %514, 0
  br i1 %.not734.epil, label %._crit_edge860, label %515

515:                                              ; preds = %.lr.ph859.epil
  %516 = getelementptr inbounds double, ptr %34, i64 %.3675855.unr
  %517 = load double, ptr %516, align 8, !tbaa !9
  %518 = fcmp ogt double %517, %.4857.unr
  %519 = icmp eq i64 %.2664856.unr, 0
  %or.cond13.epil = select i1 %518, i1 true, i1 %519
  br i1 %or.cond13.epil, label %520, label %._crit_edge860

520:                                              ; preds = %515
  br label %._crit_edge860

._crit_edge860:                                   ; preds = %._crit_edge860.loopexit.unr-lcssa, %520, %515, %.lr.ph859.epil, %.preheader
  %.2664.lcssa = phi i64 [ 0, %.preheader ], [ %.3665.lcssa.ph, %._crit_edge860.loopexit.unr-lcssa ], [ %.3675855.unr, %520 ], [ %.2664856.unr, %515 ], [ %.2664856.unr, %.lr.ph859.epil ]
  %.4.lcssa = phi double [ %.3638864, %.preheader ], [ %.5.lcssa.ph, %._crit_edge860.loopexit.unr-lcssa ], [ %517, %520 ], [ %.4857.unr, %515 ], [ %.4857.unr, %.lr.ph859.epil ]
  %521 = getelementptr inbounds i64, ptr %33, i64 %.2664.lcssa
  store i64 0, ptr %521, align 8, !tbaa !5
  %522 = add nuw i64 %.1640863, 1
  %exitcond899.not = icmp eq i64 %.1640863, %.2627
  br i1 %exitcond899.not, label %.loopexit774, label %.preheader, !llvm.loop !25

.loopexit774:                                     ; preds = %._crit_edge860, %.loopexit775
  %523 = load i64, ptr %10, align 8, !tbaa !5
  %.not725866 = icmp slt i64 %523, 1
  br i1 %.not725866, label %._crit_edge870, label %.lr.ph869.preheader

.lr.ph869.preheader:                              ; preds = %.loopexit774
  %xtraiter945 = and i64 %523, 1
  %524 = icmp eq i64 %523, 1
  br i1 %524, label %._crit_edge870.loopexit.unr-lcssa, label %.lr.ph869.preheader.new

.lr.ph869.preheader.new:                          ; preds = %.lr.ph869.preheader
  %unroll_iter948 = and i64 %523, 9223372036854775806
  br label %.lr.ph869

.lr.ph869:                                        ; preds = %543, %.lr.ph869.preheader.new
  %.4676867 = phi i64 [ 1, %.lr.ph869.preheader.new ], [ %545, %543 ]
  %525 = phi i64 [ 0, %.lr.ph869.preheader.new ], [ %544, %543 ]
  %niter949 = phi i64 [ 0, %.lr.ph869.preheader.new ], [ %niter949.next.1, %543 ]
  %526 = getelementptr inbounds i64, ptr %33, i64 %.4676867
  %527 = load i64, ptr %526, align 8, !tbaa !5
  %.not732 = icmp eq i64 %527, 0
  br i1 %.not732, label %.lr.ph869.1, label %528

528:                                              ; preds = %.lr.ph869
  %529 = add nsw i64 %525, 1
  %530 = getelementptr inbounds double, ptr %34, i64 %.4676867
  %531 = load double, ptr %530, align 8, !tbaa !9
  %532 = getelementptr double, ptr %12, i64 %525
  store double %531, ptr %532, align 8, !tbaa !9
  %533 = getelementptr i64, ptr %13, i64 %525
  store i64 %527, ptr %533, align 8, !tbaa !5
  br label %.lr.ph869.1

.lr.ph869.1:                                      ; preds = %.lr.ph869, %528
  %534 = phi i64 [ %525, %.lr.ph869 ], [ %529, %528 ]
  %535 = getelementptr i64, ptr %13, i64 %.4676867
  %536 = load i64, ptr %535, align 8, !tbaa !5
  %.not732.1 = icmp eq i64 %536, 0
  br i1 %.not732.1, label %543, label %537

537:                                              ; preds = %.lr.ph869.1
  %538 = add nsw i64 %534, 1
  %539 = getelementptr double, ptr %12, i64 %.4676867
  %540 = load double, ptr %539, align 8, !tbaa !9
  %541 = getelementptr double, ptr %12, i64 %534
  store double %540, ptr %541, align 8, !tbaa !9
  %542 = getelementptr i64, ptr %13, i64 %534
  store i64 %536, ptr %542, align 8, !tbaa !5
  br label %543

543:                                              ; preds = %537, %.lr.ph869.1
  %544 = phi i64 [ %534, %.lr.ph869.1 ], [ %538, %537 ]
  %545 = add nuw i64 %.4676867, 2
  %niter949.next.1 = add i64 %niter949, 2
  %niter949.ncmp.1 = icmp eq i64 %niter949.next.1, %unroll_iter948
  br i1 %niter949.ncmp.1, label %._crit_edge870.loopexit.unr-lcssa, label %.lr.ph869, !llvm.loop !26

._crit_edge870.loopexit.unr-lcssa:                ; preds = %543, %.lr.ph869.preheader
  %.lcssa.ph = phi i64 [ poison, %.lr.ph869.preheader ], [ %544, %543 ]
  %.4676867.unr = phi i64 [ 1, %.lr.ph869.preheader ], [ %545, %543 ]
  %.unr = phi i64 [ 0, %.lr.ph869.preheader ], [ %544, %543 ]
  %lcmp.mod946.not = icmp eq i64 %xtraiter945, 0
  br i1 %lcmp.mod946.not, label %._crit_edge870, label %.lr.ph869.epil

.lr.ph869.epil:                                   ; preds = %._crit_edge870.loopexit.unr-lcssa
  %546 = getelementptr inbounds i64, ptr %33, i64 %.4676867.unr
  %547 = load i64, ptr %546, align 8, !tbaa !5
  %.not732.epil = icmp eq i64 %547, 0
  br i1 %.not732.epil, label %._crit_edge870, label %548

548:                                              ; preds = %.lr.ph869.epil
  %549 = add nsw i64 %.unr, 1
  %550 = getelementptr inbounds double, ptr %34, i64 %.4676867.unr
  %551 = load double, ptr %550, align 8, !tbaa !9
  %552 = getelementptr double, ptr %12, i64 %.unr
  store double %551, ptr %552, align 8, !tbaa !9
  %553 = getelementptr i64, ptr %13, i64 %.unr
  store i64 %547, ptr %553, align 8, !tbaa !5
  br label %._crit_edge870

._crit_edge870:                                   ; preds = %._crit_edge870.loopexit.unr-lcssa, %548, %.lr.ph869.epil, %.loopexit774
  %554 = phi i64 [ 0, %.loopexit774 ], [ %.lcssa.ph, %._crit_edge870.loopexit.unr-lcssa ], [ %.unr, %.lr.ph869.epil ], [ %549, %548 ]
  store i64 %554, ptr %10, align 8, !tbaa !5
  br label %555

555:                                              ; preds = %457, %._crit_edge870
  %556 = icmp sgt i64 %.2631, -1
  %557 = icmp sgt i64 %.2627, -1
  %or.cond15.not = select i1 %556, i1 %557, i1 false
  br label %558

558:                                              ; preds = %555, %._crit_edge829
  %.not729 = phi i1 [ true, %._crit_edge829 ], [ %or.cond15.not, %555 ]
  br i1 %.not713, label %559, label %.loopexit

559:                                              ; preds = %558
  %560 = load i64, ptr %11, align 8, !tbaa !5
  %561 = icmp sgt i64 %560, 1
  br i1 %561, label %562, label %.loopexit

562:                                              ; preds = %559
  %563 = load i64, ptr %10, align 8, !tbaa !5
  %.not726.not880 = icmp sgt i64 %563, 1
  br i1 %.not726.not880, label %.lr.ph883, label %.loopexit

.lr.ph883:                                        ; preds = %562, %._crit_edge877.thread
  %.5677881 = phi i64 [ %567, %._crit_edge877.thread ], [ 1, %562 ]
  %564 = getelementptr inbounds double, ptr %34, i64 %.5677881
  %565 = load double, ptr %564, align 8, !tbaa !9
  %566 = load i64, ptr %10, align 8, !tbaa !5
  %567 = add nuw nsw i64 %.5677881, 1
  %.not730871.not = icmp slt i64 %.5677881, %566
  br i1 %.not730871.not, label %.lr.ph876, label %._crit_edge877.thread

.lr.ph876:                                        ; preds = %.lr.ph883, %.lr.ph876
  %.2644874 = phi double [ %.3645, %.lr.ph876 ], [ %565, %.lr.ph883 ]
  %.0678873 = phi i64 [ %.1679, %.lr.ph876 ], [ 0, %.lr.ph883 ]
  %.5687872 = phi i64 [ %571, %.lr.ph876 ], [ %567, %.lr.ph883 ]
  %568 = getelementptr inbounds double, ptr %34, i64 %.5687872
  %569 = load double, ptr %568, align 8, !tbaa !9
  %570 = fcmp olt double %569, %.2644874
  %.1679 = select i1 %570, i64 %.5687872, i64 %.0678873
  %.3645 = select i1 %570, double %569, double %.2644874
  %571 = add nuw nsw i64 %.5687872, 1
  %.not730.not = icmp slt i64 %.5687872, %566
  br i1 %.not730.not, label %.lr.ph876, label %._crit_edge877, !llvm.loop !27

._crit_edge877:                                   ; preds = %.lr.ph876
  %.not731 = icmp eq i64 %.1679, 0
  br i1 %.not731, label %._crit_edge877.thread, label %572

572:                                              ; preds = %._crit_edge877
  %573 = getelementptr inbounds i64, ptr %33, i64 %.1679
  %574 = load i64, ptr %573, align 8, !tbaa !5
  %575 = getelementptr inbounds double, ptr %34, i64 %.1679
  store double %565, ptr %575, align 8, !tbaa !9
  %576 = getelementptr inbounds i64, ptr %33, i64 %.5677881
  %577 = load i64, ptr %576, align 8, !tbaa !5
  store i64 %577, ptr %573, align 8, !tbaa !5
  store double %.3645, ptr %564, align 8, !tbaa !9
  store i64 %574, ptr %576, align 8, !tbaa !5
  br label %._crit_edge877.thread

._crit_edge877.thread:                            ; preds = %.lr.ph883, %._crit_edge877, %572
  %exitcond901.not = icmp eq i64 %567, %563
  br i1 %exitcond901.not, label %.loopexit, label %.lr.ph883, !llvm.loop !28

.loopexit:                                        ; preds = %._crit_edge877.thread, %562, %559, %558
  %spec.select752 = zext i1 %.0623.lcssa to i64
  store i64 %spec.select752, ptr %17, align 8, !tbaa !5
  br i1 %.not729, label %580, label %578

578:                                              ; preds = %.loopexit
  %579 = select i1 %.0623.lcssa, i64 3, i64 2
  store i64 %579, ptr %17, align 8, !tbaa !5
  br label %580

580:                                              ; preds = %.loopexit, %578, %69, %245, %96, %.critedge.thread
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #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 i32 @xerbla_(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 @sqrt(double noundef) local_unnamed_addr #4

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


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