; LLVM IR from siconos/siconos :: externals/lbl/metis4/ccgraph.ll_ (CreateCoarseGraphNoMask)

; 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: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #0

; Function Attrs: nounwind uwtable
define dso_local void @__CreateCoarseGraphNoMask(ptr noundef %0, ptr noundef %1, i32 noundef %2, ptr noundef %3, ptr noundef %4) #1 {
  %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 ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca ptr, 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
  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 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
  %42 = load ptr, ptr %6, align 8, !tbaa !5
  %43 = getelementptr inbounds %struct.controldef, ptr %42, i32 0, i32 7
  %44 = load i32, ptr %43, align 4, !tbaa !11
  %45 = icmp eq i32 %44, 6
  %46 = zext i1 %45 to i64
  %47 = select i1 %45, i32 1, i32 0
  store i32 %47, ptr %23, align 4, !tbaa !9
  %48 = load ptr, ptr %6, align 8, !tbaa !5
  %49 = getelementptr inbounds %struct.controldef, ptr %48, i32 0, i32 1
  %50 = load i32, ptr %49, align 4, !tbaa !16
  %51 = and i32 %50, 1
  %52 = icmp ne i32 %51, 0
  br i1 %52, label %53, label %59

53:                                               ; preds = %5
  %54 = call double @__seconds()
  %55 = load ptr, ptr %6, align 8, !tbaa !5
  %56 = getelementptr inbounds %struct.controldef, ptr %55, i32 0, i32 15
  %57 = load double, ptr %56, align 8, !tbaa !17
  %58 = fsub double %57, %54
  store double %58, ptr %56, align 8, !tbaa !17
  br label %59

59:                                               ; preds = %53, %5
  %60 = load ptr, ptr %7, align 8, !tbaa !5
  %61 = getelementptr inbounds %struct.graphdef, ptr %60, i32 0, i32 2
  %62 = load i32, ptr %61, align 8, !tbaa !18
  store i32 %62, ptr %17, align 4, !tbaa !9
  %63 = load ptr, ptr %7, align 8, !tbaa !5
  %64 = getelementptr inbounds %struct.graphdef, ptr %63, i32 0, i32 24
  %65 = load i32, ptr %64, align 8, !tbaa !20
  store i32 %65, ptr %19, align 4, !tbaa !9
  %66 = load ptr, ptr %7, align 8, !tbaa !5
  %67 = getelementptr inbounds %struct.graphdef, ptr %66, i32 0, i32 4
  %68 = load ptr, ptr %67, align 8, !tbaa !21
  store ptr %68, ptr %24, align 8, !tbaa !5
  %69 = load ptr, ptr %7, align 8, !tbaa !5
  %70 = getelementptr inbounds %struct.graphdef, ptr %69, i32 0, i32 5
  %71 = load ptr, ptr %70, align 8, !tbaa !22
  store ptr %71, ptr %25, align 8, !tbaa !5
  %72 = load ptr, ptr %7, align 8, !tbaa !5
  %73 = getelementptr inbounds %struct.graphdef, ptr %72, i32 0, i32 6
  %74 = load ptr, ptr %73, align 8, !tbaa !23
  store ptr %74, ptr %26, align 8, !tbaa !5
  %75 = load ptr, ptr %7, align 8, !tbaa !5
  %76 = getelementptr inbounds %struct.graphdef, ptr %75, i32 0, i32 25
  %77 = load ptr, ptr %76, align 8, !tbaa !24
  store ptr %77, ptr %39, align 8, !tbaa !5
  %78 = load ptr, ptr %7, align 8, !tbaa !5
  %79 = getelementptr inbounds %struct.graphdef, ptr %78, i32 0, i32 7
  %80 = load ptr, ptr %79, align 8, !tbaa !25
  store ptr %80, ptr %27, align 8, !tbaa !5
  %81 = load ptr, ptr %7, align 8, !tbaa !5
  %82 = getelementptr inbounds %struct.graphdef, ptr %81, i32 0, i32 8
  %83 = load ptr, ptr %82, align 8, !tbaa !26
  store ptr %83, ptr %28, align 8, !tbaa !5
  %84 = load ptr, ptr %7, align 8, !tbaa !5
  %85 = getelementptr inbounds %struct.graphdef, ptr %84, i32 0, i32 9
  %86 = load ptr, ptr %85, align 8, !tbaa !27
  store ptr %86, ptr %29, align 8, !tbaa !5
  %87 = load ptr, ptr %7, align 8, !tbaa !5
  %88 = getelementptr inbounds %struct.graphdef, ptr %87, i32 0, i32 11
  %89 = load ptr, ptr %88, align 8, !tbaa !28
  store ptr %89, ptr %31, align 8, !tbaa !5
  %90 = load ptr, ptr %7, align 8, !tbaa !5
  %91 = load i32, ptr %8, align 4, !tbaa !9
  %92 = load i32, ptr %23, align 4, !tbaa !9
  %93 = call ptr @__SetUpCoarseGraph(ptr noundef %90, i32 noundef %91, i32 noundef %92)
  store ptr %93, ptr %41, align 8, !tbaa !5
  %94 = load ptr, ptr %41, align 8, !tbaa !5
  %95 = getelementptr inbounds %struct.graphdef, ptr %94, i32 0, i32 4
  %96 = load ptr, ptr %95, align 8, !tbaa !21
  store ptr %96, ptr %33, align 8, !tbaa !5
  %97 = load ptr, ptr %41, align 8, !tbaa !5
  %98 = getelementptr inbounds %struct.graphdef, ptr %97, i32 0, i32 5
  %99 = load ptr, ptr %98, align 8, !tbaa !22
  store ptr %99, ptr %34, align 8, !tbaa !5
  %100 = load ptr, ptr %41, align 8, !tbaa !5
  %101 = getelementptr inbounds %struct.graphdef, ptr %100, i32 0, i32 6
  %102 = load ptr, ptr %101, align 8, !tbaa !23
  store ptr %102, ptr %35, align 8, !tbaa !5
  %103 = load ptr, ptr %41, align 8, !tbaa !5
  %104 = getelementptr inbounds %struct.graphdef, ptr %103, i32 0, i32 25
  %105 = load ptr, ptr %104, align 8, !tbaa !24
  store ptr %105, ptr %40, align 8, !tbaa !5
  %106 = load ptr, ptr %41, align 8, !tbaa !5
  %107 = getelementptr inbounds %struct.graphdef, ptr %106, i32 0, i32 9
  %108 = load ptr, ptr %107, align 8, !tbaa !27
  store ptr %108, ptr %38, align 8, !tbaa !5
  %109 = load ptr, ptr %41, align 8, !tbaa !5
  %110 = getelementptr inbounds %struct.graphdef, ptr %109, i32 0, i32 7
  %111 = load ptr, ptr %110, align 8, !tbaa !25
  store ptr %111, ptr %36, align 8, !tbaa !5
  %112 = load ptr, ptr %41, align 8, !tbaa !5
  %113 = getelementptr inbounds %struct.graphdef, ptr %112, i32 0, i32 8
  %114 = load ptr, ptr %113, align 8, !tbaa !26
  store ptr %114, ptr %37, align 8, !tbaa !5
  %115 = load i32, ptr %8, align 4, !tbaa !9
  %116 = load ptr, ptr %6, align 8, !tbaa !5
  %117 = load i32, ptr %8, align 4, !tbaa !9
  %118 = call ptr @__idxwspacemalloc(ptr noundef %116, i32 noundef %117)
  %119 = call ptr @__idxset(i32 noundef %115, i32 noundef -1, ptr noundef %118)
  store ptr %119, ptr %32, align 8, !tbaa !5
  %120 = load ptr, ptr %24, align 8, !tbaa !5
  %121 = load i32, ptr %17, align 4, !tbaa !9
  %122 = sext i32 %121 to i64
  %123 = getelementptr inbounds i32, ptr %120, i64 %122
  %124 = load i32, ptr %123, align 4, !tbaa !9
  store i32 %124, ptr %16, align 4, !tbaa !9
  %125 = load ptr, ptr %6, align 8, !tbaa !5
  %126 = getelementptr inbounds %struct.controldef, ptr %125, i32 0, i32 11
  %127 = getelementptr inbounds %struct.workspacedef, ptr %126, i32 0, i32 6
  %128 = load ptr, ptr %127, align 8, !tbaa !29
  store ptr %128, ptr %30, align 8, !tbaa !5
  %129 = load ptr, ptr %30, align 8, !tbaa !5
  %130 = load ptr, ptr %27, align 8, !tbaa !5
  %131 = load i32, ptr %16, align 4, !tbaa !9
  %132 = sext i32 %131 to i64
  %133 = mul i64 %132, 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %129, ptr align 4 %130, i64 %133, i1 false)
  store i32 0, ptr %11, align 4, !tbaa !9
  br label %134

134:                                              ; preds = %152, %59
  %135 = load i32, ptr %11, align 4, !tbaa !9
  %136 = load i32, ptr %16, align 4, !tbaa !9
  %137 = icmp slt i32 %135, %136
  br i1 %137, label %138, label %155

138:                                              ; preds = %134
  %139 = load ptr, ptr %31, align 8, !tbaa !5
  %140 = load ptr, ptr %30, align 8, !tbaa !5
  %141 = load i32, ptr %11, 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
  %145 = sext i32 %144 to i64
  %146 = getelementptr inbounds i32, ptr %139, i64 %145
  %147 = load i32, ptr %146, align 4, !tbaa !9
  %148 = load ptr, ptr %30, align 8, !tbaa !5
  %149 = load i32, ptr %11, align 4, !tbaa !9
  %150 = sext i32 %149 to i64
  %151 = getelementptr inbounds i32, ptr %148, i64 %150
  store i32 %147, ptr %151, align 4, !tbaa !9
  br label %152

152:                                              ; preds = %138
  %153 = load i32, ptr %11, align 4, !tbaa !9
  %154 = add nsw i32 %153, 1
  store i32 %154, ptr %11, align 4, !tbaa !9
  br label %134, !llvm.loop !30

155:                                              ; preds = %134
  store i32 0, ptr %20, align 4, !tbaa !9
  store i32 0, ptr %8, align 4, !tbaa !9
  %156 = load ptr, ptr %33, align 8, !tbaa !5
  %157 = getelementptr inbounds i32, ptr %156, i64 0
  store i32 0, ptr %157, align 4, !tbaa !9
  store i32 0, ptr %11, align 4, !tbaa !9
  br label %158

158:                                              ; preds = %501, %155
  %159 = load i32, ptr %11, align 4, !tbaa !9
  %160 = load i32, ptr %17, align 4, !tbaa !9
  %161 = icmp slt i32 %159, %160
  br i1 %161, label %162, label %504

162:                                              ; preds = %158
  %163 = load ptr, ptr %10, align 8, !tbaa !5
  %164 = load i32, ptr %11, align 4, !tbaa !9
  %165 = sext i32 %164 to i64
  %166 = getelementptr inbounds i32, ptr %163, i64 %165
  %167 = load i32, ptr %166, align 4, !tbaa !9
  store i32 %167, ptr %21, align 4, !tbaa !9
  %168 = load ptr, ptr %31, align 8, !tbaa !5
  %169 = load i32, ptr %21, align 4, !tbaa !9
  %170 = sext i32 %169 to i64
  %171 = getelementptr inbounds i32, ptr %168, i64 %170
  %172 = load i32, ptr %171, align 4, !tbaa !9
  %173 = load i32, ptr %8, align 4, !tbaa !9
  %174 = icmp ne i32 %172, %173
  br i1 %174, label %175, label %176

175:                                              ; preds = %162
  br label %501

176:                                              ; preds = %162
  %177 = load ptr, ptr %9, align 8, !tbaa !5
  %178 = load i32, ptr %21, align 4, !tbaa !9
  %179 = sext i32 %178 to i64
  %180 = getelementptr inbounds i32, ptr %177, i64 %179
  %181 = load i32, ptr %180, align 4, !tbaa !9
  store i32 %181, ptr %22, align 4, !tbaa !9
  %182 = load i32, ptr %19, align 4, !tbaa !9
  %183 = icmp eq i32 %182, 1
  br i1 %183, label %184, label %194

184:                                              ; preds = %176
  %185 = load ptr, ptr %25, align 8, !tbaa !5
  %186 = load i32, ptr %21, align 4, !tbaa !9
  %187 = sext i32 %186 to i64
  %188 = getelementptr inbounds i32, ptr %185, i64 %187
  %189 = load i32, ptr %188, align 4, !tbaa !9
  %190 = load ptr, ptr %34, align 8, !tbaa !5
  %191 = load i32, ptr %8, align 4, !tbaa !9
  %192 = sext i32 %191 to i64
  %193 = getelementptr inbounds i32, ptr %190, i64 %192
  store i32 %189, ptr %193, align 4, !tbaa !9
  br label %210

194:                                              ; preds = %176
  %195 = load ptr, ptr %40, align 8, !tbaa !5
  %196 = load i32, ptr %8, align 4, !tbaa !9
  %197 = load i32, ptr %19, align 4, !tbaa !9
  %198 = mul nsw i32 %196, %197
  %199 = sext i32 %198 to i64
  %200 = getelementptr inbounds float, ptr %195, i64 %199
  %201 = load ptr, ptr %39, align 8, !tbaa !5
  %202 = load i32, ptr %21, align 4, !tbaa !9
  %203 = load i32, ptr %19, align 4, !tbaa !9
  %204 = mul nsw i32 %202, %203
  %205 = sext i32 %204 to i64
  %206 = getelementptr inbounds float, ptr %201, i64 %205
  %207 = load i32, ptr %19, align 4, !tbaa !9
  %208 = sext i32 %207 to i64
  %209 = mul i64 4, %208
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %200, ptr align 1 %206, i64 %209, i1 false)
  br label %210

210:                                              ; preds = %194, %184
  %211 = load i32, ptr %23, align 4, !tbaa !9
  %212 = icmp ne i32 %211, 0
  br i1 %212, label %213, label %223

213:                                              ; preds = %210
  %214 = load ptr, ptr %26, align 8, !tbaa !5
  %215 = load i32, ptr %21, align 4, !tbaa !9
  %216 = sext i32 %215 to i64
  %217 = getelementptr inbounds i32, ptr %214, i64 %216
  %218 = load i32, ptr %217, align 4, !tbaa !9
  %219 = load ptr, ptr %35, align 8, !tbaa !5
  %220 = load i32, ptr %8, align 4, !tbaa !9
  %221 = sext i32 %220 to i64
  %222 = getelementptr inbounds i32, ptr %219, i64 %221
  store i32 %218, ptr %222, align 4, !tbaa !9
  br label %223

223:                                              ; preds = %213, %210
  %224 = load ptr, ptr %29, align 8, !tbaa !5
  %225 = load i32, ptr %21, align 4, !tbaa !9
  %226 = sext i32 %225 to i64
  %227 = getelementptr inbounds i32, ptr %224, i64 %226
  %228 = load i32, ptr %227, align 4, !tbaa !9
  %229 = load ptr, ptr %38, align 8, !tbaa !5
  %230 = load i32, ptr %8, align 4, !tbaa !9
  %231 = sext i32 %230 to i64
  %232 = getelementptr inbounds i32, ptr %229, i64 %231
  store i32 %228, ptr %232, align 4, !tbaa !9
  store i32 0, ptr %18, align 4, !tbaa !9
  %233 = load ptr, ptr %24, align 8, !tbaa !5
  %234 = load i32, ptr %21, align 4, !tbaa !9
  %235 = sext i32 %234 to i64
  %236 = getelementptr inbounds i32, ptr %233, i64 %235
  %237 = load i32, ptr %236, align 4, !tbaa !9
  store i32 %237, ptr %15, align 4, !tbaa !9
  %238 = load ptr, ptr %24, align 8, !tbaa !5
  %239 = load i32, ptr %21, align 4, !tbaa !9
  %240 = add nsw i32 %239, 1
  %241 = sext i32 %240 to i64
  %242 = getelementptr inbounds i32, ptr %238, i64 %241
  %243 = load i32, ptr %242, align 4, !tbaa !9
  store i32 %243, ptr %16, align 4, !tbaa !9
  %244 = load i32, ptr %15, align 4, !tbaa !9
  store i32 %244, ptr %12, align 4, !tbaa !9
  br label %245

245:                                              ; preds = %295, %223
  %246 = load i32, ptr %12, align 4, !tbaa !9
  %247 = load i32, ptr %16, align 4, !tbaa !9
  %248 = icmp slt i32 %246, %247
  br i1 %248, label %249, label %298

249:                                              ; preds = %245
  %250 = load ptr, ptr %30, align 8, !tbaa !5
  %251 = load i32, ptr %12, align 4, !tbaa !9
  %252 = sext i32 %251 to i64
  %253 = getelementptr inbounds i32, ptr %250, i64 %252
  %254 = load i32, ptr %253, align 4, !tbaa !9
  store i32 %254, ptr %13, align 4, !tbaa !9
  %255 = load ptr, ptr %32, align 8, !tbaa !5
  %256 = load i32, ptr %13, align 4, !tbaa !9
  %257 = sext i32 %256 to i64
  %258 = getelementptr inbounds i32, ptr %255, i64 %257
  %259 = load i32, ptr %258, align 4, !tbaa !9
  store i32 %259, ptr %14, align 4, !tbaa !9
  %260 = icmp eq i32 %259, -1
  br i1 %260, label %261, label %282

261:                                              ; preds = %249
  %262 = load i32, ptr %13, align 4, !tbaa !9
  %263 = load ptr, ptr %36, align 8, !tbaa !5
  %264 = load i32, ptr %18, align 4, !tbaa !9
  %265 = sext i32 %264 to i64
  %266 = getelementptr inbounds i32, ptr %263, i64 %265
  store i32 %262, ptr %266, align 4, !tbaa !9
  %267 = load ptr, ptr %28, align 8, !tbaa !5
  %268 = load i32, ptr %12, align 4, !tbaa !9
  %269 = sext i32 %268 to i64
  %270 = getelementptr inbounds i32, ptr %267, i64 %269
  %271 = load i32, ptr %270, align 4, !tbaa !9
  %272 = load ptr, ptr %37, align 8, !tbaa !5
  %273 = load i32, ptr %18, align 4, !tbaa !9
  %274 = sext i32 %273 to i64
  %275 = getelementptr inbounds i32, ptr %272, i64 %274
  store i32 %271, ptr %275, align 4, !tbaa !9
  %276 = load i32, ptr %18, align 4, !tbaa !9
  %277 = add nsw i32 %276, 1
  store i32 %277, ptr %18, align 4, !tbaa !9
  %278 = load ptr, ptr %32, align 8, !tbaa !5
  %279 = load i32, ptr %13, align 4, !tbaa !9
  %280 = sext i32 %279 to i64
  %281 = getelementptr inbounds i32, ptr %278, i64 %280
  store i32 %276, ptr %281, align 4, !tbaa !9
  br label %294

282:                                              ; preds = %249
  %283 = load ptr, ptr %28, align 8, !tbaa !5
  %284 = load i32, ptr %12, align 4, !tbaa !9
  %285 = sext i32 %284 to i64
  %286 = getelementptr inbounds i32, ptr %283, i64 %285
  %287 = load i32, ptr %286, align 4, !tbaa !9
  %288 = load ptr, ptr %37, align 8, !tbaa !5
  %289 = load i32, ptr %14, align 4, !tbaa !9
  %290 = sext i32 %289 to i64
  %291 = getelementptr inbounds i32, ptr %288, i64 %290
  %292 = load i32, ptr %291, align 4, !tbaa !9
  %293 = add nsw i32 %292, %287
  store i32 %293, ptr %291, align 4, !tbaa !9
  br label %294

294:                                              ; preds = %282, %261
  br label %295

295:                                              ; preds = %294
  %296 = load i32, ptr %12, align 4, !tbaa !9
  %297 = add nsw i32 %296, 1
  store i32 %297, ptr %12, align 4, !tbaa !9
  br label %245, !llvm.loop !32

298:                                              ; preds = %245
  %299 = load i32, ptr %21, align 4, !tbaa !9
  %300 = load i32, ptr %22, align 4, !tbaa !9
  %301 = icmp ne i32 %299, %300
  br i1 %301, label %302, label %466

302:                                              ; preds = %298
  %303 = load i32, ptr %19, align 4, !tbaa !9
  %304 = icmp eq i32 %303, 1
  br i1 %304, label %305, label %317

305:                                              ; preds = %302
  %306 = load ptr, ptr %25, align 8, !tbaa !5
  %307 = load i32, ptr %22, align 4, !tbaa !9
  %308 = sext i32 %307 to i64
  %309 = getelementptr inbounds i32, ptr %306, i64 %308
  %310 = load i32, ptr %309, align 4, !tbaa !9
  %311 = load ptr, ptr %34, align 8, !tbaa !5
  %312 = load i32, ptr %8, align 4, !tbaa !9
  %313 = sext i32 %312 to i64
  %314 = getelementptr inbounds i32, ptr %311, i64 %313
  %315 = load i32, ptr %314, align 4, !tbaa !9
  %316 = add nsw i32 %315, %310
  store i32 %316, ptr %314, align 4, !tbaa !9
  br label %331

317:                                              ; preds = %302
  %318 = load i32, ptr %19, align 4, !tbaa !9
  %319 = load ptr, ptr %39, align 8, !tbaa !5
  %320 = load i32, ptr %22, align 4, !tbaa !9
  %321 = load i32, ptr %19, align 4, !tbaa !9
  %322 = mul nsw i32 %320, %321
  %323 = sext i32 %322 to i64
  %324 = getelementptr inbounds float, ptr %319, i64 %323
  %325 = load ptr, ptr %40, align 8, !tbaa !5
  %326 = load i32, ptr %8, align 4, !tbaa !9
  %327 = load i32, ptr %19, align 4, !tbaa !9
  %328 = mul nsw i32 %326, %327
  %329 = sext i32 %328 to i64
  %330 = getelementptr inbounds float, ptr %325, i64 %329
  call void @__saxpy(i32 noundef %318, float noundef 1.000000e+00, ptr noundef %324, i32 noundef 1, ptr noundef %330, i32 noundef 1)
  br label %331

331:                                              ; preds = %317, %305
  %332 = load i32, ptr %23, align 4, !tbaa !9
  %333 = icmp ne i32 %332, 0
  br i1 %333, label %334, label %346

334:                                              ; preds = %331
  %335 = load ptr, ptr %26, align 8, !tbaa !5
  %336 = load i32, ptr %22, align 4, !tbaa !9
  %337 = sext i32 %336 to i64
  %338 = getelementptr inbounds i32, ptr %335, i64 %337
  %339 = load i32, ptr %338, align 4, !tbaa !9
  %340 = load ptr, ptr %35, align 8, !tbaa !5
  %341 = load i32, ptr %8, align 4, !tbaa !9
  %342 = sext i32 %341 to i64
  %343 = getelementptr inbounds i32, ptr %340, i64 %342
  %344 = load i32, ptr %343, align 4, !tbaa !9
  %345 = add nsw i32 %344, %339
  store i32 %345, ptr %343, align 4, !tbaa !9
  br label %346

346:                                              ; preds = %334, %331
  %347 = load ptr, ptr %29, align 8, !tbaa !5
  %348 = load i32, ptr %22, align 4, !tbaa !9
  %349 = sext i32 %348 to i64
  %350 = getelementptr inbounds i32, ptr %347, i64 %349
  %351 = load i32, ptr %350, align 4, !tbaa !9
  %352 = load ptr, ptr %38, align 8, !tbaa !5
  %353 = load i32, ptr %8, align 4, !tbaa !9
  %354 = sext i32 %353 to i64
  %355 = getelementptr inbounds i32, ptr %352, i64 %354
  %356 = load i32, ptr %355, align 4, !tbaa !9
  %357 = add nsw i32 %356, %351
  store i32 %357, ptr %355, align 4, !tbaa !9
  %358 = load ptr, ptr %24, align 8, !tbaa !5
  %359 = load i32, ptr %22, align 4, !tbaa !9
  %360 = sext i32 %359 to i64
  %361 = getelementptr inbounds i32, ptr %358, i64 %360
  %362 = load i32, ptr %361, align 4, !tbaa !9
  store i32 %362, ptr %15, align 4, !tbaa !9
  %363 = load ptr, ptr %24, align 8, !tbaa !5
  %364 = load i32, ptr %22, align 4, !tbaa !9
  %365 = add nsw i32 %364, 1
  %366 = sext i32 %365 to i64
  %367 = getelementptr inbounds i32, ptr %363, i64 %366
  %368 = load i32, ptr %367, align 4, !tbaa !9
  store i32 %368, ptr %16, align 4, !tbaa !9
  %369 = load i32, ptr %15, align 4, !tbaa !9
  store i32 %369, ptr %12, align 4, !tbaa !9
  br label %370

370:                                              ; preds = %420, %346
  %371 = load i32, ptr %12, align 4, !tbaa !9
  %372 = load i32, ptr %16, align 4, !tbaa !9
  %373 = icmp slt i32 %371, %372
  br i1 %373, label %374, label %423

374:                                              ; preds = %370
  %375 = load ptr, ptr %30, align 8, !tbaa !5
  %376 = load i32, ptr %12, align 4, !tbaa !9
  %377 = sext i32 %376 to i64
  %378 = getelementptr inbounds i32, ptr %375, i64 %377
  %379 = load i32, ptr %378, align 4, !tbaa !9
  store i32 %379, ptr %13, align 4, !tbaa !9
  %380 = load ptr, ptr %32, align 8, !tbaa !5
  %381 = load i32, ptr %13, align 4, !tbaa !9
  %382 = sext i32 %381 to i64
  %383 = getelementptr inbounds i32, ptr %380, i64 %382
  %384 = load i32, ptr %383, align 4, !tbaa !9
  store i32 %384, ptr %14, align 4, !tbaa !9
  %385 = icmp eq i32 %384, -1
  br i1 %385, label %386, label %407

386:                                              ; preds = %374
  %387 = load i32, ptr %13, align 4, !tbaa !9
  %388 = load ptr, ptr %36, align 8, !tbaa !5
  %389 = load i32, ptr %18, align 4, !tbaa !9
  %390 = sext i32 %389 to i64
  %391 = getelementptr inbounds i32, ptr %388, i64 %390
  store i32 %387, ptr %391, align 4, !tbaa !9
  %392 = load ptr, ptr %28, align 8, !tbaa !5
  %393 = load i32, ptr %12, align 4, !tbaa !9
  %394 = sext i32 %393 to i64
  %395 = getelementptr inbounds i32, ptr %392, i64 %394
  %396 = load i32, ptr %395, align 4, !tbaa !9
  %397 = load ptr, ptr %37, align 8, !tbaa !5
  %398 = load i32, ptr %18, align 4, !tbaa !9
  %399 = sext i32 %398 to i64
  %400 = getelementptr inbounds i32, ptr %397, i64 %399
  store i32 %396, ptr %400, align 4, !tbaa !9
  %401 = load i32, ptr %18, align 4, !tbaa !9
  %402 = add nsw i32 %401, 1
  store i32 %402, ptr %18, align 4, !tbaa !9
  %403 = load ptr, ptr %32, align 8, !tbaa !5
  %404 = load i32, ptr %13, align 4, !tbaa !9
  %405 = sext i32 %404 to i64
  %406 = getelementptr inbounds i32, ptr %403, i64 %405
  store i32 %401, ptr %406, align 4, !tbaa !9
  br label %419

407:                                              ; preds = %374
  %408 = load ptr, ptr %28, align 8, !tbaa !5
  %409 = load i32, ptr %12, align 4, !tbaa !9
  %410 = sext i32 %409 to i64
  %411 = getelementptr inbounds i32, ptr %408, i64 %410
  %412 = load i32, ptr %411, align 4, !tbaa !9
  %413 = load ptr, ptr %37, align 8, !tbaa !5
  %414 = load i32, ptr %14, align 4, !tbaa !9
  %415 = sext i32 %414 to i64
  %416 = getelementptr inbounds i32, ptr %413, i64 %415
  %417 = load i32, ptr %416, align 4, !tbaa !9
  %418 = add nsw i32 %417, %412
  store i32 %418, ptr %416, align 4, !tbaa !9
  br label %419

419:                                              ; preds = %407, %386
  br label %420

420:                                              ; preds = %419
  %421 = load i32, ptr %12, align 4, !tbaa !9
  %422 = add nsw i32 %421, 1
  store i32 %422, ptr %12, align 4, !tbaa !9
  br label %370, !llvm.loop !33

423:                                              ; preds = %370
  %424 = load ptr, ptr %32, align 8, !tbaa !5
  %425 = load i32, ptr %8, 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
  store i32 %428, ptr %12, align 4, !tbaa !9
  %429 = icmp ne i32 %428, -1
  br i1 %429, label %430, label %465

430:                                              ; preds = %423
  %431 = load ptr, ptr %37, align 8, !tbaa !5
  %432 = load i32, ptr %12, align 4, !tbaa !9
  %433 = sext i32 %432 to i64
  %434 = getelementptr inbounds i32, ptr %431, i64 %433
  %435 = load i32, ptr %434, align 4, !tbaa !9
  %436 = load ptr, ptr %38, align 8, !tbaa !5
  %437 = load i32, ptr %8, 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 = sub nsw i32 %440, %435
  store i32 %441, ptr %439, align 4, !tbaa !9
  %442 = load ptr, ptr %36, align 8, !tbaa !5
  %443 = load i32, ptr %18, align 4, !tbaa !9
  %444 = add nsw i32 %443, -1
  store i32 %444, ptr %18, align 4, !tbaa !9
  %445 = sext i32 %444 to i64
  %446 = getelementptr inbounds i32, ptr %442, i64 %445
  %447 = load i32, ptr %446, align 4, !tbaa !9
  %448 = load ptr, ptr %36, align 8, !tbaa !5
  %449 = load i32, ptr %12, align 4, !tbaa !9
  %450 = sext i32 %449 to i64
  %451 = getelementptr inbounds i32, ptr %448, i64 %450
  store i32 %447, ptr %451, align 4, !tbaa !9
  %452 = load ptr, ptr %37, align 8, !tbaa !5
  %453 = load i32, ptr %18, align 4, !tbaa !9
  %454 = sext i32 %453 to i64
  %455 = getelementptr inbounds i32, ptr %452, i64 %454
  %456 = load i32, ptr %455, align 4, !tbaa !9
  %457 = load ptr, ptr %37, align 8, !tbaa !5
  %458 = load i32, ptr %12, align 4, !tbaa !9
  %459 = sext i32 %458 to i64
  %460 = getelementptr inbounds i32, ptr %457, i64 %459
  store i32 %456, ptr %460, align 4, !tbaa !9
  %461 = load ptr, ptr %32, align 8, !tbaa !5
  %462 = load i32, ptr %8, align 4, !tbaa !9
  %463 = sext i32 %462 to i64
  %464 = getelementptr inbounds i32, ptr %461, i64 %463
  store i32 -1, ptr %464, align 4, !tbaa !9
  br label %465

465:                                              ; preds = %430, %423
  br label %466

466:                                              ; preds = %465, %298
  store i32 0, ptr %12, align 4, !tbaa !9
  br label %467

467:                                              ; preds = %480, %466
  %468 = load i32, ptr %12, align 4, !tbaa !9
  %469 = load i32, ptr %18, align 4, !tbaa !9
  %470 = icmp slt i32 %468, %469
  br i1 %470, label %471, label %483

471:                                              ; preds = %467
  %472 = load ptr, ptr %32, align 8, !tbaa !5
  %473 = load ptr, ptr %36, align 8, !tbaa !5
  %474 = load i32, ptr %12, align 4, !tbaa !9
  %475 = sext i32 %474 to i64
  %476 = getelementptr inbounds i32, ptr %473, i64 %475
  %477 = load i32, ptr %476, align 4, !tbaa !9
  %478 = sext i32 %477 to i64
  %479 = getelementptr inbounds i32, ptr %472, i64 %478
  store i32 -1, ptr %479, align 4, !tbaa !9
  br label %480

480:                                              ; preds = %471
  %481 = load i32, ptr %12, align 4, !tbaa !9
  %482 = add nsw i32 %481, 1
  store i32 %482, ptr %12, align 4, !tbaa !9
  br label %467, !llvm.loop !34

483:                                              ; preds = %467
  %484 = load i32, ptr %18, align 4, !tbaa !9
  %485 = load i32, ptr %20, align 4, !tbaa !9
  %486 = add nsw i32 %485, %484
  store i32 %486, ptr %20, align 4, !tbaa !9
  %487 = load i32, ptr %20, align 4, !tbaa !9
  %488 = load ptr, ptr %33, align 8, !tbaa !5
  %489 = load i32, ptr %8, align 4, !tbaa !9
  %490 = add nsw i32 %489, 1
  store i32 %490, ptr %8, align 4, !tbaa !9
  %491 = sext i32 %490 to i64
  %492 = getelementptr inbounds i32, ptr %488, i64 %491
  store i32 %487, ptr %492, align 4, !tbaa !9
  %493 = load i32, ptr %18, align 4, !tbaa !9
  %494 = load ptr, ptr %36, align 8, !tbaa !5
  %495 = sext i32 %493 to i64
  %496 = getelementptr inbounds i32, ptr %494, i64 %495
  store ptr %496, ptr %36, align 8, !tbaa !5
  %497 = load i32, ptr %18, align 4, !tbaa !9
  %498 = load ptr, ptr %37, align 8, !tbaa !5
  %499 = sext i32 %497 to i64
  %500 = getelementptr inbounds i32, ptr %498, i64 %499
  store ptr %500, ptr %37, align 8, !tbaa !5
  br label %501

501:                                              ; preds = %483, %175
  %502 = load i32, ptr %11, align 4, !tbaa !9
  %503 = add nsw i32 %502, 1
  store i32 %503, ptr %11, align 4, !tbaa !9
  br label %158, !llvm.loop !35

504:                                              ; preds = %158
  %505 = load i32, ptr %20, align 4, !tbaa !9
  %506 = load ptr, ptr %41, align 8, !tbaa !5
  %507 = getelementptr inbounds %struct.graphdef, ptr %506, i32 0, i32 3
  store i32 %505, ptr %507, align 4, !tbaa !36
  %508 = load ptr, ptr %7, align 8, !tbaa !5
  %509 = load ptr, ptr %41, align 8, !tbaa !5
  %510 = load i32, ptr %23, align 4, !tbaa !9
  call void @__ReAdjustMemory(ptr noundef %508, ptr noundef %509, i32 noundef %510)
  %511 = load ptr, ptr %6, align 8, !tbaa !5
  %512 = getelementptr inbounds %struct.controldef, ptr %511, i32 0, i32 1
  %513 = load i32, ptr %512, align 4, !tbaa !16
  %514 = and i32 %513, 1
  %515 = icmp ne i32 %514, 0
  br i1 %515, label %516, label %522

516:                                              ; preds = %504
  %517 = call double @__seconds()
  %518 = load ptr, ptr %6, align 8, !tbaa !5
  %519 = getelementptr inbounds %struct.controldef, ptr %518, i32 0, i32 15
  %520 = load double, ptr %519, align 8, !tbaa !17
  %521 = fadd double %520, %517
  store double %521, ptr %519, align 8, !tbaa !17
  br label %522

522:                                              ; preds = %516, %504
  %523 = load ptr, ptr %6, align 8, !tbaa !5
  %524 = load i32, ptr %8, align 4, !tbaa !9
  call void @__idxwspacefree(ptr noundef %523, i32 noundef %524)
  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 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
  ret void
}

declare double @__seconds() #2

; Function Attrs: nounwind uwtable
declare dso_local ptr @__SetUpCoarseGraph(ptr noundef, i32 noundef, i32 noundef) #1

