; LLVM IR from OpenMathLib/OpenBLAS :: lapack-netlib/SRC (dlasd2)

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

@.str = external hidden unnamed_addr constant [7 x i8], align 1
@c__1 = external hidden global i32, align 4
@.str.1 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@c_b30 = external hidden global double, align 8

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

141:                                              ; preds = %23
  %142 = load ptr, ptr %46, align 8, !tbaa !5
  store i32 -1, ptr %142, align 4, !tbaa !9
  br label %161

143:                                              ; preds = %23
  %144 = load ptr, ptr %25, align 8, !tbaa !5
  %145 = load i32, ptr %144, align 4, !tbaa !9
  %146 = icmp slt i32 %145, 1
  br i1 %146, label %147, label %149

147:                                              ; preds = %143
  %148 = load ptr, ptr %46, align 8, !tbaa !5
  store i32 -2, ptr %148, align 4, !tbaa !9
  br label %160

149:                                              ; preds = %143
  %150 = load ptr, ptr %26, align 8, !tbaa !5
  %151 = load i32, ptr %150, align 4, !tbaa !9
  %152 = icmp ne i32 %151, 1
  br i1 %152, label %153, label %159

153:                                              ; preds = %149
  %154 = load ptr, ptr %26, align 8, !tbaa !5
  %155 = load i32, ptr %154, align 4, !tbaa !9
  %156 = icmp ne i32 %155, 0
  br i1 %156, label %157, label %159

157:                                              ; preds = %153
  %158 = load ptr, ptr %46, align 8, !tbaa !5
  store i32 -3, ptr %158, align 4, !tbaa !9
  br label %159

159:                                              ; preds = %157, %153, %149
  br label %160

160:                                              ; preds = %159, %147
  br label %161

161:                                              ; preds = %160, %141
  %162 = load ptr, ptr %24, align 8, !tbaa !5
  %163 = load i32, ptr %162, align 4, !tbaa !9
  %164 = load ptr, ptr %25, align 8, !tbaa !5
  %165 = load i32, ptr %164, align 4, !tbaa !9
  %166 = add nsw i32 %163, %165
  %167 = add nsw i32 %166, 1
  store i32 %167, ptr %65, align 4, !tbaa !9
  %168 = load i32, ptr %65, align 4, !tbaa !9
  %169 = load ptr, ptr %26, align 8, !tbaa !5
  %170 = load i32, ptr %169, align 4, !tbaa !9
  %171 = add nsw i32 %168, %170
  store i32 %171, ptr %64, align 4, !tbaa !9
  %172 = load ptr, ptr %33, align 8, !tbaa !5
  %173 = load i32, ptr %172, align 4, !tbaa !9
  %174 = load i32, ptr %65, align 4, !tbaa !9
  %175 = icmp slt i32 %173, %174
  br i1 %175, label %176, label %178

176:                                              ; preds = %161
  %177 = load ptr, ptr %46, align 8, !tbaa !5
  store i32 -10, ptr %177, align 4, !tbaa !9
  br label %202

178:                                              ; preds = %161
  %179 = load ptr, ptr %35, align 8, !tbaa !5
  %180 = load i32, ptr %179, align 4, !tbaa !9
  %181 = load i32, ptr %64, align 4, !tbaa !9
  %182 = icmp slt i32 %180, %181
  br i1 %182, label %183, label %185

183:                                              ; preds = %178
  %184 = load ptr, ptr %46, align 8, !tbaa !5
  store i32 -12, ptr %184, align 4, !tbaa !9
  br label %201

185:                                              ; preds = %178
  %186 = load ptr, ptr %38, align 8, !tbaa !5
  %187 = load i32, ptr %186, align 4, !tbaa !9
  %188 = load i32, ptr %65, align 4, !tbaa !9
  %189 = icmp slt i32 %187, %188
  br i1 %189, label %190, label %192

190:                                              ; preds = %185
  %191 = load ptr, ptr %46, align 8, !tbaa !5
  store i32 -15, ptr %191, align 4, !tbaa !9
  br label %200

192:                                              ; preds = %185
  %193 = load ptr, ptr %40, align 8, !tbaa !5
  %194 = load i32, ptr %193, align 4, !tbaa !9
  %195 = load i32, ptr %64, align 4, !tbaa !9
  %196 = icmp slt i32 %194, %195
  br i1 %196, label %197, label %199

197:                                              ; preds = %192
  %198 = load ptr, ptr %46, align 8, !tbaa !5
  store i32 -17, ptr %198, align 4, !tbaa !9
  br label %199

199:                                              ; preds = %197, %192
  br label %200

200:                                              ; preds = %199, %190
  br label %201

201:                                              ; preds = %200, %183
  br label %202

202:                                              ; preds = %201, %176
  %203 = load ptr, ptr %46, align 8, !tbaa !5
  %204 = load i32, ptr %203, align 4, !tbaa !9
  %205 = icmp ne i32 %204, 0
  br i1 %205, label %206, label %211

206:                                              ; preds = %202
  %207 = load ptr, ptr %46, align 8, !tbaa !5
  %208 = load i32, ptr %207, align 4, !tbaa !9
  %209 = sub nsw i32 0, %208
  store i32 %209, ptr %55, align 4, !tbaa !9
  %210 = call i32 @xerbla_(ptr noundef @.str, ptr noundef %55, i32 noundef 6)
  store i32 1, ptr %80, align 4
  br label %1300

211:                                              ; preds = %202
  %212 = load ptr, ptr %24, align 8, !tbaa !5
  %213 = load i32, ptr %212, align 4, !tbaa !9
  %214 = add nsw i32 %213, 1
  store i32 %214, ptr %78, align 4, !tbaa !9
  %215 = load ptr, ptr %24, align 8, !tbaa !5
  %216 = load i32, ptr %215, align 4, !tbaa !9
  %217 = add nsw i32 %216, 2
  store i32 %217, ptr %79, align 4, !tbaa !9
  %218 = load ptr, ptr %30, align 8, !tbaa !5
  %219 = load double, ptr %218, align 8, !tbaa !11
  %220 = load ptr, ptr %34, align 8, !tbaa !5
  %221 = load i32, ptr %78, align 4, !tbaa !9
  %222 = load i32, ptr %78, align 4, !tbaa !9
  %223 = load i32, ptr %51, align 4, !tbaa !9
  %224 = mul nsw i32 %222, %223
  %225 = add nsw i32 %221, %224
  %226 = sext i32 %225 to i64
  %227 = getelementptr inbounds double, ptr %220, i64 %226
  %228 = load double, ptr %227, align 8, !tbaa !11
  %229 = fmul double %219, %228
  store double %229, ptr %70, align 8, !tbaa !11
  %230 = load double, ptr %70, align 8, !tbaa !11
  %231 = load ptr, ptr %29, align 8, !tbaa !5
  %232 = getelementptr inbounds double, ptr %231, i64 1
  store double %230, ptr %232, align 8, !tbaa !11
  %233 = load ptr, ptr %24, align 8, !tbaa !5
  %234 = load i32, ptr %233, align 4, !tbaa !9
  store i32 %234, ptr %62, align 4, !tbaa !9
  br label %235

235:                                              ; preds = %277, %211
  %236 = load i32, ptr %62, align 4, !tbaa !9
  %237 = icmp sge i32 %236, 1
  br i1 %237, label %238, label %280

238:                                              ; preds = %235
  %239 = load ptr, ptr %30, align 8, !tbaa !5
  %240 = load double, ptr %239, align 8, !tbaa !11
  %241 = load ptr, ptr %34, align 8, !tbaa !5
  %242 = load i32, ptr %62, align 4, !tbaa !9
  %243 = load i32, ptr %78, align 4, !tbaa !9
  %244 = load i32, ptr %51, align 4, !tbaa !9
  %245 = mul nsw i32 %243, %244
  %246 = add nsw i32 %242, %245
  %247 = sext i32 %246 to i64
  %248 = getelementptr inbounds double, ptr %241, i64 %247
  %249 = load double, ptr %248, align 8, !tbaa !11
  %250 = fmul double %240, %249
  %251 = load ptr, ptr %29, align 8, !tbaa !5
  %252 = load i32, ptr %62, align 4, !tbaa !9
  %253 = add nsw i32 %252, 1
  %254 = sext i32 %253 to i64
  %255 = getelementptr inbounds double, ptr %251, i64 %254
  store double %250, ptr %255, align 8, !tbaa !11
  %256 = load ptr, ptr %28, align 8, !tbaa !5
  %257 = load i32, ptr %62, align 4, !tbaa !9
  %258 = sext i32 %257 to i64
  %259 = getelementptr inbounds double, ptr %256, i64 %258
  %260 = load double, ptr %259, align 8, !tbaa !11
  %261 = load ptr, ptr %28, align 8, !tbaa !5
  %262 = load i32, ptr %62, align 4, !tbaa !9
  %263 = add nsw i32 %262, 1
  %264 = sext i32 %263 to i64
  %265 = getelementptr inbounds double, ptr %261, i64 %264
  store double %260, ptr %265, align 8, !tbaa !11
  %266 = load ptr, ptr %44, align 8, !tbaa !5
  %267 = load i32, ptr %62, align 4, !tbaa !9
  %268 = sext i32 %267 to i64
  %269 = getelementptr inbounds i32, ptr %266, i64 %268
  %270 = load i32, ptr %269, align 4, !tbaa !9
  %271 = add nsw i32 %270, 1
  %272 = load ptr, ptr %44, align 8, !tbaa !5
  %273 = load i32, ptr %62, align 4, !tbaa !9
  %274 = add nsw i32 %273, 1
  %275 = sext i32 %274 to i64
  %276 = getelementptr inbounds i32, ptr %272, i64 %275
  store i32 %271, ptr %276, align 4, !tbaa !9
  br label %277

277:                                              ; preds = %238
  %278 = load i32, ptr %62, align 4, !tbaa !9
  %279 = add nsw i32 %278, -1
  store i32 %279, ptr %62, align 4, !tbaa !9
  br label %235, !llvm.loop !13

280:                                              ; preds = %235
  %281 = load i32, ptr %64, align 4, !tbaa !9
  store i32 %281, ptr %55, align 4, !tbaa !9
  %282 = load i32, ptr %79, align 4, !tbaa !9
  store i32 %282, ptr %62, align 4, !tbaa !9
  br label %283

283:                                              ; preds = %304, %280
  %284 = load i32, ptr %62, align 4, !tbaa !9
  %285 = load i32, ptr %55, align 4, !tbaa !9
  %286 = icmp sle i32 %284, %285
  br i1 %286, label %287, label %307

287:                                              ; preds = %283
  %288 = load ptr, ptr %31, align 8, !tbaa !5
  %289 = load double, ptr %288, align 8, !tbaa !11
  %290 = load ptr, ptr %34, align 8, !tbaa !5
  %291 = load i32, ptr %62, align 4, !tbaa !9
  %292 = load i32, ptr %79, align 4, !tbaa !9
  %293 = load i32, ptr %51, align 4, !tbaa !9
  %294 = mul nsw i32 %292, %293
  %295 = add nsw i32 %291, %294
  %296 = sext i32 %295 to i64
  %297 = getelementptr inbounds double, ptr %290, i64 %296
  %298 = load double, ptr %297, align 8, !tbaa !11
  %299 = fmul double %289, %298
  %300 = load ptr, ptr %29, align 8, !tbaa !5
  %301 = load i32, ptr %62, align 4, !tbaa !9
  %302 = sext i32 %301 to i64
  %303 = getelementptr inbounds double, ptr %300, i64 %302
  store double %299, ptr %303, align 8, !tbaa !11
  br label %304

304:                                              ; preds = %287
  %305 = load i32, ptr %62, align 4, !tbaa !9
  %306 = add nsw i32 %305, 1
  store i32 %306, ptr %62, align 4, !tbaa !9
  br label %283, !llvm.loop !15

307:                                              ; preds = %283
  %308 = load i32, ptr %78, align 4, !tbaa !9
  store i32 %308, ptr %55, align 4, !tbaa !9
  store i32 2, ptr %62, align 4, !tbaa !9
  br label %309

309:                                              ; preds = %318, %307
  %310 = load i32, ptr %62, align 4, !tbaa !9
  %311 = load i32, ptr %55, align 4, !tbaa !9
  %312 = icmp sle i32 %310, %311
  br i1 %312, label %313, label %321

313:                                              ; preds = %309
  %314 = load ptr, ptr %45, align 8, !tbaa !5
  %315 = load i32, ptr %62, align 4, !tbaa !9
  %316 = sext i32 %315 to i64
  %317 = getelementptr inbounds i32, ptr %314, i64 %316
  store i32 1, ptr %317, align 4, !tbaa !9
  br label %318

318:                                              ; preds = %313
  %319 = load i32, ptr %62, align 4, !tbaa !9
  %320 = add nsw i32 %319, 1
  store i32 %320, ptr %62, align 4, !tbaa !9
  br label %309, !llvm.loop !16

321:                                              ; preds = %309
  %322 = load i32, ptr %65, align 4, !tbaa !9
  store i32 %322, ptr %55, align 4, !tbaa !9
  %323 = load i32, ptr %79, align 4, !tbaa !9
  store i32 %323, ptr %62, align 4, !tbaa !9
  br label %324

324:                                              ; preds = %333, %321
  %325 = load i32, ptr %62, align 4, !tbaa !9
  %326 = load i32, ptr %55, align 4, !tbaa !9
  %327 = icmp sle i32 %325, %326
  br i1 %327, label %328, label %336

328:                                              ; preds = %324
  %329 = load ptr, ptr %45, align 8, !tbaa !5
  %330 = load i32, ptr %62, align 4, !tbaa !9
  %331 = sext i32 %330 to i64
  %332 = getelementptr inbounds i32, ptr %329, i64 %331
  store i32 2, ptr %332, align 4, !tbaa !9
  br label %333

333:                                              ; preds = %328
  %334 = load i32, ptr %62, align 4, !tbaa !9
  %335 = add nsw i32 %334, 1
  store i32 %335, ptr %62, align 4, !tbaa !9
  br label %324, !llvm.loop !17

336:                                              ; preds = %324
  %337 = load i32, ptr %65, align 4, !tbaa !9
  store i32 %337, ptr %55, align 4, !tbaa !9
  %338 = load i32, ptr %79, align 4, !tbaa !9
  store i32 %338, ptr %62, align 4, !tbaa !9
  br label %339

339:                                              ; preds = %351, %336
  %340 = load i32, ptr %62, align 4, !tbaa !9
  %341 = load i32, ptr %55, align 4, !tbaa !9
  %342 = icmp sle i32 %340, %341
  br i1 %342, label %343, label %354

343:                                              ; preds = %339
  %344 = load i32, ptr %78, align 4, !tbaa !9
  %345 = load ptr, ptr %44, align 8, !tbaa !5
  %346 = load i32, ptr %62, align 4, !tbaa !9
  %347 = sext i32 %346 to i64
  %348 = getelementptr inbounds i32, ptr %345, i64 %347
  %349 = load i32, ptr %348, align 4, !tbaa !9
  %350 = add nsw i32 %349, %344
  store i32 %350, ptr %348, align 4, !tbaa !9
  br label %351

351:                                              ; preds = %343
  %352 = load i32, ptr %62, align 4, !tbaa !9
  %353 = add nsw i32 %352, 1
  store i32 %353, ptr %62, align 4, !tbaa !9
  br label %339, !llvm.loop !18

354:                                              ; preds = %339
  %355 = load i32, ptr %65, align 4, !tbaa !9
  store i32 %355, ptr %55, align 4, !tbaa !9
  store i32 2, ptr %62, align 4, !tbaa !9
  br label %356

356:                                              ; preds = %402, %354
  %357 = load i32, ptr %62, align 4, !tbaa !9
  %358 = load i32, ptr %55, align 4, !tbaa !9
  %359 = icmp sle i32 %357, %358
  br i1 %359, label %360, label %405

360:                                              ; preds = %356
  %361 = load ptr, ptr %28, align 8, !tbaa !5
  %362 = load ptr, ptr %44, align 8, !tbaa !5
  %363 = load i32, ptr %62, align 4, !tbaa !9
  %364 = sext i32 %363 to i64
  %365 = getelementptr inbounds i32, ptr %362, i64 %364
  %366 = load i32, ptr %365, align 4, !tbaa !9
  %367 = sext i32 %366 to i64
  %368 = getelementptr inbounds double, ptr %361, i64 %367
  %369 = load double, ptr %368, align 8, !tbaa !11
  %370 = load ptr, ptr %36, align 8, !tbaa !5
  %371 = load i32, ptr %62, align 4, !tbaa !9
  %372 = sext i32 %371 to i64
  %373 = getelementptr inbounds double, ptr %370, i64 %372
  store double %369, ptr %373, align 8, !tbaa !11
  %374 = load ptr, ptr %29, align 8, !tbaa !5
  %375 = load ptr, ptr %44, align 8, !tbaa !5
  %376 = load i32, ptr %62, align 4, !tbaa !9
  %377 = sext i32 %376 to i64
  %378 = getelementptr inbounds i32, ptr %375, i64 %377
  %379 = load i32, ptr %378, align 4, !tbaa !9
  %380 = sext i32 %379 to i64
  %381 = getelementptr inbounds double, ptr %374, i64 %380
  %382 = load double, ptr %381, align 8, !tbaa !11
  %383 = load ptr, ptr %37, align 8, !tbaa !5
  %384 = load i32, ptr %62, align 4, !tbaa !9
  %385 = load i32, ptr %49, align 4, !tbaa !9
  %386 = add nsw i32 %384, %385
  %387 = sext i32 %386 to i64
  %388 = getelementptr inbounds double, ptr %383, i64 %387
  store double %382, ptr %388, align 8, !tbaa !11
  %389 = load ptr, ptr %45, align 8, !tbaa !5
  %390 = load ptr, ptr %44, align 8, !tbaa !5
  %391 = load i32, ptr %62, align 4, !tbaa !9
  %392 = sext i32 %391 to i64
  %393 = getelementptr inbounds i32, ptr %390, i64 %392
  %394 = load i32, ptr %393, align 4, !tbaa !9
  %395 = sext i32 %394 to i64
  %396 = getelementptr inbounds i32, ptr %389, i64 %395
  %397 = load i32, ptr %396, align 4, !tbaa !9
  %398 = load ptr, ptr %43, align 8, !tbaa !5
  %399 = load i32, ptr %62, align 4, !tbaa !9
  %400 = sext i32 %399 to i64
  %401 = getelementptr inbounds i32, ptr %398, i64 %400
  store i32 %397, ptr %401, align 4, !tbaa !9
  br label %402

402:                                              ; preds = %360
  %403 = load i32, ptr %62, align 4, !tbaa !9
  %404 = add nsw i32 %403, 1
  store i32 %404, ptr %62, align 4, !tbaa !9
  br label %356, !llvm.loop !19

405:                                              ; preds = %356
  %406 = load ptr, ptr %24, align 8, !tbaa !5
  %407 = load ptr, ptr %25, align 8, !tbaa !5
  %408 = load ptr, ptr %36, align 8, !tbaa !5
  %409 = getelementptr inbounds double, ptr %408, i64 2
  %410 = load ptr, ptr %42, align 8, !tbaa !5
  %411 = getelementptr inbounds i32, ptr %410, i64 2
  call void @dlamrg_(ptr noundef %406, ptr noundef %407, ptr noundef %409, ptr noundef @c__1, ptr noundef @c__1, ptr noundef %411)
  %412 = load i32, ptr %65, align 4, !tbaa !9
  store i32 %412, ptr %55, align 4, !tbaa !9
  store i32 2, ptr %62, align 4, !tbaa !9
  br label %413

413:                                              ; preds = %453, %405
  %414 = load i32, ptr %62, align 4, !tbaa !9
  %415 = load i32, ptr %55, align 4, !tbaa !9
  %416 = icmp sle i32 %414, %415
  br i1 %416, label %417, label %456

417:                                              ; preds = %413
  %418 = load ptr, ptr %42, align 8, !tbaa !5
  %419 = load i32, ptr %62, align 4, !tbaa !9
  %420 = sext i32 %419 to i64
  %421 = getelementptr inbounds i32, ptr %418, i64 %420
  %422 = load i32, ptr %421, align 4, !tbaa !9
  %423 = add nsw i32 %422, 1
  store i32 %423, ptr %58, align 4, !tbaa !9
  %424 = load ptr, ptr %36, align 8, !tbaa !5
  %425 = load i32, ptr %58, align 4, !tbaa !9
  %426 = sext i32 %425 to i64
  %427 = getelementptr inbounds double, ptr %424, i64 %426
  %428 = load double, ptr %427, align 8, !tbaa !11
  %429 = load ptr, ptr %28, align 8, !tbaa !5
  %430 = load i32, ptr %62, align 4, !tbaa !9
  %431 = sext i32 %430 to i64
  %432 = getelementptr inbounds double, ptr %429, i64 %431
  store double %428, ptr %432, align 8, !tbaa !11
  %433 = load ptr, ptr %37, align 8, !tbaa !5
  %434 = load i32, ptr %58, align 4, !tbaa !9
  %435 = load i32, ptr %49, align 4, !tbaa !9
  %436 = add nsw i32 %434, %435
  %437 = sext i32 %436 to i64
  %438 = getelementptr inbounds double, ptr %433, i64 %437
  %439 = load double, ptr %438, align 8, !tbaa !11
  %440 = load ptr, ptr %29, align 8, !tbaa !5
  %441 = load i32, ptr %62, align 4, !tbaa !9
  %442 = sext i32 %441 to i64
  %443 = getelementptr inbounds double, ptr %440, i64 %442
  store double %439, ptr %443, align 8, !tbaa !11
  %444 = load ptr, ptr %43, align 8, !tbaa !5
  %445 = load i32, ptr %58, align 4, !tbaa !9
  %446 = sext i32 %445 to i64
  %447 = getelementptr inbounds i32, ptr %444, i64 %446
  %448 = load i32, ptr %447, align 4, !tbaa !9
  %449 = load ptr, ptr %45, align 8, !tbaa !5
  %450 = load i32, ptr %62, align 4, !tbaa !9
  %451 = sext i32 %450 to i64
  %452 = getelementptr inbounds i32, ptr %449, i64 %451
  store i32 %448, ptr %452, align 4, !tbaa !9
  br label %453

