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

; 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_b3 = external hidden global float, align 4
@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

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

99:                                               ; preds = %17
  %100 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 -2, ptr %100, align 4, !tbaa !9
  br label %143

101:                                              ; preds = %17
  %102 = load ptr, ptr %23, align 8, !tbaa !5
  %103 = load i32, ptr %102, align 4, !tbaa !9
  %104 = load ptr, ptr %19, align 8, !tbaa !5
  %105 = load i32, ptr %104, align 4, !tbaa !9
  %106 = icmp sge i32 1, %105
  br i1 %106, label %107, label %108

107:                                              ; preds = %101
  br label %111

108:                                              ; preds = %101
  %109 = load ptr, ptr %19, align 8, !tbaa !5
  %110 = load i32, ptr %109, align 4, !tbaa !9
  br label %111

111:                                              ; preds = %108, %107
  %112 = phi i32 [ 1, %107 ], [ %110, %108 ]
  %113 = icmp slt i32 %103, %112
  br i1 %113, label %114, label %116

114:                                              ; preds = %111
  %115 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 -6, ptr %115, align 4, !tbaa !9
  br label %142

116:                                              ; preds = %111
  store i32 1, ptr %37, align 4, !tbaa !9
  %117 = load ptr, ptr %19, align 8, !tbaa !5
  %118 = load i32, ptr %117, align 4, !tbaa !9
  %119 = sdiv i32 %118, 2
  store i32 %119, ptr %38, align 4, !tbaa !9
  %120 = load i32, ptr %37, align 4, !tbaa !9
  %121 = load i32, ptr %38, align 4, !tbaa !9
  %122 = icmp sle i32 %120, %121
  br i1 %122, label %123, label %125

123:                                              ; preds = %116
  %124 = load i32, ptr %37, align 4, !tbaa !9
  br label %127

125:                                              ; preds = %116
  %126 = load i32, ptr %38, align 4, !tbaa !9
  br label %127

127:                                              ; preds = %125, %123
  %128 = phi i32 [ %124, %123 ], [ %126, %125 ]
  %129 = load ptr, ptr %20, align 8, !tbaa !5
  %130 = load i32, ptr %129, align 4, !tbaa !9
  %131 = icmp sgt i32 %128, %130
  br i1 %131, label %139, label %132

132:                                              ; preds = %127
  %133 = load ptr, ptr %19, align 8, !tbaa !5
  %134 = load i32, ptr %133, align 4, !tbaa !9
  %135 = sdiv i32 %134, 2
  %136 = load ptr, ptr %20, align 8, !tbaa !5
  %137 = load i32, ptr %136, align 4, !tbaa !9
  %138 = icmp slt i32 %135, %137
  br i1 %138, label %139, label %141

139:                                              ; preds = %132, %127
  %140 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 -3, ptr %140, align 4, !tbaa !9
  br label %141

141:                                              ; preds = %139, %132
  br label %142

142:                                              ; preds = %141, %114
  br label %143

143:                                              ; preds = %142, %99
  %144 = load ptr, ptr %34, align 8, !tbaa !5
  %145 = load i32, ptr %144, align 4, !tbaa !9
  %146 = icmp ne i32 %145, 0
  br i1 %146, label %147, label %152

147:                                              ; preds = %143
  %148 = load ptr, ptr %34, align 8, !tbaa !5
  %149 = load i32, ptr %148, align 4, !tbaa !9
  %150 = sub nsw i32 0, %149
  store i32 %150, ptr %37, align 4, !tbaa !9
  %151 = call i32 @xerbla_(ptr noundef @.str, ptr noundef %37, i32 noundef 6)
  store i32 1, ptr %64, align 4
  br label %1167

152:                                              ; preds = %143
  %153 = load ptr, ptr %19, align 8, !tbaa !5
  %154 = load i32, ptr %153, align 4, !tbaa !9
  %155 = icmp eq i32 %154, 0
  br i1 %155, label %156, label %157

156:                                              ; preds = %152
  store i32 1, ptr %64, align 4
  br label %1167

157:                                              ; preds = %152
  %158 = load ptr, ptr %19, align 8, !tbaa !5
  %159 = load i32, ptr %158, align 4, !tbaa !9
  %160 = load ptr, ptr %20, align 8, !tbaa !5
  %161 = load i32, ptr %160, align 4, !tbaa !9
  %162 = sub nsw i32 %159, %161
  store i32 %162, ptr %52, align 4, !tbaa !9
  %163 = load ptr, ptr %20, align 8, !tbaa !5
  %164 = load i32, ptr %163, align 4, !tbaa !9
  %165 = add nsw i32 %164, 1
  store i32 %165, ptr %59, align 4, !tbaa !9
  %166 = load ptr, ptr %25, align 8, !tbaa !5
  %167 = load float, ptr %166, align 4, !tbaa !11
  %168 = fcmp olt float %167, 0.000000e+00
  br i1 %168, label %169, label %174

169:                                              ; preds = %157
  %170 = load ptr, ptr %26, align 8, !tbaa !5
  %171 = load i32, ptr %59, align 4, !tbaa !9
  %172 = sext i32 %171 to i64
  %173 = getelementptr inbounds float, ptr %170, i64 %172
  call void @sscal_(ptr noundef %52, ptr noundef @c_b3, ptr noundef %173, ptr noundef @c__1)
  br label %174

174:                                              ; preds = %169, %157
  %175 = call double @sqrt(double noundef 2.000000e+00) #5
  %176 = fdiv double 1.000000e+00, %175
  %177 = fptrunc double %176 to float
  store float %177, ptr %50, align 4, !tbaa !11
  %178 = load ptr, ptr %19, align 8, !tbaa !5
  %179 = load ptr, ptr %26, align 8, !tbaa !5
  %180 = getelementptr inbounds float, ptr %179, i64 1
  call void @sscal_(ptr noundef %178, ptr noundef %50, ptr noundef %180, ptr noundef @c__1)
  %181 = load ptr, ptr %25, align 8, !tbaa !5
  %182 = load float, ptr %181, align 4, !tbaa !11
  %183 = fmul float %182, 2.000000e+00
  store float %183, ptr %39, align 4, !tbaa !11
  %184 = load float, ptr %39, align 4, !tbaa !11
  %185 = fcmp oge float %184, 0.000000e+00
  br i1 %185, label %186, label %188

186:                                              ; preds = %174
  %187 = load float, ptr %39, align 4, !tbaa !11
  br label %191

188:                                              ; preds = %174
  %189 = load float, ptr %39, align 4, !tbaa !11
  %190 = fneg float %189
  br label %191

191:                                              ; preds = %188, %186
  %192 = phi float [ %187, %186 ], [ %190, %188 ]
  %193 = load ptr, ptr %25, align 8, !tbaa !5
  store float %192, ptr %193, align 4, !tbaa !11
  %194 = load ptr, ptr %19, align 8, !tbaa !5
  %195 = load i32, ptr %194, align 4, !tbaa !9
  store i32 %195, ptr %37, align 4, !tbaa !9
  %196 = load i32, ptr %59, align 4, !tbaa !9
  store i32 %196, ptr %47, align 4, !tbaa !9
  br label %197

197:                                              ; preds = %210, %191
  %198 = load i32, ptr %47, align 4, !tbaa !9
  %199 = load i32, ptr %37, align 4, !tbaa !9
  %200 = icmp sle i32 %198, %199
  br i1 %200, label %201, label %213

201:                                              ; preds = %197
  %202 = load ptr, ptr %20, align 8, !tbaa !5
  %203 = load i32, ptr %202, align 4, !tbaa !9
  %204 = load ptr, ptr %24, align 8, !tbaa !5
  %205 = load i32, ptr %47, align 4, !tbaa !9
  %206 = sext i32 %205 to i64
  %207 = getelementptr inbounds i32, ptr %204, i64 %206
  %208 = load i32, ptr %207, align 4, !tbaa !9
  %209 = add nsw i32 %208, %203
  store i32 %209, ptr %207, align 4, !tbaa !9
  br label %210

210:                                              ; preds = %201
  %211 = load i32, ptr %47, align 4, !tbaa !9
  %212 = add nsw i32 %211, 1
  store i32 %212, ptr %47, align 4, !tbaa !9
  br label %197, !llvm.loop !13

213:                                              ; preds = %197
  %214 = load ptr, ptr %19, align 8, !tbaa !5
  %215 = load i32, ptr %214, align 4, !tbaa !9
  store i32 %215, ptr %37, align 4, !tbaa !9
  store i32 1, ptr %47, align 4, !tbaa !9
  br label %216

216:                                              ; preds = %234, %213
  %217 = load i32, ptr %47, align 4, !tbaa !9
  %218 = load i32, ptr %37, align 4, !tbaa !9
  %219 = icmp sle i32 %217, %218
  br i1 %219, label %220, label %237

220:                                              ; preds = %216
  %221 = load ptr, ptr %21, align 8, !tbaa !5
  %222 = load ptr, ptr %24, align 8, !tbaa !5
  %223 = load i32, ptr %47, align 4, !tbaa !9
  %224 = sext i32 %223 to i64
  %225 = getelementptr inbounds i32, ptr %222, i64 %224
  %226 = load i32, ptr %225, align 4, !tbaa !9
  %227 = sext i32 %226 to i64
  %228 = getelementptr inbounds float, ptr %221, i64 %227
  %229 = load float, ptr %228, align 4, !tbaa !11
  %230 = load ptr, ptr %27, align 8, !tbaa !5
  %231 = load i32, ptr %47, align 4, !tbaa !9
  %232 = sext i32 %231 to i64
  %233 = getelementptr inbounds float, ptr %230, i64 %232
  store float %229, ptr %233, align 4, !tbaa !11
  br label %234

234:                                              ; preds = %220
  %235 = load i32, ptr %47, align 4, !tbaa !9
  %236 = add nsw i32 %235, 1
  store i32 %236, ptr %47, align 4, !tbaa !9
  br label %216, !llvm.loop !15

237:                                              ; preds = %216
  %238 = load ptr, ptr %20, align 8, !tbaa !5
  %239 = load ptr, ptr %27, align 8, !tbaa !5
  %240 = getelementptr inbounds float, ptr %239, i64 1
  %241 = load ptr, ptr %31, align 8, !tbaa !5
  %242 = getelementptr inbounds i32, ptr %241, i64 1
  call void @slamrg_(ptr noundef %238, ptr noundef %52, ptr noundef %240, ptr noundef @c__1, ptr noundef @c__1, ptr noundef %242)
  %243 = load ptr, ptr %19, align 8, !tbaa !5
  %244 = load i32, ptr %243, align 4, !tbaa !9
  store i32 %244, ptr %37, align 4, !tbaa !9
  store i32 1, ptr %47, align 4, !tbaa !9
  br label %245

245:                                              ; preds = %263, %237
  %246 = load i32, ptr %47, align 4, !tbaa !9
  %247 = load i32, ptr %37, align 4, !tbaa !9
  %248 = icmp sle i32 %246, %247
  br i1 %248, label %249, label %266

249:                                              ; preds = %245
  %250 = load ptr, ptr %24, align 8, !tbaa !5
  %251 = load ptr, ptr %31, align 8, !tbaa !5
  %252 = load i32, ptr %47, align 4, !tbaa !9
  %253 = sext i32 %252 to i64
  %254 = getelementptr inbounds i32, ptr %251, i64 %253
  %255 = load i32, ptr %254, align 4, !tbaa !9
  %256 = sext i32 %255 to i64
  %257 = getelementptr inbounds i32, ptr %250, i64 %256
  %258 = load i32, ptr %257, align 4, !tbaa !9
  %259 = load ptr, ptr %30, align 8, !tbaa !5
  %260 = load i32, ptr %47, align 4, !tbaa !9
  %261 = sext i32 %260 to i64
  %262 = getelementptr inbounds i32, ptr %259, i64 %261
  store i32 %258, ptr %262, align 4, !tbaa !9
  br label %263

263:                                              ; preds = %249
  %264 = load i32, ptr %47, align 4, !tbaa !9
  %265 = add nsw i32 %264, 1
  store i32 %265, ptr %47, align 4, !tbaa !9
  br label %245, !llvm.loop !16

266:                                              ; preds = %245
  %267 = load ptr, ptr %19, align 8, !tbaa !5
  %268 = load ptr, ptr %26, align 8, !tbaa !5
  %269 = getelementptr inbounds float, ptr %268, i64 1
  %270 = call i32 @isamax_(ptr noundef %267, ptr noundef %269, ptr noundef @c__1)
  store i32 %270, ptr %43, align 4, !tbaa !9
  %271 = load ptr, ptr %19, align 8, !tbaa !5
  %272 = load ptr, ptr %21, align 8, !tbaa !5
  %273 = getelementptr inbounds float, ptr %272, i64 1
  %274 = call i32 @isamax_(ptr noundef %271, ptr noundef %273, ptr noundef @c__1)
  store i32 %274, ptr %44, align 4, !tbaa !9
  %275 = call float @slamch_(ptr noundef @.str.1)
  store float %275, ptr %60, align 4, !tbaa !11
  %276 = load ptr, ptr %21, align 8, !tbaa !5
  %277 = load i32, ptr %44, align 4, !tbaa !9
  %278 = sext i32 %277 to i64
  %279 = getelementptr inbounds float, ptr %276, i64 %278
  %280 = load float, ptr %279, align 4, !tbaa !11
  store float %280, ptr %39, align 4, !tbaa !11
  %281 = load float, ptr %39, align 4, !tbaa !11
  %282 = fcmp oge float %281, 0.000000e+00
  br i1 %282, label %283, label %285

283:                                              ; preds = %266
  %284 = load float, ptr %39, align 4, !tbaa !11
  br label %288

285:                                              ; preds = %266
  %286 = load float, ptr %39, align 4, !tbaa !11
  %287 = fneg float %286
  br label %288

288:                                              ; preds = %285, %283
  %289 = phi float [ %284, %283 ], [ %287, %285 ]
  store float %289, ptr %41, align 4, !tbaa !11
  %290 = load ptr, ptr %26, align 8, !tbaa !5
  %291 = load i32, ptr %43, align 4, !tbaa !9
  %292 = sext i32 %291 to i64
  %293 = getelementptr inbounds float, ptr %290, i64 %292
  %294 = load float, ptr %293, align 4, !tbaa !11
  store float %294, ptr %40, align 4, !tbaa !11
  %295 = load float, ptr %40, align 4, !tbaa !11
  %296 = fcmp oge float %295, 0.000000e+00
  br i1 %296, label %297, label %299

297:                                              ; preds = %288
  %298 = load float, ptr %40, align 4, !tbaa !11
  br label %302

299:                                              ; preds = %288
  %300 = load float, ptr %40, align 4, !tbaa !11
  %301 = fneg float %300
  br label %302

302:                                              ; preds = %299, %297
  %303 = phi float [ %298, %297 ], [ %301, %299 ]
  store float %303, ptr %42, align 4, !tbaa !11
  %304 = load float, ptr %60, align 4, !tbaa !11
  %305 = fmul float %304, 8.000000e+00
  %306 = load float, ptr %41, align 4, !tbaa !11
  %307 = load float, ptr %42, align 4, !tbaa !11
  %308 = fcmp oge float %306, %307
  br i1 %308, label %309, label %311

309:                                              ; preds = %302
  %310 = load float, ptr %41, align 4, !tbaa !11
  br label %313

311:                                              ; preds = %302
  %312 = load float, ptr %42, align 4, !tbaa !11
  br label %313

313:                                              ; preds = %311, %309
  %314 = phi float [ %310, %309 ], [ %312, %311 ]
  %315 = fmul float %305, %314
  store float %315, ptr %62, align 4, !tbaa !11
  %316 = load ptr, ptr %25, align 8, !tbaa !5
  %317 = load float, ptr %316, align 4, !tbaa !11
  %318 = load ptr, ptr %26, align 8, !tbaa !5
  %319 = load i32, ptr %43, align 4, !tbaa !9
  %320 = sext i32 %319 to i64
  %321 = getelementptr inbounds float, ptr %318, i64 %320
  %322 = load float, ptr %321, align 4, !tbaa !11
  store float %322, ptr %39, align 4, !tbaa !11
  %323 = load float, ptr %39, align 4, !tbaa !11
  %324 = fcmp oge float %323, 0.000000e+00
  br i1 %324, label %325, label %327

325:                                              ; preds = %313
  %326 = load float, ptr %39, align 4, !tbaa !11
  br label %330

327:                                              ; preds = %313
  %328 = load float, ptr %39, align 4, !tbaa !11
  %329 = fneg float %328
  br label %330

330:                                              ; preds = %327, %325
  %331 = phi float [ %326, %325 ], [ %329, %327 ]
  %332 = fmul float %317, %331
  %333 = load float, ptr %62, align 4, !tbaa !11
  %334 = fcmp ole float %332, %333
  br i1 %334, label %335, label %393

335:                                              ; preds = %330
  %336 = load ptr, ptr %18, align 8, !tbaa !5
  store i32 0, ptr %336, align 4, !tbaa !9
  store i32 1, ptr %58, align 4, !tbaa !9
  %337 = load ptr, ptr %19, align 8, !tbaa !5
  %338 = load i32, ptr %337, align 4, !tbaa !9
  store i32 %338, ptr %37, align 4, !tbaa !9
  store i32 1, ptr %48, align 4, !tbaa !9
  br label %339

339:                                              ; preds = %374, %335
  %340 = load i32, ptr %48, align 4, !tbaa !9
  %341 = load i32, ptr %37, align 4, !tbaa !9
  %342 = icmp sle i32 %340, %341
  br i1 %342, label %343, label %377

343:                                              ; preds = %339
  %344 = load ptr, ptr %30, align 8, !tbaa !5
  %345 = load i32, ptr %48, align 4, !tbaa !9
  %346 = sext i32 %345 to i64
  %347 = getelementptr inbounds i32, ptr %344, i64 %346
  %348 = load i32, ptr %347, align 4, !tbaa !9
  store i32 %348, ptr %47, align 4, !tbaa !9
  %349 = load ptr, ptr %19, align 8, !tbaa !5
  %350 = load ptr, ptr %22, align 8, !tbaa !5
  %351 = load i32, ptr %47, align 4, !tbaa !9
  %352 = load i32, ptr %35, align 4, !tbaa !9
  %353 = mul nsw i32 %351, %352
  %354 = add nsw i32 %353, 1
  %355 = sext i32 %354 to i64
  %356 = getelementptr inbounds float, ptr %350, i64 %355
  %357 = load ptr, ptr %29, align 8, !tbaa !5
  %358 = load i32, ptr %58, align 4, !tbaa !9
  %359 = sext i32 %358 to i64
  %360 = getelementptr inbounds float, ptr %357, i64 %359
  call void @scopy_(ptr noundef %349, ptr noundef %356, ptr noundef @c__1, ptr noundef %360, ptr noundef @c__1)
  %361 = load ptr, ptr %21, align 8, !tbaa !5
  %362 = load i32, ptr %47, align 4, !tbaa !9
  %363 = sext i32 %362 to i64
  %364 = getelementptr inbounds float, ptr %361, i64 %363
  %365 = load float, ptr %364, align 4, !tbaa !11
  %366 = load ptr, ptr %27, align 8, !tbaa !5
  %367 = load i32, ptr %48, align 4, !tbaa !9
  %368 = sext i32 %367 to i64
  %369 = getelementptr inbounds float, ptr %366, i64 %368
  store float %365, ptr %369, align 4, !tbaa !11
  %370 = load ptr, ptr %19, align 8, !tbaa !5
  %371 = load i32, ptr %370, align 4, !tbaa !9
  %372 = load i32, ptr %58, align 4, !tbaa !9
  %373 = add nsw i32 %372, %371
  store i32 %373, ptr %58, align 4, !tbaa !9
  br label %374

374:                                              ; preds = %343
  %375 = load i32, ptr %48, align 4, !tbaa !9
  %376 = add nsw i32 %375, 1
  store i32 %376, ptr %48, align 4, !tbaa !9
  br label %339, !llvm.loop !17

377:                                              ; preds = %339
  %378 = load ptr, ptr %19, align 8, !tbaa !5
  %379 = load ptr, ptr %19, align 8, !tbaa !5
  %380 = load ptr, ptr %29, align 8, !tbaa !5
  %381 = getelementptr inbounds float, ptr %380, i64 1
  %382 = load ptr, ptr %19, align 8, !tbaa !5
  %383 = load ptr, ptr %22, align 8, !tbaa !5
  %384 = load i32, ptr %36, align 4, !tbaa !9
  %385 = sext i32 %384 to i64
  %386 = getelementptr inbounds float, ptr %383, i64 %385
  %387 = load ptr, ptr %23, align 8, !tbaa !5
  call void @slacpy_(ptr noundef @.str.2, ptr noundef %378, ptr noundef %379, ptr noundef %381, ptr noundef %382, ptr noundef %386, ptr noundef %387)
  %388 = load ptr, ptr %19, align 8, !tbaa !5
  %389 = load ptr, ptr %27, align 8, !tbaa !5
  %390 = getelementptr inbounds float, ptr %389, i64 1
  %391 = load ptr, ptr %21, align 8, !tbaa !5
  %392 = getelementptr inbounds float, ptr %391, i64 1
  call void @scopy_(ptr noundef %388, ptr noundef %390, ptr noundef @c__1, ptr noundef %392, ptr noundef @c__1)
  br label %1166

393:                                              ; preds = %330
  %394 = load ptr, ptr %20, align 8, !tbaa !5
  %395 = load i32, ptr %394, align 4, !tbaa !9
  store i32 %395, ptr %37, align 4, !tbaa !9
  store i32 1, ptr %47, align 4, !tbaa !9
  br label %396

396:                                              ; preds = %405, %393
  %397 = load i32, ptr %47, align 4, !tbaa !9
  %398 = load i32, ptr %37, align 4, !tbaa !9
  %399 = icmp sle i32 %397, %398
  br i1 %399, label %400, label %408

400:                                              ; preds = %396
  %401 = load ptr, ptr %33, align 8, !tbaa !5
  %402 = load i32, ptr %47, align 4, !tbaa !9
  %403 = sext i32 %402 to i64
  %404 = getelementptr inbounds i32, ptr %401, i64 %403
  store i32 1, ptr %404, align 4, !tbaa !9
  br label %405

405:                                              ; preds = %400
  %406 = load i32, ptr %47, align 4, !tbaa !9
  %407 = add nsw i32 %406, 1
  store i32 %407, ptr %47, align 4, !tbaa !9
  br label %396, !llvm.loop !18

408:                                              ; preds = %396
  %409 = load ptr, ptr %19, align 8, !tbaa !5
  %410 = load i32, ptr %409, align 4, !tbaa !9
  store i32 %410, ptr %37, align 4, !tbaa !9
  %411 = load i32, ptr %59, align 4, !tbaa !9
  store i32 %411, ptr %47, align 4, !tbaa !9
  br label %412

412:                                              ; preds = %421, %408
  %413 = load i32, ptr %47, align 4, !tbaa !9
  %414 = load i32, ptr %37, align 4, !tbaa !9
  %415 = icmp sle i32 %413, %414
  br i1 %415, label %416, label %424

416:                                              ; preds = %412
  %417 = load ptr, ptr %33, align 8, !tbaa !5
  %418 = load i32, ptr %47, align 4, !tbaa !9
  %419 = sext i32 %418 to i64
  %420 = getelementptr inbounds i32, ptr %417, i64 %419
  store i32 3, ptr %420, align 4, !tbaa !9
  br label %421

421:                                              ; preds = %416
  %422 = load i32, ptr %47, align 4, !tbaa !9
  %423 = add nsw i32 %422, 1
  store i32 %423, ptr %47, align 4, !tbaa !9
  br label %412, !llvm.loop !19

424:                                              ; preds = %412
  %425 = load ptr, ptr %18, align 8, !tbaa !5
  store i32 0, ptr %425, align 4, !tbaa !9
  %426 = load ptr, ptr %19, align 8, !tbaa !5
  %427 = load i32, ptr %426, align 4, !tbaa !9
  %428 = add nsw i32 %427, 1
  store i32 %428, ptr %51, align 4, !tbaa !9
  %429 = load ptr, ptr %19, align 8, !tbaa !5
  %430 = load i32, ptr %429, align 4, !tbaa !9
  store i32 %430, ptr %37, align 4, !tbaa !9
  store i32 1, ptr %48, align 4, !tbaa !9
  br label %431

431:                                              ; preds = %481, %424
  %432 = load i32, ptr %48, align 4, !tbaa !9
  %433 = load i32, ptr %37, align 4, !tbaa !9
  %434 = icmp sle i32 %432, %433
  br i1 %434, label %435, label %484

435:                                              ; preds = %431
  %436 = load ptr, ptr %30, align 8, !tbaa !5
  %437 = load i32, ptr %48, align 4, !tbaa !9
  %438 = sext i32 %437 to i64
  %439 = getelementptr inbounds i32, ptr %436, i64 %438
  %440 = load i32, ptr %439, align 4, !tbaa !9
  store i32 %440, ptr %54, align 4, !tbaa !9
  %441 = load ptr, ptr %25, align 8, !tbaa !5
  %442 = load float, ptr %441, align 4, !tbaa !11
  %443 = load ptr, ptr %26, align 8, !tbaa !5
  %444 = load i32, ptr %54, align 4, !tbaa !9
  %445 = sext i32 %444 to i64
  %446 = getelementptr inbounds float, ptr %443, i64 %445
  %447 = load float, ptr %446, align 4, !tbaa !11
  store float %447, ptr %39, align 4, !tbaa !11
  %448 = load float, ptr %39, align 4, !tbaa !11
  %449 = fcmp oge float %448, 0.000000e+00
  br i1 %449, label %450, label %452

450:                                              ; preds = %435
  %451 = load float, ptr %39, align 4, !tbaa !11
  br label %455

452:                                              ; preds = %435
  %453 = load float, ptr %39, align 4, !tbaa !11
  %454 = fneg float %453
  br label %455

455:                                              ; preds = %452, %450
  %456 = phi float [ %451, %450 ], [ %454, %452 ]
  %457 = fmul float %442, %456
  %458 = load float, ptr %62, align 4, !tbaa !11
  %459 = fcmp ole float %457, %458
  br i1 %459, label %460, label %478

460:                                              ; preds = %455
  %461 = load i32, ptr %51, align 4, !tbaa !9
  %462 = add nsw i32 %461, -1
  store i32 %462, ptr %51, align 4, !tbaa !9
  %463 = load ptr, ptr %33, align 8, !tbaa !5
  %464 = load i32, ptr %54, align 4, !tbaa !9
  %465 = sext i32 %464 to i64
  %466 = getelementptr inbounds i32, ptr %463, i64 %465
  store i32 4, ptr %466, align 4, !tbaa !9
  %467 = load i32, ptr %54, align 4, !tbaa !9
  %468 = load ptr, ptr %32, align 8, !tbaa !5
  %469 = load i32, ptr %51, align 4, !tbaa !9
  %470 = sext i32 %469 to i64
  %471 = getelementptr inbounds i32, ptr %468, i64 %470
  store i32 %467, ptr %471, align 4, !tbaa !9
  %472 = load i32, ptr %48, align 4, !tbaa !9
  %473 = load ptr, ptr %19, align 8, !tbaa !5
  %474 = load i32, ptr %473, align 4, !tbaa !9
  %475 = icmp eq i32 %472, %474
  br i1 %475, label %476, label %477

476:                                              ; preds = %460
  br label %776

477:                                              ; preds = %460
  br label %480

478:                                              ; preds = %455
  %479 = load i32, ptr %54, align 4, !tbaa !9
  store i32 %479, ptr %55, align 4, !tbaa !9
  br label %485

480:                                              ; preds = %477
  br label %481

481:                                              ; preds = %480
  %482 = load i32, ptr %48, align 4, !tbaa !9
  %483 = add nsw i32 %482, 1
  store i32 %483, ptr %48, align 4, !tbaa !9
  br label %431, !llvm.loop !20

484:                                              ; preds = %431
  br label %485

485:                                              ; preds = %775, %484, %478
  %486 = load i32, ptr %48, align 4, !tbaa !9
  %487 = add nsw i32 %486, 1
  store i32 %487, ptr %48, align 4, !tbaa !9
  %488 = load ptr, ptr %30, align 8, !tbaa !5
  %489 = load i32, ptr %48, align 4, !tbaa !9
  %490 = sext i32 %489 to i64
  %491 = getelementptr inbounds i32, ptr %488, i64 %490
  %492 = load i32, ptr %491, align 4, !tbaa !9
  store i32 %492, ptr %54, align 4, !tbaa !9
  %493 = load i32, ptr %48, align 4, !tbaa !9
  %494 = load ptr, ptr %19, align 8, !tbaa !5
  %495 = load i32, ptr %494, align 4, !tbaa !9
  %496 = icmp sgt i32 %493, %495
  br i1 %496, label %497, label %498

497:                                              ; preds = %485
  br label %776

498:                                              ; preds = %485
  %499 = load ptr, ptr %25, align 8, !tbaa !5
  %500 = load float, ptr %499, align 4, !tbaa !11
  %501 = load ptr, ptr %26, align 8, !tbaa !5
  %502 = load i32, ptr %54, align 4, !tbaa !9
  %503 = sext i32 %502 to i64
  %504 = getelementptr inbounds float, ptr %501, i64 %503
  %505 = load float, ptr %504, align 4, !tbaa !11
  store float %505, ptr %39, align 4, !tbaa !11
  %506 = load float, ptr %39, align 4, !tbaa !11
  %507 = fcmp oge float %506, 0.000000e+00
  br i1 %507, label %508, label %510

508:                                              ; preds = %498
  %509 = load float, ptr %39, align 4, !tbaa !11
  br label %513

510:                                              ; preds = %498
  %511 = load float, ptr %39, align 4, !tbaa !11
  %512 = fneg float %511
  br label %513

513:                                              ; preds = %510, %508
  %514 = phi float [ %509, %508 ], [ %512, %510 ]
  %515 = fmul float %500, %514
  %516 = load float, ptr %62, align 4, !tbaa !11
  %517 = fcmp ole float %515, %516
  br i1 %517, label %518, label %530

518:                                              ; preds = %513
  %519 = load i32, ptr %51, align 4, !tbaa !9
  %520 = add nsw i32 %519, -1
  store i32 %520, ptr %51, align 4, !tbaa !9
  %521 = load ptr, ptr %33, align 8, !tbaa !5
  %522 = load i32, ptr %54, align 4, !tbaa !9
  %523 = sext i32 %522 to i64
  %524 = getelementptr inbounds i32, ptr %521, i64 %523
  store i32 4, ptr %524, align 4, !tbaa !9
  %525 = load i32, ptr %54, align 4, !tbaa !9
  %526 = load ptr, ptr %32, align 8, !tbaa !5
  %527 = load i32, ptr %51, align 4, !tbaa !9
  %528 = sext i32 %527 to i64
  %529 = getelementptr inbounds i32, ptr %526, i64 %528
  store i32 %525, ptr %529, align 4, !tbaa !9
  br label %775

530:                                              ; preds = %513
  %531 = load ptr, ptr %26, align 8, !tbaa !5
  %532 = load i32, ptr %55, align 4, !tbaa !9
  %533 = sext i32 %532 to i64
  %534 = getelementptr inbounds float, ptr %531, i64 %533
  %535 = load float, ptr %534, align 4, !tbaa !11
  store float %535, ptr %49, align 4, !tbaa !11
  %536 = load ptr, ptr %26, align 8, !tbaa !5
  %537 = load i32, ptr %54, align 4, !tbaa !9
  %538 = sext i32 %537 to i64
  %539 = getelementptr inbounds float, ptr %536, i64 %538
  %540 = load float, ptr %539, align 4, !tbaa !11
  store float %540, ptr %46, align 4, !tbaa !11
  %541 = call float @slapy2_(ptr noundef %46, ptr noundef %49)
  store float %541, ptr %61, align 4, !tbaa !11
  %542 = load ptr, ptr %21, align 8, !tbaa !5
  %543 = load i32, ptr %54, align 4, !tbaa !9
  %544 = sext i32 %543 to i64
  %545 = getelementptr inbounds float, ptr %542, i64 %544
  %546 = load float, ptr %545, align 4, !tbaa !11
  %547 = load ptr, ptr %21, align 8, !tbaa !5
  %548 = load i32, ptr %55, align 4, !tbaa !9
  %549 = sext i32 %548 to i64
  %550 = getelementptr inbounds float, ptr %547, i64 %549
  %551 = load float, ptr %550, align 4, !tbaa !11
  %552 = fsub float %546, %551
  store float %552, ptr %50, align 4, !tbaa !11
  %553 = load float, ptr %61, align 4, !tbaa !11
  %554 = load float, ptr %46, align 4, !tbaa !11
  %555 = fdiv float %554, %553
  store float %555, ptr %46, align 4, !tbaa !11
  %556 = load float, ptr %49, align 4, !tbaa !11
  %557 = fneg float %556
  %558 = load float, ptr %61, align 4, !tbaa !11
  %559 = fdiv float %557, %558
  store float %559, ptr %49, align 4, !tbaa !11
  %560 = load float, ptr %50, align 4, !tbaa !11
  %561 = load float, ptr %46, align 4, !tbaa !11
  %562 = fmul float %560, %561
  %563 = load float, ptr %49, align 4, !tbaa !11
  %564 = fmul float %562, %563
  store float %564, ptr %39, align 4, !tbaa !11
  %565 = load float, ptr %39, align 4, !tbaa !11
  %566 = fcmp oge float %565, 0.000000e+00
  br i1 %566, label %567, label %569

567:                                              ; preds = %530
  %568 = load float, ptr %39, align 4, !tbaa !11
  br label %572

569:                                              ; preds = %530
  %570 = load float, ptr %39, align 4, !tbaa !11
  %571 = fneg float %570
  br label %572

572:                                              ; preds = %569, %567
  %573 = phi float [ %568, %567 ], [ %571, %569 ]
  %574 = load float, ptr %62, align 4, !tbaa !11
  %575 = fcmp ole float %573, %574
  br i1 %575, label %576, label %743

576:                                              ; preds = %572
  %577 = load float, ptr %61, align 4, !tbaa !11
  %578 = load ptr, ptr %26, align 8, !tbaa !5
  %579 = load i32, ptr %54, align 4, !tbaa !9
  %580 = sext i32 %579 to i64
  %581 = getelementptr inbounds float, ptr %578, i64 %580
  store float %577, ptr %581, align 4, !tbaa !11
  %582 = load ptr, ptr %26, align 8, !tbaa !5
  %583 = load i32, ptr %55, align 4, !tbaa !9
  %584 = sext i32 %583 to i64
  %585 = getelementptr inbounds float, ptr %582, i64 %584
  store float 0.000000e+00, ptr %585, align 4, !tbaa !11
  %586 = load ptr, ptr %33, align 8, !tbaa !5
  %587 = load i32, ptr %54, align 4, !tbaa !9
  %588 = sext i32 %587 to i64
  %589 = getelementptr inbounds i32, ptr %586, i64 %588
  %590 = load i32, ptr %589, align 4, !tbaa !9
  %591 = load ptr, ptr %33, align 8, !tbaa !5
  %592 = load i32, ptr %55, align 4, !tbaa !9
  %593 = sext i32 %592 to i64
  %594 = getelementptr inbounds i32, ptr %591, i64 %593
  %595 = load i32, ptr %594, align 4, !tbaa !9
  %596 = icmp ne i32 %590, %595
  br i1 %596, label %597, label %602

597:                                              ; preds = %576
  %598 = load ptr, ptr %33, align 8, !tbaa !5
  %599 = load i32, ptr %54, align 4, !tbaa !9
  %600 = sext i32 %599 to i64
  %601 = getelementptr inbounds i32, ptr %598, i64 %600
  store i32 2, ptr %601, align 4, !tbaa !9
  br label %602

602:                                              ; preds = %597, %576
  %603 = load ptr, ptr %33, align 8, !tbaa !5
  %604 = load i32, ptr %55, align 4, !tbaa !9
  %605 = sext i32 %604 to i64
  %606 = getelementptr inbounds i32, ptr %603, i64 %605
  store i32 4, ptr %606, align 4, !tbaa !9
  %607 = load ptr, ptr %19, align 8, !tbaa !5
  %608 = load ptr, ptr %22, align 8, !tbaa !5
  %609 = load i32, ptr %55, align 4, !tbaa !9
  %610 = load i32, ptr %35, align 4, !tbaa !9
  %611 = mul nsw i32 %609, %610
  %612 = add nsw i32 %611, 1
  %613 = sext i32 %612 to i64
  %614 = getelementptr inbounds float, ptr %608, i64 %613
  %615 = load ptr, ptr %22, align 8, !tbaa !5
  %616 = load i32, ptr %54, align 4, !tbaa !9
  %617 = load i32, ptr %35, align 4, !tbaa !9
  %618 = mul nsw i32 %616, %617
  %619 = add nsw i32 %618, 1
  %620 = sext i32 %619 to i64
  %621 = getelementptr inbounds float, ptr %615, i64 %620
  call void @srot_(ptr noundef %607, ptr noundef %614, ptr noundef @c__1, ptr noundef %621, ptr noundef @c__1, ptr noundef %46, ptr noundef %49)
  %622 = load float, ptr %46, align 4, !tbaa !11
  store float %622, ptr %39, align 4, !tbaa !11
  %623 = load float, ptr %49, align 4, !tbaa !11
  store float %623, ptr %40, align 4, !tbaa !11
  %624 = load ptr, ptr %21, align 8, !tbaa !5
  %625 = load i32, ptr %55, align 4, !tbaa !9
  %626 = sext i32 %625 to i64
  %627 = getelementptr inbounds float, ptr %624, i64 %626
  %628 = load float, ptr %627, align 4, !tbaa !11
  %629 = load float, ptr %39, align 4, !tbaa !11
  %630 = load float, ptr %39, align 4, !tbaa !11
  %631 = fmul float %629, %630
  %632 = load ptr, ptr %21, align 8, !tbaa !5
  %633 = load i32, ptr %54, align 4, !tbaa !9
  %634 = sext i32 %633 to i64
  %635 = getelementptr inbounds float, ptr %632, i64 %634
  %636 = load float, ptr %635, align 4, !tbaa !11
  %637 = load float, ptr %40, align 4, !tbaa !11
  %638 = load float, ptr %40, align 4, !tbaa !11
  %639 = fmul float %637, %638
  %640 = fmul float %636, %639
  %641 = call float @llvm.fmuladd.f32(float %628, float %631, float %640)
  store float %641, ptr %50, align 4, !tbaa !11
  %642 = load float, ptr %49, align 4, !tbaa !11
  store float %642, ptr %39, align 4, !tbaa !11
  %643 = load float, ptr %46, align 4, !tbaa !11
  store float %643, ptr %40, align 4, !tbaa !11
  %644 = load ptr, ptr %21, align 8, !tbaa !5
  %645 = load i32, ptr %55, align 4, !tbaa !9
  %646 = sext i32 %645 to i64
  %647 = getelementptr inbounds float, ptr %644, i64 %646
  %648 = load float, ptr %647, align 4, !tbaa !11
  %649 = load float, ptr %39, align 4, !tbaa !11
  %650 = load float, ptr %39, align 4, !tbaa !11
  %651 = fmul float %649, %650
  %652 = load ptr, ptr %21, align 8, !tbaa !5
  %653 = load i32, ptr %54, align 4, !tbaa !9
  %654 = sext i32 %653 to i64
  %655 = getelementptr inbounds float, ptr %652, i64 %654
  %656 = load float, ptr %655, align 4, !tbaa !11
  %657 = load float, ptr %40, align 4, !tbaa !11
  %658 = load float, ptr %40, align 4, !tbaa !11
  %659 = fmul float %657, %658
  %660 = fmul float %656, %659
  %661 = call float @llvm.fmuladd.f32(float %648, float %651, float %660)
  %662 = load ptr, ptr %21, align 8, !tbaa !5
  %663 = load i32, ptr %54, align 4, !tbaa !9
  %664 = sext i32 %663 to i64
  %665 = getelementptr inbounds float, ptr %662, i64 %664
  store float %661, ptr %665, align 4, !tbaa !11
  %666 = load float, ptr %50, align 4, !tbaa !11
  %667 = load ptr, ptr %21, align 8, !tbaa !5
  %668 = load i32, ptr %55, align 4, !tbaa !9
  %669 = sext i32 %668 to i64
  %670 = getelementptr inbounds float, ptr %667, i64 %669
  store float %666, ptr %670, align 4, !tbaa !11
  %671 = load i32, ptr %51, align 4, !tbaa !9
  %672 = add nsw i32 %671, -1
  store i32 %672, ptr %51, align 4, !tbaa !9
  store i32 1, ptr %47, align 4, !tbaa !9
  br label %673

673:                                              ; preds = %698, %602
  %674 = load i32, ptr %51, align 4, !tbaa !9
  %675 = load i32, ptr %47, align 4, !tbaa !9
  %676 = add nsw i32 %674, %675
  %677 = load ptr, ptr %19, align 8, !tbaa !5
  %678 = load i32, ptr %677, align 4, !tbaa !9
  %679 = icmp sle i32 %676, %678
  br i1 %679, label %680, label %732

680:                                              ; preds = %673
  %681 = load ptr, ptr %21, align 8, !tbaa !5
  %682 = load i32, ptr %55, align 4, !tbaa !9
  %683 = sext i32 %682 to i64
  %684 = getelementptr inbounds float, ptr %681, i64 %683
  %685 = load float, ptr %684, align 4, !tbaa !11
  %686 = load ptr, ptr %21, align 8, !tbaa !5
  %687 = load ptr, ptr %32, align 8, !tbaa !5
  %688 = load i32, ptr %51, align 4, !tbaa !9
  %689 = load i32, ptr %47, align 4, !tbaa !9
  %690 = add nsw i32 %688, %689
  %691 = sext i32 %690 to i64
  %692 = getelementptr inbounds i32, ptr %687, i64 %691
  %693 = load i32, ptr %692, align 4, !tbaa !9
  %694 = sext i32 %693 to i64
  %695 = getelementptr inbounds float, ptr %686, i64 %694
  %696 = load float, ptr %695, align 4, !tbaa !11
  %697 = fcmp olt float %685, %696
  br i1 %697, label %698, label %722

698:                                              ; preds = %680
  %699 = load ptr, ptr %32, align 8, !tbaa !5
  %700 = load i32, ptr %51, align 4, !tbaa !9
  %701 = load i32, ptr %47, align 4, !tbaa !9
  %702 = add nsw i32 %700, %701
  %703 = sext i32 %702 to i64
  %704 = getelementptr inbounds i32, ptr %699, i64 %703
  %705 = load i32, ptr %704, align 4, !tbaa !9
  %706 = load ptr, ptr %32, align 8, !tbaa !5
  %707 = load i32, ptr %51, align 4, !tbaa !9
  %708 = load i32, ptr %47, align 4, !tbaa !9
  %709 = add nsw i32 %707, %708
  %710 = sub nsw i32 %709, 1
  %711 = sext i32 %710 to i64
  %712 = getelementptr inbounds i32, ptr %706, i64 %711
  store i32 %705, ptr %712, align 4, !tbaa !9
  %713 = load i32, ptr %55, align 4, !tbaa !9
  %714 = load ptr, ptr %32, align 8, !tbaa !5
  %715 = load i32, ptr %51, align 4, !tbaa !9
  %716 = load i32, ptr %47, align 4, !tbaa !9
  %717 = add nsw i32 %715, %716
  %718 = sext i32 %717 to i64
  %719 = getelementptr inbounds i32, ptr %714, i64 %718
  store i32 %713, ptr %719, align 4, !tbaa !9
  %720 = load i32, ptr %47, align 4, !tbaa !9
  %721 = add nsw i32 %720, 1
  store i32 %721, ptr %47, align 4, !tbaa !9
  br label %673

722:                                              ; preds = %680
  %723 = load i32, ptr %55, align 4, !tbaa !9
  %724 = load ptr, ptr %32, align 8, !tbaa !5
  %725 = load i32, ptr %51, align 4, !tbaa !9
  %726 = load i32, ptr %47, align 4, !tbaa !9
  %727 = add nsw i32 %725, %726
  %728 = sub nsw i32 %727, 1
  %729 = sext i32 %728 to i64
  %730 = getelementptr inbounds i32, ptr %724, i64 %729
  store i32 %723, ptr %730, align 4, !tbaa !9
  br label %731

731:                                              ; preds = %722
  br label %741

732:                                              ; preds = %673
  %733 = load i32, ptr %55, align 4, !tbaa !9
  %734 = load ptr, ptr %32, align 8, !tbaa !5
  %735 = load i32, ptr %51, align 4, !tbaa !9
  %736 = load i32, ptr %47, align 4, !tbaa !9
  %737 = add nsw i32 %735, %736
  %738 = sub nsw i32 %737, 1
  %739 = sext i32 %738 to i64
  %740 = getelementptr inbounds i32, ptr %734, i64 %739
  store i32 %733, ptr %740, align 4, !tbaa !9
  br label %741

741:                                              ; preds = %732, %731
  %742 = load i32, ptr %54, align 4, !tbaa !9
  store i32 %742, ptr %55, align 4, !tbaa !9
  br label %774

743:                                              ; preds = %572
  %744 = load ptr, ptr %18, align 8, !tbaa !5
  %745 = load i32, ptr %744, align 4, !tbaa !9
  %746 = add nsw i32 %745, 1
  store i32 %746, ptr %744, align 4, !tbaa !9
  %747 = load ptr, ptr %21, align 8, !tbaa !5
  %748 = load i32, ptr %55, align 4, !tbaa !9
  %749 = sext i32 %748 to i64
  %750 = getelementptr inbounds float, ptr %747, i64 %749
  %751 = load float, ptr %750, align 4, !tbaa !11
  %752 = load ptr, ptr %27, align 8, !tbaa !5
  %753 = load ptr, ptr %18, align 8, !tbaa !5
  %754 = load i32, ptr %753, align 4, !tbaa !9
  %755 = sext i32 %754 to i64
  %756 = getelementptr inbounds float, ptr %752, i64 %755
  store float %751, ptr %756, align 4, !tbaa !11
  %757 = load ptr, ptr %26, align 8, !tbaa !5
  %758 = load i32, ptr %55, align 4, !tbaa !9
  %759 = sext i32 %758 to i64
  %760 = getelementptr inbounds float, ptr %757, i64 %759
  %761 = load float, ptr %760, align 4, !tbaa !11
  %762 = load ptr, ptr %28, align 8, !tbaa !5
  %763 = load ptr, ptr %18, align 8, !tbaa !5
  %764 = load i32, ptr %763, align 4, !tbaa !9
  %765 = sext i32 %764 to i64
  %766 = getelementptr inbounds float, ptr %762, i64 %765
  store float %761, ptr %766, align 4, !tbaa !11
  %767 = load i32, ptr %55, align 4, !tbaa !9
  %768 = load ptr, ptr %32, align 8, !tbaa !5
  %769 = load ptr, ptr %18, align 8, !tbaa !5
  %770 = load i32, ptr %769, align 4, !tbaa !9
  %771 = sext i32 %770 to i64
  %772 = getelementptr inbounds i32, ptr %768, i64 %771
  store i32 %767, ptr %772, align 4, !tbaa !9
  %773 = load i32, ptr %54, align 4, !tbaa !9
  store i32 %773, ptr %55, align 4, !tbaa !9
  br label %774

774:                                              ; preds = %743, %741
  br label %775

775:                                              ; preds = %774, %518
  br label %485

776:                                              ; preds = %497, %476
  %777 = load ptr, ptr %18, align 8, !tbaa !5
  %778 = load i32, ptr %777, align 4, !tbaa !9
  %779 = add nsw i32 %778, 1
  store i32 %779, ptr %777, align 4, !tbaa !9
  %780 = load ptr, ptr %21, align 8, !tbaa !5
  %781 = load i32, ptr %55, align 4, !tbaa !9
  %782 = sext i32 %781 to i64
  %783 = getelementptr inbounds float, ptr %780, i64 %782
  %784 = load float, ptr %783, align 4, !tbaa !11
  %785 = load ptr, ptr %27, align 8, !tbaa !5
  %786 = load ptr, ptr %18, align 8, !tbaa !5
  %787 = load i32, ptr %786, align 4, !tbaa !9
  %788 = sext i32 %787 to i64
  %789 = getelementptr inbounds float, ptr %785, i64 %788
  store float %784, ptr %789, align 4, !tbaa !11
  %790 = load ptr, ptr %26, align 8, !tbaa !5
  %791 = load i32, ptr %55, align 4, !tbaa !9
  %792 = sext i32 %791 to i64
  %793 = getelementptr inbounds float, ptr %790, i64 %792
  %794 = load float, ptr %793, align 4, !tbaa !11
  %795 = load ptr, ptr %28, align 8, !tbaa !5
  %796 = load ptr, ptr %18, align 8, !tbaa !5
  %797 = load i32, ptr %796, align 4, !tbaa !9
  %798 = sext i32 %797 to i64
  %799 = getelementptr inbounds float, ptr %795, i64 %798
  store float %794, ptr %799, align 4, !tbaa !11
  %800 = load i32, ptr %55, align 4, !tbaa !9
  %801 = load ptr, ptr %32, align 8, !tbaa !5
  %802 = load ptr, ptr %18, align 8, !tbaa !5
  %803 = load i32, ptr %802, align 4, !tbaa !9
  %804 = sext i32 %803 to i64
  %805 = getelementptr inbounds i32, ptr %801, i64 %804
  store i32 %800, ptr %805, align 4, !tbaa !9
  store i32 1, ptr %48, align 4, !tbaa !9
  br label %806

806:                                              ; preds = %814, %776
  %807 = load i32, ptr %48, align 4, !tbaa !9
  %808 = icmp sle i32 %807, 4
  br i1 %808, label %809, label %817

809:                                              ; preds = %806
  %810 = load i32, ptr %48, align 4, !tbaa !9
  %811 = sub nsw i32 %810, 1
  %812 = sext i32 %811 to i64
  %813 = getelementptr inbounds [4 x i32], ptr %45, i64 0, i64 %812
  store i32 0, ptr %813, align 4, !tbaa !9
  br label %814

814:                                              ; preds = %809
  %815 = load i32, ptr %48, align 4, !tbaa !9
  %816 = add nsw i32 %815, 1
  store i32 %816, ptr %48, align 4, !tbaa !9
  br label %806, !llvm.loop !21

817:                                              ; preds = %806
  %818 = load ptr, ptr %19, align 8, !tbaa !5
  %819 = load i32, ptr %818, align 4, !tbaa !9
  store i32 %819, ptr %37, align 4, !tbaa !9
  store i32 1, ptr %48, align 4, !tbaa !9
  br label %820

820:                                              ; preds = %836, %817
  %821 = load i32, ptr %48, align 4, !tbaa !9
  %822 = load i32, ptr %37, align 4, !tbaa !9
  %823 = icmp sle i32 %821, %822
  br i1 %823, label %824, label %839

824:                                              ; preds = %820
  %825 = load ptr, ptr %33, align 8, !tbaa !5
  %826 = load i32, ptr %48, align 4, !tbaa !9
  %827 = sext i32 %826 to i64
  %828 = getelementptr inbounds i32, ptr %825, i64 %827
  %829 = load i32, ptr %828, align 4, !tbaa !9
  store i32 %829, ptr %53, align 4, !tbaa !9
  %830 = load i32, ptr %53, align 4, !tbaa !9
  %831 = sub nsw i32 %830, 1
  %832 = sext i32 %831 to i64
  %833 = getelementptr inbounds [4 x i32], ptr %45, i64 0, i64 %832
  %834 = load i32, ptr %833, align 4, !tbaa !9
  %835 = add nsw i32 %834, 1
  store i32 %835, ptr %833, align 4, !tbaa !9
  br label %836

836:                                              ; preds = %824
  %837 = load i32, ptr %48, align 4, !tbaa !9
  %838 = add nsw i32 %837, 1
  store i32 %838, ptr %48, align 4, !tbaa !9
  br label %820, !llvm.loop !22

839:                                              ; preds = %820
  %840 = getelementptr inbounds [4 x i32], ptr %63, i64 0, i64 0
  store i32 1, ptr %840, align 16, !tbaa !9
  %841 = getelementptr inbounds [4 x i32], ptr %45, i64 0, i64 0
  %842 = load i32, ptr %841, align 16, !tbaa !9
  %843 = add nsw i32 %842, 1
  %844 = getelementptr inbounds [4 x i32], ptr %63, i64 0, i64 1
  store i32 %843, ptr %844, align 4, !tbaa !9
  %845 = getelementptr inbounds [4 x i32], ptr %63, i64 0, i64 1
  %846 = load i32, ptr %845, align 4, !tbaa !9
  %847 = getelementptr inbounds [4 x i32], ptr %45, i64 0, i64 1
  %848 = load i32, ptr %847, align 4, !tbaa !9
  %849 = add nsw i32 %846, %848
  %850 = getelementptr inbounds [4 x i32], ptr %63, i64 0, i64 2
  store i32 %849, ptr %850, align 8, !tbaa !9
  %851 = getelementptr inbounds [4 x i32], ptr %63, i64 0, i64 2
  %852 = load i32, ptr %851, align 8, !tbaa !9
  %853 = getelementptr inbounds [4 x i32], ptr %45, i64 0, i64 2
  %854 = load i32, ptr %853, align 8, !tbaa !9
  %855 = add nsw i32 %852, %854
  %856 = getelementptr inbounds [4 x i32], ptr %63, i64 0, i64 3
  store i32 %855, ptr %856, align 4, !tbaa !9
  %857 = load ptr, ptr %19, align 8, !tbaa !5
  %858 = load i32, ptr %857, align 4, !tbaa !9
  %859 = getelementptr inbounds [4 x i32], ptr %45, i64 0, i64 3
  %860 = load i32, ptr %859, align 4, !tbaa !9
  %861 = sub nsw i32 %858, %860
  %862 = load ptr, ptr %18, align 8, !tbaa !5
  store i32 %861, ptr %862, align 4, !tbaa !9
  %863 = load ptr, ptr %19, align 8, !tbaa !5
  %864 = load i32, ptr %863, align 4, !tbaa !9
  store i32 %864, ptr %37, align 4, !tbaa !9
  store i32 1, ptr %48, align 4, !tbaa !9
  br label %865

865:                                              ; preds = %904, %839
  %866 = load i32, ptr %48, align 4, !tbaa !9
  %867 = load i32, ptr %37, align 4, !tbaa !9
  %868 = icmp sle i32 %866, %867
  br i1 %868, label %869, label %907

869:                                              ; preds = %865
  %870 = load ptr, ptr %32, align 8, !tbaa !5
  %871 = load i32, ptr %48, 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 %56, align 4, !tbaa !9
  %875 = load ptr, ptr %33, align 8, !tbaa !5
  %876 = load i32, ptr %56, 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 %53, align 4, !tbaa !9
  %880 = load i32, ptr %56, align 4, !tbaa !9
  %881 = load ptr, ptr %30, align 8, !tbaa !5
  %882 = load i32, ptr %53, align 4, !tbaa !9
  %883 = sub nsw i32 %882, 1
  %884 = sext i32 %883 to i64
  %885 = getelementptr inbounds [4 x i32], ptr %63, 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 %48, align 4, !tbaa !9
  %890 = load ptr, ptr %31, align 8, !tbaa !5
  %891 = load i32, ptr %53, align 4, !tbaa !9
  %892 = sub nsw i32 %891, 1
  %893 = sext i32 %892 to i64
  %894 = getelementptr inbounds [4 x i32], ptr %63, i64 0, i64 %893
  %895 = load i32, ptr %894, align 4, !tbaa !9
  %896 = sext i32 %895 to i64
  %897 = getelementptr inbounds i32, ptr %890, i64 %896
  store i32 %889, ptr %897, align 4, !tbaa !9
  %898 = load i32, ptr %53, align 4, !tbaa !9
  %899 = sub nsw i32 %898, 1
  %900 = sext i32 %899 to i64
  %901 = getelementptr inbounds [4 x i32], ptr %63, i64 0, i64 %900
  %902 = load i32, ptr %901, align 4, !tbaa !9
  %903 = add nsw i32 %902, 1
  store i32 %903, ptr %901, align 4, !tbaa !9
  br label %904

904:                                              ; preds = %869
  %905 = load i32, ptr %48, align 4, !tbaa !9
  %906 = add nsw i32 %905, 1
  store i32 %906, ptr %48, align 4, !tbaa !9
  br label %865, !llvm.loop !23

907:                                              ; preds = %865
  store i32 1, ptr %47, align 4, !tbaa !9
  store i32 1, ptr %57, align 4, !tbaa !9
  %908 = getelementptr inbounds [4 x i32], ptr %45, i64 0, i64 0
  %909 = load i32, ptr %908, align 16, !tbaa !9
  %910 = getelementptr inbounds [4 x i32], ptr %45, i64 0, i64 1
  %911 = load i32, ptr %910, align 4, !tbaa !9
  %912 = add nsw i32 %909, %911
  %913 = load ptr, ptr %20, align 8, !tbaa !5
  %914 = load i32, ptr %913, align 4, !tbaa !9
  %915 = mul nsw i32 %912, %914
  %916 = add nsw i32 %915, 1
  store i32 %916, ptr %58, align 4, !tbaa !9
  %917 = getelementptr inbounds [4 x i32], ptr %45, i64 0, i64 0
  %918 = load i32, ptr %917, align 16, !tbaa !9
  store i32 %918, ptr %37, align 4, !tbaa !9
  store i32 1, ptr %48, align 4, !tbaa !9
  br label %919

919:                                              ; preds = %956, %907
  %920 = load i32, ptr %48, align 4, !tbaa !9
  %921 = load i32, ptr %37, align 4, !tbaa !9
  %922 = icmp sle i32 %920, %921
  br i1 %922, label %923, label %959

923:                                              ; preds = %919
  %924 = load ptr, ptr %30, align 8, !tbaa !5
  %925 = load i32, ptr %47, align 4, !tbaa !9
  %926 = sext i32 %925 to i64
  %927 = getelementptr inbounds i32, ptr %924, i64 %926
  %928 = load i32, ptr %927, align 4, !tbaa !9
  store i32 %928, ptr %56, align 4, !tbaa !9
  %929 = load ptr, ptr %20, align 8, !tbaa !5
  %930 = load ptr, ptr %22, align 8, !tbaa !5
  %931 = load i32, ptr %56, align 4, !tbaa !9
  %932 = load i32, ptr %35, align 4, !tbaa !9
  %933 = mul nsw i32 %931, %932
  %934 = add nsw i32 %933, 1
  %935 = sext i32 %934 to i64
  %936 = getelementptr inbounds float, ptr %930, i64 %935
  %937 = load ptr, ptr %29, align 8, !tbaa !5
  %938 = load i32, ptr %57, align 4, !tbaa !9
  %939 = sext i32 %938 to i64
  %940 = getelementptr inbounds float, ptr %937, i64 %939
  call void @scopy_(ptr noundef %929, ptr noundef %936, ptr noundef @c__1, ptr noundef %940, ptr noundef @c__1)
  %941 = load ptr, ptr %21, align 8, !tbaa !5
  %942 = load i32, ptr %56, align 4, !tbaa !9
  %943 = sext i32 %942 to i64
  %944 = getelementptr inbounds float, ptr %941, i64 %943
  %945 = load float, ptr %944, align 4, !tbaa !11
  %946 = load ptr, ptr %26, align 8, !tbaa !5
  %947 = load i32, ptr %47, align 4, !tbaa !9
  %948 = sext i32 %947 to i64
  %949 = getelementptr inbounds float, ptr %946, i64 %948
  store float %945, ptr %949, align 4, !tbaa !11
  %950 = load i32, ptr %47, align 4, !tbaa !9
  %951 = add nsw i32 %950, 1
  store i32 %951, ptr %47, align 4, !tbaa !9
  %952 = load ptr, ptr %20, align 8, !tbaa !5
  %953 = load i32, ptr %952, align 4, !tbaa !9
  %954 = load i32, ptr %57, align 4, !tbaa !9
  %955 = add nsw i32 %954, %953
  store i32 %955, ptr %57, align 4, !tbaa !9
  br label %956

956:                                              ; preds = %923
  %957 = load i32, ptr %48, align 4, !tbaa !9
  %958 = add nsw i32 %957, 1
  store i32 %958, ptr %48, align 4, !tbaa !9
  br label %919, !llvm.loop !24

959:                                              ; preds = %919
  %960 = getelementptr inbounds [4 x i32], ptr %45, i64 0, i64 1
  %961 = load i32, ptr %960, align 4, !tbaa !9
  store i32 %961, ptr %37, align 4, !tbaa !9
  store i32 1, ptr %48, align 4, !tbaa !9
  br label %962

962:                                              ; preds = %1016, %959
  %963 = load i32, ptr %48, align 4, !tbaa !9
  %964 = load i32, ptr %37, align 4, !tbaa !9
  %965 = icmp sle i32 %963, %964
  br i1 %965, label %966, label %1019

966:                                              ; preds = %962
  %967 = load ptr, ptr %30, align 8, !tbaa !5
  %968 = load i32, ptr %47, align 4, !tbaa !9
  %969 = sext i32 %968 to i64
  %970 = getelementptr inbounds i32, ptr %967, i64 %969
  %971 = load i32, ptr %970, align 4, !tbaa !9
  store i32 %971, ptr %56, align 4, !tbaa !9
  %972 = load ptr, ptr %20, align 8, !tbaa !5
  %973 = load ptr, ptr %22, align 8, !tbaa !5
  %974 = load i32, ptr %56, align 4, !tbaa !9
  %975 = load i32, ptr %35, align 4, !tbaa !9
  %976 = mul nsw i32 %974, %975
  %977 = add nsw i32 %976, 1
  %978 = sext i32 %977 to i64
  %979 = getelementptr inbounds float, ptr %973, i64 %978
  %980 = load ptr, ptr %29, align 8, !tbaa !5
  %981 = load i32, ptr %57, align 4, !tbaa !9
  %982 = sext i32 %981 to i64
  %983 = getelementptr inbounds float, ptr %980, i64 %982
  call void @scopy_(ptr noundef %972, ptr noundef %979, ptr noundef @c__1, ptr noundef %983, ptr noundef @c__1)
  %984 = load ptr, ptr %22, align 8, !tbaa !5
  %985 = load ptr, ptr %20, align 8, !tbaa !5
  %986 = load i32, ptr %985, align 4, !tbaa !9
  %987 = add nsw i32 %986, 1
  %988 = load i32, ptr %56, align 4, !tbaa !9
  %989 = load i32, ptr %35, align 4, !tbaa !9
  %990 = mul nsw i32 %988, %989
  %991 = add nsw i32 %987, %990
  %992 = sext i32 %991 to i64
  %993 = getelementptr inbounds float, ptr %984, i64 %992
  %994 = load ptr, ptr %29, align 8, !tbaa !5
  %995 = load i32, ptr %58, align 4, !tbaa !9
  %996 = sext i32 %995 to i64
  %997 = getelementptr inbounds float, ptr %994, i64 %996
  call void @scopy_(ptr noundef %52, ptr noundef %993, ptr noundef @c__1, ptr noundef %997, ptr noundef @c__1)
  %998 = load ptr, ptr %21, align 8, !tbaa !5
  %999 = load i32, ptr %56, align 4, !tbaa !9
  %1000 = sext i32 %999 to i64
  %1001 = getelementptr inbounds float, ptr %998, i64 %1000
  %1002 = load float, ptr %1001, align 4, !tbaa !11
  %1003 = load ptr, ptr %26, align 8, !tbaa !5
  %1004 = load i32, ptr %47, align 4, !tbaa !9
  %1005 = sext i32 %1004 to i64
  %1006 = getelementptr inbounds float, ptr %1003, i64 %1005
  store float %1002, ptr %1006, align 4, !tbaa !11
  %1007 = load i32, ptr %47, align 4, !tbaa !9
  %1008 = add nsw i32 %1007, 1
  store i32 %1008, ptr %47, align 4, !tbaa !9
  %1009 = load ptr, ptr %20, align 8, !tbaa !5
  %1010 = load i32, ptr %1009, align 4, !tbaa !9
  %1011 = load i32, ptr %57, align 4, !tbaa !9
  %1012 = add nsw i32 %1011, %1010
  store i32 %1012, ptr %57, align 4, !tbaa !9
  %1013 = load i32, ptr %52, align 4, !tbaa !9
  %1014 = load i32, ptr %58, align 4, !tbaa !9
  %1015 = add nsw i32 %1014, %1013
  store i32 %1015, ptr %58, align 4, !tbaa !9
  br label %1016

1016:                                             ; preds = %966
  %1017 = load i32, ptr %48, align 4, !tbaa !9
  %1018 = add nsw i32 %1017, 1
  store i32 %1018, ptr %48, align 4, !tbaa !9
  br label %962, !llvm.loop !25

1019:                                             ; preds = %962
  %1020 = getelementptr inbounds [4 x i32], ptr %45, i64 0, i64 2
  %1021 = load i32, ptr %1020, align 8, !tbaa !9
  store i32 %1021, ptr %37, align 4, !tbaa !9
  store i32 1, ptr %48, align 4, !tbaa !9
  br label %1022

1022:                                             ; preds = %1060, %1019
  %1023 = load i32, ptr %48, align 4, !tbaa !9
  %1024 = load i32, ptr %37, align 4, !tbaa !9
  %1025 = icmp sle i32 %1023, %1024
  br i1 %1025, label %1026, label %1063

1026:                                             ; preds = %1022
  %1027 = load ptr, ptr %30, align 8, !tbaa !5
  %1028 = load i32, ptr %47, align 4, !tbaa !9
  %1029 = sext i32 %1028 to i64
  %1030 = getelementptr inbounds i32, ptr %1027, i64 %1029
  %1031 = load i32, ptr %1030, align 4, !tbaa !9
  store i32 %1031, ptr %56, align 4, !tbaa !9
  %1032 = load ptr, ptr %22, align 8, !tbaa !5
  %1033 = load ptr, ptr %20, align 8, !tbaa !5
  %1034 = load i32, ptr %1033, align 4, !tbaa !9
  %1035 = add nsw i32 %1034, 1
  %1036 = load i32, ptr %56, align 4, !tbaa !9
  %1037 = load i32, ptr %35, align 4, !tbaa !9
  %1038 = mul nsw i32 %1036, %1037
  %1039 = add nsw i32 %1035, %1038
  %1040 = sext i32 %1039 to i64
  %1041 = getelementptr inbounds float, ptr %1032, i64 %1040
  %1042 = load ptr, ptr %29, align 8, !tbaa !5
  %1043 = load i32, ptr %58, align 4, !tbaa !9
  %1044 = sext i32 %1043 to i64
  %1045 = getelementptr inbounds float, ptr %1042, i64 %1044
  call void @scopy_(ptr noundef %52, ptr noundef %1041, ptr noundef @c__1, ptr noundef %1045, ptr noundef @c__1)
  %1046 = load ptr, ptr %21, align 8, !tbaa !5
  %1047 = load i32, ptr %56, align 4, !tbaa !9
  %1048 = sext i32 %1047 to i64
  %1049 = getelementptr inbounds float, ptr %1046, i64 %1048
  %1050 = load float, ptr %1049, align 4, !tbaa !11
  %1051 = load ptr, ptr %26, align 8, !tbaa !5
  %1052 = load i32, ptr %47, align 4, !tbaa !9
  %1053 = sext i32 %1052 to i64
  %1054 = getelementptr inbounds float, ptr %1051, i64 %1053
  store float %1050, ptr %1054, align 4, !tbaa !11
  %1055 = load i32, ptr %47, align 4, !tbaa !9
  %1056 = add nsw i32 %1055, 1
  store i32 %1056, ptr %47, align 4, !tbaa !9
  %1057 = load i32, ptr %52, align 4, !tbaa !9
  %1058 = load i32, ptr %58, align 4, !tbaa !9
  %1059 = add nsw i32 %1058, %1057
  store i32 %1059, ptr %58, align 4, !tbaa !9
  br label %1060

1060:                                             ; preds = %1026
  %1061 = load i32, ptr %48, align 4, !tbaa !9
  %1062 = add nsw i32 %1061, 1
  store i32 %1062, ptr %48, align 4, !tbaa !9
  br label %1022, !llvm.loop !26

1063:                                             ; preds = %1022
  %1064 = load i32, ptr %58, align 4, !tbaa !9
  store i32 %1064, ptr %57, align 4, !tbaa !9
  %1065 = getelementptr inbounds [4 x i32], ptr %45, i64 0, i64 3
  %1066 = load i32, ptr %1065, align 4, !tbaa !9
  store i32 %1066, ptr %37, align 4, !tbaa !9
  store i32 1, ptr %48, align 4, !tbaa !9
  br label %1067

1067:                                             ; preds = %1104, %1063
  %1068 = load i32, ptr %48, align 4, !tbaa !9
  %1069 = load i32, ptr %37, align 4, !tbaa !9
  %1070 = icmp sle i32 %1068, %1069
  br i1 %1070, label %1071, label %1107

1071:                                             ; preds = %1067
  %1072 = load ptr, ptr %30, align 8, !tbaa !5
  %1073 = load i32, ptr %47, align 4, !tbaa !9
  %1074 = sext i32 %1073 to i64
  %1075 = getelementptr inbounds i32, ptr %1072, i64 %1074
  %1076 = load i32, ptr %1075, align 4, !tbaa !9
  store i32 %1076, ptr %56, align 4, !tbaa !9
  %1077 = load ptr, ptr %19, align 8, !tbaa !5
  %1078 = load ptr, ptr %22, align 8, !tbaa !5
  %1079 = load i32, ptr %56, align 4, !tbaa !9
  %1080 = load i32, ptr %35, align 4, !tbaa !9
  %1081 = mul nsw i32 %1079, %1080
  %1082 = add nsw i32 %1081, 1
  %1083 = sext i32 %1082 to i64
  %1084 = getelementptr inbounds float, ptr %1078, i64 %1083
  %1085 = load ptr, ptr %29, align 8, !tbaa !5
  %1086 = load i32, ptr %58, align 4, !tbaa !9
  %1087 = sext i32 %1086 to i64
  %1088 = getelementptr inbounds float, ptr %1085, i64 %1087
  call void @scopy_(ptr noundef %1077, ptr noundef %1084, ptr noundef @c__1, ptr noundef %1088, ptr noundef @c__1)
  %1089 = load ptr, ptr %19, align 8, !tbaa !5
  %1090 = load i32, ptr %1089, align 4, !tbaa !9
  %1091 = load i32, ptr %58, align 4, !tbaa !9
  %1092 = add nsw i32 %1091, %1090
  store i32 %1092, ptr %58, align 4, !tbaa !9
  %1093 = load ptr, ptr %21, align 8, !tbaa !5
  %1094 = load i32, ptr %56, align 4, !tbaa !9
  %1095 = sext i32 %1094 to i64
  %1096 = getelementptr inbounds float, ptr %1093, i64 %1095
  %1097 = load float, ptr %1096, align 4, !tbaa !11
  %1098 = load ptr, ptr %26, align 8, !tbaa !5
  %1099 = load i32, ptr %47, align 4, !tbaa !9
  %1100 = sext i32 %1099 to i64
  %1101 = getelementptr inbounds float, ptr %1098, i64 %1100
  store float %1097, ptr %1101, align 4, !tbaa !11
  %1102 = load i32, ptr %47, align 4, !tbaa !9
  %1103 = add nsw i32 %1102, 1
  store i32 %1103, ptr %47, align 4, !tbaa !9
  br label %1104

1104:                                             ; preds = %1071
  %1105 = load i32, ptr %48, align 4, !tbaa !9
  %1106 = add nsw i32 %1105, 1
  store i32 %1106, ptr %48, align 4, !tbaa !9
  br label %1067, !llvm.loop !27

1107:                                             ; preds = %1067
  %1108 = load ptr, ptr %18, align 8, !tbaa !5
  %1109 = load i32, ptr %1108, align 4, !tbaa !9
  %1110 = load ptr, ptr %19, align 8, !tbaa !5
  %1111 = load i32, ptr %1110, align 4, !tbaa !9
  %1112 = icmp slt i32 %1109, %1111
  br i1 %1112, label %1113, label %1148

1113:                                             ; preds = %1107
  %1114 = load ptr, ptr %19, align 8, !tbaa !5
  %1115 = getelementptr inbounds [4 x i32], ptr %45, i64 0, i64 3
  %1116 = load ptr, ptr %29, align 8, !tbaa !5
  %1117 = load i32, ptr %57, align 4, !tbaa !9
  %1118 = sext i32 %1117 to i64
  %1119 = getelementptr inbounds float, ptr %1116, i64 %1118
  %1120 = load ptr, ptr %19, align 8, !tbaa !5
  %1121 = load ptr, ptr %22, align 8, !tbaa !5
  %1122 = load ptr, ptr %18, align 8, !tbaa !5
  %1123 = load i32, ptr %1122, align 4, !tbaa !9
  %1124 = add nsw i32 %1123, 1
  %1125 = load i32, ptr %35, align 4, !tbaa !9
  %1126 = mul nsw i32 %1124, %1125
  %1127 = add nsw i32 %1126, 1
  %1128 = sext i32 %1127 to i64
  %1129 = getelementptr inbounds float, ptr %1121, i64 %1128
  %1130 = load ptr, ptr %23, align 8, !tbaa !5
  call void @slacpy_(ptr noundef @.str.2, ptr noundef %1114, ptr noundef %1115, ptr noundef %1119, ptr noundef %1120, ptr noundef %1129, ptr noundef %1130)
  %1131 = load ptr, ptr %19, align 8, !tbaa !5
  %1132 = load i32, ptr %1131, align 4, !tbaa !9
  %1133 = load ptr, ptr %18, align 8, !tbaa !5
  %1134 = load i32, ptr %1133, align 4, !tbaa !9
  %1135 = sub nsw i32 %1132, %1134
  store i32 %1135, ptr %37, align 4, !tbaa !9
  %1136 = load ptr, ptr %26, align 8, !tbaa !5
  %1137 = load ptr, ptr %18, align 8, !tbaa !5
  %1138 = load i32, ptr %1137, align 4, !tbaa !9
  %1139 = add nsw i32 %1138, 1
  %1140 = sext i32 %1139 to i64
  %1141 = getelementptr inbounds float, ptr %1136, i64 %1140
  %1142 = load ptr, ptr %21, align 8, !tbaa !5
  %1143 = load ptr, ptr %18, align 8, !tbaa !5
  %1144 = load i32, ptr %1143, align 4, !tbaa !9
  %1145 = add nsw i32 %1144, 1
  %1146 = sext i32 %1145 to i64
  %1147 = getelementptr inbounds float, ptr %1142, i64 %1146
  call void @scopy_(ptr noundef %37, ptr noundef %1141, ptr noundef @c__1, ptr noundef %1147, ptr noundef @c__1)
  br label %1148

1148:                                             ; preds = %1113, %1107
  store i32 1, ptr %48, align 4, !tbaa !9
  br label %1149

1149:                                             ; preds = %1162, %1148
  %1150 = load i32, ptr %48, align 4, !tbaa !9
  %1151 = icmp sle i32 %1150, 4
  br i1 %1151, label %1152, label %1165

1152:                                             ; preds = %1149
  %1153 = load i32, ptr %48, align 4, !tbaa !9
  %1154 = sub nsw i32 %1153, 1
  %1155 = sext i32 %1154 to i64
  %1156 = getelementptr inbounds [4 x i32], ptr %45, i64 0, i64 %1155
  %1157 = load i32, ptr %1156, align 4, !tbaa !9
  %1158 = load ptr, ptr %33, align 8, !tbaa !5
  %1159 = load i32, ptr %48, align 4, !tbaa !9
  %1160 = sext i32 %1159 to i64
  %1161 = getelementptr inbounds i32, ptr %1158, i64 %1160
  store i32 %1157, ptr %1161, align 4, !tbaa !9
  br label %1162

1162:                                             ; preds = %1152
  %1163 = load i32, ptr %48, align 4, !tbaa !9
  %1164 = add nsw i32 %1163, 1
  store i32 %1164, ptr %48, align 4, !tbaa !9
  br label %1149, !llvm.loop !28

1165:                                             ; preds = %1149
  br label %1166

1166:                                             ; preds = %1165, %377
  store i32 1, ptr %64, align 4
  br label %1167

1167:                                             ; preds = %1166, %156, %147
  call void @llvm.lifetime.end.p0(i64 16, ptr %63) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %45) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #5
  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 @sscal_(ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

; Function Attrs: nounwind
declare double @sqrt(double noundef) #3

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

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

declare float @slamch_(ptr noundef) #2

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

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

declare float @slapy2_(ptr noundef, ptr noundef) #2

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

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

; 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 "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"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 = !{!"float", !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_b3 = external hidden global float, align 4
@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

; Function Attrs: nounwind uwtable
define dso_local void @slaed2_(ptr nocapture noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr nocapture noundef %6, ptr nocapture noundef %7, ptr noundef %8, ptr noundef %9, ptr nocapture noundef writeonly %10, ptr noundef %11, ptr nocapture noundef %12, ptr noundef %13, ptr nocapture noundef %14, ptr nocapture noundef %15, ptr nocapture noundef writeonly %16) local_unnamed_addr #0 {
  %18 = alloca i32, align 4
  %19 = alloca [4 x i32], align 16
  %20 = alloca float, align 4
  %21 = alloca float, align 4
  %22 = alloca float, align 4
  %23 = alloca i32, align 4
  %24 = alloca [4 x i32], align 16
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %18) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %19) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %20) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %21) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %22) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %24) #7
  %25 = getelementptr inbounds i8, ptr %3, i64 -4
  %26 = load i32, ptr %5, align 4, !tbaa !5
  %narrow = xor i32 %26, -1
  %27 = sext i32 %narrow to i64
  %28 = getelementptr inbounds float, ptr %4, i64 %27
  %29 = getelementptr inbounds i8, ptr %6, i64 -4
  %30 = getelementptr inbounds i8, ptr %8, i64 -4
  %31 = getelementptr inbounds i8, ptr %9, i64 -4
  %32 = getelementptr inbounds i8, ptr %10, i64 -4
  %33 = getelementptr inbounds i8, ptr %11, i64 -4
  %34 = getelementptr inbounds i8, ptr %12, i64 -4
  %35 = getelementptr inbounds i8, ptr %13, i64 -4
  %36 = getelementptr inbounds i8, ptr %14, i64 -4
  %37 = getelementptr inbounds i8, ptr %15, i64 -4
  store i32 0, ptr %16, align 4, !tbaa !5
  %38 = load i32, ptr %1, align 4, !tbaa !5
  %39 = icmp slt i32 %38, 0
  br i1 %39, label %.thread, label %40

40:                                               ; preds = %17
  %41 = load i32, ptr %5, align 4, !tbaa !5
  %spec.select = tail call i32 @llvm.umax.i32(i32 %38, i32 1)
  %42 = icmp slt i32 %41, %spec.select
  br i1 %42, label %.thread, label %43

43:                                               ; preds = %40
  store i32 1, ptr %18, align 4, !tbaa !5
  %44 = lshr i32 %38, 1
  %45 = icmp ugt i32 %38, 1
  %46 = zext i1 %45 to i32
  %47 = load i32, ptr %2, align 4, !tbaa !5
  %48 = icmp slt i32 %47, %46
  %49 = icmp slt i32 %44, %47
  %or.cond = or i1 %48, %49
  br i1 %or.cond, label %.thread, label %51

.thread:                                          ; preds = %43, %40, %17
  %.sink = phi i32 [ -2, %17 ], [ -6, %40 ], [ -3, %43 ]
  %.neg = phi i32 [ 2, %17 ], [ 6, %40 ], [ 3, %43 ]
  store i32 %.sink, ptr %16, align 4, !tbaa !5
  store i32 %.neg, ptr %18, align 4, !tbaa !5
  %50 = call i32 @xerbla_(ptr noundef nonnull @.str, ptr noundef nonnull %18, i32 noundef 6) #7
  br label %.loopexit

51:                                               ; preds = %43
  %52 = icmp eq i32 %38, 0
  br i1 %52, label %.loopexit, label %53

53:                                               ; preds = %51
  %54 = sub nsw i32 %38, %47
  store i32 %54, ptr %23, align 4, !tbaa !5
  %55 = load float, ptr %7, align 4, !tbaa !9
  %56 = fcmp olt float %55, 0.000000e+00
  br i1 %56, label %57, label %61

57:                                               ; preds = %53
  %58 = zext nneg i32 %47 to i64
  %59 = getelementptr float, ptr %30, i64 %58
  %60 = getelementptr i8, ptr %59, i64 4
  call void @sscal_(ptr noundef nonnull %23, ptr noundef nonnull @c_b3, ptr noundef nonnull %60, ptr noundef nonnull @c__1) #7
  br label %61

61:                                               ; preds = %57, %53
  store float 0x3FE6A09E60000000, ptr %22, align 4, !tbaa !9
  call void @sscal_(ptr noundef nonnull %1, ptr noundef nonnull %22, ptr noundef %8, ptr noundef nonnull @c__1) #7
  %62 = load float, ptr %7, align 4, !tbaa !9
  %63 = fmul float %62, 2.000000e+00
  %64 = fcmp oge float %63, 0.000000e+00
  %65 = fneg float %63
  %66 = select i1 %64, float %63, float %65
  store float %66, ptr %7, align 4, !tbaa !9
  %67 = load i32, ptr %1, align 4, !tbaa !5
  %.not437460.not = icmp slt i32 %47, %67
  br i1 %.not437460.not, label %.lr.ph.preheader, label %._crit_edge

.lr.ph.preheader:                                 ; preds = %61
  %68 = zext i32 %47 to i64
  %69 = add nuw nsw i64 %68, 1
  %70 = add nuw i32 %67, 1
  %71 = xor i32 %47, -1
  %72 = add i32 %67, %71
  %73 = zext i32 %72 to i64
  %74 = add nuw nsw i64 %73, 1
  %min.iters.check = icmp ult i32 %72, 15
  br i1 %min.iters.check, label %.lr.ph.preheader747, label %vector.memcheck

vector.memcheck:                                  ; preds = %.lr.ph.preheader
  %75 = shl nuw nsw i64 %68, 2
  %scevgep = getelementptr i8, ptr %6, i64 %75
  %76 = xor i32 %47, -1
  %77 = add i32 %67, %76
  %78 = zext i32 %77 to i64
  %79 = add nuw nsw i64 %68, %78
  %80 = shl nuw nsw i64 %79, 2
  %81 = getelementptr i8, ptr %6, i64 %80
  %scevgep696 = getelementptr i8, ptr %81, i64 4
  %scevgep697 = getelementptr i8, ptr %2, i64 4
  %bound0 = icmp ult ptr %scevgep, %scevgep697
  %bound1 = icmp ugt ptr %scevgep696, %2
  %found.conflict = and i1 %bound0, %bound1
  br i1 %found.conflict, label %.lr.ph.preheader747, label %vector.ph

vector.ph:                                        ; preds = %vector.memcheck
  %n.vec = and i64 %74, 8589934584
  %ind.end = add nuw nsw i64 %69, %n.vec
  %82 = load i32, ptr %2, align 4, !tbaa !5, !alias.scope !11
  %broadcast.splatinsert699 = insertelement <4 x i32> poison, i32 %82, i64 0
  %broadcast.splat700 = shufflevector <4 x i32> %broadcast.splatinsert699, <4 x i32> poison, <4 x i32> zeroinitializer
  %83 = getelementptr i32, ptr %6, i64 %68
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %84 = getelementptr i32, ptr %83, i64 %index
  %85 = getelementptr inbounds i8, ptr %84, i64 16
  %wide.load = load <4 x i32>, ptr %84, align 4, !tbaa !5, !alias.scope !14, !noalias !11
  %wide.load698 = load <4 x i32>, ptr %85, align 4, !tbaa !5, !alias.scope !14, !noalias !11
  %86 = add nsw <4 x i32> %wide.load, %broadcast.splat700
  %87 = add nsw <4 x i32> %wide.load698, %broadcast.splat700
  store <4 x i32> %86, ptr %84, align 4, !tbaa !5, !alias.scope !14, !noalias !11
  store <4 x i32> %87, ptr %85, align 4, !tbaa !5, !alias.scope !14, !noalias !11
  %index.next = add nuw i64 %index, 8
  %88 = icmp eq i64 %index.next, %n.vec
  br i1 %88, label %middle.block, label %vector.body, !llvm.loop !16

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

.lr.ph.preheader747:                              ; preds = %middle.block, %vector.memcheck, %.lr.ph.preheader
  %indvars.iv.ph = phi i64 [ %69, %vector.memcheck ], [ %69, %.lr.ph.preheader ], [ %ind.end, %middle.block ]
  %89 = add i32 %67, 1
  %90 = trunc i64 %indvars.iv.ph to i32
  %91 = sub i32 %89, %90
  %92 = sub i32 %67, %90
  %xtraiter = and i32 %91, 3
  %lcmp.mod.not = icmp eq i32 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.lr.ph.prol.loopexit, label %.lr.ph.prol

.lr.ph.prol:                                      ; preds = %.lr.ph.preheader747, %.lr.ph.prol
  %indvars.iv.prol = phi i64 [ %indvars.iv.next.prol, %.lr.ph.prol ], [ %indvars.iv.ph, %.lr.ph.preheader747 ]
  %prol.iter = phi i32 [ %prol.iter.next, %.lr.ph.prol ], [ 0, %.lr.ph.preheader747 ]
  %93 = load i32, ptr %2, align 4, !tbaa !5
  %94 = getelementptr inbounds i32, ptr %29, i64 %indvars.iv.prol
  %95 = load i32, ptr %94, align 4, !tbaa !5
  %96 = add nsw i32 %95, %93
  store i32 %96, ptr %94, align 4, !tbaa !5
  %indvars.iv.next.prol = add nuw nsw i64 %indvars.iv.prol, 1
  %prol.iter.next = add i32 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i32 %prol.iter.next, %xtraiter
  br i1 %prol.iter.cmp.not, label %.lr.ph.prol.loopexit, label %.lr.ph.prol, !llvm.loop !20

.lr.ph.prol.loopexit:                             ; preds = %.lr.ph.prol, %.lr.ph.preheader747
  %indvars.iv.unr = phi i64 [ %indvars.iv.ph, %.lr.ph.preheader747 ], [ %indvars.iv.next.prol, %.lr.ph.prol ]
  %97 = icmp ult i32 %92, 3
  br i1 %97, label %._crit_edge.loopexit, label %.lr.ph.preheader747.new

.lr.ph.preheader747.new:                          ; preds = %.lr.ph.prol.loopexit
  %invariant.gep782 = getelementptr i8, ptr %29, i64 8
  %invariant.gep784 = getelementptr i8, ptr %29, i64 12
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph, %.lr.ph.preheader747.new
  %indvars.iv = phi i64 [ %indvars.iv.unr, %.lr.ph.preheader747.new ], [ %indvars.iv.next.3, %.lr.ph ]
  %98 = load i32, ptr %2, align 4, !tbaa !5
  %99 = getelementptr inbounds i32, ptr %29, i64 %indvars.iv
  %100 = load i32, ptr %99, align 4, !tbaa !5
  %101 = add nsw i32 %100, %98
  store i32 %101, ptr %99, align 4, !tbaa !5
  %102 = load i32, ptr %2, align 4, !tbaa !5
  %103 = getelementptr i32, ptr %6, i64 %indvars.iv
  %104 = load i32, ptr %103, align 4, !tbaa !5
  %105 = add nsw i32 %104, %102
  store i32 %105, ptr %103, align 4, !tbaa !5
  %106 = load i32, ptr %2, align 4, !tbaa !5
  %gep783 = getelementptr i32, ptr %invariant.gep782, i64 %indvars.iv
  %107 = load i32, ptr %gep783, align 4, !tbaa !5
  %108 = add nsw i32 %107, %106
  store i32 %108, ptr %gep783, align 4, !tbaa !5
  %109 = load i32, ptr %2, align 4, !tbaa !5
  %gep785 = getelementptr i32, ptr %invariant.gep784, i64 %indvars.iv
  %110 = load i32, ptr %gep785, align 4, !tbaa !5
  %111 = add nsw i32 %110, %109
  store i32 %111, ptr %gep785, align 4, !tbaa !5
  %indvars.iv.next.3 = add nuw nsw i64 %indvars.iv, 4
  %lftr.wideiv.3 = trunc i64 %indvars.iv.next.3 to i32
  %exitcond.not.3 = icmp eq i32 %70, %lftr.wideiv.3
  br i1 %exitcond.not.3, label %._crit_edge.loopexit, label %.lr.ph, !llvm.loop !22

._crit_edge.loopexit:                             ; preds = %.lr.ph.prol.loopexit, %.lr.ph, %middle.block
  %.pre = load i32, ptr %1, align 4, !tbaa !5
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %61
  %112 = phi i32 [ %.pre, %._crit_edge.loopexit ], [ %67, %61 ]
  store i32 %112, ptr %18, align 4, !tbaa !5
  %.not438462 = icmp slt i32 %112, 1
  br i1 %.not438462, label %._crit_edge466, label %.lr.ph465.preheader

.lr.ph465.preheader:                              ; preds = %._crit_edge
  %113 = zext nneg i32 %112 to i64
  %xtraiter748 = and i64 %113, 3
  %114 = icmp ult i32 %112, 4
  br i1 %114, label %._crit_edge466.loopexit.unr-lcssa, label %.lr.ph465.preheader.new

.lr.ph465.preheader.new:                          ; preds = %.lr.ph465.preheader
  %unroll_iter = and i64 %113, 2147483644
  br label %.lr.ph465

.lr.ph465:                                        ; preds = %.lr.ph465, %.lr.ph465.preheader.new
  %indvars.iv581 = phi i64 [ 1, %.lr.ph465.preheader.new ], [ %indvars.iv.next582.3, %.lr.ph465 ]
  %niter = phi i64 [ 0, %.lr.ph465.preheader.new ], [ %niter.next.3, %.lr.ph465 ]
  %115 = getelementptr inbounds i32, ptr %29, i64 %indvars.iv581
  %116 = load i32, ptr %115, align 4, !tbaa !5
  %117 = sext i32 %116 to i64
  %118 = getelementptr inbounds float, ptr %25, i64 %117
  %119 = load float, ptr %118, align 4, !tbaa !9
  %120 = getelementptr inbounds float, ptr %31, i64 %indvars.iv581
  store float %119, ptr %120, align 4, !tbaa !9
  %121 = getelementptr i32, ptr %6, i64 %indvars.iv581
  %122 = load i32, ptr %121, align 4, !tbaa !5
  %123 = sext i32 %122 to i64
  %124 = getelementptr inbounds float, ptr %25, i64 %123
  %125 = load float, ptr %124, align 4, !tbaa !9
  %126 = getelementptr float, ptr %9, i64 %indvars.iv581
  store float %125, ptr %126, align 4, !tbaa !9
  %indvars.iv.next582.1 = add nuw nsw i64 %indvars.iv581, 2
  %127 = getelementptr inbounds i32, ptr %29, i64 %indvars.iv.next582.1
  %128 = load i32, ptr %127, align 4, !tbaa !5
  %129 = sext i32 %128 to i64
  %130 = getelementptr inbounds float, ptr %25, i64 %129
  %131 = load float, ptr %130, align 4, !tbaa !9
  %132 = getelementptr inbounds float, ptr %31, i64 %indvars.iv.next582.1
  store float %131, ptr %132, align 4, !tbaa !9
  %indvars.iv.next582.2 = add nuw nsw i64 %indvars.iv581, 3
  %133 = getelementptr inbounds i32, ptr %29, i64 %indvars.iv.next582.2
  %134 = load i32, ptr %133, align 4, !tbaa !5
  %135 = sext i32 %134 to i64
  %136 = getelementptr inbounds float, ptr %25, i64 %135
  %137 = load float, ptr %136, align 4, !tbaa !9
  %138 = getelementptr inbounds float, ptr %31, i64 %indvars.iv.next582.2
  store float %137, ptr %138, align 4, !tbaa !9
  %indvars.iv.next582.3 = add nuw nsw i64 %indvars.iv581, 4
  %niter.next.3 = add i64 %niter, 4
  %niter.ncmp.3 = icmp eq i64 %niter.next.3, %unroll_iter
  br i1 %niter.ncmp.3, label %._crit_edge466.loopexit.unr-lcssa, label %.lr.ph465, !llvm.loop !23

._crit_edge466.loopexit.unr-lcssa:                ; preds = %.lr.ph465, %.lr.ph465.preheader
  %indvars.iv581.unr = phi i64 [ 1, %.lr.ph465.preheader ], [ %indvars.iv.next582.3, %.lr.ph465 ]
  %lcmp.mod749.not = icmp eq i64 %xtraiter748, 0
  br i1 %lcmp.mod749.not, label %._crit_edge466, label %.lr.ph465.epil

.lr.ph465.epil:                                   ; preds = %._crit_edge466.loopexit.unr-lcssa, %.lr.ph465.epil
  %indvars.iv581.epil = phi i64 [ %indvars.iv.next582.epil, %.lr.ph465.epil ], [ %indvars.iv581.unr, %._crit_edge466.loopexit.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.lr.ph465.epil ], [ 0, %._crit_edge466.loopexit.unr-lcssa ]
  %139 = getelementptr inbounds i32, ptr %29, i64 %indvars.iv581.epil
  %140 = load i32, ptr %139, align 4, !tbaa !5
  %141 = sext i32 %140 to i64
  %142 = getelementptr inbounds float, ptr %25, i64 %141
  %143 = load float, ptr %142, align 4, !tbaa !9
  %144 = getelementptr inbounds float, ptr %31, i64 %indvars.iv581.epil
  store float %143, ptr %144, align 4, !tbaa !9
  %indvars.iv.next582.epil = add nuw nsw i64 %indvars.iv581.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter748
  br i1 %epil.iter.cmp.not, label %._crit_edge466, label %.lr.ph465.epil, !llvm.loop !24

._crit_edge466:                                   ; preds = %._crit_edge466.loopexit.unr-lcssa, %.lr.ph465.epil, %._crit_edge
  call void @slamrg_(ptr noundef nonnull %2, ptr noundef nonnull %23, ptr noundef %9, ptr noundef nonnull @c__1, ptr noundef nonnull @c__1, ptr noundef %13) #7
  %145 = load i32, ptr %1, align 4, !tbaa !5
  store i32 %145, ptr %18, align 4, !tbaa !5
  %.not439467 = icmp slt i32 %145, 1
  br i1 %.not439467, label %._crit_edge471, label %.lr.ph470.preheader

.lr.ph470.preheader:                              ; preds = %._crit_edge466
  %146 = zext nneg i32 %145 to i64
  %xtraiter750 = and i64 %146, 3
  %147 = icmp ult i32 %145, 4
  br i1 %147, label %._crit_edge471.loopexit.unr-lcssa, label %.lr.ph470.preheader.new

.lr.ph470.preheader.new:                          ; preds = %.lr.ph470.preheader
  %unroll_iter753 = and i64 %146, 2147483644
  br label %.lr.ph470

.lr.ph470:                                        ; preds = %.lr.ph470, %.lr.ph470.preheader.new
  %indvars.iv585 = phi i64 [ 1, %.lr.ph470.preheader.new ], [ %indvars.iv.next586.3, %.lr.ph470 ]
  %niter754 = phi i64 [ 0, %.lr.ph470.preheader.new ], [ %niter754.next.3, %.lr.ph470 ]
  %148 = getelementptr inbounds i32, ptr %35, i64 %indvars.iv585
  %149 = load i32, ptr %148, align 4, !tbaa !5
  %150 = sext i32 %149 to i64
  %151 = getelementptr inbounds i32, ptr %29, i64 %150
  %152 = load i32, ptr %151, align 4, !tbaa !5
  %153 = getelementptr inbounds i32, ptr %34, i64 %indvars.iv585
  store i32 %152, ptr %153, align 4, !tbaa !5
  %154 = getelementptr i32, ptr %13, i64 %indvars.iv585
  %155 = load i32, ptr %154, align 4, !tbaa !5
  %156 = sext i32 %155 to i64
  %157 = getelementptr inbounds i32, ptr %29, i64 %156
  %158 = load i32, ptr %157, align 4, !tbaa !5
  %159 = getelementptr i32, ptr %12, i64 %indvars.iv585
  store i32 %158, ptr %159, align 4, !tbaa !5
  %indvars.iv.next586.1 = add nuw nsw i64 %indvars.iv585, 2
  %160 = getelementptr inbounds i32, ptr %35, i64 %indvars.iv.next586.1
  %161 = load i32, ptr %160, align 4, !tbaa !5
  %162 = sext i32 %161 to i64
  %163 = getelementptr inbounds i32, ptr %29, i64 %162
  %164 = load i32, ptr %163, align 4, !tbaa !5
  %165 = getelementptr inbounds i32, ptr %34, i64 %indvars.iv.next586.1
  store i32 %164, ptr %165, align 4, !tbaa !5
  %indvars.iv.next586.2 = add nuw nsw i64 %indvars.iv585, 3
  %166 = getelementptr inbounds i32, ptr %35, i64 %indvars.iv.next586.2
  %167 = load i32, ptr %166, align 4, !tbaa !5
  %168 = sext i32 %167 to i64
  %169 = getelementptr inbounds i32, ptr %29, i64 %168
  %170 = load i32, ptr %169, align 4, !tbaa !5
  %171 = getelementptr inbounds i32, ptr %34, i64 %indvars.iv.next586.2
  store i32 %170, ptr %171, align 4, !tbaa !5
  %indvars.iv.next586.3 = add nuw nsw i64 %indvars.iv585, 4
  %niter754.next.3 = add i64 %niter754, 4
  %niter754.ncmp.3 = icmp eq i64 %niter754.next.3, %unroll_iter753
  br i1 %niter754.ncmp.3, label %._crit_edge471.loopexit.unr-lcssa, label %.lr.ph470, !llvm.loop !25

._crit_edge471.loopexit.unr-lcssa:                ; preds = %.lr.ph470, %.lr.ph470.preheader
  %indvars.iv585.unr = phi i64 [ 1, %.lr.ph470.preheader ], [ %indvars.iv.next586.3, %.lr.ph470 ]
  %lcmp.mod752.not = icmp eq i64 %xtraiter750, 0
  br i1 %lcmp.mod752.not, label %._crit_edge471, label %.lr.ph470.epil

.lr.ph470.epil:                                   ; preds = %._crit_edge471.loopexit.unr-lcssa, %.lr.ph470.epil
  %indvars.iv585.epil = phi i64 [ %indvars.iv.next586.epil, %.lr.ph470.epil ], [ %indvars.iv585.unr, %._crit_edge471.loopexit.unr-lcssa ]
  %epil.iter751 = phi i64 [ %epil.iter751.next, %.lr.ph470.epil ], [ 0, %._crit_edge471.loopexit.unr-lcssa ]
  %172 = getelementptr inbounds i32, ptr %35, i64 %indvars.iv585.epil
  %173 = load i32, ptr %172, align 4, !tbaa !5
  %174 = sext i32 %173 to i64
  %175 = getelementptr inbounds i32, ptr %29, i64 %174
  %176 = load i32, ptr %175, align 4, !tbaa !5
  %177 = getelementptr inbounds i32, ptr %34, i64 %indvars.iv585.epil
  store i32 %176, ptr %177, align 4, !tbaa !5
  %indvars.iv.next586.epil = add nuw nsw i64 %indvars.iv585.epil, 1
  %epil.iter751.next = add i64 %epil.iter751, 1
  %epil.iter751.cmp.not = icmp eq i64 %epil.iter751.next, %xtraiter750
  br i1 %epil.iter751.cmp.not, label %._crit_edge471, label %.lr.ph470.epil, !llvm.loop !26

._crit_edge471:                                   ; preds = %._crit_edge471.loopexit.unr-lcssa, %.lr.ph470.epil, %._crit_edge466
  %178 = call i32 @isamax_(ptr noundef nonnull %1, ptr noundef %8, ptr noundef nonnull @c__1) #7
  %179 = call i32 @isamax_(ptr noundef nonnull %1, ptr noundef %3, ptr noundef nonnull @c__1) #7
  %180 = call float @slamch_(ptr noundef nonnull @.str.1) #7
  %181 = sext i32 %179 to i64
  %182 = getelementptr inbounds float, ptr %25, i64 %181
  %183 = load float, ptr %182, align 4, !tbaa !9
  %184 = fcmp oge float %183, 0.000000e+00
  %185 = fneg float %183
  %186 = select i1 %184, float %183, float %185
  %187 = sext i32 %178 to i64
  %188 = getelementptr inbounds float, ptr %30, i64 %187
  %189 = load float, ptr %188, align 4, !tbaa !9
  %190 = fcmp oge float %189, 0.000000e+00
  %191 = fneg float %189
  %192 = select i1 %190, float %189, float %191
  %193 = fmul float %180, 8.000000e+00
  %194 = fcmp oge float %186, %192
  %195 = select i1 %194, float %186, float %192
  %196 = fmul float %193, %195
  %197 = load float, ptr %7, align 4, !tbaa !9
  %198 = fmul float %197, %192
  %199 = fcmp ugt float %198, %196
  br i1 %199, label %216, label %200

200:                                              ; preds = %._crit_edge471
  store i32 0, ptr %0, align 4, !tbaa !5
  %201 = load i32, ptr %1, align 4, !tbaa !5
  store i32 %201, ptr %18, align 4, !tbaa !5
  %invariant.gep = getelementptr i8, ptr %28, i64 4
  %.not452472 = icmp slt i32 %201, 1
  br i1 %.not452472, label %._crit_edge477, label %.lr.ph476

.lr.ph476:                                        ; preds = %200, %.lr.ph476
  %indvars.iv590 = phi i64 [ %indvars.iv.next591, %.lr.ph476 ], [ 1, %200 ]
  %.0474 = phi i32 [ %213, %.lr.ph476 ], [ 1, %200 ]
  %202 = getelementptr inbounds i32, ptr %34, i64 %indvars.iv590
  %203 = load i32, ptr %202, align 4, !tbaa !5
  %204 = mul nsw i32 %203, %26
  %205 = sext i32 %204 to i64
  %gep = getelementptr float, ptr %invariant.gep, i64 %205
  %206 = sext i32 %.0474 to i64
  %207 = getelementptr inbounds float, ptr %33, i64 %206
  call void @scopy_(ptr noundef nonnull %1, ptr noundef %gep, ptr noundef nonnull @c__1, ptr noundef nonnull %207, ptr noundef nonnull @c__1) #7
  %208 = sext i32 %203 to i64
  %209 = getelementptr inbounds float, ptr %25, i64 %208
  %210 = load float, ptr %209, align 4, !tbaa !9
  %211 = getelementptr inbounds float, ptr %31, i64 %indvars.iv590
  store float %210, ptr %211, align 4, !tbaa !9
  %212 = load i32, ptr %1, align 4, !tbaa !5
  %213 = add nsw i32 %212, %.0474
  %indvars.iv.next591 = add nuw nsw i64 %indvars.iv590, 1
  %214 = load i32, ptr %18, align 4, !tbaa !5
  %215 = sext i32 %214 to i64
  %.not452.not = icmp slt i64 %indvars.iv590, %215
  br i1 %.not452.not, label %.lr.ph476, label %._crit_edge477, !llvm.loop !27

._crit_edge477:                                   ; preds = %.lr.ph476, %200
  call void @slacpy_(ptr noundef nonnull @.str.2, ptr noundef nonnull %1, ptr noundef nonnull %1, ptr noundef %11, ptr noundef nonnull %1, ptr noundef %4, ptr noundef nonnull %5) #7
  call void @scopy_(ptr noundef nonnull %1, ptr noundef %9, ptr noundef nonnull @c__1, ptr noundef nonnull %3, ptr noundef nonnull @c__1) #7
  br label %.loopexit

216:                                              ; preds = %._crit_edge471
  %217 = load i32, ptr %2, align 4, !tbaa !5
  %.not440478 = icmp slt i32 %217, 1
  br i1 %.not440478, label %._crit_edge482, label %.lr.ph481.preheader

.lr.ph481.preheader:                              ; preds = %216
  %218 = add nuw i32 %217, 1
  %wide.trip.count596 = zext i32 %218 to i64
  %219 = zext nneg i32 %217 to i64
  %min.iters.check703 = icmp ult i32 %217, 8
  br i1 %min.iters.check703, label %.lr.ph481.preheader746, label %vector.ph704

vector.ph704:                                     ; preds = %.lr.ph481.preheader
  %n.vec706 = and i64 %219, 2147483640
  %ind.end707 = or disjoint i64 %n.vec706, 1
  br label %vector.body709

vector.body709:                                   ; preds = %vector.body709, %vector.ph704
  %index710 = phi i64 [ 0, %vector.ph704 ], [ %index.next712, %vector.body709 ]
  %220 = getelementptr i32, ptr %15, i64 %index710
  %221 = getelementptr inbounds i8, ptr %220, i64 16
  store <4 x i32> <i32 1, i32 1, i32 1, i32 1>, ptr %220, align 4, !tbaa !5
  store <4 x i32> <i32 1, i32 1, i32 1, i32 1>, ptr %221, align 4, !tbaa !5
  %index.next712 = add nuw i64 %index710, 8
  %222 = icmp eq i64 %index.next712, %n.vec706
  br i1 %222, label %middle.block701, label %vector.body709, !llvm.loop !28

middle.block701:                                  ; preds = %vector.body709
  %cmp.n713 = icmp eq i64 %n.vec706, %219
  br i1 %cmp.n713, label %._crit_edge482, label %.lr.ph481.preheader746

.lr.ph481.preheader746:                           ; preds = %middle.block701, %.lr.ph481.preheader
  %indvars.iv593.ph = phi i64 [ 1, %.lr.ph481.preheader ], [ %ind.end707, %middle.block701 ]
  br label %.lr.ph481

.lr.ph481:                                        ; preds = %.lr.ph481.preheader746, %.lr.ph481
  %indvars.iv593 = phi i64 [ %indvars.iv.next594, %.lr.ph481 ], [ %indvars.iv593.ph, %.lr.ph481.preheader746 ]
  %223 = getelementptr inbounds i32, ptr %37, i64 %indvars.iv593
  store i32 1, ptr %223, align 4, !tbaa !5
  %indvars.iv.next594 = add nuw nsw i64 %indvars.iv593, 1
  %exitcond597.not = icmp eq i64 %indvars.iv.next594, %wide.trip.count596
  br i1 %exitcond597.not, label %._crit_edge482, label %.lr.ph481, !llvm.loop !29

._crit_edge482:                                   ; preds = %.lr.ph481, %middle.block701, %216
  %224 = load i32, ptr %1, align 4, !tbaa !5
  %.not441483.not = icmp slt i32 %47, %224
  br i1 %.not441483.not, label %.lr.ph486.preheader, label %._crit_edge487

.lr.ph486.preheader:                              ; preds = %._crit_edge482
  %225 = sext i32 %47 to i64
  %226 = add nsw i64 %225, 1
  %227 = add i32 %224, 1
  %228 = xor i32 %47, -1
  %229 = add i32 %224, %228
  %230 = zext i32 %229 to i64
  %231 = add nuw nsw i64 %230, 1
  %min.iters.check716 = icmp ult i32 %229, 7
  br i1 %min.iters.check716, label %.lr.ph486.preheader745, label %vector.ph717

vector.ph717:                                     ; preds = %.lr.ph486.preheader
  %n.vec719 = and i64 %231, 8589934584
  %ind.end720 = add nsw i64 %226, %n.vec719
  %232 = getelementptr i32, ptr %15, i64 %225
  br label %vector.body722

vector.body722:                                   ; preds = %vector.body722, %vector.ph717
  %index723 = phi i64 [ 0, %vector.ph717 ], [ %index.next725, %vector.body722 ]
  %233 = getelementptr i32, ptr %232, i64 %index723
  %234 = getelementptr inbounds i8, ptr %233, i64 16
  store <4 x i32> <i32 3, i32 3, i32 3, i32 3>, ptr %233, align 4, !tbaa !5
  store <4 x i32> <i32 3, i32 3, i32 3, i32 3>, ptr %234, align 4, !tbaa !5
  %index.next725 = add nuw i64 %index723, 8
  %235 = icmp eq i64 %index.next725, %n.vec719
  br i1 %235, label %middle.block714, label %vector.body722, !llvm.loop !30

middle.block714:                                  ; preds = %vector.body722
  %cmp.n726 = icmp eq i64 %231, %n.vec719
  br i1 %cmp.n726, label %._crit_edge487, label %.lr.ph486.preheader745

.lr.ph486.preheader745:                           ; preds = %middle.block714, %.lr.ph486.preheader
  %indvars.iv598.ph = phi i64 [ %226, %.lr.ph486.preheader ], [ %ind.end720, %middle.block714 ]
  br label %.lr.ph486

.lr.ph486:                                        ; preds = %.lr.ph486.preheader745, %.lr.ph486
  %indvars.iv598 = phi i64 [ %indvars.iv.next599, %.lr.ph486 ], [ %indvars.iv598.ph, %.lr.ph486.preheader745 ]
  %236 = getelementptr inbounds i32, ptr %37, i64 %indvars.iv598
  store i32 3, ptr %236, align 4, !tbaa !5
  %indvars.iv.next599 = add nsw i64 %indvars.iv598, 1
  %lftr.wideiv601 = trunc i64 %indvars.iv.next599 to i32
  %exitcond602.not = icmp eq i32 %227, %lftr.wideiv601
  br i1 %exitcond602.not, label %._crit_edge487, label %.lr.ph486, !llvm.loop !31

._crit_edge487:                                   ; preds = %.lr.ph486, %middle.block714, %._crit_edge482
  store i32 0, ptr %0, align 4, !tbaa !5
  %237 = load i32, ptr %1, align 4, !tbaa !5
  %238 = add i32 %237, 1
  store i32 %237, ptr %18, align 4, !tbaa !5
  %.not442488 = icmp slt i32 %237, 1
  br i1 %.not442488, label %.preheader, label %.lr.ph492.preheader

.lr.ph492.preheader:                              ; preds = %._crit_edge487
  %239 = sext i32 %238 to i64
  %wide.trip.count610 = zext i32 %238 to i64
  %240 = load i32, ptr %12, align 4, !tbaa !5
  %241 = sext i32 %240 to i64
  %242 = getelementptr inbounds float, ptr %30, i64 %241
  %243 = load float, ptr %242, align 4, !tbaa !9
  %244 = fcmp oge float %243, 0.000000e+00
  %245 = fneg float %243
  %246 = select i1 %244, float %243, float %245
  %247 = fmul float %197, %246
  %248 = fcmp ugt float %247, %196
  br i1 %248, label %.preheader.loopexit.split.loop.exit665, label %.lr.ph692

.lr.ph492:                                        ; preds = %270
  %249 = getelementptr i32, ptr %12, i64 %indvars.iv605690
  %250 = load i32, ptr %249, align 4, !tbaa !5
  %251 = sext i32 %250 to i64
  %252 = getelementptr inbounds float, ptr %30, i64 %251
  %253 = load float, ptr %252, align 4, !tbaa !9
  %254 = fcmp oge float %253, 0.000000e+00
  %255 = fneg float %253
  %256 = select i1 %254, float %253, float %255
  %257 = fmul float %197, %256
  %258 = fcmp ugt float %257, %196
  br i1 %258, label %.preheader.loopexit.split.loop.exit665, label %.lr.ph692, !llvm.loop !32

.preheader.loopexit.split.loop.exit665:           ; preds = %.lr.ph492, %.lr.ph492.preheader
  %.lcssa685 = phi i32 [ %237, %.lr.ph492.preheader ], [ %267, %.lr.ph492 ]
  %indvars.iv605.lcssa = phi i64 [ 1, %.lr.ph492.preheader ], [ %indvars.iv.next606, %.lr.ph492 ]
  %indvars.iv603.lcssa = phi i64 [ %239, %.lr.ph492.preheader ], [ %indvars.iv.next604, %.lr.ph492 ]
  %.lcssa678 = phi i32 [ %240, %.lr.ph492.preheader ], [ %250, %.lr.ph492 ]
  %259 = trunc nsw i64 %indvars.iv603.lcssa to i32
  %260 = trunc nuw nsw i64 %indvars.iv605.lcssa to i32
  br label %.preheader

.preheader:                                       ; preds = %270, %.preheader.loopexit.split.loop.exit665, %._crit_edge487
  %261 = phi i32 [ %237, %._crit_edge487 ], [ %.lcssa685, %.preheader.loopexit.split.loop.exit665 ], [ %267, %270 ]
  %.1415.lcssa = phi i32 [ 1, %._crit_edge487 ], [ %260, %.preheader.loopexit.split.loop.exit665 ], [ %238, %270 ]
  %.0411.lcssa = phi i32 [ %238, %._crit_edge487 ], [ %259, %.preheader.loopexit.split.loop.exit665 ], [ 1, %270 ]
  %.0408.ph = phi i32 [ undef, %._crit_edge487 ], [ %.lcssa678, %.preheader.loopexit.split.loop.exit665 ], [ %264, %270 ]
  %invariant.gep505 = getelementptr i8, ptr %28, i64 4
  %invariant.gep509 = getelementptr i8, ptr %14, i64 -8
  %.not443511 = icmp slt i32 %.1415.lcssa, %261
  br i1 %.not443511, label %.lr.ph514.preheader, label %.loopexit454

.lr.ph514.preheader:                              ; preds = %.preheader
  %262 = sext i32 %.1415.lcssa to i64
  br label %.lr.ph514

.lr.ph692:                                        ; preds = %.lr.ph492.preheader, %.lr.ph492
  %263 = phi i64 [ %251, %.lr.ph492 ], [ %241, %.lr.ph492.preheader ]
  %264 = phi i32 [ %250, %.lr.ph492 ], [ %240, %.lr.ph492.preheader ]
  %indvars.iv603691 = phi i64 [ %indvars.iv.next604, %.lr.ph492 ], [ %239, %.lr.ph492.preheader ]
  %indvars.iv605690 = phi i64 [ %indvars.iv.next606, %.lr.ph492 ], [ 1, %.lr.ph492.preheader ]
  %indvars.iv.next604 = add nsw i64 %indvars.iv603691, -1
  %265 = getelementptr inbounds i32, ptr %37, i64 %263
  store i32 4, ptr %265, align 4, !tbaa !5
  %266 = getelementptr inbounds i32, ptr %36, i64 %indvars.iv.next604
  store i32 %264, ptr %266, align 4, !tbaa !5
  %267 = load i32, ptr %1, align 4, !tbaa !5
  %268 = zext i32 %267 to i64
  %269 = icmp eq i64 %indvars.iv605690, %268
  br i1 %269, label %.loopexit454, label %270

270:                                              ; preds = %.lr.ph692
  %indvars.iv.next606 = add nuw nsw i64 %indvars.iv605690, 1
  %exitcond611.not = icmp eq i64 %indvars.iv.next606, %wide.trip.count610
  br i1 %exitcond611.not, label %.preheader, label %.lr.ph492, !llvm.loop !32

.lr.ph514:                                        ; preds = %.lr.ph514.preheader, %358
  %indvars.iv615 = phi i64 [ %262, %.lr.ph514.preheader ], [ %indvars.iv.next616, %358 ]
  %.0408513 = phi i32 [ %.0408.ph, %.lr.ph514.preheader ], [ %.1409, %358 ]
  %.1412512 = phi i32 [ %.0411.lcssa, %.lr.ph514.preheader ], [ %.2413, %358 ]
  %indvars.iv.next616 = add nsw i64 %indvars.iv615, 1
  %.in = getelementptr i32, ptr %12, i64 %indvars.iv615
  %271 = load i32, ptr %.in, align 4, !tbaa !5
  %272 = load float, ptr %7, align 4, !tbaa !9
  %273 = sext i32 %271 to i64
  %274 = getelementptr inbounds float, ptr %30, i64 %273
  %275 = load float, ptr %274, align 4, !tbaa !9
  %276 = fcmp oge float %275, 0.000000e+00
  %277 = fneg float %275
  %278 = select i1 %276, float %275, float %277
  %279 = fmul float %272, %278
  %280 = fcmp ugt float %279, %196
  br i1 %280, label %286, label %281

281:                                              ; preds = %.lr.ph514
  %282 = add nsw i32 %.1412512, -1
  %283 = getelementptr inbounds i32, ptr %37, i64 %273
  store i32 4, ptr %283, align 4, !tbaa !5
  %284 = sext i32 %282 to i64
  %285 = getelementptr inbounds i32, ptr %36, i64 %284
  store i32 %271, ptr %285, align 4, !tbaa !5
  br label %358

286:                                              ; preds = %.lr.ph514
  %287 = sext i32 %.0408513 to i64
  %288 = getelementptr inbounds float, ptr %30, i64 %287
  %289 = load float, ptr %288, align 4, !tbaa !9
  store float %289, ptr %21, align 4, !tbaa !9
  store float %275, ptr %20, align 4, !tbaa !9
  %290 = call float @slapy2_(ptr noundef nonnull %20, ptr noundef nonnull %21) #7
  %291 = getelementptr inbounds float, ptr %25, i64 %273
  %292 = load float, ptr %291, align 4, !tbaa !9
  %293 = getelementptr inbounds float, ptr %25, i64 %287
  %294 = load float, ptr %293, align 4, !tbaa !9
  %295 = fsub float %292, %294
  store float %295, ptr %22, align 4, !tbaa !9
  %296 = load float, ptr %20, align 4, !tbaa !9
  %297 = load float, ptr %21, align 4, !tbaa !9
  %298 = fneg float %297
  %299 = insertelement <2 x float> poison, float %296, i64 0
  %300 = insertelement <2 x float> %299, float %298, i64 1
  %301 = insertelement <2 x float> poison, float %290, i64 0
  %302 = shufflevector <2 x float> %301, <2 x float> poison, <2 x i32> zeroinitializer
  %303 = fdiv <2 x float> %300, %302
  %304 = extractelement <2 x float> %303, i64 0
  store float %304, ptr %20, align 4, !tbaa !9
  %305 = extractelement <2 x float> %303, i64 1
  store float %305, ptr %21, align 4, !tbaa !9
  %306 = fmul float %295, %304
  %307 = fmul float %306, %305
  %308 = fcmp oge float %307, 0.000000e+00
  %309 = fneg float %307
  %310 = select i1 %308, float %307, float %309
  %311 = fcmp ugt float %310, %196
  br i1 %311, label %350, label %312

312:                                              ; preds = %286
  store float %290, ptr %274, align 4, !tbaa !9
  store float 0.000000e+00, ptr %288, align 4, !tbaa !9
  %313 = getelementptr inbounds i32, ptr %37, i64 %273
  %314 = load i32, ptr %313, align 4, !tbaa !5
  %315 = getelementptr inbounds i32, ptr %37, i64 %287
  %316 = load i32, ptr %315, align 4, !tbaa !5
  %.not444 = icmp eq i32 %314, %316
  br i1 %.not444, label %318, label %317

317:                                              ; preds = %312
  store i32 2, ptr %313, align 4, !tbaa !5
  br label %318

318:                                              ; preds = %317, %312
  store i32 4, ptr %315, align 4, !tbaa !5
  %319 = mul nsw i32 %.0408513, %26
  %320 = sext i32 %319 to i64
  %gep506 = getelementptr float, ptr %invariant.gep505, i64 %320
  %321 = mul nsw i32 %271, %26
  %322 = sext i32 %321 to i64
  %gep508 = getelementptr float, ptr %invariant.gep505, i64 %322
  call void @srot_(ptr noundef nonnull %1, ptr noundef %gep506, ptr noundef nonnull @c__1, ptr noundef %gep508, ptr noundef nonnull @c__1, ptr noundef nonnull %20, ptr noundef nonnull %21) #7
  %323 = load float, ptr %20, align 4, !tbaa !9
  %324 = load float, ptr %21, align 4, !tbaa !9
  %325 = load float, ptr %293, align 4, !tbaa !9
  %326 = fmul float %323, %323
  %327 = load float, ptr %291, align 4, !tbaa !9
  %328 = fmul float %324, %324
  %329 = fmul float %328, %327
  %330 = call float @llvm.fmuladd.f32(float %325, float %326, float %329)
  store float %330, ptr %22, align 4, !tbaa !9
  %331 = fmul float %326, %327
  %332 = call float @llvm.fmuladd.f32(float %325, float %328, float %331)
  store float %332, ptr %291, align 4, !tbaa !9
  store float %330, ptr %293, align 4, !tbaa !9
  %333 = add nsw i32 %.1412512, -1
  %334 = load i32, ptr %1, align 4, !tbaa !5
  %.not445499 = icmp sgt i32 %.1412512, %334
  br i1 %.not445499, label %._crit_edge503, label %.lr.ph502

.lr.ph502:                                        ; preds = %318, %344
  %indvars.iv612 = phi i64 [ %indvars.iv.next613, %344 ], [ 1, %318 ]
  %335 = phi i32 [ %346, %344 ], [ %.1412512, %318 ]
  %336 = sext i32 %335 to i64
  %337 = getelementptr inbounds i32, ptr %36, i64 %336
  %338 = load i32, ptr %337, align 4, !tbaa !5
  %339 = sext i32 %338 to i64
  %340 = getelementptr inbounds float, ptr %25, i64 %339
  %341 = load float, ptr %340, align 4, !tbaa !9
  %342 = fcmp olt float %330, %341
  %343 = getelementptr i8, ptr %337, i64 -4
  br i1 %342, label %344, label %348

344:                                              ; preds = %.lr.ph502
  store i32 %338, ptr %343, align 4, !tbaa !5
  store i32 %.0408513, ptr %337, align 4, !tbaa !5
  %indvars.iv.next613 = add nuw nsw i64 %indvars.iv612, 1
  %345 = trunc nuw nsw i64 %indvars.iv612 to i32
  %346 = add i32 %.1412512, %345
  %347 = load i32, ptr %1, align 4, !tbaa !5
  %.not445 = icmp sgt i32 %346, %347
  br i1 %.not445, label %._crit_edge503, label %.lr.ph502

348:                                              ; preds = %.lr.ph502
  store i32 %.0408513, ptr %343, align 4, !tbaa !5
  br label %358

._crit_edge503:                                   ; preds = %344, %318
  %.lcssa = phi i32 [ %.1412512, %318 ], [ %346, %344 ]
  %349 = sext i32 %.lcssa to i64
  %gep510 = getelementptr i32, ptr %invariant.gep509, i64 %349
  store i32 %.0408513, ptr %gep510, align 4, !tbaa !5
  br label %358

350:                                              ; preds = %286
  %351 = load i32, ptr %0, align 4, !tbaa !5
  %352 = add nsw i32 %351, 1
  store i32 %352, ptr %0, align 4, !tbaa !5
  %353 = sext i32 %352 to i64
  %354 = getelementptr inbounds float, ptr %31, i64 %353
  store float %294, ptr %354, align 4, !tbaa !9
  %355 = load float, ptr %288, align 4, !tbaa !9
  %356 = getelementptr inbounds float, ptr %32, i64 %353
  store float %355, ptr %356, align 4, !tbaa !9
  %357 = getelementptr inbounds i32, ptr %36, i64 %353
  store i32 %.0408513, ptr %357, align 4, !tbaa !5
  br label %358

358:                                              ; preds = %348, %._crit_edge503, %350, %281
  %.2413 = phi i32 [ %282, %281 ], [ %.1412512, %350 ], [ %333, %._crit_edge503 ], [ %333, %348 ]
  %.1409 = phi i32 [ %.0408513, %281 ], [ %271, %350 ], [ %271, %._crit_edge503 ], [ %271, %348 ]
  %359 = load i32, ptr %1, align 4, !tbaa !5
  %360 = sext i32 %359 to i64
  %.not443 = icmp slt i64 %indvars.iv.next616, %360
  br i1 %.not443, label %.lr.ph514, label %.loopexit454

.loopexit454:                                     ; preds = %.lr.ph692, %358, %.preheader
  %.2410 = phi i32 [ %.0408.ph, %.preheader ], [ %.1409, %358 ], [ undef, %.lr.ph692 ]
  %361 = load i32, ptr %0, align 4, !tbaa !5
  %362 = add nsw i32 %361, 1
  store i32 %362, ptr %0, align 4, !tbaa !5
  %363 = sext i32 %.2410 to i64
  %364 = getelementptr inbounds float, ptr %25, i64 %363
  %365 = load float, ptr %364, align 4, !tbaa !9
  %366 = sext i32 %362 to i64
  %367 = getelementptr inbounds float, ptr %31, i64 %366
  store float %365, ptr %367, align 4, !tbaa !9
  %368 = getelementptr inbounds float, ptr %30, i64 %363
  %369 = load float, ptr %368, align 4, !tbaa !9
  %370 = getelementptr inbounds float, ptr %32, i64 %366
  store float %369, ptr %370, align 4, !tbaa !9
  %371 = getelementptr inbounds i32, ptr %36, i64 %366
  store i32 %.2410, ptr %371, align 4, !tbaa !5
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %19, i8 0, i64 16, i1 false), !tbaa !5
  %372 = load i32, ptr %1, align 4, !tbaa !5
  %.not446517 = icmp slt i32 %372, 1
  br i1 %.not446517, label %._crit_edge521, label %.lr.ph520.preheader

.lr.ph520.preheader:                              ; preds = %.loopexit454
  %373 = zext nneg i32 %372 to i64
  %xtraiter755 = and i64 %373, 1
  %374 = icmp eq i32 %372, 1
  br i1 %374, label %._crit_edge521.loopexit.unr-lcssa, label %.lr.ph520.preheader.new

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

.lr.ph520:                                        ; preds = %.lr.ph520, %.lr.ph520.preheader.new
  %indvars.iv621 = phi i64 [ 1, %.lr.ph520.preheader.new ], [ %indvars.iv.next622.1, %.lr.ph520 ]
  %niter759 = phi i64 [ 0, %.lr.ph520.preheader.new ], [ %niter759.next.1, %.lr.ph520 ]
  %375 = getelementptr inbounds i32, ptr %37, i64 %indvars.iv621
  %376 = load i32, ptr %375, align 4, !tbaa !5
  %377 = add nsw i32 %376, -1
  %378 = sext i32 %377 to i64
  %379 = getelementptr inbounds [4 x i32], ptr %19, i64 0, i64 %378
  %380 = load i32, ptr %379, align 4, !tbaa !5
  %381 = add nsw i32 %380, 1
  store i32 %381, ptr %379, align 4, !tbaa !5
  %382 = getelementptr i32, ptr %15, i64 %indvars.iv621
  %383 = load i32, ptr %382, align 4, !tbaa !5
  %384 = add nsw i32 %383, -1
  %385 = sext i32 %384 to i64
  %386 = getelementptr inbounds [4 x i32], ptr %19, i64 0, i64 %385
  %387 = load i32, ptr %386, align 4, !tbaa !5
  %388 = add nsw i32 %387, 1
  store i32 %388, ptr %386, align 4, !tbaa !5
  %indvars.iv.next622.1 = add nuw nsw i64 %indvars.iv621, 2
  %niter759.next.1 = add i64 %niter759, 2
  %niter759.ncmp.1 = icmp eq i64 %niter759.next.1, %unroll_iter758
  br i1 %niter759.ncmp.1, label %._crit_edge521.loopexit.unr-lcssa, label %.lr.ph520, !llvm.loop !33

._crit_edge521.loopexit.unr-lcssa:                ; preds = %.lr.ph520, %.lr.ph520.preheader
  %indvars.iv621.unr = phi i64 [ 1, %.lr.ph520.preheader ], [ %indvars.iv.next622.1, %.lr.ph520 ]
  %lcmp.mod757.not = icmp eq i64 %xtraiter755, 0
  br i1 %lcmp.mod757.not, label %._crit_edge521.loopexit, label %.lr.ph520.epil

.lr.ph520.epil:                                   ; preds = %._crit_edge521.loopexit.unr-lcssa
  %389 = getelementptr inbounds i32, ptr %37, i64 %indvars.iv621.unr
  %390 = load i32, ptr %389, align 4, !tbaa !5
  %391 = add nsw i32 %390, -1
  %392 = sext i32 %391 to i64
  %393 = getelementptr inbounds [4 x i32], ptr %19, i64 0, i64 %392
  %394 = load i32, ptr %393, align 4, !tbaa !5
  %395 = add nsw i32 %394, 1
  store i32 %395, ptr %393, align 4, !tbaa !5
  br label %._crit_edge521.loopexit

._crit_edge521.loopexit:                          ; preds = %._crit_edge521.loopexit.unr-lcssa, %.lr.ph520.epil
  %.pre648 = load i32, ptr %19, align 16, !tbaa !5
  %.phi.trans.insert = getelementptr inbounds i8, ptr %19, i64 4
  %.pre649 = load i32, ptr %.phi.trans.insert, align 4, !tbaa !5
  %.phi.trans.insert650 = getelementptr inbounds i8, ptr %19, i64 8
  %.pre651 = load i32, ptr %.phi.trans.insert650, align 8, !tbaa !5
  %.phi.trans.insert652 = getelementptr inbounds i8, ptr %19, i64 12
  %.pre653 = load i32, ptr %.phi.trans.insert652, align 4, !tbaa !5
  br label %._crit_edge521

._crit_edge521:                                   ; preds = %._crit_edge521.loopexit, %.loopexit454
  %396 = phi i32 [ %.pre653, %._crit_edge521.loopexit ], [ 0, %.loopexit454 ]
  %397 = phi i32 [ %.pre651, %._crit_edge521.loopexit ], [ 0, %.loopexit454 ]
  %398 = phi i32 [ %.pre649, %._crit_edge521.loopexit ], [ 0, %.loopexit454 ]
  %399 = phi i32 [ %.pre648, %._crit_edge521.loopexit ], [ 0, %.loopexit454 ]
  store i32 1, ptr %24, align 16, !tbaa !5
  %400 = add nsw i32 %399, 1
  %401 = getelementptr inbounds i8, ptr %24, i64 4
  store i32 %400, ptr %401, align 4, !tbaa !5
  %402 = getelementptr inbounds i8, ptr %19, i64 4
  %403 = add nsw i32 %398, %400
  %404 = getelementptr inbounds i8, ptr %24, i64 8
  store i32 %403, ptr %404, align 8, !tbaa !5
  %405 = getelementptr inbounds i8, ptr %19, i64 8
  %406 = add nsw i32 %397, %403
  %407 = getelementptr inbounds i8, ptr %24, i64 12
  store i32 %406, ptr %407, align 4, !tbaa !5
  %408 = getelementptr inbounds i8, ptr %19, i64 12
  %409 = sub nsw i32 %372, %396
  store i32 %409, ptr %0, align 4, !tbaa !5
  %410 = load i32, ptr %1, align 4, !tbaa !5
  %.not447522 = icmp slt i32 %410, 1
  br i1 %.not447522, label %._crit_edge526, label %.lr.ph525.preheader

.lr.ph525.preheader:                              ; preds = %._crit_edge521
  %411 = zext nneg i32 %410 to i64
  %xtraiter760 = and i64 %411, 1
  %412 = icmp eq i32 %410, 1
  br i1 %412, label %._crit_edge526.loopexit.unr-lcssa, label %.lr.ph525.preheader.new

.lr.ph525.preheader.new:                          ; preds = %.lr.ph525.preheader
  %unroll_iter763 = and i64 %411, 2147483646
  br label %.lr.ph525

.lr.ph525:                                        ; preds = %.lr.ph525, %.lr.ph525.preheader.new
  %indvars.iv626 = phi i64 [ 1, %.lr.ph525.preheader.new ], [ %indvars.iv.next627.1, %.lr.ph525 ]
  %niter764 = phi i64 [ 0, %.lr.ph525.preheader.new ], [ %niter764.next.1, %.lr.ph525 ]
  %413 = getelementptr inbounds i32, ptr %36, i64 %indvars.iv626
  %414 = load i32, ptr %413, align 4, !tbaa !5
  %415 = sext i32 %414 to i64
  %416 = getelementptr inbounds i32, ptr %37, i64 %415
  %417 = load i32, ptr %416, align 4, !tbaa !5
  %418 = add nsw i32 %417, -1
  %419 = sext i32 %418 to i64
  %420 = getelementptr inbounds [4 x i32], ptr %24, i64 0, i64 %419
  %421 = load i32, ptr %420, align 4, !tbaa !5
  %422 = sext i32 %421 to i64
  %423 = getelementptr inbounds i32, ptr %34, i64 %422
  store i32 %414, ptr %423, align 4, !tbaa !5
  %424 = getelementptr inbounds i32, ptr %35, i64 %422
  %425 = trunc nuw nsw i64 %indvars.iv626 to i32
  store i32 %425, ptr %424, align 4, !tbaa !5
  %426 = add nsw i32 %421, 1
  store i32 %426, ptr %420, align 4, !tbaa !5
  %427 = getelementptr i32, ptr %14, i64 %indvars.iv626
  %428 = load i32, ptr %427, align 4, !tbaa !5
  %429 = sext i32 %428 to i64
  %430 = getelementptr inbounds i32, ptr %37, i64 %429
  %431 = load i32, ptr %430, align 4, !tbaa !5
  %432 = add nsw i32 %431, -1
  %433 = sext i32 %432 to i64
  %434 = getelementptr inbounds [4 x i32], ptr %24, i64 0, i64 %433
  %435 = load i32, ptr %434, align 4, !tbaa !5
  %436 = sext i32 %435 to i64
  %437 = getelementptr inbounds i32, ptr %34, i64 %436
  store i32 %428, ptr %437, align 4, !tbaa !5
  %438 = getelementptr inbounds i32, ptr %35, i64 %436
  %439 = trunc i64 %indvars.iv626 to i32
  %440 = add i32 %439, 1
  store i32 %440, ptr %438, align 4, !tbaa !5
  %441 = add nsw i32 %435, 1
  store i32 %441, ptr %434, align 4, !tbaa !5
  %indvars.iv.next627.1 = add nuw nsw i64 %indvars.iv626, 2
  %niter764.next.1 = add i64 %niter764, 2
  %niter764.ncmp.1 = icmp eq i64 %niter764.next.1, %unroll_iter763
  br i1 %niter764.ncmp.1, label %._crit_edge526.loopexit.unr-lcssa, label %.lr.ph525, !llvm.loop !34

._crit_edge526.loopexit.unr-lcssa:                ; preds = %.lr.ph525, %.lr.ph525.preheader
  %indvars.iv626.unr = phi i64 [ 1, %.lr.ph525.preheader ], [ %indvars.iv.next627.1, %.lr.ph525 ]
  %lcmp.mod762.not = icmp eq i64 %xtraiter760, 0
  br i1 %lcmp.mod762.not, label %._crit_edge526, label %.lr.ph525.epil

.lr.ph525.epil:                                   ; preds = %._crit_edge526.loopexit.unr-lcssa
  %442 = getelementptr inbounds i32, ptr %36, i64 %indvars.iv626.unr
  %443 = load i32, ptr %442, align 4, !tbaa !5
  %444 = sext i32 %443 to i64
  %445 = getelementptr inbounds i32, ptr %37, i64 %444
  %446 = load i32, ptr %445, align 4, !tbaa !5
  %447 = add nsw i32 %446, -1
  %448 = sext i32 %447 to i64
  %449 = getelementptr inbounds [4 x i32], ptr %24, i64 0, i64 %448
  %450 = load i32, ptr %449, align 4, !tbaa !5
  %451 = sext i32 %450 to i64
  %452 = getelementptr inbounds i32, ptr %34, i64 %451
  store i32 %443, ptr %452, align 4, !tbaa !5
  %453 = getelementptr inbounds i32, ptr %35, i64 %451
  %454 = trunc nuw nsw i64 %indvars.iv626.unr to i32
  store i32 %454, ptr %453, align 4, !tbaa !5
  %455 = add nsw i32 %450, 1
  store i32 %455, ptr %449, align 4, !tbaa !5
  br label %._crit_edge526

._crit_edge526:                                   ; preds = %.lr.ph525.epil, %._crit_edge526.loopexit.unr-lcssa, %._crit_edge521
  %456 = add nsw i32 %398, %399
  %457 = load i32, ptr %2, align 4, !tbaa !5
  %458 = mul nsw i32 %457, %456
  %459 = add nsw i32 %458, 1
  store i32 %399, ptr %18, align 4, !tbaa !5
  %invariant.gep527 = getelementptr i8, ptr %28, i64 4
  %.not448529 = icmp slt i32 %399, 1
  br i1 %.not448529, label %._crit_edge535, label %.lr.ph534

.lr.ph534:                                        ; preds = %._crit_edge526, %.lr.ph534
  %indvars.iv631 = phi i64 [ %indvars.iv.next632, %.lr.ph534 ], [ 1, %._crit_edge526 ]
  %.0406532 = phi i32 [ %471, %.lr.ph534 ], [ 1, %._crit_edge526 ]
  %indvars633 = trunc i64 %indvars.iv631 to i32
  %460 = getelementptr inbounds i32, ptr %34, i64 %indvars.iv631
  %461 = load i32, ptr %460, align 4, !tbaa !5
  %462 = mul nsw i32 %461, %26
  %463 = sext i32 %462 to i64
  %gep528 = getelementptr float, ptr %invariant.gep527, i64 %463
  %464 = sext i32 %.0406532 to i64
  %465 = getelementptr inbounds float, ptr %33, i64 %464
  call void @scopy_(ptr noundef nonnull %2, ptr noundef %gep528, ptr noundef nonnull @c__1, ptr noundef nonnull %465, ptr noundef nonnull @c__1) #7
  %466 = sext i32 %461 to i64
  %467 = getelementptr inbounds float, ptr %25, i64 %466
  %468 = load float, ptr %467, align 4, !tbaa !9
  %469 = getelementptr inbounds float, ptr %30, i64 %indvars.iv631
  store float %468, ptr %469, align 4, !tbaa !9
  %indvars.iv.next632 = add nuw nsw i64 %indvars.iv631, 1
  %470 = load i32, ptr %2, align 4, !tbaa !5
  %471 = add nsw i32 %470, %.0406532
  %472 = load i32, ptr %18, align 4, !tbaa !5
  %.not448.not = icmp sgt i32 %472, %indvars633
  br i1 %.not448.not, label %.lr.ph534, label %._crit_edge535.loopexit, !llvm.loop !35

._crit_edge535.loopexit:                          ; preds = %.lr.ph534
  %473 = trunc nuw i64 %indvars.iv.next632 to i32
  br label %._crit_edge535

._crit_edge535:                                   ; preds = %._crit_edge535.loopexit, %._crit_edge526
  %.6424.lcssa = phi i32 [ 1, %._crit_edge526 ], [ %473, %._crit_edge535.loopexit ]
  %.0406.lcssa = phi i32 [ 1, %._crit_edge526 ], [ %471, %._crit_edge535.loopexit ]
  %474 = load i32, ptr %402, align 4, !tbaa !5
  store i32 %474, ptr %18, align 4, !tbaa !5
  %.not449540 = icmp slt i32 %474, 1
  br i1 %.not449540, label %._crit_edge547, label %.lr.ph546.preheader

.lr.ph546.preheader:                              ; preds = %._crit_edge535
  %475 = zext i32 %.6424.lcssa to i64
  br label %.lr.ph546

.lr.ph546:                                        ; preds = %.lr.ph546.preheader, %.lr.ph546
  %indvars.iv636 = phi i64 [ %475, %.lr.ph546.preheader ], [ %indvars.iv.next637, %.lr.ph546 ]
  %.1544 = phi i32 [ %459, %.lr.ph546.preheader ], [ %496, %.lr.ph546 ]
  %.1407543 = phi i32 [ %.0406.lcssa, %.lr.ph546.preheader ], [ %494, %.lr.ph546 ]
  %.7542 = phi i32 [ 1, %.lr.ph546.preheader ], [ %497, %.lr.ph546 ]
  %476 = getelementptr inbounds i32, ptr %34, i64 %indvars.iv636
  %477 = load i32, ptr %476, align 4, !tbaa !5
  %478 = mul nsw i32 %477, %26
  %479 = sext i32 %478 to i64
  %gep539 = getelementptr float, ptr %invariant.gep527, i64 %479
  %480 = sext i32 %.1407543 to i64
  %481 = getelementptr inbounds float, ptr %33, i64 %480
  call void @scopy_(ptr noundef nonnull %2, ptr noundef %gep539, ptr noundef nonnull @c__1, ptr noundef nonnull %481, ptr noundef nonnull @c__1) #7
  %482 = load i32, ptr %2, align 4, !tbaa !5
  %483 = add i32 %478, 1
  %484 = add i32 %483, %482
  %485 = sext i32 %484 to i64
  %486 = getelementptr inbounds float, ptr %28, i64 %485
  %487 = sext i32 %.1544 to i64
  %488 = getelementptr inbounds float, ptr %33, i64 %487
  call void @scopy_(ptr noundef nonnull %23, ptr noundef %486, ptr noundef nonnull @c__1, ptr noundef nonnull %488, ptr noundef nonnull @c__1) #7
  %489 = sext i32 %477 to i64
  %490 = getelementptr inbounds float, ptr %25, i64 %489
  %491 = load float, ptr %490, align 4, !tbaa !9
  %492 = getelementptr inbounds float, ptr %30, i64 %indvars.iv636
  store float %491, ptr %492, align 4, !tbaa !9
  %indvars.iv.next637 = add nuw nsw i64 %indvars.iv636, 1
  %493 = load i32, ptr %2, align 4, !tbaa !5
  %494 = add nsw i32 %493, %.1407543
  %495 = load i32, ptr %23, align 4, !tbaa !5
  %496 = add nsw i32 %495, %.1544
  %497 = add nuw nsw i32 %.7542, 1
  %498 = load i32, ptr %18, align 4, !tbaa !5
  %.not449.not = icmp slt i32 %.7542, %498
  br i1 %.not449.not, label %.lr.ph546, label %._crit_edge547.loopexit, !llvm.loop !36

._crit_edge547.loopexit:                          ; preds = %.lr.ph546
  %499 = trunc nuw i64 %indvars.iv.next637 to i32
  br label %._crit_edge547

._crit_edge547:                                   ; preds = %._crit_edge547.loopexit, %._crit_edge535
  %.7425.lcssa = phi i32 [ %.6424.lcssa, %._crit_edge535 ], [ %499, %._crit_edge547.loopexit ]
  %.1.lcssa = phi i32 [ %459, %._crit_edge535 ], [ %496, %._crit_edge547.loopexit ]
  %500 = load i32, ptr %405, align 8, !tbaa !5
  store i32 %500, ptr %18, align 4, !tbaa !5
  %.not450550 = icmp slt i32 %500, 1
  br i1 %.not450550, label %._crit_edge556, label %.lr.ph555.preheader

.lr.ph555.preheader:                              ; preds = %._crit_edge547
  %501 = zext i32 %.7425.lcssa to i64
  br label %.lr.ph555

.lr.ph555:                                        ; preds = %.lr.ph555.preheader, %.lr.ph555
  %indvars.iv639 = phi i64 [ %501, %.lr.ph555.preheader ], [ %indvars.iv.next640, %.lr.ph555 ]
  %.2553 = phi i32 [ %.1.lcssa, %.lr.ph555.preheader ], [ %517, %.lr.ph555 ]
  %.8552 = phi i32 [ 1, %.lr.ph555.preheader ], [ %518, %.lr.ph555 ]
  %502 = getelementptr inbounds i32, ptr %34, i64 %indvars.iv639
  %503 = load i32, ptr %502, align 4, !tbaa !5
  %504 = load i32, ptr %2, align 4, !tbaa !5
  %505 = add nsw i32 %504, 1
  %506 = mul nsw i32 %503, %26
  %507 = add nsw i32 %505, %506
  %508 = sext i32 %507 to i64
  %509 = getelementptr inbounds float, ptr %28, i64 %508
  %510 = sext i32 %.2553 to i64
  %511 = getelementptr inbounds float, ptr %33, i64 %510
  call void @scopy_(ptr noundef nonnull %23, ptr noundef %509, ptr noundef nonnull @c__1, ptr noundef nonnull %511, ptr noundef nonnull @c__1) #7
  %512 = sext i32 %503 to i64
  %513 = getelementptr inbounds float, ptr %25, i64 %512
  %514 = load float, ptr %513, align 4, !tbaa !9
  %515 = getelementptr inbounds float, ptr %30, i64 %indvars.iv639
  store float %514, ptr %515, align 4, !tbaa !9
  %indvars.iv.next640 = add nuw nsw i64 %indvars.iv639, 1
  %516 = load i32, ptr %23, align 4, !tbaa !5
  %517 = add nsw i32 %516, %.2553
  %518 = add nuw nsw i32 %.8552, 1
  %519 = load i32, ptr %18, align 4, !tbaa !5
  %.not450.not = icmp slt i32 %.8552, %519
  br i1 %.not450.not, label %.lr.ph555, label %._crit_edge556.loopexit, !llvm.loop !37

._crit_edge556.loopexit:                          ; preds = %.lr.ph555
  %520 = trunc nuw i64 %indvars.iv.next640 to i32
  br label %._crit_edge556

._crit_edge556:                                   ; preds = %._crit_edge556.loopexit, %._crit_edge547
  %.8426.lcssa = phi i32 [ %.7425.lcssa, %._crit_edge547 ], [ %520, %._crit_edge556.loopexit ]
  %.2.lcssa = phi i32 [ %.1.lcssa, %._crit_edge547 ], [ %517, %._crit_edge556.loopexit ]
  %521 = load i32, ptr %408, align 4, !tbaa !5
  store i32 %521, ptr %18, align 4, !tbaa !5
  %.not451561 = icmp slt i32 %521, 1
  br i1 %.not451561, label %._crit_edge556.._crit_edge567_crit_edge, label %.lr.ph566.preheader

._crit_edge556.._crit_edge567_crit_edge:          ; preds = %._crit_edge556
  %.pre654 = load i32, ptr %1, align 4, !tbaa !5
  br label %._crit_edge567

.lr.ph566.preheader:                              ; preds = %._crit_edge556
  %522 = zext i32 %.8426.lcssa to i64
  br label %.lr.ph566

.lr.ph566:                                        ; preds = %.lr.ph566.preheader, %.lr.ph566
  %indvars.iv642 = phi i64 [ %522, %.lr.ph566.preheader ], [ %indvars.iv.next643, %.lr.ph566 ]
  %.3564 = phi i32 [ %.2.lcssa, %.lr.ph566.preheader ], [ %530, %.lr.ph566 ]
  %.9563 = phi i32 [ 1, %.lr.ph566.preheader ], [ %535, %.lr.ph566 ]
  %523 = getelementptr inbounds i32, ptr %34, i64 %indvars.iv642
  %524 = load i32, ptr %523, align 4, !tbaa !5
  %525 = mul nsw i32 %524, %26
  %526 = sext i32 %525 to i64
  %gep560 = getelementptr float, ptr %invariant.gep527, i64 %526
  %527 = sext i32 %.3564 to i64
  %528 = getelementptr inbounds float, ptr %33, i64 %527
  call void @scopy_(ptr noundef nonnull %1, ptr noundef %gep560, ptr noundef nonnull @c__1, ptr noundef nonnull %528, ptr noundef nonnull @c__1) #7
  %529 = load i32, ptr %1, align 4, !tbaa !5
  %530 = add nsw i32 %529, %.3564
  %531 = sext i32 %524 to i64
  %532 = getelementptr inbounds float, ptr %25, i64 %531
  %533 = load float, ptr %532, align 4, !tbaa !9
  %534 = getelementptr inbounds float, ptr %30, i64 %indvars.iv642
  store float %533, ptr %534, align 4, !tbaa !9
  %indvars.iv.next643 = add nuw nsw i64 %indvars.iv642, 1
  %535 = add nuw nsw i32 %.9563, 1
  %536 = load i32, ptr %18, align 4, !tbaa !5
  %.not451.not = icmp slt i32 %.9563, %536
  br i1 %.not451.not, label %.lr.ph566, label %._crit_edge567, !llvm.loop !38

._crit_edge567:                                   ; preds = %.lr.ph566, %._crit_edge556.._crit_edge567_crit_edge
  %537 = phi i32 [ %.pre654, %._crit_edge556.._crit_edge567_crit_edge ], [ %529, %.lr.ph566 ]
  %538 = load i32, ptr %0, align 4, !tbaa !5
  %539 = icmp slt i32 %538, %537
  br i1 %539, label %540, label %.loopexit.loopexit

540:                                              ; preds = %._crit_edge567
  %541 = sext i32 %.2.lcssa to i64
  %542 = getelementptr inbounds float, ptr %33, i64 %541
  %543 = add nsw i32 %538, 1
  %544 = mul nsw i32 %543, %26
  %545 = sext i32 %544 to i64
  %546 = getelementptr float, ptr %28, i64 %545
  %547 = getelementptr i8, ptr %546, i64 4
  call void @slacpy_(ptr noundef nonnull @.str.2, ptr noundef nonnull %1, ptr noundef nonnull %408, ptr noundef nonnull %542, ptr noundef nonnull %1, ptr noundef %547, ptr noundef nonnull %5) #7
  %548 = load i32, ptr %1, align 4, !tbaa !5
  %549 = load i32, ptr %0, align 4, !tbaa !5
  %550 = sub nsw i32 %548, %549
  store i32 %550, ptr %18, align 4, !tbaa !5
  %551 = add nsw i32 %549, 1
  %552 = sext i32 %551 to i64
  %553 = getelementptr inbounds float, ptr %30, i64 %552
  %554 = getelementptr inbounds float, ptr %25, i64 %552
  call void @scopy_(ptr noundef nonnull %18, ptr noundef nonnull %553, ptr noundef nonnull @c__1, ptr noundef nonnull %554, ptr noundef nonnull @c__1) #7
  br label %.loopexit.loopexit

.loopexit.loopexit:                               ; preds = %540, %._crit_edge567
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %15, ptr noundef nonnull align 16 dereferenceable(16) %19, i64 16, i1 false), !tbaa !5
  br label %.loopexit

.loopexit:                                        ; preds = %.loopexit.loopexit, %._crit_edge477, %51, %.thread
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %24) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %19) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #7
  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 @sscal_(ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

declare float @slamch_(ptr noundef) local_unnamed_addr #2

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

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

declare float @slapy2_(ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

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

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

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

; 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) #6

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"float", !7, i64 0}
!11 = !{!12}
!12 = distinct !{!12, !13}
!13 = distinct !{!13, !"LVerDomain"}
!14 = !{!15}
!15 = distinct !{!15, !13}
!16 = distinct !{!16, !17, !18, !19}
!17 = !{!"llvm.loop.mustprogress"}
!18 = !{!"llvm.loop.isvectorized", i32 1}
!19 = !{!"llvm.loop.unroll.runtime.disable"}
!20 = distinct !{!20, !21}
!21 = !{!"llvm.loop.unroll.disable"}
!22 = distinct !{!22, !17, !18}
!23 = distinct !{!23, !17}
!24 = distinct !{!24, !21}
!25 = distinct !{!25, !17}
!26 = distinct !{!26, !21}
!27 = distinct !{!27, !17}
!28 = distinct !{!28, !17, !18, !19}
!29 = distinct !{!29, !17, !19, !18}
!30 = distinct !{!30, !17, !18, !19}
!31 = distinct !{!31, !17, !19, !18}
!32 = distinct !{!32, !17}
!33 = distinct !{!33, !17}
!34 = distinct !{!34, !17}
!35 = distinct !{!35, !17}
!36 = distinct !{!36, !17}
!37 = distinct !{!37, !17}
!38 = distinct !{!38, !17}


; Effective O3 passes: 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