; LLVM IR from libxsmm/libxsmm :: samples/external_aux (perf_counter_markers)

; 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_uncore = 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], [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], [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.8 = 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_uncore_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_uncore, ptr %10, i32 0, i32 32
  %12 = load i32, ptr %11, align 8, !tbaa !9
  %13 = load ptr, ptr %5, align 8, !tbaa !5
  %14 = getelementptr inbounds %struct.ctrs_uncore, ptr %13, i32 0, i32 32
  %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.8)
  store i32 1, ptr %9, align 4
  br label %641

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_uncore, 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_uncore, 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_uncore, 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_uncore, 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_uncore, 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_uncore, 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_uncore, 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_uncore, 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_uncore, 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_uncore, 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_uncore, 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_uncore, 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_uncore, 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_uncore, 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_uncore, 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 = %632, %127
  %129 = load i32, ptr %8, align 4, !tbaa !12
  %130 = icmp slt i32 %129, 28
  br i1 %130, label %131, label %635

131:                                              ; preds = %128
  %132 = load ptr, ptr %5, align 8, !tbaa !5
  %133 = getelementptr inbounds %struct.ctrs_uncore, 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_uncore, 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_uncore, 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_uncore, 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_uncore, 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_uncore, 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_uncore, 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_uncore, 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_uncore, 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_uncore, 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_uncore, 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_uncore, 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_uncore, 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_uncore, 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_uncore, 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_uncore, 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_uncore, 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_uncore, 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_uncore, 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_uncore, 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_uncore, 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_uncore, 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_uncore, 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_uncore, 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_uncore, ptr %292, i32 0, i32 15
  %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_uncore, ptr %298, i32 0, i32 15
  %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_uncore, ptr %305, i32 0, i32 15
  %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
  %312 = load ptr, ptr %5, align 8, !tbaa !5
  %313 = getelementptr inbounds %struct.ctrs_uncore, ptr %312, i32 0, i32 16
  %314 = load i32, ptr %8, align 4, !tbaa !12
  %315 = sext i32 %314 to i64
  %316 = getelementptr inbounds [28 x i64], ptr %313, i64 0, i64 %315
  %317 = load i64, ptr %316, align 8, !tbaa !13
  %318 = load ptr, ptr %4, align 8, !tbaa !5
  %319 = getelementptr inbounds %struct.ctrs_uncore, ptr %318, i32 0, i32 16
  %320 = load i32, ptr %8, align 4, !tbaa !12
  %321 = sext i32 %320 to i64
  %322 = getelementptr inbounds [28 x i64], ptr %319, i64 0, i64 %321
  %323 = load i64, ptr %322, align 8, !tbaa !13
  %324 = sub i64 %317, %323
  %325 = load ptr, ptr %6, align 8, !tbaa !5
  %326 = getelementptr inbounds %struct.ctrs_uncore, ptr %325, i32 0, i32 16
  %327 = load i32, ptr %8, align 4, !tbaa !12
  %328 = sext i32 %327 to i64
  %329 = getelementptr inbounds [28 x i64], ptr %326, i64 0, i64 %328
  %330 = load i64, ptr %329, align 8, !tbaa !13
  %331 = add i64 %330, %324
  store i64 %331, ptr %329, align 8, !tbaa !13
  %332 = load ptr, ptr %5, align 8, !tbaa !5
  %333 = getelementptr inbounds %struct.ctrs_uncore, ptr %332, i32 0, i32 17
  %334 = load i32, ptr %8, align 4, !tbaa !12
  %335 = sext i32 %334 to i64
  %336 = getelementptr inbounds [28 x i64], ptr %333, i64 0, i64 %335
  %337 = load i64, ptr %336, align 8, !tbaa !13
  %338 = load ptr, ptr %4, align 8, !tbaa !5
  %339 = getelementptr inbounds %struct.ctrs_uncore, ptr %338, i32 0, i32 17
  %340 = load i32, ptr %8, align 4, !tbaa !12
  %341 = sext i32 %340 to i64
  %342 = getelementptr inbounds [28 x i64], ptr %339, i64 0, i64 %341
  %343 = load i64, ptr %342, align 8, !tbaa !13
  %344 = sub i64 %337, %343
  %345 = load ptr, ptr %6, align 8, !tbaa !5
  %346 = getelementptr inbounds %struct.ctrs_uncore, ptr %345, i32 0, i32 17
  %347 = load i32, ptr %8, align 4, !tbaa !12
  %348 = sext i32 %347 to i64
  %349 = getelementptr inbounds [28 x i64], ptr %346, i64 0, i64 %348
  %350 = load i64, ptr %349, align 8, !tbaa !13
  %351 = add i64 %350, %344
  store i64 %351, ptr %349, align 8, !tbaa !13
  %352 = load ptr, ptr %5, align 8, !tbaa !5
  %353 = getelementptr inbounds %struct.ctrs_uncore, ptr %352, i32 0, i32 18
  %354 = load i32, ptr %8, align 4, !tbaa !12
  %355 = sext i32 %354 to i64
  %356 = getelementptr inbounds [28 x i64], ptr %353, i64 0, i64 %355
  %357 = load i64, ptr %356, align 8, !tbaa !13
  %358 = load ptr, ptr %4, align 8, !tbaa !5
  %359 = getelementptr inbounds %struct.ctrs_uncore, ptr %358, i32 0, i32 18
  %360 = load i32, ptr %8, align 4, !tbaa !12
  %361 = sext i32 %360 to i64
  %362 = getelementptr inbounds [28 x i64], ptr %359, i64 0, i64 %361
  %363 = load i64, ptr %362, align 8, !tbaa !13
  %364 = sub i64 %357, %363
  %365 = load ptr, ptr %6, align 8, !tbaa !5
  %366 = getelementptr inbounds %struct.ctrs_uncore, ptr %365, i32 0, i32 18
  %367 = load i32, ptr %8, align 4, !tbaa !12
  %368 = sext i32 %367 to i64
  %369 = getelementptr inbounds [28 x i64], ptr %366, i64 0, i64 %368
  %370 = load i64, ptr %369, align 8, !tbaa !13
  %371 = add i64 %370, %364
  store i64 %371, ptr %369, align 8, !tbaa !13
  %372 = load ptr, ptr %5, align 8, !tbaa !5
  %373 = getelementptr inbounds %struct.ctrs_uncore, ptr %372, i32 0, i32 19
  %374 = load i32, ptr %8, align 4, !tbaa !12
  %375 = sext i32 %374 to i64
  %376 = getelementptr inbounds [28 x i64], ptr %373, i64 0, i64 %375
  %377 = load i64, ptr %376, align 8, !tbaa !13
  %378 = load ptr, ptr %4, align 8, !tbaa !5
  %379 = getelementptr inbounds %struct.ctrs_uncore, ptr %378, i32 0, i32 19
  %380 = load i32, ptr %8, align 4, !tbaa !12
  %381 = sext i32 %380 to i64
  %382 = getelementptr inbounds [28 x i64], ptr %379, i64 0, i64 %381
  %383 = load i64, ptr %382, align 8, !tbaa !13
  %384 = sub i64 %377, %383
  %385 = load ptr, ptr %6, align 8, !tbaa !5
  %386 = getelementptr inbounds %struct.ctrs_uncore, ptr %385, i32 0, i32 19
  %387 = load i32, ptr %8, align 4, !tbaa !12
  %388 = sext i32 %387 to i64
  %389 = getelementptr inbounds [28 x i64], ptr %386, i64 0, i64 %388
  %390 = load i64, ptr %389, align 8, !tbaa !13
  %391 = add i64 %390, %384
  store i64 %391, ptr %389, align 8, !tbaa !13
  %392 = load ptr, ptr %5, align 8, !tbaa !5
  %393 = getelementptr inbounds %struct.ctrs_uncore, ptr %392, i32 0, i32 20
  %394 = load i32, ptr %8, align 4, !tbaa !12
  %395 = sext i32 %394 to i64
  %396 = getelementptr inbounds [28 x i64], ptr %393, i64 0, i64 %395
  %397 = load i64, ptr %396, align 8, !tbaa !13
  %398 = load ptr, ptr %4, align 8, !tbaa !5
  %399 = getelementptr inbounds %struct.ctrs_uncore, ptr %398, i32 0, i32 20
  %400 = load i32, ptr %8, align 4, !tbaa !12
  %401 = sext i32 %400 to i64
  %402 = getelementptr inbounds [28 x i64], ptr %399, i64 0, i64 %401
  %403 = load i64, ptr %402, align 8, !tbaa !13
  %404 = sub i64 %397, %403
  %405 = load ptr, ptr %6, align 8, !tbaa !5
  %406 = getelementptr inbounds %struct.ctrs_uncore, ptr %405, i32 0, i32 20
  %407 = load i32, ptr %8, align 4, !tbaa !12
  %408 = sext i32 %407 to i64
  %409 = getelementptr inbounds [28 x i64], ptr %406, i64 0, i64 %408
  %410 = load i64, ptr %409, align 8, !tbaa !13
  %411 = add i64 %410, %404
  store i64 %411, ptr %409, align 8, !tbaa !13
  %412 = load ptr, ptr %5, align 8, !tbaa !5
  %413 = getelementptr inbounds %struct.ctrs_uncore, ptr %412, i32 0, i32 21
  %414 = load i32, ptr %8, align 4, !tbaa !12
  %415 = sext i32 %414 to i64
  %416 = getelementptr inbounds [28 x i64], ptr %413, i64 0, i64 %415
  %417 = load i64, ptr %416, align 8, !tbaa !13
  %418 = load ptr, ptr %4, align 8, !tbaa !5
  %419 = getelementptr inbounds %struct.ctrs_uncore, ptr %418, i32 0, i32 21
  %420 = load i32, ptr %8, align 4, !tbaa !12
  %421 = sext i32 %420 to i64
  %422 = getelementptr inbounds [28 x i64], ptr %419, i64 0, i64 %421
  %423 = load i64, ptr %422, align 8, !tbaa !13
  %424 = sub i64 %417, %423
  %425 = load ptr, ptr %6, align 8, !tbaa !5
  %426 = getelementptr inbounds %struct.ctrs_uncore, ptr %425, i32 0, i32 21
  %427 = load i32, ptr %8, align 4, !tbaa !12
  %428 = sext i32 %427 to i64
  %429 = getelementptr inbounds [28 x i64], ptr %426, i64 0, i64 %428
  %430 = load i64, ptr %429, align 8, !tbaa !13
  %431 = add i64 %430, %424
  store i64 %431, ptr %429, align 8, !tbaa !13
  %432 = load ptr, ptr %5, align 8, !tbaa !5
  %433 = getelementptr inbounds %struct.ctrs_uncore, ptr %432, i32 0, i32 22
  %434 = load i32, ptr %8, align 4, !tbaa !12
  %435 = sext i32 %434 to i64
  %436 = getelementptr inbounds [28 x i64], ptr %433, i64 0, i64 %435
  %437 = load i64, ptr %436, align 8, !tbaa !13
  %438 = load ptr, ptr %4, align 8, !tbaa !5
  %439 = getelementptr inbounds %struct.ctrs_uncore, ptr %438, i32 0, i32 22
  %440 = load i32, ptr %8, align 4, !tbaa !12
  %441 = sext i32 %440 to i64
  %442 = getelementptr inbounds [28 x i64], ptr %439, i64 0, i64 %441
  %443 = load i64, ptr %442, align 8, !tbaa !13
  %444 = sub i64 %437, %443
  %445 = load ptr, ptr %6, align 8, !tbaa !5
  %446 = getelementptr inbounds %struct.ctrs_uncore, ptr %445, i32 0, i32 22
  %447 = load i32, ptr %8, align 4, !tbaa !12
  %448 = sext i32 %447 to i64
  %449 = getelementptr inbounds [28 x i64], ptr %446, i64 0, i64 %448
  %450 = load i64, ptr %449, align 8, !tbaa !13
  %451 = add i64 %450, %444
  store i64 %451, ptr %449, align 8, !tbaa !13
  %452 = load ptr, ptr %5, align 8, !tbaa !5
  %453 = getelementptr inbounds %struct.ctrs_uncore, ptr %452, i32 0, i32 23
  %454 = load i32, ptr %8, align 4, !tbaa !12
  %455 = sext i32 %454 to i64
  %456 = getelementptr inbounds [28 x i64], ptr %453, i64 0, i64 %455
  %457 = load i64, ptr %456, align 8, !tbaa !13
  %458 = load ptr, ptr %4, align 8, !tbaa !5
  %459 = getelementptr inbounds %struct.ctrs_uncore, ptr %458, i32 0, i32 23
  %460 = load i32, ptr %8, align 4, !tbaa !12
  %461 = sext i32 %460 to i64
  %462 = getelementptr inbounds [28 x i64], ptr %459, i64 0, i64 %461
  %463 = load i64, ptr %462, align 8, !tbaa !13
  %464 = sub i64 %457, %463
  %465 = load ptr, ptr %6, align 8, !tbaa !5
  %466 = getelementptr inbounds %struct.ctrs_uncore, ptr %465, i32 0, i32 23
  %467 = load i32, ptr %8, align 4, !tbaa !12
  %468 = sext i32 %467 to i64
  %469 = getelementptr inbounds [28 x i64], ptr %466, i64 0, i64 %468
  %470 = load i64, ptr %469, align 8, !tbaa !13
  %471 = add i64 %470, %464
  store i64 %471, ptr %469, align 8, !tbaa !13
  %472 = load ptr, ptr %5, align 8, !tbaa !5
  %473 = getelementptr inbounds %struct.ctrs_uncore, ptr %472, i32 0, i32 24
  %474 = load i32, ptr %8, align 4, !tbaa !12
  %475 = sext i32 %474 to i64
  %476 = getelementptr inbounds [28 x i64], ptr %473, i64 0, i64 %475
  %477 = load i64, ptr %476, align 8, !tbaa !13
  %478 = load ptr, ptr %4, align 8, !tbaa !5
  %479 = getelementptr inbounds %struct.ctrs_uncore, ptr %478, i32 0, i32 24
  %480 = load i32, ptr %8, align 4, !tbaa !12
  %481 = sext i32 %480 to i64
  %482 = getelementptr inbounds [28 x i64], ptr %479, i64 0, i64 %481
  %483 = load i64, ptr %482, align 8, !tbaa !13
  %484 = sub i64 %477, %483
  %485 = load ptr, ptr %6, align 8, !tbaa !5
  %486 = getelementptr inbounds %struct.ctrs_uncore, ptr %485, i32 0, i32 24
  %487 = load i32, ptr %8, align 4, !tbaa !12
  %488 = sext i32 %487 to i64
  %489 = getelementptr inbounds [28 x i64], ptr %486, i64 0, i64 %488
  %490 = load i64, ptr %489, align 8, !tbaa !13
  %491 = add i64 %490, %484
  store i64 %491, ptr %489, align 8, !tbaa !13
  %492 = load ptr, ptr %5, align 8, !tbaa !5
  %493 = getelementptr inbounds %struct.ctrs_uncore, ptr %492, i32 0, i32 25
  %494 = load i32, ptr %8, align 4, !tbaa !12
  %495 = sext i32 %494 to i64
  %496 = getelementptr inbounds [28 x i64], ptr %493, i64 0, i64 %495
  %497 = load i64, ptr %496, align 8, !tbaa !13
  %498 = load ptr, ptr %4, align 8, !tbaa !5
  %499 = getelementptr inbounds %struct.ctrs_uncore, ptr %498, i32 0, i32 25
  %500 = load i32, ptr %8, align 4, !tbaa !12
  %501 = sext i32 %500 to i64
  %502 = getelementptr inbounds [28 x i64], ptr %499, i64 0, i64 %501
  %503 = load i64, ptr %502, align 8, !tbaa !13
  %504 = sub i64 %497, %503
  %505 = load ptr, ptr %6, align 8, !tbaa !5
  %506 = getelementptr inbounds %struct.ctrs_uncore, ptr %505, i32 0, i32 25
  %507 = load i32, ptr %8, align 4, !tbaa !12
  %508 = sext i32 %507 to i64
  %509 = getelementptr inbounds [28 x i64], ptr %506, i64 0, i64 %508
  %510 = load i64, ptr %509, align 8, !tbaa !13
  %511 = add i64 %510, %504
  store i64 %511, ptr %509, align 8, !tbaa !13
  %512 = load ptr, ptr %5, align 8, !tbaa !5
  %513 = getelementptr inbounds %struct.ctrs_uncore, ptr %512, i32 0, i32 26
  %514 = load i32, ptr %8, align 4, !tbaa !12
  %515 = sext i32 %514 to i64
  %516 = getelementptr inbounds [28 x i64], ptr %513, i64 0, i64 %515
  %517 = load i64, ptr %516, align 8, !tbaa !13
  %518 = load ptr, ptr %4, align 8, !tbaa !5
  %519 = getelementptr inbounds %struct.ctrs_uncore, ptr %518, i32 0, i32 26
  %520 = load i32, ptr %8, align 4, !tbaa !12
  %521 = sext i32 %520 to i64
  %522 = getelementptr inbounds [28 x i64], ptr %519, i64 0, i64 %521
  %523 = load i64, ptr %522, align 8, !tbaa !13
  %524 = sub i64 %517, %523
  %525 = load ptr, ptr %6, align 8, !tbaa !5
  %526 = getelementptr inbounds %struct.ctrs_uncore, ptr %525, i32 0, i32 26
  %527 = load i32, ptr %8, align 4, !tbaa !12
  %528 = sext i32 %527 to i64
  %529 = getelementptr inbounds [28 x i64], ptr %526, i64 0, i64 %528
  %530 = load i64, ptr %529, align 8, !tbaa !13
  %531 = add i64 %530, %524
  store i64 %531, ptr %529, align 8, !tbaa !13
  %532 = load ptr, ptr %5, align 8, !tbaa !5
  %533 = getelementptr inbounds %struct.ctrs_uncore, ptr %532, i32 0, i32 27
  %534 = load i32, ptr %8, align 4, !tbaa !12
  %535 = sext i32 %534 to i64
  %536 = getelementptr inbounds [28 x i64], ptr %533, i64 0, i64 %535
  %537 = load i64, ptr %536, align 8, !tbaa !13
  %538 = load ptr, ptr %4, align 8, !tbaa !5
  %539 = getelementptr inbounds %struct.ctrs_uncore, ptr %538, i32 0, i32 27
  %540 = load i32, ptr %8, align 4, !tbaa !12
  %541 = sext i32 %540 to i64
  %542 = getelementptr inbounds [28 x i64], ptr %539, i64 0, i64 %541
  %543 = load i64, ptr %542, align 8, !tbaa !13
  %544 = sub i64 %537, %543
  %545 = load ptr, ptr %6, align 8, !tbaa !5
  %546 = getelementptr inbounds %struct.ctrs_uncore, ptr %545, i32 0, i32 27
  %547 = load i32, ptr %8, align 4, !tbaa !12
  %548 = sext i32 %547 to i64
  %549 = getelementptr inbounds [28 x i64], ptr %546, i64 0, i64 %548
  %550 = load i64, ptr %549, align 8, !tbaa !13
  %551 = add i64 %550, %544
  store i64 %551, ptr %549, align 8, !tbaa !13
  %552 = load ptr, ptr %5, align 8, !tbaa !5
  %553 = getelementptr inbounds %struct.ctrs_uncore, ptr %552, i32 0, i32 28
  %554 = load i32, ptr %8, align 4, !tbaa !12
  %555 = sext i32 %554 to i64
  %556 = getelementptr inbounds [28 x i64], ptr %553, i64 0, i64 %555
  %557 = load i64, ptr %556, align 8, !tbaa !13
  %558 = load ptr, ptr %4, align 8, !tbaa !5
  %559 = getelementptr inbounds %struct.ctrs_uncore, ptr %558, i32 0, i32 28
  %560 = load i32, ptr %8, align 4, !tbaa !12
  %561 = sext i32 %560 to i64
  %562 = getelementptr inbounds [28 x i64], ptr %559, i64 0, i64 %561
  %563 = load i64, ptr %562, align 8, !tbaa !13
  %564 = sub i64 %557, %563
  %565 = load ptr, ptr %6, align 8, !tbaa !5
  %566 = getelementptr inbounds %struct.ctrs_uncore, ptr %565, i32 0, i32 28
  %567 = load i32, ptr %8, align 4, !tbaa !12
  %568 = sext i32 %567 to i64
  %569 = getelementptr inbounds [28 x i64], ptr %566, i64 0, i64 %568
  %570 = load i64, ptr %569, align 8, !tbaa !13
  %571 = add i64 %570, %564
  store i64 %571, ptr %569, align 8, !tbaa !13
  %572 = load ptr, ptr %5, align 8, !tbaa !5
  %573 = getelementptr inbounds %struct.ctrs_uncore, ptr %572, i32 0, i32 29
  %574 = load i32, ptr %8, align 4, !tbaa !12
  %575 = sext i32 %574 to i64
  %576 = getelementptr inbounds [28 x i64], ptr %573, i64 0, i64 %575
  %577 = load i64, ptr %576, align 8, !tbaa !13
  %578 = load ptr, ptr %4, align 8, !tbaa !5
  %579 = getelementptr inbounds %struct.ctrs_uncore, ptr %578, i32 0, i32 29
  %580 = load i32, ptr %8, align 4, !tbaa !12
  %581 = sext i32 %580 to i64
  %582 = getelementptr inbounds [28 x i64], ptr %579, i64 0, i64 %581
  %583 = load i64, ptr %582, align 8, !tbaa !13
  %584 = sub i64 %577, %583
  %585 = load ptr, ptr %6, align 8, !tbaa !5
  %586 = getelementptr inbounds %struct.ctrs_uncore, ptr %585, i32 0, i32 29
  %587 = load i32, ptr %8, align 4, !tbaa !12
  %588 = sext i32 %587 to i64
  %589 = getelementptr inbounds [28 x i64], ptr %586, i64 0, i64 %588
  %590 = load i64, ptr %589, align 8, !tbaa !13
  %591 = add i64 %590, %584
  store i64 %591, ptr %589, align 8, !tbaa !13
  %592 = load ptr, ptr %5, align 8, !tbaa !5
  %593 = getelementptr inbounds %struct.ctrs_uncore, ptr %592, i32 0, i32 30
  %594 = load i32, ptr %8, align 4, !tbaa !12
  %595 = sext i32 %594 to i64
  %596 = getelementptr inbounds [28 x i64], ptr %593, i64 0, i64 %595
  %597 = load i64, ptr %596, align 8, !tbaa !13
  %598 = load ptr, ptr %4, align 8, !tbaa !5
  %599 = getelementptr inbounds %struct.ctrs_uncore, ptr %598, i32 0, i32 30
  %600 = load i32, ptr %8, align 4, !tbaa !12
  %601 = sext i32 %600 to i64
  %602 = getelementptr inbounds [28 x i64], ptr %599, i64 0, i64 %601
  %603 = load i64, ptr %602, align 8, !tbaa !13
  %604 = sub i64 %597, %603
  %605 = load ptr, ptr %6, align 8, !tbaa !5
  %606 = getelementptr inbounds %struct.ctrs_uncore, ptr %605, i32 0, i32 30
  %607 = load i32, ptr %8, align 4, !tbaa !12
  %608 = sext i32 %607 to i64
  %609 = getelementptr inbounds [28 x i64], ptr %606, i64 0, i64 %608
  %610 = load i64, ptr %609, align 8, !tbaa !13
  %611 = add i64 %610, %604
  store i64 %611, ptr %609, align 8, !tbaa !13
  %612 = load ptr, ptr %5, align 8, !tbaa !5
  %613 = getelementptr inbounds %struct.ctrs_uncore, ptr %612, i32 0, i32 31
  %614 = load i32, ptr %8, align 4, !tbaa !12
  %615 = sext i32 %614 to i64
  %616 = getelementptr inbounds [28 x i64], ptr %613, i64 0, i64 %615
  %617 = load i64, ptr %616, align 8, !tbaa !13
  %618 = load ptr, ptr %4, align 8, !tbaa !5
  %619 = getelementptr inbounds %struct.ctrs_uncore, ptr %618, i32 0, i32 31
  %620 = load i32, ptr %8, align 4, !tbaa !12
  %621 = sext i32 %620 to i64
  %622 = getelementptr inbounds [28 x i64], ptr %619, i64 0, i64 %621
  %623 = load i64, ptr %622, align 8, !tbaa !13
  %624 = sub i64 %617, %623
  %625 = load ptr, ptr %6, align 8, !tbaa !5
  %626 = getelementptr inbounds %struct.ctrs_uncore, ptr %625, i32 0, i32 31
  %627 = load i32, ptr %8, align 4, !tbaa !12
  %628 = sext i32 %627 to i64
  %629 = getelementptr inbounds [28 x i64], ptr %626, i64 0, i64 %628
  %630 = load i64, ptr %629, align 8, !tbaa !13
  %631 = add i64 %630, %624
  store i64 %631, ptr %629, align 8, !tbaa !13
  br label %632

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

635:                                              ; preds = %128
  %636 = load ptr, ptr %4, align 8, !tbaa !5
  %637 = getelementptr inbounds %struct.ctrs_uncore, ptr %636, i32 0, i32 32
  %638 = load i32, ptr %637, align 8, !tbaa !9
  %639 = load ptr, ptr %6, align 8, !tbaa !5
  %640 = getelementptr inbounds %struct.ctrs_uncore, ptr %639, i32 0, i32 32
  store i32 %638, ptr %640, align 8, !tbaa !9
  store i32 0, ptr %9, align 4
  br label %641

641:                                              ; preds = %635, %17
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #3
  %642 = load i32, ptr %9, align 4
  switch i32 %642, label %644 [
    i32 0, label %643
    i32 1, label %643
  ]

643:                                              ; preds = %641, %641
  ret void

644:                                              ; preds = %641
  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 6288}
!10 = !{!"ctrs_uncore", !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, !7, i64 2256, !7, i64 2480, !7, i64 2704, !7, i64 2928, !7, i64 3152, !7, i64 3376, !7, i64 3600, !7, i64 3824, !7, i64 4048, !7, i64 4272, !7, i64 4496, !7, i64 4720, !7, i64 4944, !7, i64 5168, !7, i64 5392, !7, i64 5616, !7, i64 5840, !7, i64 6064, !11, i64 6288}
!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.8 = external hidden unnamed_addr constant [44 x i8], align 1

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

.preheader217:                                    ; 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 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 2480
  %270 = getelementptr inbounds i8, ptr %0, i64 2480
  %271 = getelementptr inbounds i8, ptr %2, i64 2480
  %272 = getelementptr inbounds i8, ptr %1, i64 2704
  %273 = getelementptr inbounds i8, ptr %0, i64 2704
  %274 = getelementptr inbounds i8, ptr %2, i64 2704
  %275 = getelementptr inbounds i8, ptr %1, i64 2928
  %276 = getelementptr inbounds i8, ptr %0, i64 2928
  %277 = getelementptr inbounds i8, ptr %2, i64 2928
  %278 = getelementptr inbounds i8, ptr %1, i64 3152
  %279 = getelementptr inbounds i8, ptr %0, i64 3152
  %280 = getelementptr inbounds i8, ptr %2, i64 3152
  %281 = getelementptr inbounds i8, ptr %1, i64 3376
  %282 = getelementptr inbounds i8, ptr %0, i64 3376
  %283 = getelementptr inbounds i8, ptr %2, i64 3376
  %284 = getelementptr inbounds i8, ptr %1, i64 3600
  %285 = getelementptr inbounds i8, ptr %0, i64 3600
  %286 = getelementptr inbounds i8, ptr %2, i64 3600
  %287 = getelementptr inbounds i8, ptr %1, i64 3824
  %288 = getelementptr inbounds i8, ptr %0, i64 3824
  %289 = getelementptr inbounds i8, ptr %2, i64 3824
  %290 = getelementptr inbounds i8, ptr %1, i64 4048
  %291 = getelementptr inbounds i8, ptr %0, i64 4048
  %292 = getelementptr inbounds i8, ptr %2, i64 4048
  %293 = getelementptr inbounds i8, ptr %1, i64 4272
  %294 = getelementptr inbounds i8, ptr %0, i64 4272
  %295 = getelementptr inbounds i8, ptr %2, i64 4272
  %296 = getelementptr inbounds i8, ptr %1, i64 4496
  %297 = getelementptr inbounds i8, ptr %0, i64 4496
  %298 = getelementptr inbounds i8, ptr %2, i64 4496
  %299 = getelementptr inbounds i8, ptr %1, i64 4720
  %300 = getelementptr inbounds i8, ptr %0, i64 4720
  %301 = getelementptr inbounds i8, ptr %2, i64 4720
  %302 = getelementptr inbounds i8, ptr %1, i64 4944
  %303 = getelementptr inbounds i8, ptr %0, i64 4944
  %304 = getelementptr inbounds i8, ptr %2, i64 4944
  %305 = getelementptr inbounds i8, ptr %1, i64 5168
  %306 = getelementptr inbounds i8, ptr %0, i64 5168
  %307 = getelementptr inbounds i8, ptr %2, i64 5168
  %308 = getelementptr inbounds i8, ptr %1, i64 5392
  %309 = getelementptr inbounds i8, ptr %0, i64 5392
  %310 = getelementptr inbounds i8, ptr %2, i64 5392
  %311 = getelementptr inbounds i8, ptr %1, i64 5616
  %312 = getelementptr inbounds i8, ptr %0, i64 5616
  %313 = getelementptr inbounds i8, ptr %2, i64 5616
  %314 = getelementptr inbounds i8, ptr %1, i64 5840
  %315 = getelementptr inbounds i8, ptr %0, i64 5840
  %316 = getelementptr inbounds i8, ptr %2, i64 5840
  %317 = getelementptr inbounds i8, ptr %1, i64 6064
  %318 = getelementptr inbounds i8, ptr %0, i64 6064
  %319 = getelementptr inbounds i8, ptr %2, i64 6064
  %scevgep = getelementptr i8, ptr %2, i64 6288
  %scevgep222 = getelementptr i8, ptr %1, i64 6288
  %scevgep223 = getelementptr i8, ptr %0, i64 6288
  %bound0 = icmp ult ptr %247, %scevgep222
  %bound1 = icmp ult ptr %245, %scevgep
  %found.conflict = and i1 %bound0, %bound1
  %bound0224 = icmp ult ptr %247, %scevgep223
  %bound1225 = icmp ult ptr %246, %scevgep
  %found.conflict226 = and i1 %bound0224, %bound1225
  %conflict.rdx = or i1 %found.conflict, %found.conflict226
  br i1 %conflict.rdx, label %scalar.ph, label %vector.body

vector.body:                                      ; preds = %.preheader217, %vector.body
  %index = phi i64 [ %index.next, %vector.body ], [ 0, %.preheader217 ]
  %320 = getelementptr inbounds [28 x i64], ptr %245, i64 0, i64 %index
  %wide.load = load <2 x i64>, ptr %320, align 8, !tbaa !10, !alias.scope !12
  %321 = getelementptr inbounds [28 x i64], ptr %246, i64 0, i64 %index
  %wide.load227 = load <2 x i64>, ptr %321, align 8, !tbaa !10, !alias.scope !15
  %322 = sub <2 x i64> %wide.load, %wide.load227
  %323 = getelementptr inbounds [28 x i64], ptr %247, i64 0, i64 %index
  %wide.load228 = load <2 x i64>, ptr %323, align 8, !tbaa !10, !alias.scope !17, !noalias !19
  %324 = add <2 x i64> %322, %wide.load228
  store <2 x i64> %324, ptr %323, align 8, !tbaa !10, !alias.scope !17, !noalias !19
  %325 = getelementptr inbounds [28 x i64], ptr %248, i64 0, i64 %index
  %wide.load229 = load <2 x i64>, ptr %325, align 8, !tbaa !10, !alias.scope !12
  %326 = getelementptr inbounds [28 x i64], ptr %249, i64 0, i64 %index
  %wide.load230 = load <2 x i64>, ptr %326, align 8, !tbaa !10, !alias.scope !15
  %327 = sub <2 x i64> %wide.load229, %wide.load230
  %328 = getelementptr inbounds [28 x i64], ptr %250, i64 0, i64 %index
  %wide.load231 = load <2 x i64>, ptr %328, align 8, !tbaa !10, !alias.scope !17, !noalias !19
  %329 = add <2 x i64> %327, %wide.load231
  store <2 x i64> %329, ptr %328, align 8, !tbaa !10, !alias.scope !17, !noalias !19
  %330 = getelementptr inbounds [28 x i64], ptr %251, i64 0, i64 %index
  %wide.load232 = load <2 x i64>, ptr %330, align 8, !tbaa !10, !alias.scope !12
  %331 = getelementptr inbounds [28 x i64], ptr %252, i64 0, i64 %index
  %wide.load233 = load <2 x i64>, ptr %331, align 8, !tbaa !10, !alias.scope !15
  %332 = sub <2 x i64> %wide.load232, %wide.load233
  %333 = getelementptr inbounds [28 x i64], ptr %253, i64 0, i64 %index
  %wide.load234 = load <2 x i64>, ptr %333, align 8, !tbaa !10, !alias.scope !17, !noalias !19
  %334 = add <2 x i64> %332, %wide.load234
  store <2 x i64> %334, ptr %333, align 8, !tbaa !10, !alias.scope !17, !noalias !19
  %335 = getelementptr inbounds [28 x i64], ptr %254, i64 0, i64 %index
  %wide.load235 = load <2 x i64>, ptr %335, align 8, !tbaa !10, !alias.scope !12
  %336 = getelementptr inbounds [28 x i64], ptr %255, i64 0, i64 %index
  %wide.load236 = load <2 x i64>, ptr %336, align 8, !tbaa !10, !alias.scope !15
  %337 = sub <2 x i64> %wide.load235, %wide.load236
  %338 = getelementptr inbounds [28 x i64], ptr %256, i64 0, i64 %index
  %wide.load237 = load <2 x i64>, ptr %338, align 8, !tbaa !10, !alias.scope !17, !noalias !19
  %339 = add <2 x i64> %337, %wide.load237
  store <2 x i64> %339, ptr %338, align 8, !tbaa !10, !alias.scope !17, !noalias !19
  %340 = getelementptr inbounds [28 x i64], ptr %257, i64 0, i64 %index
  %wide.load238 = load <2 x i64>, ptr %340, align 8, !tbaa !10, !alias.scope !12
  %341 = getelementptr inbounds [28 x i64], ptr %258, i64 0, i64 %index
  %wide.load239 = load <2 x i64>, ptr %341, align 8, !tbaa !10, !alias.scope !15
  %342 = sub <2 x i64> %wide.load238, %wide.load239
  %343 = getelementptr inbounds [28 x i64], ptr %259, i64 0, i64 %index
  %wide.load240 = load <2 x i64>, ptr %343, align 8, !tbaa !10, !alias.scope !17, !noalias !19
  %344 = add <2 x i64> %342, %wide.load240
  store <2 x i64> %344, ptr %343, align 8, !tbaa !10, !alias.scope !17, !noalias !19
  %345 = getelementptr inbounds [28 x i64], ptr %260, i64 0, i64 %index
  %wide.load241 = load <2 x i64>, ptr %345, align 8, !tbaa !10, !alias.scope !12
  %346 = getelementptr inbounds [28 x i64], ptr %261, i64 0, i64 %index
  %wide.load242 = load <2 x i64>, ptr %346, align 8, !tbaa !10, !alias.scope !15
  %347 = sub <2 x i64> %wide.load241, %wide.load242
  %348 = getelementptr inbounds [28 x i64], ptr %262, i64 0, i64 %index
  %wide.load243 = load <2 x i64>, ptr %348, align 8, !tbaa !10, !alias.scope !17, !noalias !19
  %349 = add <2 x i64> %347, %wide.load243
  store <2 x i64> %349, ptr %348, align 8, !tbaa !10, !alias.scope !17, !noalias !19
  %350 = getelementptr inbounds [28 x i64], ptr %263, i64 0, i64 %index
  %wide.load244 = load <2 x i64>, ptr %350, align 8, !tbaa !10, !alias.scope !12
  %351 = getelementptr inbounds [28 x i64], ptr %264, i64 0, i64 %index
  %wide.load245 = load <2 x i64>, ptr %351, align 8, !tbaa !10, !alias.scope !15
  %352 = sub <2 x i64> %wide.load244, %wide.load245
  %353 = getelementptr inbounds [28 x i64], ptr %265, i64 0, i64 %index
  %wide.load246 = load <2 x i64>, ptr %353, align 8, !tbaa !10, !alias.scope !17, !noalias !19
  %354 = add <2 x i64> %352, %wide.load246
  store <2 x i64> %354, ptr %353, align 8, !tbaa !10, !alias.scope !17, !noalias !19
  %355 = getelementptr inbounds [28 x i64], ptr %266, i64 0, i64 %index
  %wide.load247 = load <2 x i64>, ptr %355, align 8, !tbaa !10, !alias.scope !12
  %356 = getelementptr inbounds [28 x i64], ptr %267, i64 0, i64 %index
  %wide.load248 = load <2 x i64>, ptr %356, align 8, !tbaa !10, !alias.scope !15
  %357 = sub <2 x i64> %wide.load247, %wide.load248
  %358 = getelementptr inbounds [28 x i64], ptr %268, i64 0, i64 %index
  %wide.load249 = load <2 x i64>, ptr %358, align 8, !tbaa !10, !alias.scope !17, !noalias !19
  %359 = add <2 x i64> %357, %wide.load249
  store <2 x i64> %359, ptr %358, align 8, !tbaa !10, !alias.scope !17, !noalias !19
  %360 = getelementptr inbounds [28 x i64], ptr %269, i64 0, i64 %index
  %wide.load250 = load <2 x i64>, ptr %360, align 8, !tbaa !10, !alias.scope !12
  %361 = getelementptr inbounds [28 x i64], ptr %270, i64 0, i64 %index
  %wide.load251 = load <2 x i64>, ptr %361, align 8, !tbaa !10, !alias.scope !15
  %362 = sub <2 x i64> %wide.load250, %wide.load251
  %363 = getelementptr inbounds [28 x i64], ptr %271, i64 0, i64 %index
  %wide.load252 = load <2 x i64>, ptr %363, align 8, !tbaa !10, !alias.scope !17, !noalias !19
  %364 = add <2 x i64> %362, %wide.load252
  store <2 x i64> %364, ptr %363, align 8, !tbaa !10, !alias.scope !17, !noalias !19
  %365 = getelementptr inbounds [28 x i64], ptr %272, i64 0, i64 %index
  %wide.load253 = load <2 x i64>, ptr %365, align 8, !tbaa !10, !alias.scope !12
  %366 = getelementptr inbounds [28 x i64], ptr %273, i64 0, i64 %index
  %wide.load254 = load <2 x i64>, ptr %366, align 8, !tbaa !10, !alias.scope !15
  %367 = sub <2 x i64> %wide.load253, %wide.load254
  %368 = getelementptr inbounds [28 x i64], ptr %274, i64 0, i64 %index
  %wide.load255 = load <2 x i64>, ptr %368, align 8, !tbaa !10, !alias.scope !17, !noalias !19
  %369 = add <2 x i64> %367, %wide.load255
  store <2 x i64> %369, ptr %368, align 8, !tbaa !10, !alias.scope !17, !noalias !19
  %370 = getelementptr inbounds [28 x i64], ptr %275, i64 0, i64 %index
  %wide.load256 = load <2 x i64>, ptr %370, align 8, !tbaa !10, !alias.scope !12
  %371 = getelementptr inbounds [28 x i64], ptr %276, i64 0, i64 %index
  %wide.load257 = load <2 x i64>, ptr %371, align 8, !tbaa !10, !alias.scope !15
  %372 = sub <2 x i64> %wide.load256, %wide.load257
  %373 = getelementptr inbounds [28 x i64], ptr %277, i64 0, i64 %index
  %wide.load258 = load <2 x i64>, ptr %373, align 8, !tbaa !10, !alias.scope !17, !noalias !19
  %374 = add <2 x i64> %372, %wide.load258
  store <2 x i64> %374, ptr %373, align 8, !tbaa !10, !alias.scope !17, !noalias !19
  %375 = getelementptr inbounds [28 x i64], ptr %278, i64 0, i64 %index
  %wide.load259 = load <2 x i64>, ptr %375, align 8, !tbaa !10, !alias.scope !12
  %376 = getelementptr inbounds [28 x i64], ptr %279, i64 0, i64 %index
  %wide.load260 = load <2 x i64>, ptr %376, align 8, !tbaa !10, !alias.scope !15
  %377 = sub <2 x i64> %wide.load259, %wide.load260
  %378 = getelementptr inbounds [28 x i64], ptr %280, i64 0, i64 %index
  %wide.load261 = load <2 x i64>, ptr %378, align 8, !tbaa !10, !alias.scope !17, !noalias !19
  %379 = add <2 x i64> %377, %wide.load261
  store <2 x i64> %379, ptr %378, align 8, !tbaa !10, !alias.scope !17, !noalias !19
  %380 = getelementptr inbounds [28 x i64], ptr %281, i64 0, i64 %index
  %wide.load262 = load <2 x i64>, ptr %380, align 8, !tbaa !10, !alias.scope !12
  %381 = getelementptr inbounds [28 x i64], ptr %282, i64 0, i64 %index
  %wide.load263 = load <2 x i64>, ptr %381, align 8, !tbaa !10, !alias.scope !15
  %382 = sub <2 x i64> %wide.load262, %wide.load263
  %383 = getelementptr inbounds [28 x i64], ptr %283, i64 0, i64 %index
  %wide.load264 = load <2 x i64>, ptr %383, align 8, !tbaa !10, !alias.scope !17, !noalias !19
  %384 = add <2 x i64> %382, %wide.load264
  store <2 x i64> %384, ptr %383, align 8, !tbaa !10, !alias.scope !17, !noalias !19
  %385 = getelementptr inbounds [28 x i64], ptr %284, i64 0, i64 %index
  %wide.load265 = load <2 x i64>, ptr %385, align 8, !tbaa !10, !alias.scope !12
  %386 = getelementptr inbounds [28 x i64], ptr %285, i64 0, i64 %index
  %wide.load266 = load <2 x i64>, ptr %386, align 8, !tbaa !10, !alias.scope !15
  %387 = sub <2 x i64> %wide.load265, %wide.load266
  %388 = getelementptr inbounds [28 x i64], ptr %286, i64 0, i64 %index
  %wide.load267 = load <2 x i64>, ptr %388, align 8, !tbaa !10, !alias.scope !17, !noalias !19
  %389 = add <2 x i64> %387, %wide.load267
  store <2 x i64> %389, ptr %388, align 8, !tbaa !10, !alias.scope !17, !noalias !19
  %390 = getelementptr inbounds [28 x i64], ptr %287, i64 0, i64 %index
  %wide.load268 = load <2 x i64>, ptr %390, align 8, !tbaa !10, !alias.scope !12
  %391 = getelementptr inbounds [28 x i64], ptr %288, i64 0, i64 %index
  %wide.load269 = load <2 x i64>, ptr %391, align 8, !tbaa !10, !alias.scope !15
  %392 = sub <2 x i64> %wide.load268, %wide.load269
  %393 = getelementptr inbounds [28 x i64], ptr %289, i64 0, i64 %index
  %wide.load270 = load <2 x i64>, ptr %393, align 8, !tbaa !10, !alias.scope !17, !noalias !19
  %394 = add <2 x i64> %392, %wide.load270
  store <2 x i64> %394, ptr %393, align 8, !tbaa !10, !alias.scope !17, !noalias !19
  %395 = getelementptr inbounds [28 x i64], ptr %290, i64 0, i64 %index
  %wide.load271 = load <2 x i64>, ptr %395, align 8, !tbaa !10, !alias.scope !12
  %396 = getelementptr inbounds [28 x i64], ptr %291, i64 0, i64 %index
  %wide.load272 = load <2 x i64>, ptr %396, align 8, !tbaa !10, !alias.scope !15
  %397 = sub <2 x i64> %wide.load271, %wide.load272
  %398 = getelementptr inbounds [28 x i64], ptr %292, i64 0, i64 %index
  %wide.load273 = load <2 x i64>, ptr %398, align 8, !tbaa !10, !alias.scope !17, !noalias !19
  %399 = add <2 x i64> %397, %wide.load273
  store <2 x i64> %399, ptr %398, align 8, !tbaa !10, !alias.scope !17, !noalias !19
  %400 = getelementptr inbounds [28 x i64], ptr %293, i64 0, i64 %index
  %wide.load274 = load <2 x i64>, ptr %400, align 8, !tbaa !10, !alias.scope !12
  %401 = getelementptr inbounds [28 x i64], ptr %294, i64 0, i64 %index
  %wide.load275 = load <2 x i64>, ptr %401, align 8, !tbaa !10, !alias.scope !15
  %402 = sub <2 x i64> %wide.load274, %wide.load275
  %403 = getelementptr inbounds [28 x i64], ptr %295, i64 0, i64 %index
  %wide.load276 = load <2 x i64>, ptr %403, align 8, !tbaa !10, !alias.scope !17, !noalias !19
  %404 = add <2 x i64> %402, %wide.load276
  store <2 x i64> %404, ptr %403, align 8, !tbaa !10, !alias.scope !17, !noalias !19
  %405 = getelementptr inbounds [28 x i64], ptr %296, i64 0, i64 %index
  %wide.load277 = load <2 x i64>, ptr %405, align 8, !tbaa !10, !alias.scope !12
  %406 = getelementptr inbounds [28 x i64], ptr %297, i64 0, i64 %index
  %wide.load278 = load <2 x i64>, ptr %406, align 8, !tbaa !10, !alias.scope !15
  %407 = sub <2 x i64> %wide.load277, %wide.load278
  %408 = getelementptr inbounds [28 x i64], ptr %298, i64 0, i64 %index
  %wide.load279 = load <2 x i64>, ptr %408, align 8, !tbaa !10, !alias.scope !17, !noalias !19
  %409 = add <2 x i64> %407, %wide.load279
  store <2 x i64> %409, ptr %408, align 8, !tbaa !10, !alias.scope !17, !noalias !19
  %410 = getelementptr inbounds [28 x i64], ptr %299, i64 0, i64 %index
  %wide.load280 = load <2 x i64>, ptr %410, align 8, !tbaa !10, !alias.scope !12
  %411 = getelementptr inbounds [28 x i64], ptr %300, i64 0, i64 %index
  %wide.load281 = load <2 x i64>, ptr %411, align 8, !tbaa !10, !alias.scope !15
  %412 = sub <2 x i64> %wide.load280, %wide.load281
  %413 = getelementptr inbounds [28 x i64], ptr %301, i64 0, i64 %index
  %wide.load282 = load <2 x i64>, ptr %413, align 8, !tbaa !10, !alias.scope !17, !noalias !19
  %414 = add <2 x i64> %412, %wide.load282
  store <2 x i64> %414, ptr %413, align 8, !tbaa !10, !alias.scope !17, !noalias !19
  %415 = getelementptr inbounds [28 x i64], ptr %302, i64 0, i64 %index
  %wide.load283 = load <2 x i64>, ptr %415, align 8, !tbaa !10, !alias.scope !12
  %416 = getelementptr inbounds [28 x i64], ptr %303, i64 0, i64 %index
  %wide.load284 = load <2 x i64>, ptr %416, align 8, !tbaa !10, !alias.scope !15
  %417 = sub <2 x i64> %wide.load283, %wide.load284
  %418 = getelementptr inbounds [28 x i64], ptr %304, i64 0, i64 %index
  %wide.load285 = load <2 x i64>, ptr %418, align 8, !tbaa !10, !alias.scope !17, !noalias !19
  %419 = add <2 x i64> %417, %wide.load285
  store <2 x i64> %419, ptr %418, align 8, !tbaa !10, !alias.scope !17, !noalias !19
  %420 = getelementptr inbounds [28 x i64], ptr %305, i64 0, i64 %index
  %wide.load286 = load <2 x i64>, ptr %420, align 8, !tbaa !10, !alias.scope !12
  %421 = getelementptr inbounds [28 x i64], ptr %306, i64 0, i64 %index
  %wide.load287 = load <2 x i64>, ptr %421, align 8, !tbaa !10, !alias.scope !15
  %422 = sub <2 x i64> %wide.load286, %wide.load287
  %423 = getelementptr inbounds [28 x i64], ptr %307, i64 0, i64 %index
  %wide.load288 = load <2 x i64>, ptr %423, align 8, !tbaa !10, !alias.scope !17, !noalias !19
  %424 = add <2 x i64> %422, %wide.load288
  store <2 x i64> %424, ptr %423, align 8, !tbaa !10, !alias.scope !17, !noalias !19
  %425 = getelementptr inbounds [28 x i64], ptr %308, i64 0, i64 %index
  %wide.load289 = load <2 x i64>, ptr %425, align 8, !tbaa !10, !alias.scope !12
  %426 = getelementptr inbounds [28 x i64], ptr %309, i64 0, i64 %index
  %wide.load290 = load <2 x i64>, ptr %426, align 8, !tbaa !10, !alias.scope !15
  %427 = sub <2 x i64> %wide.load289, %wide.load290
  %428 = getelementptr inbounds [28 x i64], ptr %310, i64 0, i64 %index
  %wide.load291 = load <2 x i64>, ptr %428, align 8, !tbaa !10, !alias.scope !17, !noalias !19
  %429 = add <2 x i64> %427, %wide.load291
  store <2 x i64> %429, ptr %428, align 8, !tbaa !10, !alias.scope !17, !noalias !19
  %430 = getelementptr inbounds [28 x i64], ptr %311, i64 0, i64 %index
  %wide.load292 = load <2 x i64>, ptr %430, align 8, !tbaa !10, !alias.scope !12
  %431 = getelementptr inbounds [28 x i64], ptr %312, i64 0, i64 %index
  %wide.load293 = load <2 x i64>, ptr %431, align 8, !tbaa !10, !alias.scope !15
  %432 = sub <2 x i64> %wide.load292, %wide.load293
  %433 = getelementptr inbounds [28 x i64], ptr %313, i64 0, i64 %index
  %wide.load294 = load <2 x i64>, ptr %433, align 8, !tbaa !10, !alias.scope !17, !noalias !19
  %434 = add <2 x i64> %432, %wide.load294
  store <2 x i64> %434, ptr %433, align 8, !tbaa !10, !alias.scope !17, !noalias !19
  %435 = getelementptr inbounds [28 x i64], ptr %314, i64 0, i64 %index
  %wide.load295 = load <2 x i64>, ptr %435, align 8, !tbaa !10, !alias.scope !12
  %436 = getelementptr inbounds [28 x i64], ptr %315, i64 0, i64 %index
  %wide.load296 = load <2 x i64>, ptr %436, align 8, !tbaa !10, !alias.scope !15
  %437 = sub <2 x i64> %wide.load295, %wide.load296
  %438 = getelementptr inbounds [28 x i64], ptr %316, i64 0, i64 %index
  %wide.load297 = load <2 x i64>, ptr %438, align 8, !tbaa !10, !alias.scope !17, !noalias !19
  %439 = add <2 x i64> %437, %wide.load297
  store <2 x i64> %439, ptr %438, align 8, !tbaa !10, !alias.scope !17, !noalias !19
  %440 = getelementptr inbounds [28 x i64], ptr %317, i64 0, i64 %index
  %wide.load298 = load <2 x i64>, ptr %440, align 8, !tbaa !10, !alias.scope !12
  %441 = getelementptr inbounds [28 x i64], ptr %318, i64 0, i64 %index
  %wide.load299 = load <2 x i64>, ptr %441, align 8, !tbaa !10, !alias.scope !15
  %442 = sub <2 x i64> %wide.load298, %wide.load299
  %443 = getelementptr inbounds [28 x i64], ptr %319, i64 0, i64 %index
  %wide.load300 = load <2 x i64>, ptr %443, align 8, !tbaa !10, !alias.scope !17, !noalias !19
  %444 = add <2 x i64> %442, %wide.load300
  store <2 x i64> %444, ptr %443, align 8, !tbaa !10, !alias.scope !17, !noalias !19
  %index.next = add nuw i64 %index, 2
  %445 = icmp eq i64 %index.next, 28
  br i1 %445, label %middle.block, label %vector.body, !llvm.loop !20

446:                                              ; preds = %3
  %447 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.8)
  br label %649

scalar.ph:                                        ; preds = %.preheader217, %scalar.ph
  %indvars.iv = phi i64 [ %indvars.iv.next, %scalar.ph ], [ 0, %.preheader217 ]
  %448 = getelementptr inbounds [28 x i64], ptr %245, i64 0, i64 %indvars.iv
  %449 = load i64, ptr %448, align 8, !tbaa !10
  %450 = getelementptr inbounds [28 x i64], ptr %246, i64 0, i64 %indvars.iv
  %451 = load i64, ptr %450, align 8, !tbaa !10
  %452 = sub i64 %449, %451
  %453 = getelementptr inbounds [28 x i64], ptr %247, i64 0, i64 %indvars.iv
  %454 = load i64, ptr %453, align 8, !tbaa !10
  %455 = add i64 %452, %454
  store i64 %455, ptr %453, align 8, !tbaa !10
  %456 = getelementptr inbounds [28 x i64], ptr %248, i64 0, i64 %indvars.iv
  %457 = load i64, ptr %456, align 8, !tbaa !10
  %458 = getelementptr inbounds [28 x i64], ptr %249, i64 0, i64 %indvars.iv
  %459 = load i64, ptr %458, align 8, !tbaa !10
  %460 = sub i64 %457, %459
  %461 = getelementptr inbounds [28 x i64], ptr %250, i64 0, i64 %indvars.iv
  %462 = load i64, ptr %461, align 8, !tbaa !10
  %463 = add i64 %460, %462
  store i64 %463, ptr %461, align 8, !tbaa !10
  %464 = getelementptr inbounds [28 x i64], ptr %251, i64 0, i64 %indvars.iv
  %465 = load i64, ptr %464, align 8, !tbaa !10
  %466 = getelementptr inbounds [28 x i64], ptr %252, i64 0, i64 %indvars.iv
  %467 = load i64, ptr %466, align 8, !tbaa !10
  %468 = sub i64 %465, %467
  %469 = getelementptr inbounds [28 x i64], ptr %253, i64 0, i64 %indvars.iv
  %470 = load i64, ptr %469, align 8, !tbaa !10
  %471 = add i64 %468, %470
  store i64 %471, ptr %469, align 8, !tbaa !10
  %472 = getelementptr inbounds [28 x i64], ptr %254, i64 0, i64 %indvars.iv
  %473 = load i64, ptr %472, align 8, !tbaa !10
  %474 = getelementptr inbounds [28 x i64], ptr %255, i64 0, i64 %indvars.iv
  %475 = load i64, ptr %474, align 8, !tbaa !10
  %476 = sub i64 %473, %475
  %477 = getelementptr inbounds [28 x i64], ptr %256, i64 0, i64 %indvars.iv
  %478 = load i64, ptr %477, align 8, !tbaa !10
  %479 = add i64 %476, %478
  store i64 %479, ptr %477, align 8, !tbaa !10
  %480 = getelementptr inbounds [28 x i64], ptr %257, i64 0, i64 %indvars.iv
  %481 = load i64, ptr %480, align 8, !tbaa !10
  %482 = getelementptr inbounds [28 x i64], ptr %258, i64 0, i64 %indvars.iv
  %483 = load i64, ptr %482, align 8, !tbaa !10
  %484 = sub i64 %481, %483
  %485 = getelementptr inbounds [28 x i64], ptr %259, i64 0, i64 %indvars.iv
  %486 = load i64, ptr %485, align 8, !tbaa !10
  %487 = add i64 %484, %486
  store i64 %487, ptr %485, align 8, !tbaa !10
  %488 = getelementptr inbounds [28 x i64], ptr %260, i64 0, i64 %indvars.iv
  %489 = load i64, ptr %488, align 8, !tbaa !10
  %490 = getelementptr inbounds [28 x i64], ptr %261, i64 0, i64 %indvars.iv
  %491 = load i64, ptr %490, align 8, !tbaa !10
  %492 = sub i64 %489, %491
  %493 = getelementptr inbounds [28 x i64], ptr %262, i64 0, i64 %indvars.iv
  %494 = load i64, ptr %493, align 8, !tbaa !10
  %495 = add i64 %492, %494
  store i64 %495, ptr %493, align 8, !tbaa !10
  %496 = getelementptr inbounds [28 x i64], ptr %263, i64 0, i64 %indvars.iv
  %497 = load i64, ptr %496, align 8, !tbaa !10
  %498 = getelementptr inbounds [28 x i64], ptr %264, i64 0, i64 %indvars.iv
  %499 = load i64, ptr %498, align 8, !tbaa !10
  %500 = sub i64 %497, %499
  %501 = getelementptr inbounds [28 x i64], ptr %265, i64 0, i64 %indvars.iv
  %502 = load i64, ptr %501, align 8, !tbaa !10
  %503 = add i64 %500, %502
  store i64 %503, ptr %501, align 8, !tbaa !10
  %504 = getelementptr inbounds [28 x i64], ptr %266, i64 0, i64 %indvars.iv
  %505 = load i64, ptr %504, align 8, !tbaa !10
  %506 = getelementptr inbounds [28 x i64], ptr %267, i64 0, i64 %indvars.iv
  %507 = load i64, ptr %506, align 8, !tbaa !10
  %508 = sub i64 %505, %507
  %509 = getelementptr inbounds [28 x i64], ptr %268, i64 0, i64 %indvars.iv
  %510 = load i64, ptr %509, align 8, !tbaa !10
  %511 = add i64 %508, %510
  store i64 %511, ptr %509, align 8, !tbaa !10
  %512 = getelementptr inbounds [28 x i64], ptr %269, i64 0, i64 %indvars.iv
  %513 = load i64, ptr %512, align 8, !tbaa !10
  %514 = getelementptr inbounds [28 x i64], ptr %270, i64 0, i64 %indvars.iv
  %515 = load i64, ptr %514, align 8, !tbaa !10
  %516 = sub i64 %513, %515
  %517 = getelementptr inbounds [28 x i64], ptr %271, i64 0, i64 %indvars.iv
  %518 = load i64, ptr %517, align 8, !tbaa !10
  %519 = add i64 %516, %518
  store i64 %519, ptr %517, align 8, !tbaa !10
  %520 = getelementptr inbounds [28 x i64], ptr %272, i64 0, i64 %indvars.iv
  %521 = load i64, ptr %520, align 8, !tbaa !10
  %522 = getelementptr inbounds [28 x i64], ptr %273, i64 0, i64 %indvars.iv
  %523 = load i64, ptr %522, align 8, !tbaa !10
  %524 = sub i64 %521, %523
  %525 = getelementptr inbounds [28 x i64], ptr %274, i64 0, i64 %indvars.iv
  %526 = load i64, ptr %525, align 8, !tbaa !10
  %527 = add i64 %524, %526
  store i64 %527, ptr %525, align 8, !tbaa !10
  %528 = getelementptr inbounds [28 x i64], ptr %275, i64 0, i64 %indvars.iv
  %529 = load i64, ptr %528, align 8, !tbaa !10
  %530 = getelementptr inbounds [28 x i64], ptr %276, i64 0, i64 %indvars.iv
  %531 = load i64, ptr %530, align 8, !tbaa !10
  %532 = sub i64 %529, %531
  %533 = getelementptr inbounds [28 x i64], ptr %277, i64 0, i64 %indvars.iv
  %534 = load i64, ptr %533, align 8, !tbaa !10
  %535 = add i64 %532, %534
  store i64 %535, ptr %533, align 8, !tbaa !10
  %536 = getelementptr inbounds [28 x i64], ptr %278, i64 0, i64 %indvars.iv
  %537 = load i64, ptr %536, align 8, !tbaa !10
  %538 = getelementptr inbounds [28 x i64], ptr %279, i64 0, i64 %indvars.iv
  %539 = load i64, ptr %538, align 8, !tbaa !10
  %540 = sub i64 %537, %539
  %541 = getelementptr inbounds [28 x i64], ptr %280, i64 0, i64 %indvars.iv
  %542 = load i64, ptr %541, align 8, !tbaa !10
  %543 = add i64 %540, %542
  store i64 %543, ptr %541, align 8, !tbaa !10
  %544 = getelementptr inbounds [28 x i64], ptr %281, i64 0, i64 %indvars.iv
  %545 = load i64, ptr %544, align 8, !tbaa !10
  %546 = getelementptr inbounds [28 x i64], ptr %282, i64 0, i64 %indvars.iv
  %547 = load i64, ptr %546, align 8, !tbaa !10
  %548 = sub i64 %545, %547
  %549 = getelementptr inbounds [28 x i64], ptr %283, i64 0, i64 %indvars.iv
  %550 = load i64, ptr %549, align 8, !tbaa !10
  %551 = add i64 %548, %550
  store i64 %551, ptr %549, align 8, !tbaa !10
  %552 = getelementptr inbounds [28 x i64], ptr %284, i64 0, i64 %indvars.iv
  %553 = load i64, ptr %552, align 8, !tbaa !10
  %554 = getelementptr inbounds [28 x i64], ptr %285, i64 0, i64 %indvars.iv
  %555 = load i64, ptr %554, align 8, !tbaa !10
  %556 = sub i64 %553, %555
  %557 = getelementptr inbounds [28 x i64], ptr %286, i64 0, i64 %indvars.iv
  %558 = load i64, ptr %557, align 8, !tbaa !10
  %559 = add i64 %556, %558
  store i64 %559, ptr %557, align 8, !tbaa !10
  %560 = getelementptr inbounds [28 x i64], ptr %287, i64 0, i64 %indvars.iv
  %561 = load i64, ptr %560, align 8, !tbaa !10
  %562 = getelementptr inbounds [28 x i64], ptr %288, i64 0, i64 %indvars.iv
  %563 = load i64, ptr %562, align 8, !tbaa !10
  %564 = sub i64 %561, %563
  %565 = getelementptr inbounds [28 x i64], ptr %289, i64 0, i64 %indvars.iv
  %566 = load i64, ptr %565, align 8, !tbaa !10
  %567 = add i64 %564, %566
  store i64 %567, ptr %565, align 8, !tbaa !10
  %568 = getelementptr inbounds [28 x i64], ptr %290, i64 0, i64 %indvars.iv
  %569 = load i64, ptr %568, align 8, !tbaa !10
  %570 = getelementptr inbounds [28 x i64], ptr %291, i64 0, i64 %indvars.iv
  %571 = load i64, ptr %570, align 8, !tbaa !10
  %572 = sub i64 %569, %571
  %573 = getelementptr inbounds [28 x i64], ptr %292, i64 0, i64 %indvars.iv
  %574 = load i64, ptr %573, align 8, !tbaa !10
  %575 = add i64 %572, %574
  store i64 %575, ptr %573, align 8, !tbaa !10
  %576 = getelementptr inbounds [28 x i64], ptr %293, i64 0, i64 %indvars.iv
  %577 = load i64, ptr %576, align 8, !tbaa !10
  %578 = getelementptr inbounds [28 x i64], ptr %294, i64 0, i64 %indvars.iv
  %579 = load i64, ptr %578, align 8, !tbaa !10
  %580 = sub i64 %577, %579
  %581 = getelementptr inbounds [28 x i64], ptr %295, i64 0, i64 %indvars.iv
  %582 = load i64, ptr %581, align 8, !tbaa !10
  %583 = add i64 %580, %582
  store i64 %583, ptr %581, align 8, !tbaa !10
  %584 = getelementptr inbounds [28 x i64], ptr %296, i64 0, i64 %indvars.iv
  %585 = load i64, ptr %584, align 8, !tbaa !10
  %586 = getelementptr inbounds [28 x i64], ptr %297, i64 0, i64 %indvars.iv
  %587 = load i64, ptr %586, align 8, !tbaa !10
  %588 = sub i64 %585, %587
  %589 = getelementptr inbounds [28 x i64], ptr %298, i64 0, i64 %indvars.iv
  %590 = load i64, ptr %589, align 8, !tbaa !10
  %591 = add i64 %588, %590
  store i64 %591, ptr %589, align 8, !tbaa !10
  %592 = getelementptr inbounds [28 x i64], ptr %299, i64 0, i64 %indvars.iv
  %593 = load i64, ptr %592, align 8, !tbaa !10
  %594 = getelementptr inbounds [28 x i64], ptr %300, i64 0, i64 %indvars.iv
  %595 = load i64, ptr %594, align 8, !tbaa !10
  %596 = sub i64 %593, %595
  %597 = getelementptr inbounds [28 x i64], ptr %301, i64 0, i64 %indvars.iv
  %598 = load i64, ptr %597, align 8, !tbaa !10
  %599 = add i64 %596, %598
  store i64 %599, ptr %597, align 8, !tbaa !10
  %600 = getelementptr inbounds [28 x i64], ptr %302, i64 0, i64 %indvars.iv
  %601 = load i64, ptr %600, align 8, !tbaa !10
  %602 = getelementptr inbounds [28 x i64], ptr %303, i64 0, i64 %indvars.iv
  %603 = load i64, ptr %602, align 8, !tbaa !10
  %604 = sub i64 %601, %603
  %605 = getelementptr inbounds [28 x i64], ptr %304, i64 0, i64 %indvars.iv
  %606 = load i64, ptr %605, align 8, !tbaa !10
  %607 = add i64 %604, %606
  store i64 %607, ptr %605, align 8, !tbaa !10
  %608 = getelementptr inbounds [28 x i64], ptr %305, i64 0, i64 %indvars.iv
  %609 = load i64, ptr %608, align 8, !tbaa !10
  %610 = getelementptr inbounds [28 x i64], ptr %306, i64 0, i64 %indvars.iv
  %611 = load i64, ptr %610, align 8, !tbaa !10
  %612 = sub i64 %609, %611
  %613 = getelementptr inbounds [28 x i64], ptr %307, i64 0, i64 %indvars.iv
  %614 = load i64, ptr %613, align 8, !tbaa !10
  %615 = add i64 %612, %614
  store i64 %615, ptr %613, align 8, !tbaa !10
  %616 = getelementptr inbounds [28 x i64], ptr %308, i64 0, i64 %indvars.iv
  %617 = load i64, ptr %616, align 8, !tbaa !10
  %618 = getelementptr inbounds [28 x i64], ptr %309, i64 0, i64 %indvars.iv
  %619 = load i64, ptr %618, align 8, !tbaa !10
  %620 = sub i64 %617, %619
  %621 = getelementptr inbounds [28 x i64], ptr %310, i64 0, i64 %indvars.iv
  %622 = load i64, ptr %621, align 8, !tbaa !10
  %623 = add i64 %620, %622
  store i64 %623, ptr %621, align 8, !tbaa !10
  %624 = getelementptr inbounds [28 x i64], ptr %311, i64 0, i64 %indvars.iv
  %625 = load i64, ptr %624, align 8, !tbaa !10
  %626 = getelementptr inbounds [28 x i64], ptr %312, i64 0, i64 %indvars.iv
  %627 = load i64, ptr %626, align 8, !tbaa !10
  %628 = sub i64 %625, %627
  %629 = getelementptr inbounds [28 x i64], ptr %313, i64 0, i64 %indvars.iv
  %630 = load i64, ptr %629, align 8, !tbaa !10
  %631 = add i64 %628, %630
  store i64 %631, ptr %629, align 8, !tbaa !10
  %632 = getelementptr inbounds [28 x i64], ptr %314, i64 0, i64 %indvars.iv
  %633 = load i64, ptr %632, align 8, !tbaa !10
  %634 = getelementptr inbounds [28 x i64], ptr %315, i64 0, i64 %indvars.iv
  %635 = load i64, ptr %634, align 8, !tbaa !10
  %636 = sub i64 %633, %635
  %637 = getelementptr inbounds [28 x i64], ptr %316, i64 0, i64 %indvars.iv
  %638 = load i64, ptr %637, align 8, !tbaa !10
  %639 = add i64 %636, %638
  store i64 %639, ptr %637, align 8, !tbaa !10
  %640 = getelementptr inbounds [28 x i64], ptr %317, i64 0, i64 %indvars.iv
  %641 = load i64, ptr %640, align 8, !tbaa !10
  %642 = getelementptr inbounds [28 x i64], ptr %318, i64 0, i64 %indvars.iv
  %643 = load i64, ptr %642, align 8, !tbaa !10
  %644 = sub i64 %641, %643
  %645 = getelementptr inbounds [28 x i64], ptr %319, i64 0, i64 %indvars.iv
  %646 = load i64, ptr %645, align 8, !tbaa !10
  %647 = add i64 %644, %646
  store i64 %647, ptr %645, 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
  %648 = getelementptr inbounds i8, ptr %2, i64 6288
  store i32 %5, ptr %648, align 8, !tbaa !5
  br label %649

649:                                              ; preds = %middle.block, %446
  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 6288}
!6 = !{!"ctrs_uncore", !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, !7, i64 2256, !7, i64 2480, !7, i64 2704, !7, i64 2928, !7, i64 3152, !7, i64 3376, !7, i64 3600, !7, i64 3824, !7, i64 4048, !7, i64 4272, !7, i64 4496, !7, i64 4720, !7, i64 4944, !7, i64 5168, !7, i64 5392, !7, i64 5616, !7, i64 5840, !7, i64 6064, !9, i64 6288}
!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