; LLVM IR from libxsmm/libxsmm :: samples/deeplearning/sparse_adagrad_fused (counters)

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

%struct.ctrs_skx_uc = type { [6 x i64], [6 x i64], [6 x i64], [6 x i64], [6 x i64], [28 x i64], [28 x i64], [28 x i64], [28 x i64], [28 x i64], [28 x i64], [28 x i64], [28 x i64], [28 x i64], i32 }

@.str.9 = external hidden unnamed_addr constant [44 x i8], align 1

; 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: nounwind uwtable
define dso_local void @difa_skx_uc_ctrs(ptr noundef %0, ptr noundef %1, ptr noundef %2) #1 {
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  store ptr %0, ptr %4, align 8, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !5
  store ptr %2, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #3
  %10 = load ptr, ptr %4, align 8, !tbaa !5
  %11 = getelementptr inbounds %struct.ctrs_skx_uc, ptr %10, i32 0, i32 14
  %12 = load i32, ptr %11, align 8, !tbaa !9
  %13 = load ptr, ptr %5, align 8, !tbaa !5
  %14 = getelementptr inbounds %struct.ctrs_skx_uc, ptr %13, i32 0, i32 14
  %15 = load i32, ptr %14, align 8, !tbaa !9
  %16 = icmp ne i32 %12, %15
  br i1 %16, label %17, label %19

17:                                               ; preds = %3
  %18 = call i32 (ptr, ...) @printf(ptr noundef @.str.9)
  store i32 1, ptr %9, align 4
  br label %321

19:                                               ; preds = %3
  store i32 0, ptr %7, align 4, !tbaa !12
  br label %20

20:                                               ; preds = %124, %19
  %21 = load i32, ptr %7, align 4, !tbaa !12
  %22 = icmp slt i32 %21, 6
  br i1 %22, label %23, label %127

23:                                               ; preds = %20
  %24 = load ptr, ptr %5, align 8, !tbaa !5
  %25 = getelementptr inbounds %struct.ctrs_skx_uc, ptr %24, i32 0, i32 0
  %26 = load i32, ptr %7, align 4, !tbaa !12
  %27 = sext i32 %26 to i64
  %28 = getelementptr inbounds [6 x i64], ptr %25, i64 0, i64 %27
  %29 = load i64, ptr %28, align 8, !tbaa !13
  %30 = load ptr, ptr %4, align 8, !tbaa !5
  %31 = getelementptr inbounds %struct.ctrs_skx_uc, ptr %30, i32 0, i32 0
  %32 = load i32, ptr %7, align 4, !tbaa !12
  %33 = sext i32 %32 to i64
  %34 = getelementptr inbounds [6 x i64], ptr %31, i64 0, i64 %33
  %35 = load i64, ptr %34, align 8, !tbaa !13
  %36 = sub i64 %29, %35
  %37 = load ptr, ptr %6, align 8, !tbaa !5
  %38 = getelementptr inbounds %struct.ctrs_skx_uc, ptr %37, i32 0, i32 0
  %39 = load i32, ptr %7, align 4, !tbaa !12
  %40 = sext i32 %39 to i64
  %41 = getelementptr inbounds [6 x i64], ptr %38, i64 0, i64 %40
  %42 = load i64, ptr %41, align 8, !tbaa !13
  %43 = add i64 %42, %36
  store i64 %43, ptr %41, align 8, !tbaa !13
  %44 = load ptr, ptr %5, align 8, !tbaa !5
  %45 = getelementptr inbounds %struct.ctrs_skx_uc, ptr %44, i32 0, i32 1
  %46 = load i32, ptr %7, align 4, !tbaa !12
  %47 = sext i32 %46 to i64
  %48 = getelementptr inbounds [6 x i64], ptr %45, i64 0, i64 %47
  %49 = load i64, ptr %48, align 8, !tbaa !13
  %50 = load ptr, ptr %4, align 8, !tbaa !5
  %51 = getelementptr inbounds %struct.ctrs_skx_uc, ptr %50, i32 0, i32 1
  %52 = load i32, ptr %7, align 4, !tbaa !12
  %53 = sext i32 %52 to i64
  %54 = getelementptr inbounds [6 x i64], ptr %51, i64 0, i64 %53
  %55 = load i64, ptr %54, align 8, !tbaa !13
  %56 = sub i64 %49, %55
  %57 = load ptr, ptr %6, align 8, !tbaa !5
  %58 = getelementptr inbounds %struct.ctrs_skx_uc, ptr %57, i32 0, i32 1
  %59 = load i32, ptr %7, align 4, !tbaa !12
  %60 = sext i32 %59 to i64
  %61 = getelementptr inbounds [6 x i64], ptr %58, i64 0, i64 %60
  %62 = load i64, ptr %61, align 8, !tbaa !13
  %63 = add i64 %62, %56
  store i64 %63, ptr %61, align 8, !tbaa !13
  %64 = load ptr, ptr %5, align 8, !tbaa !5
  %65 = getelementptr inbounds %struct.ctrs_skx_uc, ptr %64, i32 0, i32 2
  %66 = load i32, ptr %7, align 4, !tbaa !12
  %67 = sext i32 %66 to i64
  %68 = getelementptr inbounds [6 x i64], ptr %65, i64 0, i64 %67
  %69 = load i64, ptr %68, align 8, !tbaa !13
  %70 = load ptr, ptr %4, align 8, !tbaa !5
  %71 = getelementptr inbounds %struct.ctrs_skx_uc, ptr %70, i32 0, i32 2
  %72 = load i32, ptr %7, align 4, !tbaa !12
  %73 = sext i32 %72 to i64
  %74 = getelementptr inbounds [6 x i64], ptr %71, i64 0, i64 %73
  %75 = load i64, ptr %74, align 8, !tbaa !13
  %76 = sub i64 %69, %75
  %77 = load ptr, ptr %6, align 8, !tbaa !5
  %78 = getelementptr inbounds %struct.ctrs_skx_uc, ptr %77, i32 0, i32 2
  %79 = load i32, ptr %7, align 4, !tbaa !12
  %80 = sext i32 %79 to i64
  %81 = getelementptr inbounds [6 x i64], ptr %78, i64 0, i64 %80
  %82 = load i64, ptr %81, align 8, !tbaa !13
  %83 = add i64 %82, %76
  store i64 %83, ptr %81, align 8, !tbaa !13
  %84 = load ptr, ptr %5, align 8, !tbaa !5
  %85 = getelementptr inbounds %struct.ctrs_skx_uc, ptr %84, i32 0, i32 3
  %86 = load i32, ptr %7, align 4, !tbaa !12
  %87 = sext i32 %86 to i64
  %88 = getelementptr inbounds [6 x i64], ptr %85, i64 0, i64 %87
  %89 = load i64, ptr %88, align 8, !tbaa !13
  %90 = load ptr, ptr %4, align 8, !tbaa !5
  %91 = getelementptr inbounds %struct.ctrs_skx_uc, ptr %90, i32 0, i32 3
  %92 = load i32, ptr %7, align 4, !tbaa !12
  %93 = sext i32 %92 to i64
  %94 = getelementptr inbounds [6 x i64], ptr %91, i64 0, i64 %93
  %95 = load i64, ptr %94, align 8, !tbaa !13
  %96 = sub i64 %89, %95
  %97 = load ptr, ptr %6, align 8, !tbaa !5
  %98 = getelementptr inbounds %struct.ctrs_skx_uc, ptr %97, i32 0, i32 3
  %99 = load i32, ptr %7, align 4, !tbaa !12
  %100 = sext i32 %99 to i64
  %101 = getelementptr inbounds [6 x i64], ptr %98, i64 0, i64 %100
  %102 = load i64, ptr %101, align 8, !tbaa !13
  %103 = add i64 %102, %96
  store i64 %103, ptr %101, align 8, !tbaa !13
  %104 = load ptr, ptr %5, align 8, !tbaa !5
  %105 = getelementptr inbounds %struct.ctrs_skx_uc, ptr %104, i32 0, i32 4
  %106 = load i32, ptr %7, align 4, !tbaa !12
  %107 = sext i32 %106 to i64
  %108 = getelementptr inbounds [6 x i64], ptr %105, i64 0, i64 %107
  %109 = load i64, ptr %108, align 8, !tbaa !13
  %110 = load ptr, ptr %4, align 8, !tbaa !5
  %111 = getelementptr inbounds %struct.ctrs_skx_uc, ptr %110, i32 0, i32 4
  %112 = load i32, ptr %7, align 4, !tbaa !12
  %113 = sext i32 %112 to i64
  %114 = getelementptr inbounds [6 x i64], ptr %111, i64 0, i64 %113
  %115 = load i64, ptr %114, align 8, !tbaa !13
  %116 = sub i64 %109, %115
  %117 = load ptr, ptr %6, align 8, !tbaa !5
  %118 = getelementptr inbounds %struct.ctrs_skx_uc, ptr %117, i32 0, i32 4
  %119 = load i32, ptr %7, align 4, !tbaa !12
  %120 = sext i32 %119 to i64
  %121 = getelementptr inbounds [6 x i64], ptr %118, i64 0, i64 %120
  %122 = load i64, ptr %121, align 8, !tbaa !13
  %123 = add i64 %122, %116
  store i64 %123, ptr %121, align 8, !tbaa !13
  br label %124

124:                                              ; preds = %23
  %125 = load i32, ptr %7, align 4, !tbaa !12
  %126 = add nsw i32 %125, 1
  store i32 %126, ptr %7, align 4, !tbaa !12
  br label %20, !llvm.loop !15

127:                                              ; preds = %20
  store i32 0, ptr %8, align 4, !tbaa !12
  br label %128

128:                                              ; preds = %312, %127
  %129 = load i32, ptr %8, align 4, !tbaa !12
  %130 = icmp slt i32 %129, 28
  br i1 %130, label %131, label %315

131:                                              ; preds = %128
  %132 = load ptr, ptr %5, align 8, !tbaa !5
  %133 = getelementptr inbounds %struct.ctrs_skx_uc, ptr %132, i32 0, i32 5
  %134 = load i32, ptr %8, align 4, !tbaa !12
  %135 = sext i32 %134 to i64
  %136 = getelementptr inbounds [28 x i64], ptr %133, i64 0, i64 %135
  %137 = load i64, ptr %136, align 8, !tbaa !13
  %138 = load ptr, ptr %4, align 8, !tbaa !5
  %139 = getelementptr inbounds %struct.ctrs_skx_uc, ptr %138, i32 0, i32 5
  %140 = load i32, ptr %8, align 4, !tbaa !12
  %141 = sext i32 %140 to i64
  %142 = getelementptr inbounds [28 x i64], ptr %139, i64 0, i64 %141
  %143 = load i64, ptr %142, align 8, !tbaa !13
  %144 = sub i64 %137, %143
  %145 = load ptr, ptr %6, align 8, !tbaa !5
  %146 = getelementptr inbounds %struct.ctrs_skx_uc, ptr %145, i32 0, i32 5
  %147 = load i32, ptr %8, align 4, !tbaa !12
  %148 = sext i32 %147 to i64
  %149 = getelementptr inbounds [28 x i64], ptr %146, i64 0, i64 %148
  %150 = load i64, ptr %149, align 8, !tbaa !13
  %151 = add i64 %150, %144
  store i64 %151, ptr %149, align 8, !tbaa !13
  %152 = load ptr, ptr %5, align 8, !tbaa !5
  %153 = getelementptr inbounds %struct.ctrs_skx_uc, ptr %152, i32 0, i32 6
  %154 = load i32, ptr %8, align 4, !tbaa !12
  %155 = sext i32 %154 to i64
  %156 = getelementptr inbounds [28 x i64], ptr %153, i64 0, i64 %155
  %157 = load i64, ptr %156, align 8, !tbaa !13
  %158 = load ptr, ptr %4, align 8, !tbaa !5
  %159 = getelementptr inbounds %struct.ctrs_skx_uc, ptr %158, i32 0, i32 6
  %160 = load i32, ptr %8, align 4, !tbaa !12
  %161 = sext i32 %160 to i64
  %162 = getelementptr inbounds [28 x i64], ptr %159, i64 0, i64 %161
  %163 = load i64, ptr %162, align 8, !tbaa !13
  %164 = sub i64 %157, %163
  %165 = load ptr, ptr %6, align 8, !tbaa !5
  %166 = getelementptr inbounds %struct.ctrs_skx_uc, ptr %165, i32 0, i32 6
  %167 = load i32, ptr %8, align 4, !tbaa !12
  %168 = sext i32 %167 to i64
  %169 = getelementptr inbounds [28 x i64], ptr %166, i64 0, i64 %168
  %170 = load i64, ptr %169, align 8, !tbaa !13
  %171 = add i64 %170, %164
  store i64 %171, ptr %169, align 8, !tbaa !13
  %172 = load ptr, ptr %5, align 8, !tbaa !5
  %173 = getelementptr inbounds %struct.ctrs_skx_uc, ptr %172, i32 0, i32 7
  %174 = load i32, ptr %8, align 4, !tbaa !12
  %175 = sext i32 %174 to i64
  %176 = getelementptr inbounds [28 x i64], ptr %173, i64 0, i64 %175
  %177 = load i64, ptr %176, align 8, !tbaa !13
  %178 = load ptr, ptr %4, align 8, !tbaa !5
  %179 = getelementptr inbounds %struct.ctrs_skx_uc, ptr %178, i32 0, i32 7
  %180 = load i32, ptr %8, align 4, !tbaa !12
  %181 = sext i32 %180 to i64
  %182 = getelementptr inbounds [28 x i64], ptr %179, i64 0, i64 %181
  %183 = load i64, ptr %182, align 8, !tbaa !13
  %184 = sub i64 %177, %183
  %185 = load ptr, ptr %6, align 8, !tbaa !5
  %186 = getelementptr inbounds %struct.ctrs_skx_uc, ptr %185, i32 0, i32 7
  %187 = load i32, ptr %8, align 4, !tbaa !12
  %188 = sext i32 %187 to i64
  %189 = getelementptr inbounds [28 x i64], ptr %186, i64 0, i64 %188
  %190 = load i64, ptr %189, align 8, !tbaa !13
  %191 = add i64 %190, %184
  store i64 %191, ptr %189, align 8, !tbaa !13
  %192 = load ptr, ptr %5, align 8, !tbaa !5
  %193 = getelementptr inbounds %struct.ctrs_skx_uc, ptr %192, i32 0, i32 8
  %194 = load i32, ptr %8, align 4, !tbaa !12
  %195 = sext i32 %194 to i64
  %196 = getelementptr inbounds [28 x i64], ptr %193, i64 0, i64 %195
  %197 = load i64, ptr %196, align 8, !tbaa !13
  %198 = load ptr, ptr %4, align 8, !tbaa !5
  %199 = getelementptr inbounds %struct.ctrs_skx_uc, ptr %198, i32 0, i32 8
  %200 = load i32, ptr %8, align 4, !tbaa !12
  %201 = sext i32 %200 to i64
  %202 = getelementptr inbounds [28 x i64], ptr %199, i64 0, i64 %201
  %203 = load i64, ptr %202, align 8, !tbaa !13
  %204 = sub i64 %197, %203
  %205 = load ptr, ptr %6, align 8, !tbaa !5
  %206 = getelementptr inbounds %struct.ctrs_skx_uc, ptr %205, i32 0, i32 8
  %207 = load i32, ptr %8, align 4, !tbaa !12
  %208 = sext i32 %207 to i64
  %209 = getelementptr inbounds [28 x i64], ptr %206, i64 0, i64 %208
  %210 = load i64, ptr %209, align 8, !tbaa !13
  %211 = add i64 %210, %204
  store i64 %211, ptr %209, align 8, !tbaa !13
  %212 = load ptr, ptr %5, align 8, !tbaa !5
  %213 = getelementptr inbounds %struct.ctrs_skx_uc, ptr %212, i32 0, i32 9
  %214 = load i32, ptr %8, align 4, !tbaa !12
  %215 = sext i32 %214 to i64
  %216 = getelementptr inbounds [28 x i64], ptr %213, i64 0, i64 %215
  %217 = load i64, ptr %216, align 8, !tbaa !13
  %218 = load ptr, ptr %4, align 8, !tbaa !5
  %219 = getelementptr inbounds %struct.ctrs_skx_uc, ptr %218, i32 0, i32 9
  %220 = load i32, ptr %8, align 4, !tbaa !12
  %221 = sext i32 %220 to i64
  %222 = getelementptr inbounds [28 x i64], ptr %219, i64 0, i64 %221
  %223 = load i64, ptr %222, align 8, !tbaa !13
  %224 = sub i64 %217, %223
  %225 = load ptr, ptr %6, align 8, !tbaa !5
  %226 = getelementptr inbounds %struct.ctrs_skx_uc, ptr %225, i32 0, i32 9
  %227 = load i32, ptr %8, align 4, !tbaa !12
  %228 = sext i32 %227 to i64
  %229 = getelementptr inbounds [28 x i64], ptr %226, i64 0, i64 %228
  %230 = load i64, ptr %229, align 8, !tbaa !13
  %231 = add i64 %230, %224
  store i64 %231, ptr %229, align 8, !tbaa !13
  %232 = load ptr, ptr %5, align 8, !tbaa !5
  %233 = getelementptr inbounds %struct.ctrs_skx_uc, ptr %232, i32 0, i32 10
  %234 = load i32, ptr %8, align 4, !tbaa !12
  %235 = sext i32 %234 to i64
  %236 = getelementptr inbounds [28 x i64], ptr %233, i64 0, i64 %235
  %237 = load i64, ptr %236, align 8, !tbaa !13
  %238 = load ptr, ptr %4, align 8, !tbaa !5
  %239 = getelementptr inbounds %struct.ctrs_skx_uc, ptr %238, i32 0, i32 10
  %240 = load i32, ptr %8, align 4, !tbaa !12
  %241 = sext i32 %240 to i64
  %242 = getelementptr inbounds [28 x i64], ptr %239, i64 0, i64 %241
  %243 = load i64, ptr %242, align 8, !tbaa !13
  %244 = sub i64 %237, %243
  %245 = load ptr, ptr %6, align 8, !tbaa !5
  %246 = getelementptr inbounds %struct.ctrs_skx_uc, ptr %245, i32 0, i32 10
  %247 = load i32, ptr %8, align 4, !tbaa !12
  %248 = sext i32 %247 to i64
  %249 = getelementptr inbounds [28 x i64], ptr %246, i64 0, i64 %248
  %250 = load i64, ptr %249, align 8, !tbaa !13
  %251 = add i64 %250, %244
  store i64 %251, ptr %249, align 8, !tbaa !13
  %252 = load ptr, ptr %5, align 8, !tbaa !5
  %253 = getelementptr inbounds %struct.ctrs_skx_uc, ptr %252, i32 0, i32 11
  %254 = load i32, ptr %8, align 4, !tbaa !12
  %255 = sext i32 %254 to i64
  %256 = getelementptr inbounds [28 x i64], ptr %253, i64 0, i64 %255
  %257 = load i64, ptr %256, align 8, !tbaa !13
  %258 = load ptr, ptr %4, align 8, !tbaa !5
  %259 = getelementptr inbounds %struct.ctrs_skx_uc, ptr %258, i32 0, i32 11
  %260 = load i32, ptr %8, align 4, !tbaa !12
  %261 = sext i32 %260 to i64
  %262 = getelementptr inbounds [28 x i64], ptr %259, i64 0, i64 %261
  %263 = load i64, ptr %262, align 8, !tbaa !13
  %264 = sub i64 %257, %263
  %265 = load ptr, ptr %6, align 8, !tbaa !5
  %266 = getelementptr inbounds %struct.ctrs_skx_uc, ptr %265, i32 0, i32 11
  %267 = load i32, ptr %8, align 4, !tbaa !12
  %268 = sext i32 %267 to i64
  %269 = getelementptr inbounds [28 x i64], ptr %266, i64 0, i64 %268
  %270 = load i64, ptr %269, align 8, !tbaa !13
  %271 = add i64 %270, %264
  store i64 %271, ptr %269, align 8, !tbaa !13
  %272 = load ptr, ptr %5, align 8, !tbaa !5
  %273 = getelementptr inbounds %struct.ctrs_skx_uc, ptr %272, i32 0, i32 12
  %274 = load i32, ptr %8, align 4, !tbaa !12
  %275 = sext i32 %274 to i64
  %276 = getelementptr inbounds [28 x i64], ptr %273, i64 0, i64 %275
  %277 = load i64, ptr %276, align 8, !tbaa !13
  %278 = load ptr, ptr %4, align 8, !tbaa !5
  %279 = getelementptr inbounds %struct.ctrs_skx_uc, ptr %278, i32 0, i32 12
  %280 = load i32, ptr %8, align 4, !tbaa !12
  %281 = sext i32 %280 to i64
  %282 = getelementptr inbounds [28 x i64], ptr %279, i64 0, i64 %281
  %283 = load i64, ptr %282, align 8, !tbaa !13
  %284 = sub i64 %277, %283
  %285 = load ptr, ptr %6, align 8, !tbaa !5
  %286 = getelementptr inbounds %struct.ctrs_skx_uc, ptr %285, i32 0, i32 12
  %287 = load i32, ptr %8, align 4, !tbaa !12
  %288 = sext i32 %287 to i64
  %289 = getelementptr inbounds [28 x i64], ptr %286, i64 0, i64 %288
  %290 = load i64, ptr %289, align 8, !tbaa !13
  %291 = add i64 %290, %284
  store i64 %291, ptr %289, align 8, !tbaa !13
  %292 = load ptr, ptr %5, align 8, !tbaa !5
  %293 = getelementptr inbounds %struct.ctrs_skx_uc, ptr %292, i32 0, i32 13
  %294 = load i32, ptr %8, align 4, !tbaa !12
  %295 = sext i32 %294 to i64
  %296 = getelementptr inbounds [28 x i64], ptr %293, i64 0, i64 %295
  %297 = load i64, ptr %296, align 8, !tbaa !13
  %298 = load ptr, ptr %4, align 8, !tbaa !5
  %299 = getelementptr inbounds %struct.ctrs_skx_uc, ptr %298, i32 0, i32 13
  %300 = load i32, ptr %8, align 4, !tbaa !12
  %301 = sext i32 %300 to i64
  %302 = getelementptr inbounds [28 x i64], ptr %299, i64 0, i64 %301
  %303 = load i64, ptr %302, align 8, !tbaa !13
  %304 = sub i64 %297, %303
  %305 = load ptr, ptr %6, align 8, !tbaa !5
  %306 = getelementptr inbounds %struct.ctrs_skx_uc, ptr %305, i32 0, i32 13
  %307 = load i32, ptr %8, align 4, !tbaa !12
  %308 = sext i32 %307 to i64
  %309 = getelementptr inbounds [28 x i64], ptr %306, i64 0, i64 %308
  %310 = load i64, ptr %309, align 8, !tbaa !13
  %311 = add i64 %310, %304
  store i64 %311, ptr %309, align 8, !tbaa !13
  br label %312

312:                                              ; preds = %131
  %313 = load i32, ptr %8, align 4, !tbaa !12
  %314 = add nsw i32 %313, 1
  store i32 %314, ptr %8, align 4, !tbaa !12
  br label %128, !llvm.loop !17

315:                                              ; preds = %128
  %316 = load ptr, ptr %4, align 8, !tbaa !5
  %317 = getelementptr inbounds %struct.ctrs_skx_uc, ptr %316, i32 0, i32 14
  %318 = load i32, ptr %317, align 8, !tbaa !9
  %319 = load ptr, ptr %6, align 8, !tbaa !5
  %320 = getelementptr inbounds %struct.ctrs_skx_uc, ptr %319, i32 0, i32 14
  store i32 %318, ptr %320, align 8, !tbaa !9
  store i32 0, ptr %9, align 4
  br label %321

321:                                              ; preds = %315, %17
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #3
  %322 = load i32, ptr %9, align 4
  switch i32 %322, label %324 [
    i32 0, label %323
    i32 1, label %323
  ]

323:                                              ; preds = %321, %321
  ret void

324:                                              ; preds = %321
  unreachable
}

declare i32 @printf(ptr noundef, ...) #2

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !11, i64 2256}
!10 = !{!"ctrs_skx_uc", !7, i64 0, !7, i64 48, !7, i64 96, !7, i64 144, !7, i64 192, !7, i64 240, !7, i64 464, !7, i64 688, !7, i64 912, !7, i64 1136, !7, i64 1360, !7, i64 1584, !7, i64 1808, !7, i64 2032, !11, i64 2256}
!11 = !{!"int", !7, i64 0}
!12 = !{!11, !11, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"long", !7, i64 0}
!15 = distinct !{!15, !16}
!16 = !{!"llvm.loop.mustprogress"}
!17 = distinct !{!17, !16}


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

@.str.9 = external hidden unnamed_addr constant [44 x i8], align 1

; Function Attrs: nofree nounwind uwtable
define dso_local void @difa_skx_uc_ctrs(ptr nocapture noundef readonly %0, ptr nocapture noundef readonly %1, ptr nocapture noundef %2) local_unnamed_addr #0 {
  %4 = getelementptr inbounds i8, ptr %0, i64 2256
  %5 = load i32, ptr %4, align 8, !tbaa !5
  %6 = getelementptr inbounds i8, ptr %1, i64 2256
  %7 = load i32, ptr %6, align 8, !tbaa !5
  %.not = icmp eq i32 %5, %7
  br i1 %.not, label %.preheader105, label %318

.preheader105:                                    ; preds = %3
  %8 = getelementptr inbounds i8, ptr %1, i64 48
  %9 = getelementptr inbounds i8, ptr %0, i64 48
  %10 = getelementptr inbounds i8, ptr %2, i64 48
  %11 = getelementptr inbounds i8, ptr %1, i64 96
  %12 = getelementptr inbounds i8, ptr %0, i64 96
  %13 = getelementptr inbounds i8, ptr %2, i64 96
  %14 = getelementptr inbounds i8, ptr %1, i64 144
  %15 = getelementptr inbounds i8, ptr %0, i64 144
  %16 = getelementptr inbounds i8, ptr %2, i64 144
  %17 = getelementptr inbounds i8, ptr %1, i64 192
  %18 = getelementptr inbounds i8, ptr %0, i64 192
  %19 = getelementptr inbounds i8, ptr %2, i64 192
  %20 = load i64, ptr %1, align 8, !tbaa !10
  %21 = load i64, ptr %0, align 8, !tbaa !10
  %22 = sub i64 %20, %21
  %23 = load i64, ptr %2, align 8, !tbaa !10
  %24 = add i64 %22, %23
  store i64 %24, ptr %2, align 8, !tbaa !10
  %25 = load i64, ptr %8, align 8, !tbaa !10
  %26 = load i64, ptr %9, align 8, !tbaa !10
  %27 = sub i64 %25, %26
  %28 = load i64, ptr %10, align 8, !tbaa !10
  %29 = add i64 %27, %28
  store i64 %29, ptr %10, align 8, !tbaa !10
  %30 = load i64, ptr %11, align 8, !tbaa !10
  %31 = load i64, ptr %12, align 8, !tbaa !10
  %32 = sub i64 %30, %31
  %33 = load i64, ptr %13, align 8, !tbaa !10
  %34 = add i64 %32, %33
  store i64 %34, ptr %13, align 8, !tbaa !10
  %35 = load i64, ptr %14, align 8, !tbaa !10
  %36 = load i64, ptr %15, align 8, !tbaa !10
  %37 = sub i64 %35, %36
  %38 = load i64, ptr %16, align 8, !tbaa !10
  %39 = add i64 %37, %38
  store i64 %39, ptr %16, align 8, !tbaa !10
  %40 = load i64, ptr %17, align 8, !tbaa !10
  %41 = load i64, ptr %18, align 8, !tbaa !10
  %42 = sub i64 %40, %41
  %43 = load i64, ptr %19, align 8, !tbaa !10
  %44 = add i64 %42, %43
  store i64 %44, ptr %19, align 8, !tbaa !10
  %45 = getelementptr inbounds i8, ptr %1, i64 8
  %46 = load i64, ptr %45, align 8, !tbaa !10
  %47 = getelementptr inbounds i8, ptr %0, i64 8
  %48 = load i64, ptr %47, align 8, !tbaa !10
  %49 = sub i64 %46, %48
  %50 = getelementptr inbounds i8, ptr %2, i64 8
  %51 = load i64, ptr %50, align 8, !tbaa !10
  %52 = add i64 %49, %51
  store i64 %52, ptr %50, align 8, !tbaa !10
  %53 = getelementptr inbounds i8, ptr %1, i64 56
  %54 = load i64, ptr %53, align 8, !tbaa !10
  %55 = getelementptr inbounds i8, ptr %0, i64 56
  %56 = load i64, ptr %55, align 8, !tbaa !10
  %57 = sub i64 %54, %56
  %58 = getelementptr inbounds i8, ptr %2, i64 56
  %59 = load i64, ptr %58, align 8, !tbaa !10
  %60 = add i64 %57, %59
  store i64 %60, ptr %58, align 8, !tbaa !10
  %61 = getelementptr inbounds i8, ptr %1, i64 104
  %62 = load i64, ptr %61, align 8, !tbaa !10
  %63 = getelementptr inbounds i8, ptr %0, i64 104
  %64 = load i64, ptr %63, align 8, !tbaa !10
  %65 = sub i64 %62, %64
  %66 = getelementptr inbounds i8, ptr %2, i64 104
  %67 = load i64, ptr %66, align 8, !tbaa !10
  %68 = add i64 %65, %67
  store i64 %68, ptr %66, align 8, !tbaa !10
  %69 = getelementptr inbounds i8, ptr %1, i64 152
  %70 = load i64, ptr %69, align 8, !tbaa !10
  %71 = getelementptr inbounds i8, ptr %0, i64 152
  %72 = load i64, ptr %71, align 8, !tbaa !10
  %73 = sub i64 %70, %72
  %74 = getelementptr inbounds i8, ptr %2, i64 152
  %75 = load i64, ptr %74, align 8, !tbaa !10
  %76 = add i64 %73, %75
  store i64 %76, ptr %74, align 8, !tbaa !10
  %77 = getelementptr inbounds i8, ptr %1, i64 200
  %78 = load i64, ptr %77, align 8, !tbaa !10
  %79 = getelementptr inbounds i8, ptr %0, i64 200
  %80 = load i64, ptr %79, align 8, !tbaa !10
  %81 = sub i64 %78, %80
  %82 = getelementptr inbounds i8, ptr %2, i64 200
  %83 = load i64, ptr %82, align 8, !tbaa !10
  %84 = add i64 %81, %83
  store i64 %84, ptr %82, align 8, !tbaa !10
  %85 = getelementptr inbounds i8, ptr %1, i64 16
  %86 = load i64, ptr %85, align 8, !tbaa !10
  %87 = getelementptr inbounds i8, ptr %0, i64 16
  %88 = load i64, ptr %87, align 8, !tbaa !10
  %89 = sub i64 %86, %88
  %90 = getelementptr inbounds i8, ptr %2, i64 16
  %91 = load i64, ptr %90, align 8, !tbaa !10
  %92 = add i64 %89, %91
  store i64 %92, ptr %90, align 8, !tbaa !10
  %93 = getelementptr inbounds i8, ptr %1, i64 64
  %94 = load i64, ptr %93, align 8, !tbaa !10
  %95 = getelementptr inbounds i8, ptr %0, i64 64
  %96 = load i64, ptr %95, align 8, !tbaa !10
  %97 = sub i64 %94, %96
  %98 = getelementptr inbounds i8, ptr %2, i64 64
  %99 = load i64, ptr %98, align 8, !tbaa !10
  %100 = add i64 %97, %99
  store i64 %100, ptr %98, align 8, !tbaa !10
  %101 = getelementptr inbounds i8, ptr %1, i64 112
  %102 = load i64, ptr %101, align 8, !tbaa !10
  %103 = getelementptr inbounds i8, ptr %0, i64 112
  %104 = load i64, ptr %103, align 8, !tbaa !10
  %105 = sub i64 %102, %104
  %106 = getelementptr inbounds i8, ptr %2, i64 112
  %107 = load i64, ptr %106, align 8, !tbaa !10
  %108 = add i64 %105, %107
  store i64 %108, ptr %106, align 8, !tbaa !10
  %109 = getelementptr inbounds i8, ptr %1, i64 160
  %110 = load i64, ptr %109, align 8, !tbaa !10
  %111 = getelementptr inbounds i8, ptr %0, i64 160
  %112 = load i64, ptr %111, align 8, !tbaa !10
  %113 = sub i64 %110, %112
  %114 = getelementptr inbounds i8, ptr %2, i64 160
  %115 = load i64, ptr %114, align 8, !tbaa !10
  %116 = add i64 %113, %115
  store i64 %116, ptr %114, align 8, !tbaa !10
  %117 = getelementptr inbounds i8, ptr %1, i64 208
  %118 = load i64, ptr %117, align 8, !tbaa !10
  %119 = getelementptr inbounds i8, ptr %0, i64 208
  %120 = load i64, ptr %119, align 8, !tbaa !10
  %121 = sub i64 %118, %120
  %122 = getelementptr inbounds i8, ptr %2, i64 208
  %123 = load i64, ptr %122, align 8, !tbaa !10
  %124 = add i64 %121, %123
  store i64 %124, ptr %122, align 8, !tbaa !10
  %125 = getelementptr inbounds i8, ptr %1, i64 24
  %126 = load i64, ptr %125, align 8, !tbaa !10
  %127 = getelementptr inbounds i8, ptr %0, i64 24
  %128 = load i64, ptr %127, align 8, !tbaa !10
  %129 = sub i64 %126, %128
  %130 = getelementptr inbounds i8, ptr %2, i64 24
  %131 = load i64, ptr %130, align 8, !tbaa !10
  %132 = add i64 %129, %131
  store i64 %132, ptr %130, align 8, !tbaa !10
  %133 = getelementptr inbounds i8, ptr %1, i64 72
  %134 = load i64, ptr %133, align 8, !tbaa !10
  %135 = getelementptr inbounds i8, ptr %0, i64 72
  %136 = load i64, ptr %135, align 8, !tbaa !10
  %137 = sub i64 %134, %136
  %138 = getelementptr inbounds i8, ptr %2, i64 72
  %139 = load i64, ptr %138, align 8, !tbaa !10
  %140 = add i64 %137, %139
  store i64 %140, ptr %138, align 8, !tbaa !10
  %141 = getelementptr inbounds i8, ptr %1, i64 120
  %142 = load i64, ptr %141, align 8, !tbaa !10
  %143 = getelementptr inbounds i8, ptr %0, i64 120
  %144 = load i64, ptr %143, align 8, !tbaa !10
  %145 = sub i64 %142, %144
  %146 = getelementptr inbounds i8, ptr %2, i64 120
  %147 = load i64, ptr %146, align 8, !tbaa !10
  %148 = add i64 %145, %147
  store i64 %148, ptr %146, align 8, !tbaa !10
  %149 = getelementptr inbounds i8, ptr %1, i64 168
  %150 = load i64, ptr %149, align 8, !tbaa !10
  %151 = getelementptr inbounds i8, ptr %0, i64 168
  %152 = load i64, ptr %151, align 8, !tbaa !10
  %153 = sub i64 %150, %152
  %154 = getelementptr inbounds i8, ptr %2, i64 168
  %155 = load i64, ptr %154, align 8, !tbaa !10
  %156 = add i64 %153, %155
  store i64 %156, ptr %154, align 8, !tbaa !10
  %157 = getelementptr inbounds i8, ptr %1, i64 216
  %158 = load i64, ptr %157, align 8, !tbaa !10
  %159 = getelementptr inbounds i8, ptr %0, i64 216
  %160 = load i64, ptr %159, align 8, !tbaa !10
  %161 = sub i64 %158, %160
  %162 = getelementptr inbounds i8, ptr %2, i64 216
  %163 = load i64, ptr %162, align 8, !tbaa !10
  %164 = add i64 %161, %163
  store i64 %164, ptr %162, align 8, !tbaa !10
  %165 = getelementptr inbounds i8, ptr %1, i64 32
  %166 = load i64, ptr %165, align 8, !tbaa !10
  %167 = getelementptr inbounds i8, ptr %0, i64 32
  %168 = load i64, ptr %167, align 8, !tbaa !10
  %169 = sub i64 %166, %168
  %170 = getelementptr inbounds i8, ptr %2, i64 32
  %171 = load i64, ptr %170, align 8, !tbaa !10
  %172 = add i64 %169, %171
  store i64 %172, ptr %170, align 8, !tbaa !10
  %173 = getelementptr inbounds i8, ptr %1, i64 80
  %174 = load i64, ptr %173, align 8, !tbaa !10
  %175 = getelementptr inbounds i8, ptr %0, i64 80
  %176 = load i64, ptr %175, align 8, !tbaa !10
  %177 = sub i64 %174, %176
  %178 = getelementptr inbounds i8, ptr %2, i64 80
  %179 = load i64, ptr %178, align 8, !tbaa !10
  %180 = add i64 %177, %179
  store i64 %180, ptr %178, align 8, !tbaa !10
  %181 = getelementptr inbounds i8, ptr %1, i64 128
  %182 = load i64, ptr %181, align 8, !tbaa !10
  %183 = getelementptr inbounds i8, ptr %0, i64 128
  %184 = load i64, ptr %183, align 8, !tbaa !10
  %185 = sub i64 %182, %184
  %186 = getelementptr inbounds i8, ptr %2, i64 128
  %187 = load i64, ptr %186, align 8, !tbaa !10
  %188 = add i64 %185, %187
  store i64 %188, ptr %186, align 8, !tbaa !10
  %189 = getelementptr inbounds i8, ptr %1, i64 176
  %190 = load i64, ptr %189, align 8, !tbaa !10
  %191 = getelementptr inbounds i8, ptr %0, i64 176
  %192 = load i64, ptr %191, align 8, !tbaa !10
  %193 = sub i64 %190, %192
  %194 = getelementptr inbounds i8, ptr %2, i64 176
  %195 = load i64, ptr %194, align 8, !tbaa !10
  %196 = add i64 %193, %195
  store i64 %196, ptr %194, align 8, !tbaa !10
  %197 = getelementptr inbounds i8, ptr %1, i64 224
  %198 = load i64, ptr %197, align 8, !tbaa !10
  %199 = getelementptr inbounds i8, ptr %0, i64 224
  %200 = load i64, ptr %199, align 8, !tbaa !10
  %201 = sub i64 %198, %200
  %202 = getelementptr inbounds i8, ptr %2, i64 224
  %203 = load i64, ptr %202, align 8, !tbaa !10
  %204 = add i64 %201, %203
  store i64 %204, ptr %202, align 8, !tbaa !10
  %205 = getelementptr inbounds i8, ptr %1, i64 40
  %206 = load i64, ptr %205, align 8, !tbaa !10
  %207 = getelementptr inbounds i8, ptr %0, i64 40
  %208 = load i64, ptr %207, align 8, !tbaa !10
  %209 = sub i64 %206, %208
  %210 = getelementptr inbounds i8, ptr %2, i64 40
  %211 = load i64, ptr %210, align 8, !tbaa !10
  %212 = add i64 %209, %211
  store i64 %212, ptr %210, align 8, !tbaa !10
  %213 = getelementptr inbounds i8, ptr %1, i64 88
  %214 = load i64, ptr %213, align 8, !tbaa !10
  %215 = getelementptr inbounds i8, ptr %0, i64 88
  %216 = load i64, ptr %215, align 8, !tbaa !10
  %217 = sub i64 %214, %216
  %218 = getelementptr inbounds i8, ptr %2, i64 88
  %219 = load i64, ptr %218, align 8, !tbaa !10
  %220 = add i64 %217, %219
  store i64 %220, ptr %218, align 8, !tbaa !10
  %221 = getelementptr inbounds i8, ptr %1, i64 136
  %222 = load i64, ptr %221, align 8, !tbaa !10
  %223 = getelementptr inbounds i8, ptr %0, i64 136
  %224 = load i64, ptr %223, align 8, !tbaa !10
  %225 = sub i64 %222, %224
  %226 = getelementptr inbounds i8, ptr %2, i64 136
  %227 = load i64, ptr %226, align 8, !tbaa !10
  %228 = add i64 %225, %227
  store i64 %228, ptr %226, align 8, !tbaa !10
  %229 = getelementptr inbounds i8, ptr %1, i64 184
  %230 = load i64, ptr %229, align 8, !tbaa !10
  %231 = getelementptr inbounds i8, ptr %0, i64 184
  %232 = load i64, ptr %231, align 8, !tbaa !10
  %233 = sub i64 %230, %232
  %234 = getelementptr inbounds i8, ptr %2, i64 184
  %235 = load i64, ptr %234, align 8, !tbaa !10
  %236 = add i64 %233, %235
  store i64 %236, ptr %234, align 8, !tbaa !10
  %237 = getelementptr inbounds i8, ptr %1, i64 232
  %238 = load i64, ptr %237, align 8, !tbaa !10
  %239 = getelementptr inbounds i8, ptr %0, i64 232
  %240 = load i64, ptr %239, align 8, !tbaa !10
  %241 = sub i64 %238, %240
  %242 = getelementptr inbounds i8, ptr %2, i64 232
  %243 = load i64, ptr %242, align 8, !tbaa !10
  %244 = add i64 %241, %243
  store i64 %244, ptr %242, align 8, !tbaa !10
  %245 = getelementptr inbounds i8, ptr %1, i64 240
  %246 = getelementptr i8, ptr %0, i64 240
  %247 = getelementptr i8, ptr %2, i64 240
  %248 = getelementptr inbounds i8, ptr %1, i64 464
  %249 = getelementptr inbounds i8, ptr %0, i64 464
  %250 = getelementptr inbounds i8, ptr %2, i64 464
  %251 = getelementptr inbounds i8, ptr %1, i64 688
  %252 = getelementptr inbounds i8, ptr %0, i64 688
  %253 = getelementptr inbounds i8, ptr %2, i64 688
  %254 = getelementptr inbounds i8, ptr %1, i64 912
  %255 = getelementptr inbounds i8, ptr %0, i64 912
  %256 = getelementptr inbounds i8, ptr %2, i64 912
  %257 = getelementptr inbounds i8, ptr %1, i64 1136
  %258 = getelementptr inbounds i8, ptr %0, i64 1136
  %259 = getelementptr inbounds i8, ptr %2, i64 1136
  %260 = getelementptr inbounds i8, ptr %1, i64 1360
  %261 = getelementptr inbounds i8, ptr %0, i64 1360
  %262 = getelementptr inbounds i8, ptr %2, i64 1360
  %263 = getelementptr inbounds i8, ptr %1, i64 1584
  %264 = getelementptr inbounds i8, ptr %0, i64 1584
  %265 = getelementptr inbounds i8, ptr %2, i64 1584
  %266 = getelementptr inbounds i8, ptr %1, i64 1808
  %267 = getelementptr inbounds i8, ptr %0, i64 1808
  %268 = getelementptr inbounds i8, ptr %2, i64 1808
  %269 = getelementptr inbounds i8, ptr %1, i64 2032
  %270 = getelementptr inbounds i8, ptr %0, i64 2032
  %271 = getelementptr inbounds i8, ptr %2, i64 2032
  %scevgep = getelementptr i8, ptr %2, i64 2256
  %scevgep110 = getelementptr i8, ptr %1, i64 2256
  %scevgep111 = getelementptr i8, ptr %0, i64 2256
  %bound0 = icmp ult ptr %247, %scevgep110
  %bound1 = icmp ult ptr %245, %scevgep
  %found.conflict = and i1 %bound0, %bound1
  %bound0112 = icmp ult ptr %247, %scevgep111
  %bound1113 = icmp ult ptr %246, %scevgep
  %found.conflict114 = and i1 %bound0112, %bound1113
  %conflict.rdx = or i1 %found.conflict, %found.conflict114
  br i1 %conflict.rdx, label %scalar.ph, label %vector.body

vector.body:                                      ; preds = %.preheader105, %vector.body
  %index = phi i64 [ %index.next, %vector.body ], [ 0, %.preheader105 ]
  %272 = getelementptr inbounds [28 x i64], ptr %245, i64 0, i64 %index
  %wide.load = load <2 x i64>, ptr %272, align 8, !tbaa !10, !alias.scope !12
  %273 = getelementptr inbounds [28 x i64], ptr %246, i64 0, i64 %index
  %wide.load115 = load <2 x i64>, ptr %273, align 8, !tbaa !10, !alias.scope !15
  %274 = sub <2 x i64> %wide.load, %wide.load115
  %275 = getelementptr inbounds [28 x i64], ptr %247, i64 0, i64 %index
  %wide.load116 = load <2 x i64>, ptr %275, align 8, !tbaa !10, !alias.scope !17, !noalias !19
  %276 = add <2 x i64> %274, %wide.load116
  store <2 x i64> %276, ptr %275, align 8, !tbaa !10, !alias.scope !17, !noalias !19
  %277 = getelementptr inbounds [28 x i64], ptr %248, i64 0, i64 %index
  %wide.load117 = load <2 x i64>, ptr %277, align 8, !tbaa !10, !alias.scope !12
  %278 = getelementptr inbounds [28 x i64], ptr %249, i64 0, i64 %index
  %wide.load118 = load <2 x i64>, ptr %278, align 8, !tbaa !10, !alias.scope !15
  %279 = sub <2 x i64> %wide.load117, %wide.load118
  %280 = getelementptr inbounds [28 x i64], ptr %250, i64 0, i64 %index
  %wide.load119 = load <2 x i64>, ptr %280, align 8, !tbaa !10, !alias.scope !17, !noalias !19
  %281 = add <2 x i64> %279, %wide.load119
  store <2 x i64> %281, ptr %280, align 8, !tbaa !10, !alias.scope !17, !noalias !19
  %282 = getelementptr inbounds [28 x i64], ptr %251, i64 0, i64 %index
  %wide.load120 = load <2 x i64>, ptr %282, align 8, !tbaa !10, !alias.scope !12
  %283 = getelementptr inbounds [28 x i64], ptr %252, i64 0, i64 %index
  %wide.load121 = load <2 x i64>, ptr %283, align 8, !tbaa !10, !alias.scope !15
  %284 = sub <2 x i64> %wide.load120, %wide.load121
  %285 = getelementptr inbounds [28 x i64], ptr %253, i64 0, i64 %index
  %wide.load122 = load <2 x i64>, ptr %285, align 8, !tbaa !10, !alias.scope !17, !noalias !19
  %286 = add <2 x i64> %284, %wide.load122
  store <2 x i64> %286, ptr %285, align 8, !tbaa !10, !alias.scope !17, !noalias !19
  %287 = getelementptr inbounds [28 x i64], ptr %254, i64 0, i64 %index
  %wide.load123 = load <2 x i64>, ptr %287, align 8, !tbaa !10, !alias.scope !12
  %288 = getelementptr inbounds [28 x i64], ptr %255, i64 0, i64 %index
  %wide.load124 = load <2 x i64>, ptr %288, align 8, !tbaa !10, !alias.scope !15
  %289 = sub <2 x i64> %wide.load123, %wide.load124
  %290 = getelementptr inbounds [28 x i64], ptr %256, i64 0, i64 %index
  %wide.load125 = load <2 x i64>, ptr %290, align 8, !tbaa !10, !alias.scope !17, !noalias !19
  %291 = add <2 x i64> %289, %wide.load125
  store <2 x i64> %291, ptr %290, align 8, !tbaa !10, !alias.scope !17, !noalias !19
  %292 = getelementptr inbounds [28 x i64], ptr %257, i64 0, i64 %index
  %wide.load126 = load <2 x i64>, ptr %292, align 8, !tbaa !10, !alias.scope !12
  %293 = getelementptr inbounds [28 x i64], ptr %258, i64 0, i64 %index
  %wide.load127 = load <2 x i64>, ptr %293, align 8, !tbaa !10, !alias.scope !15
  %294 = sub <2 x i64> %wide.load126, %wide.load127
  %295 = getelementptr inbounds [28 x i64], ptr %259, i64 0, i64 %index
  %wide.load128 = load <2 x i64>, ptr %295, align 8, !tbaa !10, !alias.scope !17, !noalias !19
  %296 = add <2 x i64> %294, %wide.load128
  store <2 x i64> %296, ptr %295, align 8, !tbaa !10, !alias.scope !17, !noalias !19
  %297 = getelementptr inbounds [28 x i64], ptr %260, i64 0, i64 %index
  %wide.load129 = load <2 x i64>, ptr %297, align 8, !tbaa !10, !alias.scope !12
  %298 = getelementptr inbounds [28 x i64], ptr %261, i64 0, i64 %index
  %wide.load130 = load <2 x i64>, ptr %298, align 8, !tbaa !10, !alias.scope !15
  %299 = sub <2 x i64> %wide.load129, %wide.load130
  %300 = getelementptr inbounds [28 x i64], ptr %262, i64 0, i64 %index
  %wide.load131 = load <2 x i64>, ptr %300, align 8, !tbaa !10, !alias.scope !17, !noalias !19
  %301 = add <2 x i64> %299, %wide.load131
  store <2 x i64> %301, ptr %300, align 8, !tbaa !10, !alias.scope !17, !noalias !19
  %302 = getelementptr inbounds [28 x i64], ptr %263, i64 0, i64 %index
  %wide.load132 = load <2 x i64>, ptr %302, align 8, !tbaa !10, !alias.scope !12
  %303 = getelementptr inbounds [28 x i64], ptr %264, i64 0, i64 %index
  %wide.load133 = load <2 x i64>, ptr %303, align 8, !tbaa !10, !alias.scope !15
  %304 = sub <2 x i64> %wide.load132, %wide.load133
  %305 = getelementptr inbounds [28 x i64], ptr %265, i64 0, i64 %index
  %wide.load134 = load <2 x i64>, ptr %305, align 8, !tbaa !10, !alias.scope !17, !noalias !19
  %306 = add <2 x i64> %304, %wide.load134
  store <2 x i64> %306, ptr %305, align 8, !tbaa !10, !alias.scope !17, !noalias !19
  %307 = getelementptr inbounds [28 x i64], ptr %266, i64 0, i64 %index
  %wide.load135 = load <2 x i64>, ptr %307, align 8, !tbaa !10, !alias.scope !12
  %308 = getelementptr inbounds [28 x i64], ptr %267, i64 0, i64 %index
  %wide.load136 = load <2 x i64>, ptr %308, align 8, !tbaa !10, !alias.scope !15
  %309 = sub <2 x i64> %wide.load135, %wide.load136
  %310 = getelementptr inbounds [28 x i64], ptr %268, i64 0, i64 %index
  %wide.load137 = load <2 x i64>, ptr %310, align 8, !tbaa !10, !alias.scope !17, !noalias !19
  %311 = add <2 x i64> %309, %wide.load137
  store <2 x i64> %311, ptr %310, align 8, !tbaa !10, !alias.scope !17, !noalias !19
  %312 = getelementptr inbounds [28 x i64], ptr %269, i64 0, i64 %index
  %wide.load138 = load <2 x i64>, ptr %312, align 8, !tbaa !10, !alias.scope !12
  %313 = getelementptr inbounds [28 x i64], ptr %270, i64 0, i64 %index
  %wide.load139 = load <2 x i64>, ptr %313, align 8, !tbaa !10, !alias.scope !15
  %314 = sub <2 x i64> %wide.load138, %wide.load139
  %315 = getelementptr inbounds [28 x i64], ptr %271, i64 0, i64 %index
  %wide.load140 = load <2 x i64>, ptr %315, align 8, !tbaa !10, !alias.scope !17, !noalias !19
  %316 = add <2 x i64> %314, %wide.load140
  store <2 x i64> %316, ptr %315, align 8, !tbaa !10, !alias.scope !17, !noalias !19
  %index.next = add nuw i64 %index, 2
  %317 = icmp eq i64 %index.next, 28
  br i1 %317, label %middle.block, label %vector.body, !llvm.loop !20

318:                                              ; preds = %3
  %319 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.9)
  br label %393

scalar.ph:                                        ; preds = %.preheader105, %scalar.ph
  %indvars.iv = phi i64 [ %indvars.iv.next, %scalar.ph ], [ 0, %.preheader105 ]
  %320 = getelementptr inbounds [28 x i64], ptr %245, i64 0, i64 %indvars.iv
  %321 = load i64, ptr %320, align 8, !tbaa !10
  %322 = getelementptr inbounds [28 x i64], ptr %246, i64 0, i64 %indvars.iv
  %323 = load i64, ptr %322, align 8, !tbaa !10
  %324 = sub i64 %321, %323
  %325 = getelementptr inbounds [28 x i64], ptr %247, i64 0, i64 %indvars.iv
  %326 = load i64, ptr %325, align 8, !tbaa !10
  %327 = add i64 %324, %326
  store i64 %327, ptr %325, align 8, !tbaa !10
  %328 = getelementptr inbounds [28 x i64], ptr %248, i64 0, i64 %indvars.iv
  %329 = load i64, ptr %328, align 8, !tbaa !10
  %330 = getelementptr inbounds [28 x i64], ptr %249, i64 0, i64 %indvars.iv
  %331 = load i64, ptr %330, align 8, !tbaa !10
  %332 = sub i64 %329, %331
  %333 = getelementptr inbounds [28 x i64], ptr %250, i64 0, i64 %indvars.iv
  %334 = load i64, ptr %333, align 8, !tbaa !10
  %335 = add i64 %332, %334
  store i64 %335, ptr %333, align 8, !tbaa !10
  %336 = getelementptr inbounds [28 x i64], ptr %251, i64 0, i64 %indvars.iv
  %337 = load i64, ptr %336, align 8, !tbaa !10
  %338 = getelementptr inbounds [28 x i64], ptr %252, i64 0, i64 %indvars.iv
  %339 = load i64, ptr %338, align 8, !tbaa !10
  %340 = sub i64 %337, %339
  %341 = getelementptr inbounds [28 x i64], ptr %253, i64 0, i64 %indvars.iv
  %342 = load i64, ptr %341, align 8, !tbaa !10
  %343 = add i64 %340, %342
  store i64 %343, ptr %341, align 8, !tbaa !10
  %344 = getelementptr inbounds [28 x i64], ptr %254, i64 0, i64 %indvars.iv
  %345 = load i64, ptr %344, align 8, !tbaa !10
  %346 = getelementptr inbounds [28 x i64], ptr %255, i64 0, i64 %indvars.iv
  %347 = load i64, ptr %346, align 8, !tbaa !10
  %348 = sub i64 %345, %347
  %349 = getelementptr inbounds [28 x i64], ptr %256, i64 0, i64 %indvars.iv
  %350 = load i64, ptr %349, align 8, !tbaa !10
  %351 = add i64 %348, %350
  store i64 %351, ptr %349, align 8, !tbaa !10
  %352 = getelementptr inbounds [28 x i64], ptr %257, i64 0, i64 %indvars.iv
  %353 = load i64, ptr %352, align 8, !tbaa !10
  %354 = getelementptr inbounds [28 x i64], ptr %258, i64 0, i64 %indvars.iv
  %355 = load i64, ptr %354, align 8, !tbaa !10
  %356 = sub i64 %353, %355
  %357 = getelementptr inbounds [28 x i64], ptr %259, i64 0, i64 %indvars.iv
  %358 = load i64, ptr %357, align 8, !tbaa !10
  %359 = add i64 %356, %358
  store i64 %359, ptr %357, align 8, !tbaa !10
  %360 = getelementptr inbounds [28 x i64], ptr %260, i64 0, i64 %indvars.iv
  %361 = load i64, ptr %360, align 8, !tbaa !10
  %362 = getelementptr inbounds [28 x i64], ptr %261, i64 0, i64 %indvars.iv
  %363 = load i64, ptr %362, align 8, !tbaa !10
  %364 = sub i64 %361, %363
  %365 = getelementptr inbounds [28 x i64], ptr %262, i64 0, i64 %indvars.iv
  %366 = load i64, ptr %365, align 8, !tbaa !10
  %367 = add i64 %364, %366
  store i64 %367, ptr %365, align 8, !tbaa !10
  %368 = getelementptr inbounds [28 x i64], ptr %263, i64 0, i64 %indvars.iv
  %369 = load i64, ptr %368, align 8, !tbaa !10
  %370 = getelementptr inbounds [28 x i64], ptr %264, i64 0, i64 %indvars.iv
  %371 = load i64, ptr %370, align 8, !tbaa !10
  %372 = sub i64 %369, %371
  %373 = getelementptr inbounds [28 x i64], ptr %265, i64 0, i64 %indvars.iv
  %374 = load i64, ptr %373, align 8, !tbaa !10
  %375 = add i64 %372, %374
  store i64 %375, ptr %373, align 8, !tbaa !10
  %376 = getelementptr inbounds [28 x i64], ptr %266, i64 0, i64 %indvars.iv
  %377 = load i64, ptr %376, align 8, !tbaa !10
  %378 = getelementptr inbounds [28 x i64], ptr %267, i64 0, i64 %indvars.iv
  %379 = load i64, ptr %378, align 8, !tbaa !10
  %380 = sub i64 %377, %379
  %381 = getelementptr inbounds [28 x i64], ptr %268, i64 0, i64 %indvars.iv
  %382 = load i64, ptr %381, align 8, !tbaa !10
  %383 = add i64 %380, %382
  store i64 %383, ptr %381, align 8, !tbaa !10
  %384 = getelementptr inbounds [28 x i64], ptr %269, i64 0, i64 %indvars.iv
  %385 = load i64, ptr %384, align 8, !tbaa !10
  %386 = getelementptr inbounds [28 x i64], ptr %270, i64 0, i64 %indvars.iv
  %387 = load i64, ptr %386, align 8, !tbaa !10
  %388 = sub i64 %385, %387
  %389 = getelementptr inbounds [28 x i64], ptr %271, i64 0, i64 %indvars.iv
  %390 = load i64, ptr %389, align 8, !tbaa !10
  %391 = add i64 %388, %390
  store i64 %391, ptr %389, align 8, !tbaa !10
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, 28
  br i1 %exitcond.not, label %middle.block, label %scalar.ph, !llvm.loop !24

middle.block:                                     ; preds = %vector.body, %scalar.ph
  %392 = getelementptr inbounds i8, ptr %2, i64 2256
  store i32 %5, ptr %392, align 8, !tbaa !5
  br label %393

393:                                              ; preds = %middle.block, %318
  ret void
}

; Function Attrs: nofree nounwind
declare noundef i32 @printf(ptr nocapture noundef readonly, ...) local_unnamed_addr #1

attributes #0 = { nofree nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nofree nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }

!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, !9, i64 2256}
!6 = !{!"ctrs_skx_uc", !7, i64 0, !7, i64 48, !7, i64 96, !7, i64 144, !7, i64 192, !7, i64 240, !7, i64 464, !7, i64 688, !7, i64 912, !7, i64 1136, !7, i64 1360, !7, i64 1584, !7, i64 1808, !7, i64 2032, !9, i64 2256}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!"int", !7, i64 0}
!10 = !{!11, !11, i64 0}
!11 = !{!"long", !7, i64 0}
!12 = !{!13}
!13 = distinct !{!13, !14}
!14 = distinct !{!14, !"LVerDomain"}
!15 = !{!16}
!16 = distinct !{!16, !14}
!17 = !{!18}
!18 = distinct !{!18, !14}
!19 = !{!13, !16}
!20 = distinct !{!20, !21, !22, !23}
!21 = !{!"llvm.loop.mustprogress"}
!22 = !{!"llvm.loop.isvectorized", i32 1}
!23 = !{!"llvm.loop.unroll.runtime.disable"}
!24 = distinct !{!24, !21, !22}


; Effective O3 passes: EarlyCSEPass,GVNPass,GlobalOptPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,LICMPass,LoopLoadEliminationPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,LoopVectorizePass,PostOrderFunctionAttrsPass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass