; LLVM IR from Try/Tempest :: Engine/thirdparty/spirv_cross/spirv_cross_parsed_ir.ll (ZN11spirv_cross8ParsedIRC2Ev)

; 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.spirv_cross::ParsedIR" = type { %"class.std::unique_ptr", %"class.std::vector", %"class.spirv_cross::SmallVector", %"class.std::unordered_map", [14 x %"class.spirv_cross::SmallVector.7"], %"class.spirv_cross::SmallVector.7", %"class.spirv_cross::SmallVector.7", %"class.std::unordered_map.10", %"class.spirv_cross::SmallVector.24", %"class.spirv_cross::SmallVector.27", %"class.spirv_cross::SmallVector.30", %"class.std::unordered_map.33", %"class.std::unordered_map.52", %"class.spirv_cross::TypedID", %"struct.spirv_cross::ParsedIR::Source", i32, i32, i32, i32, %"class.std::__cxx11::basic_string", %"class.spirv_cross::Bitset", %"class.std::unordered_set" }
%"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.1" }
%"struct.std::_Head_base.1" = type { ptr }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = 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 }
%"class.spirv_cross::SmallVector" = type { %"class.spirv_cross::VectorView", i64, %"class.spirv_cross::AlignedBuffer" }
%"class.spirv_cross::VectorView" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer" = type { [192 x i8] }
%"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.spirv_cross::SmallVector.7" = type { %"class.spirv_cross::VectorView.8", i64, %"class.spirv_cross::AlignedBuffer.9" }
%"class.spirv_cross::VectorView.8" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.9" = type { [32 x i8] }
%"class.std::unordered_map.10" = type { %"class.std::_Hashtable.11" }
%"class.std::_Hashtable.11" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.spirv_cross::SmallVector.24" = type { %"class.spirv_cross::VectorView.25", i64, %"class.spirv_cross::AlignedBuffer.26" }
%"class.spirv_cross::VectorView.25" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.26" = type { [32 x i8] }
%"class.spirv_cross::SmallVector.27" = type { %"class.spirv_cross::VectorView.28", i64, %"class.spirv_cross::AlignedBuffer.29" }
%"class.spirv_cross::VectorView.28" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.29" = type { [256 x i8] }
%"class.spirv_cross::SmallVector.30" = type { %"class.spirv_cross::VectorView.31", i64, %"class.spirv_cross::AlignedBuffer.32" }
%"class.spirv_cross::VectorView.31" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.32" = type { [8 x i8] }
%"class.std::unordered_map.33" = type { %"class.std::_Hashtable.34" }
%"class.std::_Hashtable.34" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", 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.spirv_cross::TypedID" = type { i32 }
%"struct.spirv_cross::ParsedIR::Source" = type <{ i32, i8, i8, i8, i8 }>
%"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.spirv_cross::Bitset" = type { i64, %"class.std::unordered_set" }
%"class.std::unordered_set" = type { %"class.std::_Hashtable.74" }
%"class.std::_Hashtable.74" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.spirv_cross::ObjectPoolGroup" = type { [14 x %"class.std::unique_ptr.92"] }
%"class.std::unique_ptr.92" = type { %"struct.std::__uniq_ptr_data.93" }
%"struct.std::__uniq_ptr_data.93" = type { %"class.std::__uniq_ptr_impl.94" }
%"class.std::__uniq_ptr_impl.94" = type { %"class.std::tuple.95" }
%"class.std::tuple.95" = type { %"struct.std::_Tuple_impl.96" }
%"struct.std::_Tuple_impl.96" = type { %"struct.std::_Head_base.99" }
%"struct.std::_Head_base.99" = type { ptr }

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11spirv_cross8ParsedIRC2Ev(ptr noundef nonnull align 8 dereferenceable(1920) %0) unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca ptr, align 8
  %3 = alloca ptr, align 8
  %4 = alloca i32, align 4
  store ptr %0, ptr %2, align 8, !tbaa !5
  %5 = load ptr, ptr %2, align 8
  %6 = getelementptr inbounds %"class.spirv_cross::ParsedIR", ptr %5, i32 0, i32 0
  call void @_ZNSt10unique_ptrIN11spirv_cross15ObjectPoolGroupESt14default_deleteIS1_EEC2IS3_vEEv(ptr noundef nonnull align 8 dereferenceable(8) %6) #5
  %7 = getelementptr inbounds %"class.spirv_cross::ParsedIR", ptr %5, i32 0, i32 1
  call void @_ZNSt6vectorIjSaIjEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #5
  %8 = getelementptr inbounds %"class.spirv_cross::ParsedIR", ptr %5, i32 0, i32 2
  call void @_ZN11spirv_cross11SmallVectorINS_7VariantELm8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(216) %8) #5
  %9 = getelementptr inbounds %"class.spirv_cross::ParsedIR", ptr %5, i32 0, i32 3
  call void @_ZNSt13unordered_mapIN11spirv_cross7TypedIDILNS0_5TypesE0EEENS0_4MetaESt4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_S4_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %9) #5
  %10 = getelementptr inbounds %"class.spirv_cross::ParsedIR", ptr %5, i32 0, i32 4
  %11 = getelementptr inbounds [14 x %"class.spirv_cross::SmallVector.7"], ptr %10, i32 0, i32 0
  %12 = getelementptr inbounds %"class.spirv_cross::SmallVector.7", ptr %11, i64 14
  br label %13

13:                                               ; preds = %13, %1
  %14 = phi ptr [ %11, %1 ], [ %15, %13 ]
  call void @_ZN11spirv_cross11SmallVectorINS_7TypedIDILNS_5TypesE0EEELm8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %14) #5
  %15 = getelementptr inbounds %"class.spirv_cross::SmallVector.7", ptr %14, i64 1
  %16 = icmp eq ptr %15, %12
  br i1 %16, label %17, label %13

17:                                               ; preds = %13
  %18 = getelementptr inbounds %"class.spirv_cross::ParsedIR", ptr %5, i32 0, i32 5
  call void @_ZN11spirv_cross11SmallVectorINS_7TypedIDILNS_5TypesE0EEELm8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %18) #5
  %19 = getelementptr inbounds %"class.spirv_cross::ParsedIR", ptr %5, i32 0, i32 6
  call void @_ZN11spirv_cross11SmallVectorINS_7TypedIDILNS_5TypesE0EEELm8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %19) #5
  %20 = getelementptr inbounds %"class.spirv_cross::ParsedIR", ptr %5, i32 0, i32 7
  call void @_ZNSt13unordered_mapIN11spirv_cross7TypedIDILNS0_5TypesE0EEEjSt4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_jEEEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %20) #5
  %21 = getelementptr inbounds %"class.spirv_cross::ParsedIR", ptr %5, i32 0, i32 8
  call void @_ZN11spirv_cross11SmallVectorIN3spv10CapabilityELm8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %21) #5
  %22 = getelementptr inbounds %"class.spirv_cross::ParsedIR", ptr %5, i32 0, i32 9
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(280) %22) #5
  %23 = getelementptr inbounds %"class.spirv_cross::ParsedIR", ptr %5, i32 0, i32 10
  call void @_ZN11spirv_cross11SmallVectorIhLm8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #5
  %24 = getelementptr inbounds %"class.spirv_cross::ParsedIR", ptr %5, i32 0, i32 11
  call void @_ZNSt13unordered_mapIN11spirv_cross7TypedIDILNS0_5TypesE6EEES3_St4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_S3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %24) #5
  %25 = getelementptr inbounds %"class.spirv_cross::ParsedIR", ptr %5, i32 0, i32 12
  call void @_ZNSt13unordered_mapIN11spirv_cross7TypedIDILNS0_5TypesE4EEENS0_14SPIREntryPointESt4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_S4_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %25) #5
  %26 = getelementptr inbounds %"class.spirv_cross::ParsedIR", ptr %5, i32 0, i32 13
  invoke void @_ZN11spirv_cross7TypedIDILNS_5TypesE4EEC2Ej(ptr noundef nonnull align 4 dereferenceable(4) %26, i32 noundef 0)
          to label %27 unwind label %130

27:                                               ; preds = %17
  %28 = getelementptr inbounds %"class.spirv_cross::ParsedIR", ptr %5, i32 0, i32 14
  call void @_ZN11spirv_cross8ParsedIR6SourceC2Ev(ptr noundef nonnull align 4 dereferenceable(7) %28) #5
  %29 = getelementptr inbounds %"class.spirv_cross::ParsedIR", ptr %5, i32 0, i32 15
  store i32 2147483647, ptr %29, align 4, !tbaa !9
  %30 = getelementptr inbounds %"class.spirv_cross::ParsedIR", ptr %5, i32 0, i32 16
  store i32 2147483647, ptr %30, align 8, !tbaa !59
  %31 = getelementptr inbounds %"class.spirv_cross::ParsedIR", ptr %5, i32 0, i32 17
  store i32 0, ptr %31, align 4, !tbaa !60
  %32 = getelementptr inbounds %"class.spirv_cross::ParsedIR", ptr %5, i32 0, i32 18
  store i32 0, ptr %32, align 8, !tbaa !61
  %33 = getelementptr inbounds %"class.spirv_cross::ParsedIR", ptr %5, i32 0, i32 19
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #5
  %34 = getelementptr inbounds %"class.spirv_cross::ParsedIR", ptr %5, i32 0, i32 20
  call void @_ZN11spirv_cross6BitsetC2Ev(ptr noundef nonnull align 8 dereferenceable(64) %34) #5
  %35 = getelementptr inbounds %"class.spirv_cross::ParsedIR", ptr %5, i32 0, i32 21
  call void @_ZNSt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %35) #5
  %36 = getelementptr inbounds %"class.spirv_cross::ParsedIR", ptr %5, i32 0, i32 0
  %37 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 112) #6
          to label %38 unwind label %134

38:                                               ; preds = %27
  call void @_ZN11spirv_cross15ObjectPoolGroupC2Ev(ptr noundef nonnull align 8 dereferenceable(112) %37) #5
  call void @_ZNSt10unique_ptrIN11spirv_cross15ObjectPoolGroupESt14default_deleteIS1_EE5resetEPS1_(ptr noundef nonnull align 8 dereferenceable(8) %36, ptr noundef %37) #5
  %39 = getelementptr inbounds %"class.spirv_cross::ParsedIR", ptr %5, i32 0, i32 0
  %40 = call noundef ptr @_ZNKSt10unique_ptrIN11spirv_cross15ObjectPoolGroupESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %39) #5
  %41 = getelementptr inbounds %"struct.spirv_cross::ObjectPoolGroup", ptr %40, i32 0, i32 0
  %42 = getelementptr inbounds [14 x %"class.std::unique_ptr.92"], ptr %41, i64 0, i64 1
  %43 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 136) #6
          to label %44 unwind label %134

44:                                               ; preds = %38
  invoke void @_ZN11spirv_cross10ObjectPoolINS_8SPIRTypeEEC2Ej(ptr noundef nonnull align 8 dereferenceable(132) %43, i32 noundef 16)
          to label %45 unwind label %138

45:                                               ; preds = %44
  call void @_ZNSt10unique_ptrIN11spirv_cross14ObjectPoolBaseESt14default_deleteIS1_EE5resetEPS1_(ptr noundef nonnull align 8 dereferenceable(8) %42, ptr noundef %43) #5
  %46 = getelementptr inbounds %"class.spirv_cross::ParsedIR", ptr %5, i32 0, i32 0
  %47 = call noundef ptr @_ZNKSt10unique_ptrIN11spirv_cross15ObjectPoolGroupESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %46) #5
  %48 = getelementptr inbounds %"struct.spirv_cross::ObjectPoolGroup", ptr %47, i32 0, i32 0
  %49 = getelementptr inbounds [14 x %"class.std::unique_ptr.92"], ptr %48, i64 0, i64 2
  %50 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 136) #6
          to label %51 unwind label %134

51:                                               ; preds = %45
  invoke void @_ZN11spirv_cross10ObjectPoolINS_12SPIRVariableEEC2Ej(ptr noundef nonnull align 8 dereferenceable(132) %50, i32 noundef 16)
          to label %52 unwind label %142

52:                                               ; preds = %51
  call void @_ZNSt10unique_ptrIN11spirv_cross14ObjectPoolBaseESt14default_deleteIS1_EE5resetEPS1_(ptr noundef nonnull align 8 dereferenceable(8) %49, ptr noundef %50) #5
  %53 = getelementptr inbounds %"class.spirv_cross::ParsedIR", ptr %5, i32 0, i32 0
  %54 = call noundef ptr @_ZNKSt10unique_ptrIN11spirv_cross15ObjectPoolGroupESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %53) #5
  %55 = getelementptr inbounds %"struct.spirv_cross::ObjectPoolGroup", ptr %54, i32 0, i32 0
  %56 = getelementptr inbounds [14 x %"class.std::unique_ptr.92"], ptr %55, i64 0, i64 3
  %57 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 136) #6
          to label %58 unwind label %134

58:                                               ; preds = %52
  invoke void @_ZN11spirv_cross10ObjectPoolINS_12SPIRConstantEEC2Ej(ptr noundef nonnull align 8 dereferenceable(132) %57, i32 noundef 16)
          to label %59 unwind label %146

59:                                               ; preds = %58
  call void @_ZNSt10unique_ptrIN11spirv_cross14ObjectPoolBaseESt14default_deleteIS1_EE5resetEPS1_(ptr noundef nonnull align 8 dereferenceable(8) %56, ptr noundef %57) #5
  %60 = getelementptr inbounds %"class.spirv_cross::ParsedIR", ptr %5, i32 0, i32 0
  %61 = call noundef ptr @_ZNKSt10unique_ptrIN11spirv_cross15ObjectPoolGroupESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %60) #5
  %62 = getelementptr inbounds %"struct.spirv_cross::ObjectPoolGroup", ptr %61, i32 0, i32 0
  %63 = getelementptr inbounds [14 x %"class.std::unique_ptr.92"], ptr %62, i64 0, i64 4
  %64 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 136) #6
          to label %65 unwind label %134

65:                                               ; preds = %59
  invoke void @_ZN11spirv_cross10ObjectPoolINS_12SPIRFunctionEEC2Ej(ptr noundef nonnull align 8 dereferenceable(132) %64, i32 noundef 16)
          to label %66 unwind label %150

66:                                               ; preds = %65
  call void @_ZNSt10unique_ptrIN11spirv_cross14ObjectPoolBaseESt14default_deleteIS1_EE5resetEPS1_(ptr noundef nonnull align 8 dereferenceable(8) %63, ptr noundef %64) #5
  %67 = getelementptr inbounds %"class.spirv_cross::ParsedIR", ptr %5, i32 0, i32 0
  %68 = call noundef ptr @_ZNKSt10unique_ptrIN11spirv_cross15ObjectPoolGroupESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %67) #5
  %69 = getelementptr inbounds %"struct.spirv_cross::ObjectPoolGroup", ptr %68, i32 0, i32 0
  %70 = getelementptr inbounds [14 x %"class.std::unique_ptr.92"], ptr %69, i64 0, i64 5
  %71 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 136) #6
          to label %72 unwind label %134

72:                                               ; preds = %66
  invoke void @_ZN11spirv_cross10ObjectPoolINS_21SPIRFunctionPrototypeEEC2Ej(ptr noundef nonnull align 8 dereferenceable(132) %71, i32 noundef 16)
          to label %73 unwind label %154

73:                                               ; preds = %72
  call void @_ZNSt10unique_ptrIN11spirv_cross14ObjectPoolBaseESt14default_deleteIS1_EE5resetEPS1_(ptr noundef nonnull align 8 dereferenceable(8) %70, ptr noundef %71) #5
  %74 = getelementptr inbounds %"class.spirv_cross::ParsedIR", ptr %5, i32 0, i32 0
  %75 = call noundef ptr @_ZNKSt10unique_ptrIN11spirv_cross15ObjectPoolGroupESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %74) #5
  %76 = getelementptr inbounds %"struct.spirv_cross::ObjectPoolGroup", ptr %75, i32 0, i32 0
  %77 = getelementptr inbounds [14 x %"class.std::unique_ptr.92"], ptr %76, i64 0, i64 6
  %78 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 136) #6
          to label %79 unwind label %134

79:                                               ; preds = %73
  invoke void @_ZN11spirv_cross10ObjectPoolINS_9SPIRBlockEEC2Ej(ptr noundef nonnull align 8 dereferenceable(132) %78, i32 noundef 16)
          to label %80 unwind label %158

80:                                               ; preds = %79
  call void @_ZNSt10unique_ptrIN11spirv_cross14ObjectPoolBaseESt14default_deleteIS1_EE5resetEPS1_(ptr noundef nonnull align 8 dereferenceable(8) %77, ptr noundef %78) #5
  %81 = getelementptr inbounds %"class.spirv_cross::ParsedIR", ptr %5, i32 0, i32 0
  %82 = call noundef ptr @_ZNKSt10unique_ptrIN11spirv_cross15ObjectPoolGroupESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %81) #5
  %83 = getelementptr inbounds %"struct.spirv_cross::ObjectPoolGroup", ptr %82, i32 0, i32 0
  %84 = getelementptr inbounds [14 x %"class.std::unique_ptr.92"], ptr %83, i64 0, i64 7
  %85 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 136) #6
          to label %86 unwind label %134

86:                                               ; preds = %80
  invoke void @_ZN11spirv_cross10ObjectPoolINS_13SPIRExtensionEEC2Ej(ptr noundef nonnull align 8 dereferenceable(132) %85, i32 noundef 16)
          to label %87 unwind label %162

87:                                               ; preds = %86
  call void @_ZNSt10unique_ptrIN11spirv_cross14ObjectPoolBaseESt14default_deleteIS1_EE5resetEPS1_(ptr noundef nonnull align 8 dereferenceable(8) %84, ptr noundef %85) #5
  %88 = getelementptr inbounds %"class.spirv_cross::ParsedIR", ptr %5, i32 0, i32 0
  %89 = call noundef ptr @_ZNKSt10unique_ptrIN11spirv_cross15ObjectPoolGroupESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %88) #5
  %90 = getelementptr inbounds %"struct.spirv_cross::ObjectPoolGroup", ptr %89, i32 0, i32 0
  %91 = getelementptr inbounds [14 x %"class.std::unique_ptr.92"], ptr %90, i64 0, i64 8
  %92 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 136) #6
          to label %93 unwind label %134

93:                                               ; preds = %87
  invoke void @_ZN11spirv_cross10ObjectPoolINS_14SPIRExpressionEEC2Ej(ptr noundef nonnull align 8 dereferenceable(132) %92, i32 noundef 16)
          to label %94 unwind label %166

94:                                               ; preds = %93
  call void @_ZNSt10unique_ptrIN11spirv_cross14ObjectPoolBaseESt14default_deleteIS1_EE5resetEPS1_(ptr noundef nonnull align 8 dereferenceable(8) %91, ptr noundef %92) #5
  %95 = getelementptr inbounds %"class.spirv_cross::ParsedIR", ptr %5, i32 0, i32 0
  %96 = call noundef ptr @_ZNKSt10unique_ptrIN11spirv_cross15ObjectPoolGroupESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %95) #5
  %97 = getelementptr inbounds %"struct.spirv_cross::ObjectPoolGroup", ptr %96, i32 0, i32 0
  %98 = getelementptr inbounds [14 x %"class.std::unique_ptr.92"], ptr %97, i64 0, i64 9
  %99 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 136) #6
          to label %100 unwind label %134

100:                                              ; preds = %94
  invoke void @_ZN11spirv_cross10ObjectPoolINS_14SPIRConstantOpEEC2Ej(ptr noundef nonnull align 8 dereferenceable(132) %99, i32 noundef 16)
          to label %101 unwind label %170

101:                                              ; preds = %100
  call void @_ZNSt10unique_ptrIN11spirv_cross14ObjectPoolBaseESt14default_deleteIS1_EE5resetEPS1_(ptr noundef nonnull align 8 dereferenceable(8) %98, ptr noundef %99) #5
  %102 = getelementptr inbounds %"class.spirv_cross::ParsedIR", ptr %5, i32 0, i32 0
  %103 = call noundef ptr @_ZNKSt10unique_ptrIN11spirv_cross15ObjectPoolGroupESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %102) #5
  %104 = getelementptr inbounds %"struct.spirv_cross::ObjectPoolGroup", ptr %103, i32 0, i32 0
  %105 = getelementptr inbounds [14 x %"class.std::unique_ptr.92"], ptr %104, i64 0, i64 10
  %106 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 136) #6
          to label %107 unwind label %134

107:                                              ; preds = %101
  invoke void @_ZN11spirv_cross10ObjectPoolINS_24SPIRCombinedImageSamplerEEC2Ej(ptr noundef nonnull align 8 dereferenceable(132) %106, i32 noundef 16)
          to label %108 unwind label %174

108:                                              ; preds = %107
  call void @_ZNSt10unique_ptrIN11spirv_cross14ObjectPoolBaseESt14default_deleteIS1_EE5resetEPS1_(ptr noundef nonnull align 8 dereferenceable(8) %105, ptr noundef %106) #5
  %109 = getelementptr inbounds %"class.spirv_cross::ParsedIR", ptr %5, i32 0, i32 0
  %110 = call noundef ptr @_ZNKSt10unique_ptrIN11spirv_cross15ObjectPoolGroupESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %109) #5
  %111 = getelementptr inbounds %"struct.spirv_cross::ObjectPoolGroup", ptr %110, i32 0, i32 0
  %112 = getelementptr inbounds [14 x %"class.std::unique_ptr.92"], ptr %111, i64 0, i64 11
  %113 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 136) #6
          to label %114 unwind label %134

114:                                              ; preds = %108
  invoke void @_ZN11spirv_cross10ObjectPoolINS_15SPIRAccessChainEEC2Ej(ptr noundef nonnull align 8 dereferenceable(132) %113, i32 noundef 16)
          to label %115 unwind label %178

115:                                              ; preds = %114
  call void @_ZNSt10unique_ptrIN11spirv_cross14ObjectPoolBaseESt14default_deleteIS1_EE5resetEPS1_(ptr noundef nonnull align 8 dereferenceable(8) %112, ptr noundef %113) #5
  %116 = getelementptr inbounds %"class.spirv_cross::ParsedIR", ptr %5, i32 0, i32 0
  %117 = call noundef ptr @_ZNKSt10unique_ptrIN11spirv_cross15ObjectPoolGroupESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %116) #5
  %118 = getelementptr inbounds %"struct.spirv_cross::ObjectPoolGroup", ptr %117, i32 0, i32 0
  %119 = getelementptr inbounds [14 x %"class.std::unique_ptr.92"], ptr %118, i64 0, i64 12
  %120 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 136) #6
          to label %121 unwind label %134

121:                                              ; preds = %115
  invoke void @_ZN11spirv_cross10ObjectPoolINS_9SPIRUndefEEC2Ej(ptr noundef nonnull align 8 dereferenceable(132) %120, i32 noundef 16)
          to label %122 unwind label %182

122:                                              ; preds = %121
  call void @_ZNSt10unique_ptrIN11spirv_cross14ObjectPoolBaseESt14default_deleteIS1_EE5resetEPS1_(ptr noundef nonnull align 8 dereferenceable(8) %119, ptr noundef %120) #5
  %123 = getelementptr inbounds %"class.spirv_cross::ParsedIR", ptr %5, i32 0, i32 0
  %124 = call noundef ptr @_ZNKSt10unique_ptrIN11spirv_cross15ObjectPoolGroupESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %123) #5
  %125 = getelementptr inbounds %"struct.spirv_cross::ObjectPoolGroup", ptr %124, i32 0, i32 0
  %126 = getelementptr inbounds [14 x %"class.std::unique_ptr.92"], ptr %125, i64 0, i64 13
  %127 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 136) #6
          to label %128 unwind label %134

128:                                              ; preds = %122
  invoke void @_ZN11spirv_cross10ObjectPoolINS_10SPIRStringEEC2Ej(ptr noundef nonnull align 8 dereferenceable(132) %127, i32 noundef 16)
          to label %129 unwind label %186

129:                                              ; preds = %128
  call void @_ZNSt10unique_ptrIN11spirv_cross14ObjectPoolBaseESt14default_deleteIS1_EE5resetEPS1_(ptr noundef nonnull align 8 dereferenceable(8) %126, ptr noundef %127) #5
  ret void

130:                                              ; preds = %17
  %131 = landingpad { ptr, i32 }
          cleanup
  %132 = extractvalue { ptr, i32 } %131, 0
  store ptr %132, ptr %3, align 8
  %133 = extractvalue { ptr, i32 } %131, 1
  store i32 %133, ptr %4, align 4
  br label %191

134:                                              ; preds = %122, %115, %108, %101, %94, %87, %80, %73, %66, %59, %52, %45, %38, %27
  %135 = landingpad { ptr, i32 }
          cleanup
  %136 = extractvalue { ptr, i32 } %135, 0
  store ptr %136, ptr %3, align 8
  %137 = extractvalue { ptr, i32 } %135, 1
  store i32 %137, ptr %4, align 4
  br label %190

138:                                              ; preds = %44
  %139 = landingpad { ptr, i32 }
          cleanup
  %140 = extractvalue { ptr, i32 } %139, 0
  store ptr %140, ptr %3, align 8
  %141 = extractvalue { ptr, i32 } %139, 1
  store i32 %141, ptr %4, align 4
  call void @_ZdlPvm(ptr noundef %43, i64 noundef 136) #7
  br label %190

142:                                              ; preds = %51
  %143 = landingpad { ptr, i32 }
          cleanup
  %144 = extractvalue { ptr, i32 } %143, 0
  store ptr %144, ptr %3, align 8
  %145 = extractvalue { ptr, i32 } %143, 1
  store i32 %145, ptr %4, align 4
  call void @_ZdlPvm(ptr noundef %50, i64 noundef 136) #7
  br label %190

146:                                              ; preds = %58
  %147 = landingpad { ptr, i32 }
          cleanup
  %148 = extractvalue { ptr, i32 } %147, 0
  store ptr %148, ptr %3, align 8
  %149 = extractvalue { ptr, i32 } %147, 1
  store i32 %149, ptr %4, align 4
  call void @_ZdlPvm(ptr noundef %57, i64 noundef 136) #7
  br label %190

150:                                              ; preds = %65
  %151 = landingpad { ptr, i32 }
          cleanup
  %152 = extractvalue { ptr, i32 } %151, 0
  store ptr %152, ptr %3, align 8
  %153 = extractvalue { ptr, i32 } %151, 1
  store i32 %153, ptr %4, align 4
  call void @_ZdlPvm(ptr noundef %64, i64 noundef 136) #7
  br label %190

154:                                              ; preds = %72
  %155 = landingpad { ptr, i32 }
          cleanup
  %156 = extractvalue { ptr, i32 } %155, 0
  store ptr %156, ptr %3, align 8
  %157 = extractvalue { ptr, i32 } %155, 1
  store i32 %157, ptr %4, align 4
  call void @_ZdlPvm(ptr noundef %71, i64 noundef 136) #7
  br label %190

158:                                              ; preds = %79
  %159 = landingpad { ptr, i32 }
          cleanup
  %160 = extractvalue { ptr, i32 } %159, 0
  store ptr %160, ptr %3, align 8
  %161 = extractvalue { ptr, i32 } %159, 1
  store i32 %161, ptr %4, align 4
  call void @_ZdlPvm(ptr noundef %78, i64 noundef 136) #7
  br label %190

162:                                              ; preds = %86
  %163 = landingpad { ptr, i32 }
          cleanup
  %164 = extractvalue { ptr, i32 } %163, 0
  store ptr %164, ptr %3, align 8
  %165 = extractvalue { ptr, i32 } %163, 1
  store i32 %165, ptr %4, align 4
  call void @_ZdlPvm(ptr noundef %85, i64 noundef 136) #7
  br label %190

166:                                              ; preds = %93
  %167 = landingpad { ptr, i32 }
          cleanup
  %168 = extractvalue { ptr, i32 } %167, 0
  store ptr %168, ptr %3, align 8
  %169 = extractvalue { ptr, i32 } %167, 1
  store i32 %169, ptr %4, align 4
  call void @_ZdlPvm(ptr noundef %92, i64 noundef 136) #7
  br label %190

170:                                              ; preds = %100
  %171 = landingpad { ptr, i32 }
          cleanup
  %172 = extractvalue { ptr, i32 } %171, 0
  store ptr %172, ptr %3, align 8
  %173 = extractvalue { ptr, i32 } %171, 1
  store i32 %173, ptr %4, align 4
  call void @_ZdlPvm(ptr noundef %99, i64 noundef 136) #7
  br label %190

174:                                              ; preds = %107
  %175 = landingpad { ptr, i32 }
          cleanup
  %176 = extractvalue { ptr, i32 } %175, 0
  store ptr %176, ptr %3, align 8
  %177 = extractvalue { ptr, i32 } %175, 1
  store i32 %177, ptr %4, align 4
  call void @_ZdlPvm(ptr noundef %106, i64 noundef 136) #7
  br label %190

178:                                              ; preds = %114
  %179 = landingpad { ptr, i32 }
          cleanup
  %180 = extractvalue { ptr, i32 } %179, 0
  store ptr %180, ptr %3, align 8
  %181 = extractvalue { ptr, i32 } %179, 1
  store i32 %181, ptr %4, align 4
  call void @_ZdlPvm(ptr noundef %113, i64 noundef 136) #7
  br label %190

182:                                              ; preds = %121
  %183 = landingpad { ptr, i32 }
          cleanup
  %184 = extractvalue { ptr, i32 } %183, 0
  store ptr %184, ptr %3, align 8
  %185 = extractvalue { ptr, i32 } %183, 1
  store i32 %185, ptr %4, align 4
  call void @_ZdlPvm(ptr noundef %120, i64 noundef 136) #7
  br label %190

186:                                              ; preds = %128
  %187 = landingpad { ptr, i32 }
          cleanup
  %188 = extractvalue { ptr, i32 } %187, 0
  store ptr %188, ptr %3, align 8
  %189 = extractvalue { ptr, i32 } %187, 1
  store i32 %189, ptr %4, align 4
  call void @_ZdlPvm(ptr noundef %127, i64 noundef 136) #7
  br label %190

190:                                              ; preds = %186, %182, %178, %174, %170, %166, %162, %158, %154, %150, %146, %142, %138, %134
  call void @_ZNSt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %35) #5
  call void @_ZN11spirv_cross6BitsetD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %34) #5
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #5
  br label %191

191:                                              ; preds = %190, %130
  call void @_ZNSt13unordered_mapIN11spirv_cross7TypedIDILNS0_5TypesE4EEENS0_14SPIREntryPointESt4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_S4_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %25) #5
  call void @_ZNSt13unordered_mapIN11spirv_cross7TypedIDILNS0_5TypesE6EEES3_St4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %24) #5
  call void @_ZN11spirv_cross11SmallVectorIhLm8EED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #5
  call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EED2Ev(ptr noundef nonnull align 8 dereferenceable(280) %22) #5
  call void @_ZN11spirv_cross11SmallVectorIN3spv10CapabilityELm8EED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %21) #5
  call void @_ZNSt13unordered_mapIN11spirv_cross7TypedIDILNS0_5TypesE0EEEjSt4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_jEEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %20) #5
  call void @_ZN11spirv_cross11SmallVectorINS_7TypedIDILNS_5TypesE0EEELm8EED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %19) #5
  call void @_ZN11spirv_cross11SmallVectorINS_7TypedIDILNS_5TypesE0EEELm8EED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %18) #5
  %192 = getelementptr inbounds [14 x %"class.spirv_cross::SmallVector.7"], ptr %10, i32 0, i32 0
  %193 = getelementptr inbounds %"class.spirv_cross::SmallVector.7", ptr %192, i64 14
  br label %194

194:                                              ; preds = %194, %191
  %195 = phi ptr [ %193, %191 ], [ %196, %194 ]
  %196 = getelementptr inbounds %"class.spirv_cross::SmallVector.7", ptr %195, i64 -1
  call void @_ZN11spirv_cross11SmallVectorINS_7TypedIDILNS_5TypesE0EEELm8EED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %196) #5
  %197 = icmp eq ptr %196, %192
  br i1 %197, label %198, label %194

198:                                              ; preds = %194
  call void @_ZNSt13unordered_mapIN11spirv_cross7TypedIDILNS0_5TypesE0EEENS0_4MetaESt4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_S4_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %9) #5
  call void @_ZN11spirv_cross11SmallVectorINS_7VariantELm8EED2Ev(ptr noundef nonnull align 8 dereferenceable(216) %8) #5
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #5
  call void @_ZNSt10unique_ptrIN11spirv_cross15ObjectPoolGroupESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %6) #5
  br label %199

199:                                              ; preds = %198
  %200 = load ptr, ptr %3, align 8
  %201 = load i32, ptr %4, align 4
  %202 = insertvalue { ptr, i32 } poison, ptr %200, 0
  %203 = insertvalue { ptr, i32 } %202, i32 %201, 1
  resume { ptr, i32 } %203
}

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN11spirv_cross7TypedIDILNS_5TypesE4EEC2Ej(ptr noundef nonnull align 4 dereferenceable(4), i32 noundef) unnamed_addr #1 align 2

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN11spirv_cross8ParsedIR6SourceC2Ev(ptr noundef nonnull align 4 dereferenceable(7)) unnamed_addr #1 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

attributes #0 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { mustprogress 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 #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 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { 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 #5 = { nounwind }
attributes #6 = { builtin allocsize(0) }
attributes #7 = { 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, !52, i64 1748}
!10 = !{!"_ZTSN11spirv_cross8ParsedIRE", !11, i64 0, !17, i64 8, !21, i64 32, !25, i64 248, !7, i64 304, !30, i64 1088, !30, i64 1144, !33, i64 1200, !35, i64 1256, !38, i64 1312, !41, i64 1592, !44, i64 1624, !46, i64 1680, !48, i64 1736, !50, i64 1740, !52, i64 1748, !53, i64 1752, !49, i64 1756, !49, i64 1760, !54, i64 1768, !56, i64 1800, !57, i64 1864}
!11 = !{!"_ZTSSt10unique_ptrIN11spirv_cross15ObjectPoolGroupESt14default_deleteIS1_EE", !12, i64 0}
!12 = !{!"_ZTSSt15__uniq_ptr_dataIN11spirv_cross15ObjectPoolGroupESt14default_deleteIS1_ELb1ELb1EE", !13, i64 0}
!13 = !{!"_ZTSSt15__uniq_ptr_implIN11spirv_cross15ObjectPoolGroupESt14default_deleteIS1_EE", !14, i64 0}
!14 = !{!"_ZTSSt5tupleIJPN11spirv_cross15ObjectPoolGroupESt14default_deleteIS1_EEE", !15, i64 0}
!15 = !{!"_ZTSSt11_Tuple_implILm0EJPN11spirv_cross15ObjectPoolGroupESt14default_deleteIS1_EEE", !16, i64 0}
!16 = !{!"_ZTSSt10_Head_baseILm0EPN11spirv_cross15ObjectPoolGroupELb0EE", !6, i64 0}
!17 = !{!"_ZTSSt6vectorIjSaIjEE", !18, i64 0}
!18 = !{!"_ZTSSt12_Vector_baseIjSaIjEE", !19, i64 0}
!19 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE12_Vector_implE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!21 = !{!"_ZTSN11spirv_cross11SmallVectorINS_7VariantELm8EEE", !22, i64 0, !23, i64 16, !24, i64 24}
!22 = !{!"_ZTSN11spirv_cross10VectorViewINS_7VariantEEE", !6, i64 0, !23, i64 8}
!23 = !{!"long", !7, i64 0}
!24 = !{!"_ZTSN11spirv_cross13AlignedBufferINS_7VariantELm8EEE", !7, i64 0}
!25 = !{!"_ZTSSt13unordered_mapIN11spirv_cross7TypedIDILNS0_5TypesE0EEENS0_4MetaESt4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_S4_EEE", !26, i64 0}
!26 = !{!"_ZTSSt10_HashtableIN11spirv_cross7TypedIDILNS0_5TypesE0EEESt4pairIKS3_NS0_4MetaEESaIS7_ENSt8__detail10_Select1stESt8equal_toIS3_ESt4hashIS3_ENS9_18_Mod_range_hashingENS9_20_Default_ranged_hashENS9_20_Prime_rehash_policyENS9_17_Hashtable_traitsILb1ELb0ELb1EEEE", !6, i64 0, !23, i64 8, !27, i64 16, !23, i64 24, !28, i64 32, !6, i64 48}
!27 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !6, i64 0}
!28 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !29, i64 0, !23, i64 8}
!29 = !{!"float", !7, i64 0}
!30 = !{!"_ZTSN11spirv_cross11SmallVectorINS_7TypedIDILNS_5TypesE0EEELm8EEE", !31, i64 0, !23, i64 16, !32, i64 24}
!31 = !{!"_ZTSN11spirv_cross10VectorViewINS_7TypedIDILNS_5TypesE0EEEEE", !6, i64 0, !23, i64 8}
!32 = !{!"_ZTSN11spirv_cross13AlignedBufferINS_7TypedIDILNS_5TypesE0EEELm8EEE", !7, i64 0}
!33 = !{!"_ZTSSt13unordered_mapIN11spirv_cross7TypedIDILNS0_5TypesE0EEEjSt4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_jEEE", !34, i64 0}
!34 = !{!"_ZTSSt10_HashtableIN11spirv_cross7TypedIDILNS0_5TypesE0EEESt4pairIKS3_jESaIS6_ENSt8__detail10_Select1stESt8equal_toIS3_ESt4hashIS3_ENS8_18_Mod_range_hashingENS8_20_Default_ranged_hashENS8_20_Prime_rehash_policyENS8_17_Hashtable_traitsILb1ELb0ELb1EEEE", !6, i64 0, !23, i64 8, !27, i64 16, !23, i64 24, !28, i64 32, !6, i64 48}
!35 = !{!"_ZTSN11spirv_cross11SmallVectorIN3spv10CapabilityELm8EEE", !36, i64 0, !23, i64 16, !37, i64 24}
!36 = !{!"_ZTSN11spirv_cross10VectorViewIN3spv10CapabilityEEE", !6, i64 0, !23, i64 8}
!37 = !{!"_ZTSN11spirv_cross13AlignedBufferIN3spv10CapabilityELm8EEE", !7, i64 0}
!38 = !{!"_ZTSN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EEE", !39, i64 0, !23, i64 16, !40, i64 24}
!39 = !{!"_ZTSN11spirv_cross10VectorViewINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE", !6, i64 0, !23, i64 8}
!40 = !{!"_ZTSN11spirv_cross13AlignedBufferINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EEE", !7, i64 0}
!41 = !{!"_ZTSN11spirv_cross11SmallVectorIhLm8EEE", !42, i64 0, !23, i64 16, !43, i64 24}
!42 = !{!"_ZTSN11spirv_cross10VectorViewIhEE", !6, i64 0, !23, i64 8}
!43 = !{!"_ZTSN11spirv_cross13AlignedBufferIhLm8EEE", !7, i64 0}
!44 = !{!"_ZTSSt13unordered_mapIN11spirv_cross7TypedIDILNS0_5TypesE6EEES3_St4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_S3_EEE", !45, i64 0}
!45 = !{!"_ZTSSt10_HashtableIN11spirv_cross7TypedIDILNS0_5TypesE6EEESt4pairIKS3_S3_ESaIS6_ENSt8__detail10_Select1stESt8equal_toIS3_ESt4hashIS3_ENS8_18_Mod_range_hashingENS8_20_Default_ranged_hashENS8_20_Prime_rehash_policyENS8_17_Hashtable_traitsILb1ELb0ELb1EEEE", !6, i64 0, !23, i64 8, !27, i64 16, !23, i64 24, !28, i64 32, !6, i64 48}
!46 = !{!"_ZTSSt13unordered_mapIN11spirv_cross7TypedIDILNS0_5TypesE4EEENS0_14SPIREntryPointESt4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_S4_EEE", !47, i64 0}
!47 = !{!"_ZTSSt10_HashtableIN11spirv_cross7TypedIDILNS0_5TypesE4EEESt4pairIKS3_NS0_14SPIREntryPointEESaIS7_ENSt8__detail10_Select1stESt8equal_toIS3_ESt4hashIS3_ENS9_18_Mod_range_hashingENS9_20_Default_ranged_hashENS9_20_Prime_rehash_policyENS9_17_Hashtable_traitsILb1ELb0ELb1EEEE", !6, i64 0, !23, i64 8, !27, i64 16, !23, i64 24, !28, i64 32, !6, i64 48}
!48 = !{!"_ZTSN11spirv_cross7TypedIDILNS_5TypesE4EEE", !49, i64 0}
!49 = !{!"int", !7, i64 0}
!50 = !{!"_ZTSN11spirv_cross8ParsedIR6SourceE", !49, i64 0, !51, i64 4, !51, i64 5, !51, i64 6}
!51 = !{!"bool", !7, i64 0}
!52 = !{!"_ZTSN3spv15AddressingModelE", !7, i64 0}
!53 = !{!"_ZTSN3spv11MemoryModelE", !7, i64 0}
!54 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !55, i64 0, !23, i64 8, !7, i64 16}
!55 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!56 = !{!"_ZTSN11spirv_cross6BitsetE", !23, i64 0, !57, i64 8}
!57 = !{!"_ZTSSt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEE", !58, i64 0}
!58 = !{!"_ZTSSt10_HashtableIjjSaIjENSt8__detail9_IdentityESt8equal_toIjESt4hashIjENS1_18_Mod_range_hashingENS1_20_Default_ranged_hashENS1_20_Prime_rehash_policyENS1_17_Hashtable_traitsILb0ELb1ELb1EEEE", !6, i64 0, !23, i64 8, !27, i64 16, !23, i64 24, !28, i64 32, !6, i64 48}
!59 = !{!10, !53, i64 1752}
!60 = !{!10, !49, i64 1756}
!61 = !{!10, !49, i64 1760}


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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11spirv_cross8ParsedIRC2Ev(ptr noundef nonnull align 8 dereferenceable(1920) %0) unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 {
  tail call void @_ZNSt10unique_ptrIN11spirv_cross15ObjectPoolGroupESt14default_deleteIS1_EEC2IS3_vEEv(ptr noundef nonnull align 8 dereferenceable(8) %0) #4
  %2 = getelementptr inbounds i8, ptr %0, i64 8
  tail call void @_ZNSt6vectorIjSaIjEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %2) #4
  %3 = getelementptr inbounds i8, ptr %0, i64 32
  tail call void @_ZN11spirv_cross11SmallVectorINS_7VariantELm8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(216) %3) #4
  %4 = getelementptr inbounds i8, ptr %0, i64 248
  tail call void @_ZNSt13unordered_mapIN11spirv_cross7TypedIDILNS0_5TypesE0EEENS0_4MetaESt4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_S4_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %4) #4
  %.ptr = getelementptr inbounds i8, ptr %0, i64 304
  tail call void @_ZN11spirv_cross11SmallVectorINS_7TypedIDILNS_5TypesE0EEELm8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %.ptr) #4
  %.ptr.1 = getelementptr inbounds i8, ptr %0, i64 360
  tail call void @_ZN11spirv_cross11SmallVectorINS_7TypedIDILNS_5TypesE0EEELm8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %.ptr.1) #4
  %.ptr.2 = getelementptr inbounds i8, ptr %0, i64 416
  tail call void @_ZN11spirv_cross11SmallVectorINS_7TypedIDILNS_5TypesE0EEELm8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %.ptr.2) #4
  %.ptr.3 = getelementptr inbounds i8, ptr %0, i64 472
  tail call void @_ZN11spirv_cross11SmallVectorINS_7TypedIDILNS_5TypesE0EEELm8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %.ptr.3) #4
  %.ptr.4 = getelementptr inbounds i8, ptr %0, i64 528
  tail call void @_ZN11spirv_cross11SmallVectorINS_7TypedIDILNS_5TypesE0EEELm8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %.ptr.4) #4
  %.ptr.5 = getelementptr inbounds i8, ptr %0, i64 584
  tail call void @_ZN11spirv_cross11SmallVectorINS_7TypedIDILNS_5TypesE0EEELm8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %.ptr.5) #4
  %.ptr.6 = getelementptr inbounds i8, ptr %0, i64 640
  tail call void @_ZN11spirv_cross11SmallVectorINS_7TypedIDILNS_5TypesE0EEELm8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %.ptr.6) #4
  %.ptr.7 = getelementptr inbounds i8, ptr %0, i64 696
  tail call void @_ZN11spirv_cross11SmallVectorINS_7TypedIDILNS_5TypesE0EEELm8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %.ptr.7) #4
  %.ptr.8 = getelementptr inbounds i8, ptr %0, i64 752
  tail call void @_ZN11spirv_cross11SmallVectorINS_7TypedIDILNS_5TypesE0EEELm8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %.ptr.8) #4
  %.ptr.9 = getelementptr inbounds i8, ptr %0, i64 808
  tail call void @_ZN11spirv_cross11SmallVectorINS_7TypedIDILNS_5TypesE0EEELm8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %.ptr.9) #4
  %.ptr.10 = getelementptr inbounds i8, ptr %0, i64 864
  tail call void @_ZN11spirv_cross11SmallVectorINS_7TypedIDILNS_5TypesE0EEELm8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %.ptr.10) #4
  %.ptr.11 = getelementptr inbounds i8, ptr %0, i64 920
  tail call void @_ZN11spirv_cross11SmallVectorINS_7TypedIDILNS_5TypesE0EEELm8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %.ptr.11) #4
  %.ptr.12 = getelementptr inbounds i8, ptr %0, i64 976
  tail call void @_ZN11spirv_cross11SmallVectorINS_7TypedIDILNS_5TypesE0EEELm8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %.ptr.12) #4
  %.ptr.13 = getelementptr inbounds i8, ptr %0, i64 1032
  tail call void @_ZN11spirv_cross11SmallVectorINS_7TypedIDILNS_5TypesE0EEELm8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %.ptr.13) #4
  %5 = getelementptr inbounds i8, ptr %0, i64 1088
  tail call void @_ZN11spirv_cross11SmallVectorINS_7TypedIDILNS_5TypesE0EEELm8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %5) #4
  %6 = getelementptr inbounds i8, ptr %0, i64 1144
  tail call void @_ZN11spirv_cross11SmallVectorINS_7TypedIDILNS_5TypesE0EEELm8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %6) #4
  %7 = getelementptr inbounds i8, ptr %0, i64 1200
  tail call void @_ZNSt13unordered_mapIN11spirv_cross7TypedIDILNS0_5TypesE0EEEjSt4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_jEEEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %7) #4
  %8 = getelementptr inbounds i8, ptr %0, i64 1256
  tail call void @_ZN11spirv_cross11SmallVectorIN3spv10CapabilityELm8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %8) #4
  %9 = getelementptr inbounds i8, ptr %0, i64 1312
  tail call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(280) %9) #4
  %10 = getelementptr inbounds i8, ptr %0, i64 1592
  tail call void @_ZN11spirv_cross11SmallVectorIhLm8EEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #4
  %11 = getelementptr inbounds i8, ptr %0, i64 1624
  tail call void @_ZNSt13unordered_mapIN11spirv_cross7TypedIDILNS0_5TypesE6EEES3_St4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_S3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %11) #4
  %12 = getelementptr inbounds i8, ptr %0, i64 1680
  tail call void @_ZNSt13unordered_mapIN11spirv_cross7TypedIDILNS0_5TypesE4EEENS0_14SPIREntryPointESt4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_S4_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %12) #4
  %13 = getelementptr inbounds i8, ptr %0, i64 1736
  tail call void @_ZN11spirv_cross7TypedIDILNS_5TypesE4EEC2Ej(ptr noundef nonnull align 4 dereferenceable(4) %13, i32 noundef 0)
  %14 = getelementptr inbounds i8, ptr %0, i64 1740
  tail call void @_ZN11spirv_cross8ParsedIR6SourceC2Ev(ptr noundef nonnull align 4 dereferenceable(7) %14) #4
  %15 = getelementptr inbounds i8, ptr %0, i64 1748
  store <4 x i32> <i32 2147483647, i32 2147483647, i32 0, i32 0>, ptr %15, align 4, !tbaa !5
  %16 = getelementptr inbounds i8, ptr %0, i64 1768
  tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #4
  %17 = getelementptr inbounds i8, ptr %0, i64 1800
  tail call void @_ZN11spirv_cross6BitsetC2Ev(ptr noundef nonnull align 8 dereferenceable(64) %17) #4
  %18 = getelementptr inbounds i8, ptr %0, i64 1864
  tail call void @_ZNSt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %18) #4
  %19 = invoke noalias noundef nonnull dereferenceable(112) ptr @_Znwm(i64 noundef 112) #5
          to label %20 unwind label %73

20:                                               ; preds = %1
  tail call void @_ZN11spirv_cross15ObjectPoolGroupC2Ev(ptr noundef nonnull align 8 dereferenceable(112) %19) #4
  tail call void @_ZNSt10unique_ptrIN11spirv_cross15ObjectPoolGroupESt14default_deleteIS1_EE5resetEPS1_(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull %19) #4
  %21 = tail call noundef ptr @_ZNKSt10unique_ptrIN11spirv_cross15ObjectPoolGroupESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %0) #4
  %22 = invoke noalias noundef nonnull dereferenceable(136) ptr @_Znwm(i64 noundef 136) #5
          to label %23 unwind label %73

23:                                               ; preds = %20
  %24 = getelementptr inbounds i8, ptr %21, i64 8
  tail call void @_ZN11spirv_cross10ObjectPoolINS_8SPIRTypeEEC2Ej(ptr noundef nonnull align 8 dereferenceable(132) %22, i32 noundef 16)
  tail call void @_ZNSt10unique_ptrIN11spirv_cross14ObjectPoolBaseESt14default_deleteIS1_EE5resetEPS1_(ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull %22) #4
  %25 = tail call noundef ptr @_ZNKSt10unique_ptrIN11spirv_cross15ObjectPoolGroupESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %0) #4
  %26 = invoke noalias noundef nonnull dereferenceable(136) ptr @_Znwm(i64 noundef 136) #5
          to label %27 unwind label %73

27:                                               ; preds = %23
  %28 = getelementptr inbounds i8, ptr %25, i64 16
  tail call void @_ZN11spirv_cross10ObjectPoolINS_12SPIRVariableEEC2Ej(ptr noundef nonnull align 8 dereferenceable(132) %26, i32 noundef 16)
  tail call void @_ZNSt10unique_ptrIN11spirv_cross14ObjectPoolBaseESt14default_deleteIS1_EE5resetEPS1_(ptr noundef nonnull align 8 dereferenceable(8) %28, ptr noundef nonnull %26) #4
  %29 = tail call noundef ptr @_ZNKSt10unique_ptrIN11spirv_cross15ObjectPoolGroupESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %0) #4
  %30 = invoke noalias noundef nonnull dereferenceable(136) ptr @_Znwm(i64 noundef 136) #5
          to label %31 unwind label %73

31:                                               ; preds = %27
  %32 = getelementptr inbounds i8, ptr %29, i64 24
  tail call void @_ZN11spirv_cross10ObjectPoolINS_12SPIRConstantEEC2Ej(ptr noundef nonnull align 8 dereferenceable(132) %30, i32 noundef 16)
  tail call void @_ZNSt10unique_ptrIN11spirv_cross14ObjectPoolBaseESt14default_deleteIS1_EE5resetEPS1_(ptr noundef nonnull align 8 dereferenceable(8) %32, ptr noundef nonnull %30) #4
  %33 = tail call noundef ptr @_ZNKSt10unique_ptrIN11spirv_cross15ObjectPoolGroupESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %0) #4
  %34 = invoke noalias noundef nonnull dereferenceable(136) ptr @_Znwm(i64 noundef 136) #5
          to label %35 unwind label %73

35:                                               ; preds = %31
  %36 = getelementptr inbounds i8, ptr %33, i64 32
  tail call void @_ZN11spirv_cross10ObjectPoolINS_12SPIRFunctionEEC2Ej(ptr noundef nonnull align 8 dereferenceable(132) %34, i32 noundef 16)
  tail call void @_ZNSt10unique_ptrIN11spirv_cross14ObjectPoolBaseESt14default_deleteIS1_EE5resetEPS1_(ptr noundef nonnull align 8 dereferenceable(8) %36, ptr noundef nonnull %34) #4
  %37 = tail call noundef ptr @_ZNKSt10unique_ptrIN11spirv_cross15ObjectPoolGroupESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %0) #4
  %38 = invoke noalias noundef nonnull dereferenceable(136) ptr @_Znwm(i64 noundef 136) #5
          to label %39 unwind label %73

39:                                               ; preds = %35
  %40 = getelementptr inbounds i8, ptr %37, i64 40
  tail call void @_ZN11spirv_cross10ObjectPoolINS_21SPIRFunctionPrototypeEEC2Ej(ptr noundef nonnull align 8 dereferenceable(132) %38, i32 noundef 16)
  tail call void @_ZNSt10unique_ptrIN11spirv_cross14ObjectPoolBaseESt14default_deleteIS1_EE5resetEPS1_(ptr noundef nonnull align 8 dereferenceable(8) %40, ptr noundef nonnull %38) #4
  %41 = tail call noundef ptr @_ZNKSt10unique_ptrIN11spirv_cross15ObjectPoolGroupESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %0) #4
  %42 = invoke noalias noundef nonnull dereferenceable(136) ptr @_Znwm(i64 noundef 136) #5
          to label %43 unwind label %73

43:                                               ; preds = %39
  %44 = getelementptr inbounds i8, ptr %41, i64 48
  tail call void @_ZN11spirv_cross10ObjectPoolINS_9SPIRBlockEEC2Ej(ptr noundef nonnull align 8 dereferenceable(132) %42, i32 noundef 16)
  tail call void @_ZNSt10unique_ptrIN11spirv_cross14ObjectPoolBaseESt14default_deleteIS1_EE5resetEPS1_(ptr noundef nonnull align 8 dereferenceable(8) %44, ptr noundef nonnull %42) #4
  %45 = tail call noundef ptr @_ZNKSt10unique_ptrIN11spirv_cross15ObjectPoolGroupESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %0) #4
  %46 = invoke noalias noundef nonnull dereferenceable(136) ptr @_Znwm(i64 noundef 136) #5
          to label %47 unwind label %73

47:                                               ; preds = %43
  %48 = getelementptr inbounds i8, ptr %45, i64 56
  tail call void @_ZN11spirv_cross10ObjectPoolINS_13SPIRExtensionEEC2Ej(ptr noundef nonnull align 8 dereferenceable(132) %46, i32 noundef 16)
  tail call void @_ZNSt10unique_ptrIN11spirv_cross14ObjectPoolBaseESt14default_deleteIS1_EE5resetEPS1_(ptr noundef nonnull align 8 dereferenceable(8) %48, ptr noundef nonnull %46) #4
  %49 = tail call noundef ptr @_ZNKSt10unique_ptrIN11spirv_cross15ObjectPoolGroupESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %0) #4
  %50 = invoke noalias noundef nonnull dereferenceable(136) ptr @_Znwm(i64 noundef 136) #5
          to label %51 unwind label %73

51:                                               ; preds = %47
  %52 = getelementptr inbounds i8, ptr %49, i64 64
  tail call void @_ZN11spirv_cross10ObjectPoolINS_14SPIRExpressionEEC2Ej(ptr noundef nonnull align 8 dereferenceable(132) %50, i32 noundef 16)
  tail call void @_ZNSt10unique_ptrIN11spirv_cross14ObjectPoolBaseESt14default_deleteIS1_EE5resetEPS1_(ptr noundef nonnull align 8 dereferenceable(8) %52, ptr noundef nonnull %50) #4
  %53 = tail call noundef ptr @_ZNKSt10unique_ptrIN11spirv_cross15ObjectPoolGroupESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %0) #4
  %54 = invoke noalias noundef nonnull dereferenceable(136) ptr @_Znwm(i64 noundef 136) #5
          to label %55 unwind label %73

55:                                               ; preds = %51
  %56 = getelementptr inbounds i8, ptr %53, i64 72
  tail call void @_ZN11spirv_cross10ObjectPoolINS_14SPIRConstantOpEEC2Ej(ptr noundef nonnull align 8 dereferenceable(132) %54, i32 noundef 16)
  tail call void @_ZNSt10unique_ptrIN11spirv_cross14ObjectPoolBaseESt14default_deleteIS1_EE5resetEPS1_(ptr noundef nonnull align 8 dereferenceable(8) %56, ptr noundef nonnull %54) #4
  %57 = tail call noundef ptr @_ZNKSt10unique_ptrIN11spirv_cross15ObjectPoolGroupESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %0) #4
  %58 = invoke noalias noundef nonnull dereferenceable(136) ptr @_Znwm(i64 noundef 136) #5
          to label %59 unwind label %73

59:                                               ; preds = %55
  %60 = getelementptr inbounds i8, ptr %57, i64 80
  tail call void @_ZN11spirv_cross10ObjectPoolINS_24SPIRCombinedImageSamplerEEC2Ej(ptr noundef nonnull align 8 dereferenceable(132) %58, i32 noundef 16)
  tail call void @_ZNSt10unique_ptrIN11spirv_cross14ObjectPoolBaseESt14default_deleteIS1_EE5resetEPS1_(ptr noundef nonnull align 8 dereferenceable(8) %60, ptr noundef nonnull %58) #4
  %61 = tail call noundef ptr @_ZNKSt10unique_ptrIN11spirv_cross15ObjectPoolGroupESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %0) #4
  %62 = invoke noalias noundef nonnull dereferenceable(136) ptr @_Znwm(i64 noundef 136) #5
          to label %63 unwind label %73

63:                                               ; preds = %59
  %64 = getelementptr inbounds i8, ptr %61, i64 88
  tail call void @_ZN11spirv_cross10ObjectPoolINS_15SPIRAccessChainEEC2Ej(ptr noundef nonnull align 8 dereferenceable(132) %62, i32 noundef 16)
  tail call void @_ZNSt10unique_ptrIN11spirv_cross14ObjectPoolBaseESt14default_deleteIS1_EE5resetEPS1_(ptr noundef nonnull align 8 dereferenceable(8) %64, ptr noundef nonnull %62) #4
  %65 = tail call noundef ptr @_ZNKSt10unique_ptrIN11spirv_cross15ObjectPoolGroupESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %0) #4
  %66 = invoke noalias noundef nonnull dereferenceable(136) ptr @_Znwm(i64 noundef 136) #5
          to label %67 unwind label %73

67:                                               ; preds = %63
  %68 = getelementptr inbounds i8, ptr %65, i64 96
  tail call void @_ZN11spirv_cross10ObjectPoolINS_9SPIRUndefEEC2Ej(ptr noundef nonnull align 8 dereferenceable(132) %66, i32 noundef 16)
  tail call void @_ZNSt10unique_ptrIN11spirv_cross14ObjectPoolBaseESt14default_deleteIS1_EE5resetEPS1_(ptr noundef nonnull align 8 dereferenceable(8) %68, ptr noundef nonnull %66) #4
  %69 = tail call noundef ptr @_ZNKSt10unique_ptrIN11spirv_cross15ObjectPoolGroupESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %0) #4
  %70 = invoke noalias noundef nonnull dereferenceable(136) ptr @_Znwm(i64 noundef 136) #5
          to label %71 unwind label %73

71:                                               ; preds = %67
  %72 = getelementptr inbounds i8, ptr %69, i64 104
  tail call void @_ZN11spirv_cross10ObjectPoolINS_10SPIRStringEEC2Ej(ptr noundef nonnull align 8 dereferenceable(132) %70, i32 noundef 16)
  tail call void @_ZNSt10unique_ptrIN11spirv_cross14ObjectPoolBaseESt14default_deleteIS1_EE5resetEPS1_(ptr noundef nonnull align 8 dereferenceable(8) %72, ptr noundef nonnull %70) #4
  ret void

73:                                               ; preds = %67, %63, %59, %55, %51, %47, %43, %39, %35, %31, %27, %23, %20, %1
  %74 = landingpad { ptr, i32 }
          cleanup
  tail call void @_ZNSt13unordered_setIjSt4hashIjESt8equal_toIjESaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %18) #4
  tail call void @_ZN11spirv_cross6BitsetD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %17) #4
  tail call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #4
  tail call void @_ZNSt13unordered_mapIN11spirv_cross7TypedIDILNS0_5TypesE4EEENS0_14SPIREntryPointESt4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_S4_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %12) #4
  tail call void @_ZNSt13unordered_mapIN11spirv_cross7TypedIDILNS0_5TypesE6EEES3_St4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %11) #4
  tail call void @_ZN11spirv_cross11SmallVectorIhLm8EED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #4
  tail call void @_ZN11spirv_cross11SmallVectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEELm8EED2Ev(ptr noundef nonnull align 8 dereferenceable(280) %9) #4
  tail call void @_ZN11spirv_cross11SmallVectorIN3spv10CapabilityELm8EED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %8) #4
  tail call void @_ZNSt13unordered_mapIN11spirv_cross7TypedIDILNS0_5TypesE0EEEjSt4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_jEEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %7) #4
  tail call void @_ZN11spirv_cross11SmallVectorINS_7TypedIDILNS_5TypesE0EEELm8EED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %6) #4
  tail call void @_ZN11spirv_cross11SmallVectorINS_7TypedIDILNS_5TypesE0EEELm8EED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %5) #4
  tail call void @_ZN11spirv_cross11SmallVectorINS_7TypedIDILNS_5TypesE0EEELm8EED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %.ptr.13) #4
  tail call void @_ZN11spirv_cross11SmallVectorINS_7TypedIDILNS_5TypesE0EEELm8EED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %.ptr.12) #4
  tail call void @_ZN11spirv_cross11SmallVectorINS_7TypedIDILNS_5TypesE0EEELm8EED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %.ptr.11) #4
  tail call void @_ZN11spirv_cross11SmallVectorINS_7TypedIDILNS_5TypesE0EEELm8EED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %.ptr.10) #4
  tail call void @_ZN11spirv_cross11SmallVectorINS_7TypedIDILNS_5TypesE0EEELm8EED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %.ptr.9) #4
  tail call void @_ZN11spirv_cross11SmallVectorINS_7TypedIDILNS_5TypesE0EEELm8EED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %.ptr.8) #4
  tail call void @_ZN11spirv_cross11SmallVectorINS_7TypedIDILNS_5TypesE0EEELm8EED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %.ptr.7) #4
  tail call void @_ZN11spirv_cross11SmallVectorINS_7TypedIDILNS_5TypesE0EEELm8EED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %.ptr.6) #4
  tail call void @_ZN11spirv_cross11SmallVectorINS_7TypedIDILNS_5TypesE0EEELm8EED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %.ptr.5) #4
  tail call void @_ZN11spirv_cross11SmallVectorINS_7TypedIDILNS_5TypesE0EEELm8EED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %.ptr.4) #4
  tail call void @_ZN11spirv_cross11SmallVectorINS_7TypedIDILNS_5TypesE0EEELm8EED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %.ptr.3) #4
  tail call void @_ZN11spirv_cross11SmallVectorINS_7TypedIDILNS_5TypesE0EEELm8EED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %.ptr.2) #4
  tail call void @_ZN11spirv_cross11SmallVectorINS_7TypedIDILNS_5TypesE0EEELm8EED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %.ptr.1) #4
  tail call void @_ZN11spirv_cross11SmallVectorINS_7TypedIDILNS_5TypesE0EEELm8EED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %.ptr) #4
  tail call void @_ZNSt13unordered_mapIN11spirv_cross7TypedIDILNS0_5TypesE0EEENS0_4MetaESt4hashIS3_ESt8equal_toIS3_ESaISt4pairIKS3_S4_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %4) #4
  tail call void @_ZN11spirv_cross11SmallVectorINS_7VariantELm8EED2Ev(ptr noundef nonnull align 8 dereferenceable(216) %3) #4
  tail call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %2) #4
  tail call void @_ZNSt10unique_ptrIN11spirv_cross15ObjectPoolGroupESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %0) #4
  resume { ptr, i32 } %74
}

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN11spirv_cross7TypedIDILNS_5TypesE4EEC2Ej(ptr noundef nonnull align 4 dereferenceable(4), i32 noundef) unnamed_addr #1 align 2

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN11spirv_cross8ParsedIR6SourceC2Ev(ptr noundef nonnull align 4 dereferenceable(7)) unnamed_addr #1 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

attributes #0 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { mustprogress 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 #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 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nounwind }
attributes #5 = { 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 = !{!"omnipotent char", !7, i64 0}
!7 = !{!"Simple C++ TBAA"}


; Effective O3 passes: EarlyCSEPass,GVNPass,GlobalOptPass,InstCombinePass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass