; 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 }>
%"class.std::initializer_list" = type { ptr, i64 }
%"class.std::unordered_map.38" = type { %"class.std::_Hashtable.39" }
%"class.std::_Hashtable.39" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.std::__detail::_Hash_node_base" = type { ptr }
%"struct.std::__detail::_Prime_rehash_policy" = type { float, i64 }
%"struct.std::__detail::_Node_iterator" = type { %"struct.std::__detail::_Node_iterator_base" }
%"struct.std::__detail::_Node_iterator_base" = type { ptr }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%class.anon.52 = type { ptr, ptr, ptr, ptr }
%"class.std::basic_string_view" = type { i64, ptr }
%class.anon.53 = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%"struct.libspirv::Bytecode::Iterator" = type <{ ptr, i32, [4 x i8] }>
%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 }
%"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 }
%"struct.std::pair" = type { i32, %"struct.MeshConverter::Varying" }
%"struct.MeshConverter::Varying" = type { i32, i32, i32, i32 }

@.str.4 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [5 x i8], align 1

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN13MeshConverter8emitVertERN8libspirv15MutableBytecodeE(ptr noundef nonnull align 8 dereferenceable(425) %0, ptr noundef nonnull align 8 dereferenceable(48) %1) #0 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca i32, align 4
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca %"struct.libspirv::MutableBytecode::Iterator", align 8
  %25 = alloca %"class.std::initializer_list", align 8
  %26 = alloca [1 x i32], align 4
  %27 = alloca %"class.std::initializer_list", align 8
  %28 = alloca [2 x i32], align 4
  %29 = alloca %"class.std::initializer_list", align 8
  %30 = alloca [6 x i32], align 4
  %31 = alloca %"class.std::initializer_list", align 8
  %32 = alloca [2 x i32], align 4
  %33 = alloca %"class.std::initializer_list", align 8
  %34 = alloca [3 x i32], align 4
  %35 = alloca %"class.std::initializer_list", align 8
  %36 = alloca [3 x i32], align 4
  %37 = alloca %"class.std::initializer_list", align 8
  %38 = alloca [3 x i32], align 4
  %39 = alloca %"class.std::initializer_list", align 8
  %40 = alloca [3 x i32], align 4
  %41 = alloca %"class.std::initializer_list", align 8
  %42 = alloca [2 x i32], align 4
  %43 = alloca %"class.std::initializer_list", align 8
  %44 = alloca [4 x i32], align 4
  %45 = alloca %"class.std::initializer_list", align 8
  %46 = alloca [4 x i32], align 4
  %47 = alloca %"class.std::initializer_list", align 8
  %48 = alloca [3 x i32], align 4
  %49 = alloca %"class.std::initializer_list", align 8
  %50 = alloca [3 x i32], align 4
  %51 = alloca %"class.std::initializer_list", align 8
  %52 = alloca [1 x i32], align 4
  %53 = alloca %"class.std::initializer_list", align 8
  %54 = alloca [1 x i32], align 4
  %55 = alloca %"class.std::initializer_list", align 8
  %56 = alloca [3 x i32], align 4
  %57 = alloca %"class.std::initializer_list", align 8
  %58 = alloca [3 x i32], align 4
  %59 = alloca %"class.std::initializer_list", align 8
  %60 = alloca [2 x i32], align 4
  %61 = alloca %"class.std::initializer_list", align 8
  %62 = alloca [2 x i32], align 4
  %63 = alloca %"class.std::initializer_list", align 8
  %64 = alloca [2 x i32], align 4
  %65 = alloca %"class.std::initializer_list", align 8
  %66 = alloca [3 x i32], align 4
  %67 = alloca %"class.std::initializer_list", align 8
  %68 = alloca [3 x i32], align 4
  %69 = alloca %"class.std::initializer_list", align 8
  %70 = alloca [3 x i32], align 4
  %71 = alloca %"class.std::initializer_list", align 8
  %72 = alloca [3 x i32], align 4
  %73 = alloca %"class.std::unordered_map.38", align 8
  %74 = alloca ptr, align 8
  %75 = alloca %"struct.std::__detail::_Node_iterator", align 8
  %76 = alloca %"struct.std::__detail::_Node_iterator", align 8
  %77 = alloca ptr, align 8
  %78 = alloca %"class.std::function", align 8
  %79 = alloca %class.anon.52, align 8
  %80 = alloca ptr, align 8
  %81 = alloca i32, align 4
  %82 = alloca %"class.std::initializer_list", align 8
  %83 = alloca [3 x i32], align 4
  %84 = alloca %"class.std::initializer_list", align 8
  %85 = alloca [3 x i32], align 4
  %86 = alloca %"class.std::initializer_list", align 8
  %87 = alloca [3 x i32], align 4
  %88 = alloca %"class.std::initializer_list", align 8
  %89 = alloca [3 x i32], align 4
  %90 = alloca ptr, align 8
  %91 = alloca %"struct.std::__detail::_Node_iterator", align 8
  %92 = alloca %"struct.std::__detail::_Node_iterator", align 8
  %93 = alloca ptr, align 8
  %94 = alloca i32, align 4
  %95 = alloca i32, align 4
  %96 = alloca i32, align 4
  %97 = alloca %"class.std::initializer_list", align 8
  %98 = alloca [3 x i32], align 4
  %99 = alloca %"struct.libspirv::MutableBytecode::Iterator", align 8
  %100 = alloca %"class.std::basic_string_view", align 8
  %101 = alloca ptr, align 8
  %102 = alloca %"struct.std::__detail::_Node_iterator", align 8
  %103 = alloca %"struct.std::__detail::_Node_iterator", align 8
  %104 = alloca ptr, align 8
  %105 = alloca %"struct.libspirv::MutableBytecode::Iterator", align 8
  %106 = alloca %"struct.libspirv::MutableBytecode::Iterator", align 8
  %107 = alloca %"class.std::initializer_list", align 8
  %108 = alloca [4 x i32], align 4
  %109 = alloca %"class.std::initializer_list", align 8
  %110 = alloca [1 x i32], align 4
  %111 = alloca %"class.std::initializer_list", align 8
  %112 = alloca [3 x i32], align 4
  %113 = alloca i32, align 4
  %114 = alloca ptr, align 8
  %115 = alloca %"struct.std::__detail::_Node_iterator", align 8
  %116 = alloca %"struct.std::__detail::_Node_iterator", align 8
  %117 = alloca ptr, align 8
  %118 = alloca i32, align 4
  %119 = alloca i32, align 4
  %120 = alloca %"class.std::function", align 8
  %121 = alloca %class.anon.53, align 8
  %122 = alloca %"class.std::initializer_list", align 8
  %123 = alloca %"class.std::initializer_list", align 8
  %124 = alloca %"struct.libspirv::MutableBytecode::Iterator", align 8
  %125 = alloca ptr, align 8
  %126 = alloca %"struct.std::__detail::_Node_iterator", align 8
  %127 = alloca %"struct.std::__detail::_Node_iterator", align 8
  %128 = alloca i32, align 4
  %129 = alloca ptr, align 8
  %130 = alloca i32, align 4
  %131 = alloca i32, align 4
  %132 = alloca %"class.std::initializer_list", align 8
  %133 = alloca [3 x i32], align 4
  %134 = alloca %"class.std::initializer_list", align 8
  %135 = alloca [2 x i32], align 4
  %136 = alloca ptr, align 8
  %137 = alloca %"struct.libspirv::Bytecode::Iterator", align 8
  %138 = alloca { ptr, i32 }, align 8
  %139 = alloca %"struct.libspirv::Bytecode::Iterator", align 8
  %140 = alloca { ptr, i32 }, align 8
  %141 = alloca ptr, align 8
  %142 = alloca %"class.std::initializer_list", align 8
  %143 = alloca [4 x i32], align 4
  %144 = alloca %"struct.libspirv::MutableBytecode::Iterator", align 8
  %145 = alloca ptr, align 8
  %146 = alloca %"struct.libspirv::Bytecode::Iterator", align 8
  %147 = alloca { ptr, i32 }, align 8
  %148 = alloca %"struct.libspirv::Bytecode::Iterator", align 8
  %149 = alloca { ptr, i32 }, align 8
  %150 = alloca ptr, align 8
  %151 = alloca i64, align 8
  %152 = alloca %"struct.libspirv::MutableBytecode::Iterator", align 8
  store ptr %0, ptr %3, align 8, !tbaa !5
  store ptr %1, ptr %4, align 8, !tbaa !5
  %153 = load ptr, ptr %3, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr %5) #6
  %154 = load ptr, ptr %4, align 8, !tbaa !5
  %155 = call noundef i32 @_ZN8libspirv15MutableBytecode13fetchAddBoundEv(ptr noundef nonnull align 8 dereferenceable(48) %154)
  store i32 %155, ptr %5, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #6
  %156 = load ptr, ptr %4, align 8, !tbaa !5
  %157 = call noundef i32 @_ZN8libspirv15MutableBytecode13fetchAddBoundEv(ptr noundef nonnull align 8 dereferenceable(48) %156)
  store i32 %157, ptr %6, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #6
  %158 = load ptr, ptr %4, align 8, !tbaa !5
  %159 = call noundef i32 @_ZN8libspirv15MutableBytecode13fetchAddBoundEv(ptr noundef nonnull align 8 dereferenceable(48) %158)
  store i32 %159, ptr %7, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #6
  %160 = load ptr, ptr %4, align 8, !tbaa !5
  %161 = call noundef i32 @_ZN8libspirv15MutableBytecode13fetchAddBoundEv(ptr noundef nonnull align 8 dereferenceable(48) %160)
  store i32 %161, ptr %8, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #6
  %162 = load ptr, ptr %4, align 8, !tbaa !5
  %163 = call noundef i32 @_ZN8libspirv15MutableBytecode13fetchAddBoundEv(ptr noundef nonnull align 8 dereferenceable(48) %162)
  store i32 %163, ptr %9, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #6
  %164 = load ptr, ptr %4, align 8, !tbaa !5
  %165 = call noundef i32 @_ZN8libspirv15MutableBytecode13fetchAddBoundEv(ptr noundef nonnull align 8 dereferenceable(48) %164)
  store i32 %165, ptr %10, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #6
  %166 = load ptr, ptr %4, align 8, !tbaa !5
  %167 = call noundef i32 @_ZN8libspirv15MutableBytecode13fetchAddBoundEv(ptr noundef nonnull align 8 dereferenceable(48) %166)
  store i32 %167, ptr %11, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #6
  %168 = load ptr, ptr %4, align 8, !tbaa !5
  %169 = call noundef i32 @_ZN8libspirv15MutableBytecode13fetchAddBoundEv(ptr noundef nonnull align 8 dereferenceable(48) %168)
  store i32 %169, ptr %12, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #6
  %170 = load ptr, ptr %4, align 8, !tbaa !5
  %171 = call noundef i32 @_ZN8libspirv15MutableBytecode13fetchAddBoundEv(ptr noundef nonnull align 8 dereferenceable(48) %170)
  store i32 %171, ptr %13, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #6
  %172 = load ptr, ptr %4, align 8, !tbaa !5
  %173 = call noundef i32 @_ZN8libspirv15MutableBytecode13fetchAddBoundEv(ptr noundef nonnull align 8 dereferenceable(48) %172)
  store i32 %173, ptr %14, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #6
  %174 = load ptr, ptr %4, align 8, !tbaa !5
  %175 = call noundef i32 @_ZN8libspirv15MutableBytecode13fetchAddBoundEv(ptr noundef nonnull align 8 dereferenceable(48) %174)
  store i32 %175, ptr %15, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #6
  %176 = load ptr, ptr %4, align 8, !tbaa !5
  %177 = call noundef i32 @_ZN8libspirv15MutableBytecode13fetchAddBoundEv(ptr noundef nonnull align 8 dereferenceable(48) %176)
  store i32 %177, ptr %16, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #6
  %178 = load ptr, ptr %4, align 8, !tbaa !5
  %179 = call noundef i32 @_ZN8libspirv15MutableBytecode13fetchAddBoundEv(ptr noundef nonnull align 8 dereferenceable(48) %178)
  store i32 %179, ptr %17, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #6
  %180 = load ptr, ptr %4, align 8, !tbaa !5
  %181 = call noundef i32 @_ZN8libspirv15MutableBytecode13fetchAddBoundEv(ptr noundef nonnull align 8 dereferenceable(48) %180)
  store i32 %181, ptr %18, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #6
  %182 = load ptr, ptr %4, align 8, !tbaa !5
  %183 = call noundef i32 @_ZN8libspirv15MutableBytecode13fetchAddBoundEv(ptr noundef nonnull align 8 dereferenceable(48) %182)
  store i32 %183, ptr %19, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #6
  %184 = load ptr, ptr %4, align 8, !tbaa !5
  %185 = call noundef i32 @_ZN8libspirv15MutableBytecode13fetchAddBoundEv(ptr noundef nonnull align 8 dereferenceable(48) %184)
  store i32 %185, ptr %20, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #6
  %186 = load ptr, ptr %4, align 8, !tbaa !5
  %187 = call noundef i32 @_ZN8libspirv15MutableBytecode13fetchAddBoundEv(ptr noundef nonnull align 8 dereferenceable(48) %186)
  store i32 %187, ptr %21, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #6
  %188 = load ptr, ptr %4, align 8, !tbaa !5
  %189 = call noundef i32 @_ZN8libspirv15MutableBytecode13fetchAddBoundEv(ptr noundef nonnull align 8 dereferenceable(48) %188)
  store i32 %189, ptr %22, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #6
  %190 = load ptr, ptr %4, align 8, !tbaa !5
  %191 = call noundef i32 @_ZN8libspirv15MutableBytecode13fetchAddBoundEv(ptr noundef nonnull align 8 dereferenceable(48) %190)
  store i32 %191, ptr %23, align 4, !tbaa !9
  %192 = load ptr, ptr %4, align 8, !tbaa !5
  %193 = getelementptr inbounds %class.MeshConverter, ptr %153, i32 0, i32 2
  %194 = load ptr, ptr %193, align 8, !tbaa !11
  %195 = call noundef i32 @_ZNK8libspirv8Bytecode12spirvVersionEv(ptr noundef nonnull align 8 dereferenceable(20) %194)
  call void @_ZN8libspirv15MutableBytecode15setSpirvVersionEj(ptr noundef nonnull align 8 dereferenceable(48) %192, i32 noundef %195)
  call void @llvm.lifetime.start.p0(i64 24, ptr %24) #6
  %196 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN8libspirv15MutableBytecode3endEv(ptr dead_on_unwind writable sret(%"struct.libspirv::MutableBytecode::Iterator") align 8 %24, ptr noundef nonnull align 8 dereferenceable(48) %196)
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #6
  store i32 1, ptr %26, align 4, !tbaa !9
  %197 = getelementptr inbounds %"class.std::initializer_list", ptr %25, i32 0, i32 0
  store ptr %26, ptr %197, align 8, !tbaa !33
  %198 = getelementptr inbounds %"class.std::initializer_list", ptr %25, i32 0, i32 1
  store i64 1, ptr %198, align 8, !tbaa !35
  %199 = getelementptr inbounds { ptr, i64 }, ptr %25, i32 0, i32 0
  %200 = load ptr, ptr %199, align 8
  %201 = getelementptr inbounds { ptr, i64 }, ptr %25, i32 0, i32 1
  %202 = load i64, ptr %201, align 8
  call void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpESt16initializer_listIjE(ptr noundef nonnull align 8 dereferenceable(24) %24, i32 noundef 17, ptr %200, i64 %202)
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #6
  %203 = load i32, ptr %5, align 4, !tbaa !9
  call void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpEjPKc(ptr noundef nonnull align 8 dereferenceable(24) %24, i32 noundef 11, i32 noundef %203, ptr noundef @.str.44)
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #6
  store i32 0, ptr %28, align 4, !tbaa !9
  %204 = getelementptr inbounds i32, ptr %28, i64 1
  store i32 1, ptr %204, align 4, !tbaa !9
  %205 = getelementptr inbounds %"class.std::initializer_list", ptr %27, i32 0, i32 0
  store ptr %28, ptr %205, align 8, !tbaa !33
  %206 = getelementptr inbounds %"class.std::initializer_list", ptr %27, i32 0, i32 1
  store i64 2, ptr %206, align 8, !tbaa !35
  %207 = getelementptr inbounds { ptr, i64 }, ptr %27, i32 0, i32 0
  %208 = load ptr, ptr %207, align 8
  %209 = getelementptr inbounds { ptr, i64 }, ptr %27, i32 0, i32 1
  %210 = load i64, ptr %209, align 8
  call void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpESt16initializer_listIjE(ptr noundef nonnull align 8 dereferenceable(24) %24, i32 noundef 14, ptr %208, i64 %210)
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr %30) #6
  store i32 0, ptr %30, align 4, !tbaa !9
  %211 = getelementptr inbounds i32, ptr %30, i64 1
  %212 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %212, ptr %211, align 4, !tbaa !9
  %213 = getelementptr inbounds i32, ptr %30, i64 2
  store i32 1852399981, ptr %213, align 4, !tbaa !9
  %214 = getelementptr inbounds i32, ptr %30, i64 3
  store i32 0, ptr %214, align 4, !tbaa !9
  %215 = getelementptr inbounds i32, ptr %30, i64 4
  %216 = load i32, ptr %9, align 4, !tbaa !9
  store i32 %216, ptr %215, align 4, !tbaa !9
  %217 = getelementptr inbounds i32, ptr %30, i64 5
  %218 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %218, ptr %217, align 4, !tbaa !9
  %219 = getelementptr inbounds %"class.std::initializer_list", ptr %29, i32 0, i32 0
  store ptr %30, ptr %219, align 8, !tbaa !33
  %220 = getelementptr inbounds %"class.std::initializer_list", ptr %29, i32 0, i32 1
  store i64 6, ptr %220, align 8, !tbaa !35
  %221 = getelementptr inbounds { ptr, i64 }, ptr %29, i32 0, i32 0
  %222 = load ptr, ptr %221, align 8
  %223 = getelementptr inbounds { ptr, i64 }, ptr %29, i32 0, i32 1
  %224 = load i64, ptr %223, align 8
  call void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpESt16initializer_listIjE(ptr noundef nonnull align 8 dereferenceable(24) %24, i32 noundef 15, ptr %222, i64 %224)
  call void @llvm.lifetime.end.p0(i64 24, ptr %30) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #6
  store i32 2, ptr %32, align 4, !tbaa !9
  %225 = getelementptr inbounds i32, ptr %32, i64 1
  store i32 450, ptr %225, align 4, !tbaa !9
  %226 = getelementptr inbounds %"class.std::initializer_list", ptr %31, i32 0, i32 0
  store ptr %32, ptr %226, align 8, !tbaa !33
  %227 = getelementptr inbounds %"class.std::initializer_list", ptr %31, i32 0, i32 1
  store i64 2, ptr %227, align 8, !tbaa !35
  %228 = getelementptr inbounds { ptr, i64 }, ptr %31, i32 0, i32 0
  %229 = load ptr, ptr %228, align 8
  %230 = getelementptr inbounds { ptr, i64 }, ptr %31, i32 0, i32 1
  %231 = load i64, ptr %230, align 8
  call void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpESt16initializer_listIjE(ptr noundef nonnull align 8 dereferenceable(24) %24, i32 noundef 3, ptr %229, i64 %231)
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #6
  %232 = load i32, ptr %9, align 4, !tbaa !9
  call void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpEjPKc(ptr noundef nonnull align 8 dereferenceable(24) %24, i32 noundef 5, i32 noundef %232, ptr noundef @.str.45)
  %233 = load i32, ptr %22, align 4, !tbaa !9
  call void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpEjPKc(ptr noundef nonnull align 8 dereferenceable(24) %24, i32 noundef 5, i32 noundef %233, ptr noundef @.str.31)
  %234 = load i32, ptr %22, align 4, !tbaa !9
  call void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpEjjPKc(ptr noundef nonnull align 8 dereferenceable(24) %24, i32 noundef 6, i32 noundef %234, i32 noundef 0, ptr noundef @.str.32)
  %235 = load i32, ptr %22, align 4, !tbaa !9
  call void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpEjjPKc(ptr noundef nonnull align 8 dereferenceable(24) %24, i32 noundef 6, i32 noundef %235, i32 noundef 1, ptr noundef @.str.46)
  call void @llvm.lifetime.start.p0(i64 12, ptr %34) #6
  %236 = load i32, ptr %9, align 4, !tbaa !9
  store i32 %236, ptr %34, align 4, !tbaa !9
  %237 = getelementptr inbounds i32, ptr %34, i64 1
  store i32 11, ptr %237, align 4, !tbaa !9
  %238 = getelementptr inbounds i32, ptr %34, i64 2
  store i32 42, ptr %238, align 4, !tbaa !9
  %239 = getelementptr inbounds %"class.std::initializer_list", ptr %33, i32 0, i32 0
  store ptr %34, ptr %239, align 8, !tbaa !33
  %240 = getelementptr inbounds %"class.std::initializer_list", ptr %33, i32 0, i32 1
  store i64 3, ptr %240, align 8, !tbaa !35
  %241 = getelementptr inbounds { ptr, i64 }, ptr %33, i32 0, i32 0
  %242 = load ptr, ptr %241, align 8
  %243 = getelementptr inbounds { ptr, i64 }, ptr %33, i32 0, i32 1
  %244 = load i64, ptr %243, align 8
  call void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpESt16initializer_listIjE(ptr noundef nonnull align 8 dereferenceable(24) %24, i32 noundef 71, ptr %242, i64 %244)
  call void @llvm.lifetime.end.p0(i64 12, ptr %34) #6
  call void @llvm.lifetime.start.p0(i64 12, ptr %36) #6
  %245 = load i32, ptr %16, align 4, !tbaa !9
  store i32 %245, ptr %36, align 4, !tbaa !9
  %246 = getelementptr inbounds i32, ptr %36, i64 1
  store i32 6, ptr %246, align 4, !tbaa !9
  %247 = getelementptr inbounds i32, ptr %36, i64 2
  store i32 4, ptr %247, align 4, !tbaa !9
  %248 = getelementptr inbounds %"class.std::initializer_list", ptr %35, i32 0, i32 0
  store ptr %36, ptr %248, align 8, !tbaa !33
  %249 = getelementptr inbounds %"class.std::initializer_list", ptr %35, i32 0, i32 1
  store i64 3, ptr %249, align 8, !tbaa !35
  %250 = getelementptr inbounds { ptr, i64 }, ptr %35, i32 0, i32 0
  %251 = load ptr, ptr %250, align 8
  %252 = getelementptr inbounds { ptr, i64 }, ptr %35, i32 0, i32 1
  %253 = load i64, ptr %252, align 8
  call void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpESt16initializer_listIjE(ptr noundef nonnull align 8 dereferenceable(24) %24, i32 noundef 71, ptr %251, i64 %253)
  call void @llvm.lifetime.end.p0(i64 12, ptr %36) #6
  call void @llvm.lifetime.start.p0(i64 12, ptr %38) #6
  %254 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %254, ptr %38, align 4, !tbaa !9
  %255 = getelementptr inbounds i32, ptr %38, i64 1
  store i32 34, ptr %255, align 4, !tbaa !9
  %256 = getelementptr inbounds i32, ptr %38, i64 2
  store i32 1, ptr %256, align 4, !tbaa !9
  %257 = getelementptr inbounds %"class.std::initializer_list", ptr %37, i32 0, i32 0
  store ptr %38, ptr %257, align 8, !tbaa !33
  %258 = getelementptr inbounds %"class.std::initializer_list", ptr %37, i32 0, i32 1
  store i64 3, ptr %258, align 8, !tbaa !35
  %259 = getelementptr inbounds { ptr, i64 }, ptr %37, i32 0, i32 0
  %260 = load ptr, ptr %259, align 8
  %261 = getelementptr inbounds { ptr, i64 }, ptr %37, i32 0, i32 1
  %262 = load i64, ptr %261, align 8
  call void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpESt16initializer_listIjE(ptr noundef nonnull align 8 dereferenceable(24) %24, i32 noundef 71, ptr %260, i64 %262)
  call void @llvm.lifetime.end.p0(i64 12, ptr %38) #6
  call void @llvm.lifetime.start.p0(i64 12, ptr %40) #6
  %263 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %263, ptr %40, align 4, !tbaa !9
  %264 = getelementptr inbounds i32, ptr %40, i64 1
  store i32 33, ptr %264, align 4, !tbaa !9
  %265 = getelementptr inbounds i32, ptr %40, i64 2
  store i32 0, ptr %265, align 4, !tbaa !9
  %266 = getelementptr inbounds %"class.std::initializer_list", ptr %39, i32 0, i32 0
  store ptr %40, ptr %266, align 8, !tbaa !33
  %267 = getelementptr inbounds %"class.std::initializer_list", ptr %39, i32 0, i32 1
  store i64 3, ptr %267, align 8, !tbaa !35
  %268 = getelementptr inbounds { ptr, i64 }, ptr %39, i32 0, i32 0
  %269 = load ptr, ptr %268, align 8
  %270 = getelementptr inbounds { ptr, i64 }, ptr %39, i32 0, i32 1
  %271 = load i64, ptr %270, align 8
  call void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpESt16initializer_listIjE(ptr noundef nonnull align 8 dereferenceable(24) %24, i32 noundef 71, ptr %269, i64 %271)
  call void @llvm.lifetime.end.p0(i64 12, ptr %40) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #6
  %272 = load i32, ptr %22, align 4, !tbaa !9
  store i32 %272, ptr %42, align 4, !tbaa !9
  %273 = getelementptr inbounds i32, ptr %42, i64 1
  store i32 2, ptr %273, align 4, !tbaa !9
  %274 = getelementptr inbounds %"class.std::initializer_list", ptr %41, i32 0, i32 0
  store ptr %42, ptr %274, align 8, !tbaa !33
  %275 = getelementptr inbounds %"class.std::initializer_list", ptr %41, i32 0, i32 1
  store i64 2, ptr %275, align 8, !tbaa !35
  %276 = getelementptr inbounds { ptr, i64 }, ptr %41, i32 0, i32 0
  %277 = load ptr, ptr %276, align 8
  %278 = getelementptr inbounds { ptr, i64 }, ptr %41, i32 0, i32 1
  %279 = load i64, ptr %278, align 8
  call void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpESt16initializer_listIjE(ptr noundef nonnull align 8 dereferenceable(24) %24, i32 noundef 71, ptr %277, i64 %279)
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %44) #6
  %280 = load i32, ptr %22, align 4, !tbaa !9
  store i32 %280, ptr %44, align 4, !tbaa !9
  %281 = getelementptr inbounds i32, ptr %44, i64 1
  store i32 0, ptr %281, align 4, !tbaa !9
  %282 = getelementptr inbounds i32, ptr %44, i64 2
  store i32 35, ptr %282, align 4, !tbaa !9
  %283 = getelementptr inbounds i32, ptr %44, i64 3
  store i32 0, ptr %283, align 4, !tbaa !9
  %284 = getelementptr inbounds %"class.std::initializer_list", ptr %43, i32 0, i32 0
  store ptr %44, ptr %284, align 8, !tbaa !33
  %285 = getelementptr inbounds %"class.std::initializer_list", ptr %43, i32 0, i32 1
  store i64 4, ptr %285, align 8, !tbaa !35
  %286 = getelementptr inbounds { ptr, i64 }, ptr %43, i32 0, i32 0
  %287 = load ptr, ptr %286, align 8
  %288 = getelementptr inbounds { ptr, i64 }, ptr %43, i32 0, i32 1
  %289 = load i64, ptr %288, align 8
  call void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpESt16initializer_listIjE(ptr noundef nonnull align 8 dereferenceable(24) %24, i32 noundef 72, ptr %287, i64 %289)
  call void @llvm.lifetime.end.p0(i64 16, ptr %44) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %46) #6
  %290 = load i32, ptr %22, align 4, !tbaa !9
  store i32 %290, ptr %46, align 4, !tbaa !9
  %291 = getelementptr inbounds i32, ptr %46, i64 1
  store i32 1, ptr %291, align 4, !tbaa !9
  %292 = getelementptr inbounds i32, ptr %46, i64 2
  store i32 35, ptr %292, align 4, !tbaa !9
  %293 = getelementptr inbounds i32, ptr %46, i64 3
  store i32 4, ptr %293, align 4, !tbaa !9
  %294 = getelementptr inbounds %"class.std::initializer_list", ptr %45, i32 0, i32 0
  store ptr %46, ptr %294, align 8, !tbaa !33
  %295 = getelementptr inbounds %"class.std::initializer_list", ptr %45, i32 0, i32 1
  store i64 4, ptr %295, align 8, !tbaa !35
  %296 = getelementptr inbounds { ptr, i64 }, ptr %45, i32 0, i32 0
  %297 = load ptr, ptr %296, align 8
  %298 = getelementptr inbounds { ptr, i64 }, ptr %45, i32 0, i32 1
  %299 = load i64, ptr %298, align 8
  call void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpESt16initializer_listIjE(ptr noundef nonnull align 8 dereferenceable(24) %24, i32 noundef 72, ptr %297, i64 %299)
  call void @llvm.lifetime.end.p0(i64 16, ptr %46) #6
  call void @llvm.lifetime.start.p0(i64 12, ptr %48) #6
  %300 = load i32, ptr %22, align 4, !tbaa !9
  store i32 %300, ptr %48, align 4, !tbaa !9
  %301 = getelementptr inbounds i32, ptr %48, i64 1
  store i32 0, ptr %301, align 4, !tbaa !9
  %302 = getelementptr inbounds i32, ptr %48, i64 2
  store i32 24, ptr %302, align 4, !tbaa !9
  %303 = getelementptr inbounds %"class.std::initializer_list", ptr %47, i32 0, i32 0
  store ptr %48, ptr %303, align 8, !tbaa !33
  %304 = getelementptr inbounds %"class.std::initializer_list", ptr %47, i32 0, i32 1
  store i64 3, ptr %304, align 8, !tbaa !35
  %305 = getelementptr inbounds { ptr, i64 }, ptr %47, i32 0, i32 0
  %306 = load ptr, ptr %305, align 8
  %307 = getelementptr inbounds { ptr, i64 }, ptr %47, i32 0, i32 1
  %308 = load i64, ptr %307, align 8
  call void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpESt16initializer_listIjE(ptr noundef nonnull align 8 dereferenceable(24) %24, i32 noundef 72, ptr %306, i64 %308)
  call void @llvm.lifetime.end.p0(i64 12, ptr %48) #6
  call void @llvm.lifetime.start.p0(i64 12, ptr %50) #6
  %309 = load i32, ptr %22, align 4, !tbaa !9
  store i32 %309, ptr %50, align 4, !tbaa !9
  %310 = getelementptr inbounds i32, ptr %50, i64 1
  store i32 1, ptr %310, align 4, !tbaa !9
  %311 = getelementptr inbounds i32, ptr %50, i64 2
  store i32 24, ptr %311, align 4, !tbaa !9
  %312 = getelementptr inbounds %"class.std::initializer_list", ptr %49, i32 0, i32 0
  store ptr %50, ptr %312, align 8, !tbaa !33
  %313 = getelementptr inbounds %"class.std::initializer_list", ptr %49, i32 0, i32 1
  store i64 3, ptr %313, align 8, !tbaa !35
  %314 = getelementptr inbounds { ptr, i64 }, ptr %49, i32 0, i32 0
  %315 = load ptr, ptr %314, align 8
  %316 = getelementptr inbounds { ptr, i64 }, ptr %49, i32 0, i32 1
  %317 = load i64, ptr %316, align 8
  call void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpESt16initializer_listIjE(ptr noundef nonnull align 8 dereferenceable(24) %24, i32 noundef 72, ptr %315, i64 %317)
  call void @llvm.lifetime.end.p0(i64 12, ptr %50) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #6
  %318 = load i32, ptr %11, align 4, !tbaa !9
  store i32 %318, ptr %52, align 4, !tbaa !9
  %319 = getelementptr inbounds %"class.std::initializer_list", ptr %51, i32 0, i32 0
  store ptr %52, ptr %319, align 8, !tbaa !33
  %320 = getelementptr inbounds %"class.std::initializer_list", ptr %51, i32 0, i32 1
  store i64 1, ptr %320, align 8, !tbaa !35
  %321 = getelementptr inbounds { ptr, i64 }, ptr %51, i32 0, i32 0
  %322 = load ptr, ptr %321, align 8
  %323 = getelementptr inbounds { ptr, i64 }, ptr %51, i32 0, i32 1
  %324 = load i64, ptr %323, align 8
  call void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpESt16initializer_listIjE(ptr noundef nonnull align 8 dereferenceable(24) %24, i32 noundef 19, ptr %322, i64 %324)
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #6
  %325 = load i32, ptr %12, align 4, !tbaa !9
  store i32 %325, ptr %54, align 4, !tbaa !9
  %326 = getelementptr inbounds %"class.std::initializer_list", ptr %53, i32 0, i32 0
  store ptr %54, ptr %326, align 8, !tbaa !33
  %327 = getelementptr inbounds %"class.std::initializer_list", ptr %53, i32 0, i32 1
  store i64 1, ptr %327, align 8, !tbaa !35
  %328 = getelementptr inbounds { ptr, i64 }, ptr %53, i32 0, i32 0
  %329 = load ptr, ptr %328, align 8
  %330 = getelementptr inbounds { ptr, i64 }, ptr %53, i32 0, i32 1
  %331 = load i64, ptr %330, align 8
  call void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpESt16initializer_listIjE(ptr noundef nonnull align 8 dereferenceable(24) %24, i32 noundef 20, ptr %329, i64 %331)
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #6
  call void @llvm.lifetime.start.p0(i64 12, ptr %56) #6
  %332 = load i32, ptr %14, align 4, !tbaa !9
  store i32 %332, ptr %56, align 4, !tbaa !9
  %333 = getelementptr inbounds i32, ptr %56, i64 1
  store i32 32, ptr %333, align 4, !tbaa !9
  %334 = getelementptr inbounds i32, ptr %56, i64 2
  store i32 0, ptr %334, align 4, !tbaa !9
  %335 = getelementptr inbounds %"class.std::initializer_list", ptr %55, i32 0, i32 0
  store ptr %56, ptr %335, align 8, !tbaa !33
  %336 = getelementptr inbounds %"class.std::initializer_list", ptr %55, i32 0, i32 1
  store i64 3, ptr %336, align 8, !tbaa !35
  %337 = getelementptr inbounds { ptr, i64 }, ptr %55, i32 0, i32 0
  %338 = load ptr, ptr %337, align 8
  %339 = getelementptr inbounds { ptr, i64 }, ptr %55, i32 0, i32 1
  %340 = load i64, ptr %339, align 8
  call void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpESt16initializer_listIjE(ptr noundef nonnull align 8 dereferenceable(24) %24, i32 noundef 21, ptr %338, i64 %340)
  call void @llvm.lifetime.end.p0(i64 12, ptr %56) #6
  call void @llvm.lifetime.start.p0(i64 12, ptr %58) #6
  %341 = load i32, ptr %13, align 4, !tbaa !9
  store i32 %341, ptr %58, align 4, !tbaa !9
  %342 = getelementptr inbounds i32, ptr %58, i64 1
  store i32 32, ptr %342, align 4, !tbaa !9
  %343 = getelementptr inbounds i32, ptr %58, i64 2
  store i32 1, ptr %343, align 4, !tbaa !9
  %344 = getelementptr inbounds %"class.std::initializer_list", ptr %57, i32 0, i32 0
  store ptr %58, ptr %344, align 8, !tbaa !33
  %345 = getelementptr inbounds %"class.std::initializer_list", ptr %57, i32 0, i32 1
  store i64 3, ptr %345, align 8, !tbaa !35
  %346 = getelementptr inbounds { ptr, i64 }, ptr %57, i32 0, i32 0
  %347 = load ptr, ptr %346, align 8
  %348 = getelementptr inbounds { ptr, i64 }, ptr %57, i32 0, i32 1
  %349 = load i64, ptr %348, align 8
  call void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpESt16initializer_listIjE(ptr noundef nonnull align 8 dereferenceable(24) %24, i32 noundef 21, ptr %347, i64 %349)
  call void @llvm.lifetime.end.p0(i64 12, ptr %58) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #6
  %350 = load i32, ptr %15, align 4, !tbaa !9
  store i32 %350, ptr %60, align 4, !tbaa !9
  %351 = getelementptr inbounds i32, ptr %60, i64 1
  store i32 32, ptr %351, align 4, !tbaa !9
  %352 = getelementptr inbounds %"class.std::initializer_list", ptr %59, i32 0, i32 0
  store ptr %60, ptr %352, align 8, !tbaa !33
  %353 = getelementptr inbounds %"class.std::initializer_list", ptr %59, i32 0, i32 1
  store i64 2, ptr %353, align 8, !tbaa !35
  %354 = getelementptr inbounds { ptr, i64 }, ptr %59, i32 0, i32 0
  %355 = load ptr, ptr %354, align 8
  %356 = getelementptr inbounds { ptr, i64 }, ptr %59, i32 0, i32 1
  %357 = load i64, ptr %356, align 8
  call void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpESt16initializer_listIjE(ptr noundef nonnull align 8 dereferenceable(24) %24, i32 noundef 22, ptr %355, i64 %357)
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #6
  %358 = load i32, ptr %17, align 4, !tbaa !9
  store i32 %358, ptr %62, align 4, !tbaa !9
  %359 = getelementptr inbounds i32, ptr %62, i64 1
  %360 = load i32, ptr %11, align 4, !tbaa !9
  store i32 %360, ptr %359, align 4, !tbaa !9
  %361 = getelementptr inbounds %"class.std::initializer_list", ptr %61, i32 0, i32 0
  store ptr %62, ptr %361, align 8, !tbaa !33
  %362 = getelementptr inbounds %"class.std::initializer_list", ptr %61, i32 0, i32 1
  store i64 2, ptr %362, align 8, !tbaa !35
  %363 = getelementptr inbounds { ptr, i64 }, ptr %61, i32 0, i32 0
  %364 = load ptr, ptr %363, align 8
  %365 = getelementptr inbounds { ptr, i64 }, ptr %61, i32 0, i32 1
  %366 = load i64, ptr %365, align 8
  call void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpESt16initializer_listIjE(ptr noundef nonnull align 8 dereferenceable(24) %24, i32 noundef 33, ptr %364, i64 %366)
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #6
  %367 = load i32, ptr %16, align 4, !tbaa !9
  store i32 %367, ptr %64, align 4, !tbaa !9
  %368 = getelementptr inbounds i32, ptr %64, i64 1
  %369 = load i32, ptr %14, align 4, !tbaa !9
  store i32 %369, ptr %368, align 4, !tbaa !9
  %370 = getelementptr inbounds %"class.std::initializer_list", ptr %63, i32 0, i32 0
  store ptr %64, ptr %370, align 8, !tbaa !33
  %371 = getelementptr inbounds %"class.std::initializer_list", ptr %63, i32 0, i32 1
  store i64 2, ptr %371, align 8, !tbaa !35
  %372 = getelementptr inbounds { ptr, i64 }, ptr %63, i32 0, i32 0
  %373 = load ptr, ptr %372, align 8
  %374 = getelementptr inbounds { ptr, i64 }, ptr %63, i32 0, i32 1
  %375 = load i64, ptr %374, align 8
  call void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpESt16initializer_listIjE(ptr noundef nonnull align 8 dereferenceable(24) %24, i32 noundef 29, ptr %373, i64 %375)
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #6
  call void @llvm.lifetime.start.p0(i64 12, ptr %66) #6
  %376 = load i32, ptr %18, align 4, !tbaa !9
  store i32 %376, ptr %66, align 4, !tbaa !9
  %377 = getelementptr inbounds i32, ptr %66, i64 1
  store i32 1, ptr %377, align 4, !tbaa !9
  %378 = getelementptr inbounds i32, ptr %66, i64 2
  %379 = load i32, ptr %13, align 4, !tbaa !9
  store i32 %379, ptr %378, align 4, !tbaa !9
  %380 = getelementptr inbounds %"class.std::initializer_list", ptr %65, i32 0, i32 0
  store ptr %66, ptr %380, align 8, !tbaa !33
  %381 = getelementptr inbounds %"class.std::initializer_list", ptr %65, i32 0, i32 1
  store i64 3, ptr %381, align 8, !tbaa !35
  %382 = getelementptr inbounds { ptr, i64 }, ptr %65, i32 0, i32 0
  %383 = load ptr, ptr %382, align 8
  %384 = getelementptr inbounds { ptr, i64 }, ptr %65, i32 0, i32 1
  %385 = load i64, ptr %384, align 8
  call void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpESt16initializer_listIjE(ptr noundef nonnull align 8 dereferenceable(24) %24, i32 noundef 32, ptr %383, i64 %385)
  call void @llvm.lifetime.end.p0(i64 12, ptr %66) #6
  call void @llvm.lifetime.start.p0(i64 12, ptr %68) #6
  %386 = load i32, ptr %19, align 4, !tbaa !9
  store i32 %386, ptr %68, align 4, !tbaa !9
  %387 = getelementptr inbounds i32, ptr %68, i64 1
  store i32 3, ptr %387, align 4, !tbaa !9
  %388 = getelementptr inbounds i32, ptr %68, i64 2
  %389 = load i32, ptr %14, align 4, !tbaa !9
  store i32 %389, ptr %388, align 4, !tbaa !9
  %390 = getelementptr inbounds %"class.std::initializer_list", ptr %67, i32 0, i32 0
  store ptr %68, ptr %390, align 8, !tbaa !33
  %391 = getelementptr inbounds %"class.std::initializer_list", ptr %67, i32 0, i32 1
  store i64 3, ptr %391, align 8, !tbaa !35
  %392 = getelementptr inbounds { ptr, i64 }, ptr %67, i32 0, i32 0
  %393 = load ptr, ptr %392, align 8
  %394 = getelementptr inbounds { ptr, i64 }, ptr %67, i32 0, i32 1
  %395 = load i64, ptr %394, align 8
  call void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpESt16initializer_listIjE(ptr noundef nonnull align 8 dereferenceable(24) %24, i32 noundef 32, ptr %393, i64 %395)
  call void @llvm.lifetime.end.p0(i64 12, ptr %68) #6
  call void @llvm.lifetime.start.p0(i64 12, ptr %70) #6
  %396 = load i32, ptr %20, align 4, !tbaa !9
  store i32 %396, ptr %70, align 4, !tbaa !9
  %397 = getelementptr inbounds i32, ptr %70, i64 1
  store i32 3, ptr %397, align 4, !tbaa !9
  %398 = getelementptr inbounds i32, ptr %70, i64 2
  %399 = load i32, ptr %15, align 4, !tbaa !9
  store i32 %399, ptr %398, align 4, !tbaa !9
  %400 = getelementptr inbounds %"class.std::initializer_list", ptr %69, i32 0, i32 0
  store ptr %70, ptr %400, align 8, !tbaa !33
  %401 = getelementptr inbounds %"class.std::initializer_list", ptr %69, i32 0, i32 1
  store i64 3, ptr %401, align 8, !tbaa !35
  %402 = getelementptr inbounds { ptr, i64 }, ptr %69, i32 0, i32 0
  %403 = load ptr, ptr %402, align 8
  %404 = getelementptr inbounds { ptr, i64 }, ptr %69, i32 0, i32 1
  %405 = load i64, ptr %404, align 8
  call void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpESt16initializer_listIjE(ptr noundef nonnull align 8 dereferenceable(24) %24, i32 noundef 32, ptr %403, i64 %405)
  call void @llvm.lifetime.end.p0(i64 12, ptr %70) #6
  call void @llvm.lifetime.start.p0(i64 12, ptr %72) #6
  %406 = load i32, ptr %21, align 4, !tbaa !9
  store i32 %406, ptr %72, align 4, !tbaa !9
  %407 = getelementptr inbounds i32, ptr %72, i64 1
  store i32 12, ptr %407, align 4, !tbaa !9
  %408 = getelementptr inbounds i32, ptr %72, i64 2
  %409 = load i32, ptr %14, align 4, !tbaa !9
  store i32 %409, ptr %408, align 4, !tbaa !9
  %410 = getelementptr inbounds %"class.std::initializer_list", ptr %71, i32 0, i32 0
  store ptr %72, ptr %410, align 8, !tbaa !33
  %411 = getelementptr inbounds %"class.std::initializer_list", ptr %71, i32 0, i32 1
  store i64 3, ptr %411, align 8, !tbaa !35
  %412 = getelementptr inbounds { ptr, i64 }, ptr %71, i32 0, i32 0
  %413 = load ptr, ptr %412, align 8
  %414 = getelementptr inbounds { ptr, i64 }, ptr %71, i32 0, i32 1
  %415 = load i64, ptr %414, align 8
  call void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpESt16initializer_listIjE(ptr noundef nonnull align 8 dereferenceable(24) %24, i32 noundef 32, ptr %413, i64 %415)
  call void @llvm.lifetime.end.p0(i64 12, ptr %72) #6
  call void @llvm.lifetime.start.p0(i64 56, ptr %73) #6
  call void @_ZNSt13unordered_mapIjjSt4hashIjESt8equal_toIjESaISt4pairIKjjEEEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %73) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #6
  %416 = getelementptr inbounds %class.MeshConverter, ptr %153, i32 0, i32 29
  store ptr %416, ptr %74, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #6
  %417 = load ptr, ptr %74, align 8, !tbaa !5
  %418 = call ptr @_ZNSt13unordered_mapIjN13MeshConverter7VaryingESt4hashIjESt8equal_toIjESaISt4pairIKjS1_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(56) %417) #6
  %419 = getelementptr inbounds %"struct.std::__detail::_Node_iterator", ptr %75, i32 0, i32 0
  %420 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %419, i32 0, i32 0
  store ptr %418, ptr %420, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #6
  %421 = load ptr, ptr %74, align 8, !tbaa !5
  %422 = call ptr @_ZNSt13unordered_mapIjN13MeshConverter7VaryingESt4hashIjESt8equal_toIjESaISt4pairIKjS1_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %421) #6
  %423 = getelementptr inbounds %"struct.std::__detail::_Node_iterator", ptr %76, i32 0, i32 0
  %424 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %423, i32 0, i32 0
  store ptr %422, ptr %424, align 8
  br label %425

425:                                              ; preds = %443, %2
  %426 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseISt4pairIKjN13MeshConverter7VaryingEELb0EEES8_(ptr noundef nonnull align 8 dereferenceable(8) %75, ptr noundef nonnull align 8 dereferenceable(8) %76) #6
  br i1 %426, label %428, label %427

427:                                              ; preds = %425
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #6
  br label %454

428:                                              ; preds = %425
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #6
  %429 = call noundef nonnull align 4 dereferenceable(20) ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKjN13MeshConverter7VaryingEELb0ELb0EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %75) #6
  store ptr %429, ptr %77, align 8, !tbaa !5
  %430 = getelementptr inbounds %class.MeshConverter, ptr %153, i32 0, i32 2
  %431 = load ptr, ptr %430, align 8, !tbaa !11
  %432 = load ptr, ptr %77, align 8, !tbaa !5
  %433 = getelementptr inbounds %"struct.std::pair", ptr %432, i32 0, i32 1
  %434 = getelementptr inbounds %"struct.MeshConverter::Varying", ptr %433, i32 0, i32 0
  %435 = load i32, ptr %434, align 4, !tbaa !36
  call void @llvm.lifetime.start.p0(i64 32, ptr %79) #6
  %436 = getelementptr inbounds %class.anon.52, ptr %79, i32 0, i32 0
  store ptr %73, ptr %436, align 8, !tbaa !5
  %437 = getelementptr inbounds %class.anon.52, ptr %79, i32 0, i32 1
  %438 = load ptr, ptr %4, align 8, !tbaa !5
  store ptr %438, ptr %437, align 8, !tbaa !5
  %439 = getelementptr inbounds %class.anon.52, ptr %79, i32 0, i32 2
  store ptr %24, ptr %439, align 8, !tbaa !5
  %440 = getelementptr inbounds %class.anon.52, ptr %79, i32 0, i32 3
  store ptr %153, ptr %440, align 8, !tbaa !39
  invoke void @"_ZNSt8functionIFvPKN8libspirv8Bytecode11AccessChainEjEEC2IZN13MeshConverter8emitVertERNS0_15MutableBytecodeEE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %78, ptr noundef nonnull align 8 dereferenceable(32) %79)
          to label %441 unwind label %445

441:                                              ; preds = %428
  invoke void @_ZN8libspirv8Bytecode12traverseTypeEjSt8functionIFvPKNS0_11AccessChainEjEENS0_12TraverseModeE(ptr noundef nonnull align 8 dereferenceable(20) %431, i32 noundef %435, ptr noundef %78, i8 noundef zeroext 1)
          to label %442 unwind label %449

442:                                              ; preds = %441
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %78) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr %79) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #6
  br label %443

443:                                              ; preds = %442
  %444 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8__detail14_Node_iteratorISt4pairIKjN13MeshConverter7VaryingEELb0ELb0EEppEv(ptr noundef nonnull align 8 dereferenceable(8) %75) #6
  br label %425

445:                                              ; preds = %428
  %446 = landingpad { ptr, i32 }
          cleanup
  %447 = extractvalue { ptr, i32 } %446, 0
  store ptr %447, ptr %80, align 8
  %448 = extractvalue { ptr, i32 } %446, 1
  store i32 %448, ptr %81, align 4
  br label %453

449:                                              ; preds = %441
  %450 = landingpad { ptr, i32 }
          cleanup
  %451 = extractvalue { ptr, i32 } %450, 0
  store ptr %451, ptr %80, align 8
  %452 = extractvalue { ptr, i32 } %450, 1
  store i32 %452, ptr %81, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %78) #6
  br label %453

453:                                              ; preds = %449, %445
  call void @llvm.lifetime.end.p0(i64 32, ptr %79) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #6
  br label %978

454:                                              ; preds = %427
  call void @llvm.lifetime.start.p0(i64 12, ptr %83) #6
  %455 = load i32, ptr %22, align 4, !tbaa !9
  store i32 %455, ptr %83, align 4, !tbaa !9
  %456 = getelementptr inbounds i32, ptr %83, i64 1
  %457 = load i32, ptr %14, align 4, !tbaa !9
  store i32 %457, ptr %456, align 4, !tbaa !9
  %458 = getelementptr inbounds i32, ptr %83, i64 2
  %459 = load i32, ptr %16, align 4, !tbaa !9
  store i32 %459, ptr %458, align 4, !tbaa !9
  %460 = getelementptr inbounds %"class.std::initializer_list", ptr %82, i32 0, i32 0
  store ptr %83, ptr %460, align 8, !tbaa !33
  %461 = getelementptr inbounds %"class.std::initializer_list", ptr %82, i32 0, i32 1
  store i64 3, ptr %461, align 8, !tbaa !35
  %462 = getelementptr inbounds { ptr, i64 }, ptr %82, i32 0, i32 0
  %463 = load ptr, ptr %462, align 8
  %464 = getelementptr inbounds { ptr, i64 }, ptr %82, i32 0, i32 1
  %465 = load i64, ptr %464, align 8
  invoke void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpESt16initializer_listIjE(ptr noundef nonnull align 8 dereferenceable(24) %24, i32 noundef 30, ptr %463, i64 %465)
          to label %466 unwind label %512

466:                                              ; preds = %454
  call void @llvm.lifetime.end.p0(i64 12, ptr %83) #6
  call void @llvm.lifetime.start.p0(i64 12, ptr %85) #6
  %467 = load i32, ptr %23, align 4, !tbaa !9
  store i32 %467, ptr %85, align 4, !tbaa !9
  %468 = getelementptr inbounds i32, ptr %85, i64 1
  store i32 12, ptr %468, align 4, !tbaa !9
  %469 = getelementptr inbounds i32, ptr %85, i64 2
  %470 = load i32, ptr %22, align 4, !tbaa !9
  store i32 %470, ptr %469, align 4, !tbaa !9
  %471 = getelementptr inbounds %"class.std::initializer_list", ptr %84, i32 0, i32 0
  store ptr %85, ptr %471, align 8, !tbaa !33
  %472 = getelementptr inbounds %"class.std::initializer_list", ptr %84, i32 0, i32 1
  store i64 3, ptr %472, align 8, !tbaa !35
  %473 = getelementptr inbounds { ptr, i64 }, ptr %84, i32 0, i32 0
  %474 = load ptr, ptr %473, align 8
  %475 = getelementptr inbounds { ptr, i64 }, ptr %84, i32 0, i32 1
  %476 = load i64, ptr %475, align 8
  invoke void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpESt16initializer_listIjE(ptr noundef nonnull align 8 dereferenceable(24) %24, i32 noundef 32, ptr %474, i64 %476)
          to label %477 unwind label %516

477:                                              ; preds = %466
  call void @llvm.lifetime.end.p0(i64 12, ptr %85) #6
  call void @llvm.lifetime.start.p0(i64 12, ptr %87) #6
  %478 = load i32, ptr %18, align 4, !tbaa !9
  store i32 %478, ptr %87, align 4, !tbaa !9
  %479 = getelementptr inbounds i32, ptr %87, i64 1
  %480 = load i32, ptr %9, align 4, !tbaa !9
  store i32 %480, ptr %479, align 4, !tbaa !9
  %481 = getelementptr inbounds i32, ptr %87, i64 2
  store i32 1, ptr %481, align 4, !tbaa !9
  %482 = getelementptr inbounds %"class.std::initializer_list", ptr %86, i32 0, i32 0
  store ptr %87, ptr %482, align 8, !tbaa !33
  %483 = getelementptr inbounds %"class.std::initializer_list", ptr %86, i32 0, i32 1
  store i64 3, ptr %483, align 8, !tbaa !35
  %484 = getelementptr inbounds { ptr, i64 }, ptr %86, i32 0, i32 0
  %485 = load ptr, ptr %484, align 8
  %486 = getelementptr inbounds { ptr, i64 }, ptr %86, i32 0, i32 1
  %487 = load i64, ptr %486, align 8
  invoke void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpESt16initializer_listIjE(ptr noundef nonnull align 8 dereferenceable(24) %24, i32 noundef 59, ptr %485, i64 %487)
          to label %488 unwind label %520

488:                                              ; preds = %477
  call void @llvm.lifetime.end.p0(i64 12, ptr %87) #6
  call void @llvm.lifetime.start.p0(i64 12, ptr %89) #6
  %489 = load i32, ptr %23, align 4, !tbaa !9
  store i32 %489, ptr %89, align 4, !tbaa !9
  %490 = getelementptr inbounds i32, ptr %89, i64 1
  %491 = load i32, ptr %10, align 4, !tbaa !9
  store i32 %491, ptr %490, align 4, !tbaa !9
  %492 = getelementptr inbounds i32, ptr %89, i64 2
  store i32 12, ptr %492, align 4, !tbaa !9
  %493 = getelementptr inbounds %"class.std::initializer_list", ptr %88, i32 0, i32 0
  store ptr %89, ptr %493, align 8, !tbaa !33
  %494 = getelementptr inbounds %"class.std::initializer_list", ptr %88, i32 0, i32 1
  store i64 3, ptr %494, align 8, !tbaa !35
  %495 = getelementptr inbounds { ptr, i64 }, ptr %88, i32 0, i32 0
  %496 = load ptr, ptr %495, align 8
  %497 = getelementptr inbounds { ptr, i64 }, ptr %88, i32 0, i32 1
  %498 = load i64, ptr %497, align 8
  invoke void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpESt16initializer_listIjE(ptr noundef nonnull align 8 dereferenceable(24) %24, i32 noundef 59, ptr %496, i64 %498)
          to label %499 unwind label %524

499:                                              ; preds = %488
  call void @llvm.lifetime.end.p0(i64 12, ptr %89) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %90) #6
  %500 = getelementptr inbounds %class.MeshConverter, ptr %153, i32 0, i32 29
  store ptr %500, ptr %90, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %91) #6
  %501 = load ptr, ptr %90, align 8, !tbaa !5
  %502 = call ptr @_ZNSt13unordered_mapIjN13MeshConverter7VaryingESt4hashIjESt8equal_toIjESaISt4pairIKjS1_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(56) %501) #6
  %503 = getelementptr inbounds %"struct.std::__detail::_Node_iterator", ptr %91, i32 0, i32 0
  %504 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %503, i32 0, i32 0
  store ptr %502, ptr %504, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %92) #6
  %505 = load ptr, ptr %90, align 8, !tbaa !5
  %506 = call ptr @_ZNSt13unordered_mapIjN13MeshConverter7VaryingESt4hashIjESt8equal_toIjESaISt4pairIKjS1_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %505) #6
  %507 = getelementptr inbounds %"struct.std::__detail::_Node_iterator", ptr %92, i32 0, i32 0
  %508 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %507, i32 0, i32 0
  store ptr %506, ptr %508, align 8
  br label %509

509:                                              ; preds = %555, %499
  %510 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseISt4pairIKjN13MeshConverter7VaryingEELb0EEES8_(ptr noundef nonnull align 8 dereferenceable(8) %91, ptr noundef nonnull align 8 dereferenceable(8) %92) #6
  br i1 %510, label %528, label %511

511:                                              ; preds = %509
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #6
  br label %571

512:                                              ; preds = %454
  %513 = landingpad { ptr, i32 }
          cleanup
  %514 = extractvalue { ptr, i32 } %513, 0
  store ptr %514, ptr %80, align 8
  %515 = extractvalue { ptr, i32 } %513, 1
  store i32 %515, ptr %81, align 4
  call void @llvm.lifetime.end.p0(i64 12, ptr %83) #6
  br label %978

516:                                              ; preds = %466
  %517 = landingpad { ptr, i32 }
          cleanup
  %518 = extractvalue { ptr, i32 } %517, 0
  store ptr %518, ptr %80, align 8
  %519 = extractvalue { ptr, i32 } %517, 1
  store i32 %519, ptr %81, align 4
  call void @llvm.lifetime.end.p0(i64 12, ptr %85) #6
  br label %978

520:                                              ; preds = %477
  %521 = landingpad { ptr, i32 }
          cleanup
  %522 = extractvalue { ptr, i32 } %521, 0
  store ptr %522, ptr %80, align 8
  %523 = extractvalue { ptr, i32 } %521, 1
  store i32 %523, ptr %81, align 4
  call void @llvm.lifetime.end.p0(i64 12, ptr %87) #6
  br label %978

524:                                              ; preds = %488
  %525 = landingpad { ptr, i32 }
          cleanup
  %526 = extractvalue { ptr, i32 } %525, 0
  store ptr %526, ptr %80, align 8
  %527 = extractvalue { ptr, i32 } %525, 1
  store i32 %527, ptr %81, align 4
  call void @llvm.lifetime.end.p0(i64 12, ptr %89) #6
  br label %978

528:                                              ; preds = %509
  call void @llvm.lifetime.start.p0(i64 8, ptr %93) #6
  %529 = call noundef nonnull align 4 dereferenceable(20) ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKjN13MeshConverter7VaryingEELb0ELb0EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %91) #6
  store ptr %529, ptr %93, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %94) #6
  %530 = load ptr, ptr %4, align 8, !tbaa !5
  %531 = invoke noundef i32 @_ZN8libspirv15MutableBytecode13fetchAddBoundEv(ptr noundef nonnull align 8 dereferenceable(48) %530)
          to label %532 unwind label %557

532:                                              ; preds = %528
  store i32 %531, ptr %94, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %95) #6
  %533 = load ptr, ptr %93, align 8, !tbaa !5
  %534 = getelementptr inbounds %"struct.std::pair", ptr %533, i32 0, i32 1
  %535 = getelementptr inbounds %"struct.MeshConverter::Varying", ptr %534, i32 0, i32 0
  %536 = load i32, ptr %535, align 4, !tbaa !36
  store i32 %536, ptr %95, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %96) #6
  %537 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt13unordered_mapIjjSt4hashIjESt8equal_toIjESaISt4pairIKjjEEEixERS5_(ptr noundef nonnull align 8 dereferenceable(56) %73, ptr noundef nonnull align 4 dereferenceable(4) %95)
          to label %538 unwind label %561

538:                                              ; preds = %532
  %539 = load i32, ptr %537, align 4, !tbaa !9
  store i32 %539, ptr %96, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 12, ptr %98) #6
  %540 = load i32, ptr %96, align 4, !tbaa !9
  store i32 %540, ptr %98, align 4, !tbaa !9
  %541 = getelementptr inbounds i32, ptr %98, i64 1
  %542 = load i32, ptr %94, align 4, !tbaa !9
  store i32 %542, ptr %541, align 4, !tbaa !9
  %543 = getelementptr inbounds i32, ptr %98, i64 2
  store i32 3, ptr %543, align 4, !tbaa !9
  %544 = getelementptr inbounds %"class.std::initializer_list", ptr %97, i32 0, i32 0
  store ptr %98, ptr %544, align 8, !tbaa !33
  %545 = getelementptr inbounds %"class.std::initializer_list", ptr %97, i32 0, i32 1
  store i64 3, ptr %545, align 8, !tbaa !35
  %546 = getelementptr inbounds { ptr, i64 }, ptr %97, i32 0, i32 0
  %547 = load ptr, ptr %546, align 8
  %548 = getelementptr inbounds { ptr, i64 }, ptr %97, i32 0, i32 1
  %549 = load i64, ptr %548, align 8
  invoke void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpESt16initializer_listIjE(ptr noundef nonnull align 8 dereferenceable(24) %24, i32 noundef 59, ptr %547, i64 %549)
          to label %550 unwind label %565

550:                                              ; preds = %538
  call void @llvm.lifetime.end.p0(i64 12, ptr %98) #6
  %551 = load i32, ptr %94, align 4, !tbaa !9
  %552 = load ptr, ptr %93, align 8, !tbaa !5
  %553 = getelementptr inbounds %"struct.std::pair", ptr %552, i32 0, i32 1
  %554 = getelementptr inbounds %"struct.MeshConverter::Varying", ptr %553, i32 0, i32 2
  store i32 %551, ptr %554, align 4, !tbaa !41
  call void @llvm.lifetime.end.p0(i64 4, ptr %96) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %95) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %94) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #6
  br label %555

555:                                              ; preds = %550
  %556 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8__detail14_Node_iteratorISt4pairIKjN13MeshConverter7VaryingEELb0ELb0EEppEv(ptr noundef nonnull align 8 dereferenceable(8) %91) #6
  br label %509

557:                                              ; preds = %528
  %558 = landingpad { ptr, i32 }
          cleanup
  %559 = extractvalue { ptr, i32 } %558, 0
  store ptr %559, ptr %80, align 8
  %560 = extractvalue { ptr, i32 } %558, 1
  store i32 %560, ptr %81, align 4
  br label %570

561:                                              ; preds = %532
  %562 = landingpad { ptr, i32 }
          cleanup
  %563 = extractvalue { ptr, i32 } %562, 0
  store ptr %563, ptr %80, align 8
  %564 = extractvalue { ptr, i32 } %562, 1
  store i32 %564, ptr %81, align 4
  br label %569

565:                                              ; preds = %538
  %566 = landingpad { ptr, i32 }
          cleanup
  %567 = extractvalue { ptr, i32 } %566, 0
  store ptr %567, ptr %80, align 8
  %568 = extractvalue { ptr, i32 } %566, 1
  store i32 %568, ptr %81, align 4
  call void @llvm.lifetime.end.p0(i64 12, ptr %98) #6
  br label %569

569:                                              ; preds = %565, %561
  call void @llvm.lifetime.end.p0(i64 4, ptr %96) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %95) #6
  br label %570

570:                                              ; preds = %569, %557
  call void @llvm.lifetime.end.p0(i64 4, ptr %94) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #6
  br label %978

571:                                              ; preds = %511
  call void @llvm.lifetime.start.p0(i64 24, ptr %99) #6
  %572 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %100, ptr noundef @.str.4) #6
  %573 = getelementptr inbounds { i64, ptr }, ptr %100, i32 0, i32 0
  %574 = load i64, ptr %573, align 8
  %575 = getelementptr inbounds { i64, ptr }, ptr %100, i32 0, i32 1
  %576 = load ptr, ptr %575, align 8
  invoke void @_ZN8libspirv15MutableBytecode16findOpEntryPointEN3spv14ExecutionModelESt17basic_string_viewIcSt11char_traitsIcEE(ptr dead_on_unwind writable sret(%"struct.libspirv::MutableBytecode::Iterator") align 8 %99, ptr noundef nonnull align 8 dereferenceable(48) %572, i32 noundef 0, i64 %574, ptr %576)
          to label %577 unwind label %590

577:                                              ; preds = %571
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %24, ptr align 8 %99, i64 24, i1 false)
  call void @llvm.lifetime.end.p0(i64 24, ptr %99) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %101) #6
  %578 = getelementptr inbounds %class.MeshConverter, ptr %153, i32 0, i32 29
  store ptr %578, ptr %101, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %102) #6
  %579 = load ptr, ptr %101, align 8, !tbaa !5
  %580 = call ptr @_ZNSt13unordered_mapIjN13MeshConverter7VaryingESt4hashIjESt8equal_toIjESaISt4pairIKjS1_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(56) %579) #6
  %581 = getelementptr inbounds %"struct.std::__detail::_Node_iterator", ptr %102, i32 0, i32 0
  %582 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %581, i32 0, i32 0
  store ptr %580, ptr %582, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %103) #6
  %583 = load ptr, ptr %101, align 8, !tbaa !5
  %584 = call ptr @_ZNSt13unordered_mapIjN13MeshConverter7VaryingESt4hashIjESt8equal_toIjESaISt4pairIKjS1_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %583) #6
  %585 = getelementptr inbounds %"struct.std::__detail::_Node_iterator", ptr %103, i32 0, i32 0
  %586 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %585, i32 0, i32 0
  store ptr %584, ptr %586, align 8
  br label %587

587:                                              ; preds = %601, %577
  %588 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseISt4pairIKjN13MeshConverter7VaryingEELb0EEES8_(ptr noundef nonnull align 8 dereferenceable(8) %102, ptr noundef nonnull align 8 dereferenceable(8) %103) #6
  br i1 %588, label %594, label %589

589:                                              ; preds = %587
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #6
  br label %607

590:                                              ; preds = %571
  %591 = landingpad { ptr, i32 }
          cleanup
  %592 = extractvalue { ptr, i32 } %591, 0
  store ptr %592, ptr %80, align 8
  %593 = extractvalue { ptr, i32 } %591, 1
  store i32 %593, ptr %81, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %99) #6
  br label %978

594:                                              ; preds = %587
  call void @llvm.lifetime.start.p0(i64 8, ptr %104) #6
  %595 = call noundef nonnull align 4 dereferenceable(20) ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKjN13MeshConverter7VaryingEELb0ELb0EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %102) #6
  store ptr %595, ptr %104, align 8, !tbaa !5
  %596 = load ptr, ptr %104, align 8, !tbaa !5
  %597 = getelementptr inbounds %"struct.std::pair", ptr %596, i32 0, i32 1
  %598 = getelementptr inbounds %"struct.MeshConverter::Varying", ptr %597, i32 0, i32 2
  %599 = load i32, ptr %598, align 4, !tbaa !41
  invoke void @_ZN8libspirv15MutableBytecode8Iterator6appendEj(ptr noundef nonnull align 8 dereferenceable(24) %24, i32 noundef %599)
          to label %600 unwind label %603

600:                                              ; preds = %594
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #6
  br label %601

601:                                              ; preds = %600
  %602 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8__detail14_Node_iteratorISt4pairIKjN13MeshConverter7VaryingEELb0ELb0EEppEv(ptr noundef nonnull align 8 dereferenceable(8) %102) #6
  br label %587

603:                                              ; preds = %594
  %604 = landingpad { ptr, i32 }
          cleanup
  %605 = extractvalue { ptr, i32 } %604, 0
  store ptr %605, ptr %80, align 8
  %606 = extractvalue { ptr, i32 } %604, 1
  store i32 %606, ptr %81, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #6
  br label %978

607:                                              ; preds = %589
  call void @llvm.lifetime.start.p0(i64 24, ptr %105) #6
  %608 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZN8libspirv15MutableBytecode3endEv(ptr dead_on_unwind writable sret(%"struct.libspirv::MutableBytecode::Iterator") align 8 %105, ptr noundef nonnull align 8 dereferenceable(48) %608)
          to label %609 unwind label %659

609:                                              ; preds = %607
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %24, ptr align 8 %105, i64 24, i1 false)
  call void @llvm.lifetime.end.p0(i64 24, ptr %105) #6
  %610 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZN13MeshConverter13emitConstantsERN8libspirv15MutableBytecodeE(ptr noundef nonnull align 8 dereferenceable(425) %153, ptr noundef nonnull align 8 dereferenceable(48) %610)
          to label %611 unwind label %663

611:                                              ; preds = %609
  call void @llvm.lifetime.start.p0(i64 24, ptr %106) #6
  %612 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZN8libspirv15MutableBytecode3endEv(ptr dead_on_unwind writable sret(%"struct.libspirv::MutableBytecode::Iterator") align 8 %106, ptr noundef nonnull align 8 dereferenceable(48) %612)
          to label %613 unwind label %667

613:                                              ; preds = %611
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %24, ptr align 8 %106, i64 24, i1 false)
  call void @llvm.lifetime.end.p0(i64 24, ptr %106) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %108) #6
  %614 = load i32, ptr %11, align 4, !tbaa !9
  store i32 %614, ptr %108, align 4, !tbaa !9
  %615 = getelementptr inbounds i32, ptr %108, i64 1
  %616 = load i32, ptr %6, align 4, !tbaa !9
  store i32 %616, ptr %615, align 4, !tbaa !9
  %617 = getelementptr inbounds i32, ptr %108, i64 2
  store i32 0, ptr %617, align 4, !tbaa !9
  %618 = getelementptr inbounds i32, ptr %108, i64 3
  %619 = load i32, ptr %17, align 4, !tbaa !9
  store i32 %619, ptr %618, align 4, !tbaa !9
  %620 = getelementptr inbounds %"class.std::initializer_list", ptr %107, i32 0, i32 0
  store ptr %108, ptr %620, align 8, !tbaa !33
  %621 = getelementptr inbounds %"class.std::initializer_list", ptr %107, i32 0, i32 1
  store i64 4, ptr %621, align 8, !tbaa !35
  %622 = getelementptr inbounds { ptr, i64 }, ptr %107, i32 0, i32 0
  %623 = load ptr, ptr %622, align 8
  %624 = getelementptr inbounds { ptr, i64 }, ptr %107, i32 0, i32 1
  %625 = load i64, ptr %624, align 8
  invoke void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpESt16initializer_listIjE(ptr noundef nonnull align 8 dereferenceable(24) %24, i32 noundef 54, ptr %623, i64 %625)
          to label %626 unwind label %671

626:                                              ; preds = %613
  call void @llvm.lifetime.end.p0(i64 16, ptr %108) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %110) #6
  %627 = load i32, ptr %7, align 4, !tbaa !9
  store i32 %627, ptr %110, align 4, !tbaa !9
  %628 = getelementptr inbounds %"class.std::initializer_list", ptr %109, i32 0, i32 0
  store ptr %110, ptr %628, align 8, !tbaa !33
  %629 = getelementptr inbounds %"class.std::initializer_list", ptr %109, i32 0, i32 1
  store i64 1, ptr %629, align 8, !tbaa !35
  %630 = getelementptr inbounds { ptr, i64 }, ptr %109, i32 0, i32 0
  %631 = load ptr, ptr %630, align 8
  %632 = getelementptr inbounds { ptr, i64 }, ptr %109, i32 0, i32 1
  %633 = load i64, ptr %632, align 8
  invoke void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpESt16initializer_listIjE(ptr noundef nonnull align 8 dereferenceable(24) %24, i32 noundef 248, ptr %631, i64 %633)
          to label %634 unwind label %675

634:                                              ; preds = %626
  call void @llvm.lifetime.end.p0(i64 4, ptr %110) #6
  call void @llvm.lifetime.start.p0(i64 12, ptr %112) #6
  %635 = load i32, ptr %13, align 4, !tbaa !9
  store i32 %635, ptr %112, align 4, !tbaa !9
  %636 = getelementptr inbounds i32, ptr %112, i64 1
  %637 = load i32, ptr %8, align 4, !tbaa !9
  store i32 %637, ptr %636, align 4, !tbaa !9
  %638 = getelementptr inbounds i32, ptr %112, i64 2
  %639 = load i32, ptr %9, align 4, !tbaa !9
  store i32 %639, ptr %638, align 4, !tbaa !9
  %640 = getelementptr inbounds %"class.std::initializer_list", ptr %111, i32 0, i32 0
  store ptr %112, ptr %640, align 8, !tbaa !33
  %641 = getelementptr inbounds %"class.std::initializer_list", ptr %111, i32 0, i32 1
  store i64 3, ptr %641, align 8, !tbaa !35
  %642 = getelementptr inbounds { ptr, i64 }, ptr %111, i32 0, i32 0
  %643 = load ptr, ptr %642, align 8
  %644 = getelementptr inbounds { ptr, i64 }, ptr %111, i32 0, i32 1
  %645 = load i64, ptr %644, align 8
  invoke void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpESt16initializer_listIjE(ptr noundef nonnull align 8 dereferenceable(24) %24, i32 noundef 61, ptr %643, i64 %645)
          to label %646 unwind label %679

646:                                              ; preds = %634
  call void @llvm.lifetime.end.p0(i64 12, ptr %112) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %113) #6
  store i32 0, ptr %113, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %114) #6
  %647 = getelementptr inbounds %class.MeshConverter, ptr %153, i32 0, i32 29
  store ptr %647, ptr %114, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %115) #6
  %648 = load ptr, ptr %114, align 8, !tbaa !5
  %649 = call ptr @_ZNSt13unordered_mapIjN13MeshConverter7VaryingESt4hashIjESt8equal_toIjESaISt4pairIKjS1_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(56) %648) #6
  %650 = getelementptr inbounds %"struct.std::__detail::_Node_iterator", ptr %115, i32 0, i32 0
  %651 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %650, i32 0, i32 0
  store ptr %649, ptr %651, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %116) #6
  %652 = load ptr, ptr %114, align 8, !tbaa !5
  %653 = call ptr @_ZNSt13unordered_mapIjN13MeshConverter7VaryingESt4hashIjESt8equal_toIjESaISt4pairIKjS1_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %652) #6
  %654 = getelementptr inbounds %"struct.std::__detail::_Node_iterator", ptr %116, i32 0, i32 0
  %655 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %654, i32 0, i32 0
  store ptr %653, ptr %655, align 8
  br label %656

656:                                              ; preds = %711, %646
  %657 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseISt4pairIKjN13MeshConverter7VaryingEELb0EEES8_(ptr noundef nonnull align 8 dereferenceable(8) %115, ptr noundef nonnull align 8 dereferenceable(8) %116) #6
  br i1 %657, label %683, label %658

658:                                              ; preds = %656
  call void @llvm.lifetime.end.p0(i64 8, ptr %116) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %115) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %114) #6
  br label %722

659:                                              ; preds = %607
  %660 = landingpad { ptr, i32 }
          cleanup
  %661 = extractvalue { ptr, i32 } %660, 0
  store ptr %661, ptr %80, align 8
  %662 = extractvalue { ptr, i32 } %660, 1
  store i32 %662, ptr %81, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %105) #6
  br label %978

663:                                              ; preds = %727, %722, %609
  %664 = landingpad { ptr, i32 }
          cleanup
  %665 = extractvalue { ptr, i32 } %664, 0
  store ptr %665, ptr %80, align 8
  %666 = extractvalue { ptr, i32 } %664, 1
  store i32 %666, ptr %81, align 4
  br label %978

667:                                              ; preds = %611
  %668 = landingpad { ptr, i32 }
          cleanup
  %669 = extractvalue { ptr, i32 } %668, 0
  store ptr %669, ptr %80, align 8
  %670 = extractvalue { ptr, i32 } %668, 1
  store i32 %670, ptr %81, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %106) #6
  br label %978

671:                                              ; preds = %613
  %672 = landingpad { ptr, i32 }
          cleanup
  %673 = extractvalue { ptr, i32 } %672, 0
  store ptr %673, ptr %80, align 8
  %674 = extractvalue { ptr, i32 } %672, 1
  store i32 %674, ptr %81, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %108) #6
  br label %978

675:                                              ; preds = %626
  %676 = landingpad { ptr, i32 }
          cleanup
  %677 = extractvalue { ptr, i32 } %676, 0
  store ptr %677, ptr %80, align 8
  %678 = extractvalue { ptr, i32 } %676, 1
  store i32 %678, ptr %81, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %110) #6
  br label %978

679:                                              ; preds = %634
  %680 = landingpad { ptr, i32 }
          cleanup
  %681 = extractvalue { ptr, i32 } %680, 0
  store ptr %681, ptr %80, align 8
  %682 = extractvalue { ptr, i32 } %680, 1
  store i32 %682, ptr %81, align 4
  call void @llvm.lifetime.end.p0(i64 12, ptr %112) #6
  br label %978

683:                                              ; preds = %656
  call void @llvm.lifetime.start.p0(i64 8, ptr %117) #6
  %684 = call noundef nonnull align 4 dereferenceable(20) ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKjN13MeshConverter7VaryingEELb0ELb0EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %115) #6
  store ptr %684, ptr %117, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %118) #6
  %685 = load ptr, ptr %117, align 8, !tbaa !5
  %686 = getelementptr inbounds %"struct.std::pair", ptr %685, i32 0, i32 1
  %687 = getelementptr inbounds %"struct.MeshConverter::Varying", ptr %686, i32 0, i32 2
  %688 = load i32, ptr %687, align 4, !tbaa !41
  store i32 %688, ptr %118, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %119) #6
  %689 = load ptr, ptr %117, align 8, !tbaa !5
  %690 = getelementptr inbounds %"struct.std::pair", ptr %689, i32 0, i32 1
  %691 = getelementptr inbounds %"struct.MeshConverter::Varying", ptr %690, i32 0, i32 0
  %692 = load i32, ptr %691, align 4, !tbaa !36
  store i32 %692, ptr %119, align 4, !tbaa !9
  %693 = getelementptr inbounds %class.MeshConverter, ptr %153, i32 0, i32 2
  %694 = load ptr, ptr %693, align 8, !tbaa !11
  %695 = load i32, ptr %119, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 96, ptr %121) #6
  %696 = getelementptr inbounds %class.anon.53, ptr %121, i32 0, i32 0
  store ptr %153, ptr %696, align 8, !tbaa !42
  %697 = getelementptr inbounds %class.anon.53, ptr %121, i32 0, i32 1
  %698 = load ptr, ptr %4, align 8, !tbaa !5
  store ptr %698, ptr %697, align 8, !tbaa !5
  %699 = getelementptr inbounds %class.anon.53, ptr %121, i32 0, i32 2
  store ptr %24, ptr %699, align 8, !tbaa !5
  %700 = getelementptr inbounds %class.anon.53, ptr %121, i32 0, i32 3
  store ptr %14, ptr %700, align 8, !tbaa !5
  %701 = getelementptr inbounds %class.anon.53, ptr %121, i32 0, i32 4
  store ptr %8, ptr %701, align 8, !tbaa !5
  %702 = getelementptr inbounds %class.anon.53, ptr %121, i32 0, i32 5
  store ptr %113, ptr %702, align 8, !tbaa !5
  %703 = getelementptr inbounds %class.anon.53, ptr %121, i32 0, i32 6
  store ptr %21, ptr %703, align 8, !tbaa !5
  %704 = getelementptr inbounds %class.anon.53, ptr %121, i32 0, i32 7
  store ptr %10, ptr %704, align 8, !tbaa !5
  %705 = getelementptr inbounds %class.anon.53, ptr %121, i32 0, i32 8
  store ptr %20, ptr %705, align 8, !tbaa !5
  %706 = getelementptr inbounds %class.anon.53, ptr %121, i32 0, i32 9
  store ptr %118, ptr %706, align 8, !tbaa !5
  %707 = getelementptr inbounds %class.anon.53, ptr %121, i32 0, i32 10
  store ptr %15, ptr %707, align 8, !tbaa !5
  %708 = getelementptr inbounds %class.anon.53, ptr %121, i32 0, i32 11
  store ptr %19, ptr %708, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFvPKN8libspirv8Bytecode11AccessChainEjEEC2IZN13MeshConverter8emitVertERNS0_15MutableBytecodeEE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %120, ptr noundef nonnull align 8 dereferenceable(96) %121)
          to label %709 unwind label %713

709:                                              ; preds = %683
  invoke void @_ZN8libspirv8Bytecode12traverseTypeEjSt8functionIFvPKNS0_11AccessChainEjEENS0_12TraverseModeE(ptr noundef nonnull align 8 dereferenceable(20) %694, i32 noundef %695, ptr noundef %120, i8 noundef zeroext 0)
          to label %710 unwind label %717

710:                                              ; preds = %709
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %120) #6
  call void @llvm.lifetime.end.p0(i64 96, ptr %121) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %119) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %118) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %117) #6
  br label %711

711:                                              ; preds = %710
  %712 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8__detail14_Node_iteratorISt4pairIKjN13MeshConverter7VaryingEELb0ELb0EEppEv(ptr noundef nonnull align 8 dereferenceable(8) %115) #6
  br label %656

713:                                              ; preds = %683
  %714 = landingpad { ptr, i32 }
          cleanup
  %715 = extractvalue { ptr, i32 } %714, 0
  store ptr %715, ptr %80, align 8
  %716 = extractvalue { ptr, i32 } %714, 1
  store i32 %716, ptr %81, align 4
  br label %721

717:                                              ; preds = %709
  %718 = landingpad { ptr, i32 }
          cleanup
  %719 = extractvalue { ptr, i32 } %718, 0
  store ptr %719, ptr %80, align 8
  %720 = extractvalue { ptr, i32 } %718, 1
  store i32 %720, ptr %81, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %120) #6
  br label %721

721:                                              ; preds = %717, %713
  call void @llvm.lifetime.end.p0(i64 96, ptr %121) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %119) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %118) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %117) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %116) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %115) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %114) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %113) #6
  br label %978

722:                                              ; preds = %658
  call void @llvm.lifetime.end.p0(i64 4, ptr %113) #6
  call void @_ZNSt16initializer_listIjEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %122) #6
  %723 = getelementptr inbounds { ptr, i64 }, ptr %122, i32 0, i32 0
  %724 = load ptr, ptr %723, align 8
  %725 = getelementptr inbounds { ptr, i64 }, ptr %122, i32 0, i32 1
  %726 = load i64, ptr %725, align 8
  invoke void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpESt16initializer_listIjE(ptr noundef nonnull align 8 dereferenceable(24) %24, i32 noundef 253, ptr %724, i64 %726)
          to label %727 unwind label %663

727:                                              ; preds = %722
  call void @_ZNSt16initializer_listIjEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %123) #6
  %728 = getelementptr inbounds { ptr, i64 }, ptr %123, i32 0, i32 0
  %729 = load ptr, ptr %728, align 8
  %730 = getelementptr inbounds { ptr, i64 }, ptr %123, i32 0, i32 1
  %731 = load i64, ptr %730, align 8
  invoke void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpESt16initializer_listIjE(ptr noundef nonnull align 8 dereferenceable(24) %24, i32 noundef 56, ptr %729, i64 %731)
          to label %732 unwind label %663

732:                                              ; preds = %727
  call void @llvm.lifetime.start.p0(i64 24, ptr %124) #6
  %733 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZN8libspirv15MutableBytecode14findSectionEndENS_8Bytecode7SectionE(ptr dead_on_unwind writable sret(%"struct.libspirv::MutableBytecode::Iterator") align 8 %124, ptr noundef nonnull align 8 dereferenceable(48) %733, i8 noundef zeroext 8)
          to label %734 unwind label %747

734:                                              ; preds = %732
  call void @llvm.lifetime.start.p0(i64 8, ptr %125) #6
  %735 = getelementptr inbounds %class.MeshConverter, ptr %153, i32 0, i32 29
  store ptr %735, ptr %125, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %126) #6
  %736 = load ptr, ptr %125, align 8, !tbaa !5
  %737 = call ptr @_ZNSt13unordered_mapIjN13MeshConverter7VaryingESt4hashIjESt8equal_toIjESaISt4pairIKjS1_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(56) %736) #6
  %738 = getelementptr inbounds %"struct.std::__detail::_Node_iterator", ptr %126, i32 0, i32 0
  %739 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %738, i32 0, i32 0
  store ptr %737, ptr %739, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %127) #6
  %740 = load ptr, ptr %125, align 8, !tbaa !5
  %741 = call ptr @_ZNSt13unordered_mapIjN13MeshConverter7VaryingESt4hashIjESt8equal_toIjESaISt4pairIKjS1_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %740) #6
  %742 = getelementptr inbounds %"struct.std::__detail::_Node_iterator", ptr %127, i32 0, i32 0
  %743 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %742, i32 0, i32 0
  store ptr %741, ptr %743, align 8
  br label %744

744:                                              ; preds = %782, %734
  %745 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseISt4pairIKjN13MeshConverter7VaryingEELb0EEES8_(ptr noundef nonnull align 8 dereferenceable(8) %126, ptr noundef nonnull align 8 dereferenceable(8) %127) #6
  br i1 %745, label %751, label %746

746:                                              ; preds = %744
  store i32 10, ptr %128, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %127) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %126) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %125) #6
  br label %788

747:                                              ; preds = %732
  %748 = landingpad { ptr, i32 }
          cleanup
  %749 = extractvalue { ptr, i32 } %748, 0
  store ptr %749, ptr %80, align 8
  %750 = extractvalue { ptr, i32 } %748, 1
  store i32 %750, ptr %81, align 4
  br label %977

751:                                              ; preds = %744
  call void @llvm.lifetime.start.p0(i64 8, ptr %129) #6
  %752 = call noundef nonnull align 4 dereferenceable(20) ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKjN13MeshConverter7VaryingEELb0ELb0EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %126) #6
  store ptr %752, ptr %129, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %130) #6
  %753 = load ptr, ptr %129, align 8, !tbaa !5
  %754 = getelementptr inbounds %"struct.std::pair", ptr %753, i32 0, i32 1
  %755 = getelementptr inbounds %"struct.MeshConverter::Varying", ptr %754, i32 0, i32 2
  %756 = load i32, ptr %755, align 4, !tbaa !41
  store i32 %756, ptr %130, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %131) #6
  %757 = load ptr, ptr %129, align 8, !tbaa !5
  %758 = getelementptr inbounds %"struct.std::pair", ptr %757, i32 0, i32 1
  %759 = getelementptr inbounds %"struct.MeshConverter::Varying", ptr %758, i32 0, i32 3
  %760 = load i32, ptr %759, align 4, !tbaa !44
  store i32 %760, ptr %131, align 4, !tbaa !9
  %761 = load i32, ptr %131, align 4, !tbaa !9
  %762 = icmp eq i32 %761, -1
  br i1 %762, label %763, label %764

763:                                              ; preds = %751
  store i32 11, ptr %128, align 4
  br label %776

764:                                              ; preds = %751
  call void @llvm.lifetime.start.p0(i64 12, ptr %133) #6
  %765 = load i32, ptr %130, align 4, !tbaa !9
  store i32 %765, ptr %133, align 4, !tbaa !9
  %766 = getelementptr inbounds i32, ptr %133, i64 1
  store i32 30, ptr %766, align 4, !tbaa !9
  %767 = getelementptr inbounds i32, ptr %133, i64 2
  %768 = load i32, ptr %131, align 4, !tbaa !9
  store i32 %768, ptr %767, align 4, !tbaa !9
  %769 = getelementptr inbounds %"class.std::initializer_list", ptr %132, i32 0, i32 0
  store ptr %133, ptr %769, align 8, !tbaa !33
  %770 = getelementptr inbounds %"class.std::initializer_list", ptr %132, i32 0, i32 1
  store i64 3, ptr %770, align 8, !tbaa !35
  %771 = getelementptr inbounds { ptr, i64 }, ptr %132, i32 0, i32 0
  %772 = load ptr, ptr %771, align 8
  %773 = getelementptr inbounds { ptr, i64 }, ptr %132, i32 0, i32 1
  %774 = load i64, ptr %773, align 8
  invoke void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpESt16initializer_listIjE(ptr noundef nonnull align 8 dereferenceable(24) %124, i32 noundef 71, ptr %772, i64 %774)
          to label %775 unwind label %784

775:                                              ; preds = %764
  call void @llvm.lifetime.end.p0(i64 12, ptr %133) #6
  store i32 0, ptr %128, align 4
  br label %776

776:                                              ; preds = %775, %763
  call void @llvm.lifetime.end.p0(i64 4, ptr %131) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %130) #6
  %777 = load i32, ptr %128, align 4
  switch i32 %777, label %779 [
    i32 0, label %778
  ]

778:                                              ; preds = %776
  store i32 0, ptr %128, align 4
  br label %779

779:                                              ; preds = %778, %776
  call void @llvm.lifetime.end.p0(i64 8, ptr %129) #6
  %780 = load i32, ptr %128, align 4
  switch i32 %780, label %984 [
    i32 0, label %781
    i32 11, label %782
  ]

781:                                              ; preds = %779
  br label %782

782:                                              ; preds = %781, %779
  %783 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8__detail14_Node_iteratorISt4pairIKjN13MeshConverter7VaryingEELb0ELb0EEppEv(ptr noundef nonnull align 8 dereferenceable(8) %126) #6
  br label %744

784:                                              ; preds = %764
  %785 = landingpad { ptr, i32 }
          cleanup
  %786 = extractvalue { ptr, i32 } %785, 0
  store ptr %786, ptr %80, align 8
  %787 = extractvalue { ptr, i32 } %785, 1
  store i32 %787, ptr %81, align 4
  call void @llvm.lifetime.end.p0(i64 12, ptr %133) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %131) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %130) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %129) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %127) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %126) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %125) #6
  br label %977

788:                                              ; preds = %746
  call void @llvm.lifetime.start.p0(i64 8, ptr %135) #6
  %789 = getelementptr inbounds %class.MeshConverter, ptr %153, i32 0, i32 12
  %790 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt13unordered_mapIjjSt4hashIjESt8equal_toIjESaISt4pairIKjjEEEixERS5_(ptr noundef nonnull align 8 dereferenceable(56) %73, ptr noundef nonnull align 4 dereferenceable(4) %789)
          to label %791 unwind label %813

791:                                              ; preds = %788
  %792 = load i32, ptr %790, align 4, !tbaa !9
  store i32 %792, ptr %135, align 4, !tbaa !9
  %793 = getelementptr inbounds i32, ptr %135, i64 1
  store i32 2, ptr %793, align 4, !tbaa !9
  %794 = getelementptr inbounds %"class.std::initializer_list", ptr %134, i32 0, i32 0
  store ptr %135, ptr %794, align 8, !tbaa !33
  %795 = getelementptr inbounds %"class.std::initializer_list", ptr %134, i32 0, i32 1
  store i64 2, ptr %795, align 8, !tbaa !35
  %796 = getelementptr inbounds { ptr, i64 }, ptr %134, i32 0, i32 0
  %797 = load ptr, ptr %796, align 8
  %798 = getelementptr inbounds { ptr, i64 }, ptr %134, i32 0, i32 1
  %799 = load i64, ptr %798, align 8
  invoke void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpESt16initializer_listIjE(ptr noundef nonnull align 8 dereferenceable(24) %124, i32 noundef 71, ptr %797, i64 %799)
          to label %800 unwind label %813

800:                                              ; preds = %791
  call void @llvm.lifetime.end.p0(i64 8, ptr %135) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %136) #6
  %801 = getelementptr inbounds %class.MeshConverter, ptr %153, i32 0, i32 2
  %802 = load ptr, ptr %801, align 8, !tbaa !11
  store ptr %802, ptr %136, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %137) #6
  %803 = load ptr, ptr %136, align 8, !tbaa !5
  %804 = invoke { ptr, i32 } @_ZNK8libspirv8Bytecode5beginEv(ptr noundef nonnull align 8 dereferenceable(20) %803)
          to label %805 unwind label %817

805:                                              ; preds = %800
  store { ptr, i32 } %804, ptr %138, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %137, ptr align 8 %138, i64 12, i1 false)
  call void @llvm.lifetime.start.p0(i64 16, ptr %139) #6
  %806 = load ptr, ptr %136, align 8, !tbaa !5
  %807 = invoke { ptr, i32 } @_ZNK8libspirv8Bytecode3endEv(ptr noundef nonnull align 8 dereferenceable(20) %806)
          to label %808 unwind label %821

808:                                              ; preds = %805
  store { ptr, i32 } %807, ptr %140, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %139, ptr align 8 %140, i64 12, i1 false)
  br label %809

809:                                              ; preds = %885, %808
  %810 = invoke noundef zeroext i1 @_ZN8libspirvneERKNS_8Bytecode8IteratorES3_(ptr noundef nonnull align 8 dereferenceable(12) %137, ptr noundef nonnull align 8 dereferenceable(12) %139)
          to label %811 unwind label %821

811:                                              ; preds = %809
  br i1 %810, label %825, label %812

812:                                              ; preds = %811
  store i32 12, ptr %128, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %139) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %137) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %136) #6
  br label %889

813:                                              ; preds = %791, %788
  %814 = landingpad { ptr, i32 }
          cleanup
  %815 = extractvalue { ptr, i32 } %814, 0
  store ptr %815, ptr %80, align 8
  %816 = extractvalue { ptr, i32 } %814, 1
  store i32 %816, ptr %81, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %135) #6
  br label %977

817:                                              ; preds = %800
  %818 = landingpad { ptr, i32 }
          cleanup
  %819 = extractvalue { ptr, i32 } %818, 0
  store ptr %819, ptr %80, align 8
  %820 = extractvalue { ptr, i32 } %818, 1
  store i32 %820, ptr %81, align 4
  br label %888

821:                                              ; preds = %884, %809, %805
  %822 = landingpad { ptr, i32 }
          cleanup
  %823 = extractvalue { ptr, i32 } %822, 0
  store ptr %823, ptr %80, align 8
  %824 = extractvalue { ptr, i32 } %822, 1
  store i32 %824, ptr %81, align 4
  br label %887

825:                                              ; preds = %811
  call void @llvm.lifetime.start.p0(i64 8, ptr %141) #6
  %826 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode8IteratordeEv(ptr noundef nonnull align 8 dereferenceable(12) %137)
          to label %827 unwind label %875

827:                                              ; preds = %825
  store ptr %826, ptr %141, align 8, !tbaa !5
  %828 = load ptr, ptr %141, align 8, !tbaa !5
  %829 = invoke noundef i32 @_ZNK8libspirv8Bytecode6OpCode2opEv(ptr noundef nonnull align 4 dereferenceable(4) %828)
          to label %830 unwind label %875

830:                                              ; preds = %827
  %831 = icmp eq i32 %829, 72
  br i1 %831, label %832, label %883

832:                                              ; preds = %830
  %833 = load ptr, ptr %141, align 8, !tbaa !5
  %834 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %833, i16 noundef zeroext 1)
          to label %835 unwind label %875

835:                                              ; preds = %832
  %836 = load i32, ptr %834, align 4, !tbaa !9
  %837 = getelementptr inbounds %class.MeshConverter, ptr %153, i32 0, i32 12
  %838 = load i32, ptr %837, align 4, !tbaa !45
  %839 = icmp eq i32 %836, %838
  br i1 %839, label %840, label %883

840:                                              ; preds = %835
  %841 = load ptr, ptr %141, align 8, !tbaa !5
  %842 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %841, i16 noundef zeroext 3)
          to label %843 unwind label %875

843:                                              ; preds = %840
  %844 = load i32, ptr %842, align 4, !tbaa !9
  %845 = icmp eq i32 %844, 11
  br i1 %845, label %846, label %883

846:                                              ; preds = %843
  call void @llvm.lifetime.start.p0(i64 16, ptr %143) #6
  %847 = load ptr, ptr %141, align 8, !tbaa !5
  %848 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %847, i16 noundef zeroext 1)
          to label %849 unwind label %879

849:                                              ; preds = %846
  %850 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt13unordered_mapIjjSt4hashIjESt8equal_toIjESaISt4pairIKjjEEEixERS5_(ptr noundef nonnull align 8 dereferenceable(56) %73, ptr noundef nonnull align 4 dereferenceable(4) %848)
          to label %851 unwind label %879

851:                                              ; preds = %849
  %852 = load i32, ptr %850, align 4, !tbaa !9
  store i32 %852, ptr %143, align 4, !tbaa !9
  %853 = getelementptr inbounds i32, ptr %143, i64 1
  %854 = load ptr, ptr %141, align 8, !tbaa !5
  %855 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %854, i16 noundef zeroext 2)
          to label %856 unwind label %879

856:                                              ; preds = %851
  %857 = load i32, ptr %855, align 4, !tbaa !9
  store i32 %857, ptr %853, align 4, !tbaa !9
  %858 = getelementptr inbounds i32, ptr %143, i64 2
  %859 = load ptr, ptr %141, align 8, !tbaa !5
  %860 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %859, i16 noundef zeroext 3)
          to label %861 unwind label %879

861:                                              ; preds = %856
  %862 = load i32, ptr %860, align 4, !tbaa !9
  store i32 %862, ptr %858, align 4, !tbaa !9
  %863 = getelementptr inbounds i32, ptr %143, i64 3
  %864 = load ptr, ptr %141, align 8, !tbaa !5
  %865 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %864, i16 noundef zeroext 4)
          to label %866 unwind label %879

866:                                              ; preds = %861
  %867 = load i32, ptr %865, align 4, !tbaa !9
  store i32 %867, ptr %863, align 4, !tbaa !9
  %868 = getelementptr inbounds %"class.std::initializer_list", ptr %142, i32 0, i32 0
  store ptr %143, ptr %868, align 8, !tbaa !33
  %869 = getelementptr inbounds %"class.std::initializer_list", ptr %142, i32 0, i32 1
  store i64 4, ptr %869, align 8, !tbaa !35
  %870 = getelementptr inbounds { ptr, i64 }, ptr %142, i32 0, i32 0
  %871 = load ptr, ptr %870, align 8
  %872 = getelementptr inbounds { ptr, i64 }, ptr %142, i32 0, i32 1
  %873 = load i64, ptr %872, align 8
  invoke void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpESt16initializer_listIjE(ptr noundef nonnull align 8 dereferenceable(24) %124, i32 noundef 72, ptr %871, i64 %873)
          to label %874 unwind label %879

874:                                              ; preds = %866
  call void @llvm.lifetime.end.p0(i64 16, ptr %143) #6
  br label %883

875:                                              ; preds = %840, %832, %827, %825
  %876 = landingpad { ptr, i32 }
          cleanup
  %877 = extractvalue { ptr, i32 } %876, 0
  store ptr %877, ptr %80, align 8
  %878 = extractvalue { ptr, i32 } %876, 1
  store i32 %878, ptr %81, align 4
  br label %886

879:                                              ; preds = %866, %861, %856, %851, %849, %846
  %880 = landingpad { ptr, i32 }
          cleanup
  %881 = extractvalue { ptr, i32 } %880, 0
  store ptr %881, ptr %80, align 8
  %882 = extractvalue { ptr, i32 } %880, 1
  store i32 %882, ptr %81, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %143) #6
  br label %886

883:                                              ; preds = %874, %843, %835, %830
  call void @llvm.lifetime.end.p0(i64 8, ptr %141) #6
  br label %884

884:                                              ; preds = %883
  invoke void @_ZN8libspirv8Bytecode8IteratorppEv(ptr noundef nonnull align 8 dereferenceable(12) %137)
          to label %885 unwind label %821

885:                                              ; preds = %884
  br label %809

886:                                              ; preds = %879, %875
  call void @llvm.lifetime.end.p0(i64 8, ptr %141) #6
  br label %887

887:                                              ; preds = %886, %821
  call void @llvm.lifetime.end.p0(i64 16, ptr %139) #6
  br label %888

888:                                              ; preds = %887, %817
  call void @llvm.lifetime.end.p0(i64 16, ptr %137) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %136) #6
  br label %977

889:                                              ; preds = %812
  call void @llvm.lifetime.start.p0(i64 24, ptr %144) #6
  %890 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZN8libspirv15MutableBytecode14findSectionEndENS_8Bytecode7SectionE(ptr dead_on_unwind writable sret(%"struct.libspirv::MutableBytecode::Iterator") align 8 %144, ptr noundef nonnull align 8 dereferenceable(48) %890, i8 noundef zeroext 7)
          to label %891 unwind label %904

891:                                              ; preds = %889
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %124, ptr align 8 %144, i64 24, i1 false)
  call void @llvm.lifetime.end.p0(i64 24, ptr %144) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %145) #6
  %892 = getelementptr inbounds %class.MeshConverter, ptr %153, i32 0, i32 2
  %893 = load ptr, ptr %892, align 8, !tbaa !11
  store ptr %893, ptr %145, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %146) #6
  %894 = load ptr, ptr %145, align 8, !tbaa !5
  %895 = invoke { ptr, i32 } @_ZNK8libspirv8Bytecode5beginEv(ptr noundef nonnull align 8 dereferenceable(20) %894)
          to label %896 unwind label %908

896:                                              ; preds = %891
  store { ptr, i32 } %895, ptr %147, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %146, ptr align 8 %147, i64 12, i1 false)
  call void @llvm.lifetime.start.p0(i64 16, ptr %148) #6
  %897 = load ptr, ptr %145, align 8, !tbaa !5
  %898 = invoke { ptr, i32 } @_ZNK8libspirv8Bytecode3endEv(ptr noundef nonnull align 8 dereferenceable(20) %897)
          to label %899 unwind label %912

899:                                              ; preds = %896
  store { ptr, i32 } %898, ptr %149, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %148, ptr align 8 %149, i64 12, i1 false)
  br label %900

900:                                              ; preds = %972, %899
  %901 = invoke noundef zeroext i1 @_ZN8libspirvneERKNS_8Bytecode8IteratorES3_(ptr noundef nonnull align 8 dereferenceable(12) %146, ptr noundef nonnull align 8 dereferenceable(12) %148)
          to label %902 unwind label %912

902:                                              ; preds = %900
  br i1 %901, label %916, label %903

903:                                              ; preds = %902
  store i32 14, ptr %128, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %148) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %146) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %145) #6
  br label %976

904:                                              ; preds = %889
  %905 = landingpad { ptr, i32 }
          cleanup
  %906 = extractvalue { ptr, i32 } %905, 0
  store ptr %906, ptr %80, align 8
  %907 = extractvalue { ptr, i32 } %905, 1
  store i32 %907, ptr %81, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %144) #6
  br label %977

908:                                              ; preds = %891
  %909 = landingpad { ptr, i32 }
          cleanup
  %910 = extractvalue { ptr, i32 } %909, 0
  store ptr %910, ptr %80, align 8
  %911 = extractvalue { ptr, i32 } %909, 1
  store i32 %911, ptr %81, align 4
  br label %975

912:                                              ; preds = %971, %900, %896
  %913 = landingpad { ptr, i32 }
          cleanup
  %914 = extractvalue { ptr, i32 } %913, 0
  store ptr %914, ptr %80, align 8
  %915 = extractvalue { ptr, i32 } %913, 1
  store i32 %915, ptr %81, align 4
  br label %974

916:                                              ; preds = %902
  call void @llvm.lifetime.start.p0(i64 8, ptr %150) #6
  %917 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode8IteratordeEv(ptr noundef nonnull align 8 dereferenceable(12) %146)
          to label %918 unwind label %957

918:                                              ; preds = %916
  store ptr %917, ptr %150, align 8, !tbaa !5
  %919 = load ptr, ptr %150, align 8, !tbaa !5
  %920 = invoke noundef i32 @_ZNK8libspirv8Bytecode6OpCode2opEv(ptr noundef nonnull align 4 dereferenceable(4) %919)
          to label %921 unwind label %957

921:                                              ; preds = %918
  %922 = icmp eq i32 %920, 6
  br i1 %922, label %923, label %970

923:                                              ; preds = %921
  %924 = load ptr, ptr %150, align 8, !tbaa !5
  %925 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %924, i16 noundef zeroext 1)
          to label %926 unwind label %957

926:                                              ; preds = %923
  %927 = load i32, ptr %925, align 4, !tbaa !9
  %928 = getelementptr inbounds %class.MeshConverter, ptr %153, i32 0, i32 12
  %929 = load i32, ptr %928, align 4, !tbaa !45
  %930 = icmp eq i32 %927, %929
  br i1 %930, label %931, label %970

931:                                              ; preds = %926
  call void @llvm.lifetime.start.p0(i64 8, ptr %151) #6
  %932 = load ptr, ptr %4, align 8, !tbaa !5
  %933 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode8IteratordeEv(ptr noundef nonnull align 8 dereferenceable(12) %124)
          to label %934 unwind label %961

934:                                              ; preds = %931
  %935 = invoke noundef i64 @_ZNK8libspirv8Bytecode8toOffsetERKNS0_6OpCodeE(ptr noundef nonnull align 8 dereferenceable(20) %932, ptr noundef nonnull align 4 dereferenceable(4) %933)
          to label %936 unwind label %961

936:                                              ; preds = %934
  store i64 %935, ptr %151, align 8, !tbaa !46
  %937 = load ptr, ptr %150, align 8, !tbaa !5
  %938 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %937, i16 noundef zeroext 1)
          to label %939 unwind label %961

939:                                              ; preds = %936
  %940 = load ptr, ptr %150, align 8, !tbaa !5
  %941 = invoke noundef zeroext i16 @_ZNK8libspirv8Bytecode6OpCode6lengthEv(ptr noundef nonnull align 4 dereferenceable(4) %940)
          to label %942 unwind label %961

942:                                              ; preds = %939
  %943 = zext i16 %941 to i32
  %944 = sub nsw i32 %943, 1
  %945 = sext i32 %944 to i64
  invoke void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpEPKjm(ptr noundef nonnull align 8 dereferenceable(24) %124, i32 noundef 6, ptr noundef %938, i64 noundef %945)
          to label %946 unwind label %961

946:                                              ; preds = %942
  call void @llvm.lifetime.start.p0(i64 24, ptr %152) #6
  %947 = load ptr, ptr %4, align 8, !tbaa !5
  %948 = load i64, ptr %151, align 8, !tbaa !46
  invoke void @_ZN8libspirv15MutableBytecode10fromOffsetEm(ptr dead_on_unwind writable sret(%"struct.libspirv::MutableBytecode::Iterator") align 8 %152, ptr noundef nonnull align 8 dereferenceable(48) %947, i64 noundef %948)
          to label %949 unwind label %965

949:                                              ; preds = %946
  %950 = load ptr, ptr %150, align 8, !tbaa !5
  %951 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %950, i16 noundef zeroext 1)
          to label %952 unwind label %965

952:                                              ; preds = %949
  %953 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt13unordered_mapIjjSt4hashIjESt8equal_toIjESaISt4pairIKjjEEEixERS5_(ptr noundef nonnull align 8 dereferenceable(56) %73, ptr noundef nonnull align 4 dereferenceable(4) %951)
          to label %954 unwind label %965

954:                                              ; preds = %952
  %955 = load i32, ptr %953, align 4, !tbaa !9
  invoke void @_ZN8libspirv15MutableBytecode8Iterator3setEtj(ptr noundef nonnull align 8 dereferenceable(24) %152, i16 noundef zeroext 1, i32 noundef %955)
          to label %956 unwind label %965

956:                                              ; preds = %954
  call void @llvm.lifetime.end.p0(i64 24, ptr %152) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %151) #6
  br label %970

957:                                              ; preds = %923, %918, %916
  %958 = landingpad { ptr, i32 }
          cleanup
  %959 = extractvalue { ptr, i32 } %958, 0
  store ptr %959, ptr %80, align 8
  %960 = extractvalue { ptr, i32 } %958, 1
  store i32 %960, ptr %81, align 4
  br label %973

961:                                              ; preds = %942, %939, %936, %934, %931
  %962 = landingpad { ptr, i32 }
          cleanup
  %963 = extractvalue { ptr, i32 } %962, 0
  store ptr %963, ptr %80, align 8
  %964 = extractvalue { ptr, i32 } %962, 1
  store i32 %964, ptr %81, align 4
  br label %969

965:                                              ; preds = %954, %952, %949, %946
  %966 = landingpad { ptr, i32 }
          cleanup
  %967 = extractvalue { ptr, i32 } %966, 0
  store ptr %967, ptr %80, align 8
  %968 = extractvalue { ptr, i32 } %966, 1
  store i32 %968, ptr %81, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %152) #6
  br label %969

969:                                              ; preds = %965, %961
  call void @llvm.lifetime.end.p0(i64 8, ptr %151) #6
  br label %973

970:                                              ; preds = %956, %926, %921
  call void @llvm.lifetime.end.p0(i64 8, ptr %150) #6
  br label %971

971:                                              ; preds = %970
  invoke void @_ZN8libspirv8Bytecode8IteratorppEv(ptr noundef nonnull align 8 dereferenceable(12) %146)
          to label %972 unwind label %912

972:                                              ; preds = %971
  br label %900

973:                                              ; preds = %969, %957
  call void @llvm.lifetime.end.p0(i64 8, ptr %150) #6
  br label %974

974:                                              ; preds = %973, %912
  call void @llvm.lifetime.end.p0(i64 16, ptr %148) #6
  br label %975

975:                                              ; preds = %974, %908
  call void @llvm.lifetime.end.p0(i64 16, ptr %146) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %145) #6
  br label %977

976:                                              ; preds = %903
  call void @llvm.lifetime.end.p0(i64 24, ptr %124) #6
  call void @_ZNSt13unordered_mapIjjSt4hashIjESt8equal_toIjESaISt4pairIKjjEEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %73) #6
  call void @llvm.lifetime.end.p0(i64 56, ptr %73) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %24) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #6
  ret void

977:                                              ; preds = %975, %904, %888, %813, %784, %747
  call void @llvm.lifetime.end.p0(i64 24, ptr %124) #6
  br label %978

978:                                              ; preds = %977, %721, %679, %675, %671, %667, %663, %659, %603, %590, %570, %524, %520, %516, %512, %453
  call void @_ZNSt13unordered_mapIjjSt4hashIjESt8equal_toIjESaISt4pairIKjjEEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %73) #6
  call void @llvm.lifetime.end.p0(i64 56, ptr %73) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %24) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #6
  br label %979

979:                                              ; preds = %978
  %980 = load ptr, ptr %80, align 8
  %981 = load i32, ptr %81, align 4
  %982 = insertvalue { ptr, i32 } poison, ptr %980, 0
  %983 = insertvalue { ptr, i32 } %982, i32 %981, 1
  resume { ptr, i32 } %983

984:                                              ; preds = %779
  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_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(56)) #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

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

declare void @_ZN8libspirv8Bytecode12traverseTypeEjSt8functionIFvPKNS0_11AccessChainEjEENS0_12TraverseModeE(ptr noundef nonnull align 8 dereferenceable(20), i32 noundef, ptr noundef, i8 noundef zeroext) #2

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

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 @_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

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: 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

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

declare noundef i64 @_ZNK8libspirv8Bytecode8toOffsetERKNS0_6OpCodeE(ptr noundef nonnull align 8 dereferenceable(20), ptr noundef nonnull align 4 dereferenceable(4)) #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 void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpEjjPKc(ptr noundef nonnull align 8 dereferenceable(24), i32 noundef, i32 noundef, i32 noundef, ptr noundef) #2

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @"_ZNSt8functionIFvPKN8libspirv8Bytecode11AccessChainEjEEC2IZN13MeshConverter8emitVertERNS0_15MutableBytecodeEE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(96)) unnamed_addr #0 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZNSt13unordered_mapIjjSt4hashIjESt8equal_toIjESaISt4pairIKjjEEED2Ev(ptr noundef nonnull align 8 dereferenceable(56)) unnamed_addr #5 align 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 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !6, i64 8}
!12 = !{!"_ZTS13MeshConverter", !13, i64 0, !6, i64 8, !15, i64 16, !15, i64 64, !7, i64 112, !10, i64 124, !10, i64 128, !10, i64 132, !10, i64 136, !10, i64 140, !10, i64 144, !10, i64 148, !10, i64 152, !10, i64 156, !10, i64 160, !10, i64 164, !10, i64 168, !10, i64 172, !10, i64 176, !10, i64 180, !10, i64 184, !10, i64 188, !10, i64 192, !10, i64 196, !10, i64 200, !22, i64 208, !22, i64 264, !27, i64 320, !29, i64 376, !10, i64 400, !10, i64 404, !10, i64 408, !10, i64 412, !10, i64 416, !10, i64 420, !14, i64 424}
!13 = !{!"_ZTSN13MeshConverter7OptionsE", !14, i64 0, !14, i64 1}
!14 = !{!"bool", !7, i64 0}
!15 = !{!"_ZTSN8libspirv15MutableBytecodeE", !16, i64 0, !18, i64 24}
!16 = !{!"_ZTSN8libspirv8BytecodeE", !6, i64 0, !17, i64 8, !10, i64 16}
!17 = !{!"long", !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, !17, i64 8, !24, i64 16, !17, 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, !17, 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, !17, i64 8, !24, i64 16, !17, 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 = !{!34, !6, i64 0}
!34 = !{!"_ZTSSt16initializer_listIjE", !6, i64 0, !17, i64 8}
!35 = !{!34, !17, i64 8}
!36 = !{!37, !10, i64 4}
!37 = !{!"_ZTSSt4pairIKjN13MeshConverter7VaryingEE", !10, i64 0, !38, i64 4}
!38 = !{!"_ZTSN13MeshConverter7VaryingE", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12}
!39 = !{!40, !6, i64 24}
!40 = !{!"_ZTSZN13MeshConverter8emitVertERN8libspirv15MutableBytecodeEE3$_0", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!41 = !{!37, !10, i64 12}
!42 = !{!43, !6, i64 0}
!43 = !{!"_ZTSZN13MeshConverter8emitVertERN8libspirv15MutableBytecodeEE3$_1", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88}
!44 = !{!37, !10, i64 16}
!45 = !{!12, !10, i64 148}
!46 = !{!17, !17, i64 0}


; 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 }>
%"class.std::unordered_map.38" = type { %"class.std::_Hashtable.39" }
%"class.std::_Hashtable.39" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.std::__detail::_Hash_node_base" = type { ptr }
%"struct.std::__detail::_Prime_rehash_policy" = type { float, i64 }
%"struct.std::__detail::_Node_iterator" = type { %"struct.std::__detail::_Node_iterator_base" }
%"struct.std::__detail::_Node_iterator_base" = type { ptr }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%class.anon.52 = type { ptr, ptr, ptr, ptr }
%"class.std::basic_string_view" = type { i64, ptr }
%class.anon.53 = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%"class.std::initializer_list" = type { ptr, i64 }
%"struct.libspirv::Bytecode::Iterator" = type <{ ptr, i32, [4 x i8] }>

@.str.4 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [5 x i8], align 1

declare i32 @__gxx_personality_v0(...)

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

.lr.ph:                                           ; preds = %2
  %149 = getelementptr inbounds i8, ptr %39, i64 8
  %150 = getelementptr inbounds i8, ptr %39, i64 16
  %151 = getelementptr inbounds i8, ptr %39, i64 24
  br label %155

._crit_edge.loopexit:                             ; preds = %161
  %.pre = load i32, ptr %5, align 4, !tbaa !5
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %2
  %152 = phi i32 [ %.pre, %._crit_edge.loopexit ], [ %125, %2 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #6
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %40) #6
  store i32 %94, ptr %40, align 4, !tbaa !5
  %153 = getelementptr inbounds i8, ptr %40, i64 4
  store i32 %152, ptr %153, align 4, !tbaa !5
  %154 = getelementptr inbounds i8, ptr %40, i64 8
  store i32 %88, ptr %154, align 4, !tbaa !5
  invoke void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpESt16initializer_listIjE(ptr noundef nonnull align 8 dereferenceable(24) %10, i32 noundef 30, ptr nonnull %40, i64 3)
          to label %169 unwind label %188

155:                                              ; preds = %.lr.ph, %161
  %156 = call noundef nonnull align 4 dereferenceable(20) ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKjN13MeshConverter7VaryingEELb0ELb0EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %36) #6
  %157 = load ptr, ptr %96, align 8, !tbaa !9
  %158 = getelementptr inbounds i8, ptr %156, i64 4
  %159 = load i32, ptr %158, align 4, !tbaa !32
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %39) #6
  store ptr %35, ptr %39, align 8, !tbaa !35
  store ptr %1, ptr %149, align 8, !tbaa !35
  store ptr %10, ptr %150, align 8, !tbaa !35
  store ptr %0, ptr %151, align 8, !tbaa !36
  invoke void @"_ZNSt8functionIFvPKN8libspirv8Bytecode11AccessChainEjEEC2IZN13MeshConverter8emitVertERNS0_15MutableBytecodeEE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %38, ptr noundef nonnull align 8 dereferenceable(32) %39)
          to label %160 unwind label %164

160:                                              ; preds = %155
  invoke void @_ZN8libspirv8Bytecode12traverseTypeEjSt8functionIFvPKNS0_11AccessChainEjEENS0_12TraverseModeE(ptr noundef nonnull align 8 dereferenceable(20) %157, i32 noundef %159, ptr noundef nonnull %38, i8 noundef zeroext 1)
          to label %161 unwind label %166

161:                                              ; preds = %160
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %39) #6
  %162 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8__detail14_Node_iteratorISt4pairIKjN13MeshConverter7VaryingEELb0ELb0EEppEv(ptr noundef nonnull align 8 dereferenceable(8) %36) #6
  %163 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseISt4pairIKjN13MeshConverter7VaryingEELb0EEES8_(ptr noundef nonnull align 8 dereferenceable(8) %36, ptr noundef nonnull align 8 dereferenceable(8) %37) #6
  br i1 %163, label %155, label %._crit_edge.loopexit

164:                                              ; preds = %155
  %165 = landingpad { ptr, i32 }
          cleanup
  br label %168

166:                                              ; preds = %160
  %167 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #6
  br label %168

168:                                              ; preds = %166, %164
  %.pn220 = phi { ptr, i32 } [ %167, %166 ], [ %165, %164 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %39) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #6
  br label %412

169:                                              ; preds = %._crit_edge
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %40) #6
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %41) #6
  store i32 %95, ptr %41, align 4, !tbaa !5
  %170 = getelementptr inbounds i8, ptr %41, i64 4
  store i32 12, ptr %170, align 4, !tbaa !5
  %171 = getelementptr inbounds i8, ptr %41, i64 8
  store i32 %94, ptr %171, align 4, !tbaa !5
  invoke void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpESt16initializer_listIjE(ptr noundef nonnull align 8 dereferenceable(24) %10, i32 noundef 32, ptr nonnull %41, i64 3)
          to label %172 unwind label %190

172:                                              ; preds = %169
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %41) #6
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %42) #6
  store i32 %90, ptr %42, align 4, !tbaa !5
  %173 = getelementptr inbounds i8, ptr %42, i64 4
  store i32 %81, ptr %173, align 4, !tbaa !5
  %174 = getelementptr inbounds i8, ptr %42, i64 8
  store i32 1, ptr %174, align 4, !tbaa !5
  invoke void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpESt16initializer_listIjE(ptr noundef nonnull align 8 dereferenceable(24) %10, i32 noundef 59, ptr nonnull %42, i64 3)
          to label %175 unwind label %192

175:                                              ; preds = %172
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %42) #6
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %43) #6
  store i32 %95, ptr %43, align 4, !tbaa !5
  %176 = getelementptr inbounds i8, ptr %43, i64 4
  %177 = load i32, ptr %4, align 4, !tbaa !5
  store i32 %177, ptr %176, align 4, !tbaa !5
  %178 = getelementptr inbounds i8, ptr %43, i64 8
  store i32 12, ptr %178, align 4, !tbaa !5
  invoke void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpESt16initializer_listIjE(ptr noundef nonnull align 8 dereferenceable(24) %10, i32 noundef 59, ptr nonnull %43, i64 3)
          to label %179 unwind label %194

179:                                              ; preds = %175
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %43) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %44) #6
  %180 = call ptr @_ZNSt13unordered_mapIjN13MeshConverter7VaryingESt4hashIjESt8equal_toIjESaISt4pairIKjS1_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(56) %145) #6
  store ptr %180, ptr %44, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %45) #6
  %181 = call ptr @_ZNSt13unordered_mapIjN13MeshConverter7VaryingESt4hashIjESt8equal_toIjESaISt4pairIKjS1_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %145) #6
  store ptr %181, ptr %45, align 8
  %182 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseISt4pairIKjN13MeshConverter7VaryingEELb0EEES8_(ptr noundef nonnull align 8 dereferenceable(8) %44, ptr noundef nonnull align 8 dereferenceable(8) %45) #6
  br i1 %182, label %.lr.ph224, label %._crit_edge225

.lr.ph224:                                        ; preds = %179
  %183 = getelementptr inbounds i8, ptr %47, i64 4
  %184 = getelementptr inbounds i8, ptr %47, i64 8
  br label %196

._crit_edge225:                                   ; preds = %205, %179
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %45) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %44) #6
  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
  %185 = load i64, ptr %49, align 8
  %186 = getelementptr inbounds i8, ptr %49, i64 8
  %187 = load ptr, ptr %186, align 8
  invoke 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 %185, ptr %187)
          to label %217 unwind label %221

188:                                              ; preds = %._crit_edge
  %189 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %40) #6
  br label %412

190:                                              ; preds = %169
  %191 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %41) #6
  br label %412

192:                                              ; preds = %172
  %193 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %42) #6
  br label %412

194:                                              ; preds = %175
  %195 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %43) #6
  br label %412

196:                                              ; preds = %.lr.ph224, %205
  %197 = call noundef nonnull align 4 dereferenceable(20) ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKjN13MeshConverter7VaryingEELb0ELb0EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %44) #6
  %198 = invoke noundef i32 @_ZN8libspirv15MutableBytecode13fetchAddBoundEv(ptr noundef nonnull align 8 dereferenceable(48) %1)
          to label %199 unwind label %209

199:                                              ; preds = %196
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %46) #6
  %200 = getelementptr inbounds i8, ptr %197, i64 4
  %201 = load i32, ptr %200, align 4, !tbaa !32
  store i32 %201, ptr %46, align 4, !tbaa !5
  %202 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt13unordered_mapIjjSt4hashIjESt8equal_toIjESaISt4pairIKjjEEEixERS5_(ptr noundef nonnull align 8 dereferenceable(56) %35, ptr noundef nonnull align 4 dereferenceable(4) %46)
          to label %203 unwind label %211

203:                                              ; preds = %199
  %204 = load i32, ptr %202, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %47) #6
  store i32 %204, ptr %47, align 4, !tbaa !5
  store i32 %198, ptr %183, align 4, !tbaa !5
  store i32 3, ptr %184, align 4, !tbaa !5
  invoke void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpESt16initializer_listIjE(ptr noundef nonnull align 8 dereferenceable(24) %10, i32 noundef 59, ptr nonnull %47, i64 3)
          to label %205 unwind label %213

205:                                              ; preds = %203
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %47) #6
  %206 = getelementptr inbounds i8, ptr %197, i64 12
  store i32 %198, ptr %206, align 4, !tbaa !38
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %46) #6
  %207 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8__detail14_Node_iteratorISt4pairIKjN13MeshConverter7VaryingEELb0ELb0EEppEv(ptr noundef nonnull align 8 dereferenceable(8) %44) #6
  %208 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseISt4pairIKjN13MeshConverter7VaryingEELb0EEES8_(ptr noundef nonnull align 8 dereferenceable(8) %44, ptr noundef nonnull align 8 dereferenceable(8) %45) #6
  br i1 %208, label %196, label %._crit_edge225

209:                                              ; preds = %196
  %210 = landingpad { ptr, i32 }
          cleanup
  br label %216

211:                                              ; preds = %199
  %212 = landingpad { ptr, i32 }
          cleanup
  br label %215

213:                                              ; preds = %203
  %214 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %47) #6
  br label %215

215:                                              ; preds = %213, %211
  %.pn217 = phi { ptr, i32 } [ %214, %213 ], [ %212, %211 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %46) #6
  br label %216

216:                                              ; preds = %215, %209
  %.pn217.pn = phi { ptr, i32 } [ %.pn217, %215 ], [ %210, %209 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %45) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %44) #6
  br label %412

217:                                              ; preds = %._crit_edge225
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %10, ptr noundef nonnull align 8 dereferenceable(24) %48, i64 24, i1 false)
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %48) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %50) #6
  %218 = call ptr @_ZNSt13unordered_mapIjN13MeshConverter7VaryingESt4hashIjESt8equal_toIjESaISt4pairIKjS1_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(56) %145) #6
  store ptr %218, ptr %50, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %51) #6
  %219 = call ptr @_ZNSt13unordered_mapIjN13MeshConverter7VaryingESt4hashIjESt8equal_toIjESaISt4pairIKjS1_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %145) #6
  store ptr %219, ptr %51, align 8
  %220 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseISt4pairIKjN13MeshConverter7VaryingEELb0EEES8_(ptr noundef nonnull align 8 dereferenceable(8) %50, ptr noundef nonnull align 8 dereferenceable(8) %51) #6
  br i1 %220, label %.lr.ph227, label %._crit_edge228

._crit_edge228:                                   ; preds = %226, %217
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %51) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %50) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %52) #6
  invoke void @_ZN8libspirv15MutableBytecode3endEv(ptr dead_on_unwind nonnull writable sret(%"struct.libspirv::MutableBytecode::Iterator") align 8 %52, ptr noundef nonnull align 8 dereferenceable(48) %1)
          to label %231 unwind label %260

221:                                              ; preds = %._crit_edge225
  %222 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %48) #6
  br label %412

.lr.ph227:                                        ; preds = %217, %226
  %223 = call noundef nonnull align 4 dereferenceable(20) ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKjN13MeshConverter7VaryingEELb0ELb0EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %50) #6
  %224 = getelementptr inbounds i8, ptr %223, i64 12
  %225 = load i32, ptr %224, align 4, !tbaa !38
  invoke void @_ZN8libspirv15MutableBytecode8Iterator6appendEj(ptr noundef nonnull align 8 dereferenceable(24) %10, i32 noundef %225)
          to label %226 unwind label %229

226:                                              ; preds = %.lr.ph227
  %227 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8__detail14_Node_iteratorISt4pairIKjN13MeshConverter7VaryingEELb0ELb0EEppEv(ptr noundef nonnull align 8 dereferenceable(8) %50) #6
  %228 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseISt4pairIKjN13MeshConverter7VaryingEELb0EEES8_(ptr noundef nonnull align 8 dereferenceable(8) %50, ptr noundef nonnull align 8 dereferenceable(8) %51) #6
  br i1 %228, label %.lr.ph227, label %._crit_edge228

229:                                              ; preds = %.lr.ph227
  %230 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %51) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %50) #6
  br label %412

231:                                              ; preds = %._crit_edge228
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %10, ptr noundef nonnull align 8 dereferenceable(24) %52, i64 24, i1 false)
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %52) #6
  invoke void @_ZN13MeshConverter13emitConstantsERN8libspirv15MutableBytecodeE(ptr noundef nonnull align 8 dereferenceable(425) %0, ptr noundef nonnull align 8 dereferenceable(48) %1)
          to label %232 unwind label %262

232:                                              ; preds = %231
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %53) #6
  invoke void @_ZN8libspirv15MutableBytecode3endEv(ptr dead_on_unwind nonnull writable sret(%"struct.libspirv::MutableBytecode::Iterator") align 8 %53, ptr noundef nonnull align 8 dereferenceable(48) %1)
          to label %233 unwind label %264

233:                                              ; preds = %232
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %10, ptr noundef nonnull align 8 dereferenceable(24) %53, i64 24, i1 false)
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %53) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %54) #6
  store i32 %83, ptr %54, align 4, !tbaa !5
  %234 = getelementptr inbounds i8, ptr %54, i64 4
  store i32 %78, ptr %234, align 4, !tbaa !5
  %235 = getelementptr inbounds i8, ptr %54, i64 8
  store i32 0, ptr %235, align 4, !tbaa !5
  %236 = getelementptr inbounds i8, ptr %54, i64 12
  store i32 %89, ptr %236, align 4, !tbaa !5
  invoke void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpESt16initializer_listIjE(ptr noundef nonnull align 8 dereferenceable(24) %10, i32 noundef 54, ptr nonnull %54, i64 4)
          to label %237 unwind label %266

237:                                              ; preds = %233
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %54) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %55) #6
  store i32 %79, ptr %55, align 4, !tbaa !5
  invoke void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpESt16initializer_listIjE(ptr noundef nonnull align 8 dereferenceable(24) %10, i32 noundef 248, ptr nonnull %55, i64 1)
          to label %238 unwind label %268

238:                                              ; preds = %237
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %55) #6
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %56) #6
  store i32 %85, ptr %56, align 4, !tbaa !5
  %239 = getelementptr inbounds i8, ptr %56, i64 4
  %240 = load i32, ptr %3, align 4, !tbaa !5
  store i32 %240, ptr %239, align 4, !tbaa !5
  %241 = getelementptr inbounds i8, ptr %56, i64 8
  store i32 %81, ptr %241, align 4, !tbaa !5
  invoke void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpESt16initializer_listIjE(ptr noundef nonnull align 8 dereferenceable(24) %10, i32 noundef 61, ptr nonnull %56, i64 3)
          to label %242 unwind label %270

242:                                              ; preds = %238
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %56) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %57) #6
  store i32 0, ptr %57, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %58) #6
  %243 = call ptr @_ZNSt13unordered_mapIjN13MeshConverter7VaryingESt4hashIjESt8equal_toIjESaISt4pairIKjS1_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(56) %145) #6
  store ptr %243, ptr %58, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %59) #6
  %244 = call ptr @_ZNSt13unordered_mapIjN13MeshConverter7VaryingESt4hashIjESt8equal_toIjESaISt4pairIKjS1_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %145) #6
  store ptr %244, ptr %59, align 8
  %245 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseISt4pairIKjN13MeshConverter7VaryingEELb0EEES8_(ptr noundef nonnull align 8 dereferenceable(8) %58, ptr noundef nonnull align 8 dereferenceable(8) %59) #6
  br i1 %245, label %.lr.ph230, label %._crit_edge231

.lr.ph230:                                        ; preds = %242
  %246 = getelementptr inbounds i8, ptr %62, i64 8
  %247 = getelementptr inbounds i8, ptr %62, i64 16
  %248 = getelementptr inbounds i8, ptr %62, i64 24
  %249 = getelementptr inbounds i8, ptr %62, i64 32
  %250 = getelementptr inbounds i8, ptr %62, i64 40
  %251 = getelementptr inbounds i8, ptr %62, i64 48
  %252 = getelementptr inbounds i8, ptr %62, i64 56
  %253 = getelementptr inbounds i8, ptr %62, i64 64
  %254 = getelementptr inbounds i8, ptr %62, i64 72
  %255 = getelementptr inbounds i8, ptr %62, i64 80
  %256 = getelementptr inbounds i8, ptr %62, i64 88
  br label %272

._crit_edge231:                                   ; preds = %280, %242
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %59) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %58) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %57) #6
  call void @_ZNSt16initializer_listIjEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %63) #6
  %257 = load ptr, ptr %63, align 8
  %258 = getelementptr inbounds i8, ptr %63, i64 8
  %259 = load i64, ptr %258, align 8
  invoke void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpESt16initializer_listIjE(ptr noundef nonnull align 8 dereferenceable(24) %10, i32 noundef 253, ptr %257, i64 %259)
          to label %288 unwind label %262

260:                                              ; preds = %._crit_edge228
  %261 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %52) #6
  br label %412

262:                                              ; preds = %288, %._crit_edge231, %231
  %263 = landingpad { ptr, i32 }
          cleanup
  br label %412

264:                                              ; preds = %232
  %265 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %53) #6
  br label %412

266:                                              ; preds = %233
  %267 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %54) #6
  br label %412

268:                                              ; preds = %237
  %269 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %55) #6
  br label %412

270:                                              ; preds = %238
  %271 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %56) #6
  br label %412

272:                                              ; preds = %.lr.ph230, %280
  %273 = call noundef nonnull align 4 dereferenceable(20) ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKjN13MeshConverter7VaryingEELb0ELb0EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %58) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %60) #6
  %274 = getelementptr inbounds i8, ptr %273, i64 4
  %275 = getelementptr inbounds i8, ptr %273, i64 12
  %276 = load i32, ptr %275, align 4, !tbaa !38
  store i32 %276, ptr %60, align 4, !tbaa !5
  %277 = load i32, ptr %274, align 4, !tbaa !32
  %278 = load ptr, ptr %96, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %62) #6
  store ptr %0, ptr %62, align 8, !tbaa !39
  store ptr %1, ptr %246, align 8, !tbaa !35
  store ptr %10, ptr %247, align 8, !tbaa !35
  store ptr %5, ptr %248, align 8, !tbaa !35
  store ptr %3, ptr %249, align 8, !tbaa !35
  store ptr %57, ptr %250, align 8, !tbaa !35
  store ptr %9, ptr %251, align 8, !tbaa !35
  store ptr %4, ptr %252, align 8, !tbaa !35
  store ptr %8, ptr %253, align 8, !tbaa !35
  store ptr %60, ptr %254, align 8, !tbaa !35
  store ptr %6, ptr %255, align 8, !tbaa !35
  store ptr %7, ptr %256, align 8, !tbaa !35
  invoke void @"_ZNSt8functionIFvPKN8libspirv8Bytecode11AccessChainEjEEC2IZN13MeshConverter8emitVertERNS0_15MutableBytecodeEE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %61, ptr noundef nonnull align 8 dereferenceable(96) %62)
          to label %279 unwind label %283

279:                                              ; preds = %272
  invoke void @_ZN8libspirv8Bytecode12traverseTypeEjSt8functionIFvPKNS0_11AccessChainEjEENS0_12TraverseModeE(ptr noundef nonnull align 8 dereferenceable(20) %278, i32 noundef %277, ptr noundef nonnull %61, i8 noundef zeroext 0)
          to label %280 unwind label %285

280:                                              ; preds = %279
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #6
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %62) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %60) #6
  %281 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8__detail14_Node_iteratorISt4pairIKjN13MeshConverter7VaryingEELb0ELb0EEppEv(ptr noundef nonnull align 8 dereferenceable(8) %58) #6
  %282 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseISt4pairIKjN13MeshConverter7VaryingEELb0EEES8_(ptr noundef nonnull align 8 dereferenceable(8) %58, ptr noundef nonnull align 8 dereferenceable(8) %59) #6
  br i1 %282, label %272, label %._crit_edge231

283:                                              ; preds = %272
  %284 = landingpad { ptr, i32 }
          cleanup
  br label %287

285:                                              ; preds = %279
  %286 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #6
  br label %287

287:                                              ; preds = %285, %283
  %.pn215 = phi { ptr, i32 } [ %286, %285 ], [ %284, %283 ]
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %62) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %60) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %59) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %58) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %57) #6
  br label %412

288:                                              ; preds = %._crit_edge231
  call void @_ZNSt16initializer_listIjEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %64) #6
  %289 = load ptr, ptr %64, align 8
  %290 = getelementptr inbounds i8, ptr %64, i64 8
  %291 = load i64, ptr %290, align 8
  invoke void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpESt16initializer_listIjE(ptr noundef nonnull align 8 dereferenceable(24) %10, i32 noundef 56, ptr %289, i64 %291)
          to label %292 unwind label %262

292:                                              ; preds = %288
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %65) #6
  invoke void @_ZN8libspirv15MutableBytecode14findSectionEndENS_8Bytecode7SectionE(ptr dead_on_unwind nonnull writable sret(%"struct.libspirv::MutableBytecode::Iterator") align 8 %65, ptr noundef nonnull align 8 dereferenceable(48) %1, i8 noundef zeroext 8)
          to label %293 unwind label %301

293:                                              ; preds = %292
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %66) #6
  %294 = call ptr @_ZNSt13unordered_mapIjN13MeshConverter7VaryingESt4hashIjESt8equal_toIjESaISt4pairIKjS1_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(56) %145) #6
  store ptr %294, ptr %66, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %67) #6
  %295 = call ptr @_ZNSt13unordered_mapIjN13MeshConverter7VaryingESt4hashIjESt8equal_toIjESaISt4pairIKjS1_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %145) #6
  store ptr %295, ptr %67, align 8
  %296 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseISt4pairIKjN13MeshConverter7VaryingEELb0EEES8_(ptr noundef nonnull align 8 dereferenceable(8) %66, ptr noundef nonnull align 8 dereferenceable(8) %67) #6
  br i1 %296, label %.lr.ph233, label %._crit_edge234

.lr.ph233:                                        ; preds = %293
  %297 = getelementptr inbounds i8, ptr %68, i64 4
  %298 = getelementptr inbounds i8, ptr %68, i64 8
  br label %303

._crit_edge234:                                   ; preds = %312, %293
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %67) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %66) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %69) #6
  %299 = getelementptr inbounds i8, ptr %0, i64 148
  %300 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt13unordered_mapIjjSt4hashIjESt8equal_toIjESaISt4pairIKjjEEEixERS5_(ptr noundef nonnull align 8 dereferenceable(56) %35, ptr noundef nonnull align 4 dereferenceable(4) %299)
          to label %317 unwind label %330

301:                                              ; preds = %292
  %302 = landingpad { ptr, i32 }
          cleanup
  br label %411

303:                                              ; preds = %.lr.ph233, %312
  %304 = call noundef nonnull align 4 dereferenceable(20) ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKjN13MeshConverter7VaryingEELb0ELb0EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %66) #6
  %305 = getelementptr inbounds i8, ptr %304, i64 16
  %306 = load i32, ptr %305, align 4, !tbaa !41
  %307 = icmp eq i32 %306, -1
  br i1 %307, label %312, label %308

308:                                              ; preds = %303
  %309 = getelementptr inbounds i8, ptr %304, i64 12
  %310 = load i32, ptr %309, align 4, !tbaa !38
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %68) #6
  store i32 %310, ptr %68, align 4, !tbaa !5
  store i32 30, ptr %297, align 4, !tbaa !5
  store i32 %306, ptr %298, align 4, !tbaa !5
  invoke void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpESt16initializer_listIjE(ptr noundef nonnull align 8 dereferenceable(24) %65, i32 noundef 71, ptr nonnull %68, i64 3)
          to label %311 unwind label %315

311:                                              ; preds = %308
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %68) #6
  br label %312

312:                                              ; preds = %303, %311
  %313 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8__detail14_Node_iteratorISt4pairIKjN13MeshConverter7VaryingEELb0ELb0EEppEv(ptr noundef nonnull align 8 dereferenceable(8) %66) #6
  %314 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseISt4pairIKjN13MeshConverter7VaryingEELb0EEES8_(ptr noundef nonnull align 8 dereferenceable(8) %66, ptr noundef nonnull align 8 dereferenceable(8) %67) #6
  br i1 %314, label %303, label %._crit_edge234

315:                                              ; preds = %308
  %316 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %68) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %67) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %66) #6
  br label %411

317:                                              ; preds = %._crit_edge234
  %318 = load i32, ptr %300, align 4, !tbaa !5
  store i32 %318, ptr %69, align 4, !tbaa !5
  %319 = getelementptr inbounds i8, ptr %69, i64 4
  store i32 2, ptr %319, align 4, !tbaa !5
  invoke void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpESt16initializer_listIjE(ptr noundef nonnull align 8 dereferenceable(24) %65, i32 noundef 71, ptr nonnull %69, i64 2)
          to label %320 unwind label %330

320:                                              ; preds = %317
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %69) #6
  %321 = load ptr, ptr %96, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %70) #6
  %322 = invoke { ptr, i32 } @_ZNK8libspirv8Bytecode5beginEv(ptr noundef nonnull align 8 dereferenceable(20) %321)
          to label %323 unwind label %332

323:                                              ; preds = %320
  %.fca.0.extract24 = extractvalue { ptr, i32 } %322, 0
  %.fca.1.extract25 = extractvalue { ptr, i32 } %322, 1
  store ptr %.fca.0.extract24, ptr %70, align 8
  %.sroa.227.0..sroa_idx = getelementptr inbounds i8, ptr %70, i64 8
  store i32 %.fca.1.extract25, ptr %.sroa.227.0..sroa_idx, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %71) #6
  %324 = invoke { ptr, i32 } @_ZNK8libspirv8Bytecode3endEv(ptr noundef nonnull align 8 dereferenceable(20) %321)
          to label %325 unwind label %334

325:                                              ; preds = %323
  %.fca.0.extract20 = extractvalue { ptr, i32 } %324, 0
  %.fca.1.extract21 = extractvalue { ptr, i32 } %324, 1
  store ptr %.fca.0.extract20, ptr %71, align 8
  %.sroa.223.0..sroa_idx = getelementptr inbounds i8, ptr %71, i64 8
  store i32 %.fca.1.extract21, ptr %.sroa.223.0..sroa_idx, align 8
  %326 = call noundef zeroext i1 @_ZN8libspirvneERKNS_8Bytecode8IteratorES3_(ptr noundef nonnull align 8 dereferenceable(12) %70, ptr noundef nonnull align 8 dereferenceable(12) %71)
  br i1 %326, label %.lr.ph236, label %._crit_edge237

.lr.ph236:                                        ; preds = %325
  %327 = getelementptr inbounds i8, ptr %72, i64 4
  %328 = getelementptr inbounds i8, ptr %72, i64 8
  %329 = getelementptr inbounds i8, ptr %72, i64 12
  br label %336

._crit_edge237:                                   ; preds = %363, %325
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %71) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %70) #6
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %73) #6
  invoke void @_ZN8libspirv15MutableBytecode14findSectionEndENS_8Bytecode7SectionE(ptr dead_on_unwind nonnull writable sret(%"struct.libspirv::MutableBytecode::Iterator") align 8 %73, ptr noundef nonnull align 8 dereferenceable(48) %1, i8 noundef zeroext 7)
          to label %367 unwind label %374

330:                                              ; preds = %317, %._crit_edge234
  %331 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %69) #6
  br label %411

332:                                              ; preds = %320
  %333 = landingpad { ptr, i32 }
          cleanup
  br label %366

334:                                              ; preds = %323
  %335 = landingpad { ptr, i32 }
          cleanup
  br label %365

336:                                              ; preds = %.lr.ph236, %363
  %337 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode8IteratordeEv(ptr noundef nonnull align 8 dereferenceable(12) %70)
  %338 = call noundef i32 @_ZNK8libspirv8Bytecode6OpCode2opEv(ptr noundef nonnull align 4 dereferenceable(4) %337)
  %339 = icmp eq i32 %338, 72
  br i1 %339, label %340, label %363

340:                                              ; preds = %336
  %341 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %337, i16 noundef zeroext 1)
  %342 = load i32, ptr %341, align 4, !tbaa !5
  %343 = load i32, ptr %299, align 4, !tbaa !42
  %344 = icmp eq i32 %342, %343
  br i1 %344, label %345, label %363

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

349:                                              ; preds = %345
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %72) #6
  %350 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %337, i16 noundef zeroext 1)
  %351 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt13unordered_mapIjjSt4hashIjESt8equal_toIjESaISt4pairIKjjEEEixERS5_(ptr noundef nonnull align 8 dereferenceable(56) %35, ptr noundef nonnull align 4 dereferenceable(4) %350)
          to label %352 unwind label %361

352:                                              ; preds = %349
  %353 = load i32, ptr %351, align 4, !tbaa !5
  store i32 %353, ptr %72, align 4, !tbaa !5
  %354 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %337, i16 noundef zeroext 2)
  %355 = load i32, ptr %354, align 4, !tbaa !5
  store i32 %355, ptr %327, align 4, !tbaa !5
  %356 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %337, i16 noundef zeroext 3)
  %357 = load i32, ptr %356, align 4, !tbaa !5
  store i32 %357, ptr %328, align 4, !tbaa !5
  %358 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %337, i16 noundef zeroext 4)
  %359 = load i32, ptr %358, align 4, !tbaa !5
  store i32 %359, ptr %329, align 4, !tbaa !5
  invoke void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpESt16initializer_listIjE(ptr noundef nonnull align 8 dereferenceable(24) %65, i32 noundef 72, ptr nonnull %72, i64 4)
          to label %360 unwind label %361

360:                                              ; preds = %352
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %72) #6
  br label %363

361:                                              ; preds = %352, %349
  %362 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %72) #6
  br label %365

363:                                              ; preds = %360, %345, %340, %336
  call void @_ZN8libspirv8Bytecode8IteratorppEv(ptr noundef nonnull align 8 dereferenceable(12) %70)
  %364 = call noundef zeroext i1 @_ZN8libspirvneERKNS_8Bytecode8IteratorES3_(ptr noundef nonnull align 8 dereferenceable(12) %70, ptr noundef nonnull align 8 dereferenceable(12) %71)
  br i1 %364, label %336, label %._crit_edge237

365:                                              ; preds = %361, %334
  %.pn210 = phi { ptr, i32 } [ %362, %361 ], [ %335, %334 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %71) #6
  br label %366

366:                                              ; preds = %365, %332
  %.pn210.pn = phi { ptr, i32 } [ %.pn210, %365 ], [ %333, %332 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %70) #6
  br label %411

367:                                              ; preds = %._crit_edge237
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %65, ptr noundef nonnull align 8 dereferenceable(24) %73, i64 24, i1 false)
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %73) #6
  %368 = load ptr, ptr %96, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %74) #6
  %369 = invoke { ptr, i32 } @_ZNK8libspirv8Bytecode5beginEv(ptr noundef nonnull align 8 dereferenceable(20) %368)
          to label %370 unwind label %376

370:                                              ; preds = %367
  %.fca.0.extract5 = extractvalue { ptr, i32 } %369, 0
  %.fca.1.extract6 = extractvalue { ptr, i32 } %369, 1
  store ptr %.fca.0.extract5, ptr %74, align 8
  %.sroa.28.0..sroa_idx = getelementptr inbounds i8, ptr %74, i64 8
  store i32 %.fca.1.extract6, ptr %.sroa.28.0..sroa_idx, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %75) #6
  %371 = invoke { ptr, i32 } @_ZNK8libspirv8Bytecode3endEv(ptr noundef nonnull align 8 dereferenceable(20) %368)
          to label %372 unwind label %378

372:                                              ; preds = %370
  %.fca.0.extract = extractvalue { ptr, i32 } %371, 0
  %.fca.1.extract = extractvalue { ptr, i32 } %371, 1
  store ptr %.fca.0.extract, ptr %75, align 8
  %.sroa.2.0..sroa_idx = getelementptr inbounds i8, ptr %75, i64 8
  store i32 %.fca.1.extract, ptr %.sroa.2.0..sroa_idx, align 8
  %373 = call noundef zeroext i1 @_ZN8libspirvneERKNS_8Bytecode8IteratorES3_(ptr noundef nonnull align 8 dereferenceable(12) %74, ptr noundef nonnull align 8 dereferenceable(12) %75)
  br i1 %373, label %.lr.ph239, label %._crit_edge240

._crit_edge240:                                   ; preds = %407, %372
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %75) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %74) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %65) #6
  call void @_ZNSt13unordered_mapIjjSt4hashIjESt8equal_toIjESaISt4pairIKjjEEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %35) #6
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %35) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3) #6
  ret void

374:                                              ; preds = %._crit_edge237
  %375 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %73) #6
  br label %411

376:                                              ; preds = %367
  %377 = landingpad { ptr, i32 }
          cleanup
  br label %410

378:                                              ; preds = %370
  %379 = landingpad { ptr, i32 }
          cleanup
  br label %409

.lr.ph239:                                        ; preds = %372, %407
  %380 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode8IteratordeEv(ptr noundef nonnull align 8 dereferenceable(12) %74)
  %381 = call noundef i32 @_ZNK8libspirv8Bytecode6OpCode2opEv(ptr noundef nonnull align 4 dereferenceable(4) %380)
  %382 = icmp eq i32 %381, 6
  br i1 %382, label %383, label %407

383:                                              ; preds = %.lr.ph239
  %384 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %380, i16 noundef zeroext 1)
  %385 = load i32, ptr %384, align 4, !tbaa !5
  %386 = load i32, ptr %299, align 4, !tbaa !42
  %387 = icmp eq i32 %385, %386
  br i1 %387, label %388, label %407

388:                                              ; preds = %383
  %389 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode8IteratordeEv(ptr noundef nonnull align 8 dereferenceable(12) %65)
  %390 = invoke noundef i64 @_ZNK8libspirv8Bytecode8toOffsetERKNS0_6OpCodeE(ptr noundef nonnull align 8 dereferenceable(20) %1, ptr noundef nonnull align 4 dereferenceable(4) %389)
          to label %391 unwind label %403

391:                                              ; preds = %388
  %392 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %380, i16 noundef zeroext 1)
  %393 = call noundef zeroext i16 @_ZNK8libspirv8Bytecode6OpCode6lengthEv(ptr noundef nonnull align 4 dereferenceable(4) %380)
  %394 = zext i16 %393 to i64
  %395 = add nsw i64 %394, -1
  invoke void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpEPKjm(ptr noundef nonnull align 8 dereferenceable(24) %65, i32 noundef 6, ptr noundef nonnull %392, i64 noundef %395)
          to label %396 unwind label %403

396:                                              ; preds = %391
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %76) #6
  invoke void @_ZN8libspirv15MutableBytecode10fromOffsetEm(ptr dead_on_unwind nonnull writable sret(%"struct.libspirv::MutableBytecode::Iterator") align 8 %76, ptr noundef nonnull align 8 dereferenceable(48) %1, i64 noundef %390)
          to label %397 unwind label %405

397:                                              ; preds = %396
  %398 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %380, i16 noundef zeroext 1)
  %399 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt13unordered_mapIjjSt4hashIjESt8equal_toIjESaISt4pairIKjjEEEixERS5_(ptr noundef nonnull align 8 dereferenceable(56) %35, ptr noundef nonnull align 4 dereferenceable(4) %398)
          to label %400 unwind label %405

400:                                              ; preds = %397
  %401 = load i32, ptr %399, align 4, !tbaa !5
  invoke void @_ZN8libspirv15MutableBytecode8Iterator3setEtj(ptr noundef nonnull align 8 dereferenceable(24) %76, i16 noundef zeroext 1, i32 noundef %401)
          to label %402 unwind label %405

402:                                              ; preds = %400
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %76) #6
  br label %407

403:                                              ; preds = %391, %388
  %404 = landingpad { ptr, i32 }
          cleanup
  br label %409

405:                                              ; preds = %400, %397, %396
  %406 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %76) #6
  br label %409

407:                                              ; preds = %402, %383, %.lr.ph239
  call void @_ZN8libspirv8Bytecode8IteratorppEv(ptr noundef nonnull align 8 dereferenceable(12) %74)
  %408 = call noundef zeroext i1 @_ZN8libspirvneERKNS_8Bytecode8IteratorES3_(ptr noundef nonnull align 8 dereferenceable(12) %74, ptr noundef nonnull align 8 dereferenceable(12) %75)
  br i1 %408, label %.lr.ph239, label %._crit_edge240

409:                                              ; preds = %403, %405, %378
  %.pn.pn = phi { ptr, i32 } [ %379, %378 ], [ %406, %405 ], [ %404, %403 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %75) #6
  br label %410

410:                                              ; preds = %409, %376
  %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %409 ], [ %377, %376 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %74) #6
  br label %411

411:                                              ; preds = %410, %374, %366, %330, %315, %301
  %.pn213 = phi { ptr, i32 } [ %316, %315 ], [ %.pn210.pn, %366 ], [ %.pn.pn.pn, %410 ], [ %375, %374 ], [ %331, %330 ], [ %302, %301 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %65) #6
  br label %412

412:                                              ; preds = %411, %287, %270, %268, %266, %264, %262, %260, %229, %221, %216, %194, %192, %190, %188, %168
  %.pn220.pn = phi { ptr, i32 } [ %.pn220, %168 ], [ %.pn217.pn, %216 ], [ %230, %229 ], [ %.pn215, %287 ], [ %.pn213, %411 ], [ %263, %262 ], [ %271, %270 ], [ %269, %268 ], [ %267, %266 ], [ %265, %264 ], [ %261, %260 ], [ %222, %221 ], [ %195, %194 ], [ %193, %192 ], [ %191, %190 ], [ %189, %188 ]
  call void @_ZNSt13unordered_mapIjjSt4hashIjESt8equal_toIjESaISt4pairIKjjEEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %35) #6
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %35) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3) #6
  resume { ptr, i32 } %.pn220.pn
}

; 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_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(56)) 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

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

declare void @_ZN8libspirv8Bytecode12traverseTypeEjSt8functionIFvPKNS0_11AccessChainEjEENS0_12TraverseModeE(ptr noundef nonnull align 8 dereferenceable(20), i32 noundef, ptr noundef, i8 noundef zeroext) local_unnamed_addr #2

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

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 @_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

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

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

declare noundef i64 @_ZNK8libspirv8Bytecode8toOffsetERKNS0_6OpCodeE(ptr noundef nonnull align 8 dereferenceable(20), ptr noundef nonnull align 4 dereferenceable(4)) 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 void @_ZN8libspirv15MutableBytecode8Iterator6insertEN3spv2OpEjjPKc(ptr noundef nonnull align 8 dereferenceable(24), i32 noundef, i32 noundef, i32 noundef, ptr noundef) local_unnamed_addr #2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt13unordered_mapIjjSt4hashIjESt8equal_toIjESaISt4pairIKjjEEEixERS5_(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 hidden void @"_ZNSt8functionIFvPKN8libspirv8Bytecode11AccessChainEjEEC2IZN13MeshConverter8emitVertERNS0_15MutableBytecodeEE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(96)) unnamed_addr #0 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZNSt13unordered_mapIjjSt4hashIjESt8equal_toIjESaISt4pairIKjjEEED2Ev(ptr noundef nonnull align 8 dereferenceable(56)) unnamed_addr #5 align 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 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #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 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !13, i64 8}
!10 = !{!"_ZTS13MeshConverter", !11, i64 0, !13, i64 8, !14, i64 16, !14, i64 64, !7, i64 112, !6, i64 124, !6, i64 128, !6, i64 132, !6, i64 136, !6, i64 140, !6, i64 144, !6, i64 148, !6, i64 152, !6, i64 156, !6, i64 160, !6, i64 164, !6, i64 168, !6, i64 172, !6, i64 176, !6, i64 180, !6, i64 184, !6, i64 188, !6, i64 192, !6, i64 196, !6, i64 200, !21, i64 208, !21, i64 264, !26, i64 320, !28, i64 376, !6, i64 400, !6, i64 404, !6, i64 408, !6, i64 412, !6, i64 416, !6, i64 420, !12, i64 424}
!11 = !{!"_ZTSN13MeshConverter7OptionsE", !12, i64 0, !12, i64 1}
!12 = !{!"bool", !7, i64 0}
!13 = !{!"any pointer", !7, i64 0}
!14 = !{!"_ZTSN8libspirv15MutableBytecodeE", !15, i64 0, !17, i64 24}
!15 = !{!"_ZTSN8libspirv8BytecodeE", !13, i64 0, !16, i64 8, !6, i64 16}
!16 = !{!"long", !7, i64 0}
!17 = !{!"_ZTSSt6vectorIN8libspirv8Bytecode6OpCodeESaIS2_EE", !18, i64 0}
!18 = !{!"_ZTSSt12_Vector_baseIN8libspirv8Bytecode6OpCodeESaIS2_EE", !19, i64 0}
!19 = !{!"_ZTSNSt12_Vector_baseIN8libspirv8Bytecode6OpCodeESaIS2_EE12_Vector_implE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseIN8libspirv8Bytecode6OpCodeESaIS2_EE17_Vector_impl_dataE", !13, i64 0, !13, i64 8, !13, i64 16}
!21 = !{!"_ZTSSt13unordered_mapIjmSt4hashIjESt8equal_toIjESaISt4pairIKjmEEE", !22, i64 0}
!22 = !{!"_ZTSSt10_HashtableIjSt4pairIKjmESaIS2_ENSt8__detail10_Select1stESt8equal_toIjESt4hashIjENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb0ELb1EEEE", !13, i64 0, !16, i64 8, !23, i64 16, !16, i64 24, !24, i64 32, !13, i64 48}
!23 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !13, i64 0}
!24 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !25, i64 0, !16, i64 8}
!25 = !{!"float", !7, i64 0}
!26 = !{!"_ZTSSt13unordered_mapIjN13MeshConverter7VaryingESt4hashIjESt8equal_toIjESaISt4pairIKjS1_EEE", !27, i64 0}
!27 = !{!"_ZTSSt10_HashtableIjSt4pairIKjN13MeshConverter7VaryingEESaIS4_ENSt8__detail10_Select1stESt8equal_toIjESt4hashIjENS6_18_Mod_range_hashingENS6_20_Default_ranged_hashENS6_20_Prime_rehash_policyENS6_17_Hashtable_traitsILb0ELb0ELb1EEEE", !13, i64 0, !16, i64 8, !23, i64 16, !16, i64 24, !24, i64 32, !13, i64 48}
!28 = !{!"_ZTSSt6vectorIjSaIjEE", !29, i64 0}
!29 = !{!"_ZTSSt12_Vector_baseIjSaIjEE", !30, i64 0}
!30 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE12_Vector_implE", !31, i64 0}
!31 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE17_Vector_impl_dataE", !13, i64 0, !13, i64 8, !13, i64 16}
!32 = !{!33, !6, i64 4}
!33 = !{!"_ZTSSt4pairIKjN13MeshConverter7VaryingEE", !6, i64 0, !34, i64 4}
!34 = !{!"_ZTSN13MeshConverter7VaryingE", !6, i64 0, !6, i64 4, !6, i64 8, !6, i64 12}
!35 = !{!13, !13, i64 0}
!36 = !{!37, !13, i64 24}
!37 = !{!"_ZTSZN13MeshConverter8emitVertERN8libspirv15MutableBytecodeEE3$_0", !13, i64 0, !13, i64 8, !13, i64 16, !13, i64 24}
!38 = !{!33, !6, i64 12}
!39 = !{!40, !13, i64 0}
!40 = !{!"_ZTSZN13MeshConverter8emitVertERN8libspirv15MutableBytecodeEE3$_1", !13, i64 0, !13, i64 8, !13, i64 16, !13, i64 24, !13, i64 32, !13, i64 40, !13, i64 48, !13, i64 56, !13, i64 64, !13, i64 72, !13, i64 80, !13, i64 88}
!41 = !{!33, !6, i64 16}
!42 = !{!10, !6, i64 148}


; Effective O3 passes: EarlyCSEPass,GVNPass,GlobalOptPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,SROAPass,SimplifyCFGPass,TailCallElimPass