; 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.16" = type { ptr, i32, i32 }
%"class.basisu::vector.27" = type { ptr, i32, i32 }
%"class.std::unordered_map" = type { %"class.std::_Hashtable" }
%"class.std::_Hashtable" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.std::__detail::_Hash_node_base" = type { ptr }
%"struct.std::__detail::_Prime_rehash_policy" = type { float, i64 }
%"struct.std::pair" = type <{ %"struct.std::__detail::_Node_iterator", i8, [7 x i8] }>
%"struct.std::__detail::_Node_iterator" = type { %"struct.std::__detail::_Node_iterator_base" }
%"struct.std::__detail::_Node_iterator_base" = type { ptr }
%"struct.std::pair.47" = type { i32, i32 }
%"class.basisu::vector.0" = type { ptr, i32, i32 }
%"class.basisu::vector.14" = type { ptr, i32, i32 }
%"class.basisu::vector.6" = 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.10" = type { ptr, i32, i32 }
%"class.basisu::vector.12" = type { ptr, i32, i32 }
%"class.basisu::vector.8" = 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.std::pair.49" = type { i32, i32 }

@.str.20 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [50 x i8], align 1

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #1

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN6basisu15basisu_frontend26optimize_selector_codebookEv(ptr noundef nonnull align 8 dereferenceable(496) %0) #4 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca ptr, align 8
  %3 = alloca i32, align 4
  %4 = alloca %"class.basisu::vector.16", align 8
  %5 = alloca i32, align 4
  %6 = alloca ptr, align 8
  %7 = alloca i32, align 4
  %8 = alloca %"class.basisu::vector.27", align 8
  %9 = alloca %"class.basisu::vector.27", align 8
  %10 = alloca i32, align 4
  %11 = alloca %"class.std::unordered_map", align 8
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca %"struct.std::pair", align 8
  %16 = alloca %"struct.std::pair.47", align 4
  %17 = alloca { ptr, i8 }, align 8
  %18 = alloca i32, align 4
  %19 = alloca %"class.basisu::vector.0", align 8
  %20 = alloca %"class.basisu::vector.14", align 8
  %21 = alloca %"class.basisu::vector.6", align 8
  %22 = alloca %"class.basisu::vector.16", align 8
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  store ptr %0, ptr %2, align 8, !tbaa !5
  %27 = load ptr, ptr %2, align 8
  call void (ptr, ...) @_ZN6basisu12debug_printfEPKcz(ptr noundef @.str.20)
  call void @llvm.lifetime.start.p0(i64 4, ptr %3) #7
  %28 = getelementptr inbounds %"class.basisu::basisu_frontend", ptr %27, i32 0, i32 20
  %29 = call noundef i32 @_ZNK6basisu6vectorINS_9etc_blockEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %28)
  store i32 %29, ptr %3, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %4) #7
  %30 = getelementptr inbounds %"class.basisu::basisu_frontend", ptr %27, i32 0, i32 20
  %31 = call noundef i32 @_ZNK6basisu6vectorINS_9etc_blockEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %30)
  %32 = zext i32 %31 to i64
  call void @_ZN6basisu6vectorIbEC2Em(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %32)
  call void @llvm.lifetime.start.p0(i64 4, ptr %5) #7
  store i32 0, ptr %5, align 4, !tbaa !9
  br label %33

33:                                               ; preds = %49, %1
  %34 = load i32, ptr %5, align 4, !tbaa !9
  %35 = getelementptr inbounds %"class.basisu::basisu_frontend", ptr %27, i32 0, i32 1
  %36 = load i32, ptr %35, align 8, !tbaa !11
  %37 = icmp ult i32 %34, %36
  br i1 %37, label %39, label %38

38:                                               ; preds = %33
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #7
  br label %56

39:                                               ; preds = %33
  %40 = getelementptr inbounds %"class.basisu::basisu_frontend", ptr %27, i32 0, i32 26
  %41 = load i32, ptr %5, align 4, !tbaa !9
  %42 = zext i32 %41 to i64
  %43 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6basisu6vectorIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %40, i64 noundef %42)
          to label %44 unwind label %52

44:                                               ; preds = %39
  %45 = load i32, ptr %43, align 4, !tbaa !9
  %46 = zext i32 %45 to i64
  %47 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZN6basisu6vectorIbEixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %46)
          to label %48 unwind label %52

48:                                               ; preds = %44
  store i8 1, ptr %47, align 1, !tbaa !32
  br label %49

49:                                               ; preds = %48
  %50 = load i32, ptr %5, align 4, !tbaa !9
  %51 = add i32 %50, 1
  store i32 %51, ptr %5, align 4, !tbaa !9
  br label %33, !llvm.loop !33

52:                                               ; preds = %44, %39
  %53 = landingpad { ptr, i32 }
          cleanup
  %54 = extractvalue { ptr, i32 } %53, 0
  store ptr %54, ptr %6, align 8
  %55 = extractvalue { ptr, i32 } %53, 1
  store i32 %55, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #7
  br label %465

56:                                               ; preds = %38
  call void @llvm.lifetime.start.p0(i64 16, ptr %8) #7
  %57 = getelementptr inbounds %"class.basisu::basisu_frontend", ptr %27, i32 0, i32 20
  %58 = invoke noundef i32 @_ZNK6basisu6vectorINS_9etc_blockEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %57)
          to label %59 unwind label %70

59:                                               ; preds = %56
  %60 = zext i32 %58 to i64
  invoke void @_ZN6basisu6vectorIiEC2Em(ptr noundef nonnull align 8 dereferenceable(16) %8, i64 noundef %60)
          to label %61 unwind label %70

61:                                               ; preds = %59
  call void @llvm.lifetime.start.p0(i64 16, ptr %9) #7
  invoke void @_ZN6basisu6vectorIiEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %9)
          to label %62 unwind label %74

62:                                               ; preds = %61
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #7
  store i32 0, ptr %10, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 56, ptr %11) #7
  call void @_ZNSt13unordered_mapIjjSt4hashIjESt8equal_toIjESaISt4pairIKjjEEEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %11) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #7
  store i32 0, ptr %12, align 4, !tbaa !9
  br label %63

63:                                               ; preds = %141, %62
  %64 = load i32, ptr %12, align 4, !tbaa !9
  %65 = getelementptr inbounds %"class.basisu::basisu_frontend", ptr %27, i32 0, i32 20
  %66 = invoke noundef i32 @_ZNK6basisu6vectorINS_9etc_blockEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %65)
          to label %67 unwind label %78

67:                                               ; preds = %63
  %68 = icmp slt i32 %64, %66
  br i1 %68, label %82, label %69

69:                                               ; preds = %67
  store i32 5, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #7
  br label %147

70:                                               ; preds = %59, %56
  %71 = landingpad { ptr, i32 }
          cleanup
  %72 = extractvalue { ptr, i32 } %71, 0
  store ptr %72, ptr %6, align 8
  %73 = extractvalue { ptr, i32 } %71, 1
  store i32 %73, ptr %7, align 4
  br label %464

74:                                               ; preds = %61
  %75 = landingpad { ptr, i32 }
          cleanup
  %76 = extractvalue { ptr, i32 } %75, 0
  store ptr %76, ptr %6, align 8
  %77 = extractvalue { ptr, i32 } %75, 1
  store i32 %77, ptr %7, align 4
  br label %463

78:                                               ; preds = %89, %82, %63
  %79 = landingpad { ptr, i32 }
          cleanup
  %80 = extractvalue { ptr, i32 } %79, 0
  store ptr %80, ptr %6, align 8
  %81 = extractvalue { ptr, i32 } %79, 1
  store i32 %81, ptr %7, align 4
  br label %146

82:                                               ; preds = %67
  %83 = load i32, ptr %12, align 4, !tbaa !9
  %84 = sext i32 %83 to i64
  %85 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZN6basisu6vectorIbEixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %84)
          to label %86 unwind label %78

86:                                               ; preds = %82
  %87 = load i8, ptr %85, align 1, !tbaa !32, !range !35, !noundef !36
  %88 = trunc i8 %87 to i1
  br i1 %88, label %94, label %89

89:                                               ; preds = %86
  %90 = load i32, ptr %12, align 4, !tbaa !9
  %91 = sext i32 %90 to i64
  %92 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6basisu6vectorIiEixEm(ptr noundef nonnull align 8 dereferenceable(16) %8, i64 noundef %91)
          to label %93 unwind label %78

93:                                               ; preds = %89
  store i32 -1, ptr %92, align 4, !tbaa !9
  br label %141

94:                                               ; preds = %86
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #7
  %95 = getelementptr inbounds %"class.basisu::basisu_frontend", ptr %27, i32 0, i32 20
  %96 = load i32, ptr %12, align 4, !tbaa !9
  %97 = sext i32 %96 to i64
  %98 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6basisu6vectorINS_9etc_blockEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %95, i64 noundef %97)
          to label %99 unwind label %118

99:                                               ; preds = %94
  %100 = invoke noundef i32 @_ZNK6basisu9etc_block21get_raw_selector_bitsEv(ptr noundef nonnull align 8 dereferenceable(8) %98)
          to label %101 unwind label %118

101:                                              ; preds = %99
  store i32 %100, ptr %14, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %15) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #7
  %102 = invoke i64 @_ZSt9make_pairIRKjRjESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS4_INS5_IT0_E4typeEE6__typeEEOS6_OSB_(ptr noundef nonnull align 4 dereferenceable(4) %14, ptr noundef nonnull align 4 dereferenceable(4) %10)
          to label %103 unwind label %122

103:                                              ; preds = %101
  store i64 %102, ptr %16, align 4
  %104 = invoke { ptr, i8 } @_ZNSt13unordered_mapIjjSt4hashIjESt8equal_toIjESaISt4pairIKjjEEE6insertIS4_IjjEEENSt9enable_ifIXsr16is_constructibleIS6_OT_EE5valueES4_INSt8__detail14_Node_iteratorIS6_Lb0ELb0EEEbEE4typeESD_(ptr noundef nonnull align 8 dereferenceable(56) %11, ptr noundef nonnull align 4 dereferenceable(8) %16)
          to label %105 unwind label %122

105:                                              ; preds = %103
  store { ptr, i8 } %104, ptr %17, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %15, ptr align 8 %17, i64 9, i1 false)
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #7
  %106 = getelementptr inbounds %"struct.std::pair", ptr %15, i32 0, i32 1
  %107 = load i8, ptr %106, align 8, !tbaa !37, !range !35, !noundef !36
  %108 = trunc i8 %107 to i1
  br i1 %108, label %130, label %109

109:                                              ; preds = %105
  %110 = getelementptr inbounds %"struct.std::pair", ptr %15, i32 0, i32 0
  %111 = call noundef ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKjjELb0ELb0EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %110) #7
  %112 = getelementptr inbounds %"struct.std::pair.49", ptr %111, i32 0, i32 1
  %113 = load i32, ptr %112, align 4, !tbaa !41
  %114 = load i32, ptr %12, align 4, !tbaa !9
  %115 = sext i32 %114 to i64
  %116 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6basisu6vectorIiEixEm(ptr noundef nonnull align 8 dereferenceable(16) %8, i64 noundef %115)
          to label %117 unwind label %126

117:                                              ; preds = %109
  store i32 %113, ptr %116, align 4, !tbaa !9
  store i32 7, ptr %13, align 4
  br label %138

118:                                              ; preds = %99, %94
  %119 = landingpad { ptr, i32 }
          cleanup
  %120 = extractvalue { ptr, i32 } %119, 0
  store ptr %120, ptr %6, align 8
  %121 = extractvalue { ptr, i32 } %119, 1
  store i32 %121, ptr %7, align 4
  br label %145

122:                                              ; preds = %103, %101
  %123 = landingpad { ptr, i32 }
          cleanup
  %124 = extractvalue { ptr, i32 } %123, 0
  store ptr %124, ptr %6, align 8
  %125 = extractvalue { ptr, i32 } %123, 1
  store i32 %125, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #7
  br label %144

126:                                              ; preds = %136, %130, %109
  %127 = landingpad { ptr, i32 }
          cleanup
  %128 = extractvalue { ptr, i32 } %127, 0
  store ptr %128, ptr %6, align 8
  %129 = extractvalue { ptr, i32 } %127, 1
  store i32 %129, ptr %7, align 4
  br label %144

130:                                              ; preds = %105
  %131 = load i32, ptr %10, align 4, !tbaa !9
  %132 = add i32 %131, 1
  store i32 %132, ptr %10, align 4, !tbaa !9
  %133 = load i32, ptr %12, align 4, !tbaa !9
  %134 = sext i32 %133 to i64
  %135 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6basisu6vectorIiEixEm(ptr noundef nonnull align 8 dereferenceable(16) %8, i64 noundef %134)
          to label %136 unwind label %126

136:                                              ; preds = %130
  store i32 %131, ptr %135, align 4, !tbaa !9
  invoke void @_ZN6basisu6vectorIiE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(16) %9, ptr noundef nonnull align 4 dereferenceable(4) %12)
          to label %137 unwind label %126

137:                                              ; preds = %136
  store i32 0, ptr %13, align 4
  br label %138

138:                                              ; preds = %137, %117
  call void @llvm.lifetime.end.p0(i64 16, ptr %15) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #7
  %139 = load i32, ptr %13, align 4
  switch i32 %139, label %471 [
    i32 0, label %140
    i32 7, label %141
  ]

140:                                              ; preds = %138
  br label %141

141:                                              ; preds = %140, %138, %93
  %142 = load i32, ptr %12, align 4, !tbaa !9
  %143 = add nsw i32 %142, 1
  store i32 %143, ptr %12, align 4, !tbaa !9
  br label %63, !llvm.loop !43

144:                                              ; preds = %126, %122
  call void @llvm.lifetime.end.p0(i64 16, ptr %15) #7
  br label %145

145:                                              ; preds = %144, %118
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #7
  br label %146

146:                                              ; preds = %145, %78
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #7
  br label %462

147:                                              ; preds = %69
  %148 = load i32, ptr %3, align 4, !tbaa !9
  %149 = load i32, ptr %10, align 4, !tbaa !9
  invoke void (ptr, ...) @_ZN6basisu12debug_printfEPKcz(ptr noundef @.str.21, i32 noundef %148, i32 noundef %149)
          to label %150 unwind label %158

150:                                              ; preds = %147
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #7
  store i32 0, ptr %18, align 4, !tbaa !9
  br label %151

151:                                              ; preds = %212, %150
  %152 = load i32, ptr %18, align 4, !tbaa !9
  %153 = getelementptr inbounds %"class.basisu::basisu_frontend", ptr %27, i32 0, i32 26
  %154 = invoke noundef i32 @_ZNK6basisu6vectorIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %153)
          to label %155 unwind label %162

155:                                              ; preds = %151
  %156 = icmp ult i32 %152, %154
  br i1 %156, label %166, label %157

157:                                              ; preds = %155
  store i32 8, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #7
  br label %215

158:                                              ; preds = %147
  %159 = landingpad { ptr, i32 }
          cleanup
  %160 = extractvalue { ptr, i32 } %159, 0
  store ptr %160, ptr %6, align 8
  %161 = extractvalue { ptr, i32 } %159, 1
  store i32 %161, ptr %7, align 4
  br label %462

162:                                              ; preds = %205, %201, %196, %192, %184, %179, %172, %167, %151
  %163 = landingpad { ptr, i32 }
          cleanup
  %164 = extractvalue { ptr, i32 } %163, 0
  store ptr %164, ptr %6, align 8
  %165 = extractvalue { ptr, i32 } %163, 1
  store i32 %165, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #7
  br label %462

166:                                              ; preds = %155
  br label %167

167:                                              ; preds = %166
  %168 = getelementptr inbounds %"class.basisu::basisu_frontend", ptr %27, i32 0, i32 26
  %169 = load i32, ptr %18, align 4, !tbaa !9
  %170 = zext i32 %169 to i64
  %171 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6basisu6vectorIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %168, i64 noundef %170)
          to label %172 unwind label %162

172:                                              ; preds = %167
  %173 = load i32, ptr %171, align 4, !tbaa !9
  %174 = zext i32 %173 to i64
  %175 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6basisu6vectorIiEixEm(ptr noundef nonnull align 8 dereferenceable(16) %8, i64 noundef %174)
          to label %176 unwind label %162

176:                                              ; preds = %172
  %177 = load i32, ptr %175, align 4, !tbaa !9
  %178 = icmp sge i32 %177, 0
  br i1 %178, label %179, label %192

179:                                              ; preds = %176
  %180 = getelementptr inbounds %"class.basisu::basisu_frontend", ptr %27, i32 0, i32 26
  %181 = load i32, ptr %18, align 4, !tbaa !9
  %182 = zext i32 %181 to i64
  %183 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6basisu6vectorIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %180, i64 noundef %182)
          to label %184 unwind label %162

184:                                              ; preds = %179
  %185 = load i32, ptr %183, align 4, !tbaa !9
  %186 = zext i32 %185 to i64
  %187 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6basisu6vectorIiEixEm(ptr noundef nonnull align 8 dereferenceable(16) %8, i64 noundef %186)
          to label %188 unwind label %162

188:                                              ; preds = %184
  %189 = load i32, ptr %187, align 4, !tbaa !9
  %190 = load i32, ptr %10, align 4, !tbaa !9
  %191 = icmp slt i32 %189, %190
  br i1 %191, label %194, label %192

192:                                              ; preds = %188, %176
  invoke void @_ZN6basisuL21handle_verify_failureEi(i32 noundef 720)
          to label %193 unwind label %162

193:                                              ; preds = %192
  br label %194

194:                                              ; preds = %193, %188
  br label %195

195:                                              ; preds = %194
  br label %196

196:                                              ; preds = %195
  %197 = getelementptr inbounds %"class.basisu::basisu_frontend", ptr %27, i32 0, i32 26
  %198 = load i32, ptr %18, align 4, !tbaa !9
  %199 = zext i32 %198 to i64
  %200 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6basisu6vectorIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %197, i64 noundef %199)
          to label %201 unwind label %162

201:                                              ; preds = %196
  %202 = load i32, ptr %200, align 4, !tbaa !9
  %203 = zext i32 %202 to i64
  %204 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6basisu6vectorIiEixEm(ptr noundef nonnull align 8 dereferenceable(16) %8, i64 noundef %203)
          to label %205 unwind label %162

205:                                              ; preds = %201
  %206 = load i32, ptr %204, align 4, !tbaa !9
  %207 = getelementptr inbounds %"class.basisu::basisu_frontend", ptr %27, i32 0, i32 26
  %208 = load i32, ptr %18, align 4, !tbaa !9
  %209 = zext i32 %208 to i64
  %210 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6basisu6vectorIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %207, i64 noundef %209)
          to label %211 unwind label %162

211:                                              ; preds = %205
  store i32 %206, ptr %210, align 4, !tbaa !9
  br label %212

212:                                              ; preds = %211
  %213 = load i32, ptr %18, align 4, !tbaa !9
  %214 = add i32 %213, 1
  store i32 %214, ptr %18, align 4, !tbaa !9
  br label %151, !llvm.loop !44

215:                                              ; preds = %157
  call void @llvm.lifetime.start.p0(i64 16, ptr %19) #7
  %216 = getelementptr inbounds %"class.basisu::basisu_frontend", ptr %27, i32 0, i32 20
  %217 = invoke noundef i32 @_ZNK6basisu6vectorINS_9etc_blockEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %216)
          to label %218 unwind label %265

218:                                              ; preds = %215
  %219 = icmp ne i32 %217, 0
  br i1 %219, label %220, label %222

220:                                              ; preds = %218
  %221 = load i32, ptr %10, align 4, !tbaa !9
  br label %223

222:                                              ; preds = %218
  br label %223

223:                                              ; preds = %222, %220
  %224 = phi i32 [ %221, %220 ], [ 0, %222 ]
  %225 = zext i32 %224 to i64
  invoke void @_ZN6basisu6vectorINS_9etc_blockEEC2Em(ptr noundef nonnull align 8 dereferenceable(16) %19, i64 noundef %225)
          to label %226 unwind label %265

226:                                              ; preds = %223
  call void @llvm.lifetime.start.p0(i64 16, ptr %20) #7
  %227 = getelementptr inbounds %"class.basisu::basisu_frontend", ptr %27, i32 0, i32 24
  %228 = invoke noundef i32 @_ZNK6basisu6vectorIN6basist38etc1_global_selector_codebook_entry_idEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %227)
          to label %229 unwind label %269

229:                                              ; preds = %226
  %230 = icmp ne i32 %228, 0
  br i1 %230, label %231, label %233

231:                                              ; preds = %229
  %232 = load i32, ptr %10, align 4, !tbaa !9
  br label %234

233:                                              ; preds = %229
  br label %234

234:                                              ; preds = %233, %231
  %235 = phi i32 [ %232, %231 ], [ 0, %233 ]
  %236 = zext i32 %235 to i64
  invoke void @_ZN6basisu6vectorIN6basist38etc1_global_selector_codebook_entry_idEEC2Em(ptr noundef nonnull align 8 dereferenceable(16) %20, i64 noundef %236)
          to label %237 unwind label %269

237:                                              ; preds = %234
  call void @llvm.lifetime.start.p0(i64 16, ptr %21) #7
  %238 = getelementptr inbounds %"class.basisu::basisu_frontend", ptr %27, i32 0, i32 19
  %239 = invoke noundef i32 @_ZNK6basisu6vectorINS0_IjEEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %238)
          to label %240 unwind label %273

240:                                              ; preds = %237
  %241 = icmp ne i32 %239, 0
  br i1 %241, label %242, label %244

242:                                              ; preds = %240
  %243 = load i32, ptr %10, align 4, !tbaa !9
  br label %245

244:                                              ; preds = %240
  br label %245

245:                                              ; preds = %244, %242
  %246 = phi i32 [ %243, %242 ], [ 0, %244 ]
  %247 = zext i32 %246 to i64
  invoke void @_ZN6basisu6vectorINS0_IjEEEC2Em(ptr noundef nonnull align 8 dereferenceable(16) %21, i64 noundef %247)
          to label %248 unwind label %273

248:                                              ; preds = %245
  call void @llvm.lifetime.start.p0(i64 16, ptr %22) #7
  %249 = getelementptr inbounds %"class.basisu::basisu_frontend", ptr %27, i32 0, i32 25
  %250 = invoke noundef i32 @_ZNK6basisu6vectorIbE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %249)
          to label %251 unwind label %277

251:                                              ; preds = %248
  %252 = icmp ne i32 %250, 0
  br i1 %252, label %253, label %255

253:                                              ; preds = %251
  %254 = load i32, ptr %10, align 4, !tbaa !9
  br label %256

255:                                              ; preds = %251
  br label %256

256:                                              ; preds = %255, %253
  %257 = phi i32 [ %254, %253 ], [ 0, %255 ]
  %258 = zext i32 %257 to i64
  invoke void @_ZN6basisu6vectorIbEC2Em(ptr noundef nonnull align 8 dereferenceable(16) %22, i64 noundef %258)
          to label %259 unwind label %277

259:                                              ; preds = %256
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #7
  store i32 0, ptr %23, align 4, !tbaa !9
  br label %260

260:                                              ; preds = %346, %259
  %261 = load i32, ptr %23, align 4, !tbaa !9
  %262 = load i32, ptr %10, align 4, !tbaa !9
  %263 = icmp ult i32 %261, %262
  br i1 %263, label %281, label %264

264:                                              ; preds = %260
  store i32 13, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #7
  br label %349

265:                                              ; preds = %223, %215
  %266 = landingpad { ptr, i32 }
          cleanup
  %267 = extractvalue { ptr, i32 } %266, 0
  store ptr %267, ptr %6, align 8
  %268 = extractvalue { ptr, i32 } %266, 1
  store i32 %268, ptr %7, align 4
  br label %461

269:                                              ; preds = %234, %226
  %270 = landingpad { ptr, i32 }
          cleanup
  %271 = extractvalue { ptr, i32 } %270, 0
  store ptr %271, ptr %6, align 8
  %272 = extractvalue { ptr, i32 } %270, 1
  store i32 %272, ptr %7, align 4
  br label %460

273:                                              ; preds = %245, %237
  %274 = landingpad { ptr, i32 }
          cleanup
  %275 = extractvalue { ptr, i32 } %274, 0
  store ptr %275, ptr %6, align 8
  %276 = extractvalue { ptr, i32 } %274, 1
  store i32 %276, ptr %7, align 4
  br label %459

277:                                              ; preds = %256, %248
  %278 = landingpad { ptr, i32 }
          cleanup
  %279 = extractvalue { ptr, i32 } %278, 0
  store ptr %279, ptr %6, align 8
  %280 = extractvalue { ptr, i32 } %278, 1
  store i32 %280, ptr %7, align 4
  br label %458

281:                                              ; preds = %260
  %282 = getelementptr inbounds %"class.basisu::basisu_frontend", ptr %27, i32 0, i32 20
  %283 = invoke noundef i32 @_ZNK6basisu6vectorINS_9etc_blockEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %282)
          to label %284 unwind label %300

284:                                              ; preds = %281
  %285 = icmp ne i32 %283, 0
  br i1 %285, label %286, label %304

286:                                              ; preds = %284
  %287 = getelementptr inbounds %"class.basisu::basisu_frontend", ptr %27, i32 0, i32 20
  %288 = load i32, ptr %23, align 4, !tbaa !9
  %289 = zext i32 %288 to i64
  %290 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6basisu6vectorIiEixEm(ptr noundef nonnull align 8 dereferenceable(16) %9, i64 noundef %289)
          to label %291 unwind label %300

291:                                              ; preds = %286
  %292 = load i32, ptr %290, align 4, !tbaa !9
  %293 = sext i32 %292 to i64
  %294 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6basisu6vectorINS_9etc_blockEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %287, i64 noundef %293)
          to label %295 unwind label %300

295:                                              ; preds = %291
  %296 = load i32, ptr %23, align 4, !tbaa !9
  %297 = zext i32 %296 to i64
  %298 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN6basisu6vectorINS_9etc_blockEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %19, i64 noundef %297)
          to label %299 unwind label %300

299:                                              ; preds = %295
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %298, ptr align 8 %294, i64 8, i1 false), !tbaa.struct !45
  br label %304

300:                                              ; preds = %337, %333, %328, %323, %318, %314, %309, %304, %295, %291, %286, %281
  %301 = landingpad { ptr, i32 }
          cleanup
  %302 = extractvalue { ptr, i32 } %301, 0
  store ptr %302, ptr %6, align 8
  %303 = extractvalue { ptr, i32 } %301, 1
  store i32 %303, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #7
  br label %457

304:                                              ; preds = %299, %284
  %305 = getelementptr inbounds %"class.basisu::basisu_frontend", ptr %27, i32 0, i32 24
  %306 = invoke noundef i32 @_ZNK6basisu6vectorIN6basist38etc1_global_selector_codebook_entry_idEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %305)
          to label %307 unwind label %300

307:                                              ; preds = %304
  %308 = icmp ne i32 %306, 0
  br i1 %308, label %309, label %323

309:                                              ; preds = %307
  %310 = getelementptr inbounds %"class.basisu::basisu_frontend", ptr %27, i32 0, i32 24
  %311 = load i32, ptr %23, align 4, !tbaa !9
  %312 = zext i32 %311 to i64
  %313 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6basisu6vectorIiEixEm(ptr noundef nonnull align 8 dereferenceable(16) %9, i64 noundef %312)
          to label %314 unwind label %300

314:                                              ; preds = %309
  %315 = load i32, ptr %313, align 4, !tbaa !9
  %316 = sext i32 %315 to i64
  %317 = invoke noundef nonnull align 4 dereferenceable(17) ptr @_ZN6basisu6vectorIN6basist38etc1_global_selector_codebook_entry_idEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %310, i64 noundef %316)
          to label %318 unwind label %300

318:                                              ; preds = %314
  %319 = load i32, ptr %23, align 4, !tbaa !9
  %320 = zext i32 %319 to i64
  %321 = invoke noundef nonnull align 4 dereferenceable(17) ptr @_ZN6basisu6vectorIN6basist38etc1_global_selector_codebook_entry_idEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %20, i64 noundef %320)
          to label %322 unwind label %300

322:                                              ; preds = %318
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %321, ptr align 4 %317, i64 17, i1 false), !tbaa.struct !47
  br label %323

323:                                              ; preds = %322, %307
  %324 = getelementptr inbounds %"class.basisu::basisu_frontend", ptr %27, i32 0, i32 25
  %325 = invoke noundef i32 @_ZNK6basisu6vectorIbE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %324)
          to label %326 unwind label %300

326:                                              ; preds = %323
  %327 = icmp ne i32 %325, 0
  br i1 %327, label %328, label %345

328:                                              ; preds = %326
  %329 = getelementptr inbounds %"class.basisu::basisu_frontend", ptr %27, i32 0, i32 25
  %330 = load i32, ptr %23, align 4, !tbaa !9
  %331 = zext i32 %330 to i64
  %332 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6basisu6vectorIiEixEm(ptr noundef nonnull align 8 dereferenceable(16) %9, i64 noundef %331)
          to label %333 unwind label %300

333:                                              ; preds = %328
  %334 = load i32, ptr %332, align 4, !tbaa !9
  %335 = sext i32 %334 to i64
  %336 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZN6basisu6vectorIbEixEm(ptr noundef nonnull align 8 dereferenceable(16) %329, i64 noundef %335)
          to label %337 unwind label %300

337:                                              ; preds = %333
  %338 = load i8, ptr %336, align 1, !tbaa !32, !range !35, !noundef !36
  %339 = trunc i8 %338 to i1
  %340 = load i32, ptr %23, align 4, !tbaa !9
  %341 = zext i32 %340 to i64
  %342 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZN6basisu6vectorIbEixEm(ptr noundef nonnull align 8 dereferenceable(16) %22, i64 noundef %341)
          to label %343 unwind label %300

343:                                              ; preds = %337
  %344 = zext i1 %339 to i8
  store i8 %344, ptr %342, align 1, !tbaa !32
  br label %345

345:                                              ; preds = %343, %326
  br label %346

346:                                              ; preds = %345
  %347 = load i32, ptr %23, align 4, !tbaa !9
  %348 = add i32 %347, 1
  store i32 %348, ptr %23, align 4, !tbaa !9
  br label %260, !llvm.loop !48

349:                                              ; preds = %264
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #7
  store i32 0, ptr %24, align 4, !tbaa !9
  br label %350

350:                                              ; preds = %372, %349
  %351 = load i32, ptr %24, align 4, !tbaa !9
  %352 = getelementptr inbounds %"class.basisu::basisu_frontend", ptr %27, i32 0, i32 26
  %353 = invoke noundef i32 @_ZNK6basisu6vectorIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %352)
          to label %354 unwind label %357

354:                                              ; preds = %350
  %355 = icmp ult i32 %351, %353
  br i1 %355, label %361, label %356

356:                                              ; preds = %354
  store i32 16, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #7
  br label %375

357:                                              ; preds = %370, %366, %361, %350
  %358 = landingpad { ptr, i32 }
          cleanup
  %359 = extractvalue { ptr, i32 } %358, 0
  store ptr %359, ptr %6, align 8
  %360 = extractvalue { ptr, i32 } %358, 1
  store i32 %360, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #7
  br label %457

361:                                              ; preds = %354
  %362 = getelementptr inbounds %"class.basisu::basisu_frontend", ptr %27, i32 0, i32 26
  %363 = load i32, ptr %24, align 4, !tbaa !9
  %364 = zext i32 %363 to i64
  %365 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6basisu6vectorIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %362, i64 noundef %364)
          to label %366 unwind label %357

366:                                              ; preds = %361
  %367 = load i32, ptr %365, align 4, !tbaa !9
  %368 = zext i32 %367 to i64
  %369 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN6basisu6vectorINS0_IjEEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %21, i64 noundef %368)
          to label %370 unwind label %357

370:                                              ; preds = %366
  invoke void @_ZN6basisu6vectorIjE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(16) %369, ptr noundef nonnull align 4 dereferenceable(4) %24)
          to label %371 unwind label %357

371:                                              ; preds = %370
  br label %372

372:                                              ; preds = %371
  %373 = load i32, ptr %24, align 4, !tbaa !9
  %374 = add i32 %373, 1
  store i32 %374, ptr %24, align 4, !tbaa !9
  br label %350, !llvm.loop !49

375:                                              ; preds = %356
  %376 = getelementptr inbounds %"class.basisu::basisu_frontend", ptr %27, i32 0, i32 20
  invoke void @_ZN6basisu6vectorINS_9etc_blockEE4swapERS2_(ptr noundef nonnull align 8 dereferenceable(16) %376, ptr noundef nonnull align 8 dereferenceable(16) %19)
          to label %377 unwind label %396

377:                                              ; preds = %375
  %378 = getelementptr inbounds %"class.basisu::basisu_frontend", ptr %27, i32 0, i32 24
  invoke void @_ZN6basisu6vectorIN6basist38etc1_global_selector_codebook_entry_idEE4swapERS3_(ptr noundef nonnull align 8 dereferenceable(16) %378, ptr noundef nonnull align 8 dereferenceable(16) %20)
          to label %379 unwind label %396

379:                                              ; preds = %377
  %380 = getelementptr inbounds %"class.basisu::basisu_frontend", ptr %27, i32 0, i32 19
  invoke void @_ZN6basisu6vectorINS0_IjEEE4swapERS2_(ptr noundef nonnull align 8 dereferenceable(16) %380, ptr noundef nonnull align 8 dereferenceable(16) %21)
          to label %381 unwind label %396

381:                                              ; preds = %379
  %382 = getelementptr inbounds %"class.basisu::basisu_frontend", ptr %27, i32 0, i32 25
  invoke void @_ZN6basisu6vectorIbE4swapERS1_(ptr noundef nonnull align 8 dereferenceable(16) %382, ptr noundef nonnull align 8 dereferenceable(16) %22)
          to label %383 unwind label %396

383:                                              ; preds = %381
  %384 = getelementptr inbounds %"class.basisu::basisu_frontend", ptr %27, i32 0, i32 23
  %385 = invoke noundef i32 @_ZNK6basisu6vectorINS0_IjEEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %384)
          to label %386 unwind label %396

386:                                              ; preds = %383
  %387 = icmp ne i32 %385, 0
  br i1 %387, label %388, label %453

388:                                              ; preds = %386
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #7
  store i32 0, ptr %25, align 4, !tbaa !9
  br label %389

389:                                              ; preds = %448, %388
  %390 = load i32, ptr %25, align 4, !tbaa !9
  %391 = getelementptr inbounds %"class.basisu::basisu_frontend", ptr %27, i32 0, i32 23
  %392 = invoke noundef i32 @_ZNK6basisu6vectorINS0_IjEEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %391)
          to label %393 unwind label %400

393:                                              ; preds = %389
  %394 = icmp ult i32 %390, %392
  br i1 %394, label %404, label %395

395:                                              ; preds = %393
  store i32 19, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #7
  br label %452

396:                                              ; preds = %453, %383, %381, %379, %377, %375
  %397 = landingpad { ptr, i32 }
          cleanup
  %398 = extractvalue { ptr, i32 } %397, 0
  store ptr %398, ptr %6, align 8
  %399 = extractvalue { ptr, i32 } %397, 1
  store i32 %399, ptr %7, align 4
  br label %457

400:                                              ; preds = %389
  %401 = landingpad { ptr, i32 }
          cleanup
  %402 = extractvalue { ptr, i32 } %401, 0
  store ptr %402, ptr %6, align 8
  %403 = extractvalue { ptr, i32 } %401, 1
  store i32 %403, ptr %7, align 4
  br label %451

404:                                              ; preds = %393
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #7
  store i32 0, ptr %26, align 4, !tbaa !9
  br label %405

405:                                              ; preds = %444, %404
  %406 = load i32, ptr %26, align 4, !tbaa !9
  %407 = getelementptr inbounds %"class.basisu::basisu_frontend", ptr %27, i32 0, i32 23
  %408 = load i32, ptr %25, align 4, !tbaa !9
  %409 = zext i32 %408 to i64
  %410 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN6basisu6vectorINS0_IjEEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %407, i64 noundef %409)
          to label %411 unwind label %416

411:                                              ; preds = %405
  %412 = invoke noundef i32 @_ZNK6basisu6vectorIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %410)
          to label %413 unwind label %416

413:                                              ; preds = %411
  %414 = icmp ult i32 %406, %412
  br i1 %414, label %420, label %415

415:                                              ; preds = %413
  store i32 22, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #7
  br label %447

416:                                              ; preds = %439, %433, %429, %425, %420, %411, %405
  %417 = landingpad { ptr, i32 }
          cleanup
  %418 = extractvalue { ptr, i32 } %417, 0
  store ptr %418, ptr %6, align 8
  %419 = extractvalue { ptr, i32 } %417, 1
  store i32 %419, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #7
  br label %451

420:                                              ; preds = %413
  %421 = getelementptr inbounds %"class.basisu::basisu_frontend", ptr %27, i32 0, i32 23
  %422 = load i32, ptr %25, align 4, !tbaa !9
  %423 = zext i32 %422 to i64
  %424 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN6basisu6vectorINS0_IjEEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %421, i64 noundef %423)
          to label %425 unwind label %416

425:                                              ; preds = %420
  %426 = load i32, ptr %26, align 4, !tbaa !9
  %427 = zext i32 %426 to i64
  %428 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6basisu6vectorIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %424, i64 noundef %427)
          to label %429 unwind label %416

429:                                              ; preds = %425
  %430 = load i32, ptr %428, align 4, !tbaa !9
  %431 = zext i32 %430 to i64
  %432 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6basisu6vectorIiEixEm(ptr noundef nonnull align 8 dereferenceable(16) %8, i64 noundef %431)
          to label %433 unwind label %416

433:                                              ; preds = %429
  %434 = load i32, ptr %432, align 4, !tbaa !9
  %435 = getelementptr inbounds %"class.basisu::basisu_frontend", ptr %27, i32 0, i32 23
  %436 = load i32, ptr %25, align 4, !tbaa !9
  %437 = zext i32 %436 to i64
  %438 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN6basisu6vectorINS0_IjEEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %435, i64 noundef %437)
          to label %439 unwind label %416

439:                                              ; preds = %433
  %440 = load i32, ptr %26, align 4, !tbaa !9
  %441 = zext i32 %440 to i64
  %442 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN6basisu6vectorIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %438, i64 noundef %441)
          to label %443 unwind label %416

443:                                              ; preds = %439
  store i32 %434, ptr %442, align 4, !tbaa !9
  br label %444

444:                                              ; preds = %443
  %445 = load i32, ptr %26, align 4, !tbaa !9
  %446 = add i32 %445, 1
  store i32 %446, ptr %26, align 4, !tbaa !9
  br label %405, !llvm.loop !50

447:                                              ; preds = %415
  br label %448

448:                                              ; preds = %447
  %449 = load i32, ptr %25, align 4, !tbaa !9
  %450 = add i32 %449, 1
  store i32 %450, ptr %25, align 4, !tbaa !9
  br label %389, !llvm.loop !51

451:                                              ; preds = %416, %400
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #7
  br label %457

452:                                              ; preds = %395
  br label %453

453:                                              ; preds = %452, %386
  %454 = load i32, ptr %3, align 4, !tbaa !9
  %455 = load i32, ptr %10, align 4, !tbaa !9
  invoke void (ptr, ...) @_ZN6basisu12debug_printfEPKcz(ptr noundef @.str.22, i32 noundef %454, i32 noundef %455)
          to label %456 unwind label %396

456:                                              ; preds = %453
  call void @_ZN6basisu6vectorIbED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %22) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %22) #7
  call void @_ZN6basisu6vectorINS0_IjEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %21) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %21) #7
  call void @_ZN6basisu6vectorIN6basist38etc1_global_selector_codebook_entry_idEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %20) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %20) #7
  call void @_ZN6basisu6vectorINS_9etc_blockEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %19) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %19) #7
  call void @_ZNSt13unordered_mapIjjSt4hashIjESt8equal_toIjESaISt4pairIKjjEEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %11) #7
  call void @llvm.lifetime.end.p0(i64 56, ptr %11) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #7
  call void @_ZN6basisu6vectorIiED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %9) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %9) #7
  call void @_ZN6basisu6vectorIiED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %8) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %8) #7
  call void @_ZN6basisu6vectorIbED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %4) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %4) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %3) #7
  ret void

457:                                              ; preds = %451, %396, %357, %300
  call void @_ZN6basisu6vectorIbED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %22) #7
  br label %458

458:                                              ; preds = %457, %277
  call void @llvm.lifetime.end.p0(i64 16, ptr %22) #7
  call void @_ZN6basisu6vectorINS0_IjEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %21) #7
  br label %459

459:                                              ; preds = %458, %273
  call void @llvm.lifetime.end.p0(i64 16, ptr %21) #7
  call void @_ZN6basisu6vectorIN6basist38etc1_global_selector_codebook_entry_idEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %20) #7
  br label %460

460:                                              ; preds = %459, %269
  call void @llvm.lifetime.end.p0(i64 16, ptr %20) #7
  call void @_ZN6basisu6vectorINS_9etc_blockEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %19) #7
  br label %461

461:                                              ; preds = %460, %265
  call void @llvm.lifetime.end.p0(i64 16, ptr %19) #7
  br label %462

462:                                              ; preds = %461, %162, %158, %146
  call void @_ZNSt13unordered_mapIjjSt4hashIjESt8equal_toIjESaISt4pairIKjjEEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %11) #7
  call void @llvm.lifetime.end.p0(i64 56, ptr %11) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #7
  call void @_ZN6basisu6vectorIiED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %9) #7
  br label %463

463:                                              ; preds = %462, %74
  call void @llvm.lifetime.end.p0(i64 16, ptr %9) #7
  call void @_ZN6basisu6vectorIiED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %8) #7
  br label %464

464:                                              ; preds = %463, %70
  call void @llvm.lifetime.end.p0(i64 16, ptr %8) #7
  br label %465

465:                                              ; preds = %464, %52
  call void @_ZN6basisu6vectorIbED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %4) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %4) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %3) #7
  br label %466

466:                                              ; preds = %465
  %467 = load ptr, ptr %6, align 8
  %468 = load i32, ptr %7, align 4
  %469 = insertvalue { ptr, i32 } poison, ptr %467, 0
  %470 = insertvalue { ptr, i32 } %469, i32 %468, 1
  resume { ptr, i32 } %470

471:                                              ; preds = %138
  unreachable
}

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt13unordered_mapIjjSt4hashIjESt8equal_toIjESaISt4pairIKjjEEEC2Ev(ptr noundef nonnull align 8 dereferenceable(56)) unnamed_addr #6 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) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i8 } @_ZNSt13unordered_mapIjjSt4hashIjESt8equal_toIjESaISt4pairIKjjEEE6insertIS4_IjjEEENSt9enable_ifIXsr16is_constructibleIS6_OT_EE5valueES4_INSt8__detail14_Node_iteratorIS6_Lb0ELb0EEEbEE4typeESD_(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 4 dereferenceable(8)) #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local i64 @_ZSt9make_pairIRKjRjESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS4_INS5_IT0_E4typeEE6__typeEEOS6_OSB_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) #4

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKjjELb0ELb0EEptEv(ptr noundef nonnull align 8 dereferenceable(8)) #6 align 2

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6basisu6vectorIN6basist38etc1_global_selector_codebook_entry_idEEC2Em(ptr noundef nonnull align 8 dereferenceable(16), i64 noundef) unnamed_addr #5 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 noundef i32 @_ZNK6basisu6vectorIbE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16)) #2 align 2

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN6basisu6vectorIiED2Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #2 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 nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { 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 #3 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { 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 = { 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 = { 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 #7 = { 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 = !{!12, !10, i64 88}
!12 = !{!"_ZTSN6basisu15basisu_frontendE", !13, i64 0, !10, i64 88, !10, i64 92, !14, i64 96, !14, i64 97, !14, i64 98, !10, i64 100, !10, i64 104, !17, i64 112, !18, i64 128, !18, i64 144, !18, i64 160, !19, i64 176, !22, i64 216, !22, i64 232, !23, i64 248, !22, i64 264, !24, i64 280, !25, i64 296, !22, i64 312, !18, i64 328, !22, i64 344, !23, i64 360, !22, i64 376, !26, i64 392, !27, i64 408, !28, i64 424, !29, i64 440, !30, i64 456}
!13 = !{!"_ZTSN6basisu15basisu_frontend6paramsE", !10, i64 0, !6, i64 8, !10, i64 16, !10, i64 20, !10, i64 24, !14, i64 28, !14, i64 29, !14, i64 30, !14, i64 31, !14, i64 32, !14, i64 33, !14, i64 34, !6, i64 40, !10, i64 48, !10, i64 52, !14, i64 56, !15, i64 60, !16, i64 64, !6, i64 72, !6, i64 80}
!14 = !{!"bool", !7, i64 0}
!15 = !{!"float", !7, i64 0}
!16 = !{!"_ZTSN6basist18basis_texture_typeE", !7, i64 0}
!17 = !{!"_ZTSN6basisu6vectorINS_11pixel_blockEEE", !6, i64 0, !10, i64 8, !10, i64 12}
!18 = !{!"_ZTSN6basisu6vectorINS_9etc_blockEEE", !6, i64 0, !10, i64 8, !10, i64 12}
!19 = !{!"_ZTSN6basisu17tree_vector_quantINS_3vecILj6EfEEEE", !20, i64 0, !21, i64 16, !10, i64 32}
!20 = !{!"_ZTSN6basisu6vectorINS_17tree_vector_quantINS_3vecILj6EfEEE9tsvq_nodeEEE", !6, i64 0, !10, i64 8, !10, i64 12}
!21 = !{!"_ZTSN6basisu6vectorISt4pairINS_3vecILj6EfEEmEEE", !6, i64 0, !10, i64 8, !10, i64 12}
!22 = !{!"_ZTSN6basisu6vectorINS0_IjEEEE", !6, i64 0, !10, i64 8, !10, i64 12}
!23 = !{!"_ZTSN6basisu6vectorIhEE", !6, i64 0, !10, i64 8, !10, i64 12}
!24 = !{!"_ZTSN6basisu6vectorINS_15basisu_frontend27endpoint_cluster_etc_paramsEEE", !6, i64 0, !10, i64 8, !10, i64 12}
!25 = !{!"_ZTSN6basisu6vectorINS_5vec2UEEE", !6, i64 0, !10, i64 8, !10, i64 12}
!26 = !{!"_ZTSN6basisu6vectorIN6basist38etc1_global_selector_codebook_entry_idEEE", !6, i64 0, !10, i64 8, !10, i64 12}
!27 = !{!"_ZTSN6basisu6vectorIbEE", !6, i64 0, !10, i64 8, !10, i64 12}
!28 = !{!"_ZTSN6basisu6vectorIjEE", !6, i64 0, !10, i64 8, !10, i64 12}
!29 = !{!"_ZTSN6basisu6vectorINS_15basisu_frontend27subblock_endpoint_quant_errEEE", !6, i64 0, !10, i64 8, !10, i64 12}
!30 = !{!"_ZTSSt5mutex", !31, i64 0}
!31 = !{!"_ZTSSt12__mutex_base", !7, i64 0}
!32 = !{!14, !14, i64 0}
!33 = distinct !{!33, !34}
!34 = !{!"llvm.loop.mustprogress"}
!35 = !{i8 0, i8 2}
!36 = !{}
!37 = !{!38, !14, i64 8}
!38 = !{!"_ZTSSt4pairINSt8__detail14_Node_iteratorIS_IKjjELb0ELb0EEEbE", !39, i64 0, !14, i64 8}
!39 = !{!"_ZTSNSt8__detail14_Node_iteratorISt4pairIKjjELb0ELb0EEE", !40, i64 0}
!40 = !{!"_ZTSNSt8__detail19_Node_iterator_baseISt4pairIKjjELb0EEE", !6, i64 0}
!41 = !{!42, !10, i64 4}
!42 = !{!"_ZTSSt4pairIKjjE", !10, i64 0, !10, i64 4}
!43 = distinct !{!43, !34}
!44 = distinct !{!44, !34}
!45 = !{i64 0, i64 8, !46}
!46 = !{!7, !7, i64 0}
!47 = !{i64 0, i64 4, !9, i64 4, i64 1, !46, i64 5, i64 1, !32, i64 6, i64 1, !32, i64 7, i64 1, !32, i64 8, i64 1, !32, i64 9, i64 1, !32, i64 10, i64 1, !32, i64 11, i64 1, !32, i64 12, i64 1, !32, i64 13, i64 1, !32, i64 14, i64 1, !32, i64 15, i64 1, !32, i64 16, i64 1, !46}
!48 = distinct !{!48, !34}
!49 = distinct !{!49, !34}
!50 = distinct !{!50, !34}
!51 = distinct !{!51, !34}


; 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.16" = type { ptr, i32, i32 }
%"class.basisu::vector.27" = type { ptr, i32, i32 }
%"class.std::unordered_map" = type { %"class.std::_Hashtable" }
%"class.std::_Hashtable" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.std::__detail::_Hash_node_base" = type { ptr }
%"struct.std::__detail::_Prime_rehash_policy" = type { float, i64 }
%"struct.std::pair" = type <{ %"struct.std::__detail::_Node_iterator", i8, [7 x i8] }>
%"struct.std::__detail::_Node_iterator" = type { %"struct.std::__detail::_Node_iterator_base" }
%"struct.std::__detail::_Node_iterator_base" = type { ptr }
%"struct.std::pair.47" = type { i32, i32 }
%"class.basisu::vector.0" = type { ptr, i32, i32 }
%"class.basisu::vector.14" = type { ptr, i32, i32 }
%"class.basisu::vector.6" = type { ptr, i32, i32 }

@.str.20 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [50 x i8], align 1

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

; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #1

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN6basisu15basisu_frontend26optimize_selector_codebookEv(ptr noundef nonnull align 8 dereferenceable(496) %0) local_unnamed_addr #4 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca %"class.basisu::vector.16", align 8
  %3 = alloca %"class.basisu::vector.27", align 8
  %4 = alloca %"class.basisu::vector.27", align 8
  %5 = alloca i32, align 4
  %6 = alloca %"class.std::unordered_map", align 8
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca %"struct.std::pair", align 8
  %10 = alloca %"struct.std::pair.47", align 8
  %11 = alloca %"class.basisu::vector.0", align 8
  %12 = alloca %"class.basisu::vector.14", align 8
  %13 = alloca %"class.basisu::vector.6", align 8
  %14 = alloca %"class.basisu::vector.16", align 8
  %15 = alloca i32, align 4
  tail call void (ptr, ...) @_ZN6basisu12debug_printfEPKcz(ptr noundef nonnull @.str.20)
  %16 = getelementptr inbounds i8, ptr %0, i64 328
  %17 = tail call noundef i32 @_ZNK6basisu6vectorINS_9etc_blockEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %16)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %2) #7
  %18 = tail call noundef i32 @_ZNK6basisu6vectorINS_9etc_blockEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %16)
  %19 = zext i32 %18 to i64
  call void @_ZN6basisu6vectorIbEC2Em(ptr noundef nonnull align 8 dereferenceable(16) %2, i64 noundef %19)
  %20 = getelementptr inbounds i8, ptr %0, i64 88
  %21 = load i32, ptr %20, align 8, !tbaa !5
  %.not80 = icmp eq i32 %21, 0
  br i1 %.not80, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %1
  %22 = getelementptr inbounds i8, ptr %0, i64 424
  br label %25

._crit_edge:                                      ; preds = %25, %1
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %3) #7
  %23 = call noundef i32 @_ZNK6basisu6vectorINS_9etc_blockEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %16)
  %24 = zext i32 %23 to i64
  invoke void @_ZN6basisu6vectorIiEC2Em(ptr noundef nonnull align 8 dereferenceable(16) %3, i64 noundef %24)
          to label %33 unwind label %39

25:                                               ; preds = %.lr.ph, %25
  %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %25 ]
  %26 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN6basisu6vectorIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %22, i64 noundef %indvars.iv)
  %27 = load i32, ptr %26, align 4, !tbaa !30
  %28 = zext i32 %27 to i64
  %29 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZN6basisu6vectorIbEixEm(ptr noundef nonnull align 8 dereferenceable(16) %2, i64 noundef %28)
  store i8 1, ptr %29, align 1, !tbaa !31
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %30 = load i32, ptr %20, align 8, !tbaa !5
  %31 = zext i32 %30 to i64
  %32 = icmp ult i64 %indvars.iv.next, %31
  br i1 %32, label %25, label %._crit_edge, !llvm.loop !32

33:                                               ; preds = %._crit_edge
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) #7
  call void @_ZN6basisu6vectorIiEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %4)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #7
  store i32 0, ptr %5, align 4, !tbaa !30
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %6) #7
  call void @_ZNSt13unordered_mapIjjSt4hashIjESt8equal_toIjESaISt4pairIKjjEEEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %6) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #7
  store i32 0, ptr %7, align 4, !tbaa !30
  %34 = call noundef i32 @_ZNK6basisu6vectorINS_9etc_blockEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %16)
  %35 = icmp sgt i32 %34, 0
  br i1 %35, label %.lr.ph65, label %._crit_edge66

.lr.ph65:                                         ; preds = %33
  %.sroa.2.0..sroa_idx = getelementptr inbounds i8, ptr %9, i64 8
  br label %41

._crit_edge66:                                    ; preds = %79, %33
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #7
  %36 = load i32, ptr %5, align 4, !tbaa !30
  invoke void (ptr, ...) @_ZN6basisu12debug_printfEPKcz(ptr noundef nonnull @.str.21, i32 noundef %17, i32 noundef %36)
          to label %.preheader62 unwind label %89

.preheader62:                                     ; preds = %._crit_edge66
  %37 = getelementptr inbounds i8, ptr %0, i64 424
  %38 = call noundef i32 @_ZNK6basisu6vectorIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %37)
  %.not81 = icmp eq i32 %38, 0
  br i1 %.not81, label %._crit_edge69, label %.lr.ph68

39:                                               ; preds = %._crit_edge
  %40 = landingpad { ptr, i32 }
          cleanup
  br label %216

41:                                               ; preds = %.lr.ph65, %79
  %42 = load i32, ptr %7, align 4, !tbaa !30
  %43 = sext i32 %42 to i64
  %44 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZN6basisu6vectorIbEixEm(ptr noundef nonnull align 8 dereferenceable(16) %2, i64 noundef %43)
  %45 = load i8, ptr %44, align 1, !tbaa !31, !range !34, !noundef !35
  %46 = trunc nuw i8 %45 to i1
  br i1 %46, label %51, label %47

47:                                               ; preds = %41
  %48 = load i32, ptr %7, align 4, !tbaa !30
  %49 = sext i32 %48 to i64
  %50 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN6basisu6vectorIiEixEm(ptr noundef nonnull align 8 dereferenceable(16) %3, i64 noundef %49)
  store i32 -1, ptr %50, align 4, !tbaa !30
  br label %79

51:                                               ; preds = %41
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %8) #7
  %52 = load i32, ptr %7, align 4, !tbaa !30
  %53 = sext i32 %52 to i64
  %54 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6basisu6vectorINS_9etc_blockEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %16, i64 noundef %53)
  %55 = call noundef i32 @_ZNK6basisu9etc_block21get_raw_selector_bitsEv(ptr noundef nonnull align 8 dereferenceable(8) %54)
  store i32 %55, ptr %8, align 4, !tbaa !30
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %9) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #7
  %56 = invoke i64 @_ZSt9make_pairIRKjRjESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS4_INS5_IT0_E4typeEE6__typeEEOS6_OSB_(ptr noundef nonnull align 4 dereferenceable(4) %8, ptr noundef nonnull align 4 dereferenceable(4) %5)
          to label %57 unwind label %68

57:                                               ; preds = %51
  store i64 %56, ptr %10, align 8
  %58 = invoke { ptr, i8 } @_ZNSt13unordered_mapIjjSt4hashIjESt8equal_toIjESaISt4pairIKjjEEE6insertIS4_IjjEEENSt9enable_ifIXsr16is_constructibleIS6_OT_EE5valueES4_INSt8__detail14_Node_iteratorIS6_Lb0ELb0EEEbEE4typeESD_(ptr noundef nonnull align 8 dereferenceable(56) %6, ptr noundef nonnull align 4 dereferenceable(8) %10)
          to label %59 unwind label %68

59:                                               ; preds = %57
  %.fca.0.extract = extractvalue { ptr, i8 } %58, 0
  %.fca.1.extract = extractvalue { ptr, i8 } %58, 1
  store ptr %.fca.0.extract, ptr %9, align 8
  store i8 %.fca.1.extract, ptr %.sroa.2.0..sroa_idx, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #7
  %60 = trunc nuw i8 %.fca.1.extract to i1
  br i1 %60, label %72, label %61

61:                                               ; preds = %59
  %62 = call noundef ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKjjELb0ELb0EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %9) #7
  %63 = getelementptr inbounds i8, ptr %62, i64 4
  %64 = load i32, ptr %63, align 4, !tbaa !36
  %65 = load i32, ptr %7, align 4, !tbaa !30
  %66 = sext i32 %65 to i64
  %67 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN6basisu6vectorIiEixEm(ptr noundef nonnull align 8 dereferenceable(16) %3, i64 noundef %66)
  store i32 %64, ptr %67, align 4, !tbaa !30
  br label %78

68:                                               ; preds = %57, %51
  %69 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #7
  br label %84

70:                                               ; preds = %72
  %71 = landingpad { ptr, i32 }
          cleanup
  br label %84

72:                                               ; preds = %59
  %73 = load i32, ptr %5, align 4, !tbaa !30
  %74 = add i32 %73, 1
  store i32 %74, ptr %5, align 4, !tbaa !30
  %75 = load i32, ptr %7, align 4, !tbaa !30
  %76 = sext i32 %75 to i64
  %77 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN6basisu6vectorIiEixEm(ptr noundef nonnull align 8 dereferenceable(16) %3, i64 noundef %76)
  store i32 %73, ptr %77, align 4, !tbaa !30
  invoke void @_ZN6basisu6vectorIiE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(16) %4, ptr noundef nonnull align 4 dereferenceable(4) %7)
          to label %78 unwind label %70

78:                                               ; preds = %72, %61
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #7
  br label %79

79:                                               ; preds = %78, %47
  %80 = load i32, ptr %7, align 4, !tbaa !30
  %81 = add nsw i32 %80, 1
  store i32 %81, ptr %7, align 4, !tbaa !30
  %82 = call noundef i32 @_ZNK6basisu6vectorINS_9etc_blockEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %16)
  %83 = icmp slt i32 %81, %82
  br i1 %83, label %41, label %._crit_edge66, !llvm.loop !38

84:                                               ; preds = %70, %68
  %.pn56 = phi { ptr, i32 } [ %71, %70 ], [ %69, %68 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #7
  br label %215

._crit_edge69:                                    ; preds = %106, %.preheader62
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %11) #7
  %85 = call noundef i32 @_ZNK6basisu6vectorINS_9etc_blockEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %16)
  %.not = icmp eq i32 %85, 0
  %86 = load i32, ptr %5, align 4
  %87 = select i1 %.not, i32 0, i32 %86
  %88 = zext i32 %87 to i64
  invoke void @_ZN6basisu6vectorINS_9etc_blockEEC2Em(ptr noundef nonnull align 8 dereferenceable(16) %11, i64 noundef %88)
          to label %116 unwind label %136

89:                                               ; preds = %._crit_edge66
  %90 = landingpad { ptr, i32 }
          cleanup
  br label %215

.lr.ph68:                                         ; preds = %.preheader62, %106
  %indvars.iv87 = phi i64 [ %indvars.iv.next88, %106 ], [ 0, %.preheader62 ]
  %91 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN6basisu6vectorIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %37, i64 noundef %indvars.iv87)
  %92 = load i32, ptr %91, align 4, !tbaa !30
  %93 = zext i32 %92 to i64
  %94 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN6basisu6vectorIiEixEm(ptr noundef nonnull align 8 dereferenceable(16) %3, i64 noundef %93)
  %95 = load i32, ptr %94, align 4, !tbaa !30
  %96 = icmp sgt i32 %95, -1
  br i1 %96, label %97, label %105

97:                                               ; preds = %.lr.ph68
  %98 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN6basisu6vectorIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %37, i64 noundef %indvars.iv87)
  %99 = load i32, ptr %98, align 4, !tbaa !30
  %100 = zext i32 %99 to i64
  %101 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN6basisu6vectorIiEixEm(ptr noundef nonnull align 8 dereferenceable(16) %3, i64 noundef %100)
  %102 = load i32, ptr %101, align 4, !tbaa !30
  %103 = load i32, ptr %5, align 4, !tbaa !30
  %104 = icmp slt i32 %102, %103
  br i1 %104, label %106, label %105

105:                                              ; preds = %97, %.lr.ph68
  call void @_ZN6basisuL21handle_verify_failureEi(i32 noundef 720)
  br label %106

106:                                              ; preds = %105, %97
  %107 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN6basisu6vectorIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %37, i64 noundef %indvars.iv87)
  %108 = load i32, ptr %107, align 4, !tbaa !30
  %109 = zext i32 %108 to i64
  %110 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN6basisu6vectorIiEixEm(ptr noundef nonnull align 8 dereferenceable(16) %3, i64 noundef %109)
  %111 = load i32, ptr %110, align 4, !tbaa !30
  %112 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN6basisu6vectorIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %37, i64 noundef %indvars.iv87)
  store i32 %111, ptr %112, align 4, !tbaa !30
  %indvars.iv.next88 = add nuw nsw i64 %indvars.iv87, 1
  %113 = call noundef i32 @_ZNK6basisu6vectorIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %37)
  %114 = zext i32 %113 to i64
  %115 = icmp ult i64 %indvars.iv.next88, %114
  br i1 %115, label %.lr.ph68, label %._crit_edge69, !llvm.loop !39

116:                                              ; preds = %._crit_edge69
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %12) #7
  %117 = getelementptr inbounds i8, ptr %0, i64 392
  %118 = call noundef i32 @_ZNK6basisu6vectorIN6basist38etc1_global_selector_codebook_entry_idEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %117)
  %.not43 = icmp eq i32 %118, 0
  %119 = load i32, ptr %5, align 4
  %120 = select i1 %.not43, i32 0, i32 %119
  %121 = zext i32 %120 to i64
  invoke void @_ZN6basisu6vectorIN6basist38etc1_global_selector_codebook_entry_idEEC2Em(ptr noundef nonnull align 8 dereferenceable(16) %12, i64 noundef %121)
          to label %122 unwind label %138

122:                                              ; preds = %116
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %13) #7
  %123 = getelementptr inbounds i8, ptr %0, i64 312
  %124 = call noundef i32 @_ZNK6basisu6vectorINS0_IjEEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %123)
  %.not44 = icmp eq i32 %124, 0
  %125 = load i32, ptr %5, align 4
  %126 = select i1 %.not44, i32 0, i32 %125
  %127 = zext i32 %126 to i64
  invoke void @_ZN6basisu6vectorINS0_IjEEEC2Em(ptr noundef nonnull align 8 dereferenceable(16) %13, i64 noundef %127)
          to label %128 unwind label %140

128:                                              ; preds = %122
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %14) #7
  %129 = getelementptr inbounds i8, ptr %0, i64 408
  %130 = call noundef i32 @_ZNK6basisu6vectorIbE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %129)
  %.not45 = icmp eq i32 %130, 0
  %131 = load i32, ptr %5, align 4
  %132 = select i1 %.not45, i32 0, i32 %131
  %133 = zext i32 %132 to i64
  invoke void @_ZN6basisu6vectorIbEC2Em(ptr noundef nonnull align 8 dereferenceable(16) %14, i64 noundef %133)
          to label %.preheader61 unwind label %142

.preheader61:                                     ; preds = %128
  %134 = load i32, ptr %5, align 4, !tbaa !30
  %.not82 = icmp eq i32 %134, 0
  br i1 %.not82, label %._crit_edge72, label %.lr.ph71

._crit_edge72:                                    ; preds = %169, %.preheader61
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %15) #7
  store i32 0, ptr %15, align 4, !tbaa !30
  %135 = call noundef i32 @_ZNK6basisu6vectorIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %37)
  %.not83 = icmp eq i32 %135, 0
  br i1 %.not83, label %._crit_edge75, label %.lr.ph74

136:                                              ; preds = %._crit_edge69
  %137 = landingpad { ptr, i32 }
          cleanup
  br label %214

138:                                              ; preds = %116
  %139 = landingpad { ptr, i32 }
          cleanup
  br label %213

140:                                              ; preds = %122
  %141 = landingpad { ptr, i32 }
          cleanup
  br label %212

142:                                              ; preds = %128
  %143 = landingpad { ptr, i32 }
          cleanup
  br label %211

.lr.ph71:                                         ; preds = %.preheader61, %169
  %indvars.iv90 = phi i64 [ %indvars.iv.next91, %169 ], [ 0, %.preheader61 ]
  %144 = call noundef i32 @_ZNK6basisu6vectorINS_9etc_blockEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %16)
  %.not53 = icmp eq i32 %144, 0
  br i1 %.not53, label %152, label %145

145:                                              ; preds = %.lr.ph71
  %146 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN6basisu6vectorIiEixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv90)
  %147 = load i32, ptr %146, align 4, !tbaa !30
  %148 = sext i32 %147 to i64
  %149 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6basisu6vectorINS_9etc_blockEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %16, i64 noundef %148)
  %150 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN6basisu6vectorINS_9etc_blockEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %11, i64 noundef %indvars.iv90)
  %151 = load i64, ptr %149, align 8, !tbaa !40
  store i64 %151, ptr %150, align 8, !tbaa !40
  br label %152

152:                                              ; preds = %145, %.lr.ph71
  %153 = call noundef i32 @_ZNK6basisu6vectorIN6basist38etc1_global_selector_codebook_entry_idEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %117)
  %.not54 = icmp eq i32 %153, 0
  br i1 %.not54, label %160, label %154

154:                                              ; preds = %152
  %155 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN6basisu6vectorIiEixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv90)
  %156 = load i32, ptr %155, align 4, !tbaa !30
  %157 = sext i32 %156 to i64
  %158 = call noundef nonnull align 4 dereferenceable(17) ptr @_ZN6basisu6vectorIN6basist38etc1_global_selector_codebook_entry_idEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %117, i64 noundef %157)
  %159 = call noundef nonnull align 4 dereferenceable(17) ptr @_ZN6basisu6vectorIN6basist38etc1_global_selector_codebook_entry_idEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %12, i64 noundef %indvars.iv90)
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(17) %159, ptr noundef nonnull align 4 dereferenceable(17) %158, i64 17, i1 false), !tbaa.struct !41
  br label %160

160:                                              ; preds = %154, %152
  %161 = call noundef i32 @_ZNK6basisu6vectorIbE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %129)
  %.not55 = icmp eq i32 %161, 0
  br i1 %.not55, label %169, label %162

162:                                              ; preds = %160
  %163 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN6basisu6vectorIiEixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv90)
  %164 = load i32, ptr %163, align 4, !tbaa !30
  %165 = sext i32 %164 to i64
  %166 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZN6basisu6vectorIbEixEm(ptr noundef nonnull align 8 dereferenceable(16) %129, i64 noundef %165)
  %167 = load i8, ptr %166, align 1, !tbaa !31, !range !34, !noundef !35
  %168 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZN6basisu6vectorIbEixEm(ptr noundef nonnull align 8 dereferenceable(16) %14, i64 noundef %indvars.iv90)
  store i8 %167, ptr %168, align 1, !tbaa !31
  br label %169

169:                                              ; preds = %160, %162
  %indvars.iv.next91 = add nuw nsw i64 %indvars.iv90, 1
  %170 = load i32, ptr %5, align 4, !tbaa !30
  %171 = zext i32 %170 to i64
  %172 = icmp ult i64 %indvars.iv.next91, %171
  br i1 %172, label %.lr.ph71, label %._crit_edge72, !llvm.loop !42

._crit_edge75:                                    ; preds = %184, %._crit_edge72
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #7
  call void @_ZN6basisu6vectorINS_9etc_blockEE4swapERS2_(ptr noundef nonnull align 8 dereferenceable(16) %16, ptr noundef nonnull align 8 dereferenceable(16) %11)
  call void @_ZN6basisu6vectorIN6basist38etc1_global_selector_codebook_entry_idEE4swapERS3_(ptr noundef nonnull align 8 dereferenceable(16) %117, ptr noundef nonnull align 8 dereferenceable(16) %12)
  call void @_ZN6basisu6vectorINS0_IjEEE4swapERS2_(ptr noundef nonnull align 8 dereferenceable(16) %123, ptr noundef nonnull align 8 dereferenceable(16) %13)
  call void @_ZN6basisu6vectorIbE4swapERS1_(ptr noundef nonnull align 8 dereferenceable(16) %129, ptr noundef nonnull align 8 dereferenceable(16) %14)
  %173 = getelementptr inbounds i8, ptr %0, i64 376
  %174 = call noundef i32 @_ZNK6basisu6vectorINS0_IjEEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %173)
  %.not47 = icmp eq i32 %174, 0
  br i1 %.not47, label %.loopexit, label %.preheader60

.preheader60:                                     ; preds = %._crit_edge75
  %175 = call noundef i32 @_ZNK6basisu6vectorINS0_IjEEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %173)
  %.not84 = icmp eq i32 %175, 0
  br i1 %.not84, label %.loopexit, label %.preheader

176:                                              ; preds = %.lr.ph74
  %177 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #7
  br label %210

.lr.ph74:                                         ; preds = %._crit_edge72, %184
  %178 = load i32, ptr %15, align 4, !tbaa !30
  %179 = zext i32 %178 to i64
  %180 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN6basisu6vectorIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %37, i64 noundef %179)
  %181 = load i32, ptr %180, align 4, !tbaa !30
  %182 = zext i32 %181 to i64
  %183 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN6basisu6vectorINS0_IjEEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %13, i64 noundef %182)
  invoke void @_ZN6basisu6vectorIjE9push_backERKj(ptr noundef nonnull align 8 dereferenceable(16) %183, ptr noundef nonnull align 4 dereferenceable(4) %15)
          to label %184 unwind label %176

184:                                              ; preds = %.lr.ph74
  %185 = load i32, ptr %15, align 4, !tbaa !30
  %186 = add i32 %185, 1
  store i32 %186, ptr %15, align 4, !tbaa !30
  %187 = call noundef i32 @_ZNK6basisu6vectorIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %37)
  %188 = icmp ult i32 %186, %187
  br i1 %188, label %.lr.ph74, label %._crit_edge75, !llvm.loop !43

.preheader:                                       ; preds = %.preheader60, %._crit_edge78
  %indvars.iv96 = phi i64 [ %indvars.iv.next97, %._crit_edge78 ], [ 0, %.preheader60 ]
  %189 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN6basisu6vectorINS0_IjEEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %173, i64 noundef %indvars.iv96)
  %190 = call noundef i32 @_ZNK6basisu6vectorIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %189)
  %.not85 = icmp eq i32 %190, 0
  br i1 %.not85, label %._crit_edge78, label %.lr.ph77

191:                                              ; preds = %.loopexit
  %192 = landingpad { ptr, i32 }
          cleanup
  br label %210

._crit_edge78:                                    ; preds = %.lr.ph77, %.preheader
  %indvars.iv.next97 = add nuw nsw i64 %indvars.iv96, 1
  %193 = call noundef i32 @_ZNK6basisu6vectorINS0_IjEEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %173)
  %194 = zext i32 %193 to i64
  %195 = icmp ult i64 %indvars.iv.next97, %194
  br i1 %195, label %.preheader, label %.loopexit, !llvm.loop !44

.lr.ph77:                                         ; preds = %.preheader, %.lr.ph77
  %indvars.iv93 = phi i64 [ %indvars.iv.next94, %.lr.ph77 ], [ 0, %.preheader ]
  %196 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN6basisu6vectorINS0_IjEEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %173, i64 noundef %indvars.iv96)
  %197 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN6basisu6vectorIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %196, i64 noundef %indvars.iv93)
  %198 = load i32, ptr %197, align 4, !tbaa !30
  %199 = zext i32 %198 to i64
  %200 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN6basisu6vectorIiEixEm(ptr noundef nonnull align 8 dereferenceable(16) %3, i64 noundef %199)
  %201 = load i32, ptr %200, align 4, !tbaa !30
  %202 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN6basisu6vectorINS0_IjEEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %173, i64 noundef %indvars.iv96)
  %203 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN6basisu6vectorIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %202, i64 noundef %indvars.iv93)
  store i32 %201, ptr %203, align 4, !tbaa !30
  %indvars.iv.next94 = add nuw nsw i64 %indvars.iv93, 1
  %204 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN6basisu6vectorINS0_IjEEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %173, i64 noundef %indvars.iv96)
  %205 = call noundef i32 @_ZNK6basisu6vectorIjE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %204)
  %206 = zext i32 %205 to i64
  %207 = icmp ult i64 %indvars.iv.next94, %206
  br i1 %207, label %.lr.ph77, label %._crit_edge78, !llvm.loop !45

.loopexit:                                        ; preds = %._crit_edge78, %.preheader60, %._crit_edge75
  %208 = load i32, ptr %5, align 4, !tbaa !30
  invoke void (ptr, ...) @_ZN6basisu12debug_printfEPKcz(ptr noundef nonnull @.str.22, i32 noundef %17, i32 noundef %208)
          to label %209 unwind label %191

209:                                              ; preds = %.loopexit
  call void @_ZN6basisu6vectorIbED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %14) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #7
  call void @_ZN6basisu6vectorINS0_IjEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %13) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #7
  call void @_ZN6basisu6vectorIN6basist38etc1_global_selector_codebook_entry_idEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %12) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #7
  call void @_ZN6basisu6vectorINS_9etc_blockEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %11) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #7
  call void @_ZNSt13unordered_mapIjjSt4hashIjESt8equal_toIjESaISt4pairIKjjEEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %6) #7
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %6) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #7
  call void @_ZN6basisu6vectorIiED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %4) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #7
  call void @_ZN6basisu6vectorIiED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %3) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) #7
  call void @_ZN6basisu6vectorIbED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2) #7
  ret void

210:                                              ; preds = %191, %176
  %.pn = phi { ptr, i32 } [ %177, %176 ], [ %192, %191 ]
  call void @_ZN6basisu6vectorIbED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %14) #7
  br label %211

211:                                              ; preds = %210, %142
  %.pn.pn = phi { ptr, i32 } [ %.pn, %210 ], [ %143, %142 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #7
  call void @_ZN6basisu6vectorINS0_IjEEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %13) #7
  br label %212

212:                                              ; preds = %211, %140
  %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %211 ], [ %141, %140 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #7
  call void @_ZN6basisu6vectorIN6basist38etc1_global_selector_codebook_entry_idEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %12) #7
  br label %213

213:                                              ; preds = %212, %138
  %.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn, %212 ], [ %139, %138 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #7
  call void @_ZN6basisu6vectorINS_9etc_blockEED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %11) #7
  br label %214

214:                                              ; preds = %213, %136
  %.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn, %213 ], [ %137, %136 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #7
  br label %215

215:                                              ; preds = %214, %89, %84
  %.pn56.pn = phi { ptr, i32 } [ %.pn56, %84 ], [ %.pn.pn.pn.pn.pn, %214 ], [ %90, %89 ]
  call void @_ZNSt13unordered_mapIjjSt4hashIjESt8equal_toIjESaISt4pairIKjjEEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %6) #7
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %6) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #7
  call void @_ZN6basisu6vectorIiED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %4) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #7
  call void @_ZN6basisu6vectorIiED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %3) #7
  br label %216

216:                                              ; preds = %215, %39
  %.pn56.pn.pn = phi { ptr, i32 } [ %.pn56.pn, %215 ], [ %40, %39 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %3) #7
  call void @_ZN6basisu6vectorIbED2Ev(ptr noundef nonnull align 8 dereferenceable(16) %2) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %2) #7
  resume { ptr, i32 } %.pn56.pn.pn
}

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt13unordered_mapIjjSt4hashIjESt8equal_toIjESaISt4pairIKjjEEEC2Ev(ptr noundef nonnull align 8 dereferenceable(56)) unnamed_addr #6 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 #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i8 } @_ZNSt13unordered_mapIjjSt4hashIjESt8equal_toIjESaISt4pairIKjjEEE6insertIS4_IjjEEENSt9enable_ifIXsr16is_constructibleIS6_OT_EE5valueES4_INSt8__detail14_Node_iteratorIS6_Lb0ELb0EEEbEE4typeESD_(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 4 dereferenceable(8)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local i64 @_ZSt9make_pairIRKjRjESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS4_INS5_IT0_E4typeEE6__typeEEOS6_OSB_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #4

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKjjELb0ELb0EEptEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #6 align 2

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6basisu6vectorIN6basist38etc1_global_selector_codebook_entry_idEEC2Em(ptr noundef nonnull align 8 dereferenceable(16), i64 noundef) unnamed_addr #5 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 noundef i32 @_ZNK6basisu6vectorIbE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #2 align 2

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN6basisu6vectorIiED2Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #2 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 nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { 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 #3 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { 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 = { 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 = { 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 #7 = { 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, !8, i64 88}
!6 = !{!"_ZTSN6basisu15basisu_frontendE", !7, i64 0, !8, i64 88, !8, i64 92, !12, i64 96, !12, i64 97, !12, i64 98, !8, i64 100, !8, i64 104, !15, i64 112, !16, i64 128, !16, i64 144, !16, i64 160, !17, i64 176, !20, i64 216, !20, i64 232, !21, i64 248, !20, i64 264, !22, i64 280, !23, i64 296, !20, i64 312, !16, i64 328, !20, i64 344, !21, i64 360, !20, i64 376, !24, i64 392, !25, i64 408, !26, i64 424, !27, i64 440, !28, i64 456}
!7 = !{!"_ZTSN6basisu15basisu_frontend6paramsE", !8, i64 0, !11, i64 8, !8, i64 16, !8, i64 20, !8, i64 24, !12, i64 28, !12, i64 29, !12, i64 30, !12, i64 31, !12, i64 32, !12, i64 33, !12, i64 34, !11, i64 40, !8, i64 48, !8, i64 52, !12, i64 56, !13, i64 60, !14, i64 64, !11, i64 72, !11, i64 80}
!8 = !{!"int", !9, i64 0}
!9 = !{!"omnipotent char", !10, i64 0}
!10 = !{!"Simple C++ TBAA"}
!11 = !{!"any pointer", !9, i64 0}
!12 = !{!"bool", !9, i64 0}
!13 = !{!"float", !9, i64 0}
!14 = !{!"_ZTSN6basist18basis_texture_typeE", !9, i64 0}
!15 = !{!"_ZTSN6basisu6vectorINS_11pixel_blockEEE", !11, i64 0, !8, i64 8, !8, i64 12}
!16 = !{!"_ZTSN6basisu6vectorINS_9etc_blockEEE", !11, i64 0, !8, i64 8, !8, i64 12}
!17 = !{!"_ZTSN6basisu17tree_vector_quantINS_3vecILj6EfEEEE", !18, i64 0, !19, i64 16, !8, i64 32}
!18 = !{!"_ZTSN6basisu6vectorINS_17tree_vector_quantINS_3vecILj6EfEEE9tsvq_nodeEEE", !11, i64 0, !8, i64 8, !8, i64 12}
!19 = !{!"_ZTSN6basisu6vectorISt4pairINS_3vecILj6EfEEmEEE", !11, i64 0, !8, i64 8, !8, i64 12}
!20 = !{!"_ZTSN6basisu6vectorINS0_IjEEEE", !11, i64 0, !8, i64 8, !8, i64 12}
!21 = !{!"_ZTSN6basisu6vectorIhEE", !11, i64 0, !8, i64 8, !8, i64 12}
!22 = !{!"_ZTSN6basisu6vectorINS_15basisu_frontend27endpoint_cluster_etc_paramsEEE", !11, i64 0, !8, i64 8, !8, i64 12}
!23 = !{!"_ZTSN6basisu6vectorINS_5vec2UEEE", !11, i64 0, !8, i64 8, !8, i64 12}
!24 = !{!"_ZTSN6basisu6vectorIN6basist38etc1_global_selector_codebook_entry_idEEE", !11, i64 0, !8, i64 8, !8, i64 12}
!25 = !{!"_ZTSN6basisu6vectorIbEE", !11, i64 0, !8, i64 8, !8, i64 12}
!26 = !{!"_ZTSN6basisu6vectorIjEE", !11, i64 0, !8, i64 8, !8, i64 12}
!27 = !{!"_ZTSN6basisu6vectorINS_15basisu_frontend27subblock_endpoint_quant_errEEE", !11, i64 0, !8, i64 8, !8, i64 12}
!28 = !{!"_ZTSSt5mutex", !29, i64 0}
!29 = !{!"_ZTSSt12__mutex_base", !9, i64 0}
!30 = !{!8, !8, i64 0}
!31 = !{!12, !12, i64 0}
!32 = distinct !{!32, !33}
!33 = !{!"llvm.loop.mustprogress"}
!34 = !{i8 0, i8 2}
!35 = !{}
!36 = !{!37, !8, i64 4}
!37 = !{!"_ZTSSt4pairIKjjE", !8, i64 0, !8, i64 4}
!38 = distinct !{!38, !33}
!39 = distinct !{!39, !33}
!40 = !{!9, !9, i64 0}
!41 = !{i64 0, i64 4, !30, i64 4, i64 1, !40, i64 5, i64 1, !31, i64 6, i64 1, !31, i64 7, i64 1, !31, i64 8, i64 1, !31, i64 9, i64 1, !31, i64 10, i64 1, !31, i64 11, i64 1, !31, i64 12, i64 1, !31, i64 13, i64 1, !31, i64 14, i64 1, !31, i64 15, i64 1, !31, i64 16, i64 1, !40}
!42 = distinct !{!42, !33}
!43 = distinct !{!43, !33}
!44 = distinct !{!44, !33}
!45 = distinct !{!45, !33}


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