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

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

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

; Function Attrs: nounwind uwtable
define dso_local void @slaed9_(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) #0 {
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca float, align 4
  %34 = alloca float, align 4
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  store ptr %0, ptr %14, align 8, !tbaa !5
  store ptr %1, ptr %15, align 8, !tbaa !5
  store ptr %2, ptr %16, align 8, !tbaa !5
  store ptr %3, ptr %17, align 8, !tbaa !5
  store ptr %4, ptr %18, align 8, !tbaa !5
  store ptr %5, ptr %19, align 8, !tbaa !5
  store ptr %6, ptr %20, align 8, !tbaa !5
  store ptr %7, ptr %21, align 8, !tbaa !5
  store ptr %8, ptr %22, align 8, !tbaa !5
  store ptr %9, ptr %23, align 8, !tbaa !5
  store ptr %10, ptr %24, align 8, !tbaa !5
  store ptr %11, ptr %25, align 8, !tbaa !5
  store ptr %12, ptr %26, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #4
  %38 = load ptr, ptr %18, align 8, !tbaa !5
  %39 = getelementptr inbounds float, ptr %38, i32 -1
  store ptr %39, ptr %18, align 8, !tbaa !5
  %40 = load ptr, ptr %20, align 8, !tbaa !5
  %41 = load i32, ptr %40, align 4, !tbaa !9
  store i32 %41, ptr %27, align 4, !tbaa !9
  %42 = load i32, ptr %27, align 4, !tbaa !9
  %43 = mul nsw i32 %42, 1
  %44 = add nsw i32 1, %43
  store i32 %44, ptr %28, align 4, !tbaa !9
  %45 = load i32, ptr %28, align 4, !tbaa !9
  %46 = load ptr, ptr %19, align 8, !tbaa !5
  %47 = sext i32 %45 to i64
  %48 = sub i64 0, %47
  %49 = getelementptr inbounds float, ptr %46, i64 %48
  store ptr %49, ptr %19, align 8, !tbaa !5
  %50 = load ptr, ptr %22, align 8, !tbaa !5
  %51 = getelementptr inbounds float, ptr %50, i32 -1
  store ptr %51, ptr %22, align 8, !tbaa !5
  %52 = load ptr, ptr %23, align 8, !tbaa !5
  %53 = getelementptr inbounds float, ptr %52, i32 -1
  store ptr %53, ptr %23, align 8, !tbaa !5
  %54 = load ptr, ptr %25, align 8, !tbaa !5
  %55 = load i32, ptr %54, align 4, !tbaa !9
  store i32 %55, ptr %29, align 4, !tbaa !9
  %56 = load i32, ptr %29, align 4, !tbaa !9
  %57 = mul nsw i32 %56, 1
  %58 = add nsw i32 1, %57
  store i32 %58, ptr %30, align 4, !tbaa !9
  %59 = load i32, ptr %30, align 4, !tbaa !9
  %60 = load ptr, ptr %24, align 8, !tbaa !5
  %61 = sext i32 %59 to i64
  %62 = sub i64 0, %61
  %63 = getelementptr inbounds float, ptr %60, i64 %62
  store ptr %63, ptr %24, align 8, !tbaa !5
  %64 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 0, ptr %64, align 4, !tbaa !9
  %65 = load ptr, ptr %14, align 8, !tbaa !5
  %66 = load i32, ptr %65, align 4, !tbaa !9
  %67 = icmp slt i32 %66, 0
  br i1 %67, label %68, label %70

68:                                               ; preds = %13
  %69 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 -1, ptr %69, align 4, !tbaa !9
  br label %160

70:                                               ; preds = %13
  %71 = load ptr, ptr %15, align 8, !tbaa !5
  %72 = load i32, ptr %71, align 4, !tbaa !9
  %73 = icmp slt i32 %72, 1
  br i1 %73, label %87, label %74

74:                                               ; preds = %70
  %75 = load ptr, ptr %15, align 8, !tbaa !5
  %76 = load i32, ptr %75, align 4, !tbaa !9
  %77 = load ptr, ptr %14, align 8, !tbaa !5
  %78 = load i32, ptr %77, align 4, !tbaa !9
  %79 = icmp sge i32 1, %78
  br i1 %79, label %80, label %81

80:                                               ; preds = %74
  br label %84

81:                                               ; preds = %74
  %82 = load ptr, ptr %14, align 8, !tbaa !5
  %83 = load i32, ptr %82, align 4, !tbaa !9
  br label %84

84:                                               ; preds = %81, %80
  %85 = phi i32 [ 1, %80 ], [ %83, %81 ]
  %86 = icmp sgt i32 %76, %85
  br i1 %86, label %87, label %89

87:                                               ; preds = %84, %70
  %88 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 -2, ptr %88, align 4, !tbaa !9
  br label %159

89:                                               ; preds = %84
  %90 = load ptr, ptr %16, align 8, !tbaa !5
  %91 = load i32, ptr %90, align 4, !tbaa !9
  %92 = icmp sge i32 1, %91
  br i1 %92, label %93, label %94

93:                                               ; preds = %89
  br label %97

94:                                               ; preds = %89
  %95 = load ptr, ptr %16, align 8, !tbaa !5
  %96 = load i32, ptr %95, align 4, !tbaa !9
  br label %97

97:                                               ; preds = %94, %93
  %98 = phi i32 [ 1, %93 ], [ %96, %94 ]
  %99 = load ptr, ptr %15, align 8, !tbaa !5
  %100 = load i32, ptr %99, align 4, !tbaa !9
  %101 = icmp slt i32 %98, %100
  br i1 %101, label %115, label %102

102:                                              ; preds = %97
  %103 = load ptr, ptr %16, align 8, !tbaa !5
  %104 = load i32, ptr %103, align 4, !tbaa !9
  %105 = load ptr, ptr %14, align 8, !tbaa !5
  %106 = load i32, ptr %105, align 4, !tbaa !9
  %107 = icmp sge i32 1, %106
  br i1 %107, label %108, label %109

108:                                              ; preds = %102
  br label %112

109:                                              ; preds = %102
  %110 = load ptr, ptr %14, align 8, !tbaa !5
  %111 = load i32, ptr %110, align 4, !tbaa !9
  br label %112

112:                                              ; preds = %109, %108
  %113 = phi i32 [ 1, %108 ], [ %111, %109 ]
  %114 = icmp sgt i32 %104, %113
  br i1 %114, label %115, label %117

115:                                              ; preds = %112, %97
  %116 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 -3, ptr %116, align 4, !tbaa !9
  br label %158

117:                                              ; preds = %112
  %118 = load ptr, ptr %17, align 8, !tbaa !5
  %119 = load i32, ptr %118, align 4, !tbaa !9
  %120 = load ptr, ptr %14, align 8, !tbaa !5
  %121 = load i32, ptr %120, align 4, !tbaa !9
  %122 = icmp slt i32 %119, %121
  br i1 %122, label %123, label %125

123:                                              ; preds = %117
  %124 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 -4, ptr %124, align 4, !tbaa !9
  br label %157

125:                                              ; preds = %117
  %126 = load ptr, ptr %20, align 8, !tbaa !5
  %127 = load i32, ptr %126, align 4, !tbaa !9
  %128 = load ptr, ptr %14, align 8, !tbaa !5
  %129 = load i32, ptr %128, align 4, !tbaa !9
  %130 = icmp sge i32 1, %129
  br i1 %130, label %131, label %132

131:                                              ; preds = %125
  br label %135

132:                                              ; preds = %125
  %133 = load ptr, ptr %14, align 8, !tbaa !5
  %134 = load i32, ptr %133, align 4, !tbaa !9
  br label %135

135:                                              ; preds = %132, %131
  %136 = phi i32 [ 1, %131 ], [ %134, %132 ]
  %137 = icmp slt i32 %127, %136
  br i1 %137, label %138, label %140

138:                                              ; preds = %135
  %139 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 -7, ptr %139, align 4, !tbaa !9
  br label %156

140:                                              ; preds = %135
  %141 = load ptr, ptr %25, align 8, !tbaa !5
  %142 = load i32, ptr %141, align 4, !tbaa !9
  %143 = load ptr, ptr %14, align 8, !tbaa !5
  %144 = load i32, ptr %143, align 4, !tbaa !9
  %145 = icmp sge i32 1, %144
  br i1 %145, label %146, label %147

146:                                              ; preds = %140
  br label %150

147:                                              ; preds = %140
  %148 = load ptr, ptr %14, align 8, !tbaa !5
  %149 = load i32, ptr %148, align 4, !tbaa !9
  br label %150

150:                                              ; preds = %147, %146
  %151 = phi i32 [ 1, %146 ], [ %149, %147 ]
  %152 = icmp slt i32 %142, %151
  br i1 %152, label %153, label %155

153:                                              ; preds = %150
  %154 = load ptr, ptr %26, align 8, !tbaa !5
  store i32 -12, ptr %154, align 4, !tbaa !9
  br label %155

155:                                              ; preds = %153, %150
  br label %156

156:                                              ; preds = %155, %138
  br label %157

157:                                              ; preds = %156, %123
  br label %158

158:                                              ; preds = %157, %115
  br label %159

159:                                              ; preds = %158, %87
  br label %160

160:                                              ; preds = %159, %68
  %161 = load ptr, ptr %26, align 8, !tbaa !5
  %162 = load i32, ptr %161, align 4, !tbaa !9
  %163 = icmp ne i32 %162, 0
  br i1 %163, label %164, label %169

164:                                              ; preds = %160
  %165 = load ptr, ptr %26, align 8, !tbaa !5
  %166 = load i32, ptr %165, align 4, !tbaa !9
  %167 = sub nsw i32 0, %166
  store i32 %167, ptr %31, align 4, !tbaa !9
  %168 = call i32 @xerbla_(ptr noundef @.str, ptr noundef %31, i32 noundef 6)
  store i32 1, ptr %37, align 4
  br label %535

169:                                              ; preds = %160
  %170 = load ptr, ptr %14, align 8, !tbaa !5
  %171 = load i32, ptr %170, align 4, !tbaa !9
  %172 = icmp eq i32 %171, 0
  br i1 %172, label %173, label %174

173:                                              ; preds = %169
  store i32 1, ptr %37, align 4
  br label %535

174:                                              ; preds = %169
  %175 = load ptr, ptr %17, align 8, !tbaa !5
  %176 = load i32, ptr %175, align 4, !tbaa !9
  store i32 %176, ptr %31, align 4, !tbaa !9
  store i32 1, ptr %35, align 4, !tbaa !9
  br label %177

177:                                              ; preds = %201, %174
  %178 = load i32, ptr %35, align 4, !tbaa !9
  %179 = load i32, ptr %31, align 4, !tbaa !9
  %180 = icmp sle i32 %178, %179
  br i1 %180, label %181, label %204

181:                                              ; preds = %177
  %182 = load ptr, ptr %22, align 8, !tbaa !5
  %183 = load i32, ptr %35, align 4, !tbaa !9
  %184 = sext i32 %183 to i64
  %185 = getelementptr inbounds float, ptr %182, i64 %184
  %186 = load ptr, ptr %22, align 8, !tbaa !5
  %187 = load i32, ptr %35, align 4, !tbaa !9
  %188 = sext i32 %187 to i64
  %189 = getelementptr inbounds float, ptr %186, i64 %188
  %190 = call float @slamc3_(ptr noundef %185, ptr noundef %189)
  %191 = load ptr, ptr %22, align 8, !tbaa !5
  %192 = load i32, ptr %35, align 4, !tbaa !9
  %193 = sext i32 %192 to i64
  %194 = getelementptr inbounds float, ptr %191, i64 %193
  %195 = load float, ptr %194, align 4, !tbaa !11
  %196 = fsub float %190, %195
  %197 = load ptr, ptr %22, align 8, !tbaa !5
  %198 = load i32, ptr %35, align 4, !tbaa !9
  %199 = sext i32 %198 to i64
  %200 = getelementptr inbounds float, ptr %197, i64 %199
  store float %196, ptr %200, align 4, !tbaa !11
  br label %201

201:                                              ; preds = %181
  %202 = load i32, ptr %35, align 4, !tbaa !9
  %203 = add nsw i32 %202, 1
  store i32 %203, ptr %35, align 4, !tbaa !9
  br label %177, !llvm.loop !13

204:                                              ; preds = %177
  %205 = load ptr, ptr %16, align 8, !tbaa !5
  %206 = load i32, ptr %205, align 4, !tbaa !9
  store i32 %206, ptr %31, align 4, !tbaa !9
  %207 = load ptr, ptr %15, align 8, !tbaa !5
  %208 = load i32, ptr %207, align 4, !tbaa !9
  store i32 %208, ptr %36, align 4, !tbaa !9
  br label %209

209:                                              ; preds = %237, %204
  %210 = load i32, ptr %36, align 4, !tbaa !9
  %211 = load i32, ptr %31, align 4, !tbaa !9
  %212 = icmp sle i32 %210, %211
  br i1 %212, label %213, label %240

213:                                              ; preds = %209
  %214 = load ptr, ptr %14, align 8, !tbaa !5
  %215 = load ptr, ptr %22, align 8, !tbaa !5
  %216 = getelementptr inbounds float, ptr %215, i64 1
  %217 = load ptr, ptr %23, align 8, !tbaa !5
  %218 = getelementptr inbounds float, ptr %217, i64 1
  %219 = load ptr, ptr %19, align 8, !tbaa !5
  %220 = load i32, ptr %36, align 4, !tbaa !9
  %221 = load i32, ptr %27, align 4, !tbaa !9
  %222 = mul nsw i32 %220, %221
  %223 = add nsw i32 %222, 1
  %224 = sext i32 %223 to i64
  %225 = getelementptr inbounds float, ptr %219, i64 %224
  %226 = load ptr, ptr %21, align 8, !tbaa !5
  %227 = load ptr, ptr %18, align 8, !tbaa !5
  %228 = load i32, ptr %36, align 4, !tbaa !9
  %229 = sext i32 %228 to i64
  %230 = getelementptr inbounds float, ptr %227, i64 %229
  %231 = load ptr, ptr %26, align 8, !tbaa !5
  call void @slaed4_(ptr noundef %214, ptr noundef %36, ptr noundef %216, ptr noundef %218, ptr noundef %225, ptr noundef %226, ptr noundef %230, ptr noundef %231)
  %232 = load ptr, ptr %26, align 8, !tbaa !5
  %233 = load i32, ptr %232, align 4, !tbaa !9
  %234 = icmp ne i32 %233, 0
  br i1 %234, label %235, label %236

235:                                              ; preds = %213
  br label %534

236:                                              ; preds = %213
  br label %237

237:                                              ; preds = %236
  %238 = load i32, ptr %36, align 4, !tbaa !9
  %239 = add nsw i32 %238, 1
  store i32 %239, ptr %36, align 4, !tbaa !9
  br label %209, !llvm.loop !15

240:                                              ; preds = %209
  %241 = load ptr, ptr %14, align 8, !tbaa !5
  %242 = load i32, ptr %241, align 4, !tbaa !9
  %243 = icmp eq i32 %242, 1
  br i1 %243, label %248, label %244

244:                                              ; preds = %240
  %245 = load ptr, ptr %14, align 8, !tbaa !5
  %246 = load i32, ptr %245, align 4, !tbaa !9
  %247 = icmp eq i32 %246, 2
  br i1 %247, label %248, label %288

248:                                              ; preds = %244, %240
  %249 = load ptr, ptr %14, align 8, !tbaa !5
  %250 = load i32, ptr %249, align 4, !tbaa !9
  store i32 %250, ptr %31, align 4, !tbaa !9
  store i32 1, ptr %35, align 4, !tbaa !9
  br label %251

251:                                              ; preds = %284, %248
  %252 = load i32, ptr %35, align 4, !tbaa !9
  %253 = load i32, ptr %31, align 4, !tbaa !9
  %254 = icmp sle i32 %252, %253
  br i1 %254, label %255, label %287

255:                                              ; preds = %251
  %256 = load ptr, ptr %14, align 8, !tbaa !5
  %257 = load i32, ptr %256, align 4, !tbaa !9
  store i32 %257, ptr %32, align 4, !tbaa !9
  store i32 1, ptr %36, align 4, !tbaa !9
  br label %258

258:                                              ; preds = %280, %255
  %259 = load i32, ptr %36, align 4, !tbaa !9
  %260 = load i32, ptr %32, align 4, !tbaa !9
  %261 = icmp sle i32 %259, %260
  br i1 %261, label %262, label %283

262:                                              ; preds = %258
  %263 = load ptr, ptr %19, align 8, !tbaa !5
  %264 = load i32, ptr %36, align 4, !tbaa !9
  %265 = load i32, ptr %35, align 4, !tbaa !9
  %266 = load i32, ptr %27, align 4, !tbaa !9
  %267 = mul nsw i32 %265, %266
  %268 = add nsw i32 %264, %267
  %269 = sext i32 %268 to i64
  %270 = getelementptr inbounds float, ptr %263, i64 %269
  %271 = load float, ptr %270, align 4, !tbaa !11
  %272 = load ptr, ptr %24, align 8, !tbaa !5
  %273 = load i32, ptr %36, align 4, !tbaa !9
  %274 = load i32, ptr %35, align 4, !tbaa !9
  %275 = load i32, ptr %29, align 4, !tbaa !9
  %276 = mul nsw i32 %274, %275
  %277 = add nsw i32 %273, %276
  %278 = sext i32 %277 to i64
  %279 = getelementptr inbounds float, ptr %272, i64 %278
  store float %271, ptr %279, align 4, !tbaa !11
  br label %280

280:                                              ; preds = %262
  %281 = load i32, ptr %36, align 4, !tbaa !9
  %282 = add nsw i32 %281, 1
  store i32 %282, ptr %36, align 4, !tbaa !9
  br label %258, !llvm.loop !16

283:                                              ; preds = %258
  br label %284

284:                                              ; preds = %283
  %285 = load i32, ptr %35, align 4, !tbaa !9
  %286 = add nsw i32 %285, 1
  store i32 %286, ptr %35, align 4, !tbaa !9
  br label %251, !llvm.loop !17

287:                                              ; preds = %251
  br label %534

288:                                              ; preds = %244
  %289 = load ptr, ptr %14, align 8, !tbaa !5
  %290 = load ptr, ptr %23, align 8, !tbaa !5
  %291 = getelementptr inbounds float, ptr %290, i64 1
  %292 = load ptr, ptr %24, align 8, !tbaa !5
  %293 = load i32, ptr %30, align 4, !tbaa !9
  %294 = sext i32 %293 to i64
  %295 = getelementptr inbounds float, ptr %292, i64 %294
  call void @scopy_(ptr noundef %289, ptr noundef %291, ptr noundef @c__1, ptr noundef %295, ptr noundef @c__1)
  %296 = load ptr, ptr %20, align 8, !tbaa !5
  %297 = load i32, ptr %296, align 4, !tbaa !9
  %298 = add nsw i32 %297, 1
  store i32 %298, ptr %31, align 4, !tbaa !9
  %299 = load ptr, ptr %14, align 8, !tbaa !5
  %300 = load ptr, ptr %19, align 8, !tbaa !5
  %301 = load i32, ptr %28, align 4, !tbaa !9
  %302 = sext i32 %301 to i64
  %303 = getelementptr inbounds float, ptr %300, i64 %302
  %304 = load ptr, ptr %23, align 8, !tbaa !5
  %305 = getelementptr inbounds float, ptr %304, i64 1
  call void @scopy_(ptr noundef %299, ptr noundef %303, ptr noundef %31, ptr noundef %305, ptr noundef @c__1)
  %306 = load ptr, ptr %14, align 8, !tbaa !5
  %307 = load i32, ptr %306, align 4, !tbaa !9
  store i32 %307, ptr %31, align 4, !tbaa !9
  store i32 1, ptr %36, align 4, !tbaa !9
  br label %308

308:                                              ; preds = %391, %288
  %309 = load i32, ptr %36, align 4, !tbaa !9
  %310 = load i32, ptr %31, align 4, !tbaa !9
  %311 = icmp sle i32 %309, %310
  br i1 %311, label %312, label %394

312:                                              ; preds = %308
  %313 = load i32, ptr %36, align 4, !tbaa !9
  %314 = sub nsw i32 %313, 1
  store i32 %314, ptr %32, align 4, !tbaa !9
  store i32 1, ptr %35, align 4, !tbaa !9
  br label %315

315:                                              ; preds = %347, %312
  %316 = load i32, ptr %35, align 4, !tbaa !9
  %317 = load i32, ptr %32, align 4, !tbaa !9
  %318 = icmp sle i32 %316, %317
  br i1 %318, label %319, label %350

319:                                              ; preds = %315
  %320 = load ptr, ptr %19, align 8, !tbaa !5
  %321 = load i32, ptr %35, align 4, !tbaa !9
  %322 = load i32, ptr %36, align 4, !tbaa !9
  %323 = load i32, ptr %27, align 4, !tbaa !9
  %324 = mul nsw i32 %322, %323
  %325 = add nsw i32 %321, %324
  %326 = sext i32 %325 to i64
  %327 = getelementptr inbounds float, ptr %320, i64 %326
  %328 = load float, ptr %327, align 4, !tbaa !11
  %329 = load ptr, ptr %22, align 8, !tbaa !5
  %330 = load i32, ptr %35, align 4, !tbaa !9
  %331 = sext i32 %330 to i64
  %332 = getelementptr inbounds float, ptr %329, i64 %331
  %333 = load float, ptr %332, align 4, !tbaa !11
  %334 = load ptr, ptr %22, align 8, !tbaa !5
  %335 = load i32, ptr %36, align 4, !tbaa !9
  %336 = sext i32 %335 to i64
  %337 = getelementptr inbounds float, ptr %334, i64 %336
  %338 = load float, ptr %337, align 4, !tbaa !11
  %339 = fsub float %333, %338
  %340 = fdiv float %328, %339
  %341 = load ptr, ptr %23, align 8, !tbaa !5
  %342 = load i32, ptr %35, align 4, !tbaa !9
  %343 = sext i32 %342 to i64
  %344 = getelementptr inbounds float, ptr %341, i64 %343
  %345 = load float, ptr %344, align 4, !tbaa !11
  %346 = fmul float %345, %340
  store float %346, ptr %344, align 4, !tbaa !11
  br label %347

347:                                              ; preds = %319
  %348 = load i32, ptr %35, align 4, !tbaa !9
  %349 = add nsw i32 %348, 1
  store i32 %349, ptr %35, align 4, !tbaa !9
  br label %315, !llvm.loop !18

350:                                              ; preds = %315
  %351 = load ptr, ptr %14, align 8, !tbaa !5
  %352 = load i32, ptr %351, align 4, !tbaa !9
  store i32 %352, ptr %32, align 4, !tbaa !9
  %353 = load i32, ptr %36, align 4, !tbaa !9
  %354 = add nsw i32 %353, 1
  store i32 %354, ptr %35, align 4, !tbaa !9
  br label %355

355:                                              ; preds = %387, %350
  %356 = load i32, ptr %35, align 4, !tbaa !9
  %357 = load i32, ptr %32, align 4, !tbaa !9
  %358 = icmp sle i32 %356, %357
  br i1 %358, label %359, label %390

359:                                              ; preds = %355
  %360 = load ptr, ptr %19, align 8, !tbaa !5
  %361 = load i32, ptr %35, align 4, !tbaa !9
  %362 = load i32, ptr %36, align 4, !tbaa !9
  %363 = load i32, ptr %27, align 4, !tbaa !9
  %364 = mul nsw i32 %362, %363
  %365 = add nsw i32 %361, %364
  %366 = sext i32 %365 to i64
  %367 = getelementptr inbounds float, ptr %360, i64 %366
  %368 = load float, ptr %367, align 4, !tbaa !11
  %369 = load ptr, ptr %22, align 8, !tbaa !5
  %370 = load i32, ptr %35, align 4, !tbaa !9
  %371 = sext i32 %370 to i64
  %372 = getelementptr inbounds float, ptr %369, i64 %371
  %373 = load float, ptr %372, align 4, !tbaa !11
  %374 = load ptr, ptr %22, align 8, !tbaa !5
  %375 = load i32, ptr %36, align 4, !tbaa !9
  %376 = sext i32 %375 to i64
  %377 = getelementptr inbounds float, ptr %374, i64 %376
  %378 = load float, ptr %377, align 4, !tbaa !11
  %379 = fsub float %373, %378
  %380 = fdiv float %368, %379
  %381 = load ptr, ptr %23, align 8, !tbaa !5
  %382 = load i32, ptr %35, align 4, !tbaa !9
  %383 = sext i32 %382 to i64
  %384 = getelementptr inbounds float, ptr %381, i64 %383
  %385 = load float, ptr %384, align 4, !tbaa !11
  %386 = fmul float %385, %380
  store float %386, ptr %384, align 4, !tbaa !11
  br label %387

387:                                              ; preds = %359
  %388 = load i32, ptr %35, align 4, !tbaa !9
  %389 = add nsw i32 %388, 1
  store i32 %389, ptr %35, align 4, !tbaa !9
  br label %355, !llvm.loop !19

390:                                              ; preds = %355
  br label %391

391:                                              ; preds = %390
  %392 = load i32, ptr %36, align 4, !tbaa !9
  %393 = add nsw i32 %392, 1
  store i32 %393, ptr %36, align 4, !tbaa !9
  br label %308, !llvm.loop !20

394:                                              ; preds = %308
  %395 = load ptr, ptr %14, align 8, !tbaa !5
  %396 = load i32, ptr %395, align 4, !tbaa !9
  store i32 %396, ptr %31, align 4, !tbaa !9
  store i32 1, ptr %35, align 4, !tbaa !9
  br label %397

397:                                              ; preds = %446, %394
  %398 = load i32, ptr %35, align 4, !tbaa !9
  %399 = load i32, ptr %31, align 4, !tbaa !9
  %400 = icmp sle i32 %398, %399
  br i1 %400, label %401, label %449

401:                                              ; preds = %397
  %402 = load ptr, ptr %23, align 8, !tbaa !5
  %403 = load i32, ptr %35, align 4, !tbaa !9
  %404 = sext i32 %403 to i64
  %405 = getelementptr inbounds float, ptr %402, i64 %404
  %406 = load float, ptr %405, align 4, !tbaa !11
  %407 = fneg float %406
  %408 = fpext float %407 to double
  %409 = call double @sqrt(double noundef %408) #4
  %410 = fptrunc double %409 to float
  store float %410, ptr %33, align 4, !tbaa !11
  %411 = load ptr, ptr %24, align 8, !tbaa !5
  %412 = load i32, ptr %35, align 4, !tbaa !9
  %413 = load i32, ptr %29, align 4, !tbaa !9
  %414 = add nsw i32 %412, %413
  %415 = sext i32 %414 to i64
  %416 = getelementptr inbounds float, ptr %411, i64 %415
  %417 = load float, ptr %416, align 4, !tbaa !11
  %418 = fcmp oge float %417, 0.000000e+00
  br i1 %418, label %419, label %429

419:                                              ; preds = %401
  %420 = load float, ptr %33, align 4, !tbaa !11
  %421 = fcmp oge float %420, 0.000000e+00
  br i1 %421, label %422, label %424

422:                                              ; preds = %419
  %423 = load float, ptr %33, align 4, !tbaa !11
  br label %427

424:                                              ; preds = %419
  %425 = load float, ptr %33, align 4, !tbaa !11
  %426 = fneg float %425
  br label %427

427:                                              ; preds = %424, %422
  %428 = phi float [ %423, %422 ], [ %426, %424 ]
  br label %440

429:                                              ; preds = %401
  %430 = load float, ptr %33, align 4, !tbaa !11
  %431 = fcmp oge float %430, 0.000000e+00
  br i1 %431, label %432, label %434

432:                                              ; preds = %429
  %433 = load float, ptr %33, align 4, !tbaa !11
  br label %437

434:                                              ; preds = %429
  %435 = load float, ptr %33, align 4, !tbaa !11
  %436 = fneg float %435
  br label %437

437:                                              ; preds = %434, %432
  %438 = phi float [ %433, %432 ], [ %436, %434 ]
  %439 = fneg float %438
  br label %440

440:                                              ; preds = %437, %427
  %441 = phi float [ %428, %427 ], [ %439, %437 ]
  %442 = load ptr, ptr %23, align 8, !tbaa !5
  %443 = load i32, ptr %35, align 4, !tbaa !9
  %444 = sext i32 %443 to i64
  %445 = getelementptr inbounds float, ptr %442, i64 %444
  store float %441, ptr %445, align 4, !tbaa !11
  br label %446

446:                                              ; preds = %440
  %447 = load i32, ptr %35, align 4, !tbaa !9
  %448 = add nsw i32 %447, 1
  store i32 %448, ptr %35, align 4, !tbaa !9
  br label %397, !llvm.loop !21

449:                                              ; preds = %397
  %450 = load ptr, ptr %14, align 8, !tbaa !5
  %451 = load i32, ptr %450, align 4, !tbaa !9
  store i32 %451, ptr %31, align 4, !tbaa !9
  store i32 1, ptr %36, align 4, !tbaa !9
  br label %452

452:                                              ; preds = %530, %449
  %453 = load i32, ptr %36, align 4, !tbaa !9
  %454 = load i32, ptr %31, align 4, !tbaa !9
  %455 = icmp sle i32 %453, %454
  br i1 %455, label %456, label %533

456:                                              ; preds = %452
  %457 = load ptr, ptr %14, align 8, !tbaa !5
  %458 = load i32, ptr %457, align 4, !tbaa !9
  store i32 %458, ptr %32, align 4, !tbaa !9
  store i32 1, ptr %35, align 4, !tbaa !9
  br label %459

459:                                              ; preds = %487, %456
  %460 = load i32, ptr %35, align 4, !tbaa !9
  %461 = load i32, ptr %32, align 4, !tbaa !9
  %462 = icmp sle i32 %460, %461
  br i1 %462, label %463, label %490

463:                                              ; preds = %459
  %464 = load ptr, ptr %23, align 8, !tbaa !5
  %465 = load i32, ptr %35, align 4, !tbaa !9
  %466 = sext i32 %465 to i64
  %467 = getelementptr inbounds float, ptr %464, i64 %466
  %468 = load float, ptr %467, align 4, !tbaa !11
  %469 = load ptr, ptr %19, align 8, !tbaa !5
  %470 = load i32, ptr %35, align 4, !tbaa !9
  %471 = load i32, ptr %36, align 4, !tbaa !9
  %472 = load i32, ptr %27, align 4, !tbaa !9
  %473 = mul nsw i32 %471, %472
  %474 = add nsw i32 %470, %473
  %475 = sext i32 %474 to i64
  %476 = getelementptr inbounds float, ptr %469, i64 %475
  %477 = load float, ptr %476, align 4, !tbaa !11
  %478 = fdiv float %468, %477
  %479 = load ptr, ptr %19, align 8, !tbaa !5
  %480 = load i32, ptr %35, align 4, !tbaa !9
  %481 = load i32, ptr %36, align 4, !tbaa !9
  %482 = load i32, ptr %27, align 4, !tbaa !9
  %483 = mul nsw i32 %481, %482
  %484 = add nsw i32 %480, %483
  %485 = sext i32 %484 to i64
  %486 = getelementptr inbounds float, ptr %479, i64 %485
  store float %478, ptr %486, align 4, !tbaa !11
  br label %487

487:                                              ; preds = %463
  %488 = load i32, ptr %35, align 4, !tbaa !9
  %489 = add nsw i32 %488, 1
  store i32 %489, ptr %35, align 4, !tbaa !9
  br label %459, !llvm.loop !22

490:                                              ; preds = %459
  %491 = load ptr, ptr %14, align 8, !tbaa !5
  %492 = load ptr, ptr %19, align 8, !tbaa !5
  %493 = load i32, ptr %36, align 4, !tbaa !9
  %494 = load i32, ptr %27, align 4, !tbaa !9
  %495 = mul nsw i32 %493, %494
  %496 = add nsw i32 %495, 1
  %497 = sext i32 %496 to i64
  %498 = getelementptr inbounds float, ptr %492, i64 %497
  %499 = call float @snrm2_(ptr noundef %491, ptr noundef %498, ptr noundef @c__1)
  store float %499, ptr %34, align 4, !tbaa !11
  %500 = load ptr, ptr %14, align 8, !tbaa !5
  %501 = load i32, ptr %500, align 4, !tbaa !9
  store i32 %501, ptr %32, align 4, !tbaa !9
  store i32 1, ptr %35, align 4, !tbaa !9
  br label %502

502:                                              ; preds = %526, %490
  %503 = load i32, ptr %35, align 4, !tbaa !9
  %504 = load i32, ptr %32, align 4, !tbaa !9
  %505 = icmp sle i32 %503, %504
  br i1 %505, label %506, label %529

506:                                              ; preds = %502
  %507 = load ptr, ptr %19, align 8, !tbaa !5
  %508 = load i32, ptr %35, align 4, !tbaa !9
  %509 = load i32, ptr %36, align 4, !tbaa !9
  %510 = load i32, ptr %27, align 4, !tbaa !9
  %511 = mul nsw i32 %509, %510
  %512 = add nsw i32 %508, %511
  %513 = sext i32 %512 to i64
  %514 = getelementptr inbounds float, ptr %507, i64 %513
  %515 = load float, ptr %514, align 4, !tbaa !11
  %516 = load float, ptr %34, align 4, !tbaa !11
  %517 = fdiv float %515, %516
  %518 = load ptr, ptr %24, align 8, !tbaa !5
  %519 = load i32, ptr %35, align 4, !tbaa !9
  %520 = load i32, ptr %36, align 4, !tbaa !9
  %521 = load i32, ptr %29, align 4, !tbaa !9
  %522 = mul nsw i32 %520, %521
  %523 = add nsw i32 %519, %522
  %524 = sext i32 %523 to i64
  %525 = getelementptr inbounds float, ptr %518, i64 %524
  store float %517, ptr %525, align 4, !tbaa !11
  br label %526

526:                                              ; preds = %506
  %527 = load i32, ptr %35, align 4, !tbaa !9
  %528 = add nsw i32 %527, 1
  store i32 %528, ptr %35, align 4, !tbaa !9
  br label %502, !llvm.loop !23

529:                                              ; preds = %502
  br label %530

530:                                              ; preds = %529
  %531 = load i32, ptr %36, align 4, !tbaa !9
  %532 = add nsw i32 %531, 1
  store i32 %532, ptr %36, align 4, !tbaa !9
  br label %452, !llvm.loop !24

533:                                              ; preds = %452
  br label %534

534:                                              ; preds = %533, %287, %235
  store i32 1, ptr %37, align 4
  br label %535

535:                                              ; preds = %534, %173, %164
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #4
  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 float @slamc3_(ptr noundef, ptr noundef) #2

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

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

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

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

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

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


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

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

; Function Attrs: nounwind uwtable
define dso_local void @slaed9_(ptr noundef %0, ptr nocapture noundef readonly %1, ptr nocapture noundef readonly %2, ptr nocapture noundef readonly %3, ptr noundef %4, ptr noundef %5, ptr nocapture noundef readonly %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr nocapture noundef readonly %11, ptr noundef %12) local_unnamed_addr #0 {
  %14 = ptrtoint ptr %5 to i64
  %15 = ptrtoint ptr %10 to i64
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %16) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #4
  %18 = getelementptr inbounds i8, ptr %4, i64 -4
  %19 = load i32, ptr %6, align 4, !tbaa !5
  %narrow163 = xor i32 %19, -1
  %20 = sext i32 %narrow163 to i64
  %21 = getelementptr inbounds float, ptr %5, i64 %20
  %22 = getelementptr inbounds i8, ptr %8, i64 -4
  %23 = getelementptr inbounds i8, ptr %9, i64 -4
  %24 = load i32, ptr %11, align 4, !tbaa !5
  %narrow = xor i32 %24, -1
  %25 = sext i32 %narrow to i64
  %26 = getelementptr inbounds float, ptr %10, i64 %25
  store i32 0, ptr %12, align 4, !tbaa !5
  %27 = load i32, ptr %0, align 4, !tbaa !5
  %28 = icmp slt i32 %27, 0
  br i1 %28, label %.thread, label %29

29:                                               ; preds = %13
  %30 = load i32, ptr %1, align 4, !tbaa !5
  %31 = icmp slt i32 %30, 1
  br i1 %31, label %.thread, label %32

32:                                               ; preds = %29
  %spec.select = tail call i32 @llvm.umax.i32(i32 %27, i32 1)
  %33 = icmp ugt i32 %30, %spec.select
  br i1 %33, label %.thread, label %34

34:                                               ; preds = %32
  %35 = load i32, ptr %2, align 4, !tbaa !5
  %spec.select177 = tail call i32 @llvm.smax.i32(i32 %35, i32 1)
  %36 = icmp ult i32 %spec.select177, %30
  %37 = icmp sgt i32 %35, %spec.select
  %or.cond = or i1 %37, %36
  br i1 %or.cond, label %.thread, label %38

38:                                               ; preds = %34
  %39 = load i32, ptr %3, align 4, !tbaa !5
  %40 = icmp slt i32 %39, %27
  br i1 %40, label %.thread, label %41

41:                                               ; preds = %38
  %42 = load i32, ptr %6, align 4, !tbaa !5
  %43 = icmp slt i32 %42, %spec.select
  br i1 %43, label %.thread, label %44

44:                                               ; preds = %41
  %45 = load i32, ptr %11, align 4, !tbaa !5
  %46 = icmp slt i32 %45, %spec.select
  br i1 %46, label %.thread, label %48

.thread:                                          ; preds = %44, %41, %38, %34, %29, %32, %13
  %.sink = phi i32 [ -1, %13 ], [ -2, %32 ], [ -2, %29 ], [ -3, %34 ], [ -4, %38 ], [ -7, %41 ], [ -12, %44 ]
  %.neg = phi i32 [ 1, %13 ], [ 2, %32 ], [ 2, %29 ], [ 3, %34 ], [ 4, %38 ], [ 7, %41 ], [ 12, %44 ]
  store i32 %.sink, ptr %12, align 4, !tbaa !5
  store i32 %.neg, ptr %16, align 4, !tbaa !5
  %47 = call i32 @xerbla_(ptr noundef nonnull @.str, ptr noundef nonnull %16, i32 noundef 6) #4
  br label %.loopexit

48:                                               ; preds = %44
  %49 = icmp eq i32 %27, 0
  br i1 %49, label %.loopexit, label %50

50:                                               ; preds = %48
  %.not161186 = icmp eq i32 %39, 0
  br i1 %.not161186, label %._crit_edge, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %50
  %51 = add nuw i32 %39, 1
  %wide.trip.count = zext i32 %51 to i64
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.preheader, %.lr.ph
  %indvars.iv = phi i64 [ 1, %.lr.ph.preheader ], [ %indvars.iv.next, %.lr.ph ]
  %52 = getelementptr inbounds float, ptr %22, i64 %indvars.iv
  %53 = tail call float @slamc3_(ptr noundef nonnull %52, ptr noundef nonnull %52) #4
  %54 = load float, ptr %52, align 4, !tbaa !9
  %55 = fsub float %53, %54
  store float %55, ptr %52, align 4, !tbaa !9
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %._crit_edge.loopexit, label %.lr.ph, !llvm.loop !11

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

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %50
  %56 = phi i32 [ %.pre273, %._crit_edge.loopexit ], [ %30, %50 ]
  %57 = phi i32 [ %.pre, %._crit_edge.loopexit ], [ %35, %50 ]
  store i32 %57, ptr %16, align 4, !tbaa !5
  %invariant.gep = getelementptr i8, ptr %21, i64 4
  store i32 %56, ptr %17, align 4, !tbaa !5
  %.not162188 = icmp sgt i32 %56, %57
  br i1 %.not162188, label %._crit_edge192, label %.lr.ph191

.lr.ph191:                                        ; preds = %._crit_edge, %63
  %storemerge189 = phi i32 [ %65, %63 ], [ %56, %._crit_edge ]
  %58 = mul nsw i32 %storemerge189, %19
  %59 = sext i32 %58 to i64
  %gep = getelementptr float, ptr %invariant.gep, i64 %59
  %60 = sext i32 %storemerge189 to i64
  %61 = getelementptr inbounds float, ptr %18, i64 %60
  call void @slaed4_(ptr noundef nonnull %0, ptr noundef nonnull %17, ptr noundef %8, ptr noundef %9, ptr noundef %gep, ptr noundef %7, ptr noundef nonnull %61, ptr noundef nonnull %12) #4
  %62 = load i32, ptr %12, align 4, !tbaa !5
  %.not176 = icmp eq i32 %62, 0
  br i1 %.not176, label %63, label %.loopexit

63:                                               ; preds = %.lr.ph191
  %64 = load i32, ptr %17, align 4, !tbaa !5
  %65 = add nsw i32 %64, 1
  store i32 %65, ptr %17, align 4, !tbaa !5
  %66 = load i32, ptr %16, align 4, !tbaa !5
  %.not162.not = icmp slt i32 %64, %66
  br i1 %.not162.not, label %.lr.ph191, label %._crit_edge192, !llvm.loop !13

._crit_edge192:                                   ; preds = %63, %._crit_edge
  %67 = load i32, ptr %0, align 4, !tbaa !5
  %.off = add i32 %67, -1
  %switch = icmp ult i32 %.off, 2
  br i1 %switch, label %.preheader.preheader, label %75

.preheader.preheader:                             ; preds = %._crit_edge192
  %68 = add nuw nsw i32 %67, 1
  %69 = sext i32 %19 to i64
  %70 = sext i32 %24 to i64
  %invariant.gep294 = getelementptr float, ptr %21, i64 %69
  %invariant.gep296 = getelementptr float, ptr %26, i64 %70
  %gep295 = getelementptr i8, ptr %invariant.gep294, i64 4
  %71 = load float, ptr %gep295, align 4, !tbaa !9
  %gep297 = getelementptr i8, ptr %invariant.gep296, i64 4
  store float %71, ptr %gep297, align 4, !tbaa !9
  %cond = icmp eq i32 %68, 2
  br i1 %cond, label %.loopexit, label %._crit_edge227

._crit_edge227:                                   ; preds = %.preheader.preheader
  %gep295.1 = getelementptr i8, ptr %invariant.gep294, i64 8
  %72 = load float, ptr %gep295.1, align 4, !tbaa !9
  %gep297.1 = getelementptr i8, ptr %invariant.gep296, i64 8
  store float %72, ptr %gep297.1, align 4, !tbaa !9
  %invariant.gep294.1.idx = shl nsw i64 %69, 3
  %invariant.gep294.1 = getelementptr i8, ptr %21, i64 %invariant.gep294.1.idx
  %invariant.gep296.1.idx = shl nsw i64 %70, 3
  %invariant.gep296.1 = getelementptr i8, ptr %26, i64 %invariant.gep296.1.idx
  %gep295.1401 = getelementptr i8, ptr %invariant.gep294.1, i64 4
  %73 = load float, ptr %gep295.1401, align 4, !tbaa !9
  %gep297.1402 = getelementptr i8, ptr %invariant.gep296.1, i64 4
  store float %73, ptr %gep297.1402, align 4, !tbaa !9
  %gep295.1.1 = getelementptr i8, ptr %invariant.gep294.1, i64 8
  %74 = load float, ptr %gep295.1.1, align 4, !tbaa !9
  %gep297.1.1 = getelementptr i8, ptr %invariant.gep296.1, i64 8
  store float %74, ptr %gep297.1.1, align 4, !tbaa !9
  br label %.loopexit

75:                                               ; preds = %._crit_edge192
  call void @scopy_(ptr noundef nonnull %0, ptr noundef %9, ptr noundef nonnull @c__1, ptr noundef %10, ptr noundef nonnull @c__1) #4
  %76 = load i32, ptr %6, align 4, !tbaa !5
  %77 = add nsw i32 %76, 1
  store i32 %77, ptr %16, align 4, !tbaa !5
  call void @scopy_(ptr noundef nonnull %0, ptr noundef %5, ptr noundef nonnull %16, ptr noundef %9, ptr noundef nonnull @c__1) #4
  %78 = load i32, ptr %0, align 4, !tbaa !5
  %.not165200 = icmp slt i32 %78, 1
  br i1 %.not165200, label %.loopexit, label %.preheader184.preheader

.preheader184.preheader:                          ; preds = %75
  %79 = zext nneg i32 %78 to i64
  %80 = sext i32 %19 to i64
  %81 = add nuw i32 %78, 1
  %wide.trip.count247 = zext i32 %81 to i64
  %wide.trip.count244 = zext nneg i32 %78 to i64
  %82 = shl nuw nsw i64 %wide.trip.count244, 2
  %scevgep300 = getelementptr i8, ptr %9, i64 %82
  %83 = shl nsw i64 %80, 2
  %84 = add nsw i64 %80, %20
  %85 = shl nsw i64 %84, 2
  %86 = add nsw i64 %83, 4
  %87 = shl nsw i64 %80, 2
  %88 = shl nuw nsw i64 %wide.trip.count247, 2
  %89 = getelementptr i8, ptr %8, i64 %88
  %scevgep303 = getelementptr i8, ptr %89, i64 -4
  %scevgep305 = getelementptr i8, ptr %8, i64 %82
  %90 = shl nsw i64 %80, 2
  %91 = add nsw i64 %80, %20
  %92 = shl nsw i64 %91, 2
  %93 = add nsw i64 %92, 4
  %94 = shl nsw i64 %80, 2
  %95 = add nsw i64 %90, 4
  %96 = shl nuw nsw i64 %wide.trip.count247, 2
  %97 = getelementptr i8, ptr %8, i64 %96
  %scevgep319 = getelementptr i8, ptr %97, i64 -4
  %98 = getelementptr i8, ptr %5, i64 %93
  %99 = getelementptr i8, ptr %5, i64 %93
  %100 = getelementptr i8, ptr %5, i64 %85
  %101 = getelementptr i8, ptr %100, i64 8
  %102 = getelementptr i8, ptr %5, i64 %85
  %103 = getelementptr i8, ptr %102, i64 %82
  %104 = getelementptr i8, ptr %103, i64 4
  %bound0324 = icmp ugt ptr %scevgep319, %9
  %bound1307 = icmp ugt ptr %scevgep300, %8
  %105 = add nsw i64 %wide.trip.count244, -1
  br label %.preheader184

.preheader184:                                    ; preds = %.preheader184.preheader, %._crit_edge199
  %indvar = phi i64 [ 0, %.preheader184.preheader ], [ %indvar.next, %._crit_edge199 ]
  %indvars.iv239 = phi i64 [ 1, %.preheader184.preheader ], [ %indvars.iv.next240, %._crit_edge199 ]
  %106 = shl nuw nsw i64 %indvar, 2
  %scevgep316 = getelementptr i8, ptr %9, i64 %106
  %107 = mul i64 %94, %indvar
  %scevgep317 = getelementptr i8, ptr %98, i64 %107
  %108 = mul i64 %95, %indvar
  %scevgep318 = getelementptr i8, ptr %99, i64 %108
  %scevgep320 = getelementptr i8, ptr %8, i64 %106
  %109 = xor i64 %indvar, -1
  %110 = add i64 %109, %wide.trip.count244
  %111 = shl nuw nsw i64 %indvar, 2
  %112 = add nuw i64 %111, 4
  %scevgep = getelementptr i8, ptr %9, i64 %112
  %113 = mul i64 %86, %indvar
  %scevgep301 = getelementptr i8, ptr %101, i64 %113
  %114 = mul i64 %87, %indvar
  %scevgep302 = getelementptr i8, ptr %104, i64 %114
  %scevgep304 = getelementptr i8, ptr %8, i64 %112
  %.not171.not193 = icmp ugt i64 %indvars.iv239, 1
  br i1 %.not171.not193, label %.lr.ph195, label %.preheader183

.lr.ph195:                                        ; preds = %.preheader184
  %115 = mul nsw i64 %indvars.iv239, %80
  %116 = getelementptr inbounds float, ptr %22, i64 %indvars.iv239
  %invariant.gep282 = getelementptr float, ptr %21, i64 %115
  %min.iters.check334 = icmp ult i64 %indvar, 4
  br i1 %min.iters.check334, label %scalar.ph333.preheader, label %vector.memcheck315

scalar.ph333.preheader:                           ; preds = %middle.block332, %vector.memcheck315, %.lr.ph195
  %indvars.iv234.ph = phi i64 [ 1, %vector.memcheck315 ], [ 1, %.lr.ph195 ], [ %ind.end338, %middle.block332 ]
  %117 = and i64 %indvars.iv239, 1
  %lcmp.mod.not.not = icmp eq i64 %117, 0
  br i1 %lcmp.mod.not.not, label %scalar.ph333.prol, label %scalar.ph333.prol.loopexit

scalar.ph333.prol:                                ; preds = %scalar.ph333.preheader
  %gep283.prol = getelementptr float, ptr %invariant.gep282, i64 %indvars.iv234.ph
  %118 = load float, ptr %gep283.prol, align 4, !tbaa !9
  %119 = getelementptr inbounds float, ptr %22, i64 %indvars.iv234.ph
  %120 = load float, ptr %119, align 4, !tbaa !9
  %121 = load float, ptr %116, align 4, !tbaa !9
  %122 = fsub float %120, %121
  %123 = fdiv float %118, %122
  %124 = getelementptr inbounds float, ptr %23, i64 %indvars.iv234.ph
  %125 = load float, ptr %124, align 4, !tbaa !9
  %126 = fmul float %125, %123
  store float %126, ptr %124, align 4, !tbaa !9
  %indvars.iv.next235.prol = add nuw nsw i64 %indvars.iv234.ph, 1
  br label %scalar.ph333.prol.loopexit

scalar.ph333.prol.loopexit:                       ; preds = %scalar.ph333.prol, %scalar.ph333.preheader
  %indvars.iv234.unr = phi i64 [ %indvars.iv234.ph, %scalar.ph333.preheader ], [ %indvars.iv.next235.prol, %scalar.ph333.prol ]
  %127 = icmp eq i64 %indvar, %indvars.iv234.ph
  br i1 %127, label %.preheader183, label %scalar.ph333.preheader.new

scalar.ph333.preheader.new:                       ; preds = %scalar.ph333.prol.loopexit
  %invariant.gep403 = getelementptr i8, ptr %invariant.gep282, i64 4
  br label %scalar.ph333

vector.memcheck315:                               ; preds = %.lr.ph195
  %bound0321 = icmp ugt ptr %scevgep318, %9
  %bound1322 = icmp ult ptr %scevgep317, %scevgep316
  %found.conflict323 = and i1 %bound0321, %bound1322
  %bound1325 = icmp ugt ptr %scevgep316, %8
  %found.conflict326 = and i1 %bound0324, %bound1325
  %conflict.rdx327 = or i1 %found.conflict323, %found.conflict326
  %bound0328 = icmp ugt ptr %scevgep320, %9
  %bound1329 = icmp ugt ptr %scevgep316, %8
  %found.conflict330 = and i1 %bound0328, %bound1329
  %conflict.rdx331 = or i1 %conflict.rdx327, %found.conflict330
  br i1 %conflict.rdx331, label %scalar.ph333.preheader, label %vector.ph335

vector.ph335:                                     ; preds = %vector.memcheck315
  %n.vec337 = and i64 %indvar, -4
  %ind.end338 = or disjoint i64 %n.vec337, 1
  %128 = load float, ptr %116, align 4, !tbaa !9, !alias.scope !14
  %broadcast.splatinsert345 = insertelement <4 x float> poison, float %128, i64 0
  %broadcast.splat346 = shufflevector <4 x float> %broadcast.splatinsert345, <4 x float> poison, <4 x i32> zeroinitializer
  br label %vector.body340

vector.body340:                                   ; preds = %vector.body340, %vector.ph335
  %index341 = phi i64 [ 0, %vector.ph335 ], [ %index.next348, %vector.body340 ]
  %offset.idx342 = or disjoint i64 %index341, 1
  %129 = getelementptr float, ptr %invariant.gep282, i64 %offset.idx342
  %wide.load343 = load <4 x float>, ptr %129, align 4, !tbaa !9, !alias.scope !17
  %130 = getelementptr float, ptr %8, i64 %index341
  %wide.load344 = load <4 x float>, ptr %130, align 4, !tbaa !9, !alias.scope !19
  %131 = fsub <4 x float> %wide.load344, %broadcast.splat346
  %132 = fdiv <4 x float> %wide.load343, %131
  %133 = getelementptr float, ptr %9, i64 %index341
  %wide.load347 = load <4 x float>, ptr %133, align 4, !tbaa !9, !alias.scope !21, !noalias !23
  %134 = fmul <4 x float> %wide.load347, %132
  store <4 x float> %134, ptr %133, align 4, !tbaa !9, !alias.scope !21, !noalias !23
  %index.next348 = add nuw i64 %index341, 4
  %135 = icmp eq i64 %index.next348, %n.vec337
  br i1 %135, label %middle.block332, label %vector.body340, !llvm.loop !24

middle.block332:                                  ; preds = %vector.body340
  %cmp.n349 = icmp eq i64 %indvar, %n.vec337
  br i1 %cmp.n349, label %.preheader183, label %scalar.ph333.preheader

.preheader183:                                    ; preds = %scalar.ph333.prol.loopexit, %scalar.ph333, %middle.block332, %.preheader184
  %.not172.not196 = icmp ult i64 %indvars.iv239, %79
  br i1 %.not172.not196, label %.lr.ph198, label %._crit_edge199

.lr.ph198:                                        ; preds = %.preheader183
  %136 = mul nsw i64 %indvars.iv239, %80
  %137 = getelementptr inbounds float, ptr %22, i64 %indvars.iv239
  %invariant.gep284 = getelementptr float, ptr %21, i64 %136
  %min.iters.check = icmp ult i64 %110, 4
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.memcheck

scalar.ph.preheader:                              ; preds = %middle.block, %vector.memcheck, %.lr.ph198
  %indvars.iv241.ph = phi i64 [ %indvars.iv239, %vector.memcheck ], [ %indvars.iv239, %.lr.ph198 ], [ %ind.end, %middle.block ]
  %138 = sub i64 %wide.trip.count244, %indvars.iv241.ph
  %xtraiter394 = and i64 %138, 1
  %lcmp.mod395.not = icmp eq i64 %xtraiter394, 0
  br i1 %lcmp.mod395.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol

scalar.ph.prol:                                   ; preds = %scalar.ph.preheader
  %indvars.iv.next242.prol = add nuw nsw i64 %indvars.iv241.ph, 1
  %gep285.prol = getelementptr float, ptr %invariant.gep284, i64 %indvars.iv.next242.prol
  %139 = load float, ptr %gep285.prol, align 4, !tbaa !9
  %140 = getelementptr float, ptr %8, i64 %indvars.iv241.ph
  %141 = load float, ptr %140, align 4, !tbaa !9
  %142 = load float, ptr %137, align 4, !tbaa !9
  %143 = fsub float %141, %142
  %144 = fdiv float %139, %143
  %145 = getelementptr float, ptr %9, i64 %indvars.iv241.ph
  %146 = load float, ptr %145, align 4, !tbaa !9
  %147 = fmul float %146, %144
  store float %147, ptr %145, align 4, !tbaa !9
  br label %scalar.ph.prol.loopexit

scalar.ph.prol.loopexit:                          ; preds = %scalar.ph.prol, %scalar.ph.preheader
  %indvars.iv241.unr = phi i64 [ %indvars.iv241.ph, %scalar.ph.preheader ], [ %indvars.iv.next242.prol, %scalar.ph.prol ]
  %148 = icmp eq i64 %indvars.iv241.ph, %105
  br i1 %148, label %._crit_edge199, label %scalar.ph

vector.memcheck:                                  ; preds = %.lr.ph198
  %bound0 = icmp ult ptr %scevgep, %scevgep302
  %bound1 = icmp ult ptr %scevgep301, %scevgep300
  %found.conflict = and i1 %bound0, %bound1
  %bound0306 = icmp ult ptr %scevgep, %scevgep303
  %found.conflict308 = and i1 %bound0306, %bound1307
  %conflict.rdx = or i1 %found.conflict, %found.conflict308
  %bound0309 = icmp ult ptr %scevgep, %scevgep305
  %bound1310 = icmp ult ptr %scevgep304, %scevgep300
  %found.conflict311 = and i1 %bound0309, %bound1310
  %conflict.rdx312 = or i1 %conflict.rdx, %found.conflict311
  br i1 %conflict.rdx312, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %vector.memcheck
  %n.vec = and i64 %110, -4
  %ind.end = add i64 %indvars.iv239, %n.vec
  %invariant.gep405 = getelementptr i8, ptr %invariant.gep284, i64 4
  %149 = load float, ptr %137, align 4, !tbaa !9, !alias.scope !27
  %broadcast.splatinsert = insertelement <4 x float> poison, float %149, i64 0
  %broadcast.splat = shufflevector <4 x float> %broadcast.splatinsert, <4 x float> poison, <4 x i32> zeroinitializer
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %offset.idx = add i64 %indvars.iv239, %index
  %gep406 = getelementptr float, ptr %invariant.gep405, i64 %offset.idx
  %wide.load = load <4 x float>, ptr %gep406, align 4, !tbaa !9, !alias.scope !30
  %150 = getelementptr float, ptr %8, i64 %offset.idx
  %wide.load313 = load <4 x float>, ptr %150, align 4, !tbaa !9, !alias.scope !32
  %151 = fsub <4 x float> %wide.load313, %broadcast.splat
  %152 = fdiv <4 x float> %wide.load, %151
  %153 = getelementptr float, ptr %9, i64 %offset.idx
  %wide.load314 = load <4 x float>, ptr %153, align 4, !tbaa !9, !alias.scope !34, !noalias !36
  %154 = fmul <4 x float> %wide.load314, %152
  store <4 x float> %154, ptr %153, align 4, !tbaa !9, !alias.scope !34, !noalias !36
  %index.next = add nuw i64 %index, 4
  %155 = icmp eq i64 %index.next, %n.vec
  br i1 %155, label %middle.block, label %vector.body, !llvm.loop !37

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %110, %n.vec
  br i1 %cmp.n, label %._crit_edge199, label %scalar.ph.preheader

scalar.ph333:                                     ; preds = %scalar.ph333, %scalar.ph333.preheader.new
  %indvars.iv234 = phi i64 [ %indvars.iv234.unr, %scalar.ph333.preheader.new ], [ %indvars.iv.next235.1, %scalar.ph333 ]
  %gep283 = getelementptr float, ptr %invariant.gep282, i64 %indvars.iv234
  %156 = load float, ptr %gep283, align 4, !tbaa !9
  %157 = getelementptr inbounds float, ptr %22, i64 %indvars.iv234
  %158 = load float, ptr %157, align 4, !tbaa !9
  %159 = load float, ptr %116, align 4, !tbaa !9
  %160 = fsub float %158, %159
  %161 = fdiv float %156, %160
  %162 = getelementptr inbounds float, ptr %23, i64 %indvars.iv234
  %163 = load float, ptr %162, align 4, !tbaa !9
  %164 = fmul float %163, %161
  store float %164, ptr %162, align 4, !tbaa !9
  %gep404 = getelementptr float, ptr %invariant.gep403, i64 %indvars.iv234
  %165 = load float, ptr %gep404, align 4, !tbaa !9
  %166 = getelementptr float, ptr %8, i64 %indvars.iv234
  %167 = load float, ptr %166, align 4, !tbaa !9
  %168 = load float, ptr %116, align 4, !tbaa !9
  %169 = fsub float %167, %168
  %170 = fdiv float %165, %169
  %171 = getelementptr float, ptr %9, i64 %indvars.iv234
  %172 = load float, ptr %171, align 4, !tbaa !9
  %173 = fmul float %172, %170
  store float %173, ptr %171, align 4, !tbaa !9
  %indvars.iv.next235.1 = add nuw nsw i64 %indvars.iv234, 2
  %exitcond238.not.1 = icmp eq i64 %indvars.iv.next235.1, %indvars.iv239
  br i1 %exitcond238.not.1, label %.preheader183, label %scalar.ph333, !llvm.loop !38

scalar.ph:                                        ; preds = %scalar.ph.prol.loopexit, %scalar.ph
  %indvars.iv241 = phi i64 [ %indvars.iv.next242.1, %scalar.ph ], [ %indvars.iv241.unr, %scalar.ph.prol.loopexit ]
  %indvars.iv.next242 = add nuw nsw i64 %indvars.iv241, 1
  %gep285 = getelementptr float, ptr %invariant.gep284, i64 %indvars.iv.next242
  %174 = load float, ptr %gep285, align 4, !tbaa !9
  %175 = getelementptr float, ptr %8, i64 %indvars.iv241
  %176 = load float, ptr %175, align 4, !tbaa !9
  %177 = load float, ptr %137, align 4, !tbaa !9
  %178 = fsub float %176, %177
  %179 = fdiv float %174, %178
  %180 = getelementptr float, ptr %9, i64 %indvars.iv241
  %181 = load float, ptr %180, align 4, !tbaa !9
  %182 = fmul float %181, %179
  store float %182, ptr %180, align 4, !tbaa !9
  %indvars.iv.next242.1 = add nuw nsw i64 %indvars.iv241, 2
  %gep285.1 = getelementptr float, ptr %invariant.gep284, i64 %indvars.iv.next242.1
  %183 = load float, ptr %gep285.1, align 4, !tbaa !9
  %184 = getelementptr float, ptr %8, i64 %indvars.iv.next242
  %185 = load float, ptr %184, align 4, !tbaa !9
  %186 = load float, ptr %137, align 4, !tbaa !9
  %187 = fsub float %185, %186
  %188 = fdiv float %183, %187
  %189 = getelementptr float, ptr %9, i64 %indvars.iv.next242
  %190 = load float, ptr %189, align 4, !tbaa !9
  %191 = fmul float %190, %188
  store float %191, ptr %189, align 4, !tbaa !9
  %exitcond245.not.1 = icmp eq i64 %indvars.iv.next242.1, %wide.trip.count244
  br i1 %exitcond245.not.1, label %._crit_edge199, label %scalar.ph, !llvm.loop !39

._crit_edge199:                                   ; preds = %scalar.ph.prol.loopexit, %scalar.ph, %middle.block, %.preheader183
  %indvars.iv.next240 = add nuw nsw i64 %indvars.iv239, 1
  %exitcond248.not = icmp eq i64 %indvars.iv.next240, %wide.trip.count247
  %indvar.next = add i64 %indvar, 1
  br i1 %exitcond248.not, label %._crit_edge202, label %.preheader184, !llvm.loop !40

._crit_edge202:                                   ; preds = %._crit_edge199
  store i32 %78, ptr %16, align 4, !tbaa !5
  br i1 %.not165200, label %.loopexit, label %.lr.ph206.preheader

.lr.ph206.preheader:                              ; preds = %._crit_edge202
  %192 = sext i32 %24 to i64
  %invariant.gep286 = getelementptr float, ptr %26, i64 %192
  br label %.lr.ph206

.lr.ph206:                                        ; preds = %.lr.ph206.preheader, %203
  %indvars.iv249 = phi i64 [ 1, %.lr.ph206.preheader ], [ %indvars.iv.next250, %203 ]
  %193 = getelementptr inbounds float, ptr %23, i64 %indvars.iv249
  %194 = load float, ptr %193, align 4, !tbaa !9
  %195 = fneg float %194
  %sqrtf = call float @sqrtf(float noundef %195) #5
  %gep287 = getelementptr float, ptr %invariant.gep286, i64 %indvars.iv249
  %196 = load float, ptr %gep287, align 4, !tbaa !9
  %197 = fcmp ult float %196, 0.000000e+00
  %198 = fcmp oge float %sqrtf, 0.000000e+00
  %sqrtf.neg = fneg float %sqrtf
  br i1 %197, label %201, label %199

199:                                              ; preds = %.lr.ph206
  %200 = select i1 %198, float %sqrtf, float %sqrtf.neg
  br label %203

201:                                              ; preds = %.lr.ph206
  %202 = select i1 %198, float %sqrtf.neg, float %sqrtf
  br label %203

203:                                              ; preds = %201, %199
  %204 = phi float [ %200, %199 ], [ %202, %201 ]
  store float %204, ptr %193, align 4, !tbaa !9
  %indvars.iv.next250 = add nuw nsw i64 %indvars.iv249, 1
  %205 = load i32, ptr %16, align 4, !tbaa !5
  %206 = sext i32 %205 to i64
  %.not166.not = icmp slt i64 %indvars.iv249, %206
  br i1 %.not166.not, label %.lr.ph206, label %._crit_edge207, !llvm.loop !41

._crit_edge207:                                   ; preds = %203
  %.pre274 = load i32, ptr %0, align 4, !tbaa !5
  store i32 %.pre274, ptr %16, align 4, !tbaa !5
  store i32 1, ptr %17, align 4, !tbaa !5
  %.not168220 = icmp slt i32 %.pre274, 1
  br i1 %.not168220, label %.loopexit, label %.lr.ph223.preheader

.lr.ph223.preheader:                              ; preds = %._crit_edge207
  %207 = shl nsw i64 %20, 2
  %208 = getelementptr i8, ptr %5, i64 %207
  %scevgep368 = getelementptr i8, ptr %208, i64 4
  %scevgep370 = getelementptr i8, ptr %5, i64 %207
  %scevgep372 = getelementptr i8, ptr %9, i64 -4
  br label %.lr.ph223

.lr.ph223:                                        ; preds = %.lr.ph223.preheader, %._crit_edge217
  %209 = phi i32 [ %244, %._crit_edge217 ], [ %.pre274, %.lr.ph223.preheader ]
  %storemerge167221 = phi i32 [ %276, %._crit_edge217 ], [ 1, %.lr.ph223.preheader ]
  %.not169208 = icmp slt i32 %209, 1
  %.pre276 = mul i32 %storemerge167221, %19
  %.pre277 = sext i32 %.pre276 to i64
  br i1 %.not169208, label %._crit_edge212, label %.lr.ph211

.lr.ph211:                                        ; preds = %.lr.ph223
  %210 = add nuw i32 %209, 1
  %wide.trip.count255 = zext i32 %210 to i64
  %invariant.gep288 = getelementptr float, ptr %21, i64 %.pre277
  %211 = zext nneg i32 %209 to i64
  %min.iters.check379 = icmp ult i32 %209, 4
  br i1 %min.iters.check379, label %scalar.ph378.preheader, label %vector.memcheck367

vector.memcheck367:                               ; preds = %.lr.ph211
  %212 = shl nsw i64 %.pre277, 2
  %scevgep369 = getelementptr i8, ptr %scevgep368, i64 %212
  %213 = shl nuw nsw i64 %wide.trip.count255, 2
  %214 = getelementptr i8, ptr %scevgep370, i64 %212
  %scevgep371 = getelementptr i8, ptr %214, i64 %213
  %scevgep373 = getelementptr i8, ptr %scevgep372, i64 %213
  %bound0374 = icmp ult ptr %scevgep369, %scevgep373
  %bound1375 = icmp ugt ptr %scevgep371, %9
  %found.conflict376 = and i1 %bound0374, %bound1375
  br i1 %found.conflict376, label %scalar.ph378.preheader, label %vector.ph380

vector.ph380:                                     ; preds = %vector.memcheck367
  %n.vec382 = and i64 %211, 2147483644
  %ind.end383 = or disjoint i64 %n.vec382, 1
  br label %vector.body385

vector.body385:                                   ; preds = %vector.body385, %vector.ph380
  %index386 = phi i64 [ 0, %vector.ph380 ], [ %index.next390, %vector.body385 ]
  %offset.idx387 = or disjoint i64 %index386, 1
  %215 = getelementptr float, ptr %9, i64 %index386
  %wide.load388 = load <4 x float>, ptr %215, align 4, !tbaa !9, !alias.scope !42
  %216 = getelementptr float, ptr %invariant.gep288, i64 %offset.idx387
  %wide.load389 = load <4 x float>, ptr %216, align 4, !tbaa !9, !alias.scope !45, !noalias !42
  %217 = fdiv <4 x float> %wide.load388, %wide.load389
  store <4 x float> %217, ptr %216, align 4, !tbaa !9, !alias.scope !45, !noalias !42
  %index.next390 = add nuw i64 %index386, 4
  %218 = icmp eq i64 %index.next390, %n.vec382
  br i1 %218, label %middle.block377, label %vector.body385, !llvm.loop !47

middle.block377:                                  ; preds = %vector.body385
  %cmp.n391 = icmp eq i64 %n.vec382, %211
  br i1 %cmp.n391, label %._crit_edge212, label %scalar.ph378.preheader

scalar.ph378.preheader:                           ; preds = %middle.block377, %vector.memcheck367, %.lr.ph211
  %indvars.iv252.ph = phi i64 [ 1, %vector.memcheck367 ], [ 1, %.lr.ph211 ], [ %ind.end383, %middle.block377 ]
  %219 = sub nsw i64 %wide.trip.count255, %indvars.iv252.ph
  %220 = zext nneg i32 %209 to i64
  %221 = sub nsw i64 %220, %indvars.iv252.ph
  %xtraiter396 = and i64 %219, 3
  %lcmp.mod397.not = icmp eq i64 %xtraiter396, 0
  br i1 %lcmp.mod397.not, label %scalar.ph378.prol.loopexit, label %scalar.ph378.prol

scalar.ph378.prol:                                ; preds = %scalar.ph378.preheader, %scalar.ph378.prol
  %indvars.iv252.prol = phi i64 [ %indvars.iv.next253.prol, %scalar.ph378.prol ], [ %indvars.iv252.ph, %scalar.ph378.preheader ]
  %prol.iter = phi i64 [ %prol.iter.next, %scalar.ph378.prol ], [ 0, %scalar.ph378.preheader ]
  %222 = getelementptr inbounds float, ptr %23, i64 %indvars.iv252.prol
  %223 = load float, ptr %222, align 4, !tbaa !9
  %gep289.prol = getelementptr float, ptr %invariant.gep288, i64 %indvars.iv252.prol
  %224 = load float, ptr %gep289.prol, align 4, !tbaa !9
  %225 = fdiv float %223, %224
  store float %225, ptr %gep289.prol, align 4, !tbaa !9
  %indvars.iv.next253.prol = add nuw nsw i64 %indvars.iv252.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter396
  br i1 %prol.iter.cmp.not, label %scalar.ph378.prol.loopexit, label %scalar.ph378.prol, !llvm.loop !48

scalar.ph378.prol.loopexit:                       ; preds = %scalar.ph378.prol, %scalar.ph378.preheader
  %indvars.iv252.unr = phi i64 [ %indvars.iv252.ph, %scalar.ph378.preheader ], [ %indvars.iv.next253.prol, %scalar.ph378.prol ]
  %226 = icmp ult i64 %221, 3
  br i1 %226, label %._crit_edge212, label %scalar.ph378.preheader.new

scalar.ph378.preheader.new:                       ; preds = %scalar.ph378.prol.loopexit
  %invariant.gep407 = getelementptr i8, ptr %invariant.gep288, i64 4
  br label %scalar.ph378

scalar.ph378:                                     ; preds = %scalar.ph378, %scalar.ph378.preheader.new
  %indvars.iv252 = phi i64 [ %indvars.iv252.unr, %scalar.ph378.preheader.new ], [ %indvars.iv.next253.3, %scalar.ph378 ]
  %227 = getelementptr inbounds float, ptr %23, i64 %indvars.iv252
  %228 = load float, ptr %227, align 4, !tbaa !9
  %gep289 = getelementptr float, ptr %invariant.gep288, i64 %indvars.iv252
  %229 = load float, ptr %gep289, align 4, !tbaa !9
  %230 = fdiv float %228, %229
  store float %230, ptr %gep289, align 4, !tbaa !9
  %231 = getelementptr float, ptr %9, i64 %indvars.iv252
  %232 = load float, ptr %231, align 4, !tbaa !9
  %gep408 = getelementptr float, ptr %invariant.gep407, i64 %indvars.iv252
  %233 = load float, ptr %gep408, align 4, !tbaa !9
  %234 = fdiv float %232, %233
  store float %234, ptr %gep408, align 4, !tbaa !9
  %indvars.iv.next253.1 = add nuw nsw i64 %indvars.iv252, 2
  %235 = getelementptr inbounds float, ptr %23, i64 %indvars.iv.next253.1
  %236 = load float, ptr %235, align 4, !tbaa !9
  %gep289.2 = getelementptr float, ptr %invariant.gep288, i64 %indvars.iv.next253.1
  %237 = load float, ptr %gep289.2, align 4, !tbaa !9
  %238 = fdiv float %236, %237
  store float %238, ptr %gep289.2, align 4, !tbaa !9
  %indvars.iv.next253.2 = add nuw nsw i64 %indvars.iv252, 3
  %239 = getelementptr inbounds float, ptr %23, i64 %indvars.iv.next253.2
  %240 = load float, ptr %239, align 4, !tbaa !9
  %gep289.3 = getelementptr float, ptr %invariant.gep288, i64 %indvars.iv.next253.2
  %241 = load float, ptr %gep289.3, align 4, !tbaa !9
  %242 = fdiv float %240, %241
  store float %242, ptr %gep289.3, align 4, !tbaa !9
  %indvars.iv.next253.3 = add nuw nsw i64 %indvars.iv252, 4
  %exitcond256.not.3 = icmp eq i64 %indvars.iv.next253.3, %wide.trip.count255
  br i1 %exitcond256.not.3, label %._crit_edge212, label %scalar.ph378, !llvm.loop !50

._crit_edge212:                                   ; preds = %scalar.ph378.prol.loopexit, %scalar.ph378, %middle.block377, %.lr.ph223
  %gep219 = getelementptr float, ptr %invariant.gep, i64 %.pre277
  %243 = call float @snrm2_(ptr noundef nonnull %0, ptr noundef %gep219, ptr noundef nonnull @c__1) #4
  %244 = load i32, ptr %0, align 4, !tbaa !5
  %.not170213 = icmp slt i32 %244, 1
  %.pre275 = load i32, ptr %17, align 4, !tbaa !5
  br i1 %.not170213, label %._crit_edge217, label %.lr.ph216

.lr.ph216:                                        ; preds = %._crit_edge212
  %245 = mul nsw i32 %.pre275, %19
  %246 = mul nsw i32 %.pre275, %24
  %247 = sext i32 %245 to i64
  %248 = sext i32 %246 to i64
  %249 = add nuw i32 %244, 1
  %wide.trip.count260 = zext i32 %249 to i64
  %invariant.gep290 = getelementptr float, ptr %21, i64 %247
  %invariant.gep292 = getelementptr float, ptr %26, i64 %248
  %250 = zext nneg i32 %244 to i64
  %min.iters.check353 = icmp ult i32 %244, 4
  br i1 %min.iters.check353, label %scalar.ph352.preheader, label %vector.memcheck350

vector.memcheck350:                               ; preds = %.lr.ph216
  %251 = add nsw i64 %25, %248
  %252 = shl nsw i64 %251, 2
  %253 = add i64 %252, %15
  %254 = add nsw i64 %20, %247
  %255 = shl nsw i64 %254, 2
  %256 = add i64 %255, %14
  %257 = sub i64 %253, %256
  %diff.check = icmp ult i64 %257, 16
  br i1 %diff.check, label %scalar.ph352.preheader, label %vector.ph354

vector.ph354:                                     ; preds = %vector.memcheck350
  %n.vec356 = and i64 %250, 2147483644
  %ind.end357 = or disjoint i64 %n.vec356, 1
  %broadcast.splatinsert363 = insertelement <4 x float> poison, float %243, i64 0
  %broadcast.splat364 = shufflevector <4 x float> %broadcast.splatinsert363, <4 x float> poison, <4 x i32> zeroinitializer
  br label %vector.body359

vector.body359:                                   ; preds = %vector.body359, %vector.ph354
  %index360 = phi i64 [ 0, %vector.ph354 ], [ %index.next365, %vector.body359 ]
  %offset.idx361 = or disjoint i64 %index360, 1
  %258 = getelementptr float, ptr %invariant.gep290, i64 %offset.idx361
  %wide.load362 = load <4 x float>, ptr %258, align 4, !tbaa !9
  %259 = fdiv <4 x float> %wide.load362, %broadcast.splat364
  %260 = getelementptr float, ptr %invariant.gep292, i64 %offset.idx361
  store <4 x float> %259, ptr %260, align 4, !tbaa !9
  %index.next365 = add nuw i64 %index360, 4
  %261 = icmp eq i64 %index.next365, %n.vec356
  br i1 %261, label %middle.block351, label %vector.body359, !llvm.loop !51

middle.block351:                                  ; preds = %vector.body359
  %cmp.n366 = icmp eq i64 %n.vec356, %250
  br i1 %cmp.n366, label %._crit_edge217, label %scalar.ph352.preheader

scalar.ph352.preheader:                           ; preds = %middle.block351, %vector.memcheck350, %.lr.ph216
  %indvars.iv257.ph = phi i64 [ 1, %vector.memcheck350 ], [ 1, %.lr.ph216 ], [ %ind.end357, %middle.block351 ]
  %262 = sub nsw i64 %wide.trip.count260, %indvars.iv257.ph
  %263 = zext nneg i32 %244 to i64
  %264 = sub nsw i64 %263, %indvars.iv257.ph
  %xtraiter398 = and i64 %262, 3
  %lcmp.mod399.not = icmp eq i64 %xtraiter398, 0
  br i1 %lcmp.mod399.not, label %scalar.ph352.prol.loopexit, label %scalar.ph352.prol

scalar.ph352.prol:                                ; preds = %scalar.ph352.preheader, %scalar.ph352.prol
  %indvars.iv257.prol = phi i64 [ %indvars.iv.next258.prol, %scalar.ph352.prol ], [ %indvars.iv257.ph, %scalar.ph352.preheader ]
  %prol.iter400 = phi i64 [ %prol.iter400.next, %scalar.ph352.prol ], [ 0, %scalar.ph352.preheader ]
  %gep291.prol = getelementptr float, ptr %invariant.gep290, i64 %indvars.iv257.prol
  %265 = load float, ptr %gep291.prol, align 4, !tbaa !9
  %266 = fdiv float %265, %243
  %gep293.prol = getelementptr float, ptr %invariant.gep292, i64 %indvars.iv257.prol
  store float %266, ptr %gep293.prol, align 4, !tbaa !9
  %indvars.iv.next258.prol = add nuw nsw i64 %indvars.iv257.prol, 1
  %prol.iter400.next = add i64 %prol.iter400, 1
  %prol.iter400.cmp.not = icmp eq i64 %prol.iter400.next, %xtraiter398
  br i1 %prol.iter400.cmp.not, label %scalar.ph352.prol.loopexit, label %scalar.ph352.prol, !llvm.loop !52

scalar.ph352.prol.loopexit:                       ; preds = %scalar.ph352.prol, %scalar.ph352.preheader
  %indvars.iv257.unr = phi i64 [ %indvars.iv257.ph, %scalar.ph352.preheader ], [ %indvars.iv.next258.prol, %scalar.ph352.prol ]
  %267 = icmp ult i64 %264, 3
  br i1 %267, label %._crit_edge217, label %scalar.ph352

scalar.ph352:                                     ; preds = %scalar.ph352.prol.loopexit, %scalar.ph352
  %indvars.iv257 = phi i64 [ %indvars.iv.next258.3, %scalar.ph352 ], [ %indvars.iv257.unr, %scalar.ph352.prol.loopexit ]
  %gep291 = getelementptr float, ptr %invariant.gep290, i64 %indvars.iv257
  %268 = load float, ptr %gep291, align 4, !tbaa !9
  %269 = fdiv float %268, %243
  %gep293 = getelementptr float, ptr %invariant.gep292, i64 %indvars.iv257
  store float %269, ptr %gep293, align 4, !tbaa !9
  %indvars.iv.next258 = add nuw nsw i64 %indvars.iv257, 1
  %gep291.1 = getelementptr float, ptr %invariant.gep290, i64 %indvars.iv.next258
  %270 = load float, ptr %gep291.1, align 4, !tbaa !9
  %271 = fdiv float %270, %243
  %gep293.1 = getelementptr float, ptr %invariant.gep292, i64 %indvars.iv.next258
  store float %271, ptr %gep293.1, align 4, !tbaa !9
  %indvars.iv.next258.1 = add nuw nsw i64 %indvars.iv257, 2
  %gep291.2 = getelementptr float, ptr %invariant.gep290, i64 %indvars.iv.next258.1
  %272 = load float, ptr %gep291.2, align 4, !tbaa !9
  %273 = fdiv float %272, %243
  %gep293.2 = getelementptr float, ptr %invariant.gep292, i64 %indvars.iv.next258.1
  store float %273, ptr %gep293.2, align 4, !tbaa !9
  %indvars.iv.next258.2 = add nuw nsw i64 %indvars.iv257, 3
  %gep291.3 = getelementptr float, ptr %invariant.gep290, i64 %indvars.iv.next258.2
  %274 = load float, ptr %gep291.3, align 4, !tbaa !9
  %275 = fdiv float %274, %243
  %gep293.3 = getelementptr float, ptr %invariant.gep292, i64 %indvars.iv.next258.2
  store float %275, ptr %gep293.3, align 4, !tbaa !9
  %indvars.iv.next258.3 = add nuw nsw i64 %indvars.iv257, 4
  %exitcond261.not.3 = icmp eq i64 %indvars.iv.next258.3, %wide.trip.count260
  br i1 %exitcond261.not.3, label %._crit_edge217, label %scalar.ph352, !llvm.loop !53

._crit_edge217:                                   ; preds = %scalar.ph352.prol.loopexit, %scalar.ph352, %middle.block351, %._crit_edge212
  %276 = add nsw i32 %.pre275, 1
  store i32 %276, ptr %17, align 4, !tbaa !5
  %277 = load i32, ptr %16, align 4, !tbaa !5
  %.not168.not = icmp slt i32 %.pre275, %277
  br i1 %.not168.not, label %.lr.ph223, label %.loopexit, !llvm.loop !54

.loopexit:                                        ; preds = %.preheader.preheader, %.lr.ph191, %._crit_edge217, %._crit_edge227, %._crit_edge202, %75, %._crit_edge207, %48, %.thread
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #4
  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 float @slamc3_(ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

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

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

declare float @sqrtf(float) local_unnamed_addr

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

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

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

!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 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = distinct !{!13, !12}
!14 = !{!15}
!15 = distinct !{!15, !16}
!16 = distinct !{!16, !"LVerDomain"}
!17 = !{!18}
!18 = distinct !{!18, !16}
!19 = !{!20}
!20 = distinct !{!20, !16}
!21 = !{!22}
!22 = distinct !{!22, !16}
!23 = !{!18, !15, !20}
!24 = distinct !{!24, !12, !25, !26}
!25 = !{!"llvm.loop.isvectorized", i32 1}
!26 = !{!"llvm.loop.unroll.runtime.disable"}
!27 = !{!28}
!28 = distinct !{!28, !29}
!29 = distinct !{!29, !"LVerDomain"}
!30 = !{!31}
!31 = distinct !{!31, !29}
!32 = !{!33}
!33 = distinct !{!33, !29}
!34 = !{!35}
!35 = distinct !{!35, !29}
!36 = !{!31, !28, !33}
!37 = distinct !{!37, !12, !25, !26}
!38 = distinct !{!38, !12, !25}
!39 = distinct !{!39, !12, !25}
!40 = distinct !{!40, !12}
!41 = distinct !{!41, !12}
!42 = !{!43}
!43 = distinct !{!43, !44}
!44 = distinct !{!44, !"LVerDomain"}
!45 = !{!46}
!46 = distinct !{!46, !44}
!47 = distinct !{!47, !12, !25, !26}
!48 = distinct !{!48, !49}
!49 = !{!"llvm.loop.unroll.disable"}
!50 = distinct !{!50, !12, !25}
!51 = distinct !{!51, !12, !25, !26}
!52 = distinct !{!52, !49}
!53 = distinct !{!53, !12, !25}
!54 = distinct !{!54, !12}


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