; LLVM IR from siconos/siconos :: externals/lbl/metis4/subdomains.ll_ (EliminateComponents)

; 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.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 ptr @__idxwspacemalloc(ptr noundef, i32 noundef) #1

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

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

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

; Function Attrs: nounwind uwtable
define dso_local void @__EliminateComponents(ptr noundef %0, ptr noundef %1, i32 noundef %2, ptr noundef %3, float 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 float, align 4
  %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 float %4, ptr %10, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #3
  %41 = load ptr, ptr %7, align 8, !tbaa !5
  %42 = getelementptr inbounds %struct.graphdef, ptr %41, i32 0, i32 2
  %43 = load i32, ptr %42, align 8, !tbaa !13
  store i32 %43, ptr %17, align 4, !tbaa !9
  %44 = load ptr, ptr %7, align 8, !tbaa !5
  %45 = getelementptr inbounds %struct.graphdef, ptr %44, i32 0, i32 4
  %46 = load ptr, ptr %45, align 8, !tbaa !15
  store ptr %46, ptr %27, align 8, !tbaa !5
  %47 = load ptr, ptr %7, align 8, !tbaa !5
  %48 = getelementptr inbounds %struct.graphdef, ptr %47, i32 0, i32 7
  %49 = load ptr, ptr %48, align 8, !tbaa !16
  store ptr %49, ptr %28, align 8, !tbaa !5
  %50 = load ptr, ptr %7, align 8, !tbaa !5
  %51 = getelementptr inbounds %struct.graphdef, ptr %50, i32 0, i32 5
  %52 = load ptr, ptr %51, align 8, !tbaa !17
  store ptr %52, ptr %29, align 8, !tbaa !5
  %53 = load ptr, ptr %7, align 8, !tbaa !5
  %54 = getelementptr inbounds %struct.graphdef, ptr %53, i32 0, i32 8
  %55 = load ptr, ptr %54, align 8, !tbaa !18
  store ptr %55, ptr %30, align 8, !tbaa !5
  %56 = load ptr, ptr %7, align 8, !tbaa !5
  %57 = getelementptr inbounds %struct.graphdef, ptr %56, i32 0, i32 14
  %58 = load ptr, ptr %57, align 8, !tbaa !19
  store ptr %58, ptr %31, align 8, !tbaa !5
  %59 = load ptr, ptr %7, align 8, !tbaa !5
  %60 = getelementptr inbounds %struct.graphdef, ptr %59, i32 0, i32 15
  %61 = load ptr, ptr %60, align 8, !tbaa !20
  store ptr %61, ptr %32, align 8, !tbaa !5
  %62 = load i32, ptr %17, align 4, !tbaa !9
  %63 = load ptr, ptr %6, align 8, !tbaa !5
  %64 = load i32, ptr %17, align 4, !tbaa !9
  %65 = call ptr @__idxwspacemalloc(ptr noundef %63, i32 noundef %64)
  %66 = call ptr @__idxset(i32 noundef %62, i32 noundef 0, ptr noundef %65)
  store ptr %66, ptr %35, align 8, !tbaa !5
  %67 = load ptr, ptr %6, align 8, !tbaa !5
  %68 = load i32, ptr %17, align 4, !tbaa !9
  %69 = call ptr @__idxwspacemalloc(ptr noundef %67, i32 noundef %68)
  store ptr %69, ptr %39, align 8, !tbaa !5
  %70 = load ptr, ptr %6, align 8, !tbaa !5
  %71 = load i32, ptr %17, align 4, !tbaa !9
  %72 = call ptr @__idxwspacemalloc(ptr noundef %70, i32 noundef %71)
  store ptr %72, ptr %38, align 8, !tbaa !5
  %73 = load ptr, ptr %6, align 8, !tbaa !5
  %74 = load i32, ptr %17, align 4, !tbaa !9
  %75 = call ptr @__idxwspacemalloc(ptr noundef %73, i32 noundef %74)
  store ptr %75, ptr %36, align 8, !tbaa !5
  %76 = load ptr, ptr %6, align 8, !tbaa !5
  %77 = load i32, ptr %17, align 4, !tbaa !9
  %78 = call ptr @__idxwspacemalloc(ptr noundef %76, i32 noundef %77)
  store ptr %78, ptr %37, align 8, !tbaa !5
  %79 = load ptr, ptr %6, align 8, !tbaa !5
  %80 = load i32, ptr %8, align 4, !tbaa !9
  %81 = call ptr @__idxwspacemalloc(ptr noundef %79, i32 noundef %80)
  store ptr %81, ptr %33, align 8, !tbaa !5
  %82 = load ptr, ptr %6, align 8, !tbaa !5
  %83 = load i32, ptr %8, align 4, !tbaa !9
  %84 = call ptr @__idxwspacemalloc(ptr noundef %82, i32 noundef %83)
  store ptr %84, ptr %34, align 8, !tbaa !5
  %85 = load i32, ptr %8, align 4, !tbaa !9
  %86 = load ptr, ptr %6, align 8, !tbaa !5
  %87 = load i32, ptr %8, align 4, !tbaa !9
  %88 = call ptr @__idxwspacemalloc(ptr noundef %86, i32 noundef %87)
  %89 = call ptr @__idxset(i32 noundef %85, i32 noundef 0, ptr noundef %88)
  store ptr %89, ptr %40, align 8, !tbaa !5
  store i32 0, ptr %11, align 4, !tbaa !9
  br label %90

90:                                               ; preds = %104, %5
  %91 = load i32, ptr %11, align 4, !tbaa !9
  %92 = load i32, ptr %17, align 4, !tbaa !9
  %93 = icmp slt i32 %91, %92
  br i1 %93, label %94, label %107

94:                                               ; preds = %90
  %95 = load i32, ptr %11, align 4, !tbaa !9
  %96 = load ptr, ptr %37, align 8, !tbaa !5
  %97 = load i32, ptr %11, align 4, !tbaa !9
  %98 = sext i32 %97 to i64
  %99 = getelementptr inbounds i32, ptr %96, i64 %98
  store i32 %95, ptr %99, align 4, !tbaa !9
  %100 = load ptr, ptr %36, align 8, !tbaa !5
  %101 = load i32, ptr %11, align 4, !tbaa !9
  %102 = sext i32 %101 to i64
  %103 = getelementptr inbounds i32, ptr %100, i64 %102
  store i32 %95, ptr %103, align 4, !tbaa !9
  br label %104

104:                                              ; preds = %94
  %105 = load i32, ptr %11, align 4, !tbaa !9
  %106 = add nsw i32 %105, 1
  store i32 %106, ptr %11, align 4, !tbaa !9
  br label %90, !llvm.loop !21

107:                                              ; preds = %90
  store i32 -1, ptr %22, align 4, !tbaa !9
  store i32 0, ptr %20, align 4, !tbaa !9
  store i32 0, ptr %19, align 4, !tbaa !9
  %108 = load i32, ptr %17, align 4, !tbaa !9
  store i32 %108, ptr %21, align 4, !tbaa !9
  br label %109

109:                                              ; preds = %223, %107
  %110 = load i32, ptr %21, align 4, !tbaa !9
  %111 = icmp sgt i32 %110, 0
  br i1 %111, label %112, label %224

112:                                              ; preds = %109
  %113 = load i32, ptr %19, align 4, !tbaa !9
  %114 = load i32, ptr %20, align 4, !tbaa !9
  %115 = icmp eq i32 %113, %114
  br i1 %115, label %116, label %147

116:                                              ; preds = %112
  %117 = load i32, ptr %19, align 4, !tbaa !9
  %118 = load ptr, ptr %39, align 8, !tbaa !5
  %119 = load i32, ptr %22, align 4, !tbaa !9
  %120 = add nsw i32 %119, 1
  store i32 %120, ptr %22, align 4, !tbaa !9
  %121 = sext i32 %120 to i64
  %122 = getelementptr inbounds i32, ptr %118, i64 %121
  store i32 %117, ptr %122, align 4, !tbaa !9
  %123 = load ptr, ptr %37, align 8, !tbaa !5
  %124 = getelementptr inbounds i32, ptr %123, i64 0
  %125 = load i32, ptr %124, align 4, !tbaa !9
  store i32 %125, ptr %11, align 4, !tbaa !9
  %126 = load i32, ptr %11, align 4, !tbaa !9
  %127 = load ptr, ptr %38, align 8, !tbaa !5
  %128 = load i32, ptr %20, align 4, !tbaa !9
  %129 = add nsw i32 %128, 1
  store i32 %129, ptr %20, align 4, !tbaa !9
  %130 = sext i32 %128 to i64
  %131 = getelementptr inbounds i32, ptr %127, i64 %130
  store i32 %126, ptr %131, align 4, !tbaa !9
  %132 = load ptr, ptr %35, align 8, !tbaa !5
  %133 = load i32, ptr %11, align 4, !tbaa !9
  %134 = sext i32 %133 to i64
  %135 = getelementptr inbounds i32, ptr %132, i64 %134
  store i32 1, ptr %135, align 4, !tbaa !9
  %136 = load ptr, ptr %31, align 8, !tbaa !5
  %137 = load i32, ptr %11, align 4, !tbaa !9
  %138 = sext i32 %137 to i64
  %139 = getelementptr inbounds i32, ptr %136, i64 %138
  %140 = load i32, ptr %139, align 4, !tbaa !9
  store i32 %140, ptr %16, align 4, !tbaa !9
  %141 = load ptr, ptr %40, align 8, !tbaa !5
  %142 = load i32, ptr %16, align 4, !tbaa !9
  %143 = sext i32 %142 to i64
  %144 = getelementptr inbounds i32, ptr %141, i64 %143
  %145 = load i32, ptr %144, align 4, !tbaa !9
  %146 = add nsw i32 %145, 1
  store i32 %146, ptr %144, align 4, !tbaa !9
  br label %147

147:                                              ; preds = %116, %112
  %148 = load ptr, ptr %38, align 8, !tbaa !5
  %149 = load i32, ptr %19, align 4, !tbaa !9
  %150 = add nsw i32 %149, 1
  store i32 %150, ptr %19, align 4, !tbaa !9
  %151 = sext i32 %149 to i64
  %152 = getelementptr inbounds i32, ptr %148, i64 %151
  %153 = load i32, ptr %152, align 4, !tbaa !9
  store i32 %153, ptr %11, align 4, !tbaa !9
  %154 = load ptr, ptr %36, align 8, !tbaa !5
  %155 = load i32, ptr %11, align 4, !tbaa !9
  %156 = sext i32 %155 to i64
  %157 = getelementptr inbounds i32, ptr %154, i64 %156
  %158 = load i32, ptr %157, align 4, !tbaa !9
  store i32 %158, ptr %15, align 4, !tbaa !9
  %159 = load ptr, ptr %37, align 8, !tbaa !5
  %160 = load i32, ptr %21, align 4, !tbaa !9
  %161 = add nsw i32 %160, -1
  store i32 %161, ptr %21, align 4, !tbaa !9
  %162 = sext i32 %161 to i64
  %163 = getelementptr inbounds i32, ptr %159, i64 %162
  %164 = load i32, ptr %163, align 4, !tbaa !9
  %165 = load ptr, ptr %37, align 8, !tbaa !5
  %166 = load i32, ptr %15, align 4, !tbaa !9
  %167 = sext i32 %166 to i64
  %168 = getelementptr inbounds i32, ptr %165, i64 %167
  store i32 %164, ptr %168, align 4, !tbaa !9
  store i32 %164, ptr %13, align 4, !tbaa !9
  %169 = load i32, ptr %15, align 4, !tbaa !9
  %170 = load ptr, ptr %36, align 8, !tbaa !5
  %171 = load i32, ptr %13, align 4, !tbaa !9
  %172 = sext i32 %171 to i64
  %173 = getelementptr inbounds i32, ptr %170, i64 %172
  store i32 %169, ptr %173, align 4, !tbaa !9
  %174 = load ptr, ptr %27, align 8, !tbaa !5
  %175 = load i32, ptr %11, align 4, !tbaa !9
  %176 = sext i32 %175 to i64
  %177 = getelementptr inbounds i32, ptr %174, i64 %176
  %178 = load i32, ptr %177, align 4, !tbaa !9
  store i32 %178, ptr %13, align 4, !tbaa !9
  br label %179

179:                                              ; preds = %220, %147
  %180 = load i32, ptr %13, align 4, !tbaa !9
  %181 = load ptr, ptr %27, align 8, !tbaa !5
  %182 = load i32, ptr %11, align 4, !tbaa !9
  %183 = add nsw i32 %182, 1
  %184 = sext i32 %183 to i64
  %185 = getelementptr inbounds i32, ptr %181, i64 %184
  %186 = load i32, ptr %185, align 4, !tbaa !9
  %187 = icmp slt i32 %180, %186
  br i1 %187, label %188, label %223

188:                                              ; preds = %179
  %189 = load ptr, ptr %28, align 8, !tbaa !5
  %190 = load i32, ptr %13, align 4, !tbaa !9
  %191 = sext i32 %190 to i64
  %192 = getelementptr inbounds i32, ptr %189, i64 %191
  %193 = load i32, ptr %192, align 4, !tbaa !9
  store i32 %193, ptr %15, align 4, !tbaa !9
  %194 = load ptr, ptr %31, align 8, !tbaa !5
  %195 = load i32, ptr %15, 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
  %199 = load i32, ptr %16, align 4, !tbaa !9
  %200 = icmp eq i32 %198, %199
  br i1 %200, label %201, label %219

201:                                              ; preds = %188
  %202 = load ptr, ptr %35, 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
  %207 = icmp ne i32 %206, 0
  br i1 %207, label %219, label %208

208:                                              ; preds = %201
  %209 = load i32, ptr %15, align 4, !tbaa !9
  %210 = load ptr, ptr %38, align 8, !tbaa !5
  %211 = load i32, ptr %20, align 4, !tbaa !9
  %212 = add nsw i32 %211, 1
  store i32 %212, ptr %20, align 4, !tbaa !9
  %213 = sext i32 %211 to i64
  %214 = getelementptr inbounds i32, ptr %210, i64 %213
  store i32 %209, ptr %214, align 4, !tbaa !9
  %215 = load ptr, ptr %35, align 8, !tbaa !5
  %216 = load i32, ptr %15, align 4, !tbaa !9
  %217 = sext i32 %216 to i64
  %218 = getelementptr inbounds i32, ptr %215, i64 %217
  store i32 1, ptr %218, align 4, !tbaa !9
  br label %219

219:                                              ; preds = %208, %201, %188
  br label %220

220:                                              ; preds = %219
  %221 = load i32, ptr %13, align 4, !tbaa !9
  %222 = add nsw i32 %221, 1
  store i32 %222, ptr %13, align 4, !tbaa !9
  br label %179, !llvm.loop !23

223:                                              ; preds = %179
  br label %109, !llvm.loop !24

224:                                              ; preds = %109
  %225 = load i32, ptr %19, align 4, !tbaa !9
  %226 = load ptr, ptr %39, align 8, !tbaa !5
  %227 = load i32, ptr %22, align 4, !tbaa !9
  %228 = add nsw i32 %227, 1
  store i32 %228, ptr %22, align 4, !tbaa !9
  %229 = sext i32 %228 to i64
  %230 = getelementptr inbounds i32, ptr %226, i64 %229
  store i32 %225, ptr %230, align 4, !tbaa !9
  %231 = load i32, ptr %22, align 4, !tbaa !9
  %232 = load i32, ptr %8, align 4, !tbaa !9
  %233 = icmp sgt i32 %231, %232
  br i1 %233, label %234, label %489

234:                                              ; preds = %224
  %235 = load i32, ptr %8, align 4, !tbaa !9
  %236 = load ptr, ptr %32, align 8, !tbaa !5
  %237 = call i32 @__idxsum(i32 noundef %235, ptr noundef %236)
  store i32 %237, ptr %18, align 4, !tbaa !9
  store i32 0, ptr %11, align 4, !tbaa !9
  br label %238

238:                                              ; preds = %258, %234
  %239 = load i32, ptr %11, align 4, !tbaa !9
  %240 = load i32, ptr %8, align 4, !tbaa !9
  %241 = icmp slt i32 %239, %240
  br i1 %241, label %242, label %261

242:                                              ; preds = %238
  %243 = load float, ptr %10, align 4, !tbaa !11
  %244 = load ptr, ptr %9, align 8, !tbaa !5
  %245 = load i32, ptr %11, align 4, !tbaa !9
  %246 = sext i32 %245 to i64
  %247 = getelementptr inbounds float, ptr %244, i64 %246
  %248 = load float, ptr %247, align 4, !tbaa !11
  %249 = fmul float %243, %248
  %250 = load i32, ptr %18, align 4, !tbaa !9
  %251 = sitofp i32 %250 to float
  %252 = fmul float %249, %251
  %253 = fptosi float %252 to i32
  %254 = load ptr, ptr %33, align 8, !tbaa !5
  %255 = load i32, ptr %11, align 4, !tbaa !9
  %256 = sext i32 %255 to i64
  %257 = getelementptr inbounds i32, ptr %254, i64 %256
  store i32 %253, ptr %257, align 4, !tbaa !9
  br label %258

258:                                              ; preds = %242
  %259 = load i32, ptr %11, align 4, !tbaa !9
  %260 = add nsw i32 %259, 1
  store i32 %260, ptr %11, align 4, !tbaa !9
  br label %238, !llvm.loop !25

261:                                              ; preds = %238
  store i32 5, ptr %26, align 4, !tbaa !9
  store i32 0, ptr %11, align 4, !tbaa !9
  br label %262

262:                                              ; preds = %485, %261
  %263 = load i32, ptr %11, align 4, !tbaa !9
  %264 = load i32, ptr %22, align 4, !tbaa !9
  %265 = icmp slt i32 %263, %264
  br i1 %265, label %266, label %488

266:                                              ; preds = %262
  %267 = load ptr, ptr %31, align 8, !tbaa !5
  %268 = load ptr, ptr %38, align 8, !tbaa !5
  %269 = load ptr, ptr %39, align 8, !tbaa !5
  %270 = load i32, ptr %11, align 4, !tbaa !9
  %271 = sext i32 %270 to i64
  %272 = getelementptr inbounds i32, ptr %269, i64 %271
  %273 = load i32, ptr %272, align 4, !tbaa !9
  %274 = sext i32 %273 to i64
  %275 = getelementptr inbounds i32, ptr %268, i64 %274
  %276 = load i32, ptr %275, align 4, !tbaa !9
  %277 = sext i32 %276 to i64
  %278 = getelementptr inbounds i32, ptr %267, i64 %277
  %279 = load i32, ptr %278, align 4, !tbaa !9
  store i32 %279, ptr %16, align 4, !tbaa !9
  %280 = load ptr, ptr %40, align 8, !tbaa !5
  %281 = load i32, ptr %16, align 4, !tbaa !9
  %282 = sext i32 %281 to i64
  %283 = getelementptr inbounds i32, ptr %280, i64 %282
  %284 = load i32, ptr %283, align 4, !tbaa !9
  %285 = icmp eq i32 %284, 1
  br i1 %285, label %286, label %287

286:                                              ; preds = %266
  br label %485

287:                                              ; preds = %266
  store i32 0, ptr %23, align 4, !tbaa !9
  %288 = load ptr, ptr %39, align 8, !tbaa !5
  %289 = load i32, ptr %11, 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
  store i32 %292, ptr %13, align 4, !tbaa !9
  br label %293

293:                                              ; preds = %314, %287
  %294 = load i32, ptr %13, align 4, !tbaa !9
  %295 = load ptr, ptr %39, align 8, !tbaa !5
  %296 = load i32, ptr %11, align 4, !tbaa !9
  %297 = add nsw i32 %296, 1
  %298 = sext i32 %297 to i64
  %299 = getelementptr inbounds i32, ptr %295, i64 %298
  %300 = load i32, ptr %299, align 4, !tbaa !9
  %301 = icmp slt i32 %294, %300
  br i1 %301, label %302, label %317

302:                                              ; preds = %293
  %303 = load ptr, ptr %29, align 8, !tbaa !5
  %304 = load ptr, ptr %38, align 8, !tbaa !5
  %305 = load i32, ptr %13, align 4, !tbaa !9
  %306 = sext i32 %305 to i64
  %307 = getelementptr inbounds i32, ptr %304, i64 %306
  %308 = load i32, ptr %307, align 4, !tbaa !9
  %309 = sext i32 %308 to i64
  %310 = getelementptr inbounds i32, ptr %303, i64 %309
  %311 = load i32, ptr %310, align 4, !tbaa !9
  %312 = load i32, ptr %23, align 4, !tbaa !9
  %313 = add nsw i32 %312, %311
  store i32 %313, ptr %23, align 4, !tbaa !9
  br label %314

314:                                              ; preds = %302
  %315 = load i32, ptr %13, align 4, !tbaa !9
  %316 = add nsw i32 %315, 1
  store i32 %316, ptr %13, align 4, !tbaa !9
  br label %293, !llvm.loop !26

317:                                              ; preds = %293
  %318 = load i32, ptr %23, align 4, !tbaa !9
  %319 = sitofp i32 %318 to double
  %320 = load ptr, ptr %32, align 8, !tbaa !5
  %321 = load i32, ptr %16, align 4, !tbaa !9
  %322 = sext i32 %321 to i64
  %323 = getelementptr inbounds i32, ptr %320, i64 %322
  %324 = load i32, ptr %323, align 4, !tbaa !9
  %325 = sitofp i32 %324 to double
  %326 = fmul double 3.000000e-01, %325
  %327 = fcmp ogt double %319, %326
  br i1 %327, label %328, label %329

328:                                              ; preds = %317
  br label %485

329:                                              ; preds = %317
  %330 = load i32, ptr %8, align 4, !tbaa !9
  %331 = load ptr, ptr %34, align 8, !tbaa !5
  %332 = call ptr @__idxset(i32 noundef %330, i32 noundef 0, ptr noundef %331)
  %333 = load ptr, ptr %39, align 8, !tbaa !5
  %334 = load i32, ptr %11, align 4, !tbaa !9
  %335 = sext i32 %334 to i64
  %336 = getelementptr inbounds i32, ptr %333, i64 %335
  %337 = load i32, ptr %336, align 4, !tbaa !9
  store i32 %337, ptr %13, align 4, !tbaa !9
  br label %338

338:                                              ; preds = %391, %329
  %339 = load i32, ptr %13, align 4, !tbaa !9
  %340 = load ptr, ptr %39, align 8, !tbaa !5
  %341 = load i32, ptr %11, align 4, !tbaa !9
  %342 = add nsw i32 %341, 1
  %343 = sext i32 %342 to i64
  %344 = getelementptr inbounds i32, ptr %340, i64 %343
  %345 = load i32, ptr %344, align 4, !tbaa !9
  %346 = icmp slt i32 %339, %345
  br i1 %346, label %347, label %394

347:                                              ; preds = %338
  %348 = load ptr, ptr %38, align 8, !tbaa !5
  %349 = load i32, ptr %13, align 4, !tbaa !9
  %350 = sext i32 %349 to i64
  %351 = getelementptr inbounds i32, ptr %348, i64 %350
  %352 = load i32, ptr %351, align 4, !tbaa !9
  store i32 %352, ptr %12, align 4, !tbaa !9
  %353 = load ptr, ptr %27, align 8, !tbaa !5
  %354 = load i32, ptr %12, align 4, !tbaa !9
  %355 = sext i32 %354 to i64
  %356 = getelementptr inbounds i32, ptr %353, i64 %355
  %357 = load i32, ptr %356, align 4, !tbaa !9
  store i32 %357, ptr %14, align 4, !tbaa !9
  br label %358

358:                                              ; preds = %387, %347
  %359 = load i32, ptr %14, align 4, !tbaa !9
  %360 = load ptr, ptr %27, align 8, !tbaa !5
  %361 = load i32, ptr %12, align 4, !tbaa !9
  %362 = add nsw i32 %361, 1
  %363 = sext i32 %362 to i64
  %364 = getelementptr inbounds i32, ptr %360, i64 %363
  %365 = load i32, ptr %364, align 4, !tbaa !9
  %366 = icmp slt i32 %359, %365
  br i1 %366, label %367, label %390

367:                                              ; preds = %358
  %368 = load ptr, ptr %30, align 8, !tbaa !5
  %369 = load i32, ptr %14, align 4, !tbaa !9
  %370 = sext i32 %369 to i64
  %371 = getelementptr inbounds i32, ptr %368, i64 %370
  %372 = load i32, ptr %371, align 4, !tbaa !9
  %373 = load ptr, ptr %34, align 8, !tbaa !5
  %374 = load ptr, ptr %31, align 8, !tbaa !5
  %375 = load ptr, ptr %28, align 8, !tbaa !5
  %376 = load i32, ptr %14, 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
  %380 = sext i32 %379 to i64
  %381 = getelementptr inbounds i32, ptr %374, i64 %380
  %382 = load i32, ptr %381, align 4, !tbaa !9
  %383 = sext i32 %382 to i64
  %384 = getelementptr inbounds i32, ptr %373, i64 %383
  %385 = load i32, ptr %384, align 4, !tbaa !9
  %386 = add nsw i32 %385, %372
  store i32 %386, ptr %384, align 4, !tbaa !9
  br label %387

387:                                              ; preds = %367
  %388 = load i32, ptr %14, align 4, !tbaa !9
  %389 = add nsw i32 %388, 1
  store i32 %389, ptr %14, align 4, !tbaa !9
  br label %358, !llvm.loop !27

390:                                              ; preds = %358
  br label %391

391:                                              ; preds = %390
  %392 = load i32, ptr %13, align 4, !tbaa !9
  %393 = add nsw i32 %392, 1
  store i32 %393, ptr %13, align 4, !tbaa !9
  br label %338, !llvm.loop !28

394:                                              ; preds = %338
  %395 = load ptr, ptr %34, align 8, !tbaa !5
  %396 = load i32, ptr %16, align 4, !tbaa !9
  %397 = sext i32 %396 to i64
  %398 = getelementptr inbounds i32, ptr %395, i64 %397
  store i32 0, ptr %398, align 4, !tbaa !9
  store i32 -1, ptr %25, align 4, !tbaa !9
  store i32 0, ptr %13, align 4, !tbaa !9
  br label %399

399:                                              ; preds = %447, %394
  %400 = load i32, ptr %13, align 4, !tbaa !9
  %401 = load i32, ptr %8, align 4, !tbaa !9
  %402 = icmp slt i32 %400, %401
  br i1 %402, label %403, label %450

403:                                              ; preds = %399
  %404 = load ptr, ptr %34, align 8, !tbaa !5
  %405 = load i32, ptr %13, align 4, !tbaa !9
  %406 = sext i32 %405 to i64
  %407 = getelementptr inbounds i32, ptr %404, i64 %406
  %408 = load i32, ptr %407, align 4, !tbaa !9
  %409 = icmp sgt i32 %408, 0
  br i1 %409, label %410, label %446

410:                                              ; preds = %403
  %411 = load i32, ptr %23, align 4, !tbaa !9
  %412 = load i32, ptr %26, align 4, !tbaa !9
  %413 = icmp slt i32 %411, %412
  br i1 %413, label %428, label %414

414:                                              ; preds = %410
  %415 = load ptr, ptr %32, align 8, !tbaa !5
  %416 = load i32, ptr %13, align 4, !tbaa !9
  %417 = sext i32 %416 to i64
  %418 = getelementptr inbounds i32, ptr %415, i64 %417
  %419 = load i32, ptr %418, align 4, !tbaa !9
  %420 = load i32, ptr %23, align 4, !tbaa !9
  %421 = add nsw i32 %419, %420
  %422 = load ptr, ptr %33, align 8, !tbaa !5
  %423 = load i32, ptr %13, align 4, !tbaa !9
  %424 = sext i32 %423 to i64
  %425 = getelementptr inbounds i32, ptr %422, i64 %424
  %426 = load i32, ptr %425, align 4, !tbaa !9
  %427 = icmp slt i32 %421, %426
  br i1 %427, label %428, label %446

428:                                              ; preds = %414, %410
  %429 = load i32, ptr %25, align 4, !tbaa !9
  %430 = icmp eq i32 %429, -1
  br i1 %430, label %443, label %431

431:                                              ; preds = %428
  %432 = load ptr, ptr %34, align 8, !tbaa !5
  %433 = load i32, ptr %25, align 4, !tbaa !9
  %434 = sext i32 %433 to i64
  %435 = getelementptr inbounds i32, ptr %432, i64 %434
  %436 = load i32, ptr %435, align 4, !tbaa !9
  %437 = load ptr, ptr %34, 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 = icmp slt i32 %436, %441
  br i1 %442, label %443, label %445

443:                                              ; preds = %431, %428
  %444 = load i32, ptr %13, align 4, !tbaa !9
  store i32 %444, ptr %25, align 4, !tbaa !9
  br label %445

445:                                              ; preds = %443, %431
  br label %446

446:                                              ; preds = %445, %414, %403
  br label %447

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

450:                                              ; preds = %399
  %451 = load i32, ptr %25, align 4, !tbaa !9
  %452 = icmp ne i32 %451, -1
  br i1 %452, label %453, label %484

453:                                              ; preds = %450
  br label %454

454:                                              ; preds = %453
  %455 = load i32, ptr %23, align 4, !tbaa !9
  %456 = load ptr, ptr %32, align 8, !tbaa !5
  %457 = load i32, ptr %25, align 4, !tbaa !9
  %458 = sext i32 %457 to i64
  %459 = getelementptr inbounds i32, ptr %456, i64 %458
  %460 = load i32, ptr %459, align 4, !tbaa !9
  %461 = add nsw i32 %460, %455
  store i32 %461, ptr %459, align 4, !tbaa !9
  %462 = load i32, ptr %23, align 4, !tbaa !9
  %463 = load ptr, ptr %32, align 8, !tbaa !5
  %464 = load i32, ptr %16, align 4, !tbaa !9
  %465 = sext i32 %464 to i64
  %466 = getelementptr inbounds i32, ptr %463, i64 %465
  %467 = load i32, ptr %466, align 4, !tbaa !9
  %468 = sub nsw i32 %467, %462
  store i32 %468, ptr %466, align 4, !tbaa !9
  br label %469

469:                                              ; preds = %454
  br label %470

470:                                              ; preds = %469
  %471 = load ptr, ptr %40, align 8, !tbaa !5
  %472 = load i32, ptr %16, align 4, !tbaa !9
  %473 = sext i32 %472 to i64
  %474 = getelementptr inbounds i32, ptr %471, i64 %473
  %475 = load i32, ptr %474, align 4, !tbaa !9
  %476 = add nsw i32 %475, -1
  store i32 %476, ptr %474, align 4, !tbaa !9
  %477 = load ptr, ptr %6, align 8, !tbaa !5
  %478 = load ptr, ptr %7, align 8, !tbaa !5
  %479 = load i32, ptr %8, align 4, !tbaa !9
  %480 = load i32, ptr %25, align 4, !tbaa !9
  %481 = load i32, ptr %11, align 4, !tbaa !9
  %482 = load ptr, ptr %39, align 8, !tbaa !5
  %483 = load ptr, ptr %38, align 8, !tbaa !5
  call void @__MoveGroup(ptr noundef %477, ptr noundef %478, i32 noundef %479, i32 noundef %480, i32 noundef %481, ptr noundef %482, ptr noundef %483)
  br label %484

484:                                              ; preds = %470, %450
  br label %485

485:                                              ; preds = %484, %328, %286
  %486 = load i32, ptr %11, align 4, !tbaa !9
  %487 = add nsw i32 %486, 1
  store i32 %487, ptr %11, align 4, !tbaa !9
  br label %262, !llvm.loop !30

488:                                              ; preds = %262
  br label %489

489:                                              ; preds = %488, %224
  %490 = load ptr, ptr %6, align 8, !tbaa !5
  %491 = load i32, ptr %8, align 4, !tbaa !9
  call void @__idxwspacefree(ptr noundef %490, i32 noundef %491)
  %492 = load ptr, ptr %6, align 8, !tbaa !5
  %493 = load i32, ptr %8, align 4, !tbaa !9
  call void @__idxwspacefree(ptr noundef %492, i32 noundef %493)
  %494 = load ptr, ptr %6, align 8, !tbaa !5
  %495 = load i32, ptr %8, align 4, !tbaa !9
  call void @__idxwspacefree(ptr noundef %494, i32 noundef %495)
  %496 = load ptr, ptr %6, align 8, !tbaa !5
  %497 = load i32, ptr %17, align 4, !tbaa !9
  call void @__idxwspacefree(ptr noundef %496, i32 noundef %497)
  %498 = load ptr, ptr %6, align 8, !tbaa !5
  %499 = load i32, ptr %17, align 4, !tbaa !9
  call void @__idxwspacefree(ptr noundef %498, i32 noundef %499)
  %500 = load ptr, ptr %6, align 8, !tbaa !5
  %501 = load i32, ptr %17, align 4, !tbaa !9
  call void @__idxwspacefree(ptr noundef %500, i32 noundef %501)
  %502 = load ptr, ptr %6, align 8, !tbaa !5
  %503 = load i32, ptr %17, align 4, !tbaa !9
  call void @__idxwspacefree(ptr noundef %502, i32 noundef %503)
  %504 = load ptr, ptr %6, align 8, !tbaa !5
  %505 = load i32, ptr %17, align 4, !tbaa !9
  call void @__idxwspacefree(ptr noundef %504, i32 noundef %505)
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #3
  ret void
}

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

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 = { 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, !12, i64 0}
!12 = !{!"float", !7, i64 0}
!13 = !{!14, !10, i64 16}
!14 = !{!"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}
!15 = !{!14, !6, i64 24}
!16 = !{!14, !6, i64 48}
!17 = !{!14, !6, i64 32}
!18 = !{!14, !6, i64 56}
!19 = !{!14, !6, i64 96}
!20 = !{!14, !6, i64 104}
!21 = distinct !{!21, !22}
!22 = !{!"llvm.loop.mustprogress"}
!23 = distinct !{!23, !22}
!24 = distinct !{!24, !22}
!25 = distinct !{!25, !22}
!26 = distinct !{!26, !22}
!27 = distinct !{!27, !22}
!28 = distinct !{!28, !22}
!29 = distinct !{!29, !22}
!30 = distinct !{!30, !22}


; 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 ptr @__idxwspacemalloc(ptr noundef, i32 noundef) local_unnamed_addr #0

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

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

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

; Function Attrs: nounwind uwtable
define dso_local void @__EliminateComponents(ptr noundef %0, ptr noundef %1, i32 noundef %2, ptr nocapture noundef readonly %3, float noundef %4) local_unnamed_addr #1 {
  %6 = getelementptr inbounds i8, ptr %1, i64 16
  %7 = load i32, ptr %6, align 8, !tbaa !5
  %8 = getelementptr inbounds i8, ptr %1, i64 24
  %9 = load ptr, ptr %8, align 8, !tbaa !11
  %10 = getelementptr inbounds i8, ptr %1, i64 48
  %11 = load ptr, ptr %10, align 8, !tbaa !12
  %12 = getelementptr inbounds i8, ptr %1, i64 32
  %13 = load ptr, ptr %12, align 8, !tbaa !13
  %14 = getelementptr inbounds i8, ptr %1, i64 56
  %15 = load ptr, ptr %14, align 8, !tbaa !14
  %16 = getelementptr inbounds i8, ptr %1, i64 96
  %17 = load ptr, ptr %16, align 8, !tbaa !15
  %18 = getelementptr inbounds i8, ptr %1, i64 104
  %19 = load ptr, ptr %18, align 8, !tbaa !16
  %20 = tail call ptr @__idxwspacemalloc(ptr noundef %0, i32 noundef %7) #2
  %21 = tail call ptr @__idxset(i32 noundef %7, i32 noundef 0, ptr noundef %20) #2
  %22 = tail call ptr @__idxwspacemalloc(ptr noundef %0, i32 noundef %7) #2
  %23 = tail call ptr @__idxwspacemalloc(ptr noundef %0, i32 noundef %7) #2
  %24 = tail call ptr @__idxwspacemalloc(ptr noundef %0, i32 noundef %7) #2
  %25 = tail call ptr @__idxwspacemalloc(ptr noundef %0, i32 noundef %7) #2
  %26 = tail call ptr @__idxwspacemalloc(ptr noundef %0, i32 noundef %2) #2
  %27 = tail call ptr @__idxwspacemalloc(ptr noundef %0, i32 noundef %2) #2
  %28 = tail call ptr @__idxwspacemalloc(ptr noundef %0, i32 noundef %2) #2
  %29 = tail call ptr @__idxset(i32 noundef %2, i32 noundef 0, ptr noundef %28) #2
  %30 = icmp sgt i32 %7, 0
  br i1 %30, label %.lr.ph.preheader, label %._crit_edge

.lr.ph.preheader:                                 ; preds = %5
  %31 = ptrtoint ptr %25 to i64
  %32 = ptrtoint ptr %24 to i64
  %wide.trip.count = zext nneg i32 %7 to i64
  %min.iters.check = icmp ult i32 %7, 8
  %33 = sub i64 %32, %31
  %diff.check = icmp ult i64 %33, 32
  %or.cond = select i1 %min.iters.check, i1 true, i1 %diff.check
  br i1 %or.cond, label %.lr.ph.preheader320, label %vector.ph

.lr.ph.preheader320:                              ; preds = %middle.block, %.lr.ph.preheader
  %indvars.iv.ph = phi i64 [ 0, %.lr.ph.preheader ], [ %n.vec, %middle.block ]
  %xtraiter = and i64 %wide.trip.count, 3
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.lr.ph.prol.loopexit, label %.lr.ph.prol

.lr.ph.prol:                                      ; preds = %.lr.ph.preheader320, %.lr.ph.prol
  %indvars.iv.prol = phi i64 [ %indvars.iv.next.prol, %.lr.ph.prol ], [ %indvars.iv.ph, %.lr.ph.preheader320 ]
  %prol.iter = phi i64 [ %prol.iter.next, %.lr.ph.prol ], [ 0, %.lr.ph.preheader320 ]
  %34 = getelementptr inbounds i32, ptr %25, i64 %indvars.iv.prol
  %35 = trunc nuw nsw i64 %indvars.iv.prol to i32
  store i32 %35, ptr %34, align 4, !tbaa !17
  %36 = getelementptr inbounds i32, ptr %24, i64 %indvars.iv.prol
  store i32 %35, ptr %36, align 4, !tbaa !17
  %indvars.iv.next.prol = add nuw nsw i64 %indvars.iv.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter
  br i1 %prol.iter.cmp.not, label %.lr.ph.prol.loopexit, label %.lr.ph.prol, !llvm.loop !18

.lr.ph.prol.loopexit:                             ; preds = %.lr.ph.prol, %.lr.ph.preheader320
  %indvars.iv.unr = phi i64 [ %indvars.iv.ph, %.lr.ph.preheader320 ], [ %indvars.iv.next.prol, %.lr.ph.prol ]
  %37 = sub nsw i64 %indvars.iv.ph, %wide.trip.count
  %38 = icmp ugt i64 %37, -4
  br i1 %38, label %.preheader215, label %.lr.ph

vector.ph:                                        ; preds = %.lr.ph.preheader
  %n.vec = and i64 %wide.trip.count, 2147483640
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %vec.ind = phi <4 x i32> [ <i32 0, i32 1, i32 2, i32 3>, %vector.ph ], [ %vec.ind.next, %vector.body ]
  %step.add = add <4 x i32> %vec.ind, <i32 4, i32 4, i32 4, i32 4>
  %39 = getelementptr inbounds i32, ptr %25, i64 %index
  %40 = getelementptr inbounds i8, ptr %39, i64 16
  store <4 x i32> %vec.ind, ptr %39, align 4, !tbaa !17
  store <4 x i32> %step.add, ptr %40, align 4, !tbaa !17
  %41 = getelementptr inbounds i32, ptr %24, i64 %index
  %42 = getelementptr inbounds i8, ptr %41, i64 16
  store <4 x i32> %vec.ind, ptr %41, align 4, !tbaa !17
  store <4 x i32> %step.add, ptr %42, align 4, !tbaa !17
  %index.next = add nuw i64 %index, 8
  %vec.ind.next = add <4 x i32> %vec.ind, <i32 8, i32 8, i32 8, i32 8>
  %43 = icmp eq i64 %index.next, %n.vec
  br i1 %43, label %middle.block, label %vector.body, !llvm.loop !20

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %n.vec, %wide.trip.count
  br i1 %cmp.n, label %.preheader215, label %.lr.ph.preheader320

.preheader215:                                    ; preds = %.lr.ph.prol.loopexit, %.lr.ph, %middle.block
  br i1 %30, label %.lr.ph225.preheader, label %._crit_edge

.lr.ph225.preheader:                              ; preds = %.preheader215
  %44 = zext nneg i32 %7 to i64
  br label %.lr.ph225

.lr.ph:                                           ; preds = %.lr.ph.prol.loopexit, %.lr.ph
  %indvars.iv = phi i64 [ %indvars.iv.next.3, %.lr.ph ], [ %indvars.iv.unr, %.lr.ph.prol.loopexit ]
  %45 = getelementptr inbounds i32, ptr %25, i64 %indvars.iv
  %46 = trunc nuw nsw i64 %indvars.iv to i32
  store i32 %46, ptr %45, align 4, !tbaa !17
  %47 = getelementptr inbounds i32, ptr %24, i64 %indvars.iv
  store i32 %46, ptr %47, align 4, !tbaa !17
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %48 = getelementptr inbounds i32, ptr %25, i64 %indvars.iv.next
  %49 = trunc nuw nsw i64 %indvars.iv.next to i32
  store i32 %49, ptr %48, align 4, !tbaa !17
  %50 = getelementptr inbounds i32, ptr %24, i64 %indvars.iv.next
  store i32 %49, ptr %50, align 4, !tbaa !17
  %indvars.iv.next.1 = add nuw nsw i64 %indvars.iv, 2
  %51 = getelementptr inbounds i32, ptr %25, i64 %indvars.iv.next.1
  %52 = trunc nuw nsw i64 %indvars.iv.next.1 to i32
  store i32 %52, ptr %51, align 4, !tbaa !17
  %53 = getelementptr inbounds i32, ptr %24, i64 %indvars.iv.next.1
  store i32 %52, ptr %53, align 4, !tbaa !17
  %indvars.iv.next.2 = add nuw nsw i64 %indvars.iv, 3
  %54 = getelementptr inbounds i32, ptr %25, i64 %indvars.iv.next.2
  %55 = trunc nuw nsw i64 %indvars.iv.next.2 to i32
  store i32 %55, ptr %54, align 4, !tbaa !17
  %56 = getelementptr inbounds i32, ptr %24, i64 %indvars.iv.next.2
  store i32 %55, ptr %56, align 4, !tbaa !17
  %indvars.iv.next.3 = add nuw nsw i64 %indvars.iv, 4
  %exitcond.not.3 = icmp eq i64 %indvars.iv.next.3, %wide.trip.count
  br i1 %exitcond.not.3, label %.preheader215, label %.lr.ph, !llvm.loop !24

.loopexit214:                                     ; preds = %108, %76
  %.2199.lcssa = phi i32 [ %.1198, %76 ], [ %.3200, %108 ]
  %exitcond267.not = icmp eq i64 %indvars.iv.next260, %44
  br i1 %exitcond267.not, label %._crit_edge, label %.lr.ph225, !llvm.loop !25

.lr.ph225:                                        ; preds = %.lr.ph225.preheader, %.loopexit214
  %indvars.iv261 = phi i64 [ %44, %.lr.ph225.preheader ], [ %indvars.iv.next262, %.loopexit214 ]
  %indvars.iv259 = phi i64 [ 0, %.lr.ph225.preheader ], [ %indvars.iv.next260, %.loopexit214 ]
  %.0194224 = phi i32 [ undef, %.lr.ph225.preheader ], [ %.1195, %.loopexit214 ]
  %.0197222 = phi i32 [ 0, %.lr.ph225.preheader ], [ %.2199.lcssa, %.loopexit214 ]
  %.0202220 = phi i32 [ -1, %.lr.ph225.preheader ], [ %.1203, %.loopexit214 ]
  %57 = zext i32 %.0197222 to i64
  %58 = icmp eq i64 %indvars.iv259, %57
  br i1 %58, label %59, label %76

59:                                               ; preds = %.lr.ph225
  %60 = add nsw i32 %.0202220, 1
  %61 = sext i32 %60 to i64
  %62 = getelementptr inbounds i32, ptr %22, i64 %61
  %63 = trunc nuw nsw i64 %indvars.iv259 to i32
  store i32 %63, ptr %62, align 4, !tbaa !17
  %64 = load i32, ptr %25, align 4, !tbaa !17
  %65 = add nsw i32 %.0197222, 1
  %66 = sext i32 %.0197222 to i64
  %67 = getelementptr inbounds i32, ptr %23, i64 %66
  store i32 %64, ptr %67, align 4, !tbaa !17
  %68 = sext i32 %64 to i64
  %69 = getelementptr inbounds i32, ptr %21, i64 %68
  store i32 1, ptr %69, align 4, !tbaa !17
  %70 = getelementptr inbounds i32, ptr %17, i64 %68
  %71 = load i32, ptr %70, align 4, !tbaa !17
  %72 = sext i32 %71 to i64
  %73 = getelementptr inbounds i32, ptr %29, i64 %72
  %74 = load i32, ptr %73, align 4, !tbaa !17
  %75 = add nsw i32 %74, 1
  store i32 %75, ptr %73, align 4, !tbaa !17
  br label %76

76:                                               ; preds = %59, %.lr.ph225
  %.1203 = phi i32 [ %60, %59 ], [ %.0202220, %.lr.ph225 ]
  %.1198 = phi i32 [ %65, %59 ], [ %.0197222, %.lr.ph225 ]
  %.1195 = phi i32 [ %71, %59 ], [ %.0194224, %.lr.ph225 ]
  %indvars.iv.next260 = add nuw nsw i64 %indvars.iv259, 1
  %77 = getelementptr inbounds i32, ptr %23, i64 %indvars.iv259
  %78 = load i32, ptr %77, align 4, !tbaa !17
  %79 = sext i32 %78 to i64
  %80 = getelementptr inbounds i32, ptr %24, i64 %79
  %81 = load i32, ptr %80, align 4, !tbaa !17
  %indvars.iv.next262 = add nsw i64 %indvars.iv261, -1
  %82 = getelementptr inbounds i32, ptr %25, i64 %indvars.iv.next262
  %83 = load i32, ptr %82, align 4, !tbaa !17
  %84 = sext i32 %81 to i64
  %85 = getelementptr inbounds i32, ptr %25, i64 %84
  store i32 %83, ptr %85, align 4, !tbaa !17
  %86 = sext i32 %83 to i64
  %87 = getelementptr inbounds i32, ptr %24, i64 %86
  store i32 %81, ptr %87, align 4, !tbaa !17
  %88 = getelementptr inbounds i32, ptr %9, i64 %79
  %89 = load i32, ptr %88, align 4, !tbaa !17
  %90 = getelementptr i8, ptr %88, i64 4
  %91 = load i32, ptr %90, align 4, !tbaa !17
  %92 = icmp slt i32 %89, %91
  br i1 %92, label %.lr.ph219.preheader, label %.loopexit214

.lr.ph219.preheader:                              ; preds = %76
  %93 = sext i32 %89 to i64
  br label %.lr.ph219

.lr.ph219:                                        ; preds = %.lr.ph219.preheader, %108
  %94 = phi i32 [ %91, %.lr.ph219.preheader ], [ %109, %108 ]
  %indvars.iv256 = phi i64 [ %93, %.lr.ph219.preheader ], [ %indvars.iv.next257, %108 ]
  %.2199217 = phi i32 [ %.1198, %.lr.ph219.preheader ], [ %.3200, %108 ]
  %95 = getelementptr inbounds i32, ptr %11, i64 %indvars.iv256
  %96 = load i32, ptr %95, align 4, !tbaa !17
  %97 = sext i32 %96 to i64
  %98 = getelementptr inbounds i32, ptr %17, i64 %97
  %99 = load i32, ptr %98, align 4, !tbaa !17
  %100 = icmp eq i32 %99, %.1195
  br i1 %100, label %101, label %108

101:                                              ; preds = %.lr.ph219
  %102 = getelementptr inbounds i32, ptr %21, i64 %97
  %103 = load i32, ptr %102, align 4, !tbaa !17
  %.not212 = icmp eq i32 %103, 0
  br i1 %.not212, label %104, label %108

104:                                              ; preds = %101
  %105 = add nsw i32 %.2199217, 1
  %106 = sext i32 %.2199217 to i64
  %107 = getelementptr inbounds i32, ptr %23, i64 %106
  store i32 %96, ptr %107, align 4, !tbaa !17
  store i32 1, ptr %102, align 4, !tbaa !17
  %.pre = load i32, ptr %90, align 4, !tbaa !17
  br label %108

108:                                              ; preds = %.lr.ph219, %101, %104
  %109 = phi i32 [ %94, %101 ], [ %.pre, %104 ], [ %94, %.lr.ph219 ]
  %.3200 = phi i32 [ %.2199217, %101 ], [ %105, %104 ], [ %.2199217, %.lr.ph219 ]
  %indvars.iv.next257 = add nsw i64 %indvars.iv256, 1
  %110 = sext i32 %109 to i64
  %111 = icmp slt i64 %indvars.iv.next257, %110
  br i1 %111, label %.lr.ph219, label %.loopexit214, !llvm.loop !26

._crit_edge:                                      ; preds = %.loopexit214, %5, %.preheader215
  %.0202.lcssa = phi i32 [ -1, %.preheader215 ], [ -1, %5 ], [ %.1203, %.loopexit214 ]
  %.0196.lcssa = phi i32 [ 0, %.preheader215 ], [ 0, %5 ], [ %7, %.loopexit214 ]
  %112 = sext i32 %.0202.lcssa to i64
  %113 = getelementptr i32, ptr %22, i64 %112
  %114 = getelementptr i8, ptr %113, i64 4
  store i32 %.0196.lcssa, ptr %114, align 4, !tbaa !17
  %.not = icmp slt i32 %.0202.lcssa, %2
  br i1 %.not, label %.loopexit, label %115

115:                                              ; preds = %._crit_edge
  %116 = tail call i32 @__idxsum(i32 noundef %2, ptr noundef %19) #2
  %117 = icmp sgt i32 %2, 0
  br i1 %117, label %.lr.ph230, label %.preheader213

.lr.ph230:                                        ; preds = %115
  %118 = sitofp i32 %116 to float
  %wide.trip.count271 = zext nneg i32 %2 to i64
  %min.iters.check307 = icmp ult i32 %2, 8
  br i1 %min.iters.check307, label %scalar.ph306.preheader, label %vector.ph308

scalar.ph306.preheader:                           ; preds = %middle.block305, %.lr.ph230
  %indvars.iv268.ph = phi i64 [ 0, %.lr.ph230 ], [ %n.vec310, %middle.block305 ]
  br label %scalar.ph306

vector.ph308:                                     ; preds = %.lr.ph230
  %n.vec310 = and i64 %wide.trip.count271, 2147483640
  %broadcast.splatinsert = insertelement <4 x float> poison, float %4, i64 0
  %broadcast.splat = shufflevector <4 x float> %broadcast.splatinsert, <4 x float> poison, <4 x i32> zeroinitializer
  %broadcast.splatinsert315 = insertelement <4 x float> poison, float %118, i64 0
  %broadcast.splat316 = shufflevector <4 x float> %broadcast.splatinsert315, <4 x float> poison, <4 x i32> zeroinitializer
  br label %vector.body312

vector.body312:                                   ; preds = %vector.body312, %vector.ph308
  %index313 = phi i64 [ 0, %vector.ph308 ], [ %index.next317, %vector.body312 ]
  %119 = getelementptr inbounds float, ptr %3, i64 %index313
  %120 = getelementptr inbounds i8, ptr %119, i64 16
  %wide.load = load <4 x float>, ptr %119, align 4, !tbaa !27
  %wide.load314 = load <4 x float>, ptr %120, align 4, !tbaa !27
  %121 = fmul <4 x float> %wide.load, %broadcast.splat
  %122 = fmul <4 x float> %wide.load314, %broadcast.splat
  %123 = fmul <4 x float> %121, %broadcast.splat316
  %124 = fmul <4 x float> %122, %broadcast.splat316
  %125 = fptosi <4 x float> %123 to <4 x i32>
  %126 = fptosi <4 x float> %124 to <4 x i32>
  %127 = getelementptr inbounds i32, ptr %26, i64 %index313
  %128 = getelementptr inbounds i8, ptr %127, i64 16
  store <4 x i32> %125, ptr %127, align 4, !tbaa !17
  store <4 x i32> %126, ptr %128, align 4, !tbaa !17
  %index.next317 = add nuw i64 %index313, 8
  %129 = icmp eq i64 %index.next317, %n.vec310
  br i1 %129, label %middle.block305, label %vector.body312, !llvm.loop !29

middle.block305:                                  ; preds = %vector.body312
  %cmp.n318 = icmp eq i64 %n.vec310, %wide.trip.count271
  br i1 %cmp.n318, label %.preheader213, label %scalar.ph306.preheader

.preheader213:                                    ; preds = %scalar.ph306, %middle.block305, %115
  %.not210250 = icmp slt i32 %.0202.lcssa, 0
  br i1 %.not210250, label %.loopexit, label %.lr.ph252

.lr.ph252:                                        ; preds = %.preheader213
  %130 = add nuw i32 %.0202.lcssa, 1
  %wide.trip.count297 = zext i32 %130 to i64
  %wide.trip.count287 = zext i32 %2 to i64
  %invariant.gep = getelementptr i8, ptr %23, i64 4
  %invariant.gep332 = getelementptr i8, ptr %23, i64 8
  %invariant.gep334 = getelementptr i8, ptr %23, i64 12
  %xtraiter324 = and i64 %wide.trip.count287, 1
  %131 = icmp eq i32 %2, 1
  %unroll_iter328 = and i64 %wide.trip.count287, 2147483646
  %lcmp.mod326.not = icmp eq i64 %xtraiter324, 0
  br label %138

scalar.ph306:                                     ; preds = %scalar.ph306.preheader, %scalar.ph306
  %indvars.iv268 = phi i64 [ %indvars.iv.next269, %scalar.ph306 ], [ %indvars.iv268.ph, %scalar.ph306.preheader ]
  %132 = getelementptr inbounds float, ptr %3, i64 %indvars.iv268
  %133 = load float, ptr %132, align 4, !tbaa !27
  %134 = fmul float %133, %4
  %135 = fmul float %134, %118
  %136 = fptosi float %135 to i32
  %137 = getelementptr inbounds i32, ptr %26, i64 %indvars.iv268
  store i32 %136, ptr %137, align 4, !tbaa !17
  %indvars.iv.next269 = add nuw nsw i64 %indvars.iv268, 1
  %exitcond272.not = icmp eq i64 %indvars.iv.next269, %wide.trip.count271
  br i1 %exitcond272.not, label %.preheader213, label %scalar.ph306, !llvm.loop !30

138:                                              ; preds = %.lr.ph252, %._crit_edge248.thread
  %indvars.iv294 = phi i64 [ 0, %.lr.ph252 ], [ %indvars.iv.next295, %._crit_edge248.thread ]
  %139 = getelementptr inbounds i32, ptr %22, i64 %indvars.iv294
  %140 = load i32, ptr %139, align 4, !tbaa !17
  %141 = sext i32 %140 to i64
  %142 = getelementptr inbounds i32, ptr %23, i64 %141
  %143 = load i32, ptr %142, align 4, !tbaa !17
  %144 = sext i32 %143 to i64
  %145 = getelementptr inbounds i32, ptr %17, i64 %144
  %146 = load i32, ptr %145, align 4, !tbaa !17
  %147 = sext i32 %146 to i64
  %148 = getelementptr inbounds i32, ptr %29, i64 %147
  %149 = load i32, ptr %148, align 4, !tbaa !17
  %150 = icmp eq i32 %149, 1
  br i1 %150, label %._crit_edge248.thread, label %.preheader

.preheader:                                       ; preds = %138
  %151 = getelementptr inbounds i8, ptr %139, i64 4
  %152 = load i32, ptr %151, align 4, !tbaa !17
  %153 = icmp slt i32 %140, %152
  br i1 %153, label %.lr.ph233.preheader, label %._crit_edge234

.lr.ph233.preheader:                              ; preds = %.preheader
  %wide.trip.count276 = sext i32 %152 to i64
  %154 = sub nsw i64 %wide.trip.count276, %141
  %xtraiter321 = and i64 %154, 3
  %155 = sub nsw i64 %141, %wide.trip.count276
  %156 = icmp ugt i64 %155, -4
  br i1 %156, label %._crit_edge234.loopexit.unr-lcssa, label %.lr.ph233.preheader.new

.lr.ph233.preheader.new:                          ; preds = %.lr.ph233.preheader
  %unroll_iter = and i64 %154, -4
  br label %.lr.ph233

.lr.ph233:                                        ; preds = %.lr.ph233, %.lr.ph233.preheader.new
  %indvars.iv273 = phi i64 [ %141, %.lr.ph233.preheader.new ], [ %indvars.iv.next274.3, %.lr.ph233 ]
  %.0204231 = phi i32 [ 0, %.lr.ph233.preheader.new ], [ %177, %.lr.ph233 ]
  %niter = phi i64 [ 0, %.lr.ph233.preheader.new ], [ %niter.next.3, %.lr.ph233 ]
  %157 = getelementptr inbounds i32, ptr %23, i64 %indvars.iv273
  %158 = load i32, ptr %157, align 4, !tbaa !17
  %159 = sext i32 %158 to i64
  %160 = getelementptr inbounds i32, ptr %13, i64 %159
  %161 = load i32, ptr %160, align 4, !tbaa !17
  %162 = add nsw i32 %161, %.0204231
  %gep = getelementptr i32, ptr %invariant.gep, i64 %indvars.iv273
  %163 = load i32, ptr %gep, align 4, !tbaa !17
  %164 = sext i32 %163 to i64
  %165 = getelementptr inbounds i32, ptr %13, i64 %164
  %166 = load i32, ptr %165, align 4, !tbaa !17
  %167 = add nsw i32 %166, %162
  %gep333 = getelementptr i32, ptr %invariant.gep332, i64 %indvars.iv273
  %168 = load i32, ptr %gep333, align 4, !tbaa !17
  %169 = sext i32 %168 to i64
  %170 = getelementptr inbounds i32, ptr %13, i64 %169
  %171 = load i32, ptr %170, align 4, !tbaa !17
  %172 = add nsw i32 %171, %167
  %gep335 = getelementptr i32, ptr %invariant.gep334, i64 %indvars.iv273
  %173 = load i32, ptr %gep335, align 4, !tbaa !17
  %174 = sext i32 %173 to i64
  %175 = getelementptr inbounds i32, ptr %13, i64 %174
  %176 = load i32, ptr %175, align 4, !tbaa !17
  %177 = add nsw i32 %176, %172
  %indvars.iv.next274.3 = add nsw i64 %indvars.iv273, 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_edge234.loopexit.unr-lcssa, label %.lr.ph233, !llvm.loop !31

._crit_edge234.loopexit.unr-lcssa:                ; preds = %.lr.ph233, %.lr.ph233.preheader
  %.lcssa.ph = phi i32 [ poison, %.lr.ph233.preheader ], [ %177, %.lr.ph233 ]
  %indvars.iv273.unr = phi i64 [ %141, %.lr.ph233.preheader ], [ %indvars.iv.next274.3, %.lr.ph233 ]
  %.0204231.unr = phi i32 [ 0, %.lr.ph233.preheader ], [ %177, %.lr.ph233 ]
  %lcmp.mod322.not = icmp eq i64 %xtraiter321, 0
  br i1 %lcmp.mod322.not, label %._crit_edge234, label %.lr.ph233.epil

.lr.ph233.epil:                                   ; preds = %._crit_edge234.loopexit.unr-lcssa, %.lr.ph233.epil
  %indvars.iv273.epil = phi i64 [ %indvars.iv.next274.epil, %.lr.ph233.epil ], [ %indvars.iv273.unr, %._crit_edge234.loopexit.unr-lcssa ]
  %.0204231.epil = phi i32 [ %183, %.lr.ph233.epil ], [ %.0204231.unr, %._crit_edge234.loopexit.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.lr.ph233.epil ], [ 0, %._crit_edge234.loopexit.unr-lcssa ]
  %178 = getelementptr inbounds i32, ptr %23, i64 %indvars.iv273.epil
  %179 = load i32, ptr %178, align 4, !tbaa !17
  %180 = sext i32 %179 to i64
  %181 = getelementptr inbounds i32, ptr %13, i64 %180
  %182 = load i32, ptr %181, align 4, !tbaa !17
  %183 = add nsw i32 %182, %.0204231.epil
  %indvars.iv.next274.epil = add nsw i64 %indvars.iv273.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter321
  br i1 %epil.iter.cmp.not, label %._crit_edge234, label %.lr.ph233.epil, !llvm.loop !32

._crit_edge234:                                   ; preds = %._crit_edge234.loopexit.unr-lcssa, %.lr.ph233.epil, %.preheader
  %.0204.lcssa = phi i32 [ 0, %.preheader ], [ %.lcssa.ph, %._crit_edge234.loopexit.unr-lcssa ], [ %183, %.lr.ph233.epil ]
  %.0204.lcssa.fr = freeze i32 %.0204.lcssa
  %184 = sitofp i32 %.0204.lcssa.fr to double
  %185 = getelementptr inbounds i32, ptr %19, i64 %147
  %186 = load i32, ptr %185, align 4, !tbaa !17
  %187 = sitofp i32 %186 to double
  %188 = fmul double %187, 3.000000e-01
  %189 = fcmp olt double %188, %184
  br i1 %189, label %._crit_edge248.thread, label %190

190:                                              ; preds = %._crit_edge234
  %191 = tail call ptr @__idxset(i32 noundef %2, i32 noundef 0, ptr noundef %27) #2
  %192 = load i32, ptr %139, align 4, !tbaa !17
  %193 = load i32, ptr %151, align 4, !tbaa !17
  %194 = icmp slt i32 %192, %193
  br i1 %194, label %.lr.ph242.preheader, label %._crit_edge243

.lr.ph242.preheader:                              ; preds = %190
  %195 = sext i32 %192 to i64
  br label %.lr.ph242

.lr.ph242:                                        ; preds = %.lr.ph242.preheader, %._crit_edge239
  %196 = phi i32 [ %193, %.lr.ph242.preheader ], [ %220, %._crit_edge239 ]
  %indvars.iv281 = phi i64 [ %195, %.lr.ph242.preheader ], [ %indvars.iv.next282, %._crit_edge239 ]
  %197 = getelementptr inbounds i32, ptr %23, i64 %indvars.iv281
  %198 = load i32, ptr %197, align 4, !tbaa !17
  %199 = sext i32 %198 to i64
  %200 = getelementptr inbounds i32, ptr %9, i64 %199
  %201 = load i32, ptr %200, align 4, !tbaa !17
  %202 = getelementptr i8, ptr %200, i64 4
  %203 = load i32, ptr %202, align 4, !tbaa !17
  %204 = icmp slt i32 %201, %203
  br i1 %204, label %.lr.ph238.preheader, label %._crit_edge239

.lr.ph238.preheader:                              ; preds = %.lr.ph242
  %205 = sext i32 %201 to i64
  br label %.lr.ph238

.lr.ph238:                                        ; preds = %.lr.ph238.preheader, %.lr.ph238
  %indvars.iv278 = phi i64 [ %205, %.lr.ph238.preheader ], [ %indvars.iv.next279, %.lr.ph238 ]
  %206 = getelementptr inbounds i32, ptr %15, i64 %indvars.iv278
  %207 = load i32, ptr %206, align 4, !tbaa !17
  %208 = getelementptr inbounds i32, ptr %11, i64 %indvars.iv278
  %209 = load i32, ptr %208, align 4, !tbaa !17
  %210 = sext i32 %209 to i64
  %211 = getelementptr inbounds i32, ptr %17, i64 %210
  %212 = load i32, ptr %211, align 4, !tbaa !17
  %213 = sext i32 %212 to i64
  %214 = getelementptr inbounds i32, ptr %27, i64 %213
  %215 = load i32, ptr %214, align 4, !tbaa !17
  %216 = add nsw i32 %215, %207
  store i32 %216, ptr %214, align 4, !tbaa !17
  %indvars.iv.next279 = add nsw i64 %indvars.iv278, 1
  %217 = load i32, ptr %202, align 4, !tbaa !17
  %218 = sext i32 %217 to i64
  %219 = icmp slt i64 %indvars.iv.next279, %218
  br i1 %219, label %.lr.ph238, label %._crit_edge239.loopexit, !llvm.loop !33

._crit_edge239.loopexit:                          ; preds = %.lr.ph238
  %.pre299 = load i32, ptr %151, align 4, !tbaa !17
  br label %._crit_edge239

._crit_edge239:                                   ; preds = %._crit_edge239.loopexit, %.lr.ph242
  %220 = phi i32 [ %.pre299, %._crit_edge239.loopexit ], [ %196, %.lr.ph242 ]
  %indvars.iv.next282 = add nsw i64 %indvars.iv281, 1
  %221 = sext i32 %220 to i64
  %222 = icmp slt i64 %indvars.iv.next282, %221
  br i1 %222, label %.lr.ph242, label %._crit_edge243, !llvm.loop !34

._crit_edge243:                                   ; preds = %._crit_edge239, %190
  %223 = getelementptr inbounds i32, ptr %27, i64 %147
  store i32 0, ptr %223, align 4, !tbaa !17
  br i1 %117, label %.lr.ph247, label %._crit_edge248.thread

.lr.ph247:                                        ; preds = %._crit_edge243
  %224 = icmp slt i32 %.0204.lcssa.fr, 5
  br i1 %224, label %.lr.ph247.split.us.preheader, label %.lr.ph247.split

.lr.ph247.split.us.preheader:                     ; preds = %.lr.ph247
  br i1 %131, label %._crit_edge248.loopexit.unr-lcssa, label %.lr.ph247.split.us

.lr.ph247.split.us:                               ; preds = %.lr.ph247.split.us.preheader, %249
  %indvars.iv289 = phi i64 [ %indvars.iv.next290.1, %249 ], [ 0, %.lr.ph247.split.us.preheader ]
  %.0205244.us = phi i32 [ %.1206.us.1, %249 ], [ -1, %.lr.ph247.split.us.preheader ]
  %niter329 = phi i64 [ %niter329.next.1, %249 ], [ 0, %.lr.ph247.split.us.preheader ]
  %225 = getelementptr inbounds i32, ptr %27, i64 %indvars.iv289
  %226 = load i32, ptr %225, align 4, !tbaa !17
  %227 = icmp sgt i32 %226, 0
  br i1 %227, label %228, label %.lr.ph247.split.us.1

228:                                              ; preds = %.lr.ph247.split.us
  %229 = icmp eq i32 %.0205244.us, -1
  br i1 %229, label %235, label %230

230:                                              ; preds = %228
  %231 = sext i32 %.0205244.us to i64
  %232 = getelementptr inbounds i32, ptr %27, i64 %231
  %233 = load i32, ptr %232, align 4, !tbaa !17
  %234 = icmp slt i32 %233, %226
  br i1 %234, label %235, label %.lr.ph247.split.us.1

235:                                              ; preds = %230, %228
  %236 = trunc nuw nsw i64 %indvars.iv289 to i32
  br label %.lr.ph247.split.us.1

.lr.ph247.split.us.1:                             ; preds = %235, %230, %.lr.ph247.split.us
  %.1206.us = phi i32 [ %236, %235 ], [ %.0205244.us, %230 ], [ %.0205244.us, %.lr.ph247.split.us ]
  %indvars.iv.next290 = or disjoint i64 %indvars.iv289, 1
  %237 = getelementptr inbounds i32, ptr %27, i64 %indvars.iv.next290
  %238 = load i32, ptr %237, align 4, !tbaa !17
  %239 = icmp sgt i32 %238, 0
  br i1 %239, label %240, label %249

240:                                              ; preds = %.lr.ph247.split.us.1
  %241 = icmp eq i32 %.1206.us, -1
  br i1 %241, label %247, label %242

242:                                              ; preds = %240
  %243 = sext i32 %.1206.us to i64
  %244 = getelementptr inbounds i32, ptr %27, i64 %243
  %245 = load i32, ptr %244, align 4, !tbaa !17
  %246 = icmp slt i32 %245, %238
  br i1 %246, label %247, label %249

247:                                              ; preds = %242, %240
  %248 = trunc nuw nsw i64 %indvars.iv.next290 to i32
  br label %249

249:                                              ; preds = %247, %242, %.lr.ph247.split.us.1
  %.1206.us.1 = phi i32 [ %248, %247 ], [ %.1206.us, %242 ], [ %.1206.us, %.lr.ph247.split.us.1 ]
  %indvars.iv.next290.1 = add nuw nsw i64 %indvars.iv289, 2
  %niter329.next.1 = add i64 %niter329, 2
  %niter329.ncmp.1 = icmp eq i64 %niter329.next.1, %unroll_iter328
  br i1 %niter329.ncmp.1, label %._crit_edge248.loopexit.unr-lcssa, label %.lr.ph247.split.us, !llvm.loop !35

.lr.ph247.split:                                  ; preds = %.lr.ph247, %269
  %indvars.iv284 = phi i64 [ %indvars.iv.next285, %269 ], [ 0, %.lr.ph247 ]
  %.0205244 = phi i32 [ %.1206, %269 ], [ -1, %.lr.ph247 ]
  %250 = getelementptr inbounds i32, ptr %27, i64 %indvars.iv284
  %251 = load i32, ptr %250, align 4, !tbaa !17
  %252 = icmp sgt i32 %251, 0
  br i1 %252, label %253, label %269

253:                                              ; preds = %.lr.ph247.split
  %254 = getelementptr inbounds i32, ptr %19, i64 %indvars.iv284
  %255 = load i32, ptr %254, align 4, !tbaa !17
  %256 = add nsw i32 %255, %.0204.lcssa.fr
  %257 = getelementptr inbounds i32, ptr %26, i64 %indvars.iv284
  %258 = load i32, ptr %257, align 4, !tbaa !17
  %259 = icmp slt i32 %256, %258
  br i1 %259, label %260, label %269

260:                                              ; preds = %253
  %261 = icmp eq i32 %.0205244, -1
  br i1 %261, label %267, label %262

262:                                              ; preds = %260
  %263 = sext i32 %.0205244 to i64
  %264 = getelementptr inbounds i32, ptr %27, i64 %263
  %265 = load i32, ptr %264, align 4, !tbaa !17
  %266 = icmp slt i32 %265, %251
  br i1 %266, label %267, label %269

267:                                              ; preds = %262, %260
  %268 = trunc nuw nsw i64 %indvars.iv284 to i32
  br label %269

269:                                              ; preds = %.lr.ph247.split, %253, %267, %262
  %.1206 = phi i32 [ %268, %267 ], [ %.0205244, %262 ], [ %.0205244, %253 ], [ %.0205244, %.lr.ph247.split ]
  %indvars.iv.next285 = add nuw nsw i64 %indvars.iv284, 1
  %exitcond288.not = icmp eq i64 %indvars.iv.next285, %wide.trip.count287
  br i1 %exitcond288.not, label %._crit_edge248, label %.lr.ph247.split, !llvm.loop !35

._crit_edge248.loopexit.unr-lcssa:                ; preds = %249, %.lr.ph247.split.us.preheader
  %.1206.us.lcssa.ph = phi i32 [ poison, %.lr.ph247.split.us.preheader ], [ %.1206.us.1, %249 ]
  %indvars.iv289.unr = phi i64 [ 0, %.lr.ph247.split.us.preheader ], [ %indvars.iv.next290.1, %249 ]
  %.0205244.us.unr = phi i32 [ -1, %.lr.ph247.split.us.preheader ], [ %.1206.us.1, %249 ]
  br i1 %lcmp.mod326.not, label %._crit_edge248, label %.lr.ph247.split.us.epil

.lr.ph247.split.us.epil:                          ; preds = %._crit_edge248.loopexit.unr-lcssa
  %270 = getelementptr inbounds i32, ptr %27, i64 %indvars.iv289.unr
  %271 = load i32, ptr %270, align 4, !tbaa !17
  %272 = icmp sgt i32 %271, 0
  br i1 %272, label %273, label %._crit_edge248

273:                                              ; preds = %.lr.ph247.split.us.epil
  %274 = icmp eq i32 %.0205244.us.unr, -1
  br i1 %274, label %280, label %275

275:                                              ; preds = %273
  %276 = sext i32 %.0205244.us.unr to i64
  %277 = getelementptr inbounds i32, ptr %27, i64 %276
  %278 = load i32, ptr %277, align 4, !tbaa !17
  %279 = icmp slt i32 %278, %271
  br i1 %279, label %280, label %._crit_edge248

280:                                              ; preds = %275, %273
  %281 = trunc nuw nsw i64 %indvars.iv289.unr to i32
  br label %._crit_edge248

._crit_edge248:                                   ; preds = %269, %._crit_edge248.loopexit.unr-lcssa, %280, %275, %.lr.ph247.split.us.epil
  %.0205.lcssa = phi i32 [ %.1206.us.lcssa.ph, %._crit_edge248.loopexit.unr-lcssa ], [ %281, %280 ], [ %.0205244.us.unr, %275 ], [ %.0205244.us.unr, %.lr.ph247.split.us.epil ], [ %.1206, %269 ]
  %.not211 = icmp eq i32 %.0205.lcssa, -1
  br i1 %.not211, label %._crit_edge248.thread, label %282

282:                                              ; preds = %._crit_edge248
  %283 = sext i32 %.0205.lcssa to i64
  %284 = getelementptr inbounds i32, ptr %19, i64 %283
  %285 = load i32, ptr %284, align 4, !tbaa !17
  %286 = add nsw i32 %285, %.0204.lcssa.fr
  store i32 %286, ptr %284, align 4, !tbaa !17
  %287 = load i32, ptr %185, align 4, !tbaa !17
  %288 = sub nsw i32 %287, %.0204.lcssa.fr
  store i32 %288, ptr %185, align 4, !tbaa !17
  %289 = load i32, ptr %148, align 4, !tbaa !17
  %290 = add nsw i32 %289, -1
  store i32 %290, ptr %148, align 4, !tbaa !17
  %291 = trunc nuw nsw i64 %indvars.iv294 to i32
  tail call void @__MoveGroup(ptr noundef %0, ptr noundef %1, i32 noundef %2, i32 noundef %.0205.lcssa, i32 noundef %291, ptr noundef %22, ptr noundef %23)
  br label %._crit_edge248.thread

._crit_edge248.thread:                            ; preds = %._crit_edge243, %._crit_edge248, %282, %._crit_edge234, %138
  %indvars.iv.next295 = add nuw nsw i64 %indvars.iv294, 1
  %exitcond298.not = icmp eq i64 %indvars.iv.next295, %wide.trip.count297
  br i1 %exitcond298.not, label %.loopexit, label %138, !llvm.loop !36

.loopexit:                                        ; preds = %._crit_edge248.thread, %.preheader213, %._crit_edge
  tail call void @__idxwspacefree(ptr noundef %0, i32 noundef %2) #2
  tail call void @__idxwspacefree(ptr noundef %0, i32 noundef %2) #2
  tail call void @__idxwspacefree(ptr noundef %0, i32 noundef %2) #2
  tail call void @__idxwspacefree(ptr noundef %0, i32 noundef %7) #2
  tail call void @__idxwspacefree(ptr noundef %0, i32 noundef %7) #2
  tail call void @__idxwspacefree(ptr noundef %0, i32 noundef %7) #2
  tail call void @__idxwspacefree(ptr noundef %0, i32 noundef %7) #2
  tail call void @__idxwspacefree(ptr noundef %0, i32 noundef %7) #2
  ret void
}

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

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 = { 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, !10, i64 16}
!6 = !{!"graphdef", !7, i64 0, !7, i64 8, !10, i64 16, !10, i64 20, !7, i64 24, !7, i64 32, !7, i64 40, !7, i64 48, !7, i64 56, !7, i64 64, !7, i64 72, !7, i64 80, !10, i64 88, !10, i64 92, !7, i64 96, !7, i64 104, !10, i64 112, !7, i64 120, !7, i64 128, !7, i64 136, !7, i64 144, !7, i64 152, !7, i64 160, !7, i64 168, !10, i64 176, !7, i64 184, !7, i64 192, !7, i64 200, !7, i64 208}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C/C++ TBAA"}
!10 = !{!"int", !8, i64 0}
!11 = !{!6, !7, i64 24}
!12 = !{!6, !7, i64 48}
!13 = !{!6, !7, i64 32}
!14 = !{!6, !7, i64 56}
!15 = !{!6, !7, i64 96}
!16 = !{!6, !7, i64 104}
!17 = !{!10, !10, i64 0}
!18 = distinct !{!18, !19}
!19 = !{!"llvm.loop.unroll.disable"}
!20 = distinct !{!20, !21, !22, !23}
!21 = !{!"llvm.loop.mustprogress"}
!22 = !{!"llvm.loop.isvectorized", i32 1}
!23 = !{!"llvm.loop.unroll.runtime.disable"}
!24 = distinct !{!24, !21, !22}
!25 = distinct !{!25, !21}
!26 = distinct !{!26, !21}
!27 = !{!28, !28, i64 0}
!28 = !{!"float", !8, i64 0}
!29 = distinct !{!29, !21, !22, !23}
!30 = distinct !{!30, !21, !23, !22}
!31 = distinct !{!31, !21}
!32 = distinct !{!32, !19}
!33 = distinct !{!33, !21}
!34 = distinct !{!34, !21}
!35 = distinct !{!35, !21}
!36 = distinct !{!36, !21}


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