453:                                              ; preds = %417
  %454 = load i32, ptr %62, align 4, !tbaa !9
  %455 = add nsw i32 %454, 1
  store i32 %455, ptr %62, align 4, !tbaa !9
  br label %413, !llvm.loop !20

456:                                              ; preds = %413
  %457 = call double @dlamch_(ptr noundef @.str.1)
  store double %457, ptr %74, align 8, !tbaa !11
  %458 = load ptr, ptr %30, align 8, !tbaa !5
  %459 = load double, ptr %458, align 8, !tbaa !11
  %460 = fcmp oge double %459, 0.000000e+00
  br i1 %460, label %461, label %464

461:                                              ; preds = %456
  %462 = load ptr, ptr %30, align 8, !tbaa !5
  %463 = load double, ptr %462, align 8, !tbaa !11
  br label %468

464:                                              ; preds = %456
  %465 = load ptr, ptr %30, align 8, !tbaa !5
  %466 = load double, ptr %465, align 8, !tbaa !11
  %467 = fneg double %466
  br label %468

468:                                              ; preds = %464, %461
  %469 = phi double [ %463, %461 ], [ %467, %464 ]
  store double %469, ptr %56, align 8, !tbaa !11
  %470 = load ptr, ptr %31, align 8, !tbaa !5
  %471 = load double, ptr %470, align 8, !tbaa !11
  %472 = fcmp oge double %471, 0.000000e+00
  br i1 %472, label %473, label %476

473:                                              ; preds = %468
  %474 = load ptr, ptr %31, align 8, !tbaa !5
  %475 = load double, ptr %474, align 8, !tbaa !11
  br label %480

476:                                              ; preds = %468
  %477 = load ptr, ptr %31, align 8, !tbaa !5
  %478 = load double, ptr %477, align 8, !tbaa !11
  %479 = fneg double %478
  br label %480

480:                                              ; preds = %476, %473
  %481 = phi double [ %475, %473 ], [ %479, %476 ]
  store double %481, ptr %57, align 8, !tbaa !11
  %482 = load double, ptr %56, align 8, !tbaa !11
  %483 = load double, ptr %57, align 8, !tbaa !11
  %484 = fcmp oge double %482, %483
  br i1 %484, label %485, label %487

485:                                              ; preds = %480
  %486 = load double, ptr %56, align 8, !tbaa !11
  br label %489

487:                                              ; preds = %480
  %488 = load double, ptr %57, align 8, !tbaa !11
  br label %489

489:                                              ; preds = %487, %485
  %490 = phi double [ %486, %485 ], [ %488, %487 ]
  store double %490, ptr %76, align 8, !tbaa !11
  %491 = load ptr, ptr %28, align 8, !tbaa !5
  %492 = load i32, ptr %65, align 4, !tbaa !9
  %493 = sext i32 %492 to i64
  %494 = getelementptr inbounds double, ptr %491, i64 %493
  %495 = load double, ptr %494, align 8, !tbaa !11
  store double %495, ptr %56, align 8, !tbaa !11
  %496 = load double, ptr %56, align 8, !tbaa !11
  %497 = fcmp oge double %496, 0.000000e+00
  br i1 %497, label %498, label %500

498:                                              ; preds = %489
  %499 = load double, ptr %56, align 8, !tbaa !11
  br label %503

500:                                              ; preds = %489
  %501 = load double, ptr %56, align 8, !tbaa !11
  %502 = fneg double %501
  br label %503

503:                                              ; preds = %500, %498
  %504 = phi double [ %499, %498 ], [ %502, %500 ]
  store double %504, ptr %57, align 8, !tbaa !11
  %505 = load double, ptr %74, align 8, !tbaa !11
  %506 = fmul double %505, 8.000000e+00
  %507 = load double, ptr %57, align 8, !tbaa !11
  %508 = load double, ptr %76, align 8, !tbaa !11
  %509 = fcmp oge double %507, %508
  br i1 %509, label %510, label %512

510:                                              ; preds = %503
  %511 = load double, ptr %57, align 8, !tbaa !11
  br label %514

512:                                              ; preds = %503
  %513 = load double, ptr %76, align 8, !tbaa !11
  br label %514

514:                                              ; preds = %512, %510
  %515 = phi double [ %511, %510 ], [ %513, %512 ]
  %516 = fmul double %506, %515
  store double %516, ptr %76, align 8, !tbaa !11
  %517 = load ptr, ptr %27, align 8, !tbaa !5
  store i32 1, ptr %517, align 4, !tbaa !9
  %518 = load i32, ptr %65, align 4, !tbaa !9
  %519 = add nsw i32 %518, 1
  store i32 %519, ptr %69, align 4, !tbaa !9
  %520 = load i32, ptr %65, align 4, !tbaa !9
  store i32 %520, ptr %55, align 4, !tbaa !9
  store i32 2, ptr %63, align 4, !tbaa !9
  br label %521

521:                                              ; preds = %562, %514
  %522 = load i32, ptr %63, align 4, !tbaa !9
  %523 = load i32, ptr %55, align 4, !tbaa !9
  %524 = icmp sle i32 %522, %523
  br i1 %524, label %525, label %565

525:                                              ; preds = %521
  %526 = load ptr, ptr %29, align 8, !tbaa !5
  %527 = load i32, ptr %63, align 4, !tbaa !9
  %528 = sext i32 %527 to i64
  %529 = getelementptr inbounds double, ptr %526, i64 %528
  %530 = load double, ptr %529, align 8, !tbaa !11
  store double %530, ptr %56, align 8, !tbaa !11
  %531 = load double, ptr %56, align 8, !tbaa !11
  %532 = fcmp oge double %531, 0.000000e+00
  br i1 %532, label %533, label %535

533:                                              ; preds = %525
  %534 = load double, ptr %56, align 8, !tbaa !11
  br label %538

535:                                              ; preds = %525
  %536 = load double, ptr %56, align 8, !tbaa !11
  %537 = fneg double %536
  br label %538

538:                                              ; preds = %535, %533
  %539 = phi double [ %534, %533 ], [ %537, %535 ]
  %540 = load double, ptr %76, align 8, !tbaa !11
  %541 = fcmp ole double %539, %540
  br i1 %541, label %542, label %559

542:                                              ; preds = %538
  %543 = load i32, ptr %69, align 4, !tbaa !9
  %544 = add nsw i32 %543, -1
  store i32 %544, ptr %69, align 4, !tbaa !9
  %545 = load i32, ptr %63, align 4, !tbaa !9
  %546 = load ptr, ptr %41, align 8, !tbaa !5
  %547 = load i32, ptr %69, align 4, !tbaa !9
  %548 = sext i32 %547 to i64
  %549 = getelementptr inbounds i32, ptr %546, i64 %548
  store i32 %545, ptr %549, align 4, !tbaa !9
  %550 = load ptr, ptr %45, align 8, !tbaa !5
  %551 = load i32, ptr %63, align 4, !tbaa !9
  %552 = sext i32 %551 to i64
  %553 = getelementptr inbounds i32, ptr %550, i64 %552
  store i32 4, ptr %553, align 4, !tbaa !9
  %554 = load i32, ptr %63, align 4, !tbaa !9
  %555 = load i32, ptr %65, align 4, !tbaa !9
  %556 = icmp eq i32 %554, %555
  br i1 %556, label %557, label %558

557:                                              ; preds = %542
  br label %813

558:                                              ; preds = %542
  br label %561

559:                                              ; preds = %538
  %560 = load i32, ptr %63, align 4, !tbaa !9
  store i32 %560, ptr %68, align 4, !tbaa !9
  br label %566

561:                                              ; preds = %558
  br label %562

562:                                              ; preds = %561
  %563 = load i32, ptr %63, align 4, !tbaa !9
  %564 = add nsw i32 %563, 1
  store i32 %564, ptr %63, align 4, !tbaa !9
  br label %521, !llvm.loop !21

565:                                              ; preds = %521
  br label %566

566:                                              ; preds = %565, %559
  %567 = load i32, ptr %68, align 4, !tbaa !9
  store i32 %567, ptr %63, align 4, !tbaa !9
  br label %568

568:                                              ; preds = %780, %566
  %569 = load i32, ptr %63, align 4, !tbaa !9
  %570 = add nsw i32 %569, 1
  store i32 %570, ptr %63, align 4, !tbaa !9
  %571 = load i32, ptr %63, align 4, !tbaa !9
  %572 = load i32, ptr %65, align 4, !tbaa !9
  %573 = icmp sgt i32 %571, %572
  br i1 %573, label %574, label %575

574:                                              ; preds = %568
  br label %781

575:                                              ; preds = %568
  %576 = load ptr, ptr %29, align 8, !tbaa !5
  %577 = load i32, ptr %63, align 4, !tbaa !9
  %578 = sext i32 %577 to i64
  %579 = getelementptr inbounds double, ptr %576, i64 %578
  %580 = load double, ptr %579, align 8, !tbaa !11
  store double %580, ptr %56, align 8, !tbaa !11
  %581 = load double, ptr %56, align 8, !tbaa !11
  %582 = fcmp oge double %581, 0.000000e+00
  br i1 %582, label %583, label %585

583:                                              ; preds = %575
  %584 = load double, ptr %56, align 8, !tbaa !11
  br label %588

585:                                              ; preds = %575
  %586 = load double, ptr %56, align 8, !tbaa !11
  %587 = fneg double %586
  br label %588

588:                                              ; preds = %585, %583
  %589 = phi double [ %584, %583 ], [ %587, %585 ]
  %590 = load double, ptr %76, align 8, !tbaa !11
  %591 = fcmp ole double %589, %590
  br i1 %591, label %592, label %604

592:                                              ; preds = %588
  %593 = load i32, ptr %69, align 4, !tbaa !9
  %594 = add nsw i32 %593, -1
  store i32 %594, ptr %69, align 4, !tbaa !9
  %595 = load i32, ptr %63, align 4, !tbaa !9
  %596 = load ptr, ptr %41, align 8, !tbaa !5
  %597 = load i32, ptr %69, align 4, !tbaa !9
  %598 = sext i32 %597 to i64
  %599 = getelementptr inbounds i32, ptr %596, i64 %598
  store i32 %595, ptr %599, align 4, !tbaa !9
  %600 = load ptr, ptr %45, align 8, !tbaa !5
  %601 = load i32, ptr %63, align 4, !tbaa !9
  %602 = sext i32 %601 to i64
  %603 = getelementptr inbounds i32, ptr %600, i64 %602
  store i32 4, ptr %603, align 4, !tbaa !9
  br label %780

604:                                              ; preds = %588
  %605 = load ptr, ptr %28, align 8, !tbaa !5
  %606 = load i32, ptr %63, align 4, !tbaa !9
  %607 = sext i32 %606 to i64
  %608 = getelementptr inbounds double, ptr %605, i64 %607
  %609 = load double, ptr %608, align 8, !tbaa !11
  %610 = load ptr, ptr %28, align 8, !tbaa !5
  %611 = load i32, ptr %68, align 4, !tbaa !9
  %612 = sext i32 %611 to i64
  %613 = getelementptr inbounds double, ptr %610, i64 %612
  %614 = load double, ptr %613, align 8, !tbaa !11
  %615 = fsub double %609, %614
  store double %615, ptr %56, align 8, !tbaa !11
  %616 = load double, ptr %56, align 8, !tbaa !11
  %617 = fcmp oge double %616, 0.000000e+00
  br i1 %617, label %618, label %620

618:                                              ; preds = %604
  %619 = load double, ptr %56, align 8, !tbaa !11
  br label %623

620:                                              ; preds = %604
  %621 = load double, ptr %56, align 8, !tbaa !11
  %622 = fneg double %621
  br label %623

623:                                              ; preds = %620, %618
  %624 = phi double [ %619, %618 ], [ %622, %620 ]
  %625 = load double, ptr %76, align 8, !tbaa !11
  %626 = fcmp ole double %624, %625
  br i1 %626, label %627, label %746

627:                                              ; preds = %623
  %628 = load ptr, ptr %29, align 8, !tbaa !5
  %629 = load i32, ptr %68, align 4, !tbaa !9
  %630 = sext i32 %629 to i64
  %631 = getelementptr inbounds double, ptr %628, i64 %630
  %632 = load double, ptr %631, align 8, !tbaa !11
  store double %632, ptr %66, align 8, !tbaa !11
  %633 = load ptr, ptr %29, align 8, !tbaa !5
  %634 = load i32, ptr %63, align 4, !tbaa !9
  %635 = sext i32 %634 to i64
  %636 = getelementptr inbounds double, ptr %633, i64 %635
  %637 = load double, ptr %636, align 8, !tbaa !11
  store double %637, ptr %61, align 8, !tbaa !11
  %638 = call double @dlapy2_(ptr noundef %61, ptr noundef %66)
  store double %638, ptr %75, align 8, !tbaa !11
  %639 = load double, ptr %75, align 8, !tbaa !11
  %640 = load double, ptr %61, align 8, !tbaa !11
  %641 = fdiv double %640, %639
  store double %641, ptr %61, align 8, !tbaa !11
  %642 = load double, ptr %66, align 8, !tbaa !11
  %643 = fneg double %642
  %644 = load double, ptr %75, align 8, !tbaa !11
  %645 = fdiv double %643, %644
  store double %645, ptr %66, align 8, !tbaa !11
  %646 = load double, ptr %75, align 8, !tbaa !11
  %647 = load ptr, ptr %29, align 8, !tbaa !5
  %648 = load i32, ptr %63, align 4, !tbaa !9
  %649 = sext i32 %648 to i64
  %650 = getelementptr inbounds double, ptr %647, i64 %649
  store double %646, ptr %650, align 8, !tbaa !11
  %651 = load ptr, ptr %29, align 8, !tbaa !5
  %652 = load i32, ptr %68, align 4, !tbaa !9
  %653 = sext i32 %652 to i64
  %654 = getelementptr inbounds double, ptr %651, i64 %653
  store double 0.000000e+00, ptr %654, align 8, !tbaa !11
  %655 = load ptr, ptr %44, align 8, !tbaa !5
  %656 = load ptr, ptr %42, align 8, !tbaa !5
  %657 = load i32, ptr %68, align 4, !tbaa !9
  %658 = sext i32 %657 to i64
  %659 = getelementptr inbounds i32, ptr %656, i64 %658
  %660 = load i32, ptr %659, align 4, !tbaa !9
  %661 = add nsw i32 %660, 1
  %662 = sext i32 %661 to i64
  %663 = getelementptr inbounds i32, ptr %655, i64 %662
  %664 = load i32, ptr %663, align 4, !tbaa !9
  store i32 %664, ptr %67, align 4, !tbaa !9
  %665 = load ptr, ptr %44, align 8, !tbaa !5
  %666 = load ptr, ptr %42, align 8, !tbaa !5
  %667 = load i32, ptr %63, align 4, !tbaa !9
  %668 = sext i32 %667 to i64
  %669 = getelementptr inbounds i32, ptr %666, i64 %668
  %670 = load i32, ptr %669, align 4, !tbaa !9
  %671 = add nsw i32 %670, 1
  %672 = sext i32 %671 to i64
  %673 = getelementptr inbounds i32, ptr %665, i64 %672
  %674 = load i32, ptr %673, align 4, !tbaa !9
  store i32 %674, ptr %59, align 4, !tbaa !9
  %675 = load i32, ptr %67, align 4, !tbaa !9
  %676 = load i32, ptr %78, align 4, !tbaa !9
  %677 = icmp sle i32 %675, %676
  br i1 %677, label %678, label %681

678:                                              ; preds = %627
  %679 = load i32, ptr %67, align 4, !tbaa !9
  %680 = add nsw i32 %679, -1
  store i32 %680, ptr %67, align 4, !tbaa !9
  br label %681

681:                                              ; preds = %678, %627
  %682 = load i32, ptr %59, align 4, !tbaa !9
  %683 = load i32, ptr %78, align 4, !tbaa !9
  %684 = icmp sle i32 %682, %683
  br i1 %684, label %685, label %688

685:                                              ; preds = %681
  %686 = load i32, ptr %59, align 4, !tbaa !9
  %687 = add nsw i32 %686, -1
  store i32 %687, ptr %59, align 4, !tbaa !9
  br label %688

688:                                              ; preds = %685, %681
  %689 = load ptr, ptr %32, align 8, !tbaa !5
  %690 = load i32, ptr %67, align 4, !tbaa !9
  %691 = load i32, ptr %47, align 4, !tbaa !9
  %692 = mul nsw i32 %690, %691
  %693 = add nsw i32 %692, 1
  %694 = sext i32 %693 to i64
  %695 = getelementptr inbounds double, ptr %689, i64 %694
  %696 = load ptr, ptr %32, align 8, !tbaa !5
  %697 = load i32, ptr %59, align 4, !tbaa !9
  %698 = load i32, ptr %47, align 4, !tbaa !9
  %699 = mul nsw i32 %697, %698
  %700 = add nsw i32 %699, 1
  %701 = sext i32 %700 to i64
  %702 = getelementptr inbounds double, ptr %696, i64 %701
  call void @drot_(ptr noundef %65, ptr noundef %695, ptr noundef @c__1, ptr noundef %702, ptr noundef @c__1, ptr noundef %61, ptr noundef %66)
  %703 = load ptr, ptr %34, align 8, !tbaa !5
  %704 = load i32, ptr %67, align 4, !tbaa !9
  %705 = load i32, ptr %51, align 4, !tbaa !9
  %706 = add nsw i32 %704, %705
  %707 = sext i32 %706 to i64
  %708 = getelementptr inbounds double, ptr %703, i64 %707
  %709 = load ptr, ptr %35, align 8, !tbaa !5
  %710 = load ptr, ptr %34, align 8, !tbaa !5
  %711 = load i32, ptr %59, align 4, !tbaa !9
  %712 = load i32, ptr %51, align 4, !tbaa !9
  %713 = add nsw i32 %711, %712
  %714 = sext i32 %713 to i64
  %715 = getelementptr inbounds double, ptr %710, i64 %714
  %716 = load ptr, ptr %35, align 8, !tbaa !5
  call void @drot_(ptr noundef %64, ptr noundef %708, ptr noundef %709, ptr noundef %715, ptr noundef %716, ptr noundef %61, ptr noundef %66)
  %717 = load ptr, ptr %45, align 8, !tbaa !5
  %718 = load i32, ptr %63, align 4, !tbaa !9
  %719 = sext i32 %718 to i64
  %720 = getelementptr inbounds i32, ptr %717, i64 %719
  %721 = load i32, ptr %720, align 4, !tbaa !9
  %722 = load ptr, ptr %45, align 8, !tbaa !5
  %723 = load i32, ptr %68, align 4, !tbaa !9
  %724 = sext i32 %723 to i64
  %725 = getelementptr inbounds i32, ptr %722, i64 %724
  %726 = load i32, ptr %725, align 4, !tbaa !9
  %727 = icmp ne i32 %721, %726
  br i1 %727, label %728, label %733

728:                                              ; preds = %688
  %729 = load ptr, ptr %45, align 8, !tbaa !5
  %730 = load i32, ptr %63, align 4, !tbaa !9
  %731 = sext i32 %730 to i64
  %732 = getelementptr inbounds i32, ptr %729, i64 %731
  store i32 3, ptr %732, align 4, !tbaa !9
  br label %733

733:                                              ; preds = %728, %688
  %734 = load ptr, ptr %45, align 8, !tbaa !5
  %735 = load i32, ptr %68, align 4, !tbaa !9
  %736 = sext i32 %735 to i64
  %737 = getelementptr inbounds i32, ptr %734, i64 %736
  store i32 4, ptr %737, align 4, !tbaa !9
  %738 = load i32, ptr %69, align 4, !tbaa !9
  %739 = add nsw i32 %738, -1
  store i32 %739, ptr %69, align 4, !tbaa !9
  %740 = load i32, ptr %68, align 4, !tbaa !9
  %741 = load ptr, ptr %41, align 8, !tbaa !5
  %742 = load i32, ptr %69, align 4, !tbaa !9
  %743 = sext i32 %742 to i64
  %744 = getelementptr inbounds i32, ptr %741, i64 %743
  store i32 %740, ptr %744, align 4, !tbaa !9
  %745 = load i32, ptr %63, align 4, !tbaa !9
  store i32 %745, ptr %68, align 4, !tbaa !9
  br label %779

746:                                              ; preds = %623
  %747 = load ptr, ptr %27, align 8, !tbaa !5
  %748 = load i32, ptr %747, align 4, !tbaa !9
  %749 = add nsw i32 %748, 1
  store i32 %749, ptr %747, align 4, !tbaa !9
  %750 = load ptr, ptr %29, align 8, !tbaa !5
  %751 = load i32, ptr %68, align 4, !tbaa !9
  %752 = sext i32 %751 to i64
  %753 = getelementptr inbounds double, ptr %750, i64 %752
  %754 = load double, ptr %753, align 8, !tbaa !11
  %755 = load ptr, ptr %37, align 8, !tbaa !5
  %756 = load ptr, ptr %27, align 8, !tbaa !5
  %757 = load i32, ptr %756, align 4, !tbaa !9
  %758 = load i32, ptr %49, align 4, !tbaa !9
  %759 = add nsw i32 %757, %758
  %760 = sext i32 %759 to i64
  %761 = getelementptr inbounds double, ptr %755, i64 %760
  store double %754, ptr %761, align 8, !tbaa !11
  %762 = load ptr, ptr %28, align 8, !tbaa !5
  %763 = load i32, ptr %68, align 4, !tbaa !9
  %764 = sext i32 %763 to i64
  %765 = getelementptr inbounds double, ptr %762, i64 %764
  %766 = load double, ptr %765, align 8, !tbaa !11
  %767 = load ptr, ptr %36, align 8, !tbaa !5
  %768 = load ptr, ptr %27, align 8, !tbaa !5
  %769 = load i32, ptr %768, align 4, !tbaa !9
  %770 = sext i32 %769 to i64
  %771 = getelementptr inbounds double, ptr %767, i64 %770
  store double %766, ptr %771, align 8, !tbaa !11
  %772 = load i32, ptr %68, align 4, !tbaa !9
  %773 = load ptr, ptr %41, align 8, !tbaa !5
  %774 = load ptr, ptr %27, align 8, !tbaa !5
  %775 = load i32, ptr %774, align 4, !tbaa !9
  %776 = sext i32 %775 to i64
  %777 = getelementptr inbounds i32, ptr %773, i64 %776
  store i32 %772, ptr %777, align 4, !tbaa !9
  %778 = load i32, ptr %63, align 4, !tbaa !9
  store i32 %778, ptr %68, align 4, !tbaa !9
  br label %779

779:                                              ; preds = %746, %733
  br label %780

780:                                              ; preds = %779, %592
  br label %568

781:                                              ; preds = %574
  %782 = load ptr, ptr %27, align 8, !tbaa !5
  %783 = load i32, ptr %782, align 4, !tbaa !9
  %784 = add nsw i32 %783, 1
  store i32 %784, ptr %782, align 4, !tbaa !9
  %785 = load ptr, ptr %29, align 8, !tbaa !5
  %786 = load i32, ptr %68, align 4, !tbaa !9
  %787 = sext i32 %786 to i64
  %788 = getelementptr inbounds double, ptr %785, i64 %787
  %789 = load double, ptr %788, align 8, !tbaa !11
  %790 = load ptr, ptr %37, align 8, !tbaa !5
  %791 = load ptr, ptr %27, align 8, !tbaa !5
  %792 = load i32, ptr %791, align 4, !tbaa !9
  %793 = load i32, ptr %49, align 4, !tbaa !9
  %794 = add nsw i32 %792, %793
  %795 = sext i32 %794 to i64
  %796 = getelementptr inbounds double, ptr %790, i64 %795
  store double %789, ptr %796, align 8, !tbaa !11
  %797 = load ptr, ptr %28, align 8, !tbaa !5
  %798 = load i32, ptr %68, align 4, !tbaa !9
  %799 = sext i32 %798 to i64
  %800 = getelementptr inbounds double, ptr %797, i64 %799
  %801 = load double, ptr %800, align 8, !tbaa !11
  %802 = load ptr, ptr %36, align 8, !tbaa !5
  %803 = load ptr, ptr %27, align 8, !tbaa !5
  %804 = load i32, ptr %803, align 4, !tbaa !9
  %805 = sext i32 %804 to i64
  %806 = getelementptr inbounds double, ptr %802, i64 %805
  store double %801, ptr %806, align 8, !tbaa !11
  %807 = load i32, ptr %68, align 4, !tbaa !9
  %808 = load ptr, ptr %41, align 8, !tbaa !5
  %809 = load ptr, ptr %27, align 8, !tbaa !5
  %810 = load i32, ptr %809, align 4, !tbaa !9
  %811 = sext i32 %810 to i64
  %812 = getelementptr inbounds i32, ptr %808, i64 %811
  store i32 %807, ptr %812, align 4, !tbaa !9
  br label %813

813:                                              ; preds = %781, %557
  store i32 1, ptr %63, align 4, !tbaa !9
  br label %814

814:                                              ; preds = %822, %813
  %815 = load i32, ptr %63, align 4, !tbaa !9
  %816 = icmp sle i32 %815, 4
  br i1 %816, label %817, label %825

817:                                              ; preds = %814
  %818 = load i32, ptr %63, align 4, !tbaa !9
  %819 = sub nsw i32 %818, 1
  %820 = sext i32 %819 to i64
  %821 = getelementptr inbounds [4 x i32], ptr %60, i64 0, i64 %820
  store i32 0, ptr %821, align 4, !tbaa !9
  br label %822

822:                                              ; preds = %817
  %823 = load i32, ptr %63, align 4, !tbaa !9
  %824 = add nsw i32 %823, 1
  store i32 %824, ptr %63, align 4, !tbaa !9
  br label %814, !llvm.loop !22

825:                                              ; preds = %814
  %826 = load i32, ptr %65, align 4, !tbaa !9
  store i32 %826, ptr %55, align 4, !tbaa !9
  store i32 2, ptr %63, align 4, !tbaa !9
  br label %827

827:                                              ; preds = %843, %825
  %828 = load i32, ptr %63, align 4, !tbaa !9
  %829 = load i32, ptr %55, align 4, !tbaa !9
  %830 = icmp sle i32 %828, %829
  br i1 %830, label %831, label %846

831:                                              ; preds = %827
  %832 = load ptr, ptr %45, align 8, !tbaa !5
  %833 = load i32, ptr %63, align 4, !tbaa !9
  %834 = sext i32 %833 to i64
  %835 = getelementptr inbounds i32, ptr %832, i64 %834
  %836 = load i32, ptr %835, align 4, !tbaa !9
  store i32 %836, ptr %71, align 4, !tbaa !9
  %837 = load i32, ptr %71, align 4, !tbaa !9
  %838 = sub nsw i32 %837, 1
  %839 = sext i32 %838 to i64
  %840 = getelementptr inbounds [4 x i32], ptr %60, i64 0, i64 %839
  %841 = load i32, ptr %840, align 4, !tbaa !9
  %842 = add nsw i32 %841, 1
  store i32 %842, ptr %840, align 4, !tbaa !9
  br label %843

843:                                              ; preds = %831
  %844 = load i32, ptr %63, align 4, !tbaa !9
  %845 = add nsw i32 %844, 1
  store i32 %845, ptr %63, align 4, !tbaa !9
  br label %827, !llvm.loop !23

846:                                              ; preds = %827
  %847 = getelementptr inbounds [4 x i32], ptr %77, i64 0, i64 0
  store i32 2, ptr %847, align 16, !tbaa !9
  %848 = getelementptr inbounds [4 x i32], ptr %60, i64 0, i64 0
  %849 = load i32, ptr %848, align 16, !tbaa !9
  %850 = add nsw i32 %849, 2
  %851 = getelementptr inbounds [4 x i32], ptr %77, i64 0, i64 1
  store i32 %850, ptr %851, align 4, !tbaa !9
  %852 = getelementptr inbounds [4 x i32], ptr %77, i64 0, i64 1
  %853 = load i32, ptr %852, align 4, !tbaa !9
  %854 = getelementptr inbounds [4 x i32], ptr %60, i64 0, i64 1
  %855 = load i32, ptr %854, align 4, !tbaa !9
  %856 = add nsw i32 %853, %855
  %857 = getelementptr inbounds [4 x i32], ptr %77, i64 0, i64 2
  store i32 %856, ptr %857, align 8, !tbaa !9
  %858 = getelementptr inbounds [4 x i32], ptr %77, i64 0, i64 2
  %859 = load i32, ptr %858, align 8, !tbaa !9
  %860 = getelementptr inbounds [4 x i32], ptr %60, i64 0, i64 2
  %861 = load i32, ptr %860, align 8, !tbaa !9
  %862 = add nsw i32 %859, %861
  %863 = getelementptr inbounds [4 x i32], ptr %77, i64 0, i64 3
  store i32 %862, ptr %863, align 4, !tbaa !9
  %864 = load i32, ptr %65, align 4, !tbaa !9
  store i32 %864, ptr %55, align 4, !tbaa !9
  store i32 2, ptr %63, align 4, !tbaa !9
  br label %865

865:                                              ; preds = %895, %846
  %866 = load i32, ptr %63, align 4, !tbaa !9
  %867 = load i32, ptr %55, align 4, !tbaa !9
  %868 = icmp sle i32 %866, %867
  br i1 %868, label %869, label %898

869:                                              ; preds = %865
  %870 = load ptr, ptr %41, align 8, !tbaa !5
  %871 = load i32, ptr %63, align 4, !tbaa !9
  %872 = sext i32 %871 to i64
  %873 = getelementptr inbounds i32, ptr %870, i64 %872
  %874 = load i32, ptr %873, align 4, !tbaa !9
  store i32 %874, ptr %72, align 4, !tbaa !9
  %875 = load ptr, ptr %45, align 8, !tbaa !5
  %876 = load i32, ptr %72, align 4, !tbaa !9
  %877 = sext i32 %876 to i64
  %878 = getelementptr inbounds i32, ptr %875, i64 %877
  %879 = load i32, ptr %878, align 4, !tbaa !9
  store i32 %879, ptr %71, align 4, !tbaa !9
  %880 = load i32, ptr %63, align 4, !tbaa !9
  %881 = load ptr, ptr %43, align 8, !tbaa !5
  %882 = load i32, ptr %71, align 4, !tbaa !9
  %883 = sub nsw i32 %882, 1
  %884 = sext i32 %883 to i64
  %885 = getelementptr inbounds [4 x i32], ptr %77, i64 0, i64 %884
  %886 = load i32, ptr %885, align 4, !tbaa !9
  %887 = sext i32 %886 to i64
  %888 = getelementptr inbounds i32, ptr %881, i64 %887
  store i32 %880, ptr %888, align 4, !tbaa !9
  %889 = load i32, ptr %71, align 4, !tbaa !9
  %890 = sub nsw i32 %889, 1
  %891 = sext i32 %890 to i64
  %892 = getelementptr inbounds [4 x i32], ptr %77, i64 0, i64 %891
  %893 = load i32, ptr %892, align 4, !tbaa !9
  %894 = add nsw i32 %893, 1
  store i32 %894, ptr %892, align 4, !tbaa !9
  br label %895

895:                                              ; preds = %869
  %896 = load i32, ptr %63, align 4, !tbaa !9
  %897 = add nsw i32 %896, 1
  store i32 %897, ptr %63, align 4, !tbaa !9
  br label %865, !llvm.loop !24

898:                                              ; preds = %865
  %899 = load i32, ptr %65, align 4, !tbaa !9
  store i32 %899, ptr %55, align 4, !tbaa !9
  store i32 2, ptr %63, align 4, !tbaa !9
  br label %900

900:                                              ; preds = %972, %898
  %901 = load i32, ptr %63, align 4, !tbaa !9
  %902 = load i32, ptr %55, align 4, !tbaa !9
  %903 = icmp sle i32 %901, %902
  br i1 %903, label %904, label %975

904:                                              ; preds = %900
  %905 = load ptr, ptr %41, align 8, !tbaa !5
  %906 = load i32, ptr %63, align 4, !tbaa !9
  %907 = sext i32 %906 to i64
  %908 = getelementptr inbounds i32, ptr %905, i64 %907
  %909 = load i32, ptr %908, align 4, !tbaa !9
  store i32 %909, ptr %72, align 4, !tbaa !9
  %910 = load ptr, ptr %28, align 8, !tbaa !5
  %911 = load i32, ptr %72, align 4, !tbaa !9
  %912 = sext i32 %911 to i64
  %913 = getelementptr inbounds double, ptr %910, i64 %912
  %914 = load double, ptr %913, align 8, !tbaa !11
  %915 = load ptr, ptr %36, align 8, !tbaa !5
  %916 = load i32, ptr %63, align 4, !tbaa !9
  %917 = sext i32 %916 to i64
  %918 = getelementptr inbounds double, ptr %915, i64 %917
  store double %914, ptr %918, align 8, !tbaa !11
  %919 = load ptr, ptr %44, align 8, !tbaa !5
  %920 = load ptr, ptr %42, align 8, !tbaa !5
  %921 = load ptr, ptr %41, align 8, !tbaa !5
  %922 = load ptr, ptr %43, align 8, !tbaa !5
  %923 = load i32, ptr %63, align 4, !tbaa !9
  %924 = sext i32 %923 to i64
  %925 = getelementptr inbounds i32, ptr %922, i64 %924
  %926 = load i32, ptr %925, align 4, !tbaa !9
  %927 = sext i32 %926 to i64
  %928 = getelementptr inbounds i32, ptr %921, i64 %927
  %929 = load i32, ptr %928, align 4, !tbaa !9
  %930 = sext i32 %929 to i64
  %931 = getelementptr inbounds i32, ptr %920, i64 %930
  %932 = load i32, ptr %931, align 4, !tbaa !9
  %933 = add nsw i32 %932, 1
  %934 = sext i32 %933 to i64
  %935 = getelementptr inbounds i32, ptr %919, i64 %934
  %936 = load i32, ptr %935, align 4, !tbaa !9
  store i32 %936, ptr %59, align 4, !tbaa !9
  %937 = load i32, ptr %59, align 4, !tbaa !9
  %938 = load i32, ptr %78, align 4, !tbaa !9
  %939 = icmp sle i32 %937, %938
  br i1 %939, label %940, label %943

940:                                              ; preds = %904
  %941 = load i32, ptr %59, align 4, !tbaa !9
  %942 = add nsw i32 %941, -1
  store i32 %942, ptr %59, align 4, !tbaa !9
  br label %943

943:                                              ; preds = %940, %904
  %944 = load ptr, ptr %32, align 8, !tbaa !5
  %945 = load i32, ptr %59, align 4, !tbaa !9
  %946 = load i32, ptr %47, align 4, !tbaa !9
  %947 = mul nsw i32 %945, %946
  %948 = add nsw i32 %947, 1
  %949 = sext i32 %948 to i64
  %950 = getelementptr inbounds double, ptr %944, i64 %949
  %951 = load ptr, ptr %37, align 8, !tbaa !5
  %952 = load i32, ptr %63, align 4, !tbaa !9
  %953 = load i32, ptr %49, align 4, !tbaa !9
  %954 = mul nsw i32 %952, %953
  %955 = add nsw i32 %954, 1
  %956 = sext i32 %955 to i64
  %957 = getelementptr inbounds double, ptr %951, i64 %956
  call void @dcopy_(ptr noundef %65, ptr noundef %950, ptr noundef @c__1, ptr noundef %957, ptr noundef @c__1)
  %958 = load ptr, ptr %34, align 8, !tbaa !5
  %959 = load i32, ptr %59, align 4, !tbaa !9
  %960 = load i32, ptr %51, align 4, !tbaa !9
  %961 = add nsw i32 %959, %960
  %962 = sext i32 %961 to i64
  %963 = getelementptr inbounds double, ptr %958, i64 %962
  %964 = load ptr, ptr %35, align 8, !tbaa !5
  %965 = load ptr, ptr %39, align 8, !tbaa !5
  %966 = load i32, ptr %63, align 4, !tbaa !9
  %967 = load i32, ptr %53, align 4, !tbaa !9
  %968 = add nsw i32 %966, %967
  %969 = sext i32 %968 to i64
  %970 = getelementptr inbounds double, ptr %965, i64 %969
  %971 = load ptr, ptr %40, align 8, !tbaa !5
  call void @dcopy_(ptr noundef %64, ptr noundef %963, ptr noundef %964, ptr noundef %970, ptr noundef %971)
  br label %972

972:                                              ; preds = %943
  %973 = load i32, ptr %63, align 4, !tbaa !9
  %974 = add nsw i32 %973, 1
  store i32 %974, ptr %63, align 4, !tbaa !9
  br label %900, !llvm.loop !25

975:                                              ; preds = %900
  %976 = load ptr, ptr %36, align 8, !tbaa !5
  %977 = getelementptr inbounds double, ptr %976, i64 1
  store double 0.000000e+00, ptr %977, align 8, !tbaa !11
  %978 = load double, ptr %76, align 8, !tbaa !11
  %979 = fdiv double %978, 2.000000e+00
  store double %979, ptr %73, align 8, !tbaa !11
  %980 = load ptr, ptr %36, align 8, !tbaa !5
  %981 = getelementptr inbounds double, ptr %980, i64 2
  %982 = load double, ptr %981, align 8, !tbaa !11
  %983 = fcmp oge double %982, 0.000000e+00
  br i1 %983, label %984, label %988

984:                                              ; preds = %975
  %985 = load ptr, ptr %36, align 8, !tbaa !5
  %986 = getelementptr inbounds double, ptr %985, i64 2
  %987 = load double, ptr %986, align 8, !tbaa !11
  br label %993

988:                                              ; preds = %975
  %989 = load ptr, ptr %36, align 8, !tbaa !5
  %990 = getelementptr inbounds double, ptr %989, i64 2
  %991 = load double, ptr %990, align 8, !tbaa !11
  %992 = fneg double %991
  br label %993

993:                                              ; preds = %988, %984
  %994 = phi double [ %987, %984 ], [ %992, %988 ]
  %995 = load double, ptr %73, align 8, !tbaa !11
  %996 = fcmp ole double %994, %995
  br i1 %996, label %997, label %1001

997:                                              ; preds = %993
  %998 = load double, ptr %73, align 8, !tbaa !11
  %999 = load ptr, ptr %36, align 8, !tbaa !5
  %1000 = getelementptr inbounds double, ptr %999, i64 2
  store double %998, ptr %1000, align 8, !tbaa !11
  br label %1001

1001:                                             ; preds = %997, %993
  %1002 = load i32, ptr %64, align 4, !tbaa !9
  %1003 = load i32, ptr %65, align 4, !tbaa !9
  %1004 = icmp sgt i32 %1002, %1003
  br i1 %1004, label %1005, label %1038

1005:                                             ; preds = %1001
  %1006 = load ptr, ptr %29, align 8, !tbaa !5
  %1007 = load i32, ptr %64, align 4, !tbaa !9
  %1008 = sext i32 %1007 to i64
  %1009 = getelementptr inbounds double, ptr %1006, i64 %1008
  %1010 = call double @dlapy2_(ptr noundef %70, ptr noundef %1009)
  %1011 = load ptr, ptr %29, align 8, !tbaa !5
  %1012 = getelementptr inbounds double, ptr %1011, i64 1
  store double %1010, ptr %1012, align 8, !tbaa !11
  %1013 = load ptr, ptr %29, align 8, !tbaa !5
  %1014 = getelementptr inbounds double, ptr %1013, i64 1
  %1015 = load double, ptr %1014, align 8, !tbaa !11
  %1016 = load double, ptr %76, align 8, !tbaa !11
  %1017 = fcmp ole double %1015, %1016
  br i1 %1017, label %1018, label %1022

1018:                                             ; preds = %1005
  store double 1.000000e+00, ptr %61, align 8, !tbaa !11
  store double 0.000000e+00, ptr %66, align 8, !tbaa !11
  %1019 = load double, ptr %76, align 8, !tbaa !11
  %1020 = load ptr, ptr %29, align 8, !tbaa !5
  %1021 = getelementptr inbounds double, ptr %1020, i64 1
  store double %1019, ptr %1021, align 8, !tbaa !11
  br label %1037

1022:                                             ; preds = %1005
  %1023 = load double, ptr %70, align 8, !tbaa !11
  %1024 = load ptr, ptr %29, align 8, !tbaa !5
  %1025 = getelementptr inbounds double, ptr %1024, i64 1
  %1026 = load double, ptr %1025, align 8, !tbaa !11
  %1027 = fdiv double %1023, %1026
  store double %1027, ptr %61, align 8, !tbaa !11
  %1028 = load ptr, ptr %29, align 8, !tbaa !5
  %1029 = load i32, ptr %64, align 4, !tbaa !9
  %1030 = sext i32 %1029 to i64
  %1031 = getelementptr inbounds double, ptr %1028, i64 %1030
  %1032 = load double, ptr %1031, align 8, !tbaa !11
  %1033 = load ptr, ptr %29, align 8, !tbaa !5
  %1034 = getelementptr inbounds double, ptr %1033, i64 1
  %1035 = load double, ptr %1034, align 8, !tbaa !11
  %1036 = fdiv double %1032, %1035
  store double %1036, ptr %66, align 8, !tbaa !11
  br label %1037

1037:                                             ; preds = %1022, %1018
  br label %1059

1038:                                             ; preds = %1001
  %1039 = load double, ptr %70, align 8, !tbaa !11
  %1040 = fcmp oge double %1039, 0.000000e+00
  br i1 %1040, label %1041, label %1043

1041:                                             ; preds = %1038
  %1042 = load double, ptr %70, align 8, !tbaa !11
  br label %1046

1043:                                             ; preds = %1038
  %1044 = load double, ptr %70, align 8, !tbaa !11
  %1045 = fneg double %1044
  br label %1046

1046:                                             ; preds = %1043, %1041
  %1047 = phi double [ %1042, %1041 ], [ %1045, %1043 ]
  %1048 = load double, ptr %76, align 8, !tbaa !11
  %1049 = fcmp ole double %1047, %1048
  br i1 %1049, label %1050, label %1054

1050:                                             ; preds = %1046
  %1051 = load double, ptr %76, align 8, !tbaa !11
  %1052 = load ptr, ptr %29, align 8, !tbaa !5
  %1053 = getelementptr inbounds double, ptr %1052, i64 1
  store double %1051, ptr %1053, align 8, !tbaa !11
  br label %1058

1054:                                             ; preds = %1046
  %1055 = load double, ptr %70, align 8, !tbaa !11
  %1056 = load ptr, ptr %29, align 8, !tbaa !5
  %1057 = getelementptr inbounds double, ptr %1056, i64 1
  store double %1055, ptr %1057, align 8, !tbaa !11
  br label %1058

1058:                                             ; preds = %1054, %1050
  br label %1059

1059:                                             ; preds = %1058, %1037
  %1060 = load ptr, ptr %27, align 8, !tbaa !5
  %1061 = load i32, ptr %1060, align 4, !tbaa !9
  %1062 = sub nsw i32 %1061, 1
  store i32 %1062, ptr %55, align 4, !tbaa !9
  %1063 = load ptr, ptr %37, align 8, !tbaa !5
  %1064 = load i32, ptr %49, align 4, !tbaa !9
  %1065 = add nsw i32 %1064, 2
  %1066 = sext i32 %1065 to i64
  %1067 = getelementptr inbounds double, ptr %1063, i64 %1066
  %1068 = load ptr, ptr %29, align 8, !tbaa !5
  %1069 = getelementptr inbounds double, ptr %1068, i64 2
  call void @dcopy_(ptr noundef %55, ptr noundef %1067, ptr noundef @c__1, ptr noundef %1069, ptr noundef @c__1)
  %1070 = load ptr, ptr %37, align 8, !tbaa !5
  %1071 = load i32, ptr %50, align 4, !tbaa !9
  %1072 = sext i32 %1071 to i64
  %1073 = getelementptr inbounds double, ptr %1070, i64 %1072
  %1074 = load ptr, ptr %38, align 8, !tbaa !5
  call void @dlaset_(ptr noundef @.str.2, ptr noundef %65, ptr noundef @c__1, ptr noundef @c_b30, ptr noundef @c_b30, ptr noundef %1073, ptr noundef %1074)
  %1075 = load ptr, ptr %37, align 8, !tbaa !5
  %1076 = load i32, ptr %78, align 4, !tbaa !9
  %1077 = load i32, ptr %49, align 4, !tbaa !9
  %1078 = add nsw i32 %1076, %1077
  %1079 = sext i32 %1078 to i64
  %1080 = getelementptr inbounds double, ptr %1075, i64 %1079
  store double 1.000000e+00, ptr %1080, align 8, !tbaa !11
  %1081 = load i32, ptr %64, align 4, !tbaa !9
  %1082 = load i32, ptr %65, align 4, !tbaa !9
  %1083 = icmp sgt i32 %1081, %1082
  br i1 %1083, label %1084, label %1181

1084:                                             ; preds = %1059
  %1085 = load i32, ptr %78, align 4, !tbaa !9
  store i32 %1085, ptr %55, align 4, !tbaa !9
  store i32 1, ptr %62, align 4, !tbaa !9
  br label %1086

1086:                                             ; preds = %1129, %1084
  %1087 = load i32, ptr %62, align 4, !tbaa !9
  %1088 = load i32, ptr %55, align 4, !tbaa !9
  %1089 = icmp sle i32 %1087, %1088
  br i1 %1089, label %1090, label %1132

1090:                                             ; preds = %1086
  %1091 = load double, ptr %66, align 8, !tbaa !11
  %1092 = fneg double %1091
  %1093 = load ptr, ptr %34, align 8, !tbaa !5
  %1094 = load i32, ptr %78, align 4, !tbaa !9
  %1095 = load i32, ptr %62, align 4, !tbaa !9
  %1096 = load i32, ptr %51, align 4, !tbaa !9
  %1097 = mul nsw i32 %1095, %1096
  %1098 = add nsw i32 %1094, %1097
  %1099 = sext i32 %1098 to i64
  %1100 = getelementptr inbounds double, ptr %1093, i64 %1099
  %1101 = load double, ptr %1100, align 8, !tbaa !11
  %1102 = fmul double %1092, %1101
  %1103 = load ptr, ptr %34, align 8, !tbaa !5
  %1104 = load i32, ptr %64, align 4, !tbaa !9
  %1105 = load i32, ptr %62, align 4, !tbaa !9
  %1106 = load i32, ptr %51, align 4, !tbaa !9
  %1107 = mul nsw i32 %1105, %1106
  %1108 = add nsw i32 %1104, %1107
  %1109 = sext i32 %1108 to i64
  %1110 = getelementptr inbounds double, ptr %1103, i64 %1109
  store double %1102, ptr %1110, align 8, !tbaa !11
  %1111 = load double, ptr %61, align 8, !tbaa !11
  %1112 = load ptr, ptr %34, align 8, !tbaa !5
  %1113 = load i32, ptr %78, align 4, !tbaa !9
  %1114 = load i32, ptr %62, align 4, !tbaa !9
  %1115 = load i32, ptr %51, align 4, !tbaa !9
  %1116 = mul nsw i32 %1114, %1115
  %1117 = add nsw i32 %1113, %1116
  %1118 = sext i32 %1117 to i64
  %1119 = getelementptr inbounds double, ptr %1112, i64 %1118
  %1120 = load double, ptr %1119, align 8, !tbaa !11
  %1121 = fmul double %1111, %1120
  %1122 = load ptr, ptr %39, align 8, !tbaa !5
  %1123 = load i32, ptr %62, align 4, !tbaa !9
  %1124 = load i32, ptr %53, align 4, !tbaa !9
  %1125 = mul nsw i32 %1123, %1124
  %1126 = add nsw i32 %1125, 1
  %1127 = sext i32 %1126 to i64
  %1128 = getelementptr inbounds double, ptr %1122, i64 %1127
  store double %1121, ptr %1128, align 8, !tbaa !11
  br label %1129

1129:                                             ; preds = %1090
  %1130 = load i32, ptr %62, align 4, !tbaa !9
  %1131 = add nsw i32 %1130, 1
  store i32 %1131, ptr %62, align 4, !tbaa !9
  br label %1086, !llvm.loop !26

1132:                                             ; preds = %1086
  %1133 = load i32, ptr %64, align 4, !tbaa !9
  store i32 %1133, ptr %55, align 4, !tbaa !9
  %1134 = load i32, ptr %79, align 4, !tbaa !9
  store i32 %1134, ptr %62, align 4, !tbaa !9
  br label %1135

1135:                                             ; preds = %1177, %1132
  %1136 = load i32, ptr %62, align 4, !tbaa !9
  %1137 = load i32, ptr %55, align 4, !tbaa !9
  %1138 = icmp sle i32 %1136, %1137
  br i1 %1138, label %1139, label %1180

1139:                                             ; preds = %1135
  %1140 = load double, ptr %66, align 8, !tbaa !11
  %1141 = load ptr, ptr %34, align 8, !tbaa !5
  %1142 = load i32, ptr %64, align 4, !tbaa !9
  %1143 = load i32, ptr %62, align 4, !tbaa !9
  %1144 = load i32, ptr %51, align 4, !tbaa !9
  %1145 = mul nsw i32 %1143, %1144
  %1146 = add nsw i32 %1142, %1145
  %1147 = sext i32 %1146 to i64
  %1148 = getelementptr inbounds double, ptr %1141, i64 %1147
  %1149 = load double, ptr %1148, align 8, !tbaa !11
  %1150 = fmul double %1140, %1149
  %1151 = load ptr, ptr %39, align 8, !tbaa !5
  %1152 = load i32, ptr %62, align 4, !tbaa !9
  %1153 = load i32, ptr %53, align 4, !tbaa !9
  %1154 = mul nsw i32 %1152, %1153
  %1155 = add nsw i32 %1154, 1
  %1156 = sext i32 %1155 to i64
  %1157 = getelementptr inbounds double, ptr %1151, i64 %1156
  store double %1150, ptr %1157, align 8, !tbaa !11
  %1158 = load double, ptr %61, align 8, !tbaa !11
  %1159 = load ptr, ptr %34, align 8, !tbaa !5
  %1160 = load i32, ptr %64, align 4, !tbaa !9
  %1161 = load i32, ptr %62, align 4, !tbaa !9
  %1162 = load i32, ptr %51, align 4, !tbaa !9
  %1163 = mul nsw i32 %1161, %1162
  %1164 = add nsw i32 %1160, %1163
  %1165 = sext i32 %1164 to i64
  %1166 = getelementptr inbounds double, ptr %1159, i64 %1165
  %1167 = load double, ptr %1166, align 8, !tbaa !11
  %1168 = fmul double %1158, %1167
  %1169 = load ptr, ptr %34, align 8, !tbaa !5
  %1170 = load i32, ptr %64, align 4, !tbaa !9
  %1171 = load i32, ptr %62, align 4, !tbaa !9
  %1172 = load i32, ptr %51, align 4, !tbaa !9
  %1173 = mul nsw i32 %1171, %1172
  %1174 = add nsw i32 %1170, %1173
  %1175 = sext i32 %1174 to i64
  %1176 = getelementptr inbounds double, ptr %1169, i64 %1175
  store double %1168, ptr %1176, align 8, !tbaa !11
  br label %1177

1177:                                             ; preds = %1139
  %1178 = load i32, ptr %62, align 4, !tbaa !9
  %1179 = add nsw i32 %1178, 1
  store i32 %1179, ptr %62, align 4, !tbaa !9
  br label %1135, !llvm.loop !27

1180:                                             ; preds = %1135
  br label %1195

1181:                                             ; preds = %1059
  %1182 = load ptr, ptr %34, align 8, !tbaa !5
  %1183 = load i32, ptr %78, align 4, !tbaa !9
  %1184 = load i32, ptr %51, align 4, !tbaa !9
  %1185 = add nsw i32 %1183, %1184
  %1186 = sext i32 %1185 to i64
  %1187 = getelementptr inbounds double, ptr %1182, i64 %1186
  %1188 = load ptr, ptr %35, align 8, !tbaa !5
  %1189 = load ptr, ptr %39, align 8, !tbaa !5
  %1190 = load i32, ptr %53, align 4, !tbaa !9
  %1191 = add nsw i32 %1190, 1
  %1192 = sext i32 %1191 to i64
  %1193 = getelementptr inbounds double, ptr %1189, i64 %1192
  %1194 = load ptr, ptr %40, align 8, !tbaa !5
  call void @dcopy_(ptr noundef %64, ptr noundef %1187, ptr noundef %1188, ptr noundef %1193, ptr noundef %1194)
  br label %1195

1195:                                             ; preds = %1181, %1180
  %1196 = load i32, ptr %64, align 4, !tbaa !9
  %1197 = load i32, ptr %65, align 4, !tbaa !9
  %1198 = icmp sgt i32 %1196, %1197
  br i1 %1198, label %1199, label %1214

1199:                                             ; preds = %1195
  %1200 = load ptr, ptr %34, align 8, !tbaa !5
  %1201 = load i32, ptr %64, align 4, !tbaa !9
  %1202 = load i32, ptr %51, align 4, !tbaa !9
  %1203 = add nsw i32 %1201, %1202
  %1204 = sext i32 %1203 to i64
  %1205 = getelementptr inbounds double, ptr %1200, i64 %1204
  %1206 = load ptr, ptr %35, align 8, !tbaa !5
  %1207 = load ptr, ptr %39, align 8, !tbaa !5
  %1208 = load i32, ptr %64, align 4, !tbaa !9
  %1209 = load i32, ptr %53, align 4, !tbaa !9
  %1210 = add nsw i32 %1208, %1209
  %1211 = sext i32 %1210 to i64
  %1212 = getelementptr inbounds double, ptr %1207, i64 %1211
  %1213 = load ptr, ptr %40, align 8, !tbaa !5
  call void @dcopy_(ptr noundef %64, ptr noundef %1205, ptr noundef %1206, ptr noundef %1212, ptr noundef %1213)
  br label %1214

1214:                                             ; preds = %1199, %1195
  %1215 = load i32, ptr %65, align 4, !tbaa !9
  %1216 = load ptr, ptr %27, align 8, !tbaa !5
  %1217 = load i32, ptr %1216, align 4, !tbaa !9
  %1218 = icmp sgt i32 %1215, %1217
  br i1 %1218, label %1219, label %1282

1219:                                             ; preds = %1214
  %1220 = load i32, ptr %65, align 4, !tbaa !9
  %1221 = load ptr, ptr %27, align 8, !tbaa !5
  %1222 = load i32, ptr %1221, align 4, !tbaa !9
  %1223 = sub nsw i32 %1220, %1222
  store i32 %1223, ptr %55, align 4, !tbaa !9
  %1224 = load ptr, ptr %36, align 8, !tbaa !5
  %1225 = load ptr, ptr %27, align 8, !tbaa !5
  %1226 = load i32, ptr %1225, align 4, !tbaa !9
  %1227 = add nsw i32 %1226, 1
  %1228 = sext i32 %1227 to i64
  %1229 = getelementptr inbounds double, ptr %1224, i64 %1228
  %1230 = load ptr, ptr %28, align 8, !tbaa !5
  %1231 = load ptr, ptr %27, align 8, !tbaa !5
  %1232 = load i32, ptr %1231, align 4, !tbaa !9
  %1233 = add nsw i32 %1232, 1
  %1234 = sext i32 %1233 to i64
  %1235 = getelementptr inbounds double, ptr %1230, i64 %1234
  call void @dcopy_(ptr noundef %55, ptr noundef %1229, ptr noundef @c__1, ptr noundef %1235, ptr noundef @c__1)
  %1236 = load i32, ptr %65, align 4, !tbaa !9
  %1237 = load ptr, ptr %27, align 8, !tbaa !5
  %1238 = load i32, ptr %1237, align 4, !tbaa !9
  %1239 = sub nsw i32 %1236, %1238
  store i32 %1239, ptr %55, align 4, !tbaa !9
  %1240 = load ptr, ptr %37, align 8, !tbaa !5
  %1241 = load ptr, ptr %27, align 8, !tbaa !5
  %1242 = load i32, ptr %1241, align 4, !tbaa !9
  %1243 = add nsw i32 %1242, 1
  %1244 = load i32, ptr %49, align 4, !tbaa !9
  %1245 = mul nsw i32 %1243, %1244
  %1246 = add nsw i32 %1245, 1
  %1247 = sext i32 %1246 to i64
  %1248 = getelementptr inbounds double, ptr %1240, i64 %1247
  %1249 = load ptr, ptr %38, align 8, !tbaa !5
  %1250 = load ptr, ptr %32, align 8, !tbaa !5
  %1251 = load ptr, ptr %27, align 8, !tbaa !5
  %1252 = load i32, ptr %1251, align 4, !tbaa !9
  %1253 = add nsw i32 %1252, 1
  %1254 = load i32, ptr %47, align 4, !tbaa !9
  %1255 = mul nsw i32 %1253, %1254
  %1256 = add nsw i32 %1255, 1
  %1257 = sext i32 %1256 to i64
  %1258 = getelementptr inbounds double, ptr %1250, i64 %1257
  %1259 = load ptr, ptr %33, align 8, !tbaa !5
  call void @dlacpy_(ptr noundef @.str.2, ptr noundef %65, ptr noundef %55, ptr noundef %1248, ptr noundef %1249, ptr noundef %1258, ptr noundef %1259)
  %1260 = load i32, ptr %65, align 4, !tbaa !9
  %1261 = load ptr, ptr %27, align 8, !tbaa !5
  %1262 = load i32, ptr %1261, align 4, !tbaa !9
  %1263 = sub nsw i32 %1260, %1262
  store i32 %1263, ptr %55, align 4, !tbaa !9
  %1264 = load ptr, ptr %39, align 8, !tbaa !5
  %1265 = load ptr, ptr %27, align 8, !tbaa !5
  %1266 = load i32, ptr %1265, align 4, !tbaa !9
  %1267 = add nsw i32 %1266, 1
  %1268 = load i32, ptr %53, align 4, !tbaa !9
  %1269 = add nsw i32 %1267, %1268
  %1270 = sext i32 %1269 to i64
  %1271 = getelementptr inbounds double, ptr %1264, i64 %1270
  %1272 = load ptr, ptr %40, align 8, !tbaa !5
  %1273 = load ptr, ptr %34, align 8, !tbaa !5
  %1274 = load ptr, ptr %27, align 8, !tbaa !5
  %1275 = load i32, ptr %1274, align 4, !tbaa !9
  %1276 = add nsw i32 %1275, 1
  %1277 = load i32, ptr %51, align 4, !tbaa !9
  %1278 = add nsw i32 %1276, %1277
  %1279 = sext i32 %1278 to i64
  %1280 = getelementptr inbounds double, ptr %1273, i64 %1279
  %1281 = load ptr, ptr %35, align 8, !tbaa !5
  call void @dlacpy_(ptr noundef @.str.2, ptr noundef %55, ptr noundef %64, ptr noundef %1271, ptr noundef %1272, ptr noundef %1280, ptr noundef %1281)
  br label %1282

1282:                                             ; preds = %1219, %1214
  store i32 1, ptr %63, align 4, !tbaa !9
  br label %1283

1283:                                             ; preds = %1296, %1282
  %1284 = load i32, ptr %63, align 4, !tbaa !9
  %1285 = icmp sle i32 %1284, 4
  br i1 %1285, label %1286, label %1299

1286:                                             ; preds = %1283
  %1287 = load i32, ptr %63, align 4, !tbaa !9
  %1288 = sub nsw i32 %1287, 1
  %1289 = sext i32 %1288 to i64
  %1290 = getelementptr inbounds [4 x i32], ptr %60, i64 0, i64 %1289
  %1291 = load i32, ptr %1290, align 4, !tbaa !9
  %1292 = load ptr, ptr %45, align 8, !tbaa !5
  %1293 = load i32, ptr %63, align 4, !tbaa !9
  %1294 = sext i32 %1293 to i64
  %1295 = getelementptr inbounds i32, ptr %1292, i64 %1294
  store i32 %1291, ptr %1295, align 4, !tbaa !9
  br label %1296

1296:                                             ; preds = %1286
  %1297 = load i32, ptr %63, align 4, !tbaa !9
  %1298 = add nsw i32 %1297, 1
  store i32 %1298, ptr %63, align 4, !tbaa !9
  br label %1283, !llvm.loop !28

1299:                                             ; preds = %1283
  store i32 1, ptr %80, align 4
  br label %1300

1300:                                             ; preds = %1299, %206
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr %77) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr %60) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #3
  ret void
}

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

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

declare void @dlamrg_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

declare double @dlamch_(ptr noundef) #2

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

declare void @drot_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

declare void @dcopy_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

declare void @dlaset_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

declare void @dlacpy_(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 = { 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 = !{!"int", !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 [7 x i8], align 1
@c__1 = external hidden global i32, align 4
@.str.1 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@c_b30 = external hidden global double, align 8

; Function Attrs: nounwind uwtable
define dso_local void @dlasd2_(ptr noundef %0, ptr noundef %1, ptr nocapture noundef readonly %2, ptr nocapture noundef %3, ptr noundef %4, ptr noundef %5, ptr nocapture noundef readonly %6, ptr nocapture noundef readonly %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 nocapture noundef %17, ptr noundef %18, ptr nocapture noundef %19, ptr nocapture noundef %20, ptr nocapture noundef %21, ptr nocapture noundef writeonly %22) local_unnamed_addr #0 {
  %24 = alloca i32, align 4
  %25 = alloca [4 x i32], align 16
  %26 = alloca double, align 8
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca double, align 8
  %30 = alloca double, align 8
  %31 = alloca [4 x i32], align 16
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %24) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %25) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %27) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %28) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %31) #6
  %32 = getelementptr inbounds i8, ptr %4, i64 -8
  %33 = getelementptr inbounds i8, ptr %5, i64 -8
  %34 = load i32, ptr %9, align 4, !tbaa !5
  %narrow = xor i32 %34, -1
  %35 = sext i32 %narrow to i64
  %36 = getelementptr inbounds double, ptr %8, i64 %35
  %37 = load i32, ptr %11, align 4, !tbaa !5
  %narrow466 = xor i32 %37, -1
  %38 = sext i32 %narrow466 to i64
  %39 = getelementptr inbounds double, ptr %10, i64 %38
  %40 = getelementptr inbounds i8, ptr %12, i64 -8
  %41 = load i32, ptr %14, align 4, !tbaa !5
  %narrow485 = xor i32 %41, -1
  %42 = sext i32 %narrow485 to i64
  %43 = getelementptr inbounds double, ptr %13, i64 %42
  %44 = load i32, ptr %16, align 4, !tbaa !5
  %narrow486 = xor i32 %44, -1
  %45 = sext i32 %narrow486 to i64
  %46 = getelementptr inbounds double, ptr %15, i64 %45
  %47 = getelementptr inbounds i8, ptr %17, i64 -4
  %48 = getelementptr inbounds i8, ptr %18, i64 -4
  %49 = getelementptr inbounds i8, ptr %19, i64 -4
  %50 = getelementptr inbounds i8, ptr %20, i64 -4
  %51 = getelementptr inbounds i8, ptr %21, i64 -4
  store i32 0, ptr %22, align 4, !tbaa !5
  %52 = load i32, ptr %0, align 4, !tbaa !5
  %53 = icmp slt i32 %52, 1
  br i1 %53, label %.sink.split, label %54

54:                                               ; preds = %23
  %55 = load i32, ptr %1, align 4, !tbaa !5
  %56 = icmp slt i32 %55, 1
  br i1 %56, label %.sink.split, label %57

57:                                               ; preds = %54
  %58 = load i32, ptr %2, align 4, !tbaa !5
  %switch = icmp ult i32 %58, 2
  br i1 %switch, label %59, label %.sink.split

.sink.split:                                      ; preds = %57, %54, %23
  %.sink = phi i32 [ -1, %23 ], [ -2, %54 ], [ -3, %57 ]
  %.pr.neg.ph = phi i32 [ 1, %23 ], [ 2, %54 ], [ 3, %57 ]
  store i32 %.sink, ptr %22, align 4, !tbaa !5
  br label %59

59:                                               ; preds = %.sink.split, %57
  %.not470 = phi i1 [ true, %57 ], [ false, %.sink.split ]
  %.pr.neg = phi i32 [ 0, %57 ], [ %.pr.neg.ph, %.sink.split ]
  %60 = load i32, ptr %0, align 4, !tbaa !5
  %61 = load i32, ptr %1, align 4, !tbaa !5
  %62 = add i32 %61, %60
  %63 = add nsw i32 %62, 1
  store i32 %63, ptr %28, align 4, !tbaa !5
  %64 = load i32, ptr %2, align 4, !tbaa !5
  %65 = add nsw i32 %63, %64
  store i32 %65, ptr %27, align 4, !tbaa !5
  %66 = load i32, ptr %9, align 4, !tbaa !5
  %.not468 = icmp sgt i32 %66, %62
  br i1 %.not468, label %67, label %.thread.sink.split

67:                                               ; preds = %59
  %68 = load i32, ptr %11, align 4, !tbaa !5
  %69 = icmp slt i32 %68, %65
  br i1 %69, label %.thread.sink.split, label %70

70:                                               ; preds = %67
  %71 = load i32, ptr %14, align 4, !tbaa !5
  %.not469 = icmp sgt i32 %71, %62
  br i1 %.not469, label %72, label %.thread.sink.split

72:                                               ; preds = %70
  %73 = load i32, ptr %16, align 4, !tbaa !5
  %74 = icmp slt i32 %73, %65
  br i1 %74, label %.thread.sink.split, label %75

75:                                               ; preds = %72
  br i1 %.not470, label %77, label %.thread

.thread.sink.split:                               ; preds = %72, %70, %67, %59
  %.sink683 = phi i32 [ -10, %59 ], [ -12, %67 ], [ -15, %70 ], [ -17, %72 ]
  %.neg.ph = phi i32 [ 10, %59 ], [ 12, %67 ], [ 15, %70 ], [ 17, %72 ]
  store i32 %.sink683, ptr %22, align 4, !tbaa !5
  br label %.thread

.thread:                                          ; preds = %.thread.sink.split, %75
  %.neg = phi i32 [ %.pr.neg, %75 ], [ %.neg.ph, %.thread.sink.split ]
  store i32 %.neg, ptr %24, align 4, !tbaa !5
  %76 = call i32 @xerbla_(ptr noundef nonnull @.str, ptr noundef nonnull %24, i32 noundef 6) #6
  br label %.loopexit

77:                                               ; preds = %75
  %78 = add nsw i32 %60, 1
  %79 = add i32 %60, 2
  %80 = load double, ptr %6, align 8, !tbaa !9
  %81 = mul nsw i32 %78, %37
  %82 = add nsw i32 %81, %78
  %83 = sext i32 %82 to i64
  %84 = getelementptr inbounds double, ptr %39, i64 %83
  %85 = load double, ptr %84, align 8, !tbaa !9
  %86 = fmul double %80, %85
  store double %86, ptr %30, align 8, !tbaa !9
  store double %86, ptr %5, align 8, !tbaa !9
  %87 = icmp sgt i32 %60, 0
  br i1 %87, label %.lr.ph.preheader, label %._crit_edge

.lr.ph.preheader:                                 ; preds = %77
  %88 = zext nneg i32 %60 to i64
  %89 = sext i32 %81 to i64
  %invariant.gep = getelementptr double, ptr %39, i64 %89
  %min.iters.check = icmp ult i32 %60, 26
  br i1 %min.iters.check, label %.lr.ph.preheader870, label %vector.memcheck

vector.memcheck:                                  ; preds = %.lr.ph.preheader
  %scevgep = getelementptr i8, ptr %5, i64 8
  %90 = shl nuw nsw i64 %88, 3
  %91 = add nuw nsw i64 %90, 8
  %scevgep691 = getelementptr i8, ptr %5, i64 %91
  %scevgep692 = getelementptr i8, ptr %4, i64 %91
  %scevgep693 = getelementptr i8, ptr %6, i64 8
  %92 = add nsw i64 %89, %38
  %93 = shl nsw i64 %92, 3
  %94 = getelementptr i8, ptr %10, i64 %93
  %scevgep694 = getelementptr i8, ptr %94, i64 8
  %95 = add nsw i64 %89, %38
  %96 = add nsw i64 %95, %88
  %97 = shl nsw i64 %96, 3
  %98 = getelementptr i8, ptr %10, i64 %97
  %scevgep695 = getelementptr i8, ptr %98, i64 8
  %bound0 = icmp ult ptr %scevgep, %scevgep692
  %bound1 = icmp ugt ptr %scevgep691, %4
  %found.conflict = and i1 %bound0, %bound1
  %bound0696 = icmp ult ptr %5, %6
  %bound1697 = icmp ugt ptr %scevgep691, %6
  %found.conflict698 = and i1 %bound0696, %bound1697
  %conflict.rdx = or i1 %found.conflict, %found.conflict698
  %bound0699 = icmp ugt ptr %98, %5
  %bound1700 = icmp ult ptr %scevgep694, %scevgep691
  %found.conflict701 = and i1 %bound0699, %bound1700
  %conflict.rdx702 = or i1 %conflict.rdx, %found.conflict701
  %bound0703 = icmp ugt ptr %scevgep693, %4
  %bound1704 = icmp ugt ptr %scevgep692, %6
  %found.conflict705 = and i1 %bound0703, %bound1704
  %conflict.rdx706 = or i1 %conflict.rdx702, %found.conflict705
  %bound0707 = icmp ugt ptr %scevgep695, %4
  %bound1708 = icmp ult ptr %scevgep694, %scevgep692
  %found.conflict709 = and i1 %bound0707, %bound1708
  %conflict.rdx710 = or i1 %conflict.rdx706, %found.conflict709
  br i1 %conflict.rdx710, label %.lr.ph.preheader870, label %vector.ph

vector.ph:                                        ; preds = %vector.memcheck
  %n.vec = and i64 %88, 2147483646
  %ind.end = and i64 %88, 1
  %99 = load double, ptr %6, align 8, !tbaa !9, !alias.scope !11
  %broadcast.splatinsert = insertelement <2 x double> poison, double %99, i64 0
  %invariant.gep885 = getelementptr i8, ptr %invariant.gep, i64 -8
  %invariant.gep887 = getelementptr i8, ptr %5, i64 -8
  %100 = shufflevector <2 x double> %broadcast.splatinsert, <2 x double> poison, <2 x i32> zeroinitializer
  %invariant.gep889 = getelementptr i8, ptr %32, i64 -8
  %invariant.gep891 = getelementptr i8, ptr %4, i64 -8
  %invariant.gep893 = getelementptr i8, ptr %50, i64 -4
  %invariant.gep895 = getelementptr i8, ptr %20, i64 -4
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %offset.idx = sub i64 %88, %index
  %gep886 = getelementptr double, ptr %invariant.gep885, i64 %offset.idx
  %wide.load = load <2 x double>, ptr %gep886, align 8, !tbaa !9, !alias.scope !14
  %gep888 = getelementptr double, ptr %invariant.gep887, i64 %offset.idx
  %reverse711 = fmul <2 x double> %100, %wide.load
  store <2 x double> %reverse711, ptr %gep888, align 8, !tbaa !9, !alias.scope !16, !noalias !18
  %gep890 = getelementptr double, ptr %invariant.gep889, i64 %offset.idx
  %wide.load712 = load <2 x double>, ptr %gep890, align 8, !tbaa !9, !alias.scope !20, !noalias !21
  %gep892 = getelementptr double, ptr %invariant.gep891, i64 %offset.idx
  store <2 x double> %wide.load712, ptr %gep892, align 8, !tbaa !9, !alias.scope !20, !noalias !21
  %gep894 = getelementptr i32, ptr %invariant.gep893, i64 %offset.idx
  %wide.load715 = load <2 x i32>, ptr %gep894, align 4, !tbaa !5, !alias.scope !22
  %101 = add nsw <2 x i32> %wide.load715, <i32 1, i32 1>
  %gep896 = getelementptr i32, ptr %invariant.gep895, i64 %offset.idx
  store <2 x i32> %101, ptr %gep896, align 4, !tbaa !5, !alias.scope !22
  %index.next = add nuw i64 %index, 2
  %102 = icmp eq i64 %index.next, %n.vec
  br i1 %102, label %middle.block, label %vector.body, !llvm.loop !24

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %n.vec, %88
  br i1 %cmp.n, label %._crit_edge, label %.lr.ph.preheader870

.lr.ph.preheader870:                              ; preds = %middle.block, %vector.memcheck, %.lr.ph.preheader
  %indvars.iv.ph = phi i64 [ %88, %vector.memcheck ], [ %88, %.lr.ph.preheader ], [ %ind.end, %middle.block ]
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.preheader870, %.lr.ph
  %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph ], [ %indvars.iv.ph, %.lr.ph.preheader870 ]
  %103 = load double, ptr %6, align 8, !tbaa !9
  %gep670 = getelementptr double, ptr %invariant.gep, i64 %indvars.iv
  %104 = load double, ptr %gep670, align 8, !tbaa !9
  %105 = fmul double %103, %104
  %106 = getelementptr double, ptr %5, i64 %indvars.iv
  store double %105, ptr %106, align 8, !tbaa !9
  %107 = getelementptr inbounds double, ptr %32, i64 %indvars.iv
  %108 = load double, ptr %107, align 8, !tbaa !9
  %109 = getelementptr double, ptr %4, i64 %indvars.iv
  store double %108, ptr %109, align 8, !tbaa !9
  %110 = getelementptr inbounds i32, ptr %50, i64 %indvars.iv
  %111 = load i32, ptr %110, align 4, !tbaa !5
  %112 = add nsw i32 %111, 1
  %113 = getelementptr i32, ptr %20, i64 %indvars.iv
  store i32 %112, ptr %113, align 4, !tbaa !5
  %indvars.iv.next = add nsw i64 %indvars.iv, -1
  %114 = icmp ugt i64 %indvars.iv, 1
  br i1 %114, label %.lr.ph, label %._crit_edge, !llvm.loop !28

._crit_edge:                                      ; preds = %.lr.ph, %middle.block, %77
  %.not471497 = icmp sgt i32 %79, %65
  br i1 %.not471497, label %._crit_edge501, label %.lr.ph500

.lr.ph500:                                        ; preds = %._crit_edge
  %115 = mul nsw i32 %79, %37
  %116 = sext i32 %79 to i64
  %117 = sext i32 %115 to i64
  %118 = sext i32 %65 to i64
  %invariant.gep671 = getelementptr double, ptr %39, i64 %117
  %119 = add nsw i64 %118, 1
  %120 = sub nsw i64 %119, %116
  %min.iters.check734 = icmp ult i64 %120, 28
  br i1 %min.iters.check734, label %scalar.ph733.preheader, label %vector.memcheck718

vector.memcheck718:                               ; preds = %.lr.ph500
  %121 = shl nsw i64 %116, 3
  %122 = getelementptr i8, ptr %5, i64 %121
  %scevgep719 = getelementptr i8, ptr %122, i64 -8
  %smax = tail call i64 @llvm.smax.i64(i64 %118, i64 %116)
  %123 = shl nsw i64 %smax, 3
  %scevgep720 = getelementptr i8, ptr %5, i64 %123
  %scevgep721 = getelementptr i8, ptr %7, i64 8
  %124 = add nsw i64 %117, %38
  %125 = add nsw i64 %124, %116
  %126 = shl nsw i64 %125, 3
  %scevgep722 = getelementptr i8, ptr %10, i64 %126
  %127 = add i64 %smax, %117
  %128 = add i64 %127, %38
  %129 = shl nsw i64 %128, 3
  %130 = getelementptr i8, ptr %10, i64 %129
  %scevgep723 = getelementptr i8, ptr %130, i64 8
  %bound0724 = icmp ult ptr %scevgep719, %scevgep721
  %bound1725 = icmp ugt ptr %scevgep720, %7
  %found.conflict726 = and i1 %bound0724, %bound1725
  %bound0727 = icmp ult ptr %scevgep719, %scevgep723
  %bound1728 = icmp ult ptr %scevgep722, %scevgep720
  %found.conflict729 = and i1 %bound0727, %bound1728
  %conflict.rdx730 = or i1 %found.conflict726, %found.conflict729
  br i1 %conflict.rdx730, label %scalar.ph733.preheader, label %vector.ph735

vector.ph735:                                     ; preds = %vector.memcheck718
  %n.vec737 = and i64 %120, -4
  %ind.end738 = add nsw i64 %n.vec737, %116
  %131 = load double, ptr %7, align 8, !tbaa !9, !alias.scope !29
  %broadcast.splatinsert747 = insertelement <2 x double> poison, double %131, i64 0
  %broadcast.splat748 = shufflevector <2 x double> %broadcast.splatinsert747, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body740

vector.body740:                                   ; preds = %vector.body740, %vector.ph735
  %index741 = phi i64 [ 0, %vector.ph735 ], [ %index.next749, %vector.body740 ]
  %offset.idx742 = add i64 %index741, %116
  %132 = getelementptr double, ptr %invariant.gep671, i64 %offset.idx742
  %133 = getelementptr i8, ptr %132, i64 16
  %wide.load743 = load <2 x double>, ptr %132, align 8, !tbaa !9, !alias.scope !32
  %wide.load744 = load <2 x double>, ptr %133, align 8, !tbaa !9, !alias.scope !32
  %134 = fmul <2 x double> %broadcast.splat748, %wide.load743
  %135 = fmul <2 x double> %broadcast.splat748, %wide.load744
  %136 = getelementptr inbounds double, ptr %33, i64 %offset.idx742
  %137 = getelementptr inbounds i8, ptr %136, i64 16
  store <2 x double> %134, ptr %136, align 8, !tbaa !9, !alias.scope !34, !noalias !36
  store <2 x double> %135, ptr %137, align 8, !tbaa !9, !alias.scope !34, !noalias !36
  %index.next749 = add nuw i64 %index741, 4
  %138 = icmp eq i64 %index.next749, %n.vec737
  br i1 %138, label %middle.block732, label %vector.body740, !llvm.loop !37

middle.block732:                                  ; preds = %vector.body740
  %cmp.n750 = icmp eq i64 %120, %n.vec737
  br i1 %cmp.n750, label %._crit_edge501, label %scalar.ph733.preheader

scalar.ph733.preheader:                           ; preds = %middle.block732, %vector.memcheck718, %.lr.ph500
  %indvars.iv587.ph = phi i64 [ %116, %vector.memcheck718 ], [ %116, %.lr.ph500 ], [ %ind.end738, %middle.block732 ]
  br label %scalar.ph733

scalar.ph733:                                     ; preds = %scalar.ph733.preheader, %scalar.ph733
  %indvars.iv587 = phi i64 [ %indvars.iv.next588, %scalar.ph733 ], [ %indvars.iv587.ph, %scalar.ph733.preheader ]
  %139 = load double, ptr %7, align 8, !tbaa !9
  %gep672 = getelementptr double, ptr %invariant.gep671, i64 %indvars.iv587
  %140 = load double, ptr %gep672, align 8, !tbaa !9
  %141 = fmul double %139, %140
  %142 = getelementptr inbounds double, ptr %33, i64 %indvars.iv587
  store double %141, ptr %142, align 8, !tbaa !9
  %indvars.iv.next588 = add nsw i64 %indvars.iv587, 1
  %.not471.not = icmp slt i64 %indvars.iv587, %118
  br i1 %.not471.not, label %scalar.ph733, label %._crit_edge501, !llvm.loop !38

._crit_edge501:                                   ; preds = %scalar.ph733, %middle.block732, %._crit_edge
  %.not472502 = icmp slt i32 %60, 1
  br i1 %.not472502, label %._crit_edge506, label %.lr.ph505.preheader

.lr.ph505.preheader:                              ; preds = %._crit_edge501
  %wide.trip.count = zext i32 %79 to i64
  %143 = add nsw i64 %wide.trip.count, -2
  %min.iters.check753 = icmp ult i64 %143, 8
  br i1 %min.iters.check753, label %.lr.ph505.preheader869, label %vector.ph754

vector.ph754:                                     ; preds = %.lr.ph505.preheader
  %n.vec756 = and i64 %143, -8
  %ind.end757 = or disjoint i64 %n.vec756, 2
  br label %vector.body759

vector.body759:                                   ; preds = %vector.body759, %vector.ph754
  %index760 = phi i64 [ 0, %vector.ph754 ], [ %index.next762, %vector.body759 ]
  %offset.idx761 = or disjoint i64 %index760, 2
  %144 = getelementptr inbounds i32, ptr %51, i64 %offset.idx761
  %145 = getelementptr inbounds i8, ptr %144, i64 16
  store <4 x i32> <i32 1, i32 1, i32 1, i32 1>, ptr %144, align 4, !tbaa !5
  store <4 x i32> <i32 1, i32 1, i32 1, i32 1>, ptr %145, align 4, !tbaa !5
  %index.next762 = add nuw i64 %index760, 8
  %146 = icmp eq i64 %index.next762, %n.vec756
  br i1 %146, label %middle.block751, label %vector.body759, !llvm.loop !39

middle.block751:                                  ; preds = %vector.body759
  %cmp.n763 = icmp eq i64 %143, %n.vec756
  br i1 %cmp.n763, label %._crit_edge506, label %.lr.ph505.preheader869

.lr.ph505.preheader869:                           ; preds = %middle.block751, %.lr.ph505.preheader
  %indvars.iv590.ph = phi i64 [ 2, %.lr.ph505.preheader ], [ %ind.end757, %middle.block751 ]
  br label %.lr.ph505

.lr.ph505:                                        ; preds = %.lr.ph505.preheader869, %.lr.ph505
  %indvars.iv590 = phi i64 [ %indvars.iv.next591, %.lr.ph505 ], [ %indvars.iv590.ph, %.lr.ph505.preheader869 ]
  %147 = getelementptr inbounds i32, ptr %51, i64 %indvars.iv590
  store i32 1, ptr %147, align 4, !tbaa !5
  %indvars.iv.next591 = add nuw nsw i64 %indvars.iv590, 1
  %exitcond = icmp eq i64 %indvars.iv.next591, %wide.trip.count
  br i1 %exitcond, label %._crit_edge506, label %.lr.ph505, !llvm.loop !40

._crit_edge506:                                   ; preds = %.lr.ph505, %middle.block751, %._crit_edge501
  store i32 %63, ptr %24, align 4, !tbaa !5
  %.not473507 = icmp sgt i32 %79, %63
  br i1 %.not473507, label %._crit_edge516, label %.lr.ph510.preheader

.lr.ph510.preheader:                              ; preds = %._crit_edge506
  %148 = sext i32 %79 to i64
  %149 = add i32 %62, 2
  %150 = add i32 %61, -1
  %151 = zext i32 %150 to i64
  %152 = add nuw nsw i64 %151, 1
  %min.iters.check766 = icmp ult i32 %150, 7
  br i1 %min.iters.check766, label %.lr.ph510.preheader868, label %vector.ph767

vector.ph767:                                     ; preds = %.lr.ph510.preheader
  %n.vec769 = and i64 %152, 8589934584
  %ind.end770 = add nsw i64 %n.vec769, %148
  %invariant.gep897 = getelementptr i32, ptr %51, i64 %148
  br label %vector.body772

vector.body772:                                   ; preds = %vector.body772, %vector.ph767
  %index773 = phi i64 [ 0, %vector.ph767 ], [ %index.next775, %vector.body772 ]
  %gep898 = getelementptr i32, ptr %invariant.gep897, i64 %index773
  %153 = getelementptr inbounds i8, ptr %gep898, i64 16
  store <4 x i32> <i32 2, i32 2, i32 2, i32 2>, ptr %gep898, align 4, !tbaa !5
  store <4 x i32> <i32 2, i32 2, i32 2, i32 2>, ptr %153, align 4, !tbaa !5
  %index.next775 = add nuw i64 %index773, 8
  %154 = icmp eq i64 %index.next775, %n.vec769
  br i1 %154, label %middle.block764, label %vector.body772, !llvm.loop !41

middle.block764:                                  ; preds = %vector.body772
  %cmp.n776 = icmp eq i64 %152, %n.vec769
  br i1 %cmp.n776, label %._crit_edge511, label %.lr.ph510.preheader868

.lr.ph510.preheader868:                           ; preds = %middle.block764, %.lr.ph510.preheader
  %indvars.iv593.ph = phi i64 [ %148, %.lr.ph510.preheader ], [ %ind.end770, %middle.block764 ]
  br label %.lr.ph510

.lr.ph510:                                        ; preds = %.lr.ph510.preheader868, %.lr.ph510
  %indvars.iv593 = phi i64 [ %indvars.iv.next594, %.lr.ph510 ], [ %indvars.iv593.ph, %.lr.ph510.preheader868 ]
  %155 = getelementptr inbounds i32, ptr %51, i64 %indvars.iv593
  store i32 2, ptr %155, align 4, !tbaa !5
  %indvars.iv.next594 = add nsw i64 %indvars.iv593, 1
  %lftr.wideiv = trunc i64 %indvars.iv.next594 to i32
  %exitcond596 = icmp eq i32 %149, %lftr.wideiv
  br i1 %exitcond596, label %._crit_edge511, label %.lr.ph510, !llvm.loop !42

._crit_edge511:                                   ; preds = %.lr.ph510, %middle.block764
  br i1 %.not473507, label %._crit_edge516, label %.lr.ph515.preheader

.lr.ph515.preheader:                              ; preds = %._crit_edge511
  %156 = sext i32 %79 to i64
  %157 = add i32 %62, 2
  %158 = add i32 %61, -1
  %159 = zext i32 %158 to i64
  %160 = add nuw nsw i64 %159, 1
  %min.iters.check779 = icmp ult i32 %158, 7
  br i1 %min.iters.check779, label %.lr.ph515.preheader867, label %vector.ph780

vector.ph780:                                     ; preds = %.lr.ph515.preheader
  %n.vec782 = and i64 %160, 8589934584
  %ind.end783 = add nsw i64 %n.vec782, %156
  %broadcast.splatinsert790 = insertelement <4 x i32> poison, i32 %78, i64 0
  %broadcast.splat791 = shufflevector <4 x i32> %broadcast.splatinsert790, <4 x i32> poison, <4 x i32> zeroinitializer
  %invariant.gep899 = getelementptr i32, ptr %50, i64 %156
  br label %vector.body785

vector.body785:                                   ; preds = %vector.body785, %vector.ph780
  %index786 = phi i64 [ 0, %vector.ph780 ], [ %index.next792, %vector.body785 ]
  %gep900 = getelementptr i32, ptr %invariant.gep899, i64 %index786
  %161 = getelementptr inbounds i8, ptr %gep900, i64 16
  %wide.load788 = load <4 x i32>, ptr %gep900, align 4, !tbaa !5
  %wide.load789 = load <4 x i32>, ptr %161, align 4, !tbaa !5
  %162 = add nsw <4 x i32> %wide.load788, %broadcast.splat791
  %163 = add nsw <4 x i32> %wide.load789, %broadcast.splat791
  store <4 x i32> %162, ptr %gep900, align 4, !tbaa !5
  store <4 x i32> %163, ptr %161, align 4, !tbaa !5
  %index.next792 = add nuw i64 %index786, 8
  %164 = icmp eq i64 %index.next792, %n.vec782
  br i1 %164, label %middle.block777, label %vector.body785, !llvm.loop !43

middle.block777:                                  ; preds = %vector.body785
  %cmp.n793 = icmp eq i64 %160, %n.vec782
  br i1 %cmp.n793, label %._crit_edge516, label %.lr.ph515.preheader867

.lr.ph515.preheader867:                           ; preds = %middle.block777, %.lr.ph515.preheader
  %indvars.iv597.ph = phi i64 [ %156, %.lr.ph515.preheader ], [ %ind.end783, %middle.block777 ]
  br label %.lr.ph515

.lr.ph515:                                        ; preds = %.lr.ph515.preheader867, %.lr.ph515
  %indvars.iv597 = phi i64 [ %indvars.iv.next598, %.lr.ph515 ], [ %indvars.iv597.ph, %.lr.ph515.preheader867 ]
  %165 = getelementptr inbounds i32, ptr %50, i64 %indvars.iv597
  %166 = load i32, ptr %165, align 4, !tbaa !5
  %167 = add nsw i32 %166, %78
  store i32 %167, ptr %165, align 4, !tbaa !5
  %indvars.iv.next598 = add nsw i64 %indvars.iv597, 1
  %lftr.wideiv600 = trunc i64 %indvars.iv.next598 to i32
  %exitcond601 = icmp eq i32 %157, %lftr.wideiv600
  br i1 %exitcond601, label %._crit_edge516, label %.lr.ph515, !llvm.loop !44

._crit_edge516:                                   ; preds = %.lr.ph515, %middle.block777, %._crit_edge506, %._crit_edge511
  %.not475517 = icmp slt i32 %62, 1
  br i1 %.not475517, label %._crit_edge521.thread, label %.lr.ph520.preheader

._crit_edge521.thread:                            ; preds = %._crit_edge516
  %168 = getelementptr inbounds i8, ptr %12, i64 8
  %169 = getelementptr inbounds i8, ptr %18, i64 4
  tail call void @dlamrg_(ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull %168, ptr noundef nonnull @c__1, ptr noundef nonnull @c__1, ptr noundef nonnull %169) #6
  %.pre659 = add nsw i32 %62, 2
  br label %._crit_edge526

.lr.ph520.preheader:                              ; preds = %._crit_edge516
  %170 = sext i32 %41 to i64
  %invariant.gep673 = getelementptr double, ptr %43, i64 %170
  %171 = zext nneg i32 %62 to i64
  %xtraiter = and i64 %171, 1
  %172 = icmp eq i32 %62, 1
  br i1 %172, label %._crit_edge521.unr-lcssa, label %.lr.ph520.preheader.new

.lr.ph520.preheader.new:                          ; preds = %.lr.ph520.preheader
  %unroll_iter = and i64 %171, 2147483646
  br label %.lr.ph520

.lr.ph520:                                        ; preds = %.lr.ph520, %.lr.ph520.preheader.new
  %indvars.iv602 = phi i64 [ 2, %.lr.ph520.preheader.new ], [ %indvars.iv.next603.1, %.lr.ph520 ]
  %niter = phi i64 [ 0, %.lr.ph520.preheader.new ], [ %niter.next.1, %.lr.ph520 ]
  %173 = getelementptr inbounds i32, ptr %50, i64 %indvars.iv602
  %174 = load i32, ptr %173, align 4, !tbaa !5
  %175 = sext i32 %174 to i64
  %176 = getelementptr inbounds double, ptr %32, i64 %175
  %177 = load double, ptr %176, align 8, !tbaa !9
  %178 = getelementptr inbounds double, ptr %40, i64 %indvars.iv602
  store double %177, ptr %178, align 8, !tbaa !9
  %179 = getelementptr inbounds double, ptr %33, i64 %175
  %180 = load double, ptr %179, align 8, !tbaa !9
  %gep674 = getelementptr double, ptr %invariant.gep673, i64 %indvars.iv602
  store double %180, ptr %gep674, align 8, !tbaa !9
  %181 = getelementptr inbounds i32, ptr %51, i64 %175
  %182 = load i32, ptr %181, align 4, !tbaa !5
  %183 = getelementptr inbounds i32, ptr %49, i64 %indvars.iv602
  store i32 %182, ptr %183, align 4, !tbaa !5
  %indvars.iv.next603 = or disjoint i64 %indvars.iv602, 1
  %184 = getelementptr i32, ptr %20, i64 %indvars.iv602
  %185 = load i32, ptr %184, align 4, !tbaa !5
  %186 = sext i32 %185 to i64
  %187 = getelementptr inbounds double, ptr %32, i64 %186
  %188 = load double, ptr %187, align 8, !tbaa !9
  %189 = getelementptr double, ptr %12, i64 %indvars.iv602
  store double %188, ptr %189, align 8, !tbaa !9
  %190 = getelementptr inbounds double, ptr %33, i64 %186
  %191 = load double, ptr %190, align 8, !tbaa !9
  %gep674.1 = getelementptr double, ptr %invariant.gep673, i64 %indvars.iv.next603
  store double %191, ptr %gep674.1, align 8, !tbaa !9
  %192 = getelementptr inbounds i32, ptr %51, i64 %186
  %193 = load i32, ptr %192, align 4, !tbaa !5
  %194 = getelementptr i32, ptr %19, i64 %indvars.iv602
  store i32 %193, ptr %194, align 4, !tbaa !5
  %indvars.iv.next603.1 = add nuw nsw i64 %indvars.iv602, 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_edge521.unr-lcssa, label %.lr.ph520, !llvm.loop !45

._crit_edge521.unr-lcssa:                         ; preds = %.lr.ph520, %.lr.ph520.preheader
  %indvars.iv602.unr = phi i64 [ 2, %.lr.ph520.preheader ], [ %indvars.iv.next603.1, %.lr.ph520 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge521, label %.lr.ph520.epil

.lr.ph520.epil:                                   ; preds = %._crit_edge521.unr-lcssa
  %195 = getelementptr inbounds i32, ptr %50, i64 %indvars.iv602.unr
  %196 = load i32, ptr %195, align 4, !tbaa !5
  %197 = sext i32 %196 to i64
  %198 = getelementptr inbounds double, ptr %32, i64 %197
  %199 = load double, ptr %198, align 8, !tbaa !9
  %200 = getelementptr inbounds double, ptr %40, i64 %indvars.iv602.unr
  store double %199, ptr %200, align 8, !tbaa !9
  %201 = getelementptr inbounds double, ptr %33, i64 %197
  %202 = load double, ptr %201, align 8, !tbaa !9
  %gep674.epil = getelementptr double, ptr %invariant.gep673, i64 %indvars.iv602.unr
  store double %202, ptr %gep674.epil, align 8, !tbaa !9
  %203 = getelementptr inbounds i32, ptr %51, i64 %197
  %204 = load i32, ptr %203, align 4, !tbaa !5
  %205 = getelementptr inbounds i32, ptr %49, i64 %indvars.iv602.unr
  store i32 %204, ptr %205, align 4, !tbaa !5
  br label %._crit_edge521

._crit_edge521:                                   ; preds = %._crit_edge521.unr-lcssa, %.lr.ph520.epil
  %206 = getelementptr inbounds i8, ptr %12, i64 8
  %207 = getelementptr inbounds i8, ptr %18, i64 4
  tail call void @dlamrg_(ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull %206, ptr noundef nonnull @c__1, ptr noundef nonnull @c__1, ptr noundef nonnull %207) #6
  %208 = add nuw i32 %62, 2
  %wide.trip.count610 = zext i32 %208 to i64
  br label %.lr.ph525

.lr.ph525:                                        ; preds = %._crit_edge521, %.lr.ph525
  %indvars.iv607 = phi i64 [ 2, %._crit_edge521 ], [ %indvars.iv.next608, %.lr.ph525 ]
  %209 = getelementptr inbounds i32, ptr %48, i64 %indvars.iv607
  %210 = load i32, ptr %209, align 4, !tbaa !5
  %211 = add nsw i32 %210, 1
  %212 = sext i32 %211 to i64
  %213 = getelementptr inbounds double, ptr %40, i64 %212
  %214 = load double, ptr %213, align 8, !tbaa !9
  %215 = getelementptr inbounds double, ptr %32, i64 %indvars.iv607
  store double %214, ptr %215, align 8, !tbaa !9
  %216 = add nsw i32 %211, %41
  %217 = sext i32 %216 to i64
  %218 = getelementptr inbounds double, ptr %43, i64 %217
  %219 = load double, ptr %218, align 8, !tbaa !9
  %220 = getelementptr inbounds double, ptr %33, i64 %indvars.iv607
  store double %219, ptr %220, align 8, !tbaa !9
  %221 = getelementptr inbounds i32, ptr %49, i64 %212
  %222 = load i32, ptr %221, align 4, !tbaa !5
  %223 = getelementptr inbounds i32, ptr %51, i64 %indvars.iv607
  store i32 %222, ptr %223, align 4, !tbaa !5
  %indvars.iv.next608 = add nuw nsw i64 %indvars.iv607, 1
  %exitcond611.not = icmp eq i64 %indvars.iv.next608, %wide.trip.count610
  br i1 %exitcond611.not, label %._crit_edge526, label %.lr.ph525, !llvm.loop !46

._crit_edge526:                                   ; preds = %.lr.ph525, %._crit_edge521.thread
  %224 = phi ptr [ %168, %._crit_edge521.thread ], [ %206, %.lr.ph525 ]
  %.pre-phi660 = phi i32 [ %.pre659, %._crit_edge521.thread ], [ %208, %.lr.ph525 ]
  %225 = tail call double @dlamch_(ptr noundef nonnull @.str.1) #6
  %226 = load double, ptr %6, align 8, !tbaa !9
  %227 = fcmp ult double %226, 0.000000e+00
  %228 = fneg double %226
  %229 = select i1 %227, double %228, double %226
  %230 = load double, ptr %7, align 8, !tbaa !9
  %231 = fcmp ult double %230, 0.000000e+00
  %232 = fneg double %230
  %233 = select i1 %231, double %232, double %230
  %234 = fcmp oge double %229, %233
  %235 = select i1 %234, double %229, double %233
  %236 = sext i32 %63 to i64
  %237 = getelementptr inbounds double, ptr %32, i64 %236
  %238 = load double, ptr %237, align 8, !tbaa !9
  %239 = fcmp oge double %238, 0.000000e+00
  %240 = fneg double %238
  %241 = select i1 %239, double %238, double %240
  %242 = fmul double %225, 8.000000e+00
  %243 = fcmp oge double %241, %235
  %244 = select i1 %243, double %241, double %235
  %245 = fmul double %242, %244
  store i32 1, ptr %3, align 4, !tbaa !5
  store i32 %63, ptr %24, align 4, !tbaa !5
  br i1 %.not475517, label %._crit_edge532, label %.lr.ph531.preheader

.lr.ph531.preheader:                              ; preds = %._crit_edge526
  %246 = sext i32 %.pre-phi660 to i64
  %247 = zext nneg i32 %63 to i64
  %248 = getelementptr inbounds i8, ptr %5, i64 8
  %249 = load double, ptr %248, align 8, !tbaa !9
  %250 = fcmp oge double %249, 0.000000e+00
  %251 = fneg double %249
  %252 = select i1 %250, double %249, double %251
  %253 = fcmp ugt double %252, %245
  br i1 %253, label %._crit_edge532.loopexit, label %.lr.ph689

.lr.ph531:                                        ; preds = %.lr.ph689
  %indvars.iv.next615 = add nuw nsw i64 %indvars.iv614687, 1
  %254 = getelementptr double, ptr %5, i64 %indvars.iv614687
  %255 = load double, ptr %254, align 8, !tbaa !9
  %256 = fcmp oge double %255, 0.000000e+00
  %257 = fneg double %255
  %258 = select i1 %256, double %255, double %257
  %259 = fcmp ugt double %258, %245
  %260 = trunc nuw nsw i64 %indvars.iv.next615 to i32
  br i1 %259, label %._crit_edge532.loopexit, label %.lr.ph689

.lr.ph689:                                        ; preds = %.lr.ph531.preheader, %.lr.ph531
  %261 = phi i32 [ %260, %.lr.ph531 ], [ 2, %.lr.ph531.preheader ]
  %indvars.iv612688 = phi i64 [ %indvars.iv.next613, %.lr.ph531 ], [ %246, %.lr.ph531.preheader ]
  %indvars.iv614687 = phi i64 [ %indvars.iv.next615, %.lr.ph531 ], [ 2, %.lr.ph531.preheader ]
  %indvars.iv.next613 = add nsw i64 %indvars.iv612688, -1
  %262 = getelementptr inbounds i32, ptr %47, i64 %indvars.iv.next613
  store i32 %261, ptr %262, align 4, !tbaa !5
  %263 = getelementptr inbounds i32, ptr %51, i64 %indvars.iv614687
  store i32 4, ptr %263, align 4, !tbaa !5
  %264 = icmp eq i64 %indvars.iv614687, %247
  br i1 %264, label %.loopexit493, label %.lr.ph531

._crit_edge532.loopexit:                          ; preds = %.lr.ph531, %.lr.ph531.preheader
  %indvars.iv612.lcssa = phi i64 [ %246, %.lr.ph531.preheader ], [ %indvars.iv.next613, %.lr.ph531 ]
  %.lcssa684 = phi i32 [ 2, %.lr.ph531.preheader ], [ %260, %.lr.ph531 ]
  %265 = trunc nsw i64 %indvars.iv612.lcssa to i32
  br label %._crit_edge532

._crit_edge532:                                   ; preds = %._crit_edge532.loopexit, %._crit_edge526
  %.0428.lcssa = phi i32 [ 2, %._crit_edge526 ], [ %.lcssa684, %._crit_edge532.loopexit ]
  %.0.lcssa = phi i32 [ %.pre-phi660, %._crit_edge526 ], [ %265, %._crit_edge532.loopexit ]
  %invariant.gep539 = getelementptr i8, ptr %36, i64 8
  %.not478543.not = icmp sgt i32 %.0428.lcssa, %62
  br i1 %.not478543.not, label %._crit_edge548, label %.lr.ph547.preheader

.lr.ph547.preheader:                              ; preds = %._crit_edge532
  %266 = zext i32 %.0428.lcssa to i64
  br label %.lr.ph547

.lr.ph547:                                        ; preds = %.lr.ph547.preheader, %342
  %267 = phi i32 [ %63, %.lr.ph547.preheader ], [ %343, %342 ]
  %indvars.iv619 = phi i64 [ %266, %.lr.ph547.preheader ], [ %indvars.iv.next620, %342 ]
  %.1545 = phi i32 [ %.0.lcssa, %.lr.ph547.preheader ], [ %.2, %342 ]
  %.1425544 = phi i32 [ %.0428.lcssa, %.lr.ph547.preheader ], [ %.2426, %342 ]
  %indvars.iv.next620 = add nuw nsw i64 %indvars.iv619, 1
  %268 = getelementptr double, ptr %5, i64 %indvars.iv619
  %269 = load double, ptr %268, align 8, !tbaa !9
  %270 = fcmp oge double %269, 0.000000e+00
  %271 = fneg double %269
  %272 = select i1 %270, double %269, double %271
  %273 = fcmp ugt double %272, %245
  br i1 %273, label %280, label %274

274:                                              ; preds = %.lr.ph547
  %275 = add nsw i32 %.1545, -1
  %276 = sext i32 %275 to i64
  %277 = getelementptr inbounds i32, ptr %47, i64 %276
  %278 = trunc nuw i64 %indvars.iv.next620 to i32
  store i32 %278, ptr %277, align 4, !tbaa !5
  %279 = getelementptr i32, ptr %21, i64 %indvars.iv619
  store i32 4, ptr %279, align 4, !tbaa !5
  br label %342

280:                                              ; preds = %.lr.ph547
  %281 = getelementptr double, ptr %4, i64 %indvars.iv619
  %282 = load double, ptr %281, align 8, !tbaa !9
  %283 = sext i32 %.1425544 to i64
  %284 = getelementptr inbounds double, ptr %32, i64 %283
  %285 = load double, ptr %284, align 8, !tbaa !9
  %286 = fsub double %282, %285
  %287 = fcmp oge double %286, 0.000000e+00
  %288 = fneg double %286
  %289 = select i1 %287, double %286, double %288
  %290 = fcmp ugt double %289, %245
  %291 = trunc nuw i64 %indvars.iv.next620 to i32
  br i1 %290, label %330, label %292

292:                                              ; preds = %280
  %293 = getelementptr inbounds double, ptr %33, i64 %283
  %294 = load double, ptr %293, align 8, !tbaa !9
  store double %294, ptr %29, align 8, !tbaa !9
  store double %269, ptr %26, align 8, !tbaa !9
  %295 = call double @dlapy2_(ptr noundef nonnull %26, ptr noundef nonnull %29) #6
  %296 = load double, ptr %26, align 8, !tbaa !9
  %297 = fdiv double %296, %295
  store double %297, ptr %26, align 8, !tbaa !9
  %298 = load double, ptr %29, align 8, !tbaa !9
  %299 = fneg double %298
  %300 = fdiv double %299, %295
  store double %300, ptr %29, align 8, !tbaa !9
  store double %295, ptr %268, align 8, !tbaa !9
  store double 0.000000e+00, ptr %293, align 8, !tbaa !9
  %301 = getelementptr inbounds i32, ptr %48, i64 %283
  %302 = load i32, ptr %301, align 4, !tbaa !5
  %303 = sext i32 %302 to i64
  %gep = getelementptr i32, ptr %20, i64 %303
  %304 = load i32, ptr %gep, align 4, !tbaa !5
  %305 = getelementptr i32, ptr %18, i64 %indvars.iv619
  %306 = load i32, ptr %305, align 4, !tbaa !5
  %307 = sext i32 %306 to i64
  %gep538 = getelementptr i32, ptr %20, i64 %307
  %308 = load i32, ptr %gep538, align 4, !tbaa !5
  %.not479 = icmp sle i32 %304, %78
  %309 = sext i1 %.not479 to i32
  %spec.select = add nsw i32 %304, %309
  %.not480 = icmp sle i32 %308, %78
  %310 = sext i1 %.not480 to i32
  %.0438 = add nsw i32 %308, %310
  %311 = mul nsw i32 %spec.select, %34
  %312 = sext i32 %311 to i64
  %gep540 = getelementptr double, ptr %invariant.gep539, i64 %312
  %313 = mul nsw i32 %.0438, %34
  %314 = sext i32 %313 to i64
  %gep542 = getelementptr double, ptr %invariant.gep539, i64 %314
  call void @drot_(ptr noundef nonnull %28, ptr noundef %gep540, ptr noundef nonnull @c__1, ptr noundef %gep542, ptr noundef nonnull @c__1, ptr noundef nonnull %26, ptr noundef nonnull %29) #6
  %315 = add nsw i32 %spec.select, %37
  %316 = sext i32 %315 to i64
  %317 = getelementptr inbounds double, ptr %39, i64 %316
  %318 = add nsw i32 %.0438, %37
  %319 = sext i32 %318 to i64
  %320 = getelementptr inbounds double, ptr %39, i64 %319
  call void @drot_(ptr noundef nonnull %27, ptr noundef %317, ptr noundef nonnull %11, ptr noundef %320, ptr noundef nonnull %11, ptr noundef nonnull %26, ptr noundef nonnull %29) #6
  %321 = getelementptr i32, ptr %21, i64 %indvars.iv619
  %322 = load i32, ptr %321, align 4, !tbaa !5
  %323 = getelementptr inbounds i32, ptr %51, i64 %283
  %324 = load i32, ptr %323, align 4, !tbaa !5
  %.not481 = icmp eq i32 %322, %324
  br i1 %.not481, label %326, label %325

325:                                              ; preds = %292
  store i32 3, ptr %321, align 4, !tbaa !5
  br label %326

326:                                              ; preds = %325, %292
  store i32 4, ptr %323, align 4, !tbaa !5
  %327 = add nsw i32 %.1545, -1
  %328 = sext i32 %327 to i64
  %329 = getelementptr inbounds i32, ptr %47, i64 %328
  store i32 %.1425544, ptr %329, align 4, !tbaa !5
  %.pre = load i32, ptr %28, align 4, !tbaa !5
  br label %342

330:                                              ; preds = %280
  %331 = load i32, ptr %3, align 4, !tbaa !5
  %332 = add nsw i32 %331, 1
  store i32 %332, ptr %3, align 4, !tbaa !5
  %333 = getelementptr inbounds double, ptr %33, i64 %283
  %334 = load double, ptr %333, align 8, !tbaa !9
  %335 = add nsw i32 %332, %41
  %336 = sext i32 %335 to i64
  %337 = getelementptr inbounds double, ptr %43, i64 %336
  store double %334, ptr %337, align 8, !tbaa !9
  %338 = load double, ptr %284, align 8, !tbaa !9
  %339 = sext i32 %332 to i64
  %340 = getelementptr inbounds double, ptr %40, i64 %339
  store double %338, ptr %340, align 8, !tbaa !9
  %341 = getelementptr inbounds i32, ptr %47, i64 %339
  store i32 %.1425544, ptr %341, align 4, !tbaa !5
  br label %342

342:                                              ; preds = %326, %330, %274
  %.pre-phi = phi i32 [ %291, %326 ], [ %291, %330 ], [ %278, %274 ]
  %343 = phi i32 [ %.pre, %326 ], [ %267, %330 ], [ %267, %274 ]
  %.2426 = phi i32 [ %291, %326 ], [ %291, %330 ], [ %.1425544, %274 ]
  %.2 = phi i32 [ %327, %326 ], [ %.1545, %330 ], [ %275, %274 ]
  %.not478 = icmp slt i32 %.pre-phi, %343
  br i1 %.not478, label %.lr.ph547, label %._crit_edge548

._crit_edge548:                                   ; preds = %342, %._crit_edge532
  %344 = phi i32 [ %63, %._crit_edge532 ], [ %343, %342 ]
  %.1425.lcssa = phi i32 [ %.0428.lcssa, %._crit_edge532 ], [ %.2426, %342 ]
  %345 = load i32, ptr %3, align 4, !tbaa !5
  %346 = add nsw i32 %345, 1
  store i32 %346, ptr %3, align 4, !tbaa !5
  %347 = sext i32 %.1425.lcssa to i64
  %348 = getelementptr inbounds double, ptr %33, i64 %347
  %349 = load double, ptr %348, align 8, !tbaa !9
  %350 = add nsw i32 %346, %41
  %351 = sext i32 %350 to i64
  %352 = getelementptr inbounds double, ptr %43, i64 %351
  store double %349, ptr %352, align 8, !tbaa !9
  %353 = getelementptr inbounds double, ptr %32, i64 %347
  %354 = load double, ptr %353, align 8, !tbaa !9
  %355 = sext i32 %346 to i64
  %356 = getelementptr inbounds double, ptr %40, i64 %355
  store double %354, ptr %356, align 8, !tbaa !9
  %357 = getelementptr inbounds i32, ptr %47, i64 %355
  store i32 %.1425.lcssa, ptr %357, align 4, !tbaa !5
  br label %.loopexit493

.loopexit493:                                     ; preds = %.lr.ph689, %._crit_edge548
  %358 = phi i32 [ %344, %._crit_edge548 ], [ %63, %.lr.ph689 ]
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %25, i8 0, i64 16, i1 false), !tbaa !5
  %.not482551 = icmp slt i32 %358, 2
  br i1 %.not482551, label %._crit_edge560.thread.critedge, label %.lr.ph554.preheader

.lr.ph554.preheader:                              ; preds = %.loopexit493
  %359 = add nuw i32 %358, 1
  %wide.trip.count628 = zext i32 %359 to i64
  %360 = add nsw i64 %wide.trip.count628, -2
  %361 = add nsw i64 %wide.trip.count628, -3
  %xtraiter871 = and i64 %wide.trip.count628, 1
  %362 = icmp eq i64 %361, 0
  br i1 %362, label %._crit_edge555.loopexit.unr-lcssa, label %.lr.ph554.preheader.new

.lr.ph554.preheader.new:                          ; preds = %.lr.ph554.preheader
  %unroll_iter873 = and i64 %360, -2
  br label %.lr.ph554

.lr.ph554:                                        ; preds = %.lr.ph554, %.lr.ph554.preheader.new
  %indvars.iv625 = phi i64 [ 2, %.lr.ph554.preheader.new ], [ %indvars.iv.next626.1, %.lr.ph554 ]
  %niter874 = phi i64 [ 0, %.lr.ph554.preheader.new ], [ %niter874.next.1, %.lr.ph554 ]
  %363 = getelementptr inbounds i32, ptr %51, i64 %indvars.iv625
  %364 = load i32, ptr %363, align 4, !tbaa !5
  %365 = add nsw i32 %364, -1
  %366 = sext i32 %365 to i64
  %367 = getelementptr inbounds [4 x i32], ptr %25, i64 0, i64 %366
  %368 = load i32, ptr %367, align 4, !tbaa !5
  %369 = add nsw i32 %368, 1
  store i32 %369, ptr %367, align 4, !tbaa !5
  %370 = getelementptr i32, ptr %21, i64 %indvars.iv625
  %371 = load i32, ptr %370, align 4, !tbaa !5
  %372 = add nsw i32 %371, -1
  %373 = sext i32 %372 to i64
  %374 = getelementptr inbounds [4 x i32], ptr %25, i64 0, i64 %373
  %375 = load i32, ptr %374, align 4, !tbaa !5
  %376 = add nsw i32 %375, 1
  store i32 %376, ptr %374, align 4, !tbaa !5
  %indvars.iv.next626.1 = add nuw nsw i64 %indvars.iv625, 2
  %niter874.next.1 = add i64 %niter874, 2
  %niter874.ncmp.1 = icmp eq i64 %niter874.next.1, %unroll_iter873
  br i1 %niter874.ncmp.1, label %._crit_edge555.loopexit.unr-lcssa, label %.lr.ph554, !llvm.loop !47

._crit_edge555.loopexit.unr-lcssa:                ; preds = %.lr.ph554, %.lr.ph554.preheader
  %indvars.iv625.unr = phi i64 [ 2, %.lr.ph554.preheader ], [ %indvars.iv.next626.1, %.lr.ph554 ]
  %lcmp.mod872.not = icmp eq i64 %xtraiter871, 0
  br i1 %lcmp.mod872.not, label %._crit_edge555.loopexit, label %.lr.ph554.epil

.lr.ph554.epil:                                   ; preds = %._crit_edge555.loopexit.unr-lcssa
  %377 = getelementptr inbounds i32, ptr %51, i64 %indvars.iv625.unr
  %378 = load i32, ptr %377, align 4, !tbaa !5
  %379 = add nsw i32 %378, -1
  %380 = sext i32 %379 to i64
  %381 = getelementptr inbounds [4 x i32], ptr %25, i64 0, i64 %380
  %382 = load i32, ptr %381, align 4, !tbaa !5
  %383 = add nsw i32 %382, 1
  store i32 %383, ptr %381, align 4, !tbaa !5
  br label %._crit_edge555.loopexit

._crit_edge555.loopexit:                          ; preds = %._crit_edge555.loopexit.unr-lcssa, %.lr.ph554.epil
  %.pre652 = load i32, ptr %25, align 16, !tbaa !5
  %.phi.trans.insert = getelementptr inbounds i8, ptr %25, i64 4
  %.pre653 = load i32, ptr %.phi.trans.insert, align 4, !tbaa !5
  %.phi.trans.insert654 = getelementptr inbounds i8, ptr %25, i64 8
  %.pre655 = load i32, ptr %.phi.trans.insert654, align 8, !tbaa !5
  store i32 2, ptr %31, align 16, !tbaa !5
  %384 = add nsw i32 %.pre652, 2
  %385 = getelementptr inbounds i8, ptr %31, i64 4
  store i32 %384, ptr %385, align 4, !tbaa !5
  %386 = add nsw i32 %.pre653, %384
  %387 = getelementptr inbounds i8, ptr %31, i64 8
  store i32 %386, ptr %387, align 8, !tbaa !5
  %388 = add nsw i32 %.pre655, %386
  %389 = getelementptr inbounds i8, ptr %31, i64 12
  store i32 %388, ptr %389, align 4, !tbaa !5
  br i1 %.not482551, label %._crit_edge560.thread, label %.lr.ph559.preheader

._crit_edge560.thread.critedge:                   ; preds = %.loopexit493
  store <4 x i32> <i32 2, i32 2, i32 2, i32 2>, ptr %31, align 16, !tbaa !5
  br label %._crit_edge560.thread

._crit_edge560.thread:                            ; preds = %._crit_edge560.thread.critedge, %._crit_edge555.loopexit
  store i32 %358, ptr %24, align 4, !tbaa !5
  br label %._crit_edge571

.lr.ph559.preheader:                              ; preds = %._crit_edge555.loopexit
  %xtraiter875 = and i64 %wide.trip.count628, 1
  %390 = icmp eq i64 %361, 0
  br i1 %390, label %._crit_edge560.unr-lcssa, label %.lr.ph559.preheader.new

.lr.ph559.preheader.new:                          ; preds = %.lr.ph559.preheader
  %unroll_iter877 = and i64 %360, -2
  br label %.lr.ph559

.lr.ph559:                                        ; preds = %.lr.ph559, %.lr.ph559.preheader.new
  %indvars.iv630 = phi i64 [ 2, %.lr.ph559.preheader.new ], [ %indvars.iv.next631.1, %.lr.ph559 ]
  %niter878 = phi i64 [ 0, %.lr.ph559.preheader.new ], [ %niter878.next.1, %.lr.ph559 ]
  %391 = getelementptr inbounds i32, ptr %47, i64 %indvars.iv630
  %392 = load i32, ptr %391, align 4, !tbaa !5
  %393 = sext i32 %392 to i64
  %394 = getelementptr inbounds i32, ptr %51, i64 %393
  %395 = load i32, ptr %394, align 4, !tbaa !5
  %396 = add nsw i32 %395, -1
  %397 = sext i32 %396 to i64
  %398 = getelementptr inbounds [4 x i32], ptr %31, i64 0, i64 %397
  %399 = load i32, ptr %398, align 4, !tbaa !5
  %400 = sext i32 %399 to i64
  %401 = getelementptr inbounds i32, ptr %49, i64 %400
  %402 = trunc nuw nsw i64 %indvars.iv630 to i32
  store i32 %402, ptr %401, align 4, !tbaa !5
  %403 = add nsw i32 %399, 1
  store i32 %403, ptr %398, align 4, !tbaa !5
  %404 = getelementptr i32, ptr %17, i64 %indvars.iv630
  %405 = load i32, ptr %404, align 4, !tbaa !5
  %406 = sext i32 %405 to i64
  %407 = getelementptr inbounds i32, ptr %51, i64 %406
  %408 = load i32, ptr %407, align 4, !tbaa !5
  %409 = add nsw i32 %408, -1
  %410 = sext i32 %409 to i64
  %411 = getelementptr inbounds [4 x i32], ptr %31, i64 0, i64 %410
  %412 = load i32, ptr %411, align 4, !tbaa !5
  %413 = sext i32 %412 to i64
  %414 = getelementptr inbounds i32, ptr %49, i64 %413
  %415 = trunc i64 %indvars.iv630 to i32
  %416 = or disjoint i32 %415, 1
  store i32 %416, ptr %414, align 4, !tbaa !5
  %417 = add nsw i32 %412, 1
  store i32 %417, ptr %411, align 4, !tbaa !5
  %indvars.iv.next631.1 = add nuw nsw i64 %indvars.iv630, 2
  %niter878.next.1 = add i64 %niter878, 2
  %niter878.ncmp.1 = icmp eq i64 %niter878.next.1, %unroll_iter877
  br i1 %niter878.ncmp.1, label %._crit_edge560.unr-lcssa, label %.lr.ph559, !llvm.loop !48

._crit_edge560.unr-lcssa:                         ; preds = %.lr.ph559, %.lr.ph559.preheader
  %indvars.iv630.unr = phi i64 [ 2, %.lr.ph559.preheader ], [ %indvars.iv.next631.1, %.lr.ph559 ]
  %lcmp.mod876.not = icmp eq i64 %xtraiter875, 0
  br i1 %lcmp.mod876.not, label %._crit_edge560, label %.lr.ph559.epil

.lr.ph559.epil:                                   ; preds = %._crit_edge560.unr-lcssa
  %418 = getelementptr inbounds i32, ptr %47, i64 %indvars.iv630.unr
  %419 = load i32, ptr %418, align 4, !tbaa !5
  %420 = sext i32 %419 to i64
  %421 = getelementptr inbounds i32, ptr %51, i64 %420
  %422 = load i32, ptr %421, align 4, !tbaa !5
  %423 = add nsw i32 %422, -1
  %424 = sext i32 %423 to i64
  %425 = getelementptr inbounds [4 x i32], ptr %31, i64 0, i64 %424
  %426 = load i32, ptr %425, align 4, !tbaa !5
  %427 = sext i32 %426 to i64
  %428 = getelementptr inbounds i32, ptr %49, i64 %427
  %429 = trunc nuw nsw i64 %indvars.iv630.unr to i32
  store i32 %429, ptr %428, align 4, !tbaa !5
  %430 = add nsw i32 %426, 1
  store i32 %430, ptr %425, align 4, !tbaa !5
  br label %._crit_edge560

._crit_edge560:                                   ; preds = %._crit_edge560.unr-lcssa, %.lr.ph559.epil
  store i32 %358, ptr %24, align 4, !tbaa !5
  %invariant.gep563 = getelementptr i8, ptr %36, i64 8
  %invariant.gep565 = getelementptr i8, ptr %43, i64 8
  br i1 %.not482551, label %._crit_edge571, label %.lr.ph570.preheader

.lr.ph570.preheader:                              ; preds = %._crit_edge560
  %431 = sext i32 %41 to i64
  %432 = sext i32 %44 to i64
  %invariant.gep675 = getelementptr double, ptr %46, i64 %432
  br label %.lr.ph570

.lr.ph570:                                        ; preds = %.lr.ph570.preheader, %.lr.ph570
  %indvars.iv635 = phi i64 [ 2, %.lr.ph570.preheader ], [ %indvars.iv.next636, %.lr.ph570 ]
  %433 = getelementptr inbounds i32, ptr %47, i64 %indvars.iv635
  %434 = load i32, ptr %433, align 4, !tbaa !5
  %435 = sext i32 %434 to i64
  %436 = getelementptr inbounds double, ptr %32, i64 %435
  %437 = load double, ptr %436, align 8, !tbaa !9
  %438 = getelementptr inbounds double, ptr %40, i64 %indvars.iv635
  store double %437, ptr %438, align 8, !tbaa !9
  %439 = getelementptr inbounds i32, ptr %49, i64 %indvars.iv635
  %440 = load i32, ptr %439, align 4, !tbaa !5
  %441 = sext i32 %440 to i64
  %442 = getelementptr inbounds i32, ptr %47, i64 %441
  %443 = load i32, ptr %442, align 4, !tbaa !5
  %444 = sext i32 %443 to i64
  %445 = getelementptr inbounds i32, ptr %48, i64 %444
  %446 = load i32, ptr %445, align 4, !tbaa !5
  %447 = sext i32 %446 to i64
  %gep562 = getelementptr i32, ptr %20, i64 %447
  %448 = load i32, ptr %gep562, align 4, !tbaa !5
  %.not489 = icmp sle i32 %448, %78
  %449 = sext i1 %.not489 to i32
  %spec.select490 = add nsw i32 %448, %449
  %450 = mul nsw i32 %spec.select490, %34
  %451 = sext i32 %450 to i64
  %gep564 = getelementptr double, ptr %invariant.gep563, i64 %451
  %452 = mul nsw i64 %indvars.iv635, %431
  %gep566 = getelementptr double, ptr %invariant.gep565, i64 %452
  call void @dcopy_(ptr noundef nonnull %28, ptr noundef %gep564, ptr noundef nonnull @c__1, ptr noundef %gep566, ptr noundef nonnull @c__1) #6
  %453 = add nsw i32 %spec.select490, %37
  %454 = sext i32 %453 to i64
  %455 = getelementptr inbounds double, ptr %39, i64 %454
  %gep676 = getelementptr double, ptr %invariant.gep675, i64 %indvars.iv635
  call void @dcopy_(ptr noundef nonnull %27, ptr noundef %455, ptr noundef nonnull %11, ptr noundef %gep676, ptr noundef nonnull %16) #6
  %indvars.iv.next636 = add nuw nsw i64 %indvars.iv635, 1
  %456 = load i32, ptr %24, align 4, !tbaa !5
  %457 = sext i32 %456 to i64
  %.not484.not = icmp slt i64 %indvars.iv635, %457
  br i1 %.not484.not, label %.lr.ph570, label %._crit_edge571, !llvm.loop !49

._crit_edge571:                                   ; preds = %.lr.ph570, %._crit_edge560.thread, %._crit_edge560
  store double 0.000000e+00, ptr %12, align 8, !tbaa !9
  %458 = fmul double %245, 5.000000e-01
  %459 = load double, ptr %224, align 8, !tbaa !9
  %460 = fcmp ult double %459, 0.000000e+00
  %461 = fneg double %459
  %462 = select i1 %460, double %461, double %459
  %463 = fcmp ugt double %462, %458
  br i1 %463, label %465, label %464

464:                                              ; preds = %._crit_edge571
  store double %458, ptr %224, align 8, !tbaa !9
  br label %465

465:                                              ; preds = %464, %._crit_edge571
  %466 = load i32, ptr %27, align 4, !tbaa !5
  %467 = load i32, ptr %28, align 4, !tbaa !5
  %468 = icmp sgt i32 %466, %467
  br i1 %468, label %469, label %483

469:                                              ; preds = %465
  %470 = sext i32 %466 to i64
  %471 = getelementptr inbounds double, ptr %33, i64 %470
  %472 = call double @dlapy2_(ptr noundef nonnull %30, ptr noundef nonnull %471) #6
  store double %472, ptr %5, align 8, !tbaa !9
  %473 = fcmp ugt double %472, %245
  br i1 %473, label %475, label %474

474:                                              ; preds = %469
  store double 1.000000e+00, ptr %26, align 8, !tbaa !9
  store double 0.000000e+00, ptr %29, align 8, !tbaa !9
  store double %245, ptr %5, align 8, !tbaa !9
  br label %490

475:                                              ; preds = %469
  %476 = load double, ptr %30, align 8, !tbaa !9
  %477 = fdiv double %476, %472
  store double %477, ptr %26, align 8, !tbaa !9
  %478 = load i32, ptr %27, align 4, !tbaa !5
  %479 = sext i32 %478 to i64
  %480 = getelementptr inbounds double, ptr %33, i64 %479
  %481 = load double, ptr %480, align 8, !tbaa !9
  %482 = fdiv double %481, %472
  store double %482, ptr %29, align 8, !tbaa !9
  br label %490

483:                                              ; preds = %465
  %484 = fcmp oge double %86, 0.000000e+00
  %485 = fneg double %86
  %486 = select i1 %484, double %86, double %485
  %487 = fcmp ugt double %486, %245
  br i1 %487, label %489, label %488

488:                                              ; preds = %483
  store double %245, ptr %5, align 8, !tbaa !9
  br label %490

489:                                              ; preds = %483
  store double %86, ptr %5, align 8, !tbaa !9
  br label %490

490:                                              ; preds = %488, %489, %474, %475
  %491 = load i32, ptr %3, align 4, !tbaa !5
  %492 = add nsw i32 %491, -1
  store i32 %492, ptr %24, align 4, !tbaa !5
  %493 = sext i32 %41 to i64
  %494 = getelementptr double, ptr %43, i64 %493
  %495 = getelementptr i8, ptr %494, i64 16
  %496 = getelementptr inbounds i8, ptr %5, i64 8
  call void @dcopy_(ptr noundef nonnull %24, ptr noundef %495, ptr noundef nonnull @c__1, ptr noundef nonnull %496, ptr noundef nonnull @c__1) #6
  call void @dlaset_(ptr noundef nonnull @.str.2, ptr noundef nonnull %28, ptr noundef nonnull @c__1, ptr noundef nonnull @c_b30, ptr noundef nonnull @c_b30, ptr noundef %13, ptr noundef nonnull %14) #6
  %497 = add nsw i32 %78, %41
  %498 = sext i32 %497 to i64
  %499 = getelementptr inbounds double, ptr %43, i64 %498
  store double 1.000000e+00, ptr %499, align 8, !tbaa !9
  %500 = load i32, ptr %27, align 4, !tbaa !5
  %501 = load i32, ptr %28, align 4, !tbaa !5
  %502 = icmp sgt i32 %500, %501
  br i1 %502, label %503, label %610

503:                                              ; preds = %490
  %invariant.gep572 = getelementptr i8, ptr %46, i64 8
  %.not487574 = icmp slt i32 %60, 0
  br i1 %.not487574, label %._crit_edge578, label %.lr.ph577

.lr.ph577:                                        ; preds = %503
  %504 = load double, ptr %29, align 8, !tbaa !9
  %505 = fneg double %504
  %506 = load double, ptr %26, align 8, !tbaa !9
  %507 = sext i32 %37 to i64
  %508 = zext nneg i32 %78 to i64
  %509 = sext i32 %500 to i64
  %510 = sext i32 %44 to i64
  %wide.trip.count641 = zext i32 %79 to i64
  %invariant.gep677 = getelementptr double, ptr %39, i64 %508
  %invariant.gep679 = getelementptr double, ptr %39, i64 %509
  %511 = add nsw i64 %wide.trip.count641, -1
  %min.iters.check814 = icmp ult i32 %79, 25
  br i1 %min.iters.check814, label %scalar.ph813.preheader, label %vector.scevcheck

vector.scevcheck:                                 ; preds = %.lr.ph577
  %ident.check = icmp ne i32 %37, 1
  %ident.check794 = icmp ne i32 %44, 1
  %512 = or i1 %ident.check, %ident.check794
  br i1 %512, label %scalar.ph813.preheader, label %vector.memcheck795

vector.memcheck795:                               ; preds = %vector.scevcheck
  %513 = shl nsw i64 %509, 3
  %514 = getelementptr i8, ptr %10, i64 %513
  %scevgep796 = getelementptr i8, ptr %514, i64 -8
  %515 = shl nuw nsw i64 %wide.trip.count641, 3
  %516 = getelementptr i8, ptr %10, i64 %513
  %517 = getelementptr i8, ptr %516, i64 %515
  %scevgep797 = getelementptr i8, ptr %517, i64 -16
  %518 = getelementptr i8, ptr %15, i64 %515
  %519 = shl nuw nsw i64 %508, 3
  %520 = getelementptr i8, ptr %10, i64 %519
  %scevgep799 = getelementptr i8, ptr %520, i64 -8
  %521 = getelementptr i8, ptr %10, i64 %515
  %522 = getelementptr i8, ptr %521, i64 %519
  %scevgep800 = getelementptr i8, ptr %522, i64 -16
  %bound0801 = icmp ult ptr %514, %518
  %bound1802 = icmp ugt ptr %scevgep797, %15
  %found.conflict803 = and i1 %bound0801, %bound1802
  %bound0804 = icmp ult ptr %scevgep796, %scevgep800
  %bound1805 = icmp ult ptr %scevgep799, %scevgep797
  %found.conflict806 = and i1 %bound0804, %bound1805
  %conflict.rdx807 = or i1 %found.conflict803, %found.conflict806
  %bound0808 = icmp ugt ptr %scevgep800, %15
  %bound1809 = icmp ult ptr %520, %518
  %found.conflict810 = and i1 %bound0808, %bound1809
  %conflict.rdx811 = or i1 %conflict.rdx807, %found.conflict810
  br i1 %conflict.rdx811, label %scalar.ph813.preheader, label %vector.ph815

vector.ph815:                                     ; preds = %vector.memcheck795
  %n.vec817 = and i64 %511, -4
  %ind.end818 = or disjoint i64 %n.vec817, 1
  %broadcast.splatinsert825 = insertelement <2 x double> poison, double %505, i64 0
  %broadcast.splat826 = shufflevector <2 x double> %broadcast.splatinsert825, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert829 = insertelement <2 x double> poison, double %506, i64 0
  %broadcast.splat830 = shufflevector <2 x double> %broadcast.splatinsert829, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body820

vector.body820:                                   ; preds = %vector.body820, %vector.ph815
  %index821 = phi i64 [ 0, %vector.ph815 ], [ %index.next831, %vector.body820 ]
  %offset.idx822 = or disjoint i64 %index821, 1
  %523 = getelementptr double, ptr %invariant.gep677, i64 %offset.idx822
  %524 = getelementptr i8, ptr %523, i64 16
  %wide.load823 = load <2 x double>, ptr %523, align 8, !tbaa !9, !alias.scope !50
  %wide.load824 = load <2 x double>, ptr %524, align 8, !tbaa !9, !alias.scope !50
  %525 = fmul <2 x double> %wide.load823, %broadcast.splat826
  %526 = fmul <2 x double> %wide.load824, %broadcast.splat826
  %527 = getelementptr double, ptr %invariant.gep679, i64 %offset.idx822
  %528 = getelementptr i8, ptr %527, i64 16
  store <2 x double> %525, ptr %527, align 8, !tbaa !9, !alias.scope !53, !noalias !55
  store <2 x double> %526, ptr %528, align 8, !tbaa !9, !alias.scope !53, !noalias !55
  %wide.load827 = load <2 x double>, ptr %523, align 8, !tbaa !9, !alias.scope !50
  %wide.load828 = load <2 x double>, ptr %524, align 8, !tbaa !9, !alias.scope !50
  %529 = fmul <2 x double> %broadcast.splat830, %wide.load827
  %530 = fmul <2 x double> %broadcast.splat830, %wide.load828
  %531 = getelementptr double, ptr %invariant.gep572, i64 %offset.idx822
  %532 = getelementptr i8, ptr %531, i64 16
  store <2 x double> %529, ptr %531, align 8, !tbaa !9, !alias.scope !57, !noalias !50
  store <2 x double> %530, ptr %532, align 8, !tbaa !9, !alias.scope !57, !noalias !50
  %index.next831 = add nuw i64 %index821, 4
  %533 = icmp eq i64 %index.next831, %n.vec817
  br i1 %533, label %middle.block812, label %vector.body820, !llvm.loop !58

middle.block812:                                  ; preds = %vector.body820
  %cmp.n832 = icmp eq i64 %511, %n.vec817
  br i1 %cmp.n832, label %._crit_edge578, label %scalar.ph813.preheader

scalar.ph813.preheader:                           ; preds = %middle.block812, %vector.memcheck795, %vector.scevcheck, %.lr.ph577
  %indvars.iv638.ph = phi i64 [ 1, %vector.memcheck795 ], [ 1, %vector.scevcheck ], [ 1, %.lr.ph577 ], [ %ind.end818, %middle.block812 ]
  %534 = and i64 %wide.trip.count641, 1
  %lcmp.mod880.not.not = icmp eq i64 %534, 0
  br i1 %lcmp.mod880.not.not, label %scalar.ph813.prol, label %scalar.ph813.prol.loopexit

scalar.ph813.prol:                                ; preds = %scalar.ph813.preheader
  %535 = mul nsw i64 %indvars.iv638.ph, %507
  %gep678.prol = getelementptr double, ptr %invariant.gep677, i64 %535
  %536 = load double, ptr %gep678.prol, align 8, !tbaa !9
  %537 = fmul double %536, %505
  %gep680.prol = getelementptr double, ptr %invariant.gep679, i64 %535
  store double %537, ptr %gep680.prol, align 8, !tbaa !9
  %538 = load double, ptr %gep678.prol, align 8, !tbaa !9
  %539 = fmul double %506, %538
  %540 = mul nsw i64 %indvars.iv638.ph, %510
  %gep573.prol = getelementptr double, ptr %invariant.gep572, i64 %540
  store double %539, ptr %gep573.prol, align 8, !tbaa !9
  %indvars.iv.next639.prol = add nuw nsw i64 %indvars.iv638.ph, 1
  br label %scalar.ph813.prol.loopexit

scalar.ph813.prol.loopexit:                       ; preds = %scalar.ph813.prol, %scalar.ph813.preheader
  %indvars.iv638.unr = phi i64 [ %indvars.iv638.ph, %scalar.ph813.preheader ], [ %indvars.iv.next639.prol, %scalar.ph813.prol ]
  %541 = add nsw i64 %wide.trip.count641, -1
  %542 = icmp eq i64 %indvars.iv638.ph, %541
  br i1 %542, label %._crit_edge578, label %scalar.ph813

scalar.ph813:                                     ; preds = %scalar.ph813.prol.loopexit, %scalar.ph813
  %indvars.iv638 = phi i64 [ %indvars.iv.next639.1, %scalar.ph813 ], [ %indvars.iv638.unr, %scalar.ph813.prol.loopexit ]
  %543 = mul nsw i64 %indvars.iv638, %507
  %gep678 = getelementptr double, ptr %invariant.gep677, i64 %543
  %544 = load double, ptr %gep678, align 8, !tbaa !9
  %545 = fmul double %544, %505
  %gep680 = getelementptr double, ptr %invariant.gep679, i64 %543
  store double %545, ptr %gep680, align 8, !tbaa !9
  %546 = load double, ptr %gep678, align 8, !tbaa !9
  %547 = fmul double %506, %546
  %548 = mul nsw i64 %indvars.iv638, %510
  %gep573 = getelementptr double, ptr %invariant.gep572, i64 %548
  store double %547, ptr %gep573, align 8, !tbaa !9
  %indvars.iv.next639 = add nuw nsw i64 %indvars.iv638, 1
  %549 = mul nsw i64 %indvars.iv.next639, %507
  %gep678.1 = getelementptr double, ptr %invariant.gep677, i64 %549
  %550 = load double, ptr %gep678.1, align 8, !tbaa !9
  %551 = fmul double %550, %505
  %gep680.1 = getelementptr double, ptr %invariant.gep679, i64 %549
  store double %551, ptr %gep680.1, align 8, !tbaa !9
  %552 = load double, ptr %gep678.1, align 8, !tbaa !9
  %553 = fmul double %506, %552
  %554 = mul nsw i64 %indvars.iv.next639, %510
  %gep573.1 = getelementptr double, ptr %invariant.gep572, i64 %554
  store double %553, ptr %gep573.1, align 8, !tbaa !9
  %indvars.iv.next639.1 = add nuw nsw i64 %indvars.iv638, 2
  %exitcond642.1 = icmp eq i64 %indvars.iv.next639.1, %wide.trip.count641
  br i1 %exitcond642.1, label %._crit_edge578, label %scalar.ph813, !llvm.loop !59

._crit_edge578:                                   ; preds = %scalar.ph813.prol.loopexit, %scalar.ph813, %middle.block812, %503
  store i32 %500, ptr %24, align 4, !tbaa !5
  %.not488581 = icmp sgt i32 %79, %500
  br i1 %.not488581, label %.loopexit492, label %.lr.ph584

.lr.ph584:                                        ; preds = %._crit_edge578
  %555 = load double, ptr %29, align 8, !tbaa !9
  %556 = load double, ptr %26, align 8, !tbaa !9
  %557 = sext i32 %79 to i64
  %558 = sext i32 %37 to i64
  %559 = sext i32 %500 to i64
  %560 = sext i32 %44 to i64
  %561 = add i32 %500, 1
  %invariant.gep681 = getelementptr double, ptr %39, i64 %559
  %562 = add i32 %500, -2
  %563 = sub i32 %562, %60
  %564 = zext i32 %563 to i64
  %565 = add nuw nsw i64 %564, 1
  %min.iters.check846 = icmp ult i32 %563, 17
  br i1 %min.iters.check846, label %scalar.ph845.preheader, label %vector.scevcheck833

vector.scevcheck833:                              ; preds = %.lr.ph584
  %ident.check834 = icmp ne i32 %37, 1
  %ident.check835 = icmp ne i32 %44, 1
  %566 = or i1 %ident.check834, %ident.check835
  br i1 %566, label %scalar.ph845.preheader, label %vector.memcheck836

vector.memcheck836:                               ; preds = %vector.scevcheck833
  %567 = shl nsw i64 %557, 3
  %568 = getelementptr i8, ptr %15, i64 %567
  %569 = add i32 %500, -2
  %570 = sub i32 %569, %60
  %571 = zext i32 %570 to i64
  %572 = shl nuw nsw i64 %571, 3
  %573 = getelementptr i8, ptr %15, i64 %567
  %scevgep838 = getelementptr i8, ptr %573, i64 %572
  %574 = add nsw i64 %559, %557
  %575 = shl nsw i64 %574, 3
  %576 = getelementptr i8, ptr %10, i64 %575
  %scevgep839 = getelementptr i8, ptr %576, i64 -16
  %577 = getelementptr i8, ptr %10, i64 %575
  %578 = getelementptr i8, ptr %577, i64 %572
  %bound0841 = icmp ult ptr %568, %578
  %bound1842 = icmp ult ptr %scevgep839, %scevgep838
  %found.conflict843 = and i1 %bound0841, %bound1842
  br i1 %found.conflict843, label %scalar.ph845.preheader, label %vector.ph847

vector.ph847:                                     ; preds = %vector.memcheck836
  %n.vec849 = and i64 %565, 8589934588
  %ind.end850 = add nsw i64 %n.vec849, %557
  %broadcast.splatinsert857 = insertelement <2 x double> poison, double %555, i64 0
  %broadcast.splat858 = shufflevector <2 x double> %broadcast.splatinsert857, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert861 = insertelement <2 x double> poison, double %556, i64 0
  %broadcast.splat862 = shufflevector <2 x double> %broadcast.splatinsert861, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body852

vector.body852:                                   ; preds = %vector.body852, %vector.ph847
  %index853 = phi i64 [ 0, %vector.ph847 ], [ %index.next863, %vector.body852 ]
  %offset.idx854 = add i64 %index853, %557
  %579 = getelementptr double, ptr %invariant.gep681, i64 %offset.idx854
  %580 = getelementptr i8, ptr %579, i64 16
  %wide.load855 = load <2 x double>, ptr %579, align 8, !tbaa !9, !alias.scope !60
  %wide.load856 = load <2 x double>, ptr %580, align 8, !tbaa !9, !alias.scope !60
  %581 = fmul <2 x double> %broadcast.splat858, %wide.load855
  %582 = fmul <2 x double> %broadcast.splat858, %wide.load856
  %583 = getelementptr double, ptr %invariant.gep572, i64 %offset.idx854
  %584 = getelementptr i8, ptr %583, i64 16
  store <2 x double> %581, ptr %583, align 8, !tbaa !9, !alias.scope !63, !noalias !60
  store <2 x double> %582, ptr %584, align 8, !tbaa !9, !alias.scope !63, !noalias !60
  %wide.load859 = load <2 x double>, ptr %579, align 8, !tbaa !9, !alias.scope !60
  %wide.load860 = load <2 x double>, ptr %580, align 8, !tbaa !9, !alias.scope !60
  %585 = fmul <2 x double> %broadcast.splat862, %wide.load859
  %586 = fmul <2 x double> %broadcast.splat862, %wide.load860
  store <2 x double> %585, ptr %579, align 8, !tbaa !9, !alias.scope !60
  store <2 x double> %586, ptr %580, align 8, !tbaa !9, !alias.scope !60
  %index.next863 = add nuw i64 %index853, 4
  %587 = icmp eq i64 %index.next863, %n.vec849
  br i1 %587, label %middle.block844, label %vector.body852, !llvm.loop !65

middle.block844:                                  ; preds = %vector.body852
  %cmp.n864 = icmp eq i64 %565, %n.vec849
  br i1 %cmp.n864, label %.loopexit492, label %scalar.ph845.preheader

scalar.ph845.preheader:                           ; preds = %middle.block844, %vector.memcheck836, %vector.scevcheck833, %.lr.ph584
  %indvars.iv643.ph = phi i64 [ %557, %vector.memcheck836 ], [ %557, %vector.scevcheck833 ], [ %557, %.lr.ph584 ], [ %ind.end850, %middle.block844 ]
  %588 = trunc i64 %indvars.iv643.ph to i32
  %589 = add i32 %500, %588
  %590 = and i32 %589, 1
  %lcmp.mod882.not.not = icmp eq i32 %590, 0
  br i1 %lcmp.mod882.not.not, label %scalar.ph845.prol, label %scalar.ph845.prol.loopexit

scalar.ph845.prol:                                ; preds = %scalar.ph845.preheader
  %591 = mul nsw i64 %indvars.iv643.ph, %558
  %gep682.prol = getelementptr double, ptr %invariant.gep681, i64 %591
  %592 = load double, ptr %gep682.prol, align 8, !tbaa !9
  %593 = fmul double %555, %592
  %594 = mul nsw i64 %indvars.iv643.ph, %560
  %gep580.prol = getelementptr double, ptr %invariant.gep572, i64 %594
  store double %593, ptr %gep580.prol, align 8, !tbaa !9
  %595 = load double, ptr %gep682.prol, align 8, !tbaa !9
  %596 = fmul double %556, %595
  store double %596, ptr %gep682.prol, align 8, !tbaa !9
  %indvars.iv.next644.prol = add nsw i64 %indvars.iv643.ph, 1
  br label %scalar.ph845.prol.loopexit

scalar.ph845.prol.loopexit:                       ; preds = %scalar.ph845.prol, %scalar.ph845.preheader
  %indvars.iv643.unr = phi i64 [ %indvars.iv643.ph, %scalar.ph845.preheader ], [ %indvars.iv.next644.prol, %scalar.ph845.prol ]
  %597 = icmp eq i32 %500, %588
  br i1 %597, label %.loopexit492, label %scalar.ph845

scalar.ph845:                                     ; preds = %scalar.ph845.prol.loopexit, %scalar.ph845
  %indvars.iv643 = phi i64 [ %indvars.iv.next644.1, %scalar.ph845 ], [ %indvars.iv643.unr, %scalar.ph845.prol.loopexit ]
  %598 = mul nsw i64 %indvars.iv643, %558
  %gep682 = getelementptr double, ptr %invariant.gep681, i64 %598
  %599 = load double, ptr %gep682, align 8, !tbaa !9
  %600 = fmul double %555, %599
  %601 = mul nsw i64 %indvars.iv643, %560
  %gep580 = getelementptr double, ptr %invariant.gep572, i64 %601
  store double %600, ptr %gep580, align 8, !tbaa !9
  %602 = load double, ptr %gep682, align 8, !tbaa !9
  %603 = fmul double %556, %602
  store double %603, ptr %gep682, align 8, !tbaa !9
  %indvars.iv.next644 = add nsw i64 %indvars.iv643, 1
  %604 = mul nsw i64 %indvars.iv.next644, %558
  %gep682.1 = getelementptr double, ptr %invariant.gep681, i64 %604
  %605 = load double, ptr %gep682.1, align 8, !tbaa !9
  %606 = fmul double %555, %605
  %607 = mul nsw i64 %indvars.iv.next644, %560
  %gep580.1 = getelementptr double, ptr %invariant.gep572, i64 %607
  store double %606, ptr %gep580.1, align 8, !tbaa !9
  %608 = load double, ptr %gep682.1, align 8, !tbaa !9
  %609 = fmul double %556, %608
  store double %609, ptr %gep682.1, align 8, !tbaa !9
  %indvars.iv.next644.1 = add nsw i64 %indvars.iv643, 2
  %lftr.wideiv646.1 = trunc i64 %indvars.iv.next644.1 to i32
  %exitcond647.not.1 = icmp eq i32 %561, %lftr.wideiv646.1
  br i1 %exitcond647.not.1, label %.loopexit492, label %scalar.ph845, !llvm.loop !66

610:                                              ; preds = %490
  %611 = add nsw i32 %78, %37
  %612 = sext i32 %611 to i64
  %613 = getelementptr inbounds double, ptr %39, i64 %612
  call void @dcopy_(ptr noundef nonnull %27, ptr noundef %613, ptr noundef nonnull %11, ptr noundef %15, ptr noundef nonnull %16) #6
  %.pre656 = load i32, ptr %27, align 4, !tbaa !5
  %.pre657 = load i32, ptr %28, align 4, !tbaa !5
  br label %.loopexit492

.loopexit492:                                     ; preds = %scalar.ph845.prol.loopexit, %scalar.ph845, %middle.block844, %._crit_edge578, %610
  %614 = phi i32 [ %501, %._crit_edge578 ], [ %.pre657, %610 ], [ %501, %middle.block844 ], [ %501, %scalar.ph845 ], [ %501, %scalar.ph845.prol.loopexit ]
  %615 = phi i32 [ %500, %._crit_edge578 ], [ %.pre656, %610 ], [ %500, %middle.block844 ], [ %500, %scalar.ph845 ], [ %500, %scalar.ph845.prol.loopexit ]
  %616 = icmp sgt i32 %615, %614
  br i1 %616, label %617, label %624

617:                                              ; preds = %.loopexit492
  %618 = add nsw i32 %615, %37
  %619 = sext i32 %618 to i64
  %620 = getelementptr inbounds double, ptr %39, i64 %619
  %621 = add nsw i32 %615, %44
  %622 = sext i32 %621 to i64
  %623 = getelementptr inbounds double, ptr %46, i64 %622
  call void @dcopy_(ptr noundef nonnull %27, ptr noundef %620, ptr noundef nonnull %11, ptr noundef %623, ptr noundef nonnull %16) #6
  %.pre658 = load i32, ptr %28, align 4, !tbaa !5
  br label %624

624:                                              ; preds = %617, %.loopexit492
  %625 = phi i32 [ %.pre658, %617 ], [ %614, %.loopexit492 ]
  %626 = load i32, ptr %3, align 4, !tbaa !5
  %627 = icmp sgt i32 %625, %626
  br i1 %627, label %628, label %.loopexit.loopexit

628:                                              ; preds = %624
  %629 = sub nsw i32 %625, %626
  store i32 %629, ptr %24, align 4, !tbaa !5
  %630 = add nsw i32 %626, 1
  %631 = sext i32 %630 to i64
  %632 = getelementptr inbounds double, ptr %40, i64 %631
  %633 = getelementptr inbounds double, ptr %32, i64 %631
  call void @dcopy_(ptr noundef nonnull %24, ptr noundef nonnull %632, ptr noundef nonnull @c__1, ptr noundef nonnull %633, ptr noundef nonnull @c__1) #6
  %634 = load i32, ptr %28, align 4, !tbaa !5
  %635 = load i32, ptr %3, align 4, !tbaa !5
  %636 = sub nsw i32 %634, %635
  store i32 %636, ptr %24, align 4, !tbaa !5
  %637 = add nsw i32 %635, 1
  %638 = mul nsw i32 %637, %41
  %639 = sext i32 %638 to i64
  %640 = getelementptr double, ptr %43, i64 %639
  %641 = getelementptr i8, ptr %640, i64 8
  %642 = mul nsw i32 %637, %34
  %643 = sext i32 %642 to i64
  %644 = getelementptr double, ptr %36, i64 %643
  %645 = getelementptr i8, ptr %644, i64 8
  call void @dlacpy_(ptr noundef nonnull @.str.2, ptr noundef nonnull %28, ptr noundef nonnull %24, ptr noundef %641, ptr noundef nonnull %14, ptr noundef %645, ptr noundef nonnull %9) #6
  %646 = load i32, ptr %28, align 4, !tbaa !5
  %647 = load i32, ptr %3, align 4, !tbaa !5
  %648 = sub nsw i32 %646, %647
  store i32 %648, ptr %24, align 4, !tbaa !5
  %649 = add nsw i32 %647, 1
  %650 = add nsw i32 %649, %44
  %651 = sext i32 %650 to i64
  %652 = getelementptr inbounds double, ptr %46, i64 %651
  %653 = add nsw i32 %649, %37
  %654 = sext i32 %653 to i64
  %655 = getelementptr inbounds double, ptr %39, i64 %654
  call void @dlacpy_(ptr noundef nonnull @.str.2, ptr noundef nonnull %24, ptr noundef nonnull %27, ptr noundef %652, ptr noundef nonnull %16, ptr noundef %655, ptr noundef nonnull %11) #6
  br label %.loopexit.loopexit

.loopexit.loopexit:                               ; preds = %628, %624
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %21, ptr noundef nonnull align 16 dereferenceable(16) %25, i64 16, i1 false), !tbaa !5
  br label %.loopexit

.loopexit:                                        ; preds = %.loopexit.loopexit, %.thread
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %31) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %28) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %27) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %25) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #6
  ret void
}

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

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

declare void @dlamrg_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare double @dlamch_(ptr noundef) local_unnamed_addr #2

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

declare void @drot_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @dcopy_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @dlaset_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @dlacpy_(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 nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #3

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #4

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.smax.i64(i64, i64) #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 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #4 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #5 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #6 = { 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 = !{!"int", !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 = !{!12}
!12 = distinct !{!12, !13}
!13 = distinct !{!13, !"LVerDomain"}
!14 = !{!15}
!15 = distinct !{!15, !13}
!16 = !{!17}
!17 = distinct !{!17, !13}
!18 = !{!19, !12, !15}
!19 = distinct !{!19, !13}
!20 = !{!19}
!21 = !{!12, !15}
!22 = !{!23}
!23 = distinct !{!23, !13}
!24 = distinct !{!24, !25, !26, !27}
!25 = !{!"llvm.loop.mustprogress"}
!26 = !{!"llvm.loop.isvectorized", i32 1}
!27 = !{!"llvm.loop.unroll.runtime.disable"}
!28 = distinct !{!28, !25, !26}
!29 = !{!30}
!30 = distinct !{!30, !31}
!31 = distinct !{!31, !"LVerDomain"}
!32 = !{!33}
!33 = distinct !{!33, !31}
!34 = !{!35}
!35 = distinct !{!35, !31}
!36 = !{!30, !33}
!37 = distinct !{!37, !25, !26, !27}
!38 = distinct !{!38, !25, !26}
!39 = distinct !{!39, !25, !26, !27}
!40 = distinct !{!40, !25, !27, !26}
!41 = distinct !{!41, !25, !26, !27}
!42 = distinct !{!42, !25, !27, !26}
!43 = distinct !{!43, !25, !26, !27}
!44 = distinct !{!44, !25, !27, !26}
!45 = distinct !{!45, !25}
!46 = distinct !{!46, !25}
!47 = distinct !{!47, !25}
!48 = distinct !{!48, !25}
!49 = distinct !{!49, !25}
!50 = !{!51}
!51 = distinct !{!51, !52}
!52 = distinct !{!52, !"LVerDomain"}
!53 = !{!54}
!54 = distinct !{!54, !52}
!55 = !{!56, !51}
!56 = distinct !{!56, !52}
!57 = !{!56}
!58 = distinct !{!58, !25, !26, !27}
!59 = distinct !{!59, !25, !26}
!60 = !{!61}
!61 = distinct !{!61, !62}
!62 = distinct !{!62, !"LVerDomain"}
!63 = !{!64}
!64 = distinct !{!64, !62}
!65 = distinct !{!65, !25, !26, !27}
!66 = distinct !{!66, !25, !26}


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