; LLVM IR from Try/Tempest :: Engine/thirdparty/spirv_cross (spirv_cross)

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

%class.anon.266 = type { ptr }
%"struct.spirv_cross::SPIRConstantOp" = type <{ %"struct.spirv_cross::IVariant.base", i32, %"class.spirv_cross::SmallVector.92", %"class.spirv_cross::TypedID.163", [4 x i8] }>
%"struct.spirv_cross::IVariant.base" = type <{ ptr, %"class.spirv_cross::TypedID.162" }>
%"class.spirv_cross::TypedID.162" = type { i32 }
%"class.spirv_cross::SmallVector.92" = type { %"class.spirv_cross::VectorView.93", i64, %"class.spirv_cross::AlignedBuffer.94" }
%"class.spirv_cross::VectorView.93" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.94" = type { [32 x i8] }
%"class.spirv_cross::TypedID.163" = type { i32 }
%"struct.spirv_cross::SPIRType" = type { %"struct.spirv_cross::IVariant.base", i32, i32, i32, i32, i32, %"class.spirv_cross::SmallVector.92", %"class.spirv_cross::SmallVector.166", i32, i8, i8, i32, %"class.spirv_cross::SmallVector.169", %"class.spirv_cross::SmallVector.92", %"struct.spirv_cross::SPIRType::ImageType", %"class.spirv_cross::TypedID.163", %"class.spirv_cross::TypedID.163", %"class.std::unordered_set.172" }
%"class.spirv_cross::SmallVector.166" = type { %"class.spirv_cross::VectorView.167", i64, %"class.spirv_cross::AlignedBuffer.168" }
%"class.spirv_cross::VectorView.167" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.168" = type { [8 x i8] }
%"class.spirv_cross::SmallVector.169" = type { %"class.spirv_cross::VectorView.170", i64, %"class.spirv_cross::AlignedBuffer.171" }
%"class.spirv_cross::VectorView.170" = type { ptr, i64 }
%"class.spirv_cross::AlignedBuffer.171" = type { [32 x i8] }
%"struct.spirv_cross::SPIRType::ImageType" = type { %"class.spirv_cross::TypedID.163", i32, i8, i8, i8, i32, i32, i32 }
%"class.std::unordered_set.172" = type { %"class.std::_Hashtable.173" }
%"class.std::_Hashtable.173" = 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 }

@_ZTIN11spirv_cross13CompilerErrorE = external dso_local constant { ptr, ptr, ptr }, align 8
@.str.11 = external hidden unnamed_addr constant [101 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [50 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 i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE1EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4)) #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(336) ptr @_ZNK11spirv_cross8Compiler3getINS_8SPIRTypeEEERKT_j(ptr noundef nonnull align 8 dereferenceable(3176), i32 noundef) #2 align 2

declare ptr @__cxa_allocate_exception(i64)

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

declare void @__cxa_free_exception(ptr)

; Function Attrs: nounwind
declare void @_ZNSt13runtime_errorD2Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #3

declare void @__cxa_throw(ptr, ptr, ptr)

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpE(ptr noundef nonnull align 8 dereferenceable(3176) %0, ptr noundef nonnull align 8 dereferenceable(76) %1) #2 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca %class.anon.266, align 8
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  store ptr %0, ptr %3, align 8, !tbaa !5
  store ptr %1, ptr %4, align 8, !tbaa !5
  %21 = load ptr, ptr %3, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %5) #5
  %22 = load ptr, ptr %4, align 8, !tbaa !5
  %23 = getelementptr inbounds %"struct.spirv_cross::SPIRConstantOp", ptr %22, i32 0, i32 3
  %24 = call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE1EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %23)
  %25 = call noundef nonnull align 8 dereferenceable(336) ptr @_ZNK11spirv_cross8Compiler3getINS_8SPIRTypeEEERKT_j(ptr noundef nonnull align 8 dereferenceable(3176) %21, i32 noundef %24)
  store ptr %25, ptr %5, align 8, !tbaa !5
  %26 = load ptr, ptr %5, align 8, !tbaa !5
  %27 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %26, i32 0, i32 2
  %28 = load i32, ptr %27, align 8, !tbaa !9
  %29 = icmp ne i32 %28, 8
  br i1 %29, label %30, label %47

30:                                               ; preds = %2
  %31 = load ptr, ptr %5, align 8, !tbaa !5
  %32 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %31, i32 0, i32 2
  %33 = load i32, ptr %32, align 8, !tbaa !9
  %34 = icmp ne i32 %33, 7
  br i1 %34, label %35, label %47

35:                                               ; preds = %30
  %36 = load ptr, ptr %5, align 8, !tbaa !5
  %37 = getelementptr inbounds %"struct.spirv_cross::SPIRType", ptr %36, i32 0, i32 2
  %38 = load i32, ptr %37, align 8, !tbaa !9
  %39 = icmp ne i32 %38, 2
  br i1 %39, label %40, label %47

40:                                               ; preds = %35
  %41 = call ptr @__cxa_allocate_exception(i64 16) #5
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %41, ptr noundef @.str.11)
          to label %42 unwind label %43

42:                                               ; preds = %40
  call void @__cxa_throw(ptr %41, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #6
  unreachable

43:                                               ; preds = %40
  %44 = landingpad { ptr, i32 }
          cleanup
  %45 = extractvalue { ptr, i32 } %44, 0
  store ptr %45, ptr %6, align 8
  %46 = extractvalue { ptr, i32 } %44, 1
  store i32 %46, ptr %7, align 4
  call void @__cxa_free_exception(ptr %41) #5
  br label %541

47:                                               ; preds = %35, %30, %2
  %48 = load ptr, ptr %5, align 8, !tbaa !5
  %49 = call noundef zeroext i1 @_ZNK11spirv_cross8Compiler9is_scalarERKNS_8SPIRTypeE(ptr noundef nonnull align 8 dereferenceable(3176) %21, ptr noundef nonnull align 8 dereferenceable(336) %48)
  br i1 %49, label %57, label %50

50:                                               ; preds = %47
  %51 = call ptr @__cxa_allocate_exception(i64 16) #5
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %51, ptr noundef @.str.12)
          to label %52 unwind label %53

52:                                               ; preds = %50
  call void @__cxa_throw(ptr %51, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #6
  unreachable

53:                                               ; preds = %50
  %54 = landingpad { ptr, i32 }
          cleanup
  %55 = extractvalue { ptr, i32 } %54, 0
  store ptr %55, ptr %6, align 8
  %56 = extractvalue { ptr, i32 } %54, 1
  store i32 %56, ptr %7, align 4
  call void @__cxa_free_exception(ptr %51) #5
  br label %541

57:                                               ; preds = %47
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #5
  store i32 0, ptr %8, align 4, !tbaa !38
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #5
  %58 = getelementptr inbounds %class.anon.266, ptr %9, i32 0, i32 0
  store ptr %21, ptr %58, align 8, !tbaa !39
  %59 = load ptr, ptr %4, align 8, !tbaa !5
  %60 = getelementptr inbounds %"struct.spirv_cross::SPIRConstantOp", ptr %59, i32 0, i32 1
  %61 = load i32, ptr %60, align 4, !tbaa !41
  switch i32 %61, label %531 [
    i32 128, label %62
    i32 130, label %74
    i32 132, label %86
    i32 199, label %98
    i32 197, label %110
    i32 198, label %122
    i32 167, label %134
    i32 166, label %146
    i32 196, label %158
    i32 194, label %170
    i32 195, label %182
    i32 164, label %194
    i32 165, label %207
    i32 170, label %220
    i32 171, label %233
    i32 176, label %246
    i32 178, label %259
    i32 172, label %272
    i32 174, label %285
    i32 177, label %298
    i32 179, label %311
    i32 173, label %324
    i32 175, label %337
    i32 168, label %350
    i32 200, label %359
    i32 126, label %366
    i32 169, label %373
    i32 137, label %394
    i32 138, label %418
    i32 139, label %442
    i32 134, label %483
    i32 135, label %507
  ]

62:                                               ; preds = %57
  %63 = load ptr, ptr %4, align 8, !tbaa !5
  %64 = getelementptr inbounds %"struct.spirv_cross::SPIRConstantOp", ptr %63, i32 0, i32 2
  %65 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %64, i64 noundef 0) #5
  %66 = load i32, ptr %65, align 4, !tbaa !38
  %67 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %9, i32 noundef %66)
  %68 = load ptr, ptr %4, align 8, !tbaa !5
  %69 = getelementptr inbounds %"struct.spirv_cross::SPIRConstantOp", ptr %68, i32 0, i32 2
  %70 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %69, i64 noundef 1) #5
  %71 = load i32, ptr %70, align 4, !tbaa !38
  %72 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %9, i32 noundef %71)
  %73 = add i32 %67, %72
  store i32 %73, ptr %8, align 4, !tbaa !38
  br label %538

74:                                               ; preds = %57
  %75 = load ptr, ptr %4, align 8, !tbaa !5
  %76 = getelementptr inbounds %"struct.spirv_cross::SPIRConstantOp", ptr %75, i32 0, i32 2
  %77 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %76, i64 noundef 0) #5
  %78 = load i32, ptr %77, align 4, !tbaa !38
  %79 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %9, i32 noundef %78)
  %80 = load ptr, ptr %4, align 8, !tbaa !5
  %81 = getelementptr inbounds %"struct.spirv_cross::SPIRConstantOp", ptr %80, i32 0, i32 2
  %82 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %81, i64 noundef 1) #5
  %83 = load i32, ptr %82, align 4, !tbaa !38
  %84 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %9, i32 noundef %83)
  %85 = sub i32 %79, %84
  store i32 %85, ptr %8, align 4, !tbaa !38
  br label %538

86:                                               ; preds = %57
  %87 = load ptr, ptr %4, align 8, !tbaa !5
  %88 = getelementptr inbounds %"struct.spirv_cross::SPIRConstantOp", ptr %87, i32 0, i32 2
  %89 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %88, i64 noundef 0) #5
  %90 = load i32, ptr %89, align 4, !tbaa !38
  %91 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %9, i32 noundef %90)
  %92 = load ptr, ptr %4, align 8, !tbaa !5
  %93 = getelementptr inbounds %"struct.spirv_cross::SPIRConstantOp", ptr %92, i32 0, i32 2
  %94 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %93, i64 noundef 1) #5
  %95 = load i32, ptr %94, align 4, !tbaa !38
  %96 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %9, i32 noundef %95)
  %97 = mul i32 %91, %96
  store i32 %97, ptr %8, align 4, !tbaa !38
  br label %538

98:                                               ; preds = %57
  %99 = load ptr, ptr %4, align 8, !tbaa !5
  %100 = getelementptr inbounds %"struct.spirv_cross::SPIRConstantOp", ptr %99, i32 0, i32 2
  %101 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %100, i64 noundef 0) #5
  %102 = load i32, ptr %101, align 4, !tbaa !38
  %103 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %9, i32 noundef %102)
  %104 = load ptr, ptr %4, align 8, !tbaa !5
  %105 = getelementptr inbounds %"struct.spirv_cross::SPIRConstantOp", ptr %104, i32 0, i32 2
  %106 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %105, i64 noundef 1) #5
  %107 = load i32, ptr %106, align 4, !tbaa !38
  %108 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %9, i32 noundef %107)
  %109 = and i32 %103, %108
  store i32 %109, ptr %8, align 4, !tbaa !38
  br label %538

110:                                              ; preds = %57
  %111 = load ptr, ptr %4, align 8, !tbaa !5
  %112 = getelementptr inbounds %"struct.spirv_cross::SPIRConstantOp", ptr %111, i32 0, i32 2
  %113 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %112, i64 noundef 0) #5
  %114 = load i32, ptr %113, align 4, !tbaa !38
  %115 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %9, i32 noundef %114)
  %116 = load ptr, ptr %4, align 8, !tbaa !5
  %117 = getelementptr inbounds %"struct.spirv_cross::SPIRConstantOp", ptr %116, i32 0, i32 2
  %118 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %117, i64 noundef 1) #5
  %119 = load i32, ptr %118, align 4, !tbaa !38
  %120 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %9, i32 noundef %119)
  %121 = or i32 %115, %120
  store i32 %121, ptr %8, align 4, !tbaa !38
  br label %538

122:                                              ; preds = %57
  %123 = load ptr, ptr %4, align 8, !tbaa !5
  %124 = getelementptr inbounds %"struct.spirv_cross::SPIRConstantOp", ptr %123, i32 0, i32 2
  %125 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %124, i64 noundef 0) #5
  %126 = load i32, ptr %125, align 4, !tbaa !38
  %127 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %9, i32 noundef %126)
  %128 = load ptr, ptr %4, align 8, !tbaa !5
  %129 = getelementptr inbounds %"struct.spirv_cross::SPIRConstantOp", ptr %128, i32 0, i32 2
  %130 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %129, i64 noundef 1) #5
  %131 = load i32, ptr %130, align 4, !tbaa !38
  %132 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %9, i32 noundef %131)
  %133 = xor i32 %127, %132
  store i32 %133, ptr %8, align 4, !tbaa !38
  br label %538

134:                                              ; preds = %57
  %135 = load ptr, ptr %4, align 8, !tbaa !5
  %136 = getelementptr inbounds %"struct.spirv_cross::SPIRConstantOp", ptr %135, i32 0, i32 2
  %137 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef 0) #5
  %138 = load i32, ptr %137, align 4, !tbaa !38
  %139 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %9, i32 noundef %138)
  %140 = load ptr, ptr %4, align 8, !tbaa !5
  %141 = getelementptr inbounds %"struct.spirv_cross::SPIRConstantOp", ptr %140, i32 0, i32 2
  %142 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %141, i64 noundef 1) #5
  %143 = load i32, ptr %142, align 4, !tbaa !38
  %144 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %9, i32 noundef %143)
  %145 = and i32 %139, %144
  store i32 %145, ptr %8, align 4, !tbaa !38
  br label %538

146:                                              ; preds = %57
  %147 = load ptr, ptr %4, align 8, !tbaa !5
  %148 = getelementptr inbounds %"struct.spirv_cross::SPIRConstantOp", ptr %147, i32 0, i32 2
  %149 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %148, i64 noundef 0) #5
  %150 = load i32, ptr %149, align 4, !tbaa !38
  %151 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %9, i32 noundef %150)
  %152 = load ptr, ptr %4, align 8, !tbaa !5
  %153 = getelementptr inbounds %"struct.spirv_cross::SPIRConstantOp", ptr %152, i32 0, i32 2
  %154 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %153, i64 noundef 1) #5
  %155 = load i32, ptr %154, align 4, !tbaa !38
  %156 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %9, i32 noundef %155)
  %157 = or i32 %151, %156
  store i32 %157, ptr %8, align 4, !tbaa !38
  br label %538

158:                                              ; preds = %57
  %159 = load ptr, ptr %4, align 8, !tbaa !5
  %160 = getelementptr inbounds %"struct.spirv_cross::SPIRConstantOp", ptr %159, i32 0, i32 2
  %161 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %160, i64 noundef 0) #5
  %162 = load i32, ptr %161, align 4, !tbaa !38
  %163 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %9, i32 noundef %162)
  %164 = load ptr, ptr %4, align 8, !tbaa !5
  %165 = getelementptr inbounds %"struct.spirv_cross::SPIRConstantOp", ptr %164, i32 0, i32 2
  %166 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %165, i64 noundef 1) #5
  %167 = load i32, ptr %166, align 4, !tbaa !38
  %168 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %9, i32 noundef %167)
  %169 = shl i32 %163, %168
  store i32 %169, ptr %8, align 4, !tbaa !38
  br label %538

170:                                              ; preds = %57
  %171 = load ptr, ptr %4, align 8, !tbaa !5
  %172 = getelementptr inbounds %"struct.spirv_cross::SPIRConstantOp", ptr %171, i32 0, i32 2
  %173 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %172, i64 noundef 0) #5
  %174 = load i32, ptr %173, align 4, !tbaa !38
  %175 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %9, i32 noundef %174)
  %176 = load ptr, ptr %4, align 8, !tbaa !5
  %177 = getelementptr inbounds %"struct.spirv_cross::SPIRConstantOp", ptr %176, i32 0, i32 2
  %178 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %177, i64 noundef 1) #5
  %179 = load i32, ptr %178, align 4, !tbaa !38
  %180 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %9, i32 noundef %179)
  %181 = lshr i32 %175, %180
  store i32 %181, ptr %8, align 4, !tbaa !38
  br label %538

182:                                              ; preds = %57
  %183 = load ptr, ptr %4, align 8, !tbaa !5
  %184 = getelementptr inbounds %"struct.spirv_cross::SPIRConstantOp", ptr %183, i32 0, i32 2
  %185 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %184, i64 noundef 0) #5
  %186 = load i32, ptr %185, align 4, !tbaa !38
  %187 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %9, i32 noundef %186)
  %188 = load ptr, ptr %4, align 8, !tbaa !5
  %189 = getelementptr inbounds %"struct.spirv_cross::SPIRConstantOp", ptr %188, i32 0, i32 2
  %190 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %189, i64 noundef 1) #5
  %191 = load i32, ptr %190, align 4, !tbaa !38
  %192 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %9, i32 noundef %191)
  %193 = ashr i32 %187, %192
  store i32 %193, ptr %8, align 4, !tbaa !38
  br label %538

194:                                              ; preds = %57
  %195 = load ptr, ptr %4, align 8, !tbaa !5
  %196 = getelementptr inbounds %"struct.spirv_cross::SPIRConstantOp", ptr %195, i32 0, i32 2
  %197 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %196, i64 noundef 0) #5
  %198 = load i32, ptr %197, align 4, !tbaa !38
  %199 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %9, i32 noundef %198)
  %200 = load ptr, ptr %4, align 8, !tbaa !5
  %201 = getelementptr inbounds %"struct.spirv_cross::SPIRConstantOp", ptr %200, i32 0, i32 2
  %202 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %201, i64 noundef 1) #5
  %203 = load i32, ptr %202, align 4, !tbaa !38
  %204 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %9, i32 noundef %203)
  %205 = icmp eq i32 %199, %204
  %206 = zext i1 %205 to i32
  store i32 %206, ptr %8, align 4, !tbaa !38
  br label %538

207:                                              ; preds = %57
  %208 = load ptr, ptr %4, align 8, !tbaa !5
  %209 = getelementptr inbounds %"struct.spirv_cross::SPIRConstantOp", ptr %208, i32 0, i32 2
  %210 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %209, i64 noundef 0) #5
  %211 = load i32, ptr %210, align 4, !tbaa !38
  %212 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %9, i32 noundef %211)
  %213 = load ptr, ptr %4, align 8, !tbaa !5
  %214 = getelementptr inbounds %"struct.spirv_cross::SPIRConstantOp", ptr %213, i32 0, i32 2
  %215 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %214, i64 noundef 1) #5
  %216 = load i32, ptr %215, align 4, !tbaa !38
  %217 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %9, i32 noundef %216)
  %218 = icmp ne i32 %212, %217
  %219 = zext i1 %218 to i32
  store i32 %219, ptr %8, align 4, !tbaa !38
  br label %538

220:                                              ; preds = %57
  %221 = load ptr, ptr %4, align 8, !tbaa !5
  %222 = getelementptr inbounds %"struct.spirv_cross::SPIRConstantOp", ptr %221, i32 0, i32 2
  %223 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %222, i64 noundef 0) #5
  %224 = load i32, ptr %223, align 4, !tbaa !38
  %225 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %9, i32 noundef %224)
  %226 = load ptr, ptr %4, align 8, !tbaa !5
  %227 = getelementptr inbounds %"struct.spirv_cross::SPIRConstantOp", ptr %226, i32 0, i32 2
  %228 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %227, i64 noundef 1) #5
  %229 = load i32, ptr %228, align 4, !tbaa !38
  %230 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %9, i32 noundef %229)
  %231 = icmp eq i32 %225, %230
  %232 = zext i1 %231 to i32
  store i32 %232, ptr %8, align 4, !tbaa !38
  br label %538

233:                                              ; preds = %57
  %234 = load ptr, ptr %4, align 8, !tbaa !5
  %235 = getelementptr inbounds %"struct.spirv_cross::SPIRConstantOp", ptr %234, i32 0, i32 2
  %236 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %235, i64 noundef 0) #5
  %237 = load i32, ptr %236, align 4, !tbaa !38
  %238 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %9, i32 noundef %237)
  %239 = load ptr, ptr %4, align 8, !tbaa !5
  %240 = getelementptr inbounds %"struct.spirv_cross::SPIRConstantOp", ptr %239, i32 0, i32 2
  %241 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %240, i64 noundef 1) #5
  %242 = load i32, ptr %241, align 4, !tbaa !38
  %243 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %9, i32 noundef %242)
  %244 = icmp ne i32 %238, %243
  %245 = zext i1 %244 to i32
  store i32 %245, ptr %8, align 4, !tbaa !38
  br label %538

246:                                              ; preds = %57
  %247 = load ptr, ptr %4, align 8, !tbaa !5
  %248 = getelementptr inbounds %"struct.spirv_cross::SPIRConstantOp", ptr %247, i32 0, i32 2
  %249 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %248, i64 noundef 0) #5
  %250 = load i32, ptr %249, align 4, !tbaa !38
  %251 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %9, i32 noundef %250)
  %252 = load ptr, ptr %4, align 8, !tbaa !5
  %253 = getelementptr inbounds %"struct.spirv_cross::SPIRConstantOp", ptr %252, i32 0, i32 2
  %254 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %253, i64 noundef 1) #5
  %255 = load i32, ptr %254, align 4, !tbaa !38
  %256 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %9, i32 noundef %255)
  %257 = icmp ult i32 %251, %256
  %258 = zext i1 %257 to i32
  store i32 %258, ptr %8, align 4, !tbaa !38
  br label %538

259:                                              ; preds = %57
  %260 = load ptr, ptr %4, align 8, !tbaa !5
  %261 = getelementptr inbounds %"struct.spirv_cross::SPIRConstantOp", ptr %260, i32 0, i32 2
  %262 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %261, i64 noundef 0) #5
  %263 = load i32, ptr %262, align 4, !tbaa !38
  %264 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %9, i32 noundef %263)
  %265 = load ptr, ptr %4, align 8, !tbaa !5
  %266 = getelementptr inbounds %"struct.spirv_cross::SPIRConstantOp", ptr %265, i32 0, i32 2
  %267 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %266, i64 noundef 1) #5
  %268 = load i32, ptr %267, align 4, !tbaa !38
  %269 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %9, i32 noundef %268)
  %270 = icmp ule i32 %264, %269
  %271 = zext i1 %270 to i32
  store i32 %271, ptr %8, align 4, !tbaa !38
  br label %538

272:                                              ; preds = %57
  %273 = load ptr, ptr %4, align 8, !tbaa !5
  %274 = getelementptr inbounds %"struct.spirv_cross::SPIRConstantOp", ptr %273, i32 0, i32 2
  %275 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %274, i64 noundef 0) #5
  %276 = load i32, ptr %275, align 4, !tbaa !38
  %277 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %9, i32 noundef %276)
  %278 = load ptr, ptr %4, align 8, !tbaa !5
  %279 = getelementptr inbounds %"struct.spirv_cross::SPIRConstantOp", ptr %278, i32 0, i32 2
  %280 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %279, i64 noundef 1) #5
  %281 = load i32, ptr %280, align 4, !tbaa !38
  %282 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %9, i32 noundef %281)
  %283 = icmp ugt i32 %277, %282
  %284 = zext i1 %283 to i32
  store i32 %284, ptr %8, align 4, !tbaa !38
  br label %538

285:                                              ; preds = %57
  %286 = load ptr, ptr %4, align 8, !tbaa !5
  %287 = getelementptr inbounds %"struct.spirv_cross::SPIRConstantOp", ptr %286, i32 0, i32 2
  %288 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %287, i64 noundef 0) #5
  %289 = load i32, ptr %288, align 4, !tbaa !38
  %290 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %9, i32 noundef %289)
  %291 = load ptr, ptr %4, align 8, !tbaa !5
  %292 = getelementptr inbounds %"struct.spirv_cross::SPIRConstantOp", ptr %291, i32 0, i32 2
  %293 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %292, i64 noundef 1) #5
  %294 = load i32, ptr %293, align 4, !tbaa !38
  %295 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %9, i32 noundef %294)
  %296 = icmp uge i32 %290, %295
  %297 = zext i1 %296 to i32
  store i32 %297, ptr %8, align 4, !tbaa !38
  br label %538

298:                                              ; preds = %57
  %299 = load ptr, ptr %4, align 8, !tbaa !5
  %300 = getelementptr inbounds %"struct.spirv_cross::SPIRConstantOp", ptr %299, i32 0, i32 2
  %301 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %300, i64 noundef 0) #5
  %302 = load i32, ptr %301, align 4, !tbaa !38
  %303 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %9, i32 noundef %302)
  %304 = load ptr, ptr %4, align 8, !tbaa !5
  %305 = getelementptr inbounds %"struct.spirv_cross::SPIRConstantOp", ptr %304, i32 0, i32 2
  %306 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %305, i64 noundef 1) #5
  %307 = load i32, ptr %306, align 4, !tbaa !38
  %308 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %9, i32 noundef %307)
  %309 = icmp slt i32 %303, %308
  %310 = zext i1 %309 to i32
  store i32 %310, ptr %8, align 4, !tbaa !38
  br label %538

311:                                              ; preds = %57
  %312 = load ptr, ptr %4, align 8, !tbaa !5
  %313 = getelementptr inbounds %"struct.spirv_cross::SPIRConstantOp", ptr %312, i32 0, i32 2
  %314 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %313, i64 noundef 0) #5
  %315 = load i32, ptr %314, align 4, !tbaa !38
  %316 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %9, i32 noundef %315)
  %317 = load ptr, ptr %4, align 8, !tbaa !5
  %318 = getelementptr inbounds %"struct.spirv_cross::SPIRConstantOp", ptr %317, i32 0, i32 2
  %319 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %318, i64 noundef 1) #5
  %320 = load i32, ptr %319, align 4, !tbaa !38
  %321 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %9, i32 noundef %320)
  %322 = icmp sle i32 %316, %321
  %323 = zext i1 %322 to i32
  store i32 %323, ptr %8, align 4, !tbaa !38
  br label %538

324:                                              ; preds = %57
  %325 = load ptr, ptr %4, align 8, !tbaa !5
  %326 = getelementptr inbounds %"struct.spirv_cross::SPIRConstantOp", ptr %325, i32 0, i32 2
  %327 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %326, i64 noundef 0) #5
  %328 = load i32, ptr %327, align 4, !tbaa !38
  %329 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %9, i32 noundef %328)
  %330 = load ptr, ptr %4, align 8, !tbaa !5
  %331 = getelementptr inbounds %"struct.spirv_cross::SPIRConstantOp", ptr %330, i32 0, i32 2
  %332 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %331, i64 noundef 1) #5
  %333 = load i32, ptr %332, align 4, !tbaa !38
  %334 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %9, i32 noundef %333)
  %335 = icmp sgt i32 %329, %334
  %336 = zext i1 %335 to i32
  store i32 %336, ptr %8, align 4, !tbaa !38
  br label %538

337:                                              ; preds = %57
  %338 = load ptr, ptr %4, align 8, !tbaa !5
  %339 = getelementptr inbounds %"struct.spirv_cross::SPIRConstantOp", ptr %338, i32 0, i32 2
  %340 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %339, i64 noundef 0) #5
  %341 = load i32, ptr %340, align 4, !tbaa !38
  %342 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %9, i32 noundef %341)
  %343 = load ptr, ptr %4, align 8, !tbaa !5
  %344 = getelementptr inbounds %"struct.spirv_cross::SPIRConstantOp", ptr %343, i32 0, i32 2
  %345 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %344, i64 noundef 1) #5
  %346 = load i32, ptr %345, align 4, !tbaa !38
  %347 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %9, i32 noundef %346)
  %348 = icmp sge i32 %342, %347
  %349 = zext i1 %348 to i32
  store i32 %349, ptr %8, align 4, !tbaa !38
  br label %538

350:                                              ; preds = %57
  %351 = load ptr, ptr %4, align 8, !tbaa !5
  %352 = getelementptr inbounds %"struct.spirv_cross::SPIRConstantOp", ptr %351, i32 0, i32 2
  %353 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %352, i64 noundef 0) #5
  %354 = load i32, ptr %353, align 4, !tbaa !38
  %355 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %9, i32 noundef %354)
  %356 = icmp ne i32 %355, 0
  %357 = xor i1 %356, true
  %358 = zext i1 %357 to i32
  store i32 %358, ptr %8, align 4, !tbaa !38
  br label %538

359:                                              ; preds = %57
  %360 = load ptr, ptr %4, align 8, !tbaa !5
  %361 = getelementptr inbounds %"struct.spirv_cross::SPIRConstantOp", ptr %360, i32 0, i32 2
  %362 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %361, i64 noundef 0) #5
  %363 = load i32, ptr %362, align 4, !tbaa !38
  %364 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %9, i32 noundef %363)
  %365 = xor i32 %364, -1
  store i32 %365, ptr %8, align 4, !tbaa !38
  br label %538

366:                                              ; preds = %57
  %367 = load ptr, ptr %4, align 8, !tbaa !5
  %368 = getelementptr inbounds %"struct.spirv_cross::SPIRConstantOp", ptr %367, i32 0, i32 2
  %369 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %368, i64 noundef 0) #5
  %370 = load i32, ptr %369, align 4, !tbaa !38
  %371 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %9, i32 noundef %370)
  %372 = sub nsw i32 0, %371
  store i32 %372, ptr %8, align 4, !tbaa !38
  br label %538

373:                                              ; preds = %57
  %374 = load ptr, ptr %4, align 8, !tbaa !5
  %375 = getelementptr inbounds %"struct.spirv_cross::SPIRConstantOp", ptr %374, i32 0, i32 2
  %376 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %375, i64 noundef 0) #5
  %377 = load i32, ptr %376, align 4, !tbaa !38
  %378 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %9, i32 noundef %377)
  %379 = icmp ne i32 %378, 0
  br i1 %379, label %380, label %386

380:                                              ; preds = %373
  %381 = load ptr, ptr %4, align 8, !tbaa !5
  %382 = getelementptr inbounds %"struct.spirv_cross::SPIRConstantOp", ptr %381, i32 0, i32 2
  %383 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %382, i64 noundef 1) #5
  %384 = load i32, ptr %383, align 4, !tbaa !38
  %385 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %9, i32 noundef %384)
  br label %392

386:                                              ; preds = %373
  %387 = load ptr, ptr %4, align 8, !tbaa !5
  %388 = getelementptr inbounds %"struct.spirv_cross::SPIRConstantOp", ptr %387, i32 0, i32 2
  %389 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %388, i64 noundef 2) #5
  %390 = load i32, ptr %389, align 4, !tbaa !38
  %391 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %9, i32 noundef %390)
  br label %392

392:                                              ; preds = %386, %380
  %393 = phi i32 [ %385, %380 ], [ %391, %386 ]
  store i32 %393, ptr %8, align 4, !tbaa !38
  br label %538

394:                                              ; preds = %57
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #5
  %395 = load ptr, ptr %4, align 8, !tbaa !5
  %396 = getelementptr inbounds %"struct.spirv_cross::SPIRConstantOp", ptr %395, i32 0, i32 2
  %397 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %396, i64 noundef 0) #5
  %398 = load i32, ptr %397, align 4, !tbaa !38
  %399 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %9, i32 noundef %398)
  store i32 %399, ptr %10, align 4, !tbaa !38
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #5
  %400 = load ptr, ptr %4, align 8, !tbaa !5
  %401 = getelementptr inbounds %"struct.spirv_cross::SPIRConstantOp", ptr %400, i32 0, i32 2
  %402 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %401, i64 noundef 1) #5
  %403 = load i32, ptr %402, align 4, !tbaa !38
  %404 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %9, i32 noundef %403)
  store i32 %404, ptr %11, align 4, !tbaa !38
  %405 = load i32, ptr %11, align 4, !tbaa !38
  %406 = icmp eq i32 %405, 0
  br i1 %406, label %407, label %414

407:                                              ; preds = %394
  %408 = call ptr @__cxa_allocate_exception(i64 16) #5
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %408, ptr noundef @.str.13)
          to label %409 unwind label %410

409:                                              ; preds = %407
  call void @__cxa_throw(ptr %408, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #6
  unreachable

410:                                              ; preds = %407
  %411 = landingpad { ptr, i32 }
          cleanup
  %412 = extractvalue { ptr, i32 } %411, 0
  store ptr %412, ptr %6, align 8
  %413 = extractvalue { ptr, i32 } %411, 1
  store i32 %413, ptr %7, align 4
  call void @__cxa_free_exception(ptr %408) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #5
  br label %540

414:                                              ; preds = %394
  %415 = load i32, ptr %10, align 4, !tbaa !38
  %416 = load i32, ptr %11, align 4, !tbaa !38
  %417 = urem i32 %415, %416
  store i32 %417, ptr %8, align 4, !tbaa !38
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #5
  br label %538

418:                                              ; preds = %57
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #5
  %419 = load ptr, ptr %4, align 8, !tbaa !5
  %420 = getelementptr inbounds %"struct.spirv_cross::SPIRConstantOp", ptr %419, i32 0, i32 2
  %421 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %420, i64 noundef 0) #5
  %422 = load i32, ptr %421, align 4, !tbaa !38
  %423 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %9, i32 noundef %422)
  store i32 %423, ptr %12, align 4, !tbaa !38
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #5
  %424 = load ptr, ptr %4, align 8, !tbaa !5
  %425 = getelementptr inbounds %"struct.spirv_cross::SPIRConstantOp", ptr %424, i32 0, i32 2
  %426 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %425, i64 noundef 1) #5
  %427 = load i32, ptr %426, align 4, !tbaa !38
  %428 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %9, i32 noundef %427)
  store i32 %428, ptr %13, align 4, !tbaa !38
  %429 = load i32, ptr %13, align 4, !tbaa !38
  %430 = icmp eq i32 %429, 0
  br i1 %430, label %431, label %438

431:                                              ; preds = %418
  %432 = call ptr @__cxa_allocate_exception(i64 16) #5
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %432, ptr noundef @.str.14)
          to label %433 unwind label %434

433:                                              ; preds = %431
  call void @__cxa_throw(ptr %432, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #6
  unreachable

434:                                              ; preds = %431
  %435 = landingpad { ptr, i32 }
          cleanup
  %436 = extractvalue { ptr, i32 } %435, 0
  store ptr %436, ptr %6, align 8
  %437 = extractvalue { ptr, i32 } %435, 1
  store i32 %437, ptr %7, align 4
  call void @__cxa_free_exception(ptr %432) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #5
  br label %540

438:                                              ; preds = %418
  %439 = load i32, ptr %12, align 4, !tbaa !38
  %440 = load i32, ptr %13, align 4, !tbaa !38
  %441 = srem i32 %439, %440
  store i32 %441, ptr %8, align 4, !tbaa !38
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #5
  br label %538

442:                                              ; preds = %57
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #5
  %443 = load ptr, ptr %4, align 8, !tbaa !5
  %444 = getelementptr inbounds %"struct.spirv_cross::SPIRConstantOp", ptr %443, i32 0, i32 2
  %445 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %444, i64 noundef 0) #5
  %446 = load i32, ptr %445, align 4, !tbaa !38
  %447 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %9, i32 noundef %446)
  store i32 %447, ptr %14, align 4, !tbaa !38
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #5
  %448 = load ptr, ptr %4, align 8, !tbaa !5
  %449 = getelementptr inbounds %"struct.spirv_cross::SPIRConstantOp", ptr %448, i32 0, i32 2
  %450 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %449, i64 noundef 1) #5
  %451 = load i32, ptr %450, align 4, !tbaa !38
  %452 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %9, i32 noundef %451)
  store i32 %452, ptr %15, align 4, !tbaa !38
  %453 = load i32, ptr %15, align 4, !tbaa !38
  %454 = icmp eq i32 %453, 0
  br i1 %454, label %455, label %462

455:                                              ; preds = %442
  %456 = call ptr @__cxa_allocate_exception(i64 16) #5
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %456, ptr noundef @.str.15)
          to label %457 unwind label %458

457:                                              ; preds = %455
  call void @__cxa_throw(ptr %456, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #6
  unreachable

458:                                              ; preds = %455
  %459 = landingpad { ptr, i32 }
          cleanup
  %460 = extractvalue { ptr, i32 } %459, 0
  store ptr %460, ptr %6, align 8
  %461 = extractvalue { ptr, i32 } %459, 1
  store i32 %461, ptr %7, align 4
  call void @__cxa_free_exception(ptr %456) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #5
  br label %540

462:                                              ; preds = %442
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #5
  %463 = load i32, ptr %14, align 4, !tbaa !38
  %464 = load i32, ptr %15, align 4, !tbaa !38
  %465 = srem i32 %463, %464
  store i32 %465, ptr %16, align 4, !tbaa !38
  %466 = load i32, ptr %15, align 4, !tbaa !38
  %467 = icmp slt i32 %466, 0
  br i1 %467, label %468, label %471

468:                                              ; preds = %462
  %469 = load i32, ptr %16, align 4, !tbaa !38
  %470 = icmp sgt i32 %469, 0
  br i1 %470, label %477, label %471

471:                                              ; preds = %468, %462
  %472 = load i32, ptr %15, align 4, !tbaa !38
  %473 = icmp sgt i32 %472, 0
  br i1 %473, label %474, label %481

474:                                              ; preds = %471
  %475 = load i32, ptr %16, align 4, !tbaa !38
  %476 = icmp slt i32 %475, 0
  br i1 %476, label %477, label %481

477:                                              ; preds = %474, %468
  %478 = load i32, ptr %15, align 4, !tbaa !38
  %479 = load i32, ptr %16, align 4, !tbaa !38
  %480 = add nsw i32 %479, %478
  store i32 %480, ptr %16, align 4, !tbaa !38
  br label %481

481:                                              ; preds = %477, %474, %471
  %482 = load i32, ptr %16, align 4, !tbaa !38
  store i32 %482, ptr %8, align 4, !tbaa !38
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #5
  br label %538

483:                                              ; preds = %57
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #5
  %484 = load ptr, ptr %4, align 8, !tbaa !5
  %485 = getelementptr inbounds %"struct.spirv_cross::SPIRConstantOp", ptr %484, i32 0, i32 2
  %486 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %485, i64 noundef 0) #5
  %487 = load i32, ptr %486, align 4, !tbaa !38
  %488 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %9, i32 noundef %487)
  store i32 %488, ptr %17, align 4, !tbaa !38
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #5
  %489 = load ptr, ptr %4, align 8, !tbaa !5
  %490 = getelementptr inbounds %"struct.spirv_cross::SPIRConstantOp", ptr %489, i32 0, i32 2
  %491 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %490, i64 noundef 1) #5
  %492 = load i32, ptr %491, align 4, !tbaa !38
  %493 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %9, i32 noundef %492)
  store i32 %493, ptr %18, align 4, !tbaa !38
  %494 = load i32, ptr %18, align 4, !tbaa !38
  %495 = icmp eq i32 %494, 0
  br i1 %495, label %496, label %503

