; LLVM IR from Try/Tempest :: Engine/gapi/spirv (meshconverter)

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

%"struct.libspirv::MutableBytecode::Iterator" = type { %"struct.libspirv::Bytecode::Iterator.base", ptr }
%"struct.libspirv::Bytecode::Iterator.base" = type <{ ptr, i32 }>
%"struct.libspirv::Bytecode::Iterator" = type <{ ptr, i32, [4 x i8] }>
%"class.std::initializer_list" = type { ptr, i64 }
%"class.std::basic_string_view" = type { i64, ptr }
%"struct.std::__detail::_Node_iterator" = type { %"struct.std::__detail::_Node_iterator_base" }
%"struct.std::__detail::_Node_iterator_base" = type { ptr }
%"struct.std::__detail::_Node_iterator.26" = type { %"struct.std::__detail::_Node_iterator_base.27" }
%"struct.std::__detail::_Node_iterator_base.27" = type { ptr }
%class.MeshConverter = type <{ %"struct.MeshConverter::Options", [6 x i8], ptr, %"class.libspirv::MutableBytecode", %"class.libspirv::MutableBytecode", [3 x i32], i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [4 x i8], %"class.std::unordered_map", %"class.std::unordered_map", %"class.std::unordered_map.5", %"class.std::vector.19", i32, i32, i32, i32, i32, i32, i8, [7 x i8] }>
%"struct.MeshConverter::Options" = type { i8, i8 }
%"class.libspirv::MutableBytecode" = type { %"class.libspirv::Bytecode.base", %"class.std::vector" }
%"class.libspirv::Bytecode.base" = type <{ ptr, i64, i32 }>
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<libspirv::Bytecode::OpCode, std::allocator<libspirv::Bytecode::OpCode>>::_Vector_impl" }
%"struct.std::_Vector_base<libspirv::Bytecode::OpCode, std::allocator<libspirv::Bytecode::OpCode>>::_Vector_impl" = type { %"struct.std::_Vector_base<libspirv::Bytecode::OpCode, std::allocator<libspirv::Bytecode::OpCode>>::_Vector_impl_data" }
%"struct.std::_Vector_base<libspirv::Bytecode::OpCode, std::allocator<libspirv::Bytecode::OpCode>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"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 }
%"class.std::unordered_map.5" = type { %"class.std::_Hashtable.6" }
%"class.std::_Hashtable.6" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::vector.19" = type { %"struct.std::_Vector_base.20" }
%"struct.std::_Vector_base.20" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" = type { ptr, ptr, ptr }

@.str = external hidden unnamed_addr constant [19 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [12 x i8], align 1

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN13MeshConverter9emitMVertERN8libspirv15MutableBytecodeE(ptr noundef nonnull align 8 dereferenceable(425) %0, ptr noundef nonnull align 8 dereferenceable(48) %1) #0 align 2 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca i8, align 1
  %6 = alloca i32, align 4
  %7 = alloca %"struct.libspirv::MutableBytecode::Iterator", align 8
  %8 = alloca %"struct.libspirv::Bytecode::Iterator", align 8
  %9 = alloca { ptr, i32 }, align 8
  %10 = alloca %"struct.libspirv::Bytecode::Iterator", align 8
  %11 = alloca { ptr, i32 }, align 8
  %12 = alloca i32, align 4
  %13 = alloca ptr, align 8
  %14 = alloca %"class.std::initializer_list", align 8
  %15 = alloca [1 x i32], align 4
  %16 = alloca %"class.std::basic_string_view", align 8
  %17 = alloca %"class.std::basic_string_view", align 8
  %18 = alloca %"class.std::basic_string_view", align 8
  %19 = alloca %"class.std::basic_string_view", align 8
  %20 = alloca %"class.std::basic_string_view", align 8
  %21 = alloca %"class.std::basic_string_view", align 8
  %22 = alloca [128 x i32], align 16
  %23 = alloca i32, align 4
  %24 = alloca i64, align 8
  %25 = alloca i32, align 4
  %26 = alloca %"struct.std::__detail::_Node_iterator", align 8
  %27 = alloca %"struct.std::__detail::_Node_iterator", align 8
  %28 = alloca %"class.std::basic_string_view", align 8
  %29 = alloca %"class.std::basic_string_view", align 8
  %30 = alloca %"class.std::basic_string_view", align 8
  %31 = alloca i64, align 8
  %32 = alloca %"struct.libspirv::MutableBytecode::Iterator", align 8
  %33 = alloca i32, align 4
  %34 = alloca %"class.std::basic_string_view", align 8
  %35 = alloca %"class.std::basic_string_view", align 8
  %36 = alloca %"class.std::basic_string_view", align 8
  %37 = alloca i64, align 8
  %38 = alloca %"struct.libspirv::MutableBytecode::Iterator", align 8
  %39 = alloca i32, align 4
  %40 = alloca i64, align 8
  %41 = alloca %"struct.libspirv::MutableBytecode::Iterator", align 8
  %42 = alloca %"struct.libspirv::Bytecode::Iterator", align 8
  %43 = alloca { ptr, i32 }, align 8
  %44 = alloca %"struct.libspirv::Bytecode::Iterator", align 8
  %45 = alloca { ptr, i32 }, align 8
  %46 = alloca %"struct.libspirv::MutableBytecode::Iterator", align 8
  %47 = alloca %"struct.libspirv::MutableBytecode::Iterator", align 8
  %48 = alloca i64, align 8
  %49 = alloca %"struct.libspirv::MutableBytecode::Iterator", align 8
  %50 = alloca %"struct.libspirv::MutableBytecode::Iterator", align 8
  %51 = alloca %"struct.libspirv::MutableBytecode::Iterator", align 8
  %52 = alloca %"struct.std::__detail::_Node_iterator", align 8
  %53 = alloca %"struct.std::__detail::_Node_iterator", align 8
  %54 = alloca i64, align 8
  %55 = alloca %"struct.libspirv::MutableBytecode::Iterator", align 8
  %56 = alloca %"struct.libspirv::MutableBytecode::Iterator", align 8
  %57 = alloca i32, align 4
  %58 = alloca %"struct.std::__detail::_Node_iterator.26", align 8
  %59 = alloca %"struct.std::__detail::_Node_iterator.26", align 8
  %60 = alloca %"struct.std::__detail::_Node_iterator.26", align 8
  %61 = alloca %"struct.std::__detail::_Node_iterator.26", align 8
  %62 = alloca %"struct.libspirv::MutableBytecode::Iterator", align 8
  %63 = alloca %"struct.libspirv::MutableBytecode::Iterator", align 8
  %64 = alloca ptr, align 8
  %65 = alloca %"struct.libspirv::MutableBytecode::Iterator", align 8
  %66 = alloca i32, align 4
  %67 = alloca i32, align 4
  %68 = alloca %"struct.libspirv::MutableBytecode::Iterator", align 8
  %69 = alloca %"struct.libspirv::MutableBytecode::Iterator", align 8
  %70 = alloca %"class.std::initializer_list", align 8
  %71 = alloca [3 x i32], align 4
  %72 = alloca %"struct.libspirv::MutableBytecode::Iterator", align 8
  %73 = alloca %"class.std::basic_string_view", align 8
  %74 = alloca %"struct.libspirv::MutableBytecode::Iterator", align 8
  %75 = alloca %"class.std::initializer_list", align 8
  %76 = alloca [3 x i32], align 4
  %77 = alloca i32, align 4
  %78 = alloca i32, align 4
  %79 = alloca %"struct.libspirv::MutableBytecode::Iterator", align 8
  %80 = alloca i32, align 4
  %81 = alloca i32, align 4
  %82 = alloca i32, align 4
  %83 = alloca i32, align 4
  %84 = alloca i32, align 4
  %85 = alloca %"struct.libspirv::MutableBytecode::Iterator", align 8
  %86 = alloca %"class.std::basic_string_view", align 8
  %87 = alloca i32, align 4
  %88 = alloca %"struct.libspirv::MutableBytecode::Iterator", align 8
  %89 = alloca %"class.std::initializer_list", align 8
  %90 = alloca [3 x i32], align 4
  %91 = alloca %"class.std::initializer_list", align 8
  %92 = alloca [3 x i32], align 4
  %93 = alloca i32, align 4
  %94 = alloca i32, align 4
  %95 = alloca %"class.std::initializer_list", align 8
  %96 = alloca [3 x i32], align 4
  %97 = alloca %"class.std::initializer_list", align 8
  %98 = alloca [4 x i32], align 4
  %99 = alloca %"class.std::initializer_list", align 8
  %100 = alloca [2 x i32], align 4
  %101 = alloca i32, align 4
  %102 = alloca i32, align 4
  %103 = alloca %"class.std::initializer_list", align 8
  %104 = alloca [4 x i32], align 4
  %105 = alloca %"class.std::initializer_list", align 8
  %106 = alloca [4 x i32], align 4
  %107 = alloca %"class.std::initializer_list", align 8
  %108 = alloca [2 x i32], align 4
  %109 = alloca i32, align 4
  %110 = alloca i32, align 4
  %111 = alloca %"class.std::initializer_list", align 8
  %112 = alloca [4 x i32], align 4
  %113 = alloca %"class.std::initializer_list", align 8
  %114 = alloca [4 x i32], align 4
  %115 = alloca %"class.std::initializer_list", align 8
  %116 = alloca [2 x i32], align 4
  store ptr %0, ptr %3, align 8, !tbaa !5
  store ptr %1, ptr %4, align 8, !tbaa !5
  %117 = load ptr, ptr %3, align 8
  call void @llvm.lifetime.start.p0(i64 1, ptr %5) #6
  store i8 0, ptr %5, align 1, !tbaa !9
  %118 = getelementptr inbounds %class.MeshConverter, ptr %117, i32 0, i32 27
  call void @_ZNSt13unordered_mapIjmSt4hashIjESt8equal_toIjESaISt4pairIKjmEEE5clearEv(ptr noundef nonnull align 8 dereferenceable(56) %118) #6
  %119 = getelementptr inbounds %class.MeshConverter, ptr %117, i32 0, i32 28
  call void @_ZNSt13unordered_mapIjmSt4hashIjESt8equal_toIjESaISt4pairIKjmEEE5clearEv(ptr noundef nonnull align 8 dereferenceable(56) %119) #6
  %120 = load ptr, ptr %4, align 8, !tbaa !5
  %121 = getelementptr inbounds %class.MeshConverter, ptr %117, i32 0, i32 2
  %122 = load ptr, ptr %121, align 8, !tbaa !11
  %123 = call noundef i32 @_ZNK8libspirv8Bytecode12spirvVersionEv(ptr noundef nonnull align 8 dereferenceable(20) %122)
  call void @_ZN8libspirv15MutableBytecode15setSpirvVersionEj(ptr noundef nonnull align 8 dereferenceable(48) %120, i32 noundef %123)
  %124 = load ptr, ptr %4, align 8, !tbaa !5
  %125 = getelementptr inbounds %class.MeshConverter, ptr %117, i32 0, i32 2
  %126 = load ptr, ptr %125, align 8, !tbaa !11
  %127 = call noundef i32 @_ZNK8libspirv8Bytecode5boundEv(ptr noundef nonnull align 8 dereferenceable(20) %126)
  %128 = load ptr, ptr %4, align 8, !tbaa !5
  %129 = call noundef i32 @_ZNK8libspirv8Bytecode5boundEv(ptr noundef nonnull align 8 dereferenceable(20) %128)
  %130 = sub i32 %127, %129
  %131 = call noundef i32 @_ZN8libspirv15MutableBytecode13fetchAddBoundEj(ptr noundef nonnull align 8 dereferenceable(48) %124, i32 noundef %130)
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #6
  %132 = getelementptr inbounds %class.MeshConverter, ptr %117, i32 0, i32 4
  %133 = call noundef i32 @_ZN8libspirv15MutableBytecode13fetchAddBoundEv(ptr noundef nonnull align 8 dereferenceable(48) %132)
  store i32 %133, ptr %6, align 4, !tbaa !33
  call void @llvm.lifetime.start.p0(i64 24, ptr %7) #6
  %134 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN8libspirv15MutableBytecode3endEv(ptr dead_on_unwind writable sret(%"struct.libspirv::MutableBytecode::Iterator") align 8 %7, ptr noundef nonnull align 8 dereferenceable(48) %134)
  call void @llvm.lifetime.start.p0(i64 16, ptr %8) #6
  %135 = getelementptr inbounds %class.MeshConverter, ptr %117, i32 0, i32 2
  %136 = load ptr, ptr %135, align 8, !tbaa !11
  %137 = call { ptr, i32 } @_ZNK8libspirv8Bytecode5beginEv(ptr noundef nonnull align 8 dereferenceable(20) %136)
  store { ptr, i32 } %137, ptr %9, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %8, ptr align 8 %9, i64 12, i1 false)
  br label %138

138:                                              ; preds = %682, %2
  call void @llvm.lifetime.start.p0(i64 16, ptr %10) #6
  %139 = getelementptr inbounds %class.MeshConverter, ptr %117, i32 0, i32 2
  %140 = load ptr, ptr %139, align 8, !tbaa !11
  %141 = call { ptr, i32 } @_ZNK8libspirv8Bytecode3endEv(ptr noundef nonnull align 8 dereferenceable(20) %140)
  store { ptr, i32 } %141, ptr %11, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %10, ptr align 8 %11, i64 12, i1 false)
  %142 = call noundef zeroext i1 @_ZN8libspirvneERKNS_8Bytecode8IteratorES3_(ptr noundef nonnull align 8 dereferenceable(12) %8, ptr noundef nonnull align 8 dereferenceable(12) %10)
  call void @llvm.lifetime.end.p0(i64 16, ptr %10) #6
  br i1 %142, label %144, label %143

143:                                              ; preds = %138
  store i32 2, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %8) #6
  br label %683

144:                                              ; preds = %138
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #6
  %145 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode8IteratordeEv(ptr noundef nonnull align 8 dereferenceable(12) %8)
  store ptr %145, ptr %13, align 8, !tbaa !5
  %146 = load ptr, ptr %13, align 8, !tbaa !5
  %147 = call noundef i32 @_ZNK8libspirv8Bytecode6OpCode2opEv(ptr noundef nonnull align 4 dereferenceable(4) %146)
  %148 = icmp eq i32 %147, 17
  br i1 %148, label %149, label %162

149:                                              ; preds = %144
  %150 = load ptr, ptr %13, align 8, !tbaa !5
  %151 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %150, i16 noundef zeroext 1)
  %152 = load i32, ptr %151, align 4, !tbaa !33
  %153 = icmp eq i32 %152, 5283
  br i1 %153, label %154, label %161

154:                                              ; preds = %149
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #6
  store i32 1, ptr %15, align 4, !tbaa !33
  %155 = getelementptr inbounds %"class.std::initializer_list", ptr %14, i32 0, i32 0
  store ptr %15, ptr %155, align 8, !tbaa !34
  %156 = getelementptr inbounds %"class.std::initializer_list", ptr %14, i32 0, i32 1
  store i64 1, ptr %156, align 8, !tbaa !36
  %157 = getelementptr inbounds { ptr, i64 }, ptr %14, i32 0, i32 0
  %158 = load ptr, ptr %157, align 8
  %159 = getelementptr inbounds { ptr, i64 }, ptr %14, i32 0, i32 1
  %160 = load i64, ptr %159, align 8
  call void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpESt16initializer_listIjE(ptr noundef nonnull align 8 dereferenceable(24) %7, i32 noundef 17, ptr %158, i64 %160)
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #6
  store i32 4, ptr %12, align 4
  br label %679

161:                                              ; preds = %149
  br label %162

162:                                              ; preds = %161, %144
  %163 = load ptr, ptr %13, align 8, !tbaa !5
  %164 = call noundef i32 @_ZNK8libspirv8Bytecode6OpCode2opEv(ptr noundef nonnull align 4 dereferenceable(4) %163)
  %165 = icmp eq i32 %164, 4
  br i1 %165, label %166, label %183

166:                                              ; preds = %162
  call void @llvm.lifetime.start.p0(i64 16, ptr %16) #6
  %167 = load ptr, ptr %13, align 8, !tbaa !5
  %168 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %167, i16 noundef zeroext 1)
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %16, ptr noundef %168) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %17, ptr align 8 %16, i64 16, i1 false), !tbaa.struct !37
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %18, ptr noundef @.str) #6
  %169 = getelementptr inbounds { i64, ptr }, ptr %17, i32 0, i32 0
  %170 = load i64, ptr %169, align 8
  %171 = getelementptr inbounds { i64, ptr }, ptr %17, i32 0, i32 1
  %172 = load ptr, ptr %171, align 8
  %173 = getelementptr inbounds { i64, ptr }, ptr %18, i32 0, i32 0
  %174 = load i64, ptr %173, align 8
  %175 = getelementptr inbounds { i64, ptr }, ptr %18, i32 0, i32 1
  %176 = load ptr, ptr %175, align 8
  %177 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE(i64 %170, ptr %172, i64 %174, ptr %176) #6
  br i1 %177, label %178, label %179

178:                                              ; preds = %166
  store i32 4, ptr %12, align 4
  br label %180

179:                                              ; preds = %166
  store i32 0, ptr %12, align 4
  br label %180

180:                                              ; preds = %179, %178
  call void @llvm.lifetime.end.p0(i64 16, ptr %16) #6
  %181 = load i32, ptr %12, align 4
  switch i32 %181, label %679 [
    i32 0, label %182
  ]

182:                                              ; preds = %180
  br label %183

183:                                              ; preds = %182, %162
  %184 = load ptr, ptr %13, align 8, !tbaa !5
  %185 = call noundef i32 @_ZNK8libspirv8Bytecode6OpCode2opEv(ptr noundef nonnull align 4 dereferenceable(4) %184)
  %186 = icmp eq i32 %185, 10
  br i1 %186, label %187, label %204

187:                                              ; preds = %183
  call void @llvm.lifetime.start.p0(i64 16, ptr %19) #6
  %188 = load ptr, ptr %13, align 8, !tbaa !5
  %189 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %188, i16 noundef zeroext 1)
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %19, ptr noundef %189) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %20, ptr align 8 %19, i64 16, i1 false), !tbaa.struct !37
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %21, ptr noundef @.str.1) #6
  %190 = getelementptr inbounds { i64, ptr }, ptr %20, i32 0, i32 0
  %191 = load i64, ptr %190, align 8
  %192 = getelementptr inbounds { i64, ptr }, ptr %20, i32 0, i32 1
  %193 = load ptr, ptr %192, align 8
  %194 = getelementptr inbounds { i64, ptr }, ptr %21, i32 0, i32 0
  %195 = load i64, ptr %194, align 8
  %196 = getelementptr inbounds { i64, ptr }, ptr %21, i32 0, i32 1
  %197 = load ptr, ptr %196, align 8
  %198 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE(i64 %191, ptr %193, i64 %195, ptr %197) #6
  br i1 %198, label %199, label %200

199:                                              ; preds = %187
  store i32 4, ptr %12, align 4
  br label %201

200:                                              ; preds = %187
  store i32 0, ptr %12, align 4
  br label %201

201:                                              ; preds = %200, %199
  call void @llvm.lifetime.end.p0(i64 16, ptr %19) #6
  %202 = load i32, ptr %12, align 4
  switch i32 %202, label %679 [
    i32 0, label %203
  ]

203:                                              ; preds = %201
  br label %204

204:                                              ; preds = %203, %183
  %205 = load ptr, ptr %13, align 8, !tbaa !5
  %206 = call noundef i32 @_ZNK8libspirv8Bytecode6OpCode2opEv(ptr noundef nonnull align 4 dereferenceable(4) %205)
  %207 = icmp eq i32 %206, 16
  br i1 %207, label %208, label %254

208:                                              ; preds = %204
  %209 = load ptr, ptr %13, align 8, !tbaa !5
  %210 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %209, i16 noundef zeroext 2)
  %211 = load i32, ptr %210, align 4, !tbaa !33
  %212 = icmp eq i32 %211, 17
  br i1 %212, label %213, label %229

213:                                              ; preds = %208
  %214 = load ptr, ptr %13, align 8, !tbaa !5
  %215 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %214, i16 noundef zeroext 3)
  %216 = load i32, ptr %215, align 4, !tbaa !33
  %217 = getelementptr inbounds %class.MeshConverter, ptr %117, i32 0, i32 5
  %218 = getelementptr inbounds [3 x i32], ptr %217, i64 0, i64 0
  store i32 %216, ptr %218, align 8, !tbaa !33
  %219 = load ptr, ptr %13, align 8, !tbaa !5
  %220 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %219, i16 noundef zeroext 4)
  %221 = load i32, ptr %220, align 4, !tbaa !33
  %222 = getelementptr inbounds %class.MeshConverter, ptr %117, i32 0, i32 5
  %223 = getelementptr inbounds [3 x i32], ptr %222, i64 0, i64 1
  store i32 %221, ptr %223, align 4, !tbaa !33
  %224 = load ptr, ptr %13, align 8, !tbaa !5
  %225 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %224, i16 noundef zeroext 5)
  %226 = load i32, ptr %225, align 4, !tbaa !33
  %227 = getelementptr inbounds %class.MeshConverter, ptr %117, i32 0, i32 5
  %228 = getelementptr inbounds [3 x i32], ptr %227, i64 0, i64 2
  store i32 %226, ptr %228, align 8, !tbaa !33
  br label %229

229:                                              ; preds = %213, %208
  %230 = load ptr, ptr %13, align 8, !tbaa !5
  %231 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %230, i16 noundef zeroext 2)
  %232 = load i32, ptr %231, align 4, !tbaa !33
  %233 = icmp eq i32 %232, 26
  br i1 %233, label %234, label %235

234:                                              ; preds = %229
  store i32 4, ptr %12, align 4
  br label %679

235:                                              ; preds = %229
  %236 = load ptr, ptr %13, align 8, !tbaa !5
  %237 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %236, i16 noundef zeroext 2)
  %238 = load i32, ptr %237, align 4, !tbaa !33
  %239 = icmp eq i32 %238, 5270
  br i1 %239, label %240, label %241

240:                                              ; preds = %235
  store i32 4, ptr %12, align 4
  br label %679

241:                                              ; preds = %235
  %242 = load ptr, ptr %13, align 8, !tbaa !5
  %243 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %242, i16 noundef zeroext 2)
  %244 = load i32, ptr %243, align 4, !tbaa !33
  %245 = icmp eq i32 %244, 5298
  br i1 %245, label %246, label %247

246:                                              ; preds = %241
  store i32 4, ptr %12, align 4
  br label %679

247:                                              ; preds = %241
  %248 = load ptr, ptr %13, align 8, !tbaa !5
  %249 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %248, i16 noundef zeroext 2)
  %250 = load i32, ptr %249, align 4, !tbaa !33
  %251 = icmp eq i32 %250, 17
  br i1 %251, label %252, label %253

252:                                              ; preds = %247
  store i32 4, ptr %12, align 4
  br label %679

253:                                              ; preds = %247
  br label %254

254:                                              ; preds = %253, %204
  %255 = load ptr, ptr %13, align 8, !tbaa !5
  %256 = call noundef i32 @_ZNK8libspirv8Bytecode6OpCode2opEv(ptr noundef nonnull align 4 dereferenceable(4) %255)
  %257 = icmp eq i32 %256, 15
  br i1 %257, label %258, label %316

258:                                              ; preds = %254
  call void @llvm.lifetime.start.p0(i64 512, ptr %22) #6
  call void @llvm.memset.p0.i64(ptr align 16 %22, i8 0, i64 512, i1 false)
  %259 = getelementptr inbounds [128 x i32], ptr %22, i64 0, i64 0
  store i32 15, ptr %259, align 16, !tbaa !33
  %260 = getelementptr inbounds [128 x i32], ptr %22, i64 0, i64 1
  store i32 0, ptr %260, align 4, !tbaa !33
  %261 = load ptr, ptr %13, align 8, !tbaa !5
  %262 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %261, i16 noundef zeroext 2)
  %263 = load i32, ptr %262, align 4, !tbaa !33
  %264 = getelementptr inbounds [128 x i32], ptr %22, i64 0, i64 2
  store i32 %263, ptr %264, align 8, !tbaa !33
  %265 = getelementptr inbounds [128 x i32], ptr %22, i64 0, i64 3
  store i32 1852399981, ptr %265, align 4, !tbaa !33
  %266 = getelementptr inbounds [128 x i32], ptr %22, i64 0, i64 4
  store i32 0, ptr %266, align 16, !tbaa !33
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #6
  store i32 5, ptr %23, align 4, !tbaa !33
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #6
  store i64 5, ptr %24, align 8, !tbaa !38
  br label %267

267:                                              ; preds = %306, %258
  %268 = load i64, ptr %24, align 8, !tbaa !38
  %269 = load ptr, ptr %13, align 8, !tbaa !5
  %270 = call noundef zeroext i16 @_ZNK8libspirv8Bytecode6OpCode6lengthEv(ptr noundef nonnull align 4 dereferenceable(4) %269)
  %271 = zext i16 %270 to i64
  %272 = icmp ult i64 %268, %271
  br i1 %272, label %274, label %273

273:                                              ; preds = %267
  store i32 5, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #6
  br label %309

274:                                              ; preds = %267
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #6
  %275 = load ptr, ptr %13, align 8, !tbaa !5
  %276 = load i64, ptr %24, align 8, !tbaa !38
  %277 = trunc i64 %276 to i16
  %278 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %275, i16 noundef zeroext %277)
  %279 = load i32, ptr %278, align 4, !tbaa !33
  store i32 %279, ptr %25, align 4, !tbaa !33
  %280 = load i32, ptr %25, align 4, !tbaa !33
  %281 = getelementptr inbounds %class.MeshConverter, ptr %117, i32 0, i32 13
  %282 = load i32, ptr %281, align 8, !tbaa !39
  %283 = icmp eq i32 %280, %282
  br i1 %283, label %284, label %285

284:                                              ; preds = %274
  store i32 7, ptr %12, align 4
  br label %303

285:                                              ; preds = %274
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #6
  %286 = getelementptr inbounds %class.MeshConverter, ptr %117, i32 0, i32 29
  %287 = call ptr @_ZNSt13unordered_mapIjN13MeshConverter7VaryingESt4hashIjESt8equal_toIjESaISt4pairIKjS1_EEE4findERS7_(ptr noundef nonnull align 8 dereferenceable(56) %286, ptr noundef nonnull align 4 dereferenceable(4) %25)
  %288 = getelementptr inbounds %"struct.std::__detail::_Node_iterator", ptr %26, i32 0, i32 0
  %289 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %288, i32 0, i32 0
  store ptr %287, ptr %289, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #6
  %290 = getelementptr inbounds %class.MeshConverter, ptr %117, i32 0, i32 29
  %291 = call ptr @_ZNSt13unordered_mapIjN13MeshConverter7VaryingESt4hashIjESt8equal_toIjESaISt4pairIKjS1_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %290) #6
  %292 = getelementptr inbounds %"struct.std::__detail::_Node_iterator", ptr %27, i32 0, i32 0
  %293 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %292, i32 0, i32 0
  store ptr %291, ptr %293, align 8
  %294 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseISt4pairIKjN13MeshConverter7VaryingEELb0EEES8_(ptr noundef nonnull align 8 dereferenceable(8) %26, ptr noundef nonnull align 8 dereferenceable(8) %27) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #6
  br i1 %294, label %295, label %296

295:                                              ; preds = %285
  br label %296

296:                                              ; preds = %295, %285
  %297 = load i32, ptr %25, align 4, !tbaa !33
  %298 = load i32, ptr %23, align 4, !tbaa !33
  %299 = zext i32 %298 to i64
  %300 = getelementptr inbounds [128 x i32], ptr %22, i64 0, i64 %299
  store i32 %297, ptr %300, align 4, !tbaa !33
  %301 = load i32, ptr %23, align 4, !tbaa !33
  %302 = add i32 %301, 1
  store i32 %302, ptr %23, align 4, !tbaa !33
  store i32 0, ptr %12, align 4
  br label %303

303:                                              ; preds = %296, %284
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #6
  %304 = load i32, ptr %12, align 4
  switch i32 %304, label %957 [
    i32 0, label %305
    i32 7, label %306
  ]

305:                                              ; preds = %303
  br label %306

306:                                              ; preds = %305, %303
  %307 = load i64, ptr %24, align 8, !tbaa !38
  %308 = add i64 %307, 1
  store i64 %308, ptr %24, align 8, !tbaa !38
  br label %267, !llvm.loop !40

309:                                              ; preds = %273
  %310 = load ptr, ptr %13, align 8, !tbaa !5
  %311 = call noundef i32 @_ZNK8libspirv8Bytecode6OpCode2opEv(ptr noundef nonnull align 4 dereferenceable(4) %310)
  %312 = getelementptr inbounds [128 x i32], ptr %22, i64 0, i64 1
  %313 = load i32, ptr %23, align 4, !tbaa !33
  %314 = sub i32 %313, 1
  %315 = zext i32 %314 to i64
  call void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpEPKjm(ptr noundef nonnull align 8 dereferenceable(24) %7, i32 noundef %311, ptr noundef %312, i64 noundef %315)
  store i32 4, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #6
  call void @llvm.lifetime.end.p0(i64 512, ptr %22) #6
  br label %679

316:                                              ; preds = %254
  %317 = load ptr, ptr %13, align 8, !tbaa !5
  %318 = call noundef i32 @_ZNK8libspirv8Bytecode6OpCode2opEv(ptr noundef nonnull align 4 dereferenceable(4) %317)
  %319 = icmp eq i32 %318, 71
  br i1 %319, label %320, label %367

320:                                              ; preds = %316
  %321 = load ptr, ptr %13, align 8, !tbaa !5
  %322 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %321, i16 noundef zeroext 2)
  %323 = load i32, ptr %322, align 4, !tbaa !33
  %324 = icmp eq i32 %323, 11
  br i1 %324, label %325, label %367

325:                                              ; preds = %320
  %326 = load ptr, ptr %13, align 8, !tbaa !5
  %327 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %326, i16 noundef zeroext 3)
  %328 = load i32, ptr %327, align 4, !tbaa !33
  %329 = icmp eq i32 %328, 5294
  br i1 %329, label %365, label %330

330:                                              ; preds = %325
  %331 = load ptr, ptr %13, align 8, !tbaa !5
  %332 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %331, i16 noundef zeroext 3)
  %333 = load i32, ptr %332, align 4, !tbaa !33
  %334 = icmp eq i32 %333, 5295
  br i1 %334, label %365, label %335

335:                                              ; preds = %330
  %336 = load ptr, ptr %13, align 8, !tbaa !5
  %337 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %336, i16 noundef zeroext 3)
  %338 = load i32, ptr %337, align 4, !tbaa !33
  %339 = icmp eq i32 %338, 5296
  br i1 %339, label %365, label %340

340:                                              ; preds = %335
  %341 = load ptr, ptr %13, align 8, !tbaa !5
  %342 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %341, i16 noundef zeroext 3)
  %343 = load i32, ptr %342, align 4, !tbaa !33
  %344 = icmp eq i32 %343, 25
  br i1 %344, label %365, label %345

345:                                              ; preds = %340
  %346 = load ptr, ptr %13, align 8, !tbaa !5
  %347 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %346, i16 noundef zeroext 3)
  %348 = load i32, ptr %347, align 4, !tbaa !33
  %349 = icmp eq i32 %348, 26
  br i1 %349, label %365, label %350

350:                                              ; preds = %345
  %351 = load ptr, ptr %13, align 8, !tbaa !5
  %352 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %351, i16 noundef zeroext 3)
  %353 = load i32, ptr %352, align 4, !tbaa !33
  %354 = icmp eq i32 %353, 27
  br i1 %354, label %365, label %355

355:                                              ; preds = %350
  %356 = load ptr, ptr %13, align 8, !tbaa !5
  %357 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %356, i16 noundef zeroext 3)
  %358 = load i32, ptr %357, align 4, !tbaa !33
  %359 = icmp eq i32 %358, 29
  br i1 %359, label %365, label %360

360:                                              ; preds = %355
  %361 = load ptr, ptr %13, align 8, !tbaa !5
  %362 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %361, i16 noundef zeroext 3)
  %363 = load i32, ptr %362, align 4, !tbaa !33
  %364 = icmp eq i32 %363, 28
  br i1 %364, label %365, label %366

365:                                              ; preds = %360, %355, %350, %345, %340, %335, %330, %325
  store i32 4, ptr %12, align 4
  br label %679

366:                                              ; preds = %360
  br label %367

367:                                              ; preds = %366, %320, %316
  %368 = load ptr, ptr %13, align 8, !tbaa !5
  %369 = call noundef i32 @_ZNK8libspirv8Bytecode6OpCode2opEv(ptr noundef nonnull align 4 dereferenceable(4) %368)
  %370 = icmp eq i32 %369, 72
  br i1 %370, label %371, label %377

371:                                              ; preds = %367
  %372 = load ptr, ptr %13, align 8, !tbaa !5
  %373 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %372, i16 noundef zeroext 3)
  %374 = load i32, ptr %373, align 4, !tbaa !33
  %375 = icmp eq i32 %374, 11
  br i1 %375, label %376, label %377

376:                                              ; preds = %371
  br label %377

377:                                              ; preds = %376, %371, %367
  %378 = load ptr, ptr %13, align 8, !tbaa !5
  %379 = call noundef i32 @_ZNK8libspirv8Bytecode6OpCode2opEv(ptr noundef nonnull align 4 dereferenceable(4) %378)
  %380 = icmp eq i32 %379, 5
  br i1 %380, label %381, label %422

381:                                              ; preds = %377
  call void @llvm.lifetime.start.p0(i64 16, ptr %28) #6
  %382 = load ptr, ptr %13, align 8, !tbaa !5
  %383 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %382, i16 noundef zeroext 2)
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %28, ptr noundef %383) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %29, ptr align 8 %28, i64 16, i1 false), !tbaa.struct !37
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %30, ptr noundef @.str.47) #6
  %384 = getelementptr inbounds { i64, ptr }, ptr %29, i32 0, i32 0
  %385 = load i64, ptr %384, align 8
  %386 = getelementptr inbounds { i64, ptr }, ptr %29, i32 0, i32 1
  %387 = load ptr, ptr %386, align 8
  %388 = getelementptr inbounds { i64, ptr }, ptr %30, i32 0, i32 0
  %389 = load i64, ptr %388, align 8
  %390 = getelementptr inbounds { i64, ptr }, ptr %30, i32 0, i32 1
  %391 = load ptr, ptr %390, align 8
  %392 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE(i64 %385, ptr %387, i64 %389, ptr %391) #6
  br i1 %392, label %393, label %399

393:                                              ; preds = %381
  %394 = load ptr, ptr %13, align 8, !tbaa !5
  %395 = call noundef i32 @_ZNK8libspirv8Bytecode6OpCode2opEv(ptr noundef nonnull align 4 dereferenceable(4) %394)
  %396 = load ptr, ptr %13, align 8, !tbaa !5
  %397 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %396, i16 noundef zeroext 1)
  %398 = load i32, ptr %397, align 4, !tbaa !33
  call void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpEjPKc(ptr noundef nonnull align 8 dereferenceable(24) %7, i32 noundef %395, i32 noundef %398, ptr noundef @.str.48)
  store i32 4, ptr %12, align 4
  br label %421

399:                                              ; preds = %381
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #6
  %400 = call noundef i64 @_ZNK8libspirv15MutableBytecode8Iterator8toOffsetEv(ptr noundef nonnull align 8 dereferenceable(24) %7)
  store i64 %400, ptr %31, align 8, !tbaa !38
  %401 = load ptr, ptr %13, align 8, !tbaa !5
  %402 = call noundef i32 @_ZNK8libspirv8Bytecode6OpCode2opEv(ptr noundef nonnull align 4 dereferenceable(4) %401)
  %403 = load ptr, ptr %13, align 8, !tbaa !5
  %404 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %403, i16 noundef zeroext 1)
  %405 = load ptr, ptr %13, align 8, !tbaa !5
  %406 = call noundef zeroext i16 @_ZNK8libspirv8Bytecode6OpCode6lengthEv(ptr noundef nonnull align 4 dereferenceable(4) %405)
  %407 = zext i16 %406 to i32
  %408 = sub nsw i32 %407, 1
  %409 = sext i32 %408 to i64
  call void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpEPKjm(ptr noundef nonnull align 8 dereferenceable(24) %7, i32 noundef %402, ptr noundef %404, i64 noundef %409)
  %410 = call noundef i64 @_ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findEPKcm(ptr noundef nonnull align 8 dereferenceable(16) %28, ptr noundef @.str.2, i64 noundef 0) #6
  %411 = icmp eq i64 %410, 0
  br i1 %411, label %412, label %420

412:                                              ; preds = %399
  call void @llvm.lifetime.start.p0(i64 24, ptr %32) #6
  %413 = load ptr, ptr %4, align 8, !tbaa !5
  %414 = load i64, ptr %31, align 8, !tbaa !38
  call void @_ZN8libspirv15MutableBytecode10fromOffsetEm(ptr dead_on_unwind writable sret(%"struct.libspirv::MutableBytecode::Iterator") align 8 %32, ptr noundef nonnull align 8 dereferenceable(48) %413, i64 noundef %414)
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #6
  %415 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode8IteratordeEv(ptr noundef nonnull align 8 dereferenceable(12) %32)
  %416 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %415, i16 noundef zeroext 2)
  %417 = load i32, ptr %416, align 4, !tbaa !33
  store i32 %417, ptr %33, align 4, !tbaa !33
  %418 = getelementptr inbounds i8, ptr %33, i64 1
  store i8 49, ptr %418, align 1, !tbaa !42
  %419 = load i32, ptr %33, align 4, !tbaa !33
  call void @_ZN8libspirv15MutableBytecode8Iterator3setEtj(ptr noundef nonnull align 8 dereferenceable(24) %32, i16 noundef zeroext 2, i32 noundef %419)
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %32) #6
  br label %420

420:                                              ; preds = %412, %399
  store i32 4, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #6
  br label %421

421:                                              ; preds = %420, %393
  call void @llvm.lifetime.end.p0(i64 16, ptr %28) #6
  br label %679

422:                                              ; preds = %377
  %423 = load ptr, ptr %13, align 8, !tbaa !5
  %424 = call noundef i32 @_ZNK8libspirv8Bytecode6OpCode2opEv(ptr noundef nonnull align 4 dereferenceable(4) %423)
  %425 = icmp eq i32 %424, 6
  br i1 %425, label %426, label %462

426:                                              ; preds = %422
  call void @llvm.lifetime.start.p0(i64 16, ptr %34) #6
  %427 = load ptr, ptr %13, align 8, !tbaa !5
  %428 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %427, i16 noundef zeroext 3)
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %34, ptr noundef %428) #6
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %35, ptr align 8 %34, i64 16, i1 false), !tbaa.struct !37
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %36, ptr noundef @.str.49) #6
  %429 = getelementptr inbounds { i64, ptr }, ptr %35, i32 0, i32 0
  %430 = load i64, ptr %429, align 8
  %431 = getelementptr inbounds { i64, ptr }, ptr %35, i32 0, i32 1
  %432 = load ptr, ptr %431, align 8
  %433 = getelementptr inbounds { i64, ptr }, ptr %36, i32 0, i32 0
  %434 = load i64, ptr %433, align 8
  %435 = getelementptr inbounds { i64, ptr }, ptr %36, i32 0, i32 1
  %436 = load ptr, ptr %435, align 8
  %437 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE(i64 %430, ptr %432, i64 %434, ptr %436) #6
  br i1 %437, label %438, label %439

438:                                              ; preds = %426
  store i32 4, ptr %12, align 4
  br label %461

439:                                              ; preds = %426
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #6
  %440 = call noundef i64 @_ZNK8libspirv15MutableBytecode8Iterator8toOffsetEv(ptr noundef nonnull align 8 dereferenceable(24) %7)
  store i64 %440, ptr %37, align 8, !tbaa !38
  %441 = load ptr, ptr %13, align 8, !tbaa !5
  %442 = call noundef i32 @_ZNK8libspirv8Bytecode6OpCode2opEv(ptr noundef nonnull align 4 dereferenceable(4) %441)
  %443 = load ptr, ptr %13, align 8, !tbaa !5
  %444 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %443, i16 noundef zeroext 1)
  %445 = load ptr, ptr %13, align 8, !tbaa !5
  %446 = call noundef zeroext i16 @_ZNK8libspirv8Bytecode6OpCode6lengthEv(ptr noundef nonnull align 4 dereferenceable(4) %445)
  %447 = zext i16 %446 to i32
  %448 = sub nsw i32 %447, 1
  %449 = sext i32 %448 to i64
  call void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpEPKjm(ptr noundef nonnull align 8 dereferenceable(24) %7, i32 noundef %442, ptr noundef %444, i64 noundef %449)
  %450 = call noundef i64 @_ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findEPKcm(ptr noundef nonnull align 8 dereferenceable(16) %34, ptr noundef @.str.2, i64 noundef 0) #6
  %451 = icmp eq i64 %450, 0
  br i1 %451, label %452, label %460

452:                                              ; preds = %439
  call void @llvm.lifetime.start.p0(i64 24, ptr %38) #6
  %453 = load ptr, ptr %4, align 8, !tbaa !5
  %454 = load i64, ptr %37, align 8, !tbaa !38
  call void @_ZN8libspirv15MutableBytecode10fromOffsetEm(ptr dead_on_unwind writable sret(%"struct.libspirv::MutableBytecode::Iterator") align 8 %38, ptr noundef nonnull align 8 dereferenceable(48) %453, i64 noundef %454)
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #6
  %455 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode8IteratordeEv(ptr noundef nonnull align 8 dereferenceable(12) %38)
  %456 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %455, i16 noundef zeroext 3)
  %457 = load i32, ptr %456, align 4, !tbaa !33
  store i32 %457, ptr %39, align 4, !tbaa !33
  %458 = getelementptr inbounds i8, ptr %39, i64 1
  store i8 49, ptr %458, align 1, !tbaa !42
  %459 = load i32, ptr %39, align 4, !tbaa !33
  call void @_ZN8libspirv15MutableBytecode8Iterator3setEtj(ptr noundef nonnull align 8 dereferenceable(24) %38, i16 noundef zeroext 3, i32 noundef %459)
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %38) #6
  br label %460

460:                                              ; preds = %452, %439
  store i32 4, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #6
  br label %461

461:                                              ; preds = %460, %438
  call void @llvm.lifetime.end.p0(i64 16, ptr %34) #6
  br label %679

462:                                              ; preds = %422
  %463 = load ptr, ptr %13, align 8, !tbaa !5
  %464 = call noundef i32 @_ZNK8libspirv8Bytecode6OpCode2opEv(ptr noundef nonnull align 4 dereferenceable(4) %463)
  %465 = icmp eq i32 %464, 32
  br i1 %465, label %466, label %523

466:                                              ; preds = %462
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #6
  %467 = call noundef i64 @_ZNK8libspirv15MutableBytecode8Iterator8toOffsetEv(ptr noundef nonnull align 8 dereferenceable(24) %7)
  store i64 %467, ptr %40, align 8, !tbaa !38
  %468 = load ptr, ptr %13, align 8, !tbaa !5
  %469 = call noundef i32 @_ZNK8libspirv8Bytecode6OpCode2opEv(ptr noundef nonnull align 4 dereferenceable(4) %468)
  %470 = load ptr, ptr %13, align 8, !tbaa !5
  %471 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %470, i16 noundef zeroext 1)
  %472 = load ptr, ptr %13, align 8, !tbaa !5
  %473 = call noundef zeroext i16 @_ZNK8libspirv8Bytecode6OpCode6lengthEv(ptr noundef nonnull align 4 dereferenceable(4) %472)
  %474 = zext i16 %473 to i32
  %475 = sub nsw i32 %474, 1
  %476 = sext i32 %475 to i64
  call void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpEPKjm(ptr noundef nonnull align 8 dereferenceable(24) %7, i32 noundef %469, ptr noundef %471, i64 noundef %476)
  %477 = load ptr, ptr %13, align 8, !tbaa !5
  %478 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %477, i16 noundef zeroext 2)
  %479 = load i32, ptr %478, align 4, !tbaa !33
  %480 = icmp eq i32 %479, 3
  br i1 %480, label %481, label %504

481:                                              ; preds = %466
  call void @llvm.lifetime.start.p0(i64 24, ptr %41) #6
  %482 = load ptr, ptr %4, align 8, !tbaa !5
  %483 = load i64, ptr %40, align 8, !tbaa !38
  call void @_ZN8libspirv15MutableBytecode10fromOffsetEm(ptr dead_on_unwind writable sret(%"struct.libspirv::MutableBytecode::Iterator") align 8 %41, ptr noundef nonnull align 8 dereferenceable(48) %482, i64 noundef %483)
  call void @llvm.lifetime.start.p0(i64 16, ptr %42) #6
  %484 = getelementptr inbounds %class.MeshConverter, ptr %117, i32 0, i32 2
  %485 = load ptr, ptr %484, align 8, !tbaa !11
  %486 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode8IteratordeEv(ptr noundef nonnull align 8 dereferenceable(12) %41)
  %487 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %486, i16 noundef zeroext 3)
  %488 = load i32, ptr %487, align 4, !tbaa !33
  %489 = call { ptr, i32 } @_ZNK8libspirv8Bytecode10findOpTypeEj(ptr noundef nonnull align 8 dereferenceable(20) %485, i32 noundef %488)
  store { ptr, i32 } %489, ptr %43, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %42, ptr align 8 %43, i64 12, i1 false)
  %490 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode8IteratordeEv(ptr noundef nonnull align 8 dereferenceable(12) %42)
  %491 = call noundef i32 @_ZNK8libspirv8Bytecode6OpCode2opEv(ptr noundef nonnull align 4 dereferenceable(4) %490)
  %492 = icmp eq i32 %491, 28
  br i1 %492, label %493, label %500

493:                                              ; preds = %481
  call void @llvm.lifetime.start.p0(i64 16, ptr %44) #6
  %494 = getelementptr inbounds %class.MeshConverter, ptr %117, i32 0, i32 2
  %495 = load ptr, ptr %494, align 8, !tbaa !11
  %496 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode8IteratordeEv(ptr noundef nonnull align 8 dereferenceable(12) %42)
  %497 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %496, i16 noundef zeroext 2)
  %498 = load i32, ptr %497, align 4, !tbaa !33
  %499 = call { ptr, i32 } @_ZNK8libspirv8Bytecode10findOpTypeEj(ptr noundef nonnull align 8 dereferenceable(20) %495, i32 noundef %498)
  store { ptr, i32 } %499, ptr %45, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %44, ptr align 8 %45, i64 12, i1 false)
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %42, ptr align 8 %44, i64 12, i1 false), !tbaa.struct !43
  call void @llvm.lifetime.end.p0(i64 16, ptr %44) #6
  br label %500

500:                                              ; preds = %493, %481
  call void @_ZN8libspirv15MutableBytecode8Iterator3setEtj(ptr noundef nonnull align 8 dereferenceable(24) %41, i16 noundef zeroext 2, i32 noundef 3)
  %501 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode8IteratordeEv(ptr noundef nonnull align 8 dereferenceable(12) %42)
  %502 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %501, i16 noundef zeroext 1)
  %503 = load i32, ptr %502, align 4, !tbaa !33
  call void @_ZN8libspirv15MutableBytecode8Iterator3setEtj(ptr noundef nonnull align 8 dereferenceable(24) %41, i16 noundef zeroext 3, i32 noundef %503)
  call void @llvm.lifetime.end.p0(i64 16, ptr %42) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %41) #6
  br label %522

504:                                              ; preds = %466
  %505 = load ptr, ptr %13, align 8, !tbaa !5
  %506 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %505, i16 noundef zeroext 2)
  %507 = load i32, ptr %506, align 4, !tbaa !33
  %508 = icmp eq i32 %507, 4
  br i1 %508, label %509, label %512

509:                                              ; preds = %504
  call void @llvm.lifetime.start.p0(i64 24, ptr %46) #6
  %510 = load ptr, ptr %4, align 8, !tbaa !5
  %511 = load i64, ptr %40, align 8, !tbaa !38
  call void @_ZN8libspirv15MutableBytecode10fromOffsetEm(ptr dead_on_unwind writable sret(%"struct.libspirv::MutableBytecode::Iterator") align 8 %46, ptr noundef nonnull align 8 dereferenceable(48) %510, i64 noundef %511)
  call void @_ZN8libspirv15MutableBytecode8Iterator3setEtj(ptr noundef nonnull align 8 dereferenceable(24) %46, i16 noundef zeroext 2, i32 noundef 6)
  call void @llvm.lifetime.end.p0(i64 24, ptr %46) #6
  br label %521

512:                                              ; preds = %504
  %513 = load ptr, ptr %13, align 8, !tbaa !5
  %514 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %513, i16 noundef zeroext 2)
  %515 = load i32, ptr %514, align 4, !tbaa !33
  %516 = icmp eq i32 %515, 1
  br i1 %516, label %517, label %520

517:                                              ; preds = %512
  call void @llvm.lifetime.start.p0(i64 24, ptr %47) #6
  %518 = load ptr, ptr %4, align 8, !tbaa !5
  %519 = load i64, ptr %40, align 8, !tbaa !38
  call void @_ZN8libspirv15MutableBytecode10fromOffsetEm(ptr dead_on_unwind writable sret(%"struct.libspirv::MutableBytecode::Iterator") align 8 %47, ptr noundef nonnull align 8 dereferenceable(48) %518, i64 noundef %519)
  call void @_ZN8libspirv15MutableBytecode8Iterator3setEtj(ptr noundef nonnull align 8 dereferenceable(24) %47, i16 noundef zeroext 2, i32 noundef 6)
  call void @llvm.lifetime.end.p0(i64 24, ptr %47) #6
  br label %520

520:                                              ; preds = %517, %512
  br label %521

521:                                              ; preds = %520, %509
  br label %522

522:                                              ; preds = %521, %500
  store i32 4, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #6
  br label %679

523:                                              ; preds = %462
  %524 = load ptr, ptr %13, align 8, !tbaa !5
  %525 = call noundef i32 @_ZNK8libspirv8Bytecode6OpCode2opEv(ptr noundef nonnull align 4 dereferenceable(4) %524)
  %526 = icmp eq i32 %525, 59
  br i1 %526, label %527, label %562

527:                                              ; preds = %523
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #6
  %528 = call noundef i64 @_ZNK8libspirv15MutableBytecode8Iterator8toOffsetEv(ptr noundef nonnull align 8 dereferenceable(24) %7)
  store i64 %528, ptr %48, align 8, !tbaa !38
  %529 = load ptr, ptr %13, align 8, !tbaa !5
  %530 = call noundef i32 @_ZNK8libspirv8Bytecode6OpCode2opEv(ptr noundef nonnull align 4 dereferenceable(4) %529)
  %531 = load ptr, ptr %13, align 8, !tbaa !5
  %532 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %531, i16 noundef zeroext 1)
  %533 = load ptr, ptr %13, align 8, !tbaa !5
  %534 = call noundef zeroext i16 @_ZNK8libspirv8Bytecode6OpCode6lengthEv(ptr noundef nonnull align 4 dereferenceable(4) %533)
  %535 = zext i16 %534 to i32
  %536 = sub nsw i32 %535, 1
  %537 = sext i32 %536 to i64
  call void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpEPKjm(ptr noundef nonnull align 8 dereferenceable(24) %7, i32 noundef %530, ptr noundef %532, i64 noundef %537)
  %538 = load ptr, ptr %13, align 8, !tbaa !5
  %539 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %538, i16 noundef zeroext 3)
  %540 = load i32, ptr %539, align 4, !tbaa !33
  %541 = icmp eq i32 %540, 3
  br i1 %541, label %542, label %543

542:                                              ; preds = %527
  br label %561

543:                                              ; preds = %527
  %544 = load ptr, ptr %13, align 8, !tbaa !5
  %545 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %544, i16 noundef zeroext 3)
  %546 = load i32, ptr %545, align 4, !tbaa !33
  %547 = icmp eq i32 %546, 4
  br i1 %547, label %548, label %551

548:                                              ; preds = %543
  call void @llvm.lifetime.start.p0(i64 24, ptr %49) #6
  %549 = load ptr, ptr %4, align 8, !tbaa !5
  %550 = load i64, ptr %48, align 8, !tbaa !38
  call void @_ZN8libspirv15MutableBytecode10fromOffsetEm(ptr dead_on_unwind writable sret(%"struct.libspirv::MutableBytecode::Iterator") align 8 %49, ptr noundef nonnull align 8 dereferenceable(48) %549, i64 noundef %550)
  call void @_ZN8libspirv15MutableBytecode8Iterator3setEtj(ptr noundef nonnull align 8 dereferenceable(24) %49, i16 noundef zeroext 3, i32 noundef 6)
  call void @llvm.lifetime.end.p0(i64 24, ptr %49) #6
  br label %560

551:                                              ; preds = %543
  %552 = load ptr, ptr %13, align 8, !tbaa !5
  %553 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %552, i16 noundef zeroext 3)
  %554 = load i32, ptr %553, align 4, !tbaa !33
  %555 = icmp eq i32 %554, 1
  br i1 %555, label %556, label %559

556:                                              ; preds = %551
  call void @llvm.lifetime.start.p0(i64 24, ptr %50) #6
  %557 = load ptr, ptr %4, align 8, !tbaa !5
  %558 = load i64, ptr %48, align 8, !tbaa !38
  call void @_ZN8libspirv15MutableBytecode10fromOffsetEm(ptr dead_on_unwind writable sret(%"struct.libspirv::MutableBytecode::Iterator") align 8 %50, ptr noundef nonnull align 8 dereferenceable(48) %557, i64 noundef %558)
  call void @_ZN8libspirv15MutableBytecode8Iterator3setEtj(ptr noundef nonnull align 8 dereferenceable(24) %50, i16 noundef zeroext 3, i32 noundef 6)
  call void @llvm.lifetime.end.p0(i64 24, ptr %50) #6
  br label %559

559:                                              ; preds = %556, %551
  br label %560

560:                                              ; preds = %559, %548
  br label %561

561:                                              ; preds = %560, %542
  store i32 4, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #6
  br label %679

562:                                              ; preds = %523
  %563 = load ptr, ptr %13, align 8, !tbaa !5
  %564 = call noundef i32 @_ZNK8libspirv8Bytecode6OpCode2opEv(ptr noundef nonnull align 4 dereferenceable(4) %563)
  %565 = icmp eq i32 %564, 54
  br i1 %565, label %566, label %573

566:                                              ; preds = %562
  %567 = load i8, ptr %5, align 1, !tbaa !9, !range !44, !noundef !45
  %568 = trunc i8 %567 to i1
  br i1 %568, label %572, label %569

569:                                              ; preds = %566
  %570 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN13MeshConverter13emitConstantsERN8libspirv15MutableBytecodeE(ptr noundef nonnull align 8 dereferenceable(425) %117, ptr noundef nonnull align 8 dereferenceable(48) %570)
  store i8 1, ptr %5, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 24, ptr %51) #6
  %571 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN8libspirv15MutableBytecode3endEv(ptr dead_on_unwind writable sret(%"struct.libspirv::MutableBytecode::Iterator") align 8 %51, ptr noundef nonnull align 8 dereferenceable(48) %571)
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %7, ptr align 8 %51, i64 24, i1 false)
  call void @llvm.lifetime.end.p0(i64 24, ptr %51) #6
  br label %572

572:                                              ; preds = %569, %566
  br label %573

573:                                              ; preds = %572, %562
  %574 = load ptr, ptr %13, align 8, !tbaa !5
  %575 = call noundef i32 @_ZNK8libspirv8Bytecode6OpCode2opEv(ptr noundef nonnull align 4 dereferenceable(4) %574)
  %576 = icmp eq i32 %575, 5295
  br i1 %576, label %577, label %578

577:                                              ; preds = %573
  store i32 4, ptr %12, align 4
  br label %679

578:                                              ; preds = %573
  %579 = load ptr, ptr %13, align 8, !tbaa !5
  %580 = call noundef i32 @_ZNK8libspirv8Bytecode6OpCode2opEv(ptr noundef nonnull align 4 dereferenceable(4) %579)
  %581 = icmp eq i32 %580, 65
  br i1 %581, label %582, label %633

582:                                              ; preds = %578
  %583 = load ptr, ptr %13, align 8, !tbaa !5
  %584 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %583, i16 noundef zeroext 3)
  %585 = load i32, ptr %584, align 4, !tbaa !33
  %586 = getelementptr inbounds %class.MeshConverter, ptr %117, i32 0, i32 13
  %587 = load i32, ptr %586, align 8, !tbaa !39
  %588 = icmp eq i32 %585, %587
  br i1 %588, label %589, label %598

589:                                              ; preds = %582
  %590 = getelementptr inbounds %class.MeshConverter, ptr %117, i32 0, i32 2
  %591 = load ptr, ptr %590, align 8, !tbaa !11
  %592 = load ptr, ptr %13, align 8, !tbaa !5
  %593 = call noundef i64 @_ZNK8libspirv8Bytecode8toOffsetERKNS0_6OpCodeE(ptr noundef nonnull align 8 dereferenceable(20) %591, ptr noundef nonnull align 4 dereferenceable(4) %592)
  %594 = getelementptr inbounds %class.MeshConverter, ptr %117, i32 0, i32 27
  %595 = load ptr, ptr %13, align 8, !tbaa !5
  %596 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %595, i16 noundef zeroext 2)
  %597 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt13unordered_mapIjmSt4hashIjESt8equal_toIjESaISt4pairIKjmEEEixERS5_(ptr noundef nonnull align 8 dereferenceable(56) %594, ptr noundef nonnull align 4 dereferenceable(4) %596)
  store i64 %593, ptr %597, align 8, !tbaa !38
  store i32 4, ptr %12, align 4
  br label %679

598:                                              ; preds = %582
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #6
  %599 = getelementptr inbounds %class.MeshConverter, ptr %117, i32 0, i32 29
  %600 = load ptr, ptr %13, align 8, !tbaa !5
  %601 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %600, i16 noundef zeroext 3)
  %602 = call ptr @_ZNSt13unordered_mapIjN13MeshConverter7VaryingESt4hashIjESt8equal_toIjESaISt4pairIKjS1_EEE4findERS7_(ptr noundef nonnull align 8 dereferenceable(56) %599, ptr noundef nonnull align 4 dereferenceable(4) %601)
  %603 = getelementptr inbounds %"struct.std::__detail::_Node_iterator", ptr %52, i32 0, i32 0
  %604 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %603, i32 0, i32 0
  store ptr %602, ptr %604, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #6
  %605 = getelementptr inbounds %class.MeshConverter, ptr %117, i32 0, i32 29
  %606 = call ptr @_ZNSt13unordered_mapIjN13MeshConverter7VaryingESt4hashIjESt8equal_toIjESaISt4pairIKjS1_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %605) #6
  %607 = getelementptr inbounds %"struct.std::__detail::_Node_iterator", ptr %53, i32 0, i32 0
  %608 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %607, i32 0, i32 0
  store ptr %606, ptr %608, align 8
  %609 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseISt4pairIKjN13MeshConverter7VaryingEELb0EEES8_(ptr noundef nonnull align 8 dereferenceable(8) %52, ptr noundef nonnull align 8 dereferenceable(8) %53) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #6
  br i1 %609, label %610, label %632

610:                                              ; preds = %598
  %611 = getelementptr inbounds %class.MeshConverter, ptr %117, i32 0, i32 2
  %612 = load ptr, ptr %611, align 8, !tbaa !11
  %613 = load ptr, ptr %13, align 8, !tbaa !5
  %614 = call noundef i64 @_ZNK8libspirv8Bytecode8toOffsetERKNS0_6OpCodeE(ptr noundef nonnull align 8 dereferenceable(20) %612, ptr noundef nonnull align 4 dereferenceable(4) %613)
  %615 = getelementptr inbounds %class.MeshConverter, ptr %117, i32 0, i32 28
  %616 = load ptr, ptr %13, align 8, !tbaa !5
  %617 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %616, i16 noundef zeroext 2)
  %618 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt13unordered_mapIjmSt4hashIjESt8equal_toIjESaISt4pairIKjmEEEixERS5_(ptr noundef nonnull align 8 dereferenceable(56) %615, ptr noundef nonnull align 4 dereferenceable(4) %617)
  store i64 %614, ptr %618, align 8, !tbaa !38
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #6
  %619 = call noundef i64 @_ZNK8libspirv15MutableBytecode8Iterator8toOffsetEv(ptr noundef nonnull align 8 dereferenceable(24) %7)
  store i64 %619, ptr %54, align 8, !tbaa !38
  %620 = load ptr, ptr %13, align 8, !tbaa !5
  %621 = call noundef i32 @_ZNK8libspirv8Bytecode6OpCode2opEv(ptr noundef nonnull align 4 dereferenceable(4) %620)
  %622 = load ptr, ptr %13, align 8, !tbaa !5
  %623 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %622, i16 noundef zeroext 1)
  %624 = load ptr, ptr %13, align 8, !tbaa !5
  %625 = call noundef zeroext i16 @_ZNK8libspirv8Bytecode6OpCode6lengthEv(ptr noundef nonnull align 4 dereferenceable(4) %624)
  %626 = zext i16 %625 to i32
  %627 = sub nsw i32 %626, 1
  %628 = sext i32 %627 to i64
  call void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpEPKjm(ptr noundef nonnull align 8 dereferenceable(24) %7, i32 noundef %621, ptr noundef %623, i64 noundef %628)
  call void @llvm.lifetime.start.p0(i64 24, ptr %55) #6
  %629 = load ptr, ptr %4, align 8, !tbaa !5
  %630 = load i64, ptr %54, align 8, !tbaa !38
  call void @_ZN8libspirv15MutableBytecode10fromOffsetEm(ptr dead_on_unwind writable sret(%"struct.libspirv::MutableBytecode::Iterator") align 8 %55, ptr noundef nonnull align 8 dereferenceable(48) %629, i64 noundef %630)
  call void @_ZN8libspirv15MutableBytecode8Iterator5evictEj(ptr noundef nonnull align 8 dereferenceable(24) %55, i32 noundef 4)
  call void @llvm.lifetime.start.p0(i64 24, ptr %56) #6
  %631 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN8libspirv15MutableBytecode3endEv(ptr dead_on_unwind writable sret(%"struct.libspirv::MutableBytecode::Iterator") align 8 %56, ptr noundef nonnull align 8 dereferenceable(48) %631)
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %7, ptr align 8 %56, i64 24, i1 false)
  call void @llvm.lifetime.end.p0(i64 24, ptr %56) #6
  store i32 4, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %55) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #6
  br label %679

632:                                              ; preds = %598
  br label %633

633:                                              ; preds = %632, %578
  %634 = load ptr, ptr %13, align 8, !tbaa !5
  %635 = call noundef i32 @_ZNK8libspirv8Bytecode6OpCode2opEv(ptr noundef nonnull align 4 dereferenceable(4) %634)
  %636 = icmp eq i32 %635, 62
  br i1 %636, label %637, label %669

637:                                              ; preds = %633
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #6
  %638 = load ptr, ptr %13, align 8, !tbaa !5
  %639 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %638, i16 noundef zeroext 1)
  %640 = load i32, ptr %639, align 4, !tbaa !33
  store i32 %640, ptr %57, align 4, !tbaa !33
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #6
  %641 = getelementptr inbounds %class.MeshConverter, ptr %117, i32 0, i32 27
  %642 = call ptr @_ZNSt13unordered_mapIjmSt4hashIjESt8equal_toIjESaISt4pairIKjmEEE4findERS5_(ptr noundef nonnull align 8 dereferenceable(56) %641, ptr noundef nonnull align 4 dereferenceable(4) %57)
  %643 = getelementptr inbounds %"struct.std::__detail::_Node_iterator.26", ptr %58, i32 0, i32 0
  %644 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base.27", ptr %643, i32 0, i32 0
  store ptr %642, ptr %644, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #6
  %645 = getelementptr inbounds %class.MeshConverter, ptr %117, i32 0, i32 27
  %646 = call ptr @_ZNSt13unordered_mapIjmSt4hashIjESt8equal_toIjESaISt4pairIKjmEEE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %645) #6
  %647 = getelementptr inbounds %"struct.std::__detail::_Node_iterator.26", ptr %59, i32 0, i32 0
  %648 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base.27", ptr %647, i32 0, i32 0
  store ptr %646, ptr %648, align 8
  %649 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseISt4pairIKjmELb0EEES6_(ptr noundef nonnull align 8 dereferenceable(8) %58, ptr noundef nonnull align 8 dereferenceable(8) %59) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #6
  br i1 %649, label %650, label %651

650:                                              ; preds = %637
  store i32 4, ptr %12, align 4
  br label %652

651:                                              ; preds = %637
  store i32 0, ptr %12, align 4
  br label %652

652:                                              ; preds = %651, %650
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #6
  %653 = load i32, ptr %12, align 4
  switch i32 %653, label %666 [
    i32 0, label %654
  ]

654:                                              ; preds = %652
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #6
  %655 = getelementptr inbounds %class.MeshConverter, ptr %117, i32 0, i32 28
  %656 = call ptr @_ZNSt13unordered_mapIjmSt4hashIjESt8equal_toIjESaISt4pairIKjmEEE4findERS5_(ptr noundef nonnull align 8 dereferenceable(56) %655, ptr noundef nonnull align 4 dereferenceable(4) %57)
  %657 = getelementptr inbounds %"struct.std::__detail::_Node_iterator.26", ptr %60, i32 0, i32 0
  %658 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base.27", ptr %657, i32 0, i32 0
  store ptr %656, ptr %658, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #6
  %659 = getelementptr inbounds %class.MeshConverter, ptr %117, i32 0, i32 28
  %660 = call ptr @_ZNSt13unordered_mapIjmSt4hashIjESt8equal_toIjESaISt4pairIKjmEEE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %659) #6
  %661 = getelementptr inbounds %"struct.std::__detail::_Node_iterator.26", ptr %61, i32 0, i32 0
  %662 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base.27", ptr %661, i32 0, i32 0
  store ptr %660, ptr %662, align 8
  %663 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseISt4pairIKjmELb0EEES6_(ptr noundef nonnull align 8 dereferenceable(8) %60, ptr noundef nonnull align 8 dereferenceable(8) %61) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #6
  br i1 %663, label %664, label %665

664:                                              ; preds = %654
  br label %665

665:                                              ; preds = %664, %654
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #6
  store i32 0, ptr %12, align 4
  br label %666

666:                                              ; preds = %665, %652
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #6
  %667 = load i32, ptr %12, align 4
  switch i32 %667, label %679 [
    i32 0, label %668
  ]

668:                                              ; preds = %666
  br label %669

669:                                              ; preds = %668, %633
  %670 = load ptr, ptr %13, align 8, !tbaa !5
  %671 = call noundef i32 @_ZNK8libspirv8Bytecode6OpCode2opEv(ptr noundef nonnull align 4 dereferenceable(4) %670)
  %672 = load ptr, ptr %13, align 8, !tbaa !5
  %673 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %672, i16 noundef zeroext 1)
  %674 = load ptr, ptr %13, align 8, !tbaa !5
  %675 = call noundef zeroext i16 @_ZNK8libspirv8Bytecode6OpCode6lengthEv(ptr noundef nonnull align 4 dereferenceable(4) %674)
  %676 = zext i16 %675 to i32
  %677 = sub nsw i32 %676, 1
  %678 = sext i32 %677 to i64
  call void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpEPKjm(ptr noundef nonnull align 8 dereferenceable(24) %7, i32 noundef %671, ptr noundef %673, i64 noundef %678)
  store i32 0, ptr %12, align 4
  br label %679

679:                                              ; preds = %669, %666, %610, %589, %577, %561, %522, %461, %421, %365, %309, %252, %246, %240, %234, %201, %180, %154
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #6
  %680 = load i32, ptr %12, align 4
  switch i32 %680, label %957 [
    i32 0, label %681
    i32 4, label %682
  ]

681:                                              ; preds = %679
  br label %682

682:                                              ; preds = %681, %679
  call void @_ZN8libspirv8Bytecode8IteratorppEv(ptr noundef nonnull align 8 dereferenceable(12) %8)
  br label %138, !llvm.loop !46

683:                                              ; preds = %143
  call void @llvm.lifetime.start.p0(i64 24, ptr %62) #6
  %684 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN8libspirv15MutableBytecode5beginEv(ptr dead_on_unwind writable sret(%"struct.libspirv::MutableBytecode::Iterator") align 8 %62, ptr noundef nonnull align 8 dereferenceable(48) %684)
  call void @llvm.lifetime.start.p0(i64 24, ptr %63) #6
  %685 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN8libspirv15MutableBytecode3endEv(ptr dead_on_unwind writable sret(%"struct.libspirv::MutableBytecode::Iterator") align 8 %63, ptr noundef nonnull align 8 dereferenceable(48) %685)
  br label %686

686:                                              ; preds = %715, %683
  %687 = call noundef zeroext i1 @_ZN8libspirvneERKNS_8Bytecode8IteratorES3_(ptr noundef nonnull align 8 dereferenceable(12) %62, ptr noundef nonnull align 8 dereferenceable(12) %63)
  br i1 %687, label %689, label %688

688:                                              ; preds = %686
  store i32 8, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %63) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %62) #6
  br label %716

689:                                              ; preds = %686
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #6
  %690 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode8IteratordeEv(ptr noundef nonnull align 8 dereferenceable(12) %62)
  store ptr %690, ptr %64, align 8, !tbaa !5
  %691 = load ptr, ptr %64, align 8, !tbaa !5
  %692 = call noundef i32 @_ZNK8libspirv8Bytecode6OpCode2opEv(ptr noundef nonnull align 4 dereferenceable(4) %691)
  %693 = icmp eq i32 %692, 5
  br i1 %693, label %694, label %702

694:                                              ; preds = %689
  %695 = load ptr, ptr %64, align 8, !tbaa !5
  %696 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %695, i16 noundef zeroext 1)
  %697 = load i32, ptr %696, align 4, !tbaa !33
  %698 = getelementptr inbounds %class.MeshConverter, ptr %117, i32 0, i32 13
  %699 = load i32, ptr %698, align 8, !tbaa !39
  %700 = icmp eq i32 %697, %699
  br i1 %700, label %701, label %702

701:                                              ; preds = %694
  call void @_ZN8libspirv15MutableBytecode8Iterator8setToNopEv(ptr noundef nonnull align 8 dereferenceable(24) %62)
  br label %702

702:                                              ; preds = %701, %694, %689
  %703 = load ptr, ptr %64, align 8, !tbaa !5
  %704 = call noundef i32 @_ZNK8libspirv8Bytecode6OpCode2opEv(ptr noundef nonnull align 4 dereferenceable(4) %703)
  %705 = icmp eq i32 %704, 59
  br i1 %705, label %706, label %714

706:                                              ; preds = %702
  %707 = load ptr, ptr %64, align 8, !tbaa !5
  %708 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %707, i16 noundef zeroext 2)
  %709 = load i32, ptr %708, align 4, !tbaa !33
  %710 = getelementptr inbounds %class.MeshConverter, ptr %117, i32 0, i32 13
  %711 = load i32, ptr %710, align 8, !tbaa !39
  %712 = icmp eq i32 %709, %711
  br i1 %712, label %713, label %714

713:                                              ; preds = %706
  call void @_ZN8libspirv15MutableBytecode8Iterator8setToNopEv(ptr noundef nonnull align 8 dereferenceable(24) %62)
  br label %714

714:                                              ; preds = %713, %706, %702
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #6
  br label %715

715:                                              ; preds = %714
  call void @_ZN8libspirv8Bytecode8IteratorppEv(ptr noundef nonnull align 8 dereferenceable(12) %62)
  br label %686, !llvm.loop !47

716:                                              ; preds = %688
  %717 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN8libspirv15MutableBytecode10removeNopsEv(ptr noundef nonnull align 8 dereferenceable(48) %717)
  %718 = load i32, ptr %6, align 4, !tbaa !33
  %719 = icmp ne i32 %718, 0
  br i1 %719, label %720, label %756

720:                                              ; preds = %716
  call void @llvm.lifetime.start.p0(i64 24, ptr %65) #6
  %721 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN8libspirv15MutableBytecode14findSectionEndENS_8Bytecode7SectionE(ptr dead_on_unwind writable sret(%"struct.libspirv::MutableBytecode::Iterator") align 8 %65, ptr noundef nonnull align 8 dereferenceable(48) %721, i8 noundef zeroext 9)
  call void @llvm.lifetime.start.p0(i64 4, ptr %66) #6
  %722 = load ptr, ptr %4, align 8, !tbaa !5
  %723 = call noundef i32 @_ZN8libspirv15MutableBytecode9OpTypeIntERNS0_8IteratorEtb(ptr noundef nonnull align 8 dereferenceable(48) %722, ptr noundef nonnull align 8 dereferenceable(24) %65, i16 noundef zeroext 32, i1 noundef zeroext true)
  store i32 %723, ptr %66, align 4, !tbaa !33
  call void @llvm.lifetime.start.p0(i64 4, ptr %67) #6
  %724 = load ptr, ptr %4, align 8, !tbaa !5
  %725 = load i32, ptr %66, align 4, !tbaa !33
  %726 = call noundef i32 @_ZN8libspirv15MutableBytecode13OpTypePointerERNS0_8IteratorEN3spv12StorageClassEj(ptr noundef nonnull align 8 dereferenceable(48) %724, ptr noundef nonnull align 8 dereferenceable(24) %65, i32 noundef 1, i32 noundef %725)
  store i32 %726, ptr %67, align 4, !tbaa !33
  call void @llvm.lifetime.start.p0(i64 24, ptr %68) #6
  %727 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN8libspirv15MutableBytecode14findSectionEndENS_8Bytecode7SectionE(ptr dead_on_unwind writable sret(%"struct.libspirv::MutableBytecode::Iterator") align 8 %68, ptr noundef nonnull align 8 dereferenceable(48) %727, i8 noundef zeroext 7)
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %65, ptr align 8 %68, i64 24, i1 false)
  call void @llvm.lifetime.end.p0(i64 24, ptr %68) #6
  %728 = load i32, ptr %6, align 4, !tbaa !33
  call void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpEjPKc(ptr noundef nonnull align 8 dereferenceable(24) %65, i32 noundef 5, i32 noundef %728, ptr noundef @.str.45)
  call void @llvm.lifetime.start.p0(i64 24, ptr %69) #6
  %729 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN8libspirv15MutableBytecode14findSectionEndENS_8Bytecode7SectionE(ptr dead_on_unwind writable sret(%"struct.libspirv::MutableBytecode::Iterator") align 8 %69, ptr noundef nonnull align 8 dereferenceable(48) %729, i8 noundef zeroext 8)
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %65, ptr align 8 %69, i64 24, i1 false)
  call void @llvm.lifetime.end.p0(i64 24, ptr %69) #6
  call void @llvm.lifetime.start.p0(i64 12, ptr %71) #6
  %730 = load i32, ptr %6, align 4, !tbaa !33
  store i32 %730, ptr %71, align 4, !tbaa !33
  %731 = getelementptr inbounds i32, ptr %71, i64 1
  store i32 11, ptr %731, align 4, !tbaa !33
  %732 = getelementptr inbounds i32, ptr %71, i64 2
  store i32 42, ptr %732, align 4, !tbaa !33
  %733 = getelementptr inbounds %"class.std::initializer_list", ptr %70, i32 0, i32 0
  store ptr %71, ptr %733, align 8, !tbaa !34
  %734 = getelementptr inbounds %"class.std::initializer_list", ptr %70, i32 0, i32 1
  store i64 3, ptr %734, align 8, !tbaa !36
  %735 = getelementptr inbounds { ptr, i64 }, ptr %70, i32 0, i32 0
  %736 = load ptr, ptr %735, align 8
  %737 = getelementptr inbounds { ptr, i64 }, ptr %70, i32 0, i32 1
  %738 = load i64, ptr %737, align 8
  call void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpESt16initializer_listIjE(ptr noundef nonnull align 8 dereferenceable(24) %65, i32 noundef 71, ptr %736, i64 %738)
  call void @llvm.lifetime.end.p0(i64 12, ptr %71) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr %72) #6
  %739 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %73, ptr noundef @.str.4) #6
  %740 = getelementptr inbounds { i64, ptr }, ptr %73, i32 0, i32 0
  %741 = load i64, ptr %740, align 8
  %742 = getelementptr inbounds { i64, ptr }, ptr %73, i32 0, i32 1
  %743 = load ptr, ptr %742, align 8
  call void @_ZN8libspirv15MutableBytecode16findOpEntryPointEN3spv14ExecutionModelESt17basic_string_viewIcSt11char_traitsIcEE(ptr dead_on_unwind writable sret(%"struct.libspirv::MutableBytecode::Iterator") align 8 %72, ptr noundef nonnull align 8 dereferenceable(48) %739, i32 noundef 0, i64 %741, ptr %743)
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %65, ptr align 8 %72, i64 24, i1 false)
  call void @llvm.lifetime.end.p0(i64 24, ptr %72) #6
  %744 = load i32, ptr %6, align 4, !tbaa !33
  call void @_ZN8libspirv15MutableBytecode8Iterator6appendEj(ptr noundef nonnull align 8 dereferenceable(24) %65, i32 noundef %744)
  call void @llvm.lifetime.start.p0(i64 24, ptr %74) #6
  %745 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN8libspirv15MutableBytecode14findSectionEndENS_8Bytecode7SectionE(ptr dead_on_unwind writable sret(%"struct.libspirv::MutableBytecode::Iterator") align 8 %74, ptr noundef nonnull align 8 dereferenceable(48) %745, i8 noundef zeroext 9)
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %65, ptr align 8 %74, i64 24, i1 false)
  call void @llvm.lifetime.end.p0(i64 24, ptr %74) #6
  call void @llvm.lifetime.start.p0(i64 12, ptr %76) #6
  %746 = load i32, ptr %67, align 4, !tbaa !33
  store i32 %746, ptr %76, align 4, !tbaa !33
  %747 = getelementptr inbounds i32, ptr %76, i64 1
  %748 = load i32, ptr %6, align 4, !tbaa !33
  store i32 %748, ptr %747, align 4, !tbaa !33
  %749 = getelementptr inbounds i32, ptr %76, i64 2
  store i32 1, ptr %749, align 4, !tbaa !33
  %750 = getelementptr inbounds %"class.std::initializer_list", ptr %75, i32 0, i32 0
  store ptr %76, ptr %750, align 8, !tbaa !34
  %751 = getelementptr inbounds %"class.std::initializer_list", ptr %75, i32 0, i32 1
  store i64 3, ptr %751, align 8, !tbaa !36
  %752 = getelementptr inbounds { ptr, i64 }, ptr %75, i32 0, i32 0
  %753 = load ptr, ptr %752, align 8
  %754 = getelementptr inbounds { ptr, i64 }, ptr %75, i32 0, i32 1
  %755 = load i64, ptr %754, align 8
  call void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpESt16initializer_listIjE(ptr noundef nonnull align 8 dereferenceable(24) %65, i32 noundef 59, ptr %753, i64 %755)
  call void @llvm.lifetime.end.p0(i64 12, ptr %76) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %65) #6
  br label %756

756:                                              ; preds = %720, %716
  %757 = load i32, ptr %6, align 4, !tbaa !33
  %758 = icmp ne i32 %757, 0
  br i1 %758, label %759, label %956

759:                                              ; preds = %756
  call void @llvm.lifetime.start.p0(i64 4, ptr %77) #6
  %760 = getelementptr inbounds %class.MeshConverter, ptr %117, i32 0, i32 4
  %761 = call noundef i32 @_ZN8libspirv15MutableBytecode13fetchAddBoundEv(ptr noundef nonnull align 8 dereferenceable(48) %760)
  store i32 %761, ptr %77, align 4, !tbaa !33
  call void @llvm.lifetime.start.p0(i64 4, ptr %78) #6
  %762 = getelementptr inbounds %class.MeshConverter, ptr %117, i32 0, i32 4
  %763 = call noundef i32 @_ZN8libspirv15MutableBytecode13fetchAddBoundEv(ptr noundef nonnull align 8 dereferenceable(48) %762)
  store i32 %763, ptr %78, align 4, !tbaa !33
  call void @llvm.lifetime.start.p0(i64 24, ptr %79) #6
  %764 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN8libspirv15MutableBytecode14findSectionEndENS_8Bytecode7SectionE(ptr dead_on_unwind writable sret(%"struct.libspirv::MutableBytecode::Iterator") align 8 %79, ptr noundef nonnull align 8 dereferenceable(48) %764, i8 noundef zeroext 9)
  call void @llvm.lifetime.start.p0(i64 4, ptr %80) #6
  %765 = getelementptr inbounds %class.MeshConverter, ptr %117, i32 0, i32 5
  %766 = getelementptr inbounds [3 x i32], ptr %765, i64 0, i64 0
  %767 = load i32, ptr %766, align 8, !tbaa !33
  %768 = getelementptr inbounds %class.MeshConverter, ptr %117, i32 0, i32 5
  %769 = getelementptr inbounds [3 x i32], ptr %768, i64 0, i64 1
  %770 = load i32, ptr %769, align 4, !tbaa !33
  %771 = mul i32 %767, %770
  %772 = getelementptr inbounds %class.MeshConverter, ptr %117, i32 0, i32 5
  %773 = getelementptr inbounds [3 x i32], ptr %772, i64 0, i64 2
  %774 = load i32, ptr %773, align 8, !tbaa !33
  %775 = mul i32 %771, %774
  store i32 %775, ptr %80, align 4, !tbaa !33
  call void @llvm.lifetime.start.p0(i64 4, ptr %81) #6
  %776 = load ptr, ptr %4, align 8, !tbaa !5
  %777 = call noundef i32 @_ZN8libspirv15MutableBytecode9OpTypeIntERNS0_8IteratorEtb(ptr noundef nonnull align 8 dereferenceable(48) %776, ptr noundef nonnull align 8 dereferenceable(24) %79, i16 noundef zeroext 32, i1 noundef zeroext false)
  store i32 %777, ptr %81, align 4, !tbaa !33
  call void @llvm.lifetime.start.p0(i64 4, ptr %82) #6
  %778 = load ptr, ptr %4, align 8, !tbaa !5
  %779 = call noundef i32 @_ZN8libspirv15MutableBytecode9OpTypeIntERNS0_8IteratorEtb(ptr noundef nonnull align 8 dereferenceable(48) %778, ptr noundef nonnull align 8 dereferenceable(24) %79, i16 noundef zeroext 32, i1 noundef zeroext true)
  store i32 %779, ptr %82, align 4, !tbaa !33
  call void @llvm.lifetime.start.p0(i64 4, ptr %83) #6
  %780 = load ptr, ptr %4, align 8, !tbaa !5
  %781 = load i32, ptr %81, align 4, !tbaa !33
  %782 = call noundef i32 @_ZN8libspirv15MutableBytecode13OpTypePointerERNS0_8IteratorEN3spv12StorageClassEj(ptr noundef nonnull align 8 dereferenceable(48) %780, ptr noundef nonnull align 8 dereferenceable(24) %79, i32 noundef 6, i32 noundef %781)
  store i32 %782, ptr %83, align 4, !tbaa !33
  call void @llvm.lifetime.start.p0(i64 4, ptr %84) #6
  %783 = load ptr, ptr %4, align 8, !tbaa !5
  %784 = load i32, ptr %81, align 4, !tbaa !33
  %785 = load i32, ptr %80, align 4, !tbaa !33
  %786 = call noundef i32 @_ZN8libspirv15MutableBytecode10OpConstantERNS0_8IteratorEjj(ptr noundef nonnull align 8 dereferenceable(48) %783, ptr noundef nonnull align 8 dereferenceable(24) %79, i32 noundef %784, i32 noundef %785)
  store i32 %786, ptr %84, align 4, !tbaa !33
  call void @llvm.lifetime.start.p0(i64 24, ptr %85) #6
  %787 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %86, ptr noundef @.str.4) #6
  %788 = getelementptr inbounds { i64, ptr }, ptr %86, i32 0, i32 0
  %789 = load i64, ptr %788, align 8
  %790 = getelementptr inbounds { i64, ptr }, ptr %86, i32 0, i32 1
  %791 = load ptr, ptr %790, align 8
  call void @_ZN8libspirv15MutableBytecode16findOpEntryPointEN3spv14ExecutionModelESt17basic_string_viewIcSt11char_traitsIcEE(ptr dead_on_unwind writable sret(%"struct.libspirv::MutableBytecode::Iterator") align 8 %85, ptr noundef nonnull align 8 dereferenceable(48) %787, i32 noundef 0, i64 %789, ptr %791)
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %79, ptr align 8 %85, i64 24, i1 false)
  call void @llvm.lifetime.end.p0(i64 24, ptr %85) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %87) #6
  %792 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode8IteratordeEv(ptr noundef nonnull align 8 dereferenceable(12) %79)
  %793 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %792, i16 noundef zeroext 2)
  %794 = load i32, ptr %793, align 4, !tbaa !33
  store i32 %794, ptr %87, align 4, !tbaa !33
  call void @llvm.lifetime.start.p0(i64 24, ptr %88) #6
  %795 = load ptr, ptr %4, align 8, !tbaa !5
  %796 = load i32, ptr %87, align 4, !tbaa !33
  call void @_ZN8libspirv15MutableBytecode12findFunctionEj(ptr dead_on_unwind writable sret(%"struct.libspirv::MutableBytecode::Iterator") align 8 %88, ptr noundef nonnull align 8 dereferenceable(48) %795, i32 noundef %796)
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %79, ptr align 8 %88, i64 24, i1 false)
  call void @llvm.lifetime.end.p0(i64 24, ptr %88) #6
  call void @llvm.lifetime.start.p0(i64 12, ptr %90) #6
  %797 = load i32, ptr %82, align 4, !tbaa !33
  store i32 %797, ptr %90, align 4, !tbaa !33
  %798 = getelementptr inbounds i32, ptr %90, i64 1
  %799 = load i32, ptr %77, align 4, !tbaa !33
  store i32 %799, ptr %798, align 4, !tbaa !33
  %800 = getelementptr inbounds i32, ptr %90, i64 2
  %801 = load i32, ptr %6, align 4, !tbaa !33
  store i32 %801, ptr %800, align 4, !tbaa !33
  %802 = getelementptr inbounds %"class.std::initializer_list", ptr %89, i32 0, i32 0
  store ptr %90, ptr %802, align 8, !tbaa !34
  %803 = getelementptr inbounds %"class.std::initializer_list", ptr %89, i32 0, i32 1
  store i64 3, ptr %803, align 8, !tbaa !36
  %804 = getelementptr inbounds { ptr, i64 }, ptr %89, i32 0, i32 0
  %805 = load ptr, ptr %804, align 8
  %806 = getelementptr inbounds { ptr, i64 }, ptr %89, i32 0, i32 1
  %807 = load i64, ptr %806, align 8
  call void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpESt16initializer_listIjE(ptr noundef nonnull align 8 dereferenceable(24) %79, i32 noundef 61, ptr %805, i64 %807)
  call void @llvm.lifetime.end.p0(i64 12, ptr %90) #6
  call void @llvm.lifetime.start.p0(i64 12, ptr %92) #6
  %808 = load i32, ptr %81, align 4, !tbaa !33
  store i32 %808, ptr %92, align 4, !tbaa !33
  %809 = getelementptr inbounds i32, ptr %92, i64 1
  %810 = load i32, ptr %78, align 4, !tbaa !33
  store i32 %810, ptr %809, align 4, !tbaa !33
  %811 = getelementptr inbounds i32, ptr %92, i64 2
  %812 = load i32, ptr %77, align 4, !tbaa !33
  store i32 %812, ptr %811, align 4, !tbaa !33
  %813 = getelementptr inbounds %"class.std::initializer_list", ptr %91, i32 0, i32 0
  store ptr %92, ptr %813, align 8, !tbaa !34
  %814 = getelementptr inbounds %"class.std::initializer_list", ptr %91, i32 0, i32 1
  store i64 3, ptr %814, align 8, !tbaa !36
  %815 = getelementptr inbounds { ptr, i64 }, ptr %91, i32 0, i32 0
  %816 = load ptr, ptr %815, align 8
  %817 = getelementptr inbounds { ptr, i64 }, ptr %91, i32 0, i32 1
  %818 = load i64, ptr %817, align 8
  call void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpESt16initializer_listIjE(ptr noundef nonnull align 8 dereferenceable(24) %79, i32 noundef 124, ptr %816, i64 %818)
  call void @llvm.lifetime.end.p0(i64 12, ptr %92) #6
  %819 = getelementptr inbounds %class.MeshConverter, ptr %117, i32 0, i32 10
  %820 = load i32, ptr %819, align 4, !tbaa !48
  %821 = icmp ne i32 %820, 0
  br i1 %821, label %822, label %861

822:                                              ; preds = %759
  call void @llvm.lifetime.start.p0(i64 4, ptr %93) #6
  %823 = getelementptr inbounds %class.MeshConverter, ptr %117, i32 0, i32 4
  %824 = call noundef i32 @_ZN8libspirv15MutableBytecode13fetchAddBoundEv(ptr noundef nonnull align 8 dereferenceable(48) %823)
  store i32 %824, ptr %93, align 4, !tbaa !33
  call void @llvm.lifetime.start.p0(i64 4, ptr %94) #6
  %825 = getelementptr inbounds %class.MeshConverter, ptr %117, i32 0, i32 4
  %826 = call noundef i32 @_ZN8libspirv15MutableBytecode13fetchAddBoundEv(ptr noundef nonnull align 8 dereferenceable(48) %825)
  store i32 %826, ptr %94, align 4, !tbaa !33
  call void @llvm.lifetime.start.p0(i64 12, ptr %96) #6
  %827 = load i32, ptr %83, align 4, !tbaa !33
  store i32 %827, ptr %96, align 4, !tbaa !33
  %828 = getelementptr inbounds i32, ptr %96, i64 1
  %829 = load i32, ptr %93, align 4, !tbaa !33
  store i32 %829, ptr %828, align 4, !tbaa !33
  %830 = getelementptr inbounds i32, ptr %96, i64 2
  %831 = getelementptr inbounds %class.MeshConverter, ptr %117, i32 0, i32 10
  %832 = load i32, ptr %831, align 4, !tbaa !48
  store i32 %832, ptr %830, align 4, !tbaa !33
  %833 = getelementptr inbounds %"class.std::initializer_list", ptr %95, i32 0, i32 0
  store ptr %96, ptr %833, align 8, !tbaa !34
  %834 = getelementptr inbounds %"class.std::initializer_list", ptr %95, i32 0, i32 1
  store i64 3, ptr %834, align 8, !tbaa !36
  %835 = getelementptr inbounds { ptr, i64 }, ptr %95, i32 0, i32 0
  %836 = load ptr, ptr %835, align 8
  %837 = getelementptr inbounds { ptr, i64 }, ptr %95, i32 0, i32 1
  %838 = load i64, ptr %837, align 8
  call void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpESt16initializer_listIjE(ptr noundef nonnull align 8 dereferenceable(24) %79, i32 noundef 65, ptr %836, i64 %838)
  call void @llvm.lifetime.end.p0(i64 12, ptr %96) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %98) #6
  %839 = load i32, ptr %81, align 4, !tbaa !33
  store i32 %839, ptr %98, align 4, !tbaa !33
  %840 = getelementptr inbounds i32, ptr %98, i64 1
  %841 = load i32, ptr %94, align 4, !tbaa !33
  store i32 %841, ptr %840, align 4, !tbaa !33
  %842 = getelementptr inbounds i32, ptr %98, i64 2
  %843 = load i32, ptr %78, align 4, !tbaa !33
  store i32 %843, ptr %842, align 4, !tbaa !33
  %844 = getelementptr inbounds i32, ptr %98, i64 3
  %845 = load i32, ptr %84, align 4, !tbaa !33
  store i32 %845, ptr %844, align 4, !tbaa !33
  %846 = getelementptr inbounds %"class.std::initializer_list", ptr %97, i32 0, i32 0
  store ptr %98, ptr %846, align 8, !tbaa !34
  %847 = getelementptr inbounds %"class.std::initializer_list", ptr %97, i32 0, i32 1
  store i64 4, ptr %847, align 8, !tbaa !36
  %848 = getelementptr inbounds { ptr, i64 }, ptr %97, i32 0, i32 0
  %849 = load ptr, ptr %848, align 8
  %850 = getelementptr inbounds { ptr, i64 }, ptr %97, i32 0, i32 1
  %851 = load i64, ptr %850, align 8
  call void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpESt16initializer_listIjE(ptr noundef nonnull align 8 dereferenceable(24) %79, i32 noundef 137, ptr %849, i64 %851)
  call void @llvm.lifetime.end.p0(i64 16, ptr %98) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %100) #6
  %852 = load i32, ptr %93, align 4, !tbaa !33
  store i32 %852, ptr %100, align 4, !tbaa !33
  %853 = getelementptr inbounds i32, ptr %100, i64 1
  %854 = load i32, ptr %94, align 4, !tbaa !33
  store i32 %854, ptr %853, align 4, !tbaa !33
  %855 = getelementptr inbounds %"class.std::initializer_list", ptr %99, i32 0, i32 0
  store ptr %100, ptr %855, align 8, !tbaa !34
  %856 = getelementptr inbounds %"class.std::initializer_list", ptr %99, i32 0, i32 1
  store i64 2, ptr %856, align 8, !tbaa !36
  %857 = getelementptr inbounds { ptr, i64 }, ptr %99, i32 0, i32 0
  %858 = load ptr, ptr %857, align 8
  %859 = getelementptr inbounds { ptr, i64 }, ptr %99, i32 0, i32 1
  %860 = load i64, ptr %859, align 8
  call void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpESt16initializer_listIjE(ptr noundef nonnull align 8 dereferenceable(24) %79, i32 noundef 62, ptr %858, i64 %860)
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %94) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %93) #6
  br label %861

861:                                              ; preds = %822, %759
  %862 = getelementptr inbounds %class.MeshConverter, ptr %117, i32 0, i32 9
  %863 = load i32, ptr %862, align 8, !tbaa !49
  %864 = icmp ne i32 %863, 0
  br i1 %864, label %865, label %908

865:                                              ; preds = %861
  call void @llvm.lifetime.start.p0(i64 4, ptr %101) #6
  %866 = getelementptr inbounds %class.MeshConverter, ptr %117, i32 0, i32 4
  %867 = call noundef i32 @_ZN8libspirv15MutableBytecode13fetchAddBoundEv(ptr noundef nonnull align 8 dereferenceable(48) %866)
  store i32 %867, ptr %101, align 4, !tbaa !33
  call void @llvm.lifetime.start.p0(i64 4, ptr %102) #6
  %868 = getelementptr inbounds %class.MeshConverter, ptr %117, i32 0, i32 4
  %869 = call noundef i32 @_ZN8libspirv15MutableBytecode13fetchAddBoundEv(ptr noundef nonnull align 8 dereferenceable(48) %868)
  store i32 %869, ptr %102, align 4, !tbaa !33
  call void @llvm.lifetime.start.p0(i64 16, ptr %104) #6
  %870 = load i32, ptr %83, align 4, !tbaa !33
  store i32 %870, ptr %104, align 4, !tbaa !33
  %871 = getelementptr inbounds i32, ptr %104, i64 1
  %872 = load i32, ptr %101, align 4, !tbaa !33
  store i32 %872, ptr %871, align 4, !tbaa !33
  %873 = getelementptr inbounds i32, ptr %104, i64 2
  %874 = getelementptr inbounds %class.MeshConverter, ptr %117, i32 0, i32 9
  %875 = load i32, ptr %874, align 8, !tbaa !49
  store i32 %875, ptr %873, align 4, !tbaa !33
  %876 = getelementptr inbounds i32, ptr %104, i64 3
  %877 = getelementptr inbounds %class.MeshConverter, ptr %117, i32 0, i32 30
  %878 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %877, i64 noundef 0) #6
  %879 = load i32, ptr %878, align 4, !tbaa !33
  store i32 %879, ptr %876, align 4, !tbaa !33
  %880 = getelementptr inbounds %"class.std::initializer_list", ptr %103, i32 0, i32 0
  store ptr %104, ptr %880, align 8, !tbaa !34
  %881 = getelementptr inbounds %"class.std::initializer_list", ptr %103, i32 0, i32 1
  store i64 4, ptr %881, align 8, !tbaa !36
  %882 = getelementptr inbounds { ptr, i64 }, ptr %103, i32 0, i32 0
  %883 = load ptr, ptr %882, align 8
  %884 = getelementptr inbounds { ptr, i64 }, ptr %103, i32 0, i32 1
  %885 = load i64, ptr %884, align 8
  call void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpESt16initializer_listIjE(ptr noundef nonnull align 8 dereferenceable(24) %79, i32 noundef 65, ptr %883, i64 %885)
  call void @llvm.lifetime.end.p0(i64 16, ptr %104) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %106) #6
  %886 = load i32, ptr %81, align 4, !tbaa !33
  store i32 %886, ptr %106, align 4, !tbaa !33
  %887 = getelementptr inbounds i32, ptr %106, i64 1
  %888 = load i32, ptr %102, align 4, !tbaa !33
  store i32 %888, ptr %887, align 4, !tbaa !33
  %889 = getelementptr inbounds i32, ptr %106, i64 2
  %890 = load i32, ptr %78, align 4, !tbaa !33
  store i32 %890, ptr %889, align 4, !tbaa !33
  %891 = getelementptr inbounds i32, ptr %106, i64 3
  %892 = load i32, ptr %84, align 4, !tbaa !33
  store i32 %892, ptr %891, align 4, !tbaa !33
  %893 = getelementptr inbounds %"class.std::initializer_list", ptr %105, i32 0, i32 0
  store ptr %106, ptr %893, align 8, !tbaa !34
  %894 = getelementptr inbounds %"class.std::initializer_list", ptr %105, i32 0, i32 1
  store i64 4, ptr %894, align 8, !tbaa !36
  %895 = getelementptr inbounds { ptr, i64 }, ptr %105, i32 0, i32 0
  %896 = load ptr, ptr %895, align 8
  %897 = getelementptr inbounds { ptr, i64 }, ptr %105, i32 0, i32 1
  %898 = load i64, ptr %897, align 8
  call void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpESt16initializer_listIjE(ptr noundef nonnull align 8 dereferenceable(24) %79, i32 noundef 137, ptr %896, i64 %898)
  call void @llvm.lifetime.end.p0(i64 16, ptr %106) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %108) #6
  %899 = load i32, ptr %101, align 4, !tbaa !33
  store i32 %899, ptr %108, align 4, !tbaa !33
  %900 = getelementptr inbounds i32, ptr %108, i64 1
  %901 = load i32, ptr %102, align 4, !tbaa !33
  store i32 %901, ptr %900, align 4, !tbaa !33
  %902 = getelementptr inbounds %"class.std::initializer_list", ptr %107, i32 0, i32 0
  store ptr %108, ptr %902, align 8, !tbaa !34
  %903 = getelementptr inbounds %"class.std::initializer_list", ptr %107, i32 0, i32 1
  store i64 2, ptr %903, align 8, !tbaa !36
  %904 = getelementptr inbounds { ptr, i64 }, ptr %107, i32 0, i32 0
  %905 = load ptr, ptr %904, align 8
  %906 = getelementptr inbounds { ptr, i64 }, ptr %107, i32 0, i32 1
  %907 = load i64, ptr %906, align 8
  call void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpESt16initializer_listIjE(ptr noundef nonnull align 8 dereferenceable(24) %79, i32 noundef 62, ptr %905, i64 %907)
  call void @llvm.lifetime.end.p0(i64 8, ptr %108) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %102) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %101) #6
  br label %908

908:                                              ; preds = %865, %861
  %909 = getelementptr inbounds %class.MeshConverter, ptr %117, i32 0, i32 8
  %910 = load i32, ptr %909, align 4, !tbaa !50
  %911 = icmp ne i32 %910, 0
  br i1 %911, label %912, label %955

912:                                              ; preds = %908
  call void @llvm.lifetime.start.p0(i64 4, ptr %109) #6
  %913 = getelementptr inbounds %class.MeshConverter, ptr %117, i32 0, i32 4
  %914 = call noundef i32 @_ZN8libspirv15MutableBytecode13fetchAddBoundEv(ptr noundef nonnull align 8 dereferenceable(48) %913)
  store i32 %914, ptr %109, align 4, !tbaa !33
  call void @llvm.lifetime.start.p0(i64 4, ptr %110) #6
  %915 = getelementptr inbounds %class.MeshConverter, ptr %117, i32 0, i32 4
  %916 = call noundef i32 @_ZN8libspirv15MutableBytecode13fetchAddBoundEv(ptr noundef nonnull align 8 dereferenceable(48) %915)
  store i32 %916, ptr %110, align 4, !tbaa !33
  call void @llvm.lifetime.start.p0(i64 16, ptr %112) #6
  %917 = load i32, ptr %83, align 4, !tbaa !33
  store i32 %917, ptr %112, align 4, !tbaa !33
  %918 = getelementptr inbounds i32, ptr %112, i64 1
  %919 = load i32, ptr %109, align 4, !tbaa !33
  store i32 %919, ptr %918, align 4, !tbaa !33
  %920 = getelementptr inbounds i32, ptr %112, i64 2
  %921 = getelementptr inbounds %class.MeshConverter, ptr %117, i32 0, i32 8
  %922 = load i32, ptr %921, align 4, !tbaa !50
  store i32 %922, ptr %920, align 4, !tbaa !33
  %923 = getelementptr inbounds i32, ptr %112, i64 3
  %924 = getelementptr inbounds %class.MeshConverter, ptr %117, i32 0, i32 30
  %925 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %924, i64 noundef 0) #6
  %926 = load i32, ptr %925, align 4, !tbaa !33
  store i32 %926, ptr %923, align 4, !tbaa !33
  %927 = getelementptr inbounds %"class.std::initializer_list", ptr %111, i32 0, i32 0
  store ptr %112, ptr %927, align 8, !tbaa !34
  %928 = getelementptr inbounds %"class.std::initializer_list", ptr %111, i32 0, i32 1
  store i64 4, ptr %928, align 8, !tbaa !36
  %929 = getelementptr inbounds { ptr, i64 }, ptr %111, i32 0, i32 0
  %930 = load ptr, ptr %929, align 8
  %931 = getelementptr inbounds { ptr, i64 }, ptr %111, i32 0, i32 1
  %932 = load i64, ptr %931, align 8
  call void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpESt16initializer_listIjE(ptr noundef nonnull align 8 dereferenceable(24) %79, i32 noundef 65, ptr %930, i64 %932)
  call void @llvm.lifetime.end.p0(i64 16, ptr %112) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %114) #6
  %933 = load i32, ptr %81, align 4, !tbaa !33
  store i32 %933, ptr %114, align 4, !tbaa !33
  %934 = getelementptr inbounds i32, ptr %114, i64 1
  %935 = load i32, ptr %110, align 4, !tbaa !33
  store i32 %935, ptr %934, align 4, !tbaa !33
  %936 = getelementptr inbounds i32, ptr %114, i64 2
  %937 = load i32, ptr %78, align 4, !tbaa !33
  store i32 %937, ptr %936, align 4, !tbaa !33
  %938 = getelementptr inbounds i32, ptr %114, i64 3
  %939 = load i32, ptr %84, align 4, !tbaa !33
  store i32 %939, ptr %938, align 4, !tbaa !33
  %940 = getelementptr inbounds %"class.std::initializer_list", ptr %113, i32 0, i32 0
  store ptr %114, ptr %940, align 8, !tbaa !34
  %941 = getelementptr inbounds %"class.std::initializer_list", ptr %113, i32 0, i32 1
  store i64 4, ptr %941, align 8, !tbaa !36
  %942 = getelementptr inbounds { ptr, i64 }, ptr %113, i32 0, i32 0
  %943 = load ptr, ptr %942, align 8
  %944 = getelementptr inbounds { ptr, i64 }, ptr %113, i32 0, i32 1
  %945 = load i64, ptr %944, align 8
  call void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpESt16initializer_listIjE(ptr noundef nonnull align 8 dereferenceable(24) %79, i32 noundef 134, ptr %943, i64 %945)
  call void @llvm.lifetime.end.p0(i64 16, ptr %114) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %116) #6
  %946 = load i32, ptr %109, align 4, !tbaa !33
  store i32 %946, ptr %116, align 4, !tbaa !33
  %947 = getelementptr inbounds i32, ptr %116, i64 1
  %948 = load i32, ptr %110, align 4, !tbaa !33
  store i32 %948, ptr %947, align 4, !tbaa !33
  %949 = getelementptr inbounds %"class.std::initializer_list", ptr %115, i32 0, i32 0
  store ptr %116, ptr %949, align 8, !tbaa !34
  %950 = getelementptr inbounds %"class.std::initializer_list", ptr %115, i32 0, i32 1
  store i64 2, ptr %950, align 8, !tbaa !36
  %951 = getelementptr inbounds { ptr, i64 }, ptr %115, i32 0, i32 0
  %952 = load ptr, ptr %951, align 8
  %953 = getelementptr inbounds { ptr, i64 }, ptr %115, i32 0, i32 1
  %954 = load i64, ptr %953, align 8
  call void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpESt16initializer_listIjE(ptr noundef nonnull align 8 dereferenceable(24) %79, i32 noundef 62, ptr %952, i64 %954)
  call void @llvm.lifetime.end.p0(i64 8, ptr %116) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %110) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %109) #6
  br label %955

955:                                              ; preds = %912, %908
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %84) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %79) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #6
  br label %956

956:                                              ; preds = %955, %756
  call void @llvm.lifetime.end.p0(i64 24, ptr %7) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %5) #6
  ret void

957:                                              ; preds = %679, %303
  unreachable
}

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

declare { ptr, i32 } @_ZNK8libspirv8Bytecode5beginEv(ptr noundef nonnull align 8 dereferenceable(20)) #2

; 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) #3

declare { ptr, i32 } @_ZNK8libspirv8Bytecode3endEv(ptr noundef nonnull align 8 dereferenceable(20)) #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN8libspirvneERKNS_8Bytecode8IteratorES3_(ptr noundef nonnull align 8 dereferenceable(12), ptr noundef nonnull align 8 dereferenceable(12)) #4

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4), i16 noundef zeroext) #4 align 2

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

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

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

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

declare void @_ZN8libspirv15MutableBytecode15setSpirvVersionEj(ptr noundef nonnull align 8 dereferenceable(48), i32 noundef) #2

declare noundef i32 @_ZNK8libspirv8Bytecode12spirvVersionEv(ptr noundef nonnull align 8 dereferenceable(20)) #2

declare noundef i32 @_ZN8libspirv15MutableBytecode13fetchAddBoundEj(ptr noundef nonnull align 8 dereferenceable(48), i32 noundef) #2

declare noundef i32 @_ZNK8libspirv8Bytecode5boundEv(ptr noundef nonnull align 8 dereferenceable(20)) #2

declare noundef i32 @_ZN8libspirv15MutableBytecode13fetchAddBoundEv(ptr noundef nonnull align 8 dereferenceable(48)) #2

declare void @_ZN8libspirv15MutableBytecode3endEv(ptr dead_on_unwind writable sret(%"struct.libspirv::MutableBytecode::Iterator") align 8, ptr noundef nonnull align 8 dereferenceable(48)) #2

declare void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpESt16initializer_listIjE(ptr noundef nonnull align 8 dereferenceable(24), i32 noundef, ptr, i64) #2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE(i64, ptr, i64, ptr) #4

declare noundef i64 @_ZNK8libspirv15MutableBytecode8Iterator8toOffsetEv(ptr noundef nonnull align 8 dereferenceable(24)) #2

declare void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpEPKjm(ptr noundef nonnull align 8 dereferenceable(24), i32 noundef, ptr noundef, i64 noundef) #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i16 @_ZNK8libspirv8Bytecode6OpCode6lengthEv(ptr noundef nonnull align 4 dereferenceable(4)) #4 align 2

declare void @_ZN8libspirv15MutableBytecode10fromOffsetEm(ptr dead_on_unwind writable sret(%"struct.libspirv::MutableBytecode::Iterator") align 8, ptr noundef nonnull align 8 dereferenceable(48), i64 noundef) #2

declare void @_ZN8libspirv15MutableBytecode8Iterator3setEtj(ptr noundef nonnull align 8 dereferenceable(24), i16 noundef zeroext, i32 noundef) #2

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

; Function Attrs: mustprogress uwtable
declare dso_local ptr @_ZNSt13unordered_mapIjN13MeshConverter7VaryingESt4hashIjESt8equal_toIjESaISt4pairIKjS1_EEE4findERS7_(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 4 dereferenceable(4)) #0 align 2

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

declare void @_ZN8libspirv15MutableBytecode8Iterator8setToNopEv(ptr noundef nonnull align 8 dereferenceable(24)) #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN13MeshConverter13emitConstantsERN8libspirv15MutableBytecodeE(ptr noundef nonnull align 8 dereferenceable(425), ptr noundef nonnull align 8 dereferenceable(48)) #0 align 2

declare void @_ZN8libspirv15MutableBytecode14findSectionEndENS_8Bytecode7SectionE(ptr dead_on_unwind writable sret(%"struct.libspirv::MutableBytecode::Iterator") align 8, ptr noundef nonnull align 8 dereferenceable(48), i8 noundef zeroext) #2

declare noundef i32 @_ZN8libspirv15MutableBytecode9OpTypeIntERNS0_8IteratorEtb(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(24), i16 noundef zeroext, i1 noundef zeroext) #2

declare noundef i32 @_ZN8libspirv15MutableBytecode13OpTypePointerERNS0_8IteratorEN3spv12StorageClassEj(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(24), i32 noundef, i32 noundef) #2

declare noundef i64 @_ZNK8libspirv8Bytecode8toOffsetERKNS0_6OpCodeE(ptr noundef nonnull align 8 dereferenceable(20), ptr noundef nonnull align 4 dereferenceable(4)) #2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt13unordered_mapIjmSt4hashIjESt8equal_toIjESaISt4pairIKjmEEEixERS5_(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 4 dereferenceable(4)) #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local ptr @_ZNSt13unordered_mapIjmSt4hashIjESt8equal_toIjESaISt4pairIKjmEEE4findERS5_(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 4 dereferenceable(4)) #0 align 2

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

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

declare void @_ZN8libspirv15MutableBytecode5beginEv(ptr dead_on_unwind writable sret(%"struct.libspirv::MutableBytecode::Iterator") align 8, ptr noundef nonnull align 8 dereferenceable(48)) #2

declare void @_ZN8libspirv15MutableBytecode10removeNopsEv(ptr noundef nonnull align 8 dereferenceable(48)) #2

declare void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpEjPKc(ptr noundef nonnull align 8 dereferenceable(24), i32 noundef, i32 noundef, ptr noundef) #2

declare void @_ZN8libspirv15MutableBytecode16findOpEntryPointEN3spv14ExecutionModelESt17basic_string_viewIcSt11char_traitsIcEE(ptr dead_on_unwind writable sret(%"struct.libspirv::MutableBytecode::Iterator") align 8, ptr noundef nonnull align 8 dereferenceable(48), i32 noundef, i64, ptr) #2

declare void @_ZN8libspirv15MutableBytecode8Iterator6appendEj(ptr noundef nonnull align 8 dereferenceable(24), i32 noundef) #2

declare noundef i32 @_ZN8libspirv15MutableBytecode10OpConstantERNS0_8IteratorEjj(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(24), i32 noundef, i32 noundef) #2

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

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

declare { ptr, i32 } @_ZNK8libspirv8Bytecode10findOpTypeEj(ptr noundef nonnull align 8 dereferenceable(20), i32 noundef) #2

declare void @_ZN8libspirv15MutableBytecode8Iterator5evictEj(ptr noundef nonnull align 8 dereferenceable(24), i32 noundef) #2

declare void @_ZN8libspirv15MutableBytecode12findFunctionEj(ptr dead_on_unwind writable sret(%"struct.libspirv::MutableBytecode::Iterator") align 8, ptr noundef nonnull align 8 dereferenceable(48), i32 noundef) #2

attributes #0 = { 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 #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "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 nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #6 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"bool", !7, i64 0}
!11 = !{!12, !6, i64 8}
!12 = !{!"_ZTS13MeshConverter", !13, i64 0, !6, i64 8, !14, i64 16, !14, i64 64, !7, i64 112, !17, i64 124, !17, i64 128, !17, i64 132, !17, i64 136, !17, i64 140, !17, i64 144, !17, i64 148, !17, i64 152, !17, i64 156, !17, i64 160, !17, i64 164, !17, i64 168, !17, i64 172, !17, i64 176, !17, i64 180, !17, i64 184, !17, i64 188, !17, i64 192, !17, i64 196, !17, i64 200, !22, i64 208, !22, i64 264, !27, i64 320, !29, i64 376, !17, i64 400, !17, i64 404, !17, i64 408, !17, i64 412, !17, i64 416, !17, i64 420, !10, i64 424}
!13 = !{!"_ZTSN13MeshConverter7OptionsE", !10, i64 0, !10, i64 1}
!14 = !{!"_ZTSN8libspirv15MutableBytecodeE", !15, i64 0, !18, i64 24}
!15 = !{!"_ZTSN8libspirv8BytecodeE", !6, i64 0, !16, i64 8, !17, i64 16}
!16 = !{!"long", !7, i64 0}
!17 = !{!"int", !7, i64 0}
!18 = !{!"_ZTSSt6vectorIN8libspirv8Bytecode6OpCodeESaIS2_EE", !19, i64 0}
!19 = !{!"_ZTSSt12_Vector_baseIN8libspirv8Bytecode6OpCodeESaIS2_EE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseIN8libspirv8Bytecode6OpCodeESaIS2_EE12_Vector_implE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseIN8libspirv8Bytecode6OpCodeESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!22 = !{!"_ZTSSt13unordered_mapIjmSt4hashIjESt8equal_toIjESaISt4pairIKjmEEE", !23, i64 0}
!23 = !{!"_ZTSSt10_HashtableIjSt4pairIKjmESaIS2_ENSt8__detail10_Select1stESt8equal_toIjESt4hashIjENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb0ELb1EEEE", !6, i64 0, !16, i64 8, !24, i64 16, !16, i64 24, !25, i64 32, !6, i64 48}
!24 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !6, i64 0}
!25 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !26, i64 0, !16, i64 8}
!26 = !{!"float", !7, i64 0}
!27 = !{!"_ZTSSt13unordered_mapIjN13MeshConverter7VaryingESt4hashIjESt8equal_toIjESaISt4pairIKjS1_EEE", !28, i64 0}
!28 = !{!"_ZTSSt10_HashtableIjSt4pairIKjN13MeshConverter7VaryingEESaIS4_ENSt8__detail10_Select1stESt8equal_toIjESt4hashIjENS6_18_Mod_range_hashingENS6_20_Default_ranged_hashENS6_20_Prime_rehash_policyENS6_17_Hashtable_traitsILb0ELb0ELb1EEEE", !6, i64 0, !16, i64 8, !24, i64 16, !16, i64 24, !25, i64 32, !6, i64 48}
!29 = !{!"_ZTSSt6vectorIjSaIjEE", !30, i64 0}
!30 = !{!"_ZTSSt12_Vector_baseIjSaIjEE", !31, i64 0}
!31 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE12_Vector_implE", !32, i64 0}
!32 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!33 = !{!17, !17, i64 0}
!34 = !{!35, !6, i64 0}
!35 = !{!"_ZTSSt16initializer_listIjE", !6, i64 0, !16, i64 8}
!36 = !{!35, !16, i64 8}
!37 = !{i64 0, i64 8, !38, i64 8, i64 8, !5}
!38 = !{!16, !16, i64 0}
!39 = !{!12, !17, i64 152}
!40 = distinct !{!40, !41}
!41 = !{!"llvm.loop.mustprogress"}
!42 = !{!7, !7, i64 0}
!43 = !{i64 0, i64 8, !5, i64 8, i64 4, !33}
!44 = !{i8 0, i8 2}
!45 = !{}
!46 = distinct !{!46, !41}
!47 = distinct !{!47, !41}
!48 = !{!12, !17, i64 140}
!49 = !{!12, !17, i64 136}
!50 = !{!12, !17, i64 132}


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

%"struct.libspirv::MutableBytecode::Iterator" = type { %"struct.libspirv::Bytecode::Iterator.base", ptr }
%"struct.libspirv::Bytecode::Iterator.base" = type <{ ptr, i32 }>
%"struct.libspirv::Bytecode::Iterator" = type <{ ptr, i32, [4 x i8] }>
%"class.std::basic_string_view" = type { i64, ptr }
%"struct.std::__detail::_Node_iterator" = type { %"struct.std::__detail::_Node_iterator_base" }
%"struct.std::__detail::_Node_iterator_base" = type { ptr }
%"struct.std::__detail::_Node_iterator.26" = type { %"struct.std::__detail::_Node_iterator_base.27" }
%"struct.std::__detail::_Node_iterator_base.27" = type { ptr }

@.str = external hidden unnamed_addr constant [19 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [12 x i8], align 1

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN13MeshConverter9emitMVertERN8libspirv15MutableBytecodeE(ptr noundef nonnull align 8 dereferenceable(425) %0, ptr noundef nonnull align 8 dereferenceable(48) %1) local_unnamed_addr #0 align 2 {
  %3 = alloca %"struct.libspirv::MutableBytecode::Iterator", align 8
  %4 = alloca %"struct.libspirv::Bytecode::Iterator", align 8
  %5 = alloca %"struct.libspirv::Bytecode::Iterator", align 8
  %6 = alloca [1 x i32], align 4
  %7 = alloca %"class.std::basic_string_view", align 8
  %8 = alloca %"class.std::basic_string_view", align 8
  %9 = alloca %"class.std::basic_string_view", align 8
  %10 = alloca %"class.std::basic_string_view", align 8
  %11 = alloca [128 x i32], align 16
  %12 = alloca i32, align 4
  %13 = alloca %"struct.std::__detail::_Node_iterator", align 8
  %14 = alloca %"struct.std::__detail::_Node_iterator", align 8
  %15 = alloca %"class.std::basic_string_view", align 8
  %16 = alloca %"class.std::basic_string_view", align 8
  %17 = alloca %"struct.libspirv::MutableBytecode::Iterator", align 8
  %18 = alloca %"class.std::basic_string_view", align 8
  %19 = alloca %"class.std::basic_string_view", align 8
  %20 = alloca %"struct.libspirv::MutableBytecode::Iterator", align 8
  %21 = alloca %"struct.libspirv::MutableBytecode::Iterator", align 8
  %22 = alloca %"struct.libspirv::Bytecode::Iterator", align 8
  %23 = alloca %"struct.libspirv::MutableBytecode::Iterator", align 8
  %24 = alloca %"struct.libspirv::MutableBytecode::Iterator", align 8
  %25 = alloca %"struct.libspirv::MutableBytecode::Iterator", align 8
  %26 = alloca %"struct.libspirv::MutableBytecode::Iterator", align 8
  %27 = alloca %"struct.libspirv::MutableBytecode::Iterator", align 8
  %28 = alloca %"struct.std::__detail::_Node_iterator", align 8
  %29 = alloca %"struct.std::__detail::_Node_iterator", align 8
  %30 = alloca %"struct.libspirv::MutableBytecode::Iterator", align 8
  %31 = alloca %"struct.libspirv::MutableBytecode::Iterator", align 8
  %32 = alloca i32, align 4
  %33 = alloca %"struct.std::__detail::_Node_iterator.26", align 8
  %34 = alloca %"struct.std::__detail::_Node_iterator.26", align 8
  %35 = alloca %"struct.std::__detail::_Node_iterator.26", align 8
  %36 = alloca %"struct.std::__detail::_Node_iterator.26", align 8
  %37 = alloca %"struct.libspirv::MutableBytecode::Iterator", align 8
  %38 = alloca %"struct.libspirv::MutableBytecode::Iterator", align 8
  %39 = alloca %"struct.libspirv::MutableBytecode::Iterator", align 8
  %40 = alloca %"struct.libspirv::MutableBytecode::Iterator", align 8
  %41 = alloca %"struct.libspirv::MutableBytecode::Iterator", align 8
  %42 = alloca [3 x i32], align 4
  %43 = alloca %"struct.libspirv::MutableBytecode::Iterator", align 8
  %44 = alloca %"class.std::basic_string_view", align 8
  %45 = alloca %"struct.libspirv::MutableBytecode::Iterator", align 8
  %46 = alloca [3 x i32], align 4
  %47 = alloca %"struct.libspirv::MutableBytecode::Iterator", align 8
  %48 = alloca %"struct.libspirv::MutableBytecode::Iterator", align 8
  %49 = alloca %"class.std::basic_string_view", align 8
  %50 = alloca %"struct.libspirv::MutableBytecode::Iterator", align 8
  %51 = alloca [3 x i32], align 4
  %52 = alloca [3 x i32], align 4
  %53 = alloca [3 x i32], align 4
  %54 = alloca [4 x i32], align 4
  %55 = alloca [2 x i32], align 4
  %56 = alloca [4 x i32], align 4
  %57 = alloca [4 x i32], align 4
  %58 = alloca [2 x i32], align 4
  %59 = alloca [4 x i32], align 4
  %60 = alloca [4 x i32], align 4
  %61 = alloca [2 x i32], align 4
  %62 = getelementptr inbounds i8, ptr %0, i64 208
  tail call void @_ZNSt13unordered_mapIjmSt4hashIjESt8equal_toIjESaISt4pairIKjmEEE5clearEv(ptr noundef nonnull align 8 dereferenceable(56) %62) #6
  %63 = getelementptr inbounds i8, ptr %0, i64 264
  tail call void @_ZNSt13unordered_mapIjmSt4hashIjESt8equal_toIjESaISt4pairIKjmEEE5clearEv(ptr noundef nonnull align 8 dereferenceable(56) %63) #6
  %64 = getelementptr inbounds i8, ptr %0, i64 8
  %65 = load ptr, ptr %64, align 8, !tbaa !5
  %66 = tail call noundef i32 @_ZNK8libspirv8Bytecode12spirvVersionEv(ptr noundef nonnull align 8 dereferenceable(20) %65)
  tail call void @_ZN8libspirv15MutableBytecode15setSpirvVersionEj(ptr noundef nonnull align 8 dereferenceable(48) %1, i32 noundef %66)
  %67 = load ptr, ptr %64, align 8, !tbaa !5
  %68 = tail call noundef i32 @_ZNK8libspirv8Bytecode5boundEv(ptr noundef nonnull align 8 dereferenceable(20) %67)
  %69 = tail call noundef i32 @_ZNK8libspirv8Bytecode5boundEv(ptr noundef nonnull align 8 dereferenceable(20) %1)
  %70 = sub i32 %68, %69
  %71 = tail call noundef i32 @_ZN8libspirv15MutableBytecode13fetchAddBoundEj(ptr noundef nonnull align 8 dereferenceable(48) %1, i32 noundef %70)
  %72 = getelementptr inbounds i8, ptr %0, i64 64
  %73 = tail call noundef i32 @_ZN8libspirv15MutableBytecode13fetchAddBoundEv(ptr noundef nonnull align 8 dereferenceable(48) %72)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %3) #6
  call void @_ZN8libspirv15MutableBytecode3endEv(ptr dead_on_unwind nonnull writable sret(%"struct.libspirv::MutableBytecode::Iterator") align 8 %3, ptr noundef nonnull align 8 dereferenceable(48) %1)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) #6
  %74 = load ptr, ptr %64, align 8, !tbaa !5
  %75 = call { ptr, i32 } @_ZNK8libspirv8Bytecode5beginEv(ptr noundef nonnull align 8 dereferenceable(20) %74)
  %.fca.0.extract185 = extractvalue { ptr, i32 } %75, 0
  %.fca.1.extract186 = extractvalue { ptr, i32 } %75, 1
  store ptr %.fca.0.extract185, ptr %4, align 8
  %.sroa.2188.0..sroa_idx = getelementptr inbounds i8, ptr %4, i64 8
  store i32 %.fca.1.extract186, ptr %.sroa.2188.0..sroa_idx, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %5) #6
  %76 = load ptr, ptr %64, align 8, !tbaa !5
  %77 = call { ptr, i32 } @_ZNK8libspirv8Bytecode3endEv(ptr noundef nonnull align 8 dereferenceable(20) %76)
  %.fca.0.extract181246 = extractvalue { ptr, i32 } %77, 0
  %.fca.1.extract182247 = extractvalue { ptr, i32 } %77, 1
  store ptr %.fca.0.extract181246, ptr %5, align 8
  %.sroa.2184.0..sroa_idx = getelementptr inbounds i8, ptr %5, i64 8
  store i32 %.fca.1.extract182247, ptr %.sroa.2184.0..sroa_idx, align 8
  %78 = call noundef zeroext i1 @_ZN8libspirvneERKNS_8Bytecode8IteratorES3_(ptr noundef nonnull align 8 dereferenceable(12) %4, ptr noundef nonnull align 8 dereferenceable(12) %5)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #6
  br i1 %78, label %.lr.ph250, label %._crit_edge251

.lr.ph250:                                        ; preds = %2
  %.sroa.299.0..sroa_idx = getelementptr inbounds i8, ptr %7, i64 8
  %79 = getelementptr inbounds i8, ptr %8, i64 8
  %.sroa.297.0..sroa_idx = getelementptr inbounds i8, ptr %9, i64 8
  %80 = getelementptr inbounds i8, ptr %10, i64 8
  %81 = getelementptr inbounds i8, ptr %0, i64 112
  %82 = getelementptr inbounds i8, ptr %0, i64 116
  %83 = getelementptr inbounds i8, ptr %0, i64 120
  %84 = getelementptr inbounds i8, ptr %0, i64 152
  %85 = getelementptr inbounds i8, ptr %0, i64 320
  %.sroa.274.0..sroa_idx = getelementptr inbounds i8, ptr %22, i64 8
  %.sroa.283.0..sroa_idx = getelementptr inbounds i8, ptr %18, i64 8
  %86 = getelementptr inbounds i8, ptr %19, i64 8
  %.sroa.289.0..sroa_idx = getelementptr inbounds i8, ptr %15, i64 8
  %87 = getelementptr inbounds i8, ptr %16, i64 8
  %88 = getelementptr inbounds i8, ptr %11, i64 4
  %89 = getelementptr inbounds i8, ptr %11, i64 8
  %90 = getelementptr inbounds i8, ptr %11, i64 12
  %91 = getelementptr inbounds i8, ptr %11, i64 16
  br label %94

._crit_edge251:                                   ; preds = %390, %2
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %37) #6
  call void @_ZN8libspirv15MutableBytecode5beginEv(ptr dead_on_unwind nonnull writable sret(%"struct.libspirv::MutableBytecode::Iterator") align 8 %37, ptr noundef nonnull align 8 dereferenceable(48) %1)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %38) #6
  call void @_ZN8libspirv15MutableBytecode3endEv(ptr dead_on_unwind nonnull writable sret(%"struct.libspirv::MutableBytecode::Iterator") align 8 %38, ptr noundef nonnull align 8 dereferenceable(48) %1)
  %92 = call noundef zeroext i1 @_ZN8libspirvneERKNS_8Bytecode8IteratorES3_(ptr noundef nonnull align 8 dereferenceable(12) %37, ptr noundef nonnull align 8 dereferenceable(12) %38)
  br i1 %92, label %.lr.ph253, label %._crit_edge254

.lr.ph253:                                        ; preds = %._crit_edge251
  %93 = getelementptr inbounds i8, ptr %0, i64 152
  br label %394

94:                                               ; preds = %.lr.ph250, %390
  %.0248 = phi i1 [ false, %.lr.ph250 ], [ %.2, %390 ]
  %95 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode8IteratordeEv(ptr noundef nonnull align 8 dereferenceable(12) %4)
  %96 = call noundef i32 @_ZNK8libspirv8Bytecode6OpCode2opEv(ptr noundef nonnull align 4 dereferenceable(4) %95)
  %97 = icmp eq i32 %96, 17
  br i1 %97, label %98, label %103

98:                                               ; preds = %94
  %99 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %95, i16 noundef zeroext 1)
  %100 = load i32, ptr %99, align 4, !tbaa !31
  %101 = icmp eq i32 %100, 5283
  br i1 %101, label %102, label %103

102:                                              ; preds = %98
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #6
  store i32 1, ptr %6, align 4, !tbaa !31
  call void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpESt16initializer_listIjE(ptr noundef nonnull align 8 dereferenceable(24) %3, i32 noundef 17, ptr nonnull %6, i64 1)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #6
  br label %390

103:                                              ; preds = %98, %94
  %104 = call noundef i32 @_ZNK8libspirv8Bytecode6OpCode2opEv(ptr noundef nonnull align 4 dereferenceable(4) %95)
  %105 = icmp eq i32 %104, 4
  br i1 %105, label %106, label %111

106:                                              ; preds = %103
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %7) #6
  %107 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %95, i16 noundef zeroext 1)
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %7, ptr noundef %107) #6
  %.sroa.098.0.copyload = load i64, ptr %7, align 8, !tbaa !32
  %.sroa.299.0.copyload = load ptr, ptr %.sroa.299.0..sroa_idx, align 8, !tbaa !33
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %8, ptr noundef @.str) #6
  %108 = load i64, ptr %8, align 8
  %109 = load ptr, ptr %79, align 8
  %110 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE(i64 %.sroa.098.0.copyload, ptr %.sroa.299.0.copyload, i64 %108, ptr %109) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #6
  br i1 %110, label %390, label %111

111:                                              ; preds = %106, %103
  %112 = call noundef i32 @_ZNK8libspirv8Bytecode6OpCode2opEv(ptr noundef nonnull align 4 dereferenceable(4) %95)
  %113 = icmp eq i32 %112, 10
  br i1 %113, label %114, label %119

114:                                              ; preds = %111
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %9) #6
  %115 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %95, i16 noundef zeroext 1)
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %9, ptr noundef %115) #6
  %.sroa.096.0.copyload = load i64, ptr %9, align 8, !tbaa !32
  %.sroa.297.0.copyload = load ptr, ptr %.sroa.297.0..sroa_idx, align 8, !tbaa !33
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %10, ptr noundef @.str.1) #6
  %116 = load i64, ptr %10, align 8
  %117 = load ptr, ptr %80, align 8
  %118 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE(i64 %.sroa.096.0.copyload, ptr %.sroa.297.0.copyload, i64 %116, ptr %117) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #6
  br i1 %118, label %390, label %119

119:                                              ; preds = %114, %111
  %120 = call noundef i32 @_ZNK8libspirv8Bytecode6OpCode2opEv(ptr noundef nonnull align 4 dereferenceable(4) %95)
  %121 = icmp eq i32 %120, 16
  br i1 %121, label %122, label %149

122:                                              ; preds = %119
  %123 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %95, i16 noundef zeroext 2)
  %124 = load i32, ptr %123, align 4, !tbaa !31
  %125 = icmp eq i32 %124, 17
  br i1 %125, label %126, label %133

126:                                              ; preds = %122
  %127 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %95, i16 noundef zeroext 3)
  %128 = load i32, ptr %127, align 4, !tbaa !31
  store i32 %128, ptr %81, align 8, !tbaa !31
  %129 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %95, i16 noundef zeroext 4)
  %130 = load i32, ptr %129, align 4, !tbaa !31
  store i32 %130, ptr %82, align 4, !tbaa !31
  %131 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %95, i16 noundef zeroext 5)
  %132 = load i32, ptr %131, align 4, !tbaa !31
  store i32 %132, ptr %83, align 8, !tbaa !31
  br label %133

133:                                              ; preds = %126, %122
  %134 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %95, i16 noundef zeroext 2)
  %135 = load i32, ptr %134, align 4, !tbaa !31
  %136 = icmp eq i32 %135, 26
  br i1 %136, label %390, label %137

137:                                              ; preds = %133
  %138 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %95, i16 noundef zeroext 2)
  %139 = load i32, ptr %138, align 4, !tbaa !31
  %140 = icmp eq i32 %139, 5270
  br i1 %140, label %390, label %141

141:                                              ; preds = %137
  %142 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %95, i16 noundef zeroext 2)
  %143 = load i32, ptr %142, align 4, !tbaa !31
  %144 = icmp eq i32 %143, 5298
  br i1 %144, label %390, label %145

145:                                              ; preds = %141
  %146 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %95, i16 noundef zeroext 2)
  %147 = load i32, ptr %146, align 4, !tbaa !31
  %148 = icmp eq i32 %147, 17
  br i1 %148, label %390, label %149

149:                                              ; preds = %145, %119
  %150 = call noundef i32 @_ZNK8libspirv8Bytecode6OpCode2opEv(ptr noundef nonnull align 4 dereferenceable(4) %95)
  %151 = icmp eq i32 %150, 15
  br i1 %151, label %152, label %178

152:                                              ; preds = %149
  call void @llvm.lifetime.start.p0(i64 512, ptr nonnull %11) #6
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(512) %11, i8 0, i64 512, i1 false)
  store i32 15, ptr %11, align 16, !tbaa !31
  %153 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %95, i16 noundef zeroext 2)
  %154 = load i32, ptr %153, align 4, !tbaa !31
  store i32 %154, ptr %89, align 8, !tbaa !31
  store i32 1852399981, ptr %90, align 4, !tbaa !31
  store i32 0, ptr %91, align 16, !tbaa !31
  %155 = call noundef zeroext i16 @_ZNK8libspirv8Bytecode6OpCode6lengthEv(ptr noundef nonnull align 4 dereferenceable(4) %95)
  %156 = icmp ugt i16 %155, 5
  br i1 %156, label %.lr.ph, label %._crit_edge

._crit_edge:                                      ; preds = %173, %152
  %.0233.lcssa = phi i32 [ 5, %152 ], [ %.1234, %173 ]
  %157 = call noundef i32 @_ZNK8libspirv8Bytecode6OpCode2opEv(ptr noundef nonnull align 4 dereferenceable(4) %95)
  %158 = add i32 %.0233.lcssa, -1
  %159 = zext i32 %158 to i64
  call void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpEPKjm(ptr noundef nonnull align 8 dereferenceable(24) %3, i32 noundef %157, ptr noundef nonnull %88, i64 noundef %159)
  call void @llvm.lifetime.end.p0(i64 512, ptr nonnull %11) #6
  br label %390

.lr.ph:                                           ; preds = %152, %173
  %.0233245 = phi i32 [ %.1234, %173 ], [ 5, %152 ]
  %.0235244 = phi i64 [ %174, %173 ], [ 5, %152 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %12) #6
  %160 = trunc nuw i64 %.0235244 to i16
  %161 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %95, i16 noundef zeroext %160)
  %162 = load i32, ptr %161, align 4, !tbaa !31
  store i32 %162, ptr %12, align 4, !tbaa !31
  %163 = load i32, ptr %84, align 8, !tbaa !34
  %164 = icmp eq i32 %162, %163
  br i1 %164, label %173, label %165

165:                                              ; preds = %.lr.ph
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #6
  %166 = call ptr @_ZNSt13unordered_mapIjN13MeshConverter7VaryingESt4hashIjESt8equal_toIjESaISt4pairIKjS1_EEE4findERS7_(ptr noundef nonnull align 8 dereferenceable(56) %85, ptr noundef nonnull align 4 dereferenceable(4) %12)
  store ptr %166, ptr %13, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #6
  %167 = call ptr @_ZNSt13unordered_mapIjN13MeshConverter7VaryingESt4hashIjESt8equal_toIjESaISt4pairIKjS1_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %85) #6
  store ptr %167, ptr %14, align 8
  %168 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseISt4pairIKjN13MeshConverter7VaryingEELb0EEES8_(ptr noundef nonnull align 8 dereferenceable(8) %13, ptr noundef nonnull align 8 dereferenceable(8) %14) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #6
  %169 = load i32, ptr %12, align 4, !tbaa !31
  %170 = zext i32 %.0233245 to i64
  %171 = getelementptr inbounds [128 x i32], ptr %11, i64 0, i64 %170
  store i32 %169, ptr %171, align 4, !tbaa !31
  %172 = add i32 %.0233245, 1
  br label %173

173:                                              ; preds = %.lr.ph, %165
  %.1234 = phi i32 [ %172, %165 ], [ %.0233245, %.lr.ph ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #6
  %174 = add nuw nsw i64 %.0235244, 1
  %175 = call noundef zeroext i16 @_ZNK8libspirv8Bytecode6OpCode6lengthEv(ptr noundef nonnull align 4 dereferenceable(4) %95)
  %176 = zext i16 %175 to i64
  %177 = icmp ult i64 %174, %176
  br i1 %177, label %.lr.ph, label %._crit_edge, !llvm.loop !35

178:                                              ; preds = %149
  %179 = call noundef i32 @_ZNK8libspirv8Bytecode6OpCode2opEv(ptr noundef nonnull align 4 dereferenceable(4) %95)
  %180 = icmp eq i32 %179, 71
  br i1 %180, label %181, label %217

181:                                              ; preds = %178
  %182 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %95, i16 noundef zeroext 2)
  %183 = load i32, ptr %182, align 4, !tbaa !31
  %184 = icmp eq i32 %183, 11
  br i1 %184, label %185, label %217

185:                                              ; preds = %181
  %186 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %95, i16 noundef zeroext 3)
  %187 = load i32, ptr %186, align 4, !tbaa !31
  %188 = icmp eq i32 %187, 5294
  br i1 %188, label %390, label %189

189:                                              ; preds = %185
  %190 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %95, i16 noundef zeroext 3)
  %191 = load i32, ptr %190, align 4, !tbaa !31
  %192 = icmp eq i32 %191, 5295
  br i1 %192, label %390, label %193

193:                                              ; preds = %189
  %194 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %95, i16 noundef zeroext 3)
  %195 = load i32, ptr %194, align 4, !tbaa !31
  %196 = icmp eq i32 %195, 5296
  br i1 %196, label %390, label %197

197:                                              ; preds = %193
  %198 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %95, i16 noundef zeroext 3)
  %199 = load i32, ptr %198, align 4, !tbaa !31
  %200 = icmp eq i32 %199, 25
  br i1 %200, label %390, label %201

201:                                              ; preds = %197
  %202 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %95, i16 noundef zeroext 3)
  %203 = load i32, ptr %202, align 4, !tbaa !31
  %204 = icmp eq i32 %203, 26
  br i1 %204, label %390, label %205

205:                                              ; preds = %201
  %206 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %95, i16 noundef zeroext 3)
  %207 = load i32, ptr %206, align 4, !tbaa !31
  %208 = icmp eq i32 %207, 27
  br i1 %208, label %390, label %209

209:                                              ; preds = %205
  %210 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %95, i16 noundef zeroext 3)
  %211 = load i32, ptr %210, align 4, !tbaa !31
  %212 = icmp eq i32 %211, 29
  br i1 %212, label %390, label %213

213:                                              ; preds = %209
  %214 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %95, i16 noundef zeroext 3)
  %215 = load i32, ptr %214, align 4, !tbaa !31
  %216 = icmp eq i32 %215, 28
  br i1 %216, label %390, label %217

217:                                              ; preds = %213, %181, %178
  %218 = call noundef i32 @_ZNK8libspirv8Bytecode6OpCode2opEv(ptr noundef nonnull align 4 dereferenceable(4) %95)
  %219 = icmp eq i32 %218, 72
  br i1 %219, label %220, label %222

220:                                              ; preds = %217
  %221 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %95, i16 noundef zeroext 3)
  br label %222

222:                                              ; preds = %220, %217
  %223 = call noundef i32 @_ZNK8libspirv8Bytecode6OpCode2opEv(ptr noundef nonnull align 4 dereferenceable(4) %95)
  %224 = icmp eq i32 %223, 5
  br i1 %224, label %225, label %248

225:                                              ; preds = %222
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %15) #6
  %226 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %95, i16 noundef zeroext 2)
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %15, ptr noundef %226) #6
  %.sroa.088.0.copyload = load i64, ptr %15, align 8, !tbaa !32
  %.sroa.289.0.copyload = load ptr, ptr %.sroa.289.0..sroa_idx, align 8, !tbaa !33
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %16, ptr noundef @.str.47) #6
  %227 = load i64, ptr %16, align 8
  %228 = load ptr, ptr %87, align 8
  %229 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE(i64 %.sroa.088.0.copyload, ptr %.sroa.289.0.copyload, i64 %227, ptr %228) #6
  br i1 %229, label %230, label %234

230:                                              ; preds = %225
  %231 = call noundef i32 @_ZNK8libspirv8Bytecode6OpCode2opEv(ptr noundef nonnull align 4 dereferenceable(4) %95)
  %232 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %95, i16 noundef zeroext 1)
  %233 = load i32, ptr %232, align 4, !tbaa !31
  call void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpEjPKc(ptr noundef nonnull align 8 dereferenceable(24) %3, i32 noundef %231, i32 noundef %233, ptr noundef nonnull @.str.48)
  br label %247

234:                                              ; preds = %225
  %235 = call noundef i64 @_ZNK8libspirv15MutableBytecode8Iterator8toOffsetEv(ptr noundef nonnull align 8 dereferenceable(24) %3)
  %236 = call noundef i32 @_ZNK8libspirv8Bytecode6OpCode2opEv(ptr noundef nonnull align 4 dereferenceable(4) %95)
  %237 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %95, i16 noundef zeroext 1)
  %238 = call noundef zeroext i16 @_ZNK8libspirv8Bytecode6OpCode6lengthEv(ptr noundef nonnull align 4 dereferenceable(4) %95)
  %239 = zext i16 %238 to i64
  %240 = add nsw i64 %239, -1
  call void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpEPKjm(ptr noundef nonnull align 8 dereferenceable(24) %3, i32 noundef %236, ptr noundef nonnull %237, i64 noundef %240)
  %241 = call noundef i64 @_ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findEPKcm(ptr noundef nonnull align 8 dereferenceable(16) %15, ptr noundef @.str.2, i64 noundef 0) #6
  %242 = icmp eq i64 %241, 0
  br i1 %242, label %243, label %247

243:                                              ; preds = %234
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %17) #6
  call void @_ZN8libspirv15MutableBytecode10fromOffsetEm(ptr dead_on_unwind nonnull writable sret(%"struct.libspirv::MutableBytecode::Iterator") align 8 %17, ptr noundef nonnull align 8 dereferenceable(48) %1, i64 noundef %235)
  %244 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode8IteratordeEv(ptr noundef nonnull align 8 dereferenceable(12) %17)
  %245 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %244, i16 noundef zeroext 2)
  %246 = load i32, ptr %245, align 4, !tbaa !31
  %.sroa.485.0.insert.insert = and i32 %246, -65281
  %.sroa.084.0.insert.insert = or disjoint i32 %.sroa.485.0.insert.insert, 12544
  call void @_ZN8libspirv15MutableBytecode8Iterator3setEtj(ptr noundef nonnull align 8 dereferenceable(24) %17, i16 noundef zeroext 2, i32 noundef %.sroa.084.0.insert.insert)
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %17) #6
  br label %247

247:                                              ; preds = %234, %243, %230
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #6
  br label %390

248:                                              ; preds = %222
  %249 = call noundef i32 @_ZNK8libspirv8Bytecode6OpCode2opEv(ptr noundef nonnull align 4 dereferenceable(4) %95)
  %250 = icmp eq i32 %249, 6
  br i1 %250, label %251, label %270

251:                                              ; preds = %248
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %18) #6
  %252 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %95, i16 noundef zeroext 3)
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %18, ptr noundef %252) #6
  %.sroa.082.0.copyload = load i64, ptr %18, align 8, !tbaa !32
  %.sroa.283.0.copyload = load ptr, ptr %.sroa.283.0..sroa_idx, align 8, !tbaa !33
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %19, ptr noundef @.str.49) #6
  %253 = load i64, ptr %19, align 8
  %254 = load ptr, ptr %86, align 8
  %255 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE(i64 %.sroa.082.0.copyload, ptr %.sroa.283.0.copyload, i64 %253, ptr %254) #6
  br i1 %255, label %269, label %256

256:                                              ; preds = %251
  %257 = call noundef i64 @_ZNK8libspirv15MutableBytecode8Iterator8toOffsetEv(ptr noundef nonnull align 8 dereferenceable(24) %3)
  %258 = call noundef i32 @_ZNK8libspirv8Bytecode6OpCode2opEv(ptr noundef nonnull align 4 dereferenceable(4) %95)
  %259 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %95, i16 noundef zeroext 1)
  %260 = call noundef zeroext i16 @_ZNK8libspirv8Bytecode6OpCode6lengthEv(ptr noundef nonnull align 4 dereferenceable(4) %95)
  %261 = zext i16 %260 to i64
  %262 = add nsw i64 %261, -1
  call void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpEPKjm(ptr noundef nonnull align 8 dereferenceable(24) %3, i32 noundef %258, ptr noundef nonnull %259, i64 noundef %262)
  %263 = call noundef i64 @_ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findEPKcm(ptr noundef nonnull align 8 dereferenceable(16) %18, ptr noundef @.str.2, i64 noundef 0) #6
  %264 = icmp eq i64 %263, 0
  br i1 %264, label %265, label %269

265:                                              ; preds = %256
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %20) #6
  call void @_ZN8libspirv15MutableBytecode10fromOffsetEm(ptr dead_on_unwind nonnull writable sret(%"struct.libspirv::MutableBytecode::Iterator") align 8 %20, ptr noundef nonnull align 8 dereferenceable(48) %1, i64 noundef %257)
  %266 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode8IteratordeEv(ptr noundef nonnull align 8 dereferenceable(12) %20)
  %267 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %266, i16 noundef zeroext 3)
  %268 = load i32, ptr %267, align 4, !tbaa !31
  %.sroa.479.0.insert.insert = and i32 %268, -65281
  %.sroa.078.0.insert.insert = or disjoint i32 %.sroa.479.0.insert.insert, 12544
  call void @_ZN8libspirv15MutableBytecode8Iterator3setEtj(ptr noundef nonnull align 8 dereferenceable(24) %20, i16 noundef zeroext 3, i32 noundef %.sroa.078.0.insert.insert)
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %20) #6
  br label %269

269:                                              ; preds = %256, %265, %251
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %18) #6
  br label %390

270:                                              ; preds = %248
  %271 = call noundef i32 @_ZNK8libspirv8Bytecode6OpCode2opEv(ptr noundef nonnull align 4 dereferenceable(4) %95)
  %272 = icmp eq i32 %271, 32
  br i1 %272, label %273, label %312

273:                                              ; preds = %270
  %274 = call noundef i64 @_ZNK8libspirv15MutableBytecode8Iterator8toOffsetEv(ptr noundef nonnull align 8 dereferenceable(24) %3)
  %275 = call noundef i32 @_ZNK8libspirv8Bytecode6OpCode2opEv(ptr noundef nonnull align 4 dereferenceable(4) %95)
  %276 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %95, i16 noundef zeroext 1)
  %277 = call noundef zeroext i16 @_ZNK8libspirv8Bytecode6OpCode6lengthEv(ptr noundef nonnull align 4 dereferenceable(4) %95)
  %278 = zext i16 %277 to i64
  %279 = add nsw i64 %278, -1
  call void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpEPKjm(ptr noundef nonnull align 8 dereferenceable(24) %3, i32 noundef %275, ptr noundef nonnull %276, i64 noundef %279)
  %280 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %95, i16 noundef zeroext 2)
  %281 = load i32, ptr %280, align 4, !tbaa !31
  %282 = icmp eq i32 %281, 3
  br i1 %282, label %283, label %302

283:                                              ; preds = %273
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %21) #6
  call void @_ZN8libspirv15MutableBytecode10fromOffsetEm(ptr dead_on_unwind nonnull writable sret(%"struct.libspirv::MutableBytecode::Iterator") align 8 %21, ptr noundef nonnull align 8 dereferenceable(48) %1, i64 noundef %274)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %22) #6
  %284 = load ptr, ptr %64, align 8, !tbaa !5
  %285 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode8IteratordeEv(ptr noundef nonnull align 8 dereferenceable(12) %21)
  %286 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %285, i16 noundef zeroext 3)
  %287 = load i32, ptr %286, align 4, !tbaa !31
  %288 = call { ptr, i32 } @_ZNK8libspirv8Bytecode10findOpTypeEj(ptr noundef nonnull align 8 dereferenceable(20) %284, i32 noundef %287)
  %.fca.0.extract71 = extractvalue { ptr, i32 } %288, 0
  %.fca.1.extract72 = extractvalue { ptr, i32 } %288, 1
  store ptr %.fca.0.extract71, ptr %22, align 8
  store i32 %.fca.1.extract72, ptr %.sroa.274.0..sroa_idx, align 8
  %289 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode8IteratordeEv(ptr noundef nonnull align 8 dereferenceable(12) %22)
  %290 = call noundef i32 @_ZNK8libspirv8Bytecode6OpCode2opEv(ptr noundef nonnull align 4 dereferenceable(4) %289)
  %291 = icmp eq i32 %290, 28
  br i1 %291, label %292, label %298

292:                                              ; preds = %283
  %293 = load ptr, ptr %64, align 8, !tbaa !5
  %294 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode8IteratordeEv(ptr noundef nonnull align 8 dereferenceable(12) %22)
  %295 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %294, i16 noundef zeroext 2)
  %296 = load i32, ptr %295, align 4, !tbaa !31
  %297 = call { ptr, i32 } @_ZNK8libspirv8Bytecode10findOpTypeEj(ptr noundef nonnull align 8 dereferenceable(20) %293, i32 noundef %296)
  %.fca.0.extract = extractvalue { ptr, i32 } %297, 0
  %.fca.1.extract = extractvalue { ptr, i32 } %297, 1
  store ptr %.fca.0.extract, ptr %22, align 8, !tbaa !33
  store i32 %.fca.1.extract, ptr %.sroa.274.0..sroa_idx, align 8, !tbaa !31
  br label %298

298:                                              ; preds = %292, %283
  call void @_ZN8libspirv15MutableBytecode8Iterator3setEtj(ptr noundef nonnull align 8 dereferenceable(24) %21, i16 noundef zeroext 2, i32 noundef 3)
  %299 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode8IteratordeEv(ptr noundef nonnull align 8 dereferenceable(12) %22)
  %300 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %299, i16 noundef zeroext 1)
  %301 = load i32, ptr %300, align 4, !tbaa !31
  call void @_ZN8libspirv15MutableBytecode8Iterator3setEtj(ptr noundef nonnull align 8 dereferenceable(24) %21, i16 noundef zeroext 3, i32 noundef %301)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %21) #6
  br label %390

302:                                              ; preds = %273
  %303 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %95, i16 noundef zeroext 2)
  %304 = load i32, ptr %303, align 4, !tbaa !31
  %305 = icmp eq i32 %304, 4
  br i1 %305, label %306, label %307

306:                                              ; preds = %302
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %23) #6
  call void @_ZN8libspirv15MutableBytecode10fromOffsetEm(ptr dead_on_unwind nonnull writable sret(%"struct.libspirv::MutableBytecode::Iterator") align 8 %23, ptr noundef nonnull align 8 dereferenceable(48) %1, i64 noundef %274)
  call void @_ZN8libspirv15MutableBytecode8Iterator3setEtj(ptr noundef nonnull align 8 dereferenceable(24) %23, i16 noundef zeroext 2, i32 noundef 6)
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %23) #6
  br label %390

307:                                              ; preds = %302
  %308 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %95, i16 noundef zeroext 2)
  %309 = load i32, ptr %308, align 4, !tbaa !31
  %310 = icmp eq i32 %309, 1
  br i1 %310, label %311, label %390

311:                                              ; preds = %307
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %24) #6
  call void @_ZN8libspirv15MutableBytecode10fromOffsetEm(ptr dead_on_unwind nonnull writable sret(%"struct.libspirv::MutableBytecode::Iterator") align 8 %24, ptr noundef nonnull align 8 dereferenceable(48) %1, i64 noundef %274)
  call void @_ZN8libspirv15MutableBytecode8Iterator3setEtj(ptr noundef nonnull align 8 dereferenceable(24) %24, i16 noundef zeroext 2, i32 noundef 6)
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %24) #6
  br label %390

312:                                              ; preds = %270
  %313 = call noundef i32 @_ZNK8libspirv8Bytecode6OpCode2opEv(ptr noundef nonnull align 4 dereferenceable(4) %95)
  %314 = icmp eq i32 %313, 59
  br i1 %314, label %315, label %335

315:                                              ; preds = %312
  %316 = call noundef i64 @_ZNK8libspirv15MutableBytecode8Iterator8toOffsetEv(ptr noundef nonnull align 8 dereferenceable(24) %3)
  %317 = call noundef i32 @_ZNK8libspirv8Bytecode6OpCode2opEv(ptr noundef nonnull align 4 dereferenceable(4) %95)
  %318 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %95, i16 noundef zeroext 1)
  %319 = call noundef zeroext i16 @_ZNK8libspirv8Bytecode6OpCode6lengthEv(ptr noundef nonnull align 4 dereferenceable(4) %95)
  %320 = zext i16 %319 to i64
  %321 = add nsw i64 %320, -1
  call void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpEPKjm(ptr noundef nonnull align 8 dereferenceable(24) %3, i32 noundef %317, ptr noundef nonnull %318, i64 noundef %321)
  %322 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %95, i16 noundef zeroext 3)
  %323 = load i32, ptr %322, align 4, !tbaa !31
  %324 = icmp eq i32 %323, 3
  br i1 %324, label %390, label %325

325:                                              ; preds = %315
  %326 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %95, i16 noundef zeroext 3)
  %327 = load i32, ptr %326, align 4, !tbaa !31
  %328 = icmp eq i32 %327, 4
  br i1 %328, label %329, label %330

329:                                              ; preds = %325
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %25) #6
  call void @_ZN8libspirv15MutableBytecode10fromOffsetEm(ptr dead_on_unwind nonnull writable sret(%"struct.libspirv::MutableBytecode::Iterator") align 8 %25, ptr noundef nonnull align 8 dereferenceable(48) %1, i64 noundef %316)
  call void @_ZN8libspirv15MutableBytecode8Iterator3setEtj(ptr noundef nonnull align 8 dereferenceable(24) %25, i16 noundef zeroext 3, i32 noundef 6)
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %25) #6
  br label %390

330:                                              ; preds = %325
  %331 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %95, i16 noundef zeroext 3)
  %332 = load i32, ptr %331, align 4, !tbaa !31
  %333 = icmp eq i32 %332, 1
  br i1 %333, label %334, label %390

334:                                              ; preds = %330
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %26) #6
  call void @_ZN8libspirv15MutableBytecode10fromOffsetEm(ptr dead_on_unwind nonnull writable sret(%"struct.libspirv::MutableBytecode::Iterator") align 8 %26, ptr noundef nonnull align 8 dereferenceable(48) %1, i64 noundef %316)
  call void @_ZN8libspirv15MutableBytecode8Iterator3setEtj(ptr noundef nonnull align 8 dereferenceable(24) %26, i16 noundef zeroext 3, i32 noundef 6)
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %26) #6
  br label %390

335:                                              ; preds = %312
  %336 = call noundef i32 @_ZNK8libspirv8Bytecode6OpCode2opEv(ptr noundef nonnull align 4 dereferenceable(4) %95)
  %337 = icmp ne i32 %336, 54
  %brmerge = select i1 %337, i1 true, i1 %.0248
  br i1 %brmerge, label %339, label %338

338:                                              ; preds = %335
  call void @_ZN13MeshConverter13emitConstantsERN8libspirv15MutableBytecodeE(ptr noundef nonnull align 8 dereferenceable(425) %0, ptr noundef nonnull align 8 dereferenceable(48) %1)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %27) #6
  call void @_ZN8libspirv15MutableBytecode3endEv(ptr dead_on_unwind nonnull writable sret(%"struct.libspirv::MutableBytecode::Iterator") align 8 %27, ptr noundef nonnull align 8 dereferenceable(48) %1)
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 dereferenceable(24) %27, i64 24, i1 false)
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %27) #6
  br label %339

339:                                              ; preds = %335, %338
  %.1 = phi i1 [ true, %338 ], [ %.0248, %335 ]
  %340 = call noundef i32 @_ZNK8libspirv8Bytecode6OpCode2opEv(ptr noundef nonnull align 4 dereferenceable(4) %95)
  %341 = icmp eq i32 %340, 5295
  br i1 %341, label %390, label %342

342:                                              ; preds = %339
  %343 = call noundef i32 @_ZNK8libspirv8Bytecode6OpCode2opEv(ptr noundef nonnull align 4 dereferenceable(4) %95)
  %344 = icmp eq i32 %343, 65
  br i1 %344, label %345, label %371

345:                                              ; preds = %342
  %346 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %95, i16 noundef zeroext 3)
  %347 = load i32, ptr %346, align 4, !tbaa !31
  %348 = load i32, ptr %84, align 8, !tbaa !34
  %349 = icmp eq i32 %347, %348
  br i1 %349, label %350, label %355

350:                                              ; preds = %345
  %351 = load ptr, ptr %64, align 8, !tbaa !5
  %352 = call noundef i64 @_ZNK8libspirv8Bytecode8toOffsetERKNS0_6OpCodeE(ptr noundef nonnull align 8 dereferenceable(20) %351, ptr noundef nonnull align 4 dereferenceable(4) %95)
  %353 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %95, i16 noundef zeroext 2)
  %354 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt13unordered_mapIjmSt4hashIjESt8equal_toIjESaISt4pairIKjmEEEixERS5_(ptr noundef nonnull align 8 dereferenceable(56) %62, ptr noundef nonnull align 4 dereferenceable(4) %353)
  store i64 %352, ptr %354, align 8, !tbaa !32
  br label %390

355:                                              ; preds = %345
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #6
  %356 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %95, i16 noundef zeroext 3)
  %357 = call ptr @_ZNSt13unordered_mapIjN13MeshConverter7VaryingESt4hashIjESt8equal_toIjESaISt4pairIKjS1_EEE4findERS7_(ptr noundef nonnull align 8 dereferenceable(56) %85, ptr noundef nonnull align 4 dereferenceable(4) %356)
  store ptr %357, ptr %28, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #6
  %358 = call ptr @_ZNSt13unordered_mapIjN13MeshConverter7VaryingESt4hashIjESt8equal_toIjESaISt4pairIKjS1_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %85) #6
  store ptr %358, ptr %29, align 8
  %359 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseISt4pairIKjN13MeshConverter7VaryingEELb0EEES8_(ptr noundef nonnull align 8 dereferenceable(8) %28, ptr noundef nonnull align 8 dereferenceable(8) %29) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #6
  br i1 %359, label %360, label %371

360:                                              ; preds = %355
  %361 = load ptr, ptr %64, align 8, !tbaa !5
  %362 = call noundef i64 @_ZNK8libspirv8Bytecode8toOffsetERKNS0_6OpCodeE(ptr noundef nonnull align 8 dereferenceable(20) %361, ptr noundef nonnull align 4 dereferenceable(4) %95)
  %363 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %95, i16 noundef zeroext 2)
  %364 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt13unordered_mapIjmSt4hashIjESt8equal_toIjESaISt4pairIKjmEEEixERS5_(ptr noundef nonnull align 8 dereferenceable(56) %63, ptr noundef nonnull align 4 dereferenceable(4) %363)
  store i64 %362, ptr %364, align 8, !tbaa !32
  %365 = call noundef i64 @_ZNK8libspirv15MutableBytecode8Iterator8toOffsetEv(ptr noundef nonnull align 8 dereferenceable(24) %3)
  %366 = call noundef i32 @_ZNK8libspirv8Bytecode6OpCode2opEv(ptr noundef nonnull align 4 dereferenceable(4) %95)
  %367 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %95, i16 noundef zeroext 1)
  %368 = call noundef zeroext i16 @_ZNK8libspirv8Bytecode6OpCode6lengthEv(ptr noundef nonnull align 4 dereferenceable(4) %95)
  %369 = zext i16 %368 to i64
  %370 = add nsw i64 %369, -1
  call void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpEPKjm(ptr noundef nonnull align 8 dereferenceable(24) %3, i32 noundef %366, ptr noundef nonnull %367, i64 noundef %370)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %30) #6
  call void @_ZN8libspirv15MutableBytecode10fromOffsetEm(ptr dead_on_unwind nonnull writable sret(%"struct.libspirv::MutableBytecode::Iterator") align 8 %30, ptr noundef nonnull align 8 dereferenceable(48) %1, i64 noundef %365)
  call void @_ZN8libspirv15MutableBytecode8Iterator5evictEj(ptr noundef nonnull align 8 dereferenceable(24) %30, i32 noundef 4)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %31) #6
  call void @_ZN8libspirv15MutableBytecode3endEv(ptr dead_on_unwind nonnull writable sret(%"struct.libspirv::MutableBytecode::Iterator") align 8 %31, ptr noundef nonnull align 8 dereferenceable(48) %1)
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 dereferenceable(24) %31, i64 24, i1 false)
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %31) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %30) #6
  br label %390

371:                                              ; preds = %355, %342
  %372 = call noundef i32 @_ZNK8libspirv8Bytecode6OpCode2opEv(ptr noundef nonnull align 4 dereferenceable(4) %95)
  %373 = icmp eq i32 %372, 62
  br i1 %373, label %374, label %384

374:                                              ; preds = %371
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %32) #6
  %375 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %95, i16 noundef zeroext 1)
  %376 = load i32, ptr %375, align 4, !tbaa !31
  store i32 %376, ptr %32, align 4, !tbaa !31
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #6
  %377 = call ptr @_ZNSt13unordered_mapIjmSt4hashIjESt8equal_toIjESaISt4pairIKjmEEE4findERS5_(ptr noundef nonnull align 8 dereferenceable(56) %62, ptr noundef nonnull align 4 dereferenceable(4) %32)
  store ptr %377, ptr %33, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %34) #6
  %378 = call ptr @_ZNSt13unordered_mapIjmSt4hashIjESt8equal_toIjESaISt4pairIKjmEEE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %62) #6
  store ptr %378, ptr %34, align 8
  %379 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseISt4pairIKjmELb0EEES6_(ptr noundef nonnull align 8 dereferenceable(8) %33, ptr noundef nonnull align 8 dereferenceable(8) %34) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #6
  br i1 %379, label %383, label %.thread

.thread:                                          ; preds = %374
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #6
  %380 = call ptr @_ZNSt13unordered_mapIjmSt4hashIjESt8equal_toIjESaISt4pairIKjmEEE4findERS5_(ptr noundef nonnull align 8 dereferenceable(56) %63, ptr noundef nonnull align 4 dereferenceable(4) %32)
  store ptr %380, ptr %35, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %36) #6
  %381 = call ptr @_ZNSt13unordered_mapIjmSt4hashIjESt8equal_toIjESaISt4pairIKjmEEE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %63) #6
  store ptr %381, ptr %36, align 8
  %382 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseISt4pairIKjmELb0EEES6_(ptr noundef nonnull align 8 dereferenceable(8) %35, ptr noundef nonnull align 8 dereferenceable(8) %36) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %32) #6
  br label %384

383:                                              ; preds = %374
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %32) #6
  br label %390

384:                                              ; preds = %.thread, %371
  %385 = call noundef i32 @_ZNK8libspirv8Bytecode6OpCode2opEv(ptr noundef nonnull align 4 dereferenceable(4) %95)
  %386 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %95, i16 noundef zeroext 1)
  %387 = call noundef zeroext i16 @_ZNK8libspirv8Bytecode6OpCode6lengthEv(ptr noundef nonnull align 4 dereferenceable(4) %95)
  %388 = zext i16 %387 to i64
  %389 = add nsw i64 %388, -1
  call void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpEPKjm(ptr noundef nonnull align 8 dereferenceable(24) %3, i32 noundef %385, ptr noundef nonnull %386, i64 noundef %389)
  br label %390

390:                                              ; preds = %383, %339, %315, %330, %334, %329, %298, %307, %311, %306, %185, %189, %193, %197, %201, %205, %209, %213, %145, %141, %137, %133, %106, %114, %384, %360, %350, %269, %247, %._crit_edge, %102
  %.2 = phi i1 [ %.0248, %102 ], [ %.0248, %._crit_edge ], [ %.0248, %247 ], [ %.0248, %269 ], [ %.1, %350 ], [ %.1, %360 ], [ %.1, %384 ], [ %.1, %383 ], [ %.0248, %114 ], [ %.0248, %106 ], [ %.0248, %133 ], [ %.0248, %137 ], [ %.0248, %141 ], [ %.0248, %145 ], [ %.0248, %213 ], [ %.0248, %209 ], [ %.0248, %205 ], [ %.0248, %201 ], [ %.0248, %197 ], [ %.0248, %193 ], [ %.0248, %189 ], [ %.0248, %185 ], [ %.0248, %306 ], [ %.0248, %311 ], [ %.0248, %307 ], [ %.0248, %298 ], [ %.0248, %329 ], [ %.0248, %334 ], [ %.0248, %330 ], [ %.0248, %315 ], [ %.1, %339 ]
  call void @_ZN8libspirv8Bytecode8IteratorppEv(ptr noundef nonnull align 8 dereferenceable(12) %4)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %5) #6
  %391 = load ptr, ptr %64, align 8, !tbaa !5
  %392 = call { ptr, i32 } @_ZNK8libspirv8Bytecode3endEv(ptr noundef nonnull align 8 dereferenceable(20) %391)
  %.fca.0.extract181 = extractvalue { ptr, i32 } %392, 0
  %.fca.1.extract182 = extractvalue { ptr, i32 } %392, 1
  store ptr %.fca.0.extract181, ptr %5, align 8
  store i32 %.fca.1.extract182, ptr %.sroa.2184.0..sroa_idx, align 8
  %393 = call noundef zeroext i1 @_ZN8libspirvneERKNS_8Bytecode8IteratorES3_(ptr noundef nonnull align 8 dereferenceable(12) %4, ptr noundef nonnull align 8 dereferenceable(12) %5)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #6
  br i1 %393, label %94, label %._crit_edge251, !llvm.loop !37

._crit_edge254:                                   ; preds = %413, %._crit_edge251
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %38) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %37) #6
  call void @_ZN8libspirv15MutableBytecode10removeNopsEv(ptr noundef nonnull align 8 dereferenceable(48) %1)
  %.not = icmp eq i32 %73, 0
  br i1 %.not, label %.critedge, label %415

394:                                              ; preds = %.lr.ph253, %413
  %395 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode8IteratordeEv(ptr noundef nonnull align 8 dereferenceable(12) %37)
  %396 = call noundef i32 @_ZNK8libspirv8Bytecode6OpCode2opEv(ptr noundef nonnull align 4 dereferenceable(4) %395)
  %397 = icmp eq i32 %396, 5
  br i1 %397, label %398, label %404

398:                                              ; preds = %394
  %399 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %395, i16 noundef zeroext 1)
  %400 = load i32, ptr %399, align 4, !tbaa !31
  %401 = load i32, ptr %93, align 8, !tbaa !34
  %402 = icmp eq i32 %400, %401
  br i1 %402, label %403, label %404

403:                                              ; preds = %398
  call void @_ZN8libspirv15MutableBytecode8Iterator8setToNopEv(ptr noundef nonnull align 8 dereferenceable(24) %37)
  br label %404

404:                                              ; preds = %403, %398, %394
  %405 = call noundef i32 @_ZNK8libspirv8Bytecode6OpCode2opEv(ptr noundef nonnull align 4 dereferenceable(4) %395)
  %406 = icmp eq i32 %405, 59
  br i1 %406, label %407, label %413

407:                                              ; preds = %404
  %408 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %395, i16 noundef zeroext 2)
  %409 = load i32, ptr %408, align 4, !tbaa !31
  %410 = load i32, ptr %93, align 8, !tbaa !34
  %411 = icmp eq i32 %409, %410
  br i1 %411, label %412, label %413

412:                                              ; preds = %407
  call void @_ZN8libspirv15MutableBytecode8Iterator8setToNopEv(ptr noundef nonnull align 8 dereferenceable(24) %37)
  br label %413

413:                                              ; preds = %412, %407, %404
  call void @_ZN8libspirv8Bytecode8IteratorppEv(ptr noundef nonnull align 8 dereferenceable(12) %37)
  %414 = call noundef zeroext i1 @_ZN8libspirvneERKNS_8Bytecode8IteratorES3_(ptr noundef nonnull align 8 dereferenceable(12) %37, ptr noundef nonnull align 8 dereferenceable(12) %38)
  br i1 %414, label %394, label %._crit_edge254, !llvm.loop !38

415:                                              ; preds = %._crit_edge254
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %39) #6
  call void @_ZN8libspirv15MutableBytecode14findSectionEndENS_8Bytecode7SectionE(ptr dead_on_unwind nonnull writable sret(%"struct.libspirv::MutableBytecode::Iterator") align 8 %39, ptr noundef nonnull align 8 dereferenceable(48) %1, i8 noundef zeroext 9)
  %416 = call noundef i32 @_ZN8libspirv15MutableBytecode9OpTypeIntERNS0_8IteratorEtb(ptr noundef nonnull align 8 dereferenceable(48) %1, ptr noundef nonnull align 8 dereferenceable(24) %39, i16 noundef zeroext 32, i1 noundef zeroext true)
  %417 = call noundef i32 @_ZN8libspirv15MutableBytecode13OpTypePointerERNS0_8IteratorEN3spv12StorageClassEj(ptr noundef nonnull align 8 dereferenceable(48) %1, ptr noundef nonnull align 8 dereferenceable(24) %39, i32 noundef 1, i32 noundef %416)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %40) #6
  call void @_ZN8libspirv15MutableBytecode14findSectionEndENS_8Bytecode7SectionE(ptr dead_on_unwind nonnull writable sret(%"struct.libspirv::MutableBytecode::Iterator") align 8 %40, ptr noundef nonnull align 8 dereferenceable(48) %1, i8 noundef zeroext 7)
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %39, ptr noundef nonnull align 8 dereferenceable(24) %40, i64 24, i1 false)
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %40) #6
  call void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpEjPKc(ptr noundef nonnull align 8 dereferenceable(24) %39, i32 noundef 5, i32 noundef %73, ptr noundef nonnull @.str.45)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %41) #6
  call void @_ZN8libspirv15MutableBytecode14findSectionEndENS_8Bytecode7SectionE(ptr dead_on_unwind nonnull writable sret(%"struct.libspirv::MutableBytecode::Iterator") align 8 %41, ptr noundef nonnull align 8 dereferenceable(48) %1, i8 noundef zeroext 8)
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %39, ptr noundef nonnull align 8 dereferenceable(24) %41, i64 24, i1 false)
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %41) #6
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %42) #6
  store i32 %73, ptr %42, align 4, !tbaa !31
  %418 = getelementptr inbounds i8, ptr %42, i64 4
  store i32 11, ptr %418, align 4, !tbaa !31
  %419 = getelementptr inbounds i8, ptr %42, i64 8
  store i32 42, ptr %419, align 4, !tbaa !31
  call void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpESt16initializer_listIjE(ptr noundef nonnull align 8 dereferenceable(24) %39, i32 noundef 71, ptr nonnull %42, i64 3)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %42) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %43) #6
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %44, ptr noundef @.str.4) #6
  %420 = load i64, ptr %44, align 8
  %421 = getelementptr inbounds i8, ptr %44, i64 8
  %422 = load ptr, ptr %421, align 8
  call void @_ZN8libspirv15MutableBytecode16findOpEntryPointEN3spv14ExecutionModelESt17basic_string_viewIcSt11char_traitsIcEE(ptr dead_on_unwind nonnull writable sret(%"struct.libspirv::MutableBytecode::Iterator") align 8 %43, ptr noundef nonnull align 8 dereferenceable(48) %1, i32 noundef 0, i64 %420, ptr %422)
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %39, ptr noundef nonnull align 8 dereferenceable(24) %43, i64 24, i1 false)
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %43) #6
  call void @_ZN8libspirv15MutableBytecode8Iterator6appendEj(ptr noundef nonnull align 8 dereferenceable(24) %39, i32 noundef %73)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %45) #6
  call void @_ZN8libspirv15MutableBytecode14findSectionEndENS_8Bytecode7SectionE(ptr dead_on_unwind nonnull writable sret(%"struct.libspirv::MutableBytecode::Iterator") align 8 %45, ptr noundef nonnull align 8 dereferenceable(48) %1, i8 noundef zeroext 9)
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %39, ptr noundef nonnull align 8 dereferenceable(24) %45, i64 24, i1 false)
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %45) #6
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %46) #6
  store i32 %417, ptr %46, align 4, !tbaa !31
  %423 = getelementptr inbounds i8, ptr %46, i64 4
  store i32 %73, ptr %423, align 4, !tbaa !31
  %424 = getelementptr inbounds i8, ptr %46, i64 8
  store i32 1, ptr %424, align 4, !tbaa !31
  call void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpESt16initializer_listIjE(ptr noundef nonnull align 8 dereferenceable(24) %39, i32 noundef 59, ptr nonnull %46, i64 3)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %46) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %39) #6
  %425 = call noundef i32 @_ZN8libspirv15MutableBytecode13fetchAddBoundEv(ptr noundef nonnull align 8 dereferenceable(48) %72)
  %426 = call noundef i32 @_ZN8libspirv15MutableBytecode13fetchAddBoundEv(ptr noundef nonnull align 8 dereferenceable(48) %72)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %47) #6
  call void @_ZN8libspirv15MutableBytecode14findSectionEndENS_8Bytecode7SectionE(ptr dead_on_unwind nonnull writable sret(%"struct.libspirv::MutableBytecode::Iterator") align 8 %47, ptr noundef nonnull align 8 dereferenceable(48) %1, i8 noundef zeroext 9)
  %427 = getelementptr inbounds i8, ptr %0, i64 112
  %428 = load i32, ptr %427, align 8, !tbaa !31
  %429 = getelementptr inbounds i8, ptr %0, i64 116
  %430 = load i32, ptr %429, align 4, !tbaa !31
  %431 = mul i32 %430, %428
  %432 = getelementptr inbounds i8, ptr %0, i64 120
  %433 = load i32, ptr %432, align 8, !tbaa !31
  %434 = mul i32 %431, %433
  %435 = call noundef i32 @_ZN8libspirv15MutableBytecode9OpTypeIntERNS0_8IteratorEtb(ptr noundef nonnull align 8 dereferenceable(48) %1, ptr noundef nonnull align 8 dereferenceable(24) %47, i16 noundef zeroext 32, i1 noundef zeroext false)
  %436 = call noundef i32 @_ZN8libspirv15MutableBytecode9OpTypeIntERNS0_8IteratorEtb(ptr noundef nonnull align 8 dereferenceable(48) %1, ptr noundef nonnull align 8 dereferenceable(24) %47, i16 noundef zeroext 32, i1 noundef zeroext true)
  %437 = call noundef i32 @_ZN8libspirv15MutableBytecode13OpTypePointerERNS0_8IteratorEN3spv12StorageClassEj(ptr noundef nonnull align 8 dereferenceable(48) %1, ptr noundef nonnull align 8 dereferenceable(24) %47, i32 noundef 6, i32 noundef %435)
  %438 = call noundef i32 @_ZN8libspirv15MutableBytecode10OpConstantERNS0_8IteratorEjj(ptr noundef nonnull align 8 dereferenceable(48) %1, ptr noundef nonnull align 8 dereferenceable(24) %47, i32 noundef %435, i32 noundef %434)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %48) #6
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %49, ptr noundef @.str.4) #6
  %439 = load i64, ptr %49, align 8
  %440 = getelementptr inbounds i8, ptr %49, i64 8
  %441 = load ptr, ptr %440, align 8
  call void @_ZN8libspirv15MutableBytecode16findOpEntryPointEN3spv14ExecutionModelESt17basic_string_viewIcSt11char_traitsIcEE(ptr dead_on_unwind nonnull writable sret(%"struct.libspirv::MutableBytecode::Iterator") align 8 %48, ptr noundef nonnull align 8 dereferenceable(48) %1, i32 noundef 0, i64 %439, ptr %441)
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %47, ptr noundef nonnull align 8 dereferenceable(24) %48, i64 24, i1 false)
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %48) #6
  %442 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode8IteratordeEv(ptr noundef nonnull align 8 dereferenceable(12) %47)
  %443 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %442, i16 noundef zeroext 2)
  %444 = load i32, ptr %443, align 4, !tbaa !31
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %50) #6
  call void @_ZN8libspirv15MutableBytecode12findFunctionEj(ptr dead_on_unwind nonnull writable sret(%"struct.libspirv::MutableBytecode::Iterator") align 8 %50, ptr noundef nonnull align 8 dereferenceable(48) %1, i32 noundef %444)
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %47, ptr noundef nonnull align 8 dereferenceable(24) %50, i64 24, i1 false)
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %50) #6
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %51) #6
  store i32 %436, ptr %51, align 4, !tbaa !31
  %445 = getelementptr inbounds i8, ptr %51, i64 4
  store i32 %425, ptr %445, align 4, !tbaa !31
  %446 = getelementptr inbounds i8, ptr %51, i64 8
  store i32 %73, ptr %446, align 4, !tbaa !31
  call void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpESt16initializer_listIjE(ptr noundef nonnull align 8 dereferenceable(24) %47, i32 noundef 61, ptr nonnull %51, i64 3)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %51) #6
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %52) #6
  store i32 %435, ptr %52, align 4, !tbaa !31
  %447 = getelementptr inbounds i8, ptr %52, i64 4
  store i32 %426, ptr %447, align 4, !tbaa !31
  %448 = getelementptr inbounds i8, ptr %52, i64 8
  store i32 %425, ptr %448, align 4, !tbaa !31
  call void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpESt16initializer_listIjE(ptr noundef nonnull align 8 dereferenceable(24) %47, i32 noundef 124, ptr nonnull %52, i64 3)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %52) #6
  %449 = getelementptr inbounds i8, ptr %0, i64 140
  %450 = load i32, ptr %449, align 4, !tbaa !39
  %.not238 = icmp eq i32 %450, 0
  br i1 %.not238, label %461, label %451

451:                                              ; preds = %415
  %452 = call noundef i32 @_ZN8libspirv15MutableBytecode13fetchAddBoundEv(ptr noundef nonnull align 8 dereferenceable(48) %72)
  %453 = call noundef i32 @_ZN8libspirv15MutableBytecode13fetchAddBoundEv(ptr noundef nonnull align 8 dereferenceable(48) %72)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %53) #6
  store i32 %437, ptr %53, align 4, !tbaa !31
  %454 = getelementptr inbounds i8, ptr %53, i64 4
  store i32 %452, ptr %454, align 4, !tbaa !31
  %455 = getelementptr inbounds i8, ptr %53, i64 8
  %456 = load i32, ptr %449, align 4, !tbaa !39
  store i32 %456, ptr %455, align 4, !tbaa !31
  call void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpESt16initializer_listIjE(ptr noundef nonnull align 8 dereferenceable(24) %47, i32 noundef 65, ptr nonnull %53, i64 3)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %53) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %54) #6
  store i32 %435, ptr %54, align 4, !tbaa !31
  %457 = getelementptr inbounds i8, ptr %54, i64 4
  store i32 %453, ptr %457, align 4, !tbaa !31
  %458 = getelementptr inbounds i8, ptr %54, i64 8
  store i32 %426, ptr %458, align 4, !tbaa !31
  %459 = getelementptr inbounds i8, ptr %54, i64 12
  store i32 %438, ptr %459, align 4, !tbaa !31
  call void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpESt16initializer_listIjE(ptr noundef nonnull align 8 dereferenceable(24) %47, i32 noundef 137, ptr nonnull %54, i64 4)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %54) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %55) #6
  store i32 %452, ptr %55, align 4, !tbaa !31
  %460 = getelementptr inbounds i8, ptr %55, i64 4
  store i32 %453, ptr %460, align 4, !tbaa !31
  call void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpESt16initializer_listIjE(ptr noundef nonnull align 8 dereferenceable(24) %47, i32 noundef 62, ptr nonnull %55, i64 2)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %55) #6
  br label %461

461:                                              ; preds = %451, %415
  %462 = getelementptr inbounds i8, ptr %0, i64 136
  %463 = load i32, ptr %462, align 8, !tbaa !40
  %.not239 = icmp eq i32 %463, 0
  br i1 %.not239, label %478, label %464

464:                                              ; preds = %461
  %465 = call noundef i32 @_ZN8libspirv15MutableBytecode13fetchAddBoundEv(ptr noundef nonnull align 8 dereferenceable(48) %72)
  %466 = call noundef i32 @_ZN8libspirv15MutableBytecode13fetchAddBoundEv(ptr noundef nonnull align 8 dereferenceable(48) %72)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %56) #6
  store i32 %437, ptr %56, align 4, !tbaa !31
  %467 = getelementptr inbounds i8, ptr %56, i64 4
  store i32 %465, ptr %467, align 4, !tbaa !31
  %468 = getelementptr inbounds i8, ptr %56, i64 8
  %469 = load i32, ptr %462, align 8, !tbaa !40
  store i32 %469, ptr %468, align 4, !tbaa !31
  %470 = getelementptr inbounds i8, ptr %56, i64 12
  %471 = getelementptr inbounds i8, ptr %0, i64 376
  %472 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %471, i64 noundef 0) #6
  %473 = load i32, ptr %472, align 4, !tbaa !31
  store i32 %473, ptr %470, align 4, !tbaa !31
  call void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpESt16initializer_listIjE(ptr noundef nonnull align 8 dereferenceable(24) %47, i32 noundef 65, ptr nonnull %56, i64 4)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %56) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %57) #6
  store i32 %435, ptr %57, align 4, !tbaa !31
  %474 = getelementptr inbounds i8, ptr %57, i64 4
  store i32 %466, ptr %474, align 4, !tbaa !31
  %475 = getelementptr inbounds i8, ptr %57, i64 8
  store i32 %426, ptr %475, align 4, !tbaa !31
  %476 = getelementptr inbounds i8, ptr %57, i64 12
  store i32 %438, ptr %476, align 4, !tbaa !31
  call void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpESt16initializer_listIjE(ptr noundef nonnull align 8 dereferenceable(24) %47, i32 noundef 137, ptr nonnull %57, i64 4)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %57) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %58) #6
  store i32 %465, ptr %58, align 4, !tbaa !31
  %477 = getelementptr inbounds i8, ptr %58, i64 4
  store i32 %466, ptr %477, align 4, !tbaa !31
  call void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpESt16initializer_listIjE(ptr noundef nonnull align 8 dereferenceable(24) %47, i32 noundef 62, ptr nonnull %58, i64 2)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %58) #6
  br label %478

478:                                              ; preds = %464, %461
  %479 = getelementptr inbounds i8, ptr %0, i64 132
  %480 = load i32, ptr %479, align 4, !tbaa !41
  %.not240 = icmp eq i32 %480, 0
  br i1 %.not240, label %495, label %481

481:                                              ; preds = %478
  %482 = call noundef i32 @_ZN8libspirv15MutableBytecode13fetchAddBoundEv(ptr noundef nonnull align 8 dereferenceable(48) %72)
  %483 = call noundef i32 @_ZN8libspirv15MutableBytecode13fetchAddBoundEv(ptr noundef nonnull align 8 dereferenceable(48) %72)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %59) #6
  store i32 %437, ptr %59, align 4, !tbaa !31
  %484 = getelementptr inbounds i8, ptr %59, i64 4
  store i32 %482, ptr %484, align 4, !tbaa !31
  %485 = getelementptr inbounds i8, ptr %59, i64 8
  %486 = load i32, ptr %479, align 4, !tbaa !41
  store i32 %486, ptr %485, align 4, !tbaa !31
  %487 = getelementptr inbounds i8, ptr %59, i64 12
  %488 = getelementptr inbounds i8, ptr %0, i64 376
  %489 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %488, i64 noundef 0) #6
  %490 = load i32, ptr %489, align 4, !tbaa !31
  store i32 %490, ptr %487, align 4, !tbaa !31
  call void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpESt16initializer_listIjE(ptr noundef nonnull align 8 dereferenceable(24) %47, i32 noundef 65, ptr nonnull %59, i64 4)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %59) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %60) #6
  store i32 %435, ptr %60, align 4, !tbaa !31
  %491 = getelementptr inbounds i8, ptr %60, i64 4
  store i32 %483, ptr %491, align 4, !tbaa !31
  %492 = getelementptr inbounds i8, ptr %60, i64 8
  store i32 %426, ptr %492, align 4, !tbaa !31
  %493 = getelementptr inbounds i8, ptr %60, i64 12
  store i32 %438, ptr %493, align 4, !tbaa !31
  call void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpESt16initializer_listIjE(ptr noundef nonnull align 8 dereferenceable(24) %47, i32 noundef 134, ptr nonnull %60, i64 4)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %60) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %61) #6
  store i32 %482, ptr %61, align 4, !tbaa !31
  %494 = getelementptr inbounds i8, ptr %61, i64 4
  store i32 %483, ptr %494, align 4, !tbaa !31
  call void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpESt16initializer_listIjE(ptr noundef nonnull align 8 dereferenceable(24) %47, i32 noundef 62, ptr nonnull %61, i64 2)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %61) #6
  br label %495

495:                                              ; preds = %481, %478
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %47) #6
  br label %.critedge

.critedge:                                        ; preds = %._crit_edge254, %495
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) #6
  ret void
}

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

declare { ptr, i32 } @_ZNK8libspirv8Bytecode5beginEv(ptr noundef nonnull align 8 dereferenceable(20)) local_unnamed_addr #2

; 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) #3

declare { ptr, i32 } @_ZNK8libspirv8Bytecode3endEv(ptr noundef nonnull align 8 dereferenceable(20)) local_unnamed_addr #2

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4), i16 noundef zeroext) local_unnamed_addr #4 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN8libspirv8Bytecode8IteratorppEv(ptr noundef nonnull align 8 dereferenceable(12)) local_unnamed_addr #4 align 2

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

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

declare void @_ZN8libspirv15MutableBytecode15setSpirvVersionEj(ptr noundef nonnull align 8 dereferenceable(48), i32 noundef) local_unnamed_addr #2

declare noundef i32 @_ZNK8libspirv8Bytecode12spirvVersionEv(ptr noundef nonnull align 8 dereferenceable(20)) local_unnamed_addr #2

declare noundef i32 @_ZN8libspirv15MutableBytecode13fetchAddBoundEj(ptr noundef nonnull align 8 dereferenceable(48), i32 noundef) local_unnamed_addr #2

declare noundef i32 @_ZNK8libspirv8Bytecode5boundEv(ptr noundef nonnull align 8 dereferenceable(20)) local_unnamed_addr #2

declare noundef i32 @_ZN8libspirv15MutableBytecode13fetchAddBoundEv(ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #2

declare void @_ZN8libspirv15MutableBytecode3endEv(ptr dead_on_unwind writable sret(%"struct.libspirv::MutableBytecode::Iterator") align 8, ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #2

declare void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpESt16initializer_listIjE(ptr noundef nonnull align 8 dereferenceable(24), i32 noundef, ptr, i64) local_unnamed_addr #2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE(i64, ptr, i64, ptr) local_unnamed_addr #4

declare noundef i64 @_ZNK8libspirv15MutableBytecode8Iterator8toOffsetEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #2

declare void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpEPKjm(ptr noundef nonnull align 8 dereferenceable(24), i32 noundef, ptr noundef, i64 noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i16 @_ZNK8libspirv8Bytecode6OpCode6lengthEv(ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #4 align 2

declare void @_ZN8libspirv15MutableBytecode10fromOffsetEm(ptr dead_on_unwind writable sret(%"struct.libspirv::MutableBytecode::Iterator") align 8, ptr noundef nonnull align 8 dereferenceable(48), i64 noundef) local_unnamed_addr #2

declare void @_ZN8libspirv15MutableBytecode8Iterator3setEtj(ptr noundef nonnull align 8 dereferenceable(24), i16 noundef zeroext, i32 noundef) local_unnamed_addr #2

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

; Function Attrs: mustprogress uwtable
declare dso_local ptr @_ZNSt13unordered_mapIjN13MeshConverter7VaryingESt4hashIjESt8equal_toIjESaISt4pairIKjS1_EEE4findERS7_(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #0 align 2

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

declare void @_ZN8libspirv15MutableBytecode8Iterator8setToNopEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN13MeshConverter13emitConstantsERN8libspirv15MutableBytecodeE(ptr noundef nonnull align 8 dereferenceable(425), ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #0 align 2

declare void @_ZN8libspirv15MutableBytecode14findSectionEndENS_8Bytecode7SectionE(ptr dead_on_unwind writable sret(%"struct.libspirv::MutableBytecode::Iterator") align 8, ptr noundef nonnull align 8 dereferenceable(48), i8 noundef zeroext) local_unnamed_addr #2

declare noundef i32 @_ZN8libspirv15MutableBytecode9OpTypeIntERNS0_8IteratorEtb(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(24), i16 noundef zeroext, i1 noundef zeroext) local_unnamed_addr #2

declare noundef i32 @_ZN8libspirv15MutableBytecode13OpTypePointerERNS0_8IteratorEN3spv12StorageClassEj(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(24), i32 noundef, i32 noundef) local_unnamed_addr #2

declare noundef i64 @_ZNK8libspirv8Bytecode8toOffsetERKNS0_6OpCodeE(ptr noundef nonnull align 8 dereferenceable(20), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt13unordered_mapIjmSt4hashIjESt8equal_toIjESaISt4pairIKjmEEEixERS5_(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local ptr @_ZNSt13unordered_mapIjmSt4hashIjESt8equal_toIjESaISt4pairIKjmEEE4findERS5_(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #0 align 2

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

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

declare void @_ZN8libspirv15MutableBytecode5beginEv(ptr dead_on_unwind writable sret(%"struct.libspirv::MutableBytecode::Iterator") align 8, ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #2

declare void @_ZN8libspirv15MutableBytecode10removeNopsEv(ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #2

declare void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpEjPKc(ptr noundef nonnull align 8 dereferenceable(24), i32 noundef, i32 noundef, ptr noundef) local_unnamed_addr #2

declare void @_ZN8libspirv15MutableBytecode16findOpEntryPointEN3spv14ExecutionModelESt17basic_string_viewIcSt11char_traitsIcEE(ptr dead_on_unwind writable sret(%"struct.libspirv::MutableBytecode::Iterator") align 8, ptr noundef nonnull align 8 dereferenceable(48), i32 noundef, i64, ptr) local_unnamed_addr #2

declare void @_ZN8libspirv15MutableBytecode8Iterator6appendEj(ptr noundef nonnull align 8 dereferenceable(24), i32 noundef) local_unnamed_addr #2

declare noundef i32 @_ZN8libspirv15MutableBytecode10OpConstantERNS0_8IteratorEjj(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(24), i32 noundef, i32 noundef) local_unnamed_addr #2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt13unordered_mapIjmSt4hashIjESt8equal_toIjESaISt4pairIKjmEEE5clearEv(ptr noundef nonnull align 8 dereferenceable(56)) local_unnamed_addr #4 align 2

declare { ptr, i32 } @_ZNK8libspirv8Bytecode10findOpTypeEj(ptr noundef nonnull align 8 dereferenceable(20), i32 noundef) local_unnamed_addr #2

declare void @_ZN8libspirv15MutableBytecode8Iterator5evictEj(ptr noundef nonnull align 8 dereferenceable(24), i32 noundef) local_unnamed_addr #2

declare void @_ZN8libspirv15MutableBytecode12findFunctionEj(ptr dead_on_unwind writable sret(%"struct.libspirv::MutableBytecode::Iterator") align 8, ptr noundef nonnull align 8 dereferenceable(48), i32 noundef) local_unnamed_addr #2

attributes #0 = { 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 #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "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 nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #6 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !11, i64 8}
!6 = !{!"_ZTS13MeshConverter", !7, i64 0, !11, i64 8, !12, i64 16, !12, i64 64, !9, i64 112, !15, i64 124, !15, i64 128, !15, i64 132, !15, i64 136, !15, i64 140, !15, i64 144, !15, i64 148, !15, i64 152, !15, i64 156, !15, i64 160, !15, i64 164, !15, i64 168, !15, i64 172, !15, i64 176, !15, i64 180, !15, i64 184, !15, i64 188, !15, i64 192, !15, i64 196, !15, i64 200, !20, i64 208, !20, i64 264, !25, i64 320, !27, i64 376, !15, i64 400, !15, i64 404, !15, i64 408, !15, i64 412, !15, i64 416, !15, i64 420, !8, i64 424}
!7 = !{!"_ZTSN13MeshConverter7OptionsE", !8, i64 0, !8, i64 1}
!8 = !{!"bool", !9, i64 0}
!9 = !{!"omnipotent char", !10, i64 0}
!10 = !{!"Simple C++ TBAA"}
!11 = !{!"any pointer", !9, i64 0}
!12 = !{!"_ZTSN8libspirv15MutableBytecodeE", !13, i64 0, !16, i64 24}
!13 = !{!"_ZTSN8libspirv8BytecodeE", !11, i64 0, !14, i64 8, !15, i64 16}
!14 = !{!"long", !9, i64 0}
!15 = !{!"int", !9, i64 0}
!16 = !{!"_ZTSSt6vectorIN8libspirv8Bytecode6OpCodeESaIS2_EE", !17, i64 0}
!17 = !{!"_ZTSSt12_Vector_baseIN8libspirv8Bytecode6OpCodeESaIS2_EE", !18, i64 0}
!18 = !{!"_ZTSNSt12_Vector_baseIN8libspirv8Bytecode6OpCodeESaIS2_EE12_Vector_implE", !19, i64 0}
!19 = !{!"_ZTSNSt12_Vector_baseIN8libspirv8Bytecode6OpCodeESaIS2_EE17_Vector_impl_dataE", !11, i64 0, !11, i64 8, !11, i64 16}
!20 = !{!"_ZTSSt13unordered_mapIjmSt4hashIjESt8equal_toIjESaISt4pairIKjmEEE", !21, i64 0}
!21 = !{!"_ZTSSt10_HashtableIjSt4pairIKjmESaIS2_ENSt8__detail10_Select1stESt8equal_toIjESt4hashIjENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb0ELb1EEEE", !11, i64 0, !14, i64 8, !22, i64 16, !14, i64 24, !23, i64 32, !11, i64 48}
!22 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !11, i64 0}
!23 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !24, i64 0, !14, i64 8}
!24 = !{!"float", !9, i64 0}
!25 = !{!"_ZTSSt13unordered_mapIjN13MeshConverter7VaryingESt4hashIjESt8equal_toIjESaISt4pairIKjS1_EEE", !26, i64 0}
!26 = !{!"_ZTSSt10_HashtableIjSt4pairIKjN13MeshConverter7VaryingEESaIS4_ENSt8__detail10_Select1stESt8equal_toIjESt4hashIjENS6_18_Mod_range_hashingENS6_20_Default_ranged_hashENS6_20_Prime_rehash_policyENS6_17_Hashtable_traitsILb0ELb0ELb1EEEE", !11, i64 0, !14, i64 8, !22, i64 16, !14, i64 24, !23, i64 32, !11, i64 48}
!27 = !{!"_ZTSSt6vectorIjSaIjEE", !28, i64 0}
!28 = !{!"_ZTSSt12_Vector_baseIjSaIjEE", !29, i64 0}
!29 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE12_Vector_implE", !30, i64 0}
!30 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE17_Vector_impl_dataE", !11, i64 0, !11, i64 8, !11, i64 16}
!31 = !{!15, !15, i64 0}
!32 = !{!14, !14, i64 0}
!33 = !{!11, !11, i64 0}
!34 = !{!6, !15, i64 152}
!35 = distinct !{!35, !36}
!36 = !{!"llvm.loop.mustprogress"}
!37 = distinct !{!37, !36}
!38 = distinct !{!38, !36}
!39 = !{!6, !15, i64 140}
!40 = !{!6, !15, i64 136}
!41 = !{!6, !15, i64 132}


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