; LLVM IR from CLASS-SZ/class_sz :: class-sz/tools (sparse)

; 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"

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

; 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 i32 @sp_amd(ptr noundef %0, ptr noundef %1, i32 noundef %2, i32 noundef %3, ptr noundef %4, ptr noundef %5) #1 {
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca i32, align 4
  %42 = alloca i32, align 4
  %43 = alloca i32, align 4
  %44 = alloca i32, align 4
  %45 = alloca i32, align 4
  %46 = alloca i32, align 4
  %47 = alloca i32, align 4
  %48 = alloca i32, align 4
  %49 = alloca i32, align 4
  %50 = alloca i32, align 4
  %51 = alloca i32, align 4
  %52 = alloca i32, align 4
  %53 = alloca i32, align 4
  %54 = alloca i32, align 4
  %55 = alloca i32, align 4
  %56 = alloca i32, align 4
  %57 = alloca i32, align 4
  %58 = alloca i32, align 4
  store ptr %0, ptr %7, align 8, !tbaa !5
  store ptr %1, ptr %8, align 8, !tbaa !5
  store i32 %2, ptr %9, align 4, !tbaa !9
  store i32 %3, ptr %10, align 4, !tbaa !9
  store ptr %4, ptr %11, align 8, !tbaa !5
  store ptr %5, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #3
  call void @llvm.lifetime.start.p0(i64 8, 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
  store i32 0, ptr %25, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #3
  store i32 0, ptr %38, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #3
  store i32 0, ptr %45, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #3
  %59 = load i32, ptr %9, align 4, !tbaa !9
  %60 = sitofp i32 %59 to double
  %61 = call double @sqrt(double noundef %60) #3
  %62 = fmul double 1.000000e+01, %61
  %63 = fcmp olt double 1.600000e+01, %62
  br i1 %63, label %64, label %69

64:                                               ; preds = %6
  %65 = load i32, ptr %9, align 4, !tbaa !9
  %66 = sitofp i32 %65 to double
  %67 = call double @sqrt(double noundef %66) #3
  %68 = fmul double 1.000000e+01, %67
  br label %70

69:                                               ; preds = %6
  br label %70

70:                                               ; preds = %69, %64
  %71 = phi double [ %68, %64 ], [ 1.600000e+01, %69 ]
  %72 = fptosi double %71 to i32
  store i32 %72, ptr %37, align 4, !tbaa !9
  %73 = load i32, ptr %9, align 4, !tbaa !9
  %74 = sub nsw i32 %73, 2
  %75 = load i32, ptr %37, align 4, !tbaa !9
  %76 = icmp slt i32 %74, %75
  br i1 %76, label %77, label %80

77:                                               ; preds = %70
  %78 = load i32, ptr %9, align 4, !tbaa !9
  %79 = sub nsw i32 %78, 2
  br label %82

80:                                               ; preds = %70
  %81 = load i32, ptr %37, align 4, !tbaa !9
  br label %82

82:                                               ; preds = %80, %77
  %83 = phi i32 [ %79, %77 ], [ %81, %80 ]
  store i32 %83, ptr %37, align 4, !tbaa !9
  %84 = load ptr, ptr %7, align 8, !tbaa !5
  %85 = load i32, ptr %9, align 4, !tbaa !9
  %86 = sext i32 %85 to i64
  %87 = getelementptr inbounds i32, ptr %84, i64 %86
  %88 = load i32, ptr %87, align 4, !tbaa !9
  store i32 %88, ptr %57, align 4, !tbaa !9
  %89 = load ptr, ptr %12, align 8, !tbaa !5
  store ptr %89, ptr %14, align 8, !tbaa !5
  %90 = load ptr, ptr %12, align 8, !tbaa !5
  %91 = load i32, ptr %9, align 4, !tbaa !9
  %92 = add nsw i32 %91, 1
  %93 = sext i32 %92 to i64
  %94 = getelementptr inbounds i32, ptr %90, i64 %93
  store ptr %94, ptr %15, align 8, !tbaa !5
  %95 = load ptr, ptr %12, align 8, !tbaa !5
  %96 = load i32, ptr %9, align 4, !tbaa !9
  %97 = add nsw i32 %96, 1
  %98 = mul nsw i32 2, %97
  %99 = sext i32 %98 to i64
  %100 = getelementptr inbounds i32, ptr %95, i64 %99
  store ptr %100, ptr %16, align 8, !tbaa !5
  %101 = load ptr, ptr %12, align 8, !tbaa !5
  %102 = load i32, ptr %9, align 4, !tbaa !9
  %103 = add nsw i32 %102, 1
  %104 = mul nsw i32 3, %103
  %105 = sext i32 %104 to i64
  %106 = getelementptr inbounds i32, ptr %101, i64 %105
  store ptr %106, ptr %17, align 8, !tbaa !5
  %107 = load ptr, ptr %12, align 8, !tbaa !5
  %108 = load i32, ptr %9, align 4, !tbaa !9
  %109 = add nsw i32 %108, 1
  %110 = mul nsw i32 4, %109
  %111 = sext i32 %110 to i64
  %112 = getelementptr inbounds i32, ptr %107, i64 %111
  store ptr %112, ptr %18, align 8, !tbaa !5
  %113 = load ptr, ptr %12, align 8, !tbaa !5
  %114 = load i32, ptr %9, align 4, !tbaa !9
  %115 = add nsw i32 %114, 1
  %116 = mul nsw i32 5, %115
  %117 = sext i32 %116 to i64
  %118 = getelementptr inbounds i32, ptr %113, i64 %117
  store ptr %118, ptr %19, align 8, !tbaa !5
  %119 = load ptr, ptr %12, align 8, !tbaa !5
  %120 = load i32, ptr %9, align 4, !tbaa !9
  %121 = add nsw i32 %120, 1
  %122 = mul nsw i32 6, %121
  %123 = sext i32 %122 to i64
  %124 = getelementptr inbounds i32, ptr %119, i64 %123
  store ptr %124, ptr %20, align 8, !tbaa !5
  %125 = load ptr, ptr %12, align 8, !tbaa !5
  %126 = load i32, ptr %9, align 4, !tbaa !9
  %127 = add nsw i32 %126, 1
  %128 = mul nsw i32 7, %127
  %129 = sext i32 %128 to i64
  %130 = getelementptr inbounds i32, ptr %125, i64 %129
  store ptr %130, ptr %21, align 8, !tbaa !5
  %131 = load ptr, ptr %11, align 8, !tbaa !5
  store ptr %131, ptr %13, align 8, !tbaa !5
  store i32 0, ptr %31, align 4, !tbaa !9
  br label %132

132:                                              ; preds = %153, %82
  %133 = load i32, ptr %31, align 4, !tbaa !9
  %134 = load i32, ptr %9, align 4, !tbaa !9
  %135 = icmp slt i32 %133, %134
  br i1 %135, label %136, label %156

136:                                              ; preds = %132
  %137 = load ptr, ptr %7, align 8, !tbaa !5
  %138 = load i32, ptr %31, align 4, !tbaa !9
  %139 = add nsw i32 %138, 1
  %140 = sext i32 %139 to i64
  %141 = getelementptr inbounds i32, ptr %137, i64 %140
  %142 = load i32, ptr %141, align 4, !tbaa !9
  %143 = load ptr, ptr %7, align 8, !tbaa !5
  %144 = load i32, ptr %31, align 4, !tbaa !9
  %145 = sext i32 %144 to i64
  %146 = getelementptr inbounds i32, ptr %143, i64 %145
  %147 = load i32, ptr %146, align 4, !tbaa !9
  %148 = sub nsw i32 %142, %147
  %149 = load ptr, ptr %14, align 8, !tbaa !5
  %150 = load i32, ptr %31, align 4, !tbaa !9
  %151 = sext i32 %150 to i64
  %152 = getelementptr inbounds i32, ptr %149, i64 %151
  store i32 %148, ptr %152, align 4, !tbaa !9
  br label %153

153:                                              ; preds = %136
  %154 = load i32, ptr %31, align 4, !tbaa !9
  %155 = add nsw i32 %154, 1
  store i32 %155, ptr %31, align 4, !tbaa !9
  br label %132, !llvm.loop !11

156:                                              ; preds = %132
  %157 = load ptr, ptr %14, align 8, !tbaa !5
  %158 = load i32, ptr %9, align 4, !tbaa !9
  %159 = sext i32 %158 to i64
  %160 = getelementptr inbounds i32, ptr %157, i64 %159
  store i32 0, ptr %160, align 4, !tbaa !9
  store i32 0, ptr %29, align 4, !tbaa !9
  br label %161

161:                                              ; preds = %203, %156
  %162 = load i32, ptr %29, align 4, !tbaa !9
  %163 = load i32, ptr %9, align 4, !tbaa !9
  %164 = icmp sle i32 %162, %163
  br i1 %164, label %165, label %206

165:                                              ; preds = %161
  %166 = load ptr, ptr %17, align 8, !tbaa !5
  %167 = load i32, ptr %29, align 4, !tbaa !9
  %168 = sext i32 %167 to i64
  %169 = getelementptr inbounds i32, ptr %166, i64 %168
  store i32 -1, ptr %169, align 4, !tbaa !9
  %170 = load ptr, ptr %13, align 8, !tbaa !5
  %171 = load i32, ptr %29, align 4, !tbaa !9
  %172 = sext i32 %171 to i64
  %173 = getelementptr inbounds i32, ptr %170, i64 %172
  store i32 -1, ptr %173, align 4, !tbaa !9
  %174 = load ptr, ptr %16, align 8, !tbaa !5
  %175 = load i32, ptr %29, align 4, !tbaa !9
  %176 = sext i32 %175 to i64
  %177 = getelementptr inbounds i32, ptr %174, i64 %176
  store i32 -1, ptr %177, align 4, !tbaa !9
  %178 = load ptr, ptr %21, align 8, !tbaa !5
  %179 = load i32, ptr %29, align 4, !tbaa !9
  %180 = sext i32 %179 to i64
  %181 = getelementptr inbounds i32, ptr %178, i64 %180
  store i32 -1, ptr %181, align 4, !tbaa !9
  %182 = load ptr, ptr %15, align 8, !tbaa !5
  %183 = load i32, ptr %29, align 4, !tbaa !9
  %184 = sext i32 %183 to i64
  %185 = getelementptr inbounds i32, ptr %182, i64 %184
  store i32 1, ptr %185, align 4, !tbaa !9
  %186 = load ptr, ptr %20, align 8, !tbaa !5
  %187 = load i32, ptr %29, align 4, !tbaa !9
  %188 = sext i32 %187 to i64
  %189 = getelementptr inbounds i32, ptr %186, i64 %188
  store i32 1, ptr %189, align 4, !tbaa !9
  %190 = load ptr, ptr %18, align 8, !tbaa !5
  %191 = load i32, ptr %29, align 4, !tbaa !9
  %192 = sext i32 %191 to i64
  %193 = getelementptr inbounds i32, ptr %190, i64 %192
  store i32 0, ptr %193, align 4, !tbaa !9
  %194 = load ptr, ptr %14, align 8, !tbaa !5
  %195 = load i32, ptr %29, 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 ptr, ptr %19, align 8, !tbaa !5
  %200 = load i32, ptr %29, align 4, !tbaa !9
  %201 = sext i32 %200 to i64
  %202 = getelementptr inbounds i32, ptr %199, i64 %201
  store i32 %198, ptr %202, align 4, !tbaa !9
  br label %203

203:                                              ; preds = %165
  %204 = load i32, ptr %29, align 4, !tbaa !9
  %205 = add nsw i32 %204, 1
  store i32 %205, ptr %29, align 4, !tbaa !9
  br label %161, !llvm.loop !13

206:                                              ; preds = %161
  %207 = load ptr, ptr %20, align 8, !tbaa !5
  %208 = load i32, ptr %9, align 4, !tbaa !9
  %209 = call i32 @sp_wclear(i32 noundef 0, i32 noundef 0, ptr noundef %207, i32 noundef %208)
  store i32 %209, ptr %42, align 4, !tbaa !9
  %210 = load ptr, ptr %18, align 8, !tbaa !5
  %211 = load i32, ptr %9, align 4, !tbaa !9
  %212 = sext i32 %211 to i64
  %213 = getelementptr inbounds i32, ptr %210, i64 %212
  store i32 -2, ptr %213, align 4, !tbaa !9
  %214 = load ptr, ptr %7, align 8, !tbaa !5
  %215 = load i32, ptr %9, 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 ptr, ptr %20, align 8, !tbaa !5
  %219 = load i32, ptr %9, align 4, !tbaa !9
  %220 = sext i32 %219 to i64
  %221 = getelementptr inbounds i32, ptr %218, i64 %220
  store i32 0, ptr %221, align 4, !tbaa !9
  store i32 0, ptr %29, align 4, !tbaa !9
  br label %222

222:                                              ; preds = %311, %206
  %223 = load i32, ptr %29, align 4, !tbaa !9
  %224 = load i32, ptr %9, align 4, !tbaa !9
  %225 = icmp slt i32 %223, %224
  br i1 %225, label %226, label %314

226:                                              ; preds = %222
  %227 = load ptr, ptr %19, align 8, !tbaa !5
  %228 = load i32, ptr %29, align 4, !tbaa !9
  %229 = sext i32 %228 to i64
  %230 = getelementptr inbounds i32, ptr %227, i64 %229
  %231 = load i32, ptr %230, align 4, !tbaa !9
  store i32 %231, ptr %22, align 4, !tbaa !9
  %232 = load i32, ptr %22, align 4, !tbaa !9
  %233 = icmp eq i32 %232, 0
  br i1 %233, label %234, label %249

234:                                              ; preds = %226
  %235 = load ptr, ptr %18, align 8, !tbaa !5
  %236 = load i32, ptr %29, align 4, !tbaa !9
  %237 = sext i32 %236 to i64
  %238 = getelementptr inbounds i32, ptr %235, i64 %237
  store i32 -2, ptr %238, align 4, !tbaa !9
  %239 = load i32, ptr %45, align 4, !tbaa !9
  %240 = add nsw i32 %239, 1
  store i32 %240, ptr %45, align 4, !tbaa !9
  %241 = load ptr, ptr %7, align 8, !tbaa !5
  %242 = load i32, ptr %29, align 4, !tbaa !9
  %243 = sext i32 %242 to i64
  %244 = getelementptr inbounds i32, ptr %241, i64 %243
  store i32 -1, ptr %244, align 4, !tbaa !9
  %245 = load ptr, ptr %20, align 8, !tbaa !5
  %246 = load i32, ptr %29, align 4, !tbaa !9
  %247 = sext i32 %246 to i64
  %248 = getelementptr inbounds i32, ptr %245, i64 %247
  store i32 0, ptr %248, align 4, !tbaa !9
  br label %310

249:                                              ; preds = %226
  %250 = load i32, ptr %22, align 4, !tbaa !9
  %251 = load i32, ptr %37, align 4, !tbaa !9
  %252 = icmp sgt i32 %250, %251
  br i1 %252, label %253, label %277

253:                                              ; preds = %249
  %254 = load ptr, ptr %15, align 8, !tbaa !5
  %255 = load i32, ptr %29, align 4, !tbaa !9
  %256 = sext i32 %255 to i64
  %257 = getelementptr inbounds i32, ptr %254, i64 %256
  store i32 0, ptr %257, align 4, !tbaa !9
  %258 = load ptr, ptr %18, align 8, !tbaa !5
  %259 = load i32, ptr %29, align 4, !tbaa !9
  %260 = sext i32 %259 to i64
  %261 = getelementptr inbounds i32, ptr %258, i64 %260
  store i32 -1, ptr %261, align 4, !tbaa !9
  %262 = load i32, ptr %45, align 4, !tbaa !9
  %263 = add nsw i32 %262, 1
  store i32 %263, ptr %45, align 4, !tbaa !9
  %264 = load i32, ptr %9, align 4, !tbaa !9
  %265 = sub nsw i32 0, %264
  %266 = sub nsw i32 %265, 2
  %267 = load ptr, ptr %7, align 8, !tbaa !5
  %268 = load i32, ptr %29, align 4, !tbaa !9
  %269 = sext i32 %268 to i64
  %270 = getelementptr inbounds i32, ptr %267, i64 %269
  store i32 %266, ptr %270, align 4, !tbaa !9
  %271 = load ptr, ptr %15, align 8, !tbaa !5
  %272 = load i32, ptr %9, align 4, !tbaa !9
  %273 = sext i32 %272 to i64
  %274 = getelementptr inbounds i32, ptr %271, i64 %273
  %275 = load i32, ptr %274, align 4, !tbaa !9
  %276 = add nsw i32 %275, 1
  store i32 %276, ptr %274, align 4, !tbaa !9
  br label %309

277:                                              ; preds = %249
  %278 = load ptr, ptr %17, align 8, !tbaa !5
  %279 = load i32, ptr %22, align 4, !tbaa !9
  %280 = sext i32 %279 to i64
  %281 = getelementptr inbounds i32, ptr %278, i64 %280
  %282 = load i32, ptr %281, align 4, !tbaa !9
  %283 = icmp ne i32 %282, -1
  br i1 %283, label %284, label %294

284:                                              ; preds = %277
  %285 = load i32, ptr %29, align 4, !tbaa !9
  %286 = load ptr, ptr %13, align 8, !tbaa !5
  %287 = load ptr, ptr %17, align 8, !tbaa !5
  %288 = load i32, ptr %22, align 4, !tbaa !9
  %289 = sext i32 %288 to i64
  %290 = getelementptr inbounds i32, ptr %287, i64 %289
  %291 = load i32, ptr %290, align 4, !tbaa !9
  %292 = sext i32 %291 to i64
  %293 = getelementptr inbounds i32, ptr %286, i64 %292
  store i32 %285, ptr %293, align 4, !tbaa !9
  br label %294

294:                                              ; preds = %284, %277
  %295 = load ptr, ptr %17, align 8, !tbaa !5
  %296 = load i32, ptr %22, 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 %16, align 8, !tbaa !5
  %301 = load i32, ptr %29, align 4, !tbaa !9
  %302 = sext i32 %301 to i64
  %303 = getelementptr inbounds i32, ptr %300, i64 %302
  store i32 %299, ptr %303, align 4, !tbaa !9
  %304 = load i32, ptr %29, align 4, !tbaa !9
  %305 = load ptr, ptr %17, align 8, !tbaa !5
  %306 = load i32, ptr %22, align 4, !tbaa !9
  %307 = sext i32 %306 to i64
  %308 = getelementptr inbounds i32, ptr %305, i64 %307
  store i32 %304, ptr %308, align 4, !tbaa !9
  br label %309

309:                                              ; preds = %294, %253
  br label %310

310:                                              ; preds = %309, %234
  br label %311

311:                                              ; preds = %310
  %312 = load i32, ptr %29, align 4, !tbaa !9
  %313 = add nsw i32 %312, 1
  store i32 %313, ptr %29, align 4, !tbaa !9
  br label %222, !llvm.loop !14

314:                                              ; preds = %222
  br label %315

315:                                              ; preds = %1396, %314
  %316 = load i32, ptr %45, align 4, !tbaa !9
  %317 = load i32, ptr %9, align 4, !tbaa !9
  %318 = icmp slt i32 %316, %317
  br i1 %318, label %319, label %1397

319:                                              ; preds = %315
  store i32 -1, ptr %31, align 4, !tbaa !9
  br label %320

320:                                              ; preds = %334, %319
  %321 = load i32, ptr %38, align 4, !tbaa !9
  %322 = load i32, ptr %9, align 4, !tbaa !9
  %323 = icmp slt i32 %321, %322
  br i1 %323, label %324, label %331

324:                                              ; preds = %320
  %325 = load ptr, ptr %17, align 8, !tbaa !5
  %326 = load i32, ptr %38, align 4, !tbaa !9
  %327 = sext i32 %326 to i64
  %328 = getelementptr inbounds i32, ptr %325, i64 %327
  %329 = load i32, ptr %328, align 4, !tbaa !9
  store i32 %329, ptr %31, align 4, !tbaa !9
  %330 = icmp eq i32 %329, -1
  br label %331

331:                                              ; preds = %324, %320
  %332 = phi i1 [ false, %320 ], [ %330, %324 ]
  br i1 %332, label %333, label %337

333:                                              ; preds = %331
  br label %334

334:                                              ; preds = %333
  %335 = load i32, ptr %38, align 4, !tbaa !9
  %336 = add nsw i32 %335, 1
  store i32 %336, ptr %38, align 4, !tbaa !9
  br label %320, !llvm.loop !15

337:                                              ; preds = %331
  %338 = load ptr, ptr %16, align 8, !tbaa !5
  %339 = load i32, ptr %31, align 4, !tbaa !9
  %340 = sext i32 %339 to i64
  %341 = getelementptr inbounds i32, ptr %338, i64 %340
  %342 = load i32, ptr %341, align 4, !tbaa !9
  %343 = icmp ne i32 %342, -1
  br i1 %343, label %344, label %353

344:                                              ; preds = %337
  %345 = load ptr, ptr %13, align 8, !tbaa !5
  %346 = load ptr, ptr %16, align 8, !tbaa !5
  %347 = load i32, ptr %31, align 4, !tbaa !9
  %348 = sext i32 %347 to i64
  %349 = getelementptr inbounds i32, ptr %346, i64 %348
  %350 = load i32, ptr %349, align 4, !tbaa !9
  %351 = sext i32 %350 to i64
  %352 = getelementptr inbounds i32, ptr %345, i64 %351
  store i32 -1, ptr %352, align 4, !tbaa !9
  br label %353

353:                                              ; preds = %344, %337
  %354 = load ptr, ptr %16, align 8, !tbaa !5
  %355 = load i32, ptr %31, 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 ptr, ptr %17, align 8, !tbaa !5
  %360 = load i32, ptr %38, align 4, !tbaa !9
  %361 = sext i32 %360 to i64
  %362 = getelementptr inbounds i32, ptr %359, i64 %361
  store i32 %358, ptr %362, align 4, !tbaa !9
  %363 = load ptr, ptr %18, align 8, !tbaa !5
  %364 = load i32, ptr %31, align 4, !tbaa !9
  %365 = sext i32 %364 to i64
  %366 = getelementptr inbounds i32, ptr %363, i64 %365
  %367 = load i32, ptr %366, align 4, !tbaa !9
  store i32 %367, ptr %27, align 4, !tbaa !9
  %368 = load ptr, ptr %15, align 8, !tbaa !5
  %369 = load i32, ptr %31, 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
  store i32 %372, ptr %41, align 4, !tbaa !9
  %373 = load i32, ptr %41, align 4, !tbaa !9
  %374 = load i32, ptr %45, align 4, !tbaa !9
  %375 = add nsw i32 %374, %373
  store i32 %375, ptr %45, align 4, !tbaa !9
  %376 = load i32, ptr %27, align 4, !tbaa !9
  %377 = icmp sgt i32 %376, 0
  br i1 %377, label %378, label %476

378:                                              ; preds = %353
  %379 = load i32, ptr %57, align 4, !tbaa !9
  %380 = load i32, ptr %38, align 4, !tbaa !9
  %381 = add nsw i32 %379, %380
  %382 = load i32, ptr %10, align 4, !tbaa !9
  %383 = icmp sge i32 %381, %382
  br i1 %383, label %384, label %476

384:                                              ; preds = %378
  store i32 0, ptr %30, align 4, !tbaa !9
  br label %385

385:                                              ; preds = %414, %384
  %386 = load i32, ptr %30, align 4, !tbaa !9
  %387 = load i32, ptr %9, align 4, !tbaa !9
  %388 = icmp slt i32 %386, %387
  br i1 %388, label %389, label %417

389:                                              ; preds = %385
  %390 = load ptr, ptr %7, align 8, !tbaa !5
  %391 = load i32, ptr %30, align 4, !tbaa !9
  %392 = sext i32 %391 to i64
  %393 = getelementptr inbounds i32, ptr %390, i64 %392
  %394 = load i32, ptr %393, align 4, !tbaa !9
  store i32 %394, ptr %46, align 4, !tbaa !9
  %395 = icmp sge i32 %394, 0
  br i1 %395, label %396, label %413

396:                                              ; preds = %389
  %397 = load ptr, ptr %8, align 8, !tbaa !5
  %398 = load i32, ptr %46, align 4, !tbaa !9
  %399 = sext i32 %398 to i64
  %400 = getelementptr inbounds i32, ptr %397, i64 %399
  %401 = load i32, ptr %400, align 4, !tbaa !9
  %402 = load ptr, ptr %7, align 8, !tbaa !5
  %403 = load i32, ptr %30, align 4, !tbaa !9
  %404 = sext i32 %403 to i64
  %405 = getelementptr inbounds i32, ptr %402, i64 %404
  store i32 %401, ptr %405, align 4, !tbaa !9
  %406 = load i32, ptr %30, align 4, !tbaa !9
  %407 = sub nsw i32 0, %406
  %408 = sub nsw i32 %407, 2
  %409 = load ptr, ptr %8, align 8, !tbaa !5
  %410 = load i32, ptr %46, align 4, !tbaa !9
  %411 = sext i32 %410 to i64
  %412 = getelementptr inbounds i32, ptr %409, i64 %411
  store i32 %408, ptr %412, align 4, !tbaa !9
  br label %413

413:                                              ; preds = %396, %389
  br label %414

414:                                              ; preds = %413
  %415 = load i32, ptr %30, align 4, !tbaa !9
  %416 = add nsw i32 %415, 1
  store i32 %416, ptr %30, align 4, !tbaa !9
  br label %385, !llvm.loop !16

417:                                              ; preds = %385
  store i32 0, ptr %56, align 4, !tbaa !9
  store i32 0, ptr %46, align 4, !tbaa !9
  br label %418

418:                                              ; preds = %473, %417
  %419 = load i32, ptr %46, align 4, !tbaa !9
  %420 = load i32, ptr %57, align 4, !tbaa !9
  %421 = icmp slt i32 %419, %420
  br i1 %421, label %422, label %474

422:                                              ; preds = %418
  %423 = load ptr, ptr %8, align 8, !tbaa !5
  %424 = load i32, ptr %46, align 4, !tbaa !9
  %425 = add nsw i32 %424, 1
  store i32 %425, ptr %46, align 4, !tbaa !9
  %426 = sext i32 %424 to i64
  %427 = getelementptr inbounds i32, ptr %423, i64 %426
  %428 = load i32, ptr %427, align 4, !tbaa !9
  %429 = sub nsw i32 0, %428
  %430 = sub nsw i32 %429, 2
  store i32 %430, ptr %30, align 4, !tbaa !9
  %431 = icmp sge i32 %430, 0
  br i1 %431, label %432, label %473

432:                                              ; preds = %422
  %433 = load ptr, ptr %7, align 8, !tbaa !5
  %434 = load i32, ptr %30, align 4, !tbaa !9
  %435 = sext i32 %434 to i64
  %436 = getelementptr inbounds i32, ptr %433, i64 %435
  %437 = load i32, ptr %436, align 4, !tbaa !9
  %438 = load ptr, ptr %8, align 8, !tbaa !5
  %439 = load i32, ptr %56, align 4, !tbaa !9
  %440 = sext i32 %439 to i64
  %441 = getelementptr inbounds i32, ptr %438, i64 %440
  store i32 %437, ptr %441, align 4, !tbaa !9
  %442 = load i32, ptr %56, align 4, !tbaa !9
  %443 = add nsw i32 %442, 1
  store i32 %443, ptr %56, align 4, !tbaa !9
  %444 = load ptr, ptr %7, align 8, !tbaa !5
  %445 = load i32, ptr %30, align 4, !tbaa !9
  %446 = sext i32 %445 to i64
  %447 = getelementptr inbounds i32, ptr %444, i64 %446
  store i32 %442, ptr %447, align 4, !tbaa !9
  store i32 0, ptr %34, align 4, !tbaa !9
  br label %448

448:                                              ; preds = %469, %432
  %449 = load i32, ptr %34, align 4, !tbaa !9
  %450 = load ptr, ptr %14, align 8, !tbaa !5
  %451 = load i32, ptr %30, align 4, !tbaa !9
  %452 = sext i32 %451 to i64
  %453 = getelementptr inbounds i32, ptr %450, i64 %452
  %454 = load i32, ptr %453, align 4, !tbaa !9
  %455 = sub nsw i32 %454, 1
  %456 = icmp slt i32 %449, %455
  br i1 %456, label %457, label %472

457:                                              ; preds = %448
  %458 = load ptr, ptr %8, align 8, !tbaa !5
  %459 = load i32, ptr %46, align 4, !tbaa !9
  %460 = add nsw i32 %459, 1
  store i32 %460, ptr %46, align 4, !tbaa !9
  %461 = sext i32 %459 to i64
  %462 = getelementptr inbounds i32, ptr %458, i64 %461
  %463 = load i32, ptr %462, align 4, !tbaa !9
  %464 = load ptr, ptr %8, align 8, !tbaa !5
  %465 = load i32, ptr %56, align 4, !tbaa !9
  %466 = add nsw i32 %465, 1
  store i32 %466, ptr %56, align 4, !tbaa !9
  %467 = sext i32 %465 to i64
  %468 = getelementptr inbounds i32, ptr %464, i64 %467
  store i32 %463, ptr %468, align 4, !tbaa !9
  br label %469

469:                                              ; preds = %457
  %470 = load i32, ptr %34, align 4, !tbaa !9
  %471 = add nsw i32 %470, 1
  store i32 %471, ptr %34, align 4, !tbaa !9
  br label %448, !llvm.loop !17

472:                                              ; preds = %448
  br label %473

473:                                              ; preds = %472, %422
  br label %418, !llvm.loop !18

474:                                              ; preds = %418
  %475 = load i32, ptr %56, align 4, !tbaa !9
  store i32 %475, ptr %57, align 4, !tbaa !9
  br label %476

476:                                              ; preds = %474, %378, %353
  store i32 0, ptr %23, align 4, !tbaa !9
  %477 = load i32, ptr %41, align 4, !tbaa !9
  %478 = sub nsw i32 0, %477
  %479 = load ptr, ptr %15, align 8, !tbaa !5
  %480 = load i32, ptr %31, 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 %7, align 8, !tbaa !5
  %484 = load i32, ptr %31, 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
  store i32 %487, ptr %46, align 4, !tbaa !9
  %488 = load i32, ptr %27, align 4, !tbaa !9
  %489 = icmp eq i32 %488, 0
  br i1 %489, label %490, label %492

490:                                              ; preds = %476
  %491 = load i32, ptr %46, align 4, !tbaa !9
  br label %494

492:                                              ; preds = %476
  %493 = load i32, ptr %57, align 4, !tbaa !9
  br label %494

494:                                              ; preds = %492, %490
  %495 = phi i32 [ %491, %490 ], [ %493, %492 ]
  store i32 %495, ptr %53, align 4, !tbaa !9
  %496 = load i32, ptr %53, align 4, !tbaa !9
  store i32 %496, ptr %54, align 4, !tbaa !9
  store i32 1, ptr %32, align 4, !tbaa !9
  br label %497

497:                                              ; preds = %644, %494
  %498 = load i32, ptr %32, align 4, !tbaa !9
  %499 = load i32, ptr %27, align 4, !tbaa !9
  %500 = add nsw i32 %499, 1
  %501 = icmp sle i32 %498, %500
  br i1 %501, label %502, label %647

502:                                              ; preds = %497
  %503 = load i32, ptr %32, align 4, !tbaa !9
  %504 = load i32, ptr %27, align 4, !tbaa !9
  %505 = icmp sgt i32 %503, %504
  br i1 %505, label %506, label %516

506:                                              ; preds = %502
  %507 = load i32, ptr %31, align 4, !tbaa !9
  store i32 %507, ptr %26, align 4, !tbaa !9
  %508 = load i32, ptr %46, align 4, !tbaa !9
  store i32 %508, ptr %51, align 4, !tbaa !9
  %509 = load ptr, ptr %14, align 8, !tbaa !5
  %510 = load i32, ptr %31, align 4, !tbaa !9
  %511 = sext i32 %510 to i64
  %512 = getelementptr inbounds i32, ptr %509, i64 %511
  %513 = load i32, ptr %512, align 4, !tbaa !9
  %514 = load i32, ptr %27, align 4, !tbaa !9
  %515 = sub nsw i32 %513, %514
  store i32 %515, ptr %36, align 4, !tbaa !9
  br label %533

516:                                              ; preds = %502
  %517 = load ptr, ptr %8, align 8, !tbaa !5
  %518 = load i32, ptr %46, align 4, !tbaa !9
  %519 = add nsw i32 %518, 1
  store i32 %519, ptr %46, align 4, !tbaa !9
  %520 = sext i32 %518 to i64
  %521 = getelementptr inbounds i32, ptr %517, i64 %520
  %522 = load i32, ptr %521, align 4, !tbaa !9
  store i32 %522, ptr %26, align 4, !tbaa !9
  %523 = load ptr, ptr %7, align 8, !tbaa !5
  %524 = load i32, ptr %26, align 4, !tbaa !9
  %525 = sext i32 %524 to i64
  %526 = getelementptr inbounds i32, ptr %523, i64 %525
  %527 = load i32, ptr %526, align 4, !tbaa !9
  store i32 %527, ptr %51, align 4, !tbaa !9
  %528 = load ptr, ptr %14, align 8, !tbaa !5
  %529 = load i32, ptr %26, align 4, !tbaa !9
  %530 = sext i32 %529 to i64
  %531 = getelementptr inbounds i32, ptr %528, i64 %530
  %532 = load i32, ptr %531, align 4, !tbaa !9
  store i32 %532, ptr %36, align 4, !tbaa !9
  br label %533

533:                                              ; preds = %516, %506
  store i32 1, ptr %33, align 4, !tbaa !9
  br label %534

534:                                              ; preds = %624, %533
  %535 = load i32, ptr %33, align 4, !tbaa !9
  %536 = load i32, ptr %36, align 4, !tbaa !9
  %537 = icmp sle i32 %535, %536
  br i1 %537, label %538, label %627

538:                                              ; preds = %534
  %539 = load ptr, ptr %8, align 8, !tbaa !5
  %540 = load i32, ptr %51, align 4, !tbaa !9
  %541 = add nsw i32 %540, 1
  store i32 %541, ptr %51, align 4, !tbaa !9
  %542 = sext i32 %540 to i64
  %543 = getelementptr inbounds i32, ptr %539, i64 %542
  %544 = load i32, ptr %543, align 4, !tbaa !9
  store i32 %544, ptr %29, align 4, !tbaa !9
  %545 = load ptr, ptr %15, align 8, !tbaa !5
  %546 = load i32, ptr %29, align 4, !tbaa !9
  %547 = sext i32 %546 to i64
  %548 = getelementptr inbounds i32, ptr %545, i64 %547
  %549 = load i32, ptr %548, align 4, !tbaa !9
  store i32 %549, ptr %39, align 4, !tbaa !9
  %550 = icmp sle i32 %549, 0
  br i1 %550, label %551, label %552

551:                                              ; preds = %538
  br label %624

552:                                              ; preds = %538
  %553 = load i32, ptr %39, align 4, !tbaa !9
  %554 = load i32, ptr %23, align 4, !tbaa !9
  %555 = add nsw i32 %554, %553
  store i32 %555, ptr %23, align 4, !tbaa !9
  %556 = load i32, ptr %39, align 4, !tbaa !9
  %557 = sub nsw i32 0, %556
  %558 = load ptr, ptr %15, align 8, !tbaa !5
  %559 = load i32, ptr %29, align 4, !tbaa !9
  %560 = sext i32 %559 to i64
  %561 = getelementptr inbounds i32, ptr %558, i64 %560
  store i32 %557, ptr %561, align 4, !tbaa !9
  %562 = load i32, ptr %29, align 4, !tbaa !9
  %563 = load ptr, ptr %8, align 8, !tbaa !5
  %564 = load i32, ptr %54, align 4, !tbaa !9
  %565 = add nsw i32 %564, 1
  store i32 %565, ptr %54, align 4, !tbaa !9
  %566 = sext i32 %564 to i64
  %567 = getelementptr inbounds i32, ptr %563, i64 %566
  store i32 %562, ptr %567, align 4, !tbaa !9
  %568 = load ptr, ptr %16, align 8, !tbaa !5
  %569 = load i32, ptr %29, align 4, !tbaa !9
  %570 = sext i32 %569 to i64
  %571 = getelementptr inbounds i32, ptr %568, i64 %570
  %572 = load i32, ptr %571, align 4, !tbaa !9
  %573 = icmp ne i32 %572, -1
  br i1 %573, label %574, label %588

574:                                              ; preds = %552
  %575 = load ptr, ptr %13, align 8, !tbaa !5
  %576 = load i32, ptr %29, align 4, !tbaa !9
  %577 = sext i32 %576 to i64
  %578 = getelementptr inbounds i32, ptr %575, i64 %577
  %579 = load i32, ptr %578, align 4, !tbaa !9
  %580 = load ptr, ptr %13, align 8, !tbaa !5
  %581 = load ptr, ptr %16, align 8, !tbaa !5
  %582 = load i32, ptr %29, align 4, !tbaa !9
  %583 = sext i32 %582 to i64
  %584 = getelementptr inbounds i32, ptr %581, i64 %583
  %585 = load i32, ptr %584, align 4, !tbaa !9
  %586 = sext i32 %585 to i64
  %587 = getelementptr inbounds i32, ptr %580, i64 %586
  store i32 %579, ptr %587, align 4, !tbaa !9
  br label %588

588:                                              ; preds = %574, %552
  %589 = load ptr, ptr %13, align 8, !tbaa !5
  %590 = load i32, ptr %29, align 4, !tbaa !9
  %591 = sext i32 %590 to i64
  %592 = getelementptr inbounds i32, ptr %589, i64 %591
  %593 = load i32, ptr %592, align 4, !tbaa !9
  %594 = icmp ne i32 %593, -1
  br i1 %594, label %595, label %609

595:                                              ; preds = %588
  %596 = load ptr, ptr %16, align 8, !tbaa !5
  %597 = load i32, ptr %29, align 4, !tbaa !9
  %598 = sext i32 %597 to i64
  %599 = getelementptr inbounds i32, ptr %596, i64 %598
  %600 = load i32, ptr %599, align 4, !tbaa !9
  %601 = load ptr, ptr %16, align 8, !tbaa !5
  %602 = load ptr, ptr %13, align 8, !tbaa !5
  %603 = load i32, ptr %29, align 4, !tbaa !9
  %604 = sext i32 %603 to i64
  %605 = getelementptr inbounds i32, ptr %602, i64 %604
  %606 = load i32, ptr %605, align 4, !tbaa !9
  %607 = sext i32 %606 to i64
  %608 = getelementptr inbounds i32, ptr %601, i64 %607
  store i32 %600, ptr %608, align 4, !tbaa !9
  br label %623

609:                                              ; preds = %588
  %610 = load ptr, ptr %16, align 8, !tbaa !5
  %611 = load i32, ptr %29, align 4, !tbaa !9
  %612 = sext i32 %611 to i64
  %613 = getelementptr inbounds i32, ptr %610, i64 %612
  %614 = load i32, ptr %613, align 4, !tbaa !9
  %615 = load ptr, ptr %17, align 8, !tbaa !5
  %616 = load ptr, ptr %19, align 8, !tbaa !5
  %617 = load i32, ptr %29, align 4, !tbaa !9
  %618 = sext i32 %617 to i64
  %619 = getelementptr inbounds i32, ptr %616, i64 %618
  %620 = load i32, ptr %619, align 4, !tbaa !9
  %621 = sext i32 %620 to i64
  %622 = getelementptr inbounds i32, ptr %615, i64 %621
  store i32 %614, ptr %622, align 4, !tbaa !9
  br label %623

623:                                              ; preds = %609, %595
  br label %624

624:                                              ; preds = %623, %551
  %625 = load i32, ptr %33, align 4, !tbaa !9
  %626 = add nsw i32 %625, 1
  store i32 %626, ptr %33, align 4, !tbaa !9
  br label %534, !llvm.loop !19

627:                                              ; preds = %534
  %628 = load i32, ptr %26, align 4, !tbaa !9
  %629 = load i32, ptr %31, align 4, !tbaa !9
  %630 = icmp ne i32 %628, %629
  br i1 %630, label %631, label %643

631:                                              ; preds = %627
  %632 = load i32, ptr %31, align 4, !tbaa !9
  %633 = sub nsw i32 0, %632
  %634 = sub nsw i32 %633, 2
  %635 = load ptr, ptr %7, align 8, !tbaa !5
  %636 = load i32, ptr %26, align 4, !tbaa !9
  %637 = sext i32 %636 to i64
  %638 = getelementptr inbounds i32, ptr %635, i64 %637
  store i32 %634, ptr %638, align 4, !tbaa !9
  %639 = load ptr, ptr %20, align 8, !tbaa !5
  %640 = load i32, ptr %26, align 4, !tbaa !9
  %641 = sext i32 %640 to i64
  %642 = getelementptr inbounds i32, ptr %639, i64 %641
  store i32 0, ptr %642, align 4, !tbaa !9
  br label %643

643:                                              ; preds = %631, %627
  br label %644

644:                                              ; preds = %643
  %645 = load i32, ptr %32, align 4, !tbaa !9
  %646 = add nsw i32 %645, 1
  store i32 %646, ptr %32, align 4, !tbaa !9
  br label %497, !llvm.loop !20

647:                                              ; preds = %497
  %648 = load i32, ptr %27, align 4, !tbaa !9
  %649 = icmp ne i32 %648, 0
  br i1 %649, label %650, label %652

650:                                              ; preds = %647
  %651 = load i32, ptr %54, align 4, !tbaa !9
  store i32 %651, ptr %57, align 4, !tbaa !9
  br label %652

652:                                              ; preds = %650, %647
  %653 = load i32, ptr %23, align 4, !tbaa !9
  %654 = load ptr, ptr %19, align 8, !tbaa !5
  %655 = load i32, ptr %31, align 4, !tbaa !9
  %656 = sext i32 %655 to i64
  %657 = getelementptr inbounds i32, ptr %654, i64 %656
  store i32 %653, ptr %657, align 4, !tbaa !9
  %658 = load i32, ptr %53, align 4, !tbaa !9
  %659 = load ptr, ptr %7, align 8, !tbaa !5
  %660 = load i32, ptr %31, align 4, !tbaa !9
  %661 = sext i32 %660 to i64
  %662 = getelementptr inbounds i32, ptr %659, i64 %661
  store i32 %658, ptr %662, align 4, !tbaa !9
  %663 = load i32, ptr %54, align 4, !tbaa !9
  %664 = load i32, ptr %53, align 4, !tbaa !9
  %665 = sub nsw i32 %663, %664
  %666 = load ptr, ptr %14, align 8, !tbaa !5
  %667 = load i32, ptr %31, align 4, !tbaa !9
  %668 = sext i32 %667 to i64
  %669 = getelementptr inbounds i32, ptr %666, i64 %668
  store i32 %665, ptr %669, align 4, !tbaa !9
  %670 = load ptr, ptr %18, align 8, !tbaa !5
  %671 = load i32, ptr %31, align 4, !tbaa !9
  %672 = sext i32 %671 to i64
  %673 = getelementptr inbounds i32, ptr %670, i64 %672
  store i32 -2, ptr %673, align 4, !tbaa !9
  %674 = load i32, ptr %42, align 4, !tbaa !9
  %675 = load i32, ptr %25, align 4, !tbaa !9
  %676 = load ptr, ptr %20, align 8, !tbaa !5
  %677 = load i32, ptr %9, align 4, !tbaa !9
  %678 = call i32 @sp_wclear(i32 noundef %674, i32 noundef %675, ptr noundef %676, i32 noundef %677)
  store i32 %678, ptr %42, align 4, !tbaa !9
  %679 = load i32, ptr %53, align 4, !tbaa !9
  store i32 %679, ptr %52, align 4, !tbaa !9
  br label %680

680:                                              ; preds = %769, %652
  %681 = load i32, ptr %52, align 4, !tbaa !9
  %682 = load i32, ptr %54, align 4, !tbaa !9
  %683 = icmp slt i32 %681, %682
  br i1 %683, label %684, label %772

684:                                              ; preds = %680
  %685 = load ptr, ptr %8, align 8, !tbaa !5
  %686 = load i32, ptr %52, align 4, !tbaa !9
  %687 = sext i32 %686 to i64
  %688 = getelementptr inbounds i32, ptr %685, i64 %687
  %689 = load i32, ptr %688, align 4, !tbaa !9
  store i32 %689, ptr %29, align 4, !tbaa !9
  %690 = load ptr, ptr %18, align 8, !tbaa !5
  %691 = load i32, ptr %29, align 4, !tbaa !9
  %692 = sext i32 %691 to i64
  %693 = getelementptr inbounds i32, ptr %690, i64 %692
  %694 = load i32, ptr %693, align 4, !tbaa !9
  store i32 %694, ptr %28, align 4, !tbaa !9
  %695 = icmp sle i32 %694, 0
  br i1 %695, label %696, label %697

696:                                              ; preds = %684
  br label %769

697:                                              ; preds = %684
  %698 = load ptr, ptr %15, align 8, !tbaa !5
  %699 = load i32, ptr %29, align 4, !tbaa !9
  %700 = sext i32 %699 to i64
  %701 = getelementptr inbounds i32, ptr %698, i64 %700
  %702 = load i32, ptr %701, align 4, !tbaa !9
  %703 = sub nsw i32 0, %702
  store i32 %703, ptr %39, align 4, !tbaa !9
  %704 = load i32, ptr %42, align 4, !tbaa !9
  %705 = load i32, ptr %39, align 4, !tbaa !9
  %706 = sub nsw i32 %704, %705
  store i32 %706, ptr %43, align 4, !tbaa !9
  %707 = load ptr, ptr %7, align 8, !tbaa !5
  %708 = load i32, ptr %29, align 4, !tbaa !9
  %709 = sext i32 %708 to i64
  %710 = getelementptr inbounds i32, ptr %707, i64 %709
  %711 = load i32, ptr %710, align 4, !tbaa !9
  store i32 %711, ptr %46, align 4, !tbaa !9
  br label %712

712:                                              ; preds = %765, %697
  %713 = load i32, ptr %46, align 4, !tbaa !9
  %714 = load ptr, ptr %7, align 8, !tbaa !5
  %715 = load i32, ptr %29, align 4, !tbaa !9
  %716 = sext i32 %715 to i64
  %717 = getelementptr inbounds i32, ptr %714, i64 %716
  %718 = load i32, ptr %717, align 4, !tbaa !9
  %719 = load i32, ptr %28, align 4, !tbaa !9
  %720 = add nsw i32 %718, %719
  %721 = sub nsw i32 %720, 1
  %722 = icmp sle i32 %713, %721
  br i1 %722, label %723, label %768

723:                                              ; preds = %712
  %724 = load ptr, ptr %8, align 8, !tbaa !5
  %725 = load i32, ptr %46, align 4, !tbaa !9
  %726 = sext i32 %725 to i64
  %727 = getelementptr inbounds i32, ptr %724, i64 %726
  %728 = load i32, ptr %727, align 4, !tbaa !9
  store i32 %728, ptr %26, align 4, !tbaa !9
  %729 = load ptr, ptr %20, align 8, !tbaa !5
  %730 = load i32, ptr %26, align 4, !tbaa !9
  %731 = sext i32 %730 to i64
  %732 = getelementptr inbounds i32, ptr %729, i64 %731
  %733 = load i32, ptr %732, align 4, !tbaa !9
  %734 = load i32, ptr %42, align 4, !tbaa !9
  %735 = icmp sge i32 %733, %734
  br i1 %735, label %736, label %744

736:                                              ; preds = %723
  %737 = load i32, ptr %39, align 4, !tbaa !9
  %738 = load ptr, ptr %20, align 8, !tbaa !5
  %739 = load i32, ptr %26, align 4, !tbaa !9
  %740 = sext i32 %739 to i64
  %741 = getelementptr inbounds i32, ptr %738, i64 %740
  %742 = load i32, ptr %741, align 4, !tbaa !9
  %743 = sub nsw i32 %742, %737
  store i32 %743, ptr %741, align 4, !tbaa !9
  br label %764

744:                                              ; preds = %723
  %745 = load ptr, ptr %20, align 8, !tbaa !5
  %746 = load i32, ptr %26, align 4, !tbaa !9
  %747 = sext i32 %746 to i64
  %748 = getelementptr inbounds i32, ptr %745, i64 %747
  %749 = load i32, ptr %748, align 4, !tbaa !9
  %750 = icmp ne i32 %749, 0
  br i1 %750, label %751, label %763

751:                                              ; preds = %744
  %752 = load ptr, ptr %19, align 8, !tbaa !5
  %753 = load i32, ptr %26, align 4, !tbaa !9
  %754 = sext i32 %753 to i64
  %755 = getelementptr inbounds i32, ptr %752, i64 %754
  %756 = load i32, ptr %755, align 4, !tbaa !9
  %757 = load i32, ptr %43, align 4, !tbaa !9
  %758 = add nsw i32 %756, %757
  %759 = load ptr, ptr %20, align 8, !tbaa !5
  %760 = load i32, ptr %26, align 4, !tbaa !9
  %761 = sext i32 %760 to i64
  %762 = getelementptr inbounds i32, ptr %759, i64 %761
  store i32 %758, ptr %762, align 4, !tbaa !9
  br label %763

763:                                              ; preds = %751, %744
  br label %764

764:                                              ; preds = %763, %736
  br label %765

765:                                              ; preds = %764
  %766 = load i32, ptr %46, align 4, !tbaa !9
  %767 = add nsw i32 %766, 1
  store i32 %767, ptr %46, align 4, !tbaa !9
  br label %712, !llvm.loop !21

768:                                              ; preds = %712
  br label %769

769:                                              ; preds = %768, %696
  %770 = load i32, ptr %52, align 4, !tbaa !9
  %771 = add nsw i32 %770, 1
  store i32 %771, ptr %52, align 4, !tbaa !9
  br label %680, !llvm.loop !22

772:                                              ; preds = %680
  %773 = load i32, ptr %53, align 4, !tbaa !9
  store i32 %773, ptr %52, align 4, !tbaa !9
  br label %774

774:                                              ; preds = %1017, %772
  %775 = load i32, ptr %52, align 4, !tbaa !9
  %776 = load i32, ptr %54, align 4, !tbaa !9
  %777 = icmp slt i32 %775, %776
  br i1 %777, label %778, label %1020

778:                                              ; preds = %774
  %779 = load ptr, ptr %8, align 8, !tbaa !5
  %780 = load i32, ptr %52, align 4, !tbaa !9
  %781 = sext i32 %780 to i64
  %782 = getelementptr inbounds i32, ptr %779, i64 %781
  %783 = load i32, ptr %782, align 4, !tbaa !9
  store i32 %783, ptr %29, align 4, !tbaa !9
  %784 = load ptr, ptr %7, align 8, !tbaa !5
  %785 = load i32, ptr %29, align 4, !tbaa !9
  %786 = sext i32 %785 to i64
  %787 = getelementptr inbounds i32, ptr %784, i64 %786
  %788 = load i32, ptr %787, align 4, !tbaa !9
  store i32 %788, ptr %47, align 4, !tbaa !9
  %789 = load i32, ptr %47, align 4, !tbaa !9
  %790 = load ptr, ptr %18, align 8, !tbaa !5
  %791 = load i32, ptr %29, align 4, !tbaa !9
  %792 = sext i32 %791 to i64
  %793 = getelementptr inbounds i32, ptr %790, i64 %792
  %794 = load i32, ptr %793, align 4, !tbaa !9
  %795 = add nsw i32 %789, %794
  %796 = sub nsw i32 %795, 1
  store i32 %796, ptr %48, align 4, !tbaa !9
  %797 = load i32, ptr %47, align 4, !tbaa !9
  store i32 %797, ptr %55, align 4, !tbaa !9
  store i32 0, ptr %58, align 4, !tbaa !9
  store i32 0, ptr %22, align 4, !tbaa !9
  %798 = load i32, ptr %47, align 4, !tbaa !9
  store i32 %798, ptr %46, align 4, !tbaa !9
  br label %799

799:                                              ; preds = %852, %778
  %800 = load i32, ptr %46, align 4, !tbaa !9
  %801 = load i32, ptr %48, align 4, !tbaa !9
  %802 = icmp sle i32 %800, %801
  br i1 %802, label %803, label %855

803:                                              ; preds = %799
  %804 = load ptr, ptr %8, align 8, !tbaa !5
  %805 = load i32, ptr %46, align 4, !tbaa !9
  %806 = sext i32 %805 to i64
  %807 = getelementptr inbounds i32, ptr %804, i64 %806
  %808 = load i32, ptr %807, align 4, !tbaa !9
  store i32 %808, ptr %26, align 4, !tbaa !9
  %809 = load ptr, ptr %20, align 8, !tbaa !5
  %810 = load i32, ptr %26, align 4, !tbaa !9
  %811 = sext i32 %810 to i64
  %812 = getelementptr inbounds i32, ptr %809, i64 %811
  %813 = load i32, ptr %812, align 4, !tbaa !9
  %814 = icmp ne i32 %813, 0
  br i1 %814, label %815, label %851

815:                                              ; preds = %803
  %816 = load ptr, ptr %20, align 8, !tbaa !5
  %817 = load i32, ptr %26, align 4, !tbaa !9
  %818 = sext i32 %817 to i64
  %819 = getelementptr inbounds i32, ptr %816, i64 %818
  %820 = load i32, ptr %819, align 4, !tbaa !9
  %821 = load i32, ptr %42, align 4, !tbaa !9
  %822 = sub nsw i32 %820, %821
  store i32 %822, ptr %24, align 4, !tbaa !9
  %823 = load i32, ptr %24, align 4, !tbaa !9
  %824 = icmp sgt i32 %823, 0
  br i1 %824, label %825, label %838

825:                                              ; preds = %815
  %826 = load i32, ptr %24, align 4, !tbaa !9
  %827 = load i32, ptr %22, align 4, !tbaa !9
  %828 = add nsw i32 %827, %826
  store i32 %828, ptr %22, align 4, !tbaa !9
  %829 = load i32, ptr %26, align 4, !tbaa !9
  %830 = load ptr, ptr %8, align 8, !tbaa !5
  %831 = load i32, ptr %55, align 4, !tbaa !9
  %832 = add nsw i32 %831, 1
  store i32 %832, ptr %55, align 4, !tbaa !9
  %833 = sext i32 %831 to i64
  %834 = getelementptr inbounds i32, ptr %830, i64 %833
  store i32 %829, ptr %834, align 4, !tbaa !9
  %835 = load i32, ptr %26, align 4, !tbaa !9
  %836 = load i32, ptr %58, align 4, !tbaa !9
  %837 = add i32 %836, %835
  store i32 %837, ptr %58, align 4, !tbaa !9
  br label %850

838:                                              ; preds = %815
  %839 = load i32, ptr %31, align 4, !tbaa !9
  %840 = sub nsw i32 0, %839
  %841 = sub nsw i32 %840, 2
  %842 = load ptr, ptr %7, align 8, !tbaa !5
  %843 = load i32, ptr %26, align 4, !tbaa !9
  %844 = sext i32 %843 to i64
  %845 = getelementptr inbounds i32, ptr %842, i64 %844
  store i32 %841, ptr %845, align 4, !tbaa !9
  %846 = load ptr, ptr %20, align 8, !tbaa !5
  %847 = load i32, ptr %26, align 4, !tbaa !9
  %848 = sext i32 %847 to i64
  %849 = getelementptr inbounds i32, ptr %846, i64 %848
  store i32 0, ptr %849, align 4, !tbaa !9
  br label %850

850:                                              ; preds = %838, %825
  br label %851

851:                                              ; preds = %850, %803
  br label %852

852:                                              ; preds = %851
  %853 = load i32, ptr %46, align 4, !tbaa !9
  %854 = add nsw i32 %853, 1
  store i32 %854, ptr %46, align 4, !tbaa !9
  br label %799, !llvm.loop !23

855:                                              ; preds = %799
  %856 = load i32, ptr %55, align 4, !tbaa !9
  %857 = load i32, ptr %47, align 4, !tbaa !9
  %858 = sub nsw i32 %856, %857
  %859 = add nsw i32 %858, 1
  %860 = load ptr, ptr %18, align 8, !tbaa !5
  %861 = load i32, ptr %29, align 4, !tbaa !9
  %862 = sext i32 %861 to i64
  %863 = getelementptr inbounds i32, ptr %860, i64 %862
  store i32 %859, ptr %863, align 4, !tbaa !9
  %864 = load i32, ptr %55, align 4, !tbaa !9
  store i32 %864, ptr %49, align 4, !tbaa !9
  %865 = load i32, ptr %47, align 4, !tbaa !9
  %866 = load ptr, ptr %14, align 8, !tbaa !5
  %867 = load i32, ptr %29, align 4, !tbaa !9
  %868 = sext i32 %867 to i64
  %869 = getelementptr inbounds i32, ptr %866, i64 %868
  %870 = load i32, ptr %869, align 4, !tbaa !9
  %871 = add nsw i32 %865, %870
  store i32 %871, ptr %50, align 4, !tbaa !9
  %872 = load i32, ptr %48, align 4, !tbaa !9
  %873 = add nsw i32 %872, 1
  store i32 %873, ptr %46, align 4, !tbaa !9
  br label %874

874:                                              ; preds = %904, %855
  %875 = load i32, ptr %46, align 4, !tbaa !9
  %876 = load i32, ptr %50, align 4, !tbaa !9
  %877 = icmp slt i32 %875, %876
  br i1 %877, label %878, label %907

878:                                              ; preds = %874
  %879 = load ptr, ptr %8, align 8, !tbaa !5
  %880 = load i32, ptr %46, align 4, !tbaa !9
  %881 = sext i32 %880 to i64
  %882 = getelementptr inbounds i32, ptr %879, i64 %881
  %883 = load i32, ptr %882, align 4, !tbaa !9
  store i32 %883, ptr %30, align 4, !tbaa !9
  %884 = load ptr, ptr %15, align 8, !tbaa !5
  %885 = load i32, ptr %30, align 4, !tbaa !9
  %886 = sext i32 %885 to i64
  %887 = getelementptr inbounds i32, ptr %884, i64 %886
  %888 = load i32, ptr %887, align 4, !tbaa !9
  store i32 %888, ptr %40, align 4, !tbaa !9
  %889 = icmp sle i32 %888, 0
  br i1 %889, label %890, label %891

890:                                              ; preds = %878
  br label %904

891:                                              ; preds = %878
  %892 = load i32, ptr %40, align 4, !tbaa !9
  %893 = load i32, ptr %22, align 4, !tbaa !9
  %894 = add nsw i32 %893, %892
  store i32 %894, ptr %22, align 4, !tbaa !9
  %895 = load i32, ptr %30, align 4, !tbaa !9
  %896 = load ptr, ptr %8, align 8, !tbaa !5
  %897 = load i32, ptr %55, align 4, !tbaa !9
  %898 = add nsw i32 %897, 1
  store i32 %898, ptr %55, align 4, !tbaa !9
  %899 = sext i32 %897 to i64
  %900 = getelementptr inbounds i32, ptr %896, i64 %899
  store i32 %895, ptr %900, align 4, !tbaa !9
  %901 = load i32, ptr %30, align 4, !tbaa !9
  %902 = load i32, ptr %58, align 4, !tbaa !9
  %903 = add i32 %902, %901
  store i32 %903, ptr %58, align 4, !tbaa !9
  br label %904

904:                                              ; preds = %891, %890
  %905 = load i32, ptr %46, align 4, !tbaa !9
  %906 = add nsw i32 %905, 1
  store i32 %906, ptr %46, align 4, !tbaa !9
  br label %874, !llvm.loop !24

907:                                              ; preds = %874
  %908 = load i32, ptr %22, align 4, !tbaa !9
  %909 = icmp eq i32 %908, 0
  br i1 %909, label %910, label %941

910:                                              ; preds = %907
  %911 = load i32, ptr %31, align 4, !tbaa !9
  %912 = sub nsw i32 0, %911
  %913 = sub nsw i32 %912, 2
  %914 = load ptr, ptr %7, align 8, !tbaa !5
  %915 = load i32, ptr %29, align 4, !tbaa !9
  %916 = sext i32 %915 to i64
  %917 = getelementptr inbounds i32, ptr %914, i64 %916
  store i32 %913, ptr %917, align 4, !tbaa !9
  %918 = load ptr, ptr %15, align 8, !tbaa !5
  %919 = load i32, ptr %29, align 4, !tbaa !9
  %920 = sext i32 %919 to i64
  %921 = getelementptr inbounds i32, ptr %918, i64 %920
  %922 = load i32, ptr %921, align 4, !tbaa !9
  %923 = sub nsw i32 0, %922
  store i32 %923, ptr %39, align 4, !tbaa !9
  %924 = load i32, ptr %39, align 4, !tbaa !9
  %925 = load i32, ptr %23, align 4, !tbaa !9
  %926 = sub nsw i32 %925, %924
  store i32 %926, ptr %23, align 4, !tbaa !9
  %927 = load i32, ptr %39, align 4, !tbaa !9
  %928 = load i32, ptr %41, align 4, !tbaa !9
  %929 = add nsw i32 %928, %927
  store i32 %929, ptr %41, align 4, !tbaa !9
  %930 = load i32, ptr %39, align 4, !tbaa !9
  %931 = load i32, ptr %45, align 4, !tbaa !9
  %932 = add nsw i32 %931, %930
  store i32 %932, ptr %45, align 4, !tbaa !9
  %933 = load ptr, ptr %15, align 8, !tbaa !5
  %934 = load i32, ptr %29, align 4, !tbaa !9
  %935 = sext i32 %934 to i64
  %936 = getelementptr inbounds i32, ptr %933, i64 %935
  store i32 0, ptr %936, align 4, !tbaa !9
  %937 = load ptr, ptr %18, align 8, !tbaa !5
  %938 = load i32, ptr %29, align 4, !tbaa !9
  %939 = sext i32 %938 to i64
  %940 = getelementptr inbounds i32, ptr %937, i64 %939
  store i32 -1, ptr %940, align 4, !tbaa !9
  br label %1016

941:                                              ; preds = %907
  %942 = load ptr, ptr %19, align 8, !tbaa !5
  %943 = load i32, ptr %29, align 4, !tbaa !9
  %944 = sext i32 %943 to i64
  %945 = getelementptr inbounds i32, ptr %942, i64 %944
  %946 = load i32, ptr %945, align 4, !tbaa !9
  %947 = load i32, ptr %22, align 4, !tbaa !9
  %948 = icmp slt i32 %946, %947
  br i1 %948, label %949, label %955

949:                                              ; preds = %941
  %950 = load ptr, ptr %19, align 8, !tbaa !5
  %951 = load i32, ptr %29, align 4, !tbaa !9
  %952 = sext i32 %951 to i64
  %953 = getelementptr inbounds i32, ptr %950, i64 %952
  %954 = load i32, ptr %953, align 4, !tbaa !9
  br label %957

955:                                              ; preds = %941
  %956 = load i32, ptr %22, align 4, !tbaa !9
  br label %957

957:                                              ; preds = %955, %949
  %958 = phi i32 [ %954, %949 ], [ %956, %955 ]
  %959 = load ptr, ptr %19, align 8, !tbaa !5
  %960 = load i32, ptr %29, align 4, !tbaa !9
  %961 = sext i32 %960 to i64
  %962 = getelementptr inbounds i32, ptr %959, i64 %961
  store i32 %958, ptr %962, align 4, !tbaa !9
  %963 = load ptr, ptr %8, align 8, !tbaa !5
  %964 = load i32, ptr %49, align 4, !tbaa !9
  %965 = sext i32 %964 to i64
  %966 = getelementptr inbounds i32, ptr %963, i64 %965
  %967 = load i32, ptr %966, align 4, !tbaa !9
  %968 = load ptr, ptr %8, align 8, !tbaa !5
  %969 = load i32, ptr %55, align 4, !tbaa !9
  %970 = sext i32 %969 to i64
  %971 = getelementptr inbounds i32, ptr %968, i64 %970
  store i32 %967, ptr %971, align 4, !tbaa !9
  %972 = load ptr, ptr %8, align 8, !tbaa !5
  %973 = load i32, ptr %47, align 4, !tbaa !9
  %974 = sext i32 %973 to i64
  %975 = getelementptr inbounds i32, ptr %972, i64 %974
  %976 = load i32, ptr %975, align 4, !tbaa !9
  %977 = load ptr, ptr %8, align 8, !tbaa !5
  %978 = load i32, ptr %49, align 4, !tbaa !9
  %979 = sext i32 %978 to i64
  %980 = getelementptr inbounds i32, ptr %977, i64 %979
  store i32 %976, ptr %980, align 4, !tbaa !9
  %981 = load i32, ptr %31, align 4, !tbaa !9
  %982 = load ptr, ptr %8, align 8, !tbaa !5
  %983 = load i32, ptr %47, align 4, !tbaa !9
  %984 = sext i32 %983 to i64
  %985 = getelementptr inbounds i32, ptr %982, i64 %984
  store i32 %981, ptr %985, align 4, !tbaa !9
  %986 = load i32, ptr %55, align 4, !tbaa !9
  %987 = load i32, ptr %47, align 4, !tbaa !9
  %988 = sub nsw i32 %986, %987
  %989 = add nsw i32 %988, 1
  %990 = load ptr, ptr %14, align 8, !tbaa !5
  %991 = load i32, ptr %29, align 4, !tbaa !9
  %992 = sext i32 %991 to i64
  %993 = getelementptr inbounds i32, ptr %990, i64 %992
  store i32 %989, ptr %993, align 4, !tbaa !9
  %994 = load i32, ptr %9, align 4, !tbaa !9
  %995 = load i32, ptr %58, align 4, !tbaa !9
  %996 = urem i32 %995, %994
  store i32 %996, ptr %58, align 4, !tbaa !9
  %997 = load ptr, ptr %21, align 8, !tbaa !5
  %998 = load i32, ptr %58, align 4, !tbaa !9
  %999 = zext i32 %998 to i64
  %1000 = getelementptr inbounds i32, ptr %997, i64 %999
  %1001 = load i32, ptr %1000, align 4, !tbaa !9
  %1002 = load ptr, ptr %16, align 8, !tbaa !5
  %1003 = load i32, ptr %29, align 4, !tbaa !9
  %1004 = sext i32 %1003 to i64
  %1005 = getelementptr inbounds i32, ptr %1002, i64 %1004
  store i32 %1001, ptr %1005, align 4, !tbaa !9
  %1006 = load i32, ptr %29, align 4, !tbaa !9
  %1007 = load ptr, ptr %21, align 8, !tbaa !5
  %1008 = load i32, ptr %58, align 4, !tbaa !9
  %1009 = zext i32 %1008 to i64
  %1010 = getelementptr inbounds i32, ptr %1007, i64 %1009
  store i32 %1006, ptr %1010, align 4, !tbaa !9
  %1011 = load i32, ptr %58, align 4, !tbaa !9
  %1012 = load ptr, ptr %13, align 8, !tbaa !5
  %1013 = load i32, ptr %29, align 4, !tbaa !9
  %1014 = sext i32 %1013 to i64
  %1015 = getelementptr inbounds i32, ptr %1012, i64 %1014
  store i32 %1011, ptr %1015, align 4, !tbaa !9
  br label %1016

1016:                                             ; preds = %957, %910
  br label %1017

1017:                                             ; preds = %1016
  %1018 = load i32, ptr %52, align 4, !tbaa !9
  %1019 = add nsw i32 %1018, 1
  store i32 %1019, ptr %52, align 4, !tbaa !9
  br label %774, !llvm.loop !25

1020:                                             ; preds = %774
  %1021 = load i32, ptr %23, align 4, !tbaa !9
  %1022 = load ptr, ptr %19, align 8, !tbaa !5
  %1023 = load i32, ptr %31, align 4, !tbaa !9
  %1024 = sext i32 %1023 to i64
  %1025 = getelementptr inbounds i32, ptr %1022, i64 %1024
  store i32 %1021, ptr %1025, align 4, !tbaa !9
  %1026 = load i32, ptr %25, align 4, !tbaa !9
  %1027 = load i32, ptr %23, align 4, !tbaa !9
  %1028 = icmp slt i32 %1026, %1027
  br i1 %1028, label %1029, label %1031

1029:                                             ; preds = %1020
  %1030 = load i32, ptr %23, align 4, !tbaa !9
  br label %1033

1031:                                             ; preds = %1020
  %1032 = load i32, ptr %25, align 4, !tbaa !9
  br label %1033

1033:                                             ; preds = %1031, %1029
  %1034 = phi i32 [ %1030, %1029 ], [ %1032, %1031 ]
  store i32 %1034, ptr %25, align 4, !tbaa !9
  %1035 = load i32, ptr %42, align 4, !tbaa !9
  %1036 = load i32, ptr %25, align 4, !tbaa !9
  %1037 = add nsw i32 %1035, %1036
  %1038 = load i32, ptr %25, align 4, !tbaa !9
  %1039 = load ptr, ptr %20, align 8, !tbaa !5
  %1040 = load i32, ptr %9, align 4, !tbaa !9
  %1041 = call i32 @sp_wclear(i32 noundef %1037, i32 noundef %1038, ptr noundef %1039, i32 noundef %1040)
  store i32 %1041, ptr %42, align 4, !tbaa !9
  %1042 = load i32, ptr %53, align 4, !tbaa !9
  store i32 %1042, ptr %52, align 4, !tbaa !9
  br label %1043

1043:                                             ; preds = %1254, %1033
  %1044 = load i32, ptr %52, align 4, !tbaa !9
  %1045 = load i32, ptr %54, align 4, !tbaa !9
  %1046 = icmp slt i32 %1044, %1045
  br i1 %1046, label %1047, label %1257

1047:                                             ; preds = %1043
  %1048 = load ptr, ptr %8, align 8, !tbaa !5
  %1049 = load i32, ptr %52, align 4, !tbaa !9
  %1050 = sext i32 %1049 to i64
  %1051 = getelementptr inbounds i32, ptr %1048, i64 %1050
  %1052 = load i32, ptr %1051, align 4, !tbaa !9
  store i32 %1052, ptr %29, align 4, !tbaa !9
  %1053 = load ptr, ptr %15, align 8, !tbaa !5
  %1054 = load i32, ptr %29, align 4, !tbaa !9
  %1055 = sext i32 %1054 to i64
  %1056 = getelementptr inbounds i32, ptr %1053, i64 %1055
  %1057 = load i32, ptr %1056, align 4, !tbaa !9
  %1058 = icmp sge i32 %1057, 0
  br i1 %1058, label %1059, label %1060

1059:                                             ; preds = %1047
  br label %1254

1060:                                             ; preds = %1047
  %1061 = load ptr, ptr %13, align 8, !tbaa !5
  %1062 = load i32, ptr %29, align 4, !tbaa !9
  %1063 = sext i32 %1062 to i64
  %1064 = getelementptr inbounds i32, ptr %1061, i64 %1063
  %1065 = load i32, ptr %1064, align 4, !tbaa !9
  store i32 %1065, ptr %58, align 4, !tbaa !9
  %1066 = load ptr, ptr %21, align 8, !tbaa !5
  %1067 = load i32, ptr %58, align 4, !tbaa !9
  %1068 = zext i32 %1067 to i64
  %1069 = getelementptr inbounds i32, ptr %1066, i64 %1068
  %1070 = load i32, ptr %1069, align 4, !tbaa !9
  store i32 %1070, ptr %29, align 4, !tbaa !9
  %1071 = load ptr, ptr %21, align 8, !tbaa !5
  %1072 = load i32, ptr %58, align 4, !tbaa !9
  %1073 = zext i32 %1072 to i64
  %1074 = getelementptr inbounds i32, ptr %1071, i64 %1073
  store i32 -1, ptr %1074, align 4, !tbaa !9
  br label %1075

1075:                                             ; preds = %1245, %1060
  %1076 = load i32, ptr %29, align 4, !tbaa !9
  %1077 = icmp ne i32 %1076, -1
  br i1 %1077, label %1078, label %1085

1078:                                             ; preds = %1075
  %1079 = load ptr, ptr %16, align 8, !tbaa !5
  %1080 = load i32, ptr %29, align 4, !tbaa !9
  %1081 = sext i32 %1080 to i64
  %1082 = getelementptr inbounds i32, ptr %1079, i64 %1081
  %1083 = load i32, ptr %1082, align 4, !tbaa !9
  %1084 = icmp ne i32 %1083, -1
  br label %1085

1085:                                             ; preds = %1078, %1075
  %1086 = phi i1 [ false, %1075 ], [ %1084, %1078 ]
  br i1 %1086, label %1087, label %1253

1087:                                             ; preds = %1085
  %1088 = load ptr, ptr %14, align 8, !tbaa !5
  %1089 = load i32, ptr %29, align 4, !tbaa !9
  %1090 = sext i32 %1089 to i64
  %1091 = getelementptr inbounds i32, ptr %1088, i64 %1090
  %1092 = load i32, ptr %1091, align 4, !tbaa !9
  store i32 %1092, ptr %36, align 4, !tbaa !9
  %1093 = load ptr, ptr %18, align 8, !tbaa !5
  %1094 = load i32, ptr %29, align 4, !tbaa !9
  %1095 = sext i32 %1094 to i64
  %1096 = getelementptr inbounds i32, ptr %1093, i64 %1095
  %1097 = load i32, ptr %1096, align 4, !tbaa !9
  store i32 %1097, ptr %28, align 4, !tbaa !9
  %1098 = load ptr, ptr %7, align 8, !tbaa !5
  %1099 = load i32, ptr %29, align 4, !tbaa !9
  %1100 = sext i32 %1099 to i64
  %1101 = getelementptr inbounds i32, ptr %1098, i64 %1100
  %1102 = load i32, ptr %1101, align 4, !tbaa !9
  %1103 = add nsw i32 %1102, 1
  store i32 %1103, ptr %46, align 4, !tbaa !9
  br label %1104

1104:                                             ; preds = %1125, %1087
  %1105 = load i32, ptr %46, align 4, !tbaa !9
  %1106 = load ptr, ptr %7, align 8, !tbaa !5
  %1107 = load i32, ptr %29, align 4, !tbaa !9
  %1108 = sext i32 %1107 to i64
  %1109 = getelementptr inbounds i32, ptr %1106, i64 %1108
  %1110 = load i32, ptr %1109, align 4, !tbaa !9
  %1111 = load i32, ptr %36, align 4, !tbaa !9
  %1112 = add nsw i32 %1110, %1111
  %1113 = sub nsw i32 %1112, 1
  %1114 = icmp sle i32 %1105, %1113
  br i1 %1114, label %1115, label %1128

1115:                                             ; preds = %1104
  %1116 = load i32, ptr %42, align 4, !tbaa !9
  %1117 = load ptr, ptr %20, align 8, !tbaa !5
  %1118 = load ptr, ptr %8, align 8, !tbaa !5
  %1119 = load i32, ptr %46, align 4, !tbaa !9
  %1120 = sext i32 %1119 to i64
  %1121 = getelementptr inbounds i32, ptr %1118, i64 %1120
  %1122 = load i32, ptr %1121, align 4, !tbaa !9
  %1123 = sext i32 %1122 to i64
  %1124 = getelementptr inbounds i32, ptr %1117, i64 %1123
  store i32 %1116, ptr %1124, align 4, !tbaa !9
  br label %1125

1125:                                             ; preds = %1115
  %1126 = load i32, ptr %46, align 4, !tbaa !9
  %1127 = add nsw i32 %1126, 1
  store i32 %1127, ptr %46, align 4, !tbaa !9
  br label %1104, !llvm.loop !26

1128:                                             ; preds = %1104
  %1129 = load i32, ptr %29, align 4, !tbaa !9
  store i32 %1129, ptr %35, align 4, !tbaa !9
  %1130 = load ptr, ptr %16, align 8, !tbaa !5
  %1131 = load i32, ptr %29, align 4, !tbaa !9
  %1132 = sext i32 %1131 to i64
  %1133 = getelementptr inbounds i32, ptr %1130, i64 %1132
  %1134 = load i32, ptr %1133, align 4, !tbaa !9
  store i32 %1134, ptr %30, align 4, !tbaa !9
  br label %1135

1135:                                             ; preds = %1243, %1128
  %1136 = load i32, ptr %30, align 4, !tbaa !9
  %1137 = icmp ne i32 %1136, -1
  br i1 %1137, label %1138, label %1244

1138:                                             ; preds = %1135
  %1139 = load ptr, ptr %14, align 8, !tbaa !5
  %1140 = load i32, ptr %30, align 4, !tbaa !9
  %1141 = sext i32 %1140 to i64
  %1142 = getelementptr inbounds i32, ptr %1139, i64 %1141
  %1143 = load i32, ptr %1142, align 4, !tbaa !9
  %1144 = load i32, ptr %36, align 4, !tbaa !9
  %1145 = icmp eq i32 %1143, %1144
  br i1 %1145, label %1146, label %1154

1146:                                             ; preds = %1138
  %1147 = load ptr, ptr %18, align 8, !tbaa !5
  %1148 = load i32, ptr %30, align 4, !tbaa !9
  %1149 = sext i32 %1148 to i64
  %1150 = getelementptr inbounds i32, ptr %1147, i64 %1149
  %1151 = load i32, ptr %1150, align 4, !tbaa !9
  %1152 = load i32, ptr %28, align 4, !tbaa !9
  %1153 = icmp eq i32 %1151, %1152
  br label %1154

1154:                                             ; preds = %1146, %1138
  %1155 = phi i1 [ false, %1138 ], [ %1153, %1146 ]
  %1156 = zext i1 %1155 to i32
  store i32 %1156, ptr %44, align 4, !tbaa !9
  %1157 = load ptr, ptr %7, align 8, !tbaa !5
  %1158 = load i32, ptr %30, align 4, !tbaa !9
  %1159 = sext i32 %1158 to i64
  %1160 = getelementptr inbounds i32, ptr %1157, i64 %1159
  %1161 = load i32, ptr %1160, align 4, !tbaa !9
  %1162 = add nsw i32 %1161, 1
  store i32 %1162, ptr %46, align 4, !tbaa !9
  br label %1163

1163:                                             ; preds = %1193, %1154
  %1164 = load i32, ptr %44, align 4, !tbaa !9
  %1165 = icmp ne i32 %1164, 0
  br i1 %1165, label %1166, label %1177

1166:                                             ; preds = %1163
  %1167 = load i32, ptr %46, align 4, !tbaa !9
  %1168 = load ptr, ptr %7, align 8, !tbaa !5
  %1169 = load i32, ptr %30, align 4, !tbaa !9
  %1170 = sext i32 %1169 to i64
  %1171 = getelementptr inbounds i32, ptr %1168, i64 %1170
  %1172 = load i32, ptr %1171, align 4, !tbaa !9
  %1173 = load i32, ptr %36, align 4, !tbaa !9
  %1174 = add nsw i32 %1172, %1173
  %1175 = sub nsw i32 %1174, 1
  %1176 = icmp sle i32 %1167, %1175
  br label %1177

1177:                                             ; preds = %1166, %1163
  %1178 = phi i1 [ false, %1163 ], [ %1176, %1166 ]
  br i1 %1178, label %1179, label %1196

1179:                                             ; preds = %1177
  %1180 = load ptr, ptr %20, align 8, !tbaa !5
  %1181 = load ptr, ptr %8, align 8, !tbaa !5
  %1182 = load i32, ptr %46, align 4, !tbaa !9
  %1183 = sext i32 %1182 to i64
  %1184 = getelementptr inbounds i32, ptr %1181, i64 %1183
  %1185 = load i32, ptr %1184, align 4, !tbaa !9
  %1186 = sext i32 %1185 to i64
  %1187 = getelementptr inbounds i32, ptr %1180, i64 %1186
  %1188 = load i32, ptr %1187, align 4, !tbaa !9
  %1189 = load i32, ptr %42, align 4, !tbaa !9
  %1190 = icmp ne i32 %1188, %1189
  br i1 %1190, label %1191, label %1192

1191:                                             ; preds = %1179
  store i32 0, ptr %44, align 4, !tbaa !9
  br label %1192

1192:                                             ; preds = %1191, %1179
  br label %1193

1193:                                             ; preds = %1192
  %1194 = load i32, ptr %46, align 4, !tbaa !9
  %1195 = add nsw i32 %1194, 1
  store i32 %1195, ptr %46, align 4, !tbaa !9
  br label %1163, !llvm.loop !27

1196:                                             ; preds = %1177
  %1197 = load i32, ptr %44, align 4, !tbaa !9
  %1198 = icmp ne i32 %1197, 0
  br i1 %1198, label %1199, label %1236

1199:                                             ; preds = %1196
  %1200 = load i32, ptr %29, align 4, !tbaa !9
  %1201 = sub nsw i32 0, %1200
  %1202 = sub nsw i32 %1201, 2
  %1203 = load ptr, ptr %7, align 8, !tbaa !5
  %1204 = load i32, ptr %30, align 4, !tbaa !9
  %1205 = sext i32 %1204 to i64
  %1206 = getelementptr inbounds i32, ptr %1203, i64 %1205
  store i32 %1202, ptr %1206, align 4, !tbaa !9
  %1207 = load ptr, ptr %15, align 8, !tbaa !5
  %1208 = load i32, ptr %30, align 4, !tbaa !9
  %1209 = sext i32 %1208 to i64
  %1210 = getelementptr inbounds i32, ptr %1207, i64 %1209
  %1211 = load i32, ptr %1210, align 4, !tbaa !9
  %1212 = load ptr, ptr %15, align 8, !tbaa !5
  %1213 = load i32, ptr %29, align 4, !tbaa !9
  %1214 = sext i32 %1213 to i64
  %1215 = getelementptr inbounds i32, ptr %1212, i64 %1214
  %1216 = load i32, ptr %1215, align 4, !tbaa !9
  %1217 = add nsw i32 %1216, %1211
  store i32 %1217, ptr %1215, align 4, !tbaa !9
  %1218 = load ptr, ptr %15, align 8, !tbaa !5
  %1219 = load i32, ptr %30, align 4, !tbaa !9
  %1220 = sext i32 %1219 to i64
  %1221 = getelementptr inbounds i32, ptr %1218, i64 %1220
  store i32 0, ptr %1221, align 4, !tbaa !9
  %1222 = load ptr, ptr %18, align 8, !tbaa !5
  %1223 = load i32, ptr %30, align 4, !tbaa !9
  %1224 = sext i32 %1223 to i64
  %1225 = getelementptr inbounds i32, ptr %1222, i64 %1224
  store i32 -1, ptr %1225, align 4, !tbaa !9
  %1226 = load ptr, ptr %16, align 8, !tbaa !5
  %1227 = load i32, ptr %30, align 4, !tbaa !9
  %1228 = sext i32 %1227 to i64
  %1229 = getelementptr inbounds i32, ptr %1226, i64 %1228
  %1230 = load i32, ptr %1229, align 4, !tbaa !9
  store i32 %1230, ptr %30, align 4, !tbaa !9
  %1231 = load i32, ptr %30, align 4, !tbaa !9
  %1232 = load ptr, ptr %16, align 8, !tbaa !5
  %1233 = load i32, ptr %35, align 4, !tbaa !9
  %1234 = sext i32 %1233 to i64
  %1235 = getelementptr inbounds i32, ptr %1232, i64 %1234
  store i32 %1231, ptr %1235, align 4, !tbaa !9
  br label %1243

1236:                                             ; preds = %1196
  %1237 = load i32, ptr %30, align 4, !tbaa !9
  store i32 %1237, ptr %35, align 4, !tbaa !9
  %1238 = load ptr, ptr %16, align 8, !tbaa !5
  %1239 = load i32, ptr %30, align 4, !tbaa !9
  %1240 = sext i32 %1239 to i64
  %1241 = getelementptr inbounds i32, ptr %1238, i64 %1240
  %1242 = load i32, ptr %1241, align 4, !tbaa !9
  store i32 %1242, ptr %30, align 4, !tbaa !9
  br label %1243

1243:                                             ; preds = %1236, %1199
  br label %1135, !llvm.loop !28

1244:                                             ; preds = %1135
  br label %1245

1245:                                             ; preds = %1244
  %1246 = load ptr, ptr %16, align 8, !tbaa !5
  %1247 = load i32, ptr %29, align 4, !tbaa !9
  %1248 = sext i32 %1247 to i64
  %1249 = getelementptr inbounds i32, ptr %1246, i64 %1248
  %1250 = load i32, ptr %1249, align 4, !tbaa !9
  store i32 %1250, ptr %29, align 4, !tbaa !9
  %1251 = load i32, ptr %42, align 4, !tbaa !9
  %1252 = add nsw i32 %1251, 1
  store i32 %1252, ptr %42, align 4, !tbaa !9
  br label %1075, !llvm.loop !29

1253:                                             ; preds = %1085
  br label %1254

1254:                                             ; preds = %1253, %1059
  %1255 = load i32, ptr %52, align 4, !tbaa !9
  %1256 = add nsw i32 %1255, 1
  store i32 %1256, ptr %52, align 4, !tbaa !9
  br label %1043, !llvm.loop !30

1257:                                             ; preds = %1043
  %1258 = load i32, ptr %53, align 4, !tbaa !9
  store i32 %1258, ptr %46, align 4, !tbaa !9
  %1259 = load i32, ptr %53, align 4, !tbaa !9
  store i32 %1259, ptr %52, align 4, !tbaa !9
  br label %1260

1260:                                             ; preds = %1365, %1257
  %1261 = load i32, ptr %52, align 4, !tbaa !9
  %1262 = load i32, ptr %54, align 4, !tbaa !9
  %1263 = icmp slt i32 %1261, %1262
  br i1 %1263, label %1264, label %1368

1264:                                             ; preds = %1260
  %1265 = load ptr, ptr %8, align 8, !tbaa !5
  %1266 = load i32, ptr %52, align 4, !tbaa !9
  %1267 = sext i32 %1266 to i64
  %1268 = getelementptr inbounds i32, ptr %1265, i64 %1267
  %1269 = load i32, ptr %1268, align 4, !tbaa !9
  store i32 %1269, ptr %29, align 4, !tbaa !9
  %1270 = load ptr, ptr %15, align 8, !tbaa !5
  %1271 = load i32, ptr %29, align 4, !tbaa !9
  %1272 = sext i32 %1271 to i64
  %1273 = getelementptr inbounds i32, ptr %1270, i64 %1272
  %1274 = load i32, ptr %1273, align 4, !tbaa !9
  %1275 = sub nsw i32 0, %1274
  store i32 %1275, ptr %39, align 4, !tbaa !9
  %1276 = icmp sle i32 %1275, 0
  br i1 %1276, label %1277, label %1278

1277:                                             ; preds = %1264
  br label %1365

1278:                                             ; preds = %1264
  %1279 = load i32, ptr %39, align 4, !tbaa !9
  %1280 = load ptr, ptr %15, align 8, !tbaa !5
  %1281 = load i32, ptr %29, align 4, !tbaa !9
  %1282 = sext i32 %1281 to i64
  %1283 = getelementptr inbounds i32, ptr %1280, i64 %1282
  store i32 %1279, ptr %1283, align 4, !tbaa !9
  %1284 = load ptr, ptr %19, align 8, !tbaa !5
  %1285 = load i32, ptr %29, align 4, !tbaa !9
  %1286 = sext i32 %1285 to i64
  %1287 = getelementptr inbounds i32, ptr %1284, i64 %1286
  %1288 = load i32, ptr %1287, align 4, !tbaa !9
  %1289 = load i32, ptr %23, align 4, !tbaa !9
  %1290 = add nsw i32 %1288, %1289
  %1291 = load i32, ptr %39, align 4, !tbaa !9
  %1292 = sub nsw i32 %1290, %1291
  store i32 %1292, ptr %22, align 4, !tbaa !9
  %1293 = load i32, ptr %22, align 4, !tbaa !9
  %1294 = load i32, ptr %9, align 4, !tbaa !9
  %1295 = load i32, ptr %45, align 4, !tbaa !9
  %1296 = sub nsw i32 %1294, %1295
  %1297 = load i32, ptr %39, align 4, !tbaa !9
  %1298 = sub nsw i32 %1296, %1297
  %1299 = icmp slt i32 %1293, %1298
  br i1 %1299, label %1300, label %1302

1300:                                             ; preds = %1278
  %1301 = load i32, ptr %22, align 4, !tbaa !9
  br label %1308

1302:                                             ; preds = %1278
  %1303 = load i32, ptr %9, align 4, !tbaa !9
  %1304 = load i32, ptr %45, align 4, !tbaa !9
  %1305 = sub nsw i32 %1303, %1304
  %1306 = load i32, ptr %39, align 4, !tbaa !9
  %1307 = sub nsw i32 %1305, %1306
  br label %1308

1308:                                             ; preds = %1302, %1300
  %1309 = phi i32 [ %1301, %1300 ], [ %1307, %1302 ]
  store i32 %1309, ptr %22, align 4, !tbaa !9
  %1310 = load ptr, ptr %17, align 8, !tbaa !5
  %1311 = load i32, ptr %22, align 4, !tbaa !9
  %1312 = sext i32 %1311 to i64
  %1313 = getelementptr inbounds i32, ptr %1310, i64 %1312
  %1314 = load i32, ptr %1313, align 4, !tbaa !9
  %1315 = icmp ne i32 %1314, -1
  br i1 %1315, label %1316, label %1326

1316:                                             ; preds = %1308
  %1317 = load i32, ptr %29, align 4, !tbaa !9
  %1318 = load ptr, ptr %13, align 8, !tbaa !5
  %1319 = load ptr, ptr %17, align 8, !tbaa !5
  %1320 = load i32, ptr %22, align 4, !tbaa !9
  %1321 = sext i32 %1320 to i64
  %1322 = getelementptr inbounds i32, ptr %1319, i64 %1321
  %1323 = load i32, ptr %1322, align 4, !tbaa !9
  %1324 = sext i32 %1323 to i64
  %1325 = getelementptr inbounds i32, ptr %1318, i64 %1324
  store i32 %1317, ptr %1325, align 4, !tbaa !9
  br label %1326

1326:                                             ; preds = %1316, %1308
  %1327 = load ptr, ptr %17, align 8, !tbaa !5
  %1328 = load i32, ptr %22, align 4, !tbaa !9
  %1329 = sext i32 %1328 to i64
  %1330 = getelementptr inbounds i32, ptr %1327, i64 %1329
  %1331 = load i32, ptr %1330, align 4, !tbaa !9
  %1332 = load ptr, ptr %16, align 8, !tbaa !5
  %1333 = load i32, ptr %29, align 4, !tbaa !9
  %1334 = sext i32 %1333 to i64
  %1335 = getelementptr inbounds i32, ptr %1332, i64 %1334
  store i32 %1331, ptr %1335, align 4, !tbaa !9
  %1336 = load ptr, ptr %13, align 8, !tbaa !5
  %1337 = load i32, ptr %29, align 4, !tbaa !9
  %1338 = sext i32 %1337 to i64
  %1339 = getelementptr inbounds i32, ptr %1336, i64 %1338
  store i32 -1, ptr %1339, align 4, !tbaa !9
  %1340 = load i32, ptr %29, align 4, !tbaa !9
  %1341 = load ptr, ptr %17, align 8, !tbaa !5
  %1342 = load i32, ptr %22, align 4, !tbaa !9
  %1343 = sext i32 %1342 to i64
  %1344 = getelementptr inbounds i32, ptr %1341, i64 %1343
  store i32 %1340, ptr %1344, align 4, !tbaa !9
  %1345 = load i32, ptr %38, align 4, !tbaa !9
  %1346 = load i32, ptr %22, align 4, !tbaa !9
  %1347 = icmp slt i32 %1345, %1346
  br i1 %1347, label %1348, label %1350

1348:                                             ; preds = %1326
  %1349 = load i32, ptr %38, align 4, !tbaa !9
  br label %1352

1350:                                             ; preds = %1326
  %1351 = load i32, ptr %22, align 4, !tbaa !9
  br label %1352

1352:                                             ; preds = %1350, %1348
  %1353 = phi i32 [ %1349, %1348 ], [ %1351, %1350 ]
  store i32 %1353, ptr %38, align 4, !tbaa !9
  %1354 = load i32, ptr %22, align 4, !tbaa !9
  %1355 = load ptr, ptr %19, align 8, !tbaa !5
  %1356 = load i32, ptr %29, align 4, !tbaa !9
  %1357 = sext i32 %1356 to i64
  %1358 = getelementptr inbounds i32, ptr %1355, i64 %1357
  store i32 %1354, ptr %1358, align 4, !tbaa !9
  %1359 = load i32, ptr %29, align 4, !tbaa !9
  %1360 = load ptr, ptr %8, align 8, !tbaa !5
  %1361 = load i32, ptr %46, align 4, !tbaa !9
  %1362 = add nsw i32 %1361, 1
  store i32 %1362, ptr %46, align 4, !tbaa !9
  %1363 = sext i32 %1361 to i64
  %1364 = getelementptr inbounds i32, ptr %1360, i64 %1363
  store i32 %1359, ptr %1364, align 4, !tbaa !9
  br label %1365

1365:                                             ; preds = %1352, %1277
  %1366 = load i32, ptr %52, align 4, !tbaa !9
  %1367 = add nsw i32 %1366, 1
  store i32 %1367, ptr %52, align 4, !tbaa !9
  br label %1260, !llvm.loop !31

1368:                                             ; preds = %1260
  %1369 = load i32, ptr %41, align 4, !tbaa !9
  %1370 = load ptr, ptr %15, align 8, !tbaa !5
  %1371 = load i32, ptr %31, align 4, !tbaa !9
  %1372 = sext i32 %1371 to i64
  %1373 = getelementptr inbounds i32, ptr %1370, i64 %1372
  store i32 %1369, ptr %1373, align 4, !tbaa !9
  %1374 = load i32, ptr %46, align 4, !tbaa !9
  %1375 = load i32, ptr %53, align 4, !tbaa !9
  %1376 = sub nsw i32 %1374, %1375
  %1377 = load ptr, ptr %14, align 8, !tbaa !5
  %1378 = load i32, ptr %31, align 4, !tbaa !9
  %1379 = sext i32 %1378 to i64
  %1380 = getelementptr inbounds i32, ptr %1377, i64 %1379
  store i32 %1376, ptr %1380, align 4, !tbaa !9
  %1381 = icmp eq i32 %1376, 0
  br i1 %1381, label %1382, label %1391

1382:                                             ; preds = %1368
  %1383 = load ptr, ptr %7, align 8, !tbaa !5
  %1384 = load i32, ptr %31, align 4, !tbaa !9
  %1385 = sext i32 %1384 to i64
  %1386 = getelementptr inbounds i32, ptr %1383, i64 %1385
  store i32 -1, ptr %1386, align 4, !tbaa !9
  %1387 = load ptr, ptr %20, align 8, !tbaa !5
  %1388 = load i32, ptr %31, align 4, !tbaa !9
  %1389 = sext i32 %1388 to i64
  %1390 = getelementptr inbounds i32, ptr %1387, i64 %1389
  store i32 0, ptr %1390, align 4, !tbaa !9
  br label %1391

1391:                                             ; preds = %1382, %1368
  %1392 = load i32, ptr %27, align 4, !tbaa !9
  %1393 = icmp ne i32 %1392, 0
  br i1 %1393, label %1394, label %1396

1394:                                             ; preds = %1391
  %1395 = load i32, ptr %46, align 4, !tbaa !9
  store i32 %1395, ptr %57, align 4, !tbaa !9
  br label %1396

1396:                                             ; preds = %1394, %1391
  br label %315, !llvm.loop !32

1397:                                             ; preds = %315
  store i32 0, ptr %29, align 4, !tbaa !9
  br label %1398

1398:                                             ; preds = %1414, %1397
  %1399 = load i32, ptr %29, align 4, !tbaa !9
  %1400 = load i32, ptr %9, align 4, !tbaa !9
  %1401 = icmp slt i32 %1399, %1400
  br i1 %1401, label %1402, label %1417

1402:                                             ; preds = %1398
  %1403 = load ptr, ptr %7, align 8, !tbaa !5
  %1404 = load i32, ptr %29, align 4, !tbaa !9
  %1405 = sext i32 %1404 to i64
  %1406 = getelementptr inbounds i32, ptr %1403, i64 %1405
  %1407 = load i32, ptr %1406, align 4, !tbaa !9
  %1408 = sub nsw i32 0, %1407
  %1409 = sub nsw i32 %1408, 2
  %1410 = load ptr, ptr %7, align 8, !tbaa !5
  %1411 = load i32, ptr %29, align 4, !tbaa !9
  %1412 = sext i32 %1411 to i64
  %1413 = getelementptr inbounds i32, ptr %1410, i64 %1412
  store i32 %1409, ptr %1413, align 4, !tbaa !9
  br label %1414

1414:                                             ; preds = %1402
  %1415 = load i32, ptr %29, align 4, !tbaa !9
  %1416 = add nsw i32 %1415, 1
  store i32 %1416, ptr %29, align 4, !tbaa !9
  br label %1398, !llvm.loop !33

1417:                                             ; preds = %1398
  store i32 0, ptr %30, align 4, !tbaa !9
  br label %1418

1418:                                             ; preds = %1427, %1417
  %1419 = load i32, ptr %30, align 4, !tbaa !9
  %1420 = load i32, ptr %9, align 4, !tbaa !9
  %1421 = icmp sle i32 %1419, %1420
  br i1 %1421, label %1422, label %1430

1422:                                             ; preds = %1418
  %1423 = load ptr, ptr %17, align 8, !tbaa !5
  %1424 = load i32, ptr %30, align 4, !tbaa !9
  %1425 = sext i32 %1424 to i64
  %1426 = getelementptr inbounds i32, ptr %1423, i64 %1425
  store i32 -1, ptr %1426, align 4, !tbaa !9
  br label %1427

1427:                                             ; preds = %1422
  %1428 = load i32, ptr %30, align 4, !tbaa !9
  %1429 = add nsw i32 %1428, 1
  store i32 %1429, ptr %30, align 4, !tbaa !9
  br label %1418, !llvm.loop !34

1430:                                             ; preds = %1418
  %1431 = load i32, ptr %9, align 4, !tbaa !9
  store i32 %1431, ptr %30, align 4, !tbaa !9
  br label %1432

1432:                                             ; preds = %1466, %1430
  %1433 = load i32, ptr %30, align 4, !tbaa !9
  %1434 = icmp sge i32 %1433, 0
  br i1 %1434, label %1435, label %1469

1435:                                             ; preds = %1432
  %1436 = load ptr, ptr %15, align 8, !tbaa !5
  %1437 = load i32, ptr %30, align 4, !tbaa !9
  %1438 = sext i32 %1437 to i64
  %1439 = getelementptr inbounds i32, ptr %1436, i64 %1438
  %1440 = load i32, ptr %1439, align 4, !tbaa !9
  %1441 = icmp sgt i32 %1440, 0
  br i1 %1441, label %1442, label %1443

1442:                                             ; preds = %1435
  br label %1466

1443:                                             ; preds = %1435
  %1444 = load ptr, ptr %17, align 8, !tbaa !5
  %1445 = load ptr, ptr %7, align 8, !tbaa !5
  %1446 = load i32, ptr %30, align 4, !tbaa !9
  %1447 = sext i32 %1446 to i64
  %1448 = getelementptr inbounds i32, ptr %1445, i64 %1447
  %1449 = load i32, ptr %1448, align 4, !tbaa !9
  %1450 = sext i32 %1449 to i64
  %1451 = getelementptr inbounds i32, ptr %1444, i64 %1450
  %1452 = load i32, ptr %1451, align 4, !tbaa !9
  %1453 = load ptr, ptr %16, align 8, !tbaa !5
  %1454 = load i32, ptr %30, align 4, !tbaa !9
  %1455 = sext i32 %1454 to i64
  %1456 = getelementptr inbounds i32, ptr %1453, i64 %1455
  store i32 %1452, ptr %1456, align 4, !tbaa !9
  %1457 = load i32, ptr %30, align 4, !tbaa !9
  %1458 = load ptr, ptr %17, align 8, !tbaa !5
  %1459 = load ptr, ptr %7, align 8, !tbaa !5
  %1460 = load i32, ptr %30, align 4, !tbaa !9
  %1461 = sext i32 %1460 to i64
  %1462 = getelementptr inbounds i32, ptr %1459, i64 %1461
  %1463 = load i32, ptr %1462, align 4, !tbaa !9
  %1464 = sext i32 %1463 to i64
  %1465 = getelementptr inbounds i32, ptr %1458, i64 %1464
  store i32 %1457, ptr %1465, align 4, !tbaa !9
  br label %1466

1466:                                             ; preds = %1443, %1442
  %1467 = load i32, ptr %30, align 4, !tbaa !9
  %1468 = add nsw i32 %1467, -1
  store i32 %1468, ptr %30, align 4, !tbaa !9
  br label %1432, !llvm.loop !35

1469:                                             ; preds = %1432
  %1470 = load i32, ptr %9, align 4, !tbaa !9
  store i32 %1470, ptr %26, align 4, !tbaa !9
  br label %1471

1471:                                             ; preds = %1513, %1469
  %1472 = load i32, ptr %26, align 4, !tbaa !9
  %1473 = icmp sge i32 %1472, 0
  br i1 %1473, label %1474, label %1516

1474:                                             ; preds = %1471
  %1475 = load ptr, ptr %15, align 8, !tbaa !5
  %1476 = load i32, ptr %26, align 4, !tbaa !9
  %1477 = sext i32 %1476 to i64
  %1478 = getelementptr inbounds i32, ptr %1475, i64 %1477
  %1479 = load i32, ptr %1478, align 4, !tbaa !9
  %1480 = icmp sle i32 %1479, 0
  br i1 %1480, label %1481, label %1482

1481:                                             ; preds = %1474
  br label %1513

1482:                                             ; preds = %1474
  %1483 = load ptr, ptr %7, align 8, !tbaa !5
  %1484 = load i32, ptr %26, align 4, !tbaa !9
  %1485 = sext i32 %1484 to i64
  %1486 = getelementptr inbounds i32, ptr %1483, i64 %1485
  %1487 = load i32, ptr %1486, align 4, !tbaa !9
  %1488 = icmp ne i32 %1487, -1
  br i1 %1488, label %1489, label %1512

1489:                                             ; preds = %1482
  %1490 = load ptr, ptr %17, align 8, !tbaa !5
  %1491 = load ptr, ptr %7, align 8, !tbaa !5
  %1492 = load i32, ptr %26, align 4, !tbaa !9
  %1493 = sext i32 %1492 to i64
  %1494 = getelementptr inbounds i32, ptr %1491, i64 %1493
  %1495 = load i32, ptr %1494, align 4, !tbaa !9
  %1496 = sext i32 %1495 to i64
  %1497 = getelementptr inbounds i32, ptr %1490, i64 %1496
  %1498 = load i32, ptr %1497, align 4, !tbaa !9
  %1499 = load ptr, ptr %16, align 8, !tbaa !5
  %1500 = load i32, ptr %26, align 4, !tbaa !9
  %1501 = sext i32 %1500 to i64
  %1502 = getelementptr inbounds i32, ptr %1499, i64 %1501
  store i32 %1498, ptr %1502, align 4, !tbaa !9
  %1503 = load i32, ptr %26, align 4, !tbaa !9
  %1504 = load ptr, ptr %17, align 8, !tbaa !5
  %1505 = load ptr, ptr %7, align 8, !tbaa !5
  %1506 = load i32, ptr %26, align 4, !tbaa !9
  %1507 = sext i32 %1506 to i64
  %1508 = getelementptr inbounds i32, ptr %1505, i64 %1507
  %1509 = load i32, ptr %1508, align 4, !tbaa !9
  %1510 = sext i32 %1509 to i64
  %1511 = getelementptr inbounds i32, ptr %1504, i64 %1510
  store i32 %1503, ptr %1511, align 4, !tbaa !9
  br label %1512

1512:                                             ; preds = %1489, %1482
  br label %1513

1513:                                             ; preds = %1512, %1481
  %1514 = load i32, ptr %26, align 4, !tbaa !9
  %1515 = add nsw i32 %1514, -1
  store i32 %1515, ptr %26, align 4, !tbaa !9
  br label %1471, !llvm.loop !36

1516:                                             ; preds = %1471
  store i32 0, ptr %31, align 4, !tbaa !9
  store i32 0, ptr %29, align 4, !tbaa !9
  br label %1517

1517:                                             ; preds = %1537, %1516
  %1518 = load i32, ptr %29, align 4, !tbaa !9
  %1519 = load i32, ptr %9, align 4, !tbaa !9
  %1520 = icmp sle i32 %1518, %1519
  br i1 %1520, label %1521, label %1540

1521:                                             ; preds = %1517
  %1522 = load ptr, ptr %7, align 8, !tbaa !5
  %1523 = load i32, ptr %29, align 4, !tbaa !9
  %1524 = sext i32 %1523 to i64
  %1525 = getelementptr inbounds i32, ptr %1522, i64 %1524
  %1526 = load i32, ptr %1525, align 4, !tbaa !9
  %1527 = icmp eq i32 %1526, -1
  br i1 %1527, label %1528, label %1536

1528:                                             ; preds = %1521
  %1529 = load i32, ptr %29, align 4, !tbaa !9
  %1530 = load i32, ptr %31, align 4, !tbaa !9
  %1531 = load ptr, ptr %17, align 8, !tbaa !5
  %1532 = load ptr, ptr %16, align 8, !tbaa !5
  %1533 = load ptr, ptr %11, align 8, !tbaa !5
  %1534 = load ptr, ptr %20, align 8, !tbaa !5
  %1535 = call i32 @sp_tdfs(i32 noundef %1529, i32 noundef %1530, ptr noundef %1531, ptr noundef %1532, ptr noundef %1533, ptr noundef %1534)
  store i32 %1535, ptr %31, align 4, !tbaa !9
  br label %1536

1536:                                             ; preds = %1528, %1521
  br label %1537

1537:                                             ; preds = %1536
  %1538 = load i32, ptr %29, align 4, !tbaa !9
  %1539 = add nsw i32 %1538, 1
  store i32 %1539, ptr %29, align 4, !tbaa !9
  br label %1517, !llvm.loop !37

1540:                                             ; preds = %1517
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #3
  call void @llvm.lifetime.end.p0(i64 4, 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 8, ptr %21) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #3
  ret i32 0
}

; Function Attrs: nounwind
declare double @sqrt(double noundef) #2

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

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

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


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

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @sp_amd(ptr nocapture noundef %0, ptr nocapture noundef %1, i32 noundef %2, i32 noundef %3, ptr noundef %4, ptr noundef %5) local_unnamed_addr #0 {
  %7 = ptrtoint ptr %4 to i64
  %8 = ptrtoint ptr %5 to i64
  %9 = sitofp i32 %2 to double
  %10 = tail call double @sqrt(double noundef %9) #4
  %11 = fmul double %10, 1.000000e+01
  %12 = fcmp ogt double %11, 1.600000e+01
  br i1 %12, label %13, label %16

13:                                               ; preds = %6
  %14 = tail call double @sqrt(double noundef %9) #4
  %15 = fmul double %14, 1.000000e+01
  br label %16

16:                                               ; preds = %6, %13
  %17 = phi double [ %15, %13 ], [ 1.600000e+01, %6 ]
  %18 = fptosi double %17 to i32
  %19 = add nsw i32 %2, -2
  %20 = tail call i32 @llvm.smin.i32(i32 %19, i32 %18)
  %21 = sext i32 %2 to i64
  %22 = getelementptr inbounds i32, ptr %0, i64 %21
  %23 = load i32, ptr %22, align 4, !tbaa !5
  %24 = add i32 %2, 1
  %25 = sext i32 %24 to i64
  %26 = getelementptr inbounds i32, ptr %5, i64 %25
  %27 = shl i32 %24, 1
  %28 = sext i32 %27 to i64
  %29 = getelementptr i32, ptr %5, i64 %28
  %30 = mul i32 %24, 3
  %31 = sext i32 %30 to i64
  %32 = getelementptr i32, ptr %5, i64 %31
  %33 = shl i32 %24, 2
  %34 = sext i32 %33 to i64
  %35 = getelementptr i32, ptr %5, i64 %34
  %36 = mul i32 %24, 5
  %37 = sext i32 %36 to i64
  %38 = getelementptr i32, ptr %5, i64 %37
  %39 = mul i32 %24, 6
  %40 = sext i32 %39 to i64
  %41 = getelementptr inbounds i32, ptr %5, i64 %40
  %42 = mul i32 %24, 7
  %43 = sext i32 %42 to i64
  %44 = getelementptr i32, ptr %5, i64 %43
  %45 = icmp sgt i32 %2, 0
  br i1 %45, label %.lr.ph.preheader, label %._crit_edge

.lr.ph.preheader:                                 ; preds = %16
  %wide.trip.count = zext nneg i32 %2 to i64
  %min.iters.check = icmp ult i32 %2, 12
  br i1 %min.iters.check, label %.lr.ph.preheader1104, label %vector.memcheck

vector.memcheck:                                  ; preds = %.lr.ph.preheader
  %46 = shl nuw nsw i64 %wide.trip.count, 2
  %scevgep = getelementptr i8, ptr %5, i64 %46
  %47 = getelementptr i8, ptr %0, i64 %46
  %scevgep999 = getelementptr i8, ptr %47, i64 4
  %bound0 = icmp ugt ptr %scevgep999, %5
  %bound1 = icmp ugt ptr %scevgep, %0
  %found.conflict = and i1 %bound0, %bound1
  br i1 %found.conflict, label %.lr.ph.preheader1104, label %vector.ph

vector.ph:                                        ; preds = %vector.memcheck
  %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 ]
  %48 = or disjoint i64 %index, 1
  %49 = getelementptr inbounds i32, ptr %0, i64 %48
  %50 = getelementptr inbounds i8, ptr %49, i64 16
  %wide.load = load <4 x i32>, ptr %49, align 4, !tbaa !5, !alias.scope !9
  %wide.load1000 = load <4 x i32>, ptr %50, align 4, !tbaa !5, !alias.scope !9
  %51 = getelementptr inbounds i32, ptr %0, i64 %index
  %52 = getelementptr inbounds i8, ptr %51, i64 16
  %wide.load1001 = load <4 x i32>, ptr %51, align 4, !tbaa !5, !alias.scope !9
  %wide.load1002 = load <4 x i32>, ptr %52, align 4, !tbaa !5, !alias.scope !9
  %53 = sub nsw <4 x i32> %wide.load, %wide.load1001
  %54 = sub nsw <4 x i32> %wide.load1000, %wide.load1002
  %55 = getelementptr inbounds i32, ptr %5, i64 %index
  %56 = getelementptr inbounds i8, ptr %55, i64 16
  store <4 x i32> %53, ptr %55, align 4, !tbaa !5, !alias.scope !12, !noalias !9
  store <4 x i32> %54, ptr %56, align 4, !tbaa !5, !alias.scope !12, !noalias !9
  %index.next = add nuw i64 %index, 8
  %57 = icmp eq i64 %index.next, %n.vec
  br i1 %57, label %middle.block, label %vector.body, !llvm.loop !14

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

.lr.ph.preheader1104:                             ; preds = %middle.block, %vector.memcheck, %.lr.ph.preheader
  %indvars.iv.ph = phi i64 [ 0, %vector.memcheck ], [ 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.preheader1104, %.lr.ph.prol
  %indvars.iv.prol = phi i64 [ %indvars.iv.next.prol, %.lr.ph.prol ], [ %indvars.iv.ph, %.lr.ph.preheader1104 ]
  %prol.iter = phi i64 [ %prol.iter.next, %.lr.ph.prol ], [ 0, %.lr.ph.preheader1104 ]
  %indvars.iv.next.prol = add nuw nsw i64 %indvars.iv.prol, 1
  %58 = getelementptr inbounds i32, ptr %0, i64 %indvars.iv.next.prol
  %59 = load i32, ptr %58, align 4, !tbaa !5
  %60 = getelementptr inbounds i32, ptr %0, i64 %indvars.iv.prol
  %61 = load i32, ptr %60, align 4, !tbaa !5
  %62 = sub nsw i32 %59, %61
  %63 = getelementptr inbounds i32, ptr %5, i64 %indvars.iv.prol
  store i32 %62, ptr %63, align 4, !tbaa !5
  %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.preheader1104
  %indvars.iv.unr = phi i64 [ %indvars.iv.ph, %.lr.ph.preheader1104 ], [ %indvars.iv.next.prol, %.lr.ph.prol ]
  %64 = sub nsw i64 %indvars.iv.ph, %wide.trip.count
  %65 = icmp ugt i64 %64, -4
  br i1 %65, label %._crit_edge, label %.lr.ph

.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 ]
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %66 = getelementptr inbounds i32, ptr %0, i64 %indvars.iv.next
  %67 = load i32, ptr %66, align 4, !tbaa !5
  %68 = getelementptr inbounds i32, ptr %0, i64 %indvars.iv
  %69 = load i32, ptr %68, align 4, !tbaa !5
  %70 = sub nsw i32 %67, %69
  %71 = getelementptr inbounds i32, ptr %5, i64 %indvars.iv
  store i32 %70, ptr %71, align 4, !tbaa !5
  %indvars.iv.next.1 = add nuw nsw i64 %indvars.iv, 2
  %72 = getelementptr inbounds i32, ptr %0, i64 %indvars.iv.next.1
  %73 = load i32, ptr %72, align 4, !tbaa !5
  %74 = getelementptr inbounds i32, ptr %0, i64 %indvars.iv.next
  %75 = load i32, ptr %74, align 4, !tbaa !5
  %76 = sub nsw i32 %73, %75
  %77 = getelementptr inbounds i32, ptr %5, i64 %indvars.iv.next
  store i32 %76, ptr %77, align 4, !tbaa !5
  %indvars.iv.next.2 = add nuw nsw i64 %indvars.iv, 3
  %78 = getelementptr inbounds i32, ptr %0, i64 %indvars.iv.next.2
  %79 = load i32, ptr %78, align 4, !tbaa !5
  %80 = getelementptr inbounds i32, ptr %0, i64 %indvars.iv.next.1
  %81 = load i32, ptr %80, align 4, !tbaa !5
  %82 = sub nsw i32 %79, %81
  %83 = getelementptr inbounds i32, ptr %5, i64 %indvars.iv.next.1
  store i32 %82, ptr %83, align 4, !tbaa !5
  %indvars.iv.next.3 = add nuw nsw i64 %indvars.iv, 4
  %84 = getelementptr inbounds i32, ptr %0, i64 %indvars.iv.next.3
  %85 = load i32, ptr %84, align 4, !tbaa !5
  %86 = getelementptr inbounds i32, ptr %0, i64 %indvars.iv.next.2
  %87 = load i32, ptr %86, align 4, !tbaa !5
  %88 = sub nsw i32 %85, %87
  %89 = getelementptr inbounds i32, ptr %5, i64 %indvars.iv.next.2
  store i32 %88, ptr %89, align 4, !tbaa !5
  %exitcond.not.3 = icmp eq i64 %indvars.iv.next.3, %wide.trip.count
  br i1 %exitcond.not.3, label %._crit_edge, label %.lr.ph, !llvm.loop !20

._crit_edge:                                      ; preds = %.lr.ph.prol.loopexit, %.lr.ph, %middle.block, %16
  %90 = getelementptr inbounds i32, ptr %5, i64 %21
  store i32 0, ptr %90, align 4, !tbaa !5
  %.not735 = icmp slt i32 %2, 0
  br i1 %.not735, label %._crit_edge739, label %.lr.ph738.preheader

.lr.ph738.preheader:                              ; preds = %._crit_edge
  %wide.trip.count882 = zext i32 %24 to i64
  %min.iters.check1075 = icmp ult i32 %24, 116
  br i1 %min.iters.check1075, label %.lr.ph738.preheader1103, label %vector.memcheck1003

vector.memcheck1003:                              ; preds = %.lr.ph738.preheader
  %91 = sub i64 %8, %7
  %diff.check = icmp ult i64 %91, 32
  %92 = shl nsw i64 %37, 2
  %93 = add i64 %92, %8
  %94 = sub i64 %93, %7
  %diff.check1004 = icmp ult i64 %94, 32
  %conflict.rdx = or i1 %diff.check, %diff.check1004
  %95 = shl nsw i64 %34, 2
  %96 = add i64 %95, %8
  %97 = sub i64 %96, %7
  %diff.check1005 = icmp ult i64 %97, 32
  %conflict.rdx1006 = or i1 %conflict.rdx, %diff.check1005
  %98 = shl nsw i64 %40, 2
  %99 = add i64 %98, %8
  %100 = sub i64 %99, %7
  %diff.check1007 = icmp ult i64 %100, 32
  %conflict.rdx1008 = or i1 %conflict.rdx1006, %diff.check1007
  %101 = shl nsw i64 %25, 2
  %102 = add i64 %101, %8
  %103 = sub i64 %102, %7
  %diff.check1009 = icmp ult i64 %103, 32
  %conflict.rdx1010 = or i1 %conflict.rdx1008, %diff.check1009
  %104 = shl nsw i64 %43, 2
  %105 = add i64 %104, %8
  %106 = sub i64 %105, %7
  %diff.check1011 = icmp ult i64 %106, 32
  %conflict.rdx1012 = or i1 %conflict.rdx1010, %diff.check1011
  %107 = shl nsw i64 %28, 2
  %108 = add i64 %107, %8
  %109 = sub i64 %108, %7
  %diff.check1013 = icmp ult i64 %109, 32
  %conflict.rdx1014 = or i1 %conflict.rdx1012, %diff.check1013
  %110 = shl nsw i64 %31, 2
  %111 = add i64 %110, %8
  %112 = sub i64 %7, %111
  %diff.check1015 = icmp ult i64 %112, 32
  %conflict.rdx1016 = or i1 %conflict.rdx1014, %diff.check1015
  %113 = sub nsw i64 %107, %110
  %diff.check1017 = icmp ult i64 %113, 32
  %conflict.rdx1018 = or i1 %conflict.rdx1016, %diff.check1017
  %114 = sub nsw i64 %104, %110
  %diff.check1019 = icmp ult i64 %114, 32
  %conflict.rdx1020 = or i1 %conflict.rdx1018, %diff.check1019
  %115 = sub nsw i64 %101, %110
  %diff.check1021 = icmp ult i64 %115, 32
  %conflict.rdx1022 = or i1 %conflict.rdx1020, %diff.check1021
  %116 = sub nsw i64 %98, %110
  %diff.check1023 = icmp ult i64 %116, 32
  %conflict.rdx1024 = or i1 %conflict.rdx1022, %diff.check1023
  %117 = sub nsw i64 %95, %110
  %diff.check1025 = icmp ult i64 %117, 32
  %conflict.rdx1026 = or i1 %conflict.rdx1024, %diff.check1025
  %118 = sub nsw i64 %92, %110
  %diff.check1027 = icmp ult i64 %118, 32
  %conflict.rdx1028 = or i1 %conflict.rdx1026, %diff.check1027
  %119 = mul nsw i64 %31, -4
  %diff.check1029 = icmp ult i64 %119, 32
  %conflict.rdx1030 = or i1 %conflict.rdx1028, %diff.check1029
  %120 = sub nsw i64 %104, %107
  %diff.check1031 = icmp ult i64 %120, 32
  %conflict.rdx1032 = or i1 %conflict.rdx1030, %diff.check1031
  %121 = sub nsw i64 %101, %107
  %diff.check1033 = icmp ult i64 %121, 32
  %conflict.rdx1034 = or i1 %conflict.rdx1032, %diff.check1033
  %122 = sub nsw i64 %98, %107
  %diff.check1035 = icmp ult i64 %122, 32
  %conflict.rdx1036 = or i1 %conflict.rdx1034, %diff.check1035
  %123 = sub nsw i64 %95, %107
  %diff.check1037 = icmp ult i64 %123, 32
  %conflict.rdx1038 = or i1 %conflict.rdx1036, %diff.check1037
  %124 = sub nsw i64 %92, %107
  %diff.check1039 = icmp ult i64 %124, 32
  %conflict.rdx1040 = or i1 %conflict.rdx1038, %diff.check1039
  %125 = mul nsw i64 %28, -4
  %diff.check1041 = icmp ult i64 %125, 32
  %conflict.rdx1042 = or i1 %conflict.rdx1040, %diff.check1041
  %126 = sub nsw i64 %101, %104
  %diff.check1043 = icmp ult i64 %126, 32
  %conflict.rdx1044 = or i1 %conflict.rdx1042, %diff.check1043
  %127 = sub nsw i64 %98, %104
  %diff.check1045 = icmp ult i64 %127, 32
  %conflict.rdx1046 = or i1 %conflict.rdx1044, %diff.check1045
  %128 = sub nsw i64 %95, %104
  %diff.check1047 = icmp ult i64 %128, 32
  %conflict.rdx1048 = or i1 %conflict.rdx1046, %diff.check1047
  %129 = sub nsw i64 %92, %104
  %diff.check1049 = icmp ult i64 %129, 32
  %conflict.rdx1050 = or i1 %conflict.rdx1048, %diff.check1049
  %130 = mul nsw i64 %43, -4
  %diff.check1051 = icmp ult i64 %130, 32
  %conflict.rdx1052 = or i1 %conflict.rdx1050, %diff.check1051
  %131 = sub nsw i64 %98, %101
  %diff.check1053 = icmp ult i64 %131, 32
  %conflict.rdx1054 = or i1 %conflict.rdx1052, %diff.check1053
  %132 = sub nsw i64 %95, %101
  %diff.check1055 = icmp ult i64 %132, 32
  %conflict.rdx1056 = or i1 %conflict.rdx1054, %diff.check1055
  %133 = sub nsw i64 %92, %101
  %diff.check1057 = icmp ult i64 %133, 32
  %conflict.rdx1058 = or i1 %conflict.rdx1056, %diff.check1057
  %134 = mul nsw i64 %25, -4
  %diff.check1059 = icmp ult i64 %134, 32
  %conflict.rdx1060 = or i1 %conflict.rdx1058, %diff.check1059
  %135 = sub nsw i64 %95, %98
  %diff.check1061 = icmp ult i64 %135, 32
  %conflict.rdx1062 = or i1 %conflict.rdx1060, %diff.check1061
  %136 = sub nsw i64 %92, %98
  %diff.check1063 = icmp ult i64 %136, 32
  %conflict.rdx1064 = or i1 %conflict.rdx1062, %diff.check1063
  %137 = mul nsw i64 %40, -4
  %diff.check1065 = icmp ult i64 %137, 32
  %conflict.rdx1066 = or i1 %conflict.rdx1064, %diff.check1065
  %138 = sub nsw i64 %92, %95
  %diff.check1067 = icmp ult i64 %138, 32
  %conflict.rdx1068 = or i1 %conflict.rdx1066, %diff.check1067
  %139 = mul nsw i64 %34, -4
  %diff.check1069 = icmp ult i64 %139, 32
  %conflict.rdx1070 = or i1 %conflict.rdx1068, %diff.check1069
  %diff.check1071 = icmp ult i64 %92, 32
  %conflict.rdx1072 = or i1 %conflict.rdx1070, %diff.check1071
  br i1 %conflict.rdx1072, label %.lr.ph738.preheader1103, label %vector.ph1076

vector.ph1076:                                    ; preds = %vector.memcheck1003
  %n.vec1078 = and i64 %wide.trip.count882, 4294967288
  br label %vector.body1080

vector.body1080:                                  ; preds = %vector.body1080, %vector.ph1076
  %index1081 = phi i64 [ 0, %vector.ph1076 ], [ %index.next1084, %vector.body1080 ]
  %140 = getelementptr inbounds i32, ptr %32, i64 %index1081
  %141 = getelementptr inbounds i8, ptr %140, i64 16
  store <4 x i32> <i32 -1, i32 -1, i32 -1, i32 -1>, ptr %140, align 4, !tbaa !5
  store <4 x i32> <i32 -1, i32 -1, i32 -1, i32 -1>, ptr %141, align 4, !tbaa !5
  %142 = getelementptr inbounds i32, ptr %4, i64 %index1081
  %143 = getelementptr inbounds i8, ptr %142, i64 16
  store <4 x i32> <i32 -1, i32 -1, i32 -1, i32 -1>, ptr %142, align 4, !tbaa !5
  store <4 x i32> <i32 -1, i32 -1, i32 -1, i32 -1>, ptr %143, align 4, !tbaa !5
  %144 = getelementptr inbounds i32, ptr %29, i64 %index1081
  %145 = getelementptr inbounds i8, ptr %144, i64 16
  store <4 x i32> <i32 -1, i32 -1, i32 -1, i32 -1>, ptr %144, align 4, !tbaa !5
  store <4 x i32> <i32 -1, i32 -1, i32 -1, i32 -1>, ptr %145, align 4, !tbaa !5
  %146 = getelementptr inbounds i32, ptr %44, i64 %index1081
  %147 = getelementptr inbounds i8, ptr %146, i64 16
  store <4 x i32> <i32 -1, i32 -1, i32 -1, i32 -1>, ptr %146, align 4, !tbaa !5
  store <4 x i32> <i32 -1, i32 -1, i32 -1, i32 -1>, ptr %147, align 4, !tbaa !5
  %148 = getelementptr inbounds i32, ptr %26, i64 %index1081
  %149 = getelementptr inbounds i8, ptr %148, i64 16
  store <4 x i32> <i32 1, i32 1, i32 1, i32 1>, ptr %148, align 4, !tbaa !5
  store <4 x i32> <i32 1, i32 1, i32 1, i32 1>, ptr %149, align 4, !tbaa !5
  %150 = getelementptr inbounds i32, ptr %41, i64 %index1081
  %151 = getelementptr inbounds i8, ptr %150, i64 16
  store <4 x i32> <i32 1, i32 1, i32 1, i32 1>, ptr %150, align 4, !tbaa !5
  store <4 x i32> <i32 1, i32 1, i32 1, i32 1>, ptr %151, align 4, !tbaa !5
  %152 = getelementptr inbounds i32, ptr %35, i64 %index1081
  %153 = getelementptr inbounds i8, ptr %152, i64 16
  store <4 x i32> zeroinitializer, ptr %152, align 4, !tbaa !5
  store <4 x i32> zeroinitializer, ptr %153, align 4, !tbaa !5
  %154 = getelementptr inbounds i32, ptr %5, i64 %index1081
  %155 = getelementptr inbounds i8, ptr %154, i64 16
  %wide.load1082 = load <4 x i32>, ptr %154, align 4, !tbaa !5
  %wide.load1083 = load <4 x i32>, ptr %155, align 4, !tbaa !5
  %156 = getelementptr inbounds i32, ptr %38, i64 %index1081
  %157 = getelementptr inbounds i8, ptr %156, i64 16
  store <4 x i32> %wide.load1082, ptr %156, align 4, !tbaa !5
  store <4 x i32> %wide.load1083, ptr %157, align 4, !tbaa !5
  %index.next1084 = add nuw i64 %index1081, 8
  %158 = icmp eq i64 %index.next1084, %n.vec1078
  br i1 %158, label %middle.block1073, label %vector.body1080, !llvm.loop !21

middle.block1073:                                 ; preds = %vector.body1080
  %cmp.n1085 = icmp eq i64 %n.vec1078, %wide.trip.count882
  br i1 %cmp.n1085, label %._crit_edge739, label %.lr.ph738.preheader1103

.lr.ph738.preheader1103:                          ; preds = %middle.block1073, %vector.memcheck1003, %.lr.ph738.preheader
  %indvars.iv879.ph = phi i64 [ 0, %vector.memcheck1003 ], [ 0, %.lr.ph738.preheader ], [ %n.vec1078, %middle.block1073 ]
  br label %.lr.ph738

.lr.ph738:                                        ; preds = %.lr.ph738.preheader1103, %.lr.ph738
  %indvars.iv879 = phi i64 [ %indvars.iv.next880, %.lr.ph738 ], [ %indvars.iv879.ph, %.lr.ph738.preheader1103 ]
  %159 = getelementptr inbounds i32, ptr %32, i64 %indvars.iv879
  store i32 -1, ptr %159, align 4, !tbaa !5
  %160 = getelementptr inbounds i32, ptr %4, i64 %indvars.iv879
  store i32 -1, ptr %160, align 4, !tbaa !5
  %161 = getelementptr inbounds i32, ptr %29, i64 %indvars.iv879
  store i32 -1, ptr %161, align 4, !tbaa !5
  %162 = getelementptr inbounds i32, ptr %44, i64 %indvars.iv879
  store i32 -1, ptr %162, align 4, !tbaa !5
  %163 = getelementptr inbounds i32, ptr %26, i64 %indvars.iv879
  store i32 1, ptr %163, align 4, !tbaa !5
  %164 = getelementptr inbounds i32, ptr %41, i64 %indvars.iv879
  store i32 1, ptr %164, align 4, !tbaa !5
  %165 = getelementptr inbounds i32, ptr %35, i64 %indvars.iv879
  store i32 0, ptr %165, align 4, !tbaa !5
  %166 = getelementptr inbounds i32, ptr %5, i64 %indvars.iv879
  %167 = load i32, ptr %166, align 4, !tbaa !5
  %168 = getelementptr inbounds i32, ptr %38, i64 %indvars.iv879
  store i32 %167, ptr %168, align 4, !tbaa !5
  %indvars.iv.next880 = add nuw nsw i64 %indvars.iv879, 1
  %exitcond883.not = icmp eq i64 %indvars.iv.next880, %wide.trip.count882
  br i1 %exitcond883.not, label %._crit_edge739, label %.lr.ph738, !llvm.loop !22

._crit_edge739:                                   ; preds = %.lr.ph738, %middle.block1073, %._crit_edge
  %169 = tail call i32 @sp_wclear(i32 noundef 0, i32 noundef 0, ptr noundef nonnull %41, i32 noundef %2)
  %170 = getelementptr inbounds i32, ptr %35, i64 %21
  store i32 -2, ptr %170, align 4, !tbaa !5
  store i32 -1, ptr %22, align 4, !tbaa !5
  %171 = getelementptr inbounds i32, ptr %41, i64 %21
  store i32 0, ptr %171, align 4, !tbaa !5
  br i1 %45, label %.lr.ph743, label %.preheader733

.lr.ph743:                                        ; preds = %._crit_edge739
  %172 = sub nuw i32 -2, %2
  %173 = getelementptr inbounds i32, ptr %26, i64 %21
  %wide.trip.count887 = zext nneg i32 %2 to i64
  br label %176

.preheader733:                                    ; preds = %205, %._crit_edge739
  %.0631.lcssa = phi i32 [ 0, %._crit_edge739 ], [ %.1632, %205 ]
  %174 = icmp slt i32 %.0631.lcssa, %2
  br i1 %174, label %.preheader732.lr.ph, label %.preheader725

.preheader732.lr.ph:                              ; preds = %.preheader733
  %wide.trip.count896 = zext i32 %2 to i64
  %xtraiter1105 = and i64 %wide.trip.count896, 1
  %175 = icmp eq i32 %2, 1
  %unroll_iter = and i64 %wide.trip.count896, 2147483646
  %lcmp.mod1106.not = icmp eq i64 %xtraiter1105, 0
  br label %.preheader732

176:                                              ; preds = %.lr.ph743, %205
  %indvars.iv884 = phi i64 [ 0, %.lr.ph743 ], [ %indvars.iv.next885, %205 ]
  %.0631741 = phi i32 [ 0, %.lr.ph743 ], [ %.1632, %205 ]
  %177 = getelementptr inbounds i32, ptr %38, i64 %indvars.iv884
  %178 = load i32, ptr %177, align 4, !tbaa !5
  %179 = icmp eq i32 %178, 0
  br i1 %179, label %180, label %185

180:                                              ; preds = %176
  %181 = getelementptr inbounds i32, ptr %35, i64 %indvars.iv884
  store i32 -2, ptr %181, align 4, !tbaa !5
  %182 = add nsw i32 %.0631741, 1
  %183 = getelementptr inbounds i32, ptr %0, i64 %indvars.iv884
  store i32 -1, ptr %183, align 4, !tbaa !5
  %184 = getelementptr inbounds i32, ptr %41, i64 %indvars.iv884
  store i32 0, ptr %184, align 4, !tbaa !5
  br label %205

185:                                              ; preds = %176
  %186 = icmp sgt i32 %178, %20
  br i1 %186, label %187, label %194

187:                                              ; preds = %185
  %188 = getelementptr inbounds i32, ptr %26, i64 %indvars.iv884
  store i32 0, ptr %188, align 4, !tbaa !5
  %189 = getelementptr inbounds i32, ptr %35, i64 %indvars.iv884
  store i32 -1, ptr %189, align 4, !tbaa !5
  %190 = add nsw i32 %.0631741, 1
  %191 = getelementptr inbounds i32, ptr %0, i64 %indvars.iv884
  store i32 %172, ptr %191, align 4, !tbaa !5
  %192 = load i32, ptr %173, align 4, !tbaa !5
  %193 = add nsw i32 %192, 1
  store i32 %193, ptr %173, align 4, !tbaa !5
  br label %205

194:                                              ; preds = %185
  %195 = sext i32 %178 to i64
  %196 = getelementptr inbounds i32, ptr %32, i64 %195
  %197 = load i32, ptr %196, align 4, !tbaa !5
  %.not717 = icmp eq i32 %197, -1
  br i1 %.not717, label %._crit_edge972, label %198

._crit_edge972:                                   ; preds = %194
  %.pre973 = trunc nuw nsw i64 %indvars.iv884 to i32
  br label %202

198:                                              ; preds = %194
  %199 = sext i32 %197 to i64
  %200 = getelementptr inbounds i32, ptr %4, i64 %199
  %201 = trunc nuw nsw i64 %indvars.iv884 to i32
  store i32 %201, ptr %200, align 4, !tbaa !5
  %.pre = load i32, ptr %196, align 4, !tbaa !5
  br label %202

202:                                              ; preds = %._crit_edge972, %198
  %.pre-phi = phi i32 [ %.pre973, %._crit_edge972 ], [ %201, %198 ]
  %203 = phi i32 [ -1, %._crit_edge972 ], [ %.pre, %198 ]
  %204 = getelementptr inbounds i32, ptr %29, i64 %indvars.iv884
  store i32 %203, ptr %204, align 4, !tbaa !5
  store i32 %.pre-phi, ptr %196, align 4, !tbaa !5
  br label %205

205:                                              ; preds = %180, %202, %187
  %.1632 = phi i32 [ %182, %180 ], [ %190, %187 ], [ %.0631741, %202 ]
  %indvars.iv.next885 = add nuw nsw i64 %indvars.iv884, 1
  %exitcond888.not = icmp eq i64 %indvars.iv.next885, %wide.trip.count887
  br i1 %exitcond888.not, label %.preheader733, label %176, !llvm.loop !23

.preheader732:                                    ; preds = %.preheader732.lr.ph, %566
  %.0595862 = phi i32 [ %23, %.preheader732.lr.ph ], [ %spec.select720, %566 ]
  %.0623861 = phi i32 [ 0, %.preheader732.lr.ph ], [ %460, %566 ]
  %.2633860 = phi i32 [ %.0631.lcssa, %.preheader732.lr.ph ], [ %.3634.lcssa, %566 ]
  %.0643859 = phi i32 [ %169, %.preheader732.lr.ph ], [ %.1644.lcssa975981, %566 ]
  %.0654858 = phi i32 [ 0, %.preheader732.lr.ph ], [ %.2656.lcssa983, %566 ]
  %206 = icmp slt i32 %.0654858, %2
  br i1 %206, label %.lr.ph745.preheader, label %.critedge

.lr.ph745.preheader:                              ; preds = %.preheader732
  %207 = sext i32 %.0654858 to i64
  br label %.lr.ph745

.preheader725:                                    ; preds = %566, %.preheader733
  br i1 %45, label %.lr.ph864.preheader, label %.preheader724

.lr.ph864.preheader:                              ; preds = %.preheader725
  %wide.trip.count950 = zext nneg i32 %2 to i64
  %min.iters.check1088 = icmp ult i32 %2, 8
  br i1 %min.iters.check1088, label %.lr.ph864.preheader1099, label %vector.ph1089

.lr.ph864.preheader1099:                          ; preds = %middle.block1086, %.lr.ph864.preheader
  %indvars.iv947.ph = phi i64 [ 0, %.lr.ph864.preheader ], [ %n.vec1091, %middle.block1086 ]
  br label %.lr.ph864

vector.ph1089:                                    ; preds = %.lr.ph864.preheader
  %n.vec1091 = and i64 %wide.trip.count950, 2147483640
  br label %vector.body1093

vector.body1093:                                  ; preds = %vector.body1093, %vector.ph1089
  %index1094 = phi i64 [ 0, %vector.ph1089 ], [ %index.next1097, %vector.body1093 ]
  %208 = getelementptr inbounds i32, ptr %0, i64 %index1094
  %209 = getelementptr inbounds i8, ptr %208, i64 16
  %wide.load1095 = load <4 x i32>, ptr %208, align 4, !tbaa !5
  %wide.load1096 = load <4 x i32>, ptr %209, align 4, !tbaa !5
  %210 = sub <4 x i32> <i32 -2, i32 -2, i32 -2, i32 -2>, %wide.load1095
  %211 = sub <4 x i32> <i32 -2, i32 -2, i32 -2, i32 -2>, %wide.load1096
  store <4 x i32> %210, ptr %208, align 4, !tbaa !5
  store <4 x i32> %211, ptr %209, align 4, !tbaa !5
  %index.next1097 = add nuw i64 %index1094, 8
  %212 = icmp eq i64 %index.next1097, %n.vec1091
  br i1 %212, label %middle.block1086, label %vector.body1093, !llvm.loop !24

middle.block1086:                                 ; preds = %vector.body1093
  %cmp.n1098 = icmp eq i64 %n.vec1091, %wide.trip.count950
  br i1 %cmp.n1098, label %.preheader724, label %.lr.ph864.preheader1099

.lr.ph745:                                        ; preds = %.lr.ph745.preheader, %216
  %indvars.iv889 = phi i64 [ %207, %.lr.ph745.preheader ], [ %indvars.iv.next890, %216 ]
  %213 = getelementptr inbounds i32, ptr %32, i64 %indvars.iv889
  %214 = load i32, ptr %213, align 4, !tbaa !5
  %215 = icmp eq i32 %214, -1
  br i1 %215, label %216, label %.critedge.loopexit.split.loop.exit988

216:                                              ; preds = %.lr.ph745
  %indvars.iv.next890 = add nsw i64 %indvars.iv889, 1
  %exitcond892.not = icmp eq i64 %indvars.iv.next890, %21
  br i1 %exitcond892.not, label %.critedge, label %.lr.ph745, !llvm.loop !25

.critedge.loopexit.split.loop.exit988:            ; preds = %.lr.ph745
  %217 = trunc nsw i64 %indvars.iv889 to i32
  br label %.critedge

.critedge:                                        ; preds = %216, %.critedge.loopexit.split.loop.exit988, %.preheader732
  %.1655.lcssa = phi i32 [ %.0654858, %.preheader732 ], [ %217, %.critedge.loopexit.split.loop.exit988 ], [ %2, %216 ]
  %.2666 = phi i32 [ -1, %.preheader732 ], [ %214, %.critedge.loopexit.split.loop.exit988 ], [ -1, %216 ]
  %218 = sext i32 %.2666 to i64
  %219 = getelementptr inbounds i32, ptr %29, i64 %218
  %220 = load i32, ptr %219, align 4, !tbaa !5
  %.not696 = icmp eq i32 %220, -1
  br i1 %.not696, label %224, label %221

221:                                              ; preds = %.critedge
  %222 = sext i32 %220 to i64
  %223 = getelementptr inbounds i32, ptr %4, i64 %222
  store i32 -1, ptr %223, align 4, !tbaa !5
  %.pre966 = load i32, ptr %219, align 4, !tbaa !5
  br label %224

224:                                              ; preds = %221, %.critedge
  %225 = phi i32 [ %.pre966, %221 ], [ -1, %.critedge ]
  %226 = sext i32 %.1655.lcssa to i64
  %227 = getelementptr inbounds i32, ptr %32, i64 %226
  store i32 %225, ptr %227, align 4, !tbaa !5
  %228 = getelementptr inbounds i32, ptr %35, i64 %218
  %229 = load i32, ptr %228, align 4, !tbaa !5
  %230 = getelementptr inbounds i32, ptr %26, i64 %218
  %231 = load i32, ptr %230, align 4, !tbaa !5
  %232 = add nsw i32 %231, %.2633860
  %233 = icmp slt i32 %229, 1
  %234 = add nsw i32 %.1655.lcssa, %.0595862
  %.not697 = icmp slt i32 %234, %3
  %or.cond = select i1 %233, i1 true, i1 %.not697
  br i1 %or.cond, label %.loopexit730, label %.preheader731

.preheader731:                                    ; preds = %224
  br i1 %45, label %.lr.ph752.preheader, label %.preheader729

.lr.ph752.preheader:                              ; preds = %.preheader731
  br i1 %175, label %.preheader729.loopexit.unr-lcssa, label %.lr.ph752

.preheader729.loopexit.unr-lcssa:                 ; preds = %263, %.lr.ph752.preheader
  %indvars.iv893.unr = phi i64 [ 0, %.lr.ph752.preheader ], [ %indvars.iv.next894.1, %263 ]
  br i1 %lcmp.mod1106.not, label %.preheader729, label %.lr.ph752.epil

.lr.ph752.epil:                                   ; preds = %.preheader729.loopexit.unr-lcssa
  %235 = getelementptr inbounds i32, ptr %0, i64 %indvars.iv893.unr
  %236 = load i32, ptr %235, align 4, !tbaa !5
  %237 = icmp sgt i32 %236, -1
  br i1 %237, label %238, label %.preheader729

238:                                              ; preds = %.lr.ph752.epil
  %239 = zext nneg i32 %236 to i64
  %240 = getelementptr inbounds i32, ptr %1, i64 %239
  %241 = load i32, ptr %240, align 4, !tbaa !5
  store i32 %241, ptr %235, align 4, !tbaa !5
  %242 = trunc i64 %indvars.iv893.unr to i32
  %243 = sub i32 -2, %242
  store i32 %243, ptr %240, align 4, !tbaa !5
  br label %.preheader729

.preheader729:                                    ; preds = %.preheader729.loopexit.unr-lcssa, %238, %.lr.ph752.epil, %.preheader731
  %244 = icmp sgt i32 %.0595862, 0
  br i1 %244, label %.lr.ph763, label %.loopexit730

.lr.ph752:                                        ; preds = %.lr.ph752.preheader, %263
  %indvars.iv893 = phi i64 [ %indvars.iv.next894.1, %263 ], [ 0, %.lr.ph752.preheader ]
  %niter = phi i64 [ %niter.next.1, %263 ], [ 0, %.lr.ph752.preheader ]
  %245 = getelementptr inbounds i32, ptr %0, i64 %indvars.iv893
  %246 = load i32, ptr %245, align 4, !tbaa !5
  %247 = icmp sgt i32 %246, -1
  br i1 %247, label %248, label %.lr.ph752.1

248:                                              ; preds = %.lr.ph752
  %249 = zext nneg i32 %246 to i64
  %250 = getelementptr inbounds i32, ptr %1, i64 %249
  %251 = load i32, ptr %250, align 4, !tbaa !5
  store i32 %251, ptr %245, align 4, !tbaa !5
  %252 = trunc i64 %indvars.iv893 to i32
  %253 = sub nuw nsw i32 -2, %252
  store i32 %253, ptr %250, align 4, !tbaa !5
  br label %.lr.ph752.1

.lr.ph752.1:                                      ; preds = %.lr.ph752, %248
  %indvars.iv.next894 = or disjoint i64 %indvars.iv893, 1
  %254 = getelementptr inbounds i32, ptr %0, i64 %indvars.iv.next894
  %255 = load i32, ptr %254, align 4, !tbaa !5
  %256 = icmp sgt i32 %255, -1
  br i1 %256, label %257, label %263

257:                                              ; preds = %.lr.ph752.1
  %258 = zext nneg i32 %255 to i64
  %259 = getelementptr inbounds i32, ptr %1, i64 %258
  %260 = load i32, ptr %259, align 4, !tbaa !5
  store i32 %260, ptr %254, align 4, !tbaa !5
  %261 = trunc i64 %indvars.iv.next894 to i32
  %262 = sub i32 -2, %261
  store i32 %262, ptr %259, align 4, !tbaa !5
  br label %263

263:                                              ; preds = %257, %.lr.ph752.1
  %indvars.iv.next894.1 = add nuw nsw i64 %indvars.iv893, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %.preheader729.loopexit.unr-lcssa, label %.lr.ph752, !llvm.loop !26

.lr.ph763:                                        ; preds = %.preheader729, %.loopexit726
  %.0599762 = phi i32 [ %.2601, %.loopexit726 ], [ 0, %.preheader729 ]
  %.0626761 = phi i32 [ %.2628, %.loopexit726 ], [ 0, %.preheader729 ]
  %264 = add nsw i32 %.0626761, 1
  %265 = sext i32 %.0626761 to i64
  %266 = getelementptr inbounds i32, ptr %1, i64 %265
  %267 = load i32, ptr %266, align 4, !tbaa !5
  %268 = sub i32 -2, %267
  %269 = icmp sgt i32 %268, -1
  br i1 %269, label %270, label %.loopexit726

270:                                              ; preds = %.lr.ph763
  %271 = zext nneg i32 %268 to i64
  %272 = getelementptr inbounds i32, ptr %0, i64 %271
  %273 = load i32, ptr %272, align 4, !tbaa !5
  %274 = sext i32 %.0599762 to i64
  %275 = getelementptr inbounds i32, ptr %1, i64 %274
  store i32 %273, ptr %275, align 4, !tbaa !5
  store i32 %.0599762, ptr %272, align 4, !tbaa !5
  %276 = getelementptr inbounds i32, ptr %5, i64 %271
  %.1600753 = add i32 %.0599762, 1
  %277 = load i32, ptr %276, align 4, !tbaa !5
  %278 = icmp sgt i32 %277, 1
  br i1 %278, label %.lr.ph758.preheader, label %.loopexit726

.lr.ph758.preheader:                              ; preds = %270
  %279 = sext i32 %.1600753 to i64
  %280 = sext i32 %264 to i64
  br label %.lr.ph758

.lr.ph758:                                        ; preds = %.lr.ph758.preheader, %.lr.ph758
  %indvars.iv900 = phi i64 [ %280, %.lr.ph758.preheader ], [ %indvars.iv.next901, %.lr.ph758 ]
  %indvars.iv898 = phi i64 [ %279, %.lr.ph758.preheader ], [ %indvars.iv.next899, %.lr.ph758 ]
  %.0661754 = phi i32 [ 0, %.lr.ph758.preheader ], [ %284, %.lr.ph758 ]
  %indvars.iv.next901 = add nsw i64 %indvars.iv900, 1
  %281 = getelementptr inbounds i32, ptr %1, i64 %indvars.iv900
  %282 = load i32, ptr %281, align 4, !tbaa !5
  %283 = getelementptr inbounds i32, ptr %1, i64 %indvars.iv898
  store i32 %282, ptr %283, align 4, !tbaa !5
  %284 = add nuw nsw i32 %.0661754, 1
  %indvars.iv.next899 = add nsw i64 %indvars.iv898, 1
  %285 = load i32, ptr %276, align 4, !tbaa !5
  %286 = add nsw i32 %285, -1
  %287 = icmp slt i32 %284, %286
  br i1 %287, label %.lr.ph758, label %.loopexit726.loopexit, !llvm.loop !27

.loopexit726.loopexit:                            ; preds = %.lr.ph758
  %288 = trunc nsw i64 %indvars.iv.next901 to i32
  %289 = trunc nsw i64 %indvars.iv.next899 to i32
  br label %.loopexit726

.loopexit726:                                     ; preds = %.loopexit726.loopexit, %270, %.lr.ph763
  %.2628 = phi i32 [ %264, %.lr.ph763 ], [ %264, %270 ], [ %288, %.loopexit726.loopexit ]
  %.2601 = phi i32 [ %.0599762, %.lr.ph763 ], [ %.1600753, %270 ], [ %289, %.loopexit726.loopexit ]
  %290 = icmp slt i32 %.2628, %.0595862
  br i1 %290, label %.lr.ph763, label %.loopexit730, !llvm.loop !28

.loopexit730:                                     ; preds = %.loopexit726, %.preheader729, %224
  %.1596 = phi i32 [ %.0595862, %224 ], [ 0, %.preheader729 ], [ %.2601, %.loopexit726 ]
  %291 = sub nsw i32 0, %231
  store i32 %291, ptr %230, align 4, !tbaa !5
  %292 = getelementptr inbounds i32, ptr %0, i64 %218
  %293 = load i32, ptr %292, align 4, !tbaa !5
  %294 = icmp eq i32 %229, 0
  %295 = select i1 %294, i32 %293, i32 %.1596
  %.not698775 = icmp slt i32 %229, 0
  br i1 %.not698775, label %._crit_edge782, label %.lr.ph781

.lr.ph781:                                        ; preds = %.loopexit730
  %296 = getelementptr inbounds i32, ptr %5, i64 %218
  %297 = sub i32 -2, %.2666
  %298 = add nuw i32 %229, 1
  br label %299

299:                                              ; preds = %.lr.ph781, %347
  %.0606779 = phi i32 [ %295, %.lr.ph781 ], [ %.1607.lcssa, %347 ]
  %.0619778 = phi i32 [ 0, %.lr.ph781 ], [ %.1620.lcssa, %347 ]
  %.3629777 = phi i32 [ %293, %.lr.ph781 ], [ %.4630, %347 ]
  %.0663776 = phi i32 [ 1, %.lr.ph781 ], [ %348, %347 ]
  %300 = icmp sgt i32 %.0663776, %229
  br i1 %300, label %301, label %304

301:                                              ; preds = %299
  %302 = load i32, ptr %296, align 4, !tbaa !5
  %303 = sub nsw i32 %302, %229
  br label %314

304:                                              ; preds = %299
  %305 = add nsw i32 %.3629777, 1
  %306 = sext i32 %.3629777 to i64
  %307 = getelementptr inbounds i32, ptr %1, i64 %306
  %308 = load i32, ptr %307, align 4, !tbaa !5
  %309 = sext i32 %308 to i64
  %310 = getelementptr inbounds i32, ptr %0, i64 %309
  %311 = load i32, ptr %310, align 4, !tbaa !5
  %312 = getelementptr inbounds i32, ptr %5, i64 %309
  %313 = load i32, ptr %312, align 4, !tbaa !5
  br label %314

314:                                              ; preds = %304, %301
  %.0658 = phi i32 [ %303, %301 ], [ %313, %304 ]
  %.4630 = phi i32 [ %.3629777, %301 ], [ %305, %304 ]
  %.0624 = phi i32 [ %.2666, %301 ], [ %308, %304 ]
  %.0617 = phi i32 [ %.3629777, %301 ], [ %311, %304 ]
  %.not713765 = icmp slt i32 %.0658, 1
  br i1 %.not713765, label %._crit_edge772, label %.lr.ph771.preheader

.lr.ph771.preheader:                              ; preds = %314
  %315 = sext i32 %.0617 to i64
  br label %.lr.ph771

.lr.ph771:                                        ; preds = %.lr.ph771.preheader, %341
  %indvars.iv905 = phi i64 [ %315, %.lr.ph771.preheader ], [ %indvars.iv.next906, %341 ]
  %.1607769 = phi i32 [ %.0606779, %.lr.ph771.preheader ], [ %.2608, %341 ]
  %.1620767 = phi i32 [ %.0619778, %.lr.ph771.preheader ], [ %.2621, %341 ]
  %.0662766 = phi i32 [ 1, %.lr.ph771.preheader ], [ %342, %341 ]
  %indvars.iv.next906 = add nsw i64 %indvars.iv905, 1
  %316 = getelementptr inbounds i32, ptr %1, i64 %indvars.iv905
  %317 = load i32, ptr %316, align 4, !tbaa !5
  %318 = sext i32 %317 to i64
  %319 = getelementptr inbounds i32, ptr %26, i64 %318
  %320 = load i32, ptr %319, align 4, !tbaa !5
  %321 = icmp slt i32 %320, 1
  br i1 %321, label %341, label %322

322:                                              ; preds = %.lr.ph771
  %323 = add nuw nsw i32 %320, %.1620767
  %324 = sub nsw i32 0, %320
  store i32 %324, ptr %319, align 4, !tbaa !5
  %325 = add nsw i32 %.1607769, 1
  %326 = sext i32 %.1607769 to i64
  %327 = getelementptr inbounds i32, ptr %1, i64 %326
  store i32 %317, ptr %327, align 4, !tbaa !5
  %328 = getelementptr inbounds i32, ptr %29, i64 %318
  %329 = load i32, ptr %328, align 4, !tbaa !5
  %.not715 = icmp eq i32 %329, -1
  %.phi.trans.insert = getelementptr inbounds i32, ptr %4, i64 %318
  %.pre968 = load i32, ptr %.phi.trans.insert, align 4, !tbaa !5
  br i1 %.not715, label %._crit_edge967, label %330

330:                                              ; preds = %322
  %331 = sext i32 %329 to i64
  %332 = getelementptr inbounds i32, ptr %4, i64 %331
  store i32 %.pre968, ptr %332, align 4, !tbaa !5
  br label %._crit_edge967

._crit_edge967:                                   ; preds = %322, %330
  %.not716 = icmp eq i32 %.pre968, -1
  %333 = load i32, ptr %328, align 4, !tbaa !5
  br i1 %.not716, label %334, label %.sink.split

334:                                              ; preds = %._crit_edge967
  %335 = getelementptr inbounds i32, ptr %38, i64 %318
  %336 = load i32, ptr %335, align 4, !tbaa !5
  br label %.sink.split

.sink.split:                                      ; preds = %._crit_edge967, %334
  %.pre968.sink = phi i32 [ %336, %334 ], [ %.pre968, %._crit_edge967 ]
  %337 = phi i64 [ %31, %334 ], [ %28, %._crit_edge967 ]
  %338 = getelementptr i32, ptr %5, i64 %337
  %339 = sext i32 %.pre968.sink to i64
  %340 = getelementptr inbounds i32, ptr %338, i64 %339
  store i32 %333, ptr %340, align 4, !tbaa !5
  br label %341

341:                                              ; preds = %.sink.split, %.lr.ph771
  %.2621 = phi i32 [ %.1620767, %.lr.ph771 ], [ %323, %.sink.split ]
  %.2608 = phi i32 [ %.1607769, %.lr.ph771 ], [ %325, %.sink.split ]
  %342 = add nuw i32 %.0662766, 1
  %exitcond908.not = icmp eq i32 %.0662766, %.0658
  br i1 %exitcond908.not, label %._crit_edge772, label %.lr.ph771, !llvm.loop !29

._crit_edge772:                                   ; preds = %341, %314
  %.1620.lcssa = phi i32 [ %.0619778, %314 ], [ %.2621, %341 ]
  %.1607.lcssa = phi i32 [ %.0606779, %314 ], [ %.2608, %341 ]
  %.not714 = icmp eq i32 %.0624, %.2666
  br i1 %.not714, label %347, label %343

343:                                              ; preds = %._crit_edge772
  %344 = sext i32 %.0624 to i64
  %345 = getelementptr inbounds i32, ptr %0, i64 %344
  store i32 %297, ptr %345, align 4, !tbaa !5
  %346 = getelementptr inbounds i32, ptr %41, i64 %344
  store i32 0, ptr %346, align 4, !tbaa !5
  br label %347

347:                                              ; preds = %._crit_edge772, %343
  %348 = add nuw i32 %.0663776, 1
  %exitcond909 = icmp eq i32 %.0663776, %298
  br i1 %exitcond909, label %._crit_edge782, label %299, !llvm.loop !30

._crit_edge782:                                   ; preds = %347, %.loopexit730
  %.0619.lcssa = phi i32 [ 0, %.loopexit730 ], [ %.1620.lcssa, %347 ]
  %.0606.lcssa = phi i32 [ %295, %.loopexit730 ], [ %.1607.lcssa, %347 ]
  %349 = getelementptr inbounds i32, ptr %38, i64 %218
  store i32 %.0619.lcssa, ptr %349, align 4, !tbaa !5
  store i32 %295, ptr %292, align 4, !tbaa !5
  %350 = sub nsw i32 %.0606.lcssa, %295
  %351 = getelementptr inbounds i32, ptr %5, i64 %218
  store i32 %350, ptr %351, align 4, !tbaa !5
  store i32 -2, ptr %228, align 4, !tbaa !5
  %352 = tail call i32 @sp_wclear(i32 noundef %.0643859, i32 noundef %.0623861, ptr noundef nonnull %41, i32 noundef %2)
  %353 = icmp slt i32 %295, %.0606.lcssa
  br i1 %353, label %.lr.ph791.preheader, label %._crit_edge818

.lr.ph791.preheader:                              ; preds = %._crit_edge782
  %354 = sext i32 %295 to i64
  %wide.trip.count916 = sext i32 %.0606.lcssa to i64
  br label %.lr.ph791

.preheader728:                                    ; preds = %.loopexit
  br i1 %353, label %.lr.ph817, label %._crit_edge818

.lr.ph817:                                        ; preds = %.preheader728
  %355 = sub i32 -2, %.2666
  %356 = sext i32 %295 to i64
  %wide.trip.count927 = sext i32 %.0606.lcssa to i64
  br label %385

.lr.ph791:                                        ; preds = %.lr.ph791.preheader, %.loopexit
  %indvars.iv913 = phi i64 [ %354, %.lr.ph791.preheader ], [ %indvars.iv.next914, %.loopexit ]
  %357 = getelementptr inbounds i32, ptr %1, i64 %indvars.iv913
  %358 = load i32, ptr %357, align 4, !tbaa !5
  %359 = sext i32 %358 to i64
  %360 = getelementptr inbounds i32, ptr %35, i64 %359
  %361 = load i32, ptr %360, align 4, !tbaa !5
  %362 = icmp slt i32 %361, 1
  br i1 %362, label %.loopexit, label %.lr.ph788.preheader

.lr.ph788.preheader:                              ; preds = %.lr.ph791
  %363 = getelementptr inbounds i32, ptr %26, i64 %359
  %364 = load i32, ptr %363, align 4, !tbaa !5
  %365 = add nsw i32 %364, %352
  %366 = getelementptr inbounds i32, ptr %0, i64 %359
  %367 = load i32, ptr %366, align 4, !tbaa !5
  %368 = sext i32 %367 to i64
  br label %.lr.ph788

.lr.ph788:                                        ; preds = %.lr.ph788.preheader, %381
  %indvars.iv910 = phi i64 [ %368, %.lr.ph788.preheader ], [ %indvars.iv.next911, %381 ]
  %369 = getelementptr inbounds i32, ptr %1, i64 %indvars.iv910
  %370 = load i32, ptr %369, align 4, !tbaa !5
  %371 = sext i32 %370 to i64
  %372 = getelementptr inbounds i32, ptr %41, i64 %371
  %373 = load i32, ptr %372, align 4, !tbaa !5
  %.not711 = icmp slt i32 %373, %352
  br i1 %.not711, label %376, label %374

374:                                              ; preds = %.lr.ph788
  %375 = add nsw i32 %373, %364
  br label %.sink.split994

376:                                              ; preds = %.lr.ph788
  %.not712 = icmp eq i32 %373, 0
  br i1 %.not712, label %381, label %377

377:                                              ; preds = %376
  %378 = getelementptr inbounds i32, ptr %38, i64 %371
  %379 = load i32, ptr %378, align 4, !tbaa !5
  %380 = add nsw i32 %365, %379
  br label %.sink.split994

.sink.split994:                                   ; preds = %377, %374
  %.sink995 = phi i32 [ %375, %374 ], [ %380, %377 ]
  store i32 %.sink995, ptr %372, align 4, !tbaa !5
  br label %381

381:                                              ; preds = %.sink.split994, %376
  %indvars.iv.next911 = add nsw i64 %indvars.iv910, 1
  %382 = load i32, ptr %366, align 4, !tbaa !5
  %383 = add nsw i32 %382, %361
  %384 = sext i32 %383 to i64
  %.not710.not = icmp slt i64 %indvars.iv.next911, %384
  br i1 %.not710.not, label %.lr.ph788, label %.loopexit, !llvm.loop !31

.loopexit:                                        ; preds = %381, %.lr.ph791
  %indvars.iv.next914 = add nsw i64 %indvars.iv913, 1
  %exitcond917.not = icmp eq i64 %indvars.iv.next914, %wide.trip.count916
  br i1 %exitcond917.not, label %.preheader728, label %.lr.ph791, !llvm.loop !32

385:                                              ; preds = %.lr.ph817, %459
  %indvars.iv924 = phi i64 [ %356, %.lr.ph817 ], [ %indvars.iv.next925, %459 ]
  %.3622815 = phi i32 [ %.0619.lcssa, %.lr.ph817 ], [ %.4, %459 ]
  %.3634814 = phi i32 [ %232, %.lr.ph817 ], [ %.4635, %459 ]
  %.0647813 = phi i32 [ %231, %.lr.ph817 ], [ %.1648, %459 ]
  %386 = getelementptr inbounds i32, ptr %1, i64 %indvars.iv924
  %387 = load i32, ptr %386, align 4, !tbaa !5
  %388 = sext i32 %387 to i64
  %389 = getelementptr inbounds i32, ptr %0, i64 %388
  %390 = load i32, ptr %389, align 4, !tbaa !5
  %391 = getelementptr inbounds i32, ptr %35, i64 %388
  %392 = load i32, ptr %391, align 4, !tbaa !5
  %393 = add i32 %392, %390
  %.not708.not792 = icmp sgt i32 %392, 0
  br i1 %.not708.not792, label %.lr.ph798.preheader, label %._crit_edge799

.lr.ph798.preheader:                              ; preds = %385
  %394 = sext i32 %390 to i64
  %395 = sext i32 %393 to i64
  br label %.lr.ph798

.lr.ph798:                                        ; preds = %.lr.ph798.preheader, %412
  %indvars.iv918 = phi i64 [ %394, %.lr.ph798.preheader ], [ %indvars.iv.next919, %412 ]
  %.0796 = phi i32 [ 0, %.lr.ph798.preheader ], [ %.1, %412 ]
  %.0602795 = phi i32 [ %390, %.lr.ph798.preheader ], [ %.1603, %412 ]
  %.0609794 = phi i32 [ 0, %.lr.ph798.preheader ], [ %.1610, %412 ]
  %396 = getelementptr inbounds i32, ptr %1, i64 %indvars.iv918
  %397 = load i32, ptr %396, align 4, !tbaa !5
  %398 = sext i32 %397 to i64
  %399 = getelementptr inbounds i32, ptr %41, i64 %398
  %400 = load i32, ptr %399, align 4, !tbaa !5
  %.not709 = icmp eq i32 %400, 0
  br i1 %.not709, label %412, label %401

401:                                              ; preds = %.lr.ph798
  %402 = sub nsw i32 %400, %352
  %403 = icmp sgt i32 %402, 0
  br i1 %403, label %404, label %410

404:                                              ; preds = %401
  %405 = add nuw nsw i32 %402, %.0609794
  %406 = add nsw i32 %.0602795, 1
  %407 = sext i32 %.0602795 to i64
  %408 = getelementptr inbounds i32, ptr %1, i64 %407
  store i32 %397, ptr %408, align 4, !tbaa !5
  %409 = add i32 %397, %.0796
  br label %412

410:                                              ; preds = %401
  %411 = getelementptr inbounds i32, ptr %0, i64 %398
  store i32 %355, ptr %411, align 4, !tbaa !5
  store i32 0, ptr %399, align 4, !tbaa !5
  br label %412

412:                                              ; preds = %.lr.ph798, %410, %404
  %.1610 = phi i32 [ %405, %404 ], [ %.0609794, %410 ], [ %.0609794, %.lr.ph798 ]
  %.1603 = phi i32 [ %406, %404 ], [ %.0602795, %410 ], [ %.0602795, %.lr.ph798 ]
  %.1 = phi i32 [ %409, %404 ], [ %.0796, %410 ], [ %.0796, %.lr.ph798 ]
  %indvars.iv.next919 = add nsw i64 %indvars.iv918, 1
  %.not708.not = icmp slt i64 %indvars.iv.next919, %395
  br i1 %.not708.not, label %.lr.ph798, label %._crit_edge799, !llvm.loop !33

._crit_edge799:                                   ; preds = %412, %385
  %.0609.lcssa = phi i32 [ 0, %385 ], [ %.1610, %412 ]
  %.0602.lcssa = phi i32 [ %390, %385 ], [ %.1603, %412 ]
  %.0.lcssa = phi i32 [ 0, %385 ], [ %.1, %412 ]
  %reass.sub = sub i32 %.0602.lcssa, %390
  %413 = add i32 %reass.sub, 1
  store i32 %413, ptr %391, align 4, !tbaa !5
  %414 = getelementptr inbounds i32, ptr %5, i64 %388
  %415 = load i32, ptr %414, align 4, !tbaa !5
  %416 = icmp slt i32 %392, %415
  br i1 %416, label %.lr.ph808.preheader, label %._crit_edge809

.lr.ph808.preheader:                              ; preds = %._crit_edge799
  %417 = add nsw i32 %415, %390
  %418 = sext i32 %393 to i64
  %419 = sext i32 %417 to i64
  br label %.lr.ph808

.lr.ph808:                                        ; preds = %.lr.ph808.preheader, %432
  %indvars.iv921 = phi i64 [ %418, %.lr.ph808.preheader ], [ %indvars.iv.next922, %432 ]
  %.2806 = phi i32 [ %.0.lcssa, %.lr.ph808.preheader ], [ %.3, %432 ]
  %.2604805 = phi i32 [ %.0602.lcssa, %.lr.ph808.preheader ], [ %.3605, %432 ]
  %.2611804 = phi i32 [ %.0609.lcssa, %.lr.ph808.preheader ], [ %.3612, %432 ]
  %420 = getelementptr inbounds i32, ptr %1, i64 %indvars.iv921
  %421 = load i32, ptr %420, align 4, !tbaa !5
  %422 = sext i32 %421 to i64
  %423 = getelementptr inbounds i32, ptr %26, i64 %422
  %424 = load i32, ptr %423, align 4, !tbaa !5
  %425 = icmp slt i32 %424, 1
  br i1 %425, label %432, label %426

426:                                              ; preds = %.lr.ph808
  %427 = add nuw nsw i32 %424, %.2611804
  %428 = add nsw i32 %.2604805, 1
  %429 = sext i32 %.2604805 to i64
  %430 = getelementptr inbounds i32, ptr %1, i64 %429
  store i32 %421, ptr %430, align 4, !tbaa !5
  %431 = add i32 %421, %.2806
  br label %432

432:                                              ; preds = %.lr.ph808, %426
  %.3612 = phi i32 [ %.2611804, %.lr.ph808 ], [ %427, %426 ]
  %.3605 = phi i32 [ %.2604805, %.lr.ph808 ], [ %428, %426 ]
  %.3 = phi i32 [ %.2806, %.lr.ph808 ], [ %431, %426 ]
  %indvars.iv.next922 = add nsw i64 %indvars.iv921, 1
  %433 = icmp slt i64 %indvars.iv.next922, %419
  br i1 %433, label %.lr.ph808, label %._crit_edge809, !llvm.loop !34

._crit_edge809:                                   ; preds = %432, %._crit_edge799
  %.2611.lcssa = phi i32 [ %.0609.lcssa, %._crit_edge799 ], [ %.3612, %432 ]
  %.2604.lcssa = phi i32 [ %.0602.lcssa, %._crit_edge799 ], [ %.3605, %432 ]
  %.2.lcssa = phi i32 [ %.0.lcssa, %._crit_edge799 ], [ %.3, %432 ]
  %434 = icmp eq i32 %.2611.lcssa, 0
  br i1 %434, label %435, label %441

435:                                              ; preds = %._crit_edge809
  store i32 %355, ptr %389, align 4, !tbaa !5
  %436 = getelementptr inbounds i32, ptr %26, i64 %388
  %437 = load i32, ptr %436, align 4, !tbaa !5
  %438 = add nsw i32 %437, %.3622815
  %439 = sub i32 %.0647813, %437
  %440 = sub i32 %.3634814, %437
  store i32 0, ptr %436, align 4, !tbaa !5
  store i32 -1, ptr %391, align 4, !tbaa !5
  br label %459

441:                                              ; preds = %._crit_edge809
  %442 = getelementptr inbounds i32, ptr %38, i64 %388
  %443 = load i32, ptr %442, align 4, !tbaa !5
  %..2611 = tail call i32 @llvm.smin.i32(i32 %443, i32 %.2611.lcssa)
  store i32 %..2611, ptr %442, align 4, !tbaa !5
  %444 = sext i32 %.0602.lcssa to i64
  %445 = getelementptr inbounds i32, ptr %1, i64 %444
  %446 = load i32, ptr %445, align 4, !tbaa !5
  %447 = sext i32 %.2604.lcssa to i64
  %448 = getelementptr inbounds i32, ptr %1, i64 %447
  store i32 %446, ptr %448, align 4, !tbaa !5
  %449 = sext i32 %390 to i64
  %450 = getelementptr inbounds i32, ptr %1, i64 %449
  %451 = load i32, ptr %450, align 4, !tbaa !5
  store i32 %451, ptr %445, align 4, !tbaa !5
  store i32 %.2666, ptr %450, align 4, !tbaa !5
  %reass.sub877 = sub i32 %.2604.lcssa, %390
  %452 = add i32 %reass.sub877, 1
  store i32 %452, ptr %414, align 4, !tbaa !5
  %453 = urem i32 %.2.lcssa, %2
  %454 = zext i32 %453 to i64
  %455 = getelementptr inbounds i32, ptr %44, i64 %454
  %456 = load i32, ptr %455, align 4, !tbaa !5
  %457 = getelementptr inbounds i32, ptr %29, i64 %388
  store i32 %456, ptr %457, align 4, !tbaa !5
  store i32 %387, ptr %455, align 4, !tbaa !5
  %458 = getelementptr inbounds i32, ptr %4, i64 %388
  store i32 %453, ptr %458, align 4, !tbaa !5
  br label %459

459:                                              ; preds = %435, %441
  %.1648 = phi i32 [ %439, %435 ], [ %.0647813, %441 ]
  %.4635 = phi i32 [ %440, %435 ], [ %.3634814, %441 ]
  %.4 = phi i32 [ %438, %435 ], [ %.3622815, %441 ]
  %indvars.iv.next925 = add nsw i64 %indvars.iv924, 1
  %exitcond928.not = icmp eq i64 %indvars.iv.next925, %wide.trip.count927
  br i1 %exitcond928.not, label %._crit_edge818, label %385, !llvm.loop !35

._crit_edge818:                                   ; preds = %459, %._crit_edge782, %.preheader728
  %.0647.lcssa = phi i32 [ %231, %.preheader728 ], [ %231, %._crit_edge782 ], [ %.1648, %459 ]
  %.3634.lcssa = phi i32 [ %232, %.preheader728 ], [ %232, %._crit_edge782 ], [ %.4635, %459 ]
  %.3622.lcssa = phi i32 [ %.0619.lcssa, %.preheader728 ], [ %.0619.lcssa, %._crit_edge782 ], [ %.4, %459 ]
  store i32 %.3622.lcssa, ptr %349, align 4, !tbaa !5
  %460 = tail call i32 @llvm.smax.i32(i32 %.0623861, i32 %.3622.lcssa)
  %461 = add nsw i32 %460, %352
  %462 = tail call i32 @sp_wclear(i32 noundef %461, i32 noundef %460, ptr noundef nonnull %41, i32 noundef %2)
  br i1 %353, label %.lr.ph849.preheader, label %._crit_edge855.thread

.lr.ph849.preheader:                              ; preds = %._crit_edge818
  %463 = sext i32 %295 to i64
  %wide.trip.count940 = sext i32 %.0606.lcssa to i64
  br label %.lr.ph849

.preheader727:                                    ; preds = %.critedge2
  br i1 %353, label %.lr.ph854, label %._crit_edge855.thread

.lr.ph854:                                        ; preds = %.preheader727
  %464 = sub nsw i32 %2, %.3634.lcssa
  %465 = sext i32 %295 to i64
  %wide.trip.count945 = sext i32 %.0606.lcssa to i64
  br label %534

.lr.ph849:                                        ; preds = %.lr.ph849.preheader, %.critedge2
  %indvars.iv937 = phi i64 [ %463, %.lr.ph849.preheader ], [ %indvars.iv.next938, %.critedge2 ]
  %.1644846 = phi i32 [ %462, %.lr.ph849.preheader ], [ %.3646, %.critedge2 ]
  %466 = getelementptr inbounds i32, ptr %1, i64 %indvars.iv937
  %467 = load i32, ptr %466, align 4, !tbaa !5
  %468 = sext i32 %467 to i64
  %469 = getelementptr inbounds i32, ptr %26, i64 %468
  %470 = load i32, ptr %469, align 4, !tbaa !5
  %471 = icmp sgt i32 %470, -1
  br i1 %471, label %.critedge2, label %472

472:                                              ; preds = %.lr.ph849
  %473 = getelementptr inbounds i32, ptr %4, i64 %468
  %474 = load i32, ptr %473, align 4, !tbaa !5
  %475 = zext i32 %474 to i64
  %476 = getelementptr inbounds i32, ptr %44, i64 %475
  %477 = load i32, ptr %476, align 4, !tbaa !5
  store i32 -1, ptr %476, align 4, !tbaa !5
  %.not701838 = icmp eq i32 %477, -1
  br i1 %.not701838, label %.critedge2, label %.lr.ph842

.lr.ph842:                                        ; preds = %472, %._crit_edge837
  %.2640840 = phi i32 [ %.pre970, %._crit_edge837 ], [ %477, %472 ]
  %.2645839 = phi i32 [ %533, %._crit_edge837 ], [ %.1644846, %472 ]
  %478 = sext i32 %.2640840 to i64
  %479 = getelementptr inbounds i32, ptr %29, i64 %478
  %480 = load i32, ptr %479, align 4, !tbaa !5
  %.not702 = icmp eq i32 %480, -1
  br i1 %.not702, label %.critedge2, label %481

481:                                              ; preds = %.lr.ph842
  %482 = getelementptr inbounds i32, ptr %5, i64 %478
  %483 = load i32, ptr %482, align 4, !tbaa !5
  %484 = getelementptr inbounds i32, ptr %35, i64 %478
  %485 = load i32, ptr %484, align 4, !tbaa !5
  %486 = getelementptr inbounds i32, ptr %0, i64 %478
  %487 = load i32, ptr %486, align 4, !tbaa !5
  %488 = add i32 %483, -1
  %489 = add i32 %488, %487
  %.not703.not822 = icmp slt i32 %487, %489
  br i1 %.not703.not822, label %.lr.ph825.preheader, label %.lr.ph836

.lr.ph825.preheader:                              ; preds = %481
  %490 = sext i32 %487 to i64
  br label %.lr.ph825

.lr.ph825:                                        ; preds = %.lr.ph825.preheader, %.lr.ph825
  %indvars.iv929 = phi i64 [ %490, %.lr.ph825.preheader ], [ %indvars.iv.next930, %.lr.ph825 ]
  %indvars.iv.next930 = add nsw i64 %indvars.iv929, 1
  %491 = getelementptr inbounds i32, ptr %1, i64 %indvars.iv.next930
  %492 = load i32, ptr %491, align 4, !tbaa !5
  %493 = sext i32 %492 to i64
  %494 = getelementptr inbounds i32, ptr %41, i64 %493
  store i32 %.2645839, ptr %494, align 4, !tbaa !5
  %495 = load i32, ptr %486, align 4, !tbaa !5
  %496 = add i32 %488, %495
  %497 = sext i32 %496 to i64
  %.not703.not = icmp slt i64 %indvars.iv.next930, %497
  br i1 %.not703.not, label %.lr.ph825, label %._crit_edge826, !llvm.loop !36

._crit_edge826:                                   ; preds = %.lr.ph825
  %.pre969 = load i32, ptr %479, align 4, !tbaa !5
  %.not704832 = icmp eq i32 %.pre969, -1
  br i1 %.not704832, label %._crit_edge837.thread, label %.lr.ph836

._crit_edge837.thread:                            ; preds = %._crit_edge826
  %498 = add nsw i32 %.2645839, 1
  br label %.critedge2

.lr.ph836:                                        ; preds = %481, %._crit_edge826
  %499 = phi i32 [ %.pre969, %._crit_edge826 ], [ %480, %481 ]
  %500 = sub i32 -2, %.2640840
  %501 = getelementptr inbounds i32, ptr %26, i64 %478
  br label %502

502:                                              ; preds = %.lr.ph836, %532
  %.1650834 = phi i32 [ %499, %.lr.ph836 ], [ %.2651, %532 ]
  %.0659833 = phi i32 [ %.2640840, %.lr.ph836 ], [ %.1660, %532 ]
  %503 = sext i32 %.1650834 to i64
  %504 = getelementptr inbounds i32, ptr %5, i64 %503
  %505 = load i32, ptr %504, align 4, !tbaa !5
  %506 = icmp eq i32 %505, %483
  br i1 %506, label %507, label %.critedge719

507:                                              ; preds = %502
  %508 = getelementptr inbounds i32, ptr %35, i64 %503
  %509 = load i32, ptr %508, align 4, !tbaa !5
  %510 = icmp eq i32 %509, %485
  %511 = getelementptr inbounds i32, ptr %0, i64 %503
  br i1 %510, label %.lr.ph831, label %.critedge719

.lr.ph831:                                        ; preds = %507
  %512 = load i32, ptr %511, align 4, !tbaa !5
  %513 = add i32 %488, %512
  %514 = sext i32 %512 to i64
  %smax = tail call i32 @llvm.smax.i32(i32 %512, i32 %513)
  %wide.trip.count935 = sext i32 %smax to i64
  br label %515

515:                                              ; preds = %.lr.ph831, %select.unfold
  %indvars.iv932 = phi i64 [ %514, %.lr.ph831 ], [ %indvars.iv.next933, %select.unfold ]
  %exitcond936.not = icmp eq i64 %indvars.iv932, %wide.trip.count935
  br i1 %exitcond936.not, label %.critedge4, label %select.unfold

select.unfold:                                    ; preds = %515
  %indvars.iv.next933 = add nsw i64 %indvars.iv932, 1
  %516 = getelementptr inbounds i32, ptr %1, i64 %indvars.iv.next933
  %517 = load i32, ptr %516, align 4, !tbaa !5
  %518 = sext i32 %517 to i64
  %519 = getelementptr inbounds i32, ptr %41, i64 %518
  %520 = load i32, ptr %519, align 4, !tbaa !5
  %.not707 = icmp eq i32 %520, %.2645839
  br i1 %.not707, label %515, label %.critedge719

.critedge4:                                       ; preds = %515
  store i32 %500, ptr %511, align 4, !tbaa !5
  %521 = getelementptr inbounds i32, ptr %26, i64 %503
  %522 = load i32, ptr %521, align 4, !tbaa !5
  %523 = load i32, ptr %501, align 4, !tbaa !5
  %524 = add nsw i32 %523, %522
  store i32 %524, ptr %501, align 4, !tbaa !5
  store i32 0, ptr %521, align 4, !tbaa !5
  %525 = getelementptr inbounds i32, ptr %35, i64 %503
  store i32 -1, ptr %525, align 4, !tbaa !5
  %526 = getelementptr inbounds i32, ptr %29, i64 %503
  %527 = load i32, ptr %526, align 4, !tbaa !5
  %528 = sext i32 %.0659833 to i64
  %529 = getelementptr inbounds i32, ptr %29, i64 %528
  store i32 %527, ptr %529, align 4, !tbaa !5
  br label %532

.critedge719:                                     ; preds = %select.unfold, %502, %507
  %530 = getelementptr inbounds i32, ptr %29, i64 %503
  %531 = load i32, ptr %530, align 4, !tbaa !5
  br label %532

532:                                              ; preds = %.critedge719, %.critedge4
  %.1660 = phi i32 [ %.0659833, %.critedge4 ], [ %.1650834, %.critedge719 ]
  %.2651 = phi i32 [ %527, %.critedge4 ], [ %531, %.critedge719 ]
  %.not704 = icmp eq i32 %.2651, -1
  br i1 %.not704, label %._crit_edge837, label %502, !llvm.loop !37

._crit_edge837:                                   ; preds = %532
  %.pre970 = load i32, ptr %479, align 4, !tbaa !5
  %533 = add nsw i32 %.2645839, 1
  %.not701 = icmp eq i32 %.pre970, -1
  br i1 %.not701, label %.critedge2, label %.lr.ph842, !llvm.loop !38

.critedge2:                                       ; preds = %._crit_edge837, %.lr.ph842, %._crit_edge837.thread, %472, %.lr.ph849
  %.3646 = phi i32 [ %.1644846, %.lr.ph849 ], [ %.1644846, %472 ], [ %498, %._crit_edge837.thread ], [ %533, %._crit_edge837 ], [ %.2645839, %.lr.ph842 ]
  %indvars.iv.next938 = add nsw i64 %indvars.iv937, 1
  %exitcond941.not = icmp eq i64 %indvars.iv.next938, %wide.trip.count940
  br i1 %exitcond941.not, label %.preheader727, label %.lr.ph849, !llvm.loop !39

534:                                              ; preds = %.lr.ph854, %561
  %indvars.iv942 = phi i64 [ %465, %.lr.ph854 ], [ %indvars.iv.next943, %561 ]
  %.10852 = phi i32 [ %295, %.lr.ph854 ], [ %.11, %561 ]
  %.2656851 = phi i32 [ %.1655.lcssa, %.lr.ph854 ], [ %.3657, %561 ]
  %535 = getelementptr inbounds i32, ptr %1, i64 %indvars.iv942
  %536 = load i32, ptr %535, align 4, !tbaa !5
  %537 = sext i32 %536 to i64
  %538 = getelementptr inbounds i32, ptr %26, i64 %537
  %539 = load i32, ptr %538, align 4, !tbaa !5
  %540 = icmp sgt i32 %539, -1
  br i1 %540, label %561, label %541

541:                                              ; preds = %534
  %542 = sub nsw i32 0, %539
  store i32 %542, ptr %538, align 4, !tbaa !5
  %543 = getelementptr inbounds i32, ptr %38, i64 %537
  %544 = load i32, ptr %543, align 4, !tbaa !5
  %545 = add nsw i32 %544, %.3622.lcssa
  %. = tail call i32 @llvm.smin.i32(i32 %545, i32 %464)
  %546 = add nsw i32 %., %539
  %547 = sext i32 %546 to i64
  %548 = getelementptr inbounds i32, ptr %32, i64 %547
  %549 = load i32, ptr %548, align 4, !tbaa !5
  %.not700 = icmp eq i32 %549, -1
  br i1 %.not700, label %553, label %550

550:                                              ; preds = %541
  %551 = sext i32 %549 to i64
  %552 = getelementptr inbounds i32, ptr %4, i64 %551
  store i32 %536, ptr %552, align 4, !tbaa !5
  %.pre971 = load i32, ptr %548, align 4, !tbaa !5
  br label %553

553:                                              ; preds = %550, %541
  %554 = phi i32 [ %.pre971, %550 ], [ -1, %541 ]
  %555 = getelementptr inbounds i32, ptr %29, i64 %537
  store i32 %554, ptr %555, align 4, !tbaa !5
  %556 = getelementptr inbounds i32, ptr %4, i64 %537
  store i32 -1, ptr %556, align 4, !tbaa !5
  store i32 %536, ptr %548, align 4, !tbaa !5
  %557 = tail call i32 @llvm.smin.i32(i32 %.2656851, i32 %546)
  store i32 %546, ptr %543, align 4, !tbaa !5
  %558 = add nsw i32 %.10852, 1
  %559 = sext i32 %.10852 to i64
  %560 = getelementptr inbounds i32, ptr %1, i64 %559
  store i32 %536, ptr %560, align 4, !tbaa !5
  br label %561

561:                                              ; preds = %534, %553
  %.3657 = phi i32 [ %.2656851, %534 ], [ %557, %553 ]
  %.11 = phi i32 [ %.10852, %534 ], [ %558, %553 ]
  %indvars.iv.next943 = add nsw i64 %indvars.iv942, 1
  %exitcond946.not = icmp eq i64 %indvars.iv.next943, %wide.trip.count945
  br i1 %exitcond946.not, label %._crit_edge855, label %534, !llvm.loop !40

._crit_edge855.thread:                            ; preds = %.preheader727, %._crit_edge818
  %.1644.lcssa975.ph = phi i32 [ %.3646, %.preheader727 ], [ %462, %._crit_edge818 ]
  store i32 %.0647.lcssa, ptr %230, align 4, !tbaa !5
  store i32 0, ptr %351, align 4, !tbaa !5
  br label %564

._crit_edge855:                                   ; preds = %561
  store i32 %.0647.lcssa, ptr %230, align 4, !tbaa !5
  %562 = sub nsw i32 %.11, %295
  store i32 %562, ptr %351, align 4, !tbaa !5
  %563 = icmp eq i32 %.11, %295
  br i1 %563, label %564, label %566

564:                                              ; preds = %._crit_edge855.thread, %._crit_edge855
  %.10.lcssa986 = phi i32 [ %295, %._crit_edge855.thread ], [ %.11, %._crit_edge855 ]
  %.2656.lcssa984 = phi i32 [ %.1655.lcssa, %._crit_edge855.thread ], [ %.3657, %._crit_edge855 ]
  %.1644.lcssa975982 = phi i32 [ %.1644.lcssa975.ph, %._crit_edge855.thread ], [ %.3646, %._crit_edge855 ]
  store i32 -1, ptr %292, align 4, !tbaa !5
  %565 = getelementptr inbounds i32, ptr %41, i64 %218
  store i32 0, ptr %565, align 4, !tbaa !5
  br label %566

566:                                              ; preds = %564, %._crit_edge855
  %.10.lcssa985 = phi i32 [ %.10.lcssa986, %564 ], [ %.11, %._crit_edge855 ]
  %.2656.lcssa983 = phi i32 [ %.2656.lcssa984, %564 ], [ %.3657, %._crit_edge855 ]
  %.1644.lcssa975981 = phi i32 [ %.1644.lcssa975982, %564 ], [ %.3646, %._crit_edge855 ]
  %spec.select720 = select i1 %294, i32 %.1596, i32 %.10.lcssa985
  %567 = icmp slt i32 %.3634.lcssa, %2
  br i1 %567, label %.preheader732, label %.preheader725, !llvm.loop !41

.preheader724:                                    ; preds = %.lr.ph864, %middle.block1086, %.preheader725
  br i1 %.not735, label %._crit_edge876, label %.lr.ph869.preheader

.lr.ph864:                                        ; preds = %.lr.ph864.preheader1099, %.lr.ph864
  %indvars.iv947 = phi i64 [ %indvars.iv.next948, %.lr.ph864 ], [ %indvars.iv947.ph, %.lr.ph864.preheader1099 ]
  %568 = getelementptr inbounds i32, ptr %0, i64 %indvars.iv947
  %569 = load i32, ptr %568, align 4, !tbaa !5
  %570 = sub i32 -2, %569
  store i32 %570, ptr %568, align 4, !tbaa !5
  %indvars.iv.next948 = add nuw nsw i64 %indvars.iv947, 1
  %exitcond951.not = icmp eq i64 %indvars.iv.next948, %wide.trip.count950
  br i1 %exitcond951.not, label %.preheader724, label %.lr.ph864, !llvm.loop !42

.lr.ph869.preheader:                              ; preds = %.preheader724
  %571 = zext i32 %24 to i64
  %572 = shl nuw nsw i64 %571, 2
  tail call void @llvm.memset.p0.i64(ptr align 4 %32, i8 -1, i64 %572, i1 false), !tbaa !5
  %573 = zext nneg i32 %2 to i64
  %574 = and i64 %573, 1
  %lcmp.mod1108.not.not = icmp eq i64 %574, 0
  br i1 %lcmp.mod1108.not.not, label %.lr.ph869.prol, label %.lr.ph869.prol.loopexit

.lr.ph869.prol:                                   ; preds = %.lr.ph869.preheader
  %575 = getelementptr inbounds i32, ptr %26, i64 %573
  %576 = load i32, ptr %575, align 4, !tbaa !5
  %577 = icmp sgt i32 %576, 0
  br i1 %577, label %.lr.ph869.prol.loopexit.unr-lcssa, label %578

578:                                              ; preds = %.lr.ph869.prol
  %579 = getelementptr inbounds i32, ptr %0, i64 %573
  %580 = load i32, ptr %579, align 4, !tbaa !5
  %581 = sext i32 %580 to i64
  %582 = getelementptr inbounds i32, ptr %32, i64 %581
  %583 = load i32, ptr %582, align 4, !tbaa !5
  %584 = getelementptr inbounds i32, ptr %29, i64 %573
  store i32 %583, ptr %584, align 4, !tbaa !5
  %585 = load i32, ptr %579, align 4, !tbaa !5
  %586 = sext i32 %585 to i64
  %587 = getelementptr inbounds i32, ptr %32, i64 %586
  store i32 %2, ptr %587, align 4, !tbaa !5
  br label %.lr.ph869.prol.loopexit.unr-lcssa

.lr.ph869.prol.loopexit.unr-lcssa:                ; preds = %578, %.lr.ph869.prol
  %indvars.iv.next956.prol = add nsw i64 %573, -1
  br label %.lr.ph869.prol.loopexit

.lr.ph869.prol.loopexit:                          ; preds = %.lr.ph869.prol.loopexit.unr-lcssa, %.lr.ph869.preheader
  %indvars.iv955.unr = phi i64 [ %573, %.lr.ph869.preheader ], [ %indvars.iv.next956.prol, %.lr.ph869.prol.loopexit.unr-lcssa ]
  %588 = icmp eq i32 %2, 0
  br i1 %588, label %.lr.ph871.preheader, label %.lr.ph869

.lr.ph871.preheader:                              ; preds = %618, %.lr.ph869.prol.loopexit
  %589 = zext nneg i32 %2 to i64
  br label %.lr.ph871

.lr.ph869:                                        ; preds = %.lr.ph869.prol.loopexit, %618
  %indvars.iv955 = phi i64 [ %indvars.iv.next956.1, %618 ], [ %indvars.iv955.unr, %.lr.ph869.prol.loopexit ]
  %590 = getelementptr inbounds i32, ptr %26, i64 %indvars.iv955
  %591 = load i32, ptr %590, align 4, !tbaa !5
  %592 = icmp sgt i32 %591, 0
  br i1 %592, label %.lr.ph869.1, label %593

593:                                              ; preds = %.lr.ph869
  %594 = getelementptr inbounds i32, ptr %0, i64 %indvars.iv955
  %595 = load i32, ptr %594, align 4, !tbaa !5
  %596 = sext i32 %595 to i64
  %597 = getelementptr inbounds i32, ptr %32, i64 %596
  %598 = load i32, ptr %597, align 4, !tbaa !5
  %599 = getelementptr inbounds i32, ptr %29, i64 %indvars.iv955
  store i32 %598, ptr %599, align 4, !tbaa !5
  %600 = load i32, ptr %594, align 4, !tbaa !5
  %601 = sext i32 %600 to i64
  %602 = getelementptr inbounds i32, ptr %32, i64 %601
  %603 = trunc nuw nsw i64 %indvars.iv955 to i32
  store i32 %603, ptr %602, align 4, !tbaa !5
  br label %.lr.ph869.1

.lr.ph869.1:                                      ; preds = %.lr.ph869, %593
  %indvars.iv.next956 = add nsw i64 %indvars.iv955, -1
  %604 = getelementptr inbounds i32, ptr %26, i64 %indvars.iv.next956
  %605 = load i32, ptr %604, align 4, !tbaa !5
  %606 = icmp sgt i32 %605, 0
  br i1 %606, label %618, label %607

607:                                              ; preds = %.lr.ph869.1
  %608 = getelementptr inbounds i32, ptr %0, i64 %indvars.iv.next956
  %609 = load i32, ptr %608, align 4, !tbaa !5
  %610 = sext i32 %609 to i64
  %611 = getelementptr inbounds i32, ptr %32, i64 %610
  %612 = load i32, ptr %611, align 4, !tbaa !5
  %613 = getelementptr inbounds i32, ptr %29, i64 %indvars.iv.next956
  store i32 %612, ptr %613, align 4, !tbaa !5
  %614 = load i32, ptr %608, align 4, !tbaa !5
  %615 = sext i32 %614 to i64
  %616 = getelementptr inbounds i32, ptr %32, i64 %615
  %617 = trunc nuw nsw i64 %indvars.iv.next956 to i32
  store i32 %617, ptr %616, align 4, !tbaa !5
  br label %618

618:                                              ; preds = %607, %.lr.ph869.1
  %indvars.iv.next956.1 = add nsw i64 %indvars.iv955, -2
  %619 = icmp sgt i64 %indvars.iv955, 1
  br i1 %619, label %.lr.ph869, label %.lr.ph871.preheader, !llvm.loop !43

.preheader:                                       ; preds = %635
  br i1 %.not735, label %._crit_edge876, label %.lr.ph875.preheader

.lr.ph875.preheader:                              ; preds = %.preheader
  %wide.trip.count964 = zext i32 %24 to i64
  br label %.lr.ph875

.lr.ph871:                                        ; preds = %.lr.ph871.preheader, %635
  %indvars.iv958 = phi i64 [ %589, %.lr.ph871.preheader ], [ %indvars.iv.next959, %635 ]
  %620 = getelementptr inbounds i32, ptr %26, i64 %indvars.iv958
  %621 = load i32, ptr %620, align 4, !tbaa !5
  %622 = icmp slt i32 %621, 1
  br i1 %622, label %635, label %623

623:                                              ; preds = %.lr.ph871
  %624 = getelementptr inbounds i32, ptr %0, i64 %indvars.iv958
  %625 = load i32, ptr %624, align 4, !tbaa !5
  %.not695 = icmp eq i32 %625, -1
  br i1 %.not695, label %635, label %626

626:                                              ; preds = %623
  %627 = sext i32 %625 to i64
  %628 = getelementptr inbounds i32, ptr %32, i64 %627
  %629 = load i32, ptr %628, align 4, !tbaa !5
  %630 = getelementptr inbounds i32, ptr %29, i64 %indvars.iv958
  store i32 %629, ptr %630, align 4, !tbaa !5
  %631 = load i32, ptr %624, align 4, !tbaa !5
  %632 = sext i32 %631 to i64
  %633 = getelementptr inbounds i32, ptr %32, i64 %632
  %634 = trunc nuw nsw i64 %indvars.iv958 to i32
  store i32 %634, ptr %633, align 4, !tbaa !5
  br label %635

635:                                              ; preds = %623, %626, %.lr.ph871
  %indvars.iv.next959 = add nsw i64 %indvars.iv958, -1
  %636 = icmp sgt i64 %indvars.iv958, 0
  br i1 %636, label %.lr.ph871, label %.preheader, !llvm.loop !44

.lr.ph875:                                        ; preds = %.lr.ph875.preheader, %643
  %indvars.iv961 = phi i64 [ 0, %.lr.ph875.preheader ], [ %indvars.iv.next962, %643 ]
  %.3667873 = phi i32 [ 0, %.lr.ph875.preheader ], [ %.4668, %643 ]
  %637 = getelementptr inbounds i32, ptr %0, i64 %indvars.iv961
  %638 = load i32, ptr %637, align 4, !tbaa !5
  %639 = icmp eq i32 %638, -1
  br i1 %639, label %640, label %643

640:                                              ; preds = %.lr.ph875
  %641 = trunc nuw nsw i64 %indvars.iv961 to i32
  %642 = tail call i32 @sp_tdfs(i32 noundef %641, i32 noundef %.3667873, ptr noundef nonnull %32, ptr noundef nonnull %29, ptr noundef %4, ptr noundef nonnull %41)
  br label %643

643:                                              ; preds = %.lr.ph875, %640
  %.4668 = phi i32 [ %642, %640 ], [ %.3667873, %.lr.ph875 ]
  %indvars.iv.next962 = add nuw nsw i64 %indvars.iv961, 1
  %exitcond965.not = icmp eq i64 %indvars.iv.next962, %wide.trip.count964
  br i1 %exitcond965.not, label %._crit_edge876, label %.lr.ph875, !llvm.loop !45

._crit_edge876:                                   ; preds = %643, %.preheader724, %.preheader
  ret i32 0
}

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare double @sqrt(double noundef) local_unnamed_addr #1

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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.smin.i32(i32, i32) #2

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.smax.i32(i32, i32) #2

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

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { mustprogress nofree nounwind willreturn memory(write) "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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #3 = { nocallback nofree nounwind willreturn memory(argmem: write) }
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 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10}
!10 = distinct !{!10, !11}
!11 = distinct !{!11, !"LVerDomain"}
!12 = !{!13}
!13 = distinct !{!13, !11}
!14 = distinct !{!14, !15, !16, !17}
!15 = !{!"llvm.loop.mustprogress"}
!16 = !{!"llvm.loop.isvectorized", i32 1}
!17 = !{!"llvm.loop.unroll.runtime.disable"}
!18 = distinct !{!18, !19}
!19 = !{!"llvm.loop.unroll.disable"}
!20 = distinct !{!20, !15, !16}
!21 = distinct !{!21, !15, !16, !17}
!22 = distinct !{!22, !15, !16}
!23 = distinct !{!23, !15}
!24 = distinct !{!24, !15, !16, !17}
!25 = distinct !{!25, !15}
!26 = distinct !{!26, !15}
!27 = distinct !{!27, !15}
!28 = distinct !{!28, !15}
!29 = distinct !{!29, !15}
!30 = distinct !{!30, !15}
!31 = distinct !{!31, !15}
!32 = distinct !{!32, !15}
!33 = distinct !{!33, !15}
!34 = distinct !{!34, !15}
!35 = distinct !{!35, !15}
!36 = distinct !{!36, !15}
!37 = distinct !{!37, !15}
!38 = distinct !{!38, !15}
!39 = distinct !{!39, !15}
!40 = distinct !{!40, !15}
!41 = distinct !{!41, !15}
!42 = distinct !{!42, !15, !17, !16}
!43 = distinct !{!43, !15}
!44 = distinct !{!44, !15}
!45 = distinct !{!45, !15}


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