496:                                              ; preds = %483
  %497 = call ptr @__cxa_allocate_exception(i64 16) #5
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %497, ptr noundef @.str.16)
          to label %498 unwind label %499

498:                                              ; preds = %496
  call void @__cxa_throw(ptr %497, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #6
  unreachable

499:                                              ; preds = %496
  %500 = landingpad { ptr, i32 }
          cleanup
  %501 = extractvalue { ptr, i32 } %500, 0
  store ptr %501, ptr %6, align 8
  %502 = extractvalue { ptr, i32 } %500, 1
  store i32 %502, ptr %7, align 4
  call void @__cxa_free_exception(ptr %497) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #5
  br label %540

503:                                              ; preds = %483
  %504 = load i32, ptr %17, align 4, !tbaa !38
  %505 = load i32, ptr %18, align 4, !tbaa !38
  %506 = udiv i32 %504, %505
  store i32 %506, ptr %8, align 4, !tbaa !38
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #5
  br label %538

507:                                              ; preds = %57
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #5
  %508 = load ptr, ptr %4, align 8, !tbaa !5
  %509 = getelementptr inbounds %"struct.spirv_cross::SPIRConstantOp", ptr %508, i32 0, i32 2
  %510 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %509, i64 noundef 0) #5
  %511 = load i32, ptr %510, align 4, !tbaa !38
  %512 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %9, i32 noundef %511)
  store i32 %512, ptr %19, align 4, !tbaa !38
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #5
  %513 = load ptr, ptr %4, align 8, !tbaa !5
  %514 = getelementptr inbounds %"struct.spirv_cross::SPIRConstantOp", ptr %513, i32 0, i32 2
  %515 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %514, i64 noundef 1) #5
  %516 = load i32, ptr %515, align 4, !tbaa !38
  %517 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %9, i32 noundef %516)
  store i32 %517, ptr %20, align 4, !tbaa !38
  %518 = load i32, ptr %20, align 4, !tbaa !38
  %519 = icmp eq i32 %518, 0
  br i1 %519, label %520, label %527

520:                                              ; preds = %507
  %521 = call ptr @__cxa_allocate_exception(i64 16) #5
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %521, ptr noundef @.str.17)
          to label %522 unwind label %523

522:                                              ; preds = %520
  call void @__cxa_throw(ptr %521, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #6
  unreachable

523:                                              ; preds = %520
  %524 = landingpad { ptr, i32 }
          cleanup
  %525 = extractvalue { ptr, i32 } %524, 0
  store ptr %525, ptr %6, align 8
  %526 = extractvalue { ptr, i32 } %524, 1
  store i32 %526, ptr %7, align 4
  call void @__cxa_free_exception(ptr %521) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #5
  br label %540

527:                                              ; preds = %507
  %528 = load i32, ptr %19, align 4, !tbaa !38
  %529 = load i32, ptr %20, align 4, !tbaa !38
  %530 = sdiv i32 %528, %529
  store i32 %530, ptr %8, align 4, !tbaa !38
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #5
  br label %538

531:                                              ; preds = %57
  %532 = call ptr @__cxa_allocate_exception(i64 16) #5
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %532, ptr noundef @.str.18)
          to label %533 unwind label %534

533:                                              ; preds = %531
  call void @__cxa_throw(ptr %532, ptr @_ZTIN11spirv_cross13CompilerErrorE, ptr @_ZNSt13runtime_errorD2Ev) #6
  unreachable

534:                                              ; preds = %531
  %535 = landingpad { ptr, i32 }
          cleanup
  %536 = extractvalue { ptr, i32 } %535, 0
  store ptr %536, ptr %6, align 8
  %537 = extractvalue { ptr, i32 } %535, 1
  store i32 %537, ptr %7, align 4
  call void @__cxa_free_exception(ptr %532) #5
  br label %540

538:                                              ; preds = %527, %503, %481, %438, %414, %392, %366, %359, %350, %337, %324, %311, %298, %285, %272, %259, %246, %233, %220, %207, %194, %182, %170, %158, %146, %134, %122, %110, %98, %86, %74, %62
  %539 = load i32, ptr %8, align 4, !tbaa !38
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #5
  ret i32 %539

540:                                              ; preds = %534, %523, %499, %458, %434, %410
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #5
  br label %541

541:                                              ; preds = %540, %53, %43
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #5
  br label %542

542:                                              ; preds = %541
  %543 = load ptr, ptr %6, align 8
  %544 = load i32, ptr %7, align 4
  %545 = insertvalue { ptr, i32 } poison, ptr %543, 0
  %546 = insertvalue { ptr, i32 } %545, i32 %544, 1
  resume { ptr, i32 } %546
}

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

!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, !15, i64 16}
!10 = !{!"_ZTSN11spirv_cross8SPIRTypeE", !11, i64 0, !14, i64 12, !15, i64 16, !13, i64 20, !13, i64 24, !13, i64 28, !16, i64 32, !20, i64 88, !13, i64 120, !23, i64 124, !23, i64 125, !24, i64 128, !25, i64 136, !16, i64 192, !28, i64 248, !29, i64 272, !29, i64 276, !33, i64 280}
!11 = !{!"_ZTSN11spirv_cross8IVariantE", !12, i64 8}
!12 = !{!"_ZTSN11spirv_cross7TypedIDILNS_5TypesE0EEE", !13, i64 0}
!13 = !{!"int", !7, i64 0}
!14 = !{!"_ZTSN3spv2OpE", !7, i64 0}
!15 = !{!"_ZTSN11spirv_cross8SPIRType8BaseTypeE", !7, i64 0}
!16 = !{!"_ZTSN11spirv_cross11SmallVectorIjLm8EEE", !17, i64 0, !18, i64 16, !19, i64 24}
!17 = !{!"_ZTSN11spirv_cross10VectorViewIjEE", !6, i64 0, !18, i64 8}
!18 = !{!"long", !7, i64 0}
!19 = !{!"_ZTSN11spirv_cross13AlignedBufferIjLm8EEE", !7, i64 0}
!20 = !{!"_ZTSN11spirv_cross11SmallVectorIbLm8EEE", !21, i64 0, !18, i64 16, !22, i64 24}
!21 = !{!"_ZTSN11spirv_cross10VectorViewIbEE", !6, i64 0, !18, i64 8}
!22 = !{!"_ZTSN11spirv_cross13AlignedBufferIbLm8EEE", !7, i64 0}
!23 = !{!"bool", !7, i64 0}
!24 = !{!"_ZTSN3spv12StorageClassE", !7, i64 0}
!25 = !{!"_ZTSN11spirv_cross11SmallVectorINS_7TypedIDILNS_5TypesE1EEELm8EEE", !26, i64 0, !18, i64 16, !27, i64 24}
!26 = !{!"_ZTSN11spirv_cross10VectorViewINS_7TypedIDILNS_5TypesE1EEEEE", !6, i64 0, !18, i64 8}
!27 = !{!"_ZTSN11spirv_cross13AlignedBufferINS_7TypedIDILNS_5TypesE1EEELm8EEE", !7, i64 0}
!28 = !{!"_ZTSN11spirv_cross8SPIRType9ImageTypeE", !29, i64 0, !30, i64 4, !23, i64 8, !23, i64 9, !23, i64 10, !13, i64 12, !31, i64 16, !32, i64 20}
!29 = !{!"_ZTSN11spirv_cross7TypedIDILNS_5TypesE1EEE", !13, i64 0}
!30 = !{!"_ZTSN3spv3DimE", !7, i64 0}
!31 = !{!"_ZTSN3spv11ImageFormatE", !7, i64 0}
!32 = !{!"_ZTSN3spv15AccessQualifierE", !7, i64 0}
!33 = !{!"_ZTSSt13unordered_setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4hashIS5_ESt8equal_toIS5_ESaIS5_EE", !34, i64 0}
!34 = !{!"_ZTSSt10_HashtableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_SaIS5_ENSt8__detail9_IdentityESt8equal_toIS5_ESt4hashIS5_ENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb1ELb1ELb1EEEE", !6, i64 0, !18, i64 8, !35, i64 16, !18, i64 24, !36, i64 32, !6, i64 48}
!35 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !6, i64 0}
!36 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !37, i64 0, !18, i64 8}
!37 = !{!"float", !7, i64 0}
!38 = !{!13, !13, i64 0}
!39 = !{!40, !6, i64 0}
!40 = !{!"_ZTSZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEE3$_0", !6, i64 0}
!41 = !{!42, !14, i64 12}
!42 = !{!"_ZTSN11spirv_cross14SPIRConstantOpE", !11, i64 0, !14, i64 12, !16, i64 16, !29, i64 72}


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

%class.anon.266 = type { ptr }

