; LLVM IR from wiktorowski211/deeds-registration :: deeds/libs/deedsBCV0.ll (Z9boxfilterPfS_S_iiii)

; 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"

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

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

; Function Attrs: mustprogress nounwind uwtable
define dso_local void @_Z9boxfilterPfS_S_iiii(ptr noundef %0, ptr noundef %1, ptr noundef %2, i32 noundef %3, i32 noundef %4, i32 noundef %5, i32 noundef %6) #1 {
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %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 i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca i32, align 4
  store ptr %0, ptr %8, align 8, !tbaa !5
  store ptr %1, ptr %9, align 8, !tbaa !5
  store ptr %2, ptr %10, align 8, !tbaa !5
  store i32 %3, ptr %11, align 4, !tbaa !9
  store i32 %4, ptr %12, align 4, !tbaa !9
  store i32 %5, ptr %13, align 4, !tbaa !9
  store i32 %6, ptr %14, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #2
  %42 = load i32, ptr %12, align 4, !tbaa !9
  %43 = load i32, ptr %13, align 4, !tbaa !9
  %44 = mul nsw i32 %42, %43
  %45 = load i32, ptr %14, align 4, !tbaa !9
  %46 = mul nsw i32 %44, %45
  store i32 %46, ptr %15, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #2
  store i32 0, ptr %16, align 4, !tbaa !9
  br label %47

47:                                               ; preds = %62, %7
  %48 = load i32, ptr %16, align 4, !tbaa !9
  %49 = load i32, ptr %15, align 4, !tbaa !9
  %50 = icmp slt i32 %48, %49
  br i1 %50, label %52, label %51

51:                                               ; preds = %47
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #2
  br label %65

52:                                               ; preds = %47
  %53 = load ptr, ptr %8, align 8, !tbaa !5
  %54 = load i32, ptr %16, align 4, !tbaa !9
  %55 = sext i32 %54 to i64
  %56 = getelementptr inbounds float, ptr %53, i64 %55
  %57 = load float, ptr %56, align 4, !tbaa !11
  %58 = load ptr, ptr %9, align 8, !tbaa !5
  %59 = load i32, ptr %16, align 4, !tbaa !9
  %60 = sext i32 %59 to i64
  %61 = getelementptr inbounds float, ptr %58, i64 %60
  store float %57, ptr %61, align 4, !tbaa !11
  br label %62

62:                                               ; preds = %52
  %63 = load i32, ptr %16, align 4, !tbaa !9
  %64 = add nsw i32 %63, 1
  store i32 %64, ptr %16, align 4, !tbaa !9
  br label %47, !llvm.loop !13

65:                                               ; preds = %51
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #2
  store i32 0, ptr %17, align 4, !tbaa !9
  br label %66

66:                                               ; preds = %124, %65
  %67 = load i32, ptr %17, align 4, !tbaa !9
  %68 = load i32, ptr %14, align 4, !tbaa !9
  %69 = icmp slt i32 %67, %68
  br i1 %69, label %71, label %70

70:                                               ; preds = %66
  store i32 5, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #2
  br label %127

71:                                               ; preds = %66
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #2
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %72

72:                                               ; preds = %120, %71
  %73 = load i32, ptr %19, align 4, !tbaa !9
  %74 = load i32, ptr %13, align 4, !tbaa !9
  %75 = icmp slt i32 %73, %74
  br i1 %75, label %77, label %76

76:                                               ; preds = %72
  store i32 8, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #2
  br label %123

77:                                               ; preds = %72
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #2
  store i32 1, ptr %20, align 4, !tbaa !9
  br label %78

78:                                               ; preds = %116, %77
  %79 = load i32, ptr %20, align 4, !tbaa !9
  %80 = load i32, ptr %12, align 4, !tbaa !9
  %81 = icmp slt i32 %79, %80
  br i1 %81, label %83, label %82

82:                                               ; preds = %78
  store i32 11, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #2
  br label %119

83:                                               ; preds = %78
  %84 = load ptr, ptr %9, align 8, !tbaa !5
  %85 = load i32, ptr %20, align 4, !tbaa !9
  %86 = sub nsw i32 %85, 1
  %87 = load i32, ptr %19, align 4, !tbaa !9
  %88 = load i32, ptr %12, align 4, !tbaa !9
  %89 = mul nsw i32 %87, %88
  %90 = add nsw i32 %86, %89
  %91 = load i32, ptr %17, align 4, !tbaa !9
  %92 = load i32, ptr %12, align 4, !tbaa !9
  %93 = mul nsw i32 %91, %92
  %94 = load i32, ptr %13, align 4, !tbaa !9
  %95 = mul nsw i32 %93, %94
  %96 = add nsw i32 %90, %95
  %97 = sext i32 %96 to i64
  %98 = getelementptr inbounds float, ptr %84, i64 %97
  %99 = load float, ptr %98, align 4, !tbaa !11
  %100 = load ptr, ptr %9, align 8, !tbaa !5
  %101 = load i32, ptr %20, align 4, !tbaa !9
  %102 = load i32, ptr %19, align 4, !tbaa !9
  %103 = load i32, ptr %12, align 4, !tbaa !9
  %104 = mul nsw i32 %102, %103
  %105 = add nsw i32 %101, %104
  %106 = load i32, ptr %17, align 4, !tbaa !9
  %107 = load i32, ptr %12, align 4, !tbaa !9
  %108 = mul nsw i32 %106, %107
  %109 = load i32, ptr %13, align 4, !tbaa !9
  %110 = mul nsw i32 %108, %109
  %111 = add nsw i32 %105, %110
  %112 = sext i32 %111 to i64
  %113 = getelementptr inbounds float, ptr %100, i64 %112
  %114 = load float, ptr %113, align 4, !tbaa !11
  %115 = fadd float %114, %99
  store float %115, ptr %113, align 4, !tbaa !11
  br label %116

116:                                              ; preds = %83
  %117 = load i32, ptr %20, align 4, !tbaa !9
  %118 = add nsw i32 %117, 1
  store i32 %118, ptr %20, align 4, !tbaa !9
  br label %78, !llvm.loop !15

119:                                              ; preds = %82
  br label %120

120:                                              ; preds = %119
  %121 = load i32, ptr %19, align 4, !tbaa !9
  %122 = add nsw i32 %121, 1
  store i32 %122, ptr %19, align 4, !tbaa !9
  br label %72, !llvm.loop !16

123:                                              ; preds = %76
  br label %124

124:                                              ; preds = %123
  %125 = load i32, ptr %17, align 4, !tbaa !9
  %126 = add nsw i32 %125, 1
  store i32 %126, ptr %17, align 4, !tbaa !9
  br label %66, !llvm.loop !17

127:                                              ; preds = %70
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #2
  store i32 0, ptr %21, align 4, !tbaa !9
  br label %128

128:                                              ; preds = %312, %127
  %129 = load i32, ptr %21, align 4, !tbaa !9
  %130 = load i32, ptr %14, align 4, !tbaa !9
  %131 = icmp slt i32 %129, %130
  br i1 %131, label %133, label %132

132:                                              ; preds = %128
  store i32 14, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #2
  br label %315

133:                                              ; preds = %128
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #2
  store i32 0, ptr %22, align 4, !tbaa !9
  br label %134

134:                                              ; preds = %308, %133
  %135 = load i32, ptr %22, align 4, !tbaa !9
  %136 = load i32, ptr %13, align 4, !tbaa !9
  %137 = icmp slt i32 %135, %136
  br i1 %137, label %139, label %138

138:                                              ; preds = %134
  store i32 17, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #2
  br label %311

139:                                              ; preds = %134
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #2
  store i32 0, ptr %23, align 4, !tbaa !9
  br label %140

140:                                              ; preds = %178, %139
  %141 = load i32, ptr %23, align 4, !tbaa !9
  %142 = load i32, ptr %11, align 4, !tbaa !9
  %143 = add nsw i32 %142, 1
  %144 = icmp slt i32 %141, %143
  br i1 %144, label %146, label %145

145:                                              ; preds = %140
  store i32 20, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #2
  br label %181

146:                                              ; preds = %140
  %147 = load ptr, ptr %9, align 8, !tbaa !5
  %148 = load i32, ptr %23, align 4, !tbaa !9
  %149 = load i32, ptr %11, align 4, !tbaa !9
  %150 = add nsw i32 %148, %149
  %151 = load i32, ptr %22, align 4, !tbaa !9
  %152 = load i32, ptr %12, align 4, !tbaa !9
  %153 = mul nsw i32 %151, %152
  %154 = add nsw i32 %150, %153
  %155 = load i32, ptr %21, align 4, !tbaa !9
  %156 = load i32, ptr %12, align 4, !tbaa !9
  %157 = mul nsw i32 %155, %156
  %158 = load i32, ptr %13, align 4, !tbaa !9
  %159 = mul nsw i32 %157, %158
  %160 = add nsw i32 %154, %159
  %161 = sext i32 %160 to i64
  %162 = getelementptr inbounds float, ptr %147, i64 %161
  %163 = load float, ptr %162, align 4, !tbaa !11
  %164 = load ptr, ptr %10, align 8, !tbaa !5
  %165 = load i32, ptr %23, align 4, !tbaa !9
  %166 = load i32, ptr %22, align 4, !tbaa !9
  %167 = load i32, ptr %12, align 4, !tbaa !9
  %168 = mul nsw i32 %166, %167
  %169 = add nsw i32 %165, %168
  %170 = load i32, ptr %21, align 4, !tbaa !9
  %171 = load i32, ptr %12, align 4, !tbaa !9
  %172 = mul nsw i32 %170, %171
  %173 = load i32, ptr %13, align 4, !tbaa !9
  %174 = mul nsw i32 %172, %173
  %175 = add nsw i32 %169, %174
  %176 = sext i32 %175 to i64
  %177 = getelementptr inbounds float, ptr %164, i64 %176
  store float %163, ptr %177, align 4, !tbaa !11
  br label %178

178:                                              ; preds = %146
  %179 = load i32, ptr %23, align 4, !tbaa !9
  %180 = add nsw i32 %179, 1
  store i32 %180, ptr %23, align 4, !tbaa !9
  br label %140, !llvm.loop !18

181:                                              ; preds = %145
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #2
  %182 = load i32, ptr %11, align 4, !tbaa !9
  %183 = add nsw i32 %182, 1
  store i32 %183, ptr %24, align 4, !tbaa !9
  br label %184

184:                                              ; preds = %242, %181
  %185 = load i32, ptr %24, align 4, !tbaa !9
  %186 = load i32, ptr %12, align 4, !tbaa !9
  %187 = load i32, ptr %11, align 4, !tbaa !9
  %188 = sub nsw i32 %186, %187
  %189 = icmp slt i32 %185, %188
  br i1 %189, label %191, label %190

190:                                              ; preds = %184
  store i32 23, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #2
  br label %245

191:                                              ; preds = %184
  %192 = load ptr, ptr %9, align 8, !tbaa !5
  %193 = load i32, ptr %24, align 4, !tbaa !9
  %194 = load i32, ptr %11, align 4, !tbaa !9
  %195 = add nsw i32 %193, %194
  %196 = load i32, ptr %22, align 4, !tbaa !9
  %197 = load i32, ptr %12, align 4, !tbaa !9
  %198 = mul nsw i32 %196, %197
  %199 = add nsw i32 %195, %198
  %200 = load i32, ptr %21, align 4, !tbaa !9
  %201 = load i32, ptr %12, align 4, !tbaa !9
  %202 = mul nsw i32 %200, %201
  %203 = load i32, ptr %13, align 4, !tbaa !9
  %204 = mul nsw i32 %202, %203
  %205 = add nsw i32 %199, %204
  %206 = sext i32 %205 to i64
  %207 = getelementptr inbounds float, ptr %192, i64 %206
  %208 = load float, ptr %207, align 4, !tbaa !11
  %209 = load ptr, ptr %9, align 8, !tbaa !5
  %210 = load i32, ptr %24, align 4, !tbaa !9
  %211 = load i32, ptr %11, align 4, !tbaa !9
  %212 = sub nsw i32 %210, %211
  %213 = sub nsw i32 %212, 1
  %214 = load i32, ptr %22, align 4, !tbaa !9
  %215 = load i32, ptr %12, align 4, !tbaa !9
  %216 = mul nsw i32 %214, %215
  %217 = add nsw i32 %213, %216
  %218 = load i32, ptr %21, align 4, !tbaa !9
  %219 = load i32, ptr %12, align 4, !tbaa !9
  %220 = mul nsw i32 %218, %219
  %221 = load i32, ptr %13, align 4, !tbaa !9
  %222 = mul nsw i32 %220, %221
  %223 = add nsw i32 %217, %222
  %224 = sext i32 %223 to i64
  %225 = getelementptr inbounds float, ptr %209, i64 %224
  %226 = load float, ptr %225, align 4, !tbaa !11
  %227 = fsub float %208, %226
  %228 = load ptr, ptr %10, align 8, !tbaa !5
  %229 = load i32, ptr %24, align 4, !tbaa !9
  %230 = load i32, ptr %22, align 4, !tbaa !9
  %231 = load i32, ptr %12, align 4, !tbaa !9
  %232 = mul nsw i32 %230, %231
  %233 = add nsw i32 %229, %232
  %234 = load i32, ptr %21, align 4, !tbaa !9
  %235 = load i32, ptr %12, align 4, !tbaa !9
  %236 = mul nsw i32 %234, %235
  %237 = load i32, ptr %13, align 4, !tbaa !9
  %238 = mul nsw i32 %236, %237
  %239 = add nsw i32 %233, %238
  %240 = sext i32 %239 to i64
  %241 = getelementptr inbounds float, ptr %228, i64 %240
  store float %227, ptr %241, align 4, !tbaa !11
  br label %242

242:                                              ; preds = %191
  %243 = load i32, ptr %24, align 4, !tbaa !9
  %244 = add nsw i32 %243, 1
  store i32 %244, ptr %24, align 4, !tbaa !9
  br label %184, !llvm.loop !19

245:                                              ; preds = %190
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #2
  %246 = load i32, ptr %12, align 4, !tbaa !9
  %247 = load i32, ptr %11, align 4, !tbaa !9
  %248 = sub nsw i32 %246, %247
  store i32 %248, ptr %25, align 4, !tbaa !9
  br label %249

249:                                              ; preds = %304, %245
  %250 = load i32, ptr %25, align 4, !tbaa !9
  %251 = load i32, ptr %12, align 4, !tbaa !9
  %252 = icmp slt i32 %250, %251
  br i1 %252, label %254, label %253

253:                                              ; preds = %249
  store i32 26, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #2
  br label %307

254:                                              ; preds = %249
  %255 = load ptr, ptr %9, align 8, !tbaa !5
  %256 = load i32, ptr %12, align 4, !tbaa !9
  %257 = sub nsw i32 %256, 1
  %258 = load i32, ptr %22, align 4, !tbaa !9
  %259 = load i32, ptr %12, align 4, !tbaa !9
  %260 = mul nsw i32 %258, %259
  %261 = add nsw i32 %257, %260
  %262 = load i32, ptr %21, align 4, !tbaa !9
  %263 = load i32, ptr %12, align 4, !tbaa !9
  %264 = mul nsw i32 %262, %263
  %265 = load i32, ptr %13, align 4, !tbaa !9
  %266 = mul nsw i32 %264, %265
  %267 = add nsw i32 %261, %266
  %268 = sext i32 %267 to i64
  %269 = getelementptr inbounds float, ptr %255, i64 %268
  %270 = load float, ptr %269, align 4, !tbaa !11
  %271 = load ptr, ptr %9, align 8, !tbaa !5
  %272 = load i32, ptr %25, align 4, !tbaa !9
  %273 = load i32, ptr %11, align 4, !tbaa !9
  %274 = sub nsw i32 %272, %273
  %275 = sub nsw i32 %274, 1
  %276 = load i32, ptr %22, align 4, !tbaa !9
  %277 = load i32, ptr %12, align 4, !tbaa !9
  %278 = mul nsw i32 %276, %277
  %279 = add nsw i32 %275, %278
  %280 = load i32, ptr %21, align 4, !tbaa !9
  %281 = load i32, ptr %12, align 4, !tbaa !9
  %282 = mul nsw i32 %280, %281
  %283 = load i32, ptr %13, align 4, !tbaa !9
  %284 = mul nsw i32 %282, %283
  %285 = add nsw i32 %279, %284
  %286 = sext i32 %285 to i64
  %287 = getelementptr inbounds float, ptr %271, i64 %286
  %288 = load float, ptr %287, align 4, !tbaa !11
  %289 = fsub float %270, %288
  %290 = load ptr, ptr %10, align 8, !tbaa !5
  %291 = load i32, ptr %25, align 4, !tbaa !9
  %292 = load i32, ptr %22, align 4, !tbaa !9
  %293 = load i32, ptr %12, align 4, !tbaa !9
  %294 = mul nsw i32 %292, %293
  %295 = add nsw i32 %291, %294
  %296 = load i32, ptr %21, align 4, !tbaa !9
  %297 = load i32, ptr %12, align 4, !tbaa !9
  %298 = mul nsw i32 %296, %297
  %299 = load i32, ptr %13, align 4, !tbaa !9
  %300 = mul nsw i32 %298, %299
  %301 = add nsw i32 %295, %300
  %302 = sext i32 %301 to i64
  %303 = getelementptr inbounds float, ptr %290, i64 %302
  store float %289, ptr %303, align 4, !tbaa !11
  br label %304

304:                                              ; preds = %254
  %305 = load i32, ptr %25, align 4, !tbaa !9
  %306 = add nsw i32 %305, 1
  store i32 %306, ptr %25, align 4, !tbaa !9
  br label %249, !llvm.loop !20

307:                                              ; preds = %253
  br label %308

308:                                              ; preds = %307
  %309 = load i32, ptr %22, align 4, !tbaa !9
  %310 = add nsw i32 %309, 1
  store i32 %310, ptr %22, align 4, !tbaa !9
  br label %134, !llvm.loop !21

311:                                              ; preds = %138
  br label %312

312:                                              ; preds = %311
  %313 = load i32, ptr %21, align 4, !tbaa !9
  %314 = add nsw i32 %313, 1
  store i32 %314, ptr %21, align 4, !tbaa !9
  br label %128, !llvm.loop !22

315:                                              ; preds = %132
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #2
  store i32 0, ptr %26, align 4, !tbaa !9
  br label %316

316:                                              ; preds = %374, %315
  %317 = load i32, ptr %26, align 4, !tbaa !9
  %318 = load i32, ptr %14, align 4, !tbaa !9
  %319 = icmp slt i32 %317, %318
  br i1 %319, label %321, label %320

320:                                              ; preds = %316
  store i32 29, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #2
  br label %377

321:                                              ; preds = %316
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #2
  store i32 1, ptr %27, align 4, !tbaa !9
  br label %322

322:                                              ; preds = %370, %321
  %323 = load i32, ptr %27, align 4, !tbaa !9
  %324 = load i32, ptr %13, align 4, !tbaa !9
  %325 = icmp slt i32 %323, %324
  br i1 %325, label %327, label %326

326:                                              ; preds = %322
  store i32 32, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #2
  br label %373

327:                                              ; preds = %322
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #2
  store i32 0, ptr %28, align 4, !tbaa !9
  br label %328

328:                                              ; preds = %366, %327
  %329 = load i32, ptr %28, align 4, !tbaa !9
  %330 = load i32, ptr %12, align 4, !tbaa !9
  %331 = icmp slt i32 %329, %330
  br i1 %331, label %333, label %332

332:                                              ; preds = %328
  store i32 35, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #2
  br label %369

333:                                              ; preds = %328
  %334 = load ptr, ptr %10, align 8, !tbaa !5
  %335 = load i32, ptr %28, align 4, !tbaa !9
  %336 = load i32, ptr %27, align 4, !tbaa !9
  %337 = sub nsw i32 %336, 1
  %338 = load i32, ptr %12, align 4, !tbaa !9
  %339 = mul nsw i32 %337, %338
  %340 = add nsw i32 %335, %339
  %341 = load i32, ptr %26, align 4, !tbaa !9
  %342 = load i32, ptr %12, align 4, !tbaa !9
  %343 = mul nsw i32 %341, %342
  %344 = load i32, ptr %13, align 4, !tbaa !9
  %345 = mul nsw i32 %343, %344
  %346 = add nsw i32 %340, %345
  %347 = sext i32 %346 to i64
  %348 = getelementptr inbounds float, ptr %334, i64 %347
  %349 = load float, ptr %348, align 4, !tbaa !11
  %350 = load ptr, ptr %10, align 8, !tbaa !5
  %351 = load i32, ptr %28, align 4, !tbaa !9
  %352 = load i32, ptr %27, align 4, !tbaa !9
  %353 = load i32, ptr %12, align 4, !tbaa !9
  %354 = mul nsw i32 %352, %353
  %355 = add nsw i32 %351, %354
  %356 = load i32, ptr %26, align 4, !tbaa !9
  %357 = load i32, ptr %12, align 4, !tbaa !9
  %358 = mul nsw i32 %356, %357
  %359 = load i32, ptr %13, align 4, !tbaa !9
  %360 = mul nsw i32 %358, %359
  %361 = add nsw i32 %355, %360
  %362 = sext i32 %361 to i64
  %363 = getelementptr inbounds float, ptr %350, i64 %362
  %364 = load float, ptr %363, align 4, !tbaa !11
  %365 = fadd float %364, %349
  store float %365, ptr %363, align 4, !tbaa !11
  br label %366

366:                                              ; preds = %333
  %367 = load i32, ptr %28, align 4, !tbaa !9
  %368 = add nsw i32 %367, 1
  store i32 %368, ptr %28, align 4, !tbaa !9
  br label %328, !llvm.loop !23

369:                                              ; preds = %332
  br label %370

370:                                              ; preds = %369
  %371 = load i32, ptr %27, align 4, !tbaa !9
  %372 = add nsw i32 %371, 1
  store i32 %372, ptr %27, align 4, !tbaa !9
  br label %322, !llvm.loop !24

373:                                              ; preds = %326
  br label %374

374:                                              ; preds = %373
  %375 = load i32, ptr %26, align 4, !tbaa !9
  %376 = add nsw i32 %375, 1
  store i32 %376, ptr %26, align 4, !tbaa !9
  br label %316, !llvm.loop !25

377:                                              ; preds = %320
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #2
  store i32 0, ptr %29, align 4, !tbaa !9
  br label %378

378:                                              ; preds = %562, %377
  %379 = load i32, ptr %29, align 4, !tbaa !9
  %380 = load i32, ptr %14, align 4, !tbaa !9
  %381 = icmp slt i32 %379, %380
  br i1 %381, label %383, label %382

382:                                              ; preds = %378
  store i32 38, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #2
  br label %565

383:                                              ; preds = %378
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #2
  store i32 0, ptr %30, align 4, !tbaa !9
  br label %384

384:                                              ; preds = %558, %383
  %385 = load i32, ptr %30, align 4, !tbaa !9
  %386 = load i32, ptr %12, align 4, !tbaa !9
  %387 = icmp slt i32 %385, %386
  br i1 %387, label %389, label %388

388:                                              ; preds = %384
  store i32 41, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #2
  br label %561

389:                                              ; preds = %384
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #2
  store i32 0, ptr %31, align 4, !tbaa !9
  br label %390

390:                                              ; preds = %428, %389
  %391 = load i32, ptr %31, align 4, !tbaa !9
  %392 = load i32, ptr %11, align 4, !tbaa !9
  %393 = add nsw i32 %392, 1
  %394 = icmp slt i32 %391, %393
  br i1 %394, label %396, label %395

395:                                              ; preds = %390
  store i32 44, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #2
  br label %431

396:                                              ; preds = %390
  %397 = load ptr, ptr %10, align 8, !tbaa !5
  %398 = load i32, ptr %30, align 4, !tbaa !9
  %399 = load i32, ptr %31, align 4, !tbaa !9
  %400 = load i32, ptr %11, align 4, !tbaa !9
  %401 = add nsw i32 %399, %400
  %402 = load i32, ptr %12, align 4, !tbaa !9
  %403 = mul nsw i32 %401, %402
  %404 = add nsw i32 %398, %403
  %405 = load i32, ptr %29, align 4, !tbaa !9
  %406 = load i32, ptr %12, align 4, !tbaa !9
  %407 = mul nsw i32 %405, %406
  %408 = load i32, ptr %13, align 4, !tbaa !9
  %409 = mul nsw i32 %407, %408
  %410 = add nsw i32 %404, %409
  %411 = sext i32 %410 to i64
  %412 = getelementptr inbounds float, ptr %397, i64 %411
  %413 = load float, ptr %412, align 4, !tbaa !11
  %414 = load ptr, ptr %9, align 8, !tbaa !5
  %415 = load i32, ptr %30, align 4, !tbaa !9
  %416 = load i32, ptr %31, align 4, !tbaa !9
  %417 = load i32, ptr %12, align 4, !tbaa !9
  %418 = mul nsw i32 %416, %417
  %419 = add nsw i32 %415, %418
  %420 = load i32, ptr %29, align 4, !tbaa !9
  %421 = load i32, ptr %12, align 4, !tbaa !9
  %422 = mul nsw i32 %420, %421
  %423 = load i32, ptr %13, align 4, !tbaa !9
  %424 = mul nsw i32 %422, %423
  %425 = add nsw i32 %419, %424
  %426 = sext i32 %425 to i64
  %427 = getelementptr inbounds float, ptr %414, i64 %426
  store float %413, ptr %427, align 4, !tbaa !11
  br label %428

428:                                              ; preds = %396
  %429 = load i32, ptr %31, align 4, !tbaa !9
  %430 = add nsw i32 %429, 1
  store i32 %430, ptr %31, align 4, !tbaa !9
  br label %390, !llvm.loop !26

431:                                              ; preds = %395
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #2
  %432 = load i32, ptr %11, align 4, !tbaa !9
  %433 = add nsw i32 %432, 1
  store i32 %433, ptr %32, align 4, !tbaa !9
  br label %434

434:                                              ; preds = %492, %431
  %435 = load i32, ptr %32, align 4, !tbaa !9
  %436 = load i32, ptr %13, align 4, !tbaa !9
  %437 = load i32, ptr %11, align 4, !tbaa !9
  %438 = sub nsw i32 %436, %437
  %439 = icmp slt i32 %435, %438
  br i1 %439, label %441, label %440

440:                                              ; preds = %434
  store i32 47, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #2
  br label %495

441:                                              ; preds = %434
  %442 = load ptr, ptr %10, align 8, !tbaa !5
  %443 = load i32, ptr %30, align 4, !tbaa !9
  %444 = load i32, ptr %32, align 4, !tbaa !9
  %445 = load i32, ptr %11, align 4, !tbaa !9
  %446 = add nsw i32 %444, %445
  %447 = load i32, ptr %12, align 4, !tbaa !9
  %448 = mul nsw i32 %446, %447
  %449 = add nsw i32 %443, %448
  %450 = load i32, ptr %29, align 4, !tbaa !9
  %451 = load i32, ptr %12, align 4, !tbaa !9
  %452 = mul nsw i32 %450, %451
  %453 = load i32, ptr %13, align 4, !tbaa !9
  %454 = mul nsw i32 %452, %453
  %455 = add nsw i32 %449, %454
  %456 = sext i32 %455 to i64
  %457 = getelementptr inbounds float, ptr %442, i64 %456
  %458 = load float, ptr %457, align 4, !tbaa !11
  %459 = load ptr, ptr %10, align 8, !tbaa !5
  %460 = load i32, ptr %30, align 4, !tbaa !9
  %461 = load i32, ptr %32, align 4, !tbaa !9
  %462 = load i32, ptr %11, align 4, !tbaa !9
  %463 = sub nsw i32 %461, %462
  %464 = sub nsw i32 %463, 1
  %465 = load i32, ptr %12, align 4, !tbaa !9
  %466 = mul nsw i32 %464, %465
  %467 = add nsw i32 %460, %466
  %468 = load i32, ptr %29, align 4, !tbaa !9
  %469 = load i32, ptr %12, align 4, !tbaa !9
  %470 = mul nsw i32 %468, %469
  %471 = load i32, ptr %13, align 4, !tbaa !9
  %472 = mul nsw i32 %470, %471
  %473 = add nsw i32 %467, %472
  %474 = sext i32 %473 to i64
  %475 = getelementptr inbounds float, ptr %459, i64 %474
  %476 = load float, ptr %475, align 4, !tbaa !11
  %477 = fsub float %458, %476
  %478 = load ptr, ptr %9, align 8, !tbaa !5
  %479 = load i32, ptr %30, align 4, !tbaa !9
  %480 = load i32, ptr %32, align 4, !tbaa !9
  %481 = load i32, ptr %12, align 4, !tbaa !9
  %482 = mul nsw i32 %480, %481
  %483 = add nsw i32 %479, %482
  %484 = load i32, ptr %29, align 4, !tbaa !9
  %485 = load i32, ptr %12, align 4, !tbaa !9
  %486 = mul nsw i32 %484, %485
  %487 = load i32, ptr %13, align 4, !tbaa !9
  %488 = mul nsw i32 %486, %487
  %489 = add nsw i32 %483, %488
  %490 = sext i32 %489 to i64
  %491 = getelementptr inbounds float, ptr %478, i64 %490
  store float %477, ptr %491, align 4, !tbaa !11
  br label %492

492:                                              ; preds = %441
  %493 = load i32, ptr %32, align 4, !tbaa !9
  %494 = add nsw i32 %493, 1
  store i32 %494, ptr %32, align 4, !tbaa !9
  br label %434, !llvm.loop !27

495:                                              ; preds = %440
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #2
  %496 = load i32, ptr %13, align 4, !tbaa !9
  %497 = load i32, ptr %11, align 4, !tbaa !9
  %498 = sub nsw i32 %496, %497
  store i32 %498, ptr %33, align 4, !tbaa !9
  br label %499

499:                                              ; preds = %554, %495
  %500 = load i32, ptr %33, align 4, !tbaa !9
  %501 = load i32, ptr %13, align 4, !tbaa !9
  %502 = icmp slt i32 %500, %501
  br i1 %502, label %504, label %503

503:                                              ; preds = %499
  store i32 50, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #2
  br label %557

504:                                              ; preds = %499
  %505 = load ptr, ptr %10, align 8, !tbaa !5
  %506 = load i32, ptr %30, align 4, !tbaa !9
  %507 = load i32, ptr %13, align 4, !tbaa !9
  %508 = sub nsw i32 %507, 1
  %509 = load i32, ptr %12, align 4, !tbaa !9
  %510 = mul nsw i32 %508, %509
  %511 = add nsw i32 %506, %510
  %512 = load i32, ptr %29, align 4, !tbaa !9
  %513 = load i32, ptr %12, align 4, !tbaa !9
  %514 = mul nsw i32 %512, %513
  %515 = load i32, ptr %13, align 4, !tbaa !9
  %516 = mul nsw i32 %514, %515
  %517 = add nsw i32 %511, %516
  %518 = sext i32 %517 to i64
  %519 = getelementptr inbounds float, ptr %505, i64 %518
  %520 = load float, ptr %519, align 4, !tbaa !11
  %521 = load ptr, ptr %10, align 8, !tbaa !5
  %522 = load i32, ptr %30, align 4, !tbaa !9
  %523 = load i32, ptr %33, align 4, !tbaa !9
  %524 = load i32, ptr %11, align 4, !tbaa !9
  %525 = sub nsw i32 %523, %524
  %526 = sub nsw i32 %525, 1
  %527 = load i32, ptr %12, align 4, !tbaa !9
  %528 = mul nsw i32 %526, %527
  %529 = add nsw i32 %522, %528
  %530 = load i32, ptr %29, align 4, !tbaa !9
  %531 = load i32, ptr %12, align 4, !tbaa !9
  %532 = mul nsw i32 %530, %531
  %533 = load i32, ptr %13, align 4, !tbaa !9
  %534 = mul nsw i32 %532, %533
  %535 = add nsw i32 %529, %534
  %536 = sext i32 %535 to i64
  %537 = getelementptr inbounds float, ptr %521, i64 %536
  %538 = load float, ptr %537, align 4, !tbaa !11
  %539 = fsub float %520, %538
  %540 = load ptr, ptr %9, align 8, !tbaa !5
  %541 = load i32, ptr %30, align 4, !tbaa !9
  %542 = load i32, ptr %33, align 4, !tbaa !9
  %543 = load i32, ptr %12, align 4, !tbaa !9
  %544 = mul nsw i32 %542, %543
  %545 = add nsw i32 %541, %544
  %546 = load i32, ptr %29, align 4, !tbaa !9
  %547 = load i32, ptr %12, align 4, !tbaa !9
  %548 = mul nsw i32 %546, %547
  %549 = load i32, ptr %13, align 4, !tbaa !9
  %550 = mul nsw i32 %548, %549
  %551 = add nsw i32 %545, %550
  %552 = sext i32 %551 to i64
  %553 = getelementptr inbounds float, ptr %540, i64 %552
  store float %539, ptr %553, align 4, !tbaa !11
  br label %554

554:                                              ; preds = %504
  %555 = load i32, ptr %33, align 4, !tbaa !9
  %556 = add nsw i32 %555, 1
  store i32 %556, ptr %33, align 4, !tbaa !9
  br label %499, !llvm.loop !28

557:                                              ; preds = %503
  br label %558

558:                                              ; preds = %557
  %559 = load i32, ptr %30, align 4, !tbaa !9
  %560 = add nsw i32 %559, 1
  store i32 %560, ptr %30, align 4, !tbaa !9
  br label %384, !llvm.loop !29

561:                                              ; preds = %388
  br label %562

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

565:                                              ; preds = %382
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #2
  store i32 1, ptr %34, align 4, !tbaa !9
  br label %566

566:                                              ; preds = %624, %565
  %567 = load i32, ptr %34, align 4, !tbaa !9
  %568 = load i32, ptr %14, align 4, !tbaa !9
  %569 = icmp slt i32 %567, %568
  br i1 %569, label %571, label %570

570:                                              ; preds = %566
  store i32 53, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #2
  br label %627

571:                                              ; preds = %566
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #2
  store i32 0, ptr %35, align 4, !tbaa !9
  br label %572

572:                                              ; preds = %620, %571
  %573 = load i32, ptr %35, align 4, !tbaa !9
  %574 = load i32, ptr %13, align 4, !tbaa !9
  %575 = icmp slt i32 %573, %574
  br i1 %575, label %577, label %576

576:                                              ; preds = %572
  store i32 56, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #2
  br label %623

577:                                              ; preds = %572
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #2
  store i32 0, ptr %36, align 4, !tbaa !9
  br label %578

578:                                              ; preds = %616, %577
  %579 = load i32, ptr %36, align 4, !tbaa !9
  %580 = load i32, ptr %12, align 4, !tbaa !9
  %581 = icmp slt i32 %579, %580
  br i1 %581, label %583, label %582

582:                                              ; preds = %578
  store i32 59, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #2
  br label %619

583:                                              ; preds = %578
  %584 = load ptr, ptr %9, align 8, !tbaa !5
  %585 = load i32, ptr %36, align 4, !tbaa !9
  %586 = load i32, ptr %35, align 4, !tbaa !9
  %587 = load i32, ptr %12, align 4, !tbaa !9
  %588 = mul nsw i32 %586, %587
  %589 = add nsw i32 %585, %588
  %590 = load i32, ptr %34, align 4, !tbaa !9
  %591 = sub nsw i32 %590, 1
  %592 = load i32, ptr %12, align 4, !tbaa !9
  %593 = mul nsw i32 %591, %592
  %594 = load i32, ptr %13, align 4, !tbaa !9
  %595 = mul nsw i32 %593, %594
  %596 = add nsw i32 %589, %595
  %597 = sext i32 %596 to i64
  %598 = getelementptr inbounds float, ptr %584, i64 %597
  %599 = load float, ptr %598, align 4, !tbaa !11
  %600 = load ptr, ptr %9, align 8, !tbaa !5
  %601 = load i32, ptr %36, align 4, !tbaa !9
  %602 = load i32, ptr %35, align 4, !tbaa !9
  %603 = load i32, ptr %12, align 4, !tbaa !9
  %604 = mul nsw i32 %602, %603
  %605 = add nsw i32 %601, %604
  %606 = load i32, ptr %34, align 4, !tbaa !9
  %607 = load i32, ptr %12, align 4, !tbaa !9
  %608 = mul nsw i32 %606, %607
  %609 = load i32, ptr %13, align 4, !tbaa !9
  %610 = mul nsw i32 %608, %609
  %611 = add nsw i32 %605, %610
  %612 = sext i32 %611 to i64
  %613 = getelementptr inbounds float, ptr %600, i64 %612
  %614 = load float, ptr %613, align 4, !tbaa !11
  %615 = fadd float %614, %599
  store float %615, ptr %613, align 4, !tbaa !11
  br label %616

616:                                              ; preds = %583
  %617 = load i32, ptr %36, align 4, !tbaa !9
  %618 = add nsw i32 %617, 1
  store i32 %618, ptr %36, align 4, !tbaa !9
  br label %578, !llvm.loop !31

619:                                              ; preds = %582
  br label %620

620:                                              ; preds = %619
  %621 = load i32, ptr %35, align 4, !tbaa !9
  %622 = add nsw i32 %621, 1
  store i32 %622, ptr %35, align 4, !tbaa !9
  br label %572, !llvm.loop !32

623:                                              ; preds = %576
  br label %624

624:                                              ; preds = %623
  %625 = load i32, ptr %34, align 4, !tbaa !9
  %626 = add nsw i32 %625, 1
  store i32 %626, ptr %34, align 4, !tbaa !9
  br label %566, !llvm.loop !33

627:                                              ; preds = %570
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #2
  store i32 0, ptr %37, align 4, !tbaa !9
  br label %628

628:                                              ; preds = %812, %627
  %629 = load i32, ptr %37, align 4, !tbaa !9
  %630 = load i32, ptr %13, align 4, !tbaa !9
  %631 = icmp slt i32 %629, %630
  br i1 %631, label %633, label %632

632:                                              ; preds = %628
  store i32 62, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #2
  br label %815

633:                                              ; preds = %628
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #2
  store i32 0, ptr %38, align 4, !tbaa !9
  br label %634

634:                                              ; preds = %808, %633
  %635 = load i32, ptr %38, align 4, !tbaa !9
  %636 = load i32, ptr %12, align 4, !tbaa !9
  %637 = icmp slt i32 %635, %636
  br i1 %637, label %639, label %638

638:                                              ; preds = %634
  store i32 65, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #2
  br label %811

639:                                              ; preds = %634
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #2
  store i32 0, ptr %39, align 4, !tbaa !9
  br label %640

640:                                              ; preds = %678, %639
  %641 = load i32, ptr %39, align 4, !tbaa !9
  %642 = load i32, ptr %11, align 4, !tbaa !9
  %643 = add nsw i32 %642, 1
  %644 = icmp slt i32 %641, %643
  br i1 %644, label %646, label %645

645:                                              ; preds = %640
  store i32 68, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #2
  br label %681

646:                                              ; preds = %640
  %647 = load ptr, ptr %9, align 8, !tbaa !5
  %648 = load i32, ptr %38, align 4, !tbaa !9
  %649 = load i32, ptr %37, align 4, !tbaa !9
  %650 = load i32, ptr %12, align 4, !tbaa !9
  %651 = mul nsw i32 %649, %650
  %652 = add nsw i32 %648, %651
  %653 = load i32, ptr %39, align 4, !tbaa !9
  %654 = load i32, ptr %11, align 4, !tbaa !9
  %655 = add nsw i32 %653, %654
  %656 = load i32, ptr %12, align 4, !tbaa !9
  %657 = mul nsw i32 %655, %656
  %658 = load i32, ptr %13, align 4, !tbaa !9
  %659 = mul nsw i32 %657, %658
  %660 = add nsw i32 %652, %659
  %661 = sext i32 %660 to i64
  %662 = getelementptr inbounds float, ptr %647, i64 %661
  %663 = load float, ptr %662, align 4, !tbaa !11
  %664 = load ptr, ptr %8, align 8, !tbaa !5
  %665 = load i32, ptr %38, align 4, !tbaa !9
  %666 = load i32, ptr %37, align 4, !tbaa !9
  %667 = load i32, ptr %12, align 4, !tbaa !9
  %668 = mul nsw i32 %666, %667
  %669 = add nsw i32 %665, %668
  %670 = load i32, ptr %39, align 4, !tbaa !9
  %671 = load i32, ptr %12, align 4, !tbaa !9
  %672 = mul nsw i32 %670, %671
  %673 = load i32, ptr %13, align 4, !tbaa !9
  %674 = mul nsw i32 %672, %673
  %675 = add nsw i32 %669, %674
  %676 = sext i32 %675 to i64
  %677 = getelementptr inbounds float, ptr %664, i64 %676
  store float %663, ptr %677, align 4, !tbaa !11
  br label %678

678:                                              ; preds = %646
  %679 = load i32, ptr %39, align 4, !tbaa !9
  %680 = add nsw i32 %679, 1
  store i32 %680, ptr %39, align 4, !tbaa !9
  br label %640, !llvm.loop !34

681:                                              ; preds = %645
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #2
  %682 = load i32, ptr %11, align 4, !tbaa !9
  %683 = add nsw i32 %682, 1
  store i32 %683, ptr %40, align 4, !tbaa !9
  br label %684

684:                                              ; preds = %742, %681
  %685 = load i32, ptr %40, align 4, !tbaa !9
  %686 = load i32, ptr %14, align 4, !tbaa !9
  %687 = load i32, ptr %11, align 4, !tbaa !9
  %688 = sub nsw i32 %686, %687
  %689 = icmp slt i32 %685, %688
  br i1 %689, label %691, label %690

690:                                              ; preds = %684
  store i32 71, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #2
  br label %745

691:                                              ; preds = %684
  %692 = load ptr, ptr %9, align 8, !tbaa !5
  %693 = load i32, ptr %38, align 4, !tbaa !9
  %694 = load i32, ptr %37, align 4, !tbaa !9
  %695 = load i32, ptr %12, align 4, !tbaa !9
  %696 = mul nsw i32 %694, %695
  %697 = add nsw i32 %693, %696
  %698 = load i32, ptr %40, align 4, !tbaa !9
  %699 = load i32, ptr %11, align 4, !tbaa !9
  %700 = add nsw i32 %698, %699
  %701 = load i32, ptr %12, align 4, !tbaa !9
  %702 = mul nsw i32 %700, %701
  %703 = load i32, ptr %13, align 4, !tbaa !9
  %704 = mul nsw i32 %702, %703
  %705 = add nsw i32 %697, %704
  %706 = sext i32 %705 to i64
  %707 = getelementptr inbounds float, ptr %692, i64 %706
  %708 = load float, ptr %707, align 4, !tbaa !11
  %709 = load ptr, ptr %9, align 8, !tbaa !5
  %710 = load i32, ptr %38, align 4, !tbaa !9
  %711 = load i32, ptr %37, align 4, !tbaa !9
  %712 = load i32, ptr %12, align 4, !tbaa !9
  %713 = mul nsw i32 %711, %712
  %714 = add nsw i32 %710, %713
  %715 = load i32, ptr %40, align 4, !tbaa !9
  %716 = load i32, ptr %11, align 4, !tbaa !9
  %717 = sub nsw i32 %715, %716
  %718 = sub nsw i32 %717, 1
  %719 = load i32, ptr %12, align 4, !tbaa !9
  %720 = mul nsw i32 %718, %719
  %721 = load i32, ptr %13, align 4, !tbaa !9
  %722 = mul nsw i32 %720, %721
  %723 = add nsw i32 %714, %722
  %724 = sext i32 %723 to i64
  %725 = getelementptr inbounds float, ptr %709, i64 %724
  %726 = load float, ptr %725, align 4, !tbaa !11
  %727 = fsub float %708, %726
  %728 = load ptr, ptr %8, align 8, !tbaa !5
  %729 = load i32, ptr %38, align 4, !tbaa !9
  %730 = load i32, ptr %37, align 4, !tbaa !9
  %731 = load i32, ptr %12, align 4, !tbaa !9
  %732 = mul nsw i32 %730, %731
  %733 = add nsw i32 %729, %732
  %734 = load i32, ptr %40, align 4, !tbaa !9
  %735 = load i32, ptr %12, align 4, !tbaa !9
  %736 = mul nsw i32 %734, %735
  %737 = load i32, ptr %13, align 4, !tbaa !9
  %738 = mul nsw i32 %736, %737
  %739 = add nsw i32 %733, %738
  %740 = sext i32 %739 to i64
  %741 = getelementptr inbounds float, ptr %728, i64 %740
  store float %727, ptr %741, align 4, !tbaa !11
  br label %742

742:                                              ; preds = %691
  %743 = load i32, ptr %40, align 4, !tbaa !9
  %744 = add nsw i32 %743, 1
  store i32 %744, ptr %40, align 4, !tbaa !9
  br label %684, !llvm.loop !35

745:                                              ; preds = %690
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #2
  %746 = load i32, ptr %14, align 4, !tbaa !9
  %747 = load i32, ptr %11, align 4, !tbaa !9
  %748 = sub nsw i32 %746, %747
  store i32 %748, ptr %41, align 4, !tbaa !9
  br label %749

749:                                              ; preds = %804, %745
  %750 = load i32, ptr %41, align 4, !tbaa !9
  %751 = load i32, ptr %14, align 4, !tbaa !9
  %752 = icmp slt i32 %750, %751
  br i1 %752, label %754, label %753

753:                                              ; preds = %749
  store i32 74, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #2
  br label %807

754:                                              ; preds = %749
  %755 = load ptr, ptr %9, align 8, !tbaa !5
  %756 = load i32, ptr %38, align 4, !tbaa !9
  %757 = load i32, ptr %37, align 4, !tbaa !9
  %758 = load i32, ptr %12, align 4, !tbaa !9
  %759 = mul nsw i32 %757, %758
  %760 = add nsw i32 %756, %759
  %761 = load i32, ptr %14, align 4, !tbaa !9
  %762 = sub nsw i32 %761, 1
  %763 = load i32, ptr %12, align 4, !tbaa !9
  %764 = mul nsw i32 %762, %763
  %765 = load i32, ptr %13, align 4, !tbaa !9
  %766 = mul nsw i32 %764, %765
  %767 = add nsw i32 %760, %766
  %768 = sext i32 %767 to i64
  %769 = getelementptr inbounds float, ptr %755, i64 %768
  %770 = load float, ptr %769, align 4, !tbaa !11
  %771 = load ptr, ptr %9, align 8, !tbaa !5
  %772 = load i32, ptr %38, align 4, !tbaa !9
  %773 = load i32, ptr %37, align 4, !tbaa !9
  %774 = load i32, ptr %12, align 4, !tbaa !9
  %775 = mul nsw i32 %773, %774
  %776 = add nsw i32 %772, %775
  %777 = load i32, ptr %41, align 4, !tbaa !9
  %778 = load i32, ptr %11, align 4, !tbaa !9
  %779 = sub nsw i32 %777, %778
  %780 = sub nsw i32 %779, 1
  %781 = load i32, ptr %12, align 4, !tbaa !9
  %782 = mul nsw i32 %780, %781
  %783 = load i32, ptr %13, align 4, !tbaa !9
  %784 = mul nsw i32 %782, %783
  %785 = add nsw i32 %776, %784
  %786 = sext i32 %785 to i64
  %787 = getelementptr inbounds float, ptr %771, i64 %786
  %788 = load float, ptr %787, align 4, !tbaa !11
  %789 = fsub float %770, %788
  %790 = load ptr, ptr %8, align 8, !tbaa !5
  %791 = load i32, ptr %38, align 4, !tbaa !9
  %792 = load i32, ptr %37, align 4, !tbaa !9
  %793 = load i32, ptr %12, align 4, !tbaa !9
  %794 = mul nsw i32 %792, %793
  %795 = add nsw i32 %791, %794
  %796 = load i32, ptr %41, align 4, !tbaa !9
  %797 = load i32, ptr %12, align 4, !tbaa !9
  %798 = mul nsw i32 %796, %797
  %799 = load i32, ptr %13, align 4, !tbaa !9
  %800 = mul nsw i32 %798, %799
  %801 = add nsw i32 %795, %800
  %802 = sext i32 %801 to i64
  %803 = getelementptr inbounds float, ptr %790, i64 %802
  store float %789, ptr %803, align 4, !tbaa !11
  br label %804

804:                                              ; preds = %754
  %805 = load i32, ptr %41, align 4, !tbaa !9
  %806 = add nsw i32 %805, 1
  store i32 %806, ptr %41, align 4, !tbaa !9
  br label %749, !llvm.loop !36

807:                                              ; preds = %753
  br label %808

808:                                              ; preds = %807
  %809 = load i32, ptr %38, align 4, !tbaa !9
  %810 = add nsw i32 %809, 1
  store i32 %810, ptr %38, align 4, !tbaa !9
  br label %634, !llvm.loop !37

811:                                              ; preds = %638
  br label %812

812:                                              ; preds = %811
  %813 = load i32, ptr %37, align 4, !tbaa !9
  %814 = add nsw i32 %813, 1
  store i32 %814, ptr %37, align 4, !tbaa !9
  br label %628, !llvm.loop !38

815:                                              ; preds = %632
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #2
  ret void
}

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress 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 #2 = { 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++ 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}
!29 = distinct !{!29, !14}
!30 = distinct !{!30, !14}
!31 = distinct !{!31, !14}
!32 = distinct !{!32, !14}
!33 = distinct !{!33, !14}
!34 = distinct !{!34, !14}
!35 = distinct !{!35, !14}
!36 = distinct !{!36, !14}
!37 = distinct !{!37, !14}
!38 = distinct !{!38, !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"

; Function Attrs: mustprogress nofree norecurse nosync nounwind memory(argmem: readwrite) uwtable
define dso_local void @_Z9boxfilterPfS_S_iiii(ptr nocapture noundef %0, ptr nocapture noundef %1, ptr nocapture noundef %2, i32 noundef %3, i32 noundef %4, i32 noundef %5, i32 noundef %6) local_unnamed_addr #0 {
  %8 = ptrtoint ptr %1 to i64
  %9 = ptrtoint ptr %0 to i64
  %10 = ptrtoint ptr %2 to i64
  %11 = ptrtoint ptr %1 to i64
  %12 = ptrtoint ptr %2 to i64
  %13 = ptrtoint ptr %1 to i64
  %14 = ptrtoint ptr %2 to i64
  %15 = ptrtoint ptr %1 to i64
  %16 = ptrtoint ptr %2 to i64
  %17 = ptrtoint ptr %1 to i64
  %18 = ptrtoint ptr %2 to i64
  %19 = ptrtoint ptr %1 to i64
  %20 = ptrtoint ptr %2 to i64
  %21 = ptrtoint ptr %1 to i64
  %22 = ptrtoint ptr %2 to i64
  %23 = ptrtoint ptr %1 to i64
  %24 = ptrtoint ptr %2 to i64
  %25 = ptrtoint ptr %1 to i64
  %26 = ptrtoint ptr %2 to i64
  %27 = mul i32 %5, %4
  %28 = mul nsw i32 %27, %6
  %29 = icmp sgt i32 %28, 0
  br i1 %29, label %.lr.ph.preheader, label %.preheader377

.lr.ph.preheader:                                 ; preds = %7
  %30 = ptrtoint ptr %1 to i64
  %31 = ptrtoint ptr %0 to i64
  %wide.trip.count = zext nneg i32 %28 to i64
  %min.iters.check = icmp ult i32 %28, 8
  %32 = sub i64 %30, %31
  %diff.check = icmp ult i64 %32, 32
  %or.cond1241 = or i1 %min.iters.check, %diff.check
  br i1 %or.cond1241, label %.lr.ph.preheader1263, label %vector.ph

.lr.ph.preheader1263:                             ; preds = %middle.block, %.lr.ph.preheader
  %indvars.iv.ph = phi i64 [ 0, %.lr.ph.preheader ], [ %n.vec, %middle.block ]
  %xtraiter = and i64 %wide.trip.count, 3
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.lr.ph.prol.loopexit, label %.lr.ph.prol

.lr.ph.prol:                                      ; preds = %.lr.ph.preheader1263, %.lr.ph.prol
  %indvars.iv.prol = phi i64 [ %indvars.iv.next.prol, %.lr.ph.prol ], [ %indvars.iv.ph, %.lr.ph.preheader1263 ]
  %prol.iter = phi i64 [ %prol.iter.next, %.lr.ph.prol ], [ 0, %.lr.ph.preheader1263 ]
  %33 = getelementptr inbounds float, ptr %0, i64 %indvars.iv.prol
  %34 = load float, ptr %33, align 4, !tbaa !5
  %35 = getelementptr inbounds float, ptr %1, i64 %indvars.iv.prol
  store float %34, ptr %35, align 4, !tbaa !5
  %indvars.iv.next.prol = add nuw nsw i64 %indvars.iv.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter
  br i1 %prol.iter.cmp.not, label %.lr.ph.prol.loopexit, label %.lr.ph.prol, !llvm.loop !9

.lr.ph.prol.loopexit:                             ; preds = %.lr.ph.prol, %.lr.ph.preheader1263
  %indvars.iv.unr = phi i64 [ %indvars.iv.ph, %.lr.ph.preheader1263 ], [ %indvars.iv.next.prol, %.lr.ph.prol ]
  %36 = sub nsw i64 %indvars.iv.ph, %wide.trip.count
  %37 = icmp ugt i64 %36, -4
  br i1 %37, label %.preheader377, label %.lr.ph

vector.ph:                                        ; preds = %.lr.ph.preheader
  %n.vec = and i64 %wide.trip.count, 2147483640
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %38 = getelementptr inbounds float, ptr %0, i64 %index
  %39 = getelementptr inbounds i8, ptr %38, i64 16
  %wide.load = load <4 x float>, ptr %38, align 4, !tbaa !5
  %wide.load786 = load <4 x float>, ptr %39, align 4, !tbaa !5
  %40 = getelementptr inbounds float, ptr %1, i64 %index
  %41 = getelementptr inbounds i8, ptr %40, i64 16
  store <4 x float> %wide.load, ptr %40, align 4, !tbaa !5
  store <4 x float> %wide.load786, ptr %41, align 4, !tbaa !5
  %index.next = add nuw i64 %index, 8
  %42 = icmp eq i64 %index.next, %n.vec
  br i1 %42, label %middle.block, label %vector.body, !llvm.loop !11

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %n.vec, %wide.trip.count
  br i1 %cmp.n, label %.preheader377, label %.lr.ph.preheader1263

.preheader377:                                    ; preds = %.lr.ph.prol.loopexit, %.lr.ph, %middle.block, %7
  %43 = icmp sgt i32 %6, 0
  br i1 %43, label %.preheader376.lr.ph, label %.preheader358

.preheader376.lr.ph:                              ; preds = %.preheader377
  %44 = icmp sgt i32 %5, 0
  %45 = icmp sgt i32 %4, 1
  %or.cond = and i1 %44, %45
  br i1 %or.cond, label %.preheader376.us.us.preheader, label %.preheader373.lr.ph

.preheader376.us.us.preheader:                    ; preds = %.preheader376.lr.ph
  %wide.trip.count571 = zext nneg i32 %4 to i64
  %46 = add nsw i64 %wide.trip.count571, -2
  %47 = mul i32 %5, %4
  %48 = mul i32 %5, %4
  %49 = shl nuw nsw i64 %wide.trip.count571, 2
  %50 = add nsw i64 %49, -4
  %scevgep788 = getelementptr i8, ptr %1, i64 %50
  %scevgep791 = getelementptr i8, ptr %1, i64 %50
  %51 = add nsw i64 %wide.trip.count571, -1
  %min.iters.check795 = icmp ult i64 %51, 12
  %52 = trunc i64 %46 to i32
  %53 = trunc i64 %46 to i32
  %54 = icmp ugt i64 %46, 4294967295
  %n.vec798 = and i64 %51, -8
  %ind.end = or disjoint i64 %n.vec798, 1
  %cmp.n807 = icmp eq i64 %51, %n.vec798
  %55 = and i64 %wide.trip.count571, 1
  %lcmp.mod1265.not.not = icmp eq i64 %55, 0
  %56 = add nsw i64 %wide.trip.count571, -1
  br label %.preheader376.us.us

.preheader376.us.us:                              ; preds = %.preheader376.us.us.preheader, %._crit_edge385.split.us.us.us
  %.0337386.us.us = phi i32 [ %126, %._crit_edge385.split.us.us.us ], [ 0, %.preheader376.us.us.preheader ]
  %57 = mul i32 %48, %.0337386.us.us
  %58 = add i32 %57, 1
  %59 = mul i32 %47, %.0337386.us.us
  %60 = add i32 %59, 1
  %factor.op.mul.reass.us.us = mul i32 %27, %.0337386.us.us
  br label %.preheader375.us.us.us

.preheader375.us.us.us:                           ; preds = %._crit_edge.us.us.us, %.preheader376.us.us
  %.0336384.us.us.us = phi i32 [ 0, %.preheader376.us.us ], [ %125, %._crit_edge.us.us.us ]
  %61 = mul i32 %.0336384.us.us.us, %4
  %62 = add i32 %58, %61
  %63 = sext i32 %62 to i64
  %64 = shl nsw i64 %63, 2
  %scevgep = getelementptr i8, ptr %1, i64 %64
  %scevgep789 = getelementptr i8, ptr %scevgep788, i64 %64
  %65 = add i32 %57, %61
  %66 = sext i32 %65 to i64
  %67 = shl nsw i64 %66, 2
  %scevgep790 = getelementptr i8, ptr %1, i64 %67
  %scevgep792 = getelementptr i8, ptr %scevgep791, i64 %67
  %68 = mul nuw nsw i32 %.0336384.us.us.us, %4
  %69 = add i32 %68, %factor.op.mul.reass.us.us
  %70 = add i32 %69, -1
  br i1 %min.iters.check795, label %scalar.ph794.preheader, label %vector.scevcheck

vector.scevcheck:                                 ; preds = %.preheader375.us.us.us
  %71 = mul i32 %.0336384.us.us.us, %4
  %72 = add i32 %59, %71
  %73 = add i32 %60, %71
  %74 = add i32 %73, %52
  %75 = icmp slt i32 %74, %73
  %76 = add i32 %72, %53
  %77 = icmp slt i32 %76, %72
  %78 = or i1 %77, %54
  %79 = or i1 %75, %78
  br i1 %79, label %scalar.ph794.preheader, label %vector.memcheck787

vector.memcheck787:                               ; preds = %vector.scevcheck
  %bound0 = icmp ult ptr %scevgep, %scevgep792
  %bound1 = icmp ult ptr %scevgep790, %scevgep789
  %found.conflict = and i1 %bound0, %bound1
  br i1 %found.conflict, label %scalar.ph794.preheader, label %vector.body800

vector.body800:                                   ; preds = %vector.memcheck787, %vector.body800
  %index801 = phi i64 [ %index.next806, %vector.body800 ], [ 0, %vector.memcheck787 ]
  %80 = trunc i64 %index801 to i32
  %81 = or disjoint i32 %80, 1
  %82 = add i32 %70, %81
  %83 = sext i32 %82 to i64
  %84 = getelementptr inbounds float, ptr %1, i64 %83
  %85 = getelementptr inbounds i8, ptr %84, i64 16
  %wide.load802 = load <4 x float>, ptr %84, align 4, !tbaa !5, !alias.scope !15
  %wide.load803 = load <4 x float>, ptr %85, align 4, !tbaa !5, !alias.scope !15
  %86 = add i32 %69, %81
  %87 = sext i32 %86 to i64
  %88 = getelementptr inbounds float, ptr %1, i64 %87
  %89 = getelementptr inbounds i8, ptr %88, i64 16
  %wide.load804 = load <4 x float>, ptr %88, align 4, !tbaa !5, !alias.scope !18, !noalias !15
  %wide.load805 = load <4 x float>, ptr %89, align 4, !tbaa !5, !alias.scope !18, !noalias !15
  %90 = fadd <4 x float> %wide.load802, %wide.load804
  %91 = fadd <4 x float> %wide.load803, %wide.load805
  store <4 x float> %90, ptr %88, align 4, !tbaa !5, !alias.scope !18, !noalias !15
  store <4 x float> %91, ptr %89, align 4, !tbaa !5, !alias.scope !18, !noalias !15
  %index.next806 = add nuw i64 %index801, 8
  %92 = icmp eq i64 %index.next806, %n.vec798
  br i1 %92, label %middle.block793, label %vector.body800, !llvm.loop !20

middle.block793:                                  ; preds = %vector.body800
  br i1 %cmp.n807, label %._crit_edge.us.us.us, label %scalar.ph794.preheader

scalar.ph794.preheader:                           ; preds = %middle.block793, %vector.memcheck787, %vector.scevcheck, %.preheader375.us.us.us
  %indvars.iv568.ph = phi i64 [ 1, %vector.memcheck787 ], [ 1, %vector.scevcheck ], [ 1, %.preheader375.us.us.us ], [ %ind.end, %middle.block793 ]
  br i1 %lcmp.mod1265.not.not, label %scalar.ph794.prol, label %scalar.ph794.prol.loopexit

scalar.ph794.prol:                                ; preds = %scalar.ph794.preheader
  %93 = trunc nuw nsw i64 %indvars.iv568.ph to i32
  %94 = add i32 %70, %93
  %95 = sext i32 %94 to i64
  %96 = getelementptr inbounds float, ptr %1, i64 %95
  %97 = load float, ptr %96, align 4, !tbaa !5
  %98 = add i32 %69, %93
  %99 = sext i32 %98 to i64
  %100 = getelementptr inbounds float, ptr %1, i64 %99
  %101 = load float, ptr %100, align 4, !tbaa !5
  %102 = fadd float %97, %101
  store float %102, ptr %100, align 4, !tbaa !5
  %indvars.iv.next569.prol = add nuw nsw i64 %indvars.iv568.ph, 1
  br label %scalar.ph794.prol.loopexit

scalar.ph794.prol.loopexit:                       ; preds = %scalar.ph794.prol, %scalar.ph794.preheader
  %indvars.iv568.unr = phi i64 [ %indvars.iv568.ph, %scalar.ph794.preheader ], [ %indvars.iv.next569.prol, %scalar.ph794.prol ]
  %103 = icmp eq i64 %indvars.iv568.ph, %56
  br i1 %103, label %._crit_edge.us.us.us, label %scalar.ph794

scalar.ph794:                                     ; preds = %scalar.ph794.prol.loopexit, %scalar.ph794
  %indvars.iv568 = phi i64 [ %indvars.iv.next569.1, %scalar.ph794 ], [ %indvars.iv568.unr, %scalar.ph794.prol.loopexit ]
  %104 = trunc nuw nsw i64 %indvars.iv568 to i32
  %105 = add i32 %70, %104
  %106 = sext i32 %105 to i64
  %107 = getelementptr inbounds float, ptr %1, i64 %106
  %108 = load float, ptr %107, align 4, !tbaa !5
  %109 = add i32 %69, %104
  %110 = sext i32 %109 to i64
  %111 = getelementptr inbounds float, ptr %1, i64 %110
  %112 = load float, ptr %111, align 4, !tbaa !5
  %113 = fadd float %108, %112
  store float %113, ptr %111, align 4, !tbaa !5
  %114 = trunc i64 %indvars.iv568 to i32
  %115 = add i32 %114, 1
  %116 = add i32 %69, %114
  %117 = sext i32 %116 to i64
  %118 = getelementptr inbounds float, ptr %1, i64 %117
  %119 = load float, ptr %118, align 4, !tbaa !5
  %120 = add i32 %69, %115
  %121 = sext i32 %120 to i64
  %122 = getelementptr inbounds float, ptr %1, i64 %121
  %123 = load float, ptr %122, align 4, !tbaa !5
  %124 = fadd float %119, %123
  store float %124, ptr %122, align 4, !tbaa !5
  %indvars.iv.next569.1 = add nuw nsw i64 %indvars.iv568, 2
  %exitcond572.not.1 = icmp eq i64 %indvars.iv.next569.1, %wide.trip.count571
  br i1 %exitcond572.not.1, label %._crit_edge.us.us.us, label %scalar.ph794, !llvm.loop !21

._crit_edge.us.us.us:                             ; preds = %scalar.ph794.prol.loopexit, %scalar.ph794, %middle.block793
  %125 = add nuw nsw i32 %.0336384.us.us.us, 1
  %exitcond573.not = icmp eq i32 %125, %5
  br i1 %exitcond573.not, label %._crit_edge385.split.us.us.us, label %.preheader375.us.us.us, !llvm.loop !22

._crit_edge385.split.us.us.us:                    ; preds = %._crit_edge.us.us.us
  %126 = add nuw nsw i32 %.0337386.us.us, 1
  %exitcond574.not = icmp eq i32 %126, %6
  br i1 %exitcond574.not, label %.preheader374, label %.preheader376.us.us, !llvm.loop !23

.lr.ph:                                           ; preds = %.lr.ph.prol.loopexit, %.lr.ph
  %indvars.iv = phi i64 [ %indvars.iv.next.3, %.lr.ph ], [ %indvars.iv.unr, %.lr.ph.prol.loopexit ]
  %127 = getelementptr inbounds float, ptr %0, i64 %indvars.iv
  %128 = load float, ptr %127, align 4, !tbaa !5
  %129 = getelementptr inbounds float, ptr %1, i64 %indvars.iv
  store float %128, ptr %129, align 4, !tbaa !5
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %130 = getelementptr inbounds float, ptr %0, i64 %indvars.iv.next
  %131 = load float, ptr %130, align 4, !tbaa !5
  %132 = getelementptr inbounds float, ptr %1, i64 %indvars.iv.next
  store float %131, ptr %132, align 4, !tbaa !5
  %indvars.iv.next.1 = add nuw nsw i64 %indvars.iv, 2
  %133 = getelementptr inbounds float, ptr %0, i64 %indvars.iv.next.1
  %134 = load float, ptr %133, align 4, !tbaa !5
  %135 = getelementptr inbounds float, ptr %1, i64 %indvars.iv.next.1
  store float %134, ptr %135, align 4, !tbaa !5
  %indvars.iv.next.2 = add nuw nsw i64 %indvars.iv, 3
  %136 = getelementptr inbounds float, ptr %0, i64 %indvars.iv.next.2
  %137 = load float, ptr %136, align 4, !tbaa !5
  %138 = getelementptr inbounds float, ptr %1, i64 %indvars.iv.next.2
  store float %137, ptr %138, align 4, !tbaa !5
  %indvars.iv.next.3 = add nuw nsw i64 %indvars.iv, 4
  %exitcond.not.3 = icmp eq i64 %indvars.iv.next.3, %wide.trip.count
  br i1 %exitcond.not.3, label %.preheader377, label %.lr.ph, !llvm.loop !24

.preheader374:                                    ; preds = %._crit_edge385.split.us.us.us
  br i1 %43, label %.preheader373.lr.ph, label %.preheader358

.preheader373.lr.ph:                              ; preds = %.preheader376.lr.ph, %.preheader374
  %139 = icmp sgt i32 %5, 0
  %.not354391 = icmp slt i32 %3, 0
  %140 = sub i32 %4, %3
  %.0331396 = add i32 %3, 1
  %141 = icmp sgt i32 %3, 0
  %142 = add nsw i32 %4, -1
  %143 = xor i32 %3, -1
  br i1 %139, label %.preheader373.lr.ph.split.us, label %.preheader365.lr.ph

.preheader373.lr.ph.split.us:                     ; preds = %.preheader373.lr.ph
  %144 = icmp slt i32 %.0331396, %140
  br i1 %144, label %.preheader373.us.us.preheader, label %.preheader373.lr.ph.split.us.split

.preheader373.us.us.preheader:                    ; preds = %.preheader373.lr.ph.split.us
  %145 = zext i32 %3 to i64
  %146 = add nuw nsw i64 %145, 1
  %147 = zext i32 %.0331396 to i64
  %148 = sext i32 %140 to i64
  %149 = sext i32 %4 to i64
  %wide.trip.count608 = zext i32 %.0331396 to i64
  %wide.trip.count631 = zext nneg i32 %5 to i64
  %wide.trip.count618 = zext i32 %.0331396 to i64
  %150 = add nsw i64 %148, 1
  %smax876 = tail call i64 @llvm.smax.i64(i64 %150, i64 %149)
  %151 = xor i64 %148, -1
  %152 = add i64 %smax876, %151
  %153 = zext i32 %140 to i64
  %154 = zext i32 %27 to i64
  %155 = zext i32 %4 to i64
  %156 = shl i32 %3, 1
  %157 = xor i32 %156, -1
  %158 = add i32 %157, %4
  %159 = zext i32 %158 to i64
  %160 = zext i32 %158 to i64
  %161 = zext i32 %27 to i64
  %162 = zext i32 %4 to i64
  %163 = mul nsw i64 %148, -4
  %scevgep881 = getelementptr i8, ptr %1, i64 %163
  %164 = add nsw i64 %148, 1
  %smax882 = tail call i64 @llvm.smax.i64(i64 %164, i64 %149)
  %165 = zext i32 %140 to i64
  %scevgep885 = getelementptr i8, ptr %2, i64 %163
  %166 = add i32 %4, -1
  %167 = zext i32 %166 to i64
  %scevgep888 = getelementptr i8, ptr %1, i64 4
  %168 = add nsw i64 %148, 1
  %smax897 = tail call i64 @llvm.smax.i64(i64 %168, i64 %149)
  %169 = sub i64 %smax897, %148
  %170 = add i32 %4, -2
  %171 = shl i32 %3, 1
  %172 = sub i32 %170, %171
  %173 = zext i32 %27 to i64
  %174 = zext i32 %4 to i64
  %175 = or disjoint i32 %171, 1
  %176 = zext i32 %175 to i64
  %177 = zext i32 %27 to i64
  %178 = zext i32 %4 to i64
  %179 = shl i32 %3, 1
  %180 = or disjoint i32 %179, 1
  %181 = zext i32 %180 to i64
  %182 = add i32 %4, -2
  %183 = sub i32 %182, %179
  %184 = zext i32 %183 to i64
  %185 = add nuw nsw i64 %184, 1
  %186 = add nsw i64 %wide.trip.count608, -1
  %187 = zext i32 %27 to i64
  %188 = zext i32 %4 to i64
  %189 = zext i32 %27 to i64
  %190 = zext i32 %4 to i64
  %191 = add i32 %4, -2
  %192 = shl i32 %3, 1
  %193 = sub i32 %191, %192
  %194 = zext i32 %27 to i64
  %195 = or disjoint i32 %192, 1
  %196 = zext i32 %27 to i64
  %197 = shl i32 %3, 1
  %198 = or disjoint i32 %197, 1
  %199 = add i32 %4, -2
  %200 = sub i32 %199, %197
  %201 = zext i32 %200 to i64
  %202 = add nuw nsw i64 %201, 1
  %203 = xor i32 %3, -1
  %204 = add i32 %203, %4
  %205 = xor i32 %3, -1
  %206 = add i32 %205, %4
  %min.iters.check964 = icmp ult i32 %200, 7
  %n.vec967 = and i64 %202, 8589934584
  %ind.end968 = add nuw nsw i64 %146, %n.vec967
  %.cast970 = trunc i64 %n.vec967 to i32
  %ind.end971 = add i32 %.cast970, %3
  %cmp.n983 = icmp eq i64 %202, %n.vec967
  %min.iters.check946 = icmp ult i32 %.0331396, 16
  %207 = trunc i64 %186 to i32
  %208 = trunc i64 %186 to i32
  %209 = icmp ugt i64 %186, 4294967295
  %n.vec949 = and i64 %wide.trip.count608, 4294967288
  %cmp.n956 = icmp eq i64 %n.vec949, %wide.trip.count608
  %xtraiter1276 = and i64 %wide.trip.count608, 1
  %lcmp.mod1277.not = icmp eq i64 %xtraiter1276, 0
  %210 = add nsw i64 %wide.trip.count608, -1
  %min.iters.check922 = icmp ult i32 %183, 7
  %n.vec925 = and i64 %185, 8589934584
  %ind.end926 = add nuw nsw i64 %n.vec925, %147
  %.cast = trunc i64 %n.vec925 to i32
  %ind.end928 = add i32 %.cast, %3
  %cmp.n940 = icmp eq i64 %185, %n.vec925
  %min.iters.check900 = icmp ult i64 %169, 12
  %211 = trunc i64 %152 to i32
  %212 = trunc i64 %152 to i32
  %213 = icmp ugt i64 %152, 4294967295
  %n.vec903 = and i64 %169, -8
  %ind.end904 = add i64 %n.vec903, %148
  %cmp.n914 = icmp eq i64 %169, %n.vec903
  br label %.preheader373.us.us

.preheader373.us.us:                              ; preds = %.preheader373.us.us.preheader, %._crit_edge407.split.us.us.us
  %indvar877 = phi i64 [ 0, %.preheader373.us.us.preheader ], [ %indvar.next878, %._crit_edge407.split.us.us.us ]
  %.0334421.us.us = phi i32 [ 0, %.preheader373.us.us.preheader ], [ %538, %._crit_edge407.split.us.us.us ]
  %214 = mul i64 %indvar877, %196
  %215 = trunc i64 %214 to i32
  %216 = add i32 %.0331396, %215
  %217 = trunc i64 %214 to i32
  %218 = trunc i64 %214 to i32
  %219 = add i32 %198, %218
  %220 = mul i64 %indvar877, %194
  %221 = trunc i64 %220 to i32
  %222 = add i32 %.0331396, %221
  %223 = trunc i64 %220 to i32
  %224 = add i32 %195, %223
  %225 = trunc i64 %220 to i32
  %226 = mul i64 %indvar877, %189
  %227 = add i64 %226, %145
  %228 = mul i64 %indvar877, %187
  %229 = add i64 %228, %145
  %230 = mul i64 %indvar877, %177
  %231 = add i64 %230, %wide.trip.count608
  %232 = add i64 %230, %181
  %233 = mul i64 %indvar877, %173
  %234 = add i64 %233, %wide.trip.count608
  %235 = add i64 %233, %176
  %236 = mul i64 %indvar877, %161
  %237 = add i64 %236, %160
  %238 = add i64 %236, %165
  %239 = add i64 %236, %167
  %240 = mul i64 %indvar877, %154
  %241 = add i64 %240, %153
  %242 = add i64 %240, %159
  %factor.op.mul.reass.us.us433 = mul i32 %27, %.0334421.us.us
  %243 = add i32 %142, %factor.op.mul.reass.us.us433
  br i1 %141, label %.preheader372.us.us.us.us, label %.preheader372.us.us.us

.preheader372.us.us.us.us:                        ; preds = %.preheader373.us.us, %._crit_edge.us.us.us434.us
  %indvars.iv628 = phi i64 [ %indvars.iv.next629, %._crit_edge.us.us.us434.us ], [ 0, %.preheader373.us.us ]
  %244 = mul i64 %indvars.iv628, %190
  %245 = add i64 %226, %244
  %sext1218 = shl i64 %245, 32
  %246 = ashr exact i64 %sext1218, 30
  %247 = add i64 %227, %244
  %sext1219 = shl i64 %247, 32
  %248 = ashr exact i64 %sext1219, 30
  %249 = add i64 %246, %20
  %250 = add i64 %248, %19
  %251 = sub i64 %249, %250
  %252 = mul i64 %indvars.iv628, %188
  %253 = add i64 %228, %252
  %254 = trunc i64 %253 to i32
  %255 = add i64 %229, %252
  %256 = trunc i64 %255 to i32
  %257 = mul i64 %indvars.iv628, %178
  %258 = add i64 %231, %257
  %sext1220 = shl i64 %258, 32
  %259 = ashr exact i64 %sext1220, 30
  %260 = add i64 %230, %257
  %sext1221 = shl i64 %260, 32
  %261 = ashr exact i64 %sext1221, 30
  %262 = add i64 %259, %22
  %263 = add i64 %261, %21
  %264 = sub i64 %262, %263
  %265 = add i64 %232, %257
  %sext1222 = shl i64 %265, 32
  %266 = ashr exact i64 %sext1222, 30
  %267 = add i64 %259, %22
  %268 = add i64 %266, %21
  %269 = sub i64 %267, %268
  %270 = mul i64 %indvars.iv628, %174
  %271 = add i64 %234, %270
  %272 = trunc i64 %271 to i32
  %273 = add i64 %235, %270
  %274 = trunc i64 %273 to i32
  %275 = add i64 %233, %270
  %276 = trunc i64 %275 to i32
  %277 = mul i64 %indvars.iv628, %162
  %278 = add i64 %237, %277
  %sext1223 = shl i64 %278, 32
  %279 = ashr exact i64 %sext1223, 32
  %280 = ashr exact i64 %sext1223, 30
  %scevgep880 = getelementptr i8, ptr %1, i64 %280
  %281 = add i64 %smax882, %279
  %282 = shl nsw i64 %281, 2
  %scevgep883 = getelementptr i8, ptr %scevgep881, i64 %282
  %283 = add i64 %238, %277
  %sext1224 = shl i64 %283, 32
  %284 = ashr exact i64 %sext1224, 32
  %285 = ashr exact i64 %sext1224, 30
  %scevgep884 = getelementptr i8, ptr %2, i64 %285
  %286 = add i64 %smax882, %284
  %287 = shl nsw i64 %286, 2
  %scevgep886 = getelementptr i8, ptr %scevgep885, i64 %287
  %288 = add i64 %239, %277
  %sext1225 = shl i64 %288, 32
  %289 = ashr exact i64 %sext1225, 30
  %scevgep887 = getelementptr i8, ptr %1, i64 %289
  %scevgep889 = getelementptr i8, ptr %scevgep888, i64 %289
  %290 = mul i64 %indvars.iv628, %155
  %291 = add i64 %241, %290
  %292 = trunc i64 %291 to i32
  %293 = add i64 %242, %290
  %294 = trunc i64 %293 to i32
  %295 = trunc i64 %indvars.iv628 to i32
  %.pre736 = mul i32 %295, %4
  %.pre738 = add i32 %.pre736, %factor.op.mul.reass.us.us433
  %.pre740 = add i32 %.pre738, %3
  br i1 %.not354391, label %.preheader371.us.us.us.us, label %.lr.ph393.us.us.us.us.preheader

.lr.ph393.us.us.us.us.preheader:                  ; preds = %.preheader372.us.us.us.us
  br i1 %min.iters.check946, label %.lr.ph393.us.us.us.us.preheader1259, label %vector.scevcheck941

vector.scevcheck941:                              ; preds = %.lr.ph393.us.us.us.us.preheader
  %296 = add i32 %254, %207
  %297 = icmp slt i32 %296, %254
  %298 = add i32 %256, %208
  %299 = icmp slt i32 %298, %256
  %300 = or i1 %299, %209
  %301 = or i1 %297, %300
  %diff.check943 = icmp ult i64 %251, 32
  %or.cond1242 = select i1 %301, i1 true, i1 %diff.check943
  br i1 %or.cond1242, label %.lr.ph393.us.us.us.us.preheader1259, label %vector.body951

vector.body951:                                   ; preds = %vector.scevcheck941, %vector.body951
  %index952 = phi i64 [ %index.next955, %vector.body951 ], [ 0, %vector.scevcheck941 ]
  %302 = trunc i64 %index952 to i32
  %303 = add i32 %.pre740, %302
  %304 = sext i32 %303 to i64
  %305 = getelementptr inbounds float, ptr %1, i64 %304
  %306 = getelementptr inbounds i8, ptr %305, i64 16
  %wide.load953 = load <4 x float>, ptr %305, align 4, !tbaa !5
  %wide.load954 = load <4 x float>, ptr %306, align 4, !tbaa !5
  %307 = add i32 %.pre738, %302
  %308 = sext i32 %307 to i64
  %309 = getelementptr inbounds float, ptr %2, i64 %308
  %310 = getelementptr inbounds i8, ptr %309, i64 16
  store <4 x float> %wide.load953, ptr %309, align 4, !tbaa !5
  store <4 x float> %wide.load954, ptr %310, align 4, !tbaa !5
  %index.next955 = add nuw i64 %index952, 8
  %311 = icmp eq i64 %index.next955, %n.vec949
  br i1 %311, label %middle.block944, label %vector.body951, !llvm.loop !25

middle.block944:                                  ; preds = %vector.body951
  br i1 %cmp.n956, label %.preheader371.us.us.us.us, label %.lr.ph393.us.us.us.us.preheader1259

.lr.ph393.us.us.us.us.preheader1259:              ; preds = %middle.block944, %vector.scevcheck941, %.lr.ph393.us.us.us.us.preheader
  %indvars.iv615.ph = phi i64 [ 0, %vector.scevcheck941 ], [ 0, %.lr.ph393.us.us.us.us.preheader ], [ %n.vec949, %middle.block944 ]
  br i1 %lcmp.mod1277.not, label %.lr.ph393.us.us.us.us.prol.loopexit, label %.lr.ph393.us.us.us.us.prol

.lr.ph393.us.us.us.us.prol:                       ; preds = %.lr.ph393.us.us.us.us.preheader1259
  %312 = trunc nuw nsw i64 %indvars.iv615.ph to i32
  %313 = add i32 %.pre740, %312
  %314 = sext i32 %313 to i64
  %315 = getelementptr inbounds float, ptr %1, i64 %314
  %316 = load float, ptr %315, align 4, !tbaa !5
  %317 = add i32 %.pre738, %312
  %318 = sext i32 %317 to i64
  %319 = getelementptr inbounds float, ptr %2, i64 %318
  store float %316, ptr %319, align 4, !tbaa !5
  %indvars.iv.next616.prol = or disjoint i64 %indvars.iv615.ph, 1
  br label %.lr.ph393.us.us.us.us.prol.loopexit

.lr.ph393.us.us.us.us.prol.loopexit:              ; preds = %.lr.ph393.us.us.us.us.prol, %.lr.ph393.us.us.us.us.preheader1259
  %indvars.iv615.unr = phi i64 [ %indvars.iv615.ph, %.lr.ph393.us.us.us.us.preheader1259 ], [ %indvars.iv.next616.prol, %.lr.ph393.us.us.us.us.prol ]
  %320 = icmp eq i64 %indvars.iv615.ph, %210
  br i1 %320, label %.preheader371.us.us.us.us, label %.lr.ph393.us.us.us.us

.lr.ph393.us.us.us.us:                            ; preds = %.lr.ph393.us.us.us.us.prol.loopexit, %.lr.ph393.us.us.us.us
  %indvars.iv615 = phi i64 [ %indvars.iv.next616.1, %.lr.ph393.us.us.us.us ], [ %indvars.iv615.unr, %.lr.ph393.us.us.us.us.prol.loopexit ]
  %321 = trunc nuw nsw i64 %indvars.iv615 to i32
  %322 = add i32 %.pre740, %321
  %323 = sext i32 %322 to i64
  %324 = getelementptr inbounds float, ptr %1, i64 %323
  %325 = load float, ptr %324, align 4, !tbaa !5
  %326 = add i32 %.pre738, %321
  %327 = sext i32 %326 to i64
  %328 = getelementptr inbounds float, ptr %2, i64 %327
  store float %325, ptr %328, align 4, !tbaa !5
  %329 = trunc i64 %indvars.iv615 to i32
  %330 = add i32 %329, 1
  %331 = add i32 %.pre740, %330
  %332 = sext i32 %331 to i64
  %333 = getelementptr inbounds float, ptr %1, i64 %332
  %334 = load float, ptr %333, align 4, !tbaa !5
  %335 = add i32 %.pre738, %330
  %336 = sext i32 %335 to i64
  %337 = getelementptr inbounds float, ptr %2, i64 %336
  store float %334, ptr %337, align 4, !tbaa !5
  %indvars.iv.next616.1 = add nuw nsw i64 %indvars.iv615, 2
  %exitcond619.not.1 = icmp eq i64 %indvars.iv.next616.1, %wide.trip.count618
  br i1 %exitcond619.not.1, label %.preheader371.us.us.us.us, label %.lr.ph393.us.us.us.us, !llvm.loop !26

scalar.ph899:                                     ; preds = %scalar.ph899.preheader, %scalar.ph899
  %indvars.iv625 = phi i64 [ %indvars.iv.next626, %scalar.ph899 ], [ %indvars.iv625.ph, %scalar.ph899.preheader ]
  %338 = load float, ptr %421, align 4, !tbaa !5
  %339 = trunc nsw i64 %indvars.iv625 to i32
  %340 = add i32 %422, %339
  %341 = sext i32 %340 to i64
  %342 = getelementptr inbounds float, ptr %1, i64 %341
  %343 = load float, ptr %342, align 4, !tbaa !5
  %344 = fsub float %338, %343
  %345 = add i32 %.pre738, %339
  %346 = sext i32 %345 to i64
  %347 = getelementptr inbounds float, ptr %2, i64 %346
  store float %344, ptr %347, align 4, !tbaa !5
  %indvars.iv.next626 = add nsw i64 %indvars.iv625, 1
  %348 = icmp slt i64 %indvars.iv.next626, %149
  br i1 %348, label %scalar.ph899, label %._crit_edge.us.us.us434.us, !llvm.loop !27

scalar.ph921:                                     ; preds = %scalar.ph921.prol.loopexit, %scalar.ph921
  %indvars.iv620 = phi i64 [ %indvars.iv.next621.1, %scalar.ph921 ], [ %indvars.iv620.unr, %scalar.ph921.prol.loopexit ]
  %.0331.in397.us.us.us.us = phi i32 [ %363, %scalar.ph921 ], [ %.0331.in397.us.us.us.us.unr, %scalar.ph921.prol.loopexit ]
  %349 = trunc i64 %indvars.iv620 to i32
  %350 = add i32 %.pre740, %349
  %351 = sext i32 %350 to i64
  %352 = getelementptr inbounds float, ptr %1, i64 %351
  %353 = load float, ptr %352, align 4, !tbaa !5
  %354 = add i32 %376, %.0331.in397.us.us.us.us
  %355 = sext i32 %354 to i64
  %356 = getelementptr inbounds float, ptr %1, i64 %355
  %357 = load float, ptr %356, align 4, !tbaa !5
  %358 = fsub float %353, %357
  %359 = add i32 %.pre738, %349
  %360 = sext i32 %359 to i64
  %361 = getelementptr inbounds float, ptr %2, i64 %360
  store float %358, ptr %361, align 4, !tbaa !5
  %362 = trunc i64 %indvars.iv620 to i32
  %363 = add i32 %362, 1
  %364 = add i32 %.pre740, %363
  %365 = sext i32 %364 to i64
  %366 = getelementptr inbounds float, ptr %1, i64 %365
  %367 = load float, ptr %366, align 4, !tbaa !5
  %368 = add i32 %376, %349
  %369 = sext i32 %368 to i64
  %370 = getelementptr inbounds float, ptr %1, i64 %369
  %371 = load float, ptr %370, align 4, !tbaa !5
  %372 = fsub float %367, %371
  %373 = add i32 %.pre738, %363
  %374 = sext i32 %373 to i64
  %375 = getelementptr inbounds float, ptr %2, i64 %374
  store float %372, ptr %375, align 4, !tbaa !5
  %indvars.iv.next621.1 = add nuw nsw i64 %indvars.iv620, 2
  %lftr.wideiv623.1 = trunc i64 %indvars.iv.next621.1 to i32
  %exitcond624.not.1 = icmp eq i32 %140, %lftr.wideiv623.1
  br i1 %exitcond624.not.1, label %..preheader370_crit_edge.us.us.us.us, label %scalar.ph921, !llvm.loop !28

.preheader371.us.us.us.us:                        ; preds = %.lr.ph393.us.us.us.us.prol.loopexit, %.lr.ph393.us.us.us.us, %middle.block944, %.preheader372.us.us.us.us
  %376 = sub i32 %.pre738, %3
  br i1 %min.iters.check922, label %scalar.ph921.preheader, label %vector.scevcheck915

scalar.ph921.preheader:                           ; preds = %middle.block920, %vector.memcheck916, %vector.scevcheck915, %.preheader371.us.us.us.us
  %indvars.iv620.ph = phi i64 [ %147, %vector.memcheck916 ], [ %147, %vector.scevcheck915 ], [ %147, %.preheader371.us.us.us.us ], [ %ind.end926, %middle.block920 ]
  %.0331.in397.us.us.us.us.ph = phi i32 [ %3, %vector.memcheck916 ], [ %3, %vector.scevcheck915 ], [ %3, %.preheader371.us.us.us.us ], [ %ind.end928, %middle.block920 ]
  %377 = trunc i64 %indvars.iv620.ph to i32
  %378 = add i32 %377, %3
  %379 = sub i32 %4, %378
  %xtraiter1279 = and i32 %379, 1
  %lcmp.mod1280.not = icmp eq i32 %xtraiter1279, 0
  br i1 %lcmp.mod1280.not, label %scalar.ph921.prol.loopexit, label %scalar.ph921.prol

scalar.ph921.prol:                                ; preds = %scalar.ph921.preheader
  %380 = trunc i64 %indvars.iv620.ph to i32
  %381 = add i32 %.pre740, %380
  %382 = sext i32 %381 to i64
  %383 = getelementptr inbounds float, ptr %1, i64 %382
  %384 = load float, ptr %383, align 4, !tbaa !5
  %385 = add i32 %376, %.0331.in397.us.us.us.us.ph
  %386 = sext i32 %385 to i64
  %387 = getelementptr inbounds float, ptr %1, i64 %386
  %388 = load float, ptr %387, align 4, !tbaa !5
  %389 = fsub float %384, %388
  %390 = add i32 %.pre738, %380
  %391 = sext i32 %390 to i64
  %392 = getelementptr inbounds float, ptr %2, i64 %391
  store float %389, ptr %392, align 4, !tbaa !5
  %indvars.iv.next621.prol = add nsw i64 %indvars.iv620.ph, 1
  br label %scalar.ph921.prol.loopexit

scalar.ph921.prol.loopexit:                       ; preds = %scalar.ph921.prol, %scalar.ph921.preheader
  %indvars.iv620.unr = phi i64 [ %indvars.iv620.ph, %scalar.ph921.preheader ], [ %indvars.iv.next621.prol, %scalar.ph921.prol ]
  %.0331.in397.us.us.us.us.unr = phi i32 [ %.0331.in397.us.us.us.us.ph, %scalar.ph921.preheader ], [ %380, %scalar.ph921.prol ]
  %393 = icmp eq i32 %206, %377
  br i1 %393, label %..preheader370_crit_edge.us.us.us.us, label %scalar.ph921

vector.scevcheck915:                              ; preds = %.preheader371.us.us.us.us
  %394 = add i32 %172, %272
  %395 = icmp slt i32 %394, %272
  %396 = add i32 %172, %274
  %397 = icmp slt i32 %396, %274
  %398 = add i32 %172, %276
  %399 = icmp slt i32 %398, %276
  %400 = or i1 %395, %397
  %401 = or i1 %400, %399
  br i1 %401, label %scalar.ph921.preheader, label %vector.memcheck916

vector.memcheck916:                               ; preds = %vector.scevcheck915
  %diff.check917 = icmp ult i64 %264, 32
  %diff.check918 = icmp ult i64 %269, 32
  %conflict.rdx919 = or i1 %diff.check917, %diff.check918
  br i1 %conflict.rdx919, label %scalar.ph921.preheader, label %vector.body930

vector.body930:                                   ; preds = %vector.memcheck916, %vector.body930
  %index931 = phi i64 [ %index.next939, %vector.body930 ], [ 0, %vector.memcheck916 ]
  %.cast932 = trunc i64 %index931 to i32
  %402 = trunc i64 %index931 to i32
  %403 = add i32 %.0331396, %402
  %404 = add i32 %.pre740, %403
  %405 = sext i32 %404 to i64
  %406 = getelementptr inbounds float, ptr %1, i64 %405
  %407 = getelementptr inbounds i8, ptr %406, i64 16
  %wide.load935 = load <4 x float>, ptr %406, align 4, !tbaa !5
  %wide.load936 = load <4 x float>, ptr %407, align 4, !tbaa !5
  %408 = add i32 %.pre738, %.cast932
  %409 = sext i32 %408 to i64
  %410 = getelementptr inbounds float, ptr %1, i64 %409
  %411 = getelementptr inbounds i8, ptr %410, i64 16
  %wide.load937 = load <4 x float>, ptr %410, align 4, !tbaa !5
  %wide.load938 = load <4 x float>, ptr %411, align 4, !tbaa !5
  %412 = fsub <4 x float> %wide.load935, %wide.load937
  %413 = fsub <4 x float> %wide.load936, %wide.load938
  %414 = add i32 %.pre738, %403
  %415 = sext i32 %414 to i64
  %416 = getelementptr inbounds float, ptr %2, i64 %415
  %417 = getelementptr inbounds i8, ptr %416, i64 16
  store <4 x float> %412, ptr %416, align 4, !tbaa !5
  store <4 x float> %413, ptr %417, align 4, !tbaa !5
  %index.next939 = add nuw i64 %index931, 8
  %418 = icmp eq i64 %index.next939, %n.vec925
  br i1 %418, label %middle.block920, label %vector.body930, !llvm.loop !29

middle.block920:                                  ; preds = %vector.body930
  br i1 %cmp.n940, label %..preheader370_crit_edge.us.us.us.us, label %scalar.ph921.preheader

..preheader370_crit_edge.us.us.us.us:             ; preds = %scalar.ph921.prol.loopexit, %scalar.ph921, %middle.block920
  %419 = add i32 %243, %.pre736
  %420 = sext i32 %419 to i64
  %421 = getelementptr inbounds float, ptr %1, i64 %420
  %422 = add i32 %.pre738, %143
  br i1 %min.iters.check900, label %scalar.ph899.preheader, label %vector.scevcheck875

scalar.ph899.preheader:                           ; preds = %middle.block898, %vector.memcheck879, %vector.scevcheck875, %..preheader370_crit_edge.us.us.us.us
  %indvars.iv625.ph = phi i64 [ %148, %vector.memcheck879 ], [ %148, %vector.scevcheck875 ], [ %148, %..preheader370_crit_edge.us.us.us.us ], [ %ind.end904, %middle.block898 ]
  br label %scalar.ph899

vector.scevcheck875:                              ; preds = %..preheader370_crit_edge.us.us.us.us
  %423 = add i32 %292, %211
  %424 = icmp slt i32 %423, %292
  %425 = add i32 %294, %212
  %426 = icmp slt i32 %425, %294
  %427 = or i1 %426, %213
  %428 = or i1 %424, %427
  br i1 %428, label %scalar.ph899.preheader, label %vector.memcheck879

vector.memcheck879:                               ; preds = %vector.scevcheck875
  %bound0890 = icmp ult ptr %scevgep880, %scevgep886
  %bound1891 = icmp ult ptr %scevgep884, %scevgep883
  %found.conflict892 = and i1 %bound0890, %bound1891
  %bound0893 = icmp ult ptr %scevgep887, %scevgep886
  %bound1894 = icmp ult ptr %scevgep884, %scevgep889
  %found.conflict895 = and i1 %bound0893, %bound1894
  %conflict.rdx896 = or i1 %found.conflict892, %found.conflict895
  br i1 %conflict.rdx896, label %scalar.ph899.preheader, label %vector.ph901

vector.ph901:                                     ; preds = %vector.memcheck879
  %429 = load float, ptr %421, align 4, !tbaa !5, !alias.scope !30, !noalias !33
  %broadcast.splatinsert911 = insertelement <4 x float> poison, float %429, i64 0
  %broadcast.splat912 = shufflevector <4 x float> %broadcast.splatinsert911, <4 x float> poison, <4 x i32> zeroinitializer
  br label %vector.body906

vector.body906:                                   ; preds = %vector.body906, %vector.ph901
  %index907 = phi i64 [ 0, %vector.ph901 ], [ %index.next913, %vector.body906 ]
  %430 = trunc i64 %index907 to i32
  %431 = add i32 %140, %430
  %432 = add i32 %422, %431
  %433 = sext i32 %432 to i64
  %434 = getelementptr inbounds float, ptr %1, i64 %433
  %435 = getelementptr inbounds i8, ptr %434, i64 16
  %wide.load909 = load <4 x float>, ptr %434, align 4, !tbaa !5, !alias.scope !35, !noalias !33
  %wide.load910 = load <4 x float>, ptr %435, align 4, !tbaa !5, !alias.scope !35, !noalias !33
  %436 = fsub <4 x float> %broadcast.splat912, %wide.load909
  %437 = fsub <4 x float> %broadcast.splat912, %wide.load910
  %438 = add i32 %.pre738, %431
  %439 = sext i32 %438 to i64
  %440 = getelementptr inbounds float, ptr %2, i64 %439
  %441 = getelementptr inbounds i8, ptr %440, i64 16
  store <4 x float> %436, ptr %440, align 4, !tbaa !5, !alias.scope !33
  store <4 x float> %437, ptr %441, align 4, !tbaa !5, !alias.scope !33
  %index.next913 = add nuw i64 %index907, 8
  %442 = icmp eq i64 %index.next913, %n.vec903
  br i1 %442, label %middle.block898, label %vector.body906, !llvm.loop !37

middle.block898:                                  ; preds = %vector.body906
  br i1 %cmp.n914, label %._crit_edge.us.us.us434.us, label %scalar.ph899.preheader

._crit_edge.us.us.us434.us:                       ; preds = %scalar.ph899, %middle.block898
  %indvars.iv.next629 = add nuw nsw i64 %indvars.iv628, 1
  %exitcond632.not = icmp eq i64 %indvars.iv.next629, %wide.trip.count631
  br i1 %exitcond632.not, label %._crit_edge407.split.us.us.us, label %.preheader372.us.us.us.us, !llvm.loop !38

.preheader372.us.us.us:                           ; preds = %.preheader373.us.us, %..preheader370_crit_edge.us.us.us
  %.0333406.us.us.us = phi i32 [ %537, %..preheader370_crit_edge.us.us.us ], [ 0, %.preheader373.us.us ]
  %443 = mul i32 %.0333406.us.us.us, %4
  %444 = add i32 %216, %443
  %445 = sext i32 %444 to i64
  %446 = shl nsw i64 %445, 2
  %447 = add i32 %443, %217
  %448 = sext i32 %447 to i64
  %449 = shl nsw i64 %448, 2
  %450 = add i64 %446, %18
  %451 = add i64 %449, %17
  %452 = sub i64 %450, %451
  %453 = add i32 %219, %443
  %454 = sext i32 %453 to i64
  %455 = shl nsw i64 %454, 2
  %456 = add i64 %446, %18
  %457 = add i64 %455, %17
  %458 = sub i64 %456, %457
  %459 = mul i32 %.0333406.us.us.us, %4
  %460 = add i32 %222, %459
  %461 = add i32 %224, %459
  %462 = add i32 %459, %225
  %.pre754 = mul nsw i32 %.0333406.us.us.us, %4
  %.pre756 = add i32 %.pre754, %factor.op.mul.reass.us.us433
  %.pre758 = add i32 %.pre756, %3
  br i1 %.not354391, label %.preheader371.us.us.us, label %.lr.ph393.us.us.us

.lr.ph393.us.us.us:                               ; preds = %.preheader372.us.us.us
  %463 = sext i32 %.pre758 to i64
  %464 = getelementptr inbounds float, ptr %1, i64 %463
  %465 = load float, ptr %464, align 4, !tbaa !5
  %466 = sext i32 %.pre756 to i64
  %467 = getelementptr inbounds float, ptr %2, i64 %466
  store float %465, ptr %467, align 4, !tbaa !5
  br label %.preheader371.us.us.us

scalar.ph963:                                     ; preds = %scalar.ph963.prol.loopexit, %scalar.ph963
  %indvars.iv610 = phi i64 [ %indvars.iv.next611.1, %scalar.ph963 ], [ %indvars.iv610.unr, %scalar.ph963.prol.loopexit ]
  %.0331.in397.us.us.us = phi i32 [ %482, %scalar.ph963 ], [ %.0331.in397.us.us.us.unr, %scalar.ph963.prol.loopexit ]
  %468 = trunc i64 %indvars.iv610 to i32
  %469 = add i32 %.pre758, %468
  %470 = sext i32 %469 to i64
  %471 = getelementptr inbounds float, ptr %1, i64 %470
  %472 = load float, ptr %471, align 4, !tbaa !5
  %473 = add i32 %495, %.0331.in397.us.us.us
  %474 = sext i32 %473 to i64
  %475 = getelementptr inbounds float, ptr %1, i64 %474
  %476 = load float, ptr %475, align 4, !tbaa !5
  %477 = fsub float %472, %476
  %478 = add i32 %.pre756, %468
  %479 = sext i32 %478 to i64
  %480 = getelementptr inbounds float, ptr %2, i64 %479
  store float %477, ptr %480, align 4, !tbaa !5
  %481 = trunc i64 %indvars.iv610 to i32
  %482 = add i32 %481, 1
  %483 = add i32 %.pre758, %482
  %484 = sext i32 %483 to i64
  %485 = getelementptr inbounds float, ptr %1, i64 %484
  %486 = load float, ptr %485, align 4, !tbaa !5
  %487 = add i32 %495, %468
  %488 = sext i32 %487 to i64
  %489 = getelementptr inbounds float, ptr %1, i64 %488
  %490 = load float, ptr %489, align 4, !tbaa !5
  %491 = fsub float %486, %490
  %492 = add i32 %.pre756, %482
  %493 = sext i32 %492 to i64
  %494 = getelementptr inbounds float, ptr %2, i64 %493
  store float %491, ptr %494, align 4, !tbaa !5
  %indvars.iv.next611.1 = add nuw nsw i64 %indvars.iv610, 2
  %lftr.wideiv.1 = trunc i64 %indvars.iv.next611.1 to i32
  %exitcond613.not.1 = icmp eq i32 %140, %lftr.wideiv.1
  br i1 %exitcond613.not.1, label %..preheader370_crit_edge.us.us.us, label %scalar.ph963, !llvm.loop !39

.preheader371.us.us.us:                           ; preds = %.lr.ph393.us.us.us, %.preheader372.us.us.us
  %495 = sub i32 %.pre756, %3
  br i1 %min.iters.check964, label %scalar.ph963.preheader, label %vector.scevcheck957

scalar.ph963.preheader:                           ; preds = %middle.block962, %vector.memcheck958, %vector.scevcheck957, %.preheader371.us.us.us
  %indvars.iv610.ph = phi i64 [ %146, %vector.memcheck958 ], [ %146, %vector.scevcheck957 ], [ %146, %.preheader371.us.us.us ], [ %ind.end968, %middle.block962 ]
  %.0331.in397.us.us.us.ph = phi i32 [ %3, %vector.memcheck958 ], [ %3, %vector.scevcheck957 ], [ %3, %.preheader371.us.us.us ], [ %ind.end971, %middle.block962 ]
  %496 = trunc i64 %indvars.iv610.ph to i32
  %497 = add i32 %496, %3
  %498 = sub i32 %4, %497
  %xtraiter1273 = and i32 %498, 1
  %lcmp.mod1274.not = icmp eq i32 %xtraiter1273, 0
  br i1 %lcmp.mod1274.not, label %scalar.ph963.prol.loopexit, label %scalar.ph963.prol

scalar.ph963.prol:                                ; preds = %scalar.ph963.preheader
  %499 = trunc i64 %indvars.iv610.ph to i32
  %500 = add i32 %.pre758, %499
  %501 = sext i32 %500 to i64
  %502 = getelementptr inbounds float, ptr %1, i64 %501
  %503 = load float, ptr %502, align 4, !tbaa !5
  %504 = add i32 %495, %.0331.in397.us.us.us.ph
  %505 = sext i32 %504 to i64
  %506 = getelementptr inbounds float, ptr %1, i64 %505
  %507 = load float, ptr %506, align 4, !tbaa !5
  %508 = fsub float %503, %507
  %509 = add i32 %.pre756, %499
  %510 = sext i32 %509 to i64
  %511 = getelementptr inbounds float, ptr %2, i64 %510
  store float %508, ptr %511, align 4, !tbaa !5
  %indvars.iv.next611.prol = add nsw i64 %indvars.iv610.ph, 1
  br label %scalar.ph963.prol.loopexit

scalar.ph963.prol.loopexit:                       ; preds = %scalar.ph963.prol, %scalar.ph963.preheader
  %indvars.iv610.unr = phi i64 [ %indvars.iv610.ph, %scalar.ph963.preheader ], [ %indvars.iv.next611.prol, %scalar.ph963.prol ]
  %.0331.in397.us.us.us.unr = phi i32 [ %.0331.in397.us.us.us.ph, %scalar.ph963.preheader ], [ %499, %scalar.ph963.prol ]
  %512 = icmp eq i32 %204, %496
  br i1 %512, label %..preheader370_crit_edge.us.us.us, label %scalar.ph963

vector.scevcheck957:                              ; preds = %.preheader371.us.us.us
  %513 = add i32 %460, %193
  %514 = icmp slt i32 %513, %460
  %515 = add i32 %461, %193
  %516 = icmp slt i32 %515, %461
  %517 = add i32 %462, %193
  %518 = icmp slt i32 %517, %462
  %519 = or i1 %514, %516
  %520 = or i1 %519, %518
  br i1 %520, label %scalar.ph963.preheader, label %vector.memcheck958

vector.memcheck958:                               ; preds = %vector.scevcheck957
  %diff.check959 = icmp ult i64 %452, 32
  %diff.check960 = icmp ult i64 %458, 32
  %conflict.rdx961 = or i1 %diff.check959, %diff.check960
  br i1 %conflict.rdx961, label %scalar.ph963.preheader, label %vector.body973

vector.body973:                                   ; preds = %vector.memcheck958, %vector.body973
  %index974 = phi i64 [ %index.next982, %vector.body973 ], [ 0, %vector.memcheck958 ]
  %.cast975 = trunc i64 %index974 to i32
  %offset.idx977 = add i64 %146, %index974
  %521 = trunc i64 %offset.idx977 to i32
  %522 = add i32 %.pre758, %521
  %523 = sext i32 %522 to i64
  %524 = getelementptr inbounds float, ptr %1, i64 %523
  %525 = getelementptr inbounds i8, ptr %524, i64 16
  %wide.load978 = load <4 x float>, ptr %524, align 4, !tbaa !5
  %wide.load979 = load <4 x float>, ptr %525, align 4, !tbaa !5
  %526 = add i32 %.pre756, %.cast975
  %527 = sext i32 %526 to i64
  %528 = getelementptr inbounds float, ptr %1, i64 %527
  %529 = getelementptr inbounds i8, ptr %528, i64 16
  %wide.load980 = load <4 x float>, ptr %528, align 4, !tbaa !5
  %wide.load981 = load <4 x float>, ptr %529, align 4, !tbaa !5
  %530 = fsub <4 x float> %wide.load978, %wide.load980
  %531 = fsub <4 x float> %wide.load979, %wide.load981
  %532 = add i32 %.pre756, %521
  %533 = sext i32 %532 to i64
  %534 = getelementptr inbounds float, ptr %2, i64 %533
  %535 = getelementptr inbounds i8, ptr %534, i64 16
  store <4 x float> %530, ptr %534, align 4, !tbaa !5
  store <4 x float> %531, ptr %535, align 4, !tbaa !5
  %index.next982 = add nuw i64 %index974, 8
  %536 = icmp eq i64 %index.next982, %n.vec967
  br i1 %536, label %middle.block962, label %vector.body973, !llvm.loop !40

middle.block962:                                  ; preds = %vector.body973
  br i1 %cmp.n983, label %..preheader370_crit_edge.us.us.us, label %scalar.ph963.preheader

..preheader370_crit_edge.us.us.us:                ; preds = %scalar.ph963.prol.loopexit, %scalar.ph963, %middle.block962
  %537 = add nuw nsw i32 %.0333406.us.us.us, 1
  %exitcond614.not = icmp eq i32 %537, %5
  br i1 %exitcond614.not, label %._crit_edge407.split.us.us.us, label %.preheader372.us.us.us, !llvm.loop !38

._crit_edge407.split.us.us.us:                    ; preds = %..preheader370_crit_edge.us.us.us, %._crit_edge.us.us.us434.us
  %538 = add nuw nsw i32 %.0334421.us.us, 1
  %exitcond633.not = icmp eq i32 %538, %6
  %indvar.next878 = add i64 %indvar877, 1
  br i1 %exitcond633.not, label %.preheader369, label %.preheader373.us.us, !llvm.loop !41

.preheader373.lr.ph.split.us.split:               ; preds = %.preheader373.lr.ph.split.us
  br i1 %141, label %.preheader373.us.us435.preheader, label %.preheader373.lr.ph.split.us.split.split

.preheader373.us.us435.preheader:                 ; preds = %.preheader373.lr.ph.split.us.split
  %539 = sext i32 %140 to i64
  %540 = sext i32 %4 to i64
  %wide.trip.count593 = zext nneg i32 %5 to i64
  %wide.trip.count585 = zext i32 %.0331396 to i64
  %541 = add nsw i64 %539, 1
  %smax = tail call i64 @llvm.smax.i64(i64 %541, i64 %540)
  %542 = xor i64 %539, -1
  %543 = add i64 %smax, %542
  %544 = zext i32 %140 to i64
  %545 = zext i32 %27 to i64
  %546 = zext i32 %4 to i64
  %547 = shl nuw i32 %3, 1
  %548 = xor i32 %547, -1
  %549 = add i32 %548, %4
  %550 = zext i32 %549 to i64
  %551 = zext i32 %549 to i64
  %552 = zext i32 %27 to i64
  %553 = zext i32 %4 to i64
  %554 = mul nsw i64 %539, -4
  %scevgep826 = getelementptr i8, ptr %1, i64 %554
  %555 = add nsw i64 %539, 1
  %smax827 = tail call i64 @llvm.smax.i64(i64 %555, i64 %540)
  %556 = zext i32 %140 to i64
  %scevgep830 = getelementptr i8, ptr %2, i64 %554
  %557 = add i32 %4, -1
  %558 = zext i32 %557 to i64
  %scevgep833 = getelementptr i8, ptr %1, i64 4
  %559 = add nsw i64 %539, 1
  %smax841 = tail call i64 @llvm.smax.i64(i64 %559, i64 %540)
  %560 = sub i64 %smax841, %539
  %561 = add nsw i64 %wide.trip.count585, -1
  %562 = zext i32 %27 to i64
  %563 = zext i32 %4 to i64
  %564 = zext nneg i32 %3 to i64
  %565 = zext i32 %27 to i64
  %566 = zext i32 %4 to i64
  %567 = zext nneg i32 %3 to i64
  %min.iters.check864 = icmp ult i32 %.0331396, 16
  %568 = trunc i64 %561 to i32
  %569 = trunc i64 %561 to i32
  %570 = icmp ugt i64 %561, 4294967295
  %n.vec867 = and i64 %wide.trip.count585, 4294967288
  %cmp.n874 = icmp eq i64 %n.vec867, %wide.trip.count585
  %xtraiter1270 = and i64 %wide.trip.count585, 1
  %lcmp.mod1271.not = icmp eq i64 %xtraiter1270, 0
  %571 = add nsw i64 %wide.trip.count585, -1
  %min.iters.check844 = icmp ult i64 %560, 12
  %572 = trunc i64 %543 to i32
  %573 = trunc i64 %543 to i32
  %574 = icmp ugt i64 %543, 4294967295
  %n.vec847 = and i64 %560, -8
  %ind.end848 = add i64 %n.vec847, %539
  %cmp.n858 = icmp eq i64 %560, %n.vec847
  br label %.preheader373.us.us435

.preheader373.us.us435:                           ; preds = %.preheader373.us.us435.preheader, %._crit_edge407.split.split.us.us.us.split
  %indvar = phi i64 [ 0, %.preheader373.us.us435.preheader ], [ %indvar.next, %._crit_edge407.split.split.us.us.us.split ]
  %.0334421.us.us436 = phi i32 [ 0, %.preheader373.us.us435.preheader ], [ %699, %._crit_edge407.split.split.us.us.us.split ]
  %575 = mul i64 %indvar, %565
  %576 = add i64 %575, %567
  %577 = mul i64 %indvar, %562
  %578 = add i64 %577, %564
  %579 = mul i64 %indvar, %552
  %580 = add i64 %579, %551
  %581 = add i64 %579, %556
  %582 = add i64 %579, %558
  %583 = mul i64 %indvar, %545
  %584 = add i64 %583, %544
  %585 = add i64 %583, %550
  %factor.op.mul.reass.us.us437 = mul i32 %27, %.0334421.us.us436
  %586 = add i32 %142, %factor.op.mul.reass.us.us437
  br label %.preheader372.us408.us.us

.preheader372.us408.us.us:                        ; preds = %._crit_edge.us417.us.us, %.preheader373.us.us435
  %indvars.iv590 = phi i64 [ %indvars.iv.next591, %._crit_edge.us417.us.us ], [ 0, %.preheader373.us.us435 ]
  %587 = mul i64 %indvars.iv590, %553
  %588 = add i64 %580, %587
  %sext1215 = shl i64 %588, 32
  %589 = ashr exact i64 %sext1215, 32
  %590 = ashr exact i64 %sext1215, 30
  %scevgep825 = getelementptr i8, ptr %1, i64 %590
  %591 = add i64 %smax827, %589
  %592 = shl nsw i64 %591, 2
  %scevgep828 = getelementptr i8, ptr %scevgep826, i64 %592
  %593 = add i64 %581, %587
  %sext1216 = shl i64 %593, 32
  %594 = ashr exact i64 %sext1216, 32
  %595 = ashr exact i64 %sext1216, 30
  %scevgep829 = getelementptr i8, ptr %2, i64 %595
  %596 = add i64 %smax827, %594
  %597 = shl nsw i64 %596, 2
  %scevgep831 = getelementptr i8, ptr %scevgep830, i64 %597
  %598 = add i64 %582, %587
  %sext1217 = shl i64 %598, 32
  %599 = ashr exact i64 %sext1217, 30
  %scevgep832 = getelementptr i8, ptr %1, i64 %599
  %scevgep834 = getelementptr i8, ptr %scevgep833, i64 %599
  %600 = mul i64 %indvars.iv590, %546
  %601 = add i64 %584, %600
  %602 = trunc i64 %601 to i32
  %603 = add i64 %585, %600
  %604 = trunc i64 %603 to i32
  %605 = trunc i64 %indvars.iv590 to i32
  %606 = mul i32 %605, %4
  %607 = add i32 %606, %factor.op.mul.reass.us.us437
  %608 = add i32 %607, %3
  br i1 %min.iters.check864, label %scalar.ph863.preheader, label %vector.scevcheck859

vector.scevcheck859:                              ; preds = %.preheader372.us408.us.us
  %609 = mul i64 %indvars.iv590, %566
  %610 = add i64 %575, %609
  %sext = shl i64 %610, 32
  %611 = ashr exact i64 %sext, 30
  %612 = add i64 %611, %24
  %613 = add i64 %576, %609
  %sext1214 = shl i64 %613, 32
  %614 = ashr exact i64 %sext1214, 30
  %615 = add i64 %614, %23
  %616 = sub i64 %612, %615
  %617 = mul i64 %indvars.iv590, %563
  %618 = add i64 %578, %617
  %619 = trunc i64 %618 to i32
  %620 = add i64 %577, %617
  %621 = trunc i64 %620 to i32
  %622 = add i32 %621, %568
  %623 = icmp slt i32 %622, %621
  %624 = add i32 %619, %569
  %625 = icmp slt i32 %624, %619
  %626 = or i1 %625, %570
  %627 = or i1 %623, %626
  %diff.check861 = icmp ult i64 %616, 32
  %or.cond1243 = select i1 %627, i1 true, i1 %diff.check861
  br i1 %or.cond1243, label %scalar.ph863.preheader, label %vector.body869

vector.body869:                                   ; preds = %vector.scevcheck859, %vector.body869
  %index870 = phi i64 [ %index.next873, %vector.body869 ], [ 0, %vector.scevcheck859 ]
  %628 = trunc i64 %index870 to i32
  %629 = add i32 %608, %628
  %630 = sext i32 %629 to i64
  %631 = getelementptr inbounds float, ptr %1, i64 %630
  %632 = getelementptr inbounds i8, ptr %631, i64 16
  %wide.load871 = load <4 x float>, ptr %631, align 4, !tbaa !5
  %wide.load872 = load <4 x float>, ptr %632, align 4, !tbaa !5
  %633 = add i32 %607, %628
  %634 = sext i32 %633 to i64
  %635 = getelementptr inbounds float, ptr %2, i64 %634
  %636 = getelementptr inbounds i8, ptr %635, i64 16
  store <4 x float> %wide.load871, ptr %635, align 4, !tbaa !5
  store <4 x float> %wide.load872, ptr %636, align 4, !tbaa !5
  %index.next873 = add nuw i64 %index870, 8
  %637 = icmp eq i64 %index.next873, %n.vec867
  br i1 %637, label %middle.block862, label %vector.body869, !llvm.loop !42

middle.block862:                                  ; preds = %vector.body869
  br i1 %cmp.n874, label %..preheader371_crit_edge.us415.us.us, label %scalar.ph863.preheader

scalar.ph863.preheader:                           ; preds = %middle.block862, %vector.scevcheck859, %.preheader372.us408.us.us
  %indvars.iv582.ph = phi i64 [ 0, %vector.scevcheck859 ], [ 0, %.preheader372.us408.us.us ], [ %n.vec867, %middle.block862 ]
  br i1 %lcmp.mod1271.not, label %scalar.ph863.prol.loopexit, label %scalar.ph863.prol

scalar.ph863.prol:                                ; preds = %scalar.ph863.preheader
  %638 = trunc nuw nsw i64 %indvars.iv582.ph to i32
  %639 = add i32 %608, %638
  %640 = sext i32 %639 to i64
  %641 = getelementptr inbounds float, ptr %1, i64 %640
  %642 = load float, ptr %641, align 4, !tbaa !5
  %643 = add i32 %607, %638
  %644 = sext i32 %643 to i64
  %645 = getelementptr inbounds float, ptr %2, i64 %644
  store float %642, ptr %645, align 4, !tbaa !5
  %indvars.iv.next583.prol = or disjoint i64 %indvars.iv582.ph, 1
  br label %scalar.ph863.prol.loopexit

scalar.ph863.prol.loopexit:                       ; preds = %scalar.ph863.prol, %scalar.ph863.preheader
  %indvars.iv582.unr = phi i64 [ %indvars.iv582.ph, %scalar.ph863.preheader ], [ %indvars.iv.next583.prol, %scalar.ph863.prol ]
  %646 = icmp eq i64 %indvars.iv582.ph, %571
  br i1 %646, label %..preheader371_crit_edge.us415.us.us, label %scalar.ph863

scalar.ph863:                                     ; preds = %scalar.ph863.prol.loopexit, %scalar.ph863
  %indvars.iv582 = phi i64 [ %indvars.iv.next583.1, %scalar.ph863 ], [ %indvars.iv582.unr, %scalar.ph863.prol.loopexit ]
  %647 = trunc nuw nsw i64 %indvars.iv582 to i32
  %648 = add i32 %608, %647
  %649 = sext i32 %648 to i64
  %650 = getelementptr inbounds float, ptr %1, i64 %649
  %651 = load float, ptr %650, align 4, !tbaa !5
  %652 = add i32 %607, %647
  %653 = sext i32 %652 to i64
  %654 = getelementptr inbounds float, ptr %2, i64 %653
  store float %651, ptr %654, align 4, !tbaa !5
  %655 = trunc i64 %indvars.iv582 to i32
  %656 = add i32 %655, 1
  %657 = add i32 %608, %656
  %658 = sext i32 %657 to i64
  %659 = getelementptr inbounds float, ptr %1, i64 %658
  %660 = load float, ptr %659, align 4, !tbaa !5
  %661 = add i32 %607, %656
  %662 = sext i32 %661 to i64
  %663 = getelementptr inbounds float, ptr %2, i64 %662
  store float %660, ptr %663, align 4, !tbaa !5
  %indvars.iv.next583.1 = add nuw nsw i64 %indvars.iv582, 2
  %exitcond586.not.1 = icmp eq i64 %indvars.iv.next583.1, %wide.trip.count585
  br i1 %exitcond586.not.1, label %..preheader371_crit_edge.us415.us.us, label %scalar.ph863, !llvm.loop !43

scalar.ph843:                                     ; preds = %scalar.ph843.preheader, %scalar.ph843
  %indvars.iv587 = phi i64 [ %indvars.iv.next588, %scalar.ph843 ], [ %indvars.iv587.ph, %scalar.ph843.preheader ]
  %664 = load float, ptr %677, align 4, !tbaa !5
  %665 = trunc nsw i64 %indvars.iv587 to i32
  %666 = add i32 %678, %665
  %667 = sext i32 %666 to i64
  %668 = getelementptr inbounds float, ptr %1, i64 %667
  %669 = load float, ptr %668, align 4, !tbaa !5
  %670 = fsub float %664, %669
  %671 = add i32 %607, %665
  %672 = sext i32 %671 to i64
  %673 = getelementptr inbounds float, ptr %2, i64 %672
  store float %670, ptr %673, align 4, !tbaa !5
  %indvars.iv.next588 = add nsw i64 %indvars.iv587, 1
  %674 = icmp slt i64 %indvars.iv.next588, %540
  br i1 %674, label %scalar.ph843, label %._crit_edge.us417.us.us, !llvm.loop !44

..preheader371_crit_edge.us415.us.us:             ; preds = %scalar.ph863.prol.loopexit, %scalar.ph863, %middle.block862
  %675 = add i32 %586, %606
  %676 = sext i32 %675 to i64
  %677 = getelementptr inbounds float, ptr %1, i64 %676
  %678 = add i32 %607, %143
  br i1 %min.iters.check844, label %scalar.ph843.preheader, label %vector.scevcheck823

scalar.ph843.preheader:                           ; preds = %middle.block842, %vector.memcheck824, %vector.scevcheck823, %..preheader371_crit_edge.us415.us.us
  %indvars.iv587.ph = phi i64 [ %539, %vector.memcheck824 ], [ %539, %vector.scevcheck823 ], [ %539, %..preheader371_crit_edge.us415.us.us ], [ %ind.end848, %middle.block842 ]
  br label %scalar.ph843

vector.scevcheck823:                              ; preds = %..preheader371_crit_edge.us415.us.us
  %679 = add i32 %602, %572
  %680 = icmp slt i32 %679, %602
  %681 = add i32 %604, %573
  %682 = icmp slt i32 %681, %604
  %683 = or i1 %682, %574
  %684 = or i1 %680, %683
  br i1 %684, label %scalar.ph843.preheader, label %vector.memcheck824

vector.memcheck824:                               ; preds = %vector.scevcheck823
  %bound0835 = icmp ult ptr %scevgep825, %scevgep831
  %bound1836 = icmp ult ptr %scevgep829, %scevgep828
  %found.conflict837 = and i1 %bound0835, %bound1836
  %bound0838 = icmp ult ptr %scevgep832, %scevgep831
  %bound1839 = icmp ult ptr %scevgep829, %scevgep834
  %found.conflict840 = and i1 %bound0838, %bound1839
  %conflict.rdx = or i1 %found.conflict837, %found.conflict840
  br i1 %conflict.rdx, label %scalar.ph843.preheader, label %vector.ph845

vector.ph845:                                     ; preds = %vector.memcheck824
  %685 = load float, ptr %677, align 4, !tbaa !5, !alias.scope !45, !noalias !48
  %broadcast.splatinsert855 = insertelement <4 x float> poison, float %685, i64 0
  %broadcast.splat856 = shufflevector <4 x float> %broadcast.splatinsert855, <4 x float> poison, <4 x i32> zeroinitializer
  br label %vector.body850

vector.body850:                                   ; preds = %vector.body850, %vector.ph845
  %index851 = phi i64 [ 0, %vector.ph845 ], [ %index.next857, %vector.body850 ]
  %686 = trunc i64 %index851 to i32
  %687 = add i32 %140, %686
  %688 = add i32 %678, %687
  %689 = sext i32 %688 to i64
  %690 = getelementptr inbounds float, ptr %1, i64 %689
  %691 = getelementptr inbounds i8, ptr %690, i64 16
  %wide.load853 = load <4 x float>, ptr %690, align 4, !tbaa !5, !alias.scope !50, !noalias !48
  %wide.load854 = load <4 x float>, ptr %691, align 4, !tbaa !5, !alias.scope !50, !noalias !48
  %692 = fsub <4 x float> %broadcast.splat856, %wide.load853
  %693 = fsub <4 x float> %broadcast.splat856, %wide.load854
  %694 = add i32 %607, %687
  %695 = sext i32 %694 to i64
  %696 = getelementptr inbounds float, ptr %2, i64 %695
  %697 = getelementptr inbounds i8, ptr %696, i64 16
  store <4 x float> %692, ptr %696, align 4, !tbaa !5, !alias.scope !48
  store <4 x float> %693, ptr %697, align 4, !tbaa !5, !alias.scope !48
  %index.next857 = add nuw i64 %index851, 8
  %698 = icmp eq i64 %index.next857, %n.vec847
  br i1 %698, label %middle.block842, label %vector.body850, !llvm.loop !52

middle.block842:                                  ; preds = %vector.body850
  br i1 %cmp.n858, label %._crit_edge.us417.us.us, label %scalar.ph843.preheader

._crit_edge.us417.us.us:                          ; preds = %scalar.ph843, %middle.block842
  %indvars.iv.next591 = add nuw nsw i64 %indvars.iv590, 1
  %exitcond594.not = icmp eq i64 %indvars.iv.next591, %wide.trip.count593
  br i1 %exitcond594.not, label %._crit_edge407.split.split.us.us.us.split, label %.preheader372.us408.us.us, !llvm.loop !38

._crit_edge407.split.split.us.us.us.split:        ; preds = %._crit_edge.us417.us.us
  %699 = add nuw nsw i32 %.0334421.us.us436, 1
  %exitcond595.not = icmp eq i32 %699, %6
  %indvar.next = add i64 %indvar, 1
  br i1 %exitcond595.not, label %.preheader369, label %.preheader373.us.us435, !llvm.loop !41

.preheader373.lr.ph.split.us.split.split:         ; preds = %.preheader373.lr.ph.split.us.split
  br i1 %.not354391, label %.preheader368.lr.ph, label %.preheader373.us.preheader

.preheader373.us.preheader:                       ; preds = %.preheader373.lr.ph.split.us.split.split
  %700 = add nsw i32 %5, -1
  %min.iters.check813 = icmp ult i32 %5, 8
  %ident.check = icmp ne i32 %4, 1
  %n.vec816 = and i32 %5, 2147483644
  %cmp.n822 = icmp eq i32 %n.vec816, %5
  %xtraiter1267 = and i32 %5, 1
  %lcmp.mod1268.not = icmp eq i32 %xtraiter1267, 0
  %701 = add nsw i32 %5, -1
  br label %.preheader373.us

.preheader373.us:                                 ; preds = %.preheader373.us.preheader, %._crit_edge407.split.split.split.us427
  %.0334421.us = phi i32 [ %754, %._crit_edge407.split.split.split.us427 ], [ 0, %.preheader373.us.preheader ]
  %factor.op.mul.reass.us = mul i32 %27, %.0334421.us
  br i1 %min.iters.check813, label %.preheader372.us424.preheader, label %vector.scevcheck808

vector.scevcheck808:                              ; preds = %.preheader373.us
  %702 = mul i32 %.0334421.us, %5
  %703 = sext i32 %702 to i64
  %704 = shl nsw i64 %703, 2
  %705 = add i64 %704, %26
  %706 = add i32 %702, %3
  %707 = sext i32 %706 to i64
  %708 = shl nsw i64 %707, 2
  %709 = add i64 %708, %25
  %710 = sub i64 %705, %709
  %711 = mul i32 %.0334421.us, %5
  %712 = add i32 %711, %3
  %713 = add i32 %711, %700
  %714 = icmp slt i32 %713, %711
  %715 = add i32 %712, %700
  %716 = icmp slt i32 %715, %712
  %717 = or i1 %ident.check, %714
  %718 = or i1 %717, %716
  %diff.check810 = icmp ult i64 %710, 16
  %or.cond1244 = select i1 %718, i1 true, i1 %diff.check810
  br i1 %or.cond1244, label %.preheader372.us424.preheader, label %vector.body818

vector.body818:                                   ; preds = %vector.scevcheck808, %vector.body818
  %index819 = phi i32 [ %index.next821, %vector.body818 ], [ 0, %vector.scevcheck808 ]
  %719 = add i32 %index819, %factor.op.mul.reass.us
  %720 = add i32 %719, %3
  %721 = sext i32 %720 to i64
  %722 = getelementptr inbounds float, ptr %1, i64 %721
  %wide.load820 = load <4 x float>, ptr %722, align 4, !tbaa !5
  %723 = sext i32 %719 to i64
  %724 = getelementptr inbounds float, ptr %2, i64 %723
  store <4 x float> %wide.load820, ptr %724, align 4, !tbaa !5
  %index.next821 = add nuw i32 %index819, 4
  %725 = icmp eq i32 %index.next821, %n.vec816
  br i1 %725, label %middle.block811, label %vector.body818, !llvm.loop !53

middle.block811:                                  ; preds = %vector.body818
  br i1 %cmp.n822, label %._crit_edge407.split.split.split.us427, label %.preheader372.us424.preheader

.preheader372.us424.preheader:                    ; preds = %middle.block811, %vector.scevcheck808, %.preheader373.us
  %.0333406.us425.ph = phi i32 [ 0, %vector.scevcheck808 ], [ 0, %.preheader373.us ], [ %n.vec816, %middle.block811 ]
  br i1 %lcmp.mod1268.not, label %.preheader372.us424.prol.loopexit, label %.preheader372.us424.prol

.preheader372.us424.prol:                         ; preds = %.preheader372.us424.preheader
  %726 = mul nsw i32 %.0333406.us425.ph, %4
  %727 = add i32 %726, %factor.op.mul.reass.us
  %728 = add i32 %727, %3
  %729 = sext i32 %728 to i64
  %730 = getelementptr inbounds float, ptr %1, i64 %729
  %731 = load float, ptr %730, align 4, !tbaa !5
  %732 = sext i32 %727 to i64
  %733 = getelementptr inbounds float, ptr %2, i64 %732
  store float %731, ptr %733, align 4, !tbaa !5
  %734 = or disjoint i32 %.0333406.us425.ph, 1
  br label %.preheader372.us424.prol.loopexit

.preheader372.us424.prol.loopexit:                ; preds = %.preheader372.us424.prol, %.preheader372.us424.preheader
  %.0333406.us425.unr = phi i32 [ %.0333406.us425.ph, %.preheader372.us424.preheader ], [ %734, %.preheader372.us424.prol ]
  %735 = icmp eq i32 %.0333406.us425.ph, %701
  br i1 %735, label %._crit_edge407.split.split.split.us427, label %.preheader372.us424

.preheader372.us424:                              ; preds = %.preheader372.us424.prol.loopexit, %.preheader372.us424
  %.0333406.us425 = phi i32 [ %753, %.preheader372.us424 ], [ %.0333406.us425.unr, %.preheader372.us424.prol.loopexit ]
  %736 = mul nsw i32 %.0333406.us425, %4
  %737 = add i32 %736, %factor.op.mul.reass.us
  %738 = add i32 %737, %3
  %739 = sext i32 %738 to i64
  %740 = getelementptr inbounds float, ptr %1, i64 %739
  %741 = load float, ptr %740, align 4, !tbaa !5
  %742 = sext i32 %737 to i64
  %743 = getelementptr inbounds float, ptr %2, i64 %742
  store float %741, ptr %743, align 4, !tbaa !5
  %744 = add nuw nsw i32 %.0333406.us425, 1
  %745 = mul nsw i32 %744, %4
  %746 = add i32 %745, %factor.op.mul.reass.us
  %747 = add i32 %746, %3
  %748 = sext i32 %747 to i64
  %749 = getelementptr inbounds float, ptr %1, i64 %748
  %750 = load float, ptr %749, align 4, !tbaa !5
  %751 = sext i32 %746 to i64
  %752 = getelementptr inbounds float, ptr %2, i64 %751
  store float %750, ptr %752, align 4, !tbaa !5
  %753 = add nuw nsw i32 %.0333406.us425, 2
  %exitcond580.not.1 = icmp eq i32 %753, %5
  br i1 %exitcond580.not.1, label %._crit_edge407.split.split.split.us427, label %.preheader372.us424, !llvm.loop !54

._crit_edge407.split.split.split.us427:           ; preds = %.preheader372.us424.prol.loopexit, %.preheader372.us424, %middle.block811
  %754 = add nuw nsw i32 %.0334421.us, 1
  %exitcond581.not = icmp eq i32 %754, %6
  br i1 %exitcond581.not, label %.preheader369, label %.preheader373.us, !llvm.loop !41

.preheader369:                                    ; preds = %._crit_edge407.split.split.split.us427, %._crit_edge407.split.split.us.us.us.split, %._crit_edge407.split.us.us.us
  br i1 %43, label %.preheader368.lr.ph, label %.preheader358

.preheader368.lr.ph:                              ; preds = %.preheader373.lr.ph.split.us.split.split, %.preheader369
  %755 = icmp ne i32 %5, 1
  %756 = icmp sgt i32 %4, 0
  %or.cond778 = and i1 %755, %756
  br i1 %or.cond778, label %.preheader368.us.us.preheader, label %.preheader365.lr.ph

.preheader368.us.us.preheader:                    ; preds = %.preheader368.lr.ph
  %wide.trip.count637 = zext nneg i32 %4 to i64
  %757 = add nsw i64 %wide.trip.count637, -1
  %758 = mul i32 %5, %4
  %759 = mul i32 %5, %4
  %760 = shl nuw nsw i64 %wide.trip.count637, 2
  %scevgep989 = getelementptr i8, ptr %2, i64 %760
  %scevgep992 = getelementptr i8, ptr %2, i64 %760
  %min.iters.check999 = icmp ult i32 %4, 12
  %761 = trunc nsw i64 %757 to i32
  %762 = trunc nsw i64 %757 to i32
  %763 = icmp ugt i64 %757, 4294967295
  %n.vec1002 = and i64 %wide.trip.count637, 2147483640
  %cmp.n1011 = icmp eq i64 %n.vec1002, %wide.trip.count637
  %xtraiter1282 = and i64 %wide.trip.count637, 1
  %lcmp.mod1283.not = icmp eq i64 %xtraiter1282, 0
  %764 = add nsw i64 %wide.trip.count637, -1
  br label %.preheader368.us.us

.preheader368.us.us:                              ; preds = %.preheader368.us.us.preheader, %._crit_edge447.split.us.us.us
  %.0329448.us.us = phi i32 [ %835, %._crit_edge447.split.us.us.us ], [ 0, %.preheader368.us.us.preheader ]
  %765 = mul i32 %759, %.0329448.us.us
  %766 = add i32 %765, %4
  %767 = mul i32 %758, %.0329448.us.us
  %768 = add i32 %767, %4
  %factor.op.mul442.reass.us.us = mul i32 %27, %.0329448.us.us
  br label %.preheader367.us.us.us

.preheader367.us.us.us:                           ; preds = %._crit_edge.us.us.us453, %.preheader368.us.us
  %indvar985 = phi i32 [ %indvar.next986, %._crit_edge.us.us.us453 ], [ 0, %.preheader368.us.us ]
  %.0328446.us.us.us = phi i32 [ %834, %._crit_edge.us.us.us453 ], [ 1, %.preheader368.us.us ]
  %769 = mul i32 %indvar985, %4
  %770 = add i32 %766, %769
  %771 = sext i32 %770 to i64
  %772 = shl nsw i64 %771, 2
  %scevgep988 = getelementptr i8, ptr %2, i64 %772
  %scevgep990 = getelementptr i8, ptr %scevgep989, i64 %772
  %773 = add i32 %765, %769
  %774 = sext i32 %773 to i64
  %775 = shl nsw i64 %774, 2
  %scevgep991 = getelementptr i8, ptr %2, i64 %775
  %scevgep993 = getelementptr i8, ptr %scevgep992, i64 %775
  %776 = add nsw i32 %.0328446.us.us.us, -1
  %777 = mul nsw i32 %776, %4
  %778 = add i32 %777, %factor.op.mul442.reass.us.us
  %779 = mul nuw nsw i32 %.0328446.us.us.us, %4
  %780 = add i32 %779, %factor.op.mul442.reass.us.us
  br i1 %min.iters.check999, label %scalar.ph998.preheader, label %vector.scevcheck984

vector.scevcheck984:                              ; preds = %.preheader367.us.us.us
  %781 = mul i32 %indvar985, %4
  %782 = add i32 %767, %781
  %783 = add i32 %768, %781
  %784 = add i32 %783, %761
  %785 = icmp slt i32 %784, %783
  %786 = add i32 %782, %762
  %787 = icmp slt i32 %786, %782
  %788 = or i1 %787, %763
  %789 = or i1 %785, %788
  br i1 %789, label %scalar.ph998.preheader, label %vector.memcheck987

vector.memcheck987:                               ; preds = %vector.scevcheck984
  %bound0994 = icmp ult ptr %scevgep988, %scevgep993
  %bound1995 = icmp ult ptr %scevgep991, %scevgep990
  %found.conflict996 = and i1 %bound0994, %bound1995
  br i1 %found.conflict996, label %scalar.ph998.preheader, label %vector.body1004

vector.body1004:                                  ; preds = %vector.memcheck987, %vector.body1004
  %index1005 = phi i64 [ %index.next1010, %vector.body1004 ], [ 0, %vector.memcheck987 ]
  %790 = trunc i64 %index1005 to i32
  %791 = add i32 %778, %790
  %792 = sext i32 %791 to i64
  %793 = getelementptr inbounds float, ptr %2, i64 %792
  %794 = getelementptr inbounds i8, ptr %793, i64 16
  %wide.load1006 = load <4 x float>, ptr %793, align 4, !tbaa !5, !alias.scope !55
  %wide.load1007 = load <4 x float>, ptr %794, align 4, !tbaa !5, !alias.scope !55
  %795 = add i32 %780, %790
  %796 = sext i32 %795 to i64
  %797 = getelementptr inbounds float, ptr %2, i64 %796
  %798 = getelementptr inbounds i8, ptr %797, i64 16
  %wide.load1008 = load <4 x float>, ptr %797, align 4, !tbaa !5, !alias.scope !58, !noalias !55
  %wide.load1009 = load <4 x float>, ptr %798, align 4, !tbaa !5, !alias.scope !58, !noalias !55
  %799 = fadd <4 x float> %wide.load1006, %wide.load1008
  %800 = fadd <4 x float> %wide.load1007, %wide.load1009
  store <4 x float> %799, ptr %797, align 4, !tbaa !5, !alias.scope !58, !noalias !55
  store <4 x float> %800, ptr %798, align 4, !tbaa !5, !alias.scope !58, !noalias !55
  %index.next1010 = add nuw i64 %index1005, 8
  %801 = icmp eq i64 %index.next1010, %n.vec1002
  br i1 %801, label %middle.block997, label %vector.body1004, !llvm.loop !60

middle.block997:                                  ; preds = %vector.body1004
  br i1 %cmp.n1011, label %._crit_edge.us.us.us453, label %scalar.ph998.preheader

scalar.ph998.preheader:                           ; preds = %middle.block997, %vector.memcheck987, %vector.scevcheck984, %.preheader367.us.us.us
  %indvars.iv634.ph = phi i64 [ 0, %vector.memcheck987 ], [ 0, %vector.scevcheck984 ], [ 0, %.preheader367.us.us.us ], [ %n.vec1002, %middle.block997 ]
  br i1 %lcmp.mod1283.not, label %scalar.ph998.prol.loopexit, label %scalar.ph998.prol

scalar.ph998.prol:                                ; preds = %scalar.ph998.preheader
  %802 = trunc nuw nsw i64 %indvars.iv634.ph to i32
  %803 = add i32 %778, %802
  %804 = sext i32 %803 to i64
  %805 = getelementptr inbounds float, ptr %2, i64 %804
  %806 = load float, ptr %805, align 4, !tbaa !5
  %807 = add i32 %780, %802
  %808 = sext i32 %807 to i64
  %809 = getelementptr inbounds float, ptr %2, i64 %808
  %810 = load float, ptr %809, align 4, !tbaa !5
  %811 = fadd float %806, %810
  store float %811, ptr %809, align 4, !tbaa !5
  %indvars.iv.next635.prol = or disjoint i64 %indvars.iv634.ph, 1
  br label %scalar.ph998.prol.loopexit

scalar.ph998.prol.loopexit:                       ; preds = %scalar.ph998.prol, %scalar.ph998.preheader
  %indvars.iv634.unr = phi i64 [ %indvars.iv634.ph, %scalar.ph998.preheader ], [ %indvars.iv.next635.prol, %scalar.ph998.prol ]
  %812 = icmp eq i64 %indvars.iv634.ph, %764
  br i1 %812, label %._crit_edge.us.us.us453, label %scalar.ph998

scalar.ph998:                                     ; preds = %scalar.ph998.prol.loopexit, %scalar.ph998
  %indvars.iv634 = phi i64 [ %indvars.iv.next635.1, %scalar.ph998 ], [ %indvars.iv634.unr, %scalar.ph998.prol.loopexit ]
  %813 = trunc nuw nsw i64 %indvars.iv634 to i32
  %814 = add i32 %778, %813
  %815 = sext i32 %814 to i64
  %816 = getelementptr inbounds float, ptr %2, i64 %815
  %817 = load float, ptr %816, align 4, !tbaa !5
  %818 = add i32 %780, %813
  %819 = sext i32 %818 to i64
  %820 = getelementptr inbounds float, ptr %2, i64 %819
  %821 = load float, ptr %820, align 4, !tbaa !5
  %822 = fadd float %817, %821
  store float %822, ptr %820, align 4, !tbaa !5
  %823 = trunc i64 %indvars.iv634 to i32
  %824 = add i32 %823, 1
  %825 = add i32 %778, %824
  %826 = sext i32 %825 to i64
  %827 = getelementptr inbounds float, ptr %2, i64 %826
  %828 = load float, ptr %827, align 4, !tbaa !5
  %829 = add i32 %780, %824
  %830 = sext i32 %829 to i64
  %831 = getelementptr inbounds float, ptr %2, i64 %830
  %832 = load float, ptr %831, align 4, !tbaa !5
  %833 = fadd float %828, %832
  store float %833, ptr %831, align 4, !tbaa !5
  %indvars.iv.next635.1 = add nuw nsw i64 %indvars.iv634, 2
  %exitcond638.not.1 = icmp eq i64 %indvars.iv.next635.1, %wide.trip.count637
  br i1 %exitcond638.not.1, label %._crit_edge.us.us.us453, label %scalar.ph998, !llvm.loop !61

._crit_edge.us.us.us453:                          ; preds = %scalar.ph998.prol.loopexit, %scalar.ph998, %middle.block997
  %834 = add nuw nsw i32 %.0328446.us.us.us, 1
  %exitcond639.not = icmp eq i32 %834, %5
  %indvar.next986 = add i32 %indvar985, 1
  br i1 %exitcond639.not, label %._crit_edge447.split.us.us.us, label %.preheader367.us.us.us, !llvm.loop !62

._crit_edge447.split.us.us.us:                    ; preds = %._crit_edge.us.us.us453
  %835 = add nuw nsw i32 %.0329448.us.us, 1
  %exitcond640.not = icmp eq i32 %835, %6
  br i1 %exitcond640.not, label %.preheader366, label %.preheader368.us.us, !llvm.loop !63

.preheader366:                                    ; preds = %._crit_edge447.split.us.us.us
  br i1 %43, label %.preheader365.lr.ph, label %.preheader358

.preheader365.lr.ph:                              ; preds = %.preheader373.lr.ph, %.preheader368.lr.ph, %.preheader366
  %836 = icmp sgt i32 %4, 0
  %.not353455 = icmp slt i32 %3, 0
  %837 = sub i32 %5, %3
  %.0323460 = add i32 %3, 1
  %838 = icmp slt i32 %.0323460, %837
  %839 = icmp sgt i32 %3, 0
  %840 = add i32 %5, -1
  %841 = mul nsw i32 %840, %4
  %842 = xor i32 %3, -1
  br i1 %836, label %.preheader365.us.preheader, label %.preheader361

.preheader365.us.preheader:                       ; preds = %.preheader365.lr.ph
  %843 = sext i32 %837 to i64
  %844 = sext i32 %5 to i64
  %845 = zext i32 %.0323460 to i64
  %wide.trip.count644 = zext i32 %.0323460 to i64
  %wide.trip.count658 = zext nneg i32 %4 to i64
  %wide.trip.count650 = zext i32 %.0323460 to i64
  %wide.trip.count676 = zext nneg i32 %4 to i64
  %wide.trip.count663 = zext i32 %.0323460 to i64
  %846 = add nsw i64 %843, 1
  %smax1014 = tail call i64 @llvm.smax.i64(i64 %846, i64 %844)
  %847 = xor i64 %843, -1
  %848 = add i64 %smax1014, %847
  %849 = zext i32 %837 to i64
  %850 = zext i32 %5 to i64
  %851 = shl i32 %3, 1
  %852 = xor i32 %851, -1
  %853 = add i32 %852, %5
  %854 = zext i32 %853 to i64
  %855 = zext i32 %853 to i64
  %856 = zext i32 %5 to i64
  %857 = mul nsw i64 %843, -4
  %scevgep1019 = getelementptr i8, ptr %2, i64 %857
  %858 = add nsw i64 %843, 1
  %smax1020 = tail call i64 @llvm.smax.i64(i64 %858, i64 %844)
  %859 = zext i32 %837 to i64
  %scevgep1023 = getelementptr i8, ptr %1, i64 %857
  %860 = zext i32 %840 to i64
  %scevgep1026 = getelementptr i8, ptr %2, i64 4
  %861 = add nsw i64 %843, 1
  %smax1035 = tail call i64 @llvm.smax.i64(i64 %861, i64 %844)
  %862 = sub i64 %smax1035, %843
  %863 = add i32 %5, -2
  %864 = shl i32 %3, 1
  %865 = sub i32 %863, %864
  %866 = zext i32 %5 to i64
  %867 = or disjoint i32 %864, 1
  %868 = zext i32 %867 to i64
  %869 = zext i32 %5 to i64
  %870 = shl i32 %3, 1
  %871 = or disjoint i32 %870, 1
  %872 = zext i32 %871 to i64
  %873 = add i32 %5, -2
  %874 = sub i32 %873, %870
  %875 = zext i32 %874 to i64
  %876 = add nuw nsw i64 %875, 1
  %877 = add nsw i64 %wide.trip.count644, -1
  %878 = zext i32 %5 to i64
  %879 = zext i32 %3 to i64
  %880 = zext i32 %5 to i64
  %881 = zext i32 %3 to i64
  %882 = add nsw i64 %843, 1
  %smax1102 = tail call i64 @llvm.smax.i64(i64 %882, i64 %844)
  %883 = xor i64 %843, -1
  %884 = add i64 %smax1102, %883
  %885 = zext i32 %837 to i64
  %886 = zext i32 %5 to i64
  %887 = shl i32 %3, 1
  %888 = xor i32 %887, -1
  %889 = add i32 %888, %5
  %890 = zext i32 %889 to i64
  %891 = zext i32 %889 to i64
  %892 = zext i32 %5 to i64
  %893 = mul nsw i64 %843, -4
  %scevgep1105 = getelementptr i8, ptr %2, i64 %893
  %894 = add nsw i64 %843, 1
  %smax1106 = tail call i64 @llvm.smax.i64(i64 %894, i64 %844)
  %895 = zext i32 %837 to i64
  %scevgep1109 = getelementptr i8, ptr %1, i64 %893
  %896 = zext i32 %840 to i64
  %scevgep1112 = getelementptr i8, ptr %2, i64 4
  %897 = add nsw i64 %843, 1
  %smax1121 = tail call i64 @llvm.smax.i64(i64 %897, i64 %844)
  %898 = sub i64 %smax1121, %843
  %899 = add nsw i64 %wide.trip.count644, -1
  %900 = zext i32 %5 to i64
  %901 = zext i32 %3 to i64
  %902 = zext i32 %5 to i64
  %903 = zext i32 %3 to i64
  %904 = add nsw i32 %4, -1
  %905 = zext i32 %27 to i64
  %906 = mul i32 %4, %3
  %907 = zext i32 %27 to i64
  %min.iters.check1162 = icmp ult i32 %4, 8
  %n.vec1165 = and i32 %4, 2147483644
  %908 = mul i32 %3, %4
  %cmp.n1171 = icmp eq i32 %n.vec1165, %4
  %xtraiter1285 = and i32 %4, 1
  %lcmp.mod1286.not = icmp eq i32 %xtraiter1285, 0
  %909 = mul i32 %3, %4
  %910 = add nsw i32 %4, -1
  %911 = mul i32 %3, %4
  %912 = mul i32 %3, %4
  %min.iters.check1146 = icmp ult i32 %.0323460, 16
  %ident.check1141 = icmp ne i32 %4, 1
  %913 = trunc i64 %899 to i32
  %914 = icmp ugt i64 %899, 4294967295
  %915 = trunc i64 %899 to i32
  %n.vec1149 = and i64 %wide.trip.count644, 4294967288
  %cmp.n1156 = icmp eq i64 %n.vec1149, %wide.trip.count644
  %xtraiter1288 = and i64 %wide.trip.count644, 1
  %lcmp.mod1289.not = icmp eq i64 %xtraiter1288, 0
  %916 = add nsw i64 %wide.trip.count644, -1
  %min.iters.check1124 = icmp ult i64 %898, 12
  %ident.check1101 = icmp ne i32 %4, 1
  %917 = trunc i64 %884 to i32
  %918 = icmp ugt i64 %884, 4294967295
  %919 = trunc i64 %884 to i32
  %n.vec1127 = and i64 %898, -8
  %ind.end1128 = add i64 %n.vec1127, %843
  %cmp.n1139 = icmp eq i64 %898, %n.vec1127
  %min.iters.check1089 = icmp ult i32 %.0323460, 16
  %ident.check1084 = icmp ne i32 %4, 1
  %920 = trunc i64 %877 to i32
  %921 = icmp ugt i64 %877, 4294967295
  %922 = trunc i64 %877 to i32
  %n.vec1092 = and i64 %wide.trip.count644, 4294967288
  %cmp.n1099 = icmp eq i64 %n.vec1092, %wide.trip.count644
  %xtraiter1291 = and i64 %wide.trip.count644, 1
  %lcmp.mod1292.not = icmp eq i64 %xtraiter1291, 0
  %923 = add nsw i64 %wide.trip.count644, -1
  %min.iters.check1062 = icmp ult i32 %874, 7
  %ident.check1055 = icmp ne i32 %4, 1
  %n.vec1065 = and i64 %876, 8589934584
  %ind.end1066 = add nuw nsw i64 %n.vec1065, %845
  %.cast1068 = trunc i64 %n.vec1065 to i32
  %ind.end1069 = add i32 %.cast1068, %3
  %cmp.n1082 = icmp eq i64 %876, %n.vec1065
  %min.iters.check1038 = icmp ult i64 %862, 12
  %ident.check1013 = icmp ne i32 %4, 1
  %924 = trunc i64 %848 to i32
  %925 = icmp ugt i64 %848, 4294967295
  %926 = trunc i64 %848 to i32
  %n.vec1041 = and i64 %862, -8
  %ind.end1042 = add i64 %n.vec1041, %843
  %cmp.n1053 = icmp eq i64 %862, %n.vec1041
  br label %.preheader365.us

.preheader365.us:                                 ; preds = %.preheader365.us.preheader, %._crit_edge472.us
  %indvar1015 = phi i64 [ 0, %.preheader365.us.preheader ], [ %indvar.next1016, %._crit_edge472.us ]
  %.0326486.us = phi i32 [ 0, %.preheader365.us.preheader ], [ %985, %._crit_edge472.us ]
  %927 = mul i64 %indvar1015, %907
  %sext1226 = shl i64 %927, 32
  %928 = ashr exact i64 %sext1226, 30
  %929 = trunc i64 %927 to i32
  %930 = add i32 %906, %929
  %931 = sext i32 %930 to i64
  %932 = shl nsw i64 %931, 2
  %933 = add i64 %928, %11
  %934 = add i64 %932, %10
  %935 = sub i64 %933, %934
  %936 = mul i64 %indvar1015, %905
  %937 = trunc i64 %936 to i32
  %938 = trunc i64 %936 to i32
  %939 = add i32 %906, %938
  %940 = mul i64 %indvar1015, %902
  %941 = add i64 %940, %903
  %942 = mul i64 %indvar1015, %900
  %943 = add i64 %942, %901
  %944 = mul i64 %indvar1015, %892
  %945 = add i64 %944, %891
  %946 = add i64 %944, %895
  %947 = add i64 %944, %896
  %948 = mul i64 %indvar1015, %886
  %949 = add i64 %948, %885
  %950 = add i64 %948, %890
  %951 = mul i64 %indvar1015, %880
  %952 = add i64 %951, %881
  %953 = mul i64 %indvar1015, %878
  %954 = add i64 %953, %879
  %955 = mul i64 %indvar1015, %869
  %956 = add i64 %955, %wide.trip.count644
  %957 = add i64 %955, %872
  %958 = mul i64 %indvar1015, %866
  %959 = add i64 %958, %wide.trip.count644
  %960 = add i64 %958, %868
  %961 = mul i64 %indvar1015, %856
  %962 = add i64 %961, %855
  %963 = add i64 %961, %859
  %964 = add i64 %961, %860
  %965 = mul i64 %indvar1015, %850
  %966 = add i64 %965, %849
  %967 = add i64 %965, %854
  %factor.op.mul454.reass.us = mul i32 %27, %.0326486.us
  %968 = add i32 %factor.op.mul454.reass.us, %841
  br i1 %838, label %.preheader364.us.us, label %.preheader364.lr.ph.split.us493

.preheader364.us489:                              ; preds = %.preheader364.us489.prol.loopexit, %.preheader364.us489
  %.0325471.us490 = phi i32 [ %984, %.preheader364.us489 ], [ %.0325471.us490.unr, %.preheader364.us489.prol.loopexit ]
  %969 = add i32 %.0325471.us490, %factor.op.mul454.reass.us
  %970 = add i32 %969, %911
  %971 = sext i32 %970 to i64
  %972 = getelementptr inbounds float, ptr %2, i64 %971
  %973 = load float, ptr %972, align 4, !tbaa !5
  %974 = sext i32 %969 to i64
  %975 = getelementptr inbounds float, ptr %1, i64 %974
  store float %973, ptr %975, align 4, !tbaa !5
  %976 = add nuw nsw i32 %.0325471.us490, 1
  %977 = add i32 %976, %factor.op.mul454.reass.us
  %978 = add i32 %977, %912
  %979 = sext i32 %978 to i64
  %980 = getelementptr inbounds float, ptr %2, i64 %979
  %981 = load float, ptr %980, align 4, !tbaa !5
  %982 = sext i32 %977 to i64
  %983 = getelementptr inbounds float, ptr %1, i64 %982
  store float %981, ptr %983, align 4, !tbaa !5
  %984 = add nuw nsw i32 %.0325471.us490, 2
  %exitcond646.not.1 = icmp eq i32 %984, %4
  br i1 %exitcond646.not.1, label %._crit_edge472.us, label %.preheader364.us489, !llvm.loop !64

.preheader364.lr.ph.split.us493:                  ; preds = %.preheader365.us
  br i1 %839, label %.preheader364.us473.us, label %.preheader364.lr.ph.split.split.us494

._crit_edge472.us:                                ; preds = %.preheader364.us489.prol.loopexit, %.preheader364.us489, %._crit_edge.us482.us, %._crit_edge.us.us, %middle.block1160, %.preheader364.lr.ph.split.split.us494
  %985 = add nuw nsw i32 %.0326486.us, 1
  %exitcond678.not = icmp eq i32 %985, %6
  %indvar.next1016 = add i64 %indvar1015, 1
  br i1 %exitcond678.not, label %.preheader361, label %.preheader365.us, !llvm.loop !65

.preheader364.us.us:                              ; preds = %.preheader365.us, %._crit_edge.us.us
  %indvars.iv673 = phi i64 [ %indvars.iv.next674, %._crit_edge.us.us ], [ 0, %.preheader365.us ]
  %986 = add i64 %951, %indvars.iv673
  %sext1232 = shl i64 %986, 32
  %987 = ashr exact i64 %sext1232, 30
  %988 = add i64 %952, %indvars.iv673
  %sext1233 = shl i64 %988, 32
  %989 = ashr exact i64 %sext1233, 30
  %990 = add i64 %987, %15
  %991 = add i64 %989, %14
  %992 = sub i64 %990, %991
  %993 = add i64 %953, %indvars.iv673
  %994 = trunc i64 %993 to i32
  %995 = add i64 %954, %indvars.iv673
  %996 = trunc i64 %995 to i32
  %997 = add i64 %956, %indvars.iv673
  %sext1234 = shl i64 %997, 32
  %998 = ashr exact i64 %sext1234, 30
  %999 = add i64 %955, %indvars.iv673
  %sext1235 = shl i64 %999, 32
  %1000 = ashr exact i64 %sext1235, 30
  %1001 = add i64 %998, %17
  %1002 = add i64 %1000, %16
  %1003 = sub i64 %1001, %1002
  %1004 = add i64 %957, %indvars.iv673
  %sext1236 = shl i64 %1004, 32
  %1005 = ashr exact i64 %sext1236, 30
  %1006 = add i64 %998, %17
  %1007 = add i64 %1005, %16
  %1008 = sub i64 %1006, %1007
  %1009 = add i64 %959, %indvars.iv673
  %1010 = trunc i64 %1009 to i32
  %1011 = add i64 %960, %indvars.iv673
  %1012 = trunc i64 %1011 to i32
  %1013 = add i64 %958, %indvars.iv673
  %1014 = trunc i64 %1013 to i32
  %1015 = add i64 %962, %indvars.iv673
  %sext1237 = shl i64 %1015, 32
  %1016 = ashr exact i64 %sext1237, 32
  %1017 = ashr exact i64 %sext1237, 30
  %scevgep1018 = getelementptr i8, ptr %2, i64 %1017
  %1018 = add i64 %smax1020, %1016
  %1019 = shl nsw i64 %1018, 2
  %scevgep1021 = getelementptr i8, ptr %scevgep1019, i64 %1019
  %1020 = add i64 %963, %indvars.iv673
  %sext1238 = shl i64 %1020, 32
  %1021 = ashr exact i64 %sext1238, 32
  %1022 = ashr exact i64 %sext1238, 30
  %scevgep1022 = getelementptr i8, ptr %1, i64 %1022
  %1023 = add i64 %smax1020, %1021
  %1024 = shl nsw i64 %1023, 2
  %scevgep1024 = getelementptr i8, ptr %scevgep1023, i64 %1024
  %1025 = add i64 %964, %indvars.iv673
  %sext1239 = shl i64 %1025, 32
  %1026 = ashr exact i64 %sext1239, 30
  %scevgep1025 = getelementptr i8, ptr %2, i64 %1026
  %scevgep1027 = getelementptr i8, ptr %scevgep1026, i64 %1026
  %1027 = add i64 %966, %indvars.iv673
  %1028 = trunc i64 %1027 to i32
  %1029 = add i64 %967, %indvars.iv673
  %1030 = trunc i64 %1029 to i32
  %.pre742 = trunc nuw nsw i64 %indvars.iv673 to i32
  %.pre744 = add i32 %factor.op.mul454.reass.us, %.pre742
  br i1 %.not353455, label %.preheader363.us.us, label %.lr.ph457.us.us.preheader

.lr.ph457.us.us.preheader:                        ; preds = %.preheader364.us.us
  br i1 %min.iters.check1089, label %.lr.ph457.us.us.preheader1254, label %vector.scevcheck1083

vector.scevcheck1083:                             ; preds = %.lr.ph457.us.us.preheader
  %1031 = add i32 %994, %920
  %1032 = icmp slt i32 %1031, %994
  %1033 = or i1 %1032, %921
  %1034 = add i32 %996, %922
  %1035 = icmp slt i32 %1034, %996
  %1036 = or i1 %ident.check1084, %1033
  %1037 = or i1 %1035, %1036
  %diff.check1086 = icmp ult i64 %992, 32
  %or.cond1245 = select i1 %1037, i1 true, i1 %diff.check1086
  br i1 %or.cond1245, label %.lr.ph457.us.us.preheader1254, label %vector.body1094

vector.body1094:                                  ; preds = %vector.scevcheck1083, %vector.body1094
  %index1095 = phi i64 [ %index.next1098, %vector.body1094 ], [ 0, %vector.scevcheck1083 ]
  %1038 = trunc i64 %index1095 to i32
  %1039 = trunc i64 %index1095 to i32
  %1040 = add i32 %1038, %3
  %1041 = add i32 %.pre744, %1040
  %1042 = sext i32 %1041 to i64
  %1043 = getelementptr inbounds float, ptr %2, i64 %1042
  %1044 = getelementptr inbounds i8, ptr %1043, i64 16
  %wide.load1096 = load <4 x float>, ptr %1043, align 4, !tbaa !5
  %wide.load1097 = load <4 x float>, ptr %1044, align 4, !tbaa !5
  %1045 = add i32 %.pre744, %1039
  %1046 = sext i32 %1045 to i64
  %1047 = getelementptr inbounds float, ptr %1, i64 %1046
  %1048 = getelementptr inbounds i8, ptr %1047, i64 16
  store <4 x float> %wide.load1096, ptr %1047, align 4, !tbaa !5
  store <4 x float> %wide.load1097, ptr %1048, align 4, !tbaa !5
  %index.next1098 = add nuw i64 %index1095, 8
  %1049 = icmp eq i64 %index.next1098, %n.vec1092
  br i1 %1049, label %middle.block1087, label %vector.body1094, !llvm.loop !66

middle.block1087:                                 ; preds = %vector.body1094
  br i1 %cmp.n1099, label %.preheader363.us.us, label %.lr.ph457.us.us.preheader1254

.lr.ph457.us.us.preheader1254:                    ; preds = %middle.block1087, %vector.scevcheck1083, %.lr.ph457.us.us.preheader
  %indvars.iv660.ph = phi i64 [ 0, %vector.scevcheck1083 ], [ 0, %.lr.ph457.us.us.preheader ], [ %n.vec1092, %middle.block1087 ]
  br i1 %lcmp.mod1292.not, label %.lr.ph457.us.us.prol.loopexit, label %.lr.ph457.us.us.prol

.lr.ph457.us.us.prol:                             ; preds = %.lr.ph457.us.us.preheader1254
  %1050 = trunc nuw i64 %indvars.iv660.ph to i32
  %1051 = add i32 %1050, %3
  %1052 = mul i32 %1051, %4
  %1053 = add i32 %.pre744, %1052
  %1054 = sext i32 %1053 to i64
  %1055 = getelementptr inbounds float, ptr %2, i64 %1054
  %1056 = load float, ptr %1055, align 4, !tbaa !5
  %1057 = trunc nuw i64 %indvars.iv660.ph to i32
  %1058 = mul i32 %1057, %4
  %1059 = add i32 %.pre744, %1058
  %1060 = sext i32 %1059 to i64
  %1061 = getelementptr inbounds float, ptr %1, i64 %1060
  store float %1056, ptr %1061, align 4, !tbaa !5
  %indvars.iv.next661.prol = or disjoint i64 %indvars.iv660.ph, 1
  br label %.lr.ph457.us.us.prol.loopexit

.lr.ph457.us.us.prol.loopexit:                    ; preds = %.lr.ph457.us.us.prol, %.lr.ph457.us.us.preheader1254
  %indvars.iv660.unr = phi i64 [ %indvars.iv660.ph, %.lr.ph457.us.us.preheader1254 ], [ %indvars.iv.next661.prol, %.lr.ph457.us.us.prol ]
  %1062 = icmp eq i64 %indvars.iv660.ph, %923
  br i1 %1062, label %.preheader363.us.us, label %.lr.ph457.us.us

.lr.ph457.us.us:                                  ; preds = %.lr.ph457.us.us.prol.loopexit, %.lr.ph457.us.us
  %indvars.iv660 = phi i64 [ %indvars.iv.next661.1, %.lr.ph457.us.us ], [ %indvars.iv660.unr, %.lr.ph457.us.us.prol.loopexit ]
  %1063 = trunc i64 %indvars.iv660 to i32
  %1064 = add i32 %1063, %3
  %1065 = mul i32 %1064, %4
  %1066 = add i32 %.pre744, %1065
  %1067 = sext i32 %1066 to i64
  %1068 = getelementptr inbounds float, ptr %2, i64 %1067
  %1069 = load float, ptr %1068, align 4, !tbaa !5
  %1070 = trunc i64 %indvars.iv660 to i32
  %1071 = mul i32 %1070, %4
  %1072 = add i32 %.pre744, %1071
  %1073 = sext i32 %1072 to i64
  %1074 = getelementptr inbounds float, ptr %1, i64 %1073
  store float %1069, ptr %1074, align 4, !tbaa !5
  %indvars.iv.next661 = add nuw nsw i64 %indvars.iv660, 1
  %1075 = trunc i64 %indvars.iv.next661 to i32
  %1076 = add i32 %1075, %3
  %1077 = mul i32 %1076, %4
  %1078 = add i32 %.pre744, %1077
  %1079 = sext i32 %1078 to i64
  %1080 = getelementptr inbounds float, ptr %2, i64 %1079
  %1081 = load float, ptr %1080, align 4, !tbaa !5
  %1082 = trunc i64 %indvars.iv.next661 to i32
  %1083 = mul i32 %1082, %4
  %1084 = add i32 %.pre744, %1083
  %1085 = sext i32 %1084 to i64
  %1086 = getelementptr inbounds float, ptr %1, i64 %1085
  store float %1081, ptr %1086, align 4, !tbaa !5
  %indvars.iv.next661.1 = add nuw nsw i64 %indvars.iv660, 2
  %exitcond664.not.1 = icmp eq i64 %indvars.iv.next661.1, %wide.trip.count663
  br i1 %exitcond664.not.1, label %.preheader363.us.us, label %.lr.ph457.us.us, !llvm.loop !67

._crit_edge.us.us:                                ; preds = %scalar.ph1037, %middle.block1036, %..preheader362_crit_edge.us.us
  %indvars.iv.next674 = add nuw nsw i64 %indvars.iv673, 1
  %exitcond677.not = icmp eq i64 %indvars.iv.next674, %wide.trip.count676
  br i1 %exitcond677.not, label %._crit_edge472.us, label %.preheader364.us.us, !llvm.loop !68

scalar.ph1037:                                    ; preds = %scalar.ph1037.preheader, %scalar.ph1037
  %indvars.iv670 = phi i64 [ %indvars.iv.next671, %scalar.ph1037 ], [ %indvars.iv670.ph, %scalar.ph1037.preheader ]
  %1087 = load float, ptr %1153, align 4, !tbaa !5
  %1088 = trunc nsw i64 %indvars.iv670 to i32
  %1089 = add i32 %1088, %842
  %1090 = mul nsw i32 %1089, %4
  %1091 = add i32 %.pre744, %1090
  %1092 = sext i32 %1091 to i64
  %1093 = getelementptr inbounds float, ptr %2, i64 %1092
  %1094 = load float, ptr %1093, align 4, !tbaa !5
  %1095 = fsub float %1087, %1094
  %1096 = trunc i64 %indvars.iv670 to i32
  %1097 = mul i32 %1096, %4
  %1098 = add i32 %.pre744, %1097
  %1099 = sext i32 %1098 to i64
  %1100 = getelementptr inbounds float, ptr %1, i64 %1099
  store float %1095, ptr %1100, align 4, !tbaa !5
  %indvars.iv.next671 = add nsw i64 %indvars.iv670, 1
  %1101 = icmp slt i64 %indvars.iv.next671, %844
  br i1 %1101, label %scalar.ph1037, label %._crit_edge.us.us, !llvm.loop !69

scalar.ph1061:                                    ; preds = %scalar.ph1061.preheader, %scalar.ph1061
  %indvars.iv665 = phi i64 [ %indvars.iv.next666, %scalar.ph1061 ], [ %indvars.iv665.ph, %scalar.ph1061.preheader ]
  %.0323.in461.us.us = phi i32 [ %1121, %scalar.ph1061 ], [ %.0323.in461.us.us.ph, %scalar.ph1061.preheader ]
  %1102 = trunc i64 %indvars.iv665 to i32
  %1103 = add i32 %1102, %3
  %1104 = mul i32 %1103, %4
  %1105 = add i32 %.pre744, %1104
  %1106 = sext i32 %1105 to i64
  %1107 = getelementptr inbounds float, ptr %2, i64 %1106
  %1108 = load float, ptr %1107, align 4, !tbaa !5
  %1109 = sub i32 %.0323.in461.us.us, %3
  %1110 = mul nsw i32 %1109, %4
  %1111 = add i32 %.pre744, %1110
  %1112 = sext i32 %1111 to i64
  %1113 = getelementptr inbounds float, ptr %2, i64 %1112
  %1114 = load float, ptr %1113, align 4, !tbaa !5
  %1115 = fsub float %1108, %1114
  %1116 = trunc i64 %indvars.iv665 to i32
  %1117 = mul i32 %1116, %4
  %1118 = add i32 %.pre744, %1117
  %1119 = sext i32 %1118 to i64
  %1120 = getelementptr inbounds float, ptr %1, i64 %1119
  store float %1115, ptr %1120, align 4, !tbaa !5
  %indvars.iv.next666 = add i64 %indvars.iv665, 1
  %1121 = trunc i64 %indvars.iv665 to i32
  %lftr.wideiv668 = trunc i64 %indvars.iv.next666 to i32
  %exitcond669.not = icmp eq i32 %837, %lftr.wideiv668
  br i1 %exitcond669.not, label %..preheader362_crit_edge.us.us, label %scalar.ph1061, !llvm.loop !70

.preheader363.us.us:                              ; preds = %.lr.ph457.us.us.prol.loopexit, %.lr.ph457.us.us, %middle.block1087, %.preheader364.us.us
  br i1 %min.iters.check1062, label %scalar.ph1061.preheader, label %vector.scevcheck1054

scalar.ph1061.preheader:                          ; preds = %middle.block1060, %vector.memcheck1056, %vector.scevcheck1054, %.preheader363.us.us
  %indvars.iv665.ph = phi i64 [ %845, %vector.memcheck1056 ], [ %845, %vector.scevcheck1054 ], [ %845, %.preheader363.us.us ], [ %ind.end1066, %middle.block1060 ]
  %.0323.in461.us.us.ph = phi i32 [ %3, %vector.memcheck1056 ], [ %3, %vector.scevcheck1054 ], [ %3, %.preheader363.us.us ], [ %ind.end1069, %middle.block1060 ]
  br label %scalar.ph1061

vector.scevcheck1054:                             ; preds = %.preheader363.us.us
  %1122 = add i32 %865, %1010
  %1123 = icmp slt i32 %1122, %1010
  %1124 = add i32 %865, %1012
  %1125 = icmp slt i32 %1124, %1012
  %1126 = add i32 %865, %1014
  %1127 = icmp slt i32 %1126, %1014
  %1128 = or i1 %ident.check1055, %1123
  %1129 = or i1 %1128, %1125
  %1130 = or i1 %1129, %1127
  br i1 %1130, label %scalar.ph1061.preheader, label %vector.memcheck1056

vector.memcheck1056:                              ; preds = %vector.scevcheck1054
  %diff.check1057 = icmp ult i64 %1003, 32
  %diff.check1058 = icmp ult i64 %1008, 32
  %conflict.rdx1059 = or i1 %diff.check1057, %diff.check1058
  br i1 %conflict.rdx1059, label %scalar.ph1061.preheader, label %vector.body1071

vector.body1071:                                  ; preds = %vector.memcheck1056, %vector.body1071
  %index1072 = phi i64 [ %index.next1081, %vector.body1071 ], [ 0, %vector.memcheck1056 ]
  %.cast1073 = trunc i64 %index1072 to i32
  %1131 = trunc i64 %index1072 to i32
  %1132 = add i32 %.0323460, %1131
  %1133 = trunc i64 %index1072 to i32
  %1134 = add i32 %.0323460, %1133
  %1135 = add i32 %1132, %3
  %1136 = add i32 %.pre744, %1135
  %1137 = sext i32 %1136 to i64
  %1138 = getelementptr inbounds float, ptr %2, i64 %1137
  %1139 = getelementptr inbounds i8, ptr %1138, i64 16
  %wide.load1077 = load <4 x float>, ptr %1138, align 4, !tbaa !5
  %wide.load1078 = load <4 x float>, ptr %1139, align 4, !tbaa !5
  %1140 = add i32 %.pre744, %.cast1073
  %1141 = sext i32 %1140 to i64
  %1142 = getelementptr inbounds float, ptr %2, i64 %1141
  %1143 = getelementptr inbounds i8, ptr %1142, i64 16
  %wide.load1079 = load <4 x float>, ptr %1142, align 4, !tbaa !5
  %wide.load1080 = load <4 x float>, ptr %1143, align 4, !tbaa !5
  %1144 = fsub <4 x float> %wide.load1077, %wide.load1079
  %1145 = fsub <4 x float> %wide.load1078, %wide.load1080
  %1146 = add i32 %.pre744, %1134
  %1147 = sext i32 %1146 to i64
  %1148 = getelementptr inbounds float, ptr %1, i64 %1147
  %1149 = getelementptr inbounds i8, ptr %1148, i64 16
  store <4 x float> %1144, ptr %1148, align 4, !tbaa !5
  store <4 x float> %1145, ptr %1149, align 4, !tbaa !5
  %index.next1081 = add nuw i64 %index1072, 8
  %1150 = icmp eq i64 %index.next1081, %n.vec1065
  br i1 %1150, label %middle.block1060, label %vector.body1071, !llvm.loop !71

middle.block1060:                                 ; preds = %vector.body1071
  br i1 %cmp.n1082, label %..preheader362_crit_edge.us.us, label %scalar.ph1061.preheader

..preheader362_crit_edge.us.us:                   ; preds = %scalar.ph1061, %middle.block1060
  br i1 %839, label %.lr.ph467.us.us, label %._crit_edge.us.us

.lr.ph467.us.us:                                  ; preds = %..preheader362_crit_edge.us.us
  %1151 = add i32 %968, %.pre742
  %1152 = sext i32 %1151 to i64
  %1153 = getelementptr inbounds float, ptr %2, i64 %1152
  br i1 %min.iters.check1038, label %scalar.ph1037.preheader, label %vector.scevcheck1012

scalar.ph1037.preheader:                          ; preds = %middle.block1036, %vector.memcheck1017, %vector.scevcheck1012, %.lr.ph467.us.us
  %indvars.iv670.ph = phi i64 [ %843, %vector.memcheck1017 ], [ %843, %vector.scevcheck1012 ], [ %843, %.lr.ph467.us.us ], [ %ind.end1042, %middle.block1036 ]
  br label %scalar.ph1037

vector.scevcheck1012:                             ; preds = %.lr.ph467.us.us
  %1154 = add i32 %1028, %924
  %1155 = icmp slt i32 %1154, %1028
  %1156 = or i1 %1155, %925
  %1157 = add i32 %1030, %926
  %1158 = icmp slt i32 %1157, %1030
  %1159 = or i1 %ident.check1013, %1156
  %1160 = or i1 %1158, %1159
  br i1 %1160, label %scalar.ph1037.preheader, label %vector.memcheck1017

vector.memcheck1017:                              ; preds = %vector.scevcheck1012
  %bound01028 = icmp ult ptr %scevgep1018, %scevgep1024
  %bound11029 = icmp ult ptr %scevgep1022, %scevgep1021
  %found.conflict1030 = and i1 %bound01028, %bound11029
  %bound01031 = icmp ult ptr %scevgep1025, %scevgep1024
  %bound11032 = icmp ult ptr %scevgep1022, %scevgep1027
  %found.conflict1033 = and i1 %bound01031, %bound11032
  %conflict.rdx1034 = or i1 %found.conflict1030, %found.conflict1033
  br i1 %conflict.rdx1034, label %scalar.ph1037.preheader, label %vector.ph1039

vector.ph1039:                                    ; preds = %vector.memcheck1017
  %1161 = load float, ptr %1153, align 4, !tbaa !5, !alias.scope !72, !noalias !75
  %broadcast.splatinsert1050 = insertelement <4 x float> poison, float %1161, i64 0
  %broadcast.splat1051 = shufflevector <4 x float> %broadcast.splatinsert1050, <4 x float> poison, <4 x i32> zeroinitializer
  br label %vector.body1044

vector.body1044:                                  ; preds = %vector.body1044, %vector.ph1039
  %index1045 = phi i64 [ 0, %vector.ph1039 ], [ %index.next1052, %vector.body1044 ]
  %1162 = trunc i64 %index1045 to i32
  %1163 = add i32 %837, %1162
  %1164 = trunc i64 %index1045 to i32
  %1165 = add i32 %837, %1164
  %1166 = add i32 %1163, %842
  %1167 = add i32 %.pre744, %1166
  %1168 = sext i32 %1167 to i64
  %1169 = getelementptr inbounds float, ptr %2, i64 %1168
  %1170 = getelementptr inbounds i8, ptr %1169, i64 16
  %wide.load1048 = load <4 x float>, ptr %1169, align 4, !tbaa !5, !alias.scope !77, !noalias !75
  %wide.load1049 = load <4 x float>, ptr %1170, align 4, !tbaa !5, !alias.scope !77, !noalias !75
  %1171 = fsub <4 x float> %broadcast.splat1051, %wide.load1048
  %1172 = fsub <4 x float> %broadcast.splat1051, %wide.load1049
  %1173 = add i32 %.pre744, %1165
  %1174 = sext i32 %1173 to i64
  %1175 = getelementptr inbounds float, ptr %1, i64 %1174
  %1176 = getelementptr inbounds i8, ptr %1175, i64 16
  store <4 x float> %1171, ptr %1175, align 4, !tbaa !5, !alias.scope !75
  store <4 x float> %1172, ptr %1176, align 4, !tbaa !5, !alias.scope !75
  %index.next1052 = add nuw i64 %index1045, 8
  %1177 = icmp eq i64 %index.next1052, %n.vec1041
  br i1 %1177, label %middle.block1036, label %vector.body1044, !llvm.loop !79

middle.block1036:                                 ; preds = %vector.body1044
  br i1 %cmp.n1053, label %._crit_edge.us.us, label %scalar.ph1037.preheader

.preheader364.lr.ph.split.split.us494:            ; preds = %.preheader364.lr.ph.split.us493
  br i1 %.not353455, label %._crit_edge472.us, label %.preheader364.us489.preheader

.preheader364.us489.preheader:                    ; preds = %.preheader364.lr.ph.split.split.us494
  br i1 %min.iters.check1162, label %.preheader364.us489.preheader1257, label %vector.scevcheck1157

.preheader364.us489.preheader1257:                ; preds = %middle.block1160, %vector.scevcheck1157, %.preheader364.us489.preheader
  %.0325471.us490.ph = phi i32 [ 0, %vector.scevcheck1157 ], [ 0, %.preheader364.us489.preheader ], [ %n.vec1165, %middle.block1160 ]
  br i1 %lcmp.mod1286.not, label %.preheader364.us489.prol.loopexit, label %.preheader364.us489.prol

.preheader364.us489.prol:                         ; preds = %.preheader364.us489.preheader1257
  %1178 = add i32 %.0325471.us490.ph, %factor.op.mul454.reass.us
  %1179 = add i32 %1178, %909
  %1180 = sext i32 %1179 to i64
  %1181 = getelementptr inbounds float, ptr %2, i64 %1180
  %1182 = load float, ptr %1181, align 4, !tbaa !5
  %1183 = sext i32 %1178 to i64
  %1184 = getelementptr inbounds float, ptr %1, i64 %1183
  store float %1182, ptr %1184, align 4, !tbaa !5
  %1185 = or disjoint i32 %.0325471.us490.ph, 1
  br label %.preheader364.us489.prol.loopexit

.preheader364.us489.prol.loopexit:                ; preds = %.preheader364.us489.prol, %.preheader364.us489.preheader1257
  %.0325471.us490.unr = phi i32 [ %.0325471.us490.ph, %.preheader364.us489.preheader1257 ], [ %1185, %.preheader364.us489.prol ]
  %1186 = icmp eq i32 %.0325471.us490.ph, %910
  br i1 %1186, label %._crit_edge472.us, label %.preheader364.us489

vector.scevcheck1157:                             ; preds = %.preheader364.us489.preheader
  %1187 = add i32 %904, %937
  %1188 = icmp slt i32 %1187, %937
  %1189 = add i32 %939, %904
  %1190 = icmp slt i32 %1189, %939
  %1191 = or i1 %1188, %1190
  %diff.check1159 = icmp ult i64 %935, 16
  %or.cond1246 = select i1 %1191, i1 true, i1 %diff.check1159
  br i1 %or.cond1246, label %.preheader364.us489.preheader1257, label %vector.body1167

vector.body1167:                                  ; preds = %vector.scevcheck1157, %vector.body1167
  %index1168 = phi i32 [ %index.next1170, %vector.body1167 ], [ 0, %vector.scevcheck1157 ]
  %1192 = add i32 %index1168, %factor.op.mul454.reass.us
  %1193 = add i32 %1192, %908
  %1194 = sext i32 %1193 to i64
  %1195 = getelementptr inbounds float, ptr %2, i64 %1194
  %wide.load1169 = load <4 x float>, ptr %1195, align 4, !tbaa !5
  %1196 = sext i32 %1192 to i64
  %1197 = getelementptr inbounds float, ptr %1, i64 %1196
  store <4 x float> %wide.load1169, ptr %1197, align 4, !tbaa !5
  %index.next1170 = add nuw i32 %index1168, 4
  %1198 = icmp eq i32 %index.next1170, %n.vec1165
  br i1 %1198, label %middle.block1160, label %vector.body1167, !llvm.loop !80

middle.block1160:                                 ; preds = %vector.body1167
  br i1 %cmp.n1171, label %._crit_edge472.us, label %.preheader364.us489.preheader1257

.preheader364.us473.us:                           ; preds = %.preheader364.lr.ph.split.us493, %._crit_edge.us482.us
  %indvars.iv655 = phi i64 [ %indvars.iv.next656, %._crit_edge.us482.us ], [ 0, %.preheader364.lr.ph.split.us493 ]
  %1199 = add i64 %940, %indvars.iv655
  %sext1227 = shl i64 %1199, 32
  %1200 = ashr exact i64 %sext1227, 30
  %1201 = add i64 %941, %indvars.iv655
  %sext1228 = shl i64 %1201, 32
  %1202 = ashr exact i64 %sext1228, 30
  %1203 = add i64 %1200, %13
  %1204 = add i64 %1202, %12
  %1205 = sub i64 %1203, %1204
  %1206 = add i64 %942, %indvars.iv655
  %1207 = trunc i64 %1206 to i32
  %1208 = add i64 %943, %indvars.iv655
  %1209 = trunc i64 %1208 to i32
  %1210 = add i64 %945, %indvars.iv655
  %sext1229 = shl i64 %1210, 32
  %1211 = ashr exact i64 %sext1229, 32
  %1212 = ashr exact i64 %sext1229, 30
  %scevgep1104 = getelementptr i8, ptr %2, i64 %1212
  %1213 = add i64 %smax1106, %1211
  %1214 = shl nsw i64 %1213, 2
  %scevgep1107 = getelementptr i8, ptr %scevgep1105, i64 %1214
  %1215 = add i64 %946, %indvars.iv655
  %sext1230 = shl i64 %1215, 32
  %1216 = ashr exact i64 %sext1230, 32
  %1217 = ashr exact i64 %sext1230, 30
  %scevgep1108 = getelementptr i8, ptr %1, i64 %1217
  %1218 = add i64 %smax1106, %1216
  %1219 = shl nsw i64 %1218, 2
  %scevgep1110 = getelementptr i8, ptr %scevgep1109, i64 %1219
  %1220 = add i64 %947, %indvars.iv655
  %sext1231 = shl i64 %1220, 32
  %1221 = ashr exact i64 %sext1231, 30
  %scevgep1111 = getelementptr i8, ptr %2, i64 %1221
  %scevgep1113 = getelementptr i8, ptr %scevgep1112, i64 %1221
  %1222 = add i64 %949, %indvars.iv655
  %1223 = trunc i64 %1222 to i32
  %1224 = add i64 %950, %indvars.iv655
  %1225 = trunc i64 %1224 to i32
  %.pre750 = trunc nuw nsw i64 %indvars.iv655 to i32
  %.pre752 = add i32 %factor.op.mul454.reass.us, %.pre750
  br i1 %.not353455, label %.preheader363.us478.us, label %.lr.ph457.us479.us.preheader

.lr.ph457.us479.us.preheader:                     ; preds = %.preheader364.us473.us
  br i1 %min.iters.check1146, label %.lr.ph457.us479.us.preheader1255, label %vector.scevcheck1140

vector.scevcheck1140:                             ; preds = %.lr.ph457.us479.us.preheader
  %1226 = add i32 %1207, %913
  %1227 = icmp slt i32 %1226, %1207
  %1228 = or i1 %1227, %914
  %1229 = add i32 %1209, %915
  %1230 = icmp slt i32 %1229, %1209
  %1231 = or i1 %ident.check1141, %1228
  %1232 = or i1 %1230, %1231
  %diff.check1143 = icmp ult i64 %1205, 32
  %or.cond1247 = select i1 %1232, i1 true, i1 %diff.check1143
  br i1 %or.cond1247, label %.lr.ph457.us479.us.preheader1255, label %vector.body1151

vector.body1151:                                  ; preds = %vector.scevcheck1140, %vector.body1151
  %index1152 = phi i64 [ %index.next1155, %vector.body1151 ], [ 0, %vector.scevcheck1140 ]
  %1233 = trunc i64 %index1152 to i32
  %1234 = trunc i64 %index1152 to i32
  %1235 = add i32 %1233, %3
  %1236 = add i32 %.pre752, %1235
  %1237 = sext i32 %1236 to i64
  %1238 = getelementptr inbounds float, ptr %2, i64 %1237
  %1239 = getelementptr inbounds i8, ptr %1238, i64 16
  %wide.load1153 = load <4 x float>, ptr %1238, align 4, !tbaa !5
  %wide.load1154 = load <4 x float>, ptr %1239, align 4, !tbaa !5
  %1240 = add i32 %.pre752, %1234
  %1241 = sext i32 %1240 to i64
  %1242 = getelementptr inbounds float, ptr %1, i64 %1241
  %1243 = getelementptr inbounds i8, ptr %1242, i64 16
  store <4 x float> %wide.load1153, ptr %1242, align 4, !tbaa !5
  store <4 x float> %wide.load1154, ptr %1243, align 4, !tbaa !5
  %index.next1155 = add nuw i64 %index1152, 8
  %1244 = icmp eq i64 %index.next1155, %n.vec1149
  br i1 %1244, label %middle.block1144, label %vector.body1151, !llvm.loop !81

middle.block1144:                                 ; preds = %vector.body1151
  br i1 %cmp.n1156, label %.preheader363.us478.us, label %.lr.ph457.us479.us.preheader1255

.lr.ph457.us479.us.preheader1255:                 ; preds = %middle.block1144, %vector.scevcheck1140, %.lr.ph457.us479.us.preheader
  %indvars.iv647.ph = phi i64 [ 0, %vector.scevcheck1140 ], [ 0, %.lr.ph457.us479.us.preheader ], [ %n.vec1149, %middle.block1144 ]
  br i1 %lcmp.mod1289.not, label %.lr.ph457.us479.us.prol.loopexit, label %.lr.ph457.us479.us.prol

.lr.ph457.us479.us.prol:                          ; preds = %.lr.ph457.us479.us.preheader1255
  %1245 = trunc nuw i64 %indvars.iv647.ph to i32
  %1246 = add i32 %1245, %3
  %1247 = mul i32 %1246, %4
  %1248 = add i32 %.pre752, %1247
  %1249 = sext i32 %1248 to i64
  %1250 = getelementptr inbounds float, ptr %2, i64 %1249
  %1251 = load float, ptr %1250, align 4, !tbaa !5
  %1252 = trunc nuw i64 %indvars.iv647.ph to i32
  %1253 = mul i32 %1252, %4
  %1254 = add i32 %.pre752, %1253
  %1255 = sext i32 %1254 to i64
  %1256 = getelementptr inbounds float, ptr %1, i64 %1255
  store float %1251, ptr %1256, align 4, !tbaa !5
  %indvars.iv.next648.prol = or disjoint i64 %indvars.iv647.ph, 1
  br label %.lr.ph457.us479.us.prol.loopexit

.lr.ph457.us479.us.prol.loopexit:                 ; preds = %.lr.ph457.us479.us.prol, %.lr.ph457.us479.us.preheader1255
  %indvars.iv647.unr = phi i64 [ %indvars.iv647.ph, %.lr.ph457.us479.us.preheader1255 ], [ %indvars.iv.next648.prol, %.lr.ph457.us479.us.prol ]
  %1257 = icmp eq i64 %indvars.iv647.ph, %916
  br i1 %1257, label %.preheader363.us478.us, label %.lr.ph457.us479.us

.lr.ph457.us479.us:                               ; preds = %.lr.ph457.us479.us.prol.loopexit, %.lr.ph457.us479.us
  %indvars.iv647 = phi i64 [ %indvars.iv.next648.1, %.lr.ph457.us479.us ], [ %indvars.iv647.unr, %.lr.ph457.us479.us.prol.loopexit ]
  %1258 = trunc i64 %indvars.iv647 to i32
  %1259 = add i32 %1258, %3
  %1260 = mul i32 %1259, %4
  %1261 = add i32 %.pre752, %1260
  %1262 = sext i32 %1261 to i64
  %1263 = getelementptr inbounds float, ptr %2, i64 %1262
  %1264 = load float, ptr %1263, align 4, !tbaa !5
  %1265 = trunc i64 %indvars.iv647 to i32
  %1266 = mul i32 %1265, %4
  %1267 = add i32 %.pre752, %1266
  %1268 = sext i32 %1267 to i64
  %1269 = getelementptr inbounds float, ptr %1, i64 %1268
  store float %1264, ptr %1269, align 4, !tbaa !5
  %indvars.iv.next648 = add nuw nsw i64 %indvars.iv647, 1
  %1270 = trunc i64 %indvars.iv.next648 to i32
  %1271 = add i32 %1270, %3
  %1272 = mul i32 %1271, %4
  %1273 = add i32 %.pre752, %1272
  %1274 = sext i32 %1273 to i64
  %1275 = getelementptr inbounds float, ptr %2, i64 %1274
  %1276 = load float, ptr %1275, align 4, !tbaa !5
  %1277 = trunc i64 %indvars.iv.next648 to i32
  %1278 = mul i32 %1277, %4
  %1279 = add i32 %.pre752, %1278
  %1280 = sext i32 %1279 to i64
  %1281 = getelementptr inbounds float, ptr %1, i64 %1280
  store float %1276, ptr %1281, align 4, !tbaa !5
  %indvars.iv.next648.1 = add nuw nsw i64 %indvars.iv647, 2
  %exitcond651.not.1 = icmp eq i64 %indvars.iv.next648.1, %wide.trip.count650
  br i1 %exitcond651.not.1, label %.preheader363.us478.us, label %.lr.ph457.us479.us, !llvm.loop !82

scalar.ph1123:                                    ; preds = %scalar.ph1123.preheader, %scalar.ph1123
  %indvars.iv652 = phi i64 [ %indvars.iv.next653, %scalar.ph1123 ], [ %indvars.iv652.ph, %scalar.ph1123.preheader ]
  %1282 = load float, ptr %1299, align 4, !tbaa !5
  %1283 = trunc nsw i64 %indvars.iv652 to i32
  %1284 = add i32 %1283, %842
  %1285 = mul nsw i32 %1284, %4
  %1286 = add i32 %.pre752, %1285
  %1287 = sext i32 %1286 to i64
  %1288 = getelementptr inbounds float, ptr %2, i64 %1287
  %1289 = load float, ptr %1288, align 4, !tbaa !5
  %1290 = fsub float %1282, %1289
  %1291 = trunc i64 %indvars.iv652 to i32
  %1292 = mul i32 %1291, %4
  %1293 = add i32 %.pre752, %1292
  %1294 = sext i32 %1293 to i64
  %1295 = getelementptr inbounds float, ptr %1, i64 %1294
  store float %1290, ptr %1295, align 4, !tbaa !5
  %indvars.iv.next653 = add nsw i64 %indvars.iv652, 1
  %1296 = icmp slt i64 %indvars.iv.next653, %844
  br i1 %1296, label %scalar.ph1123, label %._crit_edge.us482.us, !llvm.loop !83

.preheader363.us478.us:                           ; preds = %.lr.ph457.us479.us.prol.loopexit, %.lr.ph457.us479.us, %middle.block1144, %.preheader364.us473.us
  %1297 = add i32 %968, %.pre750
  %1298 = sext i32 %1297 to i64
  %1299 = getelementptr inbounds float, ptr %2, i64 %1298
  br i1 %min.iters.check1124, label %scalar.ph1123.preheader, label %vector.scevcheck1100

scalar.ph1123.preheader:                          ; preds = %middle.block1122, %vector.memcheck1103, %vector.scevcheck1100, %.preheader363.us478.us
  %indvars.iv652.ph = phi i64 [ %843, %vector.memcheck1103 ], [ %843, %vector.scevcheck1100 ], [ %843, %.preheader363.us478.us ], [ %ind.end1128, %middle.block1122 ]
  br label %scalar.ph1123

vector.scevcheck1100:                             ; preds = %.preheader363.us478.us
  %1300 = add i32 %1223, %917
  %1301 = icmp slt i32 %1300, %1223
  %1302 = or i1 %1301, %918
  %1303 = add i32 %1225, %919
  %1304 = icmp slt i32 %1303, %1225
  %1305 = or i1 %ident.check1101, %1302
  %1306 = or i1 %1304, %1305
  br i1 %1306, label %scalar.ph1123.preheader, label %vector.memcheck1103

vector.memcheck1103:                              ; preds = %vector.scevcheck1100
  %bound01114 = icmp ult ptr %scevgep1104, %scevgep1110
  %bound11115 = icmp ult ptr %scevgep1108, %scevgep1107
  %found.conflict1116 = and i1 %bound01114, %bound11115
  %bound01117 = icmp ult ptr %scevgep1111, %scevgep1110
  %bound11118 = icmp ult ptr %scevgep1108, %scevgep1113
  %found.conflict1119 = and i1 %bound01117, %bound11118
  %conflict.rdx1120 = or i1 %found.conflict1116, %found.conflict1119
  br i1 %conflict.rdx1120, label %scalar.ph1123.preheader, label %vector.ph1125

vector.ph1125:                                    ; preds = %vector.memcheck1103
  %1307 = load float, ptr %1299, align 4, !tbaa !5, !alias.scope !84, !noalias !87
  %broadcast.splatinsert1136 = insertelement <4 x float> poison, float %1307, i64 0
  %broadcast.splat1137 = shufflevector <4 x float> %broadcast.splatinsert1136, <4 x float> poison, <4 x i32> zeroinitializer
  br label %vector.body1130

vector.body1130:                                  ; preds = %vector.body1130, %vector.ph1125
  %index1131 = phi i64 [ 0, %vector.ph1125 ], [ %index.next1138, %vector.body1130 ]
  %1308 = trunc i64 %index1131 to i32
  %1309 = add i32 %837, %1308
  %1310 = trunc i64 %index1131 to i32
  %1311 = add i32 %837, %1310
  %1312 = add i32 %1309, %842
  %1313 = add i32 %.pre752, %1312
  %1314 = sext i32 %1313 to i64
  %1315 = getelementptr inbounds float, ptr %2, i64 %1314
  %1316 = getelementptr inbounds i8, ptr %1315, i64 16
  %wide.load1134 = load <4 x float>, ptr %1315, align 4, !tbaa !5, !alias.scope !89, !noalias !87
  %wide.load1135 = load <4 x float>, ptr %1316, align 4, !tbaa !5, !alias.scope !89, !noalias !87
  %1317 = fsub <4 x float> %broadcast.splat1137, %wide.load1134
  %1318 = fsub <4 x float> %broadcast.splat1137, %wide.load1135
  %1319 = add i32 %.pre752, %1311
  %1320 = sext i32 %1319 to i64
  %1321 = getelementptr inbounds float, ptr %1, i64 %1320
  %1322 = getelementptr inbounds i8, ptr %1321, i64 16
  store <4 x float> %1317, ptr %1321, align 4, !tbaa !5, !alias.scope !87
  store <4 x float> %1318, ptr %1322, align 4, !tbaa !5, !alias.scope !87
  %index.next1138 = add nuw i64 %index1131, 8
  %1323 = icmp eq i64 %index.next1138, %n.vec1127
  br i1 %1323, label %middle.block1122, label %vector.body1130, !llvm.loop !91

middle.block1122:                                 ; preds = %vector.body1130
  br i1 %cmp.n1139, label %._crit_edge.us482.us, label %scalar.ph1123.preheader

._crit_edge.us482.us:                             ; preds = %scalar.ph1123, %middle.block1122
  %indvars.iv.next656 = add nuw nsw i64 %indvars.iv655, 1
  %exitcond659.not = icmp eq i64 %indvars.iv.next656, %wide.trip.count658
  br i1 %exitcond659.not, label %._crit_edge472.us, label %.preheader364.us473.us, !llvm.loop !68

.preheader361:                                    ; preds = %._crit_edge472.us, %.preheader365.lr.ph
  %.not = icmp eq i32 %6, 1
  br i1 %.not, label %.preheader358, label %.preheader360.lr.ph

.preheader360.lr.ph:                              ; preds = %.preheader361
  %1324 = icmp sgt i32 %5, 0
  %1325 = icmp sgt i32 %4, 0
  br i1 %1324, label %.preheader360.us.preheader, label %._crit_edge

.preheader360.us.preheader:                       ; preds = %.preheader360.lr.ph
  %1326 = sext i32 %4 to i64
  %wide.trip.count692 = zext nneg i32 %6 to i64
  %wide.trip.count687 = zext nneg i32 %5 to i64
  %wide.trip.count682 = zext i32 %4 to i64
  %1327 = mul i32 %5, %4
  %1328 = add nuw nsw i64 %wide.trip.count687, 4611686018427387903
  %1329 = mul i64 %1328, %1326
  %1330 = add i64 %1329, %wide.trip.count682
  %1331 = shl i64 %1330, 2
  %scevgep1176 = getelementptr i8, ptr %1, i64 %1331
  %scevgep1179 = getelementptr i8, ptr %1, i64 %1331
  %min.iters.check1186 = icmp ult i32 %4, 8
  %n.vec1189 = and i64 %wide.trip.count682, 2147483640
  %cmp.n1198 = icmp eq i64 %n.vec1189, %wide.trip.count682
  %xtraiter1294 = and i64 %wide.trip.count682, 1
  %lcmp.mod1295.not = icmp eq i64 %xtraiter1294, 0
  %1332 = add nsw i64 %wide.trip.count682, -1
  br label %.preheader360.us

.preheader360.us:                                 ; preds = %.preheader360.us.preheader, %._crit_edge503.us
  %indvar1173 = phi i32 [ 0, %.preheader360.us.preheader ], [ %indvar.next1174, %._crit_edge503.us ]
  %indvars.iv689 = phi i64 [ 1, %.preheader360.us.preheader ], [ %indvars.iv.next690, %._crit_edge503.us ]
  %1333 = mul i32 %1327, %indvar1173
  %1334 = add i32 %27, %1333
  %1335 = sext i32 %1334 to i64
  %1336 = shl nsw i64 %1335, 2
  %scevgep1175 = getelementptr i8, ptr %1, i64 %1336
  %scevgep1177 = getelementptr i8, ptr %scevgep1176, i64 %1336
  %1337 = sext i32 %1333 to i64
  %1338 = shl nsw i64 %1337, 2
  %scevgep1178 = getelementptr i8, ptr %1, i64 %1338
  %scevgep1180 = getelementptr i8, ptr %scevgep1179, i64 %1338
  br i1 %1325, label %.preheader359.us.us.preheader, label %._crit_edge503.us

.preheader359.us.us.preheader:                    ; preds = %.preheader360.us
  %1339 = trunc i64 %indvars.iv689 to i32
  %1340 = add i32 %1339, -1
  %1341 = mul i32 %27, %1340
  %1342 = trunc nuw nsw i64 %indvars.iv689 to i32
  %factor.op.mul498.reass.us = mul i32 %27, %1342
  %1343 = sext i32 %1341 to i64
  %1344 = sext i32 %factor.op.mul498.reass.us to i64
  %invariant.gep = getelementptr float, ptr %1, i64 %1343
  %invariant.gep772 = getelementptr float, ptr %1, i64 %1344
  %bound01181 = icmp ult ptr %scevgep1175, %scevgep1180
  %bound11182 = icmp ult ptr %scevgep1178, %scevgep1177
  %found.conflict1183 = and i1 %bound01181, %bound11182
  br label %.preheader359.us.us

._crit_edge503.us:                                ; preds = %._crit_edge.us.us509, %.preheader360.us
  %indvars.iv.next690 = add nuw nsw i64 %indvars.iv689, 1
  %exitcond693.not = icmp eq i64 %indvars.iv.next690, %wide.trip.count692
  %indvar.next1174 = add i32 %indvar1173, 1
  br i1 %exitcond693.not, label %.preheader358, label %.preheader360.us, !llvm.loop !92

.preheader359.us.us:                              ; preds = %.preheader359.us.us.preheader, %._crit_edge.us.us509
  %indvars.iv684 = phi i64 [ 0, %.preheader359.us.us.preheader ], [ %indvars.iv.next685, %._crit_edge.us.us509 ]
  %1345 = mul nuw nsw i64 %indvars.iv684, %1326
  %brmerge = select i1 %min.iters.check1186, i1 true, i1 %found.conflict1183
  br i1 %brmerge, label %scalar.ph1185.preheader, label %vector.body1191

vector.body1191:                                  ; preds = %.preheader359.us.us, %vector.body1191
  %index1192 = phi i64 [ %index.next1197, %vector.body1191 ], [ 0, %.preheader359.us.us ]
  %1346 = add nuw nsw i64 %index1192, %1345
  %1347 = getelementptr float, ptr %invariant.gep, i64 %1346
  %1348 = getelementptr i8, ptr %1347, i64 16
  %wide.load1193 = load <4 x float>, ptr %1347, align 4, !tbaa !5, !alias.scope !93
  %wide.load1194 = load <4 x float>, ptr %1348, align 4, !tbaa !5, !alias.scope !93
  %1349 = getelementptr float, ptr %invariant.gep772, i64 %1346
  %1350 = getelementptr i8, ptr %1349, i64 16
  %wide.load1195 = load <4 x float>, ptr %1349, align 4, !tbaa !5, !alias.scope !96, !noalias !93
  %wide.load1196 = load <4 x float>, ptr %1350, align 4, !tbaa !5, !alias.scope !96, !noalias !93
  %1351 = fadd <4 x float> %wide.load1193, %wide.load1195
  %1352 = fadd <4 x float> %wide.load1194, %wide.load1196
  store <4 x float> %1351, ptr %1349, align 4, !tbaa !5, !alias.scope !96, !noalias !93
  store <4 x float> %1352, ptr %1350, align 4, !tbaa !5, !alias.scope !96, !noalias !93
  %index.next1197 = add nuw i64 %index1192, 8
  %1353 = icmp eq i64 %index.next1197, %n.vec1189
  br i1 %1353, label %middle.block1184, label %vector.body1191, !llvm.loop !98

middle.block1184:                                 ; preds = %vector.body1191
  br i1 %cmp.n1198, label %._crit_edge.us.us509, label %scalar.ph1185.preheader

scalar.ph1185.preheader:                          ; preds = %.preheader359.us.us, %middle.block1184
  %indvars.iv679.ph = phi i64 [ 0, %.preheader359.us.us ], [ %n.vec1189, %middle.block1184 ]
  br i1 %lcmp.mod1295.not, label %scalar.ph1185.prol.loopexit, label %scalar.ph1185.prol

scalar.ph1185.prol:                               ; preds = %scalar.ph1185.preheader
  %1354 = add nuw nsw i64 %indvars.iv679.ph, %1345
  %gep.prol = getelementptr float, ptr %invariant.gep, i64 %1354
  %1355 = load float, ptr %gep.prol, align 4, !tbaa !5
  %gep773.prol = getelementptr float, ptr %invariant.gep772, i64 %1354
  %1356 = load float, ptr %gep773.prol, align 4, !tbaa !5
  %1357 = fadd float %1355, %1356
  store float %1357, ptr %gep773.prol, align 4, !tbaa !5
  %indvars.iv.next680.prol = or disjoint i64 %indvars.iv679.ph, 1
  br label %scalar.ph1185.prol.loopexit

scalar.ph1185.prol.loopexit:                      ; preds = %scalar.ph1185.prol, %scalar.ph1185.preheader
  %indvars.iv679.unr = phi i64 [ %indvars.iv679.ph, %scalar.ph1185.preheader ], [ %indvars.iv.next680.prol, %scalar.ph1185.prol ]
  %1358 = icmp eq i64 %indvars.iv679.ph, %1332
  br i1 %1358, label %._crit_edge.us.us509, label %scalar.ph1185

scalar.ph1185:                                    ; preds = %scalar.ph1185.prol.loopexit, %scalar.ph1185
  %indvars.iv679 = phi i64 [ %indvars.iv.next680.1, %scalar.ph1185 ], [ %indvars.iv679.unr, %scalar.ph1185.prol.loopexit ]
  %1359 = add nuw nsw i64 %indvars.iv679, %1345
  %gep = getelementptr float, ptr %invariant.gep, i64 %1359
  %1360 = load float, ptr %gep, align 4, !tbaa !5
  %gep773 = getelementptr float, ptr %invariant.gep772, i64 %1359
  %1361 = load float, ptr %gep773, align 4, !tbaa !5
  %1362 = fadd float %1360, %1361
  store float %1362, ptr %gep773, align 4, !tbaa !5
  %indvars.iv.next680 = add nuw nsw i64 %indvars.iv679, 1
  %1363 = add nuw nsw i64 %indvars.iv.next680, %1345
  %gep.1 = getelementptr float, ptr %invariant.gep, i64 %1363
  %1364 = load float, ptr %gep.1, align 4, !tbaa !5
  %gep773.1 = getelementptr float, ptr %invariant.gep772, i64 %1363
  %1365 = load float, ptr %gep773.1, align 4, !tbaa !5
  %1366 = fadd float %1364, %1365
  store float %1366, ptr %gep773.1, align 4, !tbaa !5
  %indvars.iv.next680.1 = add nuw nsw i64 %indvars.iv679, 2
  %exitcond683.not.1 = icmp eq i64 %indvars.iv.next680.1, %wide.trip.count682
  br i1 %exitcond683.not.1, label %._crit_edge.us.us509, label %scalar.ph1185, !llvm.loop !99

._crit_edge.us.us509:                             ; preds = %scalar.ph1185.prol.loopexit, %scalar.ph1185, %middle.block1184
  %indvars.iv.next685 = add nuw nsw i64 %indvars.iv684, 1
  %exitcond688.not = icmp eq i64 %indvars.iv.next685, %wide.trip.count687
  br i1 %exitcond688.not, label %._crit_edge503.us, label %.preheader359.us.us, !llvm.loop !100

.preheader358:                                    ; preds = %._crit_edge503.us, %.preheader377, %.preheader374, %.preheader369, %.preheader366, %.preheader361
  %1367 = icmp sgt i32 %5, 0
  br i1 %1367, label %.preheader357.lr.ph, label %._crit_edge

.preheader357.lr.ph:                              ; preds = %.preheader358
  %1368 = icmp sgt i32 %4, 0
  %.not510 = icmp slt i32 %3, 0
  %1369 = sub i32 %6, %3
  %.0315513 = add i32 %3, 1
  %1370 = icmp slt i32 %.0315513, %1369
  %1371 = icmp sgt i32 %3, 0
  %1372 = xor i32 %3, -1
  br i1 %1368, label %.preheader357.us.preheader, label %._crit_edge

.preheader357.us.preheader:                       ; preds = %.preheader357.lr.ph
  %1373 = add nsw i32 %6, -1
  %1374 = mul i32 %27, %1373
  %1375 = sext i32 %1369 to i64
  %1376 = sext i32 %6 to i64
  %1377 = sext i32 %1374 to i64
  %1378 = zext i32 %.0315513 to i64
  %1379 = zext nneg i32 %4 to i64
  %wide.trip.count734 = zext nneg i32 %5 to i64
  %wide.trip.count711 = zext nneg i32 %4 to i64
  %wide.trip.count703 = zext i32 %.0315513 to i64
  %invariant.gep774 = getelementptr float, ptr %1, i64 %1377
  %wide.trip.count729 = zext nneg i32 %4 to i64
  %invariant.gep776 = getelementptr float, ptr %1, i64 %1377
  %1380 = add nsw i32 %4, -1
  %1381 = mul i32 %5, %4
  %1382 = mul i32 %1381, %3
  %1383 = add nsw i64 %wide.trip.count703, -1
  %min.iters.check1204 = icmp ult i32 %4, 4
  %n.vec1207 = and i32 %4, 2147483644
  %1384 = mul i32 %27, %3
  %cmp.n1213 = icmp eq i32 %n.vec1207, %4
  %xtraiter1297 = and i32 %4, 1
  %lcmp.mod1298.not = icmp eq i32 %xtraiter1297, 0
  %1385 = mul i32 %27, %3
  %1386 = add nsw i32 %4, -1
  %1387 = mul i32 %27, %3
  %1388 = mul i32 %27, %3
  %xtraiter1300 = and i64 %wide.trip.count703, 1
  %1389 = icmp eq i64 %1383, 0
  %unroll_iter = and i64 %wide.trip.count703, 4294967294
  %lcmp.mod1301.not = icmp eq i64 %xtraiter1300, 0
  %xtraiter1303 = and i64 %wide.trip.count703, 1
  %1390 = icmp eq i64 %1383, 0
  %unroll_iter1305 = and i64 %wide.trip.count703, 4294967294
  %lcmp.mod1304.not = icmp eq i64 %xtraiter1303, 0
  br label %.preheader357.us

.preheader357.us:                                 ; preds = %.preheader357.us.preheader, %._crit_edge520.us
  %indvars.iv731 = phi i64 [ 0, %.preheader357.us.preheader ], [ %indvars.iv.next732, %._crit_edge520.us ]
  %1391 = mul i64 %indvars.iv731, %wide.trip.count711
  %sext1240 = shl i64 %1391, 32
  %1392 = ashr exact i64 %sext1240, 30
  %1393 = trunc i64 %1391 to i32
  %1394 = add i32 %1382, %1393
  %1395 = sext i32 %1394 to i64
  %1396 = shl nsw i64 %1395, 2
  %1397 = add i64 %1392, %9
  %1398 = add i64 %1396, %8
  %1399 = sub i64 %1397, %1398
  %1400 = trunc i64 %indvars.iv731 to i32
  %1401 = mul i32 %1400, %4
  %1402 = add i32 %1401, %1382
  %1403 = mul nuw nsw i64 %indvars.iv731, %1379
  br i1 %1370, label %.preheader356.us.us, label %.preheader356.lr.ph.split.us541

.preheader356.us537:                              ; preds = %.preheader356.us537.prol.loopexit, %.preheader356.us537
  %.0317519.us538 = phi i32 [ %1419, %.preheader356.us537 ], [ %.0317519.us538.unr, %.preheader356.us537.prol.loopexit ]
  %1404 = add nuw nsw i32 %.0317519.us538, %1487
  %1405 = add nsw i32 %1387, %1404
  %1406 = sext i32 %1405 to i64
  %1407 = getelementptr inbounds float, ptr %1, i64 %1406
  %1408 = load float, ptr %1407, align 4, !tbaa !5
  %1409 = sext i32 %1404 to i64
  %1410 = getelementptr inbounds float, ptr %0, i64 %1409
  store float %1408, ptr %1410, align 4, !tbaa !5
  %1411 = add nuw nsw i32 %.0317519.us538, 1
  %1412 = add nuw nsw i32 %1411, %1487
  %1413 = add nsw i32 %1388, %1412
  %1414 = sext i32 %1413 to i64
  %1415 = getelementptr inbounds float, ptr %1, i64 %1414
  %1416 = load float, ptr %1415, align 4, !tbaa !5
  %1417 = sext i32 %1412 to i64
  %1418 = getelementptr inbounds float, ptr %0, i64 %1417
  store float %1416, ptr %1418, align 4, !tbaa !5
  %1419 = add nuw nsw i32 %.0317519.us538, 2
  %exitcond699.not.1 = icmp eq i32 %1419, %4
  br i1 %exitcond699.not.1, label %._crit_edge520.us, label %.preheader356.us537, !llvm.loop !101

.preheader356.lr.ph.split.us541:                  ; preds = %.preheader357.us
  br i1 %1371, label %.preheader356.us521.us, label %.preheader356.lr.ph.split.split.us543

._crit_edge520.us:                                ; preds = %.preheader356.us537.prol.loopexit, %.preheader356.us537, %._crit_edge.us530.us, %._crit_edge.us.us542, %middle.block1202, %.preheader356.lr.ph.split.split.us543
  %indvars.iv.next732 = add nuw nsw i64 %indvars.iv731, 1
  %exitcond735.not = icmp eq i64 %indvars.iv.next732, %wide.trip.count734
  br i1 %exitcond735.not, label %._crit_edge, label %.preheader357.us, !llvm.loop !102

.preheader356.us.us:                              ; preds = %.preheader357.us, %._crit_edge.us.us542
  %indvars.iv726 = phi i64 [ %indvars.iv.next727, %._crit_edge.us.us542 ], [ 0, %.preheader357.us ]
  %.pre746 = add nuw nsw i64 %indvars.iv726, %1403
  br i1 %.not510, label %.preheader355.us.us, label %.lr.ph512.us.us

.lr.ph512.us.us.new:                              ; preds = %.lr.ph512.us.us, %.lr.ph512.us.us.new
  %indvars.iv713 = phi i64 [ %indvars.iv.next714.1, %.lr.ph512.us.us.new ], [ 0, %.lr.ph512.us.us ]
  %niter1306 = phi i64 [ %niter1306.next.1, %.lr.ph512.us.us.new ], [ 0, %.lr.ph512.us.us ]
  %1420 = trunc i64 %indvars.iv713 to i32
  %1421 = add i32 %1420, %3
  %1422 = mul i32 %27, %1421
  %1423 = sext i32 %1422 to i64
  %1424 = getelementptr float, ptr %1483, i64 %1423
  %1425 = load float, ptr %1424, align 4, !tbaa !5
  %1426 = trunc nuw nsw i64 %indvars.iv713 to i32
  %1427 = mul i32 %27, %1426
  %1428 = sext i32 %1427 to i64
  %1429 = getelementptr float, ptr %1484, i64 %1428
  store float %1425, ptr %1429, align 4, !tbaa !5
  %indvars.iv.next714 = or disjoint i64 %indvars.iv713, 1
  %1430 = trunc i64 %indvars.iv.next714 to i32
  %1431 = add i32 %1430, %3
  %1432 = mul i32 %27, %1431
  %1433 = sext i32 %1432 to i64
  %1434 = getelementptr float, ptr %1483, i64 %1433
  %1435 = load float, ptr %1434, align 4, !tbaa !5
  %1436 = trunc nuw nsw i64 %indvars.iv.next714 to i32
  %1437 = mul i32 %27, %1436
  %1438 = sext i32 %1437 to i64
  %1439 = getelementptr float, ptr %1484, i64 %1438
  store float %1435, ptr %1439, align 4, !tbaa !5
  %indvars.iv.next714.1 = add nuw nsw i64 %indvars.iv713, 2
  %niter1306.next.1 = add i64 %niter1306, 2
  %niter1306.ncmp.1 = icmp eq i64 %niter1306.next.1, %unroll_iter1305
  br i1 %niter1306.ncmp.1, label %.preheader355.us.us.loopexit.unr-lcssa, label %.lr.ph512.us.us.new, !llvm.loop !103

._crit_edge.us.us542:                             ; preds = %1440, %..preheader_crit_edge.us.us
  %indvars.iv.next727 = add nuw nsw i64 %indvars.iv726, 1
  %exitcond730.not = icmp eq i64 %indvars.iv.next727, %wide.trip.count729
  br i1 %exitcond730.not, label %._crit_edge520.us, label %.preheader356.us.us, !llvm.loop !104

1440:                                             ; preds = %.lr.ph518.us.us, %1440
  %indvars.iv723 = phi i64 [ %1375, %.lr.ph518.us.us ], [ %indvars.iv.next724, %1440 ]
  %1441 = load float, ptr %gep777, align 4, !tbaa !5
  %1442 = trunc nsw i64 %indvars.iv723 to i32
  %1443 = add i32 %1442, %1372
  %1444 = mul i32 %27, %1443
  %1445 = sext i32 %1444 to i64
  %1446 = getelementptr float, ptr %1485, i64 %1445
  %1447 = load float, ptr %1446, align 4, !tbaa !5
  %1448 = fsub float %1441, %1447
  %1449 = mul i32 %27, %1442
  %1450 = sext i32 %1449 to i64
  %1451 = getelementptr float, ptr %1486, i64 %1450
  store float %1448, ptr %1451, align 4, !tbaa !5
  %indvars.iv.next724 = add nsw i64 %indvars.iv723, 1
  %1452 = icmp slt i64 %indvars.iv.next724, %1376
  br i1 %1452, label %1440, label %._crit_edge.us.us542, !llvm.loop !105

1453:                                             ; preds = %.preheader355.us.us, %1453
  %indvars.iv718 = phi i64 [ %1378, %.preheader355.us.us ], [ %indvars.iv.next719, %1453 ]
  %.0315.in514.us.us = phi i32 [ %3, %.preheader355.us.us ], [ %1466, %1453 ]
  %1454 = trunc i64 %indvars.iv718 to i32
  %1455 = add i32 %1454, %3
  %1456 = mul i32 %27, %1455
  %1457 = sext i32 %1456 to i64
  %1458 = getelementptr float, ptr %1480, i64 %1457
  %1459 = load float, ptr %1458, align 4, !tbaa !5
  %1460 = sub i32 %.0315.in514.us.us, %3
  %1461 = mul i32 %27, %1460
  %1462 = sext i32 %1461 to i64
  %1463 = getelementptr float, ptr %1481, i64 %1462
  %1464 = load float, ptr %1463, align 4, !tbaa !5
  %1465 = fsub float %1459, %1464
  %1466 = trunc i64 %indvars.iv718 to i32
  %1467 = mul i32 %27, %1466
  %1468 = sext i32 %1467 to i64
  %1469 = getelementptr float, ptr %1482, i64 %1468
  store float %1465, ptr %1469, align 4, !tbaa !5
  %indvars.iv.next719 = add i64 %indvars.iv718, 1
  %lftr.wideiv721 = trunc i64 %indvars.iv.next719 to i32
  %exitcond722.not = icmp eq i32 %1369, %lftr.wideiv721
  br i1 %exitcond722.not, label %..preheader_crit_edge.us.us, label %1453, !llvm.loop !106

.preheader355.us.us.loopexit.unr-lcssa:           ; preds = %.lr.ph512.us.us.new, %.lr.ph512.us.us
  %indvars.iv713.unr = phi i64 [ 0, %.lr.ph512.us.us ], [ %indvars.iv.next714.1, %.lr.ph512.us.us.new ]
  br i1 %lcmp.mod1304.not, label %.preheader355.us.us, label %.preheader355.us.us.loopexit.epilog-lcssa

.preheader355.us.us.loopexit.epilog-lcssa:        ; preds = %.preheader355.us.us.loopexit.unr-lcssa
  %1470 = trunc i64 %indvars.iv713.unr to i32
  %1471 = add i32 %1470, %3
  %1472 = mul i32 %27, %1471
  %1473 = sext i32 %1472 to i64
  %1474 = getelementptr float, ptr %1483, i64 %1473
  %1475 = load float, ptr %1474, align 4, !tbaa !5
  %1476 = trunc nuw nsw i64 %indvars.iv713.unr to i32
  %1477 = mul i32 %27, %1476
  %1478 = sext i32 %1477 to i64
  %1479 = getelementptr float, ptr %1484, i64 %1478
  store float %1475, ptr %1479, align 4, !tbaa !5
  br label %.preheader355.us.us

.preheader355.us.us:                              ; preds = %.preheader355.us.us.loopexit.epilog-lcssa, %.preheader355.us.us.loopexit.unr-lcssa, %.preheader356.us.us
  %1480 = getelementptr float, ptr %1, i64 %.pre746
  %1481 = getelementptr float, ptr %1, i64 %.pre746
  %1482 = getelementptr float, ptr %0, i64 %.pre746
  br label %1453

.lr.ph512.us.us:                                  ; preds = %.preheader356.us.us
  %1483 = getelementptr float, ptr %1, i64 %.pre746
  %1484 = getelementptr float, ptr %0, i64 %.pre746
  br i1 %1390, label %.preheader355.us.us.loopexit.unr-lcssa, label %.lr.ph512.us.us.new

..preheader_crit_edge.us.us:                      ; preds = %1453
  br i1 %1371, label %.lr.ph518.us.us, label %._crit_edge.us.us542

.lr.ph518.us.us:                                  ; preds = %..preheader_crit_edge.us.us
  %gep777 = getelementptr float, ptr %invariant.gep776, i64 %.pre746
  %1485 = getelementptr float, ptr %1, i64 %.pre746
  %1486 = getelementptr float, ptr %0, i64 %.pre746
  br label %1440

.preheader356.lr.ph.split.split.us543:            ; preds = %.preheader356.lr.ph.split.us541
  br i1 %.not510, label %._crit_edge520.us, label %.preheader356.us537.preheader

.preheader356.us537.preheader:                    ; preds = %.preheader356.lr.ph.split.split.us543
  %1487 = trunc nsw i64 %1403 to i32
  %1488 = add i32 %1402, %1380
  %1489 = icmp slt i32 %1488, %1402
  %or.cond1249 = select i1 %min.iters.check1204, i1 true, i1 %1489
  %diff.check1201 = icmp ult i64 %1399, 16
  %or.cond1250 = select i1 %or.cond1249, i1 true, i1 %diff.check1201
  br i1 %or.cond1250, label %.preheader356.us537.preheader1252, label %vector.body1209

.preheader356.us537.preheader1252:                ; preds = %middle.block1202, %.preheader356.us537.preheader
  %.0317519.us538.ph = phi i32 [ 0, %.preheader356.us537.preheader ], [ %n.vec1207, %middle.block1202 ]
  br i1 %lcmp.mod1298.not, label %.preheader356.us537.prol.loopexit, label %.preheader356.us537.prol

.preheader356.us537.prol:                         ; preds = %.preheader356.us537.preheader1252
  %1490 = add nuw nsw i32 %.0317519.us538.ph, %1487
  %1491 = add nsw i32 %1385, %1490
  %1492 = sext i32 %1491 to i64
  %1493 = getelementptr inbounds float, ptr %1, i64 %1492
  %1494 = load float, ptr %1493, align 4, !tbaa !5
  %1495 = sext i32 %1490 to i64
  %1496 = getelementptr inbounds float, ptr %0, i64 %1495
  store float %1494, ptr %1496, align 4, !tbaa !5
  %1497 = or disjoint i32 %.0317519.us538.ph, 1
  br label %.preheader356.us537.prol.loopexit

.preheader356.us537.prol.loopexit:                ; preds = %.preheader356.us537.prol, %.preheader356.us537.preheader1252
  %.0317519.us538.unr = phi i32 [ %.0317519.us538.ph, %.preheader356.us537.preheader1252 ], [ %1497, %.preheader356.us537.prol ]
  %1498 = icmp eq i32 %.0317519.us538.ph, %1386
  br i1 %1498, label %._crit_edge520.us, label %.preheader356.us537

vector.body1209:                                  ; preds = %.preheader356.us537.preheader, %vector.body1209
  %index1210 = phi i32 [ %index.next1212, %vector.body1209 ], [ 0, %.preheader356.us537.preheader ]
  %1499 = add nuw nsw i32 %index1210, %1487
  %1500 = add nsw i32 %1384, %1499
  %1501 = sext i32 %1500 to i64
  %1502 = getelementptr inbounds float, ptr %1, i64 %1501
  %wide.load1211 = load <4 x float>, ptr %1502, align 4, !tbaa !5
  %1503 = sext i32 %1499 to i64
  %1504 = getelementptr inbounds float, ptr %0, i64 %1503
  store <4 x float> %wide.load1211, ptr %1504, align 4, !tbaa !5
  %index.next1212 = add nuw i32 %index1210, 4
  %1505 = icmp eq i32 %index.next1212, %n.vec1207
  br i1 %1505, label %middle.block1202, label %vector.body1209, !llvm.loop !107

middle.block1202:                                 ; preds = %vector.body1209
  br i1 %cmp.n1213, label %._crit_edge520.us, label %.preheader356.us537.preheader1252

.preheader356.us521.us:                           ; preds = %.preheader356.lr.ph.split.us541, %._crit_edge.us530.us
  %indvars.iv708 = phi i64 [ %indvars.iv.next709, %._crit_edge.us530.us ], [ 0, %.preheader356.lr.ph.split.us541 ]
  %.pre748 = add nuw nsw i64 %indvars.iv708, %1403
  br i1 %.not510, label %.preheader355.us526.us, label %.lr.ph512.us527.us

.lr.ph512.us527.us.new:                           ; preds = %.lr.ph512.us527.us, %.lr.ph512.us527.us.new
  %indvars.iv700 = phi i64 [ %indvars.iv.next701.1, %.lr.ph512.us527.us.new ], [ 0, %.lr.ph512.us527.us ]
  %niter = phi i64 [ %niter.next.1, %.lr.ph512.us527.us.new ], [ 0, %.lr.ph512.us527.us ]
  %1506 = trunc i64 %indvars.iv700 to i32
  %1507 = add i32 %1506, %3
  %1508 = mul i32 %27, %1507
  %1509 = sext i32 %1508 to i64
  %1510 = getelementptr float, ptr %1551, i64 %1509
  %1511 = load float, ptr %1510, align 4, !tbaa !5
  %1512 = trunc nuw nsw i64 %indvars.iv700 to i32
  %1513 = mul i32 %27, %1512
  %1514 = sext i32 %1513 to i64
  %1515 = getelementptr float, ptr %1552, i64 %1514
  store float %1511, ptr %1515, align 4, !tbaa !5
  %indvars.iv.next701 = or disjoint i64 %indvars.iv700, 1
  %1516 = trunc i64 %indvars.iv.next701 to i32
  %1517 = add i32 %1516, %3
  %1518 = mul i32 %27, %1517
  %1519 = sext i32 %1518 to i64
  %1520 = getelementptr float, ptr %1551, i64 %1519
  %1521 = load float, ptr %1520, align 4, !tbaa !5
  %1522 = trunc nuw nsw i64 %indvars.iv.next701 to i32
  %1523 = mul i32 %27, %1522
  %1524 = sext i32 %1523 to i64
  %1525 = getelementptr float, ptr %1552, i64 %1524
  store float %1521, ptr %1525, align 4, !tbaa !5
  %indvars.iv.next701.1 = add nuw nsw i64 %indvars.iv700, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %.preheader355.us526.us.loopexit.unr-lcssa, label %.lr.ph512.us527.us.new, !llvm.loop !103

1526:                                             ; preds = %.preheader355.us526.us, %1526
  %indvars.iv705 = phi i64 [ %1375, %.preheader355.us526.us ], [ %indvars.iv.next706, %1526 ]
  %1527 = load float, ptr %gep775, align 4, !tbaa !5
  %1528 = trunc nsw i64 %indvars.iv705 to i32
  %1529 = add i32 %1528, %1372
  %1530 = mul i32 %27, %1529
  %1531 = sext i32 %1530 to i64
  %1532 = getelementptr float, ptr %1549, i64 %1531
  %1533 = load float, ptr %1532, align 4, !tbaa !5
  %1534 = fsub float %1527, %1533
  %1535 = mul i32 %27, %1528
  %1536 = sext i32 %1535 to i64
  %1537 = getelementptr float, ptr %1550, i64 %1536
  store float %1534, ptr %1537, align 4, !tbaa !5
  %indvars.iv.next706 = add nsw i64 %indvars.iv705, 1
  %1538 = icmp slt i64 %indvars.iv.next706, %1376
  br i1 %1538, label %1526, label %._crit_edge.us530.us, !llvm.loop !105

.preheader355.us526.us.loopexit.unr-lcssa:        ; preds = %.lr.ph512.us527.us.new, %.lr.ph512.us527.us
  %indvars.iv700.unr = phi i64 [ 0, %.lr.ph512.us527.us ], [ %indvars.iv.next701.1, %.lr.ph512.us527.us.new ]
  br i1 %lcmp.mod1301.not, label %.preheader355.us526.us, label %.preheader355.us526.us.loopexit.epilog-lcssa

.preheader355.us526.us.loopexit.epilog-lcssa:     ; preds = %.preheader355.us526.us.loopexit.unr-lcssa
  %1539 = trunc i64 %indvars.iv700.unr to i32
  %1540 = add i32 %1539, %3
  %1541 = mul i32 %27, %1540
  %1542 = sext i32 %1541 to i64
  %1543 = getelementptr float, ptr %1551, i64 %1542
  %1544 = load float, ptr %1543, align 4, !tbaa !5
  %1545 = trunc nuw nsw i64 %indvars.iv700.unr to i32
  %1546 = mul i32 %27, %1545
  %1547 = sext i32 %1546 to i64
  %1548 = getelementptr float, ptr %1552, i64 %1547
  store float %1544, ptr %1548, align 4, !tbaa !5
  br label %.preheader355.us526.us

.preheader355.us526.us:                           ; preds = %.preheader355.us526.us.loopexit.epilog-lcssa, %.preheader355.us526.us.loopexit.unr-lcssa, %.preheader356.us521.us
  %gep775 = getelementptr float, ptr %invariant.gep774, i64 %.pre748
  %1549 = getelementptr float, ptr %1, i64 %.pre748
  %1550 = getelementptr float, ptr %0, i64 %.pre748
  br label %1526

.lr.ph512.us527.us:                               ; preds = %.preheader356.us521.us
  %1551 = getelementptr float, ptr %1, i64 %.pre748
  %1552 = getelementptr float, ptr %0, i64 %.pre748
  br i1 %1389, label %.preheader355.us526.us.loopexit.unr-lcssa, label %.lr.ph512.us527.us.new

._crit_edge.us530.us:                             ; preds = %1526
  %indvars.iv.next709 = add nuw nsw i64 %indvars.iv708, 1
  %exitcond712.not = icmp eq i64 %indvars.iv.next709, %wide.trip.count711
  br i1 %exitcond712.not, label %._crit_edge520.us, label %.preheader356.us521.us, !llvm.loop !104

._crit_edge:                                      ; preds = %._crit_edge520.us, %.preheader360.lr.ph, %.preheader357.lr.ph, %.preheader358
  ret void
}

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

attributes #0 = { mustprogress nofree norecurse nosync nounwind memory(argmem: readwrite) 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 speculatable willreturn memory(none) }

!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 = !{!"float", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = distinct !{!9, !10}
!10 = !{!"llvm.loop.unroll.disable"}
!11 = distinct !{!11, !12, !13, !14}
!12 = !{!"llvm.loop.mustprogress"}
!13 = !{!"llvm.loop.isvectorized", i32 1}
!14 = !{!"llvm.loop.unroll.runtime.disable"}
!15 = !{!16}
!16 = distinct !{!16, !17}
!17 = distinct !{!17, !"LVerDomain"}
!18 = !{!19}
!19 = distinct !{!19, !17}
!20 = distinct !{!20, !12, !13, !14}
!21 = distinct !{!21, !12, !13}
!22 = distinct !{!22, !12}
!23 = distinct !{!23, !12}
!24 = distinct !{!24, !12, !13}
!25 = distinct !{!25, !12, !13, !14}
!26 = distinct !{!26, !12, !13}
!27 = distinct !{!27, !12, !13}
!28 = distinct !{!28, !12, !13}
!29 = distinct !{!29, !12, !13, !14}
!30 = !{!31}
!31 = distinct !{!31, !32}
!32 = distinct !{!32, !"LVerDomain"}
!33 = !{!34}
!34 = distinct !{!34, !32}
!35 = !{!36}
!36 = distinct !{!36, !32}
!37 = distinct !{!37, !12, !13, !14}
!38 = distinct !{!38, !12}
!39 = distinct !{!39, !12, !13}
!40 = distinct !{!40, !12, !13, !14}
!41 = distinct !{!41, !12}
!42 = distinct !{!42, !12, !13, !14}
!43 = distinct !{!43, !12, !13}
!44 = distinct !{!44, !12, !13}
!45 = !{!46}
!46 = distinct !{!46, !47}
!47 = distinct !{!47, !"LVerDomain"}
!48 = !{!49}
!49 = distinct !{!49, !47}
!50 = !{!51}
!51 = distinct !{!51, !47}
!52 = distinct !{!52, !12, !13, !14}
!53 = distinct !{!53, !12, !13, !14}
!54 = distinct !{!54, !12, !13}
!55 = !{!56}
!56 = distinct !{!56, !57}
!57 = distinct !{!57, !"LVerDomain"}
!58 = !{!59}
!59 = distinct !{!59, !57}
!60 = distinct !{!60, !12, !13, !14}
!61 = distinct !{!61, !12, !13}
!62 = distinct !{!62, !12}
!63 = distinct !{!63, !12}
!64 = distinct !{!64, !12, !13}
!65 = distinct !{!65, !12}
!66 = distinct !{!66, !12, !13, !14}
!67 = distinct !{!67, !12, !13}
!68 = distinct !{!68, !12}
!69 = distinct !{!69, !12, !13}
!70 = distinct !{!70, !12, !13}
!71 = distinct !{!71, !12, !13, !14}
!72 = !{!73}
!73 = distinct !{!73, !74}
!74 = distinct !{!74, !"LVerDomain"}
!75 = !{!76}
!76 = distinct !{!76, !74}
!77 = !{!78}
!78 = distinct !{!78, !74}
!79 = distinct !{!79, !12, !13, !14}
!80 = distinct !{!80, !12, !13, !14}
!81 = distinct !{!81, !12, !13, !14}
!82 = distinct !{!82, !12, !13}
!83 = distinct !{!83, !12, !13}
!84 = !{!85}
!85 = distinct !{!85, !86}
!86 = distinct !{!86, !"LVerDomain"}
!87 = !{!88}
!88 = distinct !{!88, !86}
!89 = !{!90}
!90 = distinct !{!90, !86}
!91 = distinct !{!91, !12, !13, !14}
!92 = distinct !{!92, !12}
!93 = !{!94}
!94 = distinct !{!94, !95}
!95 = distinct !{!95, !"LVerDomain"}
!96 = !{!97}
!97 = distinct !{!97, !95}
!98 = distinct !{!98, !12, !13, !14}
!99 = distinct !{!99, !12, !13}
!100 = distinct !{!100, !12}
!101 = distinct !{!101, !12, !13}
!102 = distinct !{!102, !12}
!103 = distinct !{!103, !12}
!104 = distinct !{!104, !12}
!105 = distinct !{!105, !12}
!106 = distinct !{!106, !12}
!107 = distinct !{!107, !12, !13, !14}


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