; LLVM IR from facebookresearch/habitat-sim :: src/deps/basis-universal/encoder (basisu_frontend)

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

%"class.basisu::vector.6" = type { ptr, i32, i32 }
%"class.basisu::vector.8" = type { ptr, i32, i32 }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%class.anon.93 = type { ptr, i32, i32, ptr, ptr, ptr, ptr }
%"class.basisu::vector.10" = type { ptr, i32, i32 }
%"class.basisu::basisu_frontend" = type { %"struct.basisu::basisu_frontend::params", i32, i32, i8, i8, i8, i32, i32, %"class.basisu::vector", %"class.basisu::vector.0", %"class.basisu::vector.0", %"class.basisu::vector.0", %"class.basisu::tree_vector_quant", %"class.basisu::vector.6", %"class.basisu::vector.6", %"class.basisu::vector.8", %"class.basisu::vector.6", %"class.basisu::vector.10", %"class.basisu::vector.12", %"class.basisu::vector.6", %"class.basisu::vector.0", %"class.basisu::vector.6", %"class.basisu::vector.8", %"class.basisu::vector.6", %"class.basisu::vector.14", %"class.basisu::vector.16", %"class.basisu::vector.18", %"class.basisu::vector.20", %"class.std::mutex" }
%"struct.basisu::basisu_frontend::params" = type { i32, ptr, i32, i32, i32, i8, i8, i8, i8, i8, i8, i8, ptr, i32, i32, i8, float, i32, ptr, ptr }
%"class.basisu::vector" = type { ptr, i32, i32 }
%"class.basisu::tree_vector_quant" = type <{ %"class.basisu::vector.2", %"class.basisu::vector.4", i32, [4 x i8] }>
%"class.basisu::vector.2" = type { ptr, i32, i32 }
%"class.basisu::vector.4" = type { ptr, i32, i32 }
%"class.basisu::vector.12" = type { ptr, i32, i32 }
%"class.basisu::vector.0" = type { ptr, i32, i32 }
%"class.basisu::vector.14" = type { ptr, i32, i32 }
%"class.basisu::vector.16" = type { ptr, i32, i32 }
%"class.basisu::vector.18" = type { ptr, i32, i32 }
%"class.basisu::vector.20" = type { ptr, i32, i32 }
%"class.std::mutex" = type { %"class.std::__mutex_base" }
%"class.std::__mutex_base" = type { %union.pthread_mutex_t }
%union.pthread_mutex_t = type { %struct.__pthread_mutex_s }
%struct.__pthread_mutex_s = type { i32, i32, i32, i32, i32, i16, i16, %struct.__pthread_internal_list }
%struct.__pthread_internal_list = type { ptr, ptr }
%"struct.basisu::basisu_frontend::endpoint_cluster_etc_params" = type <{ [2 x %"class.basisu::color_rgba"], [2 x i32], [2 x i64], %"class.basisu::vector.18", [2 x i8], i8, [5 x i8] }>
%"class.basisu::color_rgba" = type { %union.anon }
%union.anon = type { [4 x i8] }

@.str.12 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [40 x i8], align 1

declare void @_ZN6basisu12debug_printfEPKcz(ptr noundef, ...) #0

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN6basisu6vectorINS_9etc_blockEEixEm(ptr noundef nonnull align 8 dereferenceable(16), i64 noundef) #1 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK6basisu6vectorINS_9etc_blockEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16)) #1 align 2

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden void @_ZN6basisuL21handle_verify_failureEi(i32 noundef) #1

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6basisu15basisu_frontend46eliminate_redundant_or_empty_endpoint_clustersEv(ptr noundef nonnull align 8 dereferenceable(496)) #3 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK6basisu6vectorINS0_IjEEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16)) #1 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(51) ptr @_ZN6basisu6vectorINS_15basisu_frontend27endpoint_cluster_etc_paramsEEixEm(ptr noundef nonnull align 8 dereferenceable(16), i64 noundef) #1 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN6basisu7minimumIjEET_S1_S1_(i32 noundef, i32 noundef) #1

declare void @_ZN6basisu8job_pool7add_jobEOSt8functionIFvvEE(ptr noundef nonnull align 8 dereferenceable(189), ptr noundef nonnull align 8 dereferenceable(32)) #0

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #4 align 2

declare void @_ZN6basisu8job_pool12wait_for_allEv(ptr noundef nonnull align 8 dereferenceable(189)) #0

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(8) ptr @_ZN6basisu6vectorINS_5vec2UEEixEm(ptr noundef nonnull align 8 dereferenceable(16), i64 noundef) #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZN6basisu5vec2UixEj(ptr noundef nonnull align 4 dereferenceable(8), i32 noundef) #4 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZN6basisu6vectorINS0_IjEEEixEm(ptr noundef nonnull align 8 dereferenceable(16), i64 noundef) #1 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6basisu6vectorIjE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 4 dereferenceable(4)) #5 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZN6basisu6vectorIjEixEm(ptr noundef nonnull align 8 dereferenceable(16), i64 noundef) #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6basisu9etc_block22set_block_color5_etc1sERKNS_10color_rgbaE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 1 dereferenceable(4)) #3 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6basisu9etc_block22set_inten_tables_etc1sEj(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef) #5 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZNK6basisu15basisu_frontend35get_subblock_endpoint_cluster_indexEjj(ptr noundef nonnull align 8 dereferenceable(496), i32 noundef, i32 noundef) #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 1 dereferenceable(4) ptr @_ZNK6basisu15basisu_frontend35get_endpoint_cluster_unscaled_colorEjb(ptr noundef nonnull align 8 dereferenceable(496), i32 noundef, i1 noundef zeroext) #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK6basisu15basisu_frontend32get_endpoint_cluster_inten_tableEjb(ptr noundef nonnull align 8 dereferenceable(496), i32 noundef, i1 noundef zeroext) #4 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK6basisu6vectorIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16)) #1 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZN6basisu6vectorIiEixEm(ptr noundef nonnull align 8 dereferenceable(16), i64 noundef) #1 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6basisu6vectorINS0_IjEEEC2Em(ptr noundef nonnull align 8 dereferenceable(16), i64 noundef) unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN6basisu6vectorINS0_IjEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #1 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNK6basisu6vectorIjEixEm(ptr noundef nonnull align 8 dereferenceable(16), i64 noundef) #1 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZN6basisu6vectorIhEixEm(ptr noundef nonnull align 8 dereferenceable(16), i64 noundef) #1 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK6basisu6vectorINS_15basisu_frontend27endpoint_cluster_etc_paramsEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16)) #1 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZN6basisu6vectorINS0_IjEEEaSERKS2_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6basisu6vectorINS_15basisu_frontend27endpoint_cluster_etc_paramsEEC2Em(ptr noundef nonnull align 8 dereferenceable(16), i64 noundef) unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(51) ptr @_ZN6basisu15basisu_frontend27endpoint_cluster_etc_paramsaSERKS1_(ptr noundef nonnull align 8 dereferenceable(51), ptr noundef nonnull align 8 dereferenceable(51)) #5 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN6basisu6vectorINS_15basisu_frontend27endpoint_cluster_etc_paramsEED2Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #1 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6basisu6vectorIhEC2Em(ptr noundef nonnull align 8 dereferenceable(16), i64 noundef) unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN6basisu6vectorIhED2Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN6basisu15basisu_frontend29reoptimize_remapped_endpointsERKNS_6vectorIjEERNS1_IiEEbPS2_(ptr noundef nonnull align 8 dereferenceable(496) %0, ptr noundef nonnull align 8 dereferenceable(16) %1, ptr noundef nonnull align 8 dereferenceable(16) %2, i1 noundef zeroext %3, ptr noundef %4) #3 align 2 personality ptr @__gxx_personality_v0 {
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca i8, align 1
  %10 = alloca ptr, align 8
  %11 = alloca %"class.basisu::vector.6", align 8
  %12 = alloca i32, align 4
  %13 = alloca ptr, align 8
  %14 = alloca i32, align 4
  %15 = alloca %"class.basisu::vector.8", align 8
  %16 = alloca %"class.basisu::vector.8", align 8
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca %"class.std::function", align 8
  %22 = alloca %class.anon.93, align 8
  %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 %"class.basisu::vector.10", align 8
  %29 = alloca i32, align 4
  %30 = alloca %"class.basisu::vector.6", align 8
  %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
  store ptr %0, ptr %6, align 8, !tbaa !5
  store ptr %1, ptr %7, align 8, !tbaa !5
  store ptr %2, ptr %8, align 8, !tbaa !5
  %46 = zext i1 %3 to i8
  store i8 %46, ptr %9, align 1, !tbaa !9
  store ptr %4, ptr %10, align 8, !tbaa !5
  %47 = load ptr, ptr %6, align 8
  call void (ptr, ...) @_ZN6basisu12debug_printfEPKcz(ptr noundef @.str.49)
  call void @llvm.lifetime.start.p0(i64 16, ptr %11) #6
  %48 = getelementptr inbounds %"class.basisu::basisu_frontend", ptr %47, i32 0, i32 13
  %49 = call noundef i32 @_ZNK6basisu6vectorINS0_IjEEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %48)
  %50 = zext i32 %49 to i64
  call void @_ZN6basisu6vectorINS0_IjEEEC2Em(ptr noundef nonnull align 8 dereferenceable(16) %11, i64 noundef %50)
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #6
  store i32 0, ptr %12, align 4, !tbaa !11
  br label %51

51:                                               ; preds = %73, %5
  %52 = load i32, ptr %12, align 4, !tbaa !11
  %53 = load ptr, ptr %7, align 8, !tbaa !5
  %54 = invoke noundef i32 @_ZNK6basisu6vectorIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %53)
          to label %55 unwind label %58

55:                                               ; preds = %51
  %56 = icmp ult i32 %52, %54
  br i1 %56, label %62, label %57

57:                                               ; preds = %55
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #6
  br label %76

58:                                               ; preds = %71, %67, %62, %51
  %59 = landingpad { ptr, i32 }
          cleanup
  %60 = extractvalue { ptr, i32 } %59, 0
  store ptr %60, ptr %13, align 8
  %61 = extractvalue { ptr, i32 } %59, 1
  store i32 %61, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #6
  br label %580

62:                                               ; preds = %55
  %63 = load ptr, ptr %7, align 8, !tbaa !5
  %64 = load i32, ptr %12, align 4, !tbaa !11
  %65 = zext i32 %64 to i64
  %66 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK6basisu6vectorIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %63, i64 noundef %65)
          to label %67 unwind label %58

67:                                               ; preds = %62
  %68 = load i32, ptr %66, align 4, !tbaa !11
  %69 = zext i32 %68 to i64
  %70 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN6basisu6vectorINS0_IjEEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %11, i64 noundef %69)
          to label %71 unwind label %58

71:                                               ; preds = %67
  invoke void @_ZN6basisu6vectorIjE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(16) %70, ptr noundef nonnull align 4 dereferenceable(4) %12)
          to label %72 unwind label %58

72:                                               ; preds = %71
  br label %73

73:                                               ; preds = %72
  %74 = load i32, ptr %12, align 4, !tbaa !11
  %75 = add i32 %74, 1
  store i32 %75, ptr %12, align 4, !tbaa !11
  br label %51, !llvm.loop !13

76:                                               ; preds = %57
  call void @llvm.lifetime.start.p0(i64 16, ptr %15) #6
  %77 = invoke noundef i32 @_ZNK6basisu6vectorINS0_IjEEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %11)
          to label %78 unwind label %91

78:                                               ; preds = %76
  %79 = zext i32 %77 to i64
  invoke void @_ZN6basisu6vectorIhEC2Em(ptr noundef nonnull align 8 dereferenceable(16) %15, i64 noundef %79)
          to label %80 unwind label %91

80:                                               ; preds = %78
  call void @llvm.lifetime.start.p0(i64 16, ptr %16) #6
  %81 = invoke noundef i32 @_ZNK6basisu6vectorINS0_IjEEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %11)
          to label %82 unwind label %95

82:                                               ; preds = %80
  %83 = zext i32 %81 to i64
  invoke void @_ZN6basisu6vectorIhEC2Em(ptr noundef nonnull align 8 dereferenceable(16) %16, i64 noundef %83)
          to label %84 unwind label %95

84:                                               ; preds = %82
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #6
  store i32 256, ptr %17, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #6
  store i32 0, ptr %18, align 4, !tbaa !11
  br label %85

85:                                               ; preds = %125, %84
  %86 = load i32, ptr %18, align 4, !tbaa !11
  %87 = invoke noundef i32 @_ZNK6basisu6vectorINS0_IjEEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %11)
          to label %88 unwind label %99

88:                                               ; preds = %85
  %89 = icmp ult i32 %86, %87
  br i1 %89, label %103, label %90

90:                                               ; preds = %88
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #6
  br label %143

91:                                               ; preds = %78, %76
  %92 = landingpad { ptr, i32 }
          cleanup
  %93 = extractvalue { ptr, i32 } %92, 0
  store ptr %93, ptr %13, align 8
  %94 = extractvalue { ptr, i32 } %92, 1
  store i32 %94, ptr %14, align 4
  br label %579

95:                                               ; preds = %82, %80
  %96 = landingpad { ptr, i32 }
          cleanup
  %97 = extractvalue { ptr, i32 } %96, 0
  store ptr %97, ptr %13, align 8
  %98 = extractvalue { ptr, i32 } %96, 1
  store i32 %98, ptr %14, align 4
  br label %578

99:                                               ; preds = %85
  %100 = landingpad { ptr, i32 }
          cleanup
  %101 = extractvalue { ptr, i32 } %100, 0
  store ptr %101, ptr %13, align 8
  %102 = extractvalue { ptr, i32 } %100, 1
  store i32 %102, ptr %14, align 4
  br label %142

103:                                              ; preds = %88
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #6
  %104 = load i32, ptr %18, align 4, !tbaa !11
  store i32 %104, ptr %19, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #6
  %105 = invoke noundef i32 @_ZNK6basisu6vectorINS0_IjEEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %11)
          to label %106 unwind label %128

106:                                              ; preds = %103
  %107 = load i32, ptr %18, align 4, !tbaa !11
  %108 = add i32 %107, 256
  %109 = invoke noundef i32 @_ZN6basisu7minimumIjEET_S1_S1_(i32 noundef %105, i32 noundef %108)
          to label %110 unwind label %128

110:                                              ; preds = %106
  store i32 %109, ptr %20, align 4, !tbaa !11
  %111 = getelementptr inbounds %"class.basisu::basisu_frontend", ptr %47, i32 0, i32 0
  %112 = getelementptr inbounds %"struct.basisu::basisu_frontend::params", ptr %111, i32 0, i32 19
  %113 = load ptr, ptr %112, align 8, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 32, ptr %21) #6
  call void @llvm.lifetime.start.p0(i64 48, ptr %22) #6
  %114 = getelementptr inbounds %class.anon.93, ptr %22, i32 0, i32 0
  store ptr %47, ptr %114, align 8, !tbaa !35
  %115 = getelementptr inbounds %class.anon.93, ptr %22, i32 0, i32 1
  %116 = load i32, ptr %19, align 4, !tbaa !11
  store i32 %116, ptr %115, align 8, !tbaa !37
  %117 = getelementptr inbounds %class.anon.93, ptr %22, i32 0, i32 2
  %118 = load i32, ptr %20, align 4, !tbaa !11
  store i32 %118, ptr %117, align 4, !tbaa !38
  %119 = getelementptr inbounds %class.anon.93, ptr %22, i32 0, i32 3
  store ptr %16, ptr %119, align 8, !tbaa !5
  %120 = getelementptr inbounds %class.anon.93, ptr %22, i32 0, i32 4
  store ptr %15, ptr %120, align 8, !tbaa !5
  %121 = getelementptr inbounds %class.anon.93, ptr %22, i32 0, i32 5
  store ptr %11, ptr %121, align 8, !tbaa !5
  %122 = getelementptr inbounds %class.anon.93, ptr %22, i32 0, i32 6
  store ptr %10, ptr %122, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFvvEEC2IZN6basisu15basisu_frontend29reoptimize_remapped_endpointsERKNS3_6vectorIjEERNS5_IiEEbPS6_E3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef nonnull align 8 dereferenceable(48) %22)
          to label %123 unwind label %132

123:                                              ; preds = %110
  invoke void @_ZN6basisu8job_pool7add_jobEOSt8functionIFvvEE(ptr noundef nonnull align 8 dereferenceable(189) %113, ptr noundef nonnull align 8 dereferenceable(32) %21)
          to label %124 unwind label %136

124:                                              ; preds = %123
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #6
  call void @llvm.lifetime.end.p0(i64 48, ptr %22) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %21) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #6
  br label %125

125:                                              ; preds = %124
  %126 = load i32, ptr %18, align 4, !tbaa !11
  %127 = add i32 %126, 256
  store i32 %127, ptr %18, align 4, !tbaa !11
  br label %85, !llvm.loop !39

128:                                              ; preds = %106, %103
  %129 = landingpad { ptr, i32 }
          cleanup
  %130 = extractvalue { ptr, i32 } %129, 0
  store ptr %130, ptr %13, align 8
  %131 = extractvalue { ptr, i32 } %129, 1
  store i32 %131, ptr %14, align 4
  br label %141

132:                                              ; preds = %110
  %133 = landingpad { ptr, i32 }
          cleanup
  %134 = extractvalue { ptr, i32 } %133, 0
  store ptr %134, ptr %13, align 8
  %135 = extractvalue { ptr, i32 } %133, 1
  store i32 %135, ptr %14, align 4
  br label %140

136:                                              ; preds = %123
  %137 = landingpad { ptr, i32 }
          cleanup
  %138 = extractvalue { ptr, i32 } %137, 0
  store ptr %138, ptr %13, align 8
  %139 = extractvalue { ptr, i32 } %137, 1
  store i32 %139, ptr %14, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #6
  br label %140

140:                                              ; preds = %136, %132
  call void @llvm.lifetime.end.p0(i64 48, ptr %22) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %21) #6
  br label %141

141:                                              ; preds = %140, %128
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #6
  br label %142

142:                                              ; preds = %141, %99
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #6
  br label %577

143:                                              ; preds = %90
  %144 = getelementptr inbounds %"class.basisu::basisu_frontend", ptr %47, i32 0, i32 0
  %145 = getelementptr inbounds %"struct.basisu::basisu_frontend::params", ptr %144, i32 0, i32 19
  %146 = load ptr, ptr %145, align 8, !tbaa !15
  invoke void @_ZN6basisu8job_pool12wait_for_allEv(ptr noundef nonnull align 8 dereferenceable(189) %146)
          to label %147 unwind label %163

147:                                              ; preds = %143
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #6
  store i32 0, ptr %23, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #6
  store i32 0, ptr %24, align 4, !tbaa !11
  %148 = load ptr, ptr %8, align 8, !tbaa !5
  %149 = getelementptr inbounds %"class.basisu::basisu_frontend", ptr %47, i32 0, i32 13
  %150 = invoke noundef i32 @_ZNK6basisu6vectorINS0_IjEEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %149)
          to label %151 unwind label %167

151:                                              ; preds = %147
  %152 = zext i32 %150 to i64
  invoke void @_ZN6basisu6vectorIiE6resizeEmb(ptr noundef nonnull align 8 dereferenceable(16) %148, i64 noundef %152, i1 noundef zeroext false)
          to label %153 unwind label %167

153:                                              ; preds = %151
  %154 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #6
  store i32 -1, ptr %25, align 4, !tbaa !11
  invoke void @_ZN6basisu14vector_set_allINS_6vectorIiEEEEvRT_RKNS3_10value_typeE(ptr noundef nonnull align 8 dereferenceable(16) %154, ptr noundef nonnull align 4 dereferenceable(4) %25)
          to label %155 unwind label %171

155:                                              ; preds = %153
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #6
  store i32 0, ptr %26, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #6
  store i32 0, ptr %27, align 4, !tbaa !11
  br label %156

156:                                              ; preds = %208, %155
  %157 = load i32, ptr %27, align 4, !tbaa !11
  %158 = getelementptr inbounds %"class.basisu::basisu_frontend", ptr %47, i32 0, i32 13
  %159 = invoke noundef i32 @_ZNK6basisu6vectorINS0_IjEEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %158)
          to label %160 unwind label %175

160:                                              ; preds = %156
  %161 = icmp ult i32 %157, %159
  br i1 %161, label %179, label %162

162:                                              ; preds = %160
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #6
  br label %211

163:                                              ; preds = %143
  %164 = landingpad { ptr, i32 }
          cleanup
  %165 = extractvalue { ptr, i32 } %164, 0
  store ptr %165, ptr %13, align 8
  %166 = extractvalue { ptr, i32 } %164, 1
  store i32 %166, ptr %14, align 4
  br label %577

167:                                              ; preds = %151, %147
  %168 = landingpad { ptr, i32 }
          cleanup
  %169 = extractvalue { ptr, i32 } %168, 0
  store ptr %169, ptr %13, align 8
  %170 = extractvalue { ptr, i32 } %168, 1
  store i32 %170, ptr %14, align 4
  br label %576

171:                                              ; preds = %153
  %172 = landingpad { ptr, i32 }
          cleanup
  %173 = extractvalue { ptr, i32 } %172, 0
  store ptr %173, ptr %13, align 8
  %174 = extractvalue { ptr, i32 } %172, 1
  store i32 %174, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #6
  br label %576

175:                                              ; preds = %197, %189, %179, %156
  %176 = landingpad { ptr, i32 }
          cleanup
  %177 = extractvalue { ptr, i32 } %176, 0
  store ptr %177, ptr %13, align 8
  %178 = extractvalue { ptr, i32 } %176, 1
  store i32 %178, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #6
  br label %575

179:                                              ; preds = %160
  %180 = load i32, ptr %27, align 4, !tbaa !11
  %181 = zext i32 %180 to i64
  %182 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZN6basisu6vectorIhEixEm(ptr noundef nonnull align 8 dereferenceable(16) %15, i64 noundef %181)
          to label %183 unwind label %175

183:                                              ; preds = %179
  %184 = load i8, ptr %182, align 1, !tbaa !40
  %185 = icmp ne i8 %184, 0
  br i1 %185, label %189, label %186

186:                                              ; preds = %183
  %187 = load i32, ptr %23, align 4, !tbaa !11
  %188 = add i32 %187, 1
  store i32 %188, ptr %23, align 4, !tbaa !11
  br label %197

189:                                              ; preds = %183
  %190 = load i32, ptr %26, align 4, !tbaa !11
  %191 = add nsw i32 %190, 1
  store i32 %191, ptr %26, align 4, !tbaa !11
  %192 = load ptr, ptr %8, align 8, !tbaa !5
  %193 = load i32, ptr %27, align 4, !tbaa !11
  %194 = zext i32 %193 to i64
  %195 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6basisu6vectorIiEixEm(ptr noundef nonnull align 8 dereferenceable(16) %192, i64 noundef %194)
          to label %196 unwind label %175

196:                                              ; preds = %189
  store i32 %190, ptr %195, align 4, !tbaa !11
  br label %197

197:                                              ; preds = %196, %186
  %198 = load i32, ptr %27, align 4, !tbaa !11
  %199 = zext i32 %198 to i64
  %200 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZN6basisu6vectorIhEixEm(ptr noundef nonnull align 8 dereferenceable(16) %16, i64 noundef %199)
          to label %201 unwind label %175

201:                                              ; preds = %197
  %202 = load i8, ptr %200, align 1, !tbaa !40
  %203 = icmp ne i8 %202, 0
  br i1 %203, label %204, label %207

204:                                              ; preds = %201
  %205 = load i32, ptr %24, align 4, !tbaa !11
  %206 = add i32 %205, 1
  store i32 %206, ptr %24, align 4, !tbaa !11
  br label %207

207:                                              ; preds = %204, %201
  br label %208

208:                                              ; preds = %207
  %209 = load i32, ptr %27, align 4, !tbaa !11
  %210 = add i32 %209, 1
  store i32 %210, ptr %27, align 4, !tbaa !11
  br label %156, !llvm.loop !41

211:                                              ; preds = %162
  %212 = load i32, ptr %23, align 4, !tbaa !11
  invoke void (ptr, ...) @_ZN6basisu12debug_printfEPKcz(ptr noundef @.str.50, i32 noundef %212)
          to label %213 unwind label %231

213:                                              ; preds = %211
  %214 = load i32, ptr %24, align 4, !tbaa !11
  invoke void (ptr, ...) @_ZN6basisu12debug_printfEPKcz(ptr noundef @.str.51, i32 noundef %214)
          to label %215 unwind label %231

215:                                              ; preds = %213
  %216 = load i32, ptr %26, align 4, !tbaa !11
  invoke void (ptr, ...) @_ZN6basisu12debug_printfEPKcz(ptr noundef @.str.12, i32 noundef %216)
          to label %217 unwind label %231

217:                                              ; preds = %215
  %218 = load i8, ptr %9, align 1, !tbaa !9, !range !42, !noundef !43
  %219 = trunc i8 %218 to i1
  br i1 %219, label %220, label %574

220:                                              ; preds = %217
  call void @llvm.lifetime.start.p0(i64 16, ptr %28) #6
  %221 = load i32, ptr %26, align 4, !tbaa !11
  %222 = sext i32 %221 to i64
  invoke void @_ZN6basisu6vectorINS_15basisu_frontend27endpoint_cluster_etc_paramsEEC2Em(ptr noundef nonnull align 8 dereferenceable(16) %28, i64 noundef %222)
          to label %223 unwind label %235

223:                                              ; preds = %220
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #6
  store i32 0, ptr %29, align 4, !tbaa !11
  br label %224

224:                                              ; preds = %269, %223
  %225 = load i32, ptr %29, align 4, !tbaa !11
  %226 = getelementptr inbounds %"class.basisu::basisu_frontend", ptr %47, i32 0, i32 13
  %227 = invoke noundef i32 @_ZNK6basisu6vectorINS0_IjEEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %226)
          to label %228 unwind label %239

228:                                              ; preds = %224
  %229 = icmp ult i32 %225, %227
  br i1 %229, label %243, label %230

230:                                              ; preds = %228
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #6
  br label %272

231:                                              ; preds = %215, %213, %211
  %232 = landingpad { ptr, i32 }
          cleanup
  %233 = extractvalue { ptr, i32 } %232, 0
  store ptr %233, ptr %13, align 8
  %234 = extractvalue { ptr, i32 } %232, 1
  store i32 %234, ptr %14, align 4
  br label %575

235:                                              ; preds = %220
  %236 = landingpad { ptr, i32 }
          cleanup
  %237 = extractvalue { ptr, i32 } %236, 0
  store ptr %237, ptr %13, align 8
  %238 = extractvalue { ptr, i32 } %236, 1
  store i32 %238, ptr %14, align 4
  br label %573

239:                                              ; preds = %265, %261, %256, %251, %243, %224
  %240 = landingpad { ptr, i32 }
          cleanup
  %241 = extractvalue { ptr, i32 } %240, 0
  store ptr %241, ptr %13, align 8
  %242 = extractvalue { ptr, i32 } %240, 1
  store i32 %242, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #6
  br label %572

243:                                              ; preds = %228
  %244 = load ptr, ptr %8, align 8, !tbaa !5
  %245 = load i32, ptr %29, align 4, !tbaa !11
  %246 = zext i32 %245 to i64
  %247 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6basisu6vectorIiEixEm(ptr noundef nonnull align 8 dereferenceable(16) %244, i64 noundef %246)
          to label %248 unwind label %239

248:                                              ; preds = %243
  %249 = load i32, ptr %247, align 4, !tbaa !11
  %250 = icmp sge i32 %249, 0
  br i1 %250, label %251, label %268

251:                                              ; preds = %248
  %252 = getelementptr inbounds %"class.basisu::basisu_frontend", ptr %47, i32 0, i32 17
  %253 = load i32, ptr %29, align 4, !tbaa !11
  %254 = zext i32 %253 to i64
  %255 = invoke noundef nonnull align 8 dereferenceable(51) ptr @_ZN6basisu6vectorINS_15basisu_frontend27endpoint_cluster_etc_paramsEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %252, i64 noundef %254)
          to label %256 unwind label %239

256:                                              ; preds = %251
  %257 = load ptr, ptr %8, align 8, !tbaa !5
  %258 = load i32, ptr %29, align 4, !tbaa !11
  %259 = zext i32 %258 to i64
  %260 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6basisu6vectorIiEixEm(ptr noundef nonnull align 8 dereferenceable(16) %257, i64 noundef %259)
          to label %261 unwind label %239

261:                                              ; preds = %256
  %262 = load i32, ptr %260, align 4, !tbaa !11
  %263 = sext i32 %262 to i64
  %264 = invoke noundef nonnull align 8 dereferenceable(51) ptr @_ZN6basisu6vectorINS_15basisu_frontend27endpoint_cluster_etc_paramsEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %28, i64 noundef %263)
          to label %265 unwind label %239

265:                                              ; preds = %261
  %266 = invoke noundef nonnull align 8 dereferenceable(51) ptr @_ZN6basisu15basisu_frontend27endpoint_cluster_etc_paramsaSERKS1_(ptr noundef nonnull align 8 dereferenceable(51) %264, ptr noundef nonnull align 8 dereferenceable(51) %255)
          to label %267 unwind label %239

267:                                              ; preds = %265
  br label %268

268:                                              ; preds = %267, %248
  br label %269

269:                                              ; preds = %268
  %270 = load i32, ptr %29, align 4, !tbaa !11
  %271 = add i32 %270, 1
  store i32 %271, ptr %29, align 4, !tbaa !11
  br label %224, !llvm.loop !44

272:                                              ; preds = %230
  invoke void (ptr, ...) @_ZN6basisu12debug_printfEPKcz(ptr noundef @.str.52)
          to label %273 unwind label %284

273:                                              ; preds = %272
  call void @llvm.lifetime.start.p0(i64 16, ptr %30) #6
  %274 = load i32, ptr %26, align 4, !tbaa !11
  %275 = sext i32 %274 to i64
  invoke void @_ZN6basisu6vectorINS0_IjEEEC2Em(ptr noundef nonnull align 8 dereferenceable(16) %30, i64 noundef %275)
          to label %276 unwind label %288

276:                                              ; preds = %273
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #6
  store i32 0, ptr %31, align 4, !tbaa !11
  br label %277

277:                                              ; preds = %403, %276
  %278 = load i32, ptr %31, align 4, !tbaa !11
  %279 = load ptr, ptr %7, align 8, !tbaa !5
  %280 = invoke noundef i32 @_ZNK6basisu6vectorIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %279)
          to label %281 unwind label %292

281:                                              ; preds = %277
  %282 = icmp ult i32 %278, %280
  br i1 %282, label %296, label %283

283:                                              ; preds = %281
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #6
  br label %417

284:                                              ; preds = %272
  %285 = landingpad { ptr, i32 }
          cleanup
  %286 = extractvalue { ptr, i32 } %285, 0
  store ptr %286, ptr %13, align 8
  %287 = extractvalue { ptr, i32 } %285, 1
  store i32 %287, ptr %14, align 4
  br label %572

288:                                              ; preds = %273
  %289 = landingpad { ptr, i32 }
          cleanup
  %290 = extractvalue { ptr, i32 } %289, 0
  store ptr %290, ptr %13, align 8
  %291 = extractvalue { ptr, i32 } %289, 1
  store i32 %291, ptr %14, align 4
  br label %571

292:                                              ; preds = %277
  %293 = landingpad { ptr, i32 }
          cleanup
  %294 = extractvalue { ptr, i32 } %293, 0
  store ptr %294, ptr %13, align 8
  %295 = extractvalue { ptr, i32 } %293, 1
  store i32 %295, ptr %14, align 4
  br label %416

296:                                              ; preds = %281
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #6
  %297 = load ptr, ptr %7, align 8, !tbaa !5
  %298 = load i32, ptr %31, align 4, !tbaa !11
  %299 = zext i32 %298 to i64
  %300 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK6basisu6vectorIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %297, i64 noundef %299)
          to label %301 unwind label %314

301:                                              ; preds = %296
  %302 = load i32, ptr %300, align 4, !tbaa !11
  store i32 %302, ptr %32, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #6
  %303 = load ptr, ptr %8, align 8, !tbaa !5
  %304 = load i32, ptr %32, align 4, !tbaa !11
  %305 = zext i32 %304 to i64
  %306 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6basisu6vectorIiEixEm(ptr noundef nonnull align 8 dereferenceable(16) %303, i64 noundef %305)
          to label %307 unwind label %318

307:                                              ; preds = %301
  %308 = load i32, ptr %306, align 4, !tbaa !11
  store i32 %308, ptr %33, align 4, !tbaa !11
  br label %309

309:                                              ; preds = %307
  %310 = load i32, ptr %33, align 4, !tbaa !11
  %311 = icmp sge i32 %310, 0
  br i1 %311, label %322, label %312

312:                                              ; preds = %309
  invoke void @_ZN6basisuL21handle_verify_failureEi(i32 noundef 2784)
          to label %313 unwind label %318

313:                                              ; preds = %312
  br label %322

314:                                              ; preds = %296
  %315 = landingpad { ptr, i32 }
          cleanup
  %316 = extractvalue { ptr, i32 } %315, 0
  store ptr %316, ptr %13, align 8
  %317 = extractvalue { ptr, i32 } %315, 1
  store i32 %317, ptr %14, align 4
  br label %415

318:                                              ; preds = %400, %394, %392, %386, %377, %368, %356, %351, %342, %334, %330, %325, %312, %301
  %319 = landingpad { ptr, i32 }
          cleanup
  %320 = extractvalue { ptr, i32 } %319, 0
  store ptr %320, ptr %13, align 8
  %321 = extractvalue { ptr, i32 } %319, 1
  store i32 %321, ptr %14, align 4
  br label %414

322:                                              ; preds = %313, %309
  br label %323

323:                                              ; preds = %322
  br label %324

324:                                              ; preds = %323
  br label %325

325:                                              ; preds = %324
  %326 = load i32, ptr %33, align 4, !tbaa !11
  %327 = invoke noundef i32 @_ZNK6basisu6vectorINS0_IjEEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %30)
          to label %328 unwind label %318

328:                                              ; preds = %325
  %329 = icmp slt i32 %326, %327
  br i1 %329, label %332, label %330

330:                                              ; preds = %328
  invoke void @_ZN6basisuL21handle_verify_failureEi(i32 noundef 2786)
          to label %331 unwind label %318

331:                                              ; preds = %330
  br label %332

332:                                              ; preds = %331, %328
  br label %333

333:                                              ; preds = %332
  br label %334

334:                                              ; preds = %333
  %335 = load i32, ptr %33, align 4, !tbaa !11
  %336 = sext i32 %335 to i64
  %337 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN6basisu6vectorINS0_IjEEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %30, i64 noundef %336)
          to label %338 unwind label %318

338:                                              ; preds = %334
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #6
  %339 = load i32, ptr %31, align 4, !tbaa !11
  %340 = mul i32 %339, 2
  %341 = add i32 %340, 0
  store i32 %341, ptr %34, align 4, !tbaa !11
  invoke void @_ZN6basisu6vectorIjE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(16) %337, ptr noundef nonnull align 4 dereferenceable(4) %34)
          to label %342 unwind label %358

342:                                              ; preds = %338
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #6
  %343 = load i32, ptr %33, align 4, !tbaa !11
  %344 = sext i32 %343 to i64
  %345 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN6basisu6vectorINS0_IjEEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %30, i64 noundef %344)
          to label %346 unwind label %318

346:                                              ; preds = %342
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #6
  %347 = load i32, ptr %31, align 4, !tbaa !11
  %348 = mul i32 %347, 2
  %349 = add i32 %348, 1
  store i32 %349, ptr %35, align 4, !tbaa !11
  invoke void @_ZN6basisu6vectorIjE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(16) %345, ptr noundef nonnull align 4 dereferenceable(4) %35)
          to label %350 unwind label %362

350:                                              ; preds = %346
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #6
  br label %351

351:                                              ; preds = %350
  %352 = load i32, ptr %33, align 4, !tbaa !11
  %353 = invoke noundef i32 @_ZNK6basisu6vectorINS_15basisu_frontend27endpoint_cluster_etc_paramsEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %28)
          to label %354 unwind label %318

354:                                              ; preds = %351
  %355 = icmp slt i32 %352, %353
  br i1 %355, label %366, label %356

356:                                              ; preds = %354
  invoke void @_ZN6basisuL21handle_verify_failureEi(i32 noundef 2791)
          to label %357 unwind label %318

357:                                              ; preds = %356
  br label %366

358:                                              ; preds = %338
  %359 = landingpad { ptr, i32 }
          cleanup
  %360 = extractvalue { ptr, i32 } %359, 0
  store ptr %360, ptr %13, align 8
  %361 = extractvalue { ptr, i32 } %359, 1
  store i32 %361, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #6
  br label %414

362:                                              ; preds = %346
  %363 = landingpad { ptr, i32 }
          cleanup
  %364 = extractvalue { ptr, i32 } %363, 0
  store ptr %364, ptr %13, align 8
  %365 = extractvalue { ptr, i32 } %363, 1
  store i32 %365, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #6
  br label %414

366:                                              ; preds = %357, %354
  br label %367

367:                                              ; preds = %366
  br label %368

368:                                              ; preds = %367
  %369 = load i32, ptr %33, align 4, !tbaa !11
  %370 = sext i32 %369 to i64
  %371 = invoke noundef nonnull align 8 dereferenceable(51) ptr @_ZN6basisu6vectorINS_15basisu_frontend27endpoint_cluster_etc_paramsEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %28, i64 noundef %370)
          to label %372 unwind label %318

372:                                              ; preds = %368
  %373 = getelementptr inbounds %"struct.basisu::basisu_frontend::endpoint_cluster_etc_params", ptr %371, i32 0, i32 3
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #6
  %374 = load i32, ptr %31, align 4, !tbaa !11
  %375 = mul i32 %374, 2
  %376 = add i32 %375, 0
  store i32 %376, ptr %36, align 4, !tbaa !11
  invoke void @_ZN6basisu6vectorIjE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(16) %373, ptr noundef nonnull align 4 dereferenceable(4) %36)
          to label %377 unwind label %406

377:                                              ; preds = %372
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #6
  %378 = load i32, ptr %33, align 4, !tbaa !11
  %379 = sext i32 %378 to i64
  %380 = invoke noundef nonnull align 8 dereferenceable(51) ptr @_ZN6basisu6vectorINS_15basisu_frontend27endpoint_cluster_etc_paramsEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %28, i64 noundef %379)
          to label %381 unwind label %318

381:                                              ; preds = %377
  %382 = getelementptr inbounds %"struct.basisu::basisu_frontend::endpoint_cluster_etc_params", ptr %380, i32 0, i32 3
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #6
  %383 = load i32, ptr %31, align 4, !tbaa !11
  %384 = mul i32 %383, 2
  %385 = add i32 %384, 1
  store i32 %385, ptr %37, align 4, !tbaa !11
  invoke void @_ZN6basisu6vectorIjE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(16) %382, ptr noundef nonnull align 4 dereferenceable(4) %37)
          to label %386 unwind label %410

386:                                              ; preds = %381
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #6
  %387 = load i32, ptr %33, align 4, !tbaa !11
  %388 = getelementptr inbounds %"class.basisu::basisu_frontend", ptr %47, i32 0, i32 18
  %389 = load i32, ptr %31, align 4, !tbaa !11
  %390 = zext i32 %389 to i64
  %391 = invoke noundef nonnull align 4 dereferenceable(8) ptr @_ZN6basisu6vectorINS_5vec2UEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %388, i64 noundef %390)
          to label %392 unwind label %318

392:                                              ; preds = %386
  %393 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6basisu5vec2UixEj(ptr noundef nonnull align 4 dereferenceable(8) %391, i32 noundef 0)
          to label %394 unwind label %318

394:                                              ; preds = %392
  store i32 %387, ptr %393, align 4, !tbaa !11
  %395 = load i32, ptr %33, align 4, !tbaa !11
  %396 = getelementptr inbounds %"class.basisu::basisu_frontend", ptr %47, i32 0, i32 18
  %397 = load i32, ptr %31, align 4, !tbaa !11
  %398 = zext i32 %397 to i64
  %399 = invoke noundef nonnull align 4 dereferenceable(8) ptr @_ZN6basisu6vectorINS_5vec2UEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %396, i64 noundef %398)
          to label %400 unwind label %318

400:                                              ; preds = %394
  %401 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6basisu5vec2UixEj(ptr noundef nonnull align 4 dereferenceable(8) %399, i32 noundef 1)
          to label %402 unwind label %318

402:                                              ; preds = %400
  store i32 %395, ptr %401, align 4, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #6
  br label %403

403:                                              ; preds = %402
  %404 = load i32, ptr %31, align 4, !tbaa !11
  %405 = add i32 %404, 1
  store i32 %405, ptr %31, align 4, !tbaa !11
  br label %277, !llvm.loop !45

406:                                              ; preds = %372
  %407 = landingpad { ptr, i32 }
          cleanup
  %408 = extractvalue { ptr, i32 } %407, 0
  store ptr %408, ptr %13, align 8
  %409 = extractvalue { ptr, i32 } %407, 1
  store i32 %409, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #6
  br label %414

410:                                              ; preds = %381
  %411 = landingpad { ptr, i32 }
          cleanup
  %412 = extractvalue { ptr, i32 } %411, 0
  store ptr %412, ptr %13, align 8
  %413 = extractvalue { ptr, i32 } %411, 1
  store i32 %413, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #6
  br label %414

414:                                              ; preds = %410, %406, %362, %358, %318
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #6
  br label %415

415:                                              ; preds = %414, %314
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #6
  br label %416

416:                                              ; preds = %415, %292
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #6
  br label %570

417:                                              ; preds = %283
  invoke void (ptr, ...) @_ZN6basisu12debug_printfEPKcz(ptr noundef @.str.53)
          to label %418 unwind label %434

418:                                              ; preds = %417
  %419 = getelementptr inbounds %"class.basisu::basisu_frontend", ptr %47, i32 0, i32 13
  %420 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN6basisu6vectorINS0_IjEEEaSERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %419, ptr noundef nonnull align 8 dereferenceable(16) %30)
          to label %421 unwind label %434

421:                                              ; preds = %418
  %422 = getelementptr inbounds %"class.basisu::basisu_frontend", ptr %47, i32 0, i32 17
  %423 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN6basisu6vectorINS_15basisu_frontend27endpoint_cluster_etc_paramsEEaSERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %422, ptr noundef nonnull align 8 dereferenceable(16) %28)
          to label %424 unwind label %434

424:                                              ; preds = %421
  invoke void @_ZN6basisu15basisu_frontend46eliminate_redundant_or_empty_endpoint_clustersEv(ptr noundef nonnull align 8 dereferenceable(496) %47)
          to label %425 unwind label %434

425:                                              ; preds = %424
  invoke void (ptr, ...) @_ZN6basisu12debug_printfEPKcz(ptr noundef @.str.54)
          to label %426 unwind label %434

426:                                              ; preds = %425
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #6
  store i32 0, ptr %38, align 4, !tbaa !11
  br label %427

427:                                              ; preds = %518, %426
  %428 = load i32, ptr %38, align 4, !tbaa !11
  %429 = getelementptr inbounds %"class.basisu::basisu_frontend", ptr %47, i32 0, i32 13
  %430 = invoke noundef i32 @_ZNK6basisu6vectorINS0_IjEEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %429)
          to label %431 unwind label %438

431:                                              ; preds = %427
  %432 = icmp ult i32 %428, %430
  br i1 %432, label %442, label %433

433:                                              ; preds = %431
  store i32 23, ptr %39, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #6
  br label %522

434:                                              ; preds = %568, %565, %522, %425, %424, %421, %418, %417
  %435 = landingpad { ptr, i32 }
          cleanup
  %436 = extractvalue { ptr, i32 } %435, 0
  store ptr %436, ptr %13, align 8
  %437 = extractvalue { ptr, i32 } %435, 1
  store i32 %437, ptr %14, align 4
  br label %570

438:                                              ; preds = %427
  %439 = landingpad { ptr, i32 }
          cleanup
  %440 = extractvalue { ptr, i32 } %439, 0
  store ptr %440, ptr %13, align 8
  %441 = extractvalue { ptr, i32 } %439, 1
  store i32 %441, ptr %14, align 4
  br label %521

442:                                              ; preds = %431
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #6
  store i32 0, ptr %40, align 4, !tbaa !11
  br label %443

443:                                              ; preds = %499, %442
  %444 = load i32, ptr %40, align 4, !tbaa !11
  %445 = getelementptr inbounds %"class.basisu::basisu_frontend", ptr %47, i32 0, i32 13
  %446 = load i32, ptr %38, align 4, !tbaa !11
  %447 = zext i32 %446 to i64
  %448 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN6basisu6vectorINS0_IjEEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %445, i64 noundef %447)
          to label %449 unwind label %454

449:                                              ; preds = %443
  %450 = invoke noundef i32 @_ZNK6basisu6vectorIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %448)
          to label %451 unwind label %454

451:                                              ; preds = %449
  %452 = icmp ult i32 %444, %450
  br i1 %452, label %458, label %453

453:                                              ; preds = %451
  store i32 26, ptr %39, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #6
  br label %517

454:                                              ; preds = %449, %443
  %455 = landingpad { ptr, i32 }
          cleanup
  %456 = extractvalue { ptr, i32 } %455, 0
  store ptr %456, ptr %13, align 8
  %457 = extractvalue { ptr, i32 } %455, 1
  store i32 %457, ptr %14, align 4
  br label %516

458:                                              ; preds = %451
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #6
  %459 = getelementptr inbounds %"class.basisu::basisu_frontend", ptr %47, i32 0, i32 13
  %460 = load i32, ptr %38, align 4, !tbaa !11
  %461 = zext i32 %460 to i64
  %462 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN6basisu6vectorINS0_IjEEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %459, i64 noundef %461)
          to label %463 unwind label %502

463:                                              ; preds = %458
  %464 = load i32, ptr %40, align 4, !tbaa !11
  %465 = zext i32 %464 to i64
  %466 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6basisu6vectorIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %462, i64 noundef %465)
          to label %467 unwind label %502

467:                                              ; preds = %463
  %468 = load i32, ptr %466, align 4, !tbaa !11
  store i32 %468, ptr %41, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #6
  %469 = load i32, ptr %41, align 4, !tbaa !11
  %470 = lshr i32 %469, 1
  store i32 %470, ptr %42, align 4, !tbaa !11
  %471 = load i32, ptr %38, align 4, !tbaa !11
  %472 = getelementptr inbounds %"class.basisu::basisu_frontend", ptr %47, i32 0, i32 18
  %473 = load i32, ptr %42, align 4, !tbaa !11
  %474 = zext i32 %473 to i64
  %475 = invoke noundef nonnull align 4 dereferenceable(8) ptr @_ZN6basisu6vectorINS_5vec2UEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %472, i64 noundef %474)
          to label %476 unwind label %506

476:                                              ; preds = %467
  %477 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6basisu5vec2UixEj(ptr noundef nonnull align 4 dereferenceable(8) %475, i32 noundef 0)
          to label %478 unwind label %506

478:                                              ; preds = %476
  store i32 %471, ptr %477, align 4, !tbaa !11
  %479 = load i32, ptr %38, align 4, !tbaa !11
  %480 = getelementptr inbounds %"class.basisu::basisu_frontend", ptr %47, i32 0, i32 18
  %481 = load i32, ptr %42, align 4, !tbaa !11
  %482 = zext i32 %481 to i64
  %483 = invoke noundef nonnull align 4 dereferenceable(8) ptr @_ZN6basisu6vectorINS_5vec2UEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %480, i64 noundef %482)
          to label %484 unwind label %506

484:                                              ; preds = %478
  %485 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6basisu5vec2UixEj(ptr noundef nonnull align 4 dereferenceable(8) %483, i32 noundef 1)
          to label %486 unwind label %506

486:                                              ; preds = %484
  store i32 %479, ptr %485, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #6
  %487 = load ptr, ptr %7, align 8, !tbaa !5
  %488 = load i32, ptr %42, align 4, !tbaa !11
  %489 = zext i32 %488 to i64
  %490 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK6basisu6vectorIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %487, i64 noundef %489)
          to label %491 unwind label %510

491:                                              ; preds = %486
  %492 = load i32, ptr %490, align 4, !tbaa !11
  store i32 %492, ptr %43, align 4, !tbaa !11
  %493 = load i32, ptr %38, align 4, !tbaa !11
  %494 = load ptr, ptr %8, align 8, !tbaa !5
  %495 = load i32, ptr %43, align 4, !tbaa !11
  %496 = zext i32 %495 to i64
  %497 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6basisu6vectorIiEixEm(ptr noundef nonnull align 8 dereferenceable(16) %494, i64 noundef %496)
          to label %498 unwind label %510

498:                                              ; preds = %491
  store i32 %493, ptr %497, align 4, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #6
  br label %499

499:                                              ; preds = %498
  %500 = load i32, ptr %40, align 4, !tbaa !11
  %501 = add i32 %500, 1
  store i32 %501, ptr %40, align 4, !tbaa !11
  br label %443, !llvm.loop !46

502:                                              ; preds = %463, %458
  %503 = landingpad { ptr, i32 }
          cleanup
  %504 = extractvalue { ptr, i32 } %503, 0
  store ptr %504, ptr %13, align 8
  %505 = extractvalue { ptr, i32 } %503, 1
  store i32 %505, ptr %14, align 4
  br label %515

506:                                              ; preds = %484, %478, %476, %467
  %507 = landingpad { ptr, i32 }
          cleanup
  %508 = extractvalue { ptr, i32 } %507, 0
  store ptr %508, ptr %13, align 8
  %509 = extractvalue { ptr, i32 } %507, 1
  store i32 %509, ptr %14, align 4
  br label %514

510:                                              ; preds = %491, %486
  %511 = landingpad { ptr, i32 }
          cleanup
  %512 = extractvalue { ptr, i32 } %511, 0
  store ptr %512, ptr %13, align 8
  %513 = extractvalue { ptr, i32 } %511, 1
  store i32 %513, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #6
  br label %514

514:                                              ; preds = %510, %506
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #6
  br label %515

515:                                              ; preds = %514, %502
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #6
  br label %516

516:                                              ; preds = %515, %454
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #6
  br label %521

517:                                              ; preds = %453
  br label %518

518:                                              ; preds = %517
  %519 = load i32, ptr %38, align 4, !tbaa !11
  %520 = add i32 %519, 1
  store i32 %520, ptr %38, align 4, !tbaa !11
  br label %427, !llvm.loop !47

521:                                              ; preds = %516, %438
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #6
  br label %570

522:                                              ; preds = %433
  invoke void (ptr, ...) @_ZN6basisu12debug_printfEPKcz(ptr noundef @.str.55)
          to label %523 unwind label %434

523:                                              ; preds = %522
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #6
  store i32 0, ptr %44, align 4, !tbaa !11
  br label %524

524:                                              ; preds = %557, %523
  %525 = load i32, ptr %44, align 4, !tbaa !11
  %526 = getelementptr inbounds %"class.basisu::basisu_frontend", ptr %47, i32 0, i32 9
  %527 = invoke noundef i32 @_ZNK6basisu6vectorINS_9etc_blockEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %526)
          to label %528 unwind label %531

528:                                              ; preds = %524
  %529 = icmp ult i32 %525, %527
  br i1 %529, label %535, label %530

530:                                              ; preds = %528
  store i32 29, ptr %39, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #6
  br label %565

531:                                              ; preds = %524
  %532 = landingpad { ptr, i32 }
          cleanup
  %533 = extractvalue { ptr, i32 } %532, 0
  store ptr %533, ptr %13, align 8
  %534 = extractvalue { ptr, i32 } %532, 1
  store i32 %534, ptr %14, align 4
  br label %564

535:                                              ; preds = %528
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #6
  %536 = load i32, ptr %44, align 4, !tbaa !11
  %537 = invoke noundef i32 @_ZNK6basisu15basisu_frontend35get_subblock_endpoint_cluster_indexEjj(ptr noundef nonnull align 8 dereferenceable(496) %47, i32 noundef %536, i32 noundef 0)
          to label %538 unwind label %560

538:                                              ; preds = %535
  store i32 %537, ptr %45, align 4, !tbaa !11
  %539 = getelementptr inbounds %"class.basisu::basisu_frontend", ptr %47, i32 0, i32 9
  %540 = load i32, ptr %44, align 4, !tbaa !11
  %541 = zext i32 %540 to i64
  %542 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6basisu6vectorINS_9etc_blockEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %539, i64 noundef %541)
          to label %543 unwind label %560

543:                                              ; preds = %538
  %544 = load i32, ptr %45, align 4, !tbaa !11
  %545 = invoke noundef nonnull align 1 dereferenceable(4) ptr @_ZNK6basisu15basisu_frontend35get_endpoint_cluster_unscaled_colorEjb(ptr noundef nonnull align 8 dereferenceable(496) %47, i32 noundef %544, i1 noundef zeroext false)
          to label %546 unwind label %560

546:                                              ; preds = %543
  invoke void @_ZN6basisu9etc_block22set_block_color5_etc1sERKNS_10color_rgbaE(ptr noundef nonnull align 8 dereferenceable(8) %542, ptr noundef nonnull align 1 dereferenceable(4) %545)
          to label %547 unwind label %560

547:                                              ; preds = %546
  %548 = getelementptr inbounds %"class.basisu::basisu_frontend", ptr %47, i32 0, i32 9
  %549 = load i32, ptr %44, align 4, !tbaa !11
  %550 = zext i32 %549 to i64
  %551 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6basisu6vectorINS_9etc_blockEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %548, i64 noundef %550)
          to label %552 unwind label %560

552:                                              ; preds = %547
  %553 = load i32, ptr %45, align 4, !tbaa !11
  %554 = invoke noundef i32 @_ZNK6basisu15basisu_frontend32get_endpoint_cluster_inten_tableEjb(ptr noundef nonnull align 8 dereferenceable(496) %47, i32 noundef %553, i1 noundef zeroext false)
          to label %555 unwind label %560

555:                                              ; preds = %552
  invoke void @_ZN6basisu9etc_block22set_inten_tables_etc1sEj(ptr noundef nonnull align 8 dereferenceable(8) %551, i32 noundef %554)
          to label %556 unwind label %560

556:                                              ; preds = %555
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #6
  br label %557

557:                                              ; preds = %556
  %558 = load i32, ptr %44, align 4, !tbaa !11
  %559 = add i32 %558, 1
  store i32 %559, ptr %44, align 4, !tbaa !11
  br label %524, !llvm.loop !48

560:                                              ; preds = %555, %552, %547, %546, %543, %538, %535
  %561 = landingpad { ptr, i32 }
          cleanup
  %562 = extractvalue { ptr, i32 } %561, 0
  store ptr %562, ptr %13, align 8
  %563 = extractvalue { ptr, i32 } %561, 1
  store i32 %563, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #6
  br label %564

564:                                              ; preds = %560, %531
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #6
  br label %570

565:                                              ; preds = %530
  %566 = getelementptr inbounds %"class.basisu::basisu_frontend", ptr %47, i32 0, i32 13
  %567 = invoke noundef i32 @_ZNK6basisu6vectorINS0_IjEEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %566)
          to label %568 unwind label %434

568:                                              ; preds = %565
  invoke void (ptr, ...) @_ZN6basisu12debug_printfEPKcz(ptr noundef @.str.56, i32 noundef %567)
          to label %569 unwind label %434

569:                                              ; preds = %568
  call void @_ZN6basisu6vectorINS0_IjEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %30) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %30) #6
  call void @_ZN6basisu6vectorINS_15basisu_frontend27endpoint_cluster_etc_paramsEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %28) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %28) #6
  br label %574

570:                                              ; preds = %564, %521, %434, %416
  call void @_ZN6basisu6vectorINS0_IjEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %30) #6
  br label %571

571:                                              ; preds = %570, %288
  call void @llvm.lifetime.end.p0(i64 16, ptr %30) #6
  br label %572

572:                                              ; preds = %571, %284, %239
  call void @_ZN6basisu6vectorINS_15basisu_frontend27endpoint_cluster_etc_paramsEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %28) #6
  br label %573

573:                                              ; preds = %572, %235
  call void @llvm.lifetime.end.p0(i64 16, ptr %28) #6
  br label %575

574:                                              ; preds = %569, %217
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #6
  call void @_ZN6basisu6vectorIhED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %16) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %16) #6
  call void @_ZN6basisu6vectorIhED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %15) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %15) #6
  call void @_ZN6basisu6vectorINS0_IjEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %11) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %11) #6
  ret void

575:                                              ; preds = %573, %231, %175
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #6
  br label %576

576:                                              ; preds = %575, %171, %167
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #6
  br label %577

577:                                              ; preds = %576, %163, %142
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #6
  call void @_ZN6basisu6vectorIhED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %16) #6
  br label %578

578:                                              ; preds = %577, %95
  call void @llvm.lifetime.end.p0(i64 16, ptr %16) #6
  call void @_ZN6basisu6vectorIhED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %15) #6
  br label %579

579:                                              ; preds = %578, %91
  call void @llvm.lifetime.end.p0(i64 16, ptr %15) #6
  br label %580

580:                                              ; preds = %579, %58
  call void @_ZN6basisu6vectorINS0_IjEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %11) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %11) #6
  br label %581

581:                                              ; preds = %580
  %582 = load ptr, ptr %13, align 8
  %583 = load i32, ptr %14, align 4
  %584 = insertvalue { ptr, i32 } poison, ptr %582, 0
  %585 = insertvalue { ptr, i32 } %584, i32 %583, 1
  resume { ptr, i32 } %585
}

; Function Attrs: mustprogress uwtable
declare hidden void @"_ZNSt8functionIFvvEEC2IZN6basisu15basisu_frontend29reoptimize_remapped_endpointsERKNS3_6vectorIjEERNS5_IiEEbPS6_E3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(48)) unnamed_addr #3 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6basisu6vectorIiE6resizeEmb(ptr noundef nonnull align 8 dereferenceable(16), i64 noundef, i1 noundef zeroext) #5 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6basisu14vector_set_allINS_6vectorIiEEEEvRT_RKNS3_10value_typeE(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 4 dereferenceable(4)) #3

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZN6basisu6vectorINS_15basisu_frontend27endpoint_cluster_etc_paramsEEaSERKS3_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) #5 align 2

attributes #0 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { inlinehint mustprogress 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 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { mustprogress 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 #4 = { mustprogress 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 #5 = { inlinehint mustprogress 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 #6 = { 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++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"bool", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"int", !7, i64 0}
!13 = distinct !{!13, !14}
!14 = !{!"llvm.loop.mustprogress"}
!15 = !{!16, !6, i64 80}
!16 = !{!"_ZTSN6basisu15basisu_frontendE", !17, i64 0, !12, i64 88, !12, i64 92, !10, i64 96, !10, i64 97, !10, i64 98, !12, i64 100, !12, i64 104, !20, i64 112, !21, i64 128, !21, i64 144, !21, i64 160, !22, i64 176, !25, i64 216, !25, i64 232, !26, i64 248, !25, i64 264, !27, i64 280, !28, i64 296, !25, i64 312, !21, i64 328, !25, i64 344, !26, i64 360, !25, i64 376, !29, i64 392, !30, i64 408, !31, i64 424, !32, i64 440, !33, i64 456}
!17 = !{!"_ZTSN6basisu15basisu_frontend6paramsE", !12, i64 0, !6, i64 8, !12, i64 16, !12, i64 20, !12, i64 24, !10, i64 28, !10, i64 29, !10, i64 30, !10, i64 31, !10, i64 32, !10, i64 33, !10, i64 34, !6, i64 40, !12, i64 48, !12, i64 52, !10, i64 56, !18, i64 60, !19, i64 64, !6, i64 72, !6, i64 80}
!18 = !{!"float", !7, i64 0}
!19 = !{!"_ZTSN6basist18basis_texture_typeE", !7, i64 0}
!20 = !{!"_ZTSN6basisu6vectorINS_11pixel_blockEEE", !6, i64 0, !12, i64 8, !12, i64 12}
!21 = !{!"_ZTSN6basisu6vectorINS_9etc_blockEEE", !6, i64 0, !12, i64 8, !12, i64 12}
!22 = !{!"_ZTSN6basisu17tree_vector_quantINS_3vecILj6EfEEEE", !23, i64 0, !24, i64 16, !12, i64 32}
!23 = !{!"_ZTSN6basisu6vectorINS_17tree_vector_quantINS_3vecILj6EfEEE9tsvq_nodeEEE", !6, i64 0, !12, i64 8, !12, i64 12}
!24 = !{!"_ZTSN6basisu6vectorISt4pairINS_3vecILj6EfEEmEEE", !6, i64 0, !12, i64 8, !12, i64 12}
!25 = !{!"_ZTSN6basisu6vectorINS0_IjEEEE", !6, i64 0, !12, i64 8, !12, i64 12}
!26 = !{!"_ZTSN6basisu6vectorIhEE", !6, i64 0, !12, i64 8, !12, i64 12}
!27 = !{!"_ZTSN6basisu6vectorINS_15basisu_frontend27endpoint_cluster_etc_paramsEEE", !6, i64 0, !12, i64 8, !12, i64 12}
!28 = !{!"_ZTSN6basisu6vectorINS_5vec2UEEE", !6, i64 0, !12, i64 8, !12, i64 12}
!29 = !{!"_ZTSN6basisu6vectorIN6basist38etc1_global_selector_codebook_entry_idEEE", !6, i64 0, !12, i64 8, !12, i64 12}
!30 = !{!"_ZTSN6basisu6vectorIbEE", !6, i64 0, !12, i64 8, !12, i64 12}
!31 = !{!"_ZTSN6basisu6vectorIjEE", !6, i64 0, !12, i64 8, !12, i64 12}
!32 = !{!"_ZTSN6basisu6vectorINS_15basisu_frontend27subblock_endpoint_quant_errEEE", !6, i64 0, !12, i64 8, !12, i64 12}
!33 = !{!"_ZTSSt5mutex", !34, i64 0}
!34 = !{!"_ZTSSt12__mutex_base", !7, i64 0}
!35 = !{!36, !6, i64 0}
!36 = !{!"_ZTSZN6basisu15basisu_frontend29reoptimize_remapped_endpointsERKNS_6vectorIjEERNS1_IiEEbPS2_E3$_0", !6, i64 0, !12, i64 8, !12, i64 12, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40}
!37 = !{!36, !12, i64 8}
!38 = !{!36, !12, i64 12}
!39 = distinct !{!39, !14}
!40 = !{!7, !7, i64 0}
!41 = distinct !{!41, !14}
!42 = !{i8 0, i8 2}
!43 = !{}
!44 = distinct !{!44, !14}
!45 = distinct !{!45, !14}
!46 = distinct !{!46, !14}
!47 = distinct !{!47, !14}
!48 = distinct !{!48, !14}


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

%"class.basisu::vector.6" = type { ptr, i32, i32 }
%"class.basisu::vector.8" = type { ptr, i32, i32 }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%class.anon.93 = type { ptr, i32, i32, ptr, ptr, ptr, ptr }
%"class.basisu::vector.10" = type { ptr, i32, i32 }

@.str.12 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [27 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [57 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [40 x i8], align 1

declare void @_ZN6basisu12debug_printfEPKcz(ptr noundef, ...) local_unnamed_addr #0

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN6basisu6vectorINS_9etc_blockEEixEm(ptr noundef nonnull align 8 dereferenceable(16), i64 noundef) local_unnamed_addr #1 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK6basisu6vectorINS_9etc_blockEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #1 align 2

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden void @_ZN6basisuL21handle_verify_failureEi(i32 noundef) local_unnamed_addr #1

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6basisu15basisu_frontend46eliminate_redundant_or_empty_endpoint_clustersEv(ptr noundef nonnull align 8 dereferenceable(496)) local_unnamed_addr #3 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK6basisu6vectorINS0_IjEEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #1 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(51) ptr @_ZN6basisu6vectorINS_15basisu_frontend27endpoint_cluster_etc_paramsEEixEm(ptr noundef nonnull align 8 dereferenceable(16), i64 noundef) local_unnamed_addr #1 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN6basisu7minimumIjEET_S1_S1_(i32 noundef, i32 noundef) local_unnamed_addr #1

declare void @_ZN6basisu8job_pool7add_jobEOSt8functionIFvvEE(ptr noundef nonnull align 8 dereferenceable(189), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #0

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #4 align 2

declare void @_ZN6basisu8job_pool12wait_for_allEv(ptr noundef nonnull align 8 dereferenceable(189)) local_unnamed_addr #0

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(8) ptr @_ZN6basisu6vectorINS_5vec2UEEixEm(ptr noundef nonnull align 8 dereferenceable(16), i64 noundef) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZN6basisu5vec2UixEj(ptr noundef nonnull align 4 dereferenceable(8), i32 noundef) local_unnamed_addr #4 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZN6basisu6vectorINS0_IjEEEixEm(ptr noundef nonnull align 8 dereferenceable(16), i64 noundef) local_unnamed_addr #1 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6basisu6vectorIjE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZN6basisu6vectorIjEixEm(ptr noundef nonnull align 8 dereferenceable(16), i64 noundef) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6basisu9etc_block22set_block_color5_etc1sERKNS_10color_rgbaE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 1 dereferenceable(4)) local_unnamed_addr #3 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6basisu9etc_block22set_inten_tables_etc1sEj(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef) local_unnamed_addr #5 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZNK6basisu15basisu_frontend35get_subblock_endpoint_cluster_indexEjj(ptr noundef nonnull align 8 dereferenceable(496), i32 noundef, i32 noundef) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 1 dereferenceable(4) ptr @_ZNK6basisu15basisu_frontend35get_endpoint_cluster_unscaled_colorEjb(ptr noundef nonnull align 8 dereferenceable(496), i32 noundef, i1 noundef zeroext) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK6basisu15basisu_frontend32get_endpoint_cluster_inten_tableEjb(ptr noundef nonnull align 8 dereferenceable(496), i32 noundef, i1 noundef zeroext) local_unnamed_addr #4 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK6basisu6vectorIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #1 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZN6basisu6vectorIiEixEm(ptr noundef nonnull align 8 dereferenceable(16), i64 noundef) local_unnamed_addr #1 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6basisu6vectorINS0_IjEEEC2Em(ptr noundef nonnull align 8 dereferenceable(16), i64 noundef) unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN6basisu6vectorINS0_IjEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #1 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNK6basisu6vectorIjEixEm(ptr noundef nonnull align 8 dereferenceable(16), i64 noundef) local_unnamed_addr #1 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZN6basisu6vectorIhEixEm(ptr noundef nonnull align 8 dereferenceable(16), i64 noundef) local_unnamed_addr #1 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK6basisu6vectorINS_15basisu_frontend27endpoint_cluster_etc_paramsEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #1 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZN6basisu6vectorINS0_IjEEEaSERKS2_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6basisu6vectorINS_15basisu_frontend27endpoint_cluster_etc_paramsEEC2Em(ptr noundef nonnull align 8 dereferenceable(16), i64 noundef) unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(51) ptr @_ZN6basisu15basisu_frontend27endpoint_cluster_etc_paramsaSERKS1_(ptr noundef nonnull align 8 dereferenceable(51), ptr noundef nonnull align 8 dereferenceable(51)) local_unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN6basisu6vectorINS_15basisu_frontend27endpoint_cluster_etc_paramsEED2Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #1 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6basisu6vectorIhEC2Em(ptr noundef nonnull align 8 dereferenceable(16), i64 noundef) unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN6basisu6vectorIhED2Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN6basisu15basisu_frontend29reoptimize_remapped_endpointsERKNS_6vectorIjEERNS1_IiEEbPS2_(ptr noundef nonnull align 8 dereferenceable(496) %0, ptr noundef nonnull align 8 dereferenceable(16) %1, ptr noundef nonnull align 8 dereferenceable(16) %2, i1 noundef zeroext %3, ptr noundef %4) local_unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 {
  %6 = alloca ptr, align 8
  %7 = alloca %"class.basisu::vector.6", align 8
  %8 = alloca i32, align 4
  %9 = alloca %"class.basisu::vector.8", align 8
  %10 = alloca %"class.basisu::vector.8", align 8
  %11 = alloca %"class.std::function", align 8
  %12 = alloca %class.anon.93, align 8
  %13 = alloca i32, align 4
  %14 = alloca %"class.basisu::vector.10", align 8
  %15 = alloca %"class.basisu::vector.6", align 8
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  store ptr %4, ptr %6, align 8, !tbaa !5
  tail call void (ptr, ...) @_ZN6basisu12debug_printfEPKcz(ptr noundef nonnull @.str.49)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %7) #6
  %20 = getelementptr inbounds i8, ptr %0, i64 216
  %21 = tail call noundef i32 @_ZNK6basisu6vectorINS0_IjEEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %20)
  %22 = zext i32 %21 to i64
  call void @_ZN6basisu6vectorINS0_IjEEEC2Em(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 noundef %22)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %8) #6
  store i32 0, ptr %8, align 4, !tbaa !9
  %23 = call noundef i32 @_ZNK6basisu6vectorIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %1)
  %.not152 = icmp eq i32 %23, 0
  br i1 %.not152, label %._crit_edge, label %.lr.ph

._crit_edge:                                      ; preds = %34, %5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %9) #6
  %24 = call noundef i32 @_ZNK6basisu6vectorINS0_IjEEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %7)
  %25 = zext i32 %24 to i64
  invoke void @_ZN6basisu6vectorIhEC2Em(ptr noundef nonnull align 8 dereferenceable(16) %9, i64 noundef %25)
          to label %39 unwind label %52

26:                                               ; preds = %.lr.ph
  %27 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #6
  br label %238

.lr.ph:                                           ; preds = %5, %34
  %28 = load i32, ptr %8, align 4, !tbaa !9
  %29 = zext i32 %28 to i64
  %30 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK6basisu6vectorIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %1, i64 noundef %29)
  %31 = load i32, ptr %30, align 4, !tbaa !9
  %32 = zext i32 %31 to i64
  %33 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN6basisu6vectorINS0_IjEEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 noundef %32)
  invoke void @_ZN6basisu6vectorIjE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(16) %33, ptr noundef nonnull align 4 dereferenceable(4) %8)
          to label %34 unwind label %26

34:                                               ; preds = %.lr.ph
  %35 = load i32, ptr %8, align 4, !tbaa !9
  %36 = add i32 %35, 1
  store i32 %36, ptr %8, align 4, !tbaa !9
  %37 = call noundef i32 @_ZNK6basisu6vectorIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %1)
  %38 = icmp ult i32 %36, %37
  br i1 %38, label %.lr.ph, label %._crit_edge, !llvm.loop !11

39:                                               ; preds = %._crit_edge
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %10) #6
  %40 = call noundef i32 @_ZNK6basisu6vectorINS0_IjEEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %7)
  %41 = zext i32 %40 to i64
  invoke void @_ZN6basisu6vectorIhEC2Em(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %41)
          to label %.preheader125 unwind label %54

.preheader125:                                    ; preds = %39
  %42 = call noundef i32 @_ZNK6basisu6vectorINS0_IjEEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %7)
  %.not153 = icmp eq i32 %42, 0
  br i1 %.not153, label %._crit_edge128, label %.lr.ph127

.lr.ph127:                                        ; preds = %.preheader125
  %43 = getelementptr inbounds i8, ptr %0, i64 80
  %44 = getelementptr inbounds i8, ptr %12, i64 8
  %45 = getelementptr inbounds i8, ptr %12, i64 12
  %46 = getelementptr inbounds i8, ptr %12, i64 16
  %47 = getelementptr inbounds i8, ptr %12, i64 24
  %48 = getelementptr inbounds i8, ptr %12, i64 32
  %49 = getelementptr inbounds i8, ptr %12, i64 40
  br label %56

._crit_edge128:                                   ; preds = %62, %.preheader125
  %50 = getelementptr inbounds i8, ptr %0, i64 80
  %51 = load ptr, ptr %50, align 8, !tbaa !13
  invoke void @_ZN6basisu8job_pool12wait_for_allEv(ptr noundef nonnull align 8 dereferenceable(189) %51)
          to label %70 unwind label %76

52:                                               ; preds = %._crit_edge
  %53 = landingpad { ptr, i32 }
          cleanup
  br label %237

54:                                               ; preds = %39
  %55 = landingpad { ptr, i32 }
          cleanup
  br label %236

56:                                               ; preds = %.lr.ph127, %62
  %.093126 = phi i32 [ 0, %.lr.ph127 ], [ %58, %62 ]
  %57 = call noundef i32 @_ZNK6basisu6vectorINS0_IjEEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %7)
  %58 = add i32 %.093126, 256
  %59 = call noundef i32 @_ZN6basisu7minimumIjEET_S1_S1_(i32 noundef %57, i32 noundef %58)
  %60 = load ptr, ptr %43, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %11) #6
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %12) #6
  store ptr %0, ptr %12, align 8, !tbaa !34
  store i32 %.093126, ptr %44, align 8, !tbaa !36
  store i32 %59, ptr %45, align 4, !tbaa !37
  store ptr %10, ptr %46, align 8, !tbaa !5
  store ptr %9, ptr %47, align 8, !tbaa !5
  store ptr %7, ptr %48, align 8, !tbaa !5
  store ptr %6, ptr %49, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFvvEEC2IZN6basisu15basisu_frontend29reoptimize_remapped_endpointsERKNS3_6vectorIjEERNS5_IiEEbPS6_E3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull align 8 dereferenceable(48) %12)
          to label %61 unwind label %65

61:                                               ; preds = %56
  invoke void @_ZN6basisu8job_pool7add_jobEOSt8functionIFvvEE(ptr noundef nonnull align 8 dereferenceable(189) %60, ptr noundef nonnull align 8 dereferenceable(32) %11)
          to label %62 unwind label %67

62:                                               ; preds = %61
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #6
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %12) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #6
  %63 = call noundef i32 @_ZNK6basisu6vectorINS0_IjEEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %7)
  %64 = icmp ult i32 %58, %63
  br i1 %64, label %56, label %._crit_edge128, !llvm.loop !38

65:                                               ; preds = %56
  %66 = landingpad { ptr, i32 }
          cleanup
  br label %69

67:                                               ; preds = %61
  %68 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #6
  br label %69

69:                                               ; preds = %67, %65
  %.pn114 = phi { ptr, i32 } [ %68, %67 ], [ %66, %65 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %12) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #6
  br label %235

70:                                               ; preds = %._crit_edge128
  %71 = call noundef i32 @_ZNK6basisu6vectorINS0_IjEEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %20)
  %72 = zext i32 %71 to i64
  invoke void @_ZN6basisu6vectorIiE6resizeEmb(ptr noundef nonnull align 8 dereferenceable(16) %2, i64 noundef %72, i1 noundef zeroext false)
          to label %73 unwind label %78

73:                                               ; preds = %70
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %13) #6
  store i32 -1, ptr %13, align 4, !tbaa !9
  invoke void @_ZN6basisu14vector_set_allINS_6vectorIiEEEEvRT_RKNS3_10value_typeE(ptr noundef nonnull align 8 dereferenceable(16) %2, ptr noundef nonnull align 4 dereferenceable(4) %13)
          to label %74 unwind label %80

74:                                               ; preds = %73
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #6
  %75 = call noundef i32 @_ZNK6basisu6vectorINS0_IjEEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %20)
  %.not154 = icmp eq i32 %75, 0
  br i1 %.not154, label %._crit_edge135, label %.lr.ph134

._crit_edge135:                                   ; preds = %89, %74
  %.0100.lcssa = phi i32 [ 0, %74 ], [ %.1101, %89 ]
  %.098.lcssa = phi i32 [ 0, %74 ], [ %spec.select, %89 ]
  %.094.lcssa = phi i32 [ 0, %74 ], [ %.195, %89 ]
  invoke void (ptr, ...) @_ZN6basisu12debug_printfEPKcz(ptr noundef nonnull @.str.50, i32 noundef %.094.lcssa)
          to label %96 unwind label %103

76:                                               ; preds = %._crit_edge128
  %77 = landingpad { ptr, i32 }
          cleanup
  br label %235

78:                                               ; preds = %70
  %79 = landingpad { ptr, i32 }
          cleanup
  br label %235

80:                                               ; preds = %73
  %81 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #6
  br label %235

.lr.ph134:                                        ; preds = %74, %89
  %indvars.iv = phi i64 [ %indvars.iv.next, %89 ], [ 0, %74 ]
  %.094132 = phi i32 [ %.195, %89 ], [ 0, %74 ]
  %.098131 = phi i32 [ %spec.select, %89 ], [ 0, %74 ]
  %.0100130 = phi i32 [ %.1101, %89 ], [ 0, %74 ]
  %82 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZN6basisu6vectorIhEixEm(ptr noundef nonnull align 8 dereferenceable(16) %9, i64 noundef %indvars.iv)
  %83 = load i8, ptr %82, align 1, !tbaa !39
  %.not = icmp eq i8 %83, 0
  br i1 %.not, label %84, label %86

84:                                               ; preds = %.lr.ph134
  %85 = add i32 %.094132, 1
  br label %89

86:                                               ; preds = %.lr.ph134
  %87 = add nsw i32 %.0100130, 1
  %88 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN6basisu6vectorIiEixEm(ptr noundef nonnull align 8 dereferenceable(16) %2, i64 noundef %indvars.iv)
  store i32 %.0100130, ptr %88, align 4, !tbaa !9
  br label %89

89:                                               ; preds = %86, %84
  %.1101 = phi i32 [ %87, %86 ], [ %.0100130, %84 ]
  %.195 = phi i32 [ %.094132, %86 ], [ %85, %84 ]
  %90 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZN6basisu6vectorIhEixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %indvars.iv)
  %91 = load i8, ptr %90, align 1, !tbaa !39
  %.not113 = icmp ne i8 %91, 0
  %92 = zext i1 %.not113 to i32
  %spec.select = add i32 %.098131, %92
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %93 = call noundef i32 @_ZNK6basisu6vectorINS0_IjEEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %20)
  %94 = zext i32 %93 to i64
  %95 = icmp ult i64 %indvars.iv.next, %94
  br i1 %95, label %.lr.ph134, label %._crit_edge135, !llvm.loop !40

96:                                               ; preds = %._crit_edge135
  invoke void (ptr, ...) @_ZN6basisu12debug_printfEPKcz(ptr noundef nonnull @.str.51, i32 noundef %.098.lcssa)
          to label %97 unwind label %103

97:                                               ; preds = %96
  invoke void (ptr, ...) @_ZN6basisu12debug_printfEPKcz(ptr noundef nonnull @.str.12, i32 noundef %.0100.lcssa)
          to label %98 unwind label %103

98:                                               ; preds = %97
  br i1 %3, label %99, label %234

99:                                               ; preds = %98
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %14) #6
  %100 = sext i32 %.0100.lcssa to i64
  invoke void @_ZN6basisu6vectorINS_15basisu_frontend27endpoint_cluster_etc_paramsEEC2Em(ptr noundef nonnull align 8 dereferenceable(16) %14, i64 noundef %100)
          to label %.preheader124 unwind label %105

.preheader124:                                    ; preds = %99
  %101 = call noundef i32 @_ZNK6basisu6vectorINS0_IjEEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %20)
  %.not155 = icmp eq i32 %101, 0
  br i1 %.not155, label %._crit_edge140, label %.lr.ph139

.lr.ph139:                                        ; preds = %.preheader124
  %102 = getelementptr inbounds i8, ptr %0, i64 280
  br label %109

._crit_edge140:                                   ; preds = %120, %.preheader124
  invoke void (ptr, ...) @_ZN6basisu12debug_printfEPKcz(ptr noundef nonnull @.str.52)
          to label %124 unwind label %127

103:                                              ; preds = %97, %96, %._crit_edge135
  %104 = landingpad { ptr, i32 }
          cleanup
  br label %235

105:                                              ; preds = %99
  %106 = landingpad { ptr, i32 }
          cleanup
  br label %233

107:                                              ; preds = %113
  %108 = landingpad { ptr, i32 }
          cleanup
  br label %232

109:                                              ; preds = %.lr.ph139, %120
  %indvars.iv161 = phi i64 [ 0, %.lr.ph139 ], [ %indvars.iv.next162, %120 ]
  %110 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN6basisu6vectorIiEixEm(ptr noundef nonnull align 8 dereferenceable(16) %2, i64 noundef %indvars.iv161)
  %111 = load i32, ptr %110, align 4, !tbaa !9
  %112 = icmp sgt i32 %111, -1
  br i1 %112, label %113, label %120

113:                                              ; preds = %109
  %114 = call noundef nonnull align 8 dereferenceable(51) ptr @_ZN6basisu6vectorINS_15basisu_frontend27endpoint_cluster_etc_paramsEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %102, i64 noundef %indvars.iv161)
  %115 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN6basisu6vectorIiEixEm(ptr noundef nonnull align 8 dereferenceable(16) %2, i64 noundef %indvars.iv161)
  %116 = load i32, ptr %115, align 4, !tbaa !9
  %117 = sext i32 %116 to i64
  %118 = call noundef nonnull align 8 dereferenceable(51) ptr @_ZN6basisu6vectorINS_15basisu_frontend27endpoint_cluster_etc_paramsEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %14, i64 noundef %117)
  %119 = invoke noundef nonnull align 8 dereferenceable(51) ptr @_ZN6basisu15basisu_frontend27endpoint_cluster_etc_paramsaSERKS1_(ptr noundef nonnull align 8 dereferenceable(51) %118, ptr noundef nonnull align 8 dereferenceable(51) %114)
          to label %120 unwind label %107

120:                                              ; preds = %109, %113
  %indvars.iv.next162 = add nuw nsw i64 %indvars.iv161, 1
  %121 = call noundef i32 @_ZNK6basisu6vectorINS0_IjEEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %20)
  %122 = zext i32 %121 to i64
  %123 = icmp ult i64 %indvars.iv.next162, %122
  br i1 %123, label %109, label %._crit_edge140, !llvm.loop !41

124:                                              ; preds = %._crit_edge140
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %15) #6
  invoke void @_ZN6basisu6vectorINS0_IjEEEC2Em(ptr noundef nonnull align 8 dereferenceable(16) %15, i64 noundef %100)
          to label %.preheader123 unwind label %129

.preheader123:                                    ; preds = %124
  %125 = call noundef i32 @_ZNK6basisu6vectorIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %1)
  %.not156 = icmp eq i32 %125, 0
  br i1 %.not156, label %._crit_edge143, label %.lr.ph142

.lr.ph142:                                        ; preds = %.preheader123
  %126 = getelementptr inbounds i8, ptr %0, i64 296
  br label %131

._crit_edge143:                                   ; preds = %165, %.preheader123
  invoke void (ptr, ...) @_ZN6basisu12debug_printfEPKcz(ptr noundef nonnull @.str.53)
          to label %177 unwind label %191

127:                                              ; preds = %._crit_edge140
  %128 = landingpad { ptr, i32 }
          cleanup
  br label %232

129:                                              ; preds = %124
  %130 = landingpad { ptr, i32 }
          cleanup
  br label %231

131:                                              ; preds = %.lr.ph142, %165
  %indvars.iv164 = phi i64 [ 0, %.lr.ph142 ], [ %indvars.iv.next165, %165 ]
  %132 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK6basisu6vectorIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %1, i64 noundef %indvars.iv164)
  %133 = load i32, ptr %132, align 4, !tbaa !9
  %134 = zext i32 %133 to i64
  %135 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN6basisu6vectorIiEixEm(ptr noundef nonnull align 8 dereferenceable(16) %2, i64 noundef %134)
  %136 = load i32, ptr %135, align 4, !tbaa !9
  %137 = icmp sgt i32 %136, -1
  br i1 %137, label %139, label %138

138:                                              ; preds = %131
  call void @_ZN6basisuL21handle_verify_failureEi(i32 noundef 2784)
  br label %139

139:                                              ; preds = %131, %138
  %140 = call noundef i32 @_ZNK6basisu6vectorINS0_IjEEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %15)
  %141 = icmp slt i32 %136, %140
  br i1 %141, label %143, label %142

142:                                              ; preds = %139
  call void @_ZN6basisuL21handle_verify_failureEi(i32 noundef 2786)
  br label %143

143:                                              ; preds = %142, %139
  %144 = sext i32 %136 to i64
  %145 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN6basisu6vectorINS0_IjEEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %15, i64 noundef %144)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %16) #6
  %146 = trunc nuw i64 %indvars.iv164 to i32
  %147 = shl i32 %146, 1
  store i32 %147, ptr %16, align 4, !tbaa !9
  invoke void @_ZN6basisu6vectorIjE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(16) %145, ptr noundef nonnull align 4 dereferenceable(4) %16)
          to label %148 unwind label %155

148:                                              ; preds = %143
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #6
  %149 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN6basisu6vectorINS0_IjEEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %15, i64 noundef %144)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #6
  %150 = or disjoint i32 %147, 1
  store i32 %150, ptr %17, align 4, !tbaa !9
  invoke void @_ZN6basisu6vectorIjE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(16) %149, ptr noundef nonnull align 4 dereferenceable(4) %17)
          to label %151 unwind label %157

151:                                              ; preds = %148
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #6
  %152 = call noundef i32 @_ZNK6basisu6vectorINS_15basisu_frontend27endpoint_cluster_etc_paramsEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %14)
  %153 = icmp slt i32 %136, %152
  br i1 %153, label %159, label %154

154:                                              ; preds = %151
  call void @_ZN6basisuL21handle_verify_failureEi(i32 noundef 2791)
  br label %159

155:                                              ; preds = %143
  %156 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #6
  br label %230

157:                                              ; preds = %148
  %158 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #6
  br label %230

159:                                              ; preds = %154, %151
  %160 = call noundef nonnull align 8 dereferenceable(51) ptr @_ZN6basisu6vectorINS_15basisu_frontend27endpoint_cluster_etc_paramsEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %14, i64 noundef %144)
  %161 = getelementptr inbounds i8, ptr %160, i64 32
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %18) #6
  store i32 %147, ptr %18, align 4, !tbaa !9
  invoke void @_ZN6basisu6vectorIjE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(16) %161, ptr noundef nonnull align 4 dereferenceable(4) %18)
          to label %162 unwind label %173

162:                                              ; preds = %159
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #6
  %163 = call noundef nonnull align 8 dereferenceable(51) ptr @_ZN6basisu6vectorINS_15basisu_frontend27endpoint_cluster_etc_paramsEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %14, i64 noundef %144)
  %164 = getelementptr inbounds i8, ptr %163, i64 32
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %19) #6
  store i32 %150, ptr %19, align 4, !tbaa !9
  invoke void @_ZN6basisu6vectorIjE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(16) %164, ptr noundef nonnull align 4 dereferenceable(4) %19)
          to label %165 unwind label %175

165:                                              ; preds = %162
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #6
  %166 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN6basisu6vectorINS_5vec2UEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %126, i64 noundef %indvars.iv164)
  %167 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN6basisu5vec2UixEj(ptr noundef nonnull align 4 dereferenceable(8) %166, i32 noundef 0)
  store i32 %136, ptr %167, align 4, !tbaa !9
  %168 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN6basisu6vectorINS_5vec2UEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %126, i64 noundef %indvars.iv164)
  %169 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN6basisu5vec2UixEj(ptr noundef nonnull align 4 dereferenceable(8) %168, i32 noundef 1)
  store i32 %136, ptr %169, align 4, !tbaa !9
  %indvars.iv.next165 = add nuw nsw i64 %indvars.iv164, 1
  %170 = call noundef i32 @_ZNK6basisu6vectorIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %1)
  %171 = zext i32 %170 to i64
  %172 = icmp ult i64 %indvars.iv.next165, %171
  br i1 %172, label %131, label %._crit_edge143, !llvm.loop !42

173:                                              ; preds = %159
  %174 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #6
  br label %230

175:                                              ; preds = %162
  %176 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #6
  br label %230

177:                                              ; preds = %._crit_edge143
  %178 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN6basisu6vectorINS0_IjEEEaSERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %20, ptr noundef nonnull align 8 dereferenceable(16) %15)
          to label %179 unwind label %191

179:                                              ; preds = %177
  %180 = getelementptr inbounds i8, ptr %0, i64 280
  %181 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN6basisu6vectorINS_15basisu_frontend27endpoint_cluster_etc_paramsEEaSERKS3_(ptr noundef nonnull align 8 dereferenceable(16) %180, ptr noundef nonnull align 8 dereferenceable(16) %14)
          to label %182 unwind label %191

182:                                              ; preds = %179
  invoke void @_ZN6basisu15basisu_frontend46eliminate_redundant_or_empty_endpoint_clustersEv(ptr noundef nonnull align 8 dereferenceable(496) %0)
          to label %183 unwind label %191

183:                                              ; preds = %182
  invoke void (ptr, ...) @_ZN6basisu12debug_printfEPKcz(ptr noundef nonnull @.str.54)
          to label %.preheader122 unwind label %191

.preheader122:                                    ; preds = %183
  %184 = call noundef i32 @_ZNK6basisu6vectorINS0_IjEEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %20)
  %.not157 = icmp eq i32 %184, 0
  br i1 %.not157, label %._crit_edge148, label %.preheader121.lr.ph

.preheader121.lr.ph:                              ; preds = %.preheader122
  %185 = getelementptr inbounds i8, ptr %0, i64 296
  br label %.preheader121

.preheader121:                                    ; preds = %.preheader121.lr.ph, %._crit_edge146
  %indvars.iv170 = phi i64 [ 0, %.preheader121.lr.ph ], [ %indvars.iv.next171, %._crit_edge146 ]
  %186 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN6basisu6vectorINS0_IjEEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %20, i64 noundef %indvars.iv170)
  %187 = call noundef i32 @_ZNK6basisu6vectorIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %186)
  %.not158 = icmp eq i32 %187, 0
  br i1 %.not158, label %._crit_edge146, label %.lr.ph145.preheader

.lr.ph145.preheader:                              ; preds = %.preheader121
  %188 = trunc nuw i64 %indvars.iv170 to i32
  br label %.lr.ph145

._crit_edge148:                                   ; preds = %._crit_edge146, %.preheader122
  invoke void (ptr, ...) @_ZN6basisu12debug_printfEPKcz(ptr noundef nonnull @.str.55)
          to label %.preheader unwind label %191

.preheader:                                       ; preds = %._crit_edge148
  %189 = getelementptr inbounds i8, ptr %0, i64 128
  %190 = call noundef i32 @_ZNK6basisu6vectorINS_9etc_blockEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %189)
  %.not159 = icmp eq i32 %190, 0
  br i1 %.not159, label %._crit_edge151, label %.lr.ph150

191:                                              ; preds = %._crit_edge151, %._crit_edge148, %183, %182, %179, %177, %._crit_edge143
  %192 = landingpad { ptr, i32 }
          cleanup
  br label %230

._crit_edge146:                                   ; preds = %.lr.ph145, %.preheader121
  %indvars.iv.next171 = add nuw nsw i64 %indvars.iv170, 1
  %193 = call noundef i32 @_ZNK6basisu6vectorINS0_IjEEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %20)
  %194 = zext i32 %193 to i64
  %195 = icmp ult i64 %indvars.iv.next171, %194
  br i1 %195, label %.preheader121, label %._crit_edge148, !llvm.loop !43

.lr.ph145:                                        ; preds = %.lr.ph145.preheader, %.lr.ph145
  %indvars.iv167 = phi i64 [ 0, %.lr.ph145.preheader ], [ %indvars.iv.next168, %.lr.ph145 ]
  %196 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN6basisu6vectorINS0_IjEEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %20, i64 noundef %indvars.iv170)
  %197 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN6basisu6vectorIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %196, i64 noundef %indvars.iv167)
  %198 = load i32, ptr %197, align 4, !tbaa !9
  %199 = lshr i32 %198, 1
  %200 = zext nneg i32 %199 to i64
  %201 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN6basisu6vectorINS_5vec2UEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %185, i64 noundef %200)
  %202 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN6basisu5vec2UixEj(ptr noundef nonnull align 4 dereferenceable(8) %201, i32 noundef 0)
  store i32 %188, ptr %202, align 4, !tbaa !9
  %203 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN6basisu6vectorINS_5vec2UEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %185, i64 noundef %200)
  %204 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN6basisu5vec2UixEj(ptr noundef nonnull align 4 dereferenceable(8) %203, i32 noundef 1)
  store i32 %188, ptr %204, align 4, !tbaa !9
  %205 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK6basisu6vectorIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %1, i64 noundef %200)
  %206 = load i32, ptr %205, align 4, !tbaa !9
  %207 = zext i32 %206 to i64
  %208 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN6basisu6vectorIiEixEm(ptr noundef nonnull align 8 dereferenceable(16) %2, i64 noundef %207)
  store i32 %188, ptr %208, align 4, !tbaa !9
  %indvars.iv.next168 = add nuw nsw i64 %indvars.iv167, 1
  %209 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN6basisu6vectorINS0_IjEEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %20, i64 noundef %indvars.iv170)
  %210 = call noundef i32 @_ZNK6basisu6vectorIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %209)
  %211 = zext i32 %210 to i64
  %212 = icmp ult i64 %indvars.iv.next168, %211
  br i1 %212, label %.lr.ph145, label %._crit_edge146, !llvm.loop !44

._crit_edge151:                                   ; preds = %223, %.preheader
  %213 = call noundef i32 @_ZNK6basisu6vectorINS0_IjEEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %20)
  invoke void (ptr, ...) @_ZN6basisu12debug_printfEPKcz(ptr noundef nonnull @.str.56, i32 noundef %213)
          to label %229 unwind label %191

.lr.ph150:                                        ; preds = %.preheader, %223
  %indvars.iv173 = phi i64 [ %indvars.iv.next174, %223 ], [ 0, %.preheader ]
  %214 = trunc nuw i64 %indvars.iv173 to i32
  %215 = invoke noundef i32 @_ZNK6basisu15basisu_frontend35get_subblock_endpoint_cluster_indexEjj(ptr noundef nonnull align 8 dereferenceable(496) %0, i32 noundef %214, i32 noundef 0)
          to label %216 unwind label %227

216:                                              ; preds = %.lr.ph150
  %217 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6basisu6vectorINS_9etc_blockEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %189, i64 noundef %indvars.iv173)
  %218 = invoke noundef nonnull align 1 dereferenceable(4) ptr @_ZNK6basisu15basisu_frontend35get_endpoint_cluster_unscaled_colorEjb(ptr noundef nonnull align 8 dereferenceable(496) %0, i32 noundef %215, i1 noundef zeroext false)
          to label %219 unwind label %227

219:                                              ; preds = %216
  invoke void @_ZN6basisu9etc_block22set_block_color5_etc1sERKNS_10color_rgbaE(ptr noundef nonnull align 8 dereferenceable(8) %217, ptr noundef nonnull align 1 dereferenceable(4) %218)
          to label %220 unwind label %227

220:                                              ; preds = %219
  %221 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6basisu6vectorINS_9etc_blockEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %189, i64 noundef %indvars.iv173)
  %222 = call noundef i32 @_ZNK6basisu15basisu_frontend32get_endpoint_cluster_inten_tableEjb(ptr noundef nonnull align 8 dereferenceable(496) %0, i32 noundef %215, i1 noundef zeroext false)
  invoke void @_ZN6basisu9etc_block22set_inten_tables_etc1sEj(ptr noundef nonnull align 8 dereferenceable(8) %221, i32 noundef %222)
          to label %223 unwind label %227

223:                                              ; preds = %220
  %indvars.iv.next174 = add nuw nsw i64 %indvars.iv173, 1
  %224 = call noundef i32 @_ZNK6basisu6vectorINS_9etc_blockEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %189)
  %225 = zext i32 %224 to i64
  %226 = icmp ult i64 %indvars.iv.next174, %225
  br i1 %226, label %.lr.ph150, label %._crit_edge151, !llvm.loop !45

227:                                              ; preds = %220, %219, %216, %.lr.ph150
  %228 = landingpad { ptr, i32 }
          cleanup
  br label %230

229:                                              ; preds = %._crit_edge151
  call void @_ZN6basisu6vectorINS0_IjEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %15) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #6
  call void @_ZN6basisu6vectorINS_15basisu_frontend27endpoint_cluster_etc_paramsEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %14) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #6
  br label %234

230:                                              ; preds = %155, %157, %173, %175, %227, %191
  %.pn.pn = phi { ptr, i32 } [ %228, %227 ], [ %192, %191 ], [ %176, %175 ], [ %174, %173 ], [ %158, %157 ], [ %156, %155 ]
  call void @_ZN6basisu6vectorINS0_IjEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %15) #6
  br label %231

231:                                              ; preds = %230, %129
  %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %230 ], [ %130, %129 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #6
  br label %232

232:                                              ; preds = %231, %127, %107
  %.pn108 = phi { ptr, i32 } [ %108, %107 ], [ %.pn.pn.pn, %231 ], [ %128, %127 ]
  call void @_ZN6basisu6vectorINS_15basisu_frontend27endpoint_cluster_etc_paramsEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %14) #6
  br label %233

233:                                              ; preds = %232, %105
  %.pn108.pn = phi { ptr, i32 } [ %.pn108, %232 ], [ %106, %105 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #6
  br label %235

234:                                              ; preds = %229, %98
  call void @_ZN6basisu6vectorIhED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %10) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #6
  call void @_ZN6basisu6vectorIhED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %9) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #6
  call void @_ZN6basisu6vectorINS0_IjEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %7) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #6
  ret void

235:                                              ; preds = %78, %80, %233, %103, %76, %69
  %.pn114.pn = phi { ptr, i32 } [ %.pn114, %69 ], [ %77, %76 ], [ %81, %80 ], [ %79, %78 ], [ %.pn108.pn, %233 ], [ %104, %103 ]
  call void @_ZN6basisu6vectorIhED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %10) #6
  br label %236

236:                                              ; preds = %235, %54
  %.pn114.pn.pn = phi { ptr, i32 } [ %.pn114.pn, %235 ], [ %55, %54 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #6
  call void @_ZN6basisu6vectorIhED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %9) #6
  br label %237

237:                                              ; preds = %236, %52
  %.pn114.pn.pn.pn = phi { ptr, i32 } [ %.pn114.pn.pn, %236 ], [ %53, %52 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #6
  br label %238

238:                                              ; preds = %237, %26
  %.pn119 = phi { ptr, i32 } [ %27, %26 ], [ %.pn114.pn.pn.pn, %237 ]
  call void @_ZN6basisu6vectorINS0_IjEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %7) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #6
  resume { ptr, i32 } %.pn119
}

; Function Attrs: mustprogress uwtable
declare hidden void @"_ZNSt8functionIFvvEEC2IZN6basisu15basisu_frontend29reoptimize_remapped_endpointsERKNS3_6vectorIjEERNS5_IiEEbPS6_E3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(48)) unnamed_addr #3 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6basisu6vectorIiE6resizeEmb(ptr noundef nonnull align 8 dereferenceable(16), i64 noundef, i1 noundef zeroext) local_unnamed_addr #5 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6basisu14vector_set_allINS_6vectorIiEEEEvRT_RKNS3_10value_typeE(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #3

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZN6basisu6vectorINS_15basisu_frontend27endpoint_cluster_etc_paramsEEaSERKS3_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #5 align 2

attributes #0 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { mustprogress 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 #4 = { mustprogress 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 #5 = { inlinehint mustprogress 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 #6 = { 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++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = !{!14, !6, i64 80}
!14 = !{!"_ZTSN6basisu15basisu_frontendE", !15, i64 0, !10, i64 88, !10, i64 92, !16, i64 96, !16, i64 97, !16, i64 98, !10, i64 100, !10, i64 104, !19, i64 112, !20, i64 128, !20, i64 144, !20, i64 160, !21, i64 176, !24, i64 216, !24, i64 232, !25, i64 248, !24, i64 264, !26, i64 280, !27, i64 296, !24, i64 312, !20, i64 328, !24, i64 344, !25, i64 360, !24, i64 376, !28, i64 392, !29, i64 408, !30, i64 424, !31, i64 440, !32, i64 456}
!15 = !{!"_ZTSN6basisu15basisu_frontend6paramsE", !10, i64 0, !6, i64 8, !10, i64 16, !10, i64 20, !10, i64 24, !16, i64 28, !16, i64 29, !16, i64 30, !16, i64 31, !16, i64 32, !16, i64 33, !16, i64 34, !6, i64 40, !10, i64 48, !10, i64 52, !16, i64 56, !17, i64 60, !18, i64 64, !6, i64 72, !6, i64 80}
!16 = !{!"bool", !7, i64 0}
!17 = !{!"float", !7, i64 0}
!18 = !{!"_ZTSN6basist18basis_texture_typeE", !7, i64 0}
!19 = !{!"_ZTSN6basisu6vectorINS_11pixel_blockEEE", !6, i64 0, !10, i64 8, !10, i64 12}
!20 = !{!"_ZTSN6basisu6vectorINS_9etc_blockEEE", !6, i64 0, !10, i64 8, !10, i64 12}
!21 = !{!"_ZTSN6basisu17tree_vector_quantINS_3vecILj6EfEEEE", !22, i64 0, !23, i64 16, !10, i64 32}
!22 = !{!"_ZTSN6basisu6vectorINS_17tree_vector_quantINS_3vecILj6EfEEE9tsvq_nodeEEE", !6, i64 0, !10, i64 8, !10, i64 12}
!23 = !{!"_ZTSN6basisu6vectorISt4pairINS_3vecILj6EfEEmEEE", !6, i64 0, !10, i64 8, !10, i64 12}
!24 = !{!"_ZTSN6basisu6vectorINS0_IjEEEE", !6, i64 0, !10, i64 8, !10, i64 12}
!25 = !{!"_ZTSN6basisu6vectorIhEE", !6, i64 0, !10, i64 8, !10, i64 12}
!26 = !{!"_ZTSN6basisu6vectorINS_15basisu_frontend27endpoint_cluster_etc_paramsEEE", !6, i64 0, !10, i64 8, !10, i64 12}
!27 = !{!"_ZTSN6basisu6vectorINS_5vec2UEEE", !6, i64 0, !10, i64 8, !10, i64 12}
!28 = !{!"_ZTSN6basisu6vectorIN6basist38etc1_global_selector_codebook_entry_idEEE", !6, i64 0, !10, i64 8, !10, i64 12}
!29 = !{!"_ZTSN6basisu6vectorIbEE", !6, i64 0, !10, i64 8, !10, i64 12}
!30 = !{!"_ZTSN6basisu6vectorIjEE", !6, i64 0, !10, i64 8, !10, i64 12}
!31 = !{!"_ZTSN6basisu6vectorINS_15basisu_frontend27subblock_endpoint_quant_errEEE", !6, i64 0, !10, i64 8, !10, i64 12}
!32 = !{!"_ZTSSt5mutex", !33, i64 0}
!33 = !{!"_ZTSSt12__mutex_base", !7, i64 0}
!34 = !{!35, !6, i64 0}
!35 = !{!"_ZTSZN6basisu15basisu_frontend29reoptimize_remapped_endpointsERKNS_6vectorIjEERNS1_IiEEbPS2_E3$_0", !6, i64 0, !10, i64 8, !10, i64 12, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40}
!36 = !{!35, !10, i64 8}
!37 = !{!35, !10, i64 12}
!38 = distinct !{!38, !12}
!39 = !{!7, !7, i64 0}
!40 = distinct !{!40, !12}
!41 = distinct !{!41, !12}
!42 = distinct !{!42, !12}
!43 = distinct !{!43, !12}
!44 = distinct !{!44, !12}
!45 = distinct !{!45, !12}


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