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

; 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

declare double @__seconds() #1

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

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

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

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

declare void @__idxwspacefree(ptr noundef, i32 noundef) #1

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

; Function Attrs: nounwind uwtable
define dso_local void @__CreateCoarseGraph_NVW(ptr noundef %0, ptr noundef %1, i32 noundef %2, ptr noundef %3, ptr noundef %4) #2 {
  %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 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
  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 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
  %41 = load ptr, ptr %6, align 8, !tbaa !5
  %42 = getelementptr inbounds %struct.controldef, ptr %41, i32 0, i32 1
  %43 = load i32, ptr %42, align 4, !tbaa !11
  %44 = and i32 %43, 1
  %45 = icmp ne i32 %44, 0
  br i1 %45, label %46, label %52

46:                                               ; preds = %5
  %47 = call double @__seconds()
  %48 = load ptr, ptr %6, align 8, !tbaa !5
  %49 = getelementptr inbounds %struct.controldef, ptr %48, i32 0, i32 15
  %50 = load double, ptr %49, align 8, !tbaa !16
  %51 = fsub double %50, %47
  store double %51, ptr %49, align 8, !tbaa !16
  br label %52

52:                                               ; preds = %46, %5
  %53 = load ptr, ptr %7, align 8, !tbaa !5
  %54 = getelementptr inbounds %struct.graphdef, ptr %53, i32 0, i32 2
  %55 = load i32, ptr %54, align 8, !tbaa !17
  store i32 %55, ptr %20, align 4, !tbaa !9
  %56 = load ptr, ptr %7, align 8, !tbaa !5
  %57 = getelementptr inbounds %struct.graphdef, ptr %56, i32 0, i32 24
  %58 = load i32, ptr %57, align 8, !tbaa !19
  store i32 %58, ptr %22, align 4, !tbaa !9
  %59 = load ptr, ptr %7, align 8, !tbaa !5
  %60 = getelementptr inbounds %struct.graphdef, ptr %59, i32 0, i32 4
  %61 = load ptr, ptr %60, align 8, !tbaa !20
  store ptr %61, ptr %27, align 8, !tbaa !5
  %62 = load ptr, ptr %7, align 8, !tbaa !5
  %63 = getelementptr inbounds %struct.graphdef, ptr %62, i32 0, i32 25
  %64 = load ptr, ptr %63, align 8, !tbaa !21
  store ptr %64, ptr %38, align 8, !tbaa !5
  %65 = load ptr, ptr %7, align 8, !tbaa !5
  %66 = getelementptr inbounds %struct.graphdef, ptr %65, i32 0, i32 7
  %67 = load ptr, ptr %66, align 8, !tbaa !22
  store ptr %67, ptr %28, align 8, !tbaa !5
  %68 = load ptr, ptr %7, align 8, !tbaa !5
  %69 = getelementptr inbounds %struct.graphdef, ptr %68, i32 0, i32 9
  %70 = load ptr, ptr %69, align 8, !tbaa !23
  store ptr %70, ptr %29, align 8, !tbaa !5
  %71 = load ptr, ptr %7, align 8, !tbaa !5
  %72 = getelementptr inbounds %struct.graphdef, ptr %71, i32 0, i32 11
  %73 = load ptr, ptr %72, align 8, !tbaa !24
  store ptr %73, ptr %31, align 8, !tbaa !5
  %74 = load ptr, ptr %7, align 8, !tbaa !5
  %75 = load i32, ptr %8, align 4, !tbaa !9
  %76 = call ptr @__SetUpCoarseGraph(ptr noundef %74, i32 noundef %75, i32 noundef 0)
  store ptr %76, ptr %40, align 8, !tbaa !5
  %77 = load ptr, ptr %40, align 8, !tbaa !5
  %78 = getelementptr inbounds %struct.graphdef, ptr %77, i32 0, i32 4
  %79 = load ptr, ptr %78, align 8, !tbaa !20
  store ptr %79, ptr %33, align 8, !tbaa !5
  %80 = load ptr, ptr %40, align 8, !tbaa !5
  %81 = getelementptr inbounds %struct.graphdef, ptr %80, i32 0, i32 5
  %82 = load ptr, ptr %81, align 8, !tbaa !25
  store ptr %82, ptr %34, align 8, !tbaa !5
  %83 = load ptr, ptr %40, align 8, !tbaa !5
  %84 = getelementptr inbounds %struct.graphdef, ptr %83, i32 0, i32 25
  %85 = load ptr, ptr %84, align 8, !tbaa !21
  store ptr %85, ptr %39, align 8, !tbaa !5
  %86 = load ptr, ptr %40, align 8, !tbaa !5
  %87 = getelementptr inbounds %struct.graphdef, ptr %86, i32 0, i32 9
  %88 = load ptr, ptr %87, align 8, !tbaa !23
  store ptr %88, ptr %37, align 8, !tbaa !5
  %89 = load ptr, ptr %40, align 8, !tbaa !5
  %90 = getelementptr inbounds %struct.graphdef, ptr %89, i32 0, i32 7
  %91 = load ptr, ptr %90, align 8, !tbaa !22
  store ptr %91, ptr %35, align 8, !tbaa !5
  %92 = load ptr, ptr %40, align 8, !tbaa !5
  %93 = getelementptr inbounds %struct.graphdef, ptr %92, i32 0, i32 8
  %94 = load ptr, ptr %93, align 8, !tbaa !26
  store ptr %94, ptr %36, align 8, !tbaa !5
  %95 = load ptr, ptr %27, align 8, !tbaa !5
  %96 = load i32, ptr %20, align 4, !tbaa !9
  %97 = sext i32 %96 to i64
  %98 = getelementptr inbounds i32, ptr %95, i64 %97
  %99 = load i32, ptr %98, align 4, !tbaa !9
  store i32 %99, ptr %19, align 4, !tbaa !9
  %100 = load ptr, ptr %6, align 8, !tbaa !5
  %101 = getelementptr inbounds %struct.controldef, ptr %100, i32 0, i32 11
  %102 = getelementptr inbounds %struct.workspacedef, ptr %101, i32 0, i32 6
  %103 = load ptr, ptr %102, align 8, !tbaa !27
  store ptr %103, ptr %30, align 8, !tbaa !5
  %104 = load ptr, ptr %30, align 8, !tbaa !5
  %105 = load ptr, ptr %28, align 8, !tbaa !5
  %106 = load i32, ptr %19, align 4, !tbaa !9
  %107 = sext i32 %106 to i64
  %108 = mul i64 %107, 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %104, ptr align 4 %105, i64 %108, i1 false)
  store i32 0, ptr %11, align 4, !tbaa !9
  br label %109

109:                                              ; preds = %127, %52
  %110 = load i32, ptr %11, align 4, !tbaa !9
  %111 = load i32, ptr %19, align 4, !tbaa !9
  %112 = icmp slt i32 %110, %111
  br i1 %112, label %113, label %130

113:                                              ; preds = %109
  %114 = load ptr, ptr %31, align 8, !tbaa !5
  %115 = load ptr, ptr %30, align 8, !tbaa !5
  %116 = load i32, ptr %11, align 4, !tbaa !9
  %117 = sext i32 %116 to i64
  %118 = getelementptr inbounds i32, ptr %115, i64 %117
  %119 = load i32, ptr %118, align 4, !tbaa !9
  %120 = sext i32 %119 to i64
  %121 = getelementptr inbounds i32, ptr %114, i64 %120
  %122 = load i32, ptr %121, align 4, !tbaa !9
  %123 = load ptr, ptr %30, align 8, !tbaa !5
  %124 = load i32, ptr %11, align 4, !tbaa !9
  %125 = sext i32 %124 to i64
  %126 = getelementptr inbounds i32, ptr %123, i64 %125
  store i32 %122, ptr %126, align 4, !tbaa !9
  br label %127

127:                                              ; preds = %113
  %128 = load i32, ptr %11, align 4, !tbaa !9
  %129 = add nsw i32 %128, 1
  store i32 %129, ptr %11, align 4, !tbaa !9
  br label %109, !llvm.loop !28

130:                                              ; preds = %109
  store i32 2047, ptr %26, align 4, !tbaa !9
  %131 = load i32, ptr %26, align 4, !tbaa !9
  %132 = add nsw i32 %131, 1
  %133 = load ptr, ptr %6, align 8, !tbaa !5
  %134 = load i32, ptr %26, align 4, !tbaa !9
  %135 = add nsw i32 %134, 1
  %136 = call ptr @__idxwspacemalloc(ptr noundef %133, i32 noundef %135)
  %137 = call ptr @__idxset(i32 noundef %132, i32 noundef -1, ptr noundef %136)
  store ptr %137, ptr %32, align 8, !tbaa !5
  store i32 0, ptr %23, align 4, !tbaa !9
  store i32 0, ptr %8, align 4, !tbaa !9
  %138 = load ptr, ptr %33, align 8, !tbaa !5
  %139 = getelementptr inbounds i32, ptr %138, i64 0
  store i32 0, ptr %139, align 4, !tbaa !9
  store i32 0, ptr %11, align 4, !tbaa !9
  br label %140

140:                                              ; preds = %536, %130
  %141 = load i32, ptr %11, align 4, !tbaa !9
  %142 = load i32, ptr %20, align 4, !tbaa !9
  %143 = icmp slt i32 %141, %142
  br i1 %143, label %144, label %539

144:                                              ; preds = %140
  %145 = load ptr, ptr %10, align 8, !tbaa !5
  %146 = load i32, ptr %11, align 4, !tbaa !9
  %147 = sext i32 %146 to i64
  %148 = getelementptr inbounds i32, ptr %145, i64 %147
  %149 = load i32, ptr %148, align 4, !tbaa !9
  store i32 %149, ptr %24, align 4, !tbaa !9
  %150 = load ptr, ptr %31, align 8, !tbaa !5
  %151 = load i32, ptr %24, align 4, !tbaa !9
  %152 = sext i32 %151 to i64
  %153 = getelementptr inbounds i32, ptr %150, i64 %152
  %154 = load i32, ptr %153, align 4, !tbaa !9
  %155 = load i32, ptr %8, align 4, !tbaa !9
  %156 = icmp ne i32 %154, %155
  br i1 %156, label %157, label %158

157:                                              ; preds = %144
  br label %536

158:                                              ; preds = %144
  %159 = load ptr, ptr %9, align 8, !tbaa !5
  %160 = load i32, ptr %24, align 4, !tbaa !9
  %161 = sext i32 %160 to i64
  %162 = getelementptr inbounds i32, ptr %159, i64 %161
  %163 = load i32, ptr %162, align 4, !tbaa !9
  store i32 %163, ptr %25, align 4, !tbaa !9
  %164 = load ptr, ptr %34, align 8, !tbaa !5
  %165 = load i32, ptr %8, align 4, !tbaa !9
  %166 = sext i32 %165 to i64
  %167 = getelementptr inbounds i32, ptr %164, i64 %166
  store i32 1, ptr %167, align 4, !tbaa !9
  %168 = load ptr, ptr %29, align 8, !tbaa !5
  %169 = load i32, ptr %24, 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 ptr, ptr %37, align 8, !tbaa !5
  %174 = load i32, ptr %8, align 4, !tbaa !9
  %175 = sext i32 %174 to i64
  %176 = getelementptr inbounds i32, ptr %173, i64 %175
  store i32 %172, ptr %176, align 4, !tbaa !9
  store i32 0, ptr %21, align 4, !tbaa !9
  %177 = load ptr, ptr %27, align 8, !tbaa !5
  %178 = load i32, ptr %24, 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 %18, align 4, !tbaa !9
  %182 = load ptr, ptr %27, align 8, !tbaa !5
  %183 = load i32, ptr %24, align 4, !tbaa !9
  %184 = add nsw i32 %183, 1
  %185 = sext i32 %184 to i64
  %186 = getelementptr inbounds i32, ptr %182, i64 %185
  %187 = load i32, ptr %186, align 4, !tbaa !9
  store i32 %187, ptr %19, align 4, !tbaa !9
  %188 = load i32, ptr %18, align 4, !tbaa !9
  store i32 %188, ptr %12, align 4, !tbaa !9
  br label %189

189:                                              ; preds = %281, %158
  %190 = load i32, ptr %12, align 4, !tbaa !9
  %191 = load i32, ptr %19, align 4, !tbaa !9
  %192 = icmp slt i32 %190, %191
  br i1 %192, label %193, label %284

193:                                              ; preds = %189
  %194 = load ptr, ptr %30, align 8, !tbaa !5
  %195 = load i32, ptr %12, align 4, !tbaa !9
  %196 = sext i32 %195 to i64
  %197 = getelementptr inbounds i32, ptr %194, i64 %196
  %198 = load i32, ptr %197, align 4, !tbaa !9
  store i32 %198, ptr %14, align 4, !tbaa !9
  %199 = load i32, ptr %14, align 4, !tbaa !9
  %200 = load i32, ptr %26, align 4, !tbaa !9
  %201 = and i32 %199, %200
  store i32 %201, ptr %15, align 4, !tbaa !9
  %202 = load ptr, ptr %32, align 8, !tbaa !5
  %203 = load i32, ptr %15, align 4, !tbaa !9
  %204 = sext i32 %203 to i64
  %205 = getelementptr inbounds i32, ptr %202, i64 %204
  %206 = load i32, ptr %205, align 4, !tbaa !9
  store i32 %206, ptr %17, align 4, !tbaa !9
  %207 = icmp eq i32 %206, -1
  br i1 %207, label %208, label %224

208:                                              ; preds = %193
  %209 = load i32, ptr %14, align 4, !tbaa !9
  %210 = load ptr, ptr %35, align 8, !tbaa !5
  %211 = load i32, ptr %21, align 4, !tbaa !9
  %212 = sext i32 %211 to i64
  %213 = getelementptr inbounds i32, ptr %210, i64 %212
  store i32 %209, ptr %213, align 4, !tbaa !9
  %214 = load ptr, ptr %36, 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
  store i32 1, ptr %217, align 4, !tbaa !9
  %218 = load i32, ptr %21, align 4, !tbaa !9
  %219 = add nsw i32 %218, 1
  store i32 %219, ptr %21, align 4, !tbaa !9
  %220 = load ptr, ptr %32, align 8, !tbaa !5
  %221 = load i32, ptr %15, align 4, !tbaa !9
  %222 = sext i32 %221 to i64
  %223 = getelementptr inbounds i32, ptr %220, i64 %222
  store i32 %218, ptr %223, align 4, !tbaa !9
  br label %280

224:                                              ; preds = %193
  %225 = load ptr, ptr %35, align 8, !tbaa !5
  %226 = load i32, ptr %17, align 4, !tbaa !9
  %227 = sext i32 %226 to i64
  %228 = getelementptr inbounds i32, ptr %225, i64 %227
  %229 = load i32, ptr %228, align 4, !tbaa !9
  %230 = load i32, ptr %14, align 4, !tbaa !9
  %231 = icmp eq i32 %229, %230
  br i1 %231, label %232, label %239

232:                                              ; preds = %224
  %233 = load ptr, ptr %36, align 8, !tbaa !5
  %234 = load i32, ptr %17, 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
  %238 = add nsw i32 %237, 1
  store i32 %238, ptr %236, align 4, !tbaa !9
  br label %279

239:                                              ; preds = %224
  store i32 0, ptr %13, align 4, !tbaa !9
  br label %240

240:                                              ; preds = %260, %239
  %241 = load i32, ptr %13, align 4, !tbaa !9
  %242 = load i32, ptr %21, align 4, !tbaa !9
  %243 = icmp slt i32 %241, %242
  br i1 %243, label %244, label %263

244:                                              ; preds = %240
  %245 = load ptr, ptr %35, align 8, !tbaa !5
  %246 = load i32, ptr %13, align 4, !tbaa !9
  %247 = sext i32 %246 to i64
  %248 = getelementptr inbounds i32, ptr %245, i64 %247
  %249 = load i32, ptr %248, align 4, !tbaa !9
  %250 = load i32, ptr %14, align 4, !tbaa !9
  %251 = icmp eq i32 %249, %250
  br i1 %251, label %252, label %259

252:                                              ; preds = %244
  %253 = load ptr, ptr %36, align 8, !tbaa !5
  %254 = load i32, ptr %13, align 4, !tbaa !9
  %255 = sext i32 %254 to i64
  %256 = getelementptr inbounds i32, ptr %253, i64 %255
  %257 = load i32, ptr %256, align 4, !tbaa !9
  %258 = add nsw i32 %257, 1
  store i32 %258, ptr %256, align 4, !tbaa !9
  br label %263

259:                                              ; preds = %244
  br label %260

260:                                              ; preds = %259
  %261 = load i32, ptr %13, align 4, !tbaa !9
  %262 = add nsw i32 %261, 1
  store i32 %262, ptr %13, align 4, !tbaa !9
  br label %240, !llvm.loop !30

263:                                              ; preds = %252, %240
  %264 = load i32, ptr %13, align 4, !tbaa !9
  %265 = load i32, ptr %21, align 4, !tbaa !9
  %266 = icmp eq i32 %264, %265
  br i1 %266, label %267, label %278

