; LLVM IR from Try/Tempest :: Engine/gapi/spirv/shaderanalyzer.ll (ZN14ShaderAnalyzer7analyzeEv)

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

%"struct.libspirv::MutableBytecode::Iterator" = type { %"struct.libspirv::Bytecode::Iterator.base", ptr }
%"struct.libspirv::Bytecode::Iterator.base" = type <{ ptr, i32 }>
%"struct.ShaderAnalyzer::Reg" = type { i32, [4 x i8], %"struct.ShaderAnalyzer::Value" }
%"struct.ShaderAnalyzer::Value" = type <{ i16, [6 x i8], %"struct.ShaderAnalyzer::AccessChain", [4 x i32], i8, [7 x i8] }>
%"struct.ShaderAnalyzer::AccessChain" = type { %"class.std::vector" }
%"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 }
%"struct.std::__detail::_Node_iterator" = type { %"struct.std::__detail::_Node_iterator_base" }
%"struct.std::__detail::_Node_iterator_base" = type { ptr }
%"struct.std::__detail::_Node_iterator.83" = type { %"struct.std::__detail::_Node_iterator_base.84" }
%"struct.std::__detail::_Node_iterator_base.84" = type { ptr }
%"class.std::basic_string_view" = type { i64, ptr }
%"struct.ShaderAnalyzer::Varying" = type { i32, i32 }
%"struct.std::pair.91" = type { i32, %"struct.ShaderAnalyzer::Varying" }
%"struct.std::pair.87" = type <{ %"struct.std::__detail::_Node_iterator.89", i8, [7 x i8] }>
%"struct.std::__detail::_Node_iterator.89" = type { %"struct.std::__detail::_Node_iterator_base.90" }
%"struct.std::__detail::_Node_iterator_base.90" = type { ptr }
%class.ShaderAnalyzer = type <{ i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [768 x i32], [768 x i32], [4 x i8], %"class.std::unordered_map", ptr, %"class.libspirv::MutableBytecode", %"class.std::unordered_map.13", %"class.std::unordered_map.27", %"class.std::unordered_map.41", %"class.std::unordered_map.55", %"class.std::unordered_map.69", i32, [4 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.libspirv::MutableBytecode" = type { %"class.libspirv::Bytecode.base", %"class.std::vector.8" }
%"class.libspirv::Bytecode.base" = type <{ ptr, i64, i32 }>
%"class.std::vector.8" = type { %"struct.std::_Vector_base.9" }
%"struct.std::_Vector_base.9" = type { %"struct.std::_Vector_base<libspirv::Bytecode::OpCode, std::allocator<libspirv::Bytecode::OpCode>>::_Vector_impl" }
%"struct.std::_Vector_base<libspirv::Bytecode::OpCode, std::allocator<libspirv::Bytecode::OpCode>>::_Vector_impl" = type { %"struct.std::_Vector_base<libspirv::Bytecode::OpCode, std::allocator<libspirv::Bytecode::OpCode>>::_Vector_impl_data" }
%"struct.std::_Vector_base<libspirv::Bytecode::OpCode, std::allocator<libspirv::Bytecode::OpCode>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::unordered_map.13" = type { %"class.std::_Hashtable.14" }
%"class.std::_Hashtable.14" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::unordered_map.27" = type { %"class.std::_Hashtable.28" }
%"class.std::_Hashtable.28" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::unordered_map.41" = type { %"class.std::_Hashtable.42" }
%"class.std::_Hashtable.42" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::unordered_map.55" = type { %"class.std::_Hashtable.56" }
%"class.std::_Hashtable.56" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::unordered_map.69" = type { %"class.std::_Hashtable.70" }
%"class.std::_Hashtable.70" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.ShaderAnalyzer::Type" = type <{ i32, i32, i16, [2 x i8] }>
%"struct.ShaderAnalyzer::Var" = type { i32, [4 x i8], %"struct.ShaderAnalyzer::Value", ptr }
%"struct.ShaderAnalyzer::Function" = type <{ i32, i8, i8, i16, i16, i8, i8, [4 x i8], ptr, i32, [4 x i8] }>
%"struct.std::pair" = type { i32, [4 x i8], %"struct.ShaderAnalyzer::Function" }
%"struct.std::pair.85" = type { i32, %"struct.ShaderAnalyzer::Var" }

@.str.13 = external hidden unnamed_addr constant [5 x i8], align 1

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

declare i32 @__gxx_personality_v0(...)

; Function Attrs: 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 zeroext i16 @_ZN14ShaderAnalyzer12toAccessBitsEN3spv12StorageClassE(i32 noundef) #1 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN14ShaderAnalyzer7analyzeEv(ptr noundef nonnull align 8 dereferenceable(6596) %0) #2 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca ptr, align 8
  %3 = alloca ptr, align 8
  %4 = alloca %"struct.libspirv::MutableBytecode::Iterator", align 8
  %5 = alloca %"struct.libspirv::MutableBytecode::Iterator", align 8
  %6 = alloca i32, align 4
  %7 = alloca ptr, align 8
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca %"struct.ShaderAnalyzer::Reg", align 8
  %12 = alloca ptr, align 8
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca %"struct.ShaderAnalyzer::Reg", align 8
  %16 = alloca i32, align 4
  %17 = alloca %"struct.ShaderAnalyzer::Reg", align 8
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca %"struct.ShaderAnalyzer::Reg", align 8
  %21 = alloca %"struct.ShaderAnalyzer::AccessChain", align 8
  %22 = alloca i32, align 4
  %23 = alloca %"struct.ShaderAnalyzer::Reg", align 8
  %24 = alloca ptr, align 8
  %25 = alloca i32, align 4
  %26 = alloca ptr, align 8
  %27 = alloca %"struct.libspirv::MutableBytecode::Iterator", align 8
  %28 = alloca %"struct.libspirv::MutableBytecode::Iterator", align 8
  %29 = alloca ptr, align 8
  %30 = alloca %"struct.std::__detail::_Node_iterator", align 8
  %31 = alloca %"struct.std::__detail::_Node_iterator", align 8
  %32 = alloca ptr, align 8
  %33 = alloca %"struct.std::__detail::_Node_iterator.83", align 8
  %34 = alloca %"struct.std::__detail::_Node_iterator.83", align 8
  %35 = alloca ptr, align 8
  %36 = alloca %"class.std::basic_string_view", align 8
  %37 = alloca %"class.std::basic_string_view", align 8
  %38 = alloca %"class.std::basic_string_view", align 8
  %39 = alloca ptr, align 8
  %40 = alloca %"struct.libspirv::MutableBytecode::Iterator", align 8
  %41 = alloca %"struct.libspirv::MutableBytecode::Iterator", align 8
  %42 = alloca ptr, align 8
  %43 = alloca i32, align 4
  %44 = alloca %"struct.ShaderAnalyzer::Varying", align 4
  %45 = alloca %"struct.std::pair.91", align 4
  %46 = alloca %"struct.std::pair.87", align 8
  %47 = alloca ptr, align 8
  %48 = alloca %"struct.libspirv::MutableBytecode::Iterator", align 8
  %49 = alloca %"struct.libspirv::MutableBytecode::Iterator", align 8
  %50 = alloca ptr, align 8
  store ptr %0, ptr %2, align 8, !tbaa !5
  %51 = load ptr, ptr %2, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %3) #8
  %52 = getelementptr inbounds %class.ShaderAnalyzer, ptr %51, i32 0, i32 17
  %53 = load ptr, ptr %52, align 8, !tbaa !9
  store ptr %53, ptr %3, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr %4) #8
  %54 = load ptr, ptr %3, align 8, !tbaa !5
  call void @_ZN8libspirv15MutableBytecode5beginEv(ptr dead_on_unwind writable sret(%"struct.libspirv::MutableBytecode::Iterator") align 8 %4, ptr noundef nonnull align 8 dereferenceable(48) %54)
  call void @llvm.lifetime.start.p0(i64 24, ptr %5) #8
  %55 = load ptr, ptr %3, align 8, !tbaa !5
  call void @_ZN8libspirv15MutableBytecode3endEv(ptr dead_on_unwind writable sret(%"struct.libspirv::MutableBytecode::Iterator") align 8 %5, ptr noundef nonnull align 8 dereferenceable(48) %55)
  br label %56

56:                                               ; preds = %327, %1
  %57 = call noundef zeroext i1 @_ZN8libspirvneERKNS_8Bytecode8IteratorES3_(ptr noundef nonnull align 8 dereferenceable(12) %4, ptr noundef nonnull align 8 dereferenceable(12) %5)
  br i1 %57, label %59, label %58

58:                                               ; preds = %56
  store i32 2, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %5) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %4) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %3) #8
  br label %329

59:                                               ; preds = %56
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #8
  %60 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode8IteratordeEv(ptr noundef nonnull align 8 dereferenceable(12) %4)
  store ptr %60, ptr %7, align 8, !tbaa !5
  %61 = load ptr, ptr %7, align 8, !tbaa !5
  %62 = call noundef i32 @_ZNK8libspirv8Bytecode6OpCode2opEv(ptr noundef nonnull align 4 dereferenceable(4) %61)
  switch i32 %62, label %325 [
    i32 19, label %63
    i32 20, label %68
    i32 32, label %69
    i32 41, label %90
    i32 42, label %90
    i32 43, label %129
    i32 44, label %166
    i32 59, label %232
    i32 55, label %280
    i32 54, label %308
  ]

63:                                               ; preds = %59
  %64 = load ptr, ptr %7, align 8, !tbaa !5
  %65 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %64, i16 noundef zeroext 1)
  %66 = load i32, ptr %65, align 4, !tbaa !34
  %67 = getelementptr inbounds %class.ShaderAnalyzer, ptr %51, i32 0, i32 0
  store i32 %66, ptr %67, align 8, !tbaa !35
  br label %326

68:                                               ; preds = %59
  br label %326

69:                                               ; preds = %59
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #8
  %70 = load ptr, ptr %7, align 8, !tbaa !5
  %71 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %70, i16 noundef zeroext 1)
  %72 = load i32, ptr %71, align 4, !tbaa !34
  store i32 %72, ptr %8, align 4, !tbaa !34
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #8
  %73 = load ptr, ptr %7, align 8, !tbaa !5
  %74 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %73, i16 noundef zeroext 2)
  %75 = load i32, ptr %74, align 4, !tbaa !34
  store i32 %75, ptr %9, align 4, !tbaa !34
  %76 = load ptr, ptr %7, align 8, !tbaa !5
  %77 = call noundef i32 @_ZNK8libspirv8Bytecode6OpCode2opEv(ptr noundef nonnull align 4 dereferenceable(4) %76)
  %78 = getelementptr inbounds %class.ShaderAnalyzer, ptr %51, i32 0, i32 20
  %79 = call noundef nonnull align 4 dereferenceable(10) ptr @_ZNSt13unordered_mapIjN14ShaderAnalyzer4TypeESt4hashIjESt8equal_toIjESaISt4pairIKjS1_EEEixERS7_(ptr noundef nonnull align 8 dereferenceable(56) %78, ptr noundef nonnull align 4 dereferenceable(4) %8)
  %80 = getelementptr inbounds %"struct.ShaderAnalyzer::Type", ptr %79, i32 0, i32 0
  store i32 %77, ptr %80, align 4, !tbaa !36
  %81 = load i32, ptr %9, align 4, !tbaa !34
  %82 = getelementptr inbounds %class.ShaderAnalyzer, ptr %51, i32 0, i32 20
  %83 = call noundef nonnull align 4 dereferenceable(10) ptr @_ZNSt13unordered_mapIjN14ShaderAnalyzer4TypeESt4hashIjESt8equal_toIjESaISt4pairIKjS1_EEEixERS7_(ptr noundef nonnull align 8 dereferenceable(56) %82, ptr noundef nonnull align 4 dereferenceable(4) %8)
  %84 = getelementptr inbounds %"struct.ShaderAnalyzer::Type", ptr %83, i32 0, i32 1
  store i32 %81, ptr %84, align 4, !tbaa !41
  %85 = load i32, ptr %9, align 4, !tbaa !34
  %86 = call noundef zeroext i16 @_ZN14ShaderAnalyzer12toAccessBitsEN3spv12StorageClassE(i32 noundef %85)
  %87 = getelementptr inbounds %class.ShaderAnalyzer, ptr %51, i32 0, i32 20
  %88 = call noundef nonnull align 4 dereferenceable(10) ptr @_ZNSt13unordered_mapIjN14ShaderAnalyzer4TypeESt4hashIjESt8equal_toIjESaISt4pairIKjS1_EEEixERS7_(ptr noundef nonnull align 8 dereferenceable(56) %87, ptr noundef nonnull align 4 dereferenceable(4) %8)
  %89 = getelementptr inbounds %"struct.ShaderAnalyzer::Type", ptr %88, i32 0, i32 2
  store i16 %86, ptr %89, align 4, !tbaa !42
  store i32 4, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #8
  br label %326

90:                                               ; preds = %59, %59
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #8
  %91 = load ptr, ptr %7, align 8, !tbaa !5
  %92 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %91, i16 noundef zeroext 2)
  %93 = load i32, ptr %92, align 4, !tbaa !34
  store i32 %93, ptr %10, align 4, !tbaa !34
  call void @llvm.lifetime.start.p0(i64 64, ptr %11) #8
  %94 = getelementptr inbounds %"struct.ShaderAnalyzer::Reg", ptr %11, i32 0, i32 0
  store i32 8, ptr %94, align 8, !tbaa !43
  %95 = getelementptr inbounds %"struct.ShaderAnalyzer::Reg", ptr %11, i32 0, i32 2
  %96 = getelementptr inbounds %"struct.ShaderAnalyzer::Value", ptr %95, i32 0, i32 0
  store i16 511, ptr %96, align 8, !tbaa !52
  %97 = getelementptr inbounds %"struct.ShaderAnalyzer::Value", ptr %95, i32 0, i32 2
  call void @llvm.memset.p0.i64(ptr align 8 %97, i8 0, i64 24, i1 false)
  call void @_ZN14ShaderAnalyzer11AccessChainC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %97) #8
  %98 = getelementptr inbounds %"struct.ShaderAnalyzer::Value", ptr %95, i32 0, i32 3
  %99 = getelementptr inbounds i32, ptr %98, i64 4
  br label %100

100:                                              ; preds = %100, %90
  %101 = phi ptr [ %98, %90 ], [ %102, %100 ]
  store i32 0, ptr %101, align 4, !tbaa !34
  %102 = getelementptr inbounds i32, ptr %101, i64 1
  %103 = icmp eq ptr %102, %99
  br i1 %103, label %104, label %100

104:                                              ; preds = %100
  %105 = getelementptr inbounds %"struct.ShaderAnalyzer::Value", ptr %95, i32 0, i32 4
  store i8 0, ptr %105, align 8, !tbaa !53
  %106 = getelementptr inbounds %"struct.ShaderAnalyzer::Reg", ptr %11, i32 0, i32 0
  store i32 0, ptr %106, align 8, !tbaa !43
  %107 = getelementptr inbounds %"struct.ShaderAnalyzer::Reg", ptr %11, i32 0, i32 2
  %108 = getelementptr inbounds %"struct.ShaderAnalyzer::Value", ptr %107, i32 0, i32 0
  store i16 1, ptr %108, align 8, !tbaa !54
  %109 = getelementptr inbounds %"struct.ShaderAnalyzer::Reg", ptr %11, i32 0, i32 2
  %110 = getelementptr inbounds %"struct.ShaderAnalyzer::Value", ptr %109, i32 0, i32 4
  store i8 1, ptr %110, align 8, !tbaa !55
  %111 = load ptr, ptr %7, align 8, !tbaa !5
  %112 = invoke noundef i32 @_ZNK8libspirv8Bytecode6OpCode2opEv(ptr noundef nonnull align 4 dereferenceable(4) %111)
          to label %113 unwind label %125

113:                                              ; preds = %104
  %114 = icmp eq i32 %112, 41
  %115 = zext i1 %114 to i64
  %116 = select i1 %114, i32 1, i32 0
  %117 = getelementptr inbounds %"struct.ShaderAnalyzer::Reg", ptr %11, i32 0, i32 2
  %118 = getelementptr inbounds %"struct.ShaderAnalyzer::Value", ptr %117, i32 0, i32 3
  %119 = getelementptr inbounds [4 x i32], ptr %118, i64 0, i64 0
  store i32 %116, ptr %119, align 8, !tbaa !34
  %120 = getelementptr inbounds %class.ShaderAnalyzer, ptr %51, i32 0, i32 19
  %121 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZNSt13unordered_mapIjN14ShaderAnalyzer3RegESt4hashIjESt8equal_toIjESaISt4pairIKjS1_EEEixERS7_(ptr noundef nonnull align 8 dereferenceable(56) %120, ptr noundef nonnull align 4 dereferenceable(4) %10)
          to label %122 unwind label %125

122:                                              ; preds = %113
  %123 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZN14ShaderAnalyzer3RegaSERKS0_(ptr noundef nonnull align 8 dereferenceable(64) %121, ptr noundef nonnull align 8 dereferenceable(64) %11)
          to label %124 unwind label %125

124:                                              ; preds = %122
  store i32 4, ptr %6, align 4
  call void @_ZN14ShaderAnalyzer3RegD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %11) #8
  call void @llvm.lifetime.end.p0(i64 64, ptr %11) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #8
  br label %326

125:                                              ; preds = %122, %113, %104
  %126 = landingpad { ptr, i32 }
          cleanup
  %127 = extractvalue { ptr, i32 } %126, 0
  store ptr %127, ptr %12, align 8
  %128 = extractvalue { ptr, i32 } %126, 1
  store i32 %128, ptr %13, align 4
  call void @_ZN14ShaderAnalyzer3RegD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %11) #8
  call void @llvm.lifetime.end.p0(i64 64, ptr %11) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #8
  br label %328

129:                                              ; preds = %59
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #8
  %130 = load ptr, ptr %7, align 8, !tbaa !5
  %131 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %130, i16 noundef zeroext 2)
  %132 = load i32, ptr %131, align 4, !tbaa !34
  store i32 %132, ptr %14, align 4, !tbaa !34
  call void @llvm.lifetime.start.p0(i64 64, ptr %15) #8
  %133 = getelementptr inbounds %"struct.ShaderAnalyzer::Reg", ptr %15, i32 0, i32 0
  store i32 8, ptr %133, align 8, !tbaa !43
  %134 = getelementptr inbounds %"struct.ShaderAnalyzer::Reg", ptr %15, i32 0, i32 2
  %135 = getelementptr inbounds %"struct.ShaderAnalyzer::Value", ptr %134, i32 0, i32 0
  store i16 511, ptr %135, align 8, !tbaa !52
  %136 = getelementptr inbounds %"struct.ShaderAnalyzer::Value", ptr %134, i32 0, i32 2
  call void @llvm.memset.p0.i64(ptr align 8 %136, i8 0, i64 24, i1 false)
  call void @_ZN14ShaderAnalyzer11AccessChainC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %136) #8
  %137 = getelementptr inbounds %"struct.ShaderAnalyzer::Value", ptr %134, i32 0, i32 3
  %138 = getelementptr inbounds i32, ptr %137, i64 4
  br label %139

139:                                              ; preds = %139, %129
  %140 = phi ptr [ %137, %129 ], [ %141, %139 ]
  store i32 0, ptr %140, align 4, !tbaa !34
  %141 = getelementptr inbounds i32, ptr %140, i64 1
  %142 = icmp eq ptr %141, %138
  br i1 %142, label %143, label %139

143:                                              ; preds = %139
  %144 = getelementptr inbounds %"struct.ShaderAnalyzer::Value", ptr %134, i32 0, i32 4
  store i8 0, ptr %144, align 8, !tbaa !53
  %145 = getelementptr inbounds %"struct.ShaderAnalyzer::Reg", ptr %15, i32 0, i32 0
  store i32 0, ptr %145, align 8, !tbaa !43
  %146 = getelementptr inbounds %"struct.ShaderAnalyzer::Reg", ptr %15, i32 0, i32 2
  %147 = getelementptr inbounds %"struct.ShaderAnalyzer::Value", ptr %146, i32 0, i32 0
  store i16 1, ptr %147, align 8, !tbaa !54
  %148 = getelementptr inbounds %"struct.ShaderAnalyzer::Reg", ptr %15, i32 0, i32 2
  %149 = getelementptr inbounds %"struct.ShaderAnalyzer::Value", ptr %148, i32 0, i32 4
  store i8 1, ptr %149, align 8, !tbaa !55
  %150 = load ptr, ptr %7, align 8, !tbaa !5
  %151 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %150, i16 noundef zeroext 3)
          to label %152 unwind label %162

152:                                              ; preds = %143
  %153 = load i32, ptr %151, align 4, !tbaa !34
  %154 = getelementptr inbounds %"struct.ShaderAnalyzer::Reg", ptr %15, i32 0, i32 2
  %155 = getelementptr inbounds %"struct.ShaderAnalyzer::Value", ptr %154, i32 0, i32 3
  %156 = getelementptr inbounds [4 x i32], ptr %155, i64 0, i64 0
  store i32 %153, ptr %156, align 8, !tbaa !34
  %157 = getelementptr inbounds %class.ShaderAnalyzer, ptr %51, i32 0, i32 19
  %158 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZNSt13unordered_mapIjN14ShaderAnalyzer3RegESt4hashIjESt8equal_toIjESaISt4pairIKjS1_EEEixERS7_(ptr noundef nonnull align 8 dereferenceable(56) %157, ptr noundef nonnull align 4 dereferenceable(4) %14)
          to label %159 unwind label %162

159:                                              ; preds = %152
  %160 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZN14ShaderAnalyzer3RegaSERKS0_(ptr noundef nonnull align 8 dereferenceable(64) %158, ptr noundef nonnull align 8 dereferenceable(64) %15)
          to label %161 unwind label %162

161:                                              ; preds = %159
  store i32 4, ptr %6, align 4
  call void @_ZN14ShaderAnalyzer3RegD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %15) #8
  call void @llvm.lifetime.end.p0(i64 64, ptr %15) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #8
  br label %326

162:                                              ; preds = %159, %152, %143
  %163 = landingpad { ptr, i32 }
          cleanup
  %164 = extractvalue { ptr, i32 } %163, 0
  store ptr %164, ptr %12, align 8
  %165 = extractvalue { ptr, i32 } %163, 1
  store i32 %165, ptr %13, align 4
  call void @_ZN14ShaderAnalyzer3RegD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %15) #8
  call void @llvm.lifetime.end.p0(i64 64, ptr %15) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #8
  br label %328

166:                                              ; preds = %59
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #8
  %167 = load ptr, ptr %7, align 8, !tbaa !5
  %168 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %167, i16 noundef zeroext 2)
  %169 = load i32, ptr %168, align 4, !tbaa !34
  store i32 %169, ptr %16, align 4, !tbaa !34
  call void @llvm.lifetime.start.p0(i64 64, ptr %17) #8
  %170 = getelementptr inbounds %"struct.ShaderAnalyzer::Reg", ptr %17, i32 0, i32 0
  store i32 8, ptr %170, align 8, !tbaa !43
  %171 = getelementptr inbounds %"struct.ShaderAnalyzer::Reg", ptr %17, i32 0, i32 2
  %172 = getelementptr inbounds %"struct.ShaderAnalyzer::Value", ptr %171, i32 0, i32 0
  store i16 511, ptr %172, align 8, !tbaa !52
  %173 = getelementptr inbounds %"struct.ShaderAnalyzer::Value", ptr %171, i32 0, i32 2
  call void @llvm.memset.p0.i64(ptr align 8 %173, i8 0, i64 24, i1 false)
  call void @_ZN14ShaderAnalyzer11AccessChainC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %173) #8
  %174 = getelementptr inbounds %"struct.ShaderAnalyzer::Value", ptr %171, i32 0, i32 3
  %175 = getelementptr inbounds i32, ptr %174, i64 4
  br label %176

176:                                              ; preds = %176, %166
  %177 = phi ptr [ %174, %166 ], [ %178, %176 ]
  store i32 0, ptr %177, align 4, !tbaa !34
  %178 = getelementptr inbounds i32, ptr %177, i64 1
  %179 = icmp eq ptr %178, %175
  br i1 %179, label %180, label %176

180:                                              ; preds = %176
  %181 = getelementptr inbounds %"struct.ShaderAnalyzer::Value", ptr %171, i32 0, i32 4
  store i8 0, ptr %181, align 8, !tbaa !53
  %182 = getelementptr inbounds %"struct.ShaderAnalyzer::Reg", ptr %17, i32 0, i32 0
  store i32 0, ptr %182, align 8, !tbaa !43
  %183 = getelementptr inbounds %"struct.ShaderAnalyzer::Reg", ptr %17, i32 0, i32 2
  %184 = getelementptr inbounds %"struct.ShaderAnalyzer::Value", ptr %183, i32 0, i32 0
  store i16 1, ptr %184, align 8, !tbaa !54
  %185 = getelementptr inbounds %"struct.ShaderAnalyzer::Reg", ptr %17, i32 0, i32 2
  %186 = getelementptr inbounds %"struct.ShaderAnalyzer::Value", ptr %185, i32 0, i32 4
  store i8 1, ptr %186, align 8, !tbaa !55
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #8
  store i32 3, ptr %18, align 4, !tbaa !34
  br label %187

187:                                              ; preds = %218, %180
  %188 = load i32, ptr %18, align 4, !tbaa !34
  %189 = load ptr, ptr %7, align 8, !tbaa !5
  %190 = invoke noundef zeroext i16 @_ZNK8libspirv8Bytecode6OpCode6lengthEv(ptr noundef nonnull align 4 dereferenceable(4) %189)
          to label %191 unwind label %195

191:                                              ; preds = %187
  %192 = zext i16 %190 to i32
  %193 = icmp ult i32 %188, %192
  br i1 %193, label %199, label %194

194:                                              ; preds = %191
  store i32 5, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #8
  br label %221

195:                                              ; preds = %205, %199, %187
  %196 = landingpad { ptr, i32 }
          cleanup
  %197 = extractvalue { ptr, i32 } %196, 0
  store ptr %197, ptr %12, align 8
  %198 = extractvalue { ptr, i32 } %196, 1
  store i32 %198, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #8
  br label %231

199:                                              ; preds = %191
  %200 = getelementptr inbounds %class.ShaderAnalyzer, ptr %51, i32 0, i32 19
  %201 = load ptr, ptr %7, align 8, !tbaa !5
  %202 = load i32, ptr %18, align 4, !tbaa !34
  %203 = trunc i32 %202 to i16
  %204 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %201, i16 noundef zeroext %203)
          to label %205 unwind label %195

205:                                              ; preds = %199
  %206 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZNSt13unordered_mapIjN14ShaderAnalyzer3RegESt4hashIjESt8equal_toIjESaISt4pairIKjS1_EEEixERS7_(ptr noundef nonnull align 8 dereferenceable(56) %200, ptr noundef nonnull align 4 dereferenceable(4) %204)
          to label %207 unwind label %195

207:                                              ; preds = %205
  %208 = getelementptr inbounds %"struct.ShaderAnalyzer::Reg", ptr %206, i32 0, i32 2
  %209 = getelementptr inbounds %"struct.ShaderAnalyzer::Value", ptr %208, i32 0, i32 3
  %210 = getelementptr inbounds [4 x i32], ptr %209, i64 0, i64 0
  %211 = load i32, ptr %210, align 8, !tbaa !34
  %212 = getelementptr inbounds %"struct.ShaderAnalyzer::Reg", ptr %17, i32 0, i32 2
  %213 = getelementptr inbounds %"struct.ShaderAnalyzer::Value", ptr %212, i32 0, i32 3
  %214 = load i32, ptr %18, align 4, !tbaa !34
  %215 = sub i32 %214, 3
  %216 = zext i32 %215 to i64
  %217 = getelementptr inbounds [4 x i32], ptr %213, i64 0, i64 %216
  store i32 %211, ptr %217, align 4, !tbaa !34
  br label %218

218:                                              ; preds = %207
  %219 = load i32, ptr %18, align 4, !tbaa !34
  %220 = add i32 %219, 1
  store i32 %220, ptr %18, align 4, !tbaa !34
  br label %187, !llvm.loop !56

221:                                              ; preds = %194
  %222 = getelementptr inbounds %class.ShaderAnalyzer, ptr %51, i32 0, i32 19
  %223 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZNSt13unordered_mapIjN14ShaderAnalyzer3RegESt4hashIjESt8equal_toIjESaISt4pairIKjS1_EEEixERS7_(ptr noundef nonnull align 8 dereferenceable(56) %222, ptr noundef nonnull align 4 dereferenceable(4) %16)
          to label %224 unwind label %227

224:                                              ; preds = %221
  %225 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZN14ShaderAnalyzer3RegaSERKS0_(ptr noundef nonnull align 8 dereferenceable(64) %223, ptr noundef nonnull align 8 dereferenceable(64) %17)
          to label %226 unwind label %227

226:                                              ; preds = %224
  store i32 4, ptr %6, align 4
  call void @_ZN14ShaderAnalyzer3RegD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %17) #8
  call void @llvm.lifetime.end.p0(i64 64, ptr %17) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #8
  br label %326

227:                                              ; preds = %224, %221
  %228 = landingpad { ptr, i32 }
          cleanup
  %229 = extractvalue { ptr, i32 } %228, 0
  store ptr %229, ptr %12, align 8
  %230 = extractvalue { ptr, i32 } %228, 1
  store i32 %230, ptr %13, align 4
  br label %231

231:                                              ; preds = %227, %195
  call void @_ZN14ShaderAnalyzer3RegD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %17) #8
  call void @llvm.lifetime.end.p0(i64 64, ptr %17) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #8
  br label %328

232:                                              ; preds = %59
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #8
  %233 = load ptr, ptr %7, align 8, !tbaa !5
  %234 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %233, i16 noundef zeroext 2)
  %235 = load i32, ptr %234, align 4, !tbaa !34
  store i32 %235, ptr %19, align 4, !tbaa !34
  call void @llvm.lifetime.start.p0(i64 64, ptr %20) #8
  %236 = getelementptr inbounds %"struct.ShaderAnalyzer::Reg", ptr %20, i32 0, i32 0
  store i32 8, ptr %236, align 8, !tbaa !43
  %237 = getelementptr inbounds %"struct.ShaderAnalyzer::Reg", ptr %20, i32 0, i32 2
  %238 = getelementptr inbounds %"struct.ShaderAnalyzer::Value", ptr %237, i32 0, i32 0
  store i16 511, ptr %238, align 8, !tbaa !52
  %239 = getelementptr inbounds %"struct.ShaderAnalyzer::Value", ptr %237, i32 0, i32 2
  call void @llvm.memset.p0.i64(ptr align 8 %239, i8 0, i64 24, i1 false)
  call void @_ZN14ShaderAnalyzer11AccessChainC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %239) #8
  %240 = getelementptr inbounds %"struct.ShaderAnalyzer::Value", ptr %237, i32 0, i32 3
  %241 = getelementptr inbounds i32, ptr %240, i64 4
  br label %242

242:                                              ; preds = %242, %232
  %243 = phi ptr [ %240, %232 ], [ %244, %242 ]
  store i32 0, ptr %243, align 4, !tbaa !34
  %244 = getelementptr inbounds i32, ptr %243, i64 1
  %245 = icmp eq ptr %244, %241
  br i1 %245, label %246, label %242

246:                                              ; preds = %242
  %247 = getelementptr inbounds %"struct.ShaderAnalyzer::Value", ptr %237, i32 0, i32 4
  store i8 0, ptr %247, align 8, !tbaa !53
  %248 = load ptr, ptr %7, align 8, !tbaa !5
  %249 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %248, i16 noundef zeroext 3)
          to label %250 unwind label %271

250:                                              ; preds = %246
  %251 = load i32, ptr %249, align 4, !tbaa !34
  %252 = getelementptr inbounds %"struct.ShaderAnalyzer::Reg", ptr %20, i32 0, i32 0
  store i32 %251, ptr %252, align 8, !tbaa !43
  %253 = getelementptr inbounds %"struct.ShaderAnalyzer::Reg", ptr %20, i32 0, i32 2
  %254 = getelementptr inbounds %"struct.ShaderAnalyzer::Value", ptr %253, i32 0, i32 0
  store i16 0, ptr %254, align 8, !tbaa !54
  call void @llvm.lifetime.start.p0(i64 24, ptr %21) #8
  %255 = load i32, ptr %19, align 4, !tbaa !34
  invoke void @_ZN14ShaderAnalyzer11AccessChainC2Ej(ptr noundef nonnull align 8 dereferenceable(24) %21, i32 noundef %255)
          to label %256 unwind label %275

256:                                              ; preds = %250
  %257 = getelementptr inbounds %"struct.ShaderAnalyzer::Reg", ptr %20, i32 0, i32 2
  %258 = getelementptr inbounds %"struct.ShaderAnalyzer::Value", ptr %257, i32 0, i32 2
  %259 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN14ShaderAnalyzer11AccessChainaSEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %258, ptr noundef nonnull align 8 dereferenceable(24) %21) #8
  call void @_ZN14ShaderAnalyzer11AccessChainD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %21) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %21) #8
  %260 = getelementptr inbounds %class.ShaderAnalyzer, ptr %51, i32 0, i32 19
  %261 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZNSt13unordered_mapIjN14ShaderAnalyzer3RegESt4hashIjESt8equal_toIjESaISt4pairIKjS1_EEEixERS7_(ptr noundef nonnull align 8 dereferenceable(56) %260, ptr noundef nonnull align 4 dereferenceable(4) %19)
          to label %262 unwind label %271

262:                                              ; preds = %256
  %263 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZN14ShaderAnalyzer3RegaSERKS0_(ptr noundef nonnull align 8 dereferenceable(64) %261, ptr noundef nonnull align 8 dereferenceable(64) %20)
          to label %264 unwind label %271

264:                                              ; preds = %262
  %265 = getelementptr inbounds %"struct.ShaderAnalyzer::Reg", ptr %20, i32 0, i32 0
  %266 = load i32, ptr %265, align 8, !tbaa !43
  %267 = getelementptr inbounds %class.ShaderAnalyzer, ptr %51, i32 0, i32 21
  %268 = invoke noundef nonnull align 8 dereferenceable(72) ptr @_ZNSt13unordered_mapIjN14ShaderAnalyzer3VarESt4hashIjESt8equal_toIjESaISt4pairIKjS1_EEEixERS7_(ptr noundef nonnull align 8 dereferenceable(56) %267, ptr noundef nonnull align 4 dereferenceable(4) %19)
          to label %269 unwind label %271

269:                                              ; preds = %264
  %270 = getelementptr inbounds %"struct.ShaderAnalyzer::Var", ptr %268, i32 0, i32 0
  store i32 %266, ptr %270, align 8, !tbaa !58
  store i32 4, ptr %6, align 4
  call void @_ZN14ShaderAnalyzer3RegD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %20) #8
  call void @llvm.lifetime.end.p0(i64 64, ptr %20) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #8
  br label %326

271:                                              ; preds = %264, %262, %256, %246
  %272 = landingpad { ptr, i32 }
          cleanup
  %273 = extractvalue { ptr, i32 } %272, 0
  store ptr %273, ptr %12, align 8
  %274 = extractvalue { ptr, i32 } %272, 1
  store i32 %274, ptr %13, align 4
  br label %279

275:                                              ; preds = %250
  %276 = landingpad { ptr, i32 }
          cleanup
  %277 = extractvalue { ptr, i32 } %276, 0
  store ptr %277, ptr %12, align 8
  %278 = extractvalue { ptr, i32 } %276, 1
  store i32 %278, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %21) #8
  br label %279

279:                                              ; preds = %275, %271
  call void @_ZN14ShaderAnalyzer3RegD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %20) #8
  call void @llvm.lifetime.end.p0(i64 64, ptr %20) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #8
  br label %328

280:                                              ; preds = %59
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #8
  %281 = load ptr, ptr %7, align 8, !tbaa !5
  %282 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %281, i16 noundef zeroext 2)
  %283 = load i32, ptr %282, align 4, !tbaa !34
  store i32 %283, ptr %22, align 4, !tbaa !34
  call void @llvm.lifetime.start.p0(i64 64, ptr %23) #8
  %284 = getelementptr inbounds %"struct.ShaderAnalyzer::Reg", ptr %23, i32 0, i32 0
  store i32 8, ptr %284, align 8, !tbaa !43
  %285 = getelementptr inbounds %"struct.ShaderAnalyzer::Reg", ptr %23, i32 0, i32 2
  %286 = getelementptr inbounds %"struct.ShaderAnalyzer::Value", ptr %285, i32 0, i32 0
  store i16 511, ptr %286, align 8, !tbaa !52
  %287 = getelementptr inbounds %"struct.ShaderAnalyzer::Value", ptr %285, i32 0, i32 2
  call void @llvm.memset.p0.i64(ptr align 8 %287, i8 0, i64 24, i1 false)
  call void @_ZN14ShaderAnalyzer11AccessChainC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %287) #8
  %288 = getelementptr inbounds %"struct.ShaderAnalyzer::Value", ptr %285, i32 0, i32 3
  %289 = getelementptr inbounds i32, ptr %288, i64 4
  br label %290

290:                                              ; preds = %290, %280
  %291 = phi ptr [ %288, %280 ], [ %292, %290 ]
  store i32 0, ptr %291, align 4, !tbaa !34
  %292 = getelementptr inbounds i32, ptr %291, i64 1
  %293 = icmp eq ptr %292, %289
  br i1 %293, label %294, label %290

294:                                              ; preds = %290
  %295 = getelementptr inbounds %"struct.ShaderAnalyzer::Value", ptr %285, i32 0, i32 4
  store i8 0, ptr %295, align 8, !tbaa !53
  %296 = getelementptr inbounds %"struct.ShaderAnalyzer::Reg", ptr %23, i32 0, i32 0
  store i32 6, ptr %296, align 8, !tbaa !43
  %297 = getelementptr inbounds %"struct.ShaderAnalyzer::Reg", ptr %23, i32 0, i32 2
  %298 = getelementptr inbounds %"struct.ShaderAnalyzer::Value", ptr %297, i32 0, i32 0
  store i16 16, ptr %298, align 8, !tbaa !54
  %299 = getelementptr inbounds %class.ShaderAnalyzer, ptr %51, i32 0, i32 19
  %300 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZNSt13unordered_mapIjN14ShaderAnalyzer3RegESt4hashIjESt8equal_toIjESaISt4pairIKjS1_EEEixERS7_(ptr noundef nonnull align 8 dereferenceable(56) %299, ptr noundef nonnull align 4 dereferenceable(4) %22)
          to label %301 unwind label %304

301:                                              ; preds = %294
  %302 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZN14ShaderAnalyzer3RegaSERKS0_(ptr noundef nonnull align 8 dereferenceable(64) %300, ptr noundef nonnull align 8 dereferenceable(64) %23)
          to label %303 unwind label %304

303:                                              ; preds = %301
  store i32 4, ptr %6, align 4
  call void @_ZN14ShaderAnalyzer3RegD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %23) #8
  call void @llvm.lifetime.end.p0(i64 64, ptr %23) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #8
  br label %326

304:                                              ; preds = %301, %294
  %305 = landingpad { ptr, i32 }
          cleanup
  %306 = extractvalue { ptr, i32 } %305, 0
  store ptr %306, ptr %12, align 8
  %307 = extractvalue { ptr, i32 } %305, 1
  store i32 %307, ptr %13, align 4
  call void @_ZN14ShaderAnalyzer3RegD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %23) #8
  call void @llvm.lifetime.end.p0(i64 64, ptr %23) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #8
  br label %328

308:                                              ; preds = %59
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #8
  %309 = getelementptr inbounds %class.ShaderAnalyzer, ptr %51, i32 0, i32 22
  %310 = load ptr, ptr %7, align 8, !tbaa !5
  %311 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %310, i16 noundef zeroext 2)
  %312 = call noundef nonnull align 8 dereferenceable(28) ptr @_ZNSt13unordered_mapIjN14ShaderAnalyzer8FunctionESt4hashIjESt8equal_toIjESaISt4pairIKjS1_EEEixERS7_(ptr noundef nonnull align 8 dereferenceable(56) %309, ptr noundef nonnull align 4 dereferenceable(4) %311)
  store ptr %312, ptr %24, align 8, !tbaa !5
  %313 = getelementptr inbounds %class.ShaderAnalyzer, ptr %51, i32 0, i32 17
  %314 = load ptr, ptr %313, align 8, !tbaa !9
  %315 = load ptr, ptr %7, align 8, !tbaa !5
  %316 = call noundef i64 @_ZNK8libspirv8Bytecode8toOffsetERKNS0_6OpCodeE(ptr noundef nonnull align 8 dereferenceable(20) %314, ptr noundef nonnull align 4 dereferenceable(4) %315)
  %317 = trunc i64 %316 to i32
  %318 = load ptr, ptr %24, align 8, !tbaa !5
  %319 = getelementptr inbounds %"struct.ShaderAnalyzer::Function", ptr %318, i32 0, i32 0
  store i32 %317, ptr %319, align 8, !tbaa !60
  %320 = load ptr, ptr %7, align 8, !tbaa !5
  %321 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %320, i16 noundef zeroext 1)
  %322 = load i32, ptr %321, align 4, !tbaa !34
  %323 = load ptr, ptr %24, align 8, !tbaa !5
  %324 = getelementptr inbounds %"struct.ShaderAnalyzer::Function", ptr %323, i32 0, i32 9
  store i32 %322, ptr %324, align 8, !tbaa !62
  store i32 4, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #8
  br label %326

325:                                              ; preds = %59
  br label %326

326:                                              ; preds = %325, %308, %303, %269, %226, %161, %124, %69, %68, %63
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #8
  br label %327

327:                                              ; preds = %326
  call void @_ZN8libspirv8Bytecode8IteratorppEv(ptr noundef nonnull align 8 dereferenceable(12) %4)
  br label %56

328:                                              ; preds = %304, %279, %231, %162, %125
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %5) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %4) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %3) #8
  br label %630

329:                                              ; preds = %58
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #8
  store i32 3, ptr %25, align 4, !tbaa !34
  %330 = getelementptr inbounds %class.ShaderAnalyzer, ptr %51, i32 0, i32 10
  store i32 0, ptr %330, align 8, !tbaa !63
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #8
  %331 = getelementptr inbounds %class.ShaderAnalyzer, ptr %51, i32 0, i32 17
  %332 = load ptr, ptr %331, align 8, !tbaa !9
  store ptr %332, ptr %26, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr %27) #8
  %333 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN8libspirv15MutableBytecode5beginEv(ptr dead_on_unwind writable sret(%"struct.libspirv::MutableBytecode::Iterator") align 8 %27, ptr noundef nonnull align 8 dereferenceable(48) %333)
  call void @llvm.lifetime.start.p0(i64 24, ptr %28) #8
  %334 = load ptr, ptr %26, align 8, !tbaa !5
  call void @_ZN8libspirv15MutableBytecode3endEv(ptr dead_on_unwind writable sret(%"struct.libspirv::MutableBytecode::Iterator") align 8 %28, ptr noundef nonnull align 8 dereferenceable(48) %334)
  br label %335

335:                                              ; preds = %547, %329
  %336 = call noundef zeroext i1 @_ZN8libspirvneERKNS_8Bytecode8IteratorES3_(ptr noundef nonnull align 8 dereferenceable(12) %27, ptr noundef nonnull align 8 dereferenceable(12) %28)
  br i1 %336, label %338, label %337

337:                                              ; preds = %335
  store i32 8, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %28) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %27) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #8
  br label %548

338:                                              ; preds = %335
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #8
  %339 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode8IteratordeEv(ptr noundef nonnull align 8 dereferenceable(12) %27)
  store ptr %339, ptr %29, align 8, !tbaa !5
  %340 = load ptr, ptr %29, align 8, !tbaa !5
  %341 = call noundef i32 @_ZNK8libspirv8Bytecode6OpCode2opEv(ptr noundef nonnull align 4 dereferenceable(4) %340)
  switch i32 %341, label %545 [
    i32 5, label %342
    i32 15, label %381
    i32 71, label %399
    i32 72, label %475
    i32 16, label %506
  ]

342:                                              ; preds = %338
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #8
  %343 = getelementptr inbounds %class.ShaderAnalyzer, ptr %51, i32 0, i32 22
  %344 = load ptr, ptr %29, align 8, !tbaa !5
  %345 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %344, i16 noundef zeroext 1)
  %346 = call ptr @_ZNSt13unordered_mapIjN14ShaderAnalyzer8FunctionESt4hashIjESt8equal_toIjESaISt4pairIKjS1_EEE4findERS7_(ptr noundef nonnull align 8 dereferenceable(56) %343, ptr noundef nonnull align 4 dereferenceable(4) %345)
  %347 = getelementptr inbounds %"struct.std::__detail::_Node_iterator", ptr %30, i32 0, i32 0
  %348 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %347, i32 0, i32 0
  store ptr %346, ptr %348, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #8
  %349 = getelementptr inbounds %class.ShaderAnalyzer, ptr %51, i32 0, i32 22
  %350 = call ptr @_ZNSt13unordered_mapIjN14ShaderAnalyzer8FunctionESt4hashIjESt8equal_toIjESaISt4pairIKjS1_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %349) #8
  %351 = getelementptr inbounds %"struct.std::__detail::_Node_iterator", ptr %31, i32 0, i32 0
  %352 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %351, i32 0, i32 0
  store ptr %350, ptr %352, align 8
  %353 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseISt4pairIKjN14ShaderAnalyzer8FunctionEELb0EEES8_(ptr noundef nonnull align 8 dereferenceable(8) %30, ptr noundef nonnull align 8 dereferenceable(8) %31) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #8
  br i1 %353, label %354, label %361

354:                                              ; preds = %342
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #8
  %355 = call noundef ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKjN14ShaderAnalyzer8FunctionEELb0ELb0EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %30) #8
  %356 = getelementptr inbounds %"struct.std::pair", ptr %355, i32 0, i32 2
  store ptr %356, ptr %32, align 8, !tbaa !5
  %357 = load ptr, ptr %29, align 8, !tbaa !5
  %358 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %357, i16 noundef zeroext 2)
  %359 = load ptr, ptr %32, align 8, !tbaa !5
  %360 = getelementptr inbounds %"struct.ShaderAnalyzer::Function", ptr %359, i32 0, i32 8
  store ptr %358, ptr %360, align 8, !tbaa !64
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #8
  br label %361

361:                                              ; preds = %354, %342
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #8
  %362 = getelementptr inbounds %class.ShaderAnalyzer, ptr %51, i32 0, i32 21
  %363 = load ptr, ptr %29, align 8, !tbaa !5
  %364 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %363, i16 noundef zeroext 1)
  %365 = call ptr @_ZNSt13unordered_mapIjN14ShaderAnalyzer3VarESt4hashIjESt8equal_toIjESaISt4pairIKjS1_EEE4findERS7_(ptr noundef nonnull align 8 dereferenceable(56) %362, ptr noundef nonnull align 4 dereferenceable(4) %364)
  %366 = getelementptr inbounds %"struct.std::__detail::_Node_iterator.83", ptr %33, i32 0, i32 0
  %367 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base.84", ptr %366, i32 0, i32 0
  store ptr %365, ptr %367, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #8
  %368 = getelementptr inbounds %class.ShaderAnalyzer, ptr %51, i32 0, i32 21
  %369 = call ptr @_ZNSt13unordered_mapIjN14ShaderAnalyzer3VarESt4hashIjESt8equal_toIjESaISt4pairIKjS1_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %368) #8
  %370 = getelementptr inbounds %"struct.std::__detail::_Node_iterator.83", ptr %34, i32 0, i32 0
  %371 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base.84", ptr %370, i32 0, i32 0
  store ptr %369, ptr %371, align 8
  %372 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseISt4pairIKjN14ShaderAnalyzer3VarEELb0EEES8_(ptr noundef nonnull align 8 dereferenceable(8) %33, ptr noundef nonnull align 8 dereferenceable(8) %34) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #8
  br i1 %372, label %373, label %380

373:                                              ; preds = %361
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #8
  %374 = call noundef ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKjN14ShaderAnalyzer3VarEELb0ELb0EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %33) #8
  %375 = getelementptr inbounds %"struct.std::pair.85", ptr %374, i32 0, i32 1
  store ptr %375, ptr %35, align 8, !tbaa !5
  %376 = load ptr, ptr %29, align 8, !tbaa !5
  %377 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %376, i16 noundef zeroext 2)
  %378 = load ptr, ptr %35, align 8, !tbaa !5
  %379 = getelementptr inbounds %"struct.ShaderAnalyzer::Var", ptr %378, i32 0, i32 3
  store ptr %377, ptr %379, align 8, !tbaa !65
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #8
  br label %380

380:                                              ; preds = %373, %361
  store i32 10, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #8
  br label %546

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

393:                                              ; preds = %381
  %394 = load ptr, ptr %29, align 8, !tbaa !5
  %395 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %394, i16 noundef zeroext 2)
  %396 = load i32, ptr %395, align 4, !tbaa !34
  %397 = getelementptr inbounds %class.ShaderAnalyzer, ptr %51, i32 0, i32 9
  store i32 %396, ptr %397, align 4, !tbaa !68
  br label %398

398:                                              ; preds = %393, %381
  call void @llvm.lifetime.end.p0(i64 16, ptr %36) #8
  br label %399

399:                                              ; preds = %398, %338
  %400 = load ptr, ptr %29, align 8, !tbaa !5
  %401 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %400, i16 noundef zeroext 2)
  %402 = load i32, ptr %401, align 4, !tbaa !34
  %403 = icmp eq i32 %402, 11
  br i1 %403, label %404, label %414

404:                                              ; preds = %399
  %405 = load ptr, ptr %29, align 8, !tbaa !5
  %406 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %405, i16 noundef zeroext 3)
  %407 = load i32, ptr %406, align 4, !tbaa !34
  %408 = icmp eq i32 %407, 27
  br i1 %408, label %409, label %414

409:                                              ; preds = %404
  %410 = load ptr, ptr %29, align 8, !tbaa !5
  %411 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %410, i16 noundef zeroext 1)
  %412 = load i32, ptr %411, align 4, !tbaa !34
  %413 = getelementptr inbounds %class.ShaderAnalyzer, ptr %51, i32 0, i32 1
  store i32 %412, ptr %413, align 4, !tbaa !69
  br label %414

414:                                              ; preds = %409, %404, %399
  %415 = load ptr, ptr %29, align 8, !tbaa !5
  %416 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %415, i16 noundef zeroext 2)
  %417 = load i32, ptr %416, align 4, !tbaa !34
  %418 = icmp eq i32 %417, 11
  br i1 %418, label %419, label %429

419:                                              ; preds = %414
  %420 = load ptr, ptr %29, align 8, !tbaa !5
  %421 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %420, i16 noundef zeroext 3)
  %422 = load i32, ptr %421, align 4, !tbaa !34
  %423 = icmp eq i32 %422, 28
  br i1 %423, label %424, label %429

424:                                              ; preds = %419
  %425 = load ptr, ptr %29, align 8, !tbaa !5
  %426 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %425, i16 noundef zeroext 1)
  %427 = load i32, ptr %426, align 4, !tbaa !34
  %428 = getelementptr inbounds %class.ShaderAnalyzer, ptr %51, i32 0, i32 2
  store i32 %427, ptr %428, align 8, !tbaa !70
  br label %429

429:                                              ; preds = %424, %419, %414
  %430 = load ptr, ptr %29, align 8, !tbaa !5
  %431 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %430, i16 noundef zeroext 2)
  %432 = load i32, ptr %431, align 4, !tbaa !34
  %433 = icmp eq i32 %432, 11
  br i1 %433, label %434, label %444

434:                                              ; preds = %429
  %435 = load ptr, ptr %29, align 8, !tbaa !5
  %436 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %435, i16 noundef zeroext 3)
  %437 = load i32, ptr %436, align 4, !tbaa !34
  %438 = icmp eq i32 %437, 26
  br i1 %438, label %439, label %444

439:                                              ; preds = %434
  %440 = load ptr, ptr %29, align 8, !tbaa !5
  %441 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %440, i16 noundef zeroext 1)
  %442 = load i32, ptr %441, align 4, !tbaa !34
  %443 = getelementptr inbounds %class.ShaderAnalyzer, ptr %51, i32 0, i32 3
  store i32 %442, ptr %443, align 4, !tbaa !71
  br label %444

444:                                              ; preds = %439, %434, %429
  %445 = load ptr, ptr %29, align 8, !tbaa !5
  %446 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %445, i16 noundef zeroext 2)
  %447 = load i32, ptr %446, align 4, !tbaa !34
  %448 = icmp eq i32 %447, 11
  br i1 %448, label %449, label %459

449:                                              ; preds = %444
  %450 = load ptr, ptr %29, align 8, !tbaa !5
  %451 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %450, i16 noundef zeroext 3)
  %452 = load i32, ptr %451, align 4, !tbaa !34
  %453 = icmp eq i32 %452, 5276
  br i1 %453, label %454, label %459

454:                                              ; preds = %449
  %455 = load ptr, ptr %29, align 8, !tbaa !5
  %456 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %455, i16 noundef zeroext 1)
  %457 = load i32, ptr %456, align 4, !tbaa !34
  %458 = getelementptr inbounds %class.ShaderAnalyzer, ptr %51, i32 0, i32 4
  store i32 %457, ptr %458, align 8, !tbaa !72
  br label %459

459:                                              ; preds = %454, %449, %444
  %460 = load ptr, ptr %29, align 8, !tbaa !5
  %461 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %460, i16 noundef zeroext 2)
  %462 = load i32, ptr %461, align 4, !tbaa !34
  %463 = icmp eq i32 %462, 11
  br i1 %463, label %464, label %474

464:                                              ; preds = %459
  %465 = load ptr, ptr %29, align 8, !tbaa !5
  %466 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %465, i16 noundef zeroext 3)
  %467 = load i32, ptr %466, align 4, !tbaa !34
  %468 = icmp eq i32 %467, 5275
  br i1 %468, label %469, label %474

469:                                              ; preds = %464
  %470 = load ptr, ptr %29, align 8, !tbaa !5
  %471 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %470, i16 noundef zeroext 1)
  %472 = load i32, ptr %471, align 4, !tbaa !34
  %473 = getelementptr inbounds %class.ShaderAnalyzer, ptr %51, i32 0, i32 5
  store i32 %472, ptr %473, align 4, !tbaa !73
  br label %474

474:                                              ; preds = %469, %464, %459
  br label %546

475:                                              ; preds = %338
  %476 = load ptr, ptr %29, align 8, !tbaa !5
  %477 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %476, i16 noundef zeroext 3)
  %478 = load i32, ptr %477, align 4, !tbaa !34
  %479 = icmp eq i32 %478, 11
  br i1 %479, label %480, label %490

480:                                              ; preds = %475
  %481 = load ptr, ptr %29, align 8, !tbaa !5
  %482 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %481, i16 noundef zeroext 4)
  %483 = load i32, ptr %482, align 4, !tbaa !34
  %484 = icmp eq i32 %483, 0
  br i1 %484, label %485, label %490

485:                                              ; preds = %480
  %486 = load ptr, ptr %29, align 8, !tbaa !5
  %487 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %486, i16 noundef zeroext 1)
  %488 = load i32, ptr %487, align 4, !tbaa !34
  %489 = getelementptr inbounds %class.ShaderAnalyzer, ptr %51, i32 0, i32 6
  store i32 %488, ptr %489, align 8, !tbaa !74
  br label %490

490:                                              ; preds = %485, %480, %475
  %491 = load ptr, ptr %29, align 8, !tbaa !5
  %492 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %491, i16 noundef zeroext 3)
  %493 = load i32, ptr %492, align 4, !tbaa !34
  %494 = icmp eq i32 %493, 11
  br i1 %494, label %495, label %505

495:                                              ; preds = %490
  %496 = load ptr, ptr %29, align 8, !tbaa !5
  %497 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %496, i16 noundef zeroext 4)
  %498 = load i32, ptr %497, align 4, !tbaa !34
  %499 = icmp eq i32 %498, 1
  br i1 %499, label %500, label %505

500:                                              ; preds = %495
  %501 = load ptr, ptr %29, align 8, !tbaa !5
  %502 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %501, i16 noundef zeroext 1)
  %503 = load i32, ptr %502, align 4, !tbaa !34
  %504 = getelementptr inbounds %class.ShaderAnalyzer, ptr %51, i32 0, i32 8
  store i32 %503, ptr %504, align 8, !tbaa !75
  br label %505

505:                                              ; preds = %500, %495, %490
  br label %546

506:                                              ; preds = %338
  %507 = load ptr, ptr %29, align 8, !tbaa !5
  %508 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %507, i16 noundef zeroext 2)
  %509 = load i32, ptr %508, align 4, !tbaa !34
  %510 = icmp eq i32 %509, 17
  br i1 %510, label %511, label %516

511:                                              ; preds = %506
  %512 = load ptr, ptr %29, align 8, !tbaa !5
  %513 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %512, i16 noundef zeroext 3)
  %514 = load i32, ptr %513, align 4, !tbaa !34
  %515 = getelementptr inbounds %class.ShaderAnalyzer, ptr %51, i32 0, i32 10
  store i32 %514, ptr %515, align 8, !tbaa !63
  br label %516

516:                                              ; preds = %511, %506
  %517 = load ptr, ptr %29, align 8, !tbaa !5
  %518 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %517, i16 noundef zeroext 2)
  %519 = load i32, ptr %518, align 4, !tbaa !34
  %520 = icmp eq i32 %519, 5270
  br i1 %520, label %521, label %526

521:                                              ; preds = %516
  %522 = load ptr, ptr %29, align 8, !tbaa !5
  %523 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %522, i16 noundef zeroext 3)
  %524 = load i32, ptr %523, align 4, !tbaa !34
  %525 = getelementptr inbounds %class.ShaderAnalyzer, ptr %51, i32 0, i32 11
  store i32 %524, ptr %525, align 4, !tbaa !76
  br label %526

526:                                              ; preds = %521, %516
  %527 = load ptr, ptr %29, align 8, !tbaa !5
  %528 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %527, i16 noundef zeroext 2)
  %529 = load i32, ptr %528, align 4, !tbaa !34
  %530 = icmp eq i32 %529, 5298
  br i1 %530, label %531, label %532

531:                                              ; preds = %526
  store i32 3, ptr %25, align 4, !tbaa !34
  br label %532

532:                                              ; preds = %531, %526
  %533 = load ptr, ptr %29, align 8, !tbaa !5
  %534 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %533, i16 noundef zeroext 2)
  %535 = load i32, ptr %534, align 4, !tbaa !34
  %536 = icmp eq i32 %535, 5269
  br i1 %536, label %537, label %538

537:                                              ; preds = %532
  store i32 2, ptr %25, align 4, !tbaa !34
  br label %538

538:                                              ; preds = %537, %532
  %539 = load ptr, ptr %29, align 8, !tbaa !5
  %540 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %539, i16 noundef zeroext 2)
  %541 = load i32, ptr %540, align 4, !tbaa !34
  %542 = icmp eq i32 %541, 27
  br i1 %542, label %543, label %544

543:                                              ; preds = %538
  store i32 1, ptr %25, align 4, !tbaa !34
  br label %544

544:                                              ; preds = %543, %538
  br label %546

545:                                              ; preds = %338
  br label %546

546:                                              ; preds = %545, %544, %505, %474, %380
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #8
  br label %547

547:                                              ; preds = %546
  call void @_ZN8libspirv8Bytecode8IteratorppEv(ptr noundef nonnull align 8 dereferenceable(12) %27)
  br label %335

548:                                              ; preds = %337
  %549 = getelementptr inbounds %class.ShaderAnalyzer, ptr %51, i32 0, i32 11
  %550 = load i32, ptr %549, align 4, !tbaa !76
  %551 = load i32, ptr %25, align 4, !tbaa !34
  %552 = mul i32 %550, %551
  %553 = getelementptr inbounds %class.ShaderAnalyzer, ptr %51, i32 0, i32 12
  store i32 %552, ptr %553, align 8, !tbaa !77
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #8
  %554 = getelementptr inbounds %class.ShaderAnalyzer, ptr %51, i32 0, i32 17
  %555 = load ptr, ptr %554, align 8, !tbaa !9
  store ptr %555, ptr %39, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr %40) #8
  %556 = load ptr, ptr %39, align 8, !tbaa !5
  call void @_ZN8libspirv15MutableBytecode5beginEv(ptr dead_on_unwind writable sret(%"struct.libspirv::MutableBytecode::Iterator") align 8 %40, ptr noundef nonnull align 8 dereferenceable(48) %556)
  call void @llvm.lifetime.start.p0(i64 24, ptr %41) #8
  %557 = load ptr, ptr %39, align 8, !tbaa !5
  call void @_ZN8libspirv15MutableBytecode3endEv(ptr dead_on_unwind writable sret(%"struct.libspirv::MutableBytecode::Iterator") align 8 %41, ptr noundef nonnull align 8 dereferenceable(48) %557)
  br label %558

558:                                              ; preds = %598, %548
  %559 = call noundef zeroext i1 @_ZN8libspirvneERKNS_8Bytecode8IteratorES3_(ptr noundef nonnull align 8 dereferenceable(12) %40, ptr noundef nonnull align 8 dereferenceable(12) %41)
  br i1 %559, label %561, label %560

560:                                              ; preds = %558
  store i32 11, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %41) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %40) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #8
  br label %599

561:                                              ; preds = %558
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #8
  %562 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode8IteratordeEv(ptr noundef nonnull align 8 dereferenceable(12) %40)
  store ptr %562, ptr %42, align 8, !tbaa !5
  %563 = load ptr, ptr %42, align 8, !tbaa !5
  %564 = call noundef i32 @_ZNK8libspirv8Bytecode6OpCode2opEv(ptr noundef nonnull align 4 dereferenceable(4) %563)
  switch i32 %564, label %596 [
    i32 59, label %565
  ]

565:                                              ; preds = %561
  %566 = load ptr, ptr %42, align 8, !tbaa !5
  %567 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %566, i16 noundef zeroext 3)
  %568 = load i32, ptr %567, align 4, !tbaa !34
  %569 = icmp eq i32 %568, 3
  br i1 %569, label %570, label %595

570:                                              ; preds = %565
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #8
  %571 = load ptr, ptr %42, align 8, !tbaa !5
  %572 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %571, i16 noundef zeroext 2)
  %573 = load i32, ptr %572, align 4, !tbaa !34
  store i32 %573, ptr %43, align 4, !tbaa !34
  %574 = load i32, ptr %43, align 4, !tbaa !34
  %575 = getelementptr inbounds %class.ShaderAnalyzer, ptr %51, i32 0, i32 5
  %576 = load i32, ptr %575, align 4, !tbaa !73
  %577 = icmp ne i32 %574, %576
  br i1 %577, label %578, label %594

578:                                              ; preds = %570
  %579 = load i32, ptr %43, align 4, !tbaa !34
  %580 = getelementptr inbounds %class.ShaderAnalyzer, ptr %51, i32 0, i32 4
  %581 = load i32, ptr %580, align 8, !tbaa !72
  %582 = icmp ne i32 %579, %581
  br i1 %582, label %583, label %594

583:                                              ; preds = %578
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #8
  call void @_ZN14ShaderAnalyzer7VaryingC2Ev(ptr noundef nonnull align 4 dereferenceable(8) %44) #8
  %584 = load ptr, ptr %42, align 8, !tbaa !5
  %585 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %584, i16 noundef zeroext 1)
  %586 = load i32, ptr %585, align 4, !tbaa !34
  %587 = getelementptr inbounds %"struct.ShaderAnalyzer::Varying", ptr %44, i32 0, i32 0
  store i32 %586, ptr %587, align 4, !tbaa !78
  %588 = getelementptr inbounds %class.ShaderAnalyzer, ptr %51, i32 0, i32 16
  call void @llvm.lifetime.start.p0(i64 12, ptr %45) #8
  call void @_ZNSt4pairIKjN14ShaderAnalyzer7VaryingEEC2IRjRS2_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS8_S9_EEEbE4typeELb1EEEOS8_OS9_(ptr noundef nonnull align 4 dereferenceable(12) %45, ptr noundef nonnull align 4 dereferenceable(4) %43, ptr noundef nonnull align 4 dereferenceable(8) %44)
  %589 = call { ptr, i8 } @_ZNSt13unordered_mapIjN14ShaderAnalyzer7VaryingESt4hashIjESt8equal_toIjESaISt4pairIKjS1_EEE6insertEOS8_(ptr noundef nonnull align 8 dereferenceable(56) %588, ptr noundef nonnull align 4 dereferenceable(12) %45)
  %590 = getelementptr inbounds { ptr, i8 }, ptr %46, i32 0, i32 0
  %591 = extractvalue { ptr, i8 } %589, 0
  store ptr %591, ptr %590, align 8
  %592 = getelementptr inbounds { ptr, i8 }, ptr %46, i32 0, i32 1
  %593 = extractvalue { ptr, i8 } %589, 1
  store i8 %593, ptr %592, align 8
  call void @llvm.lifetime.end.p0(i64 12, ptr %45) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #8
  br label %594

594:                                              ; preds = %583, %578, %570
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #8
  br label %595

595:                                              ; preds = %594, %565
  br label %597

596:                                              ; preds = %561
  br label %597

597:                                              ; preds = %596, %595
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #8
  br label %598

598:                                              ; preds = %597
  call void @_ZN8libspirv8Bytecode8IteratorppEv(ptr noundef nonnull align 8 dereferenceable(12) %40)
  br label %558

599:                                              ; preds = %560
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #8
  %600 = getelementptr inbounds %class.ShaderAnalyzer, ptr %51, i32 0, i32 17
  %601 = load ptr, ptr %600, align 8, !tbaa !9
  store ptr %601, ptr %47, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr %48) #8
  %602 = load ptr, ptr %47, align 8, !tbaa !5
  call void @_ZN8libspirv15MutableBytecode5beginEv(ptr dead_on_unwind writable sret(%"struct.libspirv::MutableBytecode::Iterator") align 8 %48, ptr noundef nonnull align 8 dereferenceable(48) %602)
  call void @llvm.lifetime.start.p0(i64 24, ptr %49) #8
  %603 = load ptr, ptr %47, align 8, !tbaa !5
  call void @_ZN8libspirv15MutableBytecode3endEv(ptr dead_on_unwind writable sret(%"struct.libspirv::MutableBytecode::Iterator") align 8 %49, ptr noundef nonnull align 8 dereferenceable(48) %603)
  br label %604

604:                                              ; preds = %628, %599
  %605 = call noundef zeroext i1 @_ZN8libspirvneERKNS_8Bytecode8IteratorES3_(ptr noundef nonnull align 8 dereferenceable(12) %48, ptr noundef nonnull align 8 dereferenceable(12) %49)
  br i1 %605, label %607, label %606

606:                                              ; preds = %604
  store i32 14, ptr %6, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %49) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %48) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #8
  br label %629

607:                                              ; preds = %604
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #8
  %608 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode8IteratordeEv(ptr noundef nonnull align 8 dereferenceable(12) %48)
  store ptr %608, ptr %50, align 8, !tbaa !5
  %609 = load ptr, ptr %50, align 8, !tbaa !5
  %610 = call noundef i32 @_ZNK8libspirv8Bytecode6OpCode2opEv(ptr noundef nonnull align 4 dereferenceable(4) %609)
  switch i32 %610, label %626 [
    i32 71, label %611
  ]

611:                                              ; preds = %607
  %612 = load ptr, ptr %50, align 8, !tbaa !5
  %613 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %612, i16 noundef zeroext 2)
  %614 = load i32, ptr %613, align 4, !tbaa !34
  %615 = icmp eq i32 %614, 30
  br i1 %615, label %616, label %625

616:                                              ; preds = %611
  %617 = load ptr, ptr %50, align 8, !tbaa !5
  %618 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %617, i16 noundef zeroext 3)
  %619 = load i32, ptr %618, align 4, !tbaa !34
  %620 = getelementptr inbounds %class.ShaderAnalyzer, ptr %51, i32 0, i32 16
  %621 = load ptr, ptr %50, align 8, !tbaa !5
  %622 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %621, i16 noundef zeroext 1)
  %623 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt13unordered_mapIjN14ShaderAnalyzer7VaryingESt4hashIjESt8equal_toIjESaISt4pairIKjS1_EEEixERS7_(ptr noundef nonnull align 8 dereferenceable(56) %620, ptr noundef nonnull align 4 dereferenceable(4) %622)
  %624 = getelementptr inbounds %"struct.ShaderAnalyzer::Varying", ptr %623, i32 0, i32 1
  store i32 %619, ptr %624, align 4, !tbaa !80
  br label %625

625:                                              ; preds = %616, %611
  br label %627

626:                                              ; preds = %607
  br label %627

627:                                              ; preds = %626, %625
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #8
  br label %628

628:                                              ; preds = %627
  call void @_ZN8libspirv8Bytecode8IteratorppEv(ptr noundef nonnull align 8 dereferenceable(12) %48)
  br label %604

629:                                              ; preds = %606
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #8
  ret void

630:                                              ; preds = %328
  %631 = load ptr, ptr %12, align 8
  %632 = load i32, ptr %13, align 4
  %633 = insertvalue { ptr, i32 } poison, ptr %631, 0
  %634 = insertvalue { ptr, i32 } %633, i32 %632, 1
  resume { ptr, i32 } %634
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
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 = { 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 #3 = { "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 = { nocallback nofree nounwind willreturn memory(argmem: write) }
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 = { 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 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #8 = { 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, !6, i64 6256}
!10 = !{!"_ZTS14ShaderAnalyzer", !11, i64 0, !11, i64 4, !11, i64 8, !11, i64 12, !11, i64 16, !11, i64 20, !11, i64 24, !11, i64 28, !11, i64 32, !11, i64 36, !11, i64 40, !11, i64 44, !11, i64 48, !7, i64 52, !7, i64 3124, !12, i64 6200, !6, i64 6256, !18, i64 6264, !24, i64 6312, !26, i64 6368, !28, i64 6424, !30, i64 6480, !32, i64 6536, !11, i64 6592}
!11 = !{!"int", !7, i64 0}
!12 = !{!"_ZTSSt13unordered_mapIjN14ShaderAnalyzer7VaryingESt4hashIjESt8equal_toIjESaISt4pairIKjS1_EEE", !13, i64 0}
!13 = !{!"_ZTSSt10_HashtableIjSt4pairIKjN14ShaderAnalyzer7VaryingEESaIS4_ENSt8__detail10_Select1stESt8equal_toIjESt4hashIjENS6_18_Mod_range_hashingENS6_20_Default_ranged_hashENS6_20_Prime_rehash_policyENS6_17_Hashtable_traitsILb0ELb0ELb1EEEE", !6, i64 0, !14, i64 8, !15, i64 16, !14, i64 24, !16, i64 32, !6, i64 48}
!14 = !{!"long", !7, i64 0}
!15 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !6, i64 0}
!16 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !17, i64 0, !14, i64 8}
!17 = !{!"float", !7, i64 0}
!18 = !{!"_ZTSN8libspirv15MutableBytecodeE", !19, i64 0, !20, i64 24}
!19 = !{!"_ZTSN8libspirv8BytecodeE", !6, i64 0, !14, i64 8, !11, i64 16}
!20 = !{!"_ZTSSt6vectorIN8libspirv8Bytecode6OpCodeESaIS2_EE", !21, i64 0}
!21 = !{!"_ZTSSt12_Vector_baseIN8libspirv8Bytecode6OpCodeESaIS2_EE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseIN8libspirv8Bytecode6OpCodeESaIS2_EE12_Vector_implE", !23, i64 0}
!23 = !{!"_ZTSNSt12_Vector_baseIN8libspirv8Bytecode6OpCodeESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!24 = !{!"_ZTSSt13unordered_mapIjN14ShaderAnalyzer3RegESt4hashIjESt8equal_toIjESaISt4pairIKjS1_EEE", !25, i64 0}
!25 = !{!"_ZTSSt10_HashtableIjSt4pairIKjN14ShaderAnalyzer3RegEESaIS4_ENSt8__detail10_Select1stESt8equal_toIjESt4hashIjENS6_18_Mod_range_hashingENS6_20_Default_ranged_hashENS6_20_Prime_rehash_policyENS6_17_Hashtable_traitsILb0ELb0ELb1EEEE", !6, i64 0, !14, i64 8, !15, i64 16, !14, i64 24, !16, i64 32, !6, i64 48}
!26 = !{!"_ZTSSt13unordered_mapIjN14ShaderAnalyzer4TypeESt4hashIjESt8equal_toIjESaISt4pairIKjS1_EEE", !27, i64 0}
!27 = !{!"_ZTSSt10_HashtableIjSt4pairIKjN14ShaderAnalyzer4TypeEESaIS4_ENSt8__detail10_Select1stESt8equal_toIjESt4hashIjENS6_18_Mod_range_hashingENS6_20_Default_ranged_hashENS6_20_Prime_rehash_policyENS6_17_Hashtable_traitsILb0ELb0ELb1EEEE", !6, i64 0, !14, i64 8, !15, i64 16, !14, i64 24, !16, i64 32, !6, i64 48}
!28 = !{!"_ZTSSt13unordered_mapIjN14ShaderAnalyzer3VarESt4hashIjESt8equal_toIjESaISt4pairIKjS1_EEE", !29, i64 0}
!29 = !{!"_ZTSSt10_HashtableIjSt4pairIKjN14ShaderAnalyzer3VarEESaIS4_ENSt8__detail10_Select1stESt8equal_toIjESt4hashIjENS6_18_Mod_range_hashingENS6_20_Default_ranged_hashENS6_20_Prime_rehash_policyENS6_17_Hashtable_traitsILb0ELb0ELb1EEEE", !6, i64 0, !14, i64 8, !15, i64 16, !14, i64 24, !16, i64 32, !6, i64 48}
!30 = !{!"_ZTSSt13unordered_mapIjN14ShaderAnalyzer8FunctionESt4hashIjESt8equal_toIjESaISt4pairIKjS1_EEE", !31, i64 0}
!31 = !{!"_ZTSSt10_HashtableIjSt4pairIKjN14ShaderAnalyzer8FunctionEESaIS4_ENSt8__detail10_Select1stESt8equal_toIjESt4hashIjENS6_18_Mod_range_hashingENS6_20_Default_ranged_hashENS6_20_Prime_rehash_policyENS6_17_Hashtable_traitsILb0ELb0ELb1EEEE", !6, i64 0, !14, i64 8, !15, i64 16, !14, i64 24, !16, i64 32, !6, i64 48}
!32 = !{!"_ZTSSt13unordered_mapIjN14ShaderAnalyzer3CFGESt4hashIjESt8equal_toIjESaISt4pairIKjS1_EEE", !33, i64 0}
!33 = !{!"_ZTSSt10_HashtableIjSt4pairIKjN14ShaderAnalyzer3CFGEESaIS4_ENSt8__detail10_Select1stESt8equal_toIjESt4hashIjENS6_18_Mod_range_hashingENS6_20_Default_ranged_hashENS6_20_Prime_rehash_policyENS6_17_Hashtable_traitsILb0ELb0ELb1EEEE", !6, i64 0, !14, i64 8, !15, i64 16, !14, i64 24, !16, i64 32, !6, i64 48}
!34 = !{!11, !11, i64 0}
!35 = !{!10, !11, i64 0}
!36 = !{!37, !38, i64 0}
!37 = !{!"_ZTSN14ShaderAnalyzer4TypeE", !38, i64 0, !39, i64 4, !40, i64 8}
!38 = !{!"_ZTSN3spv2OpE", !7, i64 0}
!39 = !{!"_ZTSN3spv12StorageClassE", !7, i64 0}
!40 = !{!"_ZTSN14ShaderAnalyzer10AccessBitsE", !7, i64 0}
!41 = !{!37, !39, i64 4}
!42 = !{!37, !40, i64 8}
!43 = !{!44, !39, i64 0}
!44 = !{!"_ZTSN14ShaderAnalyzer3RegE", !39, i64 0, !45, i64 8}
!45 = !{!"_ZTSN14ShaderAnalyzer5ValueE", !40, i64 0, !46, i64 8, !7, i64 32, !51, i64 48}
!46 = !{!"_ZTSN14ShaderAnalyzer11AccessChainE", !47, i64 0}
!47 = !{!"_ZTSSt6vectorIjSaIjEE", !48, i64 0}
!48 = !{!"_ZTSSt12_Vector_baseIjSaIjEE", !49, i64 0}
!49 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE12_Vector_implE", !50, i64 0}
!50 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!51 = !{!"bool", !7, i64 0}
!52 = !{!45, !40, i64 0}
!53 = !{!45, !51, i64 48}
!54 = !{!44, !40, i64 8}
!55 = !{!44, !51, i64 56}
!56 = distinct !{!56, !57}
!57 = !{!"llvm.loop.mustprogress"}
!58 = !{!59, !39, i64 0}
!59 = !{!"_ZTSN14ShaderAnalyzer3VarE", !39, i64 0, !45, i64 8, !6, i64 64}
!60 = !{!61, !11, i64 0}
!61 = !{!"_ZTSN14ShaderAnalyzer8FunctionE", !11, i64 0, !51, i64 4, !40, i64 6, !40, i64 8, !51, i64 10, !51, i64 11, !6, i64 16, !11, i64 24}
!62 = !{!61, !11, i64 24}
!63 = !{!10, !11, i64 40}
!64 = !{!61, !6, i64 16}
!65 = !{!59, !6, i64 64}
!66 = !{i64 0, i64 8, !67, i64 8, i64 8, !5}
!67 = !{!14, !14, i64 0}
!68 = !{!10, !11, i64 36}
!69 = !{!10, !11, i64 4}
!70 = !{!10, !11, i64 8}
!71 = !{!10, !11, i64 12}
!72 = !{!10, !11, i64 16}
!73 = !{!10, !11, i64 20}
!74 = !{!10, !11, i64 24}
!75 = !{!10, !11, i64 32}
!76 = !{!10, !11, i64 44}
!77 = !{!10, !11, i64 48}
!78 = !{!79, !11, i64 0}
!79 = !{!"_ZTSN14ShaderAnalyzer7VaryingE", !11, i64 0, !11, i64 4}
!80 = !{!79, !11, i64 4}


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

%"struct.libspirv::MutableBytecode::Iterator" = type { %"struct.libspirv::Bytecode::Iterator.base", ptr }
%"struct.libspirv::Bytecode::Iterator.base" = type <{ ptr, i32 }>
%"struct.ShaderAnalyzer::Reg" = type { i32, [4 x i8], %"struct.ShaderAnalyzer::Value" }
%"struct.ShaderAnalyzer::Value" = type <{ i16, [6 x i8], %"struct.ShaderAnalyzer::AccessChain", [4 x i32], i8, [7 x i8] }>
%"struct.ShaderAnalyzer::AccessChain" = type { %"class.std::vector" }
%"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 }
%"struct.std::__detail::_Node_iterator" = type { %"struct.std::__detail::_Node_iterator_base" }
%"struct.std::__detail::_Node_iterator_base" = type { ptr }
%"struct.std::__detail::_Node_iterator.83" = type { %"struct.std::__detail::_Node_iterator_base.84" }
%"struct.std::__detail::_Node_iterator_base.84" = type { ptr }
%"class.std::basic_string_view" = type { i64, ptr }
%"struct.ShaderAnalyzer::Varying" = type { i32, i32 }
%"struct.std::pair.91" = type { i32, %"struct.ShaderAnalyzer::Varying" }

@.str.13 = external hidden unnamed_addr constant [5 x i8], align 1

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

declare i32 @__gxx_personality_v0(...)

; 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 zeroext i16 @_ZN14ShaderAnalyzer12toAccessBitsEN3spv12StorageClassE(i32 noundef) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN14ShaderAnalyzer7analyzeEv(ptr noundef nonnull align 8 dereferenceable(6596) %0) local_unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %2 = alloca %"struct.libspirv::MutableBytecode::Iterator", align 8
  %3 = alloca %"struct.libspirv::MutableBytecode::Iterator", align 8
  %4 = alloca i32, align 4
  %5 = alloca i32, align 4
  %6 = alloca %"struct.ShaderAnalyzer::Reg", align 8
  %7 = alloca i32, align 4
  %8 = alloca %"struct.ShaderAnalyzer::Reg", align 8
  %9 = alloca i32, align 4
  %10 = alloca %"struct.ShaderAnalyzer::Reg", align 8
  %11 = alloca i32, align 4
  %12 = alloca %"struct.ShaderAnalyzer::Reg", align 8
  %13 = alloca %"struct.ShaderAnalyzer::AccessChain", align 8
  %14 = alloca i32, align 4
  %15 = alloca %"struct.ShaderAnalyzer::Reg", align 8
  %16 = alloca %"struct.libspirv::MutableBytecode::Iterator", align 8
  %17 = alloca %"struct.libspirv::MutableBytecode::Iterator", align 8
  %18 = alloca %"struct.std::__detail::_Node_iterator", align 8
  %19 = alloca %"struct.std::__detail::_Node_iterator", align 8
  %20 = alloca %"struct.std::__detail::_Node_iterator.83", align 8
  %21 = alloca %"struct.std::__detail::_Node_iterator.83", align 8
  %22 = alloca %"class.std::basic_string_view", align 8
  %23 = alloca %"class.std::basic_string_view", align 8
  %24 = alloca %"struct.libspirv::MutableBytecode::Iterator", align 8
  %25 = alloca %"struct.libspirv::MutableBytecode::Iterator", align 8
  %26 = alloca i32, align 4
  %27 = alloca %"struct.ShaderAnalyzer::Varying", align 4
  %28 = alloca %"struct.std::pair.91", align 4
  %29 = alloca %"struct.libspirv::MutableBytecode::Iterator", align 8
  %30 = alloca %"struct.libspirv::MutableBytecode::Iterator", align 8
  %31 = getelementptr inbounds i8, ptr %0, i64 6256
  %32 = load ptr, ptr %31, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %2) #7
  call void @_ZN8libspirv15MutableBytecode5beginEv(ptr dead_on_unwind nonnull writable sret(%"struct.libspirv::MutableBytecode::Iterator") align 8 %2, ptr noundef nonnull align 8 dereferenceable(48) %32)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %3) #7
  call void @_ZN8libspirv15MutableBytecode3endEv(ptr dead_on_unwind nonnull writable sret(%"struct.libspirv::MutableBytecode::Iterator") align 8 %3, ptr noundef nonnull align 8 dereferenceable(48) %32)
  %33 = call noundef zeroext i1 @_ZN8libspirvneERKNS_8Bytecode8IteratorES3_(ptr noundef nonnull align 8 dereferenceable(12) %2, ptr noundef nonnull align 8 dereferenceable(12) %3)
  br i1 %33, label %.lr.ph124, label %._crit_edge125

.lr.ph124:                                        ; preds = %1
  %34 = getelementptr inbounds i8, ptr %15, i64 8
  %35 = getelementptr inbounds i8, ptr %15, i64 16
  %36 = getelementptr inbounds i8, ptr %0, i64 6312
  %37 = getelementptr inbounds i8, ptr %12, i64 8
  %38 = getelementptr inbounds i8, ptr %12, i64 16
  %39 = getelementptr inbounds i8, ptr %0, i64 6424
  %40 = getelementptr inbounds i8, ptr %10, i64 8
  %41 = getelementptr inbounds i8, ptr %10, i64 16
  %.ptr105 = getelementptr inbounds i8, ptr %10, i64 40
  %42 = getelementptr inbounds i8, ptr %10, i64 56
  %43 = getelementptr inbounds i8, ptr %8, i64 8
  %44 = getelementptr inbounds i8, ptr %8, i64 16
  %.ptr112 = getelementptr inbounds i8, ptr %8, i64 40
  %45 = getelementptr inbounds i8, ptr %8, i64 56
  %46 = getelementptr inbounds i8, ptr %6, i64 8
  %47 = getelementptr inbounds i8, ptr %6, i64 16
  %.ptr117 = getelementptr inbounds i8, ptr %6, i64 40
  %48 = getelementptr inbounds i8, ptr %6, i64 56
  %49 = getelementptr inbounds i8, ptr %0, i64 6368
  %50 = getelementptr inbounds i8, ptr %0, i64 6480
  %scevgep = getelementptr inbounds i8, ptr %15, i64 40
  %scevgep136 = getelementptr inbounds i8, ptr %12, i64 40
  br label %66

._crit_edge125:                                   ; preds = %170, %1
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %2) #7
  %51 = getelementptr inbounds i8, ptr %0, i64 40
  store i32 0, ptr %51, align 8, !tbaa !33
  %52 = load ptr, ptr %31, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %16) #7
  call void @_ZN8libspirv15MutableBytecode5beginEv(ptr dead_on_unwind nonnull writable sret(%"struct.libspirv::MutableBytecode::Iterator") align 8 %16, ptr noundef nonnull align 8 dereferenceable(48) %52)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %17) #7
  call void @_ZN8libspirv15MutableBytecode3endEv(ptr dead_on_unwind nonnull writable sret(%"struct.libspirv::MutableBytecode::Iterator") align 8 %17, ptr noundef nonnull align 8 dereferenceable(48) %52)
  %53 = call noundef zeroext i1 @_ZN8libspirvneERKNS_8Bytecode8IteratorES3_(ptr noundef nonnull align 8 dereferenceable(12) %16, ptr noundef nonnull align 8 dereferenceable(12) %17)
  br i1 %53, label %.lr.ph128, label %._crit_edge129

.lr.ph128:                                        ; preds = %._crit_edge125
  %54 = getelementptr inbounds i8, ptr %0, i64 44
  %55 = getelementptr inbounds i8, ptr %0, i64 24
  %56 = getelementptr inbounds i8, ptr %0, i64 32
  %.sroa.2.0..sroa_idx = getelementptr inbounds i8, ptr %22, i64 8
  %57 = getelementptr inbounds i8, ptr %23, i64 8
  %58 = getelementptr inbounds i8, ptr %0, i64 36
  %59 = getelementptr inbounds i8, ptr %0, i64 4
  %60 = getelementptr inbounds i8, ptr %0, i64 8
  %61 = getelementptr inbounds i8, ptr %0, i64 12
  %62 = getelementptr inbounds i8, ptr %0, i64 16
  %63 = getelementptr inbounds i8, ptr %0, i64 20
  %64 = getelementptr inbounds i8, ptr %0, i64 6480
  %65 = getelementptr inbounds i8, ptr %0, i64 6424
  br label %182

66:                                               ; preds = %.lr.ph124, %170
  %67 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode8IteratordeEv(ptr noundef nonnull align 8 dereferenceable(12) %2)
  %68 = call noundef i32 @_ZNK8libspirv8Bytecode6OpCode2opEv(ptr noundef nonnull align 4 dereferenceable(4) %67)
  switch i32 %68, label %170 [
    i32 19, label %69
    i32 54, label %161
    i32 32, label %72
    i32 41, label %84
    i32 42, label %84
    i32 43, label %96
    i32 44, label %107
    i32 59, label %132
    i32 55, label %152
  ]

69:                                               ; preds = %66
  %70 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %67, i16 noundef zeroext 1)
  %71 = load i32, ptr %70, align 4, !tbaa !34
  store i32 %71, ptr %0, align 8, !tbaa !35
  br label %170

72:                                               ; preds = %66
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %4) #7
  %73 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %67, i16 noundef zeroext 1)
  %74 = load i32, ptr %73, align 4, !tbaa !34
  store i32 %74, ptr %4, align 4, !tbaa !34
  %75 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %67, i16 noundef zeroext 2)
  %76 = load i32, ptr %75, align 4, !tbaa !34
  %77 = call noundef i32 @_ZNK8libspirv8Bytecode6OpCode2opEv(ptr noundef nonnull align 4 dereferenceable(4) %67)
  %78 = call noundef nonnull align 4 dereferenceable(10) ptr @_ZNSt13unordered_mapIjN14ShaderAnalyzer4TypeESt4hashIjESt8equal_toIjESaISt4pairIKjS1_EEEixERS7_(ptr noundef nonnull align 8 dereferenceable(56) %49, ptr noundef nonnull align 4 dereferenceable(4) %4)
  store i32 %77, ptr %78, align 4, !tbaa !36
  %79 = call noundef nonnull align 4 dereferenceable(10) ptr @_ZNSt13unordered_mapIjN14ShaderAnalyzer4TypeESt4hashIjESt8equal_toIjESaISt4pairIKjS1_EEEixERS7_(ptr noundef nonnull align 8 dereferenceable(56) %49, ptr noundef nonnull align 4 dereferenceable(4) %4)
  %80 = getelementptr inbounds i8, ptr %79, i64 4
  store i32 %76, ptr %80, align 4, !tbaa !41
  %81 = call noundef zeroext i16 @_ZN14ShaderAnalyzer12toAccessBitsEN3spv12StorageClassE(i32 noundef %76)
  %82 = call noundef nonnull align 4 dereferenceable(10) ptr @_ZNSt13unordered_mapIjN14ShaderAnalyzer4TypeESt4hashIjESt8equal_toIjESaISt4pairIKjS1_EEEixERS7_(ptr noundef nonnull align 8 dereferenceable(56) %49, ptr noundef nonnull align 4 dereferenceable(4) %4)
  %83 = getelementptr inbounds i8, ptr %82, i64 8
  store i16 %81, ptr %83, align 4, !tbaa !42
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #7
  br label %170

84:                                               ; preds = %66, %66
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #7
  %85 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %67, i16 noundef zeroext 2)
  %86 = load i32, ptr %85, align 4, !tbaa !34
  store i32 %86, ptr %5, align 4, !tbaa !34
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %6) #7
  store i32 8, ptr %6, align 8, !tbaa !43
  store i16 511, ptr %46, align 8, !tbaa !52
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %47, i8 0, i64 24, i1 false)
  call void @_ZN14ShaderAnalyzer11AccessChainC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %47) #7
  store i32 0, ptr %6, align 8, !tbaa !43
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.ptr117, i8 0, i64 16, i1 false)
  store i16 1, ptr %46, align 8, !tbaa !53
  store i8 1, ptr %48, align 8, !tbaa !54
  %87 = call noundef i32 @_ZNK8libspirv8Bytecode6OpCode2opEv(ptr noundef nonnull align 4 dereferenceable(4) %67)
  %88 = icmp eq i32 %87, 41
  %89 = zext i1 %88 to i32
  store i32 %89, ptr %.ptr117, align 8, !tbaa !34
  %90 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZNSt13unordered_mapIjN14ShaderAnalyzer3RegESt4hashIjESt8equal_toIjESaISt4pairIKjS1_EEEixERS7_(ptr noundef nonnull align 8 dereferenceable(56) %36, ptr noundef nonnull align 4 dereferenceable(4) %5)
          to label %91 unwind label %94

91:                                               ; preds = %84
  %92 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZN14ShaderAnalyzer3RegaSERKS0_(ptr noundef nonnull align 8 dereferenceable(64) %90, ptr noundef nonnull align 8 dereferenceable(64) %6)
          to label %93 unwind label %94

93:                                               ; preds = %91
  call void @_ZN14ShaderAnalyzer3RegD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %6) #7
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %6) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #7
  br label %170

94:                                               ; preds = %91, %84
  %95 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN14ShaderAnalyzer3RegD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %6) #7
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %6) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #7
  br label %172

96:                                               ; preds = %66
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #7
  %97 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %67, i16 noundef zeroext 2)
  %98 = load i32, ptr %97, align 4, !tbaa !34
  store i32 %98, ptr %7, align 4, !tbaa !34
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %8) #7
  store i32 8, ptr %8, align 8, !tbaa !43
  store i16 511, ptr %43, align 8, !tbaa !52
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %44, i8 0, i64 24, i1 false)
  call void @_ZN14ShaderAnalyzer11AccessChainC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %44) #7
  store i32 0, ptr %8, align 8, !tbaa !43
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.ptr112, i8 0, i64 16, i1 false)
  store i16 1, ptr %43, align 8, !tbaa !53
  store i8 1, ptr %45, align 8, !tbaa !54
  %99 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %67, i16 noundef zeroext 3)
  %100 = load i32, ptr %99, align 4, !tbaa !34
  store i32 %100, ptr %.ptr112, align 8, !tbaa !34
  %101 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZNSt13unordered_mapIjN14ShaderAnalyzer3RegESt4hashIjESt8equal_toIjESaISt4pairIKjS1_EEEixERS7_(ptr noundef nonnull align 8 dereferenceable(56) %36, ptr noundef nonnull align 4 dereferenceable(4) %7)
          to label %102 unwind label %105

102:                                              ; preds = %96
  %103 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZN14ShaderAnalyzer3RegaSERKS0_(ptr noundef nonnull align 8 dereferenceable(64) %101, ptr noundef nonnull align 8 dereferenceable(64) %8)
          to label %104 unwind label %105

104:                                              ; preds = %102
  call void @_ZN14ShaderAnalyzer3RegD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %8) #7
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %8) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #7
  br label %170

105:                                              ; preds = %102, %96
  %106 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN14ShaderAnalyzer3RegD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %8) #7
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %8) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #7
  br label %172

107:                                              ; preds = %66
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #7
  %108 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %67, i16 noundef zeroext 2)
  %109 = load i32, ptr %108, align 4, !tbaa !34
  store i32 %109, ptr %9, align 4, !tbaa !34
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %10) #7
  store i32 8, ptr %10, align 8, !tbaa !43
  store i16 511, ptr %40, align 8, !tbaa !52
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %41, i8 0, i64 24, i1 false)
  call void @_ZN14ShaderAnalyzer11AccessChainC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %41) #7
  store i32 0, ptr %10, align 8, !tbaa !43
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %.ptr105, i8 0, i64 16, i1 false)
  store i16 1, ptr %40, align 8, !tbaa !53
  store i8 1, ptr %42, align 8, !tbaa !54
  %110 = call noundef zeroext i16 @_ZNK8libspirv8Bytecode6OpCode6lengthEv(ptr noundef nonnull align 4 dereferenceable(4) %67)
  %111 = icmp ugt i16 %110, 3
  br i1 %111, label %.lr.ph, label %._crit_edge

._crit_edge:                                      ; preds = %118, %107
  %112 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZNSt13unordered_mapIjN14ShaderAnalyzer3RegESt4hashIjESt8equal_toIjESaISt4pairIKjS1_EEEixERS7_(ptr noundef nonnull align 8 dereferenceable(56) %36, ptr noundef nonnull align 4 dereferenceable(4) %9)
          to label %126 unwind label %129

113:                                              ; preds = %.lr.ph
  %114 = landingpad { ptr, i32 }
          cleanup
  br label %131

.lr.ph:                                           ; preds = %107, %118
  %indvars.iv = phi i64 [ %indvars.iv.next, %118 ], [ 3, %107 ]
  %115 = trunc i64 %indvars.iv to i16
  %116 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %67, i16 noundef zeroext %115)
  %117 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZNSt13unordered_mapIjN14ShaderAnalyzer3RegESt4hashIjESt8equal_toIjESaISt4pairIKjS1_EEEixERS7_(ptr noundef nonnull align 8 dereferenceable(56) %36, ptr noundef nonnull align 4 dereferenceable(4) %116)
          to label %118 unwind label %113

118:                                              ; preds = %.lr.ph
  %119 = getelementptr inbounds i8, ptr %117, i64 40
  %120 = load i32, ptr %119, align 8, !tbaa !34
  %121 = add nsw i64 %indvars.iv, -3
  %122 = getelementptr inbounds [4 x i32], ptr %.ptr105, i64 0, i64 %121
  store i32 %120, ptr %122, align 4, !tbaa !34
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %123 = call noundef zeroext i16 @_ZNK8libspirv8Bytecode6OpCode6lengthEv(ptr noundef nonnull align 4 dereferenceable(4) %67)
  %124 = zext i16 %123 to i64
  %125 = icmp ult i64 %indvars.iv.next, %124
  br i1 %125, label %.lr.ph, label %._crit_edge, !llvm.loop !55

126:                                              ; preds = %._crit_edge
  %127 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZN14ShaderAnalyzer3RegaSERKS0_(ptr noundef nonnull align 8 dereferenceable(64) %112, ptr noundef nonnull align 8 dereferenceable(64) %10)
          to label %128 unwind label %129

128:                                              ; preds = %126
  call void @_ZN14ShaderAnalyzer3RegD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %10) #7
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %10) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #7
  br label %170

129:                                              ; preds = %126, %._crit_edge
  %130 = landingpad { ptr, i32 }
          cleanup
  br label %131

131:                                              ; preds = %129, %113
  %.pn106 = phi { ptr, i32 } [ %114, %113 ], [ %130, %129 ]
  call void @_ZN14ShaderAnalyzer3RegD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %10) #7
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %10) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #7
  br label %172

132:                                              ; preds = %66
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %11) #7
  %133 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %67, i16 noundef zeroext 2)
  %134 = load i32, ptr %133, align 4, !tbaa !34
  store i32 %134, ptr %11, align 4, !tbaa !34
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %12) #7
  store i32 8, ptr %12, align 8, !tbaa !43
  store i16 511, ptr %37, align 8, !tbaa !52
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %38, i8 0, i64 24, i1 false)
  call void @_ZN14ShaderAnalyzer11AccessChainC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %38) #7
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(17) %scevgep136, i8 0, i64 17, i1 false)
  %135 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %67, i16 noundef zeroext 3)
  %136 = load i32, ptr %135, align 4, !tbaa !34
  store i32 %136, ptr %12, align 8, !tbaa !43
  store i16 0, ptr %37, align 8, !tbaa !53
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %13) #7
  %137 = load i32, ptr %11, align 4, !tbaa !34
  invoke void @_ZN14ShaderAnalyzer11AccessChainC2Ej(ptr noundef nonnull align 8 dereferenceable(24) %13, i32 noundef %137)
          to label %138 unwind label %149

138:                                              ; preds = %132
  %139 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN14ShaderAnalyzer11AccessChainaSEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %38, ptr noundef nonnull align 8 dereferenceable(24) %13) #7
  call void @_ZN14ShaderAnalyzer11AccessChainD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %13) #7
  %140 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZNSt13unordered_mapIjN14ShaderAnalyzer3RegESt4hashIjESt8equal_toIjESaISt4pairIKjS1_EEEixERS7_(ptr noundef nonnull align 8 dereferenceable(56) %36, ptr noundef nonnull align 4 dereferenceable(4) %11)
          to label %141 unwind label %147

141:                                              ; preds = %138
  %142 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZN14ShaderAnalyzer3RegaSERKS0_(ptr noundef nonnull align 8 dereferenceable(64) %140, ptr noundef nonnull align 8 dereferenceable(64) %12)
          to label %143 unwind label %147

143:                                              ; preds = %141
  %144 = load i32, ptr %12, align 8, !tbaa !43
  %145 = invoke noundef nonnull align 8 dereferenceable(72) ptr @_ZNSt13unordered_mapIjN14ShaderAnalyzer3VarESt4hashIjESt8equal_toIjESaISt4pairIKjS1_EEEixERS7_(ptr noundef nonnull align 8 dereferenceable(56) %39, ptr noundef nonnull align 4 dereferenceable(4) %11)
          to label %146 unwind label %147

146:                                              ; preds = %143
  store i32 %144, ptr %145, align 8, !tbaa !57
  call void @_ZN14ShaderAnalyzer3RegD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %12) #7
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %12) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #7
  br label %170

147:                                              ; preds = %143, %141, %138
  %148 = landingpad { ptr, i32 }
          cleanup
  br label %151

149:                                              ; preds = %132
  %150 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %13) #7
  br label %151

151:                                              ; preds = %149, %147
  %.pn = phi { ptr, i32 } [ %148, %147 ], [ %150, %149 ]
  call void @_ZN14ShaderAnalyzer3RegD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %12) #7
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %12) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #7
  br label %172

152:                                              ; preds = %66
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %14) #7
  %153 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %67, i16 noundef zeroext 2)
  %154 = load i32, ptr %153, align 4, !tbaa !34
  store i32 %154, ptr %14, align 4, !tbaa !34
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %15) #7
  store i32 8, ptr %15, align 8, !tbaa !43
  store i16 511, ptr %34, align 8, !tbaa !52
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %35, i8 0, i64 24, i1 false)
  call void @_ZN14ShaderAnalyzer11AccessChainC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %35) #7
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(17) %scevgep, i8 0, i64 17, i1 false)
  store i32 6, ptr %15, align 8, !tbaa !43
  store i16 16, ptr %34, align 8, !tbaa !53
  %155 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZNSt13unordered_mapIjN14ShaderAnalyzer3RegESt4hashIjESt8equal_toIjESaISt4pairIKjS1_EEEixERS7_(ptr noundef nonnull align 8 dereferenceable(56) %36, ptr noundef nonnull align 4 dereferenceable(4) %14)
          to label %156 unwind label %159

156:                                              ; preds = %152
  %157 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZN14ShaderAnalyzer3RegaSERKS0_(ptr noundef nonnull align 8 dereferenceable(64) %155, ptr noundef nonnull align 8 dereferenceable(64) %15)
          to label %158 unwind label %159

158:                                              ; preds = %156
  call void @_ZN14ShaderAnalyzer3RegD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %15) #7
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %15) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #7
  br label %170

159:                                              ; preds = %156, %152
  %160 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN14ShaderAnalyzer3RegD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %15) #7
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %15) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #7
  br label %172

161:                                              ; preds = %66
  %162 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %67, i16 noundef zeroext 2)
  %163 = call noundef nonnull align 8 dereferenceable(28) ptr @_ZNSt13unordered_mapIjN14ShaderAnalyzer8FunctionESt4hashIjESt8equal_toIjESaISt4pairIKjS1_EEEixERS7_(ptr noundef nonnull align 8 dereferenceable(56) %50, ptr noundef nonnull align 4 dereferenceable(4) %162)
  %164 = load ptr, ptr %31, align 8, !tbaa !5
  %165 = call noundef i64 @_ZNK8libspirv8Bytecode8toOffsetERKNS0_6OpCodeE(ptr noundef nonnull align 8 dereferenceable(20) %164, ptr noundef nonnull align 4 dereferenceable(4) %67)
  %166 = trunc i64 %165 to i32
  store i32 %166, ptr %163, align 8, !tbaa !59
  %167 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %67, i16 noundef zeroext 1)
  %168 = load i32, ptr %167, align 4, !tbaa !34
  %169 = getelementptr inbounds i8, ptr %163, i64 24
  store i32 %168, ptr %169, align 8, !tbaa !61
  br label %170

170:                                              ; preds = %66, %161, %158, %146, %128, %104, %93, %72, %69
  call void @_ZN8libspirv8Bytecode8IteratorppEv(ptr noundef nonnull align 8 dereferenceable(12) %2)
  %171 = call noundef zeroext i1 @_ZN8libspirvneERKNS_8Bytecode8IteratorES3_(ptr noundef nonnull align 8 dereferenceable(12) %2, ptr noundef nonnull align 8 dereferenceable(12) %3)
  br i1 %171, label %66, label %._crit_edge125

172:                                              ; preds = %159, %151, %131, %105, %94
  %.pn118 = phi { ptr, i32 } [ %160, %159 ], [ %.pn, %151 ], [ %.pn106, %131 ], [ %106, %105 ], [ %95, %94 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %2) #7
  resume { ptr, i32 } %.pn118

._crit_edge129:                                   ; preds = %314, %._crit_edge125
  %.088.lcssa = phi i32 [ 3, %._crit_edge125 ], [ %.3, %314 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %17) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %16) #7
  %173 = getelementptr inbounds i8, ptr %0, i64 44
  %174 = load i32, ptr %173, align 4, !tbaa !62
  %175 = mul i32 %174, %.088.lcssa
  %176 = getelementptr inbounds i8, ptr %0, i64 48
  store i32 %175, ptr %176, align 8, !tbaa !63
  %177 = load ptr, ptr %31, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %24) #7
  call void @_ZN8libspirv15MutableBytecode5beginEv(ptr dead_on_unwind nonnull writable sret(%"struct.libspirv::MutableBytecode::Iterator") align 8 %24, ptr noundef nonnull align 8 dereferenceable(48) %177)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %25) #7
  call void @_ZN8libspirv15MutableBytecode3endEv(ptr dead_on_unwind nonnull writable sret(%"struct.libspirv::MutableBytecode::Iterator") align 8 %25, ptr noundef nonnull align 8 dereferenceable(48) %177)
  %178 = call noundef zeroext i1 @_ZN8libspirvneERKNS_8Bytecode8IteratorES3_(ptr noundef nonnull align 8 dereferenceable(12) %24, ptr noundef nonnull align 8 dereferenceable(12) %25)
  br i1 %178, label %.lr.ph131, label %._crit_edge132

.lr.ph131:                                        ; preds = %._crit_edge129
  %179 = getelementptr inbounds i8, ptr %0, i64 20
  %180 = getelementptr inbounds i8, ptr %0, i64 16
  %181 = getelementptr inbounds i8, ptr %0, i64 6200
  br label %319

182:                                              ; preds = %.lr.ph128, %314
  %.088126 = phi i32 [ 3, %.lr.ph128 ], [ %.3, %314 ]
  %183 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode8IteratordeEv(ptr noundef nonnull align 8 dereferenceable(12) %16)
  %184 = call noundef i32 @_ZNK8libspirv8Bytecode6OpCode2opEv(ptr noundef nonnull align 4 dereferenceable(4) %183)
  switch i32 %184, label %314 [
    i32 5, label %185
    i32 15, label %204
    i32 71, label %213
    i32 72, label %268
    i32 16, label %290
  ]

185:                                              ; preds = %182
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #7
  %186 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %183, i16 noundef zeroext 1)
  %187 = call ptr @_ZNSt13unordered_mapIjN14ShaderAnalyzer8FunctionESt4hashIjESt8equal_toIjESaISt4pairIKjS1_EEE4findERS7_(ptr noundef nonnull align 8 dereferenceable(56) %64, ptr noundef nonnull align 4 dereferenceable(4) %186)
  store ptr %187, ptr %18, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #7
  %188 = call ptr @_ZNSt13unordered_mapIjN14ShaderAnalyzer8FunctionESt4hashIjESt8equal_toIjESaISt4pairIKjS1_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %64) #7
  store ptr %188, ptr %19, align 8
  %189 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseISt4pairIKjN14ShaderAnalyzer8FunctionEELb0EEES8_(ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef nonnull align 8 dereferenceable(8) %19) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #7
  br i1 %189, label %190, label %194

190:                                              ; preds = %185
  %191 = call noundef ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKjN14ShaderAnalyzer8FunctionEELb0ELb0EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %18) #7
  %192 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %183, i16 noundef zeroext 2)
  %193 = getelementptr inbounds i8, ptr %191, i64 24
  store ptr %192, ptr %193, align 8, !tbaa !64
  br label %194

194:                                              ; preds = %190, %185
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #7
  %195 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %183, i16 noundef zeroext 1)
  %196 = call ptr @_ZNSt13unordered_mapIjN14ShaderAnalyzer3VarESt4hashIjESt8equal_toIjESaISt4pairIKjS1_EEE4findERS7_(ptr noundef nonnull align 8 dereferenceable(56) %65, ptr noundef nonnull align 4 dereferenceable(4) %195)
  store ptr %196, ptr %20, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #7
  %197 = call ptr @_ZNSt13unordered_mapIjN14ShaderAnalyzer3VarESt4hashIjESt8equal_toIjESaISt4pairIKjS1_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %65) #7
  store ptr %197, ptr %21, align 8
  %198 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseISt4pairIKjN14ShaderAnalyzer3VarEELb0EEES8_(ptr noundef nonnull align 8 dereferenceable(8) %20, ptr noundef nonnull align 8 dereferenceable(8) %21) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #7
  br i1 %198, label %199, label %203

199:                                              ; preds = %194
  %200 = call noundef ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKjN14ShaderAnalyzer3VarEELb0ELb0EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %20) #7
  %201 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %183, i16 noundef zeroext 2)
  %202 = getelementptr inbounds i8, ptr %200, i64 72
  store ptr %201, ptr %202, align 8, !tbaa !65
  br label %203

203:                                              ; preds = %199, %194
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #7
  br label %314

204:                                              ; preds = %182
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %22) #7
  %205 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %183, i16 noundef zeroext 3)
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %22, ptr noundef %205) #7
  %.sroa.013.0.copyload = load i64, ptr %22, align 8, !tbaa !66
  %.sroa.2.0.copyload = load ptr, ptr %.sroa.2.0..sroa_idx, align 8, !tbaa !67
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %23, ptr noundef @.str.13) #7
  %206 = load i64, ptr %23, align 8
  %207 = load ptr, ptr %57, align 8
  %208 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE(i64 %.sroa.013.0.copyload, ptr %.sroa.2.0.copyload, i64 %206, ptr %207) #7
  br i1 %208, label %209, label %212

209:                                              ; preds = %204
  %210 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %183, i16 noundef zeroext 2)
  %211 = load i32, ptr %210, align 4, !tbaa !34
  store i32 %211, ptr %58, align 4, !tbaa !68
  br label %212

212:                                              ; preds = %209, %204
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22) #7
  br label %213

213:                                              ; preds = %212, %182
  %214 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %183, i16 noundef zeroext 2)
  %215 = load i32, ptr %214, align 4, !tbaa !34
  %216 = icmp eq i32 %215, 11
  br i1 %216, label %217, label %224

217:                                              ; preds = %213
  %218 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %183, i16 noundef zeroext 3)
  %219 = load i32, ptr %218, align 4, !tbaa !34
  %220 = icmp eq i32 %219, 27
  br i1 %220, label %221, label %224

221:                                              ; preds = %217
  %222 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %183, i16 noundef zeroext 1)
  %223 = load i32, ptr %222, align 4, !tbaa !34
  store i32 %223, ptr %59, align 4, !tbaa !69
  br label %224

224:                                              ; preds = %221, %217, %213
  %225 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %183, i16 noundef zeroext 2)
  %226 = load i32, ptr %225, align 4, !tbaa !34
  %227 = icmp eq i32 %226, 11
  br i1 %227, label %228, label %235

228:                                              ; preds = %224
  %229 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %183, i16 noundef zeroext 3)
  %230 = load i32, ptr %229, align 4, !tbaa !34
  %231 = icmp eq i32 %230, 28
  br i1 %231, label %232, label %235

232:                                              ; preds = %228
  %233 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %183, i16 noundef zeroext 1)
  %234 = load i32, ptr %233, align 4, !tbaa !34
  store i32 %234, ptr %60, align 8, !tbaa !70
  br label %235

235:                                              ; preds = %232, %228, %224
  %236 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %183, i16 noundef zeroext 2)
  %237 = load i32, ptr %236, align 4, !tbaa !34
  %238 = icmp eq i32 %237, 11
  br i1 %238, label %239, label %246

239:                                              ; preds = %235
  %240 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %183, i16 noundef zeroext 3)
  %241 = load i32, ptr %240, align 4, !tbaa !34
  %242 = icmp eq i32 %241, 26
  br i1 %242, label %243, label %246

243:                                              ; preds = %239
  %244 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %183, i16 noundef zeroext 1)
  %245 = load i32, ptr %244, align 4, !tbaa !34
  store i32 %245, ptr %61, align 4, !tbaa !71
  br label %246

246:                                              ; preds = %243, %239, %235
  %247 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %183, i16 noundef zeroext 2)
  %248 = load i32, ptr %247, align 4, !tbaa !34
  %249 = icmp eq i32 %248, 11
  br i1 %249, label %250, label %257

250:                                              ; preds = %246
  %251 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %183, i16 noundef zeroext 3)
  %252 = load i32, ptr %251, align 4, !tbaa !34
  %253 = icmp eq i32 %252, 5276
  br i1 %253, label %254, label %257

254:                                              ; preds = %250
  %255 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %183, i16 noundef zeroext 1)
  %256 = load i32, ptr %255, align 4, !tbaa !34
  store i32 %256, ptr %62, align 8, !tbaa !72
  br label %257

257:                                              ; preds = %254, %250, %246
  %258 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %183, i16 noundef zeroext 2)
  %259 = load i32, ptr %258, align 4, !tbaa !34
  %260 = icmp eq i32 %259, 11
  br i1 %260, label %261, label %314

261:                                              ; preds = %257
  %262 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %183, i16 noundef zeroext 3)
  %263 = load i32, ptr %262, align 4, !tbaa !34
  %264 = icmp eq i32 %263, 5275
  br i1 %264, label %265, label %314

265:                                              ; preds = %261
  %266 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %183, i16 noundef zeroext 1)
  %267 = load i32, ptr %266, align 4, !tbaa !34
  store i32 %267, ptr %63, align 4, !tbaa !73
  br label %314

268:                                              ; preds = %182
  %269 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %183, i16 noundef zeroext 3)
  %270 = load i32, ptr %269, align 4, !tbaa !34
  %271 = icmp eq i32 %270, 11
  br i1 %271, label %272, label %279

272:                                              ; preds = %268
  %273 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %183, i16 noundef zeroext 4)
  %274 = load i32, ptr %273, align 4, !tbaa !34
  %275 = icmp eq i32 %274, 0
  br i1 %275, label %276, label %279

276:                                              ; preds = %272
  %277 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %183, i16 noundef zeroext 1)
  %278 = load i32, ptr %277, align 4, !tbaa !34
  store i32 %278, ptr %55, align 8, !tbaa !74
  br label %279

279:                                              ; preds = %276, %272, %268
  %280 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %183, i16 noundef zeroext 3)
  %281 = load i32, ptr %280, align 4, !tbaa !34
  %282 = icmp eq i32 %281, 11
  br i1 %282, label %283, label %314

283:                                              ; preds = %279
  %284 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %183, i16 noundef zeroext 4)
  %285 = load i32, ptr %284, align 4, !tbaa !34
  %286 = icmp eq i32 %285, 1
  br i1 %286, label %287, label %314

287:                                              ; preds = %283
  %288 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %183, i16 noundef zeroext 1)
  %289 = load i32, ptr %288, align 4, !tbaa !34
  store i32 %289, ptr %56, align 8, !tbaa !75
  br label %314

290:                                              ; preds = %182
  %291 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %183, i16 noundef zeroext 2)
  %292 = load i32, ptr %291, align 4, !tbaa !34
  %293 = icmp eq i32 %292, 17
  br i1 %293, label %294, label %297

294:                                              ; preds = %290
  %295 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %183, i16 noundef zeroext 3)
  %296 = load i32, ptr %295, align 4, !tbaa !34
  store i32 %296, ptr %51, align 8, !tbaa !33
  br label %297

297:                                              ; preds = %294, %290
  %298 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %183, i16 noundef zeroext 2)
  %299 = load i32, ptr %298, align 4, !tbaa !34
  %300 = icmp eq i32 %299, 5270
  br i1 %300, label %301, label %304

301:                                              ; preds = %297
  %302 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %183, i16 noundef zeroext 3)
  %303 = load i32, ptr %302, align 4, !tbaa !34
  store i32 %303, ptr %54, align 4, !tbaa !62
  br label %304

304:                                              ; preds = %301, %297
  %305 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %183, i16 noundef zeroext 2)
  %306 = load i32, ptr %305, align 4, !tbaa !34
  %307 = icmp eq i32 %306, 5298
  %spec.select = select i1 %307, i32 3, i32 %.088126
  %308 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %183, i16 noundef zeroext 2)
  %309 = load i32, ptr %308, align 4, !tbaa !34
  %310 = icmp eq i32 %309, 5269
  %.290 = select i1 %310, i32 2, i32 %spec.select
  %311 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %183, i16 noundef zeroext 2)
  %312 = load i32, ptr %311, align 4, !tbaa !34
  %313 = icmp eq i32 %312, 27
  %spec.select121 = select i1 %313, i32 1, i32 %.290
  br label %314

314:                                              ; preds = %304, %182, %279, %283, %287, %257, %261, %265, %203
  %.3 = phi i32 [ %.088126, %182 ], [ %.088126, %287 ], [ %.088126, %283 ], [ %.088126, %279 ], [ %.088126, %265 ], [ %.088126, %261 ], [ %.088126, %257 ], [ %.088126, %203 ], [ %spec.select121, %304 ]
  call void @_ZN8libspirv8Bytecode8IteratorppEv(ptr noundef nonnull align 8 dereferenceable(12) %16)
  %315 = call noundef zeroext i1 @_ZN8libspirvneERKNS_8Bytecode8IteratorES3_(ptr noundef nonnull align 8 dereferenceable(12) %16, ptr noundef nonnull align 8 dereferenceable(12) %17)
  br i1 %315, label %182, label %._crit_edge129

._crit_edge132:                                   ; preds = %336, %._crit_edge129
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %25) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %24) #7
  %316 = load ptr, ptr %31, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %29) #7
  call void @_ZN8libspirv15MutableBytecode5beginEv(ptr dead_on_unwind nonnull writable sret(%"struct.libspirv::MutableBytecode::Iterator") align 8 %29, ptr noundef nonnull align 8 dereferenceable(48) %316)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %30) #7
  call void @_ZN8libspirv15MutableBytecode3endEv(ptr dead_on_unwind nonnull writable sret(%"struct.libspirv::MutableBytecode::Iterator") align 8 %30, ptr noundef nonnull align 8 dereferenceable(48) %316)
  %317 = call noundef zeroext i1 @_ZN8libspirvneERKNS_8Bytecode8IteratorES3_(ptr noundef nonnull align 8 dereferenceable(12) %29, ptr noundef nonnull align 8 dereferenceable(12) %30)
  br i1 %317, label %.lr.ph134, label %._crit_edge135

.lr.ph134:                                        ; preds = %._crit_edge132
  %318 = getelementptr inbounds i8, ptr %0, i64 6200
  br label %338

319:                                              ; preds = %.lr.ph131, %336
  %320 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode8IteratordeEv(ptr noundef nonnull align 8 dereferenceable(12) %24)
  %321 = call noundef i32 @_ZNK8libspirv8Bytecode6OpCode2opEv(ptr noundef nonnull align 4 dereferenceable(4) %320)
  %cond1 = icmp eq i32 %321, 59
  br i1 %cond1, label %322, label %336

322:                                              ; preds = %319
  %323 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %320, i16 noundef zeroext 3)
  %324 = load i32, ptr %323, align 4, !tbaa !34
  %325 = icmp eq i32 %324, 3
  br i1 %325, label %326, label %336

326:                                              ; preds = %322
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %26) #7
  %327 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %320, i16 noundef zeroext 2)
  %328 = load i32, ptr %327, align 4, !tbaa !34
  store i32 %328, ptr %26, align 4, !tbaa !34
  %329 = load i32, ptr %179, align 4, !tbaa !73
  %.not = icmp eq i32 %328, %329
  %330 = load i32, ptr %180, align 8
  %.not92 = icmp eq i32 %328, %330
  %or.cond = select i1 %.not, i1 true, i1 %.not92
  br i1 %or.cond, label %335, label %331

331:                                              ; preds = %326
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #7
  call void @_ZN14ShaderAnalyzer7VaryingC2Ev(ptr noundef nonnull align 4 dereferenceable(8) %27) #7
  %332 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %320, i16 noundef zeroext 1)
  %333 = load i32, ptr %332, align 4, !tbaa !34
  store i32 %333, ptr %27, align 4, !tbaa !76
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %28) #7
  call void @_ZNSt4pairIKjN14ShaderAnalyzer7VaryingEEC2IRjRS2_TnNSt9enable_ifIXaaclsr5_PCCPE22_MoveConstructiblePairIT_T0_EEclsr5_PCCPE30_ImplicitlyMoveConvertiblePairIS8_S9_EEEbE4typeELb1EEEOS8_OS9_(ptr noundef nonnull align 4 dereferenceable(12) %28, ptr noundef nonnull align 4 dereferenceable(4) %26, ptr noundef nonnull align 4 dereferenceable(8) %27)
  %334 = call { ptr, i8 } @_ZNSt13unordered_mapIjN14ShaderAnalyzer7VaryingESt4hashIjESt8equal_toIjESaISt4pairIKjS1_EEE6insertEOS8_(ptr noundef nonnull align 8 dereferenceable(56) %181, ptr noundef nonnull align 4 dereferenceable(12) %28)
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %28) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #7
  br label %335

335:                                              ; preds = %331, %326
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %26) #7
  br label %336

336:                                              ; preds = %319, %322, %335
  call void @_ZN8libspirv8Bytecode8IteratorppEv(ptr noundef nonnull align 8 dereferenceable(12) %24)
  %337 = call noundef zeroext i1 @_ZN8libspirvneERKNS_8Bytecode8IteratorES3_(ptr noundef nonnull align 8 dereferenceable(12) %24, ptr noundef nonnull align 8 dereferenceable(12) %25)
  br i1 %337, label %319, label %._crit_edge132

._crit_edge135:                                   ; preds = %351, %._crit_edge132
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %30) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %29) #7
  ret void

338:                                              ; preds = %.lr.ph134, %351
  %339 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode8IteratordeEv(ptr noundef nonnull align 8 dereferenceable(12) %29)
  %340 = call noundef i32 @_ZNK8libspirv8Bytecode6OpCode2opEv(ptr noundef nonnull align 4 dereferenceable(4) %339)
  %cond = icmp eq i32 %340, 71
  br i1 %cond, label %341, label %351

341:                                              ; preds = %338
  %342 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %339, i16 noundef zeroext 2)
  %343 = load i32, ptr %342, align 4, !tbaa !34
  %344 = icmp eq i32 %343, 30
  br i1 %344, label %345, label %351

345:                                              ; preds = %341
  %346 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %339, i16 noundef zeroext 3)
  %347 = load i32, ptr %346, align 4, !tbaa !34
  %348 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK8libspirv8Bytecode6OpCodeixEt(ptr noundef nonnull align 4 dereferenceable(4) %339, i16 noundef zeroext 1)
  %349 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt13unordered_mapIjN14ShaderAnalyzer7VaryingESt4hashIjESt8equal_toIjESaISt4pairIKjS1_EEEixERS7_(ptr noundef nonnull align 8 dereferenceable(56) %318, ptr noundef nonnull align 4 dereferenceable(4) %348)
  %350 = getelementptr inbounds i8, ptr %349, i64 4
  store i32 %347, ptr %350, align 4, !tbaa !78
  br label %351

351:                                              ; preds = %338, %341, %345
  call void @_ZN8libspirv8Bytecode8IteratorppEv(ptr noundef nonnull align 8 dereferenceable(12) %29)
  %352 = call noundef zeroext i1 @_ZN8libspirvneERKNS_8Bytecode8IteratorES3_(ptr noundef nonnull align 8 dereferenceable(12) %29, ptr noundef nonnull align 8 dereferenceable(12) %30)
  br i1 %352, label %338, label %._crit_edge135
}

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 4 dereferenceable(10) ptr @_ZNSt13unordered_mapIjN14ShaderAnalyzer4TypeESt4hashIjESt8equal_toIjESaISt4pairIKjS1_EEEixERS7_(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #2 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) #4

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(64) ptr @_ZN14ShaderAnalyzer3RegaSERKS0_(ptr noundef nonnull align 8 dereferenceable(64), ptr noundef nonnull align 8 dereferenceable(64)) local_unnamed_addr #5 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
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 = { 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 #3 = { "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 nocallback nofree nounwind willreturn memory(argmem: write) }
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 = { 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 }

!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, !12, i64 6256}
!6 = !{!"_ZTS14ShaderAnalyzer", !7, i64 0, !7, i64 4, !7, i64 8, !7, i64 12, !7, i64 16, !7, i64 20, !7, i64 24, !7, i64 28, !7, i64 32, !7, i64 36, !7, i64 40, !7, i64 44, !7, i64 48, !8, i64 52, !8, i64 3124, !10, i64 6200, !12, i64 6256, !17, i64 6264, !23, i64 6312, !25, i64 6368, !27, i64 6424, !29, i64 6480, !31, i64 6536, !7, i64 6592}
!7 = !{!"int", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"_ZTSSt13unordered_mapIjN14ShaderAnalyzer7VaryingESt4hashIjESt8equal_toIjESaISt4pairIKjS1_EEE", !11, i64 0}
!11 = !{!"_ZTSSt10_HashtableIjSt4pairIKjN14ShaderAnalyzer7VaryingEESaIS4_ENSt8__detail10_Select1stESt8equal_toIjESt4hashIjENS6_18_Mod_range_hashingENS6_20_Default_ranged_hashENS6_20_Prime_rehash_policyENS6_17_Hashtable_traitsILb0ELb0ELb1EEEE", !12, i64 0, !13, i64 8, !14, i64 16, !13, i64 24, !15, i64 32, !12, i64 48}
!12 = !{!"any pointer", !8, i64 0}
!13 = !{!"long", !8, i64 0}
!14 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !12, i64 0}
!15 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !16, i64 0, !13, i64 8}
!16 = !{!"float", !8, i64 0}
!17 = !{!"_ZTSN8libspirv15MutableBytecodeE", !18, i64 0, !19, i64 24}
!18 = !{!"_ZTSN8libspirv8BytecodeE", !12, i64 0, !13, i64 8, !7, i64 16}
!19 = !{!"_ZTSSt6vectorIN8libspirv8Bytecode6OpCodeESaIS2_EE", !20, i64 0}
!20 = !{!"_ZTSSt12_Vector_baseIN8libspirv8Bytecode6OpCodeESaIS2_EE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseIN8libspirv8Bytecode6OpCodeESaIS2_EE12_Vector_implE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseIN8libspirv8Bytecode6OpCodeESaIS2_EE17_Vector_impl_dataE", !12, i64 0, !12, i64 8, !12, i64 16}
!23 = !{!"_ZTSSt13unordered_mapIjN14ShaderAnalyzer3RegESt4hashIjESt8equal_toIjESaISt4pairIKjS1_EEE", !24, i64 0}
!24 = !{!"_ZTSSt10_HashtableIjSt4pairIKjN14ShaderAnalyzer3RegEESaIS4_ENSt8__detail10_Select1stESt8equal_toIjESt4hashIjENS6_18_Mod_range_hashingENS6_20_Default_ranged_hashENS6_20_Prime_rehash_policyENS6_17_Hashtable_traitsILb0ELb0ELb1EEEE", !12, i64 0, !13, i64 8, !14, i64 16, !13, i64 24, !15, i64 32, !12, i64 48}
!25 = !{!"_ZTSSt13unordered_mapIjN14ShaderAnalyzer4TypeESt4hashIjESt8equal_toIjESaISt4pairIKjS1_EEE", !26, i64 0}
!26 = !{!"_ZTSSt10_HashtableIjSt4pairIKjN14ShaderAnalyzer4TypeEESaIS4_ENSt8__detail10_Select1stESt8equal_toIjESt4hashIjENS6_18_Mod_range_hashingENS6_20_Default_ranged_hashENS6_20_Prime_rehash_policyENS6_17_Hashtable_traitsILb0ELb0ELb1EEEE", !12, i64 0, !13, i64 8, !14, i64 16, !13, i64 24, !15, i64 32, !12, i64 48}
!27 = !{!"_ZTSSt13unordered_mapIjN14ShaderAnalyzer3VarESt4hashIjESt8equal_toIjESaISt4pairIKjS1_EEE", !28, i64 0}
!28 = !{!"_ZTSSt10_HashtableIjSt4pairIKjN14ShaderAnalyzer3VarEESaIS4_ENSt8__detail10_Select1stESt8equal_toIjESt4hashIjENS6_18_Mod_range_hashingENS6_20_Default_ranged_hashENS6_20_Prime_rehash_policyENS6_17_Hashtable_traitsILb0ELb0ELb1EEEE", !12, i64 0, !13, i64 8, !14, i64 16, !13, i64 24, !15, i64 32, !12, i64 48}
!29 = !{!"_ZTSSt13unordered_mapIjN14ShaderAnalyzer8FunctionESt4hashIjESt8equal_toIjESaISt4pairIKjS1_EEE", !30, i64 0}
!30 = !{!"_ZTSSt10_HashtableIjSt4pairIKjN14ShaderAnalyzer8FunctionEESaIS4_ENSt8__detail10_Select1stESt8equal_toIjESt4hashIjENS6_18_Mod_range_hashingENS6_20_Default_ranged_hashENS6_20_Prime_rehash_policyENS6_17_Hashtable_traitsILb0ELb0ELb1EEEE", !12, i64 0, !13, i64 8, !14, i64 16, !13, i64 24, !15, i64 32, !12, i64 48}
!31 = !{!"_ZTSSt13unordered_mapIjN14ShaderAnalyzer3CFGESt4hashIjESt8equal_toIjESaISt4pairIKjS1_EEE", !32, i64 0}
!32 = !{!"_ZTSSt10_HashtableIjSt4pairIKjN14ShaderAnalyzer3CFGEESaIS4_ENSt8__detail10_Select1stESt8equal_toIjESt4hashIjENS6_18_Mod_range_hashingENS6_20_Default_ranged_hashENS6_20_Prime_rehash_policyENS6_17_Hashtable_traitsILb0ELb0ELb1EEEE", !12, i64 0, !13, i64 8, !14, i64 16, !13, i64 24, !15, i64 32, !12, i64 48}
!33 = !{!6, !7, i64 40}
!34 = !{!7, !7, i64 0}
!35 = !{!6, !7, i64 0}
!36 = !{!37, !38, i64 0}
!37 = !{!"_ZTSN14ShaderAnalyzer4TypeE", !38, i64 0, !39, i64 4, !40, i64 8}
!38 = !{!"_ZTSN3spv2OpE", !8, i64 0}
!39 = !{!"_ZTSN3spv12StorageClassE", !8, i64 0}
!40 = !{!"_ZTSN14ShaderAnalyzer10AccessBitsE", !8, i64 0}
!41 = !{!37, !39, i64 4}
!42 = !{!37, !40, i64 8}
!43 = !{!44, !39, i64 0}
!44 = !{!"_ZTSN14ShaderAnalyzer3RegE", !39, i64 0, !45, i64 8}
!45 = !{!"_ZTSN14ShaderAnalyzer5ValueE", !40, i64 0, !46, i64 8, !8, i64 32, !51, i64 48}
!46 = !{!"_ZTSN14ShaderAnalyzer11AccessChainE", !47, i64 0}
!47 = !{!"_ZTSSt6vectorIjSaIjEE", !48, i64 0}
!48 = !{!"_ZTSSt12_Vector_baseIjSaIjEE", !49, i64 0}
!49 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE12_Vector_implE", !50, i64 0}
!50 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE17_Vector_impl_dataE", !12, i64 0, !12, i64 8, !12, i64 16}
!51 = !{!"bool", !8, i64 0}
!52 = !{!45, !40, i64 0}
!53 = !{!44, !40, i64 8}
!54 = !{!44, !51, i64 56}
!55 = distinct !{!55, !56}
!56 = !{!"llvm.loop.mustprogress"}
!57 = !{!58, !39, i64 0}
!58 = !{!"_ZTSN14ShaderAnalyzer3VarE", !39, i64 0, !45, i64 8, !12, i64 64}
!59 = !{!60, !7, i64 0}
!60 = !{!"_ZTSN14ShaderAnalyzer8FunctionE", !7, i64 0, !51, i64 4, !40, i64 6, !40, i64 8, !51, i64 10, !51, i64 11, !12, i64 16, !7, i64 24}
!61 = !{!60, !7, i64 24}
!62 = !{!6, !7, i64 44}
!63 = !{!6, !7, i64 48}
!64 = !{!60, !12, i64 16}
!65 = !{!58, !12, i64 64}
!66 = !{!13, !13, i64 0}
!67 = !{!12, !12, i64 0}
!68 = !{!6, !7, i64 36}
!69 = !{!6, !7, i64 4}
!70 = !{!6, !7, i64 8}
!71 = !{!6, !7, i64 12}
!72 = !{!6, !7, i64 16}
!73 = !{!6, !7, i64 20}
!74 = !{!6, !7, i64 24}
!75 = !{!6, !7, i64 32}
!76 = !{!77, !7, i64 0}
!77 = !{!"_ZTSN14ShaderAnalyzer7VaryingE", !7, i64 0, !7, i64 4}
!78 = !{!77, !7, i64 4}


; Effective O3 passes: DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopIdiomRecognizePass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,MemCpyOptPass,SCCPPass,SROAPass,SimplifyCFGPass