; LLVM IR from ekoontz/graphlab :: src/graphlab/extern/metis/libmetis/ccgraph.ll_libmetis (CreateCoarseGraph)

; 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.controldef = type { i64, i64, i64, i64, i64, i64, float, i64, i64, i64, i64, %struct.workspacedef, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double }
%struct.workspacedef = type { ptr, i64, i64, ptr, ptr, i64, ptr, ptr }
%struct.graphdef = type { i64, i64, ptr, ptr, ptr, ptr, ptr, i32, i32, i32, i32, i32, ptr, ptr, ptr, ptr, i64, i64, ptr, ptr, i64, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i64, ptr, ptr, ptr, ptr }

; Function Attrs: nounwind uwtable
define dso_local void @libmetis__CreateCoarseGraph(ptr noundef %0, ptr noundef %1, i64 noundef %2, ptr noundef %3, ptr noundef %4) #0 {
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca i64, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca i64, align 8
  %12 = alloca i64, align 8
  %13 = alloca i64, align 8
  %14 = alloca i64, align 8
  %15 = alloca i64, align 8
  %16 = alloca i64, align 8
  %17 = alloca i64, align 8
  %18 = alloca i64, align 8
  %19 = alloca i64, align 8
  %20 = alloca i64, align 8
  %21 = alloca i64, align 8
  %22 = alloca i64, align 8
  %23 = alloca i64, align 8
  %24 = alloca i64, align 8
  %25 = alloca i64, align 8
  %26 = alloca i64, align 8
  %27 = alloca i64, align 8
  %28 = alloca ptr, align 8
  %29 = alloca ptr, align 8
  %30 = alloca ptr, align 8
  %31 = alloca ptr, align 8
  %32 = alloca ptr, align 8
  %33 = alloca ptr, align 8
  %34 = alloca ptr, align 8
  %35 = alloca ptr, align 8
  %36 = alloca ptr, align 8
  %37 = alloca ptr, align 8
  %38 = alloca ptr, align 8
  %39 = alloca ptr, align 8
  %40 = alloca ptr, align 8
  %41 = alloca ptr, align 8
  %42 = alloca ptr, align 8
  %43 = alloca ptr, align 8
  %44 = alloca ptr, align 8
  %45 = alloca ptr, align 8
  %46 = alloca i32, align 4
  store ptr %0, ptr %6, align 8, !tbaa !5
  store ptr %1, ptr %7, align 8, !tbaa !5
  store i64 %2, ptr %8, align 8, !tbaa !9
  store ptr %3, ptr %9, align 8, !tbaa !5
  store ptr %4, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #4
  %47 = load ptr, ptr %6, align 8, !tbaa !5
  %48 = getelementptr inbounds %struct.controldef, ptr %47, i32 0, i32 7
  %49 = load i64, ptr %48, align 8, !tbaa !11
  %50 = icmp eq i64 %49, 6
  %51 = zext i1 %50 to i64
  %52 = select i1 %50, i32 1, i32 0
  %53 = sext i32 %52 to i64
  store i64 %53, ptr %27, align 8, !tbaa !9
  store i64 2047, ptr %26, align 8, !tbaa !9
  %54 = load i64, ptr %8, align 8, !tbaa !9
  %55 = load i64, ptr %26, align 8, !tbaa !9
  %56 = mul nsw i64 8, %55
  %57 = icmp slt i64 %54, %56
  br i1 %57, label %67, label %58

58:                                               ; preds = %5
  %59 = load ptr, ptr %7, align 8, !tbaa !5
  %60 = getelementptr inbounds %struct.graphdef, ptr %59, i32 0, i32 1
  %61 = load i64, ptr %60, align 8, !tbaa !16
  %62 = load ptr, ptr %7, align 8, !tbaa !5
  %63 = getelementptr inbounds %struct.graphdef, ptr %62, i32 0, i32 0
  %64 = load i64, ptr %63, align 8, !tbaa !19
  %65 = sdiv i64 %61, %64
  %66 = icmp sgt i64 %65, 15
  br i1 %66, label %67, label %73

67:                                               ; preds = %58, %5
  %68 = load ptr, ptr %6, align 8, !tbaa !5
  %69 = load ptr, ptr %7, align 8, !tbaa !5
  %70 = load i64, ptr %8, align 8, !tbaa !9
  %71 = load ptr, ptr %9, align 8, !tbaa !5
  %72 = load ptr, ptr %10, align 8, !tbaa !5
  call void @libmetis__CreateCoarseGraphNoMask(ptr noundef %68, ptr noundef %69, i64 noundef %70, ptr noundef %71, ptr noundef %72)
  store i32 1, ptr %46, align 4
  br label %649

73:                                               ; preds = %58
  %74 = load ptr, ptr %6, align 8, !tbaa !5
  %75 = getelementptr inbounds %struct.controldef, ptr %74, i32 0, i32 1
  %76 = load i64, ptr %75, align 8, !tbaa !20
  %77 = and i64 %76, 1
  %78 = icmp ne i64 %77, 0
  br i1 %78, label %79, label %85

79:                                               ; preds = %73
  %80 = call double @gk_CPUSeconds()
  %81 = load ptr, ptr %6, align 8, !tbaa !5
  %82 = getelementptr inbounds %struct.controldef, ptr %81, i32 0, i32 15
  %83 = load double, ptr %82, align 8, !tbaa !21
  %84 = fsub double %83, %80
  store double %84, ptr %82, align 8, !tbaa !21
  br label %85

85:                                               ; preds = %79, %73
  %86 = load ptr, ptr %7, align 8, !tbaa !5
  %87 = getelementptr inbounds %struct.graphdef, ptr %86, i32 0, i32 0
  %88 = load i64, ptr %87, align 8, !tbaa !19
  store i64 %88, ptr %20, align 8, !tbaa !9
  %89 = load ptr, ptr %7, align 8, !tbaa !5
  %90 = getelementptr inbounds %struct.graphdef, ptr %89, i32 0, i32 28
  %91 = load i64, ptr %90, align 8, !tbaa !22
  store i64 %91, ptr %22, align 8, !tbaa !9
  %92 = load ptr, ptr %7, align 8, !tbaa !5
  %93 = getelementptr inbounds %struct.graphdef, ptr %92, i32 0, i32 2
  %94 = load ptr, ptr %93, align 8, !tbaa !23
  store ptr %94, ptr %28, align 8, !tbaa !5
  %95 = load ptr, ptr %7, align 8, !tbaa !5
  %96 = getelementptr inbounds %struct.graphdef, ptr %95, i32 0, i32 3
  %97 = load ptr, ptr %96, align 8, !tbaa !24
  store ptr %97, ptr %29, align 8, !tbaa !5
  %98 = load ptr, ptr %7, align 8, !tbaa !5
  %99 = getelementptr inbounds %struct.graphdef, ptr %98, i32 0, i32 4
  %100 = load ptr, ptr %99, align 8, !tbaa !25
  store ptr %100, ptr %30, align 8, !tbaa !5
  %101 = load ptr, ptr %7, align 8, !tbaa !5
  %102 = getelementptr inbounds %struct.graphdef, ptr %101, i32 0, i32 29
  %103 = load ptr, ptr %102, align 8, !tbaa !26
  store ptr %103, ptr %43, align 8, !tbaa !5
  %104 = load ptr, ptr %7, align 8, !tbaa !5
  %105 = getelementptr inbounds %struct.graphdef, ptr %104, i32 0, i32 5
  %106 = load ptr, ptr %105, align 8, !tbaa !27
  store ptr %106, ptr %31, align 8, !tbaa !5
  %107 = load ptr, ptr %7, align 8, !tbaa !5
  %108 = getelementptr inbounds %struct.graphdef, ptr %107, i32 0, i32 6
  %109 = load ptr, ptr %108, align 8, !tbaa !28
  store ptr %109, ptr %32, align 8, !tbaa !5
  %110 = load ptr, ptr %7, align 8, !tbaa !5
  %111 = getelementptr inbounds %struct.graphdef, ptr %110, i32 0, i32 13
  %112 = load ptr, ptr %111, align 8, !tbaa !29
  store ptr %112, ptr %33, align 8, !tbaa !5
  %113 = load ptr, ptr %7, align 8, !tbaa !5
  %114 = getelementptr inbounds %struct.graphdef, ptr %113, i32 0, i32 15
  %115 = load ptr, ptr %114, align 8, !tbaa !30
  store ptr %115, ptr %35, align 8, !tbaa !5
  %116 = load ptr, ptr %7, align 8, !tbaa !5
  %117 = load i64, ptr %8, align 8, !tbaa !9
  %118 = load i64, ptr %27, align 8, !tbaa !9
  %119 = call ptr @libmetis__SetUpCoarseGraph(ptr noundef %116, i64 noundef %117, i64 noundef %118)
  store ptr %119, ptr %45, align 8, !tbaa !5
  %120 = load ptr, ptr %45, align 8, !tbaa !5
  %121 = getelementptr inbounds %struct.graphdef, ptr %120, i32 0, i32 2
  %122 = load ptr, ptr %121, align 8, !tbaa !23
  store ptr %122, ptr %37, align 8, !tbaa !5
  %123 = load ptr, ptr %45, align 8, !tbaa !5
  %124 = getelementptr inbounds %struct.graphdef, ptr %123, i32 0, i32 3
  %125 = load ptr, ptr %124, align 8, !tbaa !24
  store ptr %125, ptr %38, align 8, !tbaa !5
  %126 = load ptr, ptr %45, align 8, !tbaa !5
  %127 = getelementptr inbounds %struct.graphdef, ptr %126, i32 0, i32 4
  %128 = load ptr, ptr %127, align 8, !tbaa !25
  store ptr %128, ptr %39, align 8, !tbaa !5
  %129 = load ptr, ptr %45, align 8, !tbaa !5
  %130 = getelementptr inbounds %struct.graphdef, ptr %129, i32 0, i32 29
  %131 = load ptr, ptr %130, align 8, !tbaa !26
  store ptr %131, ptr %44, align 8, !tbaa !5
  %132 = load ptr, ptr %45, align 8, !tbaa !5
  %133 = getelementptr inbounds %struct.graphdef, ptr %132, i32 0, i32 13
  %134 = load ptr, ptr %133, align 8, !tbaa !29
  store ptr %134, ptr %42, align 8, !tbaa !5
  %135 = load ptr, ptr %45, align 8, !tbaa !5
  %136 = getelementptr inbounds %struct.graphdef, ptr %135, i32 0, i32 5
  %137 = load ptr, ptr %136, align 8, !tbaa !27
  store ptr %137, ptr %40, align 8, !tbaa !5
  %138 = load ptr, ptr %45, align 8, !tbaa !5
  %139 = getelementptr inbounds %struct.graphdef, ptr %138, i32 0, i32 6
  %140 = load ptr, ptr %139, align 8, !tbaa !28
  store ptr %140, ptr %41, align 8, !tbaa !5
  %141 = load ptr, ptr %28, align 8, !tbaa !5
  %142 = load i64, ptr %20, align 8, !tbaa !9
  %143 = getelementptr inbounds i64, ptr %141, i64 %142
  %144 = load i64, ptr %143, align 8, !tbaa !9
  store i64 %144, ptr %19, align 8, !tbaa !9
  %145 = load ptr, ptr %6, align 8, !tbaa !5
  %146 = getelementptr inbounds %struct.controldef, ptr %145, i32 0, i32 11
  %147 = getelementptr inbounds %struct.workspacedef, ptr %146, i32 0, i32 6
  %148 = load ptr, ptr %147, align 8, !tbaa !31
  store ptr %148, ptr %34, align 8, !tbaa !5
  %149 = load ptr, ptr %34, align 8, !tbaa !5
  %150 = load ptr, ptr %31, align 8, !tbaa !5
  %151 = load i64, ptr %19, align 8, !tbaa !9
  %152 = mul i64 %151, 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %149, ptr align 8 %150, i64 %152, i1 false)
  store i64 0, ptr %11, align 8, !tbaa !9
  br label %153

153:                                              ; preds = %168, %85
  %154 = load i64, ptr %11, align 8, !tbaa !9
  %155 = load i64, ptr %19, align 8, !tbaa !9
  %156 = icmp slt i64 %154, %155
  br i1 %156, label %157, label %171

157:                                              ; preds = %153
  %158 = load ptr, ptr %35, align 8, !tbaa !5
  %159 = load ptr, ptr %34, align 8, !tbaa !5
  %160 = load i64, ptr %11, align 8, !tbaa !9
  %161 = getelementptr inbounds i64, ptr %159, i64 %160
  %162 = load i64, ptr %161, align 8, !tbaa !9
  %163 = getelementptr inbounds i64, ptr %158, i64 %162
  %164 = load i64, ptr %163, align 8, !tbaa !9
  %165 = load ptr, ptr %34, align 8, !tbaa !5
  %166 = load i64, ptr %11, align 8, !tbaa !9
  %167 = getelementptr inbounds i64, ptr %165, i64 %166
  store i64 %164, ptr %167, align 8, !tbaa !9
  br label %168

168:                                              ; preds = %157
  %169 = load i64, ptr %11, align 8, !tbaa !9
  %170 = add nsw i64 %169, 1
  store i64 %170, ptr %11, align 8, !tbaa !9
  br label %153, !llvm.loop !32

171:                                              ; preds = %153
  %172 = load i64, ptr %26, align 8, !tbaa !9
  %173 = add nsw i64 %172, 1
  %174 = load ptr, ptr %6, align 8, !tbaa !5
  %175 = load i64, ptr %26, align 8, !tbaa !9
  %176 = add nsw i64 %175, 1
  %177 = call ptr @libmetis__idxwspacemalloc(ptr noundef %174, i64 noundef %176)
  %178 = call ptr @libmetis__idxset(i64 noundef %173, i64 noundef -1, ptr noundef %177)
  store ptr %178, ptr %36, align 8, !tbaa !5
  store i64 0, ptr %23, align 8, !tbaa !9
  store i64 0, ptr %8, align 8, !tbaa !9
  %179 = load ptr, ptr %37, align 8, !tbaa !5
  %180 = getelementptr inbounds i64, ptr %179, i64 0
  store i64 0, ptr %180, align 8, !tbaa !9
  store i64 0, ptr %11, align 8, !tbaa !9
  br label %181

181:                                              ; preds = %624, %171
  %182 = load i64, ptr %11, align 8, !tbaa !9
  %183 = load i64, ptr %20, align 8, !tbaa !9
  %184 = icmp slt i64 %182, %183
  br i1 %184, label %185, label %627

185:                                              ; preds = %181
  %186 = load ptr, ptr %10, align 8, !tbaa !5
  %187 = load i64, ptr %11, align 8, !tbaa !9
  %188 = getelementptr inbounds i64, ptr %186, i64 %187
  %189 = load i64, ptr %188, align 8, !tbaa !9
  store i64 %189, ptr %24, align 8, !tbaa !9
  %190 = load ptr, ptr %35, align 8, !tbaa !5
  %191 = load i64, ptr %24, align 8, !tbaa !9
  %192 = getelementptr inbounds i64, ptr %190, i64 %191
  %193 = load i64, ptr %192, align 8, !tbaa !9
  %194 = load i64, ptr %8, align 8, !tbaa !9
  %195 = icmp ne i64 %193, %194
  br i1 %195, label %196, label %197

196:                                              ; preds = %185
  br label %624

197:                                              ; preds = %185
  %198 = load ptr, ptr %9, align 8, !tbaa !5
  %199 = load i64, ptr %24, align 8, !tbaa !9
  %200 = getelementptr inbounds i64, ptr %198, i64 %199
  %201 = load i64, ptr %200, align 8, !tbaa !9
  store i64 %201, ptr %25, align 8, !tbaa !9
  %202 = load i64, ptr %22, align 8, !tbaa !9
  %203 = icmp eq i64 %202, 1
  br i1 %203, label %204, label %212

204:                                              ; preds = %197
  %205 = load ptr, ptr %29, align 8, !tbaa !5
  %206 = load i64, ptr %24, align 8, !tbaa !9
  %207 = getelementptr inbounds i64, ptr %205, i64 %206
  %208 = load i64, ptr %207, align 8, !tbaa !9
  %209 = load ptr, ptr %38, align 8, !tbaa !5
  %210 = load i64, ptr %8, align 8, !tbaa !9
  %211 = getelementptr inbounds i64, ptr %209, i64 %210
  store i64 %208, ptr %211, align 8, !tbaa !9
  br label %225

212:                                              ; preds = %197
  %213 = load ptr, ptr %44, align 8, !tbaa !5
  %214 = load i64, ptr %8, align 8, !tbaa !9
  %215 = load i64, ptr %22, align 8, !tbaa !9
  %216 = mul nsw i64 %214, %215
  %217 = getelementptr inbounds float, ptr %213, i64 %216
  %218 = load ptr, ptr %43, align 8, !tbaa !5
  %219 = load i64, ptr %24, align 8, !tbaa !9
  %220 = load i64, ptr %22, align 8, !tbaa !9
  %221 = mul nsw i64 %219, %220
  %222 = getelementptr inbounds float, ptr %218, i64 %221
  %223 = load i64, ptr %22, align 8, !tbaa !9
  %224 = mul i64 4, %223
  call void @llvm.memmove.p0.p0.i64(ptr align 1 %217, ptr align 1 %222, i64 %224, i1 false)
  br label %225

225:                                              ; preds = %212, %204
  %226 = load i64, ptr %27, align 8, !tbaa !9
  %227 = icmp ne i64 %226, 0
  br i1 %227, label %228, label %236

228:                                              ; preds = %225
  %229 = load ptr, ptr %30, align 8, !tbaa !5
  %230 = load i64, ptr %24, align 8, !tbaa !9
  %231 = getelementptr inbounds i64, ptr %229, i64 %230
  %232 = load i64, ptr %231, align 8, !tbaa !9
  %233 = load ptr, ptr %39, align 8, !tbaa !5
  %234 = load i64, ptr %8, align 8, !tbaa !9
  %235 = getelementptr inbounds i64, ptr %233, i64 %234
  store i64 %232, ptr %235, align 8, !tbaa !9
  br label %236

236:                                              ; preds = %228, %225
  %237 = load ptr, ptr %33, align 8, !tbaa !5
  %238 = load i64, ptr %24, align 8, !tbaa !9
  %239 = getelementptr inbounds i64, ptr %237, i64 %238
  %240 = load i64, ptr %239, align 8, !tbaa !9
  %241 = load ptr, ptr %42, align 8, !tbaa !5
  %242 = load i64, ptr %8, align 8, !tbaa !9
  %243 = getelementptr inbounds i64, ptr %241, i64 %242
  store i64 %240, ptr %243, align 8, !tbaa !9
  store i64 0, ptr %21, align 8, !tbaa !9
  %244 = load ptr, ptr %28, align 8, !tbaa !5
  %245 = load i64, ptr %24, align 8, !tbaa !9
  %246 = getelementptr inbounds i64, ptr %244, i64 %245
  %247 = load i64, ptr %246, align 8, !tbaa !9
  store i64 %247, ptr %18, align 8, !tbaa !9
  %248 = load ptr, ptr %28, align 8, !tbaa !5
  %249 = load i64, ptr %24, align 8, !tbaa !9
  %250 = add nsw i64 %249, 1
  %251 = getelementptr inbounds i64, ptr %248, i64 %250
  %252 = load i64, ptr %251, align 8, !tbaa !9
  store i64 %252, ptr %19, align 8, !tbaa !9
  %253 = load i64, ptr %18, align 8, !tbaa !9
  store i64 %253, ptr %12, align 8, !tbaa !9
  br label %254

254:                                              ; preds = %351, %236
  %255 = load i64, ptr %12, align 8, !tbaa !9
  %256 = load i64, ptr %19, align 8, !tbaa !9
  %257 = icmp slt i64 %255, %256
  br i1 %257, label %258, label %354

258:                                              ; preds = %254
  %259 = load ptr, ptr %34, align 8, !tbaa !5
  %260 = load i64, ptr %12, align 8, !tbaa !9
  %261 = getelementptr inbounds i64, ptr %259, i64 %260
  %262 = load i64, ptr %261, align 8, !tbaa !9
  store i64 %262, ptr %14, align 8, !tbaa !9
  %263 = load i64, ptr %14, align 8, !tbaa !9
  %264 = load i64, ptr %26, align 8, !tbaa !9
  %265 = and i64 %263, %264
  store i64 %265, ptr %15, align 8, !tbaa !9
  %266 = load ptr, ptr %36, align 8, !tbaa !5
  %267 = load i64, ptr %15, align 8, !tbaa !9
  %268 = getelementptr inbounds i64, ptr %266, i64 %267
  %269 = load i64, ptr %268, align 8, !tbaa !9
  store i64 %269, ptr %17, align 8, !tbaa !9
  %270 = icmp eq i64 %269, -1
  br i1 %270, label %271, label %288

271:                                              ; preds = %258
  %272 = load i64, ptr %14, align 8, !tbaa !9
  %273 = load ptr, ptr %40, align 8, !tbaa !5
  %274 = load i64, ptr %21, align 8, !tbaa !9
  %275 = getelementptr inbounds i64, ptr %273, i64 %274
  store i64 %272, ptr %275, align 8, !tbaa !9
  %276 = load ptr, ptr %32, align 8, !tbaa !5
  %277 = load i64, ptr %12, align 8, !tbaa !9
  %278 = getelementptr inbounds i64, ptr %276, i64 %277
  %279 = load i64, ptr %278, align 8, !tbaa !9
  %280 = load ptr, ptr %41, align 8, !tbaa !5
  %281 = load i64, ptr %21, align 8, !tbaa !9
  %282 = getelementptr inbounds i64, ptr %280, i64 %281
  store i64 %279, ptr %282, align 8, !tbaa !9
  %283 = load i64, ptr %21, align 8, !tbaa !9
  %284 = add nsw i64 %283, 1
  store i64 %284, ptr %21, align 8, !tbaa !9
  %285 = load ptr, ptr %36, align 8, !tbaa !5
  %286 = load i64, ptr %15, align 8, !tbaa !9
  %287 = getelementptr inbounds i64, ptr %285, i64 %286
  store i64 %283, ptr %287, align 8, !tbaa !9
  br label %350

288:                                              ; preds = %258
  %289 = load ptr, ptr %40, align 8, !tbaa !5
  %290 = load i64, ptr %17, align 8, !tbaa !9
  %291 = getelementptr inbounds i64, ptr %289, i64 %290
  %292 = load i64, ptr %291, align 8, !tbaa !9
  %293 = load i64, ptr %14, align 8, !tbaa !9
  %294 = icmp eq i64 %292, %293
  br i1 %294, label %295, label %305

295:                                              ; preds = %288
  %296 = load ptr, ptr %32, align 8, !tbaa !5
  %297 = load i64, ptr %12, align 8, !tbaa !9
  %298 = getelementptr inbounds i64, ptr %296, i64 %297
  %299 = load i64, ptr %298, align 8, !tbaa !9
  %300 = load ptr, ptr %41, align 8, !tbaa !5
  %301 = load i64, ptr %17, align 8, !tbaa !9
  %302 = getelementptr inbounds i64, ptr %300, i64 %301
  %303 = load i64, ptr %302, align 8, !tbaa !9
  %304 = add nsw i64 %303, %299
  store i64 %304, ptr %302, align 8, !tbaa !9
  br label %349

305:                                              ; preds = %288
  store i64 0, ptr %13, align 8, !tbaa !9
  br label %306

306:                                              ; preds = %328, %305
  %307 = load i64, ptr %13, align 8, !tbaa !9
  %308 = load i64, ptr %21, align 8, !tbaa !9
  %309 = icmp slt i64 %307, %308
  br i1 %309, label %310, label %331

310:                                              ; preds = %306
  %311 = load ptr, ptr %40, align 8, !tbaa !5
  %312 = load i64, ptr %13, align 8, !tbaa !9
  %313 = getelementptr inbounds i64, ptr %311, i64 %312
  %314 = load i64, ptr %313, align 8, !tbaa !9
  %315 = load i64, ptr %14, align 8, !tbaa !9
  %316 = icmp eq i64 %314, %315
  br i1 %316, label %317, label %327

317:                                              ; preds = %310
  %318 = load ptr, ptr %32, align 8, !tbaa !5
  %319 = load i64, ptr %12, align 8, !tbaa !9
  %320 = getelementptr inbounds i64, ptr %318, i64 %319
  %321 = load i64, ptr %320, align 8, !tbaa !9
  %322 = load ptr, ptr %41, align 8, !tbaa !5
  %323 = load i64, ptr %13, align 8, !tbaa !9
  %324 = getelementptr inbounds i64, ptr %322, i64 %323
  %325 = load i64, ptr %324, align 8, !tbaa !9
  %326 = add nsw i64 %325, %321
  store i64 %326, ptr %324, align 8, !tbaa !9
  br label %331

327:                                              ; preds = %310
  br label %328

328:                                              ; preds = %327
  %329 = load i64, ptr %13, align 8, !tbaa !9
  %330 = add nsw i64 %329, 1
  store i64 %330, ptr %13, align 8, !tbaa !9
  br label %306, !llvm.loop !34

331:                                              ; preds = %317, %306
  %332 = load i64, ptr %13, align 8, !tbaa !9
  %333 = load i64, ptr %21, align 8, !tbaa !9
  %334 = icmp eq i64 %332, %333
  br i1 %334, label %335, label %348

335:                                              ; preds = %331
  %336 = load i64, ptr %14, align 8, !tbaa !9
  %337 = load ptr, ptr %40, align 8, !tbaa !5
  %338 = load i64, ptr %21, align 8, !tbaa !9
  %339 = getelementptr inbounds i64, ptr %337, i64 %338
  store i64 %336, ptr %339, align 8, !tbaa !9
  %340 = load ptr, ptr %32, align 8, !tbaa !5
  %341 = load i64, ptr %12, align 8, !tbaa !9
  %342 = getelementptr inbounds i64, ptr %340, i64 %341
  %343 = load i64, ptr %342, align 8, !tbaa !9
  %344 = load ptr, ptr %41, align 8, !tbaa !5
  %345 = load i64, ptr %21, align 8, !tbaa !9
  %346 = add nsw i64 %345, 1
  store i64 %346, ptr %21, align 8, !tbaa !9
  %347 = getelementptr inbounds i64, ptr %344, i64 %345
  store i64 %343, ptr %347, align 8, !tbaa !9
  br label %348

348:                                              ; preds = %335, %331
  br label %349

349:                                              ; preds = %348, %295
  br label %350

350:                                              ; preds = %349, %271
  br label %351

351:                                              ; preds = %350
  %352 = load i64, ptr %12, align 8, !tbaa !9
  %353 = add nsw i64 %352, 1
  store i64 %353, ptr %12, align 8, !tbaa !9
  br label %254, !llvm.loop !35

354:                                              ; preds = %254
  %355 = load i64, ptr %24, align 8, !tbaa !9
  %356 = load i64, ptr %25, align 8, !tbaa !9
  %357 = icmp ne i64 %355, %356
  br i1 %357, label %358, label %587

358:                                              ; preds = %354
  %359 = load i64, ptr %22, align 8, !tbaa !9
  %360 = icmp eq i64 %359, 1
  br i1 %360, label %361, label %371

361:                                              ; preds = %358
  %362 = load ptr, ptr %29, align 8, !tbaa !5
  %363 = load i64, ptr %25, align 8, !tbaa !9
  %364 = getelementptr inbounds i64, ptr %362, i64 %363
  %365 = load i64, ptr %364, align 8, !tbaa !9
  %366 = load ptr, ptr %38, align 8, !tbaa !5
  %367 = load i64, ptr %8, align 8, !tbaa !9
  %368 = getelementptr inbounds i64, ptr %366, i64 %367
  %369 = load i64, ptr %368, align 8, !tbaa !9
  %370 = add nsw i64 %369, %365
  store i64 %370, ptr %368, align 8, !tbaa !9
  br label %384

371:                                              ; preds = %358
  %372 = load i64, ptr %22, align 8, !tbaa !9
  %373 = load ptr, ptr %43, align 8, !tbaa !5
  %374 = load i64, ptr %25, align 8, !tbaa !9
  %375 = load i64, ptr %22, align 8, !tbaa !9
  %376 = mul nsw i64 %374, %375
  %377 = getelementptr inbounds float, ptr %373, i64 %376
  %378 = load ptr, ptr %44, align 8, !tbaa !5
  %379 = load i64, ptr %8, align 8, !tbaa !9
  %380 = load i64, ptr %22, align 8, !tbaa !9
  %381 = mul nsw i64 %379, %380
  %382 = getelementptr inbounds float, ptr %378, i64 %381
  %383 = call ptr @gk_faxpy(i64 noundef %372, float noundef 1.000000e+00, ptr noundef %377, i64 noundef 1, ptr noundef %382, i64 noundef 1)
  br label %384

384:                                              ; preds = %371, %361
  %385 = load i64, ptr %27, align 8, !tbaa !9
  %386 = icmp ne i64 %385, 0
  br i1 %386, label %387, label %397

387:                                              ; preds = %384
  %388 = load ptr, ptr %30, align 8, !tbaa !5
  %389 = load i64, ptr %25, align 8, !tbaa !9
  %390 = getelementptr inbounds i64, ptr %388, i64 %389
  %391 = load i64, ptr %390, align 8, !tbaa !9
  %392 = load ptr, ptr %39, align 8, !tbaa !5
  %393 = load i64, ptr %8, align 8, !tbaa !9
  %394 = getelementptr inbounds i64, ptr %392, i64 %393
  %395 = load i64, ptr %394, align 8, !tbaa !9
  %396 = add nsw i64 %395, %391
  store i64 %396, ptr %394, align 8, !tbaa !9
  br label %397

397:                                              ; preds = %387, %384
  %398 = load ptr, ptr %33, align 8, !tbaa !5
  %399 = load i64, ptr %25, align 8, !tbaa !9
  %400 = getelementptr inbounds i64, ptr %398, i64 %399
  %401 = load i64, ptr %400, align 8, !tbaa !9
  %402 = load ptr, ptr %42, align 8, !tbaa !5
  %403 = load i64, ptr %8, align 8, !tbaa !9
  %404 = getelementptr inbounds i64, ptr %402, i64 %403
  %405 = load i64, ptr %404, align 8, !tbaa !9
  %406 = add nsw i64 %405, %401
  store i64 %406, ptr %404, align 8, !tbaa !9
  %407 = load ptr, ptr %28, align 8, !tbaa !5
  %408 = load i64, ptr %25, align 8, !tbaa !9
  %409 = getelementptr inbounds i64, ptr %407, i64 %408
  %410 = load i64, ptr %409, align 8, !tbaa !9
  store i64 %410, ptr %18, align 8, !tbaa !9
  %411 = load ptr, ptr %28, align 8, !tbaa !5
  %412 = load i64, ptr %25, align 8, !tbaa !9
  %413 = add nsw i64 %412, 1
  %414 = getelementptr inbounds i64, ptr %411, i64 %413
  %415 = load i64, ptr %414, align 8, !tbaa !9
  store i64 %415, ptr %19, align 8, !tbaa !9
  %416 = load i64, ptr %18, align 8, !tbaa !9
  store i64 %416, ptr %12, align 8, !tbaa !9
  br label %417

417:                                              ; preds = %514, %397
  %418 = load i64, ptr %12, align 8, !tbaa !9
  %419 = load i64, ptr %19, align 8, !tbaa !9
  %420 = icmp slt i64 %418, %419
  br i1 %420, label %421, label %517

421:                                              ; preds = %417
  %422 = load ptr, ptr %34, align 8, !tbaa !5
  %423 = load i64, ptr %12, align 8, !tbaa !9
  %424 = getelementptr inbounds i64, ptr %422, i64 %423
  %425 = load i64, ptr %424, align 8, !tbaa !9
  store i64 %425, ptr %14, align 8, !tbaa !9
  %426 = load i64, ptr %14, align 8, !tbaa !9
  %427 = load i64, ptr %26, align 8, !tbaa !9
  %428 = and i64 %426, %427
  store i64 %428, ptr %15, align 8, !tbaa !9
  %429 = load ptr, ptr %36, align 8, !tbaa !5
  %430 = load i64, ptr %15, align 8, !tbaa !9
  %431 = getelementptr inbounds i64, ptr %429, i64 %430
  %432 = load i64, ptr %431, align 8, !tbaa !9
  store i64 %432, ptr %17, align 8, !tbaa !9
  %433 = icmp eq i64 %432, -1
  br i1 %433, label %434, label %451

434:                                              ; preds = %421
  %435 = load i64, ptr %14, align 8, !tbaa !9
  %436 = load ptr, ptr %40, align 8, !tbaa !5
  %437 = load i64, ptr %21, align 8, !tbaa !9
  %438 = getelementptr inbounds i64, ptr %436, i64 %437
  store i64 %435, ptr %438, align 8, !tbaa !9
  %439 = load ptr, ptr %32, align 8, !tbaa !5
  %440 = load i64, ptr %12, align 8, !tbaa !9
  %441 = getelementptr inbounds i64, ptr %439, i64 %440
  %442 = load i64, ptr %441, align 8, !tbaa !9
  %443 = load ptr, ptr %41, align 8, !tbaa !5
  %444 = load i64, ptr %21, align 8, !tbaa !9
  %445 = getelementptr inbounds i64, ptr %443, i64 %444
  store i64 %442, ptr %445, align 8, !tbaa !9
  %446 = load i64, ptr %21, align 8, !tbaa !9
  %447 = add nsw i64 %446, 1
  store i64 %447, ptr %21, align 8, !tbaa !9
  %448 = load ptr, ptr %36, align 8, !tbaa !5
  %449 = load i64, ptr %15, align 8, !tbaa !9
  %450 = getelementptr inbounds i64, ptr %448, i64 %449
  store i64 %446, ptr %450, align 8, !tbaa !9
  br label %513

451:                                              ; preds = %421
  %452 = load ptr, ptr %40, align 8, !tbaa !5
  %453 = load i64, ptr %17, align 8, !tbaa !9
  %454 = getelementptr inbounds i64, ptr %452, i64 %453
  %455 = load i64, ptr %454, align 8, !tbaa !9
  %456 = load i64, ptr %14, align 8, !tbaa !9
  %457 = icmp eq i64 %455, %456
  br i1 %457, label %458, label %468

458:                                              ; preds = %451
  %459 = load ptr, ptr %32, align 8, !tbaa !5
  %460 = load i64, ptr %12, align 8, !tbaa !9
  %461 = getelementptr inbounds i64, ptr %459, i64 %460
  %462 = load i64, ptr %461, align 8, !tbaa !9
  %463 = load ptr, ptr %41, align 8, !tbaa !5
  %464 = load i64, ptr %17, align 8, !tbaa !9
  %465 = getelementptr inbounds i64, ptr %463, i64 %464
  %466 = load i64, ptr %465, align 8, !tbaa !9
  %467 = add nsw i64 %466, %462
  store i64 %467, ptr %465, align 8, !tbaa !9
  br label %512

468:                                              ; preds = %451
  store i64 0, ptr %13, align 8, !tbaa !9
  br label %469

469:                                              ; preds = %491, %468
  %470 = load i64, ptr %13, align 8, !tbaa !9
  %471 = load i64, ptr %21, align 8, !tbaa !9
  %472 = icmp slt i64 %470, %471
  br i1 %472, label %473, label %494

473:                                              ; preds = %469
  %474 = load ptr, ptr %40, align 8, !tbaa !5
  %475 = load i64, ptr %13, align 8, !tbaa !9
  %476 = getelementptr inbounds i64, ptr %474, i64 %475
  %477 = load i64, ptr %476, align 8, !tbaa !9
  %478 = load i64, ptr %14, align 8, !tbaa !9
  %479 = icmp eq i64 %477, %478
  br i1 %479, label %480, label %490

480:                                              ; preds = %473
  %481 = load ptr, ptr %32, align 8, !tbaa !5
  %482 = load i64, ptr %12, align 8, !tbaa !9
  %483 = getelementptr inbounds i64, ptr %481, i64 %482
  %484 = load i64, ptr %483, align 8, !tbaa !9
  %485 = load ptr, ptr %41, align 8, !tbaa !5
  %486 = load i64, ptr %13, align 8, !tbaa !9
  %487 = getelementptr inbounds i64, ptr %485, i64 %486
  %488 = load i64, ptr %487, align 8, !tbaa !9
  %489 = add nsw i64 %488, %484
  store i64 %489, ptr %487, align 8, !tbaa !9
  br label %494

490:                                              ; preds = %473
  br label %491

491:                                              ; preds = %490
  %492 = load i64, ptr %13, align 8, !tbaa !9
  %493 = add nsw i64 %492, 1
  store i64 %493, ptr %13, align 8, !tbaa !9
  br label %469, !llvm.loop !36

494:                                              ; preds = %480, %469
  %495 = load i64, ptr %13, align 8, !tbaa !9
  %496 = load i64, ptr %21, align 8, !tbaa !9
  %497 = icmp eq i64 %495, %496
  br i1 %497, label %498, label %511

498:                                              ; preds = %494
  %499 = load i64, ptr %14, align 8, !tbaa !9
  %500 = load ptr, ptr %40, align 8, !tbaa !5
  %501 = load i64, ptr %21, align 8, !tbaa !9
  %502 = getelementptr inbounds i64, ptr %500, i64 %501
  store i64 %499, ptr %502, align 8, !tbaa !9
  %503 = load ptr, ptr %32, align 8, !tbaa !5
  %504 = load i64, ptr %12, align 8, !tbaa !9
  %505 = getelementptr inbounds i64, ptr %503, i64 %504
  %506 = load i64, ptr %505, align 8, !tbaa !9
  %507 = load ptr, ptr %41, align 8, !tbaa !5
  %508 = load i64, ptr %21, align 8, !tbaa !9
  %509 = add nsw i64 %508, 1
  store i64 %509, ptr %21, align 8, !tbaa !9
  %510 = getelementptr inbounds i64, ptr %507, i64 %508
  store i64 %506, ptr %510, align 8, !tbaa !9
  br label %511

511:                                              ; preds = %498, %494
  br label %512

512:                                              ; preds = %511, %458
  br label %513

513:                                              ; preds = %512, %434
  br label %514

514:                                              ; preds = %513
  %515 = load i64, ptr %12, align 8, !tbaa !9
  %516 = add nsw i64 %515, 1
  store i64 %516, ptr %12, align 8, !tbaa !9
  br label %417, !llvm.loop !37

517:                                              ; preds = %417
  %518 = load ptr, ptr %36, align 8, !tbaa !5
  %519 = load i64, ptr %8, align 8, !tbaa !9
  %520 = load i64, ptr %26, align 8, !tbaa !9
  %521 = and i64 %519, %520
  %522 = getelementptr inbounds i64, ptr %518, i64 %521
  %523 = load i64, ptr %522, align 8, !tbaa !9
  store i64 %523, ptr %13, align 8, !tbaa !9
  %524 = load i64, ptr %13, align 8, !tbaa !9
  %525 = icmp sge i64 %524, 0
  br i1 %525, label %526, label %551

526:                                              ; preds = %517
  %527 = load ptr, ptr %40, align 8, !tbaa !5
  %528 = load i64, ptr %13, align 8, !tbaa !9
  %529 = getelementptr inbounds i64, ptr %527, i64 %528
  %530 = load i64, ptr %529, align 8, !tbaa !9
  %531 = load i64, ptr %8, align 8, !tbaa !9
  %532 = icmp ne i64 %530, %531
  br i1 %532, label %533, label %551

533:                                              ; preds = %526
  store i64 0, ptr %13, align 8, !tbaa !9
  br label %534

534:                                              ; preds = %547, %533
  %535 = load i64, ptr %13, align 8, !tbaa !9
  %536 = load i64, ptr %21, align 8, !tbaa !9
  %537 = icmp slt i64 %535, %536
  br i1 %537, label %538, label %550

538:                                              ; preds = %534
  %539 = load ptr, ptr %40, align 8, !tbaa !5
  %540 = load i64, ptr %13, align 8, !tbaa !9
  %541 = getelementptr inbounds i64, ptr %539, i64 %540
  %542 = load i64, ptr %541, align 8, !tbaa !9
  %543 = load i64, ptr %8, align 8, !tbaa !9
  %544 = icmp eq i64 %542, %543
  br i1 %544, label %545, label %546

545:                                              ; preds = %538
  br label %550

546:                                              ; preds = %538
  br label %547

547:                                              ; preds = %546
  %548 = load i64, ptr %13, align 8, !tbaa !9
  %549 = add nsw i64 %548, 1
  store i64 %549, ptr %13, align 8, !tbaa !9
  br label %534, !llvm.loop !38

550:                                              ; preds = %545, %534
  br label %551

551:                                              ; preds = %550, %526, %517
  %552 = load i64, ptr %13, align 8, !tbaa !9
  %553 = icmp sge i64 %552, 0
  br i1 %553, label %554, label %586

554:                                              ; preds = %551
  %555 = load ptr, ptr %40, align 8, !tbaa !5
  %556 = load i64, ptr %13, align 8, !tbaa !9
  %557 = getelementptr inbounds i64, ptr %555, i64 %556
  %558 = load i64, ptr %557, align 8, !tbaa !9
  %559 = load i64, ptr %8, align 8, !tbaa !9
  %560 = icmp eq i64 %558, %559
  br i1 %560, label %561, label %586

561:                                              ; preds = %554
  %562 = load ptr, ptr %41, align 8, !tbaa !5
  %563 = load i64, ptr %13, align 8, !tbaa !9
  %564 = getelementptr inbounds i64, ptr %562, i64 %563
  %565 = load i64, ptr %564, align 8, !tbaa !9
  %566 = load ptr, ptr %42, align 8, !tbaa !5
  %567 = load i64, ptr %8, align 8, !tbaa !9
  %568 = getelementptr inbounds i64, ptr %566, i64 %567
  %569 = load i64, ptr %568, align 8, !tbaa !9
  %570 = sub nsw i64 %569, %565
  store i64 %570, ptr %568, align 8, !tbaa !9
  %571 = load ptr, ptr %40, align 8, !tbaa !5
  %572 = load i64, ptr %21, align 8, !tbaa !9
  %573 = add nsw i64 %572, -1
  store i64 %573, ptr %21, align 8, !tbaa !9
  %574 = getelementptr inbounds i64, ptr %571, i64 %573
  %575 = load i64, ptr %574, align 8, !tbaa !9
  %576 = load ptr, ptr %40, align 8, !tbaa !5
  %577 = load i64, ptr %13, align 8, !tbaa !9
  %578 = getelementptr inbounds i64, ptr %576, i64 %577
  store i64 %575, ptr %578, align 8, !tbaa !9
  %579 = load ptr, ptr %41, align 8, !tbaa !5
  %580 = load i64, ptr %21, align 8, !tbaa !9
  %581 = getelementptr inbounds i64, ptr %579, i64 %580
  %582 = load i64, ptr %581, align 8, !tbaa !9
  %583 = load ptr, ptr %41, align 8, !tbaa !5
  %584 = load i64, ptr %13, align 8, !tbaa !9
  %585 = getelementptr inbounds i64, ptr %583, i64 %584
  store i64 %582, ptr %585, align 8, !tbaa !9
  br label %586

586:                                              ; preds = %561, %554, %551
  br label %587

587:                                              ; preds = %586, %354
  store i64 0, ptr %12, align 8, !tbaa !9
  br label %588

588:                                              ; preds = %601, %587
  %589 = load i64, ptr %12, align 8, !tbaa !9
  %590 = load i64, ptr %21, align 8, !tbaa !9
  %591 = icmp slt i64 %589, %590
  br i1 %591, label %592, label %604

592:                                              ; preds = %588
  %593 = load ptr, ptr %36, align 8, !tbaa !5
  %594 = load ptr, ptr %40, align 8, !tbaa !5
  %595 = load i64, ptr %12, align 8, !tbaa !9
  %596 = getelementptr inbounds i64, ptr %594, i64 %595
  %597 = load i64, ptr %596, align 8, !tbaa !9
  %598 = load i64, ptr %26, align 8, !tbaa !9
  %599 = and i64 %597, %598
  %600 = getelementptr inbounds i64, ptr %593, i64 %599
  store i64 -1, ptr %600, align 8, !tbaa !9
  br label %601

601:                                              ; preds = %592
  %602 = load i64, ptr %12, align 8, !tbaa !9
  %603 = add nsw i64 %602, 1
  store i64 %603, ptr %12, align 8, !tbaa !9
  br label %588, !llvm.loop !39

604:                                              ; preds = %588
  %605 = load ptr, ptr %36, align 8, !tbaa !5
  %606 = load i64, ptr %8, align 8, !tbaa !9
  %607 = load i64, ptr %26, align 8, !tbaa !9
  %608 = and i64 %606, %607
  %609 = getelementptr inbounds i64, ptr %605, i64 %608
  store i64 -1, ptr %609, align 8, !tbaa !9
  %610 = load i64, ptr %21, align 8, !tbaa !9
  %611 = load i64, ptr %23, align 8, !tbaa !9
  %612 = add nsw i64 %611, %610
  store i64 %612, ptr %23, align 8, !tbaa !9
  %613 = load i64, ptr %23, align 8, !tbaa !9
  %614 = load ptr, ptr %37, align 8, !tbaa !5
  %615 = load i64, ptr %8, align 8, !tbaa !9
  %616 = add nsw i64 %615, 1
  store i64 %616, ptr %8, align 8, !tbaa !9
  %617 = getelementptr inbounds i64, ptr %614, i64 %616
  store i64 %613, ptr %617, align 8, !tbaa !9
  %618 = load i64, ptr %21, align 8, !tbaa !9
  %619 = load ptr, ptr %40, align 8, !tbaa !5
  %620 = getelementptr inbounds i64, ptr %619, i64 %618
  store ptr %620, ptr %40, align 8, !tbaa !5
  %621 = load i64, ptr %21, align 8, !tbaa !9
  %622 = load ptr, ptr %41, align 8, !tbaa !5
  %623 = getelementptr inbounds i64, ptr %622, i64 %621
  store ptr %623, ptr %41, align 8, !tbaa !5
  br label %624

624:                                              ; preds = %604, %196
  %625 = load i64, ptr %11, align 8, !tbaa !9
  %626 = add nsw i64 %625, 1
  store i64 %626, ptr %11, align 8, !tbaa !9
  br label %181, !llvm.loop !40

627:                                              ; preds = %181
  %628 = load i64, ptr %23, align 8, !tbaa !9
  %629 = load ptr, ptr %45, align 8, !tbaa !5
  %630 = getelementptr inbounds %struct.graphdef, ptr %629, i32 0, i32 1
  store i64 %628, ptr %630, align 8, !tbaa !16
  %631 = load ptr, ptr %7, align 8, !tbaa !5
  %632 = load ptr, ptr %45, align 8, !tbaa !5
  %633 = load i64, ptr %27, align 8, !tbaa !9
  call void @libmetis__ReAdjustMemory(ptr noundef %631, ptr noundef %632, i64 noundef %633)
  %634 = load ptr, ptr %6, align 8, !tbaa !5
  %635 = getelementptr inbounds %struct.controldef, ptr %634, i32 0, i32 1
  %636 = load i64, ptr %635, align 8, !tbaa !20
  %637 = and i64 %636, 1
  %638 = icmp ne i64 %637, 0
  br i1 %638, label %639, label %645

639:                                              ; preds = %627
  %640 = call double @gk_CPUSeconds()
  %641 = load ptr, ptr %6, align 8, !tbaa !5
  %642 = getelementptr inbounds %struct.controldef, ptr %641, i32 0, i32 15
  %643 = load double, ptr %642, align 8, !tbaa !21
  %644 = fadd double %643, %640
  store double %644, ptr %642, align 8, !tbaa !21
  br label %645

645:                                              ; preds = %639, %627
  %646 = load ptr, ptr %6, align 8, !tbaa !5
  %647 = load i64, ptr %26, align 8, !tbaa !9
  %648 = add nsw i64 %647, 1
  call void @libmetis__idxwspacefree(ptr noundef %646, i64 noundef %648)
  store i32 0, ptr %46, align 4
  br label %649

649:                                              ; preds = %645, %67
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #4
  %650 = load i32, ptr %46, align 4
  switch i32 %650, label %652 [
    i32 0, label %651
    i32 1, label %651
  ]

651:                                              ; preds = %649, %649
  ret void

652:                                              ; preds = %649
  unreachable
}

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

; Function Attrs: nounwind uwtable
declare dso_local void @libmetis__CreateCoarseGraphNoMask(ptr noundef, ptr noundef, i64 noundef, ptr noundef, ptr noundef) #0

declare double @gk_CPUSeconds() #2

; Function Attrs: nounwind uwtable
declare dso_local ptr @libmetis__SetUpCoarseGraph(ptr noundef, i64 noundef, i64 noundef) #0

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #3

declare ptr @libmetis__idxset(i64 noundef, i64 noundef, ptr noundef) #2

declare ptr @libmetis__idxwspacemalloc(ptr noundef, i64 noundef) #2

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memmove.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1 immarg) #3

declare ptr @gk_faxpy(i64 noundef, float noundef, ptr noundef, i64 noundef, ptr noundef, i64 noundef) #2

; Function Attrs: nounwind uwtable
declare dso_local void @libmetis__ReAdjustMemory(ptr noundef, ptr noundef, i64 noundef) #0

declare void @libmetis__idxwspacefree(ptr noundef, i64 noundef) #2

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"long", !7, i64 0}
!11 = !{!12, !10, i64 56}
!12 = !{!"controldef", !10, i64 0, !10, i64 8, !10, i64 16, !10, i64 24, !10, i64 32, !10, i64 40, !13, i64 48, !10, i64 56, !10, i64 64, !10, i64 72, !10, i64 80, !14, i64 88, !15, i64 152, !15, i64 160, !15, i64 168, !15, i64 176, !15, i64 184, !15, i64 192, !15, i64 200, !15, i64 208, !15, i64 216, !15, i64 224, !15, i64 232, !15, i64 240, !15, i64 248, !15, i64 256, !15, i64 264, !15, i64 272}
!13 = !{!"float", !7, i64 0}
!14 = !{!"workspacedef", !6, i64 0, !10, i64 8, !10, i64 16, !6, i64 24, !6, i64 32, !10, i64 40, !6, i64 48, !6, i64 56}
!15 = !{!"double", !7, i64 0}
!16 = !{!17, !10, i64 8}
!17 = !{!"graphdef", !10, i64 0, !10, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !18, i64 56, !18, i64 60, !18, i64 64, !18, i64 68, !18, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !6, i64 104, !10, i64 112, !10, i64 120, !6, i64 128, !6, i64 136, !10, i64 144, !6, i64 152, !6, i64 160, !6, i64 168, !6, i64 176, !6, i64 184, !6, i64 192, !6, i64 200, !10, i64 208, !6, i64 216, !6, i64 224, !6, i64 232, !6, i64 240}
!18 = !{!"int", !7, i64 0}
!19 = !{!17, !10, i64 0}
!20 = !{!12, !10, i64 8}
!21 = !{!12, !15, i64 176}
!22 = !{!17, !10, i64 208}
!23 = !{!17, !6, i64 16}
!24 = !{!17, !6, i64 24}
!25 = !{!17, !6, i64 32}
!26 = !{!17, !6, i64 216}
!27 = !{!17, !6, i64 40}
!28 = !{!17, !6, i64 48}
!29 = !{!17, !6, i64 88}
!30 = !{!17, !6, i64 104}
!31 = !{!12, !6, i64 136}
!32 = distinct !{!32, !33}
!33 = !{!"llvm.loop.mustprogress"}
!34 = distinct !{!34, !33}
!35 = distinct !{!35, !33}
!36 = distinct !{!36, !33}
!37 = distinct !{!37, !33}
!38 = distinct !{!38, !33}
!39 = distinct !{!39, !33}
!40 = distinct !{!40, !33}


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

; Function Attrs: nounwind uwtable
define dso_local void @libmetis__CreateCoarseGraph(ptr noundef %0, ptr noundef %1, i64 noundef %2, ptr noundef %3, ptr noundef %4) local_unnamed_addr #0 {
  %6 = getelementptr inbounds i8, ptr %0, i64 56
  %7 = load i64, ptr %6, align 8, !tbaa !5
  %8 = icmp eq i64 %7, 6
  %9 = zext i1 %8 to i64
  %10 = icmp slt i64 %2, 16376
  br i1 %10, label %17, label %11

11:                                               ; preds = %5
  %12 = getelementptr inbounds i8, ptr %1, i64 8
  %13 = load i64, ptr %12, align 8, !tbaa !14
  %14 = load i64, ptr %1, align 8, !tbaa !17
  %15 = sdiv i64 %13, %14
  %16 = icmp sgt i64 %15, 15
  br i1 %16, label %17, label %18

17:                                               ; preds = %11, %5
  tail call void @libmetis__CreateCoarseGraphNoMask(ptr noundef nonnull %0, ptr noundef %1, i64 noundef %2, ptr noundef %3, ptr noundef %4)
  br label %315

18:                                               ; preds = %11
  %19 = getelementptr inbounds i8, ptr %0, i64 8
  %20 = load i64, ptr %19, align 8, !tbaa !18
  %21 = and i64 %20, 1
  %.not = icmp eq i64 %21, 0
  br i1 %.not, label %27, label %22

22:                                               ; preds = %18
  %23 = tail call double @gk_CPUSeconds() #3
  %24 = getelementptr inbounds i8, ptr %0, i64 176
  %25 = load double, ptr %24, align 8, !tbaa !19
  %26 = fsub double %25, %23
  store double %26, ptr %24, align 8, !tbaa !19
  %.pre = load i64, ptr %1, align 8, !tbaa !17
  br label %27

27:                                               ; preds = %22, %18
  %28 = phi i64 [ %.pre, %22 ], [ %14, %18 ]
  %29 = getelementptr inbounds i8, ptr %1, i64 208
  %30 = load i64, ptr %29, align 8, !tbaa !20
  %31 = getelementptr inbounds i8, ptr %1, i64 16
  %32 = load ptr, ptr %31, align 8, !tbaa !21
  %33 = getelementptr inbounds i8, ptr %1, i64 24
  %34 = load ptr, ptr %33, align 8, !tbaa !22
  %35 = getelementptr inbounds i8, ptr %1, i64 32
  %36 = load ptr, ptr %35, align 8, !tbaa !23
  %37 = getelementptr inbounds i8, ptr %1, i64 216
  %38 = load ptr, ptr %37, align 8, !tbaa !24
  %39 = getelementptr inbounds i8, ptr %1, i64 40
  %40 = load ptr, ptr %39, align 8, !tbaa !25
  %41 = getelementptr inbounds i8, ptr %1, i64 48
  %42 = load ptr, ptr %41, align 8, !tbaa !26
  %43 = getelementptr inbounds i8, ptr %1, i64 88
  %44 = load ptr, ptr %43, align 8, !tbaa !27
  %45 = getelementptr inbounds i8, ptr %1, i64 104
  %46 = load ptr, ptr %45, align 8, !tbaa !28
  %47 = tail call ptr @libmetis__SetUpCoarseGraph(ptr noundef nonnull %1, i64 noundef %2, i64 noundef %9)
  %48 = getelementptr inbounds i8, ptr %47, i64 16
  %49 = load ptr, ptr %48, align 8, !tbaa !21
  %50 = getelementptr inbounds i8, ptr %47, i64 24
  %51 = load ptr, ptr %50, align 8, !tbaa !22
  %52 = getelementptr inbounds i8, ptr %47, i64 32
  %53 = load ptr, ptr %52, align 8, !tbaa !23
  %54 = getelementptr inbounds i8, ptr %47, i64 216
  %55 = load ptr, ptr %54, align 8, !tbaa !24
  %56 = getelementptr inbounds i8, ptr %47, i64 88
  %57 = load ptr, ptr %56, align 8, !tbaa !27
  %58 = getelementptr inbounds i8, ptr %47, i64 40
  %59 = load ptr, ptr %58, align 8, !tbaa !25
  %60 = getelementptr inbounds i8, ptr %47, i64 48
  %61 = load ptr, ptr %60, align 8, !tbaa !26
  %62 = getelementptr inbounds i64, ptr %32, i64 %28
  %63 = load i64, ptr %62, align 8, !tbaa !29
  %64 = getelementptr inbounds i8, ptr %0, i64 136
  %65 = load ptr, ptr %64, align 8, !tbaa !30
  %66 = shl i64 %63, 3
  tail call void @llvm.memcpy.p0.p0.i64(ptr align 8 %65, ptr align 8 %40, i64 %66, i1 false)
  %67 = icmp sgt i64 %63, 0
  br i1 %67, label %.lr.ph.preheader, label %._crit_edge

.lr.ph.preheader:                                 ; preds = %27
  %xtraiter = and i64 %63, 3
  %68 = icmp ult i64 %63, 4
  br i1 %68, label %._crit_edge.loopexit.unr-lcssa, label %.lr.ph.preheader.new

.lr.ph.preheader.new:                             ; preds = %.lr.ph.preheader
  %unroll_iter = and i64 %63, 9223372036854775804
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph, %.lr.ph.preheader.new
  %.0260302 = phi i64 [ 0, %.lr.ph.preheader.new ], [ %88, %.lr.ph ]
  %niter = phi i64 [ 0, %.lr.ph.preheader.new ], [ %niter.next.3, %.lr.ph ]
  %69 = getelementptr inbounds i64, ptr %65, i64 %.0260302
  %70 = load i64, ptr %69, align 8, !tbaa !29
  %71 = getelementptr inbounds i64, ptr %46, i64 %70
  %72 = load i64, ptr %71, align 8, !tbaa !29
  store i64 %72, ptr %69, align 8, !tbaa !29
  %73 = or disjoint i64 %.0260302, 1
  %74 = getelementptr inbounds i64, ptr %65, i64 %73
  %75 = load i64, ptr %74, align 8, !tbaa !29
  %76 = getelementptr inbounds i64, ptr %46, i64 %75
  %77 = load i64, ptr %76, align 8, !tbaa !29
  store i64 %77, ptr %74, align 8, !tbaa !29
  %78 = or disjoint i64 %.0260302, 2
  %79 = getelementptr inbounds i64, ptr %65, i64 %78
  %80 = load i64, ptr %79, align 8, !tbaa !29
  %81 = getelementptr inbounds i64, ptr %46, i64 %80
  %82 = load i64, ptr %81, align 8, !tbaa !29
  store i64 %82, ptr %79, align 8, !tbaa !29
  %83 = or disjoint i64 %.0260302, 3
  %84 = getelementptr inbounds i64, ptr %65, i64 %83
  %85 = load i64, ptr %84, align 8, !tbaa !29
  %86 = getelementptr inbounds i64, ptr %46, i64 %85
  %87 = load i64, ptr %86, align 8, !tbaa !29
  store i64 %87, ptr %84, align 8, !tbaa !29
  %88 = add nuw nsw i64 %.0260302, 4
  %niter.next.3 = add i64 %niter, 4
  %niter.ncmp.3 = icmp eq i64 %niter.next.3, %unroll_iter
  br i1 %niter.ncmp.3, label %._crit_edge.loopexit.unr-lcssa, label %.lr.ph, !llvm.loop !31

._crit_edge.loopexit.unr-lcssa:                   ; preds = %.lr.ph, %.lr.ph.preheader
  %.0260302.unr = phi i64 [ 0, %.lr.ph.preheader ], [ %88, %.lr.ph ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge, label %.lr.ph.epil

.lr.ph.epil:                                      ; preds = %._crit_edge.loopexit.unr-lcssa, %.lr.ph.epil
  %.0260302.epil = phi i64 [ %93, %.lr.ph.epil ], [ %.0260302.unr, %._crit_edge.loopexit.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.lr.ph.epil ], [ 0, %._crit_edge.loopexit.unr-lcssa ]
  %89 = getelementptr inbounds i64, ptr %65, i64 %.0260302.epil
  %90 = load i64, ptr %89, align 8, !tbaa !29
  %91 = getelementptr inbounds i64, ptr %46, i64 %90
  %92 = load i64, ptr %91, align 8, !tbaa !29
  store i64 %92, ptr %89, align 8, !tbaa !29
  %93 = add nuw nsw i64 %.0260302.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter
  br i1 %epil.iter.cmp.not, label %._crit_edge, label %.lr.ph.epil, !llvm.loop !33

._crit_edge:                                      ; preds = %._crit_edge.loopexit.unr-lcssa, %.lr.ph.epil, %27
  %94 = tail call ptr @libmetis__idxwspacemalloc(ptr noundef %0, i64 noundef 2048) #3
  %95 = tail call ptr @libmetis__idxset(i64 noundef 2048, i64 noundef -1, ptr noundef %94) #3
  store i64 0, ptr %49, align 8, !tbaa !29
  %96 = icmp sgt i64 %28, 0
  br i1 %96, label %.lr.ph336, label %._crit_edge337

.lr.ph336:                                        ; preds = %._crit_edge
  %97 = icmp eq i64 %30, 1
  %98 = shl i64 %30, 2
  br label %99

99:                                               ; preds = %.lr.ph336, %304
  %.0332 = phi i64 [ 0, %.lr.ph336 ], [ %.1, %304 ]
  %.1261331 = phi i64 [ 0, %.lr.ph336 ], [ %305, %304 ]
  %.0267330 = phi ptr [ %61, %.lr.ph336 ], [ %.1268, %304 ]
  %.0269329 = phi ptr [ %59, %.lr.ph336 ], [ %.1270, %304 ]
  %.0275328 = phi i64 [ 0, %.lr.ph336 ], [ %.1276, %304 ]
  %100 = getelementptr inbounds i64, ptr %4, i64 %.1261331
  %101 = load i64, ptr %100, align 8, !tbaa !29
  %102 = getelementptr inbounds i64, ptr %46, i64 %101
  %103 = load i64, ptr %102, align 8, !tbaa !29
  %.not288 = icmp eq i64 %103, %.0332
  br i1 %.not288, label %104, label %304

104:                                              ; preds = %99
  %105 = getelementptr inbounds i64, ptr %3, i64 %101
  %106 = load i64, ptr %105, align 8, !tbaa !29
  br i1 %97, label %107, label %111

107:                                              ; preds = %104
  %108 = getelementptr inbounds i64, ptr %34, i64 %101
  %109 = load i64, ptr %108, align 8, !tbaa !29
  %110 = getelementptr inbounds i64, ptr %51, i64 %.0332
  store i64 %109, ptr %110, align 8, !tbaa !29
  br label %116

111:                                              ; preds = %104
  %112 = mul nsw i64 %.0332, %30
  %113 = getelementptr inbounds float, ptr %55, i64 %112
  %114 = mul nsw i64 %101, %30
  %115 = getelementptr inbounds float, ptr %38, i64 %114
  tail call void @llvm.memmove.p0.p0.i64(ptr align 1 %113, ptr align 1 %115, i64 %98, i1 false)
  br label %116

116:                                              ; preds = %111, %107
  br i1 %8, label %117, label %121

117:                                              ; preds = %116
  %118 = getelementptr inbounds i64, ptr %36, i64 %101
  %119 = load i64, ptr %118, align 8, !tbaa !29
  %120 = getelementptr inbounds i64, ptr %53, i64 %.0332
  store i64 %119, ptr %120, align 8, !tbaa !29
  br label %121

121:                                              ; preds = %117, %116
  %122 = getelementptr inbounds i64, ptr %44, i64 %101
  %123 = load i64, ptr %122, align 8, !tbaa !29
  %124 = getelementptr inbounds i64, ptr %57, i64 %.0332
  store i64 %123, ptr %124, align 8, !tbaa !29
  %125 = getelementptr inbounds i64, ptr %32, i64 %101
  %126 = load i64, ptr %125, align 8, !tbaa !29
  %127 = getelementptr i8, ptr %125, i64 8
  %128 = load i64, ptr %127, align 8, !tbaa !29
  %129 = icmp slt i64 %126, %128
  br i1 %129, label %.lr.ph308, label %._crit_edge309

.lr.ph308:                                        ; preds = %121, %170
  %.0262306 = phi i64 [ %171, %170 ], [ %126, %121 ]
  %.0271305 = phi i64 [ %.1272, %170 ], [ 0, %121 ]
  %130 = getelementptr inbounds i64, ptr %65, i64 %.0262306
  %131 = load i64, ptr %130, align 8, !tbaa !29
  %132 = and i64 %131, 2047
  %133 = getelementptr inbounds i64, ptr %95, i64 %132
  %134 = load i64, ptr %133, align 8, !tbaa !29
  %135 = icmp eq i64 %134, -1
  br i1 %135, label %136, label %142

136:                                              ; preds = %.lr.ph308
  %137 = getelementptr inbounds i64, ptr %.0269329, i64 %.0271305
  store i64 %131, ptr %137, align 8, !tbaa !29
  %138 = getelementptr inbounds i64, ptr %42, i64 %.0262306
  %139 = load i64, ptr %138, align 8, !tbaa !29
  %140 = getelementptr inbounds i64, ptr %.0267330, i64 %.0271305
  store i64 %139, ptr %140, align 8, !tbaa !29
  %141 = add nsw i64 %.0271305, 1
  store i64 %.0271305, ptr %133, align 8, !tbaa !29
  br label %170

142:                                              ; preds = %.lr.ph308
  %143 = getelementptr inbounds i64, ptr %.0269329, i64 %134
  %144 = load i64, ptr %143, align 8, !tbaa !29
  %145 = icmp eq i64 %144, %131
  br i1 %145, label %147, label %.preheader295

.preheader295:                                    ; preds = %142
  %146 = icmp sgt i64 %.0271305, 0
  br i1 %146, label %.lr.ph304, label %.loopexit296

147:                                              ; preds = %142
  %148 = getelementptr inbounds i64, ptr %42, i64 %.0262306
  %149 = load i64, ptr %148, align 8, !tbaa !29
  %150 = getelementptr inbounds i64, ptr %.0267330, i64 %134
  %151 = load i64, ptr %150, align 8, !tbaa !29
  %152 = add nsw i64 %151, %149
  store i64 %152, ptr %150, align 8, !tbaa !29
  br label %170

.lr.ph304:                                        ; preds = %.preheader295, %162
  %.0264303 = phi i64 [ %163, %162 ], [ 0, %.preheader295 ]
  %153 = getelementptr inbounds i64, ptr %.0269329, i64 %.0264303
  %154 = load i64, ptr %153, align 8, !tbaa !29
  %155 = icmp eq i64 %154, %131
  br i1 %155, label %156, label %162

156:                                              ; preds = %.lr.ph304
  %157 = getelementptr inbounds i64, ptr %42, i64 %.0262306
  %158 = load i64, ptr %157, align 8, !tbaa !29
  %159 = getelementptr inbounds i64, ptr %.0267330, i64 %.0264303
  %160 = load i64, ptr %159, align 8, !tbaa !29
  %161 = add nsw i64 %160, %158
  store i64 %161, ptr %159, align 8, !tbaa !29
  br label %.loopexit296

162:                                              ; preds = %.lr.ph304
  %163 = add nuw nsw i64 %.0264303, 1
  %exitcond342.not = icmp eq i64 %163, %.0271305
  br i1 %exitcond342.not, label %.loopexit296.thread, label %.lr.ph304, !llvm.loop !35

.loopexit296:                                     ; preds = %.preheader295, %156
  %.0264299 = phi i64 [ %.0264303, %156 ], [ 0, %.preheader295 ]
  %164 = icmp eq i64 %.0264299, %.0271305
  br i1 %164, label %.loopexit296.thread, label %170

.loopexit296.thread:                              ; preds = %162, %.loopexit296
  %165 = getelementptr inbounds i64, ptr %.0269329, i64 %.0271305
  store i64 %131, ptr %165, align 8, !tbaa !29
  %166 = getelementptr inbounds i64, ptr %42, i64 %.0262306
  %167 = load i64, ptr %166, align 8, !tbaa !29
  %168 = add nsw i64 %.0271305, 1
  %169 = getelementptr inbounds i64, ptr %.0267330, i64 %.0271305
  store i64 %167, ptr %169, align 8, !tbaa !29
  br label %170

170:                                              ; preds = %136, %.loopexit296, %.loopexit296.thread, %147
  %.1272 = phi i64 [ %141, %136 ], [ %.0271305, %147 ], [ %168, %.loopexit296.thread ], [ %.0271305, %.loopexit296 ]
  %171 = add nsw i64 %.0262306, 1
  %exitcond343.not = icmp eq i64 %171, %128
  br i1 %exitcond343.not, label %._crit_edge309, label %.lr.ph308, !llvm.loop !36

._crit_edge309:                                   ; preds = %170, %121
  %.0271.lcssa = phi i64 [ 0, %121 ], [ %.1272, %170 ]
  %.not289 = icmp eq i64 %101, %106
  br i1 %.not289, label %.thread293, label %172

172:                                              ; preds = %._crit_edge309
  br i1 %97, label %173, label %179

173:                                              ; preds = %172
  %174 = getelementptr inbounds i64, ptr %34, i64 %106
  %175 = load i64, ptr %174, align 8, !tbaa !29
  %176 = getelementptr inbounds i64, ptr %51, i64 %.0332
  %177 = load i64, ptr %176, align 8, !tbaa !29
  %178 = add nsw i64 %177, %175
  store i64 %178, ptr %176, align 8, !tbaa !29
  br label %185

179:                                              ; preds = %172
  %180 = mul nsw i64 %106, %30
  %181 = getelementptr inbounds float, ptr %38, i64 %180
  %182 = mul nsw i64 %.0332, %30
  %183 = getelementptr inbounds float, ptr %55, i64 %182
  %184 = tail call ptr @gk_faxpy(i64 noundef %30, float noundef 1.000000e+00, ptr noundef %181, i64 noundef 1, ptr noundef %183, i64 noundef 1) #3
  br label %185

185:                                              ; preds = %179, %173
  br i1 %8, label %186, label %192

186:                                              ; preds = %185
  %187 = getelementptr inbounds i64, ptr %36, i64 %106
  %188 = load i64, ptr %187, align 8, !tbaa !29
  %189 = getelementptr inbounds i64, ptr %53, i64 %.0332
  %190 = load i64, ptr %189, align 8, !tbaa !29
  %191 = add nsw i64 %190, %188
  store i64 %191, ptr %189, align 8, !tbaa !29
  br label %192

192:                                              ; preds = %186, %185
  %193 = getelementptr inbounds i64, ptr %44, i64 %106
  %194 = load i64, ptr %193, align 8, !tbaa !29
  %195 = load i64, ptr %124, align 8, !tbaa !29
  %196 = add nsw i64 %195, %194
  store i64 %196, ptr %124, align 8, !tbaa !29
  %197 = getelementptr inbounds i64, ptr %32, i64 %106
  %198 = load i64, ptr %197, align 8, !tbaa !29
  %199 = getelementptr i8, ptr %197, i64 8
  %200 = load i64, ptr %199, align 8, !tbaa !29
  %201 = icmp slt i64 %198, %200
  br i1 %201, label %.lr.ph317, label %._crit_edge318

.lr.ph317:                                        ; preds = %192, %242
  %.1263315 = phi i64 [ %243, %242 ], [ %198, %192 ]
  %.2273314 = phi i64 [ %.3274, %242 ], [ %.0271.lcssa, %192 ]
  %202 = getelementptr inbounds i64, ptr %65, i64 %.1263315
  %203 = load i64, ptr %202, align 8, !tbaa !29
  %204 = and i64 %203, 2047
  %205 = getelementptr inbounds i64, ptr %95, i64 %204
  %206 = load i64, ptr %205, align 8, !tbaa !29
  %207 = icmp eq i64 %206, -1
  br i1 %207, label %208, label %214

208:                                              ; preds = %.lr.ph317
  %209 = getelementptr inbounds i64, ptr %.0269329, i64 %.2273314
  store i64 %203, ptr %209, align 8, !tbaa !29
  %210 = getelementptr inbounds i64, ptr %42, i64 %.1263315
  %211 = load i64, ptr %210, align 8, !tbaa !29
  %212 = getelementptr inbounds i64, ptr %.0267330, i64 %.2273314
  store i64 %211, ptr %212, align 8, !tbaa !29
  %213 = add nsw i64 %.2273314, 1
  store i64 %.2273314, ptr %205, align 8, !tbaa !29
  br label %242

214:                                              ; preds = %.lr.ph317
  %215 = getelementptr inbounds i64, ptr %.0269329, i64 %206
  %216 = load i64, ptr %215, align 8, !tbaa !29
  %217 = icmp eq i64 %216, %203
  br i1 %217, label %219, label %.preheader

.preheader:                                       ; preds = %214
  %218 = icmp sgt i64 %.2273314, 0
  br i1 %218, label %.lr.ph312, label %.loopexit

219:                                              ; preds = %214
  %220 = getelementptr inbounds i64, ptr %42, i64 %.1263315
  %221 = load i64, ptr %220, align 8, !tbaa !29
  %222 = getelementptr inbounds i64, ptr %.0267330, i64 %206
  %223 = load i64, ptr %222, align 8, !tbaa !29
  %224 = add nsw i64 %223, %221
  store i64 %224, ptr %222, align 8, !tbaa !29
  br label %242

.lr.ph312:                                        ; preds = %.preheader, %234
  %.1265311 = phi i64 [ %235, %234 ], [ 0, %.preheader ]
  %225 = getelementptr inbounds i64, ptr %.0269329, i64 %.1265311
  %226 = load i64, ptr %225, align 8, !tbaa !29
  %227 = icmp eq i64 %226, %203
  br i1 %227, label %228, label %234

228:                                              ; preds = %.lr.ph312
  %229 = getelementptr inbounds i64, ptr %42, i64 %.1263315
  %230 = load i64, ptr %229, align 8, !tbaa !29
  %231 = getelementptr inbounds i64, ptr %.0267330, i64 %.1265311
  %232 = load i64, ptr %231, align 8, !tbaa !29
  %233 = add nsw i64 %232, %230
  store i64 %233, ptr %231, align 8, !tbaa !29
  br label %.loopexit

234:                                              ; preds = %.lr.ph312
  %235 = add nuw nsw i64 %.1265311, 1
  %exitcond344.not = icmp eq i64 %235, %.2273314
  br i1 %exitcond344.not, label %.loopexit.thread, label %.lr.ph312, !llvm.loop !37

.loopexit:                                        ; preds = %.preheader, %228
  %.1265301 = phi i64 [ %.1265311, %228 ], [ 0, %.preheader ]
  %236 = icmp eq i64 %.1265301, %.2273314
  br i1 %236, label %.loopexit.thread, label %242

.loopexit.thread:                                 ; preds = %234, %.loopexit
  %237 = getelementptr inbounds i64, ptr %.0269329, i64 %.2273314
  store i64 %203, ptr %237, align 8, !tbaa !29
  %238 = getelementptr inbounds i64, ptr %42, i64 %.1263315
  %239 = load i64, ptr %238, align 8, !tbaa !29
  %240 = add nsw i64 %.2273314, 1
  %241 = getelementptr inbounds i64, ptr %.0267330, i64 %.2273314
  store i64 %239, ptr %241, align 8, !tbaa !29
  br label %242

242:                                              ; preds = %208, %.loopexit, %.loopexit.thread, %219
  %.3274 = phi i64 [ %213, %208 ], [ %.2273314, %219 ], [ %240, %.loopexit.thread ], [ %.2273314, %.loopexit ]
  %243 = add nsw i64 %.1263315, 1
  %exitcond345.not = icmp eq i64 %243, %200
  br i1 %exitcond345.not, label %._crit_edge318, label %.lr.ph317, !llvm.loop !38

._crit_edge318:                                   ; preds = %242, %192
  %.2273.lcssa = phi i64 [ %.0271.lcssa, %192 ], [ %.3274, %242 ]
  %244 = and i64 %.0332, 2047
  %245 = getelementptr inbounds i64, ptr %95, i64 %244
  %246 = load i64, ptr %245, align 8, !tbaa !29
  %247 = icmp sgt i64 %246, -1
  br i1 %247, label %248, label %.thread293

248:                                              ; preds = %._crit_edge318
  %249 = getelementptr inbounds i64, ptr %.0269329, i64 %246
  %250 = load i64, ptr %249, align 8, !tbaa !29
  %.not290 = icmp eq i64 %250, %.0332
  br i1 %.not290, label %.thread, label %.preheader297

.preheader297:                                    ; preds = %248
  %251 = icmp sgt i64 %.2273.lcssa, 0
  br i1 %251, label %.lr.ph321, label %.thread

.lr.ph321:                                        ; preds = %.preheader297, %255
  %.2266320 = phi i64 [ %256, %255 ], [ 0, %.preheader297 ]
  %252 = getelementptr inbounds i64, ptr %.0269329, i64 %.2266320
  %253 = load i64, ptr %252, align 8, !tbaa !29
  %254 = icmp eq i64 %253, %.0332
  br i1 %254, label %.thread, label %255

255:                                              ; preds = %.lr.ph321
  %256 = add nuw nsw i64 %.2266320, 1
  %exitcond346.not = icmp eq i64 %256, %.2273.lcssa
  br i1 %exitcond346.not, label %.thread, label %.lr.ph321, !llvm.loop !39

.thread:                                          ; preds = %255, %.lr.ph321, %.preheader297, %248
  %.3292 = phi i64 [ %246, %248 ], [ 0, %.preheader297 ], [ %.2273.lcssa, %255 ], [ %.2266320, %.lr.ph321 ]
  %257 = getelementptr inbounds i64, ptr %.0269329, i64 %.3292
  %258 = load i64, ptr %257, align 8, !tbaa !29
  %259 = icmp eq i64 %258, %.0332
  br i1 %259, label %260, label %.thread293

260:                                              ; preds = %.thread
  %261 = getelementptr inbounds i64, ptr %.0267330, i64 %.3292
  %262 = load i64, ptr %261, align 8, !tbaa !29
  %263 = load i64, ptr %124, align 8, !tbaa !29
  %264 = sub nsw i64 %263, %262
  store i64 %264, ptr %124, align 8, !tbaa !29
  %265 = add nsw i64 %.2273.lcssa, -1
  %266 = getelementptr inbounds i64, ptr %.0269329, i64 %265
  %267 = load i64, ptr %266, align 8, !tbaa !29
  store i64 %267, ptr %257, align 8, !tbaa !29
  %268 = getelementptr inbounds i64, ptr %.0267330, i64 %265
  %269 = load i64, ptr %268, align 8, !tbaa !29
  store i64 %269, ptr %261, align 8, !tbaa !29
  br label %.thread293

.thread293:                                       ; preds = %._crit_edge318, %.thread, %260, %._crit_edge309
  %.4 = phi i64 [ %265, %260 ], [ %.2273.lcssa, %.thread ], [ %.0271.lcssa, %._crit_edge309 ], [ %.2273.lcssa, %._crit_edge318 ]
  %270 = icmp sgt i64 %.4, 0
  br i1 %270, label %.lr.ph326.preheader, label %._crit_edge327

.lr.ph326.preheader:                              ; preds = %.thread293
  %xtraiter357 = and i64 %.4, 3
  %271 = icmp ult i64 %.4, 4
  br i1 %271, label %._crit_edge327.loopexit.unr-lcssa, label %.lr.ph326.preheader.new

.lr.ph326.preheader.new:                          ; preds = %.lr.ph326.preheader
  %unroll_iter360 = and i64 %.4, 9223372036854775804
  br label %.lr.ph326

.lr.ph326:                                        ; preds = %.lr.ph326, %.lr.ph326.preheader.new
  %.2325 = phi i64 [ 0, %.lr.ph326.preheader.new ], [ %291, %.lr.ph326 ]
  %niter361 = phi i64 [ 0, %.lr.ph326.preheader.new ], [ %niter361.next.3, %.lr.ph326 ]
  %272 = getelementptr inbounds i64, ptr %.0269329, i64 %.2325
  %273 = load i64, ptr %272, align 8, !tbaa !29
  %274 = and i64 %273, 2047
  %275 = getelementptr inbounds i64, ptr %95, i64 %274
  store i64 -1, ptr %275, align 8, !tbaa !29
  %276 = or disjoint i64 %.2325, 1
  %277 = getelementptr inbounds i64, ptr %.0269329, i64 %276
  %278 = load i64, ptr %277, align 8, !tbaa !29
  %279 = and i64 %278, 2047
  %280 = getelementptr inbounds i64, ptr %95, i64 %279
  store i64 -1, ptr %280, align 8, !tbaa !29
  %281 = or disjoint i64 %.2325, 2
  %282 = getelementptr inbounds i64, ptr %.0269329, i64 %281
  %283 = load i64, ptr %282, align 8, !tbaa !29
  %284 = and i64 %283, 2047
  %285 = getelementptr inbounds i64, ptr %95, i64 %284
  store i64 -1, ptr %285, align 8, !tbaa !29
  %286 = or disjoint i64 %.2325, 3
  %287 = getelementptr inbounds i64, ptr %.0269329, i64 %286
  %288 = load i64, ptr %287, align 8, !tbaa !29
  %289 = and i64 %288, 2047
  %290 = getelementptr inbounds i64, ptr %95, i64 %289
  store i64 -1, ptr %290, align 8, !tbaa !29
  %291 = add nuw nsw i64 %.2325, 4
  %niter361.next.3 = add i64 %niter361, 4
  %niter361.ncmp.3 = icmp eq i64 %niter361.next.3, %unroll_iter360
  br i1 %niter361.ncmp.3, label %._crit_edge327.loopexit.unr-lcssa, label %.lr.ph326, !llvm.loop !40

._crit_edge327.loopexit.unr-lcssa:                ; preds = %.lr.ph326, %.lr.ph326.preheader
  %.2325.unr = phi i64 [ 0, %.lr.ph326.preheader ], [ %291, %.lr.ph326 ]
  %lcmp.mod359.not = icmp eq i64 %xtraiter357, 0
  br i1 %lcmp.mod359.not, label %._crit_edge327, label %.lr.ph326.epil

.lr.ph326.epil:                                   ; preds = %._crit_edge327.loopexit.unr-lcssa, %.lr.ph326.epil
  %.2325.epil = phi i64 [ %296, %.lr.ph326.epil ], [ %.2325.unr, %._crit_edge327.loopexit.unr-lcssa ]
  %epil.iter358 = phi i64 [ %epil.iter358.next, %.lr.ph326.epil ], [ 0, %._crit_edge327.loopexit.unr-lcssa ]
  %292 = getelementptr inbounds i64, ptr %.0269329, i64 %.2325.epil
  %293 = load i64, ptr %292, align 8, !tbaa !29
  %294 = and i64 %293, 2047
  %295 = getelementptr inbounds i64, ptr %95, i64 %294
  store i64 -1, ptr %295, align 8, !tbaa !29
  %296 = add nuw nsw i64 %.2325.epil, 1
  %epil.iter358.next = add i64 %epil.iter358, 1
  %epil.iter358.cmp.not = icmp eq i64 %epil.iter358.next, %xtraiter357
  br i1 %epil.iter358.cmp.not, label %._crit_edge327, label %.lr.ph326.epil, !llvm.loop !41

._crit_edge327:                                   ; preds = %._crit_edge327.loopexit.unr-lcssa, %.lr.ph326.epil, %.thread293
  %297 = and i64 %.0332, 2047
  %298 = getelementptr inbounds i64, ptr %95, i64 %297
  store i64 -1, ptr %298, align 8, !tbaa !29
  %299 = add nsw i64 %.4, %.0275328
  %300 = add nsw i64 %.0332, 1
  %301 = getelementptr inbounds i64, ptr %49, i64 %300
  store i64 %299, ptr %301, align 8, !tbaa !29
  %302 = getelementptr inbounds i64, ptr %.0269329, i64 %.4
  %303 = getelementptr inbounds i64, ptr %.0267330, i64 %.4
  br label %304

304:                                              ; preds = %99, %._crit_edge327
  %.1276 = phi i64 [ %.0275328, %99 ], [ %299, %._crit_edge327 ]
  %.1270 = phi ptr [ %.0269329, %99 ], [ %302, %._crit_edge327 ]
  %.1268 = phi ptr [ %.0267330, %99 ], [ %303, %._crit_edge327 ]
  %.1 = phi i64 [ %.0332, %99 ], [ %300, %._crit_edge327 ]
  %305 = add nuw nsw i64 %.1261331, 1
  %exitcond348.not = icmp eq i64 %305, %28
  br i1 %exitcond348.not, label %._crit_edge337, label %99, !llvm.loop !42

._crit_edge337:                                   ; preds = %304, %._crit_edge
  %.0275.lcssa = phi i64 [ 0, %._crit_edge ], [ %.1276, %304 ]
  %306 = getelementptr inbounds i8, ptr %47, i64 8
  store i64 %.0275.lcssa, ptr %306, align 8, !tbaa !14
  tail call void @libmetis__ReAdjustMemory(ptr noundef nonnull %1, ptr noundef %47, i64 noundef %9)
  %307 = load i64, ptr %19, align 8, !tbaa !18
  %308 = and i64 %307, 1
  %.not287 = icmp eq i64 %308, 0
  br i1 %.not287, label %314, label %309

309:                                              ; preds = %._crit_edge337
  %310 = tail call double @gk_CPUSeconds() #3
  %311 = getelementptr inbounds i8, ptr %0, i64 176
  %312 = load double, ptr %311, align 8, !tbaa !19
  %313 = fadd double %310, %312
  store double %313, ptr %311, align 8, !tbaa !19
  br label %314

314:                                              ; preds = %309, %._crit_edge337
  tail call void @libmetis__idxwspacefree(ptr noundef nonnull %0, i64 noundef 2048) #3
  br label %315

315:                                              ; preds = %314, %17
  ret void
}

; Function Attrs: nounwind uwtable
declare dso_local void @libmetis__CreateCoarseGraphNoMask(ptr noundef, ptr noundef, i64 noundef, ptr noundef, ptr noundef) local_unnamed_addr #0

declare double @gk_CPUSeconds() local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare dso_local ptr @libmetis__SetUpCoarseGraph(ptr noundef, i64 noundef, i64 noundef) local_unnamed_addr #0

; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #2

declare ptr @libmetis__idxset(i64 noundef, i64 noundef, ptr noundef) local_unnamed_addr #1

declare ptr @libmetis__idxwspacemalloc(ptr noundef, i64 noundef) local_unnamed_addr #1

; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memmove.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1 immarg) #2

declare ptr @gk_faxpy(i64 noundef, float noundef, ptr noundef, i64 noundef, ptr noundef, i64 noundef) local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare dso_local void @libmetis__ReAdjustMemory(ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr #0

declare void @libmetis__idxwspacefree(ptr noundef, i64 noundef) local_unnamed_addr #1

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { "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 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
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, !7, i64 56}
!6 = !{!"controldef", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !7, i64 40, !10, i64 48, !7, i64 56, !7, i64 64, !7, i64 72, !7, i64 80, !11, i64 88, !13, i64 152, !13, i64 160, !13, i64 168, !13, i64 176, !13, i64 184, !13, i64 192, !13, i64 200, !13, i64 208, !13, i64 216, !13, i64 224, !13, i64 232, !13, i64 240, !13, i64 248, !13, i64 256, !13, i64 264, !13, i64 272}
!7 = !{!"long", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!"float", !8, i64 0}
!11 = !{!"workspacedef", !12, i64 0, !7, i64 8, !7, i64 16, !12, i64 24, !12, i64 32, !7, i64 40, !12, i64 48, !12, i64 56}
!12 = !{!"any pointer", !8, i64 0}
!13 = !{!"double", !8, i64 0}
!14 = !{!15, !7, i64 8}
!15 = !{!"graphdef", !7, i64 0, !7, i64 8, !12, i64 16, !12, i64 24, !12, i64 32, !12, i64 40, !12, i64 48, !16, i64 56, !16, i64 60, !16, i64 64, !16, i64 68, !16, i64 72, !12, i64 80, !12, i64 88, !12, i64 96, !12, i64 104, !7, i64 112, !7, i64 120, !12, i64 128, !12, i64 136, !7, i64 144, !12, i64 152, !12, i64 160, !12, i64 168, !12, i64 176, !12, i64 184, !12, i64 192, !12, i64 200, !7, i64 208, !12, i64 216, !12, i64 224, !12, i64 232, !12, i64 240}
!16 = !{!"int", !8, i64 0}
!17 = !{!15, !7, i64 0}
!18 = !{!6, !7, i64 8}
!19 = !{!6, !13, i64 176}
!20 = !{!15, !7, i64 208}
!21 = !{!15, !12, i64 16}
!22 = !{!15, !12, i64 24}
!23 = !{!15, !12, i64 32}
!24 = !{!15, !12, i64 216}
!25 = !{!15, !12, i64 40}
!26 = !{!15, !12, i64 48}
!27 = !{!15, !12, i64 88}
!28 = !{!15, !12, i64 104}
!29 = !{!7, !7, i64 0}
!30 = !{!6, !12, i64 136}
!31 = distinct !{!31, !32}
!32 = !{!"llvm.loop.mustprogress"}
!33 = distinct !{!33, !34}
!34 = !{!"llvm.loop.unroll.disable"}
!35 = distinct !{!35, !32}
!36 = distinct !{!36, !32}
!37 = distinct !{!37, !32}
!38 = distinct !{!38, !32}
!39 = distinct !{!39, !32}
!40 = distinct !{!40, !32}
!41 = distinct !{!41, !34}
!42 = distinct !{!42, !32}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass