; LLVM IR from hbatagelo/abcg :: abcg/external/glslang/SPIRV (SpvBuilder)

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%"class.std::unique_ptr" = type { %"struct.std::__uniq_ptr_data" }
%"struct.std::__uniq_ptr_data" = type { %"class.std::__uniq_ptr_impl" }
%"class.std::__uniq_ptr_impl" = type { %"class.std::tuple" }
%"class.std::tuple" = type { %"struct.std::_Tuple_impl" }
%"struct.std::_Tuple_impl" = type { %"struct.std::_Head_base.82" }
%"struct.std::_Head_base.82" = type { ptr }
%"struct.spv::Builder::TextureParameters" = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8, i8 }
%"class.spv::Builder" = type { ptr, i32, i32, i32, i32, %"class.std::__cxx11::basic_string", i32, ptr, i8, %"class.std::set", %"class.std::vector", %"class.std::vector", i32, i32, %"class.std::set.6", i32, %"class.spv::Module", ptr, i32, ptr, i8, [7 x i8], %"struct.spv::Builder::AccessChain", %"class.std::vector.27", %"class.std::vector.27", %"class.std::vector.27", %"class.std::vector.27", %"class.std::vector.27", %"class.std::vector.27", %"class.std::vector.27", %"class.std::vector.27", %"class.std::vector.32", %"class.std::unordered_map", %"class.std::unordered_map", %"class.std::unordered_map", %"class.std::vector.17", %"class.std::stack", %"class.std::stack.45", %"class.std::unordered_map.52", %"class.std::map", ptr }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::set" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, std::_Identity<std::__cxx11::basic_string<char>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>, std::_Identity<std::__cxx11::basic_string<char>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<const char *, std::allocator<const char *>>::_Vector_impl" }
%"struct.std::_Vector_base<const char *, std::allocator<const char *>>::_Vector_impl" = type { %"struct.std::_Vector_base<const char *, std::allocator<const char *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<const char *, std::allocator<const char *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::set.6" = type { %"class.std::_Rb_tree.7" }
%"class.std::_Rb_tree.7" = type { %"struct.std::_Rb_tree<spv::Capability, spv::Capability, std::_Identity<spv::Capability>, std::less<spv::Capability>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<spv::Capability, spv::Capability, std::_Identity<spv::Capability>, std::less<spv::Capability>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.spv::Module" = type { ptr, %"class.std::vector.12", %"class.std::vector.17" }
%"class.std::vector.12" = type { %"struct.std::_Vector_base.13" }
%"struct.std::_Vector_base.13" = type { %"struct.std::_Vector_base<spv::Function *, std::allocator<spv::Function *>>::_Vector_impl" }
%"struct.std::_Vector_base<spv::Function *, std::allocator<spv::Function *>>::_Vector_impl" = type { %"struct.std::_Vector_base<spv::Function *, std::allocator<spv::Function *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<spv::Function *, std::allocator<spv::Function *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.spv::Builder::AccessChain" = type <{ i32, [4 x i8], %"class.std::vector.22", i32, [4 x i8], %"class.std::vector.22", i32, i32, i8, [3 x i8], i32, %"struct.spv::Builder::AccessChain::CoherentFlags", [4 x i8] }>
%"class.std::vector.22" = type { %"struct.std::_Vector_base.23" }
%"struct.std::_Vector_base.23" = 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.spv::Builder::AccessChain::CoherentFlags" = type { i16, [2 x i8] }
%"class.std::vector.27" = type { %"struct.std::_Vector_base.28" }
%"struct.std::_Vector_base.28" = type { %"struct.std::_Vector_base<std::unique_ptr<spv::Instruction>, std::allocator<std::unique_ptr<spv::Instruction>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::unique_ptr<spv::Instruction>, std::allocator<std::unique_ptr<spv::Instruction>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::unique_ptr<spv::Instruction>, std::allocator<std::unique_ptr<spv::Instruction>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::unique_ptr<spv::Instruction>, std::allocator<std::unique_ptr<spv::Instruction>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.32" = type { %"struct.std::_Vector_base.33" }
%"struct.std::_Vector_base.33" = type { %"struct.std::_Vector_base<std::unique_ptr<spv::Function>, std::allocator<std::unique_ptr<spv::Function>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::unique_ptr<spv::Function>, std::allocator<std::unique_ptr<spv::Function>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::unique_ptr<spv::Function>, std::allocator<std::unique_ptr<spv::Function>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::unique_ptr<spv::Function>, std::allocator<std::unique_ptr<spv::Function>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::unordered_map" = type { %"class.std::_Hashtable" }
%"class.std::_Hashtable" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.std::__detail::_Hash_node_base" = type { ptr }
%"struct.std::__detail::_Prime_rehash_policy" = type { float, i64 }
%"class.std::vector.17" = type { %"struct.std::_Vector_base.18" }
%"struct.std::_Vector_base.18" = type { %"struct.std::_Vector_base<spv::Instruction *, std::allocator<spv::Instruction *>>::_Vector_impl" }
%"struct.std::_Vector_base<spv::Instruction *, std::allocator<spv::Instruction *>>::_Vector_impl" = type { %"struct.std::_Vector_base<spv::Instruction *, std::allocator<spv::Instruction *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<spv::Instruction *, std::allocator<spv::Instruction *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::stack" = type { %"class.std::deque" }
%"class.std::deque" = type { %"class.std::_Deque_base" }
%"class.std::_Deque_base" = type { %"struct.std::_Deque_base<spv::Block *, std::allocator<spv::Block *>>::_Deque_impl" }
%"struct.std::_Deque_base<spv::Block *, std::allocator<spv::Block *>>::_Deque_impl" = type { %"struct.std::_Deque_base<spv::Block *, std::allocator<spv::Block *>>::_Deque_impl_data" }
%"struct.std::_Deque_base<spv::Block *, std::allocator<spv::Block *>>::_Deque_impl_data" = type { ptr, i64, %"struct.std::_Deque_iterator", %"struct.std::_Deque_iterator" }
%"struct.std::_Deque_iterator" = type { ptr, ptr, ptr, ptr }
%"class.std::stack.45" = type { %"class.std::deque.46" }
%"class.std::deque.46" = type { %"class.std::_Deque_base.47" }
%"class.std::_Deque_base.47" = type { %"struct.std::_Deque_base<spv::Builder::LoopBlocks, std::allocator<spv::Builder::LoopBlocks>>::_Deque_impl" }
%"struct.std::_Deque_base<spv::Builder::LoopBlocks, std::allocator<spv::Builder::LoopBlocks>>::_Deque_impl" = type { %"struct.std::_Deque_base<spv::Builder::LoopBlocks, std::allocator<spv::Builder::LoopBlocks>>::_Deque_impl_data" }
%"struct.std::_Deque_base<spv::Builder::LoopBlocks, std::allocator<spv::Builder::LoopBlocks>>::_Deque_impl_data" = type { ptr, i64, %"struct.std::_Deque_iterator.51", %"struct.std::_Deque_iterator.51" }
%"struct.std::_Deque_iterator.51" = type { ptr, ptr, ptr, ptr }
%"class.std::unordered_map.52" = type { %"class.std::_Hashtable.53" }
%"class.std::_Hashtable.53" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::map" = type { %"class.std::_Rb_tree.72" }
%"class.std::_Rb_tree.72" = type { %"struct.std::_Rb_tree<unsigned int, std::pair<const unsigned int, const std::__cxx11::basic_string<char> *>, std::_Select1st<std::pair<const unsigned int, const std::__cxx11::basic_string<char> *>>, std::less<unsigned int>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<unsigned int, std::pair<const unsigned int, const std::__cxx11::basic_string<char> *>, std::_Select1st<std::pair<const unsigned int, const std::__cxx11::basic_string<char> *>>, std::less<unsigned int>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }

declare i32 @__gxx_personality_v0(...)

; Function Attrs: nobuiltin nounwind
declare void @_ZdlPvm(ptr noundef, i64 noundef) #0

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

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znwm(i64 noundef) #2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN3spv11InstructionC2EjjNS_2OpE(ptr noundef nonnull align 8 dereferenceable(96), i32 noundef, i32 noundef, i32 noundef) unnamed_addr #3 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt10unique_ptrIN3spv11InstructionESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #3 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 noundef i32 @_ZNK3spv11Instruction11getResultIdEv(ptr noundef nonnull align 8 dereferenceable(96)) #3 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN3spv7Builder17createTextureCallENS_10DecorationEjbbbbbRKNS0_17TextureParametersENS_17ImageOperandsMaskE(ptr noundef nonnull align 8 dereferenceable(1096) %0, i32 noundef %1, i32 noundef %2, i1 noundef zeroext %3, i1 noundef zeroext %4, i1 noundef zeroext %5, i1 noundef zeroext %6, i1 noundef zeroext %7, ptr noundef nonnull align 4 dereferenceable(64) %8, i32 noundef %9) #4 align 2 personality ptr @__gxx_personality_v0 {
  %11 = alloca ptr, align 8
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i8, align 1
  %15 = alloca i8, align 1
  %16 = alloca i8, align 1
  %17 = alloca i8, align 1
  %18 = alloca i8, align 1
  %19 = alloca ptr, align 8
  %20 = alloca i32, align 4
  %21 = alloca [10 x i32], align 16
  %22 = alloca i32, align 4
  %23 = alloca i8, align 1
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca ptr, align 8
  %31 = alloca ptr, align 8
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca %"class.std::unique_ptr", align 8
  %36 = alloca i32, align 4
  store ptr %0, ptr %11, align 8, !tbaa !5
  store i32 %1, ptr %12, align 4, !tbaa !9
  store i32 %2, ptr %13, align 4, !tbaa !11
  %37 = zext i1 %3 to i8
  store i8 %37, ptr %14, align 1, !tbaa !13
  %38 = zext i1 %4 to i8
  store i8 %38, ptr %15, align 1, !tbaa !13
  %39 = zext i1 %5 to i8
  store i8 %39, ptr %16, align 1, !tbaa !13
  %40 = zext i1 %6 to i8
  store i8 %40, ptr %17, align 1, !tbaa !13
  %41 = zext i1 %7 to i8
  store i8 %41, ptr %18, align 1, !tbaa !13
  store ptr %8, ptr %19, align 8, !tbaa !5
  store i32 %9, ptr %20, align 4, !tbaa !15
  %42 = load ptr, ptr %11, align 8
  call void @llvm.lifetime.start.p0(i64 40, ptr %21) #8
  call void @llvm.memset.p0.i64(ptr align 16 %21, i8 0, i64 40, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #8
  store i32 0, ptr %22, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 1, ptr %23) #8
  store i8 0, ptr %23, align 1, !tbaa !13
  %43 = load ptr, ptr %19, align 8, !tbaa !5
  %44 = getelementptr inbounds %"struct.spv::Builder::TextureParameters", ptr %43, i32 0, i32 0
  %45 = load i32, ptr %44, align 4, !tbaa !17
  %46 = load i32, ptr %22, align 4, !tbaa !11
  %47 = add nsw i32 %46, 1
  store i32 %47, ptr %22, align 4, !tbaa !11
  %48 = sext i32 %46 to i64
  %49 = getelementptr inbounds [10 x i32], ptr %21, i64 0, i64 %48
  store i32 %45, ptr %49, align 4, !tbaa !11
  %50 = load ptr, ptr %19, align 8, !tbaa !5
  %51 = getelementptr inbounds %"struct.spv::Builder::TextureParameters", ptr %50, i32 0, i32 1
  %52 = load i32, ptr %51, align 4, !tbaa !19
  %53 = load i32, ptr %22, align 4, !tbaa !11
  %54 = add nsw i32 %53, 1
  store i32 %54, ptr %22, align 4, !tbaa !11
  %55 = sext i32 %53 to i64
  %56 = getelementptr inbounds [10 x i32], ptr %21, i64 0, i64 %55
  store i32 %52, ptr %56, align 4, !tbaa !11
  %57 = load ptr, ptr %19, align 8, !tbaa !5
  %58 = getelementptr inbounds %"struct.spv::Builder::TextureParameters", ptr %57, i32 0, i32 4
  %59 = load i32, ptr %58, align 4, !tbaa !20
  %60 = icmp ne i32 %59, 0
  br i1 %60, label %61, label %69

61:                                               ; preds = %10
  %62 = load ptr, ptr %19, align 8, !tbaa !5
  %63 = getelementptr inbounds %"struct.spv::Builder::TextureParameters", ptr %62, i32 0, i32 4
  %64 = load i32, ptr %63, align 4, !tbaa !20
  %65 = load i32, ptr %22, align 4, !tbaa !11
  %66 = add nsw i32 %65, 1
  store i32 %66, ptr %22, align 4, !tbaa !11
  %67 = sext i32 %65 to i64
  %68 = getelementptr inbounds [10 x i32], ptr %21, i64 0, i64 %67
  store i32 %64, ptr %68, align 4, !tbaa !11
  br label %69

69:                                               ; preds = %61, %10
  %70 = load ptr, ptr %19, align 8, !tbaa !5
  %71 = getelementptr inbounds %"struct.spv::Builder::TextureParameters", ptr %70, i32 0, i32 10
  %72 = load i32, ptr %71, align 4, !tbaa !21
  %73 = icmp ne i32 %72, 0
  br i1 %73, label %74, label %82

74:                                               ; preds = %69
  %75 = load ptr, ptr %19, align 8, !tbaa !5
  %76 = getelementptr inbounds %"struct.spv::Builder::TextureParameters", ptr %75, i32 0, i32 10
  %77 = load i32, ptr %76, align 4, !tbaa !21
  %78 = load i32, ptr %22, align 4, !tbaa !11
  %79 = add nsw i32 %78, 1
  store i32 %79, ptr %22, align 4, !tbaa !11
  %80 = sext i32 %78 to i64
  %81 = getelementptr inbounds [10 x i32], ptr %21, i64 0, i64 %80
  store i32 %77, ptr %81, align 4, !tbaa !11
  br label %82

82:                                               ; preds = %74, %69
  %83 = load ptr, ptr %19, align 8, !tbaa !5
  %84 = getelementptr inbounds %"struct.spv::Builder::TextureParameters", ptr %83, i32 0, i32 13
  %85 = load i32, ptr %84, align 4, !tbaa !22
  %86 = icmp ne i32 %85, 0
  br i1 %86, label %87, label %95

87:                                               ; preds = %82
  %88 = load ptr, ptr %19, align 8, !tbaa !5
  %89 = getelementptr inbounds %"struct.spv::Builder::TextureParameters", ptr %88, i32 0, i32 13
  %90 = load i32, ptr %89, align 4, !tbaa !22
  %91 = load i32, ptr %22, align 4, !tbaa !11
  %92 = add nsw i32 %91, 1
  store i32 %92, ptr %22, align 4, !tbaa !11
  %93 = sext i32 %91 to i64
  %94 = getelementptr inbounds [10 x i32], ptr %21, i64 0, i64 %93
  store i32 %90, ptr %94, align 4, !tbaa !11
  br label %95

95:                                               ; preds = %87, %82
  %96 = load ptr, ptr %19, align 8, !tbaa !5
  %97 = getelementptr inbounds %"struct.spv::Builder::TextureParameters", ptr %96, i32 0, i32 14
  %98 = load i32, ptr %97, align 4, !tbaa !23
  %99 = icmp ne i32 %98, 0
  br i1 %99, label %100, label %108

100:                                              ; preds = %95
  %101 = load ptr, ptr %19, align 8, !tbaa !5
  %102 = getelementptr inbounds %"struct.spv::Builder::TextureParameters", ptr %101, i32 0, i32 14
  %103 = load i32, ptr %102, align 4, !tbaa !23
  %104 = load i32, ptr %22, align 4, !tbaa !11
  %105 = add nsw i32 %104, 1
  store i32 %105, ptr %22, align 4, !tbaa !11
  %106 = sext i32 %104 to i64
  %107 = getelementptr inbounds [10 x i32], ptr %21, i64 0, i64 %106
  store i32 %103, ptr %107, align 4, !tbaa !11
  br label %108

108:                                              ; preds = %100, %95
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #8
  %109 = load i32, ptr %22, align 4, !tbaa !11
  store i32 %109, ptr %24, align 4, !tbaa !11
  %110 = load i32, ptr %22, align 4, !tbaa !11
  %111 = add nsw i32 %110, 1
  store i32 %111, ptr %22, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #8
  store i32 0, ptr %25, align 4, !tbaa !15
  %112 = load ptr, ptr %19, align 8, !tbaa !5
  %113 = getelementptr inbounds %"struct.spv::Builder::TextureParameters", ptr %112, i32 0, i32 2
  %114 = load i32, ptr %113, align 4, !tbaa !24
  %115 = icmp ne i32 %114, 0
  br i1 %115, label %116, label %126

116:                                              ; preds = %108
  %117 = load i32, ptr %25, align 4, !tbaa !15
  %118 = call noundef i32 @_ZN3spvorENS_17ImageOperandsMaskES0_(i32 noundef %117, i32 noundef 1)
  store i32 %118, ptr %25, align 4, !tbaa !15
  %119 = load ptr, ptr %19, align 8, !tbaa !5
  %120 = getelementptr inbounds %"struct.spv::Builder::TextureParameters", ptr %119, i32 0, i32 2
  %121 = load i32, ptr %120, align 4, !tbaa !24
  %122 = load i32, ptr %22, align 4, !tbaa !11
  %123 = add nsw i32 %122, 1
  store i32 %123, ptr %22, align 4, !tbaa !11
  %124 = sext i32 %122 to i64
  %125 = getelementptr inbounds [10 x i32], ptr %21, i64 0, i64 %124
  store i32 %121, ptr %125, align 4, !tbaa !11
  br label %126

126:                                              ; preds = %116, %108
  %127 = load ptr, ptr %19, align 8, !tbaa !5
  %128 = getelementptr inbounds %"struct.spv::Builder::TextureParameters", ptr %127, i32 0, i32 3
  %129 = load i32, ptr %128, align 4, !tbaa !25
  %130 = icmp ne i32 %129, 0
  br i1 %130, label %131, label %141

131:                                              ; preds = %126
  %132 = load i32, ptr %25, align 4, !tbaa !15
  %133 = call noundef i32 @_ZN3spvorENS_17ImageOperandsMaskES0_(i32 noundef %132, i32 noundef 2)
  store i32 %133, ptr %25, align 4, !tbaa !15
  %134 = load ptr, ptr %19, align 8, !tbaa !5
  %135 = getelementptr inbounds %"struct.spv::Builder::TextureParameters", ptr %134, i32 0, i32 3
  %136 = load i32, ptr %135, align 4, !tbaa !25
  %137 = load i32, ptr %22, align 4, !tbaa !11
  %138 = add nsw i32 %137, 1
  store i32 %138, ptr %22, align 4, !tbaa !11
  %139 = sext i32 %137 to i64
  %140 = getelementptr inbounds [10 x i32], ptr %21, i64 0, i64 %139
  store i32 %136, ptr %140, align 4, !tbaa !11
  store i8 1, ptr %23, align 1, !tbaa !13
  br label %182

141:                                              ; preds = %126
  %142 = load ptr, ptr %19, align 8, !tbaa !5
  %143 = getelementptr inbounds %"struct.spv::Builder::TextureParameters", ptr %142, i32 0, i32 7
  %144 = load i32, ptr %143, align 4, !tbaa !26
  %145 = icmp ne i32 %144, 0
  br i1 %145, label %146, label %163

146:                                              ; preds = %141
  %147 = load i32, ptr %25, align 4, !tbaa !15
  %148 = call noundef i32 @_ZN3spvorENS_17ImageOperandsMaskES0_(i32 noundef %147, i32 noundef 4)
  store i32 %148, ptr %25, align 4, !tbaa !15
  %149 = load ptr, ptr %19, align 8, !tbaa !5
  %150 = getelementptr inbounds %"struct.spv::Builder::TextureParameters", ptr %149, i32 0, i32 7
  %151 = load i32, ptr %150, align 4, !tbaa !26
  %152 = load i32, ptr %22, align 4, !tbaa !11
  %153 = add nsw i32 %152, 1
  store i32 %153, ptr %22, align 4, !tbaa !11
  %154 = sext i32 %152 to i64
  %155 = getelementptr inbounds [10 x i32], ptr %21, i64 0, i64 %154
  store i32 %151, ptr %155, align 4, !tbaa !11
  %156 = load ptr, ptr %19, align 8, !tbaa !5
  %157 = getelementptr inbounds %"struct.spv::Builder::TextureParameters", ptr %156, i32 0, i32 8
  %158 = load i32, ptr %157, align 4, !tbaa !27
  %159 = load i32, ptr %22, align 4, !tbaa !11
  %160 = add nsw i32 %159, 1
  store i32 %160, ptr %22, align 4, !tbaa !11
  %161 = sext i32 %159 to i64
  %162 = getelementptr inbounds [10 x i32], ptr %21, i64 0, i64 %161
  store i32 %158, ptr %162, align 4, !tbaa !11
  store i8 1, ptr %23, align 1, !tbaa !13
  br label %181

163:                                              ; preds = %141
  %164 = load i8, ptr %18, align 1, !tbaa !13, !range !28, !noundef !29
  %165 = trunc i8 %164 to i1
  br i1 %165, label %166, label %180

166:                                              ; preds = %163
  %167 = load i8, ptr %15, align 1, !tbaa !13, !range !28, !noundef !29
  %168 = trunc i8 %167 to i1
  br i1 %168, label %180, label %169

169:                                              ; preds = %166
  %170 = load i8, ptr %17, align 1, !tbaa !13, !range !28, !noundef !29
  %171 = trunc i8 %170 to i1
  br i1 %171, label %180, label %172

172:                                              ; preds = %169
  %173 = load i32, ptr %25, align 4, !tbaa !15
  %174 = call noundef i32 @_ZN3spvorENS_17ImageOperandsMaskES0_(i32 noundef %173, i32 noundef 2)
  store i32 %174, ptr %25, align 4, !tbaa !15
  %175 = call noundef i32 @_ZN3spv7Builder17makeFloatConstantEfb(ptr noundef nonnull align 8 dereferenceable(1096) %42, float noundef 0.000000e+00, i1 noundef zeroext false)
  %176 = load i32, ptr %22, align 4, !tbaa !11
  %177 = add nsw i32 %176, 1
  store i32 %177, ptr %22, align 4, !tbaa !11
  %178 = sext i32 %176 to i64
  %179 = getelementptr inbounds [10 x i32], ptr %21, i64 0, i64 %178
  store i32 %175, ptr %179, align 4, !tbaa !11
  store i8 1, ptr %23, align 1, !tbaa !13
  br label %180

180:                                              ; preds = %172, %169, %166, %163
  br label %181

181:                                              ; preds = %180, %146
  br label %182

182:                                              ; preds = %181, %131
  %183 = load ptr, ptr %19, align 8, !tbaa !5
  %184 = getelementptr inbounds %"struct.spv::Builder::TextureParameters", ptr %183, i32 0, i32 5
  %185 = load i32, ptr %184, align 4, !tbaa !30
  %186 = icmp ne i32 %185, 0
  br i1 %186, label %187, label %206

187:                                              ; preds = %182
  %188 = load ptr, ptr %19, align 8, !tbaa !5
  %189 = getelementptr inbounds %"struct.spv::Builder::TextureParameters", ptr %188, i32 0, i32 5
  %190 = load i32, ptr %189, align 4, !tbaa !30
  %191 = call noundef zeroext i1 @_ZNK3spv7Builder10isConstantEj(ptr noundef nonnull align 8 dereferenceable(1096) %42, i32 noundef %190)
  br i1 %191, label %192, label %195

192:                                              ; preds = %187
  %193 = load i32, ptr %25, align 4, !tbaa !15
  %194 = call noundef i32 @_ZN3spvorENS_17ImageOperandsMaskES0_(i32 noundef %193, i32 noundef 8)
  store i32 %194, ptr %25, align 4, !tbaa !15
  br label %198

195:                                              ; preds = %187
  call void @_ZN3spv7Builder13addCapabilityENS_10CapabilityE(ptr noundef nonnull align 8 dereferenceable(1096) %42, i32 noundef 25)
  %196 = load i32, ptr %25, align 4, !tbaa !15
  %197 = call noundef i32 @_ZN3spvorENS_17ImageOperandsMaskES0_(i32 noundef %196, i32 noundef 16)
  store i32 %197, ptr %25, align 4, !tbaa !15
  br label %198

198:                                              ; preds = %195, %192
  %199 = load ptr, ptr %19, align 8, !tbaa !5
  %200 = getelementptr inbounds %"struct.spv::Builder::TextureParameters", ptr %199, i32 0, i32 5
  %201 = load i32, ptr %200, align 4, !tbaa !30
  %202 = load i32, ptr %22, align 4, !tbaa !11
  %203 = add nsw i32 %202, 1
  store i32 %203, ptr %22, align 4, !tbaa !11
  %204 = sext i32 %202 to i64
  %205 = getelementptr inbounds [10 x i32], ptr %21, i64 0, i64 %204
  store i32 %201, ptr %205, align 4, !tbaa !11
  br label %206

206:                                              ; preds = %198, %182
  %207 = load ptr, ptr %19, align 8, !tbaa !5
  %208 = getelementptr inbounds %"struct.spv::Builder::TextureParameters", ptr %207, i32 0, i32 6
  %209 = load i32, ptr %208, align 4, !tbaa !31
  %210 = icmp ne i32 %209, 0
  br i1 %210, label %211, label %221

211:                                              ; preds = %206
  call void @_ZN3spv7Builder13addCapabilityENS_10CapabilityE(ptr noundef nonnull align 8 dereferenceable(1096) %42, i32 noundef 25)
  %212 = load i32, ptr %25, align 4, !tbaa !15
  %213 = call noundef i32 @_ZN3spvorENS_17ImageOperandsMaskES0_(i32 noundef %212, i32 noundef 32)
  store i32 %213, ptr %25, align 4, !tbaa !15
  %214 = load ptr, ptr %19, align 8, !tbaa !5
  %215 = getelementptr inbounds %"struct.spv::Builder::TextureParameters", ptr %214, i32 0, i32 6
  %216 = load i32, ptr %215, align 4, !tbaa !31
  %217 = load i32, ptr %22, align 4, !tbaa !11
  %218 = add nsw i32 %217, 1
  store i32 %218, ptr %22, align 4, !tbaa !11
  %219 = sext i32 %217 to i64
  %220 = getelementptr inbounds [10 x i32], ptr %21, i64 0, i64 %219
  store i32 %216, ptr %220, align 4, !tbaa !11
  br label %221

221:                                              ; preds = %211, %206
  %222 = load ptr, ptr %19, align 8, !tbaa !5
  %223 = getelementptr inbounds %"struct.spv::Builder::TextureParameters", ptr %222, i32 0, i32 9
  %224 = load i32, ptr %223, align 4, !tbaa !32
  %225 = icmp ne i32 %224, 0
  br i1 %225, label %226, label %236

226:                                              ; preds = %221
  %227 = load i32, ptr %25, align 4, !tbaa !15
  %228 = call noundef i32 @_ZN3spvorENS_17ImageOperandsMaskES0_(i32 noundef %227, i32 noundef 64)
  store i32 %228, ptr %25, align 4, !tbaa !15
  %229 = load ptr, ptr %19, align 8, !tbaa !5
  %230 = getelementptr inbounds %"struct.spv::Builder::TextureParameters", ptr %229, i32 0, i32 9
  %231 = load i32, ptr %230, align 4, !tbaa !32
  %232 = load i32, ptr %22, align 4, !tbaa !11
  %233 = add nsw i32 %232, 1
  store i32 %233, ptr %22, align 4, !tbaa !11
  %234 = sext i32 %232 to i64
  %235 = getelementptr inbounds [10 x i32], ptr %21, i64 0, i64 %234
  store i32 %231, ptr %235, align 4, !tbaa !11
  br label %236

236:                                              ; preds = %226, %221
  %237 = load ptr, ptr %19, align 8, !tbaa !5
  %238 = getelementptr inbounds %"struct.spv::Builder::TextureParameters", ptr %237, i32 0, i32 12
  %239 = load i32, ptr %238, align 4, !tbaa !33
  %240 = icmp ne i32 %239, 0
  br i1 %240, label %241, label %251

241:                                              ; preds = %236
  call void @_ZN3spv7Builder13addCapabilityENS_10CapabilityE(ptr noundef nonnull align 8 dereferenceable(1096) %42, i32 noundef 42)
  %242 = load i32, ptr %25, align 4, !tbaa !15
  %243 = call noundef i32 @_ZN3spvorENS_17ImageOperandsMaskES0_(i32 noundef %242, i32 noundef 128)
  store i32 %243, ptr %25, align 4, !tbaa !15
  %244 = load ptr, ptr %19, align 8, !tbaa !5
  %245 = getelementptr inbounds %"struct.spv::Builder::TextureParameters", ptr %244, i32 0, i32 12
  %246 = load i32, ptr %245, align 4, !tbaa !33
  %247 = load i32, ptr %22, align 4, !tbaa !11
  %248 = add nsw i32 %247, 1
  store i32 %248, ptr %22, align 4, !tbaa !11
  %249 = sext i32 %247 to i64
  %250 = getelementptr inbounds [10 x i32], ptr %21, i64 0, i64 %249
  store i32 %246, ptr %250, align 4, !tbaa !11
  br label %251

251:                                              ; preds = %241, %236
  %252 = load ptr, ptr %19, align 8, !tbaa !5
  %253 = getelementptr inbounds %"struct.spv::Builder::TextureParameters", ptr %252, i32 0, i32 15
  %254 = load i8, ptr %253, align 4, !tbaa !34, !range !28, !noundef !29
  %255 = trunc i8 %254 to i1
  br i1 %255, label %256, label %259

256:                                              ; preds = %251
  %257 = load i32, ptr %25, align 4, !tbaa !15
  %258 = call noundef i32 @_ZN3spvorENS_17ImageOperandsMaskES0_(i32 noundef %257, i32 noundef 1024)
  store i32 %258, ptr %25, align 4, !tbaa !15
  br label %259

259:                                              ; preds = %256, %251
  %260 = load ptr, ptr %19, align 8, !tbaa !5
  %261 = getelementptr inbounds %"struct.spv::Builder::TextureParameters", ptr %260, i32 0, i32 16
  %262 = load i8, ptr %261, align 1, !tbaa !35, !range !28, !noundef !29
  %263 = trunc i8 %262 to i1
  br i1 %263, label %264, label %267

264:                                              ; preds = %259
  %265 = load i32, ptr %25, align 4, !tbaa !15
  %266 = call noundef i32 @_ZN3spvorENS_17ImageOperandsMaskES0_(i32 noundef %265, i32 noundef 2048)
  store i32 %266, ptr %25, align 4, !tbaa !15
  br label %267

267:                                              ; preds = %264, %259
  %268 = load i32, ptr %25, align 4, !tbaa !15
  %269 = load i32, ptr %20, align 4, !tbaa !15
  %270 = call noundef i32 @_ZN3spvorENS_17ImageOperandsMaskES0_(i32 noundef %268, i32 noundef %269)
  store i32 %270, ptr %25, align 4, !tbaa !15
  %271 = load i32, ptr %25, align 4, !tbaa !15
  %272 = icmp eq i32 %271, 0
  br i1 %272, label %273, label %276

273:                                              ; preds = %267
  %274 = load i32, ptr %22, align 4, !tbaa !11
  %275 = add nsw i32 %274, -1
  store i32 %275, ptr %22, align 4, !tbaa !11
  br label %281

276:                                              ; preds = %267
  %277 = load i32, ptr %25, align 4, !tbaa !15
  %278 = load i32, ptr %24, align 4, !tbaa !11
  %279 = sext i32 %278 to i64
  %280 = getelementptr inbounds [10 x i32], ptr %21, i64 0, i64 %279
  store i32 %277, ptr %280, align 4, !tbaa !11
  br label %281

281:                                              ; preds = %276, %273
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #8
  store i32 0, ptr %26, align 4, !tbaa !36
  %282 = load i8, ptr %15, align 1, !tbaa !13, !range !28, !noundef !29
  %283 = trunc i8 %282 to i1
  br i1 %283, label %284, label %290

284:                                              ; preds = %281
  %285 = load i8, ptr %14, align 1, !tbaa !13, !range !28, !noundef !29
  %286 = trunc i8 %285 to i1
  br i1 %286, label %287, label %288

287:                                              ; preds = %284
  store i32 313, ptr %26, align 4, !tbaa !36
  br label %289

288:                                              ; preds = %284
  store i32 95, ptr %26, align 4, !tbaa !36
  br label %289

289:                                              ; preds = %288, %287
  br label %404

290:                                              ; preds = %281
  %291 = load ptr, ptr %19, align 8, !tbaa !5
  %292 = getelementptr inbounds %"struct.spv::Builder::TextureParameters", ptr %291, i32 0, i32 13
  %293 = load i32, ptr %292, align 4, !tbaa !22
  %294 = icmp ne i32 %293, 0
  br i1 %294, label %295, label %301

295:                                              ; preds = %290
  %296 = load ptr, ptr %19, align 8, !tbaa !5
  %297 = getelementptr inbounds %"struct.spv::Builder::TextureParameters", ptr %296, i32 0, i32 14
  %298 = load i32, ptr %297, align 4, !tbaa !23
  %299 = icmp ne i32 %298, 0
  br i1 %299, label %300, label %301

300:                                              ; preds = %295
  store i32 5283, ptr %26, align 4, !tbaa !36
  br label %403

301:                                              ; preds = %295, %290
  %302 = load i8, ptr %17, align 1, !tbaa !13, !range !28, !noundef !29
  %303 = trunc i8 %302 to i1
  br i1 %303, label %304, label %322

304:                                              ; preds = %301
  %305 = load ptr, ptr %19, align 8, !tbaa !5
  %306 = getelementptr inbounds %"struct.spv::Builder::TextureParameters", ptr %305, i32 0, i32 4
  %307 = load i32, ptr %306, align 4, !tbaa !20
  %308 = icmp ne i32 %307, 0
  br i1 %308, label %309, label %315

309:                                              ; preds = %304
  %310 = load i8, ptr %14, align 1, !tbaa !13, !range !28, !noundef !29
  %311 = trunc i8 %310 to i1
  br i1 %311, label %312, label %313

312:                                              ; preds = %309
  store i32 315, ptr %26, align 4, !tbaa !36
  br label %314

313:                                              ; preds = %309
  store i32 97, ptr %26, align 4, !tbaa !36
  br label %314

314:                                              ; preds = %313, %312
  br label %321

315:                                              ; preds = %304
  %316 = load i8, ptr %14, align 1, !tbaa !13, !range !28, !noundef !29
  %317 = trunc i8 %316 to i1
  br i1 %317, label %318, label %319

318:                                              ; preds = %315
  store i32 314, ptr %26, align 4, !tbaa !36
  br label %320

319:                                              ; preds = %315
  store i32 96, ptr %26, align 4, !tbaa !36
  br label %320

320:                                              ; preds = %319, %318
  br label %321

321:                                              ; preds = %320, %314
  br label %402

322:                                              ; preds = %301
  %323 = load i8, ptr %23, align 1, !tbaa !13, !range !28, !noundef !29
  %324 = trunc i8 %323 to i1
  br i1 %324, label %325, label %363

325:                                              ; preds = %322
  %326 = load ptr, ptr %19, align 8, !tbaa !5
  %327 = getelementptr inbounds %"struct.spv::Builder::TextureParameters", ptr %326, i32 0, i32 4
  %328 = load i32, ptr %327, align 4, !tbaa !20
  %329 = icmp ne i32 %328, 0
  br i1 %329, label %330, label %346

330:                                              ; preds = %325
  %331 = load i8, ptr %16, align 1, !tbaa !13, !range !28, !noundef !29
  %332 = trunc i8 %331 to i1
  br i1 %332, label %333, label %339

333:                                              ; preds = %330
  %334 = load i8, ptr %14, align 1, !tbaa !13, !range !28, !noundef !29
  %335 = trunc i8 %334 to i1
  br i1 %335, label %336, label %337

336:                                              ; preds = %333
  store i32 312, ptr %26, align 4, !tbaa !36
  br label %338

337:                                              ; preds = %333
  store i32 94, ptr %26, align 4, !tbaa !36
  br label %338

338:                                              ; preds = %337, %336
  br label %345

339:                                              ; preds = %330
  %340 = load i8, ptr %14, align 1, !tbaa !13, !range !28, !noundef !29
  %341 = trunc i8 %340 to i1
  br i1 %341, label %342, label %343

342:                                              ; preds = %339
  store i32 308, ptr %26, align 4, !tbaa !36
  br label %344

343:                                              ; preds = %339
  store i32 90, ptr %26, align 4, !tbaa !36
  br label %344

344:                                              ; preds = %343, %342
  br label %345

345:                                              ; preds = %344, %338
  br label %362

346:                                              ; preds = %325
  %347 = load i8, ptr %16, align 1, !tbaa !13, !range !28, !noundef !29
  %348 = trunc i8 %347 to i1
  br i1 %348, label %349, label %355

349:                                              ; preds = %346
  %350 = load i8, ptr %14, align 1, !tbaa !13, !range !28, !noundef !29
  %351 = trunc i8 %350 to i1
  br i1 %351, label %352, label %353

352:                                              ; preds = %349
  store i32 310, ptr %26, align 4, !tbaa !36
  br label %354

353:                                              ; preds = %349
  store i32 92, ptr %26, align 4, !tbaa !36
  br label %354

354:                                              ; preds = %353, %352
  br label %361

355:                                              ; preds = %346
  %356 = load i8, ptr %14, align 1, !tbaa !13, !range !28, !noundef !29
  %357 = trunc i8 %356 to i1
  br i1 %357, label %358, label %359

358:                                              ; preds = %355
  store i32 306, ptr %26, align 4, !tbaa !36
  br label %360

359:                                              ; preds = %355
  store i32 88, ptr %26, align 4, !tbaa !36
  br label %360

360:                                              ; preds = %359, %358
  br label %361

361:                                              ; preds = %360, %354
  br label %362

362:                                              ; preds = %361, %345
  br label %401

363:                                              ; preds = %322
  %364 = load ptr, ptr %19, align 8, !tbaa !5
  %365 = getelementptr inbounds %"struct.spv::Builder::TextureParameters", ptr %364, i32 0, i32 4
  %366 = load i32, ptr %365, align 4, !tbaa !20
  %367 = icmp ne i32 %366, 0
  br i1 %367, label %368, label %384

368:                                              ; preds = %363
  %369 = load i8, ptr %16, align 1, !tbaa !13, !range !28, !noundef !29
  %370 = trunc i8 %369 to i1
  br i1 %370, label %371, label %377

371:                                              ; preds = %368
  %372 = load i8, ptr %14, align 1, !tbaa !13, !range !28, !noundef !29
  %373 = trunc i8 %372 to i1
  br i1 %373, label %374, label %375

374:                                              ; preds = %371
  store i32 311, ptr %26, align 4, !tbaa !36
  br label %376

375:                                              ; preds = %371
  store i32 93, ptr %26, align 4, !tbaa !36
  br label %376

376:                                              ; preds = %375, %374
  br label %383

377:                                              ; preds = %368
  %378 = load i8, ptr %14, align 1, !tbaa !13, !range !28, !noundef !29
  %379 = trunc i8 %378 to i1
  br i1 %379, label %380, label %381

380:                                              ; preds = %377
  store i32 307, ptr %26, align 4, !tbaa !36
  br label %382

381:                                              ; preds = %377
  store i32 89, ptr %26, align 4, !tbaa !36
  br label %382

382:                                              ; preds = %381, %380
  br label %383

383:                                              ; preds = %382, %376
  br label %400

384:                                              ; preds = %363
  %385 = load i8, ptr %16, align 1, !tbaa !13, !range !28, !noundef !29
  %386 = trunc i8 %385 to i1
  br i1 %386, label %387, label %393

387:                                              ; preds = %384
  %388 = load i8, ptr %14, align 1, !tbaa !13, !range !28, !noundef !29
  %389 = trunc i8 %388 to i1
  br i1 %389, label %390, label %391

390:                                              ; preds = %387
  store i32 309, ptr %26, align 4, !tbaa !36
  br label %392

391:                                              ; preds = %387
  store i32 91, ptr %26, align 4, !tbaa !36
  br label %392

392:                                              ; preds = %391, %390
  br label %399

393:                                              ; preds = %384
  %394 = load i8, ptr %14, align 1, !tbaa !13, !range !28, !noundef !29
  %395 = trunc i8 %394 to i1
  br i1 %395, label %396, label %397

396:                                              ; preds = %393
  store i32 305, ptr %26, align 4, !tbaa !36
  br label %398

397:                                              ; preds = %393
  store i32 87, ptr %26, align 4, !tbaa !36
  br label %398

398:                                              ; preds = %397, %396
  br label %399

399:                                              ; preds = %398, %392
  br label %400

400:                                              ; preds = %399, %383
  br label %401

401:                                              ; preds = %400, %362
  br label %402

402:                                              ; preds = %401, %321
  br label %403

403:                                              ; preds = %402, %300
  br label %404

404:                                              ; preds = %403, %289
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #8
  %405 = load i32, ptr %13, align 4, !tbaa !11
  store i32 %405, ptr %27, align 4, !tbaa !11
  %406 = load i32, ptr %13, align 4, !tbaa !11
  %407 = call noundef zeroext i1 @_ZNK3spv7Builder12isScalarTypeEj(ptr noundef nonnull align 8 dereferenceable(1096) %42, i32 noundef %406)
  br i1 %407, label %415, label %408

408:                                              ; preds = %404
  %409 = load i32, ptr %26, align 4, !tbaa !36
  switch i32 %409, label %413 [
    i32 89, label %410
    i32 90, label %410
    i32 93, label %410
    i32 94, label %410
  ]

410:                                              ; preds = %408, %408, %408, %408
  %411 = load i32, ptr %13, align 4, !tbaa !11
  %412 = call noundef i32 @_ZNK3spv7Builder15getScalarTypeIdEj(ptr noundef nonnull align 8 dereferenceable(1096) %42, i32 noundef %411)
  store i32 %412, ptr %13, align 4, !tbaa !11
  br label %414

413:                                              ; preds = %408
  br label %414

414:                                              ; preds = %413, %410
  br label %415

415:                                              ; preds = %414, %404
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #8
  store i32 0, ptr %28, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #8
  store i32 0, ptr %29, align 4, !tbaa !11
  %416 = load i8, ptr %14, align 1, !tbaa !13, !range !28, !noundef !29
  %417 = trunc i8 %416 to i1
  br i1 %417, label %418, label %427

418:                                              ; preds = %415
  %419 = load i32, ptr %13, align 4, !tbaa !11
  store i32 %419, ptr %28, align 4, !tbaa !11
  %420 = load ptr, ptr %19, align 8, !tbaa !5
  %421 = getelementptr inbounds %"struct.spv::Builder::TextureParameters", ptr %420, i32 0, i32 11
  %422 = load i32, ptr %421, align 4, !tbaa !38
  %423 = call noundef i32 @_ZNK3spv7Builder14getDerefTypeIdEj(ptr noundef nonnull align 8 dereferenceable(1096) %42, i32 noundef %422)
  store i32 %423, ptr %29, align 4, !tbaa !11
  %424 = load i32, ptr %28, align 4, !tbaa !11
  %425 = load i32, ptr %29, align 4, !tbaa !11
  %426 = call noundef i32 @_ZN3spv7Builder20makeStructResultTypeEjj(ptr noundef nonnull align 8 dereferenceable(1096) %42, i32 noundef %424, i32 noundef %425)
  store i32 %426, ptr %13, align 4, !tbaa !11
  br label %427

427:                                              ; preds = %418, %415
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #8
  %428 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 96) #9
  %429 = invoke noundef i32 @_ZN3spv7Builder11getUniqueIdEv(ptr noundef nonnull align 8 dereferenceable(1096) %42)
          to label %430 unwind label %439

430:                                              ; preds = %427
  %431 = load i32, ptr %13, align 4, !tbaa !11
  %432 = load i32, ptr %26, align 4, !tbaa !36
  invoke void @_ZN3spv11InstructionC2EjjNS_2OpE(ptr noundef nonnull align 8 dereferenceable(96) %428, i32 noundef %429, i32 noundef %431, i32 noundef %432)
          to label %433 unwind label %439

433:                                              ; preds = %430
  store ptr %428, ptr %30, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #8
  store i32 0, ptr %33, align 4, !tbaa !11
  br label %434

434:                                              ; preds = %449, %433
  %435 = load i32, ptr %33, align 4, !tbaa !11
  %436 = load i32, ptr %24, align 4, !tbaa !11
  %437 = icmp slt i32 %435, %436
  br i1 %437, label %443, label %438

438:                                              ; preds = %434
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #8
  br label %452

439:                                              ; preds = %430, %427
  %440 = landingpad { ptr, i32 }
          cleanup
  %441 = extractvalue { ptr, i32 } %440, 0
  store ptr %441, ptr %31, align 8
  %442 = extractvalue { ptr, i32 } %440, 1
  store i32 %442, ptr %32, align 4
  call void @_ZdlPvm(ptr noundef %428, i64 noundef 96) #10
  br label %521

443:                                              ; preds = %434
  %444 = load ptr, ptr %30, align 8, !tbaa !5
  %445 = load i32, ptr %33, align 4, !tbaa !11
  %446 = sext i32 %445 to i64
  %447 = getelementptr inbounds [10 x i32], ptr %21, i64 0, i64 %446
  %448 = load i32, ptr %447, align 4, !tbaa !11
  call void @_ZN3spv11Instruction12addIdOperandEj(ptr noundef nonnull align 8 dereferenceable(96) %444, i32 noundef %448)
  br label %449

449:                                              ; preds = %443
  %450 = load i32, ptr %33, align 4, !tbaa !11
  %451 = add nsw i32 %450, 1
  store i32 %451, ptr %33, align 4, !tbaa !11
  br label %434, !llvm.loop !39

452:                                              ; preds = %438
  %453 = load i32, ptr %24, align 4, !tbaa !11
  %454 = load i32, ptr %22, align 4, !tbaa !11
  %455 = icmp slt i32 %453, %454
  br i1 %455, label %456, label %462

456:                                              ; preds = %452
  %457 = load ptr, ptr %30, align 8, !tbaa !5
  %458 = load i32, ptr %24, align 4, !tbaa !11
  %459 = sext i32 %458 to i64
  %460 = getelementptr inbounds [10 x i32], ptr %21, i64 0, i64 %459
  %461 = load i32, ptr %460, align 4, !tbaa !11
  call void @_ZN3spv11Instruction19addImmediateOperandEj(ptr noundef nonnull align 8 dereferenceable(96) %457, i32 noundef %461)
  br label %462

462:                                              ; preds = %456, %452
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #8
  %463 = load i32, ptr %24, align 4, !tbaa !11
  %464 = add nsw i32 %463, 1
  store i32 %464, ptr %34, align 4, !tbaa !11
  br label %465

465:                                              ; preds = %476, %462
  %466 = load i32, ptr %34, align 4, !tbaa !11
  %467 = load i32, ptr %22, align 4, !tbaa !11
  %468 = icmp slt i32 %466, %467
  br i1 %468, label %470, label %469

469:                                              ; preds = %465
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #8
  br label %479

470:                                              ; preds = %465
  %471 = load ptr, ptr %30, align 8, !tbaa !5
  %472 = load i32, ptr %34, align 4, !tbaa !11
  %473 = sext i32 %472 to i64
  %474 = getelementptr inbounds [10 x i32], ptr %21, i64 0, i64 %473
  %475 = load i32, ptr %474, align 4, !tbaa !11
  call void @_ZN3spv11Instruction12addIdOperandEj(ptr noundef nonnull align 8 dereferenceable(96) %471, i32 noundef %475)
  br label %476

476:                                              ; preds = %470
  %477 = load i32, ptr %34, align 4, !tbaa !11
  %478 = add nsw i32 %477, 1
  store i32 %478, ptr %34, align 4, !tbaa !11
  br label %465, !llvm.loop !41

479:                                              ; preds = %469
  %480 = load ptr, ptr %30, align 8, !tbaa !5
  %481 = call noundef i32 @_ZNK3spv11Instruction11getResultIdEv(ptr noundef nonnull align 8 dereferenceable(96) %480)
  %482 = load i32, ptr %12, align 4, !tbaa !9
  %483 = call noundef i32 @_ZN3spv7Builder12setPrecisionEjNS_10DecorationE(ptr noundef nonnull align 8 dereferenceable(1096) %42, i32 noundef %481, i32 noundef %482)
  %484 = getelementptr inbounds %"class.spv::Builder", ptr %42, i32 0, i32 17
  %485 = load ptr, ptr %484, align 8, !tbaa !42
  %486 = load ptr, ptr %30, align 8, !tbaa !5
  call void @_ZNSt10unique_ptrIN3spv11InstructionESt14default_deleteIS1_EEC2IS3_vEEPS1_(ptr noundef nonnull align 8 dereferenceable(8) %35, ptr noundef %486) #8
  invoke void @_ZN3spv5Block14addInstructionESt10unique_ptrINS_11InstructionESt14default_deleteIS2_EE(ptr noundef nonnull align 8 dereferenceable(113) %485, ptr noundef %35)
          to label %487 unwind label %505

487:                                              ; preds = %479
  call void @_ZNSt10unique_ptrIN3spv11InstructionESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %35) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #8
  %488 = load ptr, ptr %30, align 8, !tbaa !5
  %489 = call noundef i32 @_ZNK3spv11Instruction11getResultIdEv(ptr noundef nonnull align 8 dereferenceable(96) %488)
  store i32 %489, ptr %36, align 4, !tbaa !11
  %490 = load i8, ptr %14, align 1, !tbaa !13, !range !28, !noundef !29
  %491 = trunc i8 %490 to i1
  br i1 %491, label %492, label %509

492:                                              ; preds = %487
  call void @_ZN3spv7Builder13addCapabilityENS_10CapabilityE(ptr noundef nonnull align 8 dereferenceable(1096) %42, i32 noundef 41)
  %493 = load i32, ptr %36, align 4, !tbaa !11
  %494 = load i32, ptr %29, align 4, !tbaa !11
  %495 = call noundef i32 @_ZN3spv7Builder22createCompositeExtractEjjj(ptr noundef nonnull align 8 dereferenceable(1096) %42, i32 noundef %493, i32 noundef %494, i32 noundef 1)
  %496 = load ptr, ptr %19, align 8, !tbaa !5
  %497 = getelementptr inbounds %"struct.spv::Builder::TextureParameters", ptr %496, i32 0, i32 11
  %498 = load i32, ptr %497, align 4, !tbaa !38
  call void @_ZN3spv7Builder11createStoreEjjNS_16MemoryAccessMaskENS_5ScopeEj(ptr noundef nonnull align 8 dereferenceable(1096) %42, i32 noundef %495, i32 noundef %498, i32 noundef 0, i32 noundef 2147483647, i32 noundef 0)
  %499 = load i32, ptr %36, align 4, !tbaa !11
  %500 = load i32, ptr %28, align 4, !tbaa !11
  %501 = call noundef i32 @_ZN3spv7Builder22createCompositeExtractEjjj(ptr noundef nonnull align 8 dereferenceable(1096) %42, i32 noundef %499, i32 noundef %500, i32 noundef 0)
  store i32 %501, ptr %36, align 4, !tbaa !11
  %502 = load i32, ptr %36, align 4, !tbaa !11
  %503 = load i32, ptr %12, align 4, !tbaa !9
  %504 = call noundef i32 @_ZN3spv7Builder12setPrecisionEjNS_10DecorationE(ptr noundef nonnull align 8 dereferenceable(1096) %42, i32 noundef %502, i32 noundef %503)
  br label %519

505:                                              ; preds = %479
  %506 = landingpad { ptr, i32 }
          cleanup
  %507 = extractvalue { ptr, i32 } %506, 0
  store ptr %507, ptr %31, align 8
  %508 = extractvalue { ptr, i32 } %506, 1
  store i32 %508, ptr %32, align 4
  call void @_ZNSt10unique_ptrIN3spv11InstructionESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %35) #8
  br label %521

509:                                              ; preds = %487
  %510 = load i32, ptr %13, align 4, !tbaa !11
  %511 = load i32, ptr %27, align 4, !tbaa !11
  %512 = icmp ne i32 %510, %511
  br i1 %512, label %513, label %518

513:                                              ; preds = %509
  %514 = load i32, ptr %12, align 4, !tbaa !9
  %515 = load i32, ptr %36, align 4, !tbaa !11
  %516 = load i32, ptr %27, align 4, !tbaa !11
  %517 = call noundef i32 @_ZN3spv7Builder11smearScalarENS_10DecorationEjj(ptr noundef nonnull align 8 dereferenceable(1096) %42, i32 noundef %514, i32 noundef %515, i32 noundef %516)
  store i32 %517, ptr %36, align 4, !tbaa !11
  br label %518

518:                                              ; preds = %513, %509
  br label %519

519:                                              ; preds = %518, %492
  %520 = load i32, ptr %36, align 4, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr %21) #8
  ret i32 %520

521:                                              ; preds = %505, %439
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr %21) #8
  br label %522

522:                                              ; preds = %521
  %523 = load ptr, ptr %31, align 8
  %524 = load i32, ptr %32, align 4
  %525 = insertvalue { ptr, i32 } poison, ptr %523, 0
  %526 = insertvalue { ptr, i32 } %525, i32 %524, 1
  resume { ptr, i32 } %526
}

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

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

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

attributes #0 = { nobuiltin nounwind "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 = { nobuiltin allocsize(0) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #7 = { 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 #8 = { nounwind }
attributes #9 = { builtin allocsize(0) }
attributes #10 = { builtin 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 = !{!"_ZTSN3spv10DecorationE", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"int", !7, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"bool", !7, i64 0}
!15 = !{!16, !16, i64 0}
!16 = !{!"_ZTSN3spv17ImageOperandsMaskE", !7, i64 0}
!17 = !{!18, !12, i64 0}
!18 = !{!"_ZTSN3spv7Builder17TextureParametersE", !12, i64 0, !12, i64 4, !12, i64 8, !12, i64 12, !12, i64 16, !12, i64 20, !12, i64 24, !12, i64 28, !12, i64 32, !12, i64 36, !12, i64 40, !12, i64 44, !12, i64 48, !12, i64 52, !12, i64 56, !14, i64 60, !14, i64 61}
!19 = !{!18, !12, i64 4}
!20 = !{!18, !12, i64 16}
!21 = !{!18, !12, i64 40}
!22 = !{!18, !12, i64 52}
!23 = !{!18, !12, i64 56}
!24 = !{!18, !12, i64 8}
!25 = !{!18, !12, i64 12}
!26 = !{!18, !12, i64 28}
!27 = !{!18, !12, i64 32}
!28 = !{i8 0, i8 2}
!29 = !{}
!30 = !{!18, !12, i64 20}
!31 = !{!18, !12, i64 24}
!32 = !{!18, !12, i64 36}
!33 = !{!18, !12, i64 48}
!34 = !{!18, !14, i64 60}
!35 = !{!18, !14, i64 61}
!36 = !{!37, !37, i64 0}
!37 = !{!"_ZTSN3spv2OpE", !7, i64 0}
!38 = !{!18, !12, i64 44}
!39 = distinct !{!39, !40}
!40 = !{!"llvm.loop.mustprogress"}
!41 = distinct !{!41, !40}
!42 = !{!43, !6, i64 296}
!43 = !{!"_ZTSN3spv7BuilderE", !12, i64 8, !44, i64 12, !12, i64 16, !12, i64 20, !45, i64 24, !12, i64 56, !6, i64 64, !14, i64 72, !48, i64 80, !56, i64 128, !56, i64 152, !60, i64 176, !61, i64 180, !62, i64 184, !12, i64 232, !67, i64 240, !6, i64 296, !12, i64 304, !6, i64 312, !14, i64 320, !76, i64 328, !82, i64 416, !82, i64 440, !82, i64 464, !82, i64 488, !82, i64 512, !82, i64 536, !82, i64 560, !82, i64 584, !86, i64 608, !90, i64 632, !90, i64 688, !90, i64 744, !72, i64 800, !95, i64 824, !101, i64 904, !107, i64 984, !109, i64 1040, !6, i64 1088}
!44 = !{!"_ZTSN3spv14SourceLanguageE", !7, i64 0}
!45 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !46, i64 0, !47, i64 8, !7, i64 16}
!46 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!47 = !{!"long", !7, i64 0}
!48 = !{!"_ZTSSt3setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIS5_ESaIS5_EE", !49, i64 0}
!49 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St9_IdentityIS5_ESt4lessIS5_ESaIS5_EE", !50, i64 0}
!50 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St9_IdentityIS5_ESt4lessIS5_ESaIS5_EE13_Rb_tree_implIS9_Lb1EEE", !51, i64 0, !53, i64 8}
!51 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE", !52, i64 0}
!52 = !{!"_ZTSSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE"}
!53 = !{!"_ZTSSt15_Rb_tree_header", !54, i64 0, !47, i64 32}
!54 = !{!"_ZTSSt18_Rb_tree_node_base", !55, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!55 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!56 = !{!"_ZTSSt6vectorIPKcSaIS1_EE", !57, i64 0}
!57 = !{!"_ZTSSt12_Vector_baseIPKcSaIS1_EE", !58, i64 0}
!58 = !{!"_ZTSNSt12_Vector_baseIPKcSaIS1_EE12_Vector_implE", !59, i64 0}
!59 = !{!"_ZTSNSt12_Vector_baseIPKcSaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!60 = !{!"_ZTSN3spv15AddressingModelE", !7, i64 0}
!61 = !{!"_ZTSN3spv11MemoryModelE", !7, i64 0}
!62 = !{!"_ZTSSt3setIN3spv10CapabilityESt4lessIS1_ESaIS1_EE", !63, i64 0}
!63 = !{!"_ZTSSt8_Rb_treeIN3spv10CapabilityES1_St9_IdentityIS1_ESt4lessIS1_ESaIS1_EE", !64, i64 0}
!64 = !{!"_ZTSNSt8_Rb_treeIN3spv10CapabilityES1_St9_IdentityIS1_ESt4lessIS1_ESaIS1_EE13_Rb_tree_implIS5_Lb1EEE", !65, i64 0, !53, i64 8}
!65 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIN3spv10CapabilityEEE", !66, i64 0}
!66 = !{!"_ZTSSt4lessIN3spv10CapabilityEE"}
!67 = !{!"_ZTSN3spv6ModuleE", !68, i64 8, !72, i64 32}
!68 = !{!"_ZTSSt6vectorIPN3spv8FunctionESaIS2_EE", !69, i64 0}
!69 = !{!"_ZTSSt12_Vector_baseIPN3spv8FunctionESaIS2_EE", !70, i64 0}
!70 = !{!"_ZTSNSt12_Vector_baseIPN3spv8FunctionESaIS2_EE12_Vector_implE", !71, i64 0}
!71 = !{!"_ZTSNSt12_Vector_baseIPN3spv8FunctionESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!72 = !{!"_ZTSSt6vectorIPN3spv11InstructionESaIS2_EE", !73, i64 0}
!73 = !{!"_ZTSSt12_Vector_baseIPN3spv11InstructionESaIS2_EE", !74, i64 0}
!74 = !{!"_ZTSNSt12_Vector_baseIPN3spv11InstructionESaIS2_EE12_Vector_implE", !75, i64 0}
!75 = !{!"_ZTSNSt12_Vector_baseIPN3spv11InstructionESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!76 = !{!"_ZTSN3spv7Builder11AccessChainE", !12, i64 0, !77, i64 8, !12, i64 32, !77, i64 40, !12, i64 64, !12, i64 68, !14, i64 72, !12, i64 76, !81, i64 80}
!77 = !{!"_ZTSSt6vectorIjSaIjEE", !78, i64 0}
!78 = !{!"_ZTSSt12_Vector_baseIjSaIjEE", !79, i64 0}
!79 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE12_Vector_implE", !80, i64 0}
!80 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!81 = !{!"_ZTSN3spv7Builder11AccessChain13CoherentFlagsE", !12, i64 0, !12, i64 0, !12, i64 0, !12, i64 0, !12, i64 0, !12, i64 0, !12, i64 0, !12, i64 0, !12, i64 1, !12, i64 1}
!82 = !{!"_ZTSSt6vectorISt10unique_ptrIN3spv11InstructionESt14default_deleteIS2_EESaIS5_EE", !83, i64 0}
!83 = !{!"_ZTSSt12_Vector_baseISt10unique_ptrIN3spv11InstructionESt14default_deleteIS2_EESaIS5_EE", !84, i64 0}
!84 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrIN3spv11InstructionESt14default_deleteIS2_EESaIS5_EE12_Vector_implE", !85, i64 0}
!85 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrIN3spv11InstructionESt14default_deleteIS2_EESaIS5_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!86 = !{!"_ZTSSt6vectorISt10unique_ptrIN3spv8FunctionESt14default_deleteIS2_EESaIS5_EE", !87, i64 0}
!87 = !{!"_ZTSSt12_Vector_baseISt10unique_ptrIN3spv8FunctionESt14default_deleteIS2_EESaIS5_EE", !88, i64 0}
!88 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrIN3spv8FunctionESt14default_deleteIS2_EESaIS5_EE12_Vector_implE", !89, i64 0}
!89 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrIN3spv8FunctionESt14default_deleteIS2_EESaIS5_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!90 = !{!"_ZTSSt13unordered_mapIjSt6vectorIPN3spv11InstructionESaIS3_EESt4hashIjESt8equal_toIjESaISt4pairIKjS5_EEE", !91, i64 0}
!91 = !{!"_ZTSSt10_HashtableIjSt4pairIKjSt6vectorIPN3spv11InstructionESaIS5_EEESaIS8_ENSt8__detail10_Select1stESt8equal_toIjESt4hashIjENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb0ELb0ELb1EEEE", !6, i64 0, !47, i64 8, !92, i64 16, !47, i64 24, !93, i64 32, !6, i64 48}
!92 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !6, i64 0}
!93 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !94, i64 0, !47, i64 8}
!94 = !{!"float", !7, i64 0}
!95 = !{!"_ZTSSt5stackIPN3spv5BlockESt5dequeIS2_SaIS2_EEE", !96, i64 0}
!96 = !{!"_ZTSSt5dequeIPN3spv5BlockESaIS2_EE", !97, i64 0}
!97 = !{!"_ZTSSt11_Deque_baseIPN3spv5BlockESaIS2_EE", !98, i64 0}
!98 = !{!"_ZTSNSt11_Deque_baseIPN3spv5BlockESaIS2_EE11_Deque_implE", !99, i64 0}
!99 = !{!"_ZTSNSt11_Deque_baseIPN3spv5BlockESaIS2_EE16_Deque_impl_dataE", !6, i64 0, !47, i64 8, !100, i64 16, !100, i64 48}
!100 = !{!"_ZTSSt15_Deque_iteratorIPN3spv5BlockERS2_PS2_E", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!101 = !{!"_ZTSSt5stackIN3spv7Builder10LoopBlocksESt5dequeIS2_SaIS2_EEE", !102, i64 0}
!102 = !{!"_ZTSSt5dequeIN3spv7Builder10LoopBlocksESaIS2_EE", !103, i64 0}
!103 = !{!"_ZTSSt11_Deque_baseIN3spv7Builder10LoopBlocksESaIS2_EE", !104, i64 0}
!104 = !{!"_ZTSNSt11_Deque_baseIN3spv7Builder10LoopBlocksESaIS2_EE11_Deque_implE", !105, i64 0}
!105 = !{!"_ZTSNSt11_Deque_baseIN3spv7Builder10LoopBlocksESaIS2_EE16_Deque_impl_dataE", !6, i64 0, !47, i64 8, !106, i64 16, !106, i64 48}
!106 = !{!"_ZTSSt15_Deque_iteratorIN3spv7Builder10LoopBlocksERS2_PS2_E", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!107 = !{!"_ZTSSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjSt4hashIS5_ESt8equal_toIS5_ESaISt4pairIKS5_jEEE", !108, i64 0}
!108 = !{!"_ZTSSt10_HashtableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_jESaIS8_ENSt8__detail10_Select1stESt8equal_toIS5_ESt4hashIS5_ENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb1ELb0ELb1EEEE", !6, i64 0, !47, i64 8, !92, i64 16, !47, i64 24, !93, i64 32, !6, i64 48}
!109 = !{!"_ZTSSt3mapIjPKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIjESaISt4pairIKjS7_EEE", !110, i64 0}
!110 = !{!"_ZTSSt8_Rb_treeIjSt4pairIKjPKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEESt10_Select1stISA_ESt4lessIjESaISA_EE", !111, i64 0}
!111 = !{!"_ZTSNSt8_Rb_treeIjSt4pairIKjPKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEESt10_Select1stISA_ESt4lessIjESaISA_EE13_Rb_tree_implISE_Lb1EEE", !112, i64 0, !53, i64 8}
!112 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIjEE", !113, i64 0}
!113 = !{!"_ZTSSt4lessIjE"}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%"class.std::unique_ptr" = type { %"struct.std::__uniq_ptr_data" }
%"struct.std::__uniq_ptr_data" = type { %"class.std::__uniq_ptr_impl" }
%"class.std::__uniq_ptr_impl" = type { %"class.std::tuple" }
%"class.std::tuple" = type { %"struct.std::_Tuple_impl" }
%"struct.std::_Tuple_impl" = type { %"struct.std::_Head_base.82" }
%"struct.std::_Head_base.82" = type { ptr }

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znwm(i64 noundef) local_unnamed_addr #1

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN3spv11InstructionC2EjjNS_2OpE(ptr noundef nonnull align 8 dereferenceable(96), i32 noundef, i32 noundef, i32 noundef) unnamed_addr #2 align 2

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN3spv7Builder17makeFloatConstantEfb(ptr noundef nonnull align 8 dereferenceable(1096), float noundef, i1 noundef zeroext) local_unnamed_addr #3 align 2

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN3spv7Builder17createTextureCallENS_10DecorationEjbbbbbRKNS0_17TextureParametersENS_17ImageOperandsMaskE(ptr noundef nonnull align 8 dereferenceable(1096) %0, i32 noundef %1, i32 noundef %2, i1 noundef zeroext %3, i1 noundef zeroext %4, i1 noundef zeroext %5, i1 noundef zeroext %6, i1 noundef zeroext %7, ptr nocapture noundef nonnull readonly align 4 dereferenceable(64) %8, i32 noundef %9) local_unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 {
  %11 = alloca [10 x i32], align 16
  %12 = alloca %"class.std::unique_ptr", align 8
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %11) #7
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(40) %11, i8 0, i64 40, i1 false)
  %13 = load <2 x i32>, ptr %8, align 4, !tbaa !5
  store <2 x i32> %13, ptr %11, align 16, !tbaa !5
  %14 = getelementptr inbounds i8, ptr %8, i64 16
  %15 = load i32, ptr %14, align 4, !tbaa !9
  %.not = icmp eq i32 %15, 0
  br i1 %.not, label %18, label %16

16:                                               ; preds = %10
  %17 = getelementptr inbounds i8, ptr %11, i64 8
  store i32 %15, ptr %17, align 8, !tbaa !5
  br label %18

18:                                               ; preds = %16, %10
  %.0137 = phi i32 [ 3, %16 ], [ 2, %10 ]
  %19 = getelementptr inbounds i8, ptr %8, i64 40
  %20 = load i32, ptr %19, align 4, !tbaa !12
  %.not159 = icmp eq i32 %20, 0
  br i1 %.not159, label %25, label %21

21:                                               ; preds = %18
  %22 = add nuw nsw i32 %.0137, 1
  %23 = zext nneg i32 %.0137 to i64
  %24 = getelementptr inbounds [10 x i32], ptr %11, i64 0, i64 %23
  store i32 %20, ptr %24, align 4, !tbaa !5
  br label %25

25:                                               ; preds = %21, %18
  %.1138 = phi i32 [ %22, %21 ], [ %.0137, %18 ]
  %26 = getelementptr inbounds i8, ptr %8, i64 52
  %27 = load i32, ptr %26, align 4, !tbaa !13
  %.not160 = icmp eq i32 %27, 0
  br i1 %.not160, label %32, label %28

28:                                               ; preds = %25
  %29 = add nuw nsw i32 %.1138, 1
  %30 = zext nneg i32 %.1138 to i64
  %31 = getelementptr inbounds [10 x i32], ptr %11, i64 0, i64 %30
  store i32 %27, ptr %31, align 4, !tbaa !5
  br label %32

32:                                               ; preds = %28, %25
  %.2 = phi i32 [ %29, %28 ], [ %.1138, %25 ]
  %33 = getelementptr inbounds i8, ptr %8, i64 56
  %34 = load i32, ptr %33, align 4, !tbaa !14
  %.not161 = icmp eq i32 %34, 0
  br i1 %.not161, label %39, label %35

35:                                               ; preds = %32
  %36 = add nuw nsw i32 %.2, 1
  %37 = zext nneg i32 %.2 to i64
  %38 = getelementptr inbounds [10 x i32], ptr %11, i64 0, i64 %37
  store i32 %34, ptr %38, align 4, !tbaa !5
  br label %39

39:                                               ; preds = %35, %32
  %.3 = phi i32 [ %36, %35 ], [ %.2, %32 ]
  %40 = add nuw nsw i32 %.3, 1
  %41 = getelementptr inbounds i8, ptr %8, i64 8
  %42 = load i32, ptr %41, align 4, !tbaa !15
  %.not162 = icmp eq i32 %42, 0
  br i1 %.not162, label %49, label %43

43:                                               ; preds = %39
  %44 = tail call noundef i32 @_ZN3spvorENS_17ImageOperandsMaskES0_(i32 noundef 0, i32 noundef 1)
  %45 = load i32, ptr %41, align 4, !tbaa !15
  %46 = add nuw nsw i32 %.3, 2
  %47 = zext nneg i32 %40 to i64
  %48 = getelementptr inbounds [10 x i32], ptr %11, i64 0, i64 %47
  store i32 %45, ptr %48, align 4, !tbaa !5
  br label %49

49:                                               ; preds = %43, %39
  %.0142 = phi i32 [ %44, %43 ], [ 0, %39 ]
  %.4 = phi i32 [ %46, %43 ], [ %40, %39 ]
  %50 = getelementptr inbounds i8, ptr %8, i64 12
  %51 = load i32, ptr %50, align 4, !tbaa !16
  %.not163 = icmp eq i32 %51, 0
  br i1 %.not163, label %55, label %52

52:                                               ; preds = %49
  %53 = tail call noundef i32 @_ZN3spvorENS_17ImageOperandsMaskES0_(i32 noundef %.0142, i32 noundef 2)
  %54 = load i32, ptr %50, align 4, !tbaa !16
  br label %.sink.split

55:                                               ; preds = %49
  %56 = getelementptr inbounds i8, ptr %8, i64 28
  %57 = load i32, ptr %56, align 4, !tbaa !17
  %.not164 = icmp eq i32 %57, 0
  br i1 %.not164, label %66, label %58

58:                                               ; preds = %55
  %59 = tail call noundef i32 @_ZN3spvorENS_17ImageOperandsMaskES0_(i32 noundef %.0142, i32 noundef 4)
  %60 = load i32, ptr %56, align 4, !tbaa !17
  %61 = add nuw nsw i32 %.4, 1
  %62 = zext nneg i32 %.4 to i64
  %63 = getelementptr inbounds [10 x i32], ptr %11, i64 0, i64 %62
  store i32 %60, ptr %63, align 4, !tbaa !5
  %64 = getelementptr inbounds i8, ptr %8, i64 32
  %65 = load i32, ptr %64, align 4, !tbaa !18
  br label %.sink.split

66:                                               ; preds = %55
  %.not175 = xor i1 %7, true
  %brmerge = or i1 %.not175, %4
  %brmerge176 = or i1 %brmerge, %6
  br i1 %brmerge176, label %73, label %67

67:                                               ; preds = %66
  %68 = tail call noundef i32 @_ZN3spvorENS_17ImageOperandsMaskES0_(i32 noundef %.0142, i32 noundef 2)
  %69 = tail call noundef i32 @_ZN3spv7Builder17makeFloatConstantEfb(ptr noundef nonnull align 8 dereferenceable(1096) %0, float noundef 0.000000e+00, i1 noundef zeroext false)
  br label %.sink.split

.sink.split:                                      ; preds = %52, %67, %58
  %.sink201 = phi i32 [ 2, %58 ], [ 1, %67 ], [ 1, %52 ]
  %.sink200 = phi i32 [ %61, %58 ], [ %.4, %67 ], [ %.4, %52 ]
  %.sink = phi i32 [ %65, %58 ], [ %69, %67 ], [ %54, %52 ]
  %.1143.ph = phi i32 [ %59, %58 ], [ %68, %67 ], [ %53, %52 ]
  %70 = add nuw nsw i32 %.4, %.sink201
  %71 = zext nneg i32 %.sink200 to i64
  %72 = getelementptr inbounds [10 x i32], ptr %11, i64 0, i64 %71
  store i32 %.sink, ptr %72, align 4, !tbaa !5
  br label %73

73:                                               ; preds = %.sink.split, %66
  %.1143 = phi i32 [ %.0142, %66 ], [ %.1143.ph, %.sink.split ]
  %.0139 = phi i1 [ false, %66 ], [ true, %.sink.split ]
  %.5 = phi i32 [ %.4, %66 ], [ %70, %.sink.split ]
  %74 = getelementptr inbounds i8, ptr %8, i64 20
  %75 = load i32, ptr %74, align 4, !tbaa !19
  %.not165 = icmp eq i32 %75, 0
  br i1 %.not165, label %85, label %76

76:                                               ; preds = %73
  %77 = tail call noundef zeroext i1 @_ZNK3spv7Builder10isConstantEj(ptr noundef nonnull align 8 dereferenceable(1096) %0, i32 noundef %75)
  br i1 %77, label %79, label %78

78:                                               ; preds = %76
  tail call void @_ZN3spv7Builder13addCapabilityENS_10CapabilityE(ptr noundef nonnull align 8 dereferenceable(1096) %0, i32 noundef 25)
  br label %79

79:                                               ; preds = %76, %78
  %.sink202 = phi i32 [ 16, %78 ], [ 8, %76 ]
  %80 = tail call noundef i32 @_ZN3spvorENS_17ImageOperandsMaskES0_(i32 noundef %.1143, i32 noundef %.sink202)
  %81 = load i32, ptr %74, align 4, !tbaa !19
  %82 = add nuw nsw i32 %.5, 1
  %83 = zext nneg i32 %.5 to i64
  %84 = getelementptr inbounds [10 x i32], ptr %11, i64 0, i64 %83
  store i32 %81, ptr %84, align 4, !tbaa !5
  br label %85

85:                                               ; preds = %79, %73
  %.3145 = phi i32 [ %80, %79 ], [ %.1143, %73 ]
  %.6 = phi i32 [ %82, %79 ], [ %.5, %73 ]
  %86 = getelementptr inbounds i8, ptr %8, i64 24
  %87 = load i32, ptr %86, align 4, !tbaa !20
  %.not166 = icmp eq i32 %87, 0
  br i1 %.not166, label %94, label %88

88:                                               ; preds = %85
  tail call void @_ZN3spv7Builder13addCapabilityENS_10CapabilityE(ptr noundef nonnull align 8 dereferenceable(1096) %0, i32 noundef 25)
  %89 = tail call noundef i32 @_ZN3spvorENS_17ImageOperandsMaskES0_(i32 noundef %.3145, i32 noundef 32)
  %90 = load i32, ptr %86, align 4, !tbaa !20
  %91 = add nuw nsw i32 %.6, 1
  %92 = zext nneg i32 %.6 to i64
  %93 = getelementptr inbounds [10 x i32], ptr %11, i64 0, i64 %92
  store i32 %90, ptr %93, align 4, !tbaa !5
  br label %94

94:                                               ; preds = %88, %85
  %.4146 = phi i32 [ %89, %88 ], [ %.3145, %85 ]
  %.7 = phi i32 [ %91, %88 ], [ %.6, %85 ]
  %95 = getelementptr inbounds i8, ptr %8, i64 36
  %96 = load i32, ptr %95, align 4, !tbaa !21
  %.not167 = icmp eq i32 %96, 0
  br i1 %.not167, label %103, label %97

97:                                               ; preds = %94
  %98 = tail call noundef i32 @_ZN3spvorENS_17ImageOperandsMaskES0_(i32 noundef %.4146, i32 noundef 64)
  %99 = load i32, ptr %95, align 4, !tbaa !21
  %100 = add nuw nsw i32 %.7, 1
  %101 = zext nneg i32 %.7 to i64
  %102 = getelementptr inbounds [10 x i32], ptr %11, i64 0, i64 %101
  store i32 %99, ptr %102, align 4, !tbaa !5
  br label %103

103:                                              ; preds = %97, %94
  %.5147 = phi i32 [ %98, %97 ], [ %.4146, %94 ]
  %.8 = phi i32 [ %100, %97 ], [ %.7, %94 ]
  %104 = getelementptr inbounds i8, ptr %8, i64 48
  %105 = load i32, ptr %104, align 4, !tbaa !22
  %.not168 = icmp eq i32 %105, 0
  br i1 %.not168, label %112, label %106

106:                                              ; preds = %103
  tail call void @_ZN3spv7Builder13addCapabilityENS_10CapabilityE(ptr noundef nonnull align 8 dereferenceable(1096) %0, i32 noundef 42)
  %107 = tail call noundef i32 @_ZN3spvorENS_17ImageOperandsMaskES0_(i32 noundef %.5147, i32 noundef 128)
  %108 = load i32, ptr %104, align 4, !tbaa !22
  %109 = add nuw nsw i32 %.8, 1
  %110 = zext nneg i32 %.8 to i64
  %111 = getelementptr inbounds [10 x i32], ptr %11, i64 0, i64 %110
  store i32 %108, ptr %111, align 4, !tbaa !5
  br label %112

112:                                              ; preds = %106, %103
  %.6148 = phi i32 [ %107, %106 ], [ %.5147, %103 ]
  %.9 = phi i32 [ %109, %106 ], [ %.8, %103 ]
  %113 = getelementptr inbounds i8, ptr %8, i64 60
  %114 = load i8, ptr %113, align 4, !tbaa !23, !range !24, !noundef !25
  %115 = trunc nuw i8 %114 to i1
  br i1 %115, label %116, label %118

116:                                              ; preds = %112
  %117 = tail call noundef i32 @_ZN3spvorENS_17ImageOperandsMaskES0_(i32 noundef %.6148, i32 noundef 1024)
  br label %118

118:                                              ; preds = %116, %112
  %.7149 = phi i32 [ %117, %116 ], [ %.6148, %112 ]
  %119 = getelementptr inbounds i8, ptr %8, i64 61
  %120 = load i8, ptr %119, align 1, !tbaa !26, !range !24, !noundef !25
  %121 = trunc nuw i8 %120 to i1
  br i1 %121, label %122, label %124

122:                                              ; preds = %118
  %123 = tail call noundef i32 @_ZN3spvorENS_17ImageOperandsMaskES0_(i32 noundef %.7149, i32 noundef 2048)
  br label %124

124:                                              ; preds = %122, %118
  %.8150 = phi i32 [ %123, %122 ], [ %.7149, %118 ]
  %125 = tail call noundef i32 @_ZN3spvorENS_17ImageOperandsMaskES0_(i32 noundef %.8150, i32 noundef %9)
  %126 = icmp eq i32 %125, 0
  br i1 %126, label %127, label %129

127:                                              ; preds = %124
  %128 = add nsw i32 %.9, -1
  br label %132

129:                                              ; preds = %124
  %130 = zext nneg i32 %.3 to i64
  %131 = getelementptr inbounds [10 x i32], ptr %11, i64 0, i64 %130
  store i32 %125, ptr %131, align 4, !tbaa !5
  br label %132

132:                                              ; preds = %129, %127
  %.10 = phi i32 [ %128, %127 ], [ %.9, %129 ]
  br i1 %4, label %133, label %134

133:                                              ; preds = %132
  %. = select i1 %3, i32 313, i32 95
  br label %157

134:                                              ; preds = %132
  %135 = load i32, ptr %26, align 4, !tbaa !13
  %.not169 = icmp eq i32 %135, 0
  %136 = load i32, ptr %33, align 4
  %.not170 = icmp eq i32 %136, 0
  %or.cond = select i1 %.not169, i1 true, i1 %.not170
  br i1 %or.cond, label %137, label %157

137:                                              ; preds = %134
  %138 = load i32, ptr %14, align 4, !tbaa !9
  %.not173 = icmp eq i32 %138, 0
  br i1 %6, label %139, label %142

139:                                              ; preds = %137
  br i1 %.not173, label %141, label %140

140:                                              ; preds = %139
  %.177 = select i1 %3, i32 315, i32 97
  br label %157

141:                                              ; preds = %139
  %.178 = select i1 %3, i32 314, i32 96
  br label %157

142:                                              ; preds = %137
  br i1 %.0139, label %143, label %150

143:                                              ; preds = %142
  br i1 %.not173, label %147, label %144

144:                                              ; preds = %143
  br i1 %5, label %145, label %146

145:                                              ; preds = %144
  %.179 = select i1 %3, i32 312, i32 94
  br label %157

146:                                              ; preds = %144
  %.180 = select i1 %3, i32 308, i32 90
  br label %157

147:                                              ; preds = %143
  br i1 %5, label %148, label %149

148:                                              ; preds = %147
  %.181 = select i1 %3, i32 310, i32 92
  br label %157

149:                                              ; preds = %147
  %.182 = select i1 %3, i32 306, i32 88
  br label %157

150:                                              ; preds = %142
  br i1 %.not173, label %154, label %151

151:                                              ; preds = %150
  br i1 %5, label %152, label %153

152:                                              ; preds = %151
  %.183 = select i1 %3, i32 311, i32 93
  br label %157

153:                                              ; preds = %151
  %.184 = select i1 %3, i32 307, i32 89
  br label %157

154:                                              ; preds = %150
  br i1 %5, label %155, label %156

155:                                              ; preds = %154
  %.185 = select i1 %3, i32 309, i32 91
  br label %157

156:                                              ; preds = %154
  %.186 = select i1 %3, i32 305, i32 87
  br label %157

157:                                              ; preds = %156, %155, %153, %152, %149, %148, %146, %145, %141, %140, %134, %133
  %.0151 = phi i32 [ %., %133 ], [ 5283, %134 ], [ %.177, %140 ], [ %.178, %141 ], [ %.179, %145 ], [ %.180, %146 ], [ %.181, %148 ], [ %.182, %149 ], [ %.183, %152 ], [ %.184, %153 ], [ %.185, %155 ], [ %.186, %156 ]
  %158 = tail call noundef zeroext i1 @_ZNK3spv7Builder12isScalarTypeEj(ptr noundef nonnull align 8 dereferenceable(1096) %0, i32 noundef %2)
  br i1 %158, label %162, label %159

159:                                              ; preds = %157
  switch i32 %.0151, label %162 [
    i32 89, label %160
    i32 90, label %160
    i32 93, label %160
    i32 94, label %160
  ]

160:                                              ; preds = %159, %159, %159, %159
  %161 = tail call noundef i32 @_ZNK3spv7Builder15getScalarTypeIdEj(ptr noundef nonnull align 8 dereferenceable(1096) %0, i32 noundef %2)
  br label %162

162:                                              ; preds = %160, %159, %157
  %.0136 = phi i32 [ %2, %157 ], [ %2, %159 ], [ %161, %160 ]
  br i1 %3, label %163, label %.lr.ph.preheader

163:                                              ; preds = %162
  %164 = getelementptr inbounds i8, ptr %8, i64 44
  %165 = load i32, ptr %164, align 4, !tbaa !27
  %166 = tail call noundef i32 @_ZNK3spv7Builder14getDerefTypeIdEj(ptr noundef nonnull align 8 dereferenceable(1096) %0, i32 noundef %165)
  %167 = tail call noundef i32 @_ZN3spv7Builder20makeStructResultTypeEjj(ptr noundef nonnull align 8 dereferenceable(1096) %0, i32 noundef %.0136, i32 noundef %166)
  br label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %162, %163
  %.0141 = phi i32 [ %.0136, %163 ], [ 0, %162 ]
  %.0140 = phi i32 [ %166, %163 ], [ 0, %162 ]
  %.1 = phi i32 [ %167, %163 ], [ %.0136, %162 ]
  %168 = tail call noalias noundef nonnull dereferenceable(96) ptr @_Znwm(i64 noundef 96) #8
  %169 = tail call noundef i32 @_ZN3spv7Builder11getUniqueIdEv(ptr noundef nonnull align 8 dereferenceable(1096) %0)
  tail call void @_ZN3spv11InstructionC2EjjNS_2OpE(ptr noundef nonnull align 8 dereferenceable(96) %168, i32 noundef %169, i32 noundef %.1, i32 noundef %.0151)
  %wide.trip.count = zext nneg i32 %.3 to i64
  br label %.lr.ph

._crit_edge:                                      ; preds = %.lr.ph
  %170 = icmp slt i32 %.3, %.10
  br i1 %170, label %173, label %177

.lr.ph:                                           ; preds = %.lr.ph.preheader, %.lr.ph
  %indvars.iv = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next, %.lr.ph ]
  %171 = getelementptr inbounds [10 x i32], ptr %11, i64 0, i64 %indvars.iv
  %172 = load i32, ptr %171, align 4, !tbaa !5
  tail call void @_ZN3spv11Instruction12addIdOperandEj(ptr noundef nonnull align 8 dereferenceable(96) %168, i32 noundef %172)
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !28

173:                                              ; preds = %._crit_edge
  %174 = zext nneg i32 %.3 to i64
  %175 = getelementptr inbounds [10 x i32], ptr %11, i64 0, i64 %174
  %176 = load i32, ptr %175, align 4, !tbaa !5
  tail call void @_ZN3spv11Instruction19addImmediateOperandEj(ptr noundef nonnull align 8 dereferenceable(96) %168, i32 noundef %176)
  br label %177

177:                                              ; preds = %173, %._crit_edge
  %178 = icmp slt i32 %40, %.10
  br i1 %178, label %.lr.ph190.preheader, label %._crit_edge191

.lr.ph190.preheader:                              ; preds = %177
  %179 = zext nneg i32 %.3 to i64
  %180 = add nuw nsw i64 %179, 1
  %wide.trip.count196 = zext i32 %.10 to i64
  br label %.lr.ph190

._crit_edge191:                                   ; preds = %.lr.ph190, %177
  %181 = tail call noundef i32 @_ZNK3spv11Instruction11getResultIdEv(ptr noundef nonnull align 8 dereferenceable(96) %168)
  %182 = tail call noundef i32 @_ZN3spv7Builder12setPrecisionEjNS_10DecorationE(ptr noundef nonnull align 8 dereferenceable(1096) %0, i32 noundef %181, i32 noundef %1)
  %183 = getelementptr inbounds i8, ptr %0, i64 296
  %184 = load ptr, ptr %183, align 8, !tbaa !30
  call void @_ZNSt10unique_ptrIN3spv11InstructionESt14default_deleteIS1_EEC2IS3_vEEPS1_(ptr noundef nonnull align 8 dereferenceable(8) %12, ptr noundef nonnull %168) #7
  invoke void @_ZN3spv5Block14addInstructionESt10unique_ptrINS_11InstructionESt14default_deleteIS2_EE(ptr noundef nonnull align 8 dereferenceable(113) %184, ptr noundef nonnull %12)
          to label %187 unwind label %195

.lr.ph190:                                        ; preds = %.lr.ph190.preheader, %.lr.ph190
  %indvars.iv193 = phi i64 [ %180, %.lr.ph190.preheader ], [ %indvars.iv.next194, %.lr.ph190 ]
  %185 = getelementptr inbounds [10 x i32], ptr %11, i64 0, i64 %indvars.iv193
  %186 = load i32, ptr %185, align 4, !tbaa !5
  tail call void @_ZN3spv11Instruction12addIdOperandEj(ptr noundef nonnull align 8 dereferenceable(96) %168, i32 noundef %186)
  %indvars.iv.next194 = add nuw nsw i64 %indvars.iv193, 1
  %exitcond197.not = icmp eq i64 %indvars.iv.next194, %wide.trip.count196
  br i1 %exitcond197.not, label %._crit_edge191, label %.lr.ph190, !llvm.loop !103

187:                                              ; preds = %._crit_edge191
  call void @_ZNSt10unique_ptrIN3spv11InstructionESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %12) #7
  %188 = call noundef i32 @_ZNK3spv11Instruction11getResultIdEv(ptr noundef nonnull align 8 dereferenceable(96) %168)
  br i1 %3, label %189, label %197

189:                                              ; preds = %187
  call void @_ZN3spv7Builder13addCapabilityENS_10CapabilityE(ptr noundef nonnull align 8 dereferenceable(1096) %0, i32 noundef 41)
  %190 = call noundef i32 @_ZN3spv7Builder22createCompositeExtractEjjj(ptr noundef nonnull align 8 dereferenceable(1096) %0, i32 noundef %188, i32 noundef %.0140, i32 noundef 1)
  %191 = getelementptr inbounds i8, ptr %8, i64 44
  %192 = load i32, ptr %191, align 4, !tbaa !27
  call void @_ZN3spv7Builder11createStoreEjjNS_16MemoryAccessMaskENS_5ScopeEj(ptr noundef nonnull align 8 dereferenceable(1096) %0, i32 noundef %190, i32 noundef %192, i32 noundef 0, i32 noundef 2147483647, i32 noundef 0)
  %193 = call noundef i32 @_ZN3spv7Builder22createCompositeExtractEjjj(ptr noundef nonnull align 8 dereferenceable(1096) %0, i32 noundef %188, i32 noundef %.0141, i32 noundef 0)
  %194 = call noundef i32 @_ZN3spv7Builder12setPrecisionEjNS_10DecorationE(ptr noundef nonnull align 8 dereferenceable(1096) %0, i32 noundef %193, i32 noundef %1)
  br label %200

195:                                              ; preds = %._crit_edge191
  %196 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt10unique_ptrIN3spv11InstructionESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %12) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %11) #7
  resume { ptr, i32 } %196

197:                                              ; preds = %187
  %.not174 = icmp eq i32 %.1, %2
  br i1 %.not174, label %200, label %198

198:                                              ; preds = %197
  %199 = call noundef i32 @_ZN3spv7Builder11smearScalarENS_10DecorationEjj(ptr noundef nonnull align 8 dereferenceable(1096) %0, i32 noundef %1, i32 noundef %188, i32 noundef %2)
  br label %200

200:                                              ; preds = %197, %198, %189
  %.0 = phi i32 [ %193, %189 ], [ %199, %198 ], [ %188, %197 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %11) #7
  ret i32 %.0
}

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

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

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

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

!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, !6, i64 16}
!10 = !{!"_ZTSN3spv7Builder17TextureParametersE", !6, i64 0, !6, i64 4, !6, i64 8, !6, i64 12, !6, i64 16, !6, i64 20, !6, i64 24, !6, i64 28, !6, i64 32, !6, i64 36, !6, i64 40, !6, i64 44, !6, i64 48, !6, i64 52, !6, i64 56, !11, i64 60, !11, i64 61}
!11 = !{!"bool", !7, i64 0}
!12 = !{!10, !6, i64 40}
!13 = !{!10, !6, i64 52}
!14 = !{!10, !6, i64 56}
!15 = !{!10, !6, i64 8}
!16 = !{!10, !6, i64 12}
!17 = !{!10, !6, i64 28}
!18 = !{!10, !6, i64 32}
!19 = !{!10, !6, i64 20}
!20 = !{!10, !6, i64 24}
!21 = !{!10, !6, i64 36}
!22 = !{!10, !6, i64 48}
!23 = !{!10, !11, i64 60}
!24 = !{i8 0, i8 2}
!25 = !{}
!26 = !{!10, !11, i64 61}
!27 = !{!10, !6, i64 44}
!28 = distinct !{!28, !29}
!29 = !{!"llvm.loop.mustprogress"}
!30 = !{!31, !35, i64 296}
!31 = !{!"_ZTSN3spv7BuilderE", !6, i64 8, !32, i64 12, !6, i64 16, !6, i64 20, !33, i64 24, !6, i64 56, !35, i64 64, !11, i64 72, !37, i64 80, !45, i64 128, !45, i64 152, !49, i64 176, !50, i64 180, !51, i64 184, !6, i64 232, !56, i64 240, !35, i64 296, !6, i64 304, !35, i64 312, !11, i64 320, !65, i64 328, !71, i64 416, !71, i64 440, !71, i64 464, !71, i64 488, !71, i64 512, !71, i64 536, !71, i64 560, !71, i64 584, !75, i64 608, !79, i64 632, !79, i64 688, !79, i64 744, !61, i64 800, !84, i64 824, !90, i64 904, !96, i64 984, !98, i64 1040, !35, i64 1088}
!32 = !{!"_ZTSN3spv14SourceLanguageE", !7, i64 0}
!33 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !34, i64 0, !36, i64 8, !7, i64 16}
!34 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !35, i64 0}
!35 = !{!"any pointer", !7, i64 0}
!36 = !{!"long", !7, i64 0}
!37 = !{!"_ZTSSt3setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIS5_ESaIS5_EE", !38, i64 0}
!38 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St9_IdentityIS5_ESt4lessIS5_ESaIS5_EE", !39, i64 0}
!39 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St9_IdentityIS5_ESt4lessIS5_ESaIS5_EE13_Rb_tree_implIS9_Lb1EEE", !40, i64 0, !42, i64 8}
!40 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE", !41, i64 0}
!41 = !{!"_ZTSSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE"}
!42 = !{!"_ZTSSt15_Rb_tree_header", !43, i64 0, !36, i64 32}
!43 = !{!"_ZTSSt18_Rb_tree_node_base", !44, i64 0, !35, i64 8, !35, i64 16, !35, i64 24}
!44 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!45 = !{!"_ZTSSt6vectorIPKcSaIS1_EE", !46, i64 0}
!46 = !{!"_ZTSSt12_Vector_baseIPKcSaIS1_EE", !47, i64 0}
!47 = !{!"_ZTSNSt12_Vector_baseIPKcSaIS1_EE12_Vector_implE", !48, i64 0}
!48 = !{!"_ZTSNSt12_Vector_baseIPKcSaIS1_EE17_Vector_impl_dataE", !35, i64 0, !35, i64 8, !35, i64 16}
!49 = !{!"_ZTSN3spv15AddressingModelE", !7, i64 0}
!50 = !{!"_ZTSN3spv11MemoryModelE", !7, i64 0}
!51 = !{!"_ZTSSt3setIN3spv10CapabilityESt4lessIS1_ESaIS1_EE", !52, i64 0}
!52 = !{!"_ZTSSt8_Rb_treeIN3spv10CapabilityES1_St9_IdentityIS1_ESt4lessIS1_ESaIS1_EE", !53, i64 0}
!53 = !{!"_ZTSNSt8_Rb_treeIN3spv10CapabilityES1_St9_IdentityIS1_ESt4lessIS1_ESaIS1_EE13_Rb_tree_implIS5_Lb1EEE", !54, i64 0, !42, i64 8}
!54 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIN3spv10CapabilityEEE", !55, i64 0}
!55 = !{!"_ZTSSt4lessIN3spv10CapabilityEE"}
!56 = !{!"_ZTSN3spv6ModuleE", !57, i64 8, !61, i64 32}
!57 = !{!"_ZTSSt6vectorIPN3spv8FunctionESaIS2_EE", !58, i64 0}
!58 = !{!"_ZTSSt12_Vector_baseIPN3spv8FunctionESaIS2_EE", !59, i64 0}
!59 = !{!"_ZTSNSt12_Vector_baseIPN3spv8FunctionESaIS2_EE12_Vector_implE", !60, i64 0}
!60 = !{!"_ZTSNSt12_Vector_baseIPN3spv8FunctionESaIS2_EE17_Vector_impl_dataE", !35, i64 0, !35, i64 8, !35, i64 16}
!61 = !{!"_ZTSSt6vectorIPN3spv11InstructionESaIS2_EE", !62, i64 0}
!62 = !{!"_ZTSSt12_Vector_baseIPN3spv11InstructionESaIS2_EE", !63, i64 0}
!63 = !{!"_ZTSNSt12_Vector_baseIPN3spv11InstructionESaIS2_EE12_Vector_implE", !64, i64 0}
!64 = !{!"_ZTSNSt12_Vector_baseIPN3spv11InstructionESaIS2_EE17_Vector_impl_dataE", !35, i64 0, !35, i64 8, !35, i64 16}
!65 = !{!"_ZTSN3spv7Builder11AccessChainE", !6, i64 0, !66, i64 8, !6, i64 32, !66, i64 40, !6, i64 64, !6, i64 68, !11, i64 72, !6, i64 76, !70, i64 80}
!66 = !{!"_ZTSSt6vectorIjSaIjEE", !67, i64 0}
!67 = !{!"_ZTSSt12_Vector_baseIjSaIjEE", !68, i64 0}
!68 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE12_Vector_implE", !69, i64 0}
!69 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE17_Vector_impl_dataE", !35, i64 0, !35, i64 8, !35, i64 16}
!70 = !{!"_ZTSN3spv7Builder11AccessChain13CoherentFlagsE", !6, i64 0, !6, i64 0, !6, i64 0, !6, i64 0, !6, i64 0, !6, i64 0, !6, i64 0, !6, i64 0, !6, i64 1, !6, i64 1}
!71 = !{!"_ZTSSt6vectorISt10unique_ptrIN3spv11InstructionESt14default_deleteIS2_EESaIS5_EE", !72, i64 0}
!72 = !{!"_ZTSSt12_Vector_baseISt10unique_ptrIN3spv11InstructionESt14default_deleteIS2_EESaIS5_EE", !73, i64 0}
!73 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrIN3spv11InstructionESt14default_deleteIS2_EESaIS5_EE12_Vector_implE", !74, i64 0}
!74 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrIN3spv11InstructionESt14default_deleteIS2_EESaIS5_EE17_Vector_impl_dataE", !35, i64 0, !35, i64 8, !35, i64 16}
!75 = !{!"_ZTSSt6vectorISt10unique_ptrIN3spv8FunctionESt14default_deleteIS2_EESaIS5_EE", !76, i64 0}
!76 = !{!"_ZTSSt12_Vector_baseISt10unique_ptrIN3spv8FunctionESt14default_deleteIS2_EESaIS5_EE", !77, i64 0}
!77 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrIN3spv8FunctionESt14default_deleteIS2_EESaIS5_EE12_Vector_implE", !78, i64 0}
!78 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrIN3spv8FunctionESt14default_deleteIS2_EESaIS5_EE17_Vector_impl_dataE", !35, i64 0, !35, i64 8, !35, i64 16}
!79 = !{!"_ZTSSt13unordered_mapIjSt6vectorIPN3spv11InstructionESaIS3_EESt4hashIjESt8equal_toIjESaISt4pairIKjS5_EEE", !80, i64 0}
!80 = !{!"_ZTSSt10_HashtableIjSt4pairIKjSt6vectorIPN3spv11InstructionESaIS5_EEESaIS8_ENSt8__detail10_Select1stESt8equal_toIjESt4hashIjENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb0ELb0ELb1EEEE", !35, i64 0, !36, i64 8, !81, i64 16, !36, i64 24, !82, i64 32, !35, i64 48}
!81 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !35, i64 0}
!82 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !83, i64 0, !36, i64 8}
!83 = !{!"float", !7, i64 0}
!84 = !{!"_ZTSSt5stackIPN3spv5BlockESt5dequeIS2_SaIS2_EEE", !85, i64 0}
!85 = !{!"_ZTSSt5dequeIPN3spv5BlockESaIS2_EE", !86, i64 0}
!86 = !{!"_ZTSSt11_Deque_baseIPN3spv5BlockESaIS2_EE", !87, i64 0}
!87 = !{!"_ZTSNSt11_Deque_baseIPN3spv5BlockESaIS2_EE11_Deque_implE", !88, i64 0}
!88 = !{!"_ZTSNSt11_Deque_baseIPN3spv5BlockESaIS2_EE16_Deque_impl_dataE", !35, i64 0, !36, i64 8, !89, i64 16, !89, i64 48}
!89 = !{!"_ZTSSt15_Deque_iteratorIPN3spv5BlockERS2_PS2_E", !35, i64 0, !35, i64 8, !35, i64 16, !35, i64 24}
!90 = !{!"_ZTSSt5stackIN3spv7Builder10LoopBlocksESt5dequeIS2_SaIS2_EEE", !91, i64 0}
!91 = !{!"_ZTSSt5dequeIN3spv7Builder10LoopBlocksESaIS2_EE", !92, i64 0}
!92 = !{!"_ZTSSt11_Deque_baseIN3spv7Builder10LoopBlocksESaIS2_EE", !93, i64 0}
!93 = !{!"_ZTSNSt11_Deque_baseIN3spv7Builder10LoopBlocksESaIS2_EE11_Deque_implE", !94, i64 0}
!94 = !{!"_ZTSNSt11_Deque_baseIN3spv7Builder10LoopBlocksESaIS2_EE16_Deque_impl_dataE", !35, i64 0, !36, i64 8, !95, i64 16, !95, i64 48}
!95 = !{!"_ZTSSt15_Deque_iteratorIN3spv7Builder10LoopBlocksERS2_PS2_E", !35, i64 0, !35, i64 8, !35, i64 16, !35, i64 24}
!96 = !{!"_ZTSSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjSt4hashIS5_ESt8equal_toIS5_ESaISt4pairIKS5_jEEE", !97, i64 0}
!97 = !{!"_ZTSSt10_HashtableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_jESaIS8_ENSt8__detail10_Select1stESt8equal_toIS5_ESt4hashIS5_ENSA_18_Mod_range_hashingENSA_20_Default_ranged_hashENSA_20_Prime_rehash_policyENSA_17_Hashtable_traitsILb1ELb0ELb1EEEE", !35, i64 0, !36, i64 8, !81, i64 16, !36, i64 24, !82, i64 32, !35, i64 48}
!98 = !{!"_ZTSSt3mapIjPKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIjESaISt4pairIKjS7_EEE", !99, i64 0}
!99 = !{!"_ZTSSt8_Rb_treeIjSt4pairIKjPKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEESt10_Select1stISA_ESt4lessIjESaISA_EE", !100, i64 0}
!100 = !{!"_ZTSNSt8_Rb_treeIjSt4pairIKjPKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEESt10_Select1stISA_ESt4lessIjESaISA_EE13_Rb_tree_implISE_Lb1EEE", !101, i64 0, !42, i64 8}
!101 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIjEE", !102, i64 0}
!102 = !{!"_ZTSSt4lessIjE"}
!103 = distinct !{!103, !29}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,ReassociatePass,SCCPPass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass