; 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.18" = type { ptr, i32, i32 }
%"class.basisu::vector.6" = type { ptr, i32, i32 }
%"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.8" = type { ptr, i32, i32 }
%"class.basisu::vector.14" = type { ptr, i32, i32 }
%"class.basisu::vector.16" = 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 }

@.str.34 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [43 x i8], align 1

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN6basisu15basisu_frontend46eliminate_redundant_or_empty_endpoint_clustersEv(ptr noundef nonnull align 8 dereferenceable(496) %0) #2 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca ptr, align 8
  %3 = alloca %"class.basisu::vector.18", align 8
  %4 = alloca i32, align 4
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  %7 = alloca %"class.basisu::vector.6", align 8
  %8 = alloca %"class.basisu::vector.10", align 8
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  store ptr %0, ptr %2, align 8, !tbaa !5
  %15 = load ptr, ptr %2, align 8
  call void (ptr, ...) @_ZN6basisu12debug_printfEPKcz(ptr noundef @.str.34)
  call void @llvm.lifetime.start.p0(i64 16, ptr %3) #5
  %16 = getelementptr inbounds %"class.basisu::basisu_frontend", ptr %15, i32 0, i32 13
  %17 = call noundef i32 @_ZNK6basisu6vectorINS0_IjEEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %16)
  %18 = zext i32 %17 to i64
  call void @_ZN6basisu6vectorIjEC2Em(ptr noundef nonnull align 8 dereferenceable(16) %3, i64 noundef %18)
  call void @llvm.lifetime.start.p0(i64 4, ptr %4) #5
  store i32 0, ptr %4, align 4, !tbaa !9
  br label %19

19:                                               ; preds = %36, %1
  %20 = load i32, ptr %4, align 4, !tbaa !9
  %21 = getelementptr inbounds %"class.basisu::basisu_frontend", ptr %15, i32 0, i32 13
  %22 = invoke noundef i32 @_ZNK6basisu6vectorINS0_IjEEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %21)
          to label %23 unwind label %26

23:                                               ; preds = %19
  %24 = icmp ult i32 %20, %22
  br i1 %24, label %30, label %25

25:                                               ; preds = %23
  call void @llvm.lifetime.end.p0(i64 4, ptr %4) #5
  br label %39

26:                                               ; preds = %30, %19
  %27 = landingpad { ptr, i32 }
          cleanup
  %28 = extractvalue { ptr, i32 } %27, 0
  store ptr %28, ptr %5, align 8
  %29 = extractvalue { ptr, i32 } %27, 1
  store i32 %29, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %4) #5
  br label %252

30:                                               ; preds = %23
  %31 = load i32, ptr %4, align 4, !tbaa !9
  %32 = load i32, ptr %4, align 4, !tbaa !9
  %33 = zext i32 %32 to i64
  %34 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6basisu6vectorIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %3, i64 noundef %33)
          to label %35 unwind label %26

35:                                               ; preds = %30
  store i32 %31, ptr %34, align 4, !tbaa !9
  br label %36

36:                                               ; preds = %35
  %37 = load i32, ptr %4, align 4, !tbaa !9
  %38 = add i32 %37, 1
  store i32 %38, ptr %4, align 4, !tbaa !9
  br label %19, !llvm.loop !11

39:                                               ; preds = %25
  %40 = getelementptr inbounds %"class.basisu::basisu_frontend", ptr %15, i32 0, i32 13
  %41 = invoke noundef i32 @_ZNK6basisu6vectorINS0_IjEEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %40)
          to label %42 unwind label %66

42:                                               ; preds = %39
  %43 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6basisu6vectorIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %3, i64 noundef 0)
          to label %44 unwind label %66

44:                                               ; preds = %42
  %45 = getelementptr inbounds %"class.basisu::basisu_frontend", ptr %15, i32 0, i32 17
  %46 = invoke noundef nonnull align 8 dereferenceable(51) ptr @_ZN6basisu6vectorINS_15basisu_frontend27endpoint_cluster_etc_paramsEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %45, i64 noundef 0)
          to label %47 unwind label %66

47:                                               ; preds = %44
  invoke void @_ZN6basisu13indirect_sortINS_15basisu_frontend27endpoint_cluster_etc_paramsEEEvjPjPKT_(i32 noundef %41, ptr noundef %43, ptr noundef %46)
          to label %48 unwind label %66

48:                                               ; preds = %47
  call void @llvm.lifetime.start.p0(i64 16, ptr %7) #5
  %49 = getelementptr inbounds %"class.basisu::basisu_frontend", ptr %15, i32 0, i32 13
  %50 = invoke noundef i32 @_ZNK6basisu6vectorINS0_IjEEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %49)
          to label %51 unwind label %70

51:                                               ; preds = %48
  %52 = zext i32 %50 to i64
  invoke void @_ZN6basisu6vectorINS0_IjEEEC2Em(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 noundef %52)
          to label %53 unwind label %70

53:                                               ; preds = %51
  call void @llvm.lifetime.start.p0(i64 16, ptr %8) #5
  %54 = getelementptr inbounds %"class.basisu::basisu_frontend", ptr %15, i32 0, i32 13
  %55 = invoke noundef i32 @_ZNK6basisu6vectorINS0_IjEEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %54)
          to label %56 unwind label %74

56:                                               ; preds = %53
  %57 = zext i32 %55 to i64
  invoke void @_ZN6basisu6vectorINS_15basisu_frontend27endpoint_cluster_etc_paramsEEC2Em(ptr noundef nonnull align 8 dereferenceable(16) %8, i64 noundef %57)
          to label %58 unwind label %74

58:                                               ; preds = %56
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #5
  store i32 0, ptr %9, align 4, !tbaa !9
  br label %59

59:                                               ; preds = %110, %58
  %60 = load i32, ptr %9, align 4, !tbaa !9
  %61 = getelementptr inbounds %"class.basisu::basisu_frontend", ptr %15, i32 0, i32 13
  %62 = invoke noundef i32 @_ZNK6basisu6vectorINS0_IjEEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %61)
          to label %63 unwind label %78

63:                                               ; preds = %59
  %64 = icmp ult i32 %60, %62
  br i1 %64, label %82, label %65

65:                                               ; preds = %63
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #5
  br label %118

66:                                               ; preds = %47, %44, %42, %39
  %67 = landingpad { ptr, i32 }
          cleanup
  %68 = extractvalue { ptr, i32 } %67, 0
  store ptr %68, ptr %5, align 8
  %69 = extractvalue { ptr, i32 } %67, 1
  store i32 %69, ptr %6, align 4
  br label %252

70:                                               ; preds = %51, %48
  %71 = landingpad { ptr, i32 }
          cleanup
  %72 = extractvalue { ptr, i32 } %71, 0
  store ptr %72, ptr %5, align 8
  %73 = extractvalue { ptr, i32 } %71, 1
  store i32 %73, ptr %6, align 4
  br label %251

74:                                               ; preds = %56, %53
  %75 = landingpad { ptr, i32 }
          cleanup
  %76 = extractvalue { ptr, i32 } %75, 0
  store ptr %76, ptr %5, align 8
  %77 = extractvalue { ptr, i32 } %75, 1
  store i32 %77, ptr %6, align 4
  br label %250

78:                                               ; preds = %59
  %79 = landingpad { ptr, i32 }
          cleanup
  %80 = extractvalue { ptr, i32 } %79, 0
  store ptr %80, ptr %5, align 8
  %81 = extractvalue { ptr, i32 } %79, 1
  store i32 %81, ptr %6, align 4
  br label %117

82:                                               ; preds = %63
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #5
  %83 = load i32, ptr %9, align 4, !tbaa !9
  %84 = zext i32 %83 to i64
  %85 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6basisu6vectorIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %3, i64 noundef %84)
          to label %86 unwind label %113

86:                                               ; preds = %82
  %87 = load i32, ptr %85, align 4, !tbaa !9
  store i32 %87, ptr %10, align 4, !tbaa !9
  %88 = getelementptr inbounds %"class.basisu::basisu_frontend", ptr %15, i32 0, i32 13
  %89 = load i32, ptr %10, align 4, !tbaa !9
  %90 = zext i32 %89 to i64
  %91 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN6basisu6vectorINS0_IjEEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %88, i64 noundef %90)
          to label %92 unwind label %113

92:                                               ; preds = %86
  %93 = load i32, ptr %9, align 4, !tbaa !9
  %94 = zext i32 %93 to i64
  %95 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN6basisu6vectorINS0_IjEEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 noundef %94)
          to label %96 unwind label %113

96:                                               ; preds = %92
  %97 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN6basisu6vectorIjEaSERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %95, ptr noundef nonnull align 8 dereferenceable(16) %91)
          to label %98 unwind label %113

98:                                               ; preds = %96
  %99 = getelementptr inbounds %"class.basisu::basisu_frontend", ptr %15, i32 0, i32 17
  %100 = load i32, ptr %10, align 4, !tbaa !9
  %101 = zext i32 %100 to i64
  %102 = invoke noundef nonnull align 8 dereferenceable(51) ptr @_ZN6basisu6vectorINS_15basisu_frontend27endpoint_cluster_etc_paramsEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %99, i64 noundef %101)
          to label %103 unwind label %113

103:                                              ; preds = %98
  %104 = load i32, ptr %9, align 4, !tbaa !9
  %105 = zext i32 %104 to i64
  %106 = invoke noundef nonnull align 8 dereferenceable(51) ptr @_ZN6basisu6vectorINS_15basisu_frontend27endpoint_cluster_etc_paramsEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %8, i64 noundef %105)
          to label %107 unwind label %113

107:                                              ; preds = %103
  %108 = invoke noundef nonnull align 8 dereferenceable(51) ptr @_ZN6basisu15basisu_frontend27endpoint_cluster_etc_paramsaSERKS1_(ptr noundef nonnull align 8 dereferenceable(51) %106, ptr noundef nonnull align 8 dereferenceable(51) %102)
          to label %109 unwind label %113

109:                                              ; preds = %107
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #5
  br label %110

110:                                              ; preds = %109
  %111 = load i32, ptr %9, align 4, !tbaa !9
  %112 = add i32 %111, 1
  store i32 %112, ptr %9, align 4, !tbaa !9
  br label %59, !llvm.loop !13

113:                                              ; preds = %107, %103, %98, %96, %92, %86, %82
  %114 = landingpad { ptr, i32 }
          cleanup
  %115 = extractvalue { ptr, i32 } %114, 0
  store ptr %115, ptr %5, align 8
  %116 = extractvalue { ptr, i32 } %114, 1
  store i32 %116, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #5
  br label %117

117:                                              ; preds = %113, %78
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #5
  br label %249

118:                                              ; preds = %65
  %119 = getelementptr inbounds %"class.basisu::basisu_frontend", ptr %15, i32 0, i32 13
  invoke void @_ZN6basisu6vectorINS0_IjEEE4swapERS2_(ptr noundef nonnull align 8 dereferenceable(16) %7, ptr noundef nonnull align 8 dereferenceable(16) %119)
          to label %120 unwind label %132

120:                                              ; preds = %118
  %121 = getelementptr inbounds %"class.basisu::basisu_frontend", ptr %15, i32 0, i32 17
  invoke void @_ZN6basisu6vectorINS_15basisu_frontend27endpoint_cluster_etc_paramsEE4swapERS3_(ptr noundef nonnull align 8 dereferenceable(16) %8, ptr noundef nonnull align 8 dereferenceable(16) %121)
          to label %122 unwind label %132

122:                                              ; preds = %120
  invoke void @_ZN6basisu6vectorINS0_IjEEE6resizeEmb(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 noundef 0, i1 noundef zeroext false)
          to label %123 unwind label %132

123:                                              ; preds = %122
  invoke void @_ZN6basisu6vectorINS_15basisu_frontend27endpoint_cluster_etc_paramsEE6resizeEmb(ptr noundef nonnull align 8 dereferenceable(16) %8, i64 noundef 0, i1 noundef zeroext false)
          to label %124 unwind label %132

124:                                              ; preds = %123
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #5
  store i32 0, ptr %11, align 4, !tbaa !9
  br label %125

125:                                              ; preds = %219, %149, %124
  %126 = load i32, ptr %11, align 4, !tbaa !9
  %127 = getelementptr inbounds %"class.basisu::basisu_frontend", ptr %15, i32 0, i32 13
  %128 = invoke noundef i32 @_ZNK6basisu6vectorINS0_IjEEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %127)
          to label %129 unwind label %136

129:                                              ; preds = %125
  %130 = icmp slt i32 %126, %128
  br i1 %130, label %140, label %131

131:                                              ; preds = %129
  store i32 8, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #5
  br label %223

132:                                              ; preds = %245, %243, %240, %238, %235, %226, %223, %123, %122, %120, %118
  %133 = landingpad { ptr, i32 }
          cleanup
  %134 = extractvalue { ptr, i32 } %133, 0
  store ptr %134, ptr %5, align 8
  %135 = extractvalue { ptr, i32 } %133, 1
  store i32 %135, ptr %6, align 4
  br label %249

136:                                              ; preds = %145, %140, %125
  %137 = landingpad { ptr, i32 }
          cleanup
  %138 = extractvalue { ptr, i32 } %137, 0
  store ptr %138, ptr %5, align 8
  %139 = extractvalue { ptr, i32 } %137, 1
  store i32 %139, ptr %6, align 4
  br label %222

140:                                              ; preds = %129
  %141 = getelementptr inbounds %"class.basisu::basisu_frontend", ptr %15, i32 0, i32 13
  %142 = load i32, ptr %11, align 4, !tbaa !9
  %143 = sext i32 %142 to i64
  %144 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN6basisu6vectorINS0_IjEEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %141, i64 noundef %143)
          to label %145 unwind label %136

145:                                              ; preds = %140
  %146 = invoke noundef i32 @_ZNK6basisu6vectorIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %144)
          to label %147 unwind label %136

147:                                              ; preds = %145
  %148 = icmp ne i32 %146, 0
  br i1 %148, label %152, label %149

149:                                              ; preds = %147
  %150 = load i32, ptr %11, align 4, !tbaa !9
  %151 = add nsw i32 %150, 1
  store i32 %151, ptr %11, align 4, !tbaa !9
  br label %125, !llvm.loop !14

152:                                              ; preds = %147
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #5
  %153 = load i32, ptr %11, align 4, !tbaa !9
  %154 = add nsw i32 %153, 1
  store i32 %154, ptr %13, align 4, !tbaa !9
  br label %155

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

159:                                              ; preds = %155
  %160 = icmp slt i32 %156, %158
  br i1 %160, label %161, label %183

161:                                              ; preds = %159
  %162 = getelementptr inbounds %"class.basisu::basisu_frontend", ptr %15, i32 0, i32 17
  %163 = load i32, ptr %11, align 4, !tbaa !9
  %164 = sext i32 %163 to i64
  %165 = invoke noundef nonnull align 8 dereferenceable(51) ptr @_ZN6basisu6vectorINS_15basisu_frontend27endpoint_cluster_etc_paramsEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %162, i64 noundef %164)
          to label %166 unwind label %175

166:                                              ; preds = %161
  %167 = getelementptr inbounds %"class.basisu::basisu_frontend", ptr %15, i32 0, i32 17
  %168 = load i32, ptr %13, align 4, !tbaa !9
  %169 = sext i32 %168 to i64
  %170 = invoke noundef nonnull align 8 dereferenceable(51) ptr @_ZN6basisu6vectorINS_15basisu_frontend27endpoint_cluster_etc_paramsEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %167, i64 noundef %169)
          to label %171 unwind label %175

171:                                              ; preds = %166
  %172 = invoke noundef zeroext i1 @_ZNK6basisu15basisu_frontend27endpoint_cluster_etc_paramseqERKS1_(ptr noundef nonnull align 8 dereferenceable(51) %165, ptr noundef nonnull align 8 dereferenceable(51) %170)
          to label %173 unwind label %175

173:                                              ; preds = %171
  br i1 %172, label %179, label %174

174:                                              ; preds = %173
  br label %183

175:                                              ; preds = %194, %189, %188, %183, %171, %166, %161, %155
  %176 = landingpad { ptr, i32 }
          cleanup
  %177 = extractvalue { ptr, i32 } %176, 0
  store ptr %177, ptr %5, align 8
  %178 = extractvalue { ptr, i32 } %176, 1
  store i32 %178, ptr %6, align 4
  br label %221

179:                                              ; preds = %173
  br label %180

180:                                              ; preds = %179
  %181 = load i32, ptr %13, align 4, !tbaa !9
  %182 = add nsw i32 %181, 1
  store i32 %182, ptr %13, align 4, !tbaa !9
  br label %155, !llvm.loop !15

183:                                              ; preds = %174, %159
  %184 = getelementptr inbounds %"class.basisu::basisu_frontend", ptr %15, i32 0, i32 13
  %185 = load i32, ptr %11, align 4, !tbaa !9
  %186 = sext i32 %185 to i64
  %187 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN6basisu6vectorINS0_IjEEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %184, i64 noundef %186)
          to label %188 unwind label %175

188:                                              ; preds = %183
  invoke void @_ZN6basisu6vectorINS0_IjEEE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %7, ptr noundef nonnull align 8 dereferenceable(16) %187)
          to label %189 unwind label %175

189:                                              ; preds = %188
  %190 = getelementptr inbounds %"class.basisu::basisu_frontend", ptr %15, i32 0, i32 17
  %191 = load i32, ptr %11, align 4, !tbaa !9
  %192 = sext i32 %191 to i64
  %193 = invoke noundef nonnull align 8 dereferenceable(51) ptr @_ZN6basisu6vectorINS_15basisu_frontend27endpoint_cluster_etc_paramsEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %190, i64 noundef %192)
          to label %194 unwind label %175

194:                                              ; preds = %189
  invoke void @_ZN6basisu6vectorINS_15basisu_frontend27endpoint_cluster_etc_paramsEE9push_backERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %8, ptr noundef nonnull align 8 dereferenceable(51) %193)
          to label %195 unwind label %175

195:                                              ; preds = %194
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #5
  %196 = load i32, ptr %11, align 4, !tbaa !9
  %197 = add nsw i32 %196, 1
  store i32 %197, ptr %14, align 4, !tbaa !9
  br label %198

198:                                              ; preds = %212, %195
  %199 = load i32, ptr %14, align 4, !tbaa !9
  %200 = load i32, ptr %13, align 4, !tbaa !9
  %201 = icmp slt i32 %199, %200
  br i1 %201, label %203, label %202

202:                                              ; preds = %198
  store i32 13, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #5
  br label %219

203:                                              ; preds = %198
  %204 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN6basisu6vectorINS0_IjEEE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %7)
          to label %205 unwind label %215

205:                                              ; preds = %203
  %206 = getelementptr inbounds %"class.basisu::basisu_frontend", ptr %15, i32 0, i32 13
  %207 = load i32, ptr %14, align 4, !tbaa !9
  %208 = sext i32 %207 to i64
  %209 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN6basisu6vectorINS0_IjEEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %206, i64 noundef %208)
          to label %210 unwind label %215

210:                                              ; preds = %205
  invoke void @_ZN6basisu13append_vectorINS_6vectorIjEEEEvRT_RKS3_(ptr noundef nonnull align 8 dereferenceable(16) %204, ptr noundef nonnull align 8 dereferenceable(16) %209)
          to label %211 unwind label %215

211:                                              ; preds = %210
  br label %212

212:                                              ; preds = %211
  %213 = load i32, ptr %14, align 4, !tbaa !9
  %214 = add nsw i32 %213, 1
  store i32 %214, ptr %14, align 4, !tbaa !9
  br label %198, !llvm.loop !16

215:                                              ; preds = %210, %205, %203
  %216 = landingpad { ptr, i32 }
          cleanup
  %217 = extractvalue { ptr, i32 } %216, 0
  store ptr %217, ptr %5, align 8
  %218 = extractvalue { ptr, i32 } %216, 1
  store i32 %218, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #5
  br label %221

219:                                              ; preds = %202
  %220 = load i32, ptr %13, align 4, !tbaa !9
  store i32 %220, ptr %11, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #5
  br label %125, !llvm.loop !14

221:                                              ; preds = %215, %175
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #5
  br label %222

222:                                              ; preds = %221, %136
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #5
  br label %249

223:                                              ; preds = %131
  %224 = getelementptr inbounds %"class.basisu::basisu_frontend", ptr %15, i32 0, i32 13
  %225 = invoke noundef i32 @_ZNK6basisu6vectorINS0_IjEEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %224)
          to label %226 unwind label %132

226:                                              ; preds = %223
  %227 = invoke noundef i32 @_ZNK6basisu6vectorINS0_IjEEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %7)
          to label %228 unwind label %132

228:                                              ; preds = %226
  %229 = icmp ne i32 %225, %227
  br i1 %229, label %230, label %248

230:                                              ; preds = %228
  %231 = getelementptr inbounds %"class.basisu::basisu_frontend", ptr %15, i32 0, i32 0
  %232 = getelementptr inbounds %"struct.basisu::basisu_frontend::params", ptr %231, i32 0, i32 6
  %233 = load i8, ptr %232, align 1, !tbaa !17, !range !38, !noundef !39
  %234 = trunc i8 %233 to i1
  br i1 %234, label %235, label %243

235:                                              ; preds = %230
  %236 = getelementptr inbounds %"class.basisu::basisu_frontend", ptr %15, i32 0, i32 13
  %237 = invoke noundef i32 @_ZNK6basisu6vectorINS0_IjEEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %236)
          to label %238 unwind label %132

238:                                              ; preds = %235
  %239 = invoke noundef i32 @_ZNK6basisu6vectorINS0_IjEEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %7)
          to label %240 unwind label %132

240:                                              ; preds = %238
  %241 = sub i32 %237, %239
  invoke void (ptr, ...) @_ZN6basisu12debug_printfEPKcz(ptr noundef @.str.35, i32 noundef %241)
          to label %242 unwind label %132

242:                                              ; preds = %240
  br label %243

243:                                              ; preds = %242, %230
  %244 = getelementptr inbounds %"class.basisu::basisu_frontend", ptr %15, i32 0, i32 13
  invoke void @_ZN6basisu6vectorINS0_IjEEE4swapERS2_(ptr noundef nonnull align 8 dereferenceable(16) %244, ptr noundef nonnull align 8 dereferenceable(16) %7)
          to label %245 unwind label %132

245:                                              ; preds = %243
  %246 = getelementptr inbounds %"class.basisu::basisu_frontend", ptr %15, i32 0, i32 17
  invoke void @_ZN6basisu6vectorINS_15basisu_frontend27endpoint_cluster_etc_paramsEE4swapERS3_(ptr noundef nonnull align 8 dereferenceable(16) %246, ptr noundef nonnull align 8 dereferenceable(16) %8)
          to label %247 unwind label %132

247:                                              ; preds = %245
  br label %248

248:                                              ; preds = %247, %228
  call void @_ZN6basisu6vectorINS_15basisu_frontend27endpoint_cluster_etc_paramsEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %8) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %8) #5
  call void @_ZN6basisu6vectorINS0_IjEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %7) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %7) #5
  call void @_ZN6basisu6vectorIjED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %3) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %3) #5
  ret void

249:                                              ; preds = %222, %132, %117
  call void @_ZN6basisu6vectorINS_15basisu_frontend27endpoint_cluster_etc_paramsEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %8) #5
  br label %250

250:                                              ; preds = %249, %74
  call void @llvm.lifetime.end.p0(i64 16, ptr %8) #5
  call void @_ZN6basisu6vectorINS0_IjEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %7) #5
  br label %251

251:                                              ; preds = %250, %70
  call void @llvm.lifetime.end.p0(i64 16, ptr %7) #5
  br label %252

252:                                              ; preds = %251, %66, %26
  call void @_ZN6basisu6vectorIjED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %3) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %3) #5
  br label %253

253:                                              ; preds = %252
  %254 = load ptr, ptr %5, align 8
  %255 = load i32, ptr %6, align 4
  %256 = insertvalue { ptr, i32 } poison, ptr %254, 0
  %257 = insertvalue { ptr, i32 } %256, i32 %255, 1
  resume { ptr, i32 } %257
}

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6basisu6vectorINS_15basisu_frontend27endpoint_cluster_etc_paramsEE6resizeEmb(ptr noundef nonnull align 8 dereferenceable(16), i64 noundef, i1 noundef zeroext) #4 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) #3 align 2

declare i32 @__gxx_personality_v0(...)

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6basisu6vectorINS0_IjEEE6resizeEmb(ptr noundef nonnull align 8 dereferenceable(16), i64 noundef, i1 noundef zeroext) #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) #3 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) #3 align 2

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN6basisu6vectorINS0_IjEEE4swapERS2_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) #3 align 2

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6basisu13indirect_sortINS_15basisu_frontend27endpoint_cluster_etc_paramsEEEvjPjPKT_(i32 noundef, ptr noundef, ptr noundef) #4

; 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 #4 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZN6basisu6vectorIjEaSERKS1_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) #4 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)) #4 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN6basisu6vectorINS_15basisu_frontend27endpoint_cluster_etc_paramsEE4swapERS3_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK6basisu15basisu_frontend27endpoint_cluster_etc_paramseqERKS1_(ptr noundef nonnull align 8 dereferenceable(51), ptr noundef nonnull align 8 dereferenceable(51)) #2 align 2

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

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

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

; 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 #3 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 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { 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 #3 = { 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 #4 = { 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 #5 = { 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 = distinct !{!13, !12}
!14 = distinct !{!14, !12}
!15 = distinct !{!15, !12}
!16 = distinct !{!16, !12}
!17 = !{!18, !20, i64 29}
!18 = !{!"_ZTSN6basisu15basisu_frontendE", !19, i64 0, !10, i64 88, !10, i64 92, !20, i64 96, !20, i64 97, !20, i64 98, !10, i64 100, !10, i64 104, !23, i64 112, !24, i64 128, !24, i64 144, !24, i64 160, !25, i64 176, !28, i64 216, !28, i64 232, !29, i64 248, !28, i64 264, !30, i64 280, !31, i64 296, !28, i64 312, !24, i64 328, !28, i64 344, !29, i64 360, !28, i64 376, !32, i64 392, !33, i64 408, !34, i64 424, !35, i64 440, !36, i64 456}
!19 = !{!"_ZTSN6basisu15basisu_frontend6paramsE", !10, i64 0, !6, i64 8, !10, i64 16, !10, i64 20, !10, i64 24, !20, i64 28, !20, i64 29, !20, i64 30, !20, i64 31, !20, i64 32, !20, i64 33, !20, i64 34, !6, i64 40, !10, i64 48, !10, i64 52, !20, i64 56, !21, i64 60, !22, i64 64, !6, i64 72, !6, i64 80}
!20 = !{!"bool", !7, i64 0}
!21 = !{!"float", !7, i64 0}
!22 = !{!"_ZTSN6basist18basis_texture_typeE", !7, i64 0}
!23 = !{!"_ZTSN6basisu6vectorINS_11pixel_blockEEE", !6, i64 0, !10, i64 8, !10, i64 12}
!24 = !{!"_ZTSN6basisu6vectorINS_9etc_blockEEE", !6, i64 0, !10, i64 8, !10, i64 12}
!25 = !{!"_ZTSN6basisu17tree_vector_quantINS_3vecILj6EfEEEE", !26, i64 0, !27, i64 16, !10, i64 32}
!26 = !{!"_ZTSN6basisu6vectorINS_17tree_vector_quantINS_3vecILj6EfEEE9tsvq_nodeEEE", !6, i64 0, !10, i64 8, !10, i64 12}
!27 = !{!"_ZTSN6basisu6vectorISt4pairINS_3vecILj6EfEEmEEE", !6, i64 0, !10, i64 8, !10, i64 12}
!28 = !{!"_ZTSN6basisu6vectorINS0_IjEEEE", !6, i64 0, !10, i64 8, !10, i64 12}
!29 = !{!"_ZTSN6basisu6vectorIhEE", !6, i64 0, !10, i64 8, !10, i64 12}
!30 = !{!"_ZTSN6basisu6vectorINS_15basisu_frontend27endpoint_cluster_etc_paramsEEE", !6, i64 0, !10, i64 8, !10, i64 12}
!31 = !{!"_ZTSN6basisu6vectorINS_5vec2UEEE", !6, i64 0, !10, i64 8, !10, i64 12}
!32 = !{!"_ZTSN6basisu6vectorIN6basist38etc1_global_selector_codebook_entry_idEEE", !6, i64 0, !10, i64 8, !10, i64 12}
!33 = !{!"_ZTSN6basisu6vectorIbEE", !6, i64 0, !10, i64 8, !10, i64 12}
!34 = !{!"_ZTSN6basisu6vectorIjEE", !6, i64 0, !10, i64 8, !10, i64 12}
!35 = !{!"_ZTSN6basisu6vectorINS_15basisu_frontend27subblock_endpoint_quant_errEEE", !6, i64 0, !10, i64 8, !10, i64 12}
!36 = !{!"_ZTSSt5mutex", !37, i64 0}
!37 = !{!"_ZTSSt12__mutex_base", !7, i64 0}
!38 = !{i8 0, i8 2}
!39 = !{}


; 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.18" = type { ptr, i32, i32 }
%"class.basisu::vector.6" = type { ptr, i32, i32 }
%"class.basisu::vector.10" = type { ptr, i32, i32 }

@.str.34 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [43 x i8], align 1

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN6basisu15basisu_frontend46eliminate_redundant_or_empty_endpoint_clustersEv(ptr noundef nonnull align 8 dereferenceable(496) %0) local_unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca %"class.basisu::vector.18", align 8
  %3 = alloca %"class.basisu::vector.6", align 8
  %4 = alloca %"class.basisu::vector.10", align 8
  tail call void (ptr, ...) @_ZN6basisu12debug_printfEPKcz(ptr noundef nonnull @.str.34)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %2) #5
  %5 = getelementptr inbounds i8, ptr %0, i64 216
  %6 = tail call noundef i32 @_ZNK6basisu6vectorINS0_IjEEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %5)
  %7 = zext i32 %6 to i64
  call void @_ZN6basisu6vectorIjEC2Em(ptr noundef nonnull align 8 dereferenceable(16) %2, i64 noundef %7)
  %8 = call noundef i32 @_ZNK6basisu6vectorINS0_IjEEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %5)
  %.not65 = icmp eq i32 %8, 0
  br i1 %.not65, label %._crit_edge, label %.lr.ph

._crit_edge:                                      ; preds = %.lr.ph, %1
  %9 = call noundef i32 @_ZNK6basisu6vectorINS0_IjEEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %5)
  %10 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN6basisu6vectorIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %2, i64 noundef 0)
  %11 = getelementptr inbounds i8, ptr %0, i64 280
  %12 = call noundef nonnull align 8 dereferenceable(51) ptr @_ZN6basisu6vectorINS_15basisu_frontend27endpoint_cluster_etc_paramsEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %11, i64 noundef 0)
  invoke void @_ZN6basisu13indirect_sortINS_15basisu_frontend27endpoint_cluster_etc_paramsEEEvjPjPKT_(i32 noundef %9, ptr noundef nonnull %10, ptr noundef nonnull %12)
          to label %18 unwind label %25

.lr.ph:                                           ; preds = %1, %.lr.ph
  %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph ], [ 0, %1 ]
  %13 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN6basisu6vectorIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %2, i64 noundef %indvars.iv)
  %14 = trunc nuw i64 %indvars.iv to i32
  store i32 %14, ptr %13, align 4, !tbaa !5
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %15 = call noundef i32 @_ZNK6basisu6vectorINS0_IjEEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %5)
  %16 = zext i32 %15 to i64
  %17 = icmp ult i64 %indvars.iv.next, %16
  br i1 %17, label %.lr.ph, label %._crit_edge, !llvm.loop !9

18:                                               ; preds = %._crit_edge
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %3) #5
  %19 = call noundef i32 @_ZNK6basisu6vectorINS0_IjEEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %5)
  %20 = zext i32 %19 to i64
  invoke void @_ZN6basisu6vectorINS0_IjEEEC2Em(ptr noundef nonnull align 8 dereferenceable(16) %3, i64 noundef %20)
          to label %21 unwind label %27

21:                                               ; preds = %18
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) #5
  %22 = call noundef i32 @_ZNK6basisu6vectorINS0_IjEEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %5)
  %23 = zext i32 %22 to i64
  invoke void @_ZN6basisu6vectorINS_15basisu_frontend27endpoint_cluster_etc_paramsEEC2Em(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %23)
          to label %.preheader48 unwind label %29

.preheader48:                                     ; preds = %21
  %24 = call noundef i32 @_ZNK6basisu6vectorINS0_IjEEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %5)
  %.not66 = icmp eq i32 %24, 0
  br i1 %.not66, label %._crit_edge53, label %.lr.ph52

._crit_edge53:                                    ; preds = %41, %.preheader48
  call void @_ZN6basisu6vectorINS0_IjEEE4swapERS2_(ptr noundef nonnull align 8 dereferenceable(16) %3, ptr noundef nonnull align 8 dereferenceable(16) %5)
  call void @_ZN6basisu6vectorINS_15basisu_frontend27endpoint_cluster_etc_paramsEE4swapERS3_(ptr noundef nonnull align 8 dereferenceable(16) %4, ptr noundef nonnull align 8 dereferenceable(16) %11)
  invoke void @_ZN6basisu6vectorINS0_IjEEE6resizeEmb(ptr noundef nonnull align 8 dereferenceable(16) %3, i64 noundef 0, i1 noundef zeroext false)
          to label %47 unwind label %52

25:                                               ; preds = %._crit_edge
  %26 = landingpad { ptr, i32 }
          cleanup
  br label %95

27:                                               ; preds = %18
  %28 = landingpad { ptr, i32 }
          cleanup
  br label %94

29:                                               ; preds = %21
  %30 = landingpad { ptr, i32 }
          cleanup
  br label %93

.lr.ph52:                                         ; preds = %.preheader48, %41
  %indvars.iv68 = phi i64 [ %indvars.iv.next69, %41 ], [ 0, %.preheader48 ]
  %31 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN6basisu6vectorIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %2, i64 noundef %indvars.iv68)
  %32 = load i32, ptr %31, align 4, !tbaa !5
  %33 = zext i32 %32 to i64
  %34 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN6basisu6vectorINS0_IjEEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %5, i64 noundef %33)
  %35 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN6basisu6vectorINS0_IjEEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %3, i64 noundef %indvars.iv68)
  %36 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN6basisu6vectorIjEaSERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %35, ptr noundef nonnull align 8 dereferenceable(16) %34)
          to label %37 unwind label %45

37:                                               ; preds = %.lr.ph52
  %38 = call noundef nonnull align 8 dereferenceable(51) ptr @_ZN6basisu6vectorINS_15basisu_frontend27endpoint_cluster_etc_paramsEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %11, i64 noundef %33)
  %39 = call noundef nonnull align 8 dereferenceable(51) ptr @_ZN6basisu6vectorINS_15basisu_frontend27endpoint_cluster_etc_paramsEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv68)
  %40 = invoke noundef nonnull align 8 dereferenceable(51) ptr @_ZN6basisu15basisu_frontend27endpoint_cluster_etc_paramsaSERKS1_(ptr noundef nonnull align 8 dereferenceable(51) %39, ptr noundef nonnull align 8 dereferenceable(51) %38)
          to label %41 unwind label %45

41:                                               ; preds = %37
  %indvars.iv.next69 = add nuw nsw i64 %indvars.iv68, 1
  %42 = call noundef i32 @_ZNK6basisu6vectorINS0_IjEEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %5)
  %43 = zext i32 %42 to i64
  %44 = icmp ult i64 %indvars.iv.next69, %43
  br i1 %44, label %.lr.ph52, label %._crit_edge53, !llvm.loop !11

45:                                               ; preds = %37, %.lr.ph52
  %46 = landingpad { ptr, i32 }
          cleanup
  br label %92

47:                                               ; preds = %._crit_edge53
  invoke void @_ZN6basisu6vectorINS_15basisu_frontend27endpoint_cluster_etc_paramsEE6resizeEmb(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef 0, i1 noundef zeroext false)
          to label %.preheader47 unwind label %52

.preheader47:                                     ; preds = %47
  %48 = call noundef i32 @_ZNK6basisu6vectorINS0_IjEEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %5)
  %49 = icmp sgt i32 %48, 0
  br i1 %49, label %.lr.ph63, label %._crit_edge64

._crit_edge64:                                    ; preds = %.backedge, %.preheader47
  %50 = call noundef i32 @_ZNK6basisu6vectorINS0_IjEEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %5)
  %51 = call noundef i32 @_ZNK6basisu6vectorINS0_IjEEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %3)
  %.not = icmp eq i32 %50, %51
  br i1 %.not, label %91, label %82

52:                                               ; preds = %86, %47, %._crit_edge53
  %53 = landingpad { ptr, i32 }
          cleanup
  br label %92

.lr.ph63:                                         ; preds = %.preheader47, %.backedge
  %.03062 = phi i32 [ %.030.be, %.backedge ], [ 0, %.preheader47 ]
  %54 = sext i32 %.03062 to i64
  %55 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN6basisu6vectorINS0_IjEEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %5, i64 noundef %54)
  %56 = call noundef i32 @_ZNK6basisu6vectorIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %55)
  %.not39 = icmp eq i32 %56, 0
  %57 = add nsw i32 %.03062, 1
  br i1 %.not39, label %.backedge, label %60

.backedge:                                        ; preds = %79, %.lr.ph63, %.preheader
  %.030.be = phi i32 [ %.029.lcssa, %.preheader ], [ %57, %.lr.ph63 ], [ %.029.lcssa, %79 ]
  %58 = call noundef i32 @_ZNK6basisu6vectorINS0_IjEEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %5)
  %59 = icmp slt i32 %.030.be, %58
  br i1 %59, label %.lr.ph63, label %._crit_edge64, !llvm.loop !12

60:                                               ; preds = %.lr.ph63
  %61 = call noundef i32 @_ZNK6basisu6vectorINS0_IjEEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %5)
  %62 = icmp slt i32 %57, %61
  br i1 %62, label %.lr.ph56.preheader, label %._crit_edge57

.lr.ph56.preheader:                               ; preds = %60
  %63 = sext i32 %57 to i64
  br label %.lr.ph56

.lr.ph56:                                         ; preds = %.lr.ph56.preheader, %68
  %indvars.iv71 = phi i64 [ %63, %.lr.ph56.preheader ], [ %indvars.iv.next72, %68 ]
  %64 = call noundef nonnull align 8 dereferenceable(51) ptr @_ZN6basisu6vectorINS_15basisu_frontend27endpoint_cluster_etc_paramsEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %11, i64 noundef %54)
  %65 = call noundef nonnull align 8 dereferenceable(51) ptr @_ZN6basisu6vectorINS_15basisu_frontend27endpoint_cluster_etc_paramsEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %11, i64 noundef %indvars.iv71)
  %66 = invoke noundef zeroext i1 @_ZNK6basisu15basisu_frontend27endpoint_cluster_etc_paramseqERKS1_(ptr noundef nonnull align 8 dereferenceable(51) %64, ptr noundef nonnull align 8 dereferenceable(51) %65)
          to label %67 unwind label %.loopexit46

67:                                               ; preds = %.lr.ph56
  br i1 %66, label %68, label %._crit_edge57.loopexit

.loopexit46:                                      ; preds = %.lr.ph56
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %92

.loopexit.split-lp:                               ; preds = %._crit_edge57, %73
  %lpad.loopexit.split-lp = landingpad { ptr, i32 }
          cleanup
  br label %92

68:                                               ; preds = %67
  %indvars.iv.next72 = add nsw i64 %indvars.iv71, 1
  %69 = call noundef i32 @_ZNK6basisu6vectorINS0_IjEEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %5)
  %70 = sext i32 %69 to i64
  %71 = icmp slt i64 %indvars.iv.next72, %70
  br i1 %71, label %.lr.ph56, label %._crit_edge57.loopexit, !llvm.loop !13

._crit_edge57.loopexit:                           ; preds = %67, %68
  %.029.lcssa.ph.in = phi i64 [ %indvars.iv.next72, %68 ], [ %indvars.iv71, %67 ]
  %.029.lcssa.ph = trunc i64 %.029.lcssa.ph.in to i32
  br label %._crit_edge57

._crit_edge57:                                    ; preds = %._crit_edge57.loopexit, %60
  %.029.lcssa = phi i32 [ %57, %60 ], [ %.029.lcssa.ph, %._crit_edge57.loopexit ]
  %72 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN6basisu6vectorINS0_IjEEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %5, i64 noundef %54)
  invoke void @_ZN6basisu6vectorINS0_IjEEE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(16) %3, ptr noundef nonnull align 8 dereferenceable(16) %72)
          to label %73 unwind label %.loopexit.split-lp

73:                                               ; preds = %._crit_edge57
  %74 = call noundef nonnull align 8 dereferenceable(51) ptr @_ZN6basisu6vectorINS_15basisu_frontend27endpoint_cluster_etc_paramsEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %11, i64 noundef %54)
  invoke void @_ZN6basisu6vectorINS_15basisu_frontend27endpoint_cluster_etc_paramsEE9push_backERKS2_(ptr noundef nonnull align 8 dereferenceable(16) %4, ptr noundef nonnull align 8 dereferenceable(51) %74)
          to label %.preheader unwind label %.loopexit.split-lp

.preheader:                                       ; preds = %73
  %75 = icmp slt i32 %57, %.029.lcssa
  br i1 %75, label %.lr.ph61.preheader, label %.backedge, !llvm.loop !12

.lr.ph61.preheader:                               ; preds = %.preheader
  %76 = sext i32 %57 to i64
  br label %.lr.ph61

.lr.ph61:                                         ; preds = %.lr.ph61.preheader, %79
  %indvars.iv74 = phi i64 [ %76, %.lr.ph61.preheader ], [ %indvars.iv.next75, %79 ]
  %77 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN6basisu6vectorINS0_IjEEE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %3)
  %78 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN6basisu6vectorINS0_IjEEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %5, i64 noundef %indvars.iv74)
  invoke void @_ZN6basisu13append_vectorINS_6vectorIjEEEEvRT_RKS3_(ptr noundef nonnull align 8 dereferenceable(16) %77, ptr noundef nonnull align 8 dereferenceable(16) %78)
          to label %79 unwind label %80

79:                                               ; preds = %.lr.ph61
  %indvars.iv.next75 = add nsw i64 %indvars.iv74, 1
  %lftr.wideiv = trunc i64 %indvars.iv.next75 to i32
  %exitcond.not = icmp eq i32 %.029.lcssa, %lftr.wideiv
  br i1 %exitcond.not, label %.backedge, label %.lr.ph61, !llvm.loop !14

80:                                               ; preds = %.lr.ph61
  %81 = landingpad { ptr, i32 }
          cleanup
  br label %92

82:                                               ; preds = %._crit_edge64
  %83 = getelementptr inbounds i8, ptr %0, i64 29
  %84 = load i8, ptr %83, align 1, !tbaa !15, !range !37, !noundef !38
  %85 = trunc nuw i8 %84 to i1
  br i1 %85, label %86, label %90

86:                                               ; preds = %82
  %87 = call noundef i32 @_ZNK6basisu6vectorINS0_IjEEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %5)
  %88 = call noundef i32 @_ZNK6basisu6vectorINS0_IjEEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %3)
  %89 = sub i32 %87, %88
  invoke void (ptr, ...) @_ZN6basisu12debug_printfEPKcz(ptr noundef nonnull @.str.35, i32 noundef %89)
          to label %90 unwind label %52

90:                                               ; preds = %86, %82
  call void @_ZN6basisu6vectorINS0_IjEEE4swapERS2_(ptr noundef nonnull align 8 dereferenceable(16) %5, ptr noundef nonnull align 8 dereferenceable(16) %3)
  call void @_ZN6basisu6vectorINS_15basisu_frontend27endpoint_cluster_etc_paramsEE4swapERS3_(ptr noundef nonnull align 8 dereferenceable(16) %11, ptr noundef nonnull align 8 dereferenceable(16) %4)
  br label %91

91:                                               ; preds = %90, %._crit_edge64
  call void @_ZN6basisu6vectorINS_15basisu_frontend27endpoint_cluster_etc_paramsEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %4) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #5
  call void @_ZN6basisu6vectorINS0_IjEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %3) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) #5
  call void @_ZN6basisu6vectorIjED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2) #5
  ret void

92:                                               ; preds = %.loopexit46, %.loopexit.split-lp, %80, %52, %45
  %.pn41 = phi { ptr, i32 } [ %46, %45 ], [ %53, %52 ], [ %81, %80 ], [ %lpad.loopexit, %.loopexit46 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ]
  call void @_ZN6basisu6vectorINS_15basisu_frontend27endpoint_cluster_etc_paramsEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %4) #5
  br label %93

93:                                               ; preds = %92, %29
  %.pn41.pn = phi { ptr, i32 } [ %.pn41, %92 ], [ %30, %29 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #5
  call void @_ZN6basisu6vectorINS0_IjEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %3) #5
  br label %94

94:                                               ; preds = %93, %27
  %.pn41.pn.pn = phi { ptr, i32 } [ %.pn41.pn, %93 ], [ %28, %27 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) #5
  br label %95

95:                                               ; preds = %94, %25
  %.pn41.pn.pn.pn = phi { ptr, i32 } [ %.pn41.pn.pn, %94 ], [ %26, %25 ]
  call void @_ZN6basisu6vectorIjED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2) #5
  resume { ptr, i32 } %.pn41.pn.pn.pn
}

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6basisu6vectorINS_15basisu_frontend27endpoint_cluster_etc_paramsEE6resizeEmb(ptr noundef nonnull align 8 dereferenceable(16), i64 noundef, i1 noundef zeroext) local_unnamed_addr #4 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 #3 align 2

declare i32 @__gxx_personality_v0(...)

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6basisu6vectorINS0_IjEEE6resizeEmb(ptr noundef nonnull align 8 dereferenceable(16), i64 noundef, i1 noundef zeroext) 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 #3 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 #3 align 2

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6basisu13indirect_sortINS_15basisu_frontend27endpoint_cluster_etc_paramsEEEvjPjPKT_(i32 noundef, ptr noundef, ptr noundef) local_unnamed_addr #4

; 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 #4 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZN6basisu6vectorIjEaSERKS1_(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #4 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 #4 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK6basisu15basisu_frontend27endpoint_cluster_etc_paramseqERKS1_(ptr noundef nonnull align 8 dereferenceable(51), ptr noundef nonnull align 8 dereferenceable(51)) local_unnamed_addr #2 align 2

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

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

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

; 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 #3 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 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { 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 #3 = { 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 #4 = { 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 #5 = { nounwind }

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = distinct !{!9, !10}
!10 = !{!"llvm.loop.mustprogress"}
!11 = distinct !{!11, !10}
!12 = distinct !{!12, !10}
!13 = distinct !{!13, !10}
!14 = distinct !{!14, !10}
!15 = !{!16, !19, i64 29}
!16 = !{!"_ZTSN6basisu15basisu_frontendE", !17, i64 0, !6, i64 88, !6, i64 92, !19, i64 96, !19, i64 97, !19, i64 98, !6, i64 100, !6, i64 104, !22, i64 112, !23, i64 128, !23, i64 144, !23, i64 160, !24, i64 176, !27, i64 216, !27, i64 232, !28, i64 248, !27, i64 264, !29, i64 280, !30, i64 296, !27, i64 312, !23, i64 328, !27, i64 344, !28, i64 360, !27, i64 376, !31, i64 392, !32, i64 408, !33, i64 424, !34, i64 440, !35, i64 456}
!17 = !{!"_ZTSN6basisu15basisu_frontend6paramsE", !6, i64 0, !18, i64 8, !6, i64 16, !6, i64 20, !6, i64 24, !19, i64 28, !19, i64 29, !19, i64 30, !19, i64 31, !19, i64 32, !19, i64 33, !19, i64 34, !18, i64 40, !6, i64 48, !6, i64 52, !19, i64 56, !20, i64 60, !21, i64 64, !18, i64 72, !18, i64 80}
!18 = !{!"any pointer", !7, i64 0}
!19 = !{!"bool", !7, i64 0}
!20 = !{!"float", !7, i64 0}
!21 = !{!"_ZTSN6basist18basis_texture_typeE", !7, i64 0}
!22 = !{!"_ZTSN6basisu6vectorINS_11pixel_blockEEE", !18, i64 0, !6, i64 8, !6, i64 12}
!23 = !{!"_ZTSN6basisu6vectorINS_9etc_blockEEE", !18, i64 0, !6, i64 8, !6, i64 12}
!24 = !{!"_ZTSN6basisu17tree_vector_quantINS_3vecILj6EfEEEE", !25, i64 0, !26, i64 16, !6, i64 32}
!25 = !{!"_ZTSN6basisu6vectorINS_17tree_vector_quantINS_3vecILj6EfEEE9tsvq_nodeEEE", !18, i64 0, !6, i64 8, !6, i64 12}
!26 = !{!"_ZTSN6basisu6vectorISt4pairINS_3vecILj6EfEEmEEE", !18, i64 0, !6, i64 8, !6, i64 12}
!27 = !{!"_ZTSN6basisu6vectorINS0_IjEEEE", !18, i64 0, !6, i64 8, !6, i64 12}
!28 = !{!"_ZTSN6basisu6vectorIhEE", !18, i64 0, !6, i64 8, !6, i64 12}
!29 = !{!"_ZTSN6basisu6vectorINS_15basisu_frontend27endpoint_cluster_etc_paramsEEE", !18, i64 0, !6, i64 8, !6, i64 12}
!30 = !{!"_ZTSN6basisu6vectorINS_5vec2UEEE", !18, i64 0, !6, i64 8, !6, i64 12}
!31 = !{!"_ZTSN6basisu6vectorIN6basist38etc1_global_selector_codebook_entry_idEEE", !18, i64 0, !6, i64 8, !6, i64 12}
!32 = !{!"_ZTSN6basisu6vectorIbEE", !18, i64 0, !6, i64 8, !6, i64 12}
!33 = !{!"_ZTSN6basisu6vectorIjEE", !18, i64 0, !6, i64 8, !6, i64 12}
!34 = !{!"_ZTSN6basisu6vectorINS_15basisu_frontend27subblock_endpoint_quant_errEEE", !18, i64 0, !6, i64 8, !6, i64 12}
!35 = !{!"_ZTSSt5mutex", !36, i64 0}
!36 = !{!"_ZTSSt12__mutex_base", !7, i64 0}
!37 = !{i8 0, i8 2}
!38 = !{}


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