; LLVM IR from scandum/blitsort :: src (bench)

; 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
declare dso_local void @quad_reversal128(ptr noundef, ptr noundef) #1

; Function Attrs: nounwind uwtable
declare dso_local void @rotate_merge_block128(ptr noundef, ptr noundef, i64 noundef, i64 noundef, i64 noundef, ptr noundef) #1

; Function Attrs: nounwind uwtable
declare dso_local void @quadsort_swap128(ptr noundef, ptr noundef, i64 noundef, i64 noundef, ptr noundef) #1

; Function Attrs: nounwind uwtable
define dso_local void @blit_analyze128(ptr noundef %0, ptr noundef %1, i64 noundef %2, i64 noundef %3, ptr noundef %4) #1 {
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca i64, align 8
  %9 = alloca i64, align 8
  %10 = alloca ptr, align 8
  %11 = alloca i8, align 1
  %12 = alloca i8, align 1
  %13 = alloca i8, align 1
  %14 = alloca i8, align 1
  %15 = alloca i8, align 1
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i64, align 8
  %21 = alloca i64, align 8
  %22 = alloca i64, align 8
  %23 = alloca i64, align 8
  %24 = alloca i64, align 8
  %25 = alloca i64, align 8
  %26 = alloca i64, align 8
  %27 = alloca i64, align 8
  %28 = alloca i64, align 8
  %29 = alloca i64, align 8
  %30 = alloca i64, align 8
  %31 = alloca ptr, align 8
  %32 = alloca ptr, align 8
  %33 = alloca ptr, align 8
  %34 = alloca ptr, align 8
  %35 = alloca i32, align 4
  %36 = alloca i8, align 1
  %37 = alloca i8, align 1
  %38 = alloca i8, align 1
  store ptr %0, ptr %6, align 8, !tbaa !5
  store ptr %1, ptr %7, align 8, !tbaa !5
  store i64 %2, ptr %8, align 8, !tbaa !9
  store i64 %3, ptr %9, align 8, !tbaa !9
  store ptr %4, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %11) #2
  call void @llvm.lifetime.start.p0(i64 1, ptr %12) #2
  call void @llvm.lifetime.start.p0(i64 1, ptr %13) #2
  call void @llvm.lifetime.start.p0(i64 1, ptr %14) #2
  call void @llvm.lifetime.start.p0(i64 1, ptr %15) #2
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #2
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #2
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #2
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #2
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #2
  %39 = load i64, ptr %9, align 8, !tbaa !9
  %40 = udiv i64 %39, 2
  store i64 %40, ptr %24, align 8, !tbaa !9
  %41 = load i64, ptr %24, align 8, !tbaa !9
  %42 = udiv i64 %41, 2
  store i64 %42, ptr %20, align 8, !tbaa !9
  %43 = load i64, ptr %24, align 8, !tbaa !9
  %44 = load i64, ptr %20, align 8, !tbaa !9
  %45 = sub i64 %43, %44
  store i64 %45, ptr %21, align 8, !tbaa !9
  %46 = load i64, ptr %9, align 8, !tbaa !9
  %47 = load i64, ptr %24, align 8, !tbaa !9
  %48 = sub i64 %46, %47
  store i64 %48, ptr %25, align 8, !tbaa !9
  %49 = load i64, ptr %25, align 8, !tbaa !9
  %50 = udiv i64 %49, 2
  store i64 %50, ptr %22, align 8, !tbaa !9
  %51 = load i64, ptr %25, align 8, !tbaa !9
  %52 = load i64, ptr %22, align 8, !tbaa !9
  %53 = sub i64 %51, %52
  store i64 %53, ptr %23, align 8, !tbaa !9
  %54 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %54, ptr %31, align 8, !tbaa !5
  %55 = load ptr, ptr %6, align 8, !tbaa !5
  %56 = load i64, ptr %20, align 8, !tbaa !9
  %57 = getelementptr inbounds x86_fp80, ptr %55, i64 %56
  store ptr %57, ptr %32, align 8, !tbaa !5
  %58 = load ptr, ptr %6, align 8, !tbaa !5
  %59 = load i64, ptr %24, align 8, !tbaa !9
  %60 = getelementptr inbounds x86_fp80, ptr %58, i64 %59
  store ptr %60, ptr %33, align 8, !tbaa !5
  %61 = load ptr, ptr %6, align 8, !tbaa !5
  %62 = load i64, ptr %24, align 8, !tbaa !9
  %63 = getelementptr inbounds x86_fp80, ptr %61, i64 %62
  %64 = load i64, ptr %22, align 8, !tbaa !9
  %65 = getelementptr inbounds x86_fp80, ptr %63, i64 %64
  store ptr %65, ptr %34, align 8, !tbaa !5
  store i32 0, ptr %19, align 4, !tbaa !11
  store i32 0, ptr %18, align 4, !tbaa !11
  store i32 0, ptr %17, align 4, !tbaa !11
  store i32 0, ptr %16, align 4, !tbaa !11
  store i64 0, ptr %30, align 8, !tbaa !9
  store i64 0, ptr %29, align 8, !tbaa !9
  store i64 0, ptr %28, align 8, !tbaa !9
  store i64 0, ptr %27, align 8, !tbaa !9
  %66 = load i64, ptr %9, align 8, !tbaa !9
  store i64 %66, ptr %26, align 8, !tbaa !9
  br label %67

67:                                               ; preds = %234, %5
  %68 = load i64, ptr %26, align 8, !tbaa !9
  %69 = icmp ugt i64 %68, 132
  br i1 %69, label %70, label %237

70:                                               ; preds = %67
  store i8 0, ptr %15, align 1, !tbaa !13
  store i8 0, ptr %14, align 1, !tbaa !13
  store i8 0, ptr %13, align 1, !tbaa !13
  store i8 0, ptr %12, align 1, !tbaa !13
  store i8 32, ptr %11, align 1, !tbaa !13
  br label %71

71:                                               ; preds = %127, %70
  %72 = load i8, ptr %11, align 1, !tbaa !13
  %73 = icmp ne i8 %72, 0
  br i1 %73, label %74, label %130

74:                                               ; preds = %71
  %75 = load ptr, ptr %10, align 8, !tbaa !5
  %76 = load ptr, ptr %31, align 8, !tbaa !5
  %77 = load ptr, ptr %31, align 8, !tbaa !5
  %78 = getelementptr inbounds x86_fp80, ptr %77, i64 1
  %79 = call i32 %75(ptr noundef %76, ptr noundef %78)
  %80 = icmp sgt i32 %79, 0
  %81 = zext i1 %80 to i32
  %82 = load i8, ptr %12, align 1, !tbaa !13
  %83 = zext i8 %82 to i32
  %84 = add nsw i32 %83, %81
  %85 = trunc i32 %84 to i8
  store i8 %85, ptr %12, align 1, !tbaa !13
  %86 = load ptr, ptr %31, align 8, !tbaa !5
  %87 = getelementptr inbounds x86_fp80, ptr %86, i32 1
  store ptr %87, ptr %31, align 8, !tbaa !5
  %88 = load ptr, ptr %10, align 8, !tbaa !5
  %89 = load ptr, ptr %32, align 8, !tbaa !5
  %90 = load ptr, ptr %32, align 8, !tbaa !5
  %91 = getelementptr inbounds x86_fp80, ptr %90, i64 1
  %92 = call i32 %88(ptr noundef %89, ptr noundef %91)
  %93 = icmp sgt i32 %92, 0
  %94 = zext i1 %93 to i32
  %95 = load i8, ptr %13, align 1, !tbaa !13
  %96 = zext i8 %95 to i32
  %97 = add nsw i32 %96, %94
  %98 = trunc i32 %97 to i8
  store i8 %98, ptr %13, align 1, !tbaa !13
  %99 = load ptr, ptr %32, align 8, !tbaa !5
  %100 = getelementptr inbounds x86_fp80, ptr %99, i32 1
  store ptr %100, ptr %32, align 8, !tbaa !5
  %101 = load ptr, ptr %10, align 8, !tbaa !5
  %102 = load ptr, ptr %33, align 8, !tbaa !5
  %103 = load ptr, ptr %33, align 8, !tbaa !5
  %104 = getelementptr inbounds x86_fp80, ptr %103, i64 1
  %105 = call i32 %101(ptr noundef %102, ptr noundef %104)
  %106 = icmp sgt i32 %105, 0
  %107 = zext i1 %106 to i32
  %108 = load i8, ptr %14, align 1, !tbaa !13
  %109 = zext i8 %108 to i32
  %110 = add nsw i32 %109, %107
  %111 = trunc i32 %110 to i8
  store i8 %111, ptr %14, align 1, !tbaa !13
  %112 = load ptr, ptr %33, align 8, !tbaa !5
  %113 = getelementptr inbounds x86_fp80, ptr %112, i32 1
  store ptr %113, ptr %33, align 8, !tbaa !5
  %114 = load ptr, ptr %10, align 8, !tbaa !5
  %115 = load ptr, ptr %34, align 8, !tbaa !5
  %116 = load ptr, ptr %34, align 8, !tbaa !5
  %117 = getelementptr inbounds x86_fp80, ptr %116, i64 1
  %118 = call i32 %114(ptr noundef %115, ptr noundef %117)
  %119 = icmp sgt i32 %118, 0
  %120 = zext i1 %119 to i32
  %121 = load i8, ptr %15, align 1, !tbaa !13
  %122 = zext i8 %121 to i32
  %123 = add nsw i32 %122, %120
  %124 = trunc i32 %123 to i8
  store i8 %124, ptr %15, align 1, !tbaa !13
  %125 = load ptr, ptr %34, align 8, !tbaa !5
  %126 = getelementptr inbounds x86_fp80, ptr %125, i32 1
  store ptr %126, ptr %34, align 8, !tbaa !5
  br label %127

127:                                              ; preds = %74
  %128 = load i8, ptr %11, align 1, !tbaa !13
  %129 = add i8 %128, -1
  store i8 %129, ptr %11, align 1, !tbaa !13
  br label %71, !llvm.loop !14

130:                                              ; preds = %71
  %131 = load i8, ptr %12, align 1, !tbaa !13
  %132 = zext i8 %131 to i64
  %133 = load i64, ptr %27, align 8, !tbaa !9
  %134 = add i64 %133, %132
  store i64 %134, ptr %27, align 8, !tbaa !9
  %135 = load i8, ptr %12, align 1, !tbaa !13
  %136 = zext i8 %135 to i32
  %137 = icmp eq i32 %136, 0
  %138 = zext i1 %137 to i32
  %139 = load i8, ptr %12, align 1, !tbaa !13
  %140 = zext i8 %139 to i32
  %141 = icmp eq i32 %140, 32
  %142 = zext i1 %141 to i32
  %143 = or i32 %138, %142
  %144 = trunc i32 %143 to i8
  store i8 %144, ptr %12, align 1, !tbaa !13
  %145 = zext i8 %144 to i32
  %146 = load i32, ptr %16, align 4, !tbaa !11
  %147 = add i32 %146, %145
  store i32 %147, ptr %16, align 4, !tbaa !11
  %148 = load i8, ptr %13, align 1, !tbaa !13
  %149 = zext i8 %148 to i64
  %150 = load i64, ptr %28, align 8, !tbaa !9
  %151 = add i64 %150, %149
  store i64 %151, ptr %28, align 8, !tbaa !9
  %152 = load i8, ptr %13, align 1, !tbaa !13
  %153 = zext i8 %152 to i32
  %154 = icmp eq i32 %153, 0
  %155 = zext i1 %154 to i32
  %156 = load i8, ptr %13, align 1, !tbaa !13
  %157 = zext i8 %156 to i32
  %158 = icmp eq i32 %157, 32
  %159 = zext i1 %158 to i32
  %160 = or i32 %155, %159
  %161 = trunc i32 %160 to i8
  store i8 %161, ptr %13, align 1, !tbaa !13
  %162 = zext i8 %161 to i32
  %163 = load i32, ptr %17, align 4, !tbaa !11
  %164 = add i32 %163, %162
  store i32 %164, ptr %17, align 4, !tbaa !11
  %165 = load i8, ptr %14, align 1, !tbaa !13
  %166 = zext i8 %165 to i64
  %167 = load i64, ptr %29, align 8, !tbaa !9
  %168 = add i64 %167, %166
  store i64 %168, ptr %29, align 8, !tbaa !9
  %169 = load i8, ptr %14, align 1, !tbaa !13
  %170 = zext i8 %169 to i32
  %171 = icmp eq i32 %170, 0
  %172 = zext i1 %171 to i32
  %173 = load i8, ptr %14, align 1, !tbaa !13
  %174 = zext i8 %173 to i32
  %175 = icmp eq i32 %174, 32
  %176 = zext i1 %175 to i32
  %177 = or i32 %172, %176
  %178 = trunc i32 %177 to i8
  store i8 %178, ptr %14, align 1, !tbaa !13
  %179 = zext i8 %178 to i32
  %180 = load i32, ptr %18, align 4, !tbaa !11
  %181 = add i32 %180, %179
  store i32 %181, ptr %18, align 4, !tbaa !11
  %182 = load i8, ptr %15, align 1, !tbaa !13
  %183 = zext i8 %182 to i64
  %184 = load i64, ptr %30, align 8, !tbaa !9
  %185 = add i64 %184, %183
  store i64 %185, ptr %30, align 8, !tbaa !9
  %186 = load i8, ptr %15, align 1, !tbaa !13
  %187 = zext i8 %186 to i32
  %188 = icmp eq i32 %187, 0
  %189 = zext i1 %188 to i32
  %190 = load i8, ptr %15, align 1, !tbaa !13
  %191 = zext i8 %190 to i32
  %192 = icmp eq i32 %191, 32
  %193 = zext i1 %192 to i32
  %194 = or i32 %189, %193
  %195 = trunc i32 %194 to i8
  store i8 %195, ptr %15, align 1, !tbaa !13
  %196 = zext i8 %195 to i32
  %197 = load i32, ptr %19, align 4, !tbaa !11
  %198 = add i32 %197, %196
  store i32 %198, ptr %19, align 4, !tbaa !11
  %199 = load i64, ptr %26, align 8, !tbaa !9
  %200 = icmp ugt i64 %199, 516
  br i1 %200, label %201, label %233

201:                                              ; preds = %130
  %202 = load i8, ptr %12, align 1, !tbaa !13
  %203 = zext i8 %202 to i32
  %204 = load i8, ptr %13, align 1, !tbaa !13
  %205 = zext i8 %204 to i32
  %206 = add nsw i32 %203, %205
  %207 = load i8, ptr %14, align 1, !tbaa !13
  %208 = zext i8 %207 to i32
  %209 = add nsw i32 %206, %208
  %210 = load i8, ptr %15, align 1, !tbaa !13
  %211 = zext i8 %210 to i32
  %212 = add nsw i32 %209, %211
  %213 = icmp eq i32 %212, 0
  br i1 %213, label %214, label %233

214:                                              ; preds = %201
  %215 = load i64, ptr %27, align 8, !tbaa !9
  %216 = add i64 %215, 48
  store i64 %216, ptr %27, align 8, !tbaa !9
  %217 = load ptr, ptr %31, align 8, !tbaa !5
  %218 = getelementptr inbounds x86_fp80, ptr %217, i64 96
  store ptr %218, ptr %31, align 8, !tbaa !5
  %219 = load i64, ptr %28, align 8, !tbaa !9
  %220 = add i64 %219, 48
  store i64 %220, ptr %28, align 8, !tbaa !9
  %221 = load ptr, ptr %32, align 8, !tbaa !5
  %222 = getelementptr inbounds x86_fp80, ptr %221, i64 96
  store ptr %222, ptr %32, align 8, !tbaa !5
  %223 = load i64, ptr %29, align 8, !tbaa !9
  %224 = add i64 %223, 48
  store i64 %224, ptr %29, align 8, !tbaa !9
  %225 = load ptr, ptr %33, align 8, !tbaa !5
  %226 = getelementptr inbounds x86_fp80, ptr %225, i64 96
  store ptr %226, ptr %33, align 8, !tbaa !5
  %227 = load i64, ptr %30, align 8, !tbaa !9
  %228 = add i64 %227, 48
  store i64 %228, ptr %30, align 8, !tbaa !9
  %229 = load ptr, ptr %34, align 8, !tbaa !5
  %230 = getelementptr inbounds x86_fp80, ptr %229, i64 96
  store ptr %230, ptr %34, align 8, !tbaa !5
  %231 = load i64, ptr %26, align 8, !tbaa !9
  %232 = sub i64 %231, 384
  store i64 %232, ptr %26, align 8, !tbaa !9
  br label %233

233:                                              ; preds = %214, %201, %130
  br label %234

234:                                              ; preds = %233
  %235 = load i64, ptr %26, align 8, !tbaa !9
  %236 = sub i64 %235, 128
  store i64 %236, ptr %26, align 8, !tbaa !9
  br label %67, !llvm.loop !16

237:                                              ; preds = %67
  br label %238

238:                                              ; preds = %290, %237
  %239 = load i64, ptr %26, align 8, !tbaa !9
  %240 = icmp ugt i64 %239, 7
  br i1 %240, label %241, label %293

241:                                              ; preds = %238
  %242 = load ptr, ptr %10, align 8, !tbaa !5
  %243 = load ptr, ptr %31, align 8, !tbaa !5
  %244 = load ptr, ptr %31, align 8, !tbaa !5
  %245 = getelementptr inbounds x86_fp80, ptr %244, i64 1
  %246 = call i32 %242(ptr noundef %243, ptr noundef %245)
  %247 = icmp sgt i32 %246, 0
  %248 = zext i1 %247 to i32
  %249 = sext i32 %248 to i64
  %250 = load i64, ptr %27, align 8, !tbaa !9
  %251 = add i64 %250, %249
  store i64 %251, ptr %27, align 8, !tbaa !9
  %252 = load ptr, ptr %31, align 8, !tbaa !5
  %253 = getelementptr inbounds x86_fp80, ptr %252, i32 1
  store ptr %253, ptr %31, align 8, !tbaa !5
  %254 = load ptr, ptr %10, align 8, !tbaa !5
  %255 = load ptr, ptr %32, align 8, !tbaa !5
  %256 = load ptr, ptr %32, align 8, !tbaa !5
  %257 = getelementptr inbounds x86_fp80, ptr %256, i64 1
  %258 = call i32 %254(ptr noundef %255, ptr noundef %257)
  %259 = icmp sgt i32 %258, 0
  %260 = zext i1 %259 to i32
  %261 = sext i32 %260 to i64
  %262 = load i64, ptr %28, align 8, !tbaa !9
  %263 = add i64 %262, %261
  store i64 %263, ptr %28, align 8, !tbaa !9
  %264 = load ptr, ptr %32, align 8, !tbaa !5
  %265 = getelementptr inbounds x86_fp80, ptr %264, i32 1
  store ptr %265, ptr %32, align 8, !tbaa !5
  %266 = load ptr, ptr %10, align 8, !tbaa !5
  %267 = load ptr, ptr %33, align 8, !tbaa !5
  %268 = load ptr, ptr %33, align 8, !tbaa !5
  %269 = getelementptr inbounds x86_fp80, ptr %268, i64 1
  %270 = call i32 %266(ptr noundef %267, ptr noundef %269)
  %271 = icmp sgt i32 %270, 0
  %272 = zext i1 %271 to i32
  %273 = sext i32 %272 to i64
  %274 = load i64, ptr %29, align 8, !tbaa !9
  %275 = add i64 %274, %273
  store i64 %275, ptr %29, align 8, !tbaa !9
  %276 = load ptr, ptr %33, align 8, !tbaa !5
  %277 = getelementptr inbounds x86_fp80, ptr %276, i32 1
  store ptr %277, ptr %33, align 8, !tbaa !5
  %278 = load ptr, ptr %10, align 8, !tbaa !5
  %279 = load ptr, ptr %34, align 8, !tbaa !5
  %280 = load ptr, ptr %34, align 8, !tbaa !5
  %281 = getelementptr inbounds x86_fp80, ptr %280, i64 1
  %282 = call i32 %278(ptr noundef %279, ptr noundef %281)
  %283 = icmp sgt i32 %282, 0
  %284 = zext i1 %283 to i32
  %285 = sext i32 %284 to i64
  %286 = load i64, ptr %30, align 8, !tbaa !9
  %287 = add i64 %286, %285
  store i64 %287, ptr %30, align 8, !tbaa !9
  %288 = load ptr, ptr %34, align 8, !tbaa !5
  %289 = getelementptr inbounds x86_fp80, ptr %288, i32 1
  store ptr %289, ptr %34, align 8, !tbaa !5
  br label %290

290:                                              ; preds = %241
  %291 = load i64, ptr %26, align 8, !tbaa !9
  %292 = sub i64 %291, 4
  store i64 %292, ptr %26, align 8, !tbaa !9
  br label %238, !llvm.loop !17

293:                                              ; preds = %238
  %294 = load i64, ptr %20, align 8, !tbaa !9
  %295 = load i64, ptr %21, align 8, !tbaa !9
  %296 = icmp ult i64 %294, %295
  br i1 %296, label %297, label %310

297:                                              ; preds = %293
  %298 = load ptr, ptr %10, align 8, !tbaa !5
  %299 = load ptr, ptr %32, align 8, !tbaa !5
  %300 = load ptr, ptr %32, align 8, !tbaa !5
  %301 = getelementptr inbounds x86_fp80, ptr %300, i64 1
  %302 = call i32 %298(ptr noundef %299, ptr noundef %301)
  %303 = icmp sgt i32 %302, 0
  %304 = zext i1 %303 to i32
  %305 = sext i32 %304 to i64
  %306 = load i64, ptr %28, align 8, !tbaa !9
  %307 = add i64 %306, %305
  store i64 %307, ptr %28, align 8, !tbaa !9
  %308 = load ptr, ptr %32, align 8, !tbaa !5
  %309 = getelementptr inbounds x86_fp80, ptr %308, i32 1
  store ptr %309, ptr %32, align 8, !tbaa !5
  br label %310

310:                                              ; preds = %297, %293
  %311 = load i64, ptr %20, align 8, !tbaa !9
  %312 = load i64, ptr %22, align 8, !tbaa !9
  %313 = icmp ult i64 %311, %312
  br i1 %313, label %314, label %327

314:                                              ; preds = %310
  %315 = load ptr, ptr %10, align 8, !tbaa !5
  %316 = load ptr, ptr %33, align 8, !tbaa !5
  %317 = load ptr, ptr %33, align 8, !tbaa !5
  %318 = getelementptr inbounds x86_fp80, ptr %317, i64 1
  %319 = call i32 %315(ptr noundef %316, ptr noundef %318)
  %320 = icmp sgt i32 %319, 0
  %321 = zext i1 %320 to i32
  %322 = sext i32 %321 to i64
  %323 = load i64, ptr %29, align 8, !tbaa !9
  %324 = add i64 %323, %322
  store i64 %324, ptr %29, align 8, !tbaa !9
  %325 = load ptr, ptr %33, align 8, !tbaa !5
  %326 = getelementptr inbounds x86_fp80, ptr %325, i32 1
  store ptr %326, ptr %33, align 8, !tbaa !5
  br label %327

327:                                              ; preds = %314, %310
  %328 = load i64, ptr %20, align 8, !tbaa !9
  %329 = load i64, ptr %23, align 8, !tbaa !9
  %330 = icmp ult i64 %328, %329
  br i1 %330, label %331, label %344

331:                                              ; preds = %327
  %332 = load ptr, ptr %10, align 8, !tbaa !5
  %333 = load ptr, ptr %34, align 8, !tbaa !5
  %334 = load ptr, ptr %34, align 8, !tbaa !5
  %335 = getelementptr inbounds x86_fp80, ptr %334, i64 1
  %336 = call i32 %332(ptr noundef %333, ptr noundef %335)
  %337 = icmp sgt i32 %336, 0
  %338 = zext i1 %337 to i32
  %339 = sext i32 %338 to i64
  %340 = load i64, ptr %30, align 8, !tbaa !9
  %341 = add i64 %340, %339
  store i64 %341, ptr %30, align 8, !tbaa !9
  %342 = load ptr, ptr %34, align 8, !tbaa !5
  %343 = getelementptr inbounds x86_fp80, ptr %342, i32 1
  store ptr %343, ptr %34, align 8, !tbaa !5
  br label %344

344:                                              ; preds = %331, %327
  %345 = load i64, ptr %27, align 8, !tbaa !9
  %346 = load i64, ptr %28, align 8, !tbaa !9
  %347 = add i64 %345, %346
  %348 = load i64, ptr %29, align 8, !tbaa !9
  %349 = add i64 %347, %348
  %350 = load i64, ptr %30, align 8, !tbaa !9
  %351 = add i64 %349, %350
  store i64 %351, ptr %26, align 8, !tbaa !9
  %352 = load i64, ptr %26, align 8, !tbaa !9
  %353 = icmp eq i64 %352, 0
  br i1 %353, label %354, label %377

354:                                              ; preds = %344
  %355 = load ptr, ptr %10, align 8, !tbaa !5
  %356 = load ptr, ptr %31, align 8, !tbaa !5
  %357 = load ptr, ptr %31, align 8, !tbaa !5
  %358 = getelementptr inbounds x86_fp80, ptr %357, i64 1
  %359 = call i32 %355(ptr noundef %356, ptr noundef %358)
  %360 = icmp sle i32 %359, 0
  br i1 %360, label %361, label %376

361:                                              ; preds = %354
  %362 = load ptr, ptr %10, align 8, !tbaa !5
  %363 = load ptr, ptr %32, align 8, !tbaa !5
  %364 = load ptr, ptr %32, align 8, !tbaa !5
  %365 = getelementptr inbounds x86_fp80, ptr %364, i64 1
  %366 = call i32 %362(ptr noundef %363, ptr noundef %365)
  %367 = icmp sle i32 %366, 0
  br i1 %367, label %368, label %376

368:                                              ; preds = %361
  %369 = load ptr, ptr %10, align 8, !tbaa !5
  %370 = load ptr, ptr %33, align 8, !tbaa !5
  %371 = load ptr, ptr %33, align 8, !tbaa !5
  %372 = getelementptr inbounds x86_fp80, ptr %371, i64 1
  %373 = call i32 %369(ptr noundef %370, ptr noundef %372)
  %374 = icmp sle i32 %373, 0
  br i1 %374, label %375, label %376

375:                                              ; preds = %368
  store i32 1, ptr %35, align 4
  br label %913

376:                                              ; preds = %368, %361, %354
  br label %377

377:                                              ; preds = %376, %344
  %378 = load i64, ptr %20, align 8, !tbaa !9
  %379 = load i64, ptr %27, align 8, !tbaa !9
  %380 = sub i64 %378, %379
  %381 = icmp eq i64 %380, 1
  %382 = zext i1 %381 to i32
  %383 = trunc i32 %382 to i8
  store i8 %383, ptr %12, align 1, !tbaa !13
  %384 = load i64, ptr %21, align 8, !tbaa !9
  %385 = load i64, ptr %28, align 8, !tbaa !9
  %386 = sub i64 %384, %385
  %387 = icmp eq i64 %386, 1
  %388 = zext i1 %387 to i32
  %389 = trunc i32 %388 to i8
  store i8 %389, ptr %13, align 1, !tbaa !13
  %390 = load i64, ptr %22, align 8, !tbaa !9
  %391 = load i64, ptr %29, align 8, !tbaa !9
  %392 = sub i64 %390, %391
  %393 = icmp eq i64 %392, 1
  %394 = zext i1 %393 to i32
  %395 = trunc i32 %394 to i8
  store i8 %395, ptr %14, align 1, !tbaa !13
  %396 = load i64, ptr %23, align 8, !tbaa !9
  %397 = load i64, ptr %30, align 8, !tbaa !9
  %398 = sub i64 %396, %397
  %399 = icmp eq i64 %398, 1
  %400 = zext i1 %399 to i32
  %401 = trunc i32 %400 to i8
  store i8 %401, ptr %15, align 1, !tbaa !13
  %402 = load i8, ptr %12, align 1, !tbaa !13
  %403 = zext i8 %402 to i32
  %404 = load i8, ptr %13, align 1, !tbaa !13
  %405 = zext i8 %404 to i32
  %406 = or i32 %403, %405
  %407 = load i8, ptr %14, align 1, !tbaa !13
  %408 = zext i8 %407 to i32
  %409 = or i32 %406, %408
  %410 = load i8, ptr %15, align 1, !tbaa !13
  %411 = zext i8 %410 to i32
  %412 = or i32 %409, %411
  %413 = icmp ne i32 %412, 0
  br i1 %413, label %414, label %556

414:                                              ; preds = %377
  call void @llvm.lifetime.start.p0(i64 1, ptr %36) #2
  %415 = load i8, ptr %12, align 1, !tbaa !13
  %416 = zext i8 %415 to i32
  %417 = icmp ne i32 %416, 0
  br i1 %417, label %418, label %422

418:                                              ; preds = %414
  %419 = load i8, ptr %13, align 1, !tbaa !13
  %420 = zext i8 %419 to i32
  %421 = icmp ne i32 %420, 0
  br label %422

422:                                              ; preds = %418, %414
  %423 = phi i1 [ false, %414 ], [ %421, %418 ]
  %424 = zext i1 %423 to i32
  %425 = load ptr, ptr %10, align 8, !tbaa !5
  %426 = load ptr, ptr %31, align 8, !tbaa !5
  %427 = load ptr, ptr %31, align 8, !tbaa !5
  %428 = getelementptr inbounds x86_fp80, ptr %427, i64 1
  %429 = call i32 %425(ptr noundef %426, ptr noundef %428)
  %430 = icmp sgt i32 %429, 0
  %431 = zext i1 %430 to i32
  %432 = mul nsw i32 %424, %431
  %433 = trunc i32 %432 to i8
  store i8 %433, ptr %36, align 1, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 1, ptr %37) #2
  %434 = load i8, ptr %13, align 1, !tbaa !13
  %435 = zext i8 %434 to i32
  %436 = icmp ne i32 %435, 0
  br i1 %436, label %437, label %441

437:                                              ; preds = %422
  %438 = load i8, ptr %14, align 1, !tbaa !13
  %439 = zext i8 %438 to i32
  %440 = icmp ne i32 %439, 0
  br label %441

441:                                              ; preds = %437, %422
  %442 = phi i1 [ false, %422 ], [ %440, %437 ]
  %443 = zext i1 %442 to i32
  %444 = load ptr, ptr %10, align 8, !tbaa !5
  %445 = load ptr, ptr %32, align 8, !tbaa !5
  %446 = load ptr, ptr %32, align 8, !tbaa !5
  %447 = getelementptr inbounds x86_fp80, ptr %446, i64 1
  %448 = call i32 %444(ptr noundef %445, ptr noundef %447)
  %449 = icmp sgt i32 %448, 0
  %450 = zext i1 %449 to i32
  %451 = mul nsw i32 %443, %450
  %452 = trunc i32 %451 to i8
  store i8 %452, ptr %37, align 1, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 1, ptr %38) #2
  %453 = load i8, ptr %14, align 1, !tbaa !13
  %454 = zext i8 %453 to i32
  %455 = icmp ne i32 %454, 0
  br i1 %455, label %456, label %460

456:                                              ; preds = %441
  %457 = load i8, ptr %15, align 1, !tbaa !13
  %458 = zext i8 %457 to i32
  %459 = icmp ne i32 %458, 0
  br label %460

460:                                              ; preds = %456, %441
  %461 = phi i1 [ false, %441 ], [ %459, %456 ]
  %462 = zext i1 %461 to i32
  %463 = load ptr, ptr %10, align 8, !tbaa !5
  %464 = load ptr, ptr %33, align 8, !tbaa !5
  %465 = load ptr, ptr %33, align 8, !tbaa !5
  %466 = getelementptr inbounds x86_fp80, ptr %465, i64 1
  %467 = call i32 %463(ptr noundef %464, ptr noundef %466)
  %468 = icmp sgt i32 %467, 0
  %469 = zext i1 %468 to i32
  %470 = mul nsw i32 %462, %469
  %471 = trunc i32 %470 to i8
  store i8 %471, ptr %38, align 1, !tbaa !13
  %472 = load i8, ptr %36, align 1, !tbaa !13
  %473 = zext i8 %472 to i32
  %474 = load i8, ptr %37, align 1, !tbaa !13
  %475 = zext i8 %474 to i32
  %476 = mul nsw i32 %475, 2
  %477 = or i32 %473, %476
  %478 = load i8, ptr %38, align 1, !tbaa !13
  %479 = zext i8 %478 to i32
  %480 = mul nsw i32 %479, 4
  %481 = or i32 %477, %480
  switch i32 %481, label %509 [
    i32 0, label %509
    i32 1, label %482
    i32 2, label %485
    i32 3, label %489
    i32 4, label %492
    i32 5, label %496
    i32 6, label %502
    i32 7, label %506
  ]

482:                                              ; preds = %460
  %483 = load ptr, ptr %6, align 8, !tbaa !5
  %484 = load ptr, ptr %32, align 8, !tbaa !5
  call void @quad_reversal128(ptr noundef %483, ptr noundef %484)
  store i64 0, ptr %28, align 8, !tbaa !9
  store i64 0, ptr %27, align 8, !tbaa !9
  br label %509

485:                                              ; preds = %460
  %486 = load ptr, ptr %31, align 8, !tbaa !5
  %487 = getelementptr inbounds x86_fp80, ptr %486, i64 1
  %488 = load ptr, ptr %33, align 8, !tbaa !5
  call void @quad_reversal128(ptr noundef %487, ptr noundef %488)
  store i64 0, ptr %29, align 8, !tbaa !9
  store i64 0, ptr %28, align 8, !tbaa !9
  br label %509

489:                                              ; preds = %460
  %490 = load ptr, ptr %6, align 8, !tbaa !5
  %491 = load ptr, ptr %33, align 8, !tbaa !5
  call void @quad_reversal128(ptr noundef %490, ptr noundef %491)
  store i64 0, ptr %29, align 8, !tbaa !9
  store i64 0, ptr %28, align 8, !tbaa !9
  store i64 0, ptr %27, align 8, !tbaa !9
  br label %509

492:                                              ; preds = %460
  %493 = load ptr, ptr %32, align 8, !tbaa !5
  %494 = getelementptr inbounds x86_fp80, ptr %493, i64 1
  %495 = load ptr, ptr %34, align 8, !tbaa !5
  call void @quad_reversal128(ptr noundef %494, ptr noundef %495)
  store i64 0, ptr %30, align 8, !tbaa !9
  store i64 0, ptr %29, align 8, !tbaa !9
  br label %509

496:                                              ; preds = %460
  %497 = load ptr, ptr %6, align 8, !tbaa !5
  %498 = load ptr, ptr %32, align 8, !tbaa !5
  call void @quad_reversal128(ptr noundef %497, ptr noundef %498)
  %499 = load ptr, ptr %32, align 8, !tbaa !5
  %500 = getelementptr inbounds x86_fp80, ptr %499, i64 1
  %501 = load ptr, ptr %34, align 8, !tbaa !5
  call void @quad_reversal128(ptr noundef %500, ptr noundef %501)
  store i64 0, ptr %30, align 8, !tbaa !9
  store i64 0, ptr %29, align 8, !tbaa !9
  store i64 0, ptr %28, align 8, !tbaa !9
  store i64 0, ptr %27, align 8, !tbaa !9
  br label %509

502:                                              ; preds = %460
  %503 = load ptr, ptr %31, align 8, !tbaa !5
  %504 = getelementptr inbounds x86_fp80, ptr %503, i64 1
  %505 = load ptr, ptr %34, align 8, !tbaa !5
  call void @quad_reversal128(ptr noundef %504, ptr noundef %505)
  store i64 0, ptr %30, align 8, !tbaa !9
  store i64 0, ptr %29, align 8, !tbaa !9
  store i64 0, ptr %28, align 8, !tbaa !9
  br label %509

506:                                              ; preds = %460
  %507 = load ptr, ptr %6, align 8, !tbaa !5
  %508 = load ptr, ptr %34, align 8, !tbaa !5
  call void @quad_reversal128(ptr noundef %507, ptr noundef %508)
  store i32 1, ptr %35, align 4
  br label %553

509:                                              ; preds = %502, %496, %492, %489, %485, %482, %460, %460
  %510 = load i8, ptr %12, align 1, !tbaa !13
  %511 = zext i8 %510 to i32
  %512 = icmp ne i32 %511, 0
  br i1 %512, label %513, label %519

513:                                              ; preds = %509
  %514 = load i64, ptr %27, align 8, !tbaa !9
  %515 = icmp ne i64 %514, 0
  br i1 %515, label %516, label %519

516:                                              ; preds = %513
  %517 = load ptr, ptr %6, align 8, !tbaa !5
  %518 = load ptr, ptr %31, align 8, !tbaa !5
  call void @quad_reversal128(ptr noundef %517, ptr noundef %518)
  store i64 0, ptr %27, align 8, !tbaa !9
  br label %519

519:                                              ; preds = %516, %513, %509
  %520 = load i8, ptr %13, align 1, !tbaa !13
  %521 = zext i8 %520 to i32
  %522 = icmp ne i32 %521, 0
  br i1 %522, label %523, label %530

523:                                              ; preds = %519
  %524 = load i64, ptr %28, align 8, !tbaa !9
  %525 = icmp ne i64 %524, 0
  br i1 %525, label %526, label %530

526:                                              ; preds = %523
  %527 = load ptr, ptr %31, align 8, !tbaa !5
  %528 = getelementptr inbounds x86_fp80, ptr %527, i64 1
  %529 = load ptr, ptr %32, align 8, !tbaa !5
  call void @quad_reversal128(ptr noundef %528, ptr noundef %529)
  store i64 0, ptr %28, align 8, !tbaa !9
  br label %530

530:                                              ; preds = %526, %523, %519
  %531 = load i8, ptr %14, align 1, !tbaa !13
  %532 = zext i8 %531 to i32
  %533 = icmp ne i32 %532, 0
  br i1 %533, label %534, label %541

534:                                              ; preds = %530
  %535 = load i64, ptr %29, align 8, !tbaa !9
  %536 = icmp ne i64 %535, 0
  br i1 %536, label %537, label %541

537:                                              ; preds = %534
  %538 = load ptr, ptr %32, align 8, !tbaa !5
  %539 = getelementptr inbounds x86_fp80, ptr %538, i64 1
  %540 = load ptr, ptr %33, align 8, !tbaa !5
  call void @quad_reversal128(ptr noundef %539, ptr noundef %540)
  store i64 0, ptr %29, align 8, !tbaa !9
  br label %541

541:                                              ; preds = %537, %534, %530
  %542 = load i8, ptr %15, align 1, !tbaa !13
  %543 = zext i8 %542 to i32
  %544 = icmp ne i32 %543, 0
  br i1 %544, label %545, label %552

545:                                              ; preds = %541
  %546 = load i64, ptr %30, align 8, !tbaa !9
  %547 = icmp ne i64 %546, 0
  br i1 %547, label %548, label %552

548:                                              ; preds = %545
  %549 = load ptr, ptr %33, align 8, !tbaa !5
  %550 = getelementptr inbounds x86_fp80, ptr %549, i64 1
  %551 = load ptr, ptr %34, align 8, !tbaa !5
  call void @quad_reversal128(ptr noundef %550, ptr noundef %551)
  store i64 0, ptr %30, align 8, !tbaa !9
  br label %552

552:                                              ; preds = %548, %545, %541
  store i32 0, ptr %35, align 4
  br label %553

553:                                              ; preds = %552, %506
  call void @llvm.lifetime.end.p0(i64 1, ptr %38) #2
  call void @llvm.lifetime.end.p0(i64 1, ptr %37) #2
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #2
  %554 = load i32, ptr %35, align 4
  switch i32 %554, label %913 [
    i32 0, label %555
  ]

555:                                              ; preds = %553
  br label %556

556:                                              ; preds = %555, %377
  %557 = load i64, ptr %9, align 8, !tbaa !9
  %558 = udiv i64 %557, 512
  store i64 %558, ptr %26, align 8, !tbaa !9
  %559 = load i32, ptr %16, align 4, !tbaa !11
  %560 = zext i32 %559 to i64
  %561 = load i64, ptr %26, align 8, !tbaa !9
  %562 = icmp ugt i64 %560, %561
  %563 = zext i1 %562 to i32
  %564 = trunc i32 %563 to i8
  store i8 %564, ptr %12, align 1, !tbaa !13
  %565 = load i32, ptr %17, align 4, !tbaa !11
  %566 = zext i32 %565 to i64
  %567 = load i64, ptr %26, align 8, !tbaa !9
  %568 = icmp ugt i64 %566, %567
  %569 = zext i1 %568 to i32
  %570 = trunc i32 %569 to i8
  store i8 %570, ptr %13, align 1, !tbaa !13
  %571 = load i32, ptr %18, align 4, !tbaa !11
  %572 = zext i32 %571 to i64
  %573 = load i64, ptr %26, align 8, !tbaa !9
  %574 = icmp ugt i64 %572, %573
  %575 = zext i1 %574 to i32
  %576 = trunc i32 %575 to i8
  store i8 %576, ptr %14, align 1, !tbaa !13
  %577 = load i32, ptr %19, align 4, !tbaa !11
  %578 = zext i32 %577 to i64
  %579 = load i64, ptr %26, align 8, !tbaa !9
  %580 = icmp ugt i64 %578, %579
  %581 = zext i1 %580 to i32
  %582 = trunc i32 %581 to i8
  store i8 %582, ptr %15, align 1, !tbaa !13
  %583 = load i64, ptr %20, align 8, !tbaa !9
  %584 = icmp ugt i64 %583, 4294967295
  br i1 %584, label %585, label %586

585:                                              ; preds = %556
  store i8 1, ptr %15, align 1, !tbaa !13
  store i8 1, ptr %14, align 1, !tbaa !13
  store i8 1, ptr %13, align 1, !tbaa !13
  store i8 1, ptr %12, align 1, !tbaa !13
  br label %586

586:                                              ; preds = %585, %556
  %587 = load i8, ptr %12, align 1, !tbaa !13
  %588 = zext i8 %587 to i32
  %589 = load i8, ptr %13, align 1, !tbaa !13
  %590 = zext i8 %589 to i32
  %591 = mul nsw i32 %590, 2
  %592 = add nsw i32 %588, %591
  %593 = load i8, ptr %14, align 1, !tbaa !13
  %594 = zext i8 %593 to i32
  %595 = mul nsw i32 %594, 4
  %596 = add nsw i32 %592, %595
  %597 = load i8, ptr %15, align 1, !tbaa !13
  %598 = zext i8 %597 to i32
  %599 = mul nsw i32 %598, 8
  %600 = add nsw i32 %596, %599
  switch i32 %600, label %850 [
    i32 0, label %601
    i32 1, label %607
    i32 2, label %625
    i32 3, label %647
    i32 4, label %673
    i32 8, label %695
    i32 9, label %713
    i32 12, label %741
    i32 5, label %767
    i32 6, label %767
    i32 7, label %767
    i32 10, label %767
    i32 11, label %767
    i32 13, label %767
    i32 14, label %767
    i32 15, label %767
  ]

601:                                              ; preds = %586
  %602 = load ptr, ptr %6, align 8, !tbaa !5
  %603 = load ptr, ptr %7, align 8, !tbaa !5
  %604 = load i64, ptr %8, align 8, !tbaa !9
  %605 = load i64, ptr %9, align 8, !tbaa !9
  %606 = load ptr, ptr %10, align 8, !tbaa !5
  call void @blit_partition128(ptr noundef %602, ptr noundef %603, i64 noundef %604, i64 noundef %605, ptr noundef %606)
  store i32 1, ptr %35, align 4
  br label %913

607:                                              ; preds = %586
  %608 = load i64, ptr %27, align 8, !tbaa !9
  %609 = icmp ne i64 %608, 0
  br i1 %609, label %610, label %616

610:                                              ; preds = %607
  %611 = load ptr, ptr %6, align 8, !tbaa !5
  %612 = load ptr, ptr %7, align 8, !tbaa !5
  %613 = load i64, ptr %8, align 8, !tbaa !9
  %614 = load i64, ptr %20, align 8, !tbaa !9
  %615 = load ptr, ptr %10, align 8, !tbaa !5
  call void @quadsort_swap128(ptr noundef %611, ptr noundef %612, i64 noundef %613, i64 noundef %614, ptr noundef %615)
  br label %616

616:                                              ; preds = %610, %607
  %617 = load ptr, ptr %31, align 8, !tbaa !5
  %618 = getelementptr inbounds x86_fp80, ptr %617, i64 1
  %619 = load ptr, ptr %7, align 8, !tbaa !5
  %620 = load i64, ptr %8, align 8, !tbaa !9
  %621 = load i64, ptr %21, align 8, !tbaa !9
  %622 = load i64, ptr %25, align 8, !tbaa !9
  %623 = add i64 %621, %622
  %624 = load ptr, ptr %10, align 8, !tbaa !5
  call void @blit_partition128(ptr noundef %618, ptr noundef %619, i64 noundef %620, i64 noundef %623, ptr noundef %624)
  br label %850

625:                                              ; preds = %586
  %626 = load ptr, ptr %6, align 8, !tbaa !5
  %627 = load ptr, ptr %7, align 8, !tbaa !5
  %628 = load i64, ptr %8, align 8, !tbaa !9
  %629 = load i64, ptr %20, align 8, !tbaa !9
  %630 = load ptr, ptr %10, align 8, !tbaa !5
  call void @blit_partition128(ptr noundef %626, ptr noundef %627, i64 noundef %628, i64 noundef %629, ptr noundef %630)
  %631 = load i64, ptr %28, align 8, !tbaa !9
  %632 = icmp ne i64 %631, 0
  br i1 %632, label %633, label %640

633:                                              ; preds = %625
  %634 = load ptr, ptr %31, align 8, !tbaa !5
  %635 = getelementptr inbounds x86_fp80, ptr %634, i64 1
  %636 = load ptr, ptr %7, align 8, !tbaa !5
  %637 = load i64, ptr %8, align 8, !tbaa !9
  %638 = load i64, ptr %21, align 8, !tbaa !9
  %639 = load ptr, ptr %10, align 8, !tbaa !5
  call void @quadsort_swap128(ptr noundef %635, ptr noundef %636, i64 noundef %637, i64 noundef %638, ptr noundef %639)
  br label %640

640:                                              ; preds = %633, %625
  %641 = load ptr, ptr %32, align 8, !tbaa !5
  %642 = getelementptr inbounds x86_fp80, ptr %641, i64 1
  %643 = load ptr, ptr %7, align 8, !tbaa !5
  %644 = load i64, ptr %8, align 8, !tbaa !9
  %645 = load i64, ptr %25, align 8, !tbaa !9
  %646 = load ptr, ptr %10, align 8, !tbaa !5
  call void @blit_partition128(ptr noundef %642, ptr noundef %643, i64 noundef %644, i64 noundef %645, ptr noundef %646)
  br label %850

647:                                              ; preds = %586
  %648 = load i64, ptr %27, align 8, !tbaa !9
  %649 = icmp ne i64 %648, 0
  br i1 %649, label %650, label %656

650:                                              ; preds = %647
  %651 = load ptr, ptr %6, align 8, !tbaa !5
  %652 = load ptr, ptr %7, align 8, !tbaa !5
  %653 = load i64, ptr %8, align 8, !tbaa !9
  %654 = load i64, ptr %20, align 8, !tbaa !9
  %655 = load ptr, ptr %10, align 8, !tbaa !5
  call void @quadsort_swap128(ptr noundef %651, ptr noundef %652, i64 noundef %653, i64 noundef %654, ptr noundef %655)
  br label %656

656:                                              ; preds = %650, %647
  %657 = load i64, ptr %28, align 8, !tbaa !9
  %658 = icmp ne i64 %657, 0
  br i1 %658, label %659, label %666

659:                                              ; preds = %656
  %660 = load ptr, ptr %31, align 8, !tbaa !5
  %661 = getelementptr inbounds x86_fp80, ptr %660, i64 1
  %662 = load ptr, ptr %7, align 8, !tbaa !5
  %663 = load i64, ptr %8, align 8, !tbaa !9
  %664 = load i64, ptr %21, align 8, !tbaa !9
  %665 = load ptr, ptr %10, align 8, !tbaa !5
  call void @quadsort_swap128(ptr noundef %661, ptr noundef %662, i64 noundef %663, i64 noundef %664, ptr noundef %665)
  br label %666

666:                                              ; preds = %659, %656
  %667 = load ptr, ptr %32, align 8, !tbaa !5
  %668 = getelementptr inbounds x86_fp80, ptr %667, i64 1
  %669 = load ptr, ptr %7, align 8, !tbaa !5
  %670 = load i64, ptr %8, align 8, !tbaa !9
  %671 = load i64, ptr %25, align 8, !tbaa !9
  %672 = load ptr, ptr %10, align 8, !tbaa !5
  call void @blit_partition128(ptr noundef %668, ptr noundef %669, i64 noundef %670, i64 noundef %671, ptr noundef %672)
  br label %850

673:                                              ; preds = %586
  %674 = load ptr, ptr %6, align 8, !tbaa !5
  %675 = load ptr, ptr %7, align 8, !tbaa !5
  %676 = load i64, ptr %8, align 8, !tbaa !9
  %677 = load i64, ptr %24, align 8, !tbaa !9
  %678 = load ptr, ptr %10, align 8, !tbaa !5
  call void @blit_partition128(ptr noundef %674, ptr noundef %675, i64 noundef %676, i64 noundef %677, ptr noundef %678)
  %679 = load i64, ptr %29, align 8, !tbaa !9
  %680 = icmp ne i64 %679, 0
  br i1 %680, label %681, label %688

681:                                              ; preds = %673
  %682 = load ptr, ptr %32, align 8, !tbaa !5
  %683 = getelementptr inbounds x86_fp80, ptr %682, i64 1
  %684 = load ptr, ptr %7, align 8, !tbaa !5
  %685 = load i64, ptr %8, align 8, !tbaa !9
  %686 = load i64, ptr %22, align 8, !tbaa !9
  %687 = load ptr, ptr %10, align 8, !tbaa !5
  call void @quadsort_swap128(ptr noundef %683, ptr noundef %684, i64 noundef %685, i64 noundef %686, ptr noundef %687)
  br label %688

688:                                              ; preds = %681, %673
  %689 = load ptr, ptr %33, align 8, !tbaa !5
  %690 = getelementptr inbounds x86_fp80, ptr %689, i64 1
  %691 = load ptr, ptr %7, align 8, !tbaa !5
  %692 = load i64, ptr %8, align 8, !tbaa !9
  %693 = load i64, ptr %23, align 8, !tbaa !9
  %694 = load ptr, ptr %10, align 8, !tbaa !5
  call void @blit_partition128(ptr noundef %690, ptr noundef %691, i64 noundef %692, i64 noundef %693, ptr noundef %694)
  br label %850

695:                                              ; preds = %586
  %696 = load ptr, ptr %6, align 8, !tbaa !5
  %697 = load ptr, ptr %7, align 8, !tbaa !5
  %698 = load i64, ptr %8, align 8, !tbaa !9
  %699 = load i64, ptr %24, align 8, !tbaa !9
  %700 = load i64, ptr %22, align 8, !tbaa !9
  %701 = add i64 %699, %700
  %702 = load ptr, ptr %10, align 8, !tbaa !5
  call void @blit_partition128(ptr noundef %696, ptr noundef %697, i64 noundef %698, i64 noundef %701, ptr noundef %702)
  %703 = load i64, ptr %30, align 8, !tbaa !9
  %704 = icmp ne i64 %703, 0
  br i1 %704, label %705, label %712

705:                                              ; preds = %695
  %706 = load ptr, ptr %33, align 8, !tbaa !5
  %707 = getelementptr inbounds x86_fp80, ptr %706, i64 1
  %708 = load ptr, ptr %7, align 8, !tbaa !5
  %709 = load i64, ptr %8, align 8, !tbaa !9
  %710 = load i64, ptr %23, align 8, !tbaa !9
  %711 = load ptr, ptr %10, align 8, !tbaa !5
  call void @quadsort_swap128(ptr noundef %707, ptr noundef %708, i64 noundef %709, i64 noundef %710, ptr noundef %711)
  br label %712

712:                                              ; preds = %705, %695
  br label %850

713:                                              ; preds = %586
  %714 = load i64, ptr %27, align 8, !tbaa !9
  %715 = icmp ne i64 %714, 0
  br i1 %715, label %716, label %722

716:                                              ; preds = %713
  %717 = load ptr, ptr %6, align 8, !tbaa !5
  %718 = load ptr, ptr %7, align 8, !tbaa !5
  %719 = load i64, ptr %8, align 8, !tbaa !9
  %720 = load i64, ptr %20, align 8, !tbaa !9
  %721 = load ptr, ptr %10, align 8, !tbaa !5
  call void @quadsort_swap128(ptr noundef %717, ptr noundef %718, i64 noundef %719, i64 noundef %720, ptr noundef %721)
  br label %722

722:                                              ; preds = %716, %713
  %723 = load ptr, ptr %31, align 8, !tbaa !5
  %724 = getelementptr inbounds x86_fp80, ptr %723, i64 1
  %725 = load ptr, ptr %7, align 8, !tbaa !5
  %726 = load i64, ptr %8, align 8, !tbaa !9
  %727 = load i64, ptr %21, align 8, !tbaa !9
  %728 = load i64, ptr %22, align 8, !tbaa !9
  %729 = add i64 %727, %728
  %730 = load ptr, ptr %10, align 8, !tbaa !5
  call void @blit_partition128(ptr noundef %724, ptr noundef %725, i64 noundef %726, i64 noundef %729, ptr noundef %730)
  %731 = load i64, ptr %30, align 8, !tbaa !9
  %732 = icmp ne i64 %731, 0
  br i1 %732, label %733, label %740

733:                                              ; preds = %722
  %734 = load ptr, ptr %33, align 8, !tbaa !5
  %735 = getelementptr inbounds x86_fp80, ptr %734, i64 1
  %736 = load ptr, ptr %7, align 8, !tbaa !5
  %737 = load i64, ptr %8, align 8, !tbaa !9
  %738 = load i64, ptr %23, align 8, !tbaa !9
  %739 = load ptr, ptr %10, align 8, !tbaa !5
  call void @quadsort_swap128(ptr noundef %735, ptr noundef %736, i64 noundef %737, i64 noundef %738, ptr noundef %739)
  br label %740

740:                                              ; preds = %733, %722
  br label %850

741:                                              ; preds = %586
  %742 = load ptr, ptr %6, align 8, !tbaa !5
  %743 = load ptr, ptr %7, align 8, !tbaa !5
  %744 = load i64, ptr %8, align 8, !tbaa !9
  %745 = load i64, ptr %24, align 8, !tbaa !9
  %746 = load ptr, ptr %10, align 8, !tbaa !5
  call void @blit_partition128(ptr noundef %742, ptr noundef %743, i64 noundef %744, i64 noundef %745, ptr noundef %746)
  %747 = load i64, ptr %29, align 8, !tbaa !9
  %748 = icmp ne i64 %747, 0
  br i1 %748, label %749, label %756

749:                                              ; preds = %741
  %750 = load ptr, ptr %32, align 8, !tbaa !5
  %751 = getelementptr inbounds x86_fp80, ptr %750, i64 1
  %752 = load ptr, ptr %7, align 8, !tbaa !5
  %753 = load i64, ptr %8, align 8, !tbaa !9
  %754 = load i64, ptr %22, align 8, !tbaa !9
  %755 = load ptr, ptr %10, align 8, !tbaa !5
  call void @quadsort_swap128(ptr noundef %751, ptr noundef %752, i64 noundef %753, i64 noundef %754, ptr noundef %755)
  br label %756

756:                                              ; preds = %749, %741
  %757 = load i64, ptr %30, align 8, !tbaa !9
  %758 = icmp ne i64 %757, 0
  br i1 %758, label %759, label %766

759:                                              ; preds = %756
  %760 = load ptr, ptr %33, align 8, !tbaa !5
  %761 = getelementptr inbounds x86_fp80, ptr %760, i64 1
  %762 = load ptr, ptr %7, align 8, !tbaa !5
  %763 = load i64, ptr %8, align 8, !tbaa !9
  %764 = load i64, ptr %23, align 8, !tbaa !9
  %765 = load ptr, ptr %10, align 8, !tbaa !5
  call void @quadsort_swap128(ptr noundef %761, ptr noundef %762, i64 noundef %763, i64 noundef %764, ptr noundef %765)
  br label %766

766:                                              ; preds = %759, %756
  br label %850

767:                                              ; preds = %586, %586, %586, %586, %586, %586, %586, %586
  %768 = load i8, ptr %12, align 1, !tbaa !13
  %769 = icmp ne i8 %768, 0
  br i1 %769, label %770, label %780

770:                                              ; preds = %767
  %771 = load i64, ptr %27, align 8, !tbaa !9
  %772 = icmp ne i64 %771, 0
  br i1 %772, label %773, label %779

773:                                              ; preds = %770
  %774 = load ptr, ptr %6, align 8, !tbaa !5
  %775 = load ptr, ptr %7, align 8, !tbaa !5
  %776 = load i64, ptr %8, align 8, !tbaa !9
  %777 = load i64, ptr %20, align 8, !tbaa !9
  %778 = load ptr, ptr %10, align 8, !tbaa !5
  call void @quadsort_swap128(ptr noundef %774, ptr noundef %775, i64 noundef %776, i64 noundef %777, ptr noundef %778)
  br label %779

779:                                              ; preds = %773, %770
  br label %786

780:                                              ; preds = %767
  %781 = load ptr, ptr %6, align 8, !tbaa !5
  %782 = load ptr, ptr %7, align 8, !tbaa !5
  %783 = load i64, ptr %8, align 8, !tbaa !9
  %784 = load i64, ptr %20, align 8, !tbaa !9
  %785 = load ptr, ptr %10, align 8, !tbaa !5
  call void @blit_partition128(ptr noundef %781, ptr noundef %782, i64 noundef %783, i64 noundef %784, ptr noundef %785)
  br label %786

786:                                              ; preds = %780, %779
  %787 = load i8, ptr %13, align 1, !tbaa !13
  %788 = icmp ne i8 %787, 0
  br i1 %788, label %789, label %800

789:                                              ; preds = %786
  %790 = load i64, ptr %28, align 8, !tbaa !9
  %791 = icmp ne i64 %790, 0
  br i1 %791, label %792, label %799

792:                                              ; preds = %789
  %793 = load ptr, ptr %31, align 8, !tbaa !5
  %794 = getelementptr inbounds x86_fp80, ptr %793, i64 1
  %795 = load ptr, ptr %7, align 8, !tbaa !5
  %796 = load i64, ptr %8, align 8, !tbaa !9
  %797 = load i64, ptr %21, align 8, !tbaa !9
  %798 = load ptr, ptr %10, align 8, !tbaa !5
  call void @quadsort_swap128(ptr noundef %794, ptr noundef %795, i64 noundef %796, i64 noundef %797, ptr noundef %798)
  br label %799

799:                                              ; preds = %792, %789
  br label %807

800:                                              ; preds = %786
  %801 = load ptr, ptr %31, align 8, !tbaa !5
  %802 = getelementptr inbounds x86_fp80, ptr %801, i64 1
  %803 = load ptr, ptr %7, align 8, !tbaa !5
  %804 = load i64, ptr %8, align 8, !tbaa !9
  %805 = load i64, ptr %21, align 8, !tbaa !9
  %806 = load ptr, ptr %10, align 8, !tbaa !5
  call void @blit_partition128(ptr noundef %802, ptr noundef %803, i64 noundef %804, i64 noundef %805, ptr noundef %806)
  br label %807

807:                                              ; preds = %800, %799
  %808 = load i8, ptr %14, align 1, !tbaa !13
  %809 = icmp ne i8 %808, 0
  br i1 %809, label %810, label %821

810:                                              ; preds = %807
  %811 = load i64, ptr %29, align 8, !tbaa !9
  %812 = icmp ne i64 %811, 0
  br i1 %812, label %813, label %820

813:                                              ; preds = %810
  %814 = load ptr, ptr %32, align 8, !tbaa !5
  %815 = getelementptr inbounds x86_fp80, ptr %814, i64 1
  %816 = load ptr, ptr %7, align 8, !tbaa !5
  %817 = load i64, ptr %8, align 8, !tbaa !9
  %818 = load i64, ptr %22, align 8, !tbaa !9
  %819 = load ptr, ptr %10, align 8, !tbaa !5
  call void @quadsort_swap128(ptr noundef %815, ptr noundef %816, i64 noundef %817, i64 noundef %818, ptr noundef %819)
  br label %820

820:                                              ; preds = %813, %810
  br label %828

821:                                              ; preds = %807
  %822 = load ptr, ptr %32, align 8, !tbaa !5
  %823 = getelementptr inbounds x86_fp80, ptr %822, i64 1
  %824 = load ptr, ptr %7, align 8, !tbaa !5
  %825 = load i64, ptr %8, align 8, !tbaa !9
  %826 = load i64, ptr %22, align 8, !tbaa !9
  %827 = load ptr, ptr %10, align 8, !tbaa !5
  call void @blit_partition128(ptr noundef %823, ptr noundef %824, i64 noundef %825, i64 noundef %826, ptr noundef %827)
  br label %828

828:                                              ; preds = %821, %820
  %829 = load i8, ptr %15, align 1, !tbaa !13
  %830 = icmp ne i8 %829, 0
  br i1 %830, label %831, label %842

831:                                              ; preds = %828
  %832 = load i64, ptr %30, align 8, !tbaa !9
  %833 = icmp ne i64 %832, 0
  br i1 %833, label %834, label %841

834:                                              ; preds = %831
  %835 = load ptr, ptr %33, align 8, !tbaa !5
  %836 = getelementptr inbounds x86_fp80, ptr %835, i64 1
  %837 = load ptr, ptr %7, align 8, !tbaa !5
  %838 = load i64, ptr %8, align 8, !tbaa !9
  %839 = load i64, ptr %23, align 8, !tbaa !9
  %840 = load ptr, ptr %10, align 8, !tbaa !5
  call void @quadsort_swap128(ptr noundef %836, ptr noundef %837, i64 noundef %838, i64 noundef %839, ptr noundef %840)
  br label %841

841:                                              ; preds = %834, %831
  br label %849

842:                                              ; preds = %828
  %843 = load ptr, ptr %33, align 8, !tbaa !5
  %844 = getelementptr inbounds x86_fp80, ptr %843, i64 1
  %845 = load ptr, ptr %7, align 8, !tbaa !5
  %846 = load i64, ptr %8, align 8, !tbaa !9
  %847 = load i64, ptr %23, align 8, !tbaa !9
  %848 = load ptr, ptr %10, align 8, !tbaa !5
  call void @blit_partition128(ptr noundef %844, ptr noundef %845, i64 noundef %846, i64 noundef %847, ptr noundef %848)
  br label %849

849:                                              ; preds = %842, %841
  br label %850

850:                                              ; preds = %849, %766, %740, %712, %688, %666, %640, %616, %586
  %851 = load ptr, ptr %10, align 8, !tbaa !5
  %852 = load ptr, ptr %31, align 8, !tbaa !5
  %853 = load ptr, ptr %31, align 8, !tbaa !5
  %854 = getelementptr inbounds x86_fp80, ptr %853, i64 1
  %855 = call i32 %851(ptr noundef %852, ptr noundef %854)
  %856 = icmp sle i32 %855, 0
  br i1 %856, label %857, label %883

857:                                              ; preds = %850
  %858 = load ptr, ptr %10, align 8, !tbaa !5
  %859 = load ptr, ptr %33, align 8, !tbaa !5
  %860 = load ptr, ptr %33, align 8, !tbaa !5
  %861 = getelementptr inbounds x86_fp80, ptr %860, i64 1
  %862 = call i32 %858(ptr noundef %859, ptr noundef %861)
  %863 = icmp sle i32 %862, 0
  br i1 %863, label %864, label %873

864:                                              ; preds = %857
  %865 = load ptr, ptr %10, align 8, !tbaa !5
  %866 = load ptr, ptr %32, align 8, !tbaa !5
  %867 = load ptr, ptr %32, align 8, !tbaa !5
  %868 = getelementptr inbounds x86_fp80, ptr %867, i64 1
  %869 = call i32 %865(ptr noundef %866, ptr noundef %868)
  %870 = icmp sle i32 %869, 0
  br i1 %870, label %871, label %872

871:                                              ; preds = %864
  store i32 1, ptr %35, align 4
  br label %913

872:                                              ; preds = %864
  br label %882

873:                                              ; preds = %857
  %874 = load ptr, ptr %6, align 8, !tbaa !5
  %875 = load i64, ptr %24, align 8, !tbaa !9
  %876 = getelementptr inbounds x86_fp80, ptr %874, i64 %875
  %877 = load ptr, ptr %7, align 8, !tbaa !5
  %878 = load i64, ptr %8, align 8, !tbaa !9
  %879 = load i64, ptr %22, align 8, !tbaa !9
  %880 = load i64, ptr %23, align 8, !tbaa !9
  %881 = load ptr, ptr %10, align 8, !tbaa !5
  call void @rotate_merge_block128(ptr noundef %876, ptr noundef %877, i64 noundef %878, i64 noundef %879, i64 noundef %880, ptr noundef %881)
  br label %882

882:                                              ; preds = %873, %872
  br label %906

883:                                              ; preds = %850
  %884 = load ptr, ptr %6, align 8, !tbaa !5
  %885 = load ptr, ptr %7, align 8, !tbaa !5
  %886 = load i64, ptr %8, align 8, !tbaa !9
  %887 = load i64, ptr %20, align 8, !tbaa !9
  %888 = load i64, ptr %21, align 8, !tbaa !9
  %889 = load ptr, ptr %10, align 8, !tbaa !5
  call void @rotate_merge_block128(ptr noundef %884, ptr noundef %885, i64 noundef %886, i64 noundef %887, i64 noundef %888, ptr noundef %889)
  %890 = load ptr, ptr %10, align 8, !tbaa !5
  %891 = load ptr, ptr %33, align 8, !tbaa !5
  %892 = load ptr, ptr %33, align 8, !tbaa !5
  %893 = getelementptr inbounds x86_fp80, ptr %892, i64 1
  %894 = call i32 %890(ptr noundef %891, ptr noundef %893)
  %895 = icmp sgt i32 %894, 0
  br i1 %895, label %896, label %905

896:                                              ; preds = %883
  %897 = load ptr, ptr %6, align 8, !tbaa !5
  %898 = load i64, ptr %24, align 8, !tbaa !9
  %899 = getelementptr inbounds x86_fp80, ptr %897, i64 %898
  %900 = load ptr, ptr %7, align 8, !tbaa !5
  %901 = load i64, ptr %8, align 8, !tbaa !9
  %902 = load i64, ptr %22, align 8, !tbaa !9
  %903 = load i64, ptr %23, align 8, !tbaa !9
  %904 = load ptr, ptr %10, align 8, !tbaa !5
  call void @rotate_merge_block128(ptr noundef %899, ptr noundef %900, i64 noundef %901, i64 noundef %902, i64 noundef %903, ptr noundef %904)
  br label %905

905:                                              ; preds = %896, %883
  br label %906

906:                                              ; preds = %905, %882
  %907 = load ptr, ptr %6, align 8, !tbaa !5
  %908 = load ptr, ptr %7, align 8, !tbaa !5
  %909 = load i64, ptr %8, align 8, !tbaa !9
  %910 = load i64, ptr %24, align 8, !tbaa !9
  %911 = load i64, ptr %25, align 8, !tbaa !9
  %912 = load ptr, ptr %10, align 8, !tbaa !5
  call void @rotate_merge_block128(ptr noundef %907, ptr noundef %908, i64 noundef %909, i64 noundef %910, i64 noundef %911, ptr noundef %912)
  store i32 0, ptr %35, align 4
  br label %913

913:                                              ; preds = %906, %871, %601, %553, %375
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #2
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #2
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #2
  call void @llvm.lifetime.end.p0(i64 1, ptr %15) #2
  call void @llvm.lifetime.end.p0(i64 1, ptr %14) #2
  call void @llvm.lifetime.end.p0(i64 1, ptr %13) #2
  call void @llvm.lifetime.end.p0(i64 1, ptr %12) #2
  call void @llvm.lifetime.end.p0(i64 1, ptr %11) #2
  %914 = load i32, ptr %35, align 4
  switch i32 %914, label %916 [
    i32 0, label %915
    i32 1, label %915
  ]

915:                                              ; preds = %913, %913
  ret void

916:                                              ; preds = %913
  unreachable
}

; Function Attrs: nounwind uwtable
declare dso_local void @blit_partition128(ptr noundef, ptr noundef, i64 noundef, i64 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 }

!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 = !{!"long", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"int", !7, i64 0}
!13 = !{!7, !7, i64 0}
!14 = distinct !{!14, !15}
!15 = !{!"llvm.loop.mustprogress"}
!16 = distinct !{!16, !15}
!17 = distinct !{!17, !15}


; 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
declare dso_local void @quad_reversal128(ptr noundef, ptr noundef) local_unnamed_addr #0

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

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

; Function Attrs: nounwind uwtable
define dso_local void @blit_analyze128(ptr noundef %0, ptr noundef %1, i64 noundef %2, i64 noundef %3, ptr noundef %4) local_unnamed_addr #0 {
  %6 = lshr i64 %3, 1
  %7 = lshr i64 %3, 2
  %8 = sub nsw i64 %6, %7
  %9 = sub i64 %3, %6
  %10 = lshr i64 %9, 1
  %11 = sub i64 %9, %10
  %12 = getelementptr inbounds x86_fp80, ptr %0, i64 %7
  %13 = getelementptr inbounds x86_fp80, ptr %0, i64 %6
  %14 = getelementptr inbounds x86_fp80, ptr %13, i64 %10
  %15 = icmp ugt i64 %3, 132
  br i1 %15, label %.preheader531, label %.preheader

.preheader531:                                    ; preds = %5, %80
  %.0419553 = phi ptr [ %.2, %80 ], [ %14, %5 ]
  %.0421552 = phi ptr [ %.2423, %80 ], [ %13, %5 ]
  %.0426551 = phi ptr [ %.2428, %80 ], [ %12, %5 ]
  %.0431550 = phi ptr [ %.2433, %80 ], [ %0, %5 ]
  %.0435549 = phi i64 [ %.1436, %80 ], [ 0, %5 ]
  %.0440548 = phi i64 [ %.1441, %80 ], [ 0, %5 ]
  %.0448547 = phi i64 [ %.1449, %80 ], [ 0, %5 ]
  %.0456546 = phi i64 [ %.1457, %80 ], [ 0, %5 ]
  %.0463545 = phi i64 [ %81, %80 ], [ %3, %5 ]
  %.0470544 = phi i32 [ %45, %80 ], [ 0, %5 ]
  %.0471543 = phi i32 [ %51, %80 ], [ 0, %5 ]
  %.0472542 = phi i32 [ %57, %80 ], [ 0, %5 ]
  %.0473541 = phi i32 [ %63, %80 ], [ 0, %5 ]
  br label %17

.preheader:                                       ; preds = %80, %5
  %.0473.lcssa = phi i32 [ 0, %5 ], [ %63, %80 ]
  %.0472.lcssa = phi i32 [ 0, %5 ], [ %57, %80 ]
  %.0471.lcssa = phi i32 [ 0, %5 ], [ %51, %80 ]
  %.0470.lcssa = phi i32 [ 0, %5 ], [ %45, %80 ]
  %.0463.lcssa = phi i64 [ %3, %5 ], [ %81, %80 ]
  %.0456.lcssa = phi i64 [ 0, %5 ], [ %.1457, %80 ]
  %.0448.lcssa = phi i64 [ 0, %5 ], [ %.1449, %80 ]
  %.0440.lcssa = phi i64 [ 0, %5 ], [ %.1441, %80 ]
  %.0435.lcssa = phi i64 [ 0, %5 ], [ %.1436, %80 ]
  %.0431.lcssa = phi ptr [ %0, %5 ], [ %.2433, %80 ]
  %.0426.lcssa = phi ptr [ %12, %5 ], [ %.2428, %80 ]
  %.0421.lcssa = phi ptr [ %13, %5 ], [ %.2423, %80 ]
  %.0419.lcssa = phi ptr [ %14, %5 ], [ %.2, %80 ]
  %16 = icmp ugt i64 %.0463.lcssa, 7
  br i1 %16, label %.lr.ph, label %._crit_edge

17:                                               ; preds = %.preheader531, %17
  %.0540 = phi i8 [ 32, %.preheader531 ], [ %38, %17 ]
  %.0415539 = phi i8 [ 0, %.preheader531 ], [ %22, %17 ]
  %.0416538 = phi i8 [ 0, %.preheader531 ], [ %27, %17 ]
  %.1420537 = phi ptr [ %.0419553, %.preheader531 ], [ %33, %17 ]
  %.1422536 = phi ptr [ %.0421552, %.preheader531 ], [ %28, %17 ]
  %.1427535 = phi ptr [ %.0426551, %.preheader531 ], [ %23, %17 ]
  %.1432534 = phi ptr [ %.0431550, %.preheader531 ], [ %18, %17 ]
  %.0466533 = phi i8 [ 0, %.preheader531 ], [ %32, %17 ]
  %.0468532 = phi i8 [ 0, %.preheader531 ], [ %37, %17 ]
  %18 = getelementptr inbounds i8, ptr %.1432534, i64 16
  %19 = tail call i32 %4(ptr noundef %.1432534, ptr noundef nonnull %18) #1
  %20 = icmp sgt i32 %19, 0
  %21 = zext i1 %20 to i8
  %22 = add i8 %.0415539, %21
  %23 = getelementptr inbounds i8, ptr %.1427535, i64 16
  %24 = tail call i32 %4(ptr noundef %.1427535, ptr noundef nonnull %23) #1
  %25 = icmp sgt i32 %24, 0
  %26 = zext i1 %25 to i8
  %27 = add i8 %.0416538, %26
  %28 = getelementptr inbounds i8, ptr %.1422536, i64 16
  %29 = tail call i32 %4(ptr noundef %.1422536, ptr noundef nonnull %28) #1
  %30 = icmp sgt i32 %29, 0
  %31 = zext i1 %30 to i8
  %32 = add i8 %.0466533, %31
  %33 = getelementptr inbounds i8, ptr %.1420537, i64 16
  %34 = tail call i32 %4(ptr noundef %.1420537, ptr noundef nonnull %33) #1
  %35 = icmp sgt i32 %34, 0
  %36 = zext i1 %35 to i8
  %37 = add i8 %.0468532, %36
  %38 = add nsw i8 %.0540, -1
  %.not493 = icmp eq i8 %38, 0
  br i1 %.not493, label %39, label %17, !llvm.loop !5

39:                                               ; preds = %17
  %40 = zext i8 %22 to i64
  %41 = add i64 %.0456546, %40
  %42 = and i8 %22, -33
  %43 = icmp eq i8 %42, 0
  %44 = zext i1 %43 to i32
  %45 = add i32 %.0470544, %44
  %46 = zext i8 %27 to i64
  %47 = add i64 %.0448547, %46
  %48 = and i8 %27, -33
  %49 = icmp eq i8 %48, 0
  %50 = zext i1 %49 to i32
  %51 = add i32 %.0471543, %50
  %52 = zext i8 %32 to i64
  %53 = add i64 %.0440548, %52
  %54 = and i8 %32, -33
  %55 = icmp eq i8 %54, 0
  %56 = zext i1 %55 to i32
  %57 = add i32 %.0472542, %56
  %58 = zext i8 %37 to i64
  %59 = add i64 %.0435549, %58
  %60 = and i8 %37, -33
  %61 = icmp eq i8 %60, 0
  %62 = zext i1 %61 to i32
  %63 = add i32 %.0473541, %62
  %64 = icmp ugt i64 %.0463545, 516
  br i1 %64, label %65, label %80

65:                                               ; preds = %39
  %66 = add nuw nsw i32 %50, %56
  %67 = add nuw nsw i32 %66, %44
  %68 = or i32 %67, %62
  %69 = icmp eq i32 %68, 0
  br i1 %69, label %70, label %80

70:                                               ; preds = %65
  %71 = add i64 %41, 48
  %72 = getelementptr inbounds i8, ptr %.1432534, i64 1552
  %73 = add i64 %47, 48
  %74 = getelementptr inbounds i8, ptr %.1427535, i64 1552
  %75 = add i64 %53, 48
  %76 = getelementptr inbounds i8, ptr %.1422536, i64 1552
  %77 = add i64 %59, 48
  %78 = getelementptr inbounds i8, ptr %.1420537, i64 1552
  %79 = add i64 %.0463545, -384
  br label %80

80:                                               ; preds = %39, %65, %70
  %.1464 = phi i64 [ %79, %70 ], [ %.0463545, %65 ], [ %.0463545, %39 ]
  %.1457 = phi i64 [ %71, %70 ], [ %41, %65 ], [ %41, %39 ]
  %.1449 = phi i64 [ %73, %70 ], [ %47, %65 ], [ %47, %39 ]
  %.1441 = phi i64 [ %75, %70 ], [ %53, %65 ], [ %53, %39 ]
  %.1436 = phi i64 [ %77, %70 ], [ %59, %65 ], [ %59, %39 ]
  %.2433 = phi ptr [ %72, %70 ], [ %18, %65 ], [ %18, %39 ]
  %.2428 = phi ptr [ %74, %70 ], [ %23, %65 ], [ %23, %39 ]
  %.2423 = phi ptr [ %76, %70 ], [ %28, %65 ], [ %28, %39 ]
  %.2 = phi ptr [ %78, %70 ], [ %33, %65 ], [ %33, %39 ]
  %81 = add i64 %.1464, -128
  %82 = icmp ugt i64 %81, 132
  br i1 %82, label %.preheader531, label %.preheader, !llvm.loop !7

.lr.ph:                                           ; preds = %.preheader, %.lr.ph
  %.3574 = phi ptr [ %98, %.lr.ph ], [ %.0419.lcssa, %.preheader ]
  %.3424573 = phi ptr [ %93, %.lr.ph ], [ %.0421.lcssa, %.preheader ]
  %.3429572 = phi ptr [ %88, %.lr.ph ], [ %.0426.lcssa, %.preheader ]
  %.3434571 = phi ptr [ %83, %.lr.ph ], [ %.0431.lcssa, %.preheader ]
  %.2437570 = phi i64 [ %102, %.lr.ph ], [ %.0435.lcssa, %.preheader ]
  %.2442569 = phi i64 [ %97, %.lr.ph ], [ %.0440.lcssa, %.preheader ]
  %.2450568 = phi i64 [ %92, %.lr.ph ], [ %.0448.lcssa, %.preheader ]
  %.2458567 = phi i64 [ %87, %.lr.ph ], [ %.0456.lcssa, %.preheader ]
  %.2465566 = phi i64 [ %103, %.lr.ph ], [ %.0463.lcssa, %.preheader ]
  %83 = getelementptr inbounds i8, ptr %.3434571, i64 16
  %84 = tail call i32 %4(ptr noundef %.3434571, ptr noundef nonnull %83) #1
  %85 = icmp sgt i32 %84, 0
  %86 = zext i1 %85 to i64
  %87 = add i64 %.2458567, %86
  %88 = getelementptr inbounds i8, ptr %.3429572, i64 16
  %89 = tail call i32 %4(ptr noundef %.3429572, ptr noundef nonnull %88) #1
  %90 = icmp sgt i32 %89, 0
  %91 = zext i1 %90 to i64
  %92 = add i64 %.2450568, %91
  %93 = getelementptr inbounds i8, ptr %.3424573, i64 16
  %94 = tail call i32 %4(ptr noundef %.3424573, ptr noundef nonnull %93) #1
  %95 = icmp sgt i32 %94, 0
  %96 = zext i1 %95 to i64
  %97 = add i64 %.2442569, %96
  %98 = getelementptr inbounds i8, ptr %.3574, i64 16
  %99 = tail call i32 %4(ptr noundef %.3574, ptr noundef nonnull %98) #1
  %100 = icmp sgt i32 %99, 0
  %101 = zext i1 %100 to i64
  %102 = add i64 %.2437570, %101
  %103 = add nsw i64 %.2465566, -4
  %104 = icmp ugt i64 %103, 7
  br i1 %104, label %.lr.ph, label %._crit_edge, !llvm.loop !8

._crit_edge:                                      ; preds = %.lr.ph, %.preheader
  %.2458.lcssa = phi i64 [ %.0456.lcssa, %.preheader ], [ %87, %.lr.ph ]
  %.2450.lcssa = phi i64 [ %.0448.lcssa, %.preheader ], [ %92, %.lr.ph ]
  %.2442.lcssa = phi i64 [ %.0440.lcssa, %.preheader ], [ %97, %.lr.ph ]
  %.2437.lcssa = phi i64 [ %.0435.lcssa, %.preheader ], [ %102, %.lr.ph ]
  %.3434.lcssa = phi ptr [ %.0431.lcssa, %.preheader ], [ %83, %.lr.ph ]
  %.3429.lcssa = phi ptr [ %.0426.lcssa, %.preheader ], [ %88, %.lr.ph ]
  %.3424.lcssa = phi ptr [ %.0421.lcssa, %.preheader ], [ %93, %.lr.ph ]
  %.3.lcssa = phi ptr [ %.0419.lcssa, %.preheader ], [ %98, %.lr.ph ]
  %105 = icmp ult i64 %7, %8
  br i1 %105, label %106, label %112

106:                                              ; preds = %._crit_edge
  %107 = getelementptr inbounds i8, ptr %.3429.lcssa, i64 16
  %108 = tail call i32 %4(ptr noundef %.3429.lcssa, ptr noundef nonnull %107) #1
  %109 = icmp sgt i32 %108, 0
  %110 = zext i1 %109 to i64
  %111 = add i64 %.2450.lcssa, %110
  br label %112

112:                                              ; preds = %106, %._crit_edge
  %.3451 = phi i64 [ %111, %106 ], [ %.2450.lcssa, %._crit_edge ]
  %.4430 = phi ptr [ %107, %106 ], [ %.3429.lcssa, %._crit_edge ]
  %113 = icmp ult i64 %7, %10
  br i1 %113, label %114, label %120

114:                                              ; preds = %112
  %115 = getelementptr inbounds i8, ptr %.3424.lcssa, i64 16
  %116 = tail call i32 %4(ptr noundef %.3424.lcssa, ptr noundef nonnull %115) #1
  %117 = icmp sgt i32 %116, 0
  %118 = zext i1 %117 to i64
  %119 = add i64 %.2442.lcssa, %118
  br label %120

120:                                              ; preds = %114, %112
  %.3443 = phi i64 [ %119, %114 ], [ %.2442.lcssa, %112 ]
  %.4425 = phi ptr [ %115, %114 ], [ %.3424.lcssa, %112 ]
  %121 = icmp ult i64 %7, %11
  br i1 %121, label %122, label %128

122:                                              ; preds = %120
  %123 = getelementptr inbounds i8, ptr %.3.lcssa, i64 16
  %124 = tail call i32 %4(ptr noundef %.3.lcssa, ptr noundef nonnull %123) #1
  %125 = icmp sgt i32 %124, 0
  %126 = zext i1 %125 to i64
  %127 = add i64 %.2437.lcssa, %126
  br label %128

128:                                              ; preds = %122, %120
  %.3438 = phi i64 [ %127, %122 ], [ %.2437.lcssa, %120 ]
  %.4 = phi ptr [ %123, %122 ], [ %.3.lcssa, %120 ]
  %129 = add i64 %.3451, %.2458.lcssa
  %130 = add i64 %129, %.3443
  %131 = sub i64 0, %.3438
  %132 = icmp eq i64 %130, %131
  br i1 %132, label %133, label %145

133:                                              ; preds = %128
  %134 = getelementptr inbounds i8, ptr %.3434.lcssa, i64 16
  %135 = tail call i32 %4(ptr noundef %.3434.lcssa, ptr noundef nonnull %134) #1
  %136 = icmp slt i32 %135, 1
  br i1 %136, label %137, label %145

137:                                              ; preds = %133
  %138 = getelementptr inbounds i8, ptr %.4430, i64 16
  %139 = tail call i32 %4(ptr noundef %.4430, ptr noundef nonnull %138) #1
  %140 = icmp slt i32 %139, 1
  br i1 %140, label %141, label %145

141:                                              ; preds = %137
  %142 = getelementptr inbounds i8, ptr %.4425, i64 16
  %143 = tail call i32 %4(ptr noundef %.4425, ptr noundef nonnull %142) #1
  %144 = icmp slt i32 %143, 1
  br i1 %144, label %291, label %145

145:                                              ; preds = %133, %137, %141, %128
  %146 = sub i64 %7, %.2458.lcssa
  %147 = icmp eq i64 %146, 1
  %148 = sub i64 %8, %.3451
  %149 = icmp eq i64 %148, 1
  %150 = sub i64 %10, %.3443
  %151 = icmp eq i64 %150, 1
  %152 = sub i64 %11, %.3438
  %153 = icmp eq i64 %152, 1
  %154 = or i1 %147, %149
  %155 = or i1 %154, %151
  %156 = or i1 %155, %153
  br i1 %156, label %157, label %.thread512

157:                                              ; preds = %145
  %158 = getelementptr inbounds i8, ptr %.3434.lcssa, i64 16
  %159 = tail call i32 %4(ptr noundef %.3434.lcssa, ptr noundef nonnull %158) #1
  %160 = icmp sgt i32 %159, 0
  %161 = and i1 %149, %160
  %mulbool = and i1 %147, %161
  %162 = getelementptr inbounds i8, ptr %.4430, i64 16
  %163 = tail call i32 %4(ptr noundef %.4430, ptr noundef nonnull %162) #1
  %164 = icmp sgt i32 %163, 0
  %165 = and i1 %151, %164
  %mulbool474 = and i1 %149, %165
  %166 = getelementptr inbounds i8, ptr %.4425, i64 16
  %167 = tail call i32 %4(ptr noundef %.4425, ptr noundef nonnull %166) #1
  %168 = icmp sgt i32 %167, 0
  %169 = and i1 %153, %168
  %mulbool475 = and i1 %151, %169
  %170 = zext i1 %mulbool to i32
  %171 = select i1 %mulbool474, i32 2, i32 0
  %172 = or disjoint i32 %171, %170
  %173 = select i1 %mulbool475, i32 4, i32 0
  %174 = or disjoint i32 %172, %173
  switch i32 %174, label %default.unreachable603 [
    i32 7, label %189
    i32 1, label %175
    i32 2, label %176
    i32 3, label %177
    i32 4, label %178
    i32 5, label %.thread502.thread.thread
    i32 6, label %179
    i32 0, label %180
  ]

175:                                              ; preds = %157
  tail call void @quad_reversal128(ptr noundef %0, ptr noundef %.4430)
  br label %.thread502

176:                                              ; preds = %157
  tail call void @quad_reversal128(ptr noundef nonnull %158, ptr noundef %.4425)
  br label %180

177:                                              ; preds = %157
  tail call void @quad_reversal128(ptr noundef %0, ptr noundef %.4425)
  br label %.thread502.thread

178:                                              ; preds = %157
  tail call void @quad_reversal128(ptr noundef nonnull %162, ptr noundef %.4)
  br label %180

.thread502.thread.thread:                         ; preds = %157
  tail call void @quad_reversal128(ptr noundef %0, ptr noundef %.4430)
  br label %.thread512.sink.split

179:                                              ; preds = %157
  tail call void @quad_reversal128(ptr noundef nonnull %158, ptr noundef %.4)
  br label %180

default.unreachable603:                           ; preds = %205, %157
  unreachable

180:                                              ; preds = %157, %179, %178, %176
  %.4452 = phi i64 [ %.3451, %157 ], [ 0, %179 ], [ %.3451, %178 ], [ 0, %176 ]
  %.4444 = phi i64 [ %.3443, %157 ], [ 0, %179 ], [ 0, %178 ], [ 0, %176 ]
  %.4439 = phi i64 [ %.3438, %157 ], [ 0, %179 ], [ 0, %178 ], [ %.3438, %176 ]
  %181 = icmp ne i64 %.2458.lcssa, 0
  %or.cond = and i1 %181, %147
  br i1 %or.cond, label %182, label %183

182:                                              ; preds = %180
  tail call void @quad_reversal128(ptr noundef %0, ptr noundef %.3434.lcssa)
  br label %183

183:                                              ; preds = %182, %180
  %.4460 = phi i64 [ 0, %182 ], [ %.2458.lcssa, %180 ]
  %184 = icmp ne i64 %.4452, 0
  %or.cond3 = and i1 %149, %184
  br i1 %or.cond3, label %185, label %.thread502

185:                                              ; preds = %183
  tail call void @quad_reversal128(ptr noundef nonnull %158, ptr noundef %.4430)
  br label %.thread502

.thread502:                                       ; preds = %175, %185, %183
  %.4460510 = phi i64 [ %.4460, %185 ], [ %.4460, %183 ], [ 0, %175 ]
  %.4444500509 = phi i64 [ %.4444, %185 ], [ %.4444, %183 ], [ %.3443, %175 ]
  %.4439501508 = phi i64 [ %.4439, %185 ], [ %.4439, %183 ], [ %.3438, %175 ]
  %.5453 = phi i64 [ 0, %185 ], [ %.4452, %183 ], [ 0, %175 ]
  %186 = icmp ne i64 %.4444500509, 0
  %or.cond5 = and i1 %151, %186
  br i1 %or.cond5, label %187, label %.thread502.thread

187:                                              ; preds = %.thread502
  tail call void @quad_reversal128(ptr noundef nonnull %162, ptr noundef %.4425)
  br label %.thread502.thread

.thread502.thread:                                ; preds = %177, %187, %.thread502
  %.5453525 = phi i64 [ %.5453, %187 ], [ %.5453, %.thread502 ], [ 0, %177 ]
  %.4439501508524 = phi i64 [ %.4439501508, %187 ], [ %.4439501508, %.thread502 ], [ %.3438, %177 ]
  %.4460510523 = phi i64 [ %.4460510, %187 ], [ %.4460510, %.thread502 ], [ 0, %177 ]
  %.5445 = phi i64 [ 0, %187 ], [ %.4444500509, %.thread502 ], [ 0, %177 ]
  %188 = icmp ne i64 %.4439501508524, 0
  %or.cond7 = and i1 %153, %188
  br i1 %or.cond7, label %.thread512.sink.split, label %.thread512

189:                                              ; preds = %157
  tail call void @quad_reversal128(ptr noundef %0, ptr noundef %.4)
  br label %291

.thread512.sink.split:                            ; preds = %.thread502.thread, %.thread502.thread.thread
  %.sink = phi ptr [ %162, %.thread502.thread.thread ], [ %166, %.thread502.thread ]
  %.6462.ph = phi i64 [ 0, %.thread502.thread.thread ], [ %.4460510523, %.thread502.thread ]
  %.7455.ph = phi i64 [ 0, %.thread502.thread.thread ], [ %.5453525, %.thread502.thread ]
  %.7447.ph = phi i64 [ 0, %.thread502.thread.thread ], [ %.5445, %.thread502.thread ]
  tail call void @quad_reversal128(ptr noundef nonnull %.sink, ptr noundef %.4)
  br label %.thread512

.thread512:                                       ; preds = %.thread512.sink.split, %.thread502.thread, %145
  %.6462 = phi i64 [ %.2458.lcssa, %145 ], [ %.4460510523, %.thread502.thread ], [ %.6462.ph, %.thread512.sink.split ]
  %.7455 = phi i64 [ %.3451, %145 ], [ %.5453525, %.thread502.thread ], [ %.7455.ph, %.thread512.sink.split ]
  %.7447 = phi i64 [ %.3443, %145 ], [ %.5445, %.thread502.thread ], [ %.7447.ph, %.thread512.sink.split ]
  %.7 = phi i64 [ %.3438, %145 ], [ %.4439501508524, %.thread502.thread ], [ 0, %.thread512.sink.split ]
  %190 = lshr i64 %3, 9
  %191 = zext i32 %.0470.lcssa to i64
  %192 = icmp ult i64 %190, %191
  %193 = zext i1 %192 to i8
  %194 = zext i32 %.0471.lcssa to i64
  %195 = icmp ult i64 %190, %194
  %196 = zext i1 %195 to i8
  %197 = zext i32 %.0472.lcssa to i64
  %198 = icmp ult i64 %190, %197
  %199 = zext i1 %198 to i8
  %200 = zext i32 %.0473.lcssa to i64
  %201 = icmp ult i64 %190, %200
  %202 = zext i1 %201 to i8
  %203 = icmp ugt i64 %3, 17179869183
  br i1 %203, label %204, label %205

204:                                              ; preds = %.thread512
  br label %205

205:                                              ; preds = %204, %.thread512
  %.1469 = phi i8 [ 1, %204 ], [ %202, %.thread512 ]
  %.1467 = phi i8 [ 1, %204 ], [ %199, %.thread512 ]
  %.1417 = phi i8 [ 1, %204 ], [ %196, %.thread512 ]
  %.1 = phi i8 [ 1, %204 ], [ %193, %.thread512 ]
  %206 = shl nuw nsw i8 %.1417, 1
  %207 = shl nuw nsw i8 %.1467, 2
  %208 = or disjoint i8 %206, %207
  %209 = shl nuw nsw i8 %.1469, 3
  %210 = or disjoint i8 %208, %209
  %211 = or disjoint i8 %210, %.1
  switch i8 %211, label %default.unreachable603 [
    i8 0, label %212
    i8 1, label %213
    i8 2, label %218
    i8 3, label %223
    i8 4, label %230
    i8 8, label %235
    i8 9, label %239
    i8 12, label %246
    i8 5, label %252
    i8 6, label %252
    i8 7, label %252
    i8 10, label %252
    i8 11, label %252
    i8 13, label %252
    i8 14, label %252
    i8 15, label %252
  ]

212:                                              ; preds = %205
  tail call void @blit_partition128(ptr noundef %0, ptr noundef %1, i64 noundef %2, i64 noundef %3, ptr noundef %4)
  br label %291

213:                                              ; preds = %205
  %.not492 = icmp eq i64 %.6462, 0
  br i1 %.not492, label %215, label %214

214:                                              ; preds = %213
  tail call void @quadsort_swap128(ptr noundef %0, ptr noundef %1, i64 noundef %2, i64 noundef %7, ptr noundef %4)
  br label %215

215:                                              ; preds = %214, %213
  %216 = getelementptr inbounds i8, ptr %.3434.lcssa, i64 16
  %217 = add i64 %8, %9
  tail call void @blit_partition128(ptr noundef nonnull %216, ptr noundef %1, i64 noundef %2, i64 noundef %217, ptr noundef %4)
  br label %274

218:                                              ; preds = %205
  tail call void @blit_partition128(ptr noundef %0, ptr noundef %1, i64 noundef %2, i64 noundef %7, ptr noundef %4)
  %.not491 = icmp eq i64 %.7455, 0
  br i1 %.not491, label %221, label %219

219:                                              ; preds = %218
  %220 = getelementptr inbounds i8, ptr %.3434.lcssa, i64 16
  tail call void @quadsort_swap128(ptr noundef nonnull %220, ptr noundef %1, i64 noundef %2, i64 noundef %8, ptr noundef %4)
  br label %221

221:                                              ; preds = %219, %218
  %222 = getelementptr inbounds i8, ptr %.4430, i64 16
  tail call void @blit_partition128(ptr noundef nonnull %222, ptr noundef %1, i64 noundef %2, i64 noundef %9, ptr noundef %4)
  br label %274

223:                                              ; preds = %205
  %.not489 = icmp eq i64 %.6462, 0
  br i1 %.not489, label %225, label %224

224:                                              ; preds = %223
  tail call void @quadsort_swap128(ptr noundef %0, ptr noundef %1, i64 noundef %2, i64 noundef %7, ptr noundef %4)
  br label %225

225:                                              ; preds = %224, %223
  %.not490 = icmp eq i64 %.7455, 0
  br i1 %.not490, label %228, label %226

226:                                              ; preds = %225
  %227 = getelementptr inbounds i8, ptr %.3434.lcssa, i64 16
  tail call void @quadsort_swap128(ptr noundef nonnull %227, ptr noundef %1, i64 noundef %2, i64 noundef %8, ptr noundef %4)
  br label %228

228:                                              ; preds = %226, %225
  %229 = getelementptr inbounds i8, ptr %.4430, i64 16
  tail call void @blit_partition128(ptr noundef nonnull %229, ptr noundef %1, i64 noundef %2, i64 noundef %9, ptr noundef %4)
  br label %274

230:                                              ; preds = %205
  tail call void @blit_partition128(ptr noundef %0, ptr noundef %1, i64 noundef %2, i64 noundef %6, ptr noundef %4)
  %.not488 = icmp eq i64 %.7447, 0
  br i1 %.not488, label %233, label %231

231:                                              ; preds = %230
  %232 = getelementptr inbounds i8, ptr %.4430, i64 16
  tail call void @quadsort_swap128(ptr noundef nonnull %232, ptr noundef %1, i64 noundef %2, i64 noundef %10, ptr noundef %4)
  br label %233

233:                                              ; preds = %231, %230
  %234 = getelementptr inbounds i8, ptr %.4425, i64 16
  tail call void @blit_partition128(ptr noundef nonnull %234, ptr noundef %1, i64 noundef %2, i64 noundef %11, ptr noundef %4)
  br label %274

235:                                              ; preds = %205
  %236 = add nuw i64 %10, %6
  tail call void @blit_partition128(ptr noundef %0, ptr noundef %1, i64 noundef %2, i64 noundef %236, ptr noundef %4)
  %.not487 = icmp eq i64 %.7, 0
  br i1 %.not487, label %274, label %237

237:                                              ; preds = %235
  %238 = getelementptr inbounds i8, ptr %.4425, i64 16
  tail call void @quadsort_swap128(ptr noundef nonnull %238, ptr noundef %1, i64 noundef %2, i64 noundef %11, ptr noundef %4)
  br label %274

239:                                              ; preds = %205
  %.not485 = icmp eq i64 %.6462, 0
  br i1 %.not485, label %241, label %240

240:                                              ; preds = %239
  tail call void @quadsort_swap128(ptr noundef %0, ptr noundef %1, i64 noundef %2, i64 noundef %7, ptr noundef %4)
  br label %241

241:                                              ; preds = %240, %239
  %242 = getelementptr inbounds i8, ptr %.3434.lcssa, i64 16
  %243 = add i64 %10, %8
  tail call void @blit_partition128(ptr noundef nonnull %242, ptr noundef %1, i64 noundef %2, i64 noundef %243, ptr noundef %4)
  %.not486 = icmp eq i64 %.7, 0
  br i1 %.not486, label %274, label %244

244:                                              ; preds = %241
  %245 = getelementptr inbounds i8, ptr %.4425, i64 16
  tail call void @quadsort_swap128(ptr noundef nonnull %245, ptr noundef %1, i64 noundef %2, i64 noundef %11, ptr noundef %4)
  br label %274

246:                                              ; preds = %205
  tail call void @blit_partition128(ptr noundef %0, ptr noundef %1, i64 noundef %2, i64 noundef %6, ptr noundef %4)
  %.not483 = icmp eq i64 %.7447, 0
  br i1 %.not483, label %249, label %247

247:                                              ; preds = %246
  %248 = getelementptr inbounds i8, ptr %.4430, i64 16
  tail call void @quadsort_swap128(ptr noundef nonnull %248, ptr noundef %1, i64 noundef %2, i64 noundef %10, ptr noundef %4)
  br label %249

249:                                              ; preds = %247, %246
  %.not484 = icmp eq i64 %.7, 0
  br i1 %.not484, label %274, label %250

250:                                              ; preds = %249
  %251 = getelementptr inbounds i8, ptr %.4425, i64 16
  tail call void @quadsort_swap128(ptr noundef nonnull %251, ptr noundef %1, i64 noundef %2, i64 noundef %11, ptr noundef %4)
  br label %274

252:                                              ; preds = %205, %205, %205, %205, %205, %205, %205, %205
  %.not = icmp eq i8 %.1, 0
  br i1 %.not, label %255, label %253

253:                                              ; preds = %252
  %.not476 = icmp eq i64 %.6462, 0
  br i1 %.not476, label %256, label %254

254:                                              ; preds = %253
  tail call void @quadsort_swap128(ptr noundef %0, ptr noundef %1, i64 noundef %2, i64 noundef %7, ptr noundef %4)
  br label %256

255:                                              ; preds = %252
  tail call void @blit_partition128(ptr noundef %0, ptr noundef %1, i64 noundef %2, i64 noundef %7, ptr noundef %4)
  br label %256

256:                                              ; preds = %253, %254, %255
  %.not477 = icmp eq i8 %.1417, 0
  br i1 %.not477, label %260, label %257

257:                                              ; preds = %256
  %.not478 = icmp eq i64 %.7455, 0
  br i1 %.not478, label %262, label %258

258:                                              ; preds = %257
  %259 = getelementptr inbounds i8, ptr %.3434.lcssa, i64 16
  tail call void @quadsort_swap128(ptr noundef nonnull %259, ptr noundef %1, i64 noundef %2, i64 noundef %8, ptr noundef %4)
  br label %262

260:                                              ; preds = %256
  %261 = getelementptr inbounds i8, ptr %.3434.lcssa, i64 16
  tail call void @blit_partition128(ptr noundef nonnull %261, ptr noundef %1, i64 noundef %2, i64 noundef %8, ptr noundef %4)
  br label %262

262:                                              ; preds = %257, %258, %260
  %.not479 = icmp eq i8 %.1467, 0
  br i1 %.not479, label %266, label %263

263:                                              ; preds = %262
  %.not480 = icmp eq i64 %.7447, 0
  br i1 %.not480, label %268, label %264

264:                                              ; preds = %263
  %265 = getelementptr inbounds i8, ptr %.4430, i64 16
  tail call void @quadsort_swap128(ptr noundef nonnull %265, ptr noundef %1, i64 noundef %2, i64 noundef %10, ptr noundef %4)
  br label %268

266:                                              ; preds = %262
  %267 = getelementptr inbounds i8, ptr %.4430, i64 16
  tail call void @blit_partition128(ptr noundef nonnull %267, ptr noundef %1, i64 noundef %2, i64 noundef %10, ptr noundef %4)
  br label %268

268:                                              ; preds = %263, %264, %266
  %.not481 = icmp eq i8 %.1469, 0
  br i1 %.not481, label %272, label %269

269:                                              ; preds = %268
  %.not482 = icmp eq i64 %.7, 0
  br i1 %.not482, label %274, label %270

270:                                              ; preds = %269
  %271 = getelementptr inbounds i8, ptr %.4425, i64 16
  tail call void @quadsort_swap128(ptr noundef nonnull %271, ptr noundef %1, i64 noundef %2, i64 noundef %11, ptr noundef %4)
  br label %274

272:                                              ; preds = %268
  %273 = getelementptr inbounds i8, ptr %.4425, i64 16
  tail call void @blit_partition128(ptr noundef nonnull %273, ptr noundef %1, i64 noundef %2, i64 noundef %11, ptr noundef %4)
  br label %274

274:                                              ; preds = %272, %270, %269, %249, %250, %241, %244, %235, %237, %233, %228, %221, %215
  %275 = getelementptr inbounds i8, ptr %.3434.lcssa, i64 16
  %276 = tail call i32 %4(ptr noundef %.3434.lcssa, ptr noundef nonnull %275) #1
  %277 = icmp slt i32 %276, 1
  br i1 %277, label %278, label %286

278:                                              ; preds = %274
  %279 = getelementptr inbounds i8, ptr %.4425, i64 16
  %280 = tail call i32 %4(ptr noundef %.4425, ptr noundef nonnull %279) #1
  %281 = icmp slt i32 %280, 1
  br i1 %281, label %282, label %.sink.split

282:                                              ; preds = %278
  %283 = getelementptr inbounds i8, ptr %.4430, i64 16
  %284 = tail call i32 %4(ptr noundef %.4430, ptr noundef nonnull %283) #1
  %285 = icmp slt i32 %284, 1
  br i1 %285, label %291, label %290

286:                                              ; preds = %274
  tail call void @rotate_merge_block128(ptr noundef %0, ptr noundef %1, i64 noundef %2, i64 noundef %7, i64 noundef %8, ptr noundef %4)
  %287 = getelementptr inbounds i8, ptr %.4425, i64 16
  %288 = tail call i32 %4(ptr noundef %.4425, ptr noundef nonnull %287) #1
  %289 = icmp sgt i32 %288, 0
  br i1 %289, label %.sink.split, label %290

.sink.split:                                      ; preds = %286, %278
  tail call void @rotate_merge_block128(ptr noundef %13, ptr noundef %1, i64 noundef %2, i64 noundef %10, i64 noundef %11, ptr noundef %4)
  br label %290

290:                                              ; preds = %.sink.split, %286, %282
  tail call void @rotate_merge_block128(ptr noundef %0, ptr noundef %1, i64 noundef %2, i64 noundef %6, i64 noundef %9, ptr noundef %4)
  br label %291

291:                                              ; preds = %189, %282, %141, %290, %212
  ret void
}

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

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 = { 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 = distinct !{!5, !6}
!6 = !{!"llvm.loop.mustprogress"}
!7 = distinct !{!7, !6}
!8 = distinct !{!8, !6}


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