267:                                              ; preds = %263
  %268 = load i32, ptr %14, align 4, !tbaa !9
  %269 = load ptr, ptr %35, align 8, !tbaa !5
  %270 = load i32, ptr %21, align 4, !tbaa !9
  %271 = sext i32 %270 to i64
  %272 = getelementptr inbounds i32, ptr %269, i64 %271
  store i32 %268, ptr %272, align 4, !tbaa !9
  %273 = load ptr, ptr %36, align 8, !tbaa !5
  %274 = load i32, ptr %21, align 4, !tbaa !9
  %275 = add nsw i32 %274, 1
  store i32 %275, ptr %21, align 4, !tbaa !9
  %276 = sext i32 %274 to i64
  %277 = getelementptr inbounds i32, ptr %273, i64 %276
  store i32 1, ptr %277, align 4, !tbaa !9
  br label %278

278:                                              ; preds = %267, %263
  br label %279

279:                                              ; preds = %278, %232
  br label %280

280:                                              ; preds = %279, %208
  br label %281

281:                                              ; preds = %280
  %282 = load i32, ptr %12, align 4, !tbaa !9
  %283 = add nsw i32 %282, 1
  store i32 %283, ptr %12, align 4, !tbaa !9
  br label %189, !llvm.loop !31

284:                                              ; preds = %189
  %285 = load i32, ptr %24, align 4, !tbaa !9
  %286 = load i32, ptr %25, align 4, !tbaa !9
  %287 = icmp ne i32 %285, %286
  br i1 %287, label %288, label %493

288:                                              ; preds = %284
  %289 = load ptr, ptr %34, align 8, !tbaa !5
  %290 = load i32, ptr %8, align 4, !tbaa !9
  %291 = sext i32 %290 to i64
  %292 = getelementptr inbounds i32, ptr %289, i64 %291
  %293 = load i32, ptr %292, align 4, !tbaa !9
  %294 = add nsw i32 %293, 1
  store i32 %294, ptr %292, align 4, !tbaa !9
  %295 = load ptr, ptr %29, align 8, !tbaa !5
  %296 = load i32, ptr %25, align 4, !tbaa !9
  %297 = sext i32 %296 to i64
  %298 = getelementptr inbounds i32, ptr %295, i64 %297
  %299 = load i32, ptr %298, align 4, !tbaa !9
  %300 = load ptr, ptr %37, align 8, !tbaa !5
  %301 = load i32, ptr %8, align 4, !tbaa !9
  %302 = sext i32 %301 to i64
  %303 = getelementptr inbounds i32, ptr %300, i64 %302
  %304 = load i32, ptr %303, align 4, !tbaa !9
  %305 = add nsw i32 %304, %299
  store i32 %305, ptr %303, align 4, !tbaa !9
  %306 = load ptr, ptr %27, align 8, !tbaa !5
  %307 = load i32, ptr %25, 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
  store i32 %310, ptr %18, align 4, !tbaa !9
  %311 = load ptr, ptr %27, align 8, !tbaa !5
  %312 = load i32, ptr %25, align 4, !tbaa !9
  %313 = add nsw i32 %312, 1
  %314 = sext i32 %313 to i64
  %315 = getelementptr inbounds i32, ptr %311, i64 %314
  %316 = load i32, ptr %315, align 4, !tbaa !9
  store i32 %316, ptr %19, align 4, !tbaa !9
  %317 = load i32, ptr %18, align 4, !tbaa !9
  store i32 %317, ptr %12, align 4, !tbaa !9
  br label %318

318:                                              ; preds = %410, %288
  %319 = load i32, ptr %12, align 4, !tbaa !9
  %320 = load i32, ptr %19, align 4, !tbaa !9
  %321 = icmp slt i32 %319, %320
  br i1 %321, label %322, label %413

322:                                              ; preds = %318
  %323 = load ptr, ptr %30, align 8, !tbaa !5
  %324 = load i32, ptr %12, align 4, !tbaa !9
  %325 = sext i32 %324 to i64
  %326 = getelementptr inbounds i32, ptr %323, i64 %325
  %327 = load i32, ptr %326, align 4, !tbaa !9
  store i32 %327, ptr %14, align 4, !tbaa !9
  %328 = load i32, ptr %14, align 4, !tbaa !9
  %329 = load i32, ptr %26, align 4, !tbaa !9
  %330 = and i32 %328, %329
  store i32 %330, ptr %15, align 4, !tbaa !9
  %331 = load ptr, ptr %32, align 8, !tbaa !5
  %332 = load i32, ptr %15, align 4, !tbaa !9
  %333 = sext i32 %332 to i64
  %334 = getelementptr inbounds i32, ptr %331, i64 %333
  %335 = load i32, ptr %334, align 4, !tbaa !9
  store i32 %335, ptr %17, align 4, !tbaa !9
  %336 = icmp eq i32 %335, -1
  br i1 %336, label %337, label %353

337:                                              ; preds = %322
  %338 = load i32, ptr %14, align 4, !tbaa !9
  %339 = load ptr, ptr %35, align 8, !tbaa !5
  %340 = load i32, ptr %21, align 4, !tbaa !9
  %341 = sext i32 %340 to i64
  %342 = getelementptr inbounds i32, ptr %339, i64 %341
  store i32 %338, ptr %342, align 4, !tbaa !9
  %343 = load ptr, ptr %36, align 8, !tbaa !5
  %344 = load i32, ptr %21, align 4, !tbaa !9
  %345 = sext i32 %344 to i64
  %346 = getelementptr inbounds i32, ptr %343, i64 %345
  store i32 1, ptr %346, align 4, !tbaa !9
  %347 = load i32, ptr %21, align 4, !tbaa !9
  %348 = add nsw i32 %347, 1
  store i32 %348, ptr %21, align 4, !tbaa !9
  %349 = load ptr, ptr %32, align 8, !tbaa !5
  %350 = load i32, ptr %15, align 4, !tbaa !9
  %351 = sext i32 %350 to i64
  %352 = getelementptr inbounds i32, ptr %349, i64 %351
  store i32 %347, ptr %352, align 4, !tbaa !9
  br label %409

353:                                              ; preds = %322
  %354 = load ptr, ptr %35, align 8, !tbaa !5
  %355 = load i32, ptr %17, align 4, !tbaa !9
  %356 = sext i32 %355 to i64
  %357 = getelementptr inbounds i32, ptr %354, i64 %356
  %358 = load i32, ptr %357, align 4, !tbaa !9
  %359 = load i32, ptr %14, align 4, !tbaa !9
  %360 = icmp eq i32 %358, %359
  br i1 %360, label %361, label %368

361:                                              ; preds = %353
  %362 = load ptr, ptr %36, align 8, !tbaa !5
  %363 = load i32, ptr %17, align 4, !tbaa !9
  %364 = sext i32 %363 to i64
  %365 = getelementptr inbounds i32, ptr %362, i64 %364
  %366 = load i32, ptr %365, align 4, !tbaa !9
  %367 = add nsw i32 %366, 1
  store i32 %367, ptr %365, align 4, !tbaa !9
  br label %408

368:                                              ; preds = %353
  store i32 0, ptr %13, align 4, !tbaa !9
  br label %369

369:                                              ; preds = %389, %368
  %370 = load i32, ptr %13, align 4, !tbaa !9
  %371 = load i32, ptr %21, align 4, !tbaa !9
  %372 = icmp slt i32 %370, %371
  br i1 %372, label %373, label %392

373:                                              ; preds = %369
  %374 = load ptr, ptr %35, align 8, !tbaa !5
  %375 = load i32, ptr %13, align 4, !tbaa !9
  %376 = sext i32 %375 to i64
  %377 = getelementptr inbounds i32, ptr %374, i64 %376
  %378 = load i32, ptr %377, align 4, !tbaa !9
  %379 = load i32, ptr %14, align 4, !tbaa !9
  %380 = icmp eq i32 %378, %379
  br i1 %380, label %381, label %388

381:                                              ; preds = %373
  %382 = load ptr, ptr %36, align 8, !tbaa !5
  %383 = load i32, ptr %13, align 4, !tbaa !9
  %384 = sext i32 %383 to i64
  %385 = getelementptr inbounds i32, ptr %382, i64 %384
  %386 = load i32, ptr %385, align 4, !tbaa !9
  %387 = add nsw i32 %386, 1
  store i32 %387, ptr %385, align 4, !tbaa !9
  br label %392

388:                                              ; preds = %373
  br label %389

389:                                              ; preds = %388
  %390 = load i32, ptr %13, align 4, !tbaa !9
  %391 = add nsw i32 %390, 1
  store i32 %391, ptr %13, align 4, !tbaa !9
  br label %369, !llvm.loop !32

392:                                              ; preds = %381, %369
  %393 = load i32, ptr %13, align 4, !tbaa !9
  %394 = load i32, ptr %21, align 4, !tbaa !9
  %395 = icmp eq i32 %393, %394
  br i1 %395, label %396, label %407

396:                                              ; preds = %392
  %397 = load i32, ptr %14, align 4, !tbaa !9
  %398 = load ptr, ptr %35, align 8, !tbaa !5
  %399 = load i32, ptr %21, align 4, !tbaa !9
  %400 = sext i32 %399 to i64
  %401 = getelementptr inbounds i32, ptr %398, i64 %400
  store i32 %397, ptr %401, align 4, !tbaa !9
  %402 = load ptr, ptr %36, align 8, !tbaa !5
  %403 = load i32, ptr %21, align 4, !tbaa !9
  %404 = add nsw i32 %403, 1
  store i32 %404, ptr %21, align 4, !tbaa !9
  %405 = sext i32 %403 to i64
  %406 = getelementptr inbounds i32, ptr %402, i64 %405
  store i32 1, ptr %406, align 4, !tbaa !9
  br label %407

407:                                              ; preds = %396, %392
  br label %408

408:                                              ; preds = %407, %361
  br label %409

409:                                              ; preds = %408, %337
  br label %410

410:                                              ; preds = %409
  %411 = load i32, ptr %12, align 4, !tbaa !9
  %412 = add nsw i32 %411, 1
  store i32 %412, ptr %12, align 4, !tbaa !9
  br label %318, !llvm.loop !33

413:                                              ; preds = %318
  %414 = load ptr, ptr %32, align 8, !tbaa !5
  %415 = load i32, ptr %8, align 4, !tbaa !9
  %416 = load i32, ptr %26, align 4, !tbaa !9
  %417 = and i32 %415, %416
  %418 = sext i32 %417 to i64
  %419 = getelementptr inbounds i32, ptr %414, i64 %418
  %420 = load i32, ptr %419, align 4, !tbaa !9
  store i32 %420, ptr %13, align 4, !tbaa !9
  %421 = load i32, ptr %13, align 4, !tbaa !9
  %422 = icmp sge i32 %421, 0
  br i1 %422, label %423, label %450

423:                                              ; preds = %413
  %424 = load ptr, ptr %35, align 8, !tbaa !5
  %425 = load i32, ptr %13, 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 i32, ptr %8, align 4, !tbaa !9
  %430 = icmp ne i32 %428, %429
  br i1 %430, label %431, label %450

431:                                              ; preds = %423
  store i32 0, ptr %13, align 4, !tbaa !9
  br label %432

432:                                              ; preds = %446, %431
  %433 = load i32, ptr %13, align 4, !tbaa !9
  %434 = load i32, ptr %21, align 4, !tbaa !9
  %435 = icmp slt i32 %433, %434
  br i1 %435, label %436, label %449

436:                                              ; preds = %432
  %437 = load ptr, ptr %35, align 8, !tbaa !5
  %438 = load i32, ptr %13, align 4, !tbaa !9
  %439 = sext i32 %438 to i64
  %440 = getelementptr inbounds i32, ptr %437, i64 %439
  %441 = load i32, ptr %440, align 4, !tbaa !9
  %442 = load i32, ptr %8, align 4, !tbaa !9
  %443 = icmp eq i32 %441, %442
  br i1 %443, label %444, label %445

444:                                              ; preds = %436
  br label %449

445:                                              ; preds = %436
  br label %446

446:                                              ; preds = %445
  %447 = load i32, ptr %13, align 4, !tbaa !9
  %448 = add nsw i32 %447, 1
  store i32 %448, ptr %13, align 4, !tbaa !9
  br label %432, !llvm.loop !34

449:                                              ; preds = %444, %432
  br label %450

450:                                              ; preds = %449, %423, %413
  %451 = load i32, ptr %13, align 4, !tbaa !9
  %452 = icmp sge i32 %451, 0
  br i1 %452, label %453, label %492

453:                                              ; preds = %450
  %454 = load ptr, ptr %35, align 8, !tbaa !5
  %455 = load i32, ptr %13, align 4, !tbaa !9
  %456 = sext i32 %455 to i64
  %457 = getelementptr inbounds i32, ptr %454, i64 %456
  %458 = load i32, ptr %457, align 4, !tbaa !9
  %459 = load i32, ptr %8, align 4, !tbaa !9
  %460 = icmp eq i32 %458, %459
  br i1 %460, label %461, label %492

461:                                              ; preds = %453
  %462 = load ptr, ptr %36, align 8, !tbaa !5
  %463 = load i32, ptr %13, align 4, !tbaa !9
  %464 = sext i32 %463 to i64
  %465 = getelementptr inbounds i32, ptr %462, i64 %464
  %466 = load i32, ptr %465, align 4, !tbaa !9
  %467 = load ptr, ptr %37, align 8, !tbaa !5
  %468 = load i32, ptr %8, align 4, !tbaa !9
  %469 = sext i32 %468 to i64
  %470 = getelementptr inbounds i32, ptr %467, i64 %469
  %471 = load i32, ptr %470, align 4, !tbaa !9
  %472 = sub nsw i32 %471, %466
  store i32 %472, ptr %470, align 4, !tbaa !9
  %473 = load ptr, ptr %35, align 8, !tbaa !5
  %474 = load i32, ptr %21, align 4, !tbaa !9
  %475 = add nsw i32 %474, -1
  store i32 %475, ptr %21, align 4, !tbaa !9
  %476 = sext i32 %475 to i64
  %477 = getelementptr inbounds i32, ptr %473, i64 %476
  %478 = load i32, ptr %477, align 4, !tbaa !9
  %479 = load ptr, ptr %35, align 8, !tbaa !5
  %480 = load i32, ptr %13, align 4, !tbaa !9
  %481 = sext i32 %480 to i64
  %482 = getelementptr inbounds i32, ptr %479, i64 %481
  store i32 %478, ptr %482, align 4, !tbaa !9
  %483 = load ptr, ptr %36, align 8, !tbaa !5
  %484 = load i32, ptr %21, align 4, !tbaa !9
  %485 = sext i32 %484 to i64
  %486 = getelementptr inbounds i32, ptr %483, i64 %485
  %487 = load i32, ptr %486, align 4, !tbaa !9
  %488 = load ptr, ptr %36, align 8, !tbaa !5
  %489 = load i32, ptr %13, align 4, !tbaa !9
  %490 = sext i32 %489 to i64
  %491 = getelementptr inbounds i32, ptr %488, i64 %490
  store i32 %487, ptr %491, align 4, !tbaa !9
  br label %492

492:                                              ; preds = %461, %453, %450
  br label %493

493:                                              ; preds = %492, %284
  store i32 0, ptr %12, align 4, !tbaa !9
  br label %494

494:                                              ; preds = %509, %493
  %495 = load i32, ptr %12, align 4, !tbaa !9
  %496 = load i32, ptr %21, align 4, !tbaa !9
  %497 = icmp slt i32 %495, %496
  br i1 %497, label %498, label %512

498:                                              ; preds = %494
  %499 = load ptr, ptr %32, align 8, !tbaa !5
  %500 = load ptr, ptr %35, align 8, !tbaa !5
  %501 = load i32, ptr %12, 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 %26, align 4, !tbaa !9
  %506 = and i32 %504, %505
  %507 = sext i32 %506 to i64
  %508 = getelementptr inbounds i32, ptr %499, i64 %507
  store i32 -1, ptr %508, align 4, !tbaa !9
  br label %509

509:                                              ; preds = %498
  %510 = load i32, ptr %12, align 4, !tbaa !9
  %511 = add nsw i32 %510, 1
  store i32 %511, ptr %12, align 4, !tbaa !9
  br label %494, !llvm.loop !35

512:                                              ; preds = %494
  %513 = load ptr, ptr %32, align 8, !tbaa !5
  %514 = load i32, ptr %8, align 4, !tbaa !9
  %515 = load i32, ptr %26, align 4, !tbaa !9
  %516 = and i32 %514, %515
  %517 = sext i32 %516 to i64
  %518 = getelementptr inbounds i32, ptr %513, i64 %517
  store i32 -1, ptr %518, align 4, !tbaa !9
  %519 = load i32, ptr %21, align 4, !tbaa !9
  %520 = load i32, ptr %23, align 4, !tbaa !9
  %521 = add nsw i32 %520, %519
  store i32 %521, ptr %23, align 4, !tbaa !9
  %522 = load i32, ptr %23, align 4, !tbaa !9
  %523 = load ptr, ptr %33, align 8, !tbaa !5
  %524 = load i32, ptr %8, align 4, !tbaa !9
  %525 = add nsw i32 %524, 1
  store i32 %525, ptr %8, align 4, !tbaa !9
  %526 = sext i32 %525 to i64
  %527 = getelementptr inbounds i32, ptr %523, i64 %526
  store i32 %522, ptr %527, align 4, !tbaa !9
  %528 = load i32, ptr %21, align 4, !tbaa !9
  %529 = load ptr, ptr %35, align 8, !tbaa !5
  %530 = sext i32 %528 to i64
  %531 = getelementptr inbounds i32, ptr %529, i64 %530
  store ptr %531, ptr %35, align 8, !tbaa !5
  %532 = load i32, ptr %21, align 4, !tbaa !9
  %533 = load ptr, ptr %36, align 8, !tbaa !5
  %534 = sext i32 %532 to i64
  %535 = getelementptr inbounds i32, ptr %533, i64 %534
  store ptr %535, ptr %36, align 8, !tbaa !5
  br label %536

536:                                              ; preds = %512, %157
  %537 = load i32, ptr %11, align 4, !tbaa !9
  %538 = add nsw i32 %537, 1
  store i32 %538, ptr %11, align 4, !tbaa !9
  br label %140, !llvm.loop !36

539:                                              ; preds = %140
  %540 = load i32, ptr %23, align 4, !tbaa !9
  %541 = load ptr, ptr %40, align 8, !tbaa !5
  %542 = getelementptr inbounds %struct.graphdef, ptr %541, i32 0, i32 3
  store i32 %540, ptr %542, align 4, !tbaa !37
  %543 = load ptr, ptr %7, align 8, !tbaa !5
  %544 = load ptr, ptr %40, align 8, !tbaa !5
  call void @__ReAdjustMemory(ptr noundef %543, ptr noundef %544, i32 noundef 0)
  %545 = load ptr, ptr %6, align 8, !tbaa !5
  %546 = getelementptr inbounds %struct.controldef, ptr %545, i32 0, i32 1
  %547 = load i32, ptr %546, align 4, !tbaa !11
  %548 = and i32 %547, 1
  %549 = icmp ne i32 %548, 0
  br i1 %549, label %550, label %556

550:                                              ; preds = %539
  %551 = call double @__seconds()
  %552 = load ptr, ptr %6, align 8, !tbaa !5
  %553 = getelementptr inbounds %struct.controldef, ptr %552, i32 0, i32 15
  %554 = load double, ptr %553, align 8, !tbaa !16
  %555 = fadd double %554, %551
  store double %555, ptr %553, align 8, !tbaa !16
  br label %556

556:                                              ; preds = %550, %539
  %557 = load ptr, ptr %6, align 8, !tbaa !5
  %558 = load i32, ptr %26, align 4, !tbaa !9
  %559 = add nsw i32 %558, 1
  call void @__idxwspacefree(ptr noundef %557, i32 noundef %559)
  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 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
  ret void
}

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
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 = { 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 #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 4}
!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, !15, i64 128}
!17 = !{!18, !10, i64 16}
!18 = !{!"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}
!19 = !{!18, !10, i64 176}
!20 = !{!18, !6, i64 24}
!21 = !{!18, !6, i64 184}
!22 = !{!18, !6, i64 48}
!23 = !{!18, !6, i64 64}
!24 = !{!18, !6, i64 80}
!25 = !{!18, !6, i64 32}
!26 = !{!18, !6, i64 56}
!27 = !{!12, !6, i64 88}
!28 = distinct !{!28, !29}
!29 = !{!"llvm.loop.mustprogress"}
!30 = distinct !{!30, !29}
!31 = distinct !{!31, !29}
!32 = distinct !{!32, !29}
!33 = distinct !{!33, !29}
!34 = distinct !{!34, !29}
!35 = distinct !{!35, !29}
!36 = distinct !{!36, !29}
!37 = !{!18, !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"

declare double @__seconds() local_unnamed_addr #0

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

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

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

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

declare void @__idxwspacefree(ptr noundef, i32 noundef) local_unnamed_addr #0

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

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

14:                                               ; preds = %9, %5
  %15 = getelementptr inbounds i8, ptr %1, i64 16
  %16 = load i32, ptr %15, align 8, !tbaa !15
  %17 = getelementptr inbounds i8, ptr %1, i64 24
  %18 = load ptr, ptr %17, align 8, !tbaa !17
  %19 = getelementptr inbounds i8, ptr %1, i64 48
  %20 = load ptr, ptr %19, align 8, !tbaa !18
  %21 = getelementptr inbounds i8, ptr %1, i64 64
  %22 = load ptr, ptr %21, align 8, !tbaa !19
  %23 = getelementptr inbounds i8, ptr %1, i64 80
  %24 = load ptr, ptr %23, align 8, !tbaa !20
  %25 = tail call ptr @__SetUpCoarseGraph(ptr noundef %1, i32 noundef %2, i32 noundef 0)
  %26 = getelementptr inbounds i8, ptr %25, i64 24
  %27 = load ptr, ptr %26, align 8, !tbaa !17
  %28 = getelementptr inbounds i8, ptr %25, i64 32
  %29 = load ptr, ptr %28, align 8, !tbaa !21
  %30 = getelementptr inbounds i8, ptr %25, i64 64
  %31 = load ptr, ptr %30, align 8, !tbaa !19
  %32 = getelementptr inbounds i8, ptr %25, i64 48
  %33 = load ptr, ptr %32, align 8, !tbaa !18
  %34 = getelementptr inbounds i8, ptr %25, i64 56
  %35 = load ptr, ptr %34, align 8, !tbaa !22
  %36 = sext i32 %16 to i64
  %37 = getelementptr inbounds i32, ptr %18, i64 %36
  %38 = load i32, ptr %37, align 4, !tbaa !23
  %39 = getelementptr inbounds i8, ptr %0, i64 88
  %40 = load ptr, ptr %39, align 8, !tbaa !24
  %41 = sext i32 %38 to i64
  %42 = shl nsw i64 %41, 2
  tail call void @llvm.memcpy.p0.p0.i64(ptr align 4 %40, ptr align 4 %20, i64 %42, i1 false)
  %43 = icmp sgt i32 %38, 0
  br i1 %43, label %.lr.ph.preheader, label %._crit_edge

.lr.ph.preheader:                                 ; preds = %14
  %wide.trip.count = zext nneg i32 %38 to i64
  %xtraiter = and i64 %wide.trip.count, 3
  %44 = icmp ult i32 %38, 4
  br i1 %44, 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 ]
  %45 = getelementptr inbounds i32, ptr %40, i64 %indvars.iv
  %46 = load i32, ptr %45, align 4, !tbaa !23
  %47 = sext i32 %46 to i64
  %48 = getelementptr inbounds i32, ptr %24, i64 %47
  %49 = load i32, ptr %48, align 4, !tbaa !23
  store i32 %49, ptr %45, align 4, !tbaa !23
  %indvars.iv.next = or disjoint i64 %indvars.iv, 1
  %50 = getelementptr inbounds i32, ptr %40, i64 %indvars.iv.next
  %51 = load i32, ptr %50, align 4, !tbaa !23
  %52 = sext i32 %51 to i64
  %53 = getelementptr inbounds i32, ptr %24, i64 %52
  %54 = load i32, ptr %53, align 4, !tbaa !23
  store i32 %54, ptr %50, align 4, !tbaa !23
  %indvars.iv.next.1 = or disjoint i64 %indvars.iv, 2
  %55 = getelementptr inbounds i32, ptr %40, i64 %indvars.iv.next.1
  %56 = load i32, ptr %55, align 4, !tbaa !23
  %57 = sext i32 %56 to i64
  %58 = getelementptr inbounds i32, ptr %24, i64 %57
  %59 = load i32, ptr %58, align 4, !tbaa !23
  store i32 %59, ptr %55, align 4, !tbaa !23
  %indvars.iv.next.2 = or disjoint i64 %indvars.iv, 3
  %60 = getelementptr inbounds i32, ptr %40, i64 %indvars.iv.next.2
  %61 = load i32, ptr %60, align 4, !tbaa !23
  %62 = sext i32 %61 to i64
  %63 = getelementptr inbounds i32, ptr %24, i64 %62
  %64 = load i32, ptr %63, align 4, !tbaa !23
  store i32 %64, ptr %60, align 4, !tbaa !23
  %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 !25

._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 ]
  %65 = getelementptr inbounds i32, ptr %40, i64 %indvars.iv.epil
  %66 = load i32, ptr %65, align 4, !tbaa !23
  %67 = sext i32 %66 to i64
  %68 = getelementptr inbounds i32, ptr %24, i64 %67
  %69 = load i32, ptr %68, align 4, !tbaa !23
  store i32 %69, ptr %65, align 4, !tbaa !23
  %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 !27

._crit_edge:                                      ; preds = %._crit_edge.loopexit.unr-lcssa, %.lr.ph.epil, %14
  %70 = tail call ptr @__idxwspacemalloc(ptr noundef %0, i32 noundef 2048) #3
  %71 = tail call ptr @__idxset(i32 noundef 2048, i32 noundef -1, ptr noundef %70) #3
  store i32 0, ptr %27, align 4, !tbaa !23
  %72 = icmp sgt i32 %16, 0
  br i1 %72, label %.lr.ph272.preheader, label %._crit_edge273

.lr.ph272.preheader:                              ; preds = %._crit_edge
  %wide.trip.count316 = zext nneg i32 %16 to i64
  br label %.lr.ph272

.lr.ph272:                                        ; preds = %.lr.ph272.preheader, %247
  %indvars.iv313 = phi i64 [ 0, %.lr.ph272.preheader ], [ %indvars.iv.next314, %247 ]
  %.0268 = phi i32 [ 0, %.lr.ph272.preheader ], [ %.1, %247 ]
  %.0205266 = phi ptr [ %35, %.lr.ph272.preheader ], [ %.1206, %247 ]
  %.0207265 = phi ptr [ %33, %.lr.ph272.preheader ], [ %.1208, %247 ]
  %.0213264 = phi i32 [ 0, %.lr.ph272.preheader ], [ %.1214, %247 ]
  %73 = getelementptr inbounds i32, ptr %4, i64 %indvars.iv313
  %74 = load i32, ptr %73, align 4, !tbaa !23
  %75 = sext i32 %74 to i64
  %76 = getelementptr inbounds i32, ptr %24, i64 %75
  %77 = load i32, ptr %76, align 4, !tbaa !23
  %.not223 = icmp eq i32 %77, %.0268
  br i1 %.not223, label %78, label %247

78:                                               ; preds = %.lr.ph272
  %79 = getelementptr inbounds i32, ptr %3, i64 %75
  %80 = load i32, ptr %79, align 4, !tbaa !23
  %81 = sext i32 %.0268 to i64
  %82 = getelementptr inbounds i32, ptr %29, i64 %81
  store i32 1, ptr %82, align 4, !tbaa !23
  %83 = getelementptr inbounds i32, ptr %22, i64 %75
  %84 = load i32, ptr %83, align 4, !tbaa !23
  %85 = getelementptr inbounds i32, ptr %31, i64 %81
  store i32 %84, ptr %85, align 4, !tbaa !23
  %86 = getelementptr inbounds i32, ptr %18, i64 %75
  %87 = load i32, ptr %86, align 4, !tbaa !23
  %88 = getelementptr i8, ptr %86, i64 4
  %89 = load i32, ptr %88, align 4, !tbaa !23
  %90 = icmp slt i32 %87, %89
  br i1 %90, label %.lr.ph244.preheader, label %._crit_edge245

.lr.ph244.preheader:                              ; preds = %78
  %91 = sext i32 %87 to i64
  %wide.trip.count291 = sext i32 %89 to i64
  br label %.lr.ph244

.lr.ph244:                                        ; preds = %.lr.ph244.preheader, %128
  %indvars.iv288 = phi i64 [ %91, %.lr.ph244.preheader ], [ %indvars.iv.next289, %128 ]
  %.0209241 = phi i32 [ 0, %.lr.ph244.preheader ], [ %.1210, %128 ]
  %92 = getelementptr inbounds i32, ptr %40, i64 %indvars.iv288
  %93 = load i32, ptr %92, align 4, !tbaa !23
  %94 = and i32 %93, 2047
  %95 = zext nneg i32 %94 to i64
  %96 = getelementptr inbounds i32, ptr %71, i64 %95
  %97 = load i32, ptr %96, align 4, !tbaa !23
  %98 = icmp eq i32 %97, -1
  br i1 %98, label %99, label %104

99:                                               ; preds = %.lr.ph244
  %100 = sext i32 %.0209241 to i64
  %101 = getelementptr inbounds i32, ptr %.0207265, i64 %100
  store i32 %93, ptr %101, align 4, !tbaa !23
  %102 = getelementptr inbounds i32, ptr %.0205266, i64 %100
  store i32 1, ptr %102, align 4, !tbaa !23
  %103 = add nsw i32 %.0209241, 1
  store i32 %.0209241, ptr %96, align 4, !tbaa !23
  br label %128

104:                                              ; preds = %.lr.ph244
  %105 = sext i32 %97 to i64
  %106 = getelementptr inbounds i32, ptr %.0207265, i64 %105
  %107 = load i32, ptr %106, align 4, !tbaa !23
  %108 = icmp eq i32 %107, %93
  br i1 %108, label %110, label %.preheader230

.preheader230:                                    ; preds = %104
  %109 = icmp sgt i32 %.0209241, 0
  br i1 %109, label %.lr.ph240.preheader, label %.loopexit231

.lr.ph240.preheader:                              ; preds = %.preheader230
  %wide.trip.count286 = zext nneg i32 %.0209241 to i64
  br label %.lr.ph240

110:                                              ; preds = %104
  %111 = getelementptr inbounds i32, ptr %.0205266, i64 %105
  %112 = load i32, ptr %111, align 4, !tbaa !23
  %113 = add nsw i32 %112, 1
  store i32 %113, ptr %111, align 4, !tbaa !23
  br label %128

.lr.ph240:                                        ; preds = %.lr.ph240.preheader, %122
  %indvars.iv283 = phi i64 [ 0, %.lr.ph240.preheader ], [ %indvars.iv.next284, %122 ]
  %114 = getelementptr inbounds i32, ptr %.0207265, i64 %indvars.iv283
  %115 = load i32, ptr %114, align 4, !tbaa !23
  %116 = icmp eq i32 %115, %93
  br i1 %116, label %117, label %122

117:                                              ; preds = %.lr.ph240
  %118 = trunc nuw nsw i64 %indvars.iv283 to i32
  %119 = getelementptr inbounds i32, ptr %.0205266, i64 %indvars.iv283
  %120 = load i32, ptr %119, align 4, !tbaa !23
  %121 = add nsw i32 %120, 1
  store i32 %121, ptr %119, align 4, !tbaa !23
  br label %.loopexit231

122:                                              ; preds = %.lr.ph240
  %indvars.iv.next284 = add nuw nsw i64 %indvars.iv283, 1
  %exitcond287.not = icmp eq i64 %indvars.iv.next284, %wide.trip.count286
  br i1 %exitcond287.not, label %.loopexit231.thread, label %.lr.ph240, !llvm.loop !29

.loopexit231:                                     ; preds = %.preheader230, %117
  %.0202234 = phi i32 [ %118, %117 ], [ 0, %.preheader230 ]
  %123 = icmp eq i32 %.0202234, %.0209241
  br i1 %123, label %.loopexit231.thread, label %128

.loopexit231.thread:                              ; preds = %122, %.loopexit231
  %124 = sext i32 %.0209241 to i64
  %125 = getelementptr inbounds i32, ptr %.0207265, i64 %124
  store i32 %93, ptr %125, align 4, !tbaa !23
  %126 = add nsw i32 %.0209241, 1
  %127 = getelementptr inbounds i32, ptr %.0205266, i64 %124
  store i32 1, ptr %127, align 4, !tbaa !23
  br label %128

128:                                              ; preds = %99, %.loopexit231, %.loopexit231.thread, %110
  %.1210 = phi i32 [ %103, %99 ], [ %.0209241, %110 ], [ %126, %.loopexit231.thread ], [ %.0209241, %.loopexit231 ]
  %indvars.iv.next289 = add nsw i64 %indvars.iv288, 1
  %exitcond292.not = icmp eq i64 %indvars.iv.next289, %wide.trip.count291
  br i1 %exitcond292.not, label %._crit_edge245, label %.lr.ph244, !llvm.loop !30

._crit_edge245:                                   ; preds = %128, %78
  %.0209.lcssa = phi i32 [ 0, %78 ], [ %.1210, %128 ]
  %.not224 = icmp eq i32 %74, %80
  br i1 %.not224, label %.thread228, label %129

129:                                              ; preds = %._crit_edge245
  %130 = load i32, ptr %82, align 4, !tbaa !23
  %131 = add nsw i32 %130, 1
  store i32 %131, ptr %82, align 4, !tbaa !23
  %132 = sext i32 %80 to i64
  %133 = getelementptr inbounds i32, ptr %22, i64 %132
  %134 = load i32, ptr %133, align 4, !tbaa !23
  %135 = load i32, ptr %85, align 4, !tbaa !23
  %136 = add nsw i32 %135, %134
  store i32 %136, ptr %85, align 4, !tbaa !23
  %137 = getelementptr inbounds i32, ptr %18, i64 %132
  %138 = load i32, ptr %137, align 4, !tbaa !23
  %139 = getelementptr i8, ptr %137, i64 4
  %140 = load i32, ptr %139, align 4, !tbaa !23
  %141 = icmp slt i32 %138, %140
  br i1 %141, label %.lr.ph253.preheader, label %._crit_edge254

.lr.ph253.preheader:                              ; preds = %129
  %142 = sext i32 %138 to i64
  %wide.trip.count301 = sext i32 %140 to i64
  br label %.lr.ph253

.lr.ph253:                                        ; preds = %.lr.ph253.preheader, %179
  %indvars.iv298 = phi i64 [ %142, %.lr.ph253.preheader ], [ %indvars.iv.next299, %179 ]
  %.2211250 = phi i32 [ %.0209.lcssa, %.lr.ph253.preheader ], [ %.3212, %179 ]
  %143 = getelementptr inbounds i32, ptr %40, i64 %indvars.iv298
  %144 = load i32, ptr %143, align 4, !tbaa !23
  %145 = and i32 %144, 2047
  %146 = zext nneg i32 %145 to i64
  %147 = getelementptr inbounds i32, ptr %71, i64 %146
  %148 = load i32, ptr %147, align 4, !tbaa !23
  %149 = icmp eq i32 %148, -1
  br i1 %149, label %150, label %155

150:                                              ; preds = %.lr.ph253
  %151 = sext i32 %.2211250 to i64
  %152 = getelementptr inbounds i32, ptr %.0207265, i64 %151
  store i32 %144, ptr %152, align 4, !tbaa !23
  %153 = getelementptr inbounds i32, ptr %.0205266, i64 %151
  store i32 1, ptr %153, align 4, !tbaa !23
  %154 = add nsw i32 %.2211250, 1
  store i32 %.2211250, ptr %147, align 4, !tbaa !23
  br label %179

155:                                              ; preds = %.lr.ph253
  %156 = sext i32 %148 to i64
  %157 = getelementptr inbounds i32, ptr %.0207265, i64 %156
  %158 = load i32, ptr %157, align 4, !tbaa !23
  %159 = icmp eq i32 %158, %144
  br i1 %159, label %161, label %.preheader

.preheader:                                       ; preds = %155
  %160 = icmp sgt i32 %.2211250, 0
  br i1 %160, label %.lr.ph248.preheader, label %.loopexit

.lr.ph248.preheader:                              ; preds = %.preheader
  %wide.trip.count296 = zext nneg i32 %.2211250 to i64
  br label %.lr.ph248

161:                                              ; preds = %155
  %162 = getelementptr inbounds i32, ptr %.0205266, i64 %156
  %163 = load i32, ptr %162, align 4, !tbaa !23
  %164 = add nsw i32 %163, 1
  store i32 %164, ptr %162, align 4, !tbaa !23
  br label %179

.lr.ph248:                                        ; preds = %.lr.ph248.preheader, %173
  %indvars.iv293 = phi i64 [ 0, %.lr.ph248.preheader ], [ %indvars.iv.next294, %173 ]
  %165 = getelementptr inbounds i32, ptr %.0207265, i64 %indvars.iv293
  %166 = load i32, ptr %165, align 4, !tbaa !23
  %167 = icmp eq i32 %166, %144
  br i1 %167, label %168, label %173

168:                                              ; preds = %.lr.ph248
  %169 = trunc nuw nsw i64 %indvars.iv293 to i32
  %170 = getelementptr inbounds i32, ptr %.0205266, i64 %indvars.iv293
  %171 = load i32, ptr %170, align 4, !tbaa !23
  %172 = add nsw i32 %171, 1
  store i32 %172, ptr %170, align 4, !tbaa !23
  br label %.loopexit

173:                                              ; preds = %.lr.ph248
  %indvars.iv.next294 = add nuw nsw i64 %indvars.iv293, 1
  %exitcond297.not = icmp eq i64 %indvars.iv.next294, %wide.trip.count296
  br i1 %exitcond297.not, label %.loopexit.thread, label %.lr.ph248, !llvm.loop !31

.loopexit:                                        ; preds = %.preheader, %168
  %.1203236 = phi i32 [ %169, %168 ], [ 0, %.preheader ]
  %174 = icmp eq i32 %.1203236, %.2211250
  br i1 %174, label %.loopexit.thread, label %179

.loopexit.thread:                                 ; preds = %173, %.loopexit
  %175 = sext i32 %.2211250 to i64
  %176 = getelementptr inbounds i32, ptr %.0207265, i64 %175
  store i32 %144, ptr %176, align 4, !tbaa !23
  %177 = add nsw i32 %.2211250, 1
  %178 = getelementptr inbounds i32, ptr %.0205266, i64 %175
  store i32 1, ptr %178, align 4, !tbaa !23
  br label %179

179:                                              ; preds = %150, %.loopexit, %.loopexit.thread, %161
  %.3212 = phi i32 [ %154, %150 ], [ %.2211250, %161 ], [ %177, %.loopexit.thread ], [ %.2211250, %.loopexit ]
  %indvars.iv.next299 = add nsw i64 %indvars.iv298, 1
  %exitcond302.not = icmp eq i64 %indvars.iv.next299, %wide.trip.count301
  br i1 %exitcond302.not, label %._crit_edge254, label %.lr.ph253, !llvm.loop !32

._crit_edge254:                                   ; preds = %179, %129
  %.2211.lcssa = phi i32 [ %.0209.lcssa, %129 ], [ %.3212, %179 ]
  %180 = and i32 %.0268, 2047
  %181 = zext nneg i32 %180 to i64
  %182 = getelementptr inbounds i32, ptr %71, i64 %181
  %183 = load i32, ptr %182, align 4, !tbaa !23
  %184 = icmp sgt i32 %183, -1
  br i1 %184, label %185, label %.thread228

185:                                              ; preds = %._crit_edge254
  %186 = zext nneg i32 %183 to i64
  %187 = getelementptr inbounds i32, ptr %.0207265, i64 %186
  %188 = load i32, ptr %187, align 4, !tbaa !23
  %.not225 = icmp eq i32 %188, %.0268
  br i1 %.not225, label %.thread, label %.preheader232

.preheader232:                                    ; preds = %185
  %189 = icmp sgt i32 %.2211.lcssa, 0
  br i1 %189, label %.lr.ph257.preheader, label %.thread

.lr.ph257.preheader:                              ; preds = %.preheader232
  %wide.trip.count306 = zext nneg i32 %.2211.lcssa to i64
  br label %.lr.ph257

.lr.ph257:                                        ; preds = %.lr.ph257.preheader, %193
  %indvars.iv303 = phi i64 [ 0, %.lr.ph257.preheader ], [ %indvars.iv.next304, %193 ]
  %190 = getelementptr inbounds i32, ptr %.0207265, i64 %indvars.iv303
  %191 = load i32, ptr %190, align 4, !tbaa !23
  %192 = icmp eq i32 %191, %.0268
  br i1 %192, label %.thread.loopexit.split.loop.exit, label %193

193:                                              ; preds = %.lr.ph257
  %indvars.iv.next304 = add nuw nsw i64 %indvars.iv303, 1
  %exitcond307.not = icmp eq i64 %indvars.iv.next304, %wide.trip.count306
  br i1 %exitcond307.not, label %.thread, label %.lr.ph257, !llvm.loop !33

.thread.loopexit.split.loop.exit:                 ; preds = %.lr.ph257
  %194 = trunc nuw nsw i64 %indvars.iv303 to i32
  br label %.thread

.thread:                                          ; preds = %193, %.thread.loopexit.split.loop.exit, %.preheader232, %185
  %.3227 = phi i32 [ %183, %185 ], [ 0, %.preheader232 ], [ %194, %.thread.loopexit.split.loop.exit ], [ %.2211.lcssa, %193 ]
  %195 = zext nneg i32 %.3227 to i64
  %196 = getelementptr inbounds i32, ptr %.0207265, i64 %195
  %197 = load i32, ptr %196, align 4, !tbaa !23
  %198 = icmp eq i32 %197, %.0268
  br i1 %198, label %199, label %.thread228

199:                                              ; preds = %.thread
  %200 = getelementptr inbounds i32, ptr %.0205266, i64 %195
  %201 = load i32, ptr %200, align 4, !tbaa !23
  %202 = load i32, ptr %85, align 4, !tbaa !23
  %203 = sub nsw i32 %202, %201
  store i32 %203, ptr %85, align 4, !tbaa !23
  %204 = add nsw i32 %.2211.lcssa, -1
  %205 = sext i32 %204 to i64
  %206 = getelementptr inbounds i32, ptr %.0207265, i64 %205
  %207 = load i32, ptr %206, align 4, !tbaa !23
  store i32 %207, ptr %196, align 4, !tbaa !23
  %208 = getelementptr inbounds i32, ptr %.0205266, i64 %205
  %209 = load i32, ptr %208, align 4, !tbaa !23
  store i32 %209, ptr %200, align 4, !tbaa !23
  br label %.thread228

.thread228:                                       ; preds = %._crit_edge254, %.thread, %199, %._crit_edge245
  %.4 = phi i32 [ %204, %199 ], [ %.2211.lcssa, %.thread ], [ %.0209.lcssa, %._crit_edge245 ], [ %.2211.lcssa, %._crit_edge254 ]
  %210 = icmp sgt i32 %.4, 0
  br i1 %210, label %.lr.ph262.preheader, label %._crit_edge263

.lr.ph262.preheader:                              ; preds = %.thread228
  %wide.trip.count311 = zext nneg i32 %.4 to i64
  %xtraiter330 = and i64 %wide.trip.count311, 3
  %211 = icmp ult i32 %.4, 4
  br i1 %211, label %._crit_edge263.loopexit.unr-lcssa, label %.lr.ph262.preheader.new

.lr.ph262.preheader.new:                          ; preds = %.lr.ph262.preheader
  %unroll_iter333 = and i64 %wide.trip.count311, 2147483644
  br label %.lr.ph262

.lr.ph262:                                        ; preds = %.lr.ph262, %.lr.ph262.preheader.new
  %indvars.iv308 = phi i64 [ 0, %.lr.ph262.preheader.new ], [ %indvars.iv.next309.3, %.lr.ph262 ]
  %niter334 = phi i64 [ 0, %.lr.ph262.preheader.new ], [ %niter334.next.3, %.lr.ph262 ]
  %212 = getelementptr inbounds i32, ptr %.0207265, i64 %indvars.iv308
  %213 = load i32, ptr %212, align 4, !tbaa !23
  %214 = and i32 %213, 2047
  %215 = zext nneg i32 %214 to i64
  %216 = getelementptr inbounds i32, ptr %71, i64 %215
  store i32 -1, ptr %216, align 4, !tbaa !23
  %indvars.iv.next309 = or disjoint i64 %indvars.iv308, 1
  %217 = getelementptr inbounds i32, ptr %.0207265, i64 %indvars.iv.next309
  %218 = load i32, ptr %217, align 4, !tbaa !23
  %219 = and i32 %218, 2047
  %220 = zext nneg i32 %219 to i64
  %221 = getelementptr inbounds i32, ptr %71, i64 %220
  store i32 -1, ptr %221, align 4, !tbaa !23
  %indvars.iv.next309.1 = or disjoint i64 %indvars.iv308, 2
  %222 = getelementptr inbounds i32, ptr %.0207265, i64 %indvars.iv.next309.1
  %223 = load i32, ptr %222, align 4, !tbaa !23
  %224 = and i32 %223, 2047
  %225 = zext nneg i32 %224 to i64
  %226 = getelementptr inbounds i32, ptr %71, i64 %225
  store i32 -1, ptr %226, align 4, !tbaa !23
  %indvars.iv.next309.2 = or disjoint i64 %indvars.iv308, 3
  %227 = getelementptr inbounds i32, ptr %.0207265, i64 %indvars.iv.next309.2
  %228 = load i32, ptr %227, align 4, !tbaa !23
  %229 = and i32 %228, 2047
  %230 = zext nneg i32 %229 to i64
  %231 = getelementptr inbounds i32, ptr %71, i64 %230
  store i32 -1, ptr %231, align 4, !tbaa !23
  %indvars.iv.next309.3 = add nuw nsw i64 %indvars.iv308, 4
  %niter334.next.3 = add i64 %niter334, 4
  %niter334.ncmp.3 = icmp eq i64 %niter334.next.3, %unroll_iter333
  br i1 %niter334.ncmp.3, label %._crit_edge263.loopexit.unr-lcssa, label %.lr.ph262, !llvm.loop !34

._crit_edge263.loopexit.unr-lcssa:                ; preds = %.lr.ph262, %.lr.ph262.preheader
  %indvars.iv308.unr = phi i64 [ 0, %.lr.ph262.preheader ], [ %indvars.iv.next309.3, %.lr.ph262 ]
  %lcmp.mod332.not = icmp eq i64 %xtraiter330, 0
  br i1 %lcmp.mod332.not, label %._crit_edge263, label %.lr.ph262.epil

.lr.ph262.epil:                                   ; preds = %._crit_edge263.loopexit.unr-lcssa, %.lr.ph262.epil
  %indvars.iv308.epil = phi i64 [ %indvars.iv.next309.epil, %.lr.ph262.epil ], [ %indvars.iv308.unr, %._crit_edge263.loopexit.unr-lcssa ]
  %epil.iter331 = phi i64 [ %epil.iter331.next, %.lr.ph262.epil ], [ 0, %._crit_edge263.loopexit.unr-lcssa ]
  %232 = getelementptr inbounds i32, ptr %.0207265, i64 %indvars.iv308.epil
  %233 = load i32, ptr %232, align 4, !tbaa !23
  %234 = and i32 %233, 2047
  %235 = zext nneg i32 %234 to i64
  %236 = getelementptr inbounds i32, ptr %71, i64 %235
  store i32 -1, ptr %236, align 4, !tbaa !23
  %indvars.iv.next309.epil = add nuw nsw i64 %indvars.iv308.epil, 1
  %epil.iter331.next = add i64 %epil.iter331, 1
  %epil.iter331.cmp.not = icmp eq i64 %epil.iter331.next, %xtraiter330
  br i1 %epil.iter331.cmp.not, label %._crit_edge263, label %.lr.ph262.epil, !llvm.loop !35

._crit_edge263:                                   ; preds = %._crit_edge263.loopexit.unr-lcssa, %.lr.ph262.epil, %.thread228
  %237 = and i32 %.0268, 2047
  %238 = zext nneg i32 %237 to i64
  %239 = getelementptr inbounds i32, ptr %71, i64 %238
  store i32 -1, ptr %239, align 4, !tbaa !23
  %240 = add nsw i32 %.4, %.0213264
  %241 = add nsw i32 %.0268, 1
  %242 = sext i32 %241 to i64
  %243 = getelementptr inbounds i32, ptr %27, i64 %242
  store i32 %240, ptr %243, align 4, !tbaa !23
  %244 = sext i32 %.4 to i64
  %245 = getelementptr inbounds i32, ptr %.0207265, i64 %244
  %246 = getelementptr inbounds i32, ptr %.0205266, i64 %244
  br label %247

247:                                              ; preds = %.lr.ph272, %._crit_edge263
  %.1214 = phi i32 [ %.0213264, %.lr.ph272 ], [ %240, %._crit_edge263 ]
  %.1208 = phi ptr [ %.0207265, %.lr.ph272 ], [ %245, %._crit_edge263 ]
  %.1206 = phi ptr [ %.0205266, %.lr.ph272 ], [ %246, %._crit_edge263 ]
  %.1 = phi i32 [ %.0268, %.lr.ph272 ], [ %241, %._crit_edge263 ]
  %indvars.iv.next314 = add nuw nsw i64 %indvars.iv313, 1
  %exitcond317.not = icmp eq i64 %indvars.iv.next314, %wide.trip.count316
  br i1 %exitcond317.not, label %._crit_edge273, label %.lr.ph272, !llvm.loop !36

._crit_edge273:                                   ; preds = %247, %._crit_edge
  %.0213.lcssa = phi i32 [ 0, %._crit_edge ], [ %.1214, %247 ]
  %248 = getelementptr inbounds i8, ptr %25, i64 20
  store i32 %.0213.lcssa, ptr %248, align 4, !tbaa !37
  tail call void @__ReAdjustMemory(ptr noundef %1, ptr noundef %25, i32 noundef 0)
  %249 = load i32, ptr %6, align 4, !tbaa !5
  %250 = and i32 %249, 1
  %.not222 = icmp eq i32 %250, 0
  br i1 %.not222, label %256, label %251

251:                                              ; preds = %._crit_edge273
  %252 = tail call double @__seconds() #3
  %253 = getelementptr inbounds i8, ptr %0, i64 128
  %254 = load double, ptr %253, align 8, !tbaa !14
  %255 = fadd double %252, %254
  store double %255, ptr %253, align 8, !tbaa !14
  br label %256

256:                                              ; preds = %251, %._crit_edge273
  tail call void @__idxwspacefree(ptr noundef nonnull %0, i32 noundef 2048) #3
  ret void
}

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