; 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) #1

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) #0

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { 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 = !{!12, !10, i64 4}
!17 = !{!12, !15, i64 128}
!18 = !{!19, !10, i64 16}
!19 = !{!"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}
!20 = !{!19, !10, i64 176}
!21 = !{!19, !6, i64 24}
!22 = !{!19, !6, i64 32}
!23 = !{!19, !6, i64 40}
!24 = !{!19, !6, i64 184}
!25 = !{!19, !6, i64 48}
!26 = !{!19, !6, i64 56}
!27 = !{!19, !6, i64 64}
!28 = !{!19, !6, i64 80}
!29 = !{!12, !6, i64 88}
!30 = distinct !{!30, !31}
!31 = !{!"llvm.loop.mustprogress"}
!32 = distinct !{!32, !31}
!33 = distinct !{!33, !31}
!34 = distinct !{!34, !31}
!35 = distinct !{!35, !31}
!36 = !{!19, !10, i64 20}


; 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 @__CreateCoarseGraphNoMask(ptr noundef %0, ptr noundef %1, i32 noundef %2, ptr nocapture noundef readonly %3, ptr nocapture noundef readonly %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 = getelementptr inbounds i8, ptr %0, i64 4
  %11 = load i32, ptr %10, align 4, !tbaa !14
  %12 = and i32 %11, 1
  %.not = icmp eq i32 %12, 0
  br i1 %.not, label %18, label %13

13:                                               ; preds = %5
  %14 = tail call double @__seconds() #3
  %15 = getelementptr inbounds i8, ptr %0, i64 128
  %16 = load double, ptr %15, align 8, !tbaa !15
  %17 = fsub double %16, %14
  store double %17, ptr %15, align 8, !tbaa !15
  br label %18

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

.lr.ph.preheader:                                 ; preds = %18
  %wide.trip.count = zext nneg i32 %58 to i64
  %xtraiter = and i64 %wide.trip.count, 3
  %64 = icmp ult i32 %58, 4
  br i1 %64, 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 ]
  %65 = getelementptr inbounds i32, ptr %60, i64 %indvars.iv
  %66 = load i32, ptr %65, align 4, !tbaa !27
  %67 = sext i32 %66 to i64
  %68 = getelementptr inbounds i32, ptr %38, i64 %67
  %69 = load i32, ptr %68, align 4, !tbaa !27
  store i32 %69, ptr %65, align 4, !tbaa !27
  %indvars.iv.next = or disjoint i64 %indvars.iv, 1
  %70 = getelementptr inbounds i32, ptr %60, i64 %indvars.iv.next
  %71 = load i32, ptr %70, align 4, !tbaa !27
  %72 = sext i32 %71 to i64
  %73 = getelementptr inbounds i32, ptr %38, i64 %72
  %74 = load i32, ptr %73, align 4, !tbaa !27
  store i32 %74, ptr %70, align 4, !tbaa !27
  %indvars.iv.next.1 = or disjoint i64 %indvars.iv, 2
  %75 = getelementptr inbounds i32, ptr %60, i64 %indvars.iv.next.1
  %76 = load i32, ptr %75, align 4, !tbaa !27
  %77 = sext i32 %76 to i64
  %78 = getelementptr inbounds i32, ptr %38, i64 %77
  %79 = load i32, ptr %78, align 4, !tbaa !27
  store i32 %79, ptr %75, align 4, !tbaa !27
  %indvars.iv.next.2 = or disjoint i64 %indvars.iv, 3
  %80 = getelementptr inbounds i32, ptr %60, i64 %indvars.iv.next.2
  %81 = load i32, ptr %80, align 4, !tbaa !27
  %82 = sext i32 %81 to i64
  %83 = getelementptr inbounds i32, ptr %38, i64 %82
  %84 = load i32, ptr %83, align 4, !tbaa !27
  store i32 %84, ptr %80, align 4, !tbaa !27
  %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 !29

._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 ]
  %85 = getelementptr inbounds i32, ptr %60, i64 %indvars.iv.epil
  %86 = load i32, ptr %85, align 4, !tbaa !27
  %87 = sext i32 %86 to i64
  %88 = getelementptr inbounds i32, ptr %38, i64 %87
  %89 = load i32, ptr %88, align 4, !tbaa !27
  store i32 %89, ptr %85, align 4, !tbaa !27
  %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 !31

._crit_edge:                                      ; preds = %._crit_edge.loopexit.unr-lcssa, %.lr.ph.epil, %18
  store i32 0, ptr %41, align 4, !tbaa !27
  %90 = icmp sgt i32 %20, 0
  br i1 %90, label %.lr.ph232, label %._crit_edge233

.lr.ph232:                                        ; preds = %._crit_edge
  %91 = icmp eq i32 %22, 1
  %92 = sext i32 %22 to i64
  %93 = shl nsw i64 %92, 2
  %wide.trip.count255 = zext nneg i32 %20 to i64
  br label %94

94:                                               ; preds = %.lr.ph232, %251
  %indvars.iv252 = phi i64 [ 0, %.lr.ph232 ], [ %indvars.iv.next253, %251 ]
  %.0229 = phi i32 [ 0, %.lr.ph232 ], [ %.1, %251 ]
  %.0190227 = phi ptr [ %53, %.lr.ph232 ], [ %.1191, %251 ]
  %.0192226 = phi ptr [ %51, %.lr.ph232 ], [ %.1193, %251 ]
  %.0197225 = phi i32 [ 0, %.lr.ph232 ], [ %.1198, %251 ]
  %95 = getelementptr inbounds i32, ptr %4, i64 %indvars.iv252
  %96 = load i32, ptr %95, align 4, !tbaa !27
  %97 = sext i32 %96 to i64
  %98 = getelementptr inbounds i32, ptr %38, i64 %97
  %99 = load i32, ptr %98, align 4, !tbaa !27
  %.not206 = icmp eq i32 %99, %.0229
  br i1 %.not206, label %100, label %251

100:                                              ; preds = %94
  %101 = getelementptr inbounds i32, ptr %3, i64 %97
  %102 = load i32, ptr %101, align 4, !tbaa !27
  br i1 %91, label %103, label %108

103:                                              ; preds = %100
  %104 = getelementptr inbounds i32, ptr %26, i64 %97
  %105 = load i32, ptr %104, align 4, !tbaa !27
  %106 = sext i32 %.0229 to i64
  %107 = getelementptr inbounds i32, ptr %43, i64 %106
  store i32 %105, ptr %107, align 4, !tbaa !27
  br label %115

108:                                              ; preds = %100
  %109 = mul nsw i32 %.0229, %22
  %110 = sext i32 %109 to i64
  %111 = getelementptr inbounds float, ptr %47, i64 %110
  %112 = mul nsw i32 %96, %22
  %113 = sext i32 %112 to i64
  %114 = getelementptr inbounds float, ptr %30, i64 %113
  tail call void @llvm.memcpy.p0.p0.i64(ptr align 1 %111, ptr align 1 %114, i64 %93, i1 false)
  br label %115

115:                                              ; preds = %108, %103
  br i1 %8, label %116, label %._crit_edge258

._crit_edge258:                                   ; preds = %115
  %.pre = sext i32 %.0229 to i64
  br label %121

116:                                              ; preds = %115
  %117 = getelementptr inbounds i32, ptr %28, i64 %97
  %118 = load i32, ptr %117, align 4, !tbaa !27
  %119 = sext i32 %.0229 to i64
  %120 = getelementptr inbounds i32, ptr %45, i64 %119
  store i32 %118, ptr %120, align 4, !tbaa !27
  br label %121

121:                                              ; preds = %._crit_edge258, %116
  %.pre-phi = phi i64 [ %.pre, %._crit_edge258 ], [ %119, %116 ]
  %122 = getelementptr inbounds i32, ptr %36, i64 %97
  %123 = load i32, ptr %122, align 4, !tbaa !27
  %124 = getelementptr inbounds i32, ptr %49, i64 %.pre-phi
  store i32 %123, ptr %124, align 4, !tbaa !27
  %125 = getelementptr inbounds i32, ptr %24, i64 %97
  %126 = load i32, ptr %125, align 4, !tbaa !27
  %127 = getelementptr i8, ptr %125, i64 4
  %128 = load i32, ptr %127, align 4, !tbaa !27
  %129 = icmp slt i32 %126, %128
  br i1 %129, label %.lr.ph213.preheader, label %._crit_edge214

.lr.ph213.preheader:                              ; preds = %121
  %130 = sext i32 %126 to i64
  %wide.trip.count240 = sext i32 %128 to i64
  br label %.lr.ph213

.lr.ph213:                                        ; preds = %.lr.ph213.preheader, %151
  %indvars.iv237 = phi i64 [ %130, %.lr.ph213.preheader ], [ %indvars.iv.next238, %151 ]
  %.0194210 = phi i32 [ 0, %.lr.ph213.preheader ], [ %.1195, %151 ]
  %131 = getelementptr inbounds i32, ptr %60, i64 %indvars.iv237
  %132 = load i32, ptr %131, align 4, !tbaa !27
  %133 = sext i32 %132 to i64
  %134 = getelementptr inbounds i32, ptr %55, i64 %133
  %135 = load i32, ptr %134, align 4, !tbaa !27
  %136 = icmp eq i32 %135, -1
  br i1 %136, label %137, label %144

137:                                              ; preds = %.lr.ph213
  %138 = sext i32 %.0194210 to i64
  %139 = getelementptr inbounds i32, ptr %.0192226, i64 %138
  store i32 %132, ptr %139, align 4, !tbaa !27
  %140 = getelementptr inbounds i32, ptr %34, i64 %indvars.iv237
  %141 = load i32, ptr %140, align 4, !tbaa !27
  %142 = getelementptr inbounds i32, ptr %.0190227, i64 %138
  store i32 %141, ptr %142, align 4, !tbaa !27
  %143 = add nsw i32 %.0194210, 1
  store i32 %.0194210, ptr %134, align 4, !tbaa !27
  br label %151

144:                                              ; preds = %.lr.ph213
  %145 = getelementptr inbounds i32, ptr %34, i64 %indvars.iv237
  %146 = load i32, ptr %145, align 4, !tbaa !27
  %147 = sext i32 %135 to i64
  %148 = getelementptr inbounds i32, ptr %.0190227, i64 %147
  %149 = load i32, ptr %148, align 4, !tbaa !27
  %150 = add nsw i32 %149, %146
  store i32 %150, ptr %148, align 4, !tbaa !27
  br label %151

151:                                              ; preds = %137, %144
  %.1195 = phi i32 [ %143, %137 ], [ %.0194210, %144 ]
  %indvars.iv.next238 = add nsw i64 %indvars.iv237, 1
  %exitcond241.not = icmp eq i64 %indvars.iv.next238, %wide.trip.count240
  br i1 %exitcond241.not, label %._crit_edge214, label %.lr.ph213, !llvm.loop !33

._crit_edge214:                                   ; preds = %151, %121
  %.0194.lcssa = phi i32 [ 0, %121 ], [ %.1195, %151 ]
  %.not207 = icmp eq i32 %96, %102
  br i1 %.not207, label %221, label %152

152:                                              ; preds = %._crit_edge214
  br i1 %91, label %153, label %160

153:                                              ; preds = %152
  %154 = sext i32 %102 to i64
  %155 = getelementptr inbounds i32, ptr %26, i64 %154
  %156 = load i32, ptr %155, align 4, !tbaa !27
  %157 = getelementptr inbounds i32, ptr %43, i64 %.pre-phi
  %158 = load i32, ptr %157, align 4, !tbaa !27
  %159 = add nsw i32 %158, %156
  store i32 %159, ptr %157, align 4, !tbaa !27
  br label %167

160:                                              ; preds = %152
  %161 = mul nsw i32 %102, %22
  %162 = sext i32 %161 to i64
  %163 = getelementptr inbounds float, ptr %30, i64 %162
  %164 = mul nsw i32 %.0229, %22
  %165 = sext i32 %164 to i64
  %166 = getelementptr inbounds float, ptr %47, i64 %165
  tail call void @__saxpy(i32 noundef %22, float noundef 1.000000e+00, ptr noundef %163, i32 noundef 1, ptr noundef %166, i32 noundef 1) #3
  br label %167

167:                                              ; preds = %160, %153
  %168 = sext i32 %102 to i64
  br i1 %8, label %169, label %._crit_edge257

169:                                              ; preds = %167
  %170 = getelementptr inbounds i32, ptr %28, i64 %168
  %171 = load i32, ptr %170, align 4, !tbaa !27
  %172 = getelementptr inbounds i32, ptr %45, i64 %.pre-phi
  %173 = load i32, ptr %172, align 4, !tbaa !27
  %174 = add nsw i32 %173, %171
  store i32 %174, ptr %172, align 4, !tbaa !27
  br label %._crit_edge257

._crit_edge257:                                   ; preds = %167, %169
  %175 = getelementptr inbounds i32, ptr %36, i64 %168
  %176 = load i32, ptr %175, align 4, !tbaa !27
  %177 = load i32, ptr %124, align 4, !tbaa !27
  %178 = add nsw i32 %177, %176
  store i32 %178, ptr %124, align 4, !tbaa !27
  %179 = getelementptr inbounds i32, ptr %24, i64 %168
  %180 = load i32, ptr %179, align 4, !tbaa !27
  %181 = getelementptr i8, ptr %179, i64 4
  %182 = load i32, ptr %181, align 4, !tbaa !27
  %183 = icmp slt i32 %180, %182
  br i1 %183, label %.lr.ph218.preheader, label %._crit_edge219

.lr.ph218.preheader:                              ; preds = %._crit_edge257
  %184 = sext i32 %180 to i64
  %wide.trip.count245 = sext i32 %182 to i64
  br label %.lr.ph218

.lr.ph218:                                        ; preds = %.lr.ph218.preheader, %205
  %indvars.iv242 = phi i64 [ %184, %.lr.ph218.preheader ], [ %indvars.iv.next243, %205 ]
  %.2196215 = phi i32 [ %.0194.lcssa, %.lr.ph218.preheader ], [ %.3, %205 ]
  %185 = getelementptr inbounds i32, ptr %60, i64 %indvars.iv242
  %186 = load i32, ptr %185, align 4, !tbaa !27
  %187 = sext i32 %186 to i64
  %188 = getelementptr inbounds i32, ptr %55, i64 %187
  %189 = load i32, ptr %188, align 4, !tbaa !27
  %190 = icmp eq i32 %189, -1
  br i1 %190, label %191, label %198

191:                                              ; preds = %.lr.ph218
  %192 = sext i32 %.2196215 to i64
  %193 = getelementptr inbounds i32, ptr %.0192226, i64 %192
  store i32 %186, ptr %193, align 4, !tbaa !27
  %194 = getelementptr inbounds i32, ptr %34, i64 %indvars.iv242
  %195 = load i32, ptr %194, align 4, !tbaa !27
  %196 = getelementptr inbounds i32, ptr %.0190227, i64 %192
  store i32 %195, ptr %196, align 4, !tbaa !27
  %197 = add nsw i32 %.2196215, 1
  store i32 %.2196215, ptr %188, align 4, !tbaa !27
  br label %205

198:                                              ; preds = %.lr.ph218
  %199 = getelementptr inbounds i32, ptr %34, i64 %indvars.iv242
  %200 = load i32, ptr %199, align 4, !tbaa !27
  %201 = sext i32 %189 to i64
  %202 = getelementptr inbounds i32, ptr %.0190227, i64 %201
  %203 = load i32, ptr %202, align 4, !tbaa !27
  %204 = add nsw i32 %203, %200
  store i32 %204, ptr %202, align 4, !tbaa !27
  br label %205

205:                                              ; preds = %191, %198
  %.3 = phi i32 [ %197, %191 ], [ %.2196215, %198 ]
  %indvars.iv.next243 = add nsw i64 %indvars.iv242, 1
  %exitcond246.not = icmp eq i64 %indvars.iv.next243, %wide.trip.count245
  br i1 %exitcond246.not, label %._crit_edge219, label %.lr.ph218, !llvm.loop !34

._crit_edge219:                                   ; preds = %205, %._crit_edge257
  %.2196.lcssa = phi i32 [ %.0194.lcssa, %._crit_edge257 ], [ %.3, %205 ]
  %206 = getelementptr inbounds i32, ptr %55, i64 %.pre-phi
  %207 = load i32, ptr %206, align 4, !tbaa !27
  %.not208 = icmp eq i32 %207, -1
  br i1 %.not208, label %221, label %208

208:                                              ; preds = %._crit_edge219
  %209 = sext i32 %207 to i64
  %210 = getelementptr inbounds i32, ptr %.0190227, i64 %209
  %211 = load i32, ptr %210, align 4, !tbaa !27
  %212 = load i32, ptr %124, align 4, !tbaa !27
  %213 = sub nsw i32 %212, %211
  store i32 %213, ptr %124, align 4, !tbaa !27
  %214 = add nsw i32 %.2196.lcssa, -1
  %215 = sext i32 %214 to i64
  %216 = getelementptr inbounds i32, ptr %.0192226, i64 %215
  %217 = load i32, ptr %216, align 4, !tbaa !27
  %218 = getelementptr inbounds i32, ptr %.0192226, i64 %209
  store i32 %217, ptr %218, align 4, !tbaa !27
  %219 = getelementptr inbounds i32, ptr %.0190227, i64 %215
  %220 = load i32, ptr %219, align 4, !tbaa !27
  store i32 %220, ptr %210, align 4, !tbaa !27
  store i32 -1, ptr %206, align 4, !tbaa !27
  br label %221

221:                                              ; preds = %._crit_edge219, %208, %._crit_edge214
  %.4 = phi i32 [ %214, %208 ], [ %.2196.lcssa, %._crit_edge219 ], [ %.0194.lcssa, %._crit_edge214 ]
  %222 = icmp sgt i32 %.4, 0
  br i1 %222, label %.lr.ph223.preheader, label %._crit_edge224

.lr.ph223.preheader:                              ; preds = %221
  %wide.trip.count250 = zext nneg i32 %.4 to i64
  %xtraiter261 = and i64 %wide.trip.count250, 3
  %223 = icmp ult i32 %.4, 4
  br i1 %223, label %._crit_edge224.loopexit.unr-lcssa, label %.lr.ph223.preheader.new

.lr.ph223.preheader.new:                          ; preds = %.lr.ph223.preheader
  %unroll_iter264 = and i64 %wide.trip.count250, 2147483644
  br label %.lr.ph223

.lr.ph223:                                        ; preds = %.lr.ph223, %.lr.ph223.preheader.new
  %indvars.iv247 = phi i64 [ 0, %.lr.ph223.preheader.new ], [ %indvars.iv.next248.3, %.lr.ph223 ]
  %niter265 = phi i64 [ 0, %.lr.ph223.preheader.new ], [ %niter265.next.3, %.lr.ph223 ]
  %224 = getelementptr inbounds i32, ptr %.0192226, i64 %indvars.iv247
  %225 = load i32, ptr %224, align 4, !tbaa !27
  %226 = sext i32 %225 to i64
  %227 = getelementptr inbounds i32, ptr %55, i64 %226
  store i32 -1, ptr %227, align 4, !tbaa !27
  %indvars.iv.next248 = or disjoint i64 %indvars.iv247, 1
  %228 = getelementptr inbounds i32, ptr %.0192226, i64 %indvars.iv.next248
  %229 = load i32, ptr %228, align 4, !tbaa !27
  %230 = sext i32 %229 to i64
  %231 = getelementptr inbounds i32, ptr %55, i64 %230
  store i32 -1, ptr %231, align 4, !tbaa !27
  %indvars.iv.next248.1 = or disjoint i64 %indvars.iv247, 2
  %232 = getelementptr inbounds i32, ptr %.0192226, i64 %indvars.iv.next248.1
  %233 = load i32, ptr %232, align 4, !tbaa !27
  %234 = sext i32 %233 to i64
  %235 = getelementptr inbounds i32, ptr %55, i64 %234
  store i32 -1, ptr %235, align 4, !tbaa !27
  %indvars.iv.next248.2 = or disjoint i64 %indvars.iv247, 3
  %236 = getelementptr inbounds i32, ptr %.0192226, i64 %indvars.iv.next248.2
  %237 = load i32, ptr %236, align 4, !tbaa !27
  %238 = sext i32 %237 to i64
  %239 = getelementptr inbounds i32, ptr %55, i64 %238
  store i32 -1, ptr %239, align 4, !tbaa !27
  %indvars.iv.next248.3 = add nuw nsw i64 %indvars.iv247, 4
  %niter265.next.3 = add i64 %niter265, 4
  %niter265.ncmp.3 = icmp eq i64 %niter265.next.3, %unroll_iter264
  br i1 %niter265.ncmp.3, label %._crit_edge224.loopexit.unr-lcssa, label %.lr.ph223, !llvm.loop !35

._crit_edge224.loopexit.unr-lcssa:                ; preds = %.lr.ph223, %.lr.ph223.preheader
  %indvars.iv247.unr = phi i64 [ 0, %.lr.ph223.preheader ], [ %indvars.iv.next248.3, %.lr.ph223 ]
  %lcmp.mod263.not = icmp eq i64 %xtraiter261, 0
  br i1 %lcmp.mod263.not, label %._crit_edge224, label %.lr.ph223.epil

.lr.ph223.epil:                                   ; preds = %._crit_edge224.loopexit.unr-lcssa, %.lr.ph223.epil
  %indvars.iv247.epil = phi i64 [ %indvars.iv.next248.epil, %.lr.ph223.epil ], [ %indvars.iv247.unr, %._crit_edge224.loopexit.unr-lcssa ]
  %epil.iter262 = phi i64 [ %epil.iter262.next, %.lr.ph223.epil ], [ 0, %._crit_edge224.loopexit.unr-lcssa ]
  %240 = getelementptr inbounds i32, ptr %.0192226, i64 %indvars.iv247.epil
  %241 = load i32, ptr %240, align 4, !tbaa !27
  %242 = sext i32 %241 to i64
  %243 = getelementptr inbounds i32, ptr %55, i64 %242
  store i32 -1, ptr %243, align 4, !tbaa !27
  %indvars.iv.next248.epil = add nuw nsw i64 %indvars.iv247.epil, 1
  %epil.iter262.next = add i64 %epil.iter262, 1
  %epil.iter262.cmp.not = icmp eq i64 %epil.iter262.next, %xtraiter261
  br i1 %epil.iter262.cmp.not, label %._crit_edge224, label %.lr.ph223.epil, !llvm.loop !36

._crit_edge224:                                   ; preds = %._crit_edge224.loopexit.unr-lcssa, %.lr.ph223.epil, %221
  %244 = add nsw i32 %.4, %.0197225
  %245 = add nsw i32 %.0229, 1
  %246 = sext i32 %245 to i64
  %247 = getelementptr inbounds i32, ptr %41, i64 %246
  store i32 %244, ptr %247, align 4, !tbaa !27
  %248 = sext i32 %.4 to i64
  %249 = getelementptr inbounds i32, ptr %.0192226, i64 %248
  %250 = getelementptr inbounds i32, ptr %.0190227, i64 %248
  br label %251

251:                                              ; preds = %94, %._crit_edge224
  %.1198 = phi i32 [ %.0197225, %94 ], [ %244, %._crit_edge224 ]
  %.1193 = phi ptr [ %.0192226, %94 ], [ %249, %._crit_edge224 ]
  %.1191 = phi ptr [ %.0190227, %94 ], [ %250, %._crit_edge224 ]
  %.1 = phi i32 [ %.0229, %94 ], [ %245, %._crit_edge224 ]
  %indvars.iv.next253 = add nuw nsw i64 %indvars.iv252, 1
  %exitcond256.not = icmp eq i64 %indvars.iv.next253, %wide.trip.count255
  br i1 %exitcond256.not, label %._crit_edge233, label %94, !llvm.loop !37

._crit_edge233:                                   ; preds = %251, %._crit_edge
  %.0197.lcssa = phi i32 [ 0, %._crit_edge ], [ %.1198, %251 ]
  %.0.lcssa = phi i32 [ 0, %._crit_edge ], [ %.1, %251 ]
  %252 = getelementptr inbounds i8, ptr %39, i64 20
  store i32 %.0197.lcssa, ptr %252, align 4, !tbaa !38
  tail call void @__ReAdjustMemory(ptr noundef %1, ptr noundef %39, i32 noundef %9)
  %253 = load i32, ptr %10, align 4, !tbaa !14
  %254 = and i32 %253, 1
  %.not205 = icmp eq i32 %254, 0
  br i1 %.not205, label %260, label %255

255:                                              ; preds = %._crit_edge233
  %256 = tail call double @__seconds() #3
  %257 = getelementptr inbounds i8, ptr %0, i64 128
  %258 = load double, ptr %257, align 8, !tbaa !15
  %259 = fadd double %256, %258
  store double %259, ptr %257, align 8, !tbaa !15
  br label %260

260:                                              ; preds = %255, %._crit_edge233
  tail call void @__idxwspacefree(ptr noundef nonnull %0, i32 noundef %.0.lcssa) #3
  ret void
}

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 = !{!6, !7, i64 4}
!15 = !{!6, !13, i64 128}
!16 = !{!17, !7, i64 16}
!17 = !{!"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}
!18 = !{!17, !7, i64 176}
!19 = !{!17, !12, i64 24}
!20 = !{!17, !12, i64 32}
!21 = !{!17, !12, i64 40}
!22 = !{!17, !12, i64 184}
!23 = !{!17, !12, i64 48}
!24 = !{!17, !12, i64 56}
!25 = !{!17, !12, i64 64}
!26 = !{!17, !12, i64 80}
!27 = !{!7, !7, i64 0}
!28 = !{!6, !12, i64 88}
!29 = distinct !{!29, !30}
!30 = !{!"llvm.loop.mustprogress"}
!31 = distinct !{!31, !32}
!32 = !{!"llvm.loop.unroll.disable"}
!33 = distinct !{!33, !30}
!34 = distinct !{!34, !30}
!35 = distinct !{!35, !30}
!36 = distinct !{!36, !32}
!37 = distinct !{!37, !30}
!38 = !{!17, !7, i64 20}


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