; LLVM IR from palatinuse/database-vertical-partitioning :: lib/metis/Lib/ccgraph.ll_ (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 { i32, i32, i32, i32, i32, i32, float, i32, i32, i32, i32, %struct.workspacedef, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double }
%struct.workspacedef = type { ptr, i32, i32, ptr, ptr, i32, ptr, ptr }
%struct.graphdef = type { ptr, ptr, i32, i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32, ptr, ptr, i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, i32, ptr, ptr, ptr, ptr }

; Function Attrs: nounwind uwtable
define dso_local void @__CreateCoarseGraph(ptr noundef %0, ptr noundef %1, i32 noundef %2, ptr noundef %3, ptr noundef %4) #0 {
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca i32, align 4
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca 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 i32 %2, ptr %8, align 4, !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 4, ptr %11) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #4
  call void @llvm.lifetime.start.p0(i64 4, 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 i32, ptr %48, align 4, !tbaa !11
  %50 = icmp eq i32 %49, 6
  %51 = zext i1 %50 to i64
  %52 = select i1 %50, i32 1, i32 0
  store i32 %52, ptr %27, align 4, !tbaa !9
  store i32 2047, ptr %26, align 4, !tbaa !9
  %53 = load i32, ptr %8, align 4, !tbaa !9
  %54 = load i32, ptr %26, align 4, !tbaa !9
  %55 = mul nsw i32 8, %54
  %56 = icmp slt i32 %53, %55
  br i1 %56, label %66, label %57

57:                                               ; preds = %5
  %58 = load ptr, ptr %7, align 8, !tbaa !5
  %59 = getelementptr inbounds %struct.graphdef, ptr %58, i32 0, i32 3
  %60 = load i32, ptr %59, align 4, !tbaa !16
  %61 = load ptr, ptr %7, align 8, !tbaa !5
  %62 = getelementptr inbounds %struct.graphdef, ptr %61, i32 0, i32 2
  %63 = load i32, ptr %62, align 8, !tbaa !18
  %64 = sdiv i32 %60, %63
  %65 = icmp sgt i32 %64, 15
  br i1 %65, label %66, label %72

66:                                               ; preds = %57, %5
  %67 = load ptr, ptr %6, align 8, !tbaa !5
  %68 = load ptr, ptr %7, align 8, !tbaa !5
  %69 = load i32, ptr %8, align 4, !tbaa !9
  %70 = load ptr, ptr %9, align 8, !tbaa !5
  %71 = load ptr, ptr %10, align 8, !tbaa !5
  call void @__CreateCoarseGraphNoMask(ptr noundef %67, ptr noundef %68, i32 noundef %69, ptr noundef %70, ptr noundef %71)
  store i32 1, ptr %46, align 4
  br label %722

72:                                               ; preds = %57
  %73 = load ptr, ptr %6, align 8, !tbaa !5
  %74 = getelementptr inbounds %struct.controldef, ptr %73, i32 0, i32 1
  %75 = load i32, ptr %74, align 4, !tbaa !19
  %76 = and i32 %75, 1
  %77 = icmp ne i32 %76, 0
  br i1 %77, label %78, label %84

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

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

154:                                              ; preds = %172, %84
  %155 = load i32, ptr %11, align 4, !tbaa !9
  %156 = load i32, ptr %19, align 4, !tbaa !9
  %157 = icmp slt i32 %155, %156
  br i1 %157, label %158, label %175

158:                                              ; preds = %154
  %159 = load ptr, ptr %35, align 8, !tbaa !5
  %160 = load ptr, ptr %34, align 8, !tbaa !5
  %161 = load i32, ptr %11, align 4, !tbaa !9
  %162 = sext i32 %161 to i64
  %163 = getelementptr inbounds i32, ptr %160, i64 %162
  %164 = load i32, ptr %163, align 4, !tbaa !9
  %165 = sext i32 %164 to i64
  %166 = getelementptr inbounds i32, ptr %159, i64 %165
  %167 = load i32, ptr %166, align 4, !tbaa !9
  %168 = load ptr, ptr %34, align 8, !tbaa !5
  %169 = load i32, ptr %11, align 4, !tbaa !9
  %170 = sext i32 %169 to i64
  %171 = getelementptr inbounds i32, ptr %168, i64 %170
  store i32 %167, ptr %171, align 4, !tbaa !9
  br label %172

172:                                              ; preds = %158
  %173 = load i32, ptr %11, align 4, !tbaa !9
  %174 = add nsw i32 %173, 1
  store i32 %174, ptr %11, align 4, !tbaa !9
  br label %154, !llvm.loop !31

175:                                              ; preds = %154
  %176 = load i32, ptr %26, align 4, !tbaa !9
  %177 = add nsw i32 %176, 1
  %178 = load ptr, ptr %6, align 8, !tbaa !5
  %179 = load i32, ptr %26, align 4, !tbaa !9
  %180 = add nsw i32 %179, 1
  %181 = call ptr @__idxwspacemalloc(ptr noundef %178, i32 noundef %180)
  %182 = call ptr @__idxset(i32 noundef %177, i32 noundef -1, ptr noundef %181)
  store ptr %182, ptr %36, align 8, !tbaa !5
  store i32 0, ptr %23, align 4, !tbaa !9
  store i32 0, ptr %8, align 4, !tbaa !9
  %183 = load ptr, ptr %37, align 8, !tbaa !5
  %184 = getelementptr inbounds i32, ptr %183, i64 0
  store i32 0, ptr %184, align 4, !tbaa !9
  store i32 0, ptr %11, align 4, !tbaa !9
  br label %185

185:                                              ; preds = %697, %175
  %186 = load i32, ptr %11, align 4, !tbaa !9
  %187 = load i32, ptr %20, align 4, !tbaa !9
  %188 = icmp slt i32 %186, %187
  br i1 %188, label %189, label %700

189:                                              ; preds = %185
  %190 = load ptr, ptr %10, align 8, !tbaa !5
  %191 = load i32, ptr %11, align 4, !tbaa !9
  %192 = sext i32 %191 to i64
  %193 = getelementptr inbounds i32, ptr %190, i64 %192
  %194 = load i32, ptr %193, align 4, !tbaa !9
  store i32 %194, ptr %24, align 4, !tbaa !9
  %195 = load ptr, ptr %35, align 8, !tbaa !5
  %196 = load i32, ptr %24, align 4, !tbaa !9
  %197 = sext i32 %196 to i64
  %198 = getelementptr inbounds i32, ptr %195, i64 %197
  %199 = load i32, ptr %198, align 4, !tbaa !9
  %200 = load i32, ptr %8, align 4, !tbaa !9
  %201 = icmp ne i32 %199, %200
  br i1 %201, label %202, label %203

202:                                              ; preds = %189
  br label %697

203:                                              ; preds = %189
  %204 = load ptr, ptr %9, align 8, !tbaa !5
  %205 = load i32, ptr %24, align 4, !tbaa !9
  %206 = sext i32 %205 to i64
  %207 = getelementptr inbounds i32, ptr %204, i64 %206
  %208 = load i32, ptr %207, align 4, !tbaa !9
  store i32 %208, ptr %25, align 4, !tbaa !9
  %209 = load i32, ptr %22, align 4, !tbaa !9
  %210 = icmp eq i32 %209, 1
  br i1 %210, label %211, label %221

211:                                              ; preds = %203
  %212 = load ptr, ptr %29, align 8, !tbaa !5
  %213 = load i32, ptr %24, align 4, !tbaa !9
  %214 = sext i32 %213 to i64
  %215 = getelementptr inbounds i32, ptr %212, i64 %214
  %216 = load i32, ptr %215, align 4, !tbaa !9
  %217 = load ptr, ptr %38, align 8, !tbaa !5
  %218 = load i32, ptr %8, align 4, !tbaa !9
  %219 = sext i32 %218 to i64
  %220 = getelementptr inbounds i32, ptr %217, i64 %219
  store i32 %216, ptr %220, align 4, !tbaa !9
  br label %237

221:                                              ; preds = %203
  %222 = load ptr, ptr %44, align 8, !tbaa !5
  %223 = load i32, ptr %8, align 4, !tbaa !9
  %224 = load i32, ptr %22, align 4, !tbaa !9
  %225 = mul nsw i32 %223, %224
  %226 = sext i32 %225 to i64
  %227 = getelementptr inbounds float, ptr %222, i64 %226
  %228 = load ptr, ptr %43, align 8, !tbaa !5
  %229 = load i32, ptr %24, align 4, !tbaa !9
  %230 = load i32, ptr %22, align 4, !tbaa !9
  %231 = mul nsw i32 %229, %230
  %232 = sext i32 %231 to i64
  %233 = getelementptr inbounds float, ptr %228, i64 %232
  %234 = load i32, ptr %22, align 4, !tbaa !9
  %235 = sext i32 %234 to i64
  %236 = mul i64 4, %235
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %227, ptr align 1 %233, i64 %236, i1 false)
  br label %237

237:                                              ; preds = %221, %211
  %238 = load i32, ptr %27, align 4, !tbaa !9
  %239 = icmp ne i32 %238, 0
  br i1 %239, label %240, label %250

240:                                              ; preds = %237
  %241 = load ptr, ptr %30, align 8, !tbaa !5
  %242 = load i32, ptr %24, align 4, !tbaa !9
  %243 = sext i32 %242 to i64
  %244 = getelementptr inbounds i32, ptr %241, i64 %243
  %245 = load i32, ptr %244, align 4, !tbaa !9
  %246 = load ptr, ptr %39, align 8, !tbaa !5
  %247 = load i32, ptr %8, align 4, !tbaa !9
  %248 = sext i32 %247 to i64
  %249 = getelementptr inbounds i32, ptr %246, i64 %248
  store i32 %245, ptr %249, align 4, !tbaa !9
  br label %250

250:                                              ; preds = %240, %237
  %251 = load ptr, ptr %33, align 8, !tbaa !5
  %252 = load i32, ptr %24, align 4, !tbaa !9
  %253 = sext i32 %252 to i64
  %254 = getelementptr inbounds i32, ptr %251, i64 %253
  %255 = load i32, ptr %254, align 4, !tbaa !9
  %256 = load ptr, ptr %42, align 8, !tbaa !5
  %257 = load i32, ptr %8, align 4, !tbaa !9
  %258 = sext i32 %257 to i64
  %259 = getelementptr inbounds i32, ptr %256, i64 %258
  store i32 %255, ptr %259, align 4, !tbaa !9
  store i32 0, ptr %21, align 4, !tbaa !9
  %260 = load ptr, ptr %28, align 8, !tbaa !5
  %261 = load i32, ptr %24, align 4, !tbaa !9
  %262 = sext i32 %261 to i64
  %263 = getelementptr inbounds i32, ptr %260, i64 %262
  %264 = load i32, ptr %263, align 4, !tbaa !9
  store i32 %264, ptr %18, align 4, !tbaa !9
  %265 = load ptr, ptr %28, align 8, !tbaa !5
  %266 = load i32, ptr %24, align 4, !tbaa !9
  %267 = add nsw i32 %266, 1
  %268 = sext i32 %267 to i64
  %269 = getelementptr inbounds i32, ptr %265, i64 %268
  %270 = load i32, ptr %269, align 4, !tbaa !9
  store i32 %270, ptr %19, align 4, !tbaa !9
  %271 = load i32, ptr %18, align 4, !tbaa !9
  store i32 %271, ptr %12, align 4, !tbaa !9
  br label %272

272:                                              ; preds = %384, %250
  %273 = load i32, ptr %12, align 4, !tbaa !9
  %274 = load i32, ptr %19, align 4, !tbaa !9
  %275 = icmp slt i32 %273, %274
  br i1 %275, label %276, label %387

276:                                              ; preds = %272
  %277 = load ptr, ptr %34, align 8, !tbaa !5
  %278 = load i32, ptr %12, align 4, !tbaa !9
  %279 = sext i32 %278 to i64
  %280 = getelementptr inbounds i32, ptr %277, i64 %279
  %281 = load i32, ptr %280, align 4, !tbaa !9
  store i32 %281, ptr %14, align 4, !tbaa !9
  %282 = load i32, ptr %14, align 4, !tbaa !9
  %283 = load i32, ptr %26, align 4, !tbaa !9
  %284 = and i32 %282, %283
  store i32 %284, ptr %15, align 4, !tbaa !9
  %285 = load ptr, ptr %36, align 8, !tbaa !5
  %286 = load i32, ptr %15, align 4, !tbaa !9
  %287 = sext i32 %286 to i64
  %288 = getelementptr inbounds i32, ptr %285, i64 %287
  %289 = load i32, ptr %288, align 4, !tbaa !9
  store i32 %289, ptr %17, align 4, !tbaa !9
  %290 = icmp eq i32 %289, -1
  br i1 %290, label %291, label %312

291:                                              ; preds = %276
  %292 = load i32, ptr %14, align 4, !tbaa !9
  %293 = load ptr, ptr %40, align 8, !tbaa !5
  %294 = load i32, ptr %21, align 4, !tbaa !9
  %295 = sext i32 %294 to i64
  %296 = getelementptr inbounds i32, ptr %293, i64 %295
  store i32 %292, ptr %296, align 4, !tbaa !9
  %297 = load ptr, ptr %32, align 8, !tbaa !5
  %298 = load i32, ptr %12, align 4, !tbaa !9
  %299 = sext i32 %298 to i64
  %300 = getelementptr inbounds i32, ptr %297, i64 %299
  %301 = load i32, ptr %300, align 4, !tbaa !9
  %302 = load ptr, ptr %41, align 8, !tbaa !5
  %303 = load i32, ptr %21, align 4, !tbaa !9
  %304 = sext i32 %303 to i64
  %305 = getelementptr inbounds i32, ptr %302, i64 %304
  store i32 %301, ptr %305, align 4, !tbaa !9
  %306 = load i32, ptr %21, align 4, !tbaa !9
  %307 = add nsw i32 %306, 1
  store i32 %307, ptr %21, align 4, !tbaa !9
  %308 = load ptr, ptr %36, align 8, !tbaa !5
  %309 = load i32, ptr %15, align 4, !tbaa !9
  %310 = sext i32 %309 to i64
  %311 = getelementptr inbounds i32, ptr %308, i64 %310
  store i32 %306, ptr %311, align 4, !tbaa !9
  br label %383

312:                                              ; preds = %276
  %313 = load ptr, ptr %40, align 8, !tbaa !5
  %314 = load i32, ptr %17, align 4, !tbaa !9
  %315 = sext i32 %314 to i64
  %316 = getelementptr inbounds i32, ptr %313, i64 %315
  %317 = load i32, ptr %316, align 4, !tbaa !9
  %318 = load i32, ptr %14, align 4, !tbaa !9
  %319 = icmp eq i32 %317, %318
  br i1 %319, label %320, label %332

320:                                              ; preds = %312
  %321 = load ptr, ptr %32, align 8, !tbaa !5
  %322 = load i32, ptr %12, align 4, !tbaa !9
  %323 = sext i32 %322 to i64
  %324 = getelementptr inbounds i32, ptr %321, i64 %323
  %325 = load i32, ptr %324, align 4, !tbaa !9
  %326 = load ptr, ptr %41, align 8, !tbaa !5
  %327 = load i32, ptr %17, align 4, !tbaa !9
  %328 = sext i32 %327 to i64
  %329 = getelementptr inbounds i32, ptr %326, i64 %328
  %330 = load i32, ptr %329, align 4, !tbaa !9
  %331 = add nsw i32 %330, %325
  store i32 %331, ptr %329, align 4, !tbaa !9
  br label %382

332:                                              ; preds = %312
  store i32 0, ptr %13, align 4, !tbaa !9
  br label %333

333:                                              ; preds = %358, %332
  %334 = load i32, ptr %13, align 4, !tbaa !9
  %335 = load i32, ptr %21, align 4, !tbaa !9
  %336 = icmp slt i32 %334, %335
  br i1 %336, label %337, label %361

337:                                              ; preds = %333
  %338 = load ptr, ptr %40, align 8, !tbaa !5
  %339 = load i32, ptr %13, align 4, !tbaa !9
  %340 = sext i32 %339 to i64
  %341 = getelementptr inbounds i32, ptr %338, i64 %340
  %342 = load i32, ptr %341, align 4, !tbaa !9
  %343 = load i32, ptr %14, align 4, !tbaa !9
  %344 = icmp eq i32 %342, %343
  br i1 %344, label %345, label %357

345:                                              ; preds = %337
  %346 = load ptr, ptr %32, align 8, !tbaa !5
  %347 = load i32, ptr %12, align 4, !tbaa !9
  %348 = sext i32 %347 to i64
  %349 = getelementptr inbounds i32, ptr %346, i64 %348
  %350 = load i32, ptr %349, align 4, !tbaa !9
  %351 = load ptr, ptr %41, align 8, !tbaa !5
  %352 = load i32, ptr %13, align 4, !tbaa !9
  %353 = sext i32 %352 to i64
  %354 = getelementptr inbounds i32, ptr %351, i64 %353
  %355 = load i32, ptr %354, align 4, !tbaa !9
  %356 = add nsw i32 %355, %350
  store i32 %356, ptr %354, align 4, !tbaa !9
  br label %361

357:                                              ; preds = %337
  br label %358

358:                                              ; preds = %357
  %359 = load i32, ptr %13, align 4, !tbaa !9
  %360 = add nsw i32 %359, 1
  store i32 %360, ptr %13, align 4, !tbaa !9
  br label %333, !llvm.loop !33

361:                                              ; preds = %345, %333
  %362 = load i32, ptr %13, align 4, !tbaa !9
  %363 = load i32, ptr %21, align 4, !tbaa !9
  %364 = icmp eq i32 %362, %363
  br i1 %364, label %365, label %381

365:                                              ; preds = %361
  %366 = load i32, ptr %14, align 4, !tbaa !9
  %367 = load ptr, ptr %40, align 8, !tbaa !5
  %368 = load i32, ptr %21, align 4, !tbaa !9
  %369 = sext i32 %368 to i64
  %370 = getelementptr inbounds i32, ptr %367, i64 %369
  store i32 %366, ptr %370, align 4, !tbaa !9
  %371 = load ptr, ptr %32, align 8, !tbaa !5
  %372 = load i32, ptr %12, align 4, !tbaa !9
  %373 = sext i32 %372 to i64
  %374 = getelementptr inbounds i32, ptr %371, i64 %373
  %375 = load i32, ptr %374, align 4, !tbaa !9
  %376 = load ptr, ptr %41, align 8, !tbaa !5
  %377 = load i32, ptr %21, align 4, !tbaa !9
  %378 = add nsw i32 %377, 1
  store i32 %378, ptr %21, align 4, !tbaa !9
  %379 = sext i32 %377 to i64
  %380 = getelementptr inbounds i32, ptr %376, i64 %379
  store i32 %375, ptr %380, align 4, !tbaa !9
  br label %381

381:                                              ; preds = %365, %361
  br label %382

382:                                              ; preds = %381, %320
  br label %383

383:                                              ; preds = %382, %291
  br label %384

384:                                              ; preds = %383
  %385 = load i32, ptr %12, align 4, !tbaa !9
  %386 = add nsw i32 %385, 1
  store i32 %386, ptr %12, align 4, !tbaa !9
  br label %272, !llvm.loop !34

387:                                              ; preds = %272
  %388 = load i32, ptr %24, align 4, !tbaa !9
  %389 = load i32, ptr %25, align 4, !tbaa !9
  %390 = icmp ne i32 %388, %389
  br i1 %390, label %391, label %654

391:                                              ; preds = %387
  %392 = load i32, ptr %22, align 4, !tbaa !9
  %393 = icmp eq i32 %392, 1
  br i1 %393, label %394, label %406

394:                                              ; preds = %391
  %395 = load ptr, ptr %29, align 8, !tbaa !5
  %396 = load i32, ptr %25, align 4, !tbaa !9
  %397 = sext i32 %396 to i64
  %398 = getelementptr inbounds i32, ptr %395, i64 %397
  %399 = load i32, ptr %398, align 4, !tbaa !9
  %400 = load ptr, ptr %38, align 8, !tbaa !5
  %401 = load i32, ptr %8, align 4, !tbaa !9
  %402 = sext i32 %401 to i64
  %403 = getelementptr inbounds i32, ptr %400, i64 %402
  %404 = load i32, ptr %403, align 4, !tbaa !9
  %405 = add nsw i32 %404, %399
  store i32 %405, ptr %403, align 4, !tbaa !9
  br label %420

406:                                              ; preds = %391
  %407 = load i32, ptr %22, align 4, !tbaa !9
  %408 = load ptr, ptr %43, align 8, !tbaa !5
  %409 = load i32, ptr %25, align 4, !tbaa !9
  %410 = load i32, ptr %22, align 4, !tbaa !9
  %411 = mul nsw i32 %409, %410
  %412 = sext i32 %411 to i64
  %413 = getelementptr inbounds float, ptr %408, i64 %412
  %414 = load ptr, ptr %44, align 8, !tbaa !5
  %415 = load i32, ptr %8, align 4, !tbaa !9
  %416 = load i32, ptr %22, align 4, !tbaa !9
  %417 = mul nsw i32 %415, %416
  %418 = sext i32 %417 to i64
  %419 = getelementptr inbounds float, ptr %414, i64 %418
  call void @__saxpy(i32 noundef %407, float noundef 1.000000e+00, ptr noundef %413, i32 noundef 1, ptr noundef %419, i32 noundef 1)
  br label %420

420:                                              ; preds = %406, %394
  %421 = load i32, ptr %27, align 4, !tbaa !9
  %422 = icmp ne i32 %421, 0
  br i1 %422, label %423, label %435

423:                                              ; preds = %420
  %424 = load ptr, ptr %30, align 8, !tbaa !5
  %425 = load i32, ptr %25, align 4, !tbaa !9
  %426 = sext i32 %425 to i64
  %427 = getelementptr inbounds i32, ptr %424, i64 %426
  %428 = load i32, ptr %427, align 4, !tbaa !9
  %429 = load ptr, ptr %39, align 8, !tbaa !5
  %430 = load i32, ptr %8, align 4, !tbaa !9
  %431 = sext i32 %430 to i64
  %432 = getelementptr inbounds i32, ptr %429, i64 %431
  %433 = load i32, ptr %432, align 4, !tbaa !9
  %434 = add nsw i32 %433, %428
  store i32 %434, ptr %432, align 4, !tbaa !9
  br label %435

435:                                              ; preds = %423, %420
  %436 = load ptr, ptr %33, align 8, !tbaa !5
  %437 = load i32, ptr %25, align 4, !tbaa !9
  %438 = sext i32 %437 to i64
  %439 = getelementptr inbounds i32, ptr %436, i64 %438
  %440 = load i32, ptr %439, align 4, !tbaa !9
  %441 = load ptr, ptr %42, align 8, !tbaa !5
  %442 = load i32, ptr %8, align 4, !tbaa !9
  %443 = sext i32 %442 to i64
  %444 = getelementptr inbounds i32, ptr %441, i64 %443
  %445 = load i32, ptr %444, align 4, !tbaa !9
  %446 = add nsw i32 %445, %440
  store i32 %446, ptr %444, align 4, !tbaa !9
  %447 = load ptr, ptr %28, align 8, !tbaa !5
  %448 = load i32, ptr %25, align 4, !tbaa !9
  %449 = sext i32 %448 to i64
  %450 = getelementptr inbounds i32, ptr %447, i64 %449
  %451 = load i32, ptr %450, align 4, !tbaa !9
  store i32 %451, ptr %18, align 4, !tbaa !9
  %452 = load ptr, ptr %28, align 8, !tbaa !5
  %453 = load i32, ptr %25, align 4, !tbaa !9
  %454 = add nsw i32 %453, 1
  %455 = sext i32 %454 to i64
  %456 = getelementptr inbounds i32, ptr %452, i64 %455
  %457 = load i32, ptr %456, align 4, !tbaa !9
  store i32 %457, ptr %19, align 4, !tbaa !9
  %458 = load i32, ptr %18, align 4, !tbaa !9
  store i32 %458, ptr %12, align 4, !tbaa !9
  br label %459

459:                                              ; preds = %571, %435
  %460 = load i32, ptr %12, align 4, !tbaa !9
  %461 = load i32, ptr %19, align 4, !tbaa !9
  %462 = icmp slt i32 %460, %461
  br i1 %462, label %463, label %574

463:                                              ; preds = %459
  %464 = load ptr, ptr %34, align 8, !tbaa !5
  %465 = load i32, ptr %12, align 4, !tbaa !9
  %466 = sext i32 %465 to i64
  %467 = getelementptr inbounds i32, ptr %464, i64 %466
  %468 = load i32, ptr %467, align 4, !tbaa !9
  store i32 %468, ptr %14, align 4, !tbaa !9
  %469 = load i32, ptr %14, align 4, !tbaa !9
  %470 = load i32, ptr %26, align 4, !tbaa !9
  %471 = and i32 %469, %470
  store i32 %471, ptr %15, align 4, !tbaa !9
  %472 = load ptr, ptr %36, align 8, !tbaa !5
  %473 = load i32, ptr %15, align 4, !tbaa !9
  %474 = sext i32 %473 to i64
  %475 = getelementptr inbounds i32, ptr %472, i64 %474
  %476 = load i32, ptr %475, align 4, !tbaa !9
  store i32 %476, ptr %17, align 4, !tbaa !9
  %477 = icmp eq i32 %476, -1
  br i1 %477, label %478, label %499

478:                                              ; preds = %463
  %479 = load i32, ptr %14, align 4, !tbaa !9
  %480 = load ptr, ptr %40, align 8, !tbaa !5
  %481 = load i32, ptr %21, align 4, !tbaa !9
  %482 = sext i32 %481 to i64
  %483 = getelementptr inbounds i32, ptr %480, i64 %482
  store i32 %479, ptr %483, align 4, !tbaa !9
  %484 = load ptr, ptr %32, align 8, !tbaa !5
  %485 = load i32, ptr %12, align 4, !tbaa !9
  %486 = sext i32 %485 to i64
  %487 = getelementptr inbounds i32, ptr %484, i64 %486
  %488 = load i32, ptr %487, align 4, !tbaa !9
  %489 = load ptr, ptr %41, align 8, !tbaa !5
  %490 = load i32, ptr %21, align 4, !tbaa !9
  %491 = sext i32 %490 to i64
  %492 = getelementptr inbounds i32, ptr %489, i64 %491
  store i32 %488, ptr %492, align 4, !tbaa !9
  %493 = load i32, ptr %21, align 4, !tbaa !9
  %494 = add nsw i32 %493, 1
  store i32 %494, ptr %21, align 4, !tbaa !9
  %495 = load ptr, ptr %36, align 8, !tbaa !5
  %496 = load i32, ptr %15, align 4, !tbaa !9
  %497 = sext i32 %496 to i64
  %498 = getelementptr inbounds i32, ptr %495, i64 %497
  store i32 %493, ptr %498, align 4, !tbaa !9
  br label %570

499:                                              ; preds = %463
  %500 = load ptr, ptr %40, align 8, !tbaa !5
  %501 = load i32, ptr %17, align 4, !tbaa !9
  %502 = sext i32 %501 to i64
  %503 = getelementptr inbounds i32, ptr %500, i64 %502
  %504 = load i32, ptr %503, align 4, !tbaa !9
  %505 = load i32, ptr %14, align 4, !tbaa !9
  %506 = icmp eq i32 %504, %505
  br i1 %506, label %507, label %519

507:                                              ; preds = %499
  %508 = load ptr, ptr %32, align 8, !tbaa !5
  %509 = load i32, ptr %12, align 4, !tbaa !9
  %510 = sext i32 %509 to i64
  %511 = getelementptr inbounds i32, ptr %508, i64 %510
  %512 = load i32, ptr %511, align 4, !tbaa !9
  %513 = load ptr, ptr %41, align 8, !tbaa !5
  %514 = load i32, ptr %17, align 4, !tbaa !9
  %515 = sext i32 %514 to i64
  %516 = getelementptr inbounds i32, ptr %513, i64 %515
  %517 = load i32, ptr %516, align 4, !tbaa !9
  %518 = add nsw i32 %517, %512
  store i32 %518, ptr %516, align 4, !tbaa !9
  br label %569

519:                                              ; preds = %499
  store i32 0, ptr %13, align 4, !tbaa !9
  br label %520

520:                                              ; preds = %545, %519
  %521 = load i32, ptr %13, align 4, !tbaa !9
  %522 = load i32, ptr %21, align 4, !tbaa !9
  %523 = icmp slt i32 %521, %522
  br i1 %523, label %524, label %548

524:                                              ; preds = %520
  %525 = load ptr, ptr %40, align 8, !tbaa !5
  %526 = load i32, ptr %13, align 4, !tbaa !9
  %527 = sext i32 %526 to i64
  %528 = getelementptr inbounds i32, ptr %525, i64 %527
  %529 = load i32, ptr %528, align 4, !tbaa !9
  %530 = load i32, ptr %14, align 4, !tbaa !9
  %531 = icmp eq i32 %529, %530
  br i1 %531, label %532, label %544

532:                                              ; preds = %524
  %533 = load ptr, ptr %32, align 8, !tbaa !5
  %534 = load i32, ptr %12, align 4, !tbaa !9
  %535 = sext i32 %534 to i64
  %536 = getelementptr inbounds i32, ptr %533, i64 %535
  %537 = load i32, ptr %536, align 4, !tbaa !9
  %538 = load ptr, ptr %41, align 8, !tbaa !5
  %539 = load i32, ptr %13, align 4, !tbaa !9
  %540 = sext i32 %539 to i64
  %541 = getelementptr inbounds i32, ptr %538, i64 %540
  %542 = load i32, ptr %541, align 4, !tbaa !9
  %543 = add nsw i32 %542, %537
  store i32 %543, ptr %541, align 4, !tbaa !9
  br label %548

544:                                              ; preds = %524
  br label %545

545:                                              ; preds = %544
  %546 = load i32, ptr %13, align 4, !tbaa !9
  %547 = add nsw i32 %546, 1
  store i32 %547, ptr %13, align 4, !tbaa !9
  br label %520, !llvm.loop !35

548:                                              ; preds = %532, %520
  %549 = load i32, ptr %13, align 4, !tbaa !9
  %550 = load i32, ptr %21, align 4, !tbaa !9
  %551 = icmp eq i32 %549, %550
  br i1 %551, label %552, label %568

552:                                              ; preds = %548
  %553 = load i32, ptr %14, align 4, !tbaa !9
  %554 = load ptr, ptr %40, align 8, !tbaa !5
  %555 = load i32, ptr %21, align 4, !tbaa !9
  %556 = sext i32 %555 to i64
  %557 = getelementptr inbounds i32, ptr %554, i64 %556
  store i32 %553, ptr %557, align 4, !tbaa !9
  %558 = load ptr, ptr %32, align 8, !tbaa !5
  %559 = load i32, ptr %12, align 4, !tbaa !9
  %560 = sext i32 %559 to i64
  %561 = getelementptr inbounds i32, ptr %558, i64 %560
  %562 = load i32, ptr %561, align 4, !tbaa !9
  %563 = load ptr, ptr %41, align 8, !tbaa !5
  %564 = load i32, ptr %21, align 4, !tbaa !9
  %565 = add nsw i32 %564, 1
  store i32 %565, ptr %21, align 4, !tbaa !9
  %566 = sext i32 %564 to i64
  %567 = getelementptr inbounds i32, ptr %563, i64 %566
  store i32 %562, ptr %567, align 4, !tbaa !9
  br label %568

568:                                              ; preds = %552, %548
  br label %569

569:                                              ; preds = %568, %507
  br label %570

570:                                              ; preds = %569, %478
  br label %571

571:                                              ; preds = %570
  %572 = load i32, ptr %12, align 4, !tbaa !9
  %573 = add nsw i32 %572, 1
  store i32 %573, ptr %12, align 4, !tbaa !9
  br label %459, !llvm.loop !36

574:                                              ; preds = %459
  %575 = load ptr, ptr %36, align 8, !tbaa !5
  %576 = load i32, ptr %8, align 4, !tbaa !9
  %577 = load i32, ptr %26, align 4, !tbaa !9
  %578 = and i32 %576, %577
  %579 = sext i32 %578 to i64
  %580 = getelementptr inbounds i32, ptr %575, i64 %579
  %581 = load i32, ptr %580, align 4, !tbaa !9
  store i32 %581, ptr %13, align 4, !tbaa !9
  %582 = load i32, ptr %13, align 4, !tbaa !9
  %583 = icmp sge i32 %582, 0
  br i1 %583, label %584, label %611

584:                                              ; preds = %574
  %585 = load ptr, ptr %40, align 8, !tbaa !5
  %586 = load i32, ptr %13, align 4, !tbaa !9
  %587 = sext i32 %586 to i64
  %588 = getelementptr inbounds i32, ptr %585, i64 %587
  %589 = load i32, ptr %588, align 4, !tbaa !9
  %590 = load i32, ptr %8, align 4, !tbaa !9
  %591 = icmp ne i32 %589, %590
  br i1 %591, label %592, label %611

592:                                              ; preds = %584
  store i32 0, ptr %13, align 4, !tbaa !9
  br label %593

593:                                              ; preds = %607, %592
  %594 = load i32, ptr %13, align 4, !tbaa !9
  %595 = load i32, ptr %21, align 4, !tbaa !9
  %596 = icmp slt i32 %594, %595
  br i1 %596, label %597, label %610

597:                                              ; preds = %593
  %598 = load ptr, ptr %40, align 8, !tbaa !5
  %599 = load i32, ptr %13, align 4, !tbaa !9
  %600 = sext i32 %599 to i64
  %601 = getelementptr inbounds i32, ptr %598, i64 %600
  %602 = load i32, ptr %601, align 4, !tbaa !9
  %603 = load i32, ptr %8, align 4, !tbaa !9
  %604 = icmp eq i32 %602, %603
  br i1 %604, label %605, label %606

605:                                              ; preds = %597
  br label %610

606:                                              ; preds = %597
  br label %607

607:                                              ; preds = %606
  %608 = load i32, ptr %13, align 4, !tbaa !9
  %609 = add nsw i32 %608, 1
  store i32 %609, ptr %13, align 4, !tbaa !9
  br label %593, !llvm.loop !37

610:                                              ; preds = %605, %593
  br label %611

611:                                              ; preds = %610, %584, %574
  %612 = load i32, ptr %13, align 4, !tbaa !9
  %613 = icmp sge i32 %612, 0
  br i1 %613, label %614, label %653

614:                                              ; preds = %611
  %615 = load ptr, ptr %40, align 8, !tbaa !5
  %616 = load i32, ptr %13, align 4, !tbaa !9
  %617 = sext i32 %616 to i64
  %618 = getelementptr inbounds i32, ptr %615, i64 %617
  %619 = load i32, ptr %618, align 4, !tbaa !9
  %620 = load i32, ptr %8, align 4, !tbaa !9
  %621 = icmp eq i32 %619, %620
  br i1 %621, label %622, label %653

622:                                              ; preds = %614
  %623 = load ptr, ptr %41, align 8, !tbaa !5
  %624 = load i32, ptr %13, align 4, !tbaa !9
  %625 = sext i32 %624 to i64
  %626 = getelementptr inbounds i32, ptr %623, i64 %625
  %627 = load i32, ptr %626, align 4, !tbaa !9
  %628 = load ptr, ptr %42, align 8, !tbaa !5
  %629 = load i32, ptr %8, align 4, !tbaa !9
  %630 = sext i32 %629 to i64
  %631 = getelementptr inbounds i32, ptr %628, i64 %630
  %632 = load i32, ptr %631, align 4, !tbaa !9
  %633 = sub nsw i32 %632, %627
  store i32 %633, ptr %631, align 4, !tbaa !9
  %634 = load ptr, ptr %40, align 8, !tbaa !5
  %635 = load i32, ptr %21, align 4, !tbaa !9
  %636 = add nsw i32 %635, -1
  store i32 %636, ptr %21, align 4, !tbaa !9
  %637 = sext i32 %636 to i64
  %638 = getelementptr inbounds i32, ptr %634, i64 %637
  %639 = load i32, ptr %638, align 4, !tbaa !9
  %640 = load ptr, ptr %40, align 8, !tbaa !5
  %641 = load i32, ptr %13, align 4, !tbaa !9
  %642 = sext i32 %641 to i64
  %643 = getelementptr inbounds i32, ptr %640, i64 %642
  store i32 %639, ptr %643, align 4, !tbaa !9
  %644 = load ptr, ptr %41, align 8, !tbaa !5
  %645 = load i32, ptr %21, align 4, !tbaa !9
  %646 = sext i32 %645 to i64
  %647 = getelementptr inbounds i32, ptr %644, i64 %646
  %648 = load i32, ptr %647, align 4, !tbaa !9
  %649 = load ptr, ptr %41, align 8, !tbaa !5
  %650 = load i32, ptr %13, align 4, !tbaa !9
  %651 = sext i32 %650 to i64
  %652 = getelementptr inbounds i32, ptr %649, i64 %651
  store i32 %648, ptr %652, align 4, !tbaa !9
  br label %653

653:                                              ; preds = %622, %614, %611
  br label %654

654:                                              ; preds = %653, %387
  store i32 0, ptr %12, align 4, !tbaa !9
  br label %655

655:                                              ; preds = %670, %654
  %656 = load i32, ptr %12, align 4, !tbaa !9
  %657 = load i32, ptr %21, align 4, !tbaa !9
  %658 = icmp slt i32 %656, %657
  br i1 %658, label %659, label %673

659:                                              ; preds = %655
  %660 = load ptr, ptr %36, align 8, !tbaa !5
  %661 = load ptr, ptr %40, align 8, !tbaa !5
  %662 = load i32, ptr %12, align 4, !tbaa !9
  %663 = sext i32 %662 to i64
  %664 = getelementptr inbounds i32, ptr %661, i64 %663
  %665 = load i32, ptr %664, align 4, !tbaa !9
  %666 = load i32, ptr %26, align 4, !tbaa !9
  %667 = and i32 %665, %666
  %668 = sext i32 %667 to i64
  %669 = getelementptr inbounds i32, ptr %660, i64 %668
  store i32 -1, ptr %669, align 4, !tbaa !9
  br label %670

670:                                              ; preds = %659
  %671 = load i32, ptr %12, align 4, !tbaa !9
  %672 = add nsw i32 %671, 1
  store i32 %672, ptr %12, align 4, !tbaa !9
  br label %655, !llvm.loop !38

673:                                              ; preds = %655
  %674 = load ptr, ptr %36, align 8, !tbaa !5
  %675 = load i32, ptr %8, align 4, !tbaa !9
  %676 = load i32, ptr %26, align 4, !tbaa !9
  %677 = and i32 %675, %676
  %678 = sext i32 %677 to i64
  %679 = getelementptr inbounds i32, ptr %674, i64 %678
  store i32 -1, ptr %679, align 4, !tbaa !9
  %680 = load i32, ptr %21, align 4, !tbaa !9
  %681 = load i32, ptr %23, align 4, !tbaa !9
  %682 = add nsw i32 %681, %680
  store i32 %682, ptr %23, align 4, !tbaa !9
  %683 = load i32, ptr %23, align 4, !tbaa !9
  %684 = load ptr, ptr %37, align 8, !tbaa !5
  %685 = load i32, ptr %8, align 4, !tbaa !9
  %686 = add nsw i32 %685, 1
  store i32 %686, ptr %8, align 4, !tbaa !9
  %687 = sext i32 %686 to i64
  %688 = getelementptr inbounds i32, ptr %684, i64 %687
  store i32 %683, ptr %688, align 4, !tbaa !9
  %689 = load i32, ptr %21, align 4, !tbaa !9
  %690 = load ptr, ptr %40, align 8, !tbaa !5
  %691 = sext i32 %689 to i64
  %692 = getelementptr inbounds i32, ptr %690, i64 %691
  store ptr %692, ptr %40, align 8, !tbaa !5
  %693 = load i32, ptr %21, align 4, !tbaa !9
  %694 = load ptr, ptr %41, align 8, !tbaa !5
  %695 = sext i32 %693 to i64
  %696 = getelementptr inbounds i32, ptr %694, i64 %695
  store ptr %696, ptr %41, align 8, !tbaa !5
  br label %697

697:                                              ; preds = %673, %202
  %698 = load i32, ptr %11, align 4, !tbaa !9
  %699 = add nsw i32 %698, 1
  store i32 %699, ptr %11, align 4, !tbaa !9
  br label %185, !llvm.loop !39

700:                                              ; preds = %185
  %701 = load i32, ptr %23, align 4, !tbaa !9
  %702 = load ptr, ptr %45, align 8, !tbaa !5
  %703 = getelementptr inbounds %struct.graphdef, ptr %702, i32 0, i32 3
  store i32 %701, ptr %703, align 4, !tbaa !16
  %704 = load ptr, ptr %7, align 8, !tbaa !5
  %705 = load ptr, ptr %45, align 8, !tbaa !5
  %706 = load i32, ptr %27, align 4, !tbaa !9
  call void @__ReAdjustMemory(ptr noundef %704, ptr noundef %705, i32 noundef %706)
  %707 = load ptr, ptr %6, align 8, !tbaa !5
  %708 = getelementptr inbounds %struct.controldef, ptr %707, i32 0, i32 1
  %709 = load i32, ptr %708, align 4, !tbaa !19
  %710 = and i32 %709, 1
  %711 = icmp ne i32 %710, 0
  br i1 %711, label %712, label %718

712:                                              ; preds = %700
  %713 = call double @__seconds()
  %714 = load ptr, ptr %6, align 8, !tbaa !5
  %715 = getelementptr inbounds %struct.controldef, ptr %714, i32 0, i32 15
  %716 = load double, ptr %715, align 8, !tbaa !20
  %717 = fadd double %716, %713
  store double %717, ptr %715, align 8, !tbaa !20
  br label %718

718:                                              ; preds = %712, %700
  %719 = load ptr, ptr %6, align 8, !tbaa !5
  %720 = load i32, ptr %26, align 4, !tbaa !9
  %721 = add nsw i32 %720, 1
  call void @__idxwspacefree(ptr noundef %719, i32 noundef %721)
  store i32 0, ptr %46, align 4
  br label %722

722:                                              ; preds = %718, %66
  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 4, ptr %27) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #4
  %723 = load i32, ptr %46, align 4
  switch i32 %723, label %725 [
    i32 0, label %724
    i32 1, label %724
  ]

724:                                              ; preds = %722, %722
  ret void

725:                                              ; preds = %722
  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 @__CreateCoarseGraphNoMask(ptr noundef, ptr noundef, i32 noundef, ptr noundef, ptr noundef) #0

declare double @__seconds() #2

; Function Attrs: nounwind uwtable
declare dso_local ptr @__SetUpCoarseGraph(ptr noundef, i32 noundef, i32 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 @__idxset(i32 noundef, i32 noundef, ptr noundef) #2

declare ptr @__idxwspacemalloc(ptr noundef, i32 noundef) #2

declare void @__saxpy(i32 noundef, float noundef, ptr noundef, i32 noundef, ptr noundef, i32 noundef) #2

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

declare void @__idxwspacefree(ptr noundef, i32 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 = !{!"int", !7, i64 0}
!11 = !{!12, !10, i64 28}
!12 = !{!"controldef", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !13, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !14, i64 48, !15, i64 104, !15, i64 112, !15, i64 120, !15, i64 128, !15, i64 136, !15, i64 144, !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}
!13 = !{!"float", !7, i64 0}
!14 = !{!"workspacedef", !6, i64 0, !10, i64 8, !10, i64 12, !6, i64 16, !6, i64 24, !10, i64 32, !6, i64 40, !6, i64 48}
!15 = !{!"double", !7, i64 0}
!16 = !{!17, !10, i64 20}
!17 = !{!"graphdef", !6, i64 0, !6, i64 8, !10, i64 16, !10, i64 20, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !10, i64 88, !10, i64 92, !6, i64 96, !6, i64 104, !10, i64 112, !6, i64 120, !6, i64 128, !6, i64 136, !6, i64 144, !6, i64 152, !6, i64 160, !6, i64 168, !10, i64 176, !6, i64 184, !6, i64 192, !6, i64 200, !6, i64 208}
!18 = !{!17, !10, i64 16}
!19 = !{!12, !10, i64 4}
!20 = !{!12, !15, i64 128}
!21 = !{!17, !10, i64 176}
!22 = !{!17, !6, i64 24}
!23 = !{!17, !6, i64 32}
!24 = !{!17, !6, i64 40}
!25 = !{!17, !6, i64 184}
!26 = !{!17, !6, i64 48}
!27 = !{!17, !6, i64 56}
!28 = !{!17, !6, i64 64}
!29 = !{!17, !6, i64 80}
!30 = !{!12, !6, i64 88}
!31 = distinct !{!31, !32}
!32 = !{!"llvm.loop.mustprogress"}
!33 = distinct !{!33, !32}
!34 = distinct !{!34, !32}
!35 = distinct !{!35, !32}
!36 = distinct !{!36, !32}
!37 = distinct !{!37, !32}
!38 = distinct !{!38, !32}
!39 = distinct !{!39, !32}


; 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 @__CreateCoarseGraph(ptr noundef %0, ptr noundef %1, i32 noundef %2, ptr noundef %3, ptr noundef %4) local_unnamed_addr #0 {
  %6 = getelementptr inbounds i8, ptr %0, i64 28
  %7 = load i32, ptr %6, align 4, !tbaa !5
  %8 = icmp eq i32 %7, 6
  %9 = zext i1 %8 to i32
  %10 = icmp slt i32 %2, 16376
  br i1 %10, label %18, label %11

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

18:                                               ; preds = %11, %5
  tail call void @__CreateCoarseGraphNoMask(ptr noundef nonnull %0, ptr noundef %1, i32 noundef %2, ptr noundef %3, ptr noundef %4)
  br label %340

19:                                               ; preds = %11
  %20 = getelementptr inbounds i8, ptr %0, i64 4
  %21 = load i32, ptr %20, align 4, !tbaa !17
  %22 = and i32 %21, 1
  %.not = icmp eq i32 %22, 0
  br i1 %.not, label %28, label %23

23:                                               ; preds = %19
  %24 = tail call double @__seconds() #3
  %25 = getelementptr inbounds i8, ptr %0, i64 128
  %26 = load double, ptr %25, align 8, !tbaa !18
  %27 = fsub double %26, %24
  store double %27, ptr %25, align 8, !tbaa !18
  %.pre = load i32, ptr %14, align 8, !tbaa !16
  br label %28

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

.lr.ph.preheader:                                 ; preds = %28
  %wide.trip.count = zext nneg i32 %65 to i64
  %xtraiter = and i64 %wide.trip.count, 3
  %71 = icmp ult i32 %65, 4
  br i1 %71, label %._crit_edge.loopexit.unr-lcssa, label %.lr.ph.preheader.new

.lr.ph.preheader.new:                             ; preds = %.lr.ph.preheader
  %unroll_iter = and i64 %wide.trip.count, 2147483644
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph, %.lr.ph.preheader.new
  %indvars.iv = phi i64 [ 0, %.lr.ph.preheader.new ], [ %indvars.iv.next.3, %.lr.ph ]
  %niter = phi i64 [ 0, %.lr.ph.preheader.new ], [ %niter.next.3, %.lr.ph ]
  %72 = getelementptr inbounds i32, ptr %67, i64 %indvars.iv
  %73 = load i32, ptr %72, align 4, !tbaa !28
  %74 = sext i32 %73 to i64
  %75 = getelementptr inbounds i32, ptr %47, i64 %74
  %76 = load i32, ptr %75, align 4, !tbaa !28
  store i32 %76, ptr %72, align 4, !tbaa !28
  %indvars.iv.next = or disjoint i64 %indvars.iv, 1
  %77 = getelementptr inbounds i32, ptr %67, i64 %indvars.iv.next
  %78 = load i32, ptr %77, align 4, !tbaa !28
  %79 = sext i32 %78 to i64
  %80 = getelementptr inbounds i32, ptr %47, i64 %79
  %81 = load i32, ptr %80, align 4, !tbaa !28
  store i32 %81, ptr %77, align 4, !tbaa !28
  %indvars.iv.next.1 = or disjoint i64 %indvars.iv, 2
  %82 = getelementptr inbounds i32, ptr %67, i64 %indvars.iv.next.1
  %83 = load i32, ptr %82, align 4, !tbaa !28
  %84 = sext i32 %83 to i64
  %85 = getelementptr inbounds i32, ptr %47, i64 %84
  %86 = load i32, ptr %85, align 4, !tbaa !28
  store i32 %86, ptr %82, align 4, !tbaa !28
  %indvars.iv.next.2 = or disjoint i64 %indvars.iv, 3
  %87 = getelementptr inbounds i32, ptr %67, i64 %indvars.iv.next.2
  %88 = load i32, ptr %87, align 4, !tbaa !28
  %89 = sext i32 %88 to i64
  %90 = getelementptr inbounds i32, ptr %47, i64 %89
  %91 = load i32, ptr %90, align 4, !tbaa !28
  store i32 %91, ptr %87, align 4, !tbaa !28
  %indvars.iv.next.3 = add nuw nsw i64 %indvars.iv, 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 !30

._crit_edge.loopexit.unr-lcssa:                   ; preds = %.lr.ph, %.lr.ph.preheader
  %indvars.iv.unr = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next.3, %.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
  %indvars.iv.epil = phi i64 [ %indvars.iv.next.epil, %.lr.ph.epil ], [ %indvars.iv.unr, %._crit_edge.loopexit.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.lr.ph.epil ], [ 0, %._crit_edge.loopexit.unr-lcssa ]
  %92 = getelementptr inbounds i32, ptr %67, i64 %indvars.iv.epil
  %93 = load i32, ptr %92, align 4, !tbaa !28
  %94 = sext i32 %93 to i64
  %95 = getelementptr inbounds i32, ptr %47, i64 %94
  %96 = load i32, ptr %95, align 4, !tbaa !28
  store i32 %96, ptr %92, align 4, !tbaa !28
  %indvars.iv.next.epil = add nuw nsw i64 %indvars.iv.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 !32

._crit_edge:                                      ; preds = %._crit_edge.loopexit.unr-lcssa, %.lr.ph.epil, %28
  %97 = tail call ptr @__idxwspacemalloc(ptr noundef %0, i32 noundef 2048) #3
  %98 = tail call ptr @__idxset(i32 noundef 2048, i32 noundef -1, ptr noundef %97) #3
  store i32 0, ptr %50, align 4, !tbaa !28
  %99 = icmp sgt i32 %29, 0
  br i1 %99, label %.lr.ph337, label %._crit_edge338

.lr.ph337:                                        ; preds = %._crit_edge
  %100 = icmp eq i32 %31, 1
  %101 = sext i32 %31 to i64
  %102 = shl nsw i64 %101, 2
  %wide.trip.count381 = zext nneg i32 %29 to i64
  br label %103

103:                                              ; preds = %.lr.ph337, %330
  %indvars.iv378 = phi i64 [ 0, %.lr.ph337 ], [ %indvars.iv.next379, %330 ]
  %.0333 = phi i32 [ 0, %.lr.ph337 ], [ %.1, %330 ]
  %.0267331 = phi ptr [ %62, %.lr.ph337 ], [ %.1268, %330 ]
  %.0269330 = phi ptr [ %60, %.lr.ph337 ], [ %.1270, %330 ]
  %.0275329 = phi i32 [ 0, %.lr.ph337 ], [ %.1276, %330 ]
  %104 = getelementptr inbounds i32, ptr %4, i64 %indvars.iv378
  %105 = load i32, ptr %104, align 4, !tbaa !28
  %106 = sext i32 %105 to i64
  %107 = getelementptr inbounds i32, ptr %47, i64 %106
  %108 = load i32, ptr %107, align 4, !tbaa !28
  %.not288 = icmp eq i32 %108, %.0333
  br i1 %.not288, label %109, label %330

109:                                              ; preds = %103
  %110 = getelementptr inbounds i32, ptr %3, i64 %106
  %111 = load i32, ptr %110, align 4, !tbaa !28
  br i1 %100, label %112, label %117

112:                                              ; preds = %109
  %113 = getelementptr inbounds i32, ptr %35, i64 %106
  %114 = load i32, ptr %113, align 4, !tbaa !28
  %115 = sext i32 %.0333 to i64
  %116 = getelementptr inbounds i32, ptr %52, i64 %115
  store i32 %114, ptr %116, align 4, !tbaa !28
  br label %124

117:                                              ; preds = %109
  %118 = mul nsw i32 %.0333, %31
  %119 = sext i32 %118 to i64
  %120 = getelementptr inbounds float, ptr %56, i64 %119
  %121 = mul nsw i32 %105, %31
  %122 = sext i32 %121 to i64
  %123 = getelementptr inbounds float, ptr %39, i64 %122
  tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %120, ptr align 1 %123, i64 %102, i1 false)
  br label %124

124:                                              ; preds = %117, %112
  br i1 %8, label %125, label %._crit_edge384

._crit_edge384:                                   ; preds = %124
  %.pre385 = sext i32 %.0333 to i64
  br label %130

125:                                              ; preds = %124
  %126 = getelementptr inbounds i32, ptr %37, i64 %106
  %127 = load i32, ptr %126, align 4, !tbaa !28
  %128 = sext i32 %.0333 to i64
  %129 = getelementptr inbounds i32, ptr %54, i64 %128
  store i32 %127, ptr %129, align 4, !tbaa !28
  br label %130

130:                                              ; preds = %._crit_edge384, %125
  %.pre-phi = phi i64 [ %.pre385, %._crit_edge384 ], [ %128, %125 ]
  %131 = getelementptr inbounds i32, ptr %45, i64 %106
  %132 = load i32, ptr %131, align 4, !tbaa !28
  %133 = getelementptr inbounds i32, ptr %58, i64 %.pre-phi
  store i32 %132, ptr %133, align 4, !tbaa !28
  %134 = getelementptr inbounds i32, ptr %33, i64 %106
  %135 = load i32, ptr %134, align 4, !tbaa !28
  %136 = getelementptr i8, ptr %134, i64 4
  %137 = load i32, ptr %136, align 4, !tbaa !28
  %138 = icmp slt i32 %135, %137
  br i1 %138, label %.lr.ph309.preheader, label %._crit_edge310

.lr.ph309.preheader:                              ; preds = %130
  %139 = sext i32 %135 to i64
  %wide.trip.count356 = sext i32 %137 to i64
  br label %.lr.ph309

.lr.ph309:                                        ; preds = %.lr.ph309.preheader, %184
  %indvars.iv353 = phi i64 [ %139, %.lr.ph309.preheader ], [ %indvars.iv.next354, %184 ]
  %.0271306 = phi i32 [ 0, %.lr.ph309.preheader ], [ %.1272, %184 ]
  %140 = getelementptr inbounds i32, ptr %67, i64 %indvars.iv353
  %141 = load i32, ptr %140, align 4, !tbaa !28
  %142 = and i32 %141, 2047
  %143 = zext nneg i32 %142 to i64
  %144 = getelementptr inbounds i32, ptr %98, i64 %143
  %145 = load i32, ptr %144, align 4, !tbaa !28
  %146 = icmp eq i32 %145, -1
  br i1 %146, label %147, label %154

147:                                              ; preds = %.lr.ph309
  %148 = sext i32 %.0271306 to i64
  %149 = getelementptr inbounds i32, ptr %.0269330, i64 %148
  store i32 %141, ptr %149, align 4, !tbaa !28
  %150 = getelementptr inbounds i32, ptr %43, i64 %indvars.iv353
  %151 = load i32, ptr %150, align 4, !tbaa !28
  %152 = getelementptr inbounds i32, ptr %.0267331, i64 %148
  store i32 %151, ptr %152, align 4, !tbaa !28
  %153 = add nsw i32 %.0271306, 1
  store i32 %.0271306, ptr %144, align 4, !tbaa !28
  br label %184

154:                                              ; preds = %.lr.ph309
  %155 = sext i32 %145 to i64
  %156 = getelementptr inbounds i32, ptr %.0269330, i64 %155
  %157 = load i32, ptr %156, align 4, !tbaa !28
  %158 = icmp eq i32 %157, %141
  br i1 %158, label %160, label %.preheader295

.preheader295:                                    ; preds = %154
  %159 = icmp sgt i32 %.0271306, 0
  br i1 %159, label %.lr.ph305.preheader, label %.loopexit296

.lr.ph305.preheader:                              ; preds = %.preheader295
  %wide.trip.count351 = zext nneg i32 %.0271306 to i64
  br label %.lr.ph305

160:                                              ; preds = %154
  %161 = getelementptr inbounds i32, ptr %43, i64 %indvars.iv353
  %162 = load i32, ptr %161, align 4, !tbaa !28
  %163 = getelementptr inbounds i32, ptr %.0267331, i64 %155
  %164 = load i32, ptr %163, align 4, !tbaa !28
  %165 = add nsw i32 %164, %162
  store i32 %165, ptr %163, align 4, !tbaa !28
  br label %184

.lr.ph305:                                        ; preds = %.lr.ph305.preheader, %176
  %indvars.iv348 = phi i64 [ 0, %.lr.ph305.preheader ], [ %indvars.iv.next349, %176 ]
  %166 = getelementptr inbounds i32, ptr %.0269330, i64 %indvars.iv348
  %167 = load i32, ptr %166, align 4, !tbaa !28
  %168 = icmp eq i32 %167, %141
  br i1 %168, label %169, label %176

169:                                              ; preds = %.lr.ph305
  %170 = trunc nuw nsw i64 %indvars.iv348 to i32
  %171 = getelementptr inbounds i32, ptr %43, i64 %indvars.iv353
  %172 = load i32, ptr %171, align 4, !tbaa !28
  %173 = getelementptr inbounds i32, ptr %.0267331, i64 %indvars.iv348
  %174 = load i32, ptr %173, align 4, !tbaa !28
  %175 = add nsw i32 %174, %172
  store i32 %175, ptr %173, align 4, !tbaa !28
  br label %.loopexit296

176:                                              ; preds = %.lr.ph305
  %indvars.iv.next349 = add nuw nsw i64 %indvars.iv348, 1
  %exitcond352.not = icmp eq i64 %indvars.iv.next349, %wide.trip.count351
  br i1 %exitcond352.not, label %.loopexit296.thread, label %.lr.ph305, !llvm.loop !34

.loopexit296:                                     ; preds = %.preheader295, %169
  %.0264299 = phi i32 [ %170, %169 ], [ 0, %.preheader295 ]
  %177 = icmp eq i32 %.0264299, %.0271306
  br i1 %177, label %.loopexit296.thread, label %184

.loopexit296.thread:                              ; preds = %176, %.loopexit296
  %178 = sext i32 %.0271306 to i64
  %179 = getelementptr inbounds i32, ptr %.0269330, i64 %178
  store i32 %141, ptr %179, align 4, !tbaa !28
  %180 = getelementptr inbounds i32, ptr %43, i64 %indvars.iv353
  %181 = load i32, ptr %180, align 4, !tbaa !28
  %182 = add nsw i32 %.0271306, 1
  %183 = getelementptr inbounds i32, ptr %.0267331, i64 %178
  store i32 %181, ptr %183, align 4, !tbaa !28
  br label %184

184:                                              ; preds = %147, %.loopexit296, %.loopexit296.thread, %160
  %.1272 = phi i32 [ %153, %147 ], [ %.0271306, %160 ], [ %182, %.loopexit296.thread ], [ %.0271306, %.loopexit296 ]
  %indvars.iv.next354 = add nsw i64 %indvars.iv353, 1
  %exitcond357.not = icmp eq i64 %indvars.iv.next354, %wide.trip.count356
  br i1 %exitcond357.not, label %._crit_edge310, label %.lr.ph309, !llvm.loop !35

._crit_edge310:                                   ; preds = %184, %130
  %.0271.lcssa = phi i32 [ 0, %130 ], [ %.1272, %184 ]
  %.not289 = icmp eq i32 %105, %111
  br i1 %.not289, label %.thread293, label %185

185:                                              ; preds = %._crit_edge310
  br i1 %100, label %186, label %193

186:                                              ; preds = %185
  %187 = sext i32 %111 to i64
  %188 = getelementptr inbounds i32, ptr %35, i64 %187
  %189 = load i32, ptr %188, align 4, !tbaa !28
  %190 = getelementptr inbounds i32, ptr %52, i64 %.pre-phi
  %191 = load i32, ptr %190, align 4, !tbaa !28
  %192 = add nsw i32 %191, %189
  store i32 %192, ptr %190, align 4, !tbaa !28
  br label %200

193:                                              ; preds = %185
  %194 = mul nsw i32 %111, %31
  %195 = sext i32 %194 to i64
  %196 = getelementptr inbounds float, ptr %39, i64 %195
  %197 = mul nsw i32 %.0333, %31
  %198 = sext i32 %197 to i64
  %199 = getelementptr inbounds float, ptr %56, i64 %198
  tail call void @__saxpy(i32 noundef %31, float noundef 1.000000e+00, ptr noundef %196, i32 noundef 1, ptr noundef %199, i32 noundef 1) #3
  br label %200

200:                                              ; preds = %193, %186
  %201 = sext i32 %111 to i64
  br i1 %8, label %202, label %._crit_edge383

202:                                              ; preds = %200
  %203 = getelementptr inbounds i32, ptr %37, i64 %201
  %204 = load i32, ptr %203, align 4, !tbaa !28
  %205 = getelementptr inbounds i32, ptr %54, i64 %.pre-phi
  %206 = load i32, ptr %205, align 4, !tbaa !28
  %207 = add nsw i32 %206, %204
  store i32 %207, ptr %205, align 4, !tbaa !28
  br label %._crit_edge383

._crit_edge383:                                   ; preds = %200, %202
  %208 = getelementptr inbounds i32, ptr %45, i64 %201
  %209 = load i32, ptr %208, align 4, !tbaa !28
  %210 = load i32, ptr %133, align 4, !tbaa !28
  %211 = add nsw i32 %210, %209
  store i32 %211, ptr %133, align 4, !tbaa !28
  %212 = getelementptr inbounds i32, ptr %33, i64 %201
  %213 = load i32, ptr %212, align 4, !tbaa !28
  %214 = getelementptr i8, ptr %212, i64 4
  %215 = load i32, ptr %214, align 4, !tbaa !28
  %216 = icmp slt i32 %213, %215
  br i1 %216, label %.lr.ph318.preheader, label %._crit_edge319

.lr.ph318.preheader:                              ; preds = %._crit_edge383
  %217 = sext i32 %213 to i64
  %wide.trip.count366 = sext i32 %215 to i64
  br label %.lr.ph318

.lr.ph318:                                        ; preds = %.lr.ph318.preheader, %262
  %indvars.iv363 = phi i64 [ %217, %.lr.ph318.preheader ], [ %indvars.iv.next364, %262 ]
  %.2273315 = phi i32 [ %.0271.lcssa, %.lr.ph318.preheader ], [ %.3274, %262 ]
  %218 = getelementptr inbounds i32, ptr %67, i64 %indvars.iv363
  %219 = load i32, ptr %218, align 4, !tbaa !28
  %220 = and i32 %219, 2047
  %221 = zext nneg i32 %220 to i64
  %222 = getelementptr inbounds i32, ptr %98, i64 %221
  %223 = load i32, ptr %222, align 4, !tbaa !28
  %224 = icmp eq i32 %223, -1
  br i1 %224, label %225, label %232

225:                                              ; preds = %.lr.ph318
  %226 = sext i32 %.2273315 to i64
  %227 = getelementptr inbounds i32, ptr %.0269330, i64 %226
  store i32 %219, ptr %227, align 4, !tbaa !28
  %228 = getelementptr inbounds i32, ptr %43, i64 %indvars.iv363
  %229 = load i32, ptr %228, align 4, !tbaa !28
  %230 = getelementptr inbounds i32, ptr %.0267331, i64 %226
  store i32 %229, ptr %230, align 4, !tbaa !28
  %231 = add nsw i32 %.2273315, 1
  store i32 %.2273315, ptr %222, align 4, !tbaa !28
  br label %262

232:                                              ; preds = %.lr.ph318
  %233 = sext i32 %223 to i64
  %234 = getelementptr inbounds i32, ptr %.0269330, i64 %233
  %235 = load i32, ptr %234, align 4, !tbaa !28
  %236 = icmp eq i32 %235, %219
  br i1 %236, label %238, label %.preheader

.preheader:                                       ; preds = %232
  %237 = icmp sgt i32 %.2273315, 0
  br i1 %237, label %.lr.ph313.preheader, label %.loopexit

.lr.ph313.preheader:                              ; preds = %.preheader
  %wide.trip.count361 = zext nneg i32 %.2273315 to i64
  br label %.lr.ph313

238:                                              ; preds = %232
  %239 = getelementptr inbounds i32, ptr %43, i64 %indvars.iv363
  %240 = load i32, ptr %239, align 4, !tbaa !28
  %241 = getelementptr inbounds i32, ptr %.0267331, i64 %233
  %242 = load i32, ptr %241, align 4, !tbaa !28
  %243 = add nsw i32 %242, %240
  store i32 %243, ptr %241, align 4, !tbaa !28
  br label %262

.lr.ph313:                                        ; preds = %.lr.ph313.preheader, %254
  %indvars.iv358 = phi i64 [ 0, %.lr.ph313.preheader ], [ %indvars.iv.next359, %254 ]
  %244 = getelementptr inbounds i32, ptr %.0269330, i64 %indvars.iv358
  %245 = load i32, ptr %244, align 4, !tbaa !28
  %246 = icmp eq i32 %245, %219
  br i1 %246, label %247, label %254

247:                                              ; preds = %.lr.ph313
  %248 = trunc nuw nsw i64 %indvars.iv358 to i32
  %249 = getelementptr inbounds i32, ptr %43, i64 %indvars.iv363
  %250 = load i32, ptr %249, align 4, !tbaa !28
  %251 = getelementptr inbounds i32, ptr %.0267331, i64 %indvars.iv358
  %252 = load i32, ptr %251, align 4, !tbaa !28
  %253 = add nsw i32 %252, %250
  store i32 %253, ptr %251, align 4, !tbaa !28
  br label %.loopexit

254:                                              ; preds = %.lr.ph313
  %indvars.iv.next359 = add nuw nsw i64 %indvars.iv358, 1
  %exitcond362.not = icmp eq i64 %indvars.iv.next359, %wide.trip.count361
  br i1 %exitcond362.not, label %.loopexit.thread, label %.lr.ph313, !llvm.loop !36

.loopexit:                                        ; preds = %.preheader, %247
  %.1265301 = phi i32 [ %248, %247 ], [ 0, %.preheader ]
  %255 = icmp eq i32 %.1265301, %.2273315
  br i1 %255, label %.loopexit.thread, label %262

.loopexit.thread:                                 ; preds = %254, %.loopexit
  %256 = sext i32 %.2273315 to i64
  %257 = getelementptr inbounds i32, ptr %.0269330, i64 %256
  store i32 %219, ptr %257, align 4, !tbaa !28
  %258 = getelementptr inbounds i32, ptr %43, i64 %indvars.iv363
  %259 = load i32, ptr %258, align 4, !tbaa !28
  %260 = add nsw i32 %.2273315, 1
  %261 = getelementptr inbounds i32, ptr %.0267331, i64 %256
  store i32 %259, ptr %261, align 4, !tbaa !28
  br label %262

262:                                              ; preds = %225, %.loopexit, %.loopexit.thread, %238
  %.3274 = phi i32 [ %231, %225 ], [ %.2273315, %238 ], [ %260, %.loopexit.thread ], [ %.2273315, %.loopexit ]
  %indvars.iv.next364 = add nsw i64 %indvars.iv363, 1
  %exitcond367.not = icmp eq i64 %indvars.iv.next364, %wide.trip.count366
  br i1 %exitcond367.not, label %._crit_edge319, label %.lr.ph318, !llvm.loop !37

._crit_edge319:                                   ; preds = %262, %._crit_edge383
  %.2273.lcssa = phi i32 [ %.0271.lcssa, %._crit_edge383 ], [ %.3274, %262 ]
  %263 = and i32 %.0333, 2047
  %264 = zext nneg i32 %263 to i64
  %265 = getelementptr inbounds i32, ptr %98, i64 %264
  %266 = load i32, ptr %265, align 4, !tbaa !28
  %267 = icmp sgt i32 %266, -1
  br i1 %267, label %268, label %.thread293

268:                                              ; preds = %._crit_edge319
  %269 = zext nneg i32 %266 to i64
  %270 = getelementptr inbounds i32, ptr %.0269330, i64 %269
  %271 = load i32, ptr %270, align 4, !tbaa !28
  %.not290 = icmp eq i32 %271, %.0333
  br i1 %.not290, label %.thread, label %.preheader297

.preheader297:                                    ; preds = %268
  %272 = icmp sgt i32 %.2273.lcssa, 0
  br i1 %272, label %.lr.ph322.preheader, label %.thread

.lr.ph322.preheader:                              ; preds = %.preheader297
  %wide.trip.count371 = zext nneg i32 %.2273.lcssa to i64
  br label %.lr.ph322

.lr.ph322:                                        ; preds = %.lr.ph322.preheader, %276
  %indvars.iv368 = phi i64 [ 0, %.lr.ph322.preheader ], [ %indvars.iv.next369, %276 ]
  %273 = getelementptr inbounds i32, ptr %.0269330, i64 %indvars.iv368
  %274 = load i32, ptr %273, align 4, !tbaa !28
  %275 = icmp eq i32 %274, %.0333
  br i1 %275, label %.thread.loopexit.split.loop.exit, label %276

276:                                              ; preds = %.lr.ph322
  %indvars.iv.next369 = add nuw nsw i64 %indvars.iv368, 1
  %exitcond372.not = icmp eq i64 %indvars.iv.next369, %wide.trip.count371
  br i1 %exitcond372.not, label %.thread, label %.lr.ph322, !llvm.loop !38

.thread.loopexit.split.loop.exit:                 ; preds = %.lr.ph322
  %277 = trunc nuw nsw i64 %indvars.iv368 to i32
  br label %.thread

.thread:                                          ; preds = %276, %.thread.loopexit.split.loop.exit, %.preheader297, %268
  %.3292 = phi i32 [ %266, %268 ], [ 0, %.preheader297 ], [ %277, %.thread.loopexit.split.loop.exit ], [ %.2273.lcssa, %276 ]
  %278 = zext nneg i32 %.3292 to i64
  %279 = getelementptr inbounds i32, ptr %.0269330, i64 %278
  %280 = load i32, ptr %279, align 4, !tbaa !28
  %281 = icmp eq i32 %280, %.0333
  br i1 %281, label %282, label %.thread293

282:                                              ; preds = %.thread
  %283 = getelementptr inbounds i32, ptr %.0267331, i64 %278
  %284 = load i32, ptr %283, align 4, !tbaa !28
  %285 = load i32, ptr %133, align 4, !tbaa !28
  %286 = sub nsw i32 %285, %284
  store i32 %286, ptr %133, align 4, !tbaa !28
  %287 = add nsw i32 %.2273.lcssa, -1
  %288 = sext i32 %287 to i64
  %289 = getelementptr inbounds i32, ptr %.0269330, i64 %288
  %290 = load i32, ptr %289, align 4, !tbaa !28
  store i32 %290, ptr %279, align 4, !tbaa !28
  %291 = getelementptr inbounds i32, ptr %.0267331, i64 %288
  %292 = load i32, ptr %291, align 4, !tbaa !28
  store i32 %292, ptr %283, align 4, !tbaa !28
  br label %.thread293

.thread293:                                       ; preds = %._crit_edge319, %.thread, %282, %._crit_edge310
  %.4 = phi i32 [ %287, %282 ], [ %.2273.lcssa, %.thread ], [ %.0271.lcssa, %._crit_edge310 ], [ %.2273.lcssa, %._crit_edge319 ]
  %293 = icmp sgt i32 %.4, 0
  br i1 %293, label %.lr.ph327.preheader, label %._crit_edge328

.lr.ph327.preheader:                              ; preds = %.thread293
  %wide.trip.count376 = zext nneg i32 %.4 to i64
  %xtraiter400 = and i64 %wide.trip.count376, 3
  %294 = icmp ult i32 %.4, 4
  br i1 %294, label %._crit_edge328.loopexit.unr-lcssa, label %.lr.ph327.preheader.new

.lr.ph327.preheader.new:                          ; preds = %.lr.ph327.preheader
  %unroll_iter403 = and i64 %wide.trip.count376, 2147483644
  br label %.lr.ph327

.lr.ph327:                                        ; preds = %.lr.ph327, %.lr.ph327.preheader.new
  %indvars.iv373 = phi i64 [ 0, %.lr.ph327.preheader.new ], [ %indvars.iv.next374.3, %.lr.ph327 ]
  %niter404 = phi i64 [ 0, %.lr.ph327.preheader.new ], [ %niter404.next.3, %.lr.ph327 ]
  %295 = getelementptr inbounds i32, ptr %.0269330, i64 %indvars.iv373
  %296 = load i32, ptr %295, align 4, !tbaa !28
  %297 = and i32 %296, 2047
  %298 = zext nneg i32 %297 to i64
  %299 = getelementptr inbounds i32, ptr %98, i64 %298
  store i32 -1, ptr %299, align 4, !tbaa !28
  %indvars.iv.next374 = or disjoint i64 %indvars.iv373, 1
  %300 = getelementptr inbounds i32, ptr %.0269330, i64 %indvars.iv.next374
  %301 = load i32, ptr %300, align 4, !tbaa !28
  %302 = and i32 %301, 2047
  %303 = zext nneg i32 %302 to i64
  %304 = getelementptr inbounds i32, ptr %98, i64 %303
  store i32 -1, ptr %304, align 4, !tbaa !28
  %indvars.iv.next374.1 = or disjoint i64 %indvars.iv373, 2
  %305 = getelementptr inbounds i32, ptr %.0269330, i64 %indvars.iv.next374.1
  %306 = load i32, ptr %305, align 4, !tbaa !28
  %307 = and i32 %306, 2047
  %308 = zext nneg i32 %307 to i64
  %309 = getelementptr inbounds i32, ptr %98, i64 %308
  store i32 -1, ptr %309, align 4, !tbaa !28
  %indvars.iv.next374.2 = or disjoint i64 %indvars.iv373, 3
  %310 = getelementptr inbounds i32, ptr %.0269330, i64 %indvars.iv.next374.2
  %311 = load i32, ptr %310, align 4, !tbaa !28
  %312 = and i32 %311, 2047
  %313 = zext nneg i32 %312 to i64
  %314 = getelementptr inbounds i32, ptr %98, i64 %313
  store i32 -1, ptr %314, align 4, !tbaa !28
  %indvars.iv.next374.3 = add nuw nsw i64 %indvars.iv373, 4
  %niter404.next.3 = add i64 %niter404, 4
  %niter404.ncmp.3 = icmp eq i64 %niter404.next.3, %unroll_iter403
  br i1 %niter404.ncmp.3, label %._crit_edge328.loopexit.unr-lcssa, label %.lr.ph327, !llvm.loop !39

._crit_edge328.loopexit.unr-lcssa:                ; preds = %.lr.ph327, %.lr.ph327.preheader
  %indvars.iv373.unr = phi i64 [ 0, %.lr.ph327.preheader ], [ %indvars.iv.next374.3, %.lr.ph327 ]
  %lcmp.mod402.not = icmp eq i64 %xtraiter400, 0
  br i1 %lcmp.mod402.not, label %._crit_edge328, label %.lr.ph327.epil

.lr.ph327.epil:                                   ; preds = %._crit_edge328.loopexit.unr-lcssa, %.lr.ph327.epil
  %indvars.iv373.epil = phi i64 [ %indvars.iv.next374.epil, %.lr.ph327.epil ], [ %indvars.iv373.unr, %._crit_edge328.loopexit.unr-lcssa ]
  %epil.iter401 = phi i64 [ %epil.iter401.next, %.lr.ph327.epil ], [ 0, %._crit_edge328.loopexit.unr-lcssa ]
  %315 = getelementptr inbounds i32, ptr %.0269330, i64 %indvars.iv373.epil
  %316 = load i32, ptr %315, align 4, !tbaa !28
  %317 = and i32 %316, 2047
  %318 = zext nneg i32 %317 to i64
  %319 = getelementptr inbounds i32, ptr %98, i64 %318
  store i32 -1, ptr %319, align 4, !tbaa !28
  %indvars.iv.next374.epil = add nuw nsw i64 %indvars.iv373.epil, 1
  %epil.iter401.next = add i64 %epil.iter401, 1
  %epil.iter401.cmp.not = icmp eq i64 %epil.iter401.next, %xtraiter400
  br i1 %epil.iter401.cmp.not, label %._crit_edge328, label %.lr.ph327.epil, !llvm.loop !40

._crit_edge328:                                   ; preds = %._crit_edge328.loopexit.unr-lcssa, %.lr.ph327.epil, %.thread293
  %320 = and i32 %.0333, 2047
  %321 = zext nneg i32 %320 to i64
  %322 = getelementptr inbounds i32, ptr %98, i64 %321
  store i32 -1, ptr %322, align 4, !tbaa !28
  %323 = add nsw i32 %.4, %.0275329
  %324 = add nsw i32 %.0333, 1
  %325 = sext i32 %324 to i64
  %326 = getelementptr inbounds i32, ptr %50, i64 %325
  store i32 %323, ptr %326, align 4, !tbaa !28
  %327 = sext i32 %.4 to i64
  %328 = getelementptr inbounds i32, ptr %.0269330, i64 %327
  %329 = getelementptr inbounds i32, ptr %.0267331, i64 %327
  br label %330

330:                                              ; preds = %103, %._crit_edge328
  %.1276 = phi i32 [ %.0275329, %103 ], [ %323, %._crit_edge328 ]
  %.1270 = phi ptr [ %.0269330, %103 ], [ %328, %._crit_edge328 ]
  %.1268 = phi ptr [ %.0267331, %103 ], [ %329, %._crit_edge328 ]
  %.1 = phi i32 [ %.0333, %103 ], [ %324, %._crit_edge328 ]
  %indvars.iv.next379 = add nuw nsw i64 %indvars.iv378, 1
  %exitcond382.not = icmp eq i64 %indvars.iv.next379, %wide.trip.count381
  br i1 %exitcond382.not, label %._crit_edge338, label %103, !llvm.loop !41

._crit_edge338:                                   ; preds = %330, %._crit_edge
  %.0275.lcssa = phi i32 [ 0, %._crit_edge ], [ %.1276, %330 ]
  %331 = getelementptr inbounds i8, ptr %48, i64 20
  store i32 %.0275.lcssa, ptr %331, align 4, !tbaa !14
  tail call void @__ReAdjustMemory(ptr noundef %1, ptr noundef %48, i32 noundef %9)
  %332 = load i32, ptr %20, align 4, !tbaa !17
  %333 = and i32 %332, 1
  %.not287 = icmp eq i32 %333, 0
  br i1 %.not287, label %339, label %334

334:                                              ; preds = %._crit_edge338
  %335 = tail call double @__seconds() #3
  %336 = getelementptr inbounds i8, ptr %0, i64 128
  %337 = load double, ptr %336, align 8, !tbaa !18
  %338 = fadd double %335, %337
  store double %338, ptr %336, align 8, !tbaa !18
  br label %339

339:                                              ; preds = %334, %._crit_edge338
  tail call void @__idxwspacefree(ptr noundef nonnull %0, i32 noundef 2048) #3
  br label %340

340:                                              ; preds = %339, %18
  ret void
}

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

declare double @__seconds() local_unnamed_addr #1

; Function Attrs: nounwind uwtable
declare dso_local ptr @__SetUpCoarseGraph(ptr noundef, i32 noundef, i32 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 @__idxset(i32 noundef, i32 noundef, ptr noundef) local_unnamed_addr #1

declare ptr @__idxwspacemalloc(ptr noundef, i32 noundef) local_unnamed_addr #1

declare void @__saxpy(i32 noundef, float noundef, ptr noundef, i32 noundef, ptr noundef, i32 noundef) local_unnamed_addr #1

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

declare void @__idxwspacefree(ptr noundef, i32 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 28}
!6 = !{!"controldef", !7, i64 0, !7, i64 4, !7, i64 8, !7, i64 12, !7, i64 16, !7, i64 20, !10, i64 24, !7, i64 28, !7, i64 32, !7, i64 36, !7, i64 40, !11, i64 48, !13, i64 104, !13, i64 112, !13, i64 120, !13, i64 128, !13, i64 136, !13, i64 144, !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}
!7 = !{!"int", !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 12, !12, i64 16, !12, i64 24, !7, i64 32, !12, i64 40, !12, i64 48}
!12 = !{!"any pointer", !8, i64 0}
!13 = !{!"double", !8, i64 0}
!14 = !{!15, !7, i64 20}
!15 = !{!"graphdef", !12, i64 0, !12, i64 8, !7, i64 16, !7, i64 20, !12, i64 24, !12, i64 32, !12, i64 40, !12, i64 48, !12, i64 56, !12, i64 64, !12, i64 72, !12, i64 80, !7, i64 88, !7, i64 92, !12, i64 96, !12, i64 104, !7, i64 112, !12, i64 120, !12, i64 128, !12, i64 136, !12, i64 144, !12, i64 152, !12, i64 160, !12, i64 168, !7, i64 176, !12, i64 184, !12, i64 192, !12, i64 200, !12, i64 208}
!16 = !{!15, !7, i64 16}
!17 = !{!6, !7, i64 4}
!18 = !{!6, !13, i64 128}
!19 = !{!15, !7, i64 176}
!20 = !{!15, !12, i64 24}
!21 = !{!15, !12, i64 32}
!22 = !{!15, !12, i64 40}
!23 = !{!15, !12, i64 184}
!24 = !{!15, !12, i64 48}
!25 = !{!15, !12, i64 56}
!26 = !{!15, !12, i64 64}
!27 = !{!15, !12, i64 80}
!28 = !{!7, !7, i64 0}
!29 = !{!6, !12, i64 88}
!30 = distinct !{!30, !31}
!31 = !{!"llvm.loop.mustprogress"}
!32 = distinct !{!32, !33}
!33 = !{!"llvm.loop.unroll.disable"}
!34 = distinct !{!34, !31}
!35 = distinct !{!35, !31}
!36 = distinct !{!36, !31}
!37 = distinct !{!37, !31}
!38 = distinct !{!38, !31}
!39 = distinct !{!39, !31}
!40 = distinct !{!40, !33}
!41 = distinct !{!41, !31}


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