@_ZTIN11spirv_cross13CompilerErrorE = external dso_local constant { ptr, ptr, ptr }, align 8
@.str.11 = external hidden unnamed_addr constant [101 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [50 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 i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE1EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(336) ptr @_ZNK11spirv_cross8Compiler3getINS_8SPIRTypeEEERKT_j(ptr noundef nonnull align 8 dereferenceable(3176), i32 noundef) local_unnamed_addr #2 align 2

declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr

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

declare void @__cxa_free_exception(ptr) local_unnamed_addr

; Function Attrs: nounwind
declare void @_ZNSt13runtime_errorD2Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #3

declare void @__cxa_throw(ptr, ptr, ptr) local_unnamed_addr

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpE(ptr noundef nonnull align 8 dereferenceable(3176) %0, ptr noundef nonnull align 8 dereferenceable(76) %1) local_unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca %class.anon.266, align 8
  %4 = getelementptr inbounds i8, ptr %1, i64 72
  %5 = tail call noundef i32 @_ZNK11spirv_cross7TypedIDILNS_5TypesE1EEcvjEv(ptr noundef nonnull align 4 dereferenceable(4) %4)
  %6 = tail call noundef nonnull align 8 dereferenceable(336) ptr @_ZNK11spirv_cross8Compiler3getINS_8SPIRTypeEEERKT_j(ptr noundef nonnull align 8 dereferenceable(3176) %0, i32 noundef %5)
  %7 = getelementptr inbounds i8, ptr %6, i64 16
  %8 = load i32, ptr %7, align 8, !tbaa !5
  switch i32 %8, label %9 [
    i32 8, label %14
    i32 7, label %14
    i32 2, label %14
  ]

9:                                                ; preds = %2
  %10 = tail call ptr @__cxa_allocate_exception(i64 16) #5
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %10, ptr noundef nonnull @.str.11)
          to label %11 unwind label %12

11:                                               ; preds = %9
  tail call void @__cxa_throw(ptr nonnull %10, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #6
  unreachable

12:                                               ; preds = %9
  %13 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %10) #5
  br label %368

14:                                               ; preds = %2, %2, %2
  %15 = tail call noundef zeroext i1 @_ZNK11spirv_cross8Compiler9is_scalarERKNS_8SPIRTypeE(ptr noundef nonnull align 8 dereferenceable(3176) %0, ptr noundef nonnull align 8 dereferenceable(336) %6)
  br i1 %15, label %21, label %16

16:                                               ; preds = %14
  %17 = tail call ptr @__cxa_allocate_exception(i64 16) #5
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %17, ptr noundef nonnull @.str.12)
          to label %18 unwind label %19

18:                                               ; preds = %16
  tail call void @__cxa_throw(ptr nonnull %17, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #6
  unreachable

19:                                               ; preds = %16
  %20 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %17) #5
  br label %368

21:                                               ; preds = %14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #5
  store ptr %0, ptr %3, align 8, !tbaa !37
  %22 = getelementptr inbounds i8, ptr %1, i64 12
  %23 = load i32, ptr %22, align 4, !tbaa !39
  switch i32 %23, label %361 [
    i32 128, label %24
    i32 130, label %33
    i32 132, label %42
    i32 199, label %51
    i32 197, label %60
    i32 198, label %69
    i32 167, label %78
    i32 166, label %87
    i32 196, label %96
    i32 194, label %105
    i32 195, label %114
    i32 164, label %123
    i32 165, label %133
    i32 170, label %143
    i32 171, label %153
    i32 176, label %163
    i32 178, label %173
    i32 172, label %183
    i32 174, label %193
    i32 177, label %203
    i32 179, label %213
    i32 173, label %223
    i32 175, label %233
    i32 168, label %243
    i32 200, label %249
    i32 126, label %255
    i32 169, label %261
    i32 137, label %274
    i32 138, label %290
    i32 139, label %306
    i32 134, label %329
    i32 135, label %345
  ]

24:                                               ; preds = %21
  %25 = getelementptr inbounds i8, ptr %1, i64 16
  %26 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %25, i64 noundef 0) #5
  %27 = load i32, ptr %26, align 4, !tbaa !41
  %28 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %3, i32 noundef %27)
  %29 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %25, i64 noundef 1) #5
  %30 = load i32, ptr %29, align 4, !tbaa !41
  %31 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %3, i32 noundef %30)
  %32 = add i32 %31, %28
  br label %366

33:                                               ; preds = %21
  %34 = getelementptr inbounds i8, ptr %1, i64 16
  %35 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %34, i64 noundef 0) #5
  %36 = load i32, ptr %35, align 4, !tbaa !41
  %37 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %3, i32 noundef %36)
  %38 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %34, i64 noundef 1) #5
  %39 = load i32, ptr %38, align 4, !tbaa !41
  %40 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %3, i32 noundef %39)
  %41 = sub i32 %37, %40
  br label %366

42:                                               ; preds = %21
  %43 = getelementptr inbounds i8, ptr %1, i64 16
  %44 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %43, i64 noundef 0) #5
  %45 = load i32, ptr %44, align 4, !tbaa !41
  %46 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %3, i32 noundef %45)
  %47 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %43, i64 noundef 1) #5
  %48 = load i32, ptr %47, align 4, !tbaa !41
  %49 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %3, i32 noundef %48)
  %50 = mul i32 %49, %46
  br label %366

51:                                               ; preds = %21
  %52 = getelementptr inbounds i8, ptr %1, i64 16
  %53 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %52, i64 noundef 0) #5
  %54 = load i32, ptr %53, align 4, !tbaa !41
  %55 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %3, i32 noundef %54)
  %56 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %52, i64 noundef 1) #5
  %57 = load i32, ptr %56, align 4, !tbaa !41
  %58 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %3, i32 noundef %57)
  %59 = and i32 %58, %55
  br label %366

60:                                               ; preds = %21
  %61 = getelementptr inbounds i8, ptr %1, i64 16
  %62 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %61, i64 noundef 0) #5
  %63 = load i32, ptr %62, align 4, !tbaa !41
  %64 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %3, i32 noundef %63)
  %65 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %61, i64 noundef 1) #5
  %66 = load i32, ptr %65, align 4, !tbaa !41
  %67 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %3, i32 noundef %66)
  %68 = or i32 %67, %64
  br label %366

69:                                               ; preds = %21
  %70 = getelementptr inbounds i8, ptr %1, i64 16
  %71 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %70, i64 noundef 0) #5
  %72 = load i32, ptr %71, align 4, !tbaa !41
  %73 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %3, i32 noundef %72)
  %74 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %70, i64 noundef 1) #5
  %75 = load i32, ptr %74, align 4, !tbaa !41
  %76 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %3, i32 noundef %75)
  %77 = xor i32 %76, %73
  br label %366

78:                                               ; preds = %21
  %79 = getelementptr inbounds i8, ptr %1, i64 16
  %80 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %79, i64 noundef 0) #5
  %81 = load i32, ptr %80, align 4, !tbaa !41
  %82 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %3, i32 noundef %81)
  %83 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %79, i64 noundef 1) #5
  %84 = load i32, ptr %83, align 4, !tbaa !41
  %85 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %3, i32 noundef %84)
  %86 = and i32 %85, %82
  br label %366

87:                                               ; preds = %21
  %88 = getelementptr inbounds i8, ptr %1, i64 16
  %89 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %88, i64 noundef 0) #5
  %90 = load i32, ptr %89, align 4, !tbaa !41
  %91 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %3, i32 noundef %90)
  %92 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %88, i64 noundef 1) #5
  %93 = load i32, ptr %92, align 4, !tbaa !41
  %94 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %3, i32 noundef %93)
  %95 = or i32 %94, %91
  br label %366

96:                                               ; preds = %21
  %97 = getelementptr inbounds i8, ptr %1, i64 16
  %98 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %97, i64 noundef 0) #5
  %99 = load i32, ptr %98, align 4, !tbaa !41
  %100 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %3, i32 noundef %99)
  %101 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %97, i64 noundef 1) #5
  %102 = load i32, ptr %101, align 4, !tbaa !41
  %103 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %3, i32 noundef %102)
  %104 = shl i32 %100, %103
  br label %366

105:                                              ; preds = %21
  %106 = getelementptr inbounds i8, ptr %1, i64 16
  %107 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %106, i64 noundef 0) #5
  %108 = load i32, ptr %107, align 4, !tbaa !41
  %109 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %3, i32 noundef %108)
  %110 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %106, i64 noundef 1) #5
  %111 = load i32, ptr %110, align 4, !tbaa !41
  %112 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %3, i32 noundef %111)
  %113 = lshr i32 %109, %112
  br label %366

114:                                              ; preds = %21
  %115 = getelementptr inbounds i8, ptr %1, i64 16
  %116 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %115, i64 noundef 0) #5
  %117 = load i32, ptr %116, align 4, !tbaa !41
  %118 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %3, i32 noundef %117)
  %119 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %115, i64 noundef 1) #5
  %120 = load i32, ptr %119, align 4, !tbaa !41
  %121 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %3, i32 noundef %120)
  %122 = ashr i32 %118, %121
  br label %366

123:                                              ; preds = %21
  %124 = getelementptr inbounds i8, ptr %1, i64 16
  %125 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %124, i64 noundef 0) #5
  %126 = load i32, ptr %125, align 4, !tbaa !41
  %127 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %3, i32 noundef %126)
  %128 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %124, i64 noundef 1) #5
  %129 = load i32, ptr %128, align 4, !tbaa !41
  %130 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %3, i32 noundef %129)
  %131 = icmp eq i32 %127, %130
  %132 = zext i1 %131 to i32
  br label %366

133:                                              ; preds = %21
  %134 = getelementptr inbounds i8, ptr %1, i64 16
  %135 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %134, i64 noundef 0) #5
  %136 = load i32, ptr %135, align 4, !tbaa !41
  %137 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %3, i32 noundef %136)
  %138 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %134, i64 noundef 1) #5
  %139 = load i32, ptr %138, align 4, !tbaa !41
  %140 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %3, i32 noundef %139)
  %141 = icmp ne i32 %137, %140
  %142 = zext i1 %141 to i32
  br label %366

143:                                              ; preds = %21
  %144 = getelementptr inbounds i8, ptr %1, i64 16
  %145 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %144, i64 noundef 0) #5
  %146 = load i32, ptr %145, align 4, !tbaa !41
  %147 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %3, i32 noundef %146)
  %148 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %144, i64 noundef 1) #5
  %149 = load i32, ptr %148, align 4, !tbaa !41
  %150 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %3, i32 noundef %149)
  %151 = icmp eq i32 %147, %150
  %152 = zext i1 %151 to i32
  br label %366

153:                                              ; preds = %21
  %154 = getelementptr inbounds i8, ptr %1, i64 16
  %155 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %154, i64 noundef 0) #5
  %156 = load i32, ptr %155, align 4, !tbaa !41
  %157 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %3, i32 noundef %156)
  %158 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %154, i64 noundef 1) #5
  %159 = load i32, ptr %158, align 4, !tbaa !41
  %160 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %3, i32 noundef %159)
  %161 = icmp ne i32 %157, %160
  %162 = zext i1 %161 to i32
  br label %366

163:                                              ; preds = %21
  %164 = getelementptr inbounds i8, ptr %1, i64 16
  %165 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %164, i64 noundef 0) #5
  %166 = load i32, ptr %165, align 4, !tbaa !41
  %167 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %3, i32 noundef %166)
  %168 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %164, i64 noundef 1) #5
  %169 = load i32, ptr %168, align 4, !tbaa !41
  %170 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %3, i32 noundef %169)
  %171 = icmp ult i32 %167, %170
  %172 = zext i1 %171 to i32
  br label %366

173:                                              ; preds = %21
  %174 = getelementptr inbounds i8, ptr %1, i64 16
  %175 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %174, i64 noundef 0) #5
  %176 = load i32, ptr %175, align 4, !tbaa !41
  %177 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %3, i32 noundef %176)
  %178 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %174, i64 noundef 1) #5
  %179 = load i32, ptr %178, align 4, !tbaa !41
  %180 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %3, i32 noundef %179)
  %181 = icmp ule i32 %177, %180
  %182 = zext i1 %181 to i32
  br label %366

183:                                              ; preds = %21
  %184 = getelementptr inbounds i8, ptr %1, i64 16
  %185 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %184, i64 noundef 0) #5
  %186 = load i32, ptr %185, align 4, !tbaa !41
  %187 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %3, i32 noundef %186)
  %188 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %184, i64 noundef 1) #5
  %189 = load i32, ptr %188, align 4, !tbaa !41
  %190 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %3, i32 noundef %189)
  %191 = icmp ugt i32 %187, %190
  %192 = zext i1 %191 to i32
  br label %366

193:                                              ; preds = %21
  %194 = getelementptr inbounds i8, ptr %1, i64 16
  %195 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %194, i64 noundef 0) #5
  %196 = load i32, ptr %195, align 4, !tbaa !41
  %197 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %3, i32 noundef %196)
  %198 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %194, i64 noundef 1) #5
  %199 = load i32, ptr %198, align 4, !tbaa !41
  %200 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %3, i32 noundef %199)
  %201 = icmp uge i32 %197, %200
  %202 = zext i1 %201 to i32
  br label %366

203:                                              ; preds = %21
  %204 = getelementptr inbounds i8, ptr %1, i64 16
  %205 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %204, i64 noundef 0) #5
  %206 = load i32, ptr %205, align 4, !tbaa !41
  %207 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %3, i32 noundef %206)
  %208 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %204, i64 noundef 1) #5
  %209 = load i32, ptr %208, align 4, !tbaa !41
  %210 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %3, i32 noundef %209)
  %211 = icmp slt i32 %207, %210
  %212 = zext i1 %211 to i32
  br label %366

213:                                              ; preds = %21
  %214 = getelementptr inbounds i8, ptr %1, i64 16
  %215 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %214, i64 noundef 0) #5
  %216 = load i32, ptr %215, align 4, !tbaa !41
  %217 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %3, i32 noundef %216)
  %218 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %214, i64 noundef 1) #5
  %219 = load i32, ptr %218, align 4, !tbaa !41
  %220 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %3, i32 noundef %219)
  %221 = icmp sle i32 %217, %220
  %222 = zext i1 %221 to i32
  br label %366

223:                                              ; preds = %21
  %224 = getelementptr inbounds i8, ptr %1, i64 16
  %225 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %224, i64 noundef 0) #5
  %226 = load i32, ptr %225, align 4, !tbaa !41
  %227 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %3, i32 noundef %226)
  %228 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %224, i64 noundef 1) #5
  %229 = load i32, ptr %228, align 4, !tbaa !41
  %230 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %3, i32 noundef %229)
  %231 = icmp sgt i32 %227, %230
  %232 = zext i1 %231 to i32
  br label %366

233:                                              ; preds = %21
  %234 = getelementptr inbounds i8, ptr %1, i64 16
  %235 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %234, i64 noundef 0) #5
  %236 = load i32, ptr %235, align 4, !tbaa !41
  %237 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %3, i32 noundef %236)
  %238 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %234, i64 noundef 1) #5
  %239 = load i32, ptr %238, align 4, !tbaa !41
  %240 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %3, i32 noundef %239)
  %241 = icmp sge i32 %237, %240
  %242 = zext i1 %241 to i32
  br label %366

243:                                              ; preds = %21
  %244 = getelementptr inbounds i8, ptr %1, i64 16
  %245 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %244, i64 noundef 0) #5
  %246 = load i32, ptr %245, align 4, !tbaa !41
  %247 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %3, i32 noundef %246)
  %.not109 = icmp eq i32 %247, 0
  %248 = zext i1 %.not109 to i32
  br label %366

249:                                              ; preds = %21
  %250 = getelementptr inbounds i8, ptr %1, i64 16
  %251 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %250, i64 noundef 0) #5
  %252 = load i32, ptr %251, align 4, !tbaa !41
  %253 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %3, i32 noundef %252)
  %254 = xor i32 %253, -1
  br label %366

255:                                              ; preds = %21
  %256 = getelementptr inbounds i8, ptr %1, i64 16
  %257 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %256, i64 noundef 0) #5
  %258 = load i32, ptr %257, align 4, !tbaa !41
  %259 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %3, i32 noundef %258)
  %260 = sub nsw i32 0, %259
  br label %366

261:                                              ; preds = %21
  %262 = getelementptr inbounds i8, ptr %1, i64 16
  %263 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %262, i64 noundef 0) #5
  %264 = load i32, ptr %263, align 4, !tbaa !41
  %265 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %3, i32 noundef %264)
  %.not108 = icmp eq i32 %265, 0
  br i1 %.not108, label %270, label %266

266:                                              ; preds = %261
  %267 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %262, i64 noundef 1) #5
  %268 = load i32, ptr %267, align 4, !tbaa !41
  %269 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %3, i32 noundef %268)
  br label %366

270:                                              ; preds = %261
  %271 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %262, i64 noundef 2) #5
  %272 = load i32, ptr %271, align 4, !tbaa !41
  %273 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %3, i32 noundef %272)
  br label %366

274:                                              ; preds = %21
  %275 = getelementptr inbounds i8, ptr %1, i64 16
  %276 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %275, i64 noundef 0) #5
  %277 = load i32, ptr %276, align 4, !tbaa !41
  %278 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %3, i32 noundef %277)
  %279 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %275, i64 noundef 1) #5
  %280 = load i32, ptr %279, align 4, !tbaa !41
  %281 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %3, i32 noundef %280)
  %282 = icmp eq i32 %281, 0
  br i1 %282, label %283, label %288

283:                                              ; preds = %274
  %284 = call ptr @__cxa_allocate_exception(i64 16) #5
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %284, ptr noundef nonnull @.str.13)
          to label %285 unwind label %286

285:                                              ; preds = %283
  call void @__cxa_throw(ptr nonnull %284, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #6
  unreachable

286:                                              ; preds = %283
  %287 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %284) #5
  br label %367

288:                                              ; preds = %274
  %289 = urem i32 %278, %281
  br label %366

290:                                              ; preds = %21
  %291 = getelementptr inbounds i8, ptr %1, i64 16
  %292 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %291, i64 noundef 0) #5
  %293 = load i32, ptr %292, align 4, !tbaa !41
  %294 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %3, i32 noundef %293)
  %295 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %291, i64 noundef 1) #5
  %296 = load i32, ptr %295, align 4, !tbaa !41
  %297 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %3, i32 noundef %296)
  %298 = icmp eq i32 %297, 0
  br i1 %298, label %299, label %304

299:                                              ; preds = %290
  %300 = call ptr @__cxa_allocate_exception(i64 16) #5
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %300, ptr noundef nonnull @.str.14)
          to label %301 unwind label %302

301:                                              ; preds = %299
  call void @__cxa_throw(ptr nonnull %300, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #6
  unreachable

302:                                              ; preds = %299
  %303 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %300) #5
  br label %367

304:                                              ; preds = %290
  %305 = srem i32 %294, %297
  br label %366

306:                                              ; preds = %21
  %307 = getelementptr inbounds i8, ptr %1, i64 16
  %308 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %307, i64 noundef 0) #5
  %309 = load i32, ptr %308, align 4, !tbaa !41
  %310 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %3, i32 noundef %309)
  %311 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %307, i64 noundef 1) #5
  %312 = load i32, ptr %311, align 4, !tbaa !41
  %313 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %3, i32 noundef %312)
  %314 = icmp eq i32 %313, 0
  br i1 %314, label %315, label %320

315:                                              ; preds = %306
  %316 = call ptr @__cxa_allocate_exception(i64 16) #5
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %316, ptr noundef nonnull @.str.15)
          to label %317 unwind label %318

317:                                              ; preds = %315
  call void @__cxa_throw(ptr nonnull %316, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #6
  unreachable

318:                                              ; preds = %315
  %319 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %316) #5
  br label %367

320:                                              ; preds = %306
  %321 = srem i32 %310, %313
  %322 = icmp slt i32 %313, 0
  %323 = icmp sgt i32 %321, 0
  %or.cond = and i1 %322, %323
  br i1 %or.cond, label %327, label %324

324:                                              ; preds = %320
  %325 = icmp sgt i32 %313, 0
  %326 = icmp slt i32 %321, 0
  %or.cond3 = and i1 %325, %326
  br i1 %or.cond3, label %327, label %366

327:                                              ; preds = %324, %320
  %328 = add nsw i32 %321, %313
  br label %366

329:                                              ; preds = %21
  %330 = getelementptr inbounds i8, ptr %1, i64 16
  %331 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %330, i64 noundef 0) #5
  %332 = load i32, ptr %331, align 4, !tbaa !41
  %333 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %3, i32 noundef %332)
  %334 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %330, i64 noundef 1) #5
  %335 = load i32, ptr %334, align 4, !tbaa !41
  %336 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %3, i32 noundef %335)
  %337 = icmp eq i32 %336, 0
  br i1 %337, label %338, label %343

338:                                              ; preds = %329
  %339 = call ptr @__cxa_allocate_exception(i64 16) #5
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %339, ptr noundef nonnull @.str.16)
          to label %340 unwind label %341

340:                                              ; preds = %338
  call void @__cxa_throw(ptr nonnull %339, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #6
  unreachable

341:                                              ; preds = %338
  %342 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %339) #5
  br label %367

343:                                              ; preds = %329
  %344 = udiv i32 %333, %336
  br label %366

345:                                              ; preds = %21
  %346 = getelementptr inbounds i8, ptr %1, i64 16
  %347 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %346, i64 noundef 0) #5
  %348 = load i32, ptr %347, align 4, !tbaa !41
  %349 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %3, i32 noundef %348)
  %350 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK11spirv_cross10VectorViewIjEixEm(ptr noundef nonnull align 8 dereferenceable(16) %346, i64 noundef 1) #5
  %351 = load i32, ptr %350, align 4, !tbaa !41
  %352 = call noundef i32 @"_ZZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEENK3$_0clEj"(ptr noundef nonnull align 8 dereferenceable(8) %3, i32 noundef %351)
  %353 = icmp eq i32 %352, 0
  br i1 %353, label %354, label %359

354:                                              ; preds = %345
  %355 = call ptr @__cxa_allocate_exception(i64 16) #5
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %355, ptr noundef nonnull @.str.17)
          to label %356 unwind label %357

356:                                              ; preds = %354
  call void @__cxa_throw(ptr nonnull %355, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #6
  unreachable

357:                                              ; preds = %354
  %358 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %355) #5
  br label %367

359:                                              ; preds = %345
  %360 = sdiv i32 %349, %352
  br label %366

361:                                              ; preds = %21
  %362 = tail call ptr @__cxa_allocate_exception(i64 16) #5
  invoke void @_ZN11spirv_cross13CompilerErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %362, ptr noundef nonnull @.str.18)
          to label %363 unwind label %364

363:                                              ; preds = %361
  tail call void @__cxa_throw(ptr nonnull %362, ptr nonnull @_ZTIN11spirv_cross13CompilerErrorE, ptr nonnull @_ZNSt13runtime_errorD2Ev) #6
  unreachable

364:                                              ; preds = %361
  %365 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_free_exception(ptr %362) #5
  br label %367

366:                                              ; preds = %324, %327, %266, %270, %359, %343, %304, %288, %255, %249, %243, %233, %223, %213, %203, %193, %183, %173, %163, %153, %143, %133, %123, %114, %105, %96, %87, %78, %69, %60, %51, %42, %33, %24
  %.098 = phi i32 [ %360, %359 ], [ %344, %343 ], [ %305, %304 ], [ %289, %288 ], [ %260, %255 ], [ %254, %249 ], [ %248, %243 ], [ %242, %233 ], [ %232, %223 ], [ %222, %213 ], [ %212, %203 ], [ %202, %193 ], [ %192, %183 ], [ %182, %173 ], [ %172, %163 ], [ %162, %153 ], [ %152, %143 ], [ %142, %133 ], [ %132, %123 ], [ %122, %114 ], [ %113, %105 ], [ %104, %96 ], [ %95, %87 ], [ %86, %78 ], [ %77, %69 ], [ %68, %60 ], [ %59, %51 ], [ %50, %42 ], [ %41, %33 ], [ %32, %24 ], [ %269, %266 ], [ %273, %270 ], [ %328, %327 ], [ %321, %324 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #5
  ret i32 %.098

367:                                              ; preds = %364, %357, %341, %318, %302, %286
  %.pn = phi { ptr, i32 } [ %365, %364 ], [ %358, %357 ], [ %342, %341 ], [ %319, %318 ], [ %303, %302 ], [ %287, %286 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #5
  br label %368

368:                                              ; preds = %367, %19, %12
  %.pn111 = phi { ptr, i32 } [ %13, %12 ], [ %.pn, %367 ], [ %20, %19 ]
  resume { ptr, i32 } %.pn111
}

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

!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, !13, i64 16}
!6 = !{!"_ZTSN11spirv_cross8SPIRTypeE", !7, i64 0, !12, i64 12, !13, i64 16, !9, i64 20, !9, i64 24, !9, i64 28, !14, i64 32, !19, i64 88, !9, i64 120, !22, i64 124, !22, i64 125, !23, i64 128, !24, i64 136, !14, i64 192, !27, i64 248, !28, i64 272, !28, i64 276, !32, i64 280}
!7 = !{!"_ZTSN11spirv_cross8IVariantE", !8, i64 8}
!8 = !{!"_ZTSN11spirv_cross7TypedIDILNS_5TypesE0EEE", !9, i64 0}
!9 = !{!"int", !10, i64 0}
!10 = !{!"omnipotent char", !11, i64 0}
!11 = !{!"Simple C++ TBAA"}
!12 = !{!"_ZTSN3spv2OpE", !10, i64 0}
!13 = !{!"_ZTSN11spirv_cross8SPIRType8BaseTypeE", !10, i64 0}
!14 = !{!"_ZTSN11spirv_cross11SmallVectorIjLm8EEE", !15, i64 0, !17, i64 16, !18, i64 24}
!15 = !{!"_ZTSN11spirv_cross10VectorViewIjEE", !16, i64 0, !17, i64 8}
!16 = !{!"any pointer", !10, i64 0}
!17 = !{!"long", !10, i64 0}
!18 = !{!"_ZTSN11spirv_cross13AlignedBufferIjLm8EEE", !10, i64 0}
!19 = !{!"_ZTSN11spirv_cross11SmallVectorIbLm8EEE", !20, i64 0, !17, i64 16, !21, i64 24}
!20 = !{!"_ZTSN11spirv_cross10VectorViewIbEE", !16, i64 0, !17, i64 8}
!21 = !{!"_ZTSN11spirv_cross13AlignedBufferIbLm8EEE", !10, i64 0}
!22 = !{!"bool", !10, i64 0}
!23 = !{!"_ZTSN3spv12StorageClassE", !10, i64 0}
!24 = !{!"_ZTSN11spirv_cross11SmallVectorINS_7TypedIDILNS_5TypesE1EEELm8EEE", !25, i64 0, !17, i64 16, !26, i64 24}
!25 = !{!"_ZTSN11spirv_cross10VectorViewINS_7TypedIDILNS_5TypesE1EEEEE", !16, i64 0, !17, i64 8}
!26 = !{!"_ZTSN11spirv_cross13AlignedBufferINS_7TypedIDILNS_5TypesE1EEELm8EEE", !10, i64 0}
!27 = !{!"_ZTSN11spirv_cross8SPIRType9ImageTypeE", !28, i64 0, !29, i64 4, !22, i64 8, !22, i64 9, !22, i64 10, !9, i64 12, !30, i64 16, !31, i64 20}
!28 = !{!"_ZTSN11spirv_cross7TypedIDILNS_5TypesE1EEE", !9, i64 0}
!29 = !{!"_ZTSN3spv3DimE", !10, i64 0}
!30 = !{!"_ZTSN3spv11ImageFormatE", !10, i64 0}
!31 = !{!"_ZTSN3spv15AccessQualifierE", !10, i64 0}
!32 = !{!"_ZTSSt13unordered_setINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4hashIS5_ESt8equal_toIS5_ESaIS5_EE", !33, i64 0}
!33 = !{!"_ZTSSt10_HashtableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_SaIS5_ENSt8__detail9_IdentityESt8equal_toIS5_ESt4hashIS5_ENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb1ELb1ELb1EEEE", !16, i64 0, !17, i64 8, !34, i64 16, !17, i64 24, !35, i64 32, !16, i64 48}
!34 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !16, i64 0}
!35 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !36, i64 0, !17, i64 8}
!36 = !{!"float", !10, i64 0}
!37 = !{!38, !16, i64 0}
!38 = !{!"_ZTSZNK11spirv_cross8Compiler26evaluate_spec_constant_u32ERKNS_14SPIRConstantOpEE3$_0", !16, i64 0}
!39 = !{!40, !12, i64 12}
!40 = !{!"_ZTSN11spirv_cross14SPIRConstantOpE", !7, i64 0, !12, i64 12, !14, i64 16, !28, i64 72}
!41 = !{!9, !9, i64 0}


; Effective O3 passes: EarlyCSEPass,GlobalOptPass,InferFunctionAttrsPass,InstCombinePass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass