; LLVM IR from hbatagelo/abcg :: abcg/external/glslang/glslang/MachineIndependent (Intermediate)

; 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.glslang::TConstUnionArray" = type { ptr, ptr }
%"class.glslang::TType" = type { ptr, i32, [4 x i8], %"class.glslang::TQualifier", ptr, %union.anon, ptr, ptr, %"struct.glslang::TSampler", ptr, ptr }
%"class.glslang::TQualifier" = type <{ ptr, i64, i8, [3 x i8], i32, i32, i64, i64, i8, i8, i8, i8, i8, [3 x i8], i32, i8, [3 x i8], i32, ptr }>
%union.anon = type { ptr }
%"struct.glslang::TSampler" = type { i32 }

; 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 void @_ZN7glslang16TConstUnionArrayD2Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7glslang5TTypeC2ENS_10TBasicTypeENS_17TStorageQualifierEiiib(ptr noundef nonnull align 8 dereferenceable(144), i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i1 noundef zeroext) unnamed_addr #2 align 2

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

; Function Attrs: mustprogress uwtable
define dso_local noundef ptr @_ZNK7glslang13TIntermediate20promoteConstantUnionENS_10TBasicTypeEPNS_20TIntermConstantUnionE(ptr noundef nonnull align 8 dereferenceable(1784) %0, i32 noundef %1, ptr noundef %2) #2 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca i32, align 4
  %10 = alloca %"class.glslang::TConstUnionArray", align 8
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca ptr, align 8
  %14 = alloca i32, align 4
  %15 = alloca ptr, align 8
  %16 = alloca %"class.glslang::TType", align 8
  store ptr %0, ptr %5, align 8, !tbaa !5
  store i32 %1, ptr %6, align 4, !tbaa !9
  store ptr %2, ptr %7, align 8, !tbaa !5
  %17 = load ptr, ptr %5, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #3
  %18 = load ptr, ptr %7, align 8, !tbaa !5
  %19 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK7glslang20TIntermConstantUnion13getConstArrayEv(ptr noundef nonnull align 8 dereferenceable(193) %18)
  store ptr %19, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #3
  %20 = load ptr, ptr %7, align 8, !tbaa !5
  %21 = load ptr, ptr %20, align 8, !tbaa !11
  %22 = getelementptr inbounds ptr, ptr %21, i64 30
  %23 = load ptr, ptr %22, align 8
  %24 = call noundef nonnull align 8 dereferenceable(144) ptr %23(ptr noundef nonnull align 8 dereferenceable(176) %20)
  %25 = call noundef i32 @_ZNK7glslang5TType20computeNumComponentsEv(ptr noundef nonnull align 8 dereferenceable(144) %24)
  store i32 %25, ptr %9, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 16, ptr %10) #3
  %26 = load i32, ptr %9, align 4, !tbaa !13
  call void @_ZN7glslang16TConstUnionArrayC2Ei(ptr noundef nonnull align 8 dereferenceable(16) %10, i32 noundef %26)
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #3
  store i32 0, ptr %11, align 4, !tbaa !13
  br label %27

27:                                               ; preds = %2107, %3
  %28 = load i32, ptr %11, align 4, !tbaa !13
  %29 = load i32, ptr %9, align 4, !tbaa !13
  %30 = icmp slt i32 %28, %29
  br i1 %30, label %32, label %31

31:                                               ; preds = %27
  store i32 2, ptr %12, align 4
  br label %2110

32:                                               ; preds = %27
  %33 = load ptr, ptr %7, align 8, !tbaa !5
  %34 = load ptr, ptr %33, align 8, !tbaa !11
  %35 = getelementptr inbounds ptr, ptr %34, i64 30
  %36 = load ptr, ptr %35, align 8
  %37 = invoke noundef nonnull align 8 dereferenceable(144) ptr %36(ptr noundef nonnull align 8 dereferenceable(176) %33)
          to label %38 unwind label %44

38:                                               ; preds = %32
  %39 = load ptr, ptr %37, align 8, !tbaa !11
  %40 = getelementptr inbounds ptr, ptr %39, i64 7
  %41 = load ptr, ptr %40, align 8
  %42 = invoke noundef i32 %41(ptr noundef nonnull align 8 dereferenceable(144) %37)
          to label %43 unwind label %44

43:                                               ; preds = %38
  switch i32 %42, label %2104 [
    i32 1, label %48
    i32 8, label %218
    i32 9, label %389
    i32 12, label %560
    i32 3, label %734
    i32 2, label %904
    i32 4, label %1074
    i32 6, label %1246
    i32 10, label %1418
    i32 5, label %1589
    i32 7, label %1761
    i32 11, label %1933
  ]

44:                                               ; preds = %2098, %2096, %2091, %2087, %2085, %2083, %2078, %2074, %2071, %2069, %2064, %2060, %2057, %2055, %2050, %2046, %2043, %2041, %2036, %2032, %2030, %2028, %2023, %2019, %2016, %2014, %2009, %2005, %2002, %2000, %1995, %1991, %1988, %1986, %1981, %1977, %1974, %1972, %1967, %1963, %1960, %1958, %1953, %1949, %1946, %1944, %1939, %1935, %1926, %1924, %1919, %1915, %1912, %1910, %1905, %1901, %1898, %1896, %1891, %1887, %1885, %1883, %1878, %1874, %1871, %1869, %1864, %1860, %1857, %1855, %1850, %1846, %1843, %1841, %1836, %1832, %1830, %1828, %1823, %1819, %1816, %1814, %1809, %1805, %1802, %1800, %1795, %1791, %1788, %1786, %1781, %1777, %1774, %1772, %1767, %1763, %1754, %1752, %1747, %1743, %1740, %1738, %1733, %1729, %1726, %1724, %1719, %1715, %1712, %1710, %1705, %1701, %1699, %1697, %1692, %1688, %1685, %1683, %1678, %1674, %1671, %1669, %1664, %1660, %1657, %1655, %1650, %1646, %1644, %1642, %1637, %1633, %1630, %1628, %1623, %1619, %1616, %1614, %1609, %1605, %1602, %1600, %1595, %1591, %1583, %1581, %1576, %1572, %1570, %1568, %1563, %1559, %1556, %1554, %1549, %1545, %1542, %1540, %1535, %1531, %1528, %1526, %1521, %1517, %1515, %1513, %1508, %1504, %1501, %1499, %1494, %1490, %1487, %1485, %1480, %1476, %1473, %1471, %1466, %1462, %1459, %1457, %1452, %1448, %1445, %1443, %1438, %1434, %1431, %1429, %1424, %1420, %1411, %1409, %1404, %1400, %1397, %1395, %1390, %1386, %1383, %1381, %1376, %1372, %1370, %1368, %1363, %1359, %1356, %1354, %1349, %1345, %1342, %1340, %1335, %1331, %1328, %1326, %1321, %1317, %1315, %1313, %1308, %1304, %1301, %1299, %1294, %1290, %1287, %1285, %1280, %1276, %1273, %1271, %1266, %1262, %1259, %1257, %1252, %1248, %1239, %1237, %1232, %1228, %1225, %1223, %1218, %1214, %1211, %1209, %1204, %1200, %1197, %1195, %1190, %1186, %1184, %1182, %1177, %1173, %1170, %1168, %1163, %1159, %1156, %1154, %1149, %1145, %1142, %1140, %1135, %1131, %1129, %1127, %1122, %1118, %1115, %1113, %1108, %1104, %1101, %1099, %1094, %1090, %1087, %1085, %1080, %1076, %1068, %1066, %1061, %1057, %1054, %1052, %1047, %1043, %1040, %1038, %1033, %1029, %1026, %1024, %1019, %1015, %1012, %1010, %1005, %1001, %998, %996, %991, %987, %984, %982, %977, %973, %970, %968, %963, %959, %956, %954, %949, %945, %943, %941, %936, %932, %930, %928, %923, %919, %917, %915, %910, %906, %898, %896, %891, %887, %884, %882, %877, %873, %870, %868, %863, %859, %856, %854, %849, %845, %842, %840, %835, %831, %828, %826, %821, %817, %814, %812, %807, %803, %800, %798, %793, %789, %786, %784, %779, %775, %773, %771, %766, %762, %760, %758, %753, %749, %747, %745, %740, %736, %727, %725, %720, %716, %713, %711, %706, %702, %699, %697, %692, %688, %685, %683, %678, %674, %671, %669, %664, %660, %657, %655, %650, %646, %643, %641, %636, %632, %629, %627, %622, %618, %615, %613, %608, %604, %601, %599, %594, %590, %587, %585, %580, %576, %573, %571, %566, %562, %554, %552, %547, %543, %540, %538, %533, %529, %527, %525, %520, %516, %513, %511, %506, %502, %499, %497, %492, %488, %485, %483, %478, %474, %472, %470, %465, %461, %458, %456, %451, %447, %444, %442, %437, %433, %430, %428, %423, %419, %416, %414, %409, %405, %402, %400, %395, %391, %383, %381, %376, %372, %369, %367, %362, %358, %356, %354, %349, %345, %342, %340, %335, %331, %328, %326, %321, %317, %314, %312, %307, %303, %301, %299, %294, %290, %287, %285, %280, %276, %273, %271, %266, %262, %259, %257, %252, %248, %245, %243, %238, %234, %231, %229, %224, %220, %212, %210, %205, %201, %198, %196, %191, %187, %184, %182, %177, %173, %170, %168, %163, %159, %156, %154, %149, %145, %142, %140, %135, %131, %128, %126, %121, %117, %114, %112, %107, %103, %100, %98, %93, %89, %87, %85, %80, %76, %74, %72, %67, %63, %61, %59, %54, %50, %38, %32
  %45 = landingpad { ptr, i32 }
          cleanup
  %46 = extractvalue { ptr, i32 } %45, 0
  store ptr %46, ptr %13, align 8
  %47 = extractvalue { ptr, i32 } %45, 1
  store i32 %47, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #3
  br label %2173

48:                                               ; preds = %43
  %49 = load i32, ptr %6, align 4, !tbaa !9
  switch i32 %49, label %215 [
    i32 3, label %50
    i32 1, label %63
    i32 2, label %76
    i32 4, label %89
    i32 6, label %103
    i32 8, label %117
    i32 10, label %131
    i32 5, label %145
    i32 7, label %159
    i32 9, label %173
    i32 11, label %187
    i32 12, label %201
  ]

50:                                               ; preds = %48
  %51 = load i32, ptr %11, align 4, !tbaa !13
  %52 = sext i32 %51 to i64
  %53 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %52)
          to label %54 unwind label %44

54:                                               ; preds = %50
  %55 = load ptr, ptr %8, align 8, !tbaa !5
  %56 = load i32, ptr %11, align 4, !tbaa !13
  %57 = sext i32 %56 to i64
  %58 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %55, i64 noundef %57)
          to label %59 unwind label %44

59:                                               ; preds = %54
  %60 = invoke noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %58)
          to label %61 unwind label %44

61:                                               ; preds = %59
  invoke void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %53, double noundef %60)
          to label %62 unwind label %44

62:                                               ; preds = %61
  br label %217

63:                                               ; preds = %48
  %64 = load i32, ptr %11, align 4, !tbaa !13
  %65 = sext i32 %64 to i64
  %66 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %65)
          to label %67 unwind label %44

67:                                               ; preds = %63
  %68 = load ptr, ptr %8, align 8, !tbaa !5
  %69 = load i32, ptr %11, align 4, !tbaa !13
  %70 = sext i32 %69 to i64
  %71 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %68, i64 noundef %70)
          to label %72 unwind label %44

72:                                               ; preds = %67
  %73 = invoke noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %71)
          to label %74 unwind label %44

74:                                               ; preds = %72
  invoke void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %66, double noundef %73)
          to label %75 unwind label %44

75:                                               ; preds = %74
  br label %217

76:                                               ; preds = %48
  %77 = load i32, ptr %11, align 4, !tbaa !13
  %78 = sext i32 %77 to i64
  %79 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %78)
          to label %80 unwind label %44

80:                                               ; preds = %76
  %81 = load ptr, ptr %8, align 8, !tbaa !5
  %82 = load i32, ptr %11, align 4, !tbaa !13
  %83 = sext i32 %82 to i64
  %84 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %81, i64 noundef %83)
          to label %85 unwind label %44

85:                                               ; preds = %80
  %86 = invoke noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %84)
          to label %87 unwind label %44

87:                                               ; preds = %85
  invoke void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %79, double noundef %86)
          to label %88 unwind label %44

88:                                               ; preds = %87
  br label %217

89:                                               ; preds = %48
  %90 = load i32, ptr %11, align 4, !tbaa !13
  %91 = sext i32 %90 to i64
  %92 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %91)
          to label %93 unwind label %44

93:                                               ; preds = %89
  %94 = load ptr, ptr %8, align 8, !tbaa !5
  %95 = load i32, ptr %11, align 4, !tbaa !13
  %96 = sext i32 %95 to i64
  %97 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %94, i64 noundef %96)
          to label %98 unwind label %44

98:                                               ; preds = %93
  %99 = invoke noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %97)
          to label %100 unwind label %44

100:                                              ; preds = %98
  %101 = fptosi double %99 to i8
  invoke void @_ZN7glslang11TConstUnion10setI8ConstEa(ptr noundef nonnull align 8 dereferenceable(12) %92, i8 noundef signext %101)
          to label %102 unwind label %44

102:                                              ; preds = %100
  br label %217

103:                                              ; preds = %48
  %104 = load i32, ptr %11, align 4, !tbaa !13
  %105 = sext i32 %104 to i64
  %106 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %105)
          to label %107 unwind label %44

107:                                              ; preds = %103
  %108 = load ptr, ptr %8, align 8, !tbaa !5
  %109 = load i32, ptr %11, align 4, !tbaa !13
  %110 = sext i32 %109 to i64
  %111 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %108, i64 noundef %110)
          to label %112 unwind label %44

112:                                              ; preds = %107
  %113 = invoke noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %111)
          to label %114 unwind label %44

114:                                              ; preds = %112
  %115 = fptosi double %113 to i16
  invoke void @_ZN7glslang11TConstUnion11setI16ConstEs(ptr noundef nonnull align 8 dereferenceable(12) %106, i16 noundef signext %115)
          to label %116 unwind label %44

116:                                              ; preds = %114
  br label %217

117:                                              ; preds = %48
  %118 = load i32, ptr %11, align 4, !tbaa !13
  %119 = sext i32 %118 to i64
  %120 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %119)
          to label %121 unwind label %44

121:                                              ; preds = %117
  %122 = load ptr, ptr %8, align 8, !tbaa !5
  %123 = load i32, ptr %11, align 4, !tbaa !13
  %124 = sext i32 %123 to i64
  %125 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %122, i64 noundef %124)
          to label %126 unwind label %44

126:                                              ; preds = %121
  %127 = invoke noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %125)
          to label %128 unwind label %44

128:                                              ; preds = %126
  %129 = fptosi double %127 to i32
  invoke void @_ZN7glslang11TConstUnion9setIConstEi(ptr noundef nonnull align 8 dereferenceable(12) %120, i32 noundef %129)
          to label %130 unwind label %44

130:                                              ; preds = %128
  br label %217

131:                                              ; preds = %48
  %132 = load i32, ptr %11, align 4, !tbaa !13
  %133 = sext i32 %132 to i64
  %134 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %133)
          to label %135 unwind label %44

135:                                              ; preds = %131
  %136 = load ptr, ptr %8, align 8, !tbaa !5
  %137 = load i32, ptr %11, align 4, !tbaa !13
  %138 = sext i32 %137 to i64
  %139 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %136, i64 noundef %138)
          to label %140 unwind label %44

140:                                              ; preds = %135
  %141 = invoke noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %139)
          to label %142 unwind label %44

142:                                              ; preds = %140
  %143 = fptosi double %141 to i64
  invoke void @_ZN7glslang11TConstUnion11setI64ConstEx(ptr noundef nonnull align 8 dereferenceable(12) %134, i64 noundef %143)
          to label %144 unwind label %44

144:                                              ; preds = %142
  br label %217

145:                                              ; preds = %48
  %146 = load i32, ptr %11, align 4, !tbaa !13
  %147 = sext i32 %146 to i64
  %148 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %147)
          to label %149 unwind label %44

149:                                              ; preds = %145
  %150 = load ptr, ptr %8, align 8, !tbaa !5
  %151 = load i32, ptr %11, align 4, !tbaa !13
  %152 = sext i32 %151 to i64
  %153 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %150, i64 noundef %152)
          to label %154 unwind label %44

154:                                              ; preds = %149
  %155 = invoke noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %153)
          to label %156 unwind label %44

156:                                              ; preds = %154
  %157 = fptoui double %155 to i8
  invoke void @_ZN7glslang11TConstUnion10setU8ConstEh(ptr noundef nonnull align 8 dereferenceable(12) %148, i8 noundef zeroext %157)
          to label %158 unwind label %44

158:                                              ; preds = %156
  br label %217

159:                                              ; preds = %48
  %160 = load i32, ptr %11, align 4, !tbaa !13
  %161 = sext i32 %160 to i64
  %162 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %161)
          to label %163 unwind label %44

163:                                              ; preds = %159
  %164 = load ptr, ptr %8, align 8, !tbaa !5
  %165 = load i32, ptr %11, align 4, !tbaa !13
  %166 = sext i32 %165 to i64
  %167 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %164, i64 noundef %166)
          to label %168 unwind label %44

168:                                              ; preds = %163
  %169 = invoke noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %167)
          to label %170 unwind label %44

170:                                              ; preds = %168
  %171 = fptoui double %169 to i16
  invoke void @_ZN7glslang11TConstUnion11setU16ConstEt(ptr noundef nonnull align 8 dereferenceable(12) %162, i16 noundef zeroext %171)
          to label %172 unwind label %44

172:                                              ; preds = %170
  br label %217

173:                                              ; preds = %48
  %174 = load i32, ptr %11, align 4, !tbaa !13
  %175 = sext i32 %174 to i64
  %176 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %175)
          to label %177 unwind label %44

177:                                              ; preds = %173
  %178 = load ptr, ptr %8, align 8, !tbaa !5
  %179 = load i32, ptr %11, align 4, !tbaa !13
  %180 = sext i32 %179 to i64
  %181 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %178, i64 noundef %180)
          to label %182 unwind label %44

182:                                              ; preds = %177
  %183 = invoke noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %181)
          to label %184 unwind label %44

184:                                              ; preds = %182
  %185 = fptoui double %183 to i32
  invoke void @_ZN7glslang11TConstUnion9setUConstEj(ptr noundef nonnull align 8 dereferenceable(12) %176, i32 noundef %185)
          to label %186 unwind label %44

186:                                              ; preds = %184
  br label %217

187:                                              ; preds = %48
  %188 = load i32, ptr %11, align 4, !tbaa !13
  %189 = sext i32 %188 to i64
  %190 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %189)
          to label %191 unwind label %44

191:                                              ; preds = %187
  %192 = load ptr, ptr %8, align 8, !tbaa !5
  %193 = load i32, ptr %11, align 4, !tbaa !13
  %194 = sext i32 %193 to i64
  %195 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %192, i64 noundef %194)
          to label %196 unwind label %44

196:                                              ; preds = %191
  %197 = invoke noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %195)
          to label %198 unwind label %44

198:                                              ; preds = %196
  %199 = fptoui double %197 to i64
  invoke void @_ZN7glslang11TConstUnion11setU64ConstEy(ptr noundef nonnull align 8 dereferenceable(12) %190, i64 noundef %199)
          to label %200 unwind label %44

200:                                              ; preds = %198
  br label %217

201:                                              ; preds = %48
  %202 = load i32, ptr %11, align 4, !tbaa !13
  %203 = sext i32 %202 to i64
  %204 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %203)
          to label %205 unwind label %44

205:                                              ; preds = %201
  %206 = load ptr, ptr %8, align 8, !tbaa !5
  %207 = load i32, ptr %11, align 4, !tbaa !13
  %208 = sext i32 %207 to i64
  %209 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %206, i64 noundef %208)
          to label %210 unwind label %44

210:                                              ; preds = %205
  %211 = invoke noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %209)
          to label %212 unwind label %44

212:                                              ; preds = %210
  %213 = fcmp une double %211, 0.000000e+00
  invoke void @_ZN7glslang11TConstUnion9setBConstEb(ptr noundef nonnull align 8 dereferenceable(12) %204, i1 noundef zeroext %213)
          to label %214 unwind label %44

214:                                              ; preds = %212
  br label %217

215:                                              ; preds = %48
  %216 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %216, ptr %4, align 8
  store i32 1, ptr %12, align 4
  br label %2110

217:                                              ; preds = %214, %200, %186, %172, %158, %144, %130, %116, %102, %88, %75, %62
  br label %2106

218:                                              ; preds = %43
  %219 = load i32, ptr %6, align 4, !tbaa !9
  switch i32 %219, label %386 [
    i32 3, label %220
    i32 1, label %234
    i32 2, label %248
    i32 4, label %262
    i32 6, label %276
    i32 8, label %290
    i32 10, label %303
    i32 5, label %317
    i32 7, label %331
    i32 9, label %345
    i32 11, label %358
    i32 12, label %372
  ]

220:                                              ; preds = %218
  %221 = load i32, ptr %11, align 4, !tbaa !13
  %222 = sext i32 %221 to i64
  %223 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %222)
          to label %224 unwind label %44

224:                                              ; preds = %220
  %225 = load ptr, ptr %8, align 8, !tbaa !5
  %226 = load i32, ptr %11, align 4, !tbaa !13
  %227 = sext i32 %226 to i64
  %228 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %225, i64 noundef %227)
          to label %229 unwind label %44

229:                                              ; preds = %224
  %230 = invoke noundef i32 @_ZNK7glslang11TConstUnion9getIConstEv(ptr noundef nonnull align 8 dereferenceable(12) %228)
          to label %231 unwind label %44

231:                                              ; preds = %229
  %232 = sitofp i32 %230 to double
  invoke void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %223, double noundef %232)
          to label %233 unwind label %44

233:                                              ; preds = %231
  br label %388

234:                                              ; preds = %218
  %235 = load i32, ptr %11, align 4, !tbaa !13
  %236 = sext i32 %235 to i64
  %237 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %236)
          to label %238 unwind label %44

238:                                              ; preds = %234
  %239 = load ptr, ptr %8, align 8, !tbaa !5
  %240 = load i32, ptr %11, align 4, !tbaa !13
  %241 = sext i32 %240 to i64
  %242 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %239, i64 noundef %241)
          to label %243 unwind label %44

243:                                              ; preds = %238
  %244 = invoke noundef i32 @_ZNK7glslang11TConstUnion9getIConstEv(ptr noundef nonnull align 8 dereferenceable(12) %242)
          to label %245 unwind label %44

245:                                              ; preds = %243
  %246 = sitofp i32 %244 to double
  invoke void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %237, double noundef %246)
          to label %247 unwind label %44

247:                                              ; preds = %245
  br label %388

248:                                              ; preds = %218
  %249 = load i32, ptr %11, align 4, !tbaa !13
  %250 = sext i32 %249 to i64
  %251 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %250)
          to label %252 unwind label %44

252:                                              ; preds = %248
  %253 = load ptr, ptr %8, align 8, !tbaa !5
  %254 = load i32, ptr %11, align 4, !tbaa !13
  %255 = sext i32 %254 to i64
  %256 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %253, i64 noundef %255)
          to label %257 unwind label %44

257:                                              ; preds = %252
  %258 = invoke noundef i32 @_ZNK7glslang11TConstUnion9getIConstEv(ptr noundef nonnull align 8 dereferenceable(12) %256)
          to label %259 unwind label %44

259:                                              ; preds = %257
  %260 = sitofp i32 %258 to double
  invoke void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %251, double noundef %260)
          to label %261 unwind label %44

261:                                              ; preds = %259
  br label %388

262:                                              ; preds = %218
  %263 = load i32, ptr %11, align 4, !tbaa !13
  %264 = sext i32 %263 to i64
  %265 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %264)
          to label %266 unwind label %44

266:                                              ; preds = %262
  %267 = load ptr, ptr %8, align 8, !tbaa !5
  %268 = load i32, ptr %11, align 4, !tbaa !13
  %269 = sext i32 %268 to i64
  %270 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %267, i64 noundef %269)
          to label %271 unwind label %44

271:                                              ; preds = %266
  %272 = invoke noundef i32 @_ZNK7glslang11TConstUnion9getIConstEv(ptr noundef nonnull align 8 dereferenceable(12) %270)
          to label %273 unwind label %44

273:                                              ; preds = %271
  %274 = trunc i32 %272 to i8
  invoke void @_ZN7glslang11TConstUnion10setI8ConstEa(ptr noundef nonnull align 8 dereferenceable(12) %265, i8 noundef signext %274)
          to label %275 unwind label %44

275:                                              ; preds = %273
  br label %388

276:                                              ; preds = %218
  %277 = load i32, ptr %11, align 4, !tbaa !13
  %278 = sext i32 %277 to i64
  %279 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %278)
          to label %280 unwind label %44

280:                                              ; preds = %276
  %281 = load ptr, ptr %8, align 8, !tbaa !5
  %282 = load i32, ptr %11, align 4, !tbaa !13
  %283 = sext i32 %282 to i64
  %284 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %281, i64 noundef %283)
          to label %285 unwind label %44

285:                                              ; preds = %280
  %286 = invoke noundef i32 @_ZNK7glslang11TConstUnion9getIConstEv(ptr noundef nonnull align 8 dereferenceable(12) %284)
          to label %287 unwind label %44

287:                                              ; preds = %285
  %288 = trunc i32 %286 to i16
  invoke void @_ZN7glslang11TConstUnion11setI16ConstEs(ptr noundef nonnull align 8 dereferenceable(12) %279, i16 noundef signext %288)
          to label %289 unwind label %44

289:                                              ; preds = %287
  br label %388

290:                                              ; preds = %218
  %291 = load i32, ptr %11, align 4, !tbaa !13
  %292 = sext i32 %291 to i64
  %293 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %292)
          to label %294 unwind label %44

294:                                              ; preds = %290
  %295 = load ptr, ptr %8, align 8, !tbaa !5
  %296 = load i32, ptr %11, align 4, !tbaa !13
  %297 = sext i32 %296 to i64
  %298 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %295, i64 noundef %297)
          to label %299 unwind label %44

299:                                              ; preds = %294
  %300 = invoke noundef i32 @_ZNK7glslang11TConstUnion9getIConstEv(ptr noundef nonnull align 8 dereferenceable(12) %298)
          to label %301 unwind label %44

301:                                              ; preds = %299
  invoke void @_ZN7glslang11TConstUnion9setIConstEi(ptr noundef nonnull align 8 dereferenceable(12) %293, i32 noundef %300)
          to label %302 unwind label %44

302:                                              ; preds = %301
  br label %388

303:                                              ; preds = %218
  %304 = load i32, ptr %11, align 4, !tbaa !13
  %305 = sext i32 %304 to i64
  %306 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %305)
          to label %307 unwind label %44

307:                                              ; preds = %303
  %308 = load ptr, ptr %8, align 8, !tbaa !5
  %309 = load i32, ptr %11, align 4, !tbaa !13
  %310 = sext i32 %309 to i64
  %311 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %308, i64 noundef %310)
          to label %312 unwind label %44

312:                                              ; preds = %307
  %313 = invoke noundef i32 @_ZNK7glslang11TConstUnion9getIConstEv(ptr noundef nonnull align 8 dereferenceable(12) %311)
          to label %314 unwind label %44

314:                                              ; preds = %312
  %315 = sext i32 %313 to i64
  invoke void @_ZN7glslang11TConstUnion11setI64ConstEx(ptr noundef nonnull align 8 dereferenceable(12) %306, i64 noundef %315)
          to label %316 unwind label %44

316:                                              ; preds = %314
  br label %388

317:                                              ; preds = %218
  %318 = load i32, ptr %11, align 4, !tbaa !13
  %319 = sext i32 %318 to i64
  %320 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %319)
          to label %321 unwind label %44

321:                                              ; preds = %317
  %322 = load ptr, ptr %8, align 8, !tbaa !5
  %323 = load i32, ptr %11, align 4, !tbaa !13
  %324 = sext i32 %323 to i64
  %325 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %322, i64 noundef %324)
          to label %326 unwind label %44

326:                                              ; preds = %321
  %327 = invoke noundef i32 @_ZNK7glslang11TConstUnion9getIConstEv(ptr noundef nonnull align 8 dereferenceable(12) %325)
          to label %328 unwind label %44

328:                                              ; preds = %326
  %329 = trunc i32 %327 to i8
  invoke void @_ZN7glslang11TConstUnion10setU8ConstEh(ptr noundef nonnull align 8 dereferenceable(12) %320, i8 noundef zeroext %329)
          to label %330 unwind label %44

330:                                              ; preds = %328
  br label %388

331:                                              ; preds = %218
  %332 = load i32, ptr %11, align 4, !tbaa !13
  %333 = sext i32 %332 to i64
  %334 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %333)
          to label %335 unwind label %44

335:                                              ; preds = %331
  %336 = load ptr, ptr %8, align 8, !tbaa !5
  %337 = load i32, ptr %11, align 4, !tbaa !13
  %338 = sext i32 %337 to i64
  %339 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %336, i64 noundef %338)
          to label %340 unwind label %44

340:                                              ; preds = %335
  %341 = invoke noundef i32 @_ZNK7glslang11TConstUnion9getIConstEv(ptr noundef nonnull align 8 dereferenceable(12) %339)
          to label %342 unwind label %44

342:                                              ; preds = %340
  %343 = trunc i32 %341 to i16
  invoke void @_ZN7glslang11TConstUnion11setU16ConstEt(ptr noundef nonnull align 8 dereferenceable(12) %334, i16 noundef zeroext %343)
          to label %344 unwind label %44

344:                                              ; preds = %342
  br label %388

345:                                              ; preds = %218
  %346 = load i32, ptr %11, align 4, !tbaa !13
  %347 = sext i32 %346 to i64
  %348 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %347)
          to label %349 unwind label %44

349:                                              ; preds = %345
  %350 = load ptr, ptr %8, align 8, !tbaa !5
  %351 = load i32, ptr %11, align 4, !tbaa !13
  %352 = sext i32 %351 to i64
  %353 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %350, i64 noundef %352)
          to label %354 unwind label %44

354:                                              ; preds = %349
  %355 = invoke noundef i32 @_ZNK7glslang11TConstUnion9getIConstEv(ptr noundef nonnull align 8 dereferenceable(12) %353)
          to label %356 unwind label %44

356:                                              ; preds = %354
  invoke void @_ZN7glslang11TConstUnion9setUConstEj(ptr noundef nonnull align 8 dereferenceable(12) %348, i32 noundef %355)
          to label %357 unwind label %44

357:                                              ; preds = %356
  br label %388

358:                                              ; preds = %218
  %359 = load i32, ptr %11, align 4, !tbaa !13
  %360 = sext i32 %359 to i64
  %361 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %360)
          to label %362 unwind label %44

362:                                              ; preds = %358
  %363 = load ptr, ptr %8, align 8, !tbaa !5
  %364 = load i32, ptr %11, align 4, !tbaa !13
  %365 = sext i32 %364 to i64
  %366 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %363, i64 noundef %365)
          to label %367 unwind label %44

367:                                              ; preds = %362
  %368 = invoke noundef i32 @_ZNK7glslang11TConstUnion9getIConstEv(ptr noundef nonnull align 8 dereferenceable(12) %366)
          to label %369 unwind label %44

369:                                              ; preds = %367
  %370 = sext i32 %368 to i64
  invoke void @_ZN7glslang11TConstUnion11setU64ConstEy(ptr noundef nonnull align 8 dereferenceable(12) %361, i64 noundef %370)
          to label %371 unwind label %44

371:                                              ; preds = %369
  br label %388

372:                                              ; preds = %218
  %373 = load i32, ptr %11, align 4, !tbaa !13
  %374 = sext i32 %373 to i64
  %375 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %374)
          to label %376 unwind label %44

376:                                              ; preds = %372
  %377 = load ptr, ptr %8, align 8, !tbaa !5
  %378 = load i32, ptr %11, align 4, !tbaa !13
  %379 = sext i32 %378 to i64
  %380 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %377, i64 noundef %379)
          to label %381 unwind label %44

381:                                              ; preds = %376
  %382 = invoke noundef i32 @_ZNK7glslang11TConstUnion9getIConstEv(ptr noundef nonnull align 8 dereferenceable(12) %380)
          to label %383 unwind label %44

383:                                              ; preds = %381
  %384 = icmp ne i32 %382, 0
  invoke void @_ZN7glslang11TConstUnion9setBConstEb(ptr noundef nonnull align 8 dereferenceable(12) %375, i1 noundef zeroext %384)
          to label %385 unwind label %44

385:                                              ; preds = %383
  br label %388

386:                                              ; preds = %218
  %387 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %387, ptr %4, align 8
  store i32 1, ptr %12, align 4
  br label %2110

388:                                              ; preds = %385, %371, %357, %344, %330, %316, %302, %289, %275, %261, %247, %233
  br label %2106

389:                                              ; preds = %43
  %390 = load i32, ptr %6, align 4, !tbaa !9
  switch i32 %390, label %557 [
    i32 3, label %391
    i32 1, label %405
    i32 2, label %419
    i32 4, label %433
    i32 6, label %447
    i32 8, label %461
    i32 10, label %474
    i32 5, label %488
    i32 7, label %502
    i32 9, label %516
    i32 11, label %529
    i32 12, label %543
  ]

391:                                              ; preds = %389
  %392 = load i32, ptr %11, align 4, !tbaa !13
  %393 = sext i32 %392 to i64
  %394 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %393)
          to label %395 unwind label %44

395:                                              ; preds = %391
  %396 = load ptr, ptr %8, align 8, !tbaa !5
  %397 = load i32, ptr %11, align 4, !tbaa !13
  %398 = sext i32 %397 to i64
  %399 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %396, i64 noundef %398)
          to label %400 unwind label %44

400:                                              ; preds = %395
  %401 = invoke noundef i32 @_ZNK7glslang11TConstUnion9getUConstEv(ptr noundef nonnull align 8 dereferenceable(12) %399)
          to label %402 unwind label %44

402:                                              ; preds = %400
  %403 = uitofp i32 %401 to double
  invoke void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %394, double noundef %403)
          to label %404 unwind label %44

404:                                              ; preds = %402
  br label %559

405:                                              ; preds = %389
  %406 = load i32, ptr %11, align 4, !tbaa !13
  %407 = sext i32 %406 to i64
  %408 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %407)
          to label %409 unwind label %44

409:                                              ; preds = %405
  %410 = load ptr, ptr %8, align 8, !tbaa !5
  %411 = load i32, ptr %11, align 4, !tbaa !13
  %412 = sext i32 %411 to i64
  %413 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %410, i64 noundef %412)
          to label %414 unwind label %44

414:                                              ; preds = %409
  %415 = invoke noundef i32 @_ZNK7glslang11TConstUnion9getUConstEv(ptr noundef nonnull align 8 dereferenceable(12) %413)
          to label %416 unwind label %44

416:                                              ; preds = %414
  %417 = uitofp i32 %415 to double
  invoke void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %408, double noundef %417)
          to label %418 unwind label %44

418:                                              ; preds = %416
  br label %559

419:                                              ; preds = %389
  %420 = load i32, ptr %11, align 4, !tbaa !13
  %421 = sext i32 %420 to i64
  %422 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %421)
          to label %423 unwind label %44

423:                                              ; preds = %419
  %424 = load ptr, ptr %8, align 8, !tbaa !5
  %425 = load i32, ptr %11, align 4, !tbaa !13
  %426 = sext i32 %425 to i64
  %427 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %424, i64 noundef %426)
          to label %428 unwind label %44

428:                                              ; preds = %423
  %429 = invoke noundef i32 @_ZNK7glslang11TConstUnion9getUConstEv(ptr noundef nonnull align 8 dereferenceable(12) %427)
          to label %430 unwind label %44

430:                                              ; preds = %428
  %431 = uitofp i32 %429 to double
  invoke void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %422, double noundef %431)
          to label %432 unwind label %44

432:                                              ; preds = %430
  br label %559

433:                                              ; preds = %389
  %434 = load i32, ptr %11, align 4, !tbaa !13
  %435 = sext i32 %434 to i64
  %436 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %435)
          to label %437 unwind label %44

437:                                              ; preds = %433
  %438 = load ptr, ptr %8, align 8, !tbaa !5
  %439 = load i32, ptr %11, align 4, !tbaa !13
  %440 = sext i32 %439 to i64
  %441 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %438, i64 noundef %440)
          to label %442 unwind label %44

442:                                              ; preds = %437
  %443 = invoke noundef i32 @_ZNK7glslang11TConstUnion9getUConstEv(ptr noundef nonnull align 8 dereferenceable(12) %441)
          to label %444 unwind label %44

444:                                              ; preds = %442
  %445 = trunc i32 %443 to i8
  invoke void @_ZN7glslang11TConstUnion10setI8ConstEa(ptr noundef nonnull align 8 dereferenceable(12) %436, i8 noundef signext %445)
          to label %446 unwind label %44

446:                                              ; preds = %444
  br label %559

447:                                              ; preds = %389
  %448 = load i32, ptr %11, align 4, !tbaa !13
  %449 = sext i32 %448 to i64
  %450 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %449)
          to label %451 unwind label %44

451:                                              ; preds = %447
  %452 = load ptr, ptr %8, align 8, !tbaa !5
  %453 = load i32, ptr %11, align 4, !tbaa !13
  %454 = sext i32 %453 to i64
  %455 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %452, i64 noundef %454)
          to label %456 unwind label %44

456:                                              ; preds = %451
  %457 = invoke noundef i32 @_ZNK7glslang11TConstUnion9getUConstEv(ptr noundef nonnull align 8 dereferenceable(12) %455)
          to label %458 unwind label %44

458:                                              ; preds = %456
  %459 = trunc i32 %457 to i16
  invoke void @_ZN7glslang11TConstUnion11setI16ConstEs(ptr noundef nonnull align 8 dereferenceable(12) %450, i16 noundef signext %459)
          to label %460 unwind label %44

460:                                              ; preds = %458
  br label %559

461:                                              ; preds = %389
  %462 = load i32, ptr %11, align 4, !tbaa !13
  %463 = sext i32 %462 to i64
  %464 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %463)
          to label %465 unwind label %44

465:                                              ; preds = %461
  %466 = load ptr, ptr %8, align 8, !tbaa !5
  %467 = load i32, ptr %11, align 4, !tbaa !13
  %468 = sext i32 %467 to i64
  %469 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %466, i64 noundef %468)
          to label %470 unwind label %44

470:                                              ; preds = %465
  %471 = invoke noundef i32 @_ZNK7glslang11TConstUnion9getUConstEv(ptr noundef nonnull align 8 dereferenceable(12) %469)
          to label %472 unwind label %44

472:                                              ; preds = %470
  invoke void @_ZN7glslang11TConstUnion9setIConstEi(ptr noundef nonnull align 8 dereferenceable(12) %464, i32 noundef %471)
          to label %473 unwind label %44

473:                                              ; preds = %472
  br label %559

474:                                              ; preds = %389
  %475 = load i32, ptr %11, align 4, !tbaa !13
  %476 = sext i32 %475 to i64
  %477 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %476)
          to label %478 unwind label %44

478:                                              ; preds = %474
  %479 = load ptr, ptr %8, align 8, !tbaa !5
  %480 = load i32, ptr %11, align 4, !tbaa !13
  %481 = sext i32 %480 to i64
  %482 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %479, i64 noundef %481)
          to label %483 unwind label %44

483:                                              ; preds = %478
  %484 = invoke noundef i32 @_ZNK7glslang11TConstUnion9getUConstEv(ptr noundef nonnull align 8 dereferenceable(12) %482)
          to label %485 unwind label %44

485:                                              ; preds = %483
  %486 = zext i32 %484 to i64
  invoke void @_ZN7glslang11TConstUnion11setI64ConstEx(ptr noundef nonnull align 8 dereferenceable(12) %477, i64 noundef %486)
          to label %487 unwind label %44

487:                                              ; preds = %485
  br label %559

488:                                              ; preds = %389
  %489 = load i32, ptr %11, align 4, !tbaa !13
  %490 = sext i32 %489 to i64
  %491 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %490)
          to label %492 unwind label %44

492:                                              ; preds = %488
  %493 = load ptr, ptr %8, align 8, !tbaa !5
  %494 = load i32, ptr %11, align 4, !tbaa !13
  %495 = sext i32 %494 to i64
  %496 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %493, i64 noundef %495)
          to label %497 unwind label %44

497:                                              ; preds = %492
  %498 = invoke noundef i32 @_ZNK7glslang11TConstUnion9getUConstEv(ptr noundef nonnull align 8 dereferenceable(12) %496)
          to label %499 unwind label %44

499:                                              ; preds = %497
  %500 = trunc i32 %498 to i8
  invoke void @_ZN7glslang11TConstUnion10setU8ConstEh(ptr noundef nonnull align 8 dereferenceable(12) %491, i8 noundef zeroext %500)
          to label %501 unwind label %44

501:                                              ; preds = %499
  br label %559

502:                                              ; preds = %389
  %503 = load i32, ptr %11, align 4, !tbaa !13
  %504 = sext i32 %503 to i64
  %505 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %504)
          to label %506 unwind label %44

506:                                              ; preds = %502
  %507 = load ptr, ptr %8, align 8, !tbaa !5
  %508 = load i32, ptr %11, align 4, !tbaa !13
  %509 = sext i32 %508 to i64
  %510 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %507, i64 noundef %509)
          to label %511 unwind label %44

511:                                              ; preds = %506
  %512 = invoke noundef i32 @_ZNK7glslang11TConstUnion9getUConstEv(ptr noundef nonnull align 8 dereferenceable(12) %510)
          to label %513 unwind label %44

513:                                              ; preds = %511
  %514 = trunc i32 %512 to i16
  invoke void @_ZN7glslang11TConstUnion11setU16ConstEt(ptr noundef nonnull align 8 dereferenceable(12) %505, i16 noundef zeroext %514)
          to label %515 unwind label %44

515:                                              ; preds = %513
  br label %559

516:                                              ; preds = %389
  %517 = load i32, ptr %11, align 4, !tbaa !13
  %518 = sext i32 %517 to i64
  %519 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %518)
          to label %520 unwind label %44

520:                                              ; preds = %516
  %521 = load ptr, ptr %8, align 8, !tbaa !5
  %522 = load i32, ptr %11, align 4, !tbaa !13
  %523 = sext i32 %522 to i64
  %524 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %521, i64 noundef %523)
          to label %525 unwind label %44

525:                                              ; preds = %520
  %526 = invoke noundef i32 @_ZNK7glslang11TConstUnion9getUConstEv(ptr noundef nonnull align 8 dereferenceable(12) %524)
          to label %527 unwind label %44

527:                                              ; preds = %525
  invoke void @_ZN7glslang11TConstUnion9setUConstEj(ptr noundef nonnull align 8 dereferenceable(12) %519, i32 noundef %526)
          to label %528 unwind label %44

528:                                              ; preds = %527
  br label %559

529:                                              ; preds = %389
  %530 = load i32, ptr %11, align 4, !tbaa !13
  %531 = sext i32 %530 to i64
  %532 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %531)
          to label %533 unwind label %44

533:                                              ; preds = %529
  %534 = load ptr, ptr %8, align 8, !tbaa !5
  %535 = load i32, ptr %11, align 4, !tbaa !13
  %536 = sext i32 %535 to i64
  %537 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %534, i64 noundef %536)
          to label %538 unwind label %44

538:                                              ; preds = %533
  %539 = invoke noundef i32 @_ZNK7glslang11TConstUnion9getUConstEv(ptr noundef nonnull align 8 dereferenceable(12) %537)
          to label %540 unwind label %44

540:                                              ; preds = %538
  %541 = zext i32 %539 to i64
  invoke void @_ZN7glslang11TConstUnion11setU64ConstEy(ptr noundef nonnull align 8 dereferenceable(12) %532, i64 noundef %541)
          to label %542 unwind label %44

542:                                              ; preds = %540
  br label %559

543:                                              ; preds = %389
  %544 = load i32, ptr %11, align 4, !tbaa !13
  %545 = sext i32 %544 to i64
  %546 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %545)
          to label %547 unwind label %44

547:                                              ; preds = %543
  %548 = load ptr, ptr %8, align 8, !tbaa !5
  %549 = load i32, ptr %11, align 4, !tbaa !13
  %550 = sext i32 %549 to i64
  %551 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %548, i64 noundef %550)
          to label %552 unwind label %44

552:                                              ; preds = %547
  %553 = invoke noundef i32 @_ZNK7glslang11TConstUnion9getUConstEv(ptr noundef nonnull align 8 dereferenceable(12) %551)
          to label %554 unwind label %44

554:                                              ; preds = %552
  %555 = icmp ne i32 %553, 0
  invoke void @_ZN7glslang11TConstUnion9setBConstEb(ptr noundef nonnull align 8 dereferenceable(12) %546, i1 noundef zeroext %555)
          to label %556 unwind label %44

556:                                              ; preds = %554
  br label %559

557:                                              ; preds = %389
  %558 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %558, ptr %4, align 8
  store i32 1, ptr %12, align 4
  br label %2110

559:                                              ; preds = %556, %542, %528, %515, %501, %487, %473, %460, %446, %432, %418, %404
  br label %2106

560:                                              ; preds = %43
  %561 = load i32, ptr %6, align 4, !tbaa !9
  switch i32 %561, label %731 [
    i32 3, label %562
    i32 1, label %576
    i32 2, label %590
    i32 4, label %604
    i32 6, label %618
    i32 8, label %632
    i32 10, label %646
    i32 5, label %660
    i32 7, label %674
    i32 9, label %688
    i32 11, label %702
    i32 12, label %716
  ]

562:                                              ; preds = %560
  %563 = load i32, ptr %11, align 4, !tbaa !13
  %564 = sext i32 %563 to i64
  %565 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %564)
          to label %566 unwind label %44

566:                                              ; preds = %562
  %567 = load ptr, ptr %8, align 8, !tbaa !5
  %568 = load i32, ptr %11, align 4, !tbaa !13
  %569 = sext i32 %568 to i64
  %570 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %567, i64 noundef %569)
          to label %571 unwind label %44

571:                                              ; preds = %566
  %572 = invoke noundef zeroext i1 @_ZNK7glslang11TConstUnion9getBConstEv(ptr noundef nonnull align 8 dereferenceable(12) %570)
          to label %573 unwind label %44

573:                                              ; preds = %571
  %574 = uitofp i1 %572 to double
  invoke void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %565, double noundef %574)
          to label %575 unwind label %44

575:                                              ; preds = %573
  br label %733

576:                                              ; preds = %560
  %577 = load i32, ptr %11, align 4, !tbaa !13
  %578 = sext i32 %577 to i64
  %579 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %578)
          to label %580 unwind label %44

580:                                              ; preds = %576
  %581 = load ptr, ptr %8, align 8, !tbaa !5
  %582 = load i32, ptr %11, align 4, !tbaa !13
  %583 = sext i32 %582 to i64
  %584 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %581, i64 noundef %583)
          to label %585 unwind label %44

585:                                              ; preds = %580
  %586 = invoke noundef zeroext i1 @_ZNK7glslang11TConstUnion9getBConstEv(ptr noundef nonnull align 8 dereferenceable(12) %584)
          to label %587 unwind label %44

587:                                              ; preds = %585
  %588 = uitofp i1 %586 to double
  invoke void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %579, double noundef %588)
          to label %589 unwind label %44

589:                                              ; preds = %587
  br label %733

590:                                              ; preds = %560
  %591 = load i32, ptr %11, align 4, !tbaa !13
  %592 = sext i32 %591 to i64
  %593 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %592)
          to label %594 unwind label %44

594:                                              ; preds = %590
  %595 = load ptr, ptr %8, align 8, !tbaa !5
  %596 = load i32, ptr %11, align 4, !tbaa !13
  %597 = sext i32 %596 to i64
  %598 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %595, i64 noundef %597)
          to label %599 unwind label %44

599:                                              ; preds = %594
  %600 = invoke noundef zeroext i1 @_ZNK7glslang11TConstUnion9getBConstEv(ptr noundef nonnull align 8 dereferenceable(12) %598)
          to label %601 unwind label %44

601:                                              ; preds = %599
  %602 = uitofp i1 %600 to double
  invoke void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %593, double noundef %602)
          to label %603 unwind label %44

603:                                              ; preds = %601
  br label %733

604:                                              ; preds = %560
  %605 = load i32, ptr %11, align 4, !tbaa !13
  %606 = sext i32 %605 to i64
  %607 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %606)
          to label %608 unwind label %44

608:                                              ; preds = %604
  %609 = load ptr, ptr %8, align 8, !tbaa !5
  %610 = load i32, ptr %11, align 4, !tbaa !13
  %611 = sext i32 %610 to i64
  %612 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %609, i64 noundef %611)
          to label %613 unwind label %44

613:                                              ; preds = %608
  %614 = invoke noundef zeroext i1 @_ZNK7glslang11TConstUnion9getBConstEv(ptr noundef nonnull align 8 dereferenceable(12) %612)
          to label %615 unwind label %44

615:                                              ; preds = %613
  %616 = zext i1 %614 to i8
  invoke void @_ZN7glslang11TConstUnion10setI8ConstEa(ptr noundef nonnull align 8 dereferenceable(12) %607, i8 noundef signext %616)
          to label %617 unwind label %44

617:                                              ; preds = %615
  br label %733

618:                                              ; preds = %560
  %619 = load i32, ptr %11, align 4, !tbaa !13
  %620 = sext i32 %619 to i64
  %621 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %620)
          to label %622 unwind label %44

622:                                              ; preds = %618
  %623 = load ptr, ptr %8, align 8, !tbaa !5
  %624 = load i32, ptr %11, align 4, !tbaa !13
  %625 = sext i32 %624 to i64
  %626 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %623, i64 noundef %625)
          to label %627 unwind label %44

627:                                              ; preds = %622
  %628 = invoke noundef zeroext i1 @_ZNK7glslang11TConstUnion9getBConstEv(ptr noundef nonnull align 8 dereferenceable(12) %626)
          to label %629 unwind label %44

629:                                              ; preds = %627
  %630 = zext i1 %628 to i16
  invoke void @_ZN7glslang11TConstUnion11setI16ConstEs(ptr noundef nonnull align 8 dereferenceable(12) %621, i16 noundef signext %630)
          to label %631 unwind label %44

631:                                              ; preds = %629
  br label %733

632:                                              ; preds = %560
  %633 = load i32, ptr %11, align 4, !tbaa !13
  %634 = sext i32 %633 to i64
  %635 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %634)
          to label %636 unwind label %44

636:                                              ; preds = %632
  %637 = load ptr, ptr %8, align 8, !tbaa !5
  %638 = load i32, ptr %11, align 4, !tbaa !13
  %639 = sext i32 %638 to i64
  %640 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %637, i64 noundef %639)
          to label %641 unwind label %44

641:                                              ; preds = %636
  %642 = invoke noundef zeroext i1 @_ZNK7glslang11TConstUnion9getBConstEv(ptr noundef nonnull align 8 dereferenceable(12) %640)
          to label %643 unwind label %44

643:                                              ; preds = %641
  %644 = zext i1 %642 to i32
  invoke void @_ZN7glslang11TConstUnion9setIConstEi(ptr noundef nonnull align 8 dereferenceable(12) %635, i32 noundef %644)
          to label %645 unwind label %44

645:                                              ; preds = %643
  br label %733

646:                                              ; preds = %560
  %647 = load i32, ptr %11, align 4, !tbaa !13
  %648 = sext i32 %647 to i64
  %649 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %648)
          to label %650 unwind label %44

650:                                              ; preds = %646
  %651 = load ptr, ptr %8, align 8, !tbaa !5
  %652 = load i32, ptr %11, align 4, !tbaa !13
  %653 = sext i32 %652 to i64
  %654 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %651, i64 noundef %653)
          to label %655 unwind label %44

655:                                              ; preds = %650
  %656 = invoke noundef zeroext i1 @_ZNK7glslang11TConstUnion9getBConstEv(ptr noundef nonnull align 8 dereferenceable(12) %654)
          to label %657 unwind label %44

657:                                              ; preds = %655
  %658 = zext i1 %656 to i64
  invoke void @_ZN7glslang11TConstUnion11setI64ConstEx(ptr noundef nonnull align 8 dereferenceable(12) %649, i64 noundef %658)
          to label %659 unwind label %44

659:                                              ; preds = %657
  br label %733

660:                                              ; preds = %560
  %661 = load i32, ptr %11, align 4, !tbaa !13
  %662 = sext i32 %661 to i64
  %663 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %662)
          to label %664 unwind label %44

664:                                              ; preds = %660
  %665 = load ptr, ptr %8, align 8, !tbaa !5
  %666 = load i32, ptr %11, align 4, !tbaa !13
  %667 = sext i32 %666 to i64
  %668 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %665, i64 noundef %667)
          to label %669 unwind label %44

669:                                              ; preds = %664
  %670 = invoke noundef zeroext i1 @_ZNK7glslang11TConstUnion9getBConstEv(ptr noundef nonnull align 8 dereferenceable(12) %668)
          to label %671 unwind label %44

671:                                              ; preds = %669
  %672 = zext i1 %670 to i8
  invoke void @_ZN7glslang11TConstUnion10setU8ConstEh(ptr noundef nonnull align 8 dereferenceable(12) %663, i8 noundef zeroext %672)
          to label %673 unwind label %44

673:                                              ; preds = %671
  br label %733

674:                                              ; preds = %560
  %675 = load i32, ptr %11, align 4, !tbaa !13
  %676 = sext i32 %675 to i64
  %677 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %676)
          to label %678 unwind label %44

678:                                              ; preds = %674
  %679 = load ptr, ptr %8, align 8, !tbaa !5
  %680 = load i32, ptr %11, align 4, !tbaa !13
  %681 = sext i32 %680 to i64
  %682 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %679, i64 noundef %681)
          to label %683 unwind label %44

683:                                              ; preds = %678
  %684 = invoke noundef zeroext i1 @_ZNK7glslang11TConstUnion9getBConstEv(ptr noundef nonnull align 8 dereferenceable(12) %682)
          to label %685 unwind label %44

685:                                              ; preds = %683
  %686 = zext i1 %684 to i16
  invoke void @_ZN7glslang11TConstUnion11setU16ConstEt(ptr noundef nonnull align 8 dereferenceable(12) %677, i16 noundef zeroext %686)
          to label %687 unwind label %44

687:                                              ; preds = %685
  br label %733

688:                                              ; preds = %560
  %689 = load i32, ptr %11, align 4, !tbaa !13
  %690 = sext i32 %689 to i64
  %691 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %690)
          to label %692 unwind label %44

692:                                              ; preds = %688
  %693 = load ptr, ptr %8, align 8, !tbaa !5
  %694 = load i32, ptr %11, align 4, !tbaa !13
  %695 = sext i32 %694 to i64
  %696 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %693, i64 noundef %695)
          to label %697 unwind label %44

697:                                              ; preds = %692
  %698 = invoke noundef zeroext i1 @_ZNK7glslang11TConstUnion9getBConstEv(ptr noundef nonnull align 8 dereferenceable(12) %696)
          to label %699 unwind label %44

699:                                              ; preds = %697
  %700 = zext i1 %698 to i32
  invoke void @_ZN7glslang11TConstUnion9setUConstEj(ptr noundef nonnull align 8 dereferenceable(12) %691, i32 noundef %700)
          to label %701 unwind label %44

701:                                              ; preds = %699
  br label %733

702:                                              ; preds = %560
  %703 = load i32, ptr %11, align 4, !tbaa !13
  %704 = sext i32 %703 to i64
  %705 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %704)
          to label %706 unwind label %44

706:                                              ; preds = %702
  %707 = load ptr, ptr %8, align 8, !tbaa !5
  %708 = load i32, ptr %11, align 4, !tbaa !13
  %709 = sext i32 %708 to i64
  %710 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %707, i64 noundef %709)
          to label %711 unwind label %44

711:                                              ; preds = %706
  %712 = invoke noundef zeroext i1 @_ZNK7glslang11TConstUnion9getBConstEv(ptr noundef nonnull align 8 dereferenceable(12) %710)
          to label %713 unwind label %44

713:                                              ; preds = %711
  %714 = zext i1 %712 to i64
  invoke void @_ZN7glslang11TConstUnion11setU64ConstEy(ptr noundef nonnull align 8 dereferenceable(12) %705, i64 noundef %714)
          to label %715 unwind label %44

715:                                              ; preds = %713
  br label %733

716:                                              ; preds = %560
  %717 = load i32, ptr %11, align 4, !tbaa !13
  %718 = sext i32 %717 to i64
  %719 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %718)
          to label %720 unwind label %44

720:                                              ; preds = %716
  %721 = load ptr, ptr %8, align 8, !tbaa !5
  %722 = load i32, ptr %11, align 4, !tbaa !13
  %723 = sext i32 %722 to i64
  %724 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %721, i64 noundef %723)
          to label %725 unwind label %44

725:                                              ; preds = %720
  %726 = invoke noundef zeroext i1 @_ZNK7glslang11TConstUnion9getBConstEv(ptr noundef nonnull align 8 dereferenceable(12) %724)
          to label %727 unwind label %44

727:                                              ; preds = %725
  %728 = zext i1 %726 to i32
  %729 = icmp ne i32 %728, 0
  invoke void @_ZN7glslang11TConstUnion9setBConstEb(ptr noundef nonnull align 8 dereferenceable(12) %719, i1 noundef zeroext %729)
          to label %730 unwind label %44

730:                                              ; preds = %727
  br label %733

731:                                              ; preds = %560
  %732 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %732, ptr %4, align 8
  store i32 1, ptr %12, align 4
  br label %2110

733:                                              ; preds = %730, %715, %701, %687, %673, %659, %645, %631, %617, %603, %589, %575
  br label %2106

734:                                              ; preds = %43
  %735 = load i32, ptr %6, align 4, !tbaa !9
  switch i32 %735, label %901 [
    i32 3, label %736
    i32 1, label %749
    i32 2, label %762
    i32 4, label %775
    i32 6, label %789
    i32 8, label %803
    i32 10, label %817
    i32 5, label %831
    i32 7, label %845
    i32 9, label %859
    i32 11, label %873
    i32 12, label %887
  ]

736:                                              ; preds = %734
  %737 = load i32, ptr %11, align 4, !tbaa !13
  %738 = sext i32 %737 to i64
  %739 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %738)
          to label %740 unwind label %44

740:                                              ; preds = %736
  %741 = load ptr, ptr %8, align 8, !tbaa !5
  %742 = load i32, ptr %11, align 4, !tbaa !13
  %743 = sext i32 %742 to i64
  %744 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %741, i64 noundef %743)
          to label %745 unwind label %44

745:                                              ; preds = %740
  %746 = invoke noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %744)
          to label %747 unwind label %44

747:                                              ; preds = %745
  invoke void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %739, double noundef %746)
          to label %748 unwind label %44

748:                                              ; preds = %747
  br label %903

749:                                              ; preds = %734
  %750 = load i32, ptr %11, align 4, !tbaa !13
  %751 = sext i32 %750 to i64
  %752 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %751)
          to label %753 unwind label %44

753:                                              ; preds = %749
  %754 = load ptr, ptr %8, align 8, !tbaa !5
  %755 = load i32, ptr %11, align 4, !tbaa !13
  %756 = sext i32 %755 to i64
  %757 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %754, i64 noundef %756)
          to label %758 unwind label %44

758:                                              ; preds = %753
  %759 = invoke noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %757)
          to label %760 unwind label %44

760:                                              ; preds = %758
  invoke void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %752, double noundef %759)
          to label %761 unwind label %44

761:                                              ; preds = %760
  br label %903

762:                                              ; preds = %734
  %763 = load i32, ptr %11, align 4, !tbaa !13
  %764 = sext i32 %763 to i64
  %765 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %764)
          to label %766 unwind label %44

766:                                              ; preds = %762
  %767 = load ptr, ptr %8, align 8, !tbaa !5
  %768 = load i32, ptr %11, align 4, !tbaa !13
  %769 = sext i32 %768 to i64
  %770 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %767, i64 noundef %769)
          to label %771 unwind label %44

771:                                              ; preds = %766
  %772 = invoke noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %770)
          to label %773 unwind label %44

773:                                              ; preds = %771
  invoke void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %765, double noundef %772)
          to label %774 unwind label %44

774:                                              ; preds = %773
  br label %903

775:                                              ; preds = %734
  %776 = load i32, ptr %11, align 4, !tbaa !13
  %777 = sext i32 %776 to i64
  %778 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %777)
          to label %779 unwind label %44

779:                                              ; preds = %775
  %780 = load ptr, ptr %8, align 8, !tbaa !5
  %781 = load i32, ptr %11, align 4, !tbaa !13
  %782 = sext i32 %781 to i64
  %783 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %780, i64 noundef %782)
          to label %784 unwind label %44

784:                                              ; preds = %779
  %785 = invoke noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %783)
          to label %786 unwind label %44

786:                                              ; preds = %784
  %787 = fptosi double %785 to i8
  invoke void @_ZN7glslang11TConstUnion10setI8ConstEa(ptr noundef nonnull align 8 dereferenceable(12) %778, i8 noundef signext %787)
          to label %788 unwind label %44

788:                                              ; preds = %786
  br label %903

789:                                              ; preds = %734
  %790 = load i32, ptr %11, align 4, !tbaa !13
  %791 = sext i32 %790 to i64
  %792 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %791)
          to label %793 unwind label %44

793:                                              ; preds = %789
  %794 = load ptr, ptr %8, align 8, !tbaa !5
  %795 = load i32, ptr %11, align 4, !tbaa !13
  %796 = sext i32 %795 to i64
  %797 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %794, i64 noundef %796)
          to label %798 unwind label %44

798:                                              ; preds = %793
  %799 = invoke noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %797)
          to label %800 unwind label %44

800:                                              ; preds = %798
  %801 = fptosi double %799 to i16
  invoke void @_ZN7glslang11TConstUnion11setI16ConstEs(ptr noundef nonnull align 8 dereferenceable(12) %792, i16 noundef signext %801)
          to label %802 unwind label %44

802:                                              ; preds = %800
  br label %903

803:                                              ; preds = %734
  %804 = load i32, ptr %11, align 4, !tbaa !13
  %805 = sext i32 %804 to i64
  %806 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %805)
          to label %807 unwind label %44

807:                                              ; preds = %803
  %808 = load ptr, ptr %8, align 8, !tbaa !5
  %809 = load i32, ptr %11, align 4, !tbaa !13
  %810 = sext i32 %809 to i64
  %811 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %808, i64 noundef %810)
          to label %812 unwind label %44

812:                                              ; preds = %807
  %813 = invoke noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %811)
          to label %814 unwind label %44

814:                                              ; preds = %812
  %815 = fptosi double %813 to i32
  invoke void @_ZN7glslang11TConstUnion9setIConstEi(ptr noundef nonnull align 8 dereferenceable(12) %806, i32 noundef %815)
          to label %816 unwind label %44

816:                                              ; preds = %814
  br label %903

817:                                              ; preds = %734
  %818 = load i32, ptr %11, align 4, !tbaa !13
  %819 = sext i32 %818 to i64
  %820 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %819)
          to label %821 unwind label %44

821:                                              ; preds = %817
  %822 = load ptr, ptr %8, align 8, !tbaa !5
  %823 = load i32, ptr %11, align 4, !tbaa !13
  %824 = sext i32 %823 to i64
  %825 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %822, i64 noundef %824)
          to label %826 unwind label %44

826:                                              ; preds = %821
  %827 = invoke noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %825)
          to label %828 unwind label %44

828:                                              ; preds = %826
  %829 = fptosi double %827 to i64
  invoke void @_ZN7glslang11TConstUnion11setI64ConstEx(ptr noundef nonnull align 8 dereferenceable(12) %820, i64 noundef %829)
          to label %830 unwind label %44

830:                                              ; preds = %828
  br label %903

831:                                              ; preds = %734
  %832 = load i32, ptr %11, align 4, !tbaa !13
  %833 = sext i32 %832 to i64
  %834 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %833)
          to label %835 unwind label %44

835:                                              ; preds = %831
  %836 = load ptr, ptr %8, align 8, !tbaa !5
  %837 = load i32, ptr %11, align 4, !tbaa !13
  %838 = sext i32 %837 to i64
  %839 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %836, i64 noundef %838)
          to label %840 unwind label %44

840:                                              ; preds = %835
  %841 = invoke noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %839)
          to label %842 unwind label %44

842:                                              ; preds = %840
  %843 = fptoui double %841 to i8
  invoke void @_ZN7glslang11TConstUnion10setU8ConstEh(ptr noundef nonnull align 8 dereferenceable(12) %834, i8 noundef zeroext %843)
          to label %844 unwind label %44

844:                                              ; preds = %842
  br label %903

845:                                              ; preds = %734
  %846 = load i32, ptr %11, align 4, !tbaa !13
  %847 = sext i32 %846 to i64
  %848 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %847)
          to label %849 unwind label %44

849:                                              ; preds = %845
  %850 = load ptr, ptr %8, align 8, !tbaa !5
  %851 = load i32, ptr %11, align 4, !tbaa !13
  %852 = sext i32 %851 to i64
  %853 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %850, i64 noundef %852)
          to label %854 unwind label %44

854:                                              ; preds = %849
  %855 = invoke noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %853)
          to label %856 unwind label %44

856:                                              ; preds = %854
  %857 = fptoui double %855 to i16
  invoke void @_ZN7glslang11TConstUnion11setU16ConstEt(ptr noundef nonnull align 8 dereferenceable(12) %848, i16 noundef zeroext %857)
          to label %858 unwind label %44

858:                                              ; preds = %856
  br label %903

859:                                              ; preds = %734
  %860 = load i32, ptr %11, align 4, !tbaa !13
  %861 = sext i32 %860 to i64
  %862 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %861)
          to label %863 unwind label %44

863:                                              ; preds = %859
  %864 = load ptr, ptr %8, align 8, !tbaa !5
  %865 = load i32, ptr %11, align 4, !tbaa !13
  %866 = sext i32 %865 to i64
  %867 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %864, i64 noundef %866)
          to label %868 unwind label %44

868:                                              ; preds = %863
  %869 = invoke noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %867)
          to label %870 unwind label %44

870:                                              ; preds = %868
  %871 = fptoui double %869 to i32
  invoke void @_ZN7glslang11TConstUnion9setUConstEj(ptr noundef nonnull align 8 dereferenceable(12) %862, i32 noundef %871)
          to label %872 unwind label %44

872:                                              ; preds = %870
  br label %903

873:                                              ; preds = %734
  %874 = load i32, ptr %11, align 4, !tbaa !13
  %875 = sext i32 %874 to i64
  %876 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %875)
          to label %877 unwind label %44

877:                                              ; preds = %873
  %878 = load ptr, ptr %8, align 8, !tbaa !5
  %879 = load i32, ptr %11, align 4, !tbaa !13
  %880 = sext i32 %879 to i64
  %881 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %878, i64 noundef %880)
          to label %882 unwind label %44

882:                                              ; preds = %877
  %883 = invoke noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %881)
          to label %884 unwind label %44

884:                                              ; preds = %882
  %885 = fptoui double %883 to i64
  invoke void @_ZN7glslang11TConstUnion11setU64ConstEy(ptr noundef nonnull align 8 dereferenceable(12) %876, i64 noundef %885)
          to label %886 unwind label %44

886:                                              ; preds = %884
  br label %903

887:                                              ; preds = %734
  %888 = load i32, ptr %11, align 4, !tbaa !13
  %889 = sext i32 %888 to i64
  %890 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %889)
          to label %891 unwind label %44

891:                                              ; preds = %887
  %892 = load ptr, ptr %8, align 8, !tbaa !5
  %893 = load i32, ptr %11, align 4, !tbaa !13
  %894 = sext i32 %893 to i64
  %895 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %892, i64 noundef %894)
          to label %896 unwind label %44

896:                                              ; preds = %891
  %897 = invoke noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %895)
          to label %898 unwind label %44

898:                                              ; preds = %896
  %899 = fcmp une double %897, 0.000000e+00
  invoke void @_ZN7glslang11TConstUnion9setBConstEb(ptr noundef nonnull align 8 dereferenceable(12) %890, i1 noundef zeroext %899)
          to label %900 unwind label %44

900:                                              ; preds = %898
  br label %903

901:                                              ; preds = %734
  %902 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %902, ptr %4, align 8
  store i32 1, ptr %12, align 4
  br label %2110

903:                                              ; preds = %900, %886, %872, %858, %844, %830, %816, %802, %788, %774, %761, %748
  br label %2106

904:                                              ; preds = %43
  %905 = load i32, ptr %6, align 4, !tbaa !9
  switch i32 %905, label %1071 [
    i32 3, label %906
    i32 1, label %919
    i32 2, label %932
    i32 4, label %945
    i32 6, label %959
    i32 8, label %973
    i32 10, label %987
    i32 5, label %1001
    i32 7, label %1015
    i32 9, label %1029
    i32 11, label %1043
    i32 12, label %1057
  ]

906:                                              ; preds = %904
  %907 = load i32, ptr %11, align 4, !tbaa !13
  %908 = sext i32 %907 to i64
  %909 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %908)
          to label %910 unwind label %44

910:                                              ; preds = %906
  %911 = load ptr, ptr %8, align 8, !tbaa !5
  %912 = load i32, ptr %11, align 4, !tbaa !13
  %913 = sext i32 %912 to i64
  %914 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %911, i64 noundef %913)
          to label %915 unwind label %44

915:                                              ; preds = %910
  %916 = invoke noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %914)
          to label %917 unwind label %44

917:                                              ; preds = %915
  invoke void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %909, double noundef %916)
          to label %918 unwind label %44

918:                                              ; preds = %917
  br label %1073

919:                                              ; preds = %904
  %920 = load i32, ptr %11, align 4, !tbaa !13
  %921 = sext i32 %920 to i64
  %922 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %921)
          to label %923 unwind label %44

923:                                              ; preds = %919
  %924 = load ptr, ptr %8, align 8, !tbaa !5
  %925 = load i32, ptr %11, align 4, !tbaa !13
  %926 = sext i32 %925 to i64
  %927 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %924, i64 noundef %926)
          to label %928 unwind label %44

928:                                              ; preds = %923
  %929 = invoke noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %927)
          to label %930 unwind label %44

930:                                              ; preds = %928
  invoke void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %922, double noundef %929)
          to label %931 unwind label %44

931:                                              ; preds = %930
  br label %1073

932:                                              ; preds = %904
  %933 = load i32, ptr %11, align 4, !tbaa !13
  %934 = sext i32 %933 to i64
  %935 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %934)
          to label %936 unwind label %44

936:                                              ; preds = %932
  %937 = load ptr, ptr %8, align 8, !tbaa !5
  %938 = load i32, ptr %11, align 4, !tbaa !13
  %939 = sext i32 %938 to i64
  %940 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %937, i64 noundef %939)
          to label %941 unwind label %44

941:                                              ; preds = %936
  %942 = invoke noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %940)
          to label %943 unwind label %44

943:                                              ; preds = %941
  invoke void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %935, double noundef %942)
          to label %944 unwind label %44

944:                                              ; preds = %943
  br label %1073

945:                                              ; preds = %904
  %946 = load i32, ptr %11, align 4, !tbaa !13
  %947 = sext i32 %946 to i64
  %948 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %947)
          to label %949 unwind label %44

949:                                              ; preds = %945
  %950 = load ptr, ptr %8, align 8, !tbaa !5
  %951 = load i32, ptr %11, align 4, !tbaa !13
  %952 = sext i32 %951 to i64
  %953 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %950, i64 noundef %952)
          to label %954 unwind label %44

954:                                              ; preds = %949
  %955 = invoke noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %953)
          to label %956 unwind label %44

956:                                              ; preds = %954
  %957 = fptosi double %955 to i8
  invoke void @_ZN7glslang11TConstUnion10setI8ConstEa(ptr noundef nonnull align 8 dereferenceable(12) %948, i8 noundef signext %957)
          to label %958 unwind label %44

958:                                              ; preds = %956
  br label %1073

959:                                              ; preds = %904
  %960 = load i32, ptr %11, align 4, !tbaa !13
  %961 = sext i32 %960 to i64
  %962 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %961)
          to label %963 unwind label %44

963:                                              ; preds = %959
  %964 = load ptr, ptr %8, align 8, !tbaa !5
  %965 = load i32, ptr %11, align 4, !tbaa !13
  %966 = sext i32 %965 to i64
  %967 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %964, i64 noundef %966)
          to label %968 unwind label %44

968:                                              ; preds = %963
  %969 = invoke noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %967)
          to label %970 unwind label %44

970:                                              ; preds = %968
  %971 = fptosi double %969 to i16
  invoke void @_ZN7glslang11TConstUnion11setI16ConstEs(ptr noundef nonnull align 8 dereferenceable(12) %962, i16 noundef signext %971)
          to label %972 unwind label %44

972:                                              ; preds = %970
  br label %1073

973:                                              ; preds = %904
  %974 = load i32, ptr %11, align 4, !tbaa !13
  %975 = sext i32 %974 to i64
  %976 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %975)
          to label %977 unwind label %44

977:                                              ; preds = %973
  %978 = load ptr, ptr %8, align 8, !tbaa !5
  %979 = load i32, ptr %11, align 4, !tbaa !13
  %980 = sext i32 %979 to i64
  %981 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %978, i64 noundef %980)
          to label %982 unwind label %44

982:                                              ; preds = %977
  %983 = invoke noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %981)
          to label %984 unwind label %44

984:                                              ; preds = %982
  %985 = fptosi double %983 to i32
  invoke void @_ZN7glslang11TConstUnion9setIConstEi(ptr noundef nonnull align 8 dereferenceable(12) %976, i32 noundef %985)
          to label %986 unwind label %44

986:                                              ; preds = %984
  br label %1073

987:                                              ; preds = %904
  %988 = load i32, ptr %11, align 4, !tbaa !13
  %989 = sext i32 %988 to i64
  %990 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %989)
          to label %991 unwind label %44

991:                                              ; preds = %987
  %992 = load ptr, ptr %8, align 8, !tbaa !5
  %993 = load i32, ptr %11, align 4, !tbaa !13
  %994 = sext i32 %993 to i64
  %995 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %992, i64 noundef %994)
          to label %996 unwind label %44

996:                                              ; preds = %991
  %997 = invoke noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %995)
          to label %998 unwind label %44

998:                                              ; preds = %996
  %999 = fptosi double %997 to i64
  invoke void @_ZN7glslang11TConstUnion11setI64ConstEx(ptr noundef nonnull align 8 dereferenceable(12) %990, i64 noundef %999)
          to label %1000 unwind label %44

1000:                                             ; preds = %998
  br label %1073

1001:                                             ; preds = %904
  %1002 = load i32, ptr %11, align 4, !tbaa !13
  %1003 = sext i32 %1002 to i64
  %1004 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %1003)
          to label %1005 unwind label %44

1005:                                             ; preds = %1001
  %1006 = load ptr, ptr %8, align 8, !tbaa !5
  %1007 = load i32, ptr %11, align 4, !tbaa !13
  %1008 = sext i32 %1007 to i64
  %1009 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1006, i64 noundef %1008)
          to label %1010 unwind label %44

1010:                                             ; preds = %1005
  %1011 = invoke noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1009)
          to label %1012 unwind label %44

1012:                                             ; preds = %1010
  %1013 = fptoui double %1011 to i8
  invoke void @_ZN7glslang11TConstUnion10setU8ConstEh(ptr noundef nonnull align 8 dereferenceable(12) %1004, i8 noundef zeroext %1013)
          to label %1014 unwind label %44

1014:                                             ; preds = %1012
  br label %1073

1015:                                             ; preds = %904
  %1016 = load i32, ptr %11, align 4, !tbaa !13
  %1017 = sext i32 %1016 to i64
  %1018 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %1017)
          to label %1019 unwind label %44

1019:                                             ; preds = %1015
  %1020 = load ptr, ptr %8, align 8, !tbaa !5
  %1021 = load i32, ptr %11, align 4, !tbaa !13
  %1022 = sext i32 %1021 to i64
  %1023 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1020, i64 noundef %1022)
          to label %1024 unwind label %44

1024:                                             ; preds = %1019
  %1025 = invoke noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1023)
          to label %1026 unwind label %44

1026:                                             ; preds = %1024
  %1027 = fptoui double %1025 to i16
  invoke void @_ZN7glslang11TConstUnion11setU16ConstEt(ptr noundef nonnull align 8 dereferenceable(12) %1018, i16 noundef zeroext %1027)
          to label %1028 unwind label %44

1028:                                             ; preds = %1026
  br label %1073

1029:                                             ; preds = %904
  %1030 = load i32, ptr %11, align 4, !tbaa !13
  %1031 = sext i32 %1030 to i64
  %1032 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %1031)
          to label %1033 unwind label %44

1033:                                             ; preds = %1029
  %1034 = load ptr, ptr %8, align 8, !tbaa !5
  %1035 = load i32, ptr %11, align 4, !tbaa !13
  %1036 = sext i32 %1035 to i64
  %1037 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1034, i64 noundef %1036)
          to label %1038 unwind label %44

1038:                                             ; preds = %1033
  %1039 = invoke noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1037)
          to label %1040 unwind label %44

1040:                                             ; preds = %1038
  %1041 = fptoui double %1039 to i32
  invoke void @_ZN7glslang11TConstUnion9setUConstEj(ptr noundef nonnull align 8 dereferenceable(12) %1032, i32 noundef %1041)
          to label %1042 unwind label %44

1042:                                             ; preds = %1040
  br label %1073

1043:                                             ; preds = %904
  %1044 = load i32, ptr %11, align 4, !tbaa !13
  %1045 = sext i32 %1044 to i64
  %1046 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %1045)
          to label %1047 unwind label %44

1047:                                             ; preds = %1043
  %1048 = load ptr, ptr %8, align 8, !tbaa !5
  %1049 = load i32, ptr %11, align 4, !tbaa !13
  %1050 = sext i32 %1049 to i64
  %1051 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1048, i64 noundef %1050)
          to label %1052 unwind label %44

1052:                                             ; preds = %1047
  %1053 = invoke noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1051)
          to label %1054 unwind label %44

1054:                                             ; preds = %1052
  %1055 = fptoui double %1053 to i64
  invoke void @_ZN7glslang11TConstUnion11setU64ConstEy(ptr noundef nonnull align 8 dereferenceable(12) %1046, i64 noundef %1055)
          to label %1056 unwind label %44

1056:                                             ; preds = %1054
  br label %1073

1057:                                             ; preds = %904
  %1058 = load i32, ptr %11, align 4, !tbaa !13
  %1059 = sext i32 %1058 to i64
  %1060 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %1059)
          to label %1061 unwind label %44

1061:                                             ; preds = %1057
  %1062 = load ptr, ptr %8, align 8, !tbaa !5
  %1063 = load i32, ptr %11, align 4, !tbaa !13
  %1064 = sext i32 %1063 to i64
  %1065 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1062, i64 noundef %1064)
          to label %1066 unwind label %44

1066:                                             ; preds = %1061
  %1067 = invoke noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1065)
          to label %1068 unwind label %44

1068:                                             ; preds = %1066
  %1069 = fcmp une double %1067, 0.000000e+00
  invoke void @_ZN7glslang11TConstUnion9setBConstEb(ptr noundef nonnull align 8 dereferenceable(12) %1060, i1 noundef zeroext %1069)
          to label %1070 unwind label %44

1070:                                             ; preds = %1068
  br label %1073

1071:                                             ; preds = %904
  %1072 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %1072, ptr %4, align 8
  store i32 1, ptr %12, align 4
  br label %2110

1073:                                             ; preds = %1070, %1056, %1042, %1028, %1014, %1000, %986, %972, %958, %944, %931, %918
  br label %2106

1074:                                             ; preds = %43
  %1075 = load i32, ptr %6, align 4, !tbaa !9
  switch i32 %1075, label %1243 [
    i32 3, label %1076
    i32 1, label %1090
    i32 2, label %1104
    i32 4, label %1118
    i32 6, label %1131
    i32 8, label %1145
    i32 10, label %1159
    i32 5, label %1173
    i32 7, label %1186
    i32 9, label %1200
    i32 11, label %1214
    i32 12, label %1228
  ]

1076:                                             ; preds = %1074
  %1077 = load i32, ptr %11, align 4, !tbaa !13
  %1078 = sext i32 %1077 to i64
  %1079 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %1078)
          to label %1080 unwind label %44

1080:                                             ; preds = %1076
  %1081 = load ptr, ptr %8, align 8, !tbaa !5
  %1082 = load i32, ptr %11, align 4, !tbaa !13
  %1083 = sext i32 %1082 to i64
  %1084 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1081, i64 noundef %1083)
          to label %1085 unwind label %44

1085:                                             ; preds = %1080
  %1086 = invoke noundef signext i8 @_ZNK7glslang11TConstUnion10getI8ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1084)
          to label %1087 unwind label %44

1087:                                             ; preds = %1085
  %1088 = sitofp i8 %1086 to double
  invoke void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %1079, double noundef %1088)
          to label %1089 unwind label %44

1089:                                             ; preds = %1087
  br label %1245

1090:                                             ; preds = %1074
  %1091 = load i32, ptr %11, align 4, !tbaa !13
  %1092 = sext i32 %1091 to i64
  %1093 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %1092)
          to label %1094 unwind label %44

1094:                                             ; preds = %1090
  %1095 = load ptr, ptr %8, align 8, !tbaa !5
  %1096 = load i32, ptr %11, align 4, !tbaa !13
  %1097 = sext i32 %1096 to i64
  %1098 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1095, i64 noundef %1097)
          to label %1099 unwind label %44

1099:                                             ; preds = %1094
  %1100 = invoke noundef signext i8 @_ZNK7glslang11TConstUnion10getI8ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1098)
          to label %1101 unwind label %44

1101:                                             ; preds = %1099
  %1102 = sitofp i8 %1100 to double
  invoke void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %1093, double noundef %1102)
          to label %1103 unwind label %44

1103:                                             ; preds = %1101
  br label %1245

1104:                                             ; preds = %1074
  %1105 = load i32, ptr %11, align 4, !tbaa !13
  %1106 = sext i32 %1105 to i64
  %1107 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %1106)
          to label %1108 unwind label %44

1108:                                             ; preds = %1104
  %1109 = load ptr, ptr %8, align 8, !tbaa !5
  %1110 = load i32, ptr %11, align 4, !tbaa !13
  %1111 = sext i32 %1110 to i64
  %1112 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1109, i64 noundef %1111)
          to label %1113 unwind label %44

1113:                                             ; preds = %1108
  %1114 = invoke noundef signext i8 @_ZNK7glslang11TConstUnion10getI8ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1112)
          to label %1115 unwind label %44

1115:                                             ; preds = %1113
  %1116 = sitofp i8 %1114 to double
  invoke void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %1107, double noundef %1116)
          to label %1117 unwind label %44

1117:                                             ; preds = %1115
  br label %1245

1118:                                             ; preds = %1074
  %1119 = load i32, ptr %11, align 4, !tbaa !13
  %1120 = sext i32 %1119 to i64
  %1121 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %1120)
          to label %1122 unwind label %44

1122:                                             ; preds = %1118
  %1123 = load ptr, ptr %8, align 8, !tbaa !5
  %1124 = load i32, ptr %11, align 4, !tbaa !13
  %1125 = sext i32 %1124 to i64
  %1126 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1123, i64 noundef %1125)
          to label %1127 unwind label %44

1127:                                             ; preds = %1122
  %1128 = invoke noundef signext i8 @_ZNK7glslang11TConstUnion10getI8ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1126)
          to label %1129 unwind label %44

1129:                                             ; preds = %1127
  invoke void @_ZN7glslang11TConstUnion10setI8ConstEa(ptr noundef nonnull align 8 dereferenceable(12) %1121, i8 noundef signext %1128)
          to label %1130 unwind label %44

1130:                                             ; preds = %1129
  br label %1245

1131:                                             ; preds = %1074
  %1132 = load i32, ptr %11, align 4, !tbaa !13
  %1133 = sext i32 %1132 to i64
  %1134 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %1133)
          to label %1135 unwind label %44

1135:                                             ; preds = %1131
  %1136 = load ptr, ptr %8, align 8, !tbaa !5
  %1137 = load i32, ptr %11, align 4, !tbaa !13
  %1138 = sext i32 %1137 to i64
  %1139 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1136, i64 noundef %1138)
          to label %1140 unwind label %44

1140:                                             ; preds = %1135
  %1141 = invoke noundef signext i8 @_ZNK7glslang11TConstUnion10getI8ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1139)
          to label %1142 unwind label %44

1142:                                             ; preds = %1140
  %1143 = sext i8 %1141 to i16
  invoke void @_ZN7glslang11TConstUnion11setI16ConstEs(ptr noundef nonnull align 8 dereferenceable(12) %1134, i16 noundef signext %1143)
          to label %1144 unwind label %44

1144:                                             ; preds = %1142
  br label %1245

1145:                                             ; preds = %1074
  %1146 = load i32, ptr %11, align 4, !tbaa !13
  %1147 = sext i32 %1146 to i64
  %1148 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %1147)
          to label %1149 unwind label %44

1149:                                             ; preds = %1145
  %1150 = load ptr, ptr %8, align 8, !tbaa !5
  %1151 = load i32, ptr %11, align 4, !tbaa !13
  %1152 = sext i32 %1151 to i64
  %1153 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1150, i64 noundef %1152)
          to label %1154 unwind label %44

1154:                                             ; preds = %1149
  %1155 = invoke noundef signext i8 @_ZNK7glslang11TConstUnion10getI8ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1153)
          to label %1156 unwind label %44

1156:                                             ; preds = %1154
  %1157 = sext i8 %1155 to i32
  invoke void @_ZN7glslang11TConstUnion9setIConstEi(ptr noundef nonnull align 8 dereferenceable(12) %1148, i32 noundef %1157)
          to label %1158 unwind label %44

1158:                                             ; preds = %1156
  br label %1245

1159:                                             ; preds = %1074
  %1160 = load i32, ptr %11, align 4, !tbaa !13
  %1161 = sext i32 %1160 to i64
  %1162 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %1161)
          to label %1163 unwind label %44

1163:                                             ; preds = %1159
  %1164 = load ptr, ptr %8, align 8, !tbaa !5
  %1165 = load i32, ptr %11, align 4, !tbaa !13
  %1166 = sext i32 %1165 to i64
  %1167 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1164, i64 noundef %1166)
          to label %1168 unwind label %44

1168:                                             ; preds = %1163
  %1169 = invoke noundef signext i8 @_ZNK7glslang11TConstUnion10getI8ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1167)
          to label %1170 unwind label %44

1170:                                             ; preds = %1168
  %1171 = sext i8 %1169 to i64
  invoke void @_ZN7glslang11TConstUnion11setI64ConstEx(ptr noundef nonnull align 8 dereferenceable(12) %1162, i64 noundef %1171)
          to label %1172 unwind label %44

1172:                                             ; preds = %1170
  br label %1245

1173:                                             ; preds = %1074
  %1174 = load i32, ptr %11, align 4, !tbaa !13
  %1175 = sext i32 %1174 to i64
  %1176 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %1175)
          to label %1177 unwind label %44

1177:                                             ; preds = %1173
  %1178 = load ptr, ptr %8, align 8, !tbaa !5
  %1179 = load i32, ptr %11, align 4, !tbaa !13
  %1180 = sext i32 %1179 to i64
  %1181 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1178, i64 noundef %1180)
          to label %1182 unwind label %44

1182:                                             ; preds = %1177
  %1183 = invoke noundef signext i8 @_ZNK7glslang11TConstUnion10getI8ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1181)
          to label %1184 unwind label %44

1184:                                             ; preds = %1182
  invoke void @_ZN7glslang11TConstUnion10setU8ConstEh(ptr noundef nonnull align 8 dereferenceable(12) %1176, i8 noundef zeroext %1183)
          to label %1185 unwind label %44

1185:                                             ; preds = %1184
  br label %1245

1186:                                             ; preds = %1074
  %1187 = load i32, ptr %11, align 4, !tbaa !13
  %1188 = sext i32 %1187 to i64
  %1189 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %1188)
          to label %1190 unwind label %44

1190:                                             ; preds = %1186
  %1191 = load ptr, ptr %8, align 8, !tbaa !5
  %1192 = load i32, ptr %11, align 4, !tbaa !13
  %1193 = sext i32 %1192 to i64
  %1194 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1191, i64 noundef %1193)
          to label %1195 unwind label %44

1195:                                             ; preds = %1190
  %1196 = invoke noundef signext i8 @_ZNK7glslang11TConstUnion10getI8ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1194)
          to label %1197 unwind label %44

1197:                                             ; preds = %1195
  %1198 = sext i8 %1196 to i16
  invoke void @_ZN7glslang11TConstUnion11setU16ConstEt(ptr noundef nonnull align 8 dereferenceable(12) %1189, i16 noundef zeroext %1198)
          to label %1199 unwind label %44

1199:                                             ; preds = %1197
  br label %1245

1200:                                             ; preds = %1074
  %1201 = load i32, ptr %11, align 4, !tbaa !13
  %1202 = sext i32 %1201 to i64
  %1203 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %1202)
          to label %1204 unwind label %44

1204:                                             ; preds = %1200
  %1205 = load ptr, ptr %8, align 8, !tbaa !5
  %1206 = load i32, ptr %11, align 4, !tbaa !13
  %1207 = sext i32 %1206 to i64
  %1208 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1205, i64 noundef %1207)
          to label %1209 unwind label %44

1209:                                             ; preds = %1204
  %1210 = invoke noundef signext i8 @_ZNK7glslang11TConstUnion10getI8ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1208)
          to label %1211 unwind label %44

1211:                                             ; preds = %1209
  %1212 = sext i8 %1210 to i32
  invoke void @_ZN7glslang11TConstUnion9setUConstEj(ptr noundef nonnull align 8 dereferenceable(12) %1203, i32 noundef %1212)
          to label %1213 unwind label %44

1213:                                             ; preds = %1211
  br label %1245

1214:                                             ; preds = %1074
  %1215 = load i32, ptr %11, align 4, !tbaa !13
  %1216 = sext i32 %1215 to i64
  %1217 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %1216)
          to label %1218 unwind label %44

1218:                                             ; preds = %1214
  %1219 = load ptr, ptr %8, align 8, !tbaa !5
  %1220 = load i32, ptr %11, align 4, !tbaa !13
  %1221 = sext i32 %1220 to i64
  %1222 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1219, i64 noundef %1221)
          to label %1223 unwind label %44

1223:                                             ; preds = %1218
  %1224 = invoke noundef signext i8 @_ZNK7glslang11TConstUnion10getI8ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1222)
          to label %1225 unwind label %44

1225:                                             ; preds = %1223
  %1226 = sext i8 %1224 to i64
  invoke void @_ZN7glslang11TConstUnion11setU64ConstEy(ptr noundef nonnull align 8 dereferenceable(12) %1217, i64 noundef %1226)
          to label %1227 unwind label %44

1227:                                             ; preds = %1225
  br label %1245

1228:                                             ; preds = %1074
  %1229 = load i32, ptr %11, align 4, !tbaa !13
  %1230 = sext i32 %1229 to i64
  %1231 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %1230)
          to label %1232 unwind label %44

1232:                                             ; preds = %1228
  %1233 = load ptr, ptr %8, align 8, !tbaa !5
  %1234 = load i32, ptr %11, align 4, !tbaa !13
  %1235 = sext i32 %1234 to i64
  %1236 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1233, i64 noundef %1235)
          to label %1237 unwind label %44

1237:                                             ; preds = %1232
  %1238 = invoke noundef signext i8 @_ZNK7glslang11TConstUnion10getI8ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1236)
          to label %1239 unwind label %44

1239:                                             ; preds = %1237
  %1240 = sext i8 %1238 to i32
  %1241 = icmp ne i32 %1240, 0
  invoke void @_ZN7glslang11TConstUnion9setBConstEb(ptr noundef nonnull align 8 dereferenceable(12) %1231, i1 noundef zeroext %1241)
          to label %1242 unwind label %44

1242:                                             ; preds = %1239
  br label %1245

1243:                                             ; preds = %1074
  %1244 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %1244, ptr %4, align 8
  store i32 1, ptr %12, align 4
  br label %2110

1245:                                             ; preds = %1242, %1227, %1213, %1199, %1185, %1172, %1158, %1144, %1130, %1117, %1103, %1089
  br label %2106

1246:                                             ; preds = %43
  %1247 = load i32, ptr %6, align 4, !tbaa !9
  switch i32 %1247, label %1415 [
    i32 3, label %1248
    i32 1, label %1262
    i32 2, label %1276
    i32 4, label %1290
    i32 6, label %1304
    i32 8, label %1317
    i32 10, label %1331
    i32 5, label %1345
    i32 7, label %1359
    i32 9, label %1372
    i32 11, label %1386
    i32 12, label %1400
  ]

1248:                                             ; preds = %1246
  %1249 = load i32, ptr %11, align 4, !tbaa !13
  %1250 = sext i32 %1249 to i64
  %1251 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %1250)
          to label %1252 unwind label %44

1252:                                             ; preds = %1248
  %1253 = load ptr, ptr %8, align 8, !tbaa !5
  %1254 = load i32, ptr %11, align 4, !tbaa !13
  %1255 = sext i32 %1254 to i64
  %1256 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1253, i64 noundef %1255)
          to label %1257 unwind label %44

1257:                                             ; preds = %1252
  %1258 = invoke noundef signext i16 @_ZNK7glslang11TConstUnion11getI16ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1256)
          to label %1259 unwind label %44

1259:                                             ; preds = %1257
  %1260 = sitofp i16 %1258 to double
  invoke void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %1251, double noundef %1260)
          to label %1261 unwind label %44

1261:                                             ; preds = %1259
  br label %1417

1262:                                             ; preds = %1246
  %1263 = load i32, ptr %11, align 4, !tbaa !13
  %1264 = sext i32 %1263 to i64
  %1265 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %1264)
          to label %1266 unwind label %44

1266:                                             ; preds = %1262
  %1267 = load ptr, ptr %8, align 8, !tbaa !5
  %1268 = load i32, ptr %11, align 4, !tbaa !13
  %1269 = sext i32 %1268 to i64
  %1270 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1267, i64 noundef %1269)
          to label %1271 unwind label %44

1271:                                             ; preds = %1266
  %1272 = invoke noundef signext i16 @_ZNK7glslang11TConstUnion11getI16ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1270)
          to label %1273 unwind label %44

1273:                                             ; preds = %1271
  %1274 = sitofp i16 %1272 to double
  invoke void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %1265, double noundef %1274)
          to label %1275 unwind label %44

1275:                                             ; preds = %1273
  br label %1417

1276:                                             ; preds = %1246
  %1277 = load i32, ptr %11, align 4, !tbaa !13
  %1278 = sext i32 %1277 to i64
  %1279 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %1278)
          to label %1280 unwind label %44

1280:                                             ; preds = %1276
  %1281 = load ptr, ptr %8, align 8, !tbaa !5
  %1282 = load i32, ptr %11, align 4, !tbaa !13
  %1283 = sext i32 %1282 to i64
  %1284 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1281, i64 noundef %1283)
          to label %1285 unwind label %44

1285:                                             ; preds = %1280
  %1286 = invoke noundef signext i16 @_ZNK7glslang11TConstUnion11getI16ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1284)
          to label %1287 unwind label %44

1287:                                             ; preds = %1285
  %1288 = sitofp i16 %1286 to double
  invoke void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %1279, double noundef %1288)
          to label %1289 unwind label %44

1289:                                             ; preds = %1287
  br label %1417

1290:                                             ; preds = %1246
  %1291 = load i32, ptr %11, align 4, !tbaa !13
  %1292 = sext i32 %1291 to i64
  %1293 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %1292)
          to label %1294 unwind label %44

1294:                                             ; preds = %1290
  %1295 = load ptr, ptr %8, align 8, !tbaa !5
  %1296 = load i32, ptr %11, align 4, !tbaa !13
  %1297 = sext i32 %1296 to i64
  %1298 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1295, i64 noundef %1297)
          to label %1299 unwind label %44

1299:                                             ; preds = %1294
  %1300 = invoke noundef signext i16 @_ZNK7glslang11TConstUnion11getI16ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1298)
          to label %1301 unwind label %44

1301:                                             ; preds = %1299
  %1302 = trunc i16 %1300 to i8
  invoke void @_ZN7glslang11TConstUnion10setI8ConstEa(ptr noundef nonnull align 8 dereferenceable(12) %1293, i8 noundef signext %1302)
          to label %1303 unwind label %44

1303:                                             ; preds = %1301
  br label %1417

1304:                                             ; preds = %1246
  %1305 = load i32, ptr %11, align 4, !tbaa !13
  %1306 = sext i32 %1305 to i64
  %1307 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %1306)
          to label %1308 unwind label %44

1308:                                             ; preds = %1304
  %1309 = load ptr, ptr %8, align 8, !tbaa !5
  %1310 = load i32, ptr %11, align 4, !tbaa !13
  %1311 = sext i32 %1310 to i64
  %1312 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1309, i64 noundef %1311)
          to label %1313 unwind label %44

1313:                                             ; preds = %1308
  %1314 = invoke noundef signext i16 @_ZNK7glslang11TConstUnion11getI16ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1312)
          to label %1315 unwind label %44

1315:                                             ; preds = %1313
  invoke void @_ZN7glslang11TConstUnion11setI16ConstEs(ptr noundef nonnull align 8 dereferenceable(12) %1307, i16 noundef signext %1314)
          to label %1316 unwind label %44

1316:                                             ; preds = %1315
  br label %1417

1317:                                             ; preds = %1246
  %1318 = load i32, ptr %11, align 4, !tbaa !13
  %1319 = sext i32 %1318 to i64
  %1320 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %1319)
          to label %1321 unwind label %44

1321:                                             ; preds = %1317
  %1322 = load ptr, ptr %8, align 8, !tbaa !5
  %1323 = load i32, ptr %11, align 4, !tbaa !13
  %1324 = sext i32 %1323 to i64
  %1325 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1322, i64 noundef %1324)
          to label %1326 unwind label %44

1326:                                             ; preds = %1321
  %1327 = invoke noundef signext i16 @_ZNK7glslang11TConstUnion11getI16ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1325)
          to label %1328 unwind label %44

1328:                                             ; preds = %1326
  %1329 = sext i16 %1327 to i32
  invoke void @_ZN7glslang11TConstUnion9setIConstEi(ptr noundef nonnull align 8 dereferenceable(12) %1320, i32 noundef %1329)
          to label %1330 unwind label %44

1330:                                             ; preds = %1328
  br label %1417

1331:                                             ; preds = %1246
  %1332 = load i32, ptr %11, align 4, !tbaa !13
  %1333 = sext i32 %1332 to i64
  %1334 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %1333)
          to label %1335 unwind label %44

1335:                                             ; preds = %1331
  %1336 = load ptr, ptr %8, align 8, !tbaa !5
  %1337 = load i32, ptr %11, align 4, !tbaa !13
  %1338 = sext i32 %1337 to i64
  %1339 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1336, i64 noundef %1338)
          to label %1340 unwind label %44

1340:                                             ; preds = %1335
  %1341 = invoke noundef signext i16 @_ZNK7glslang11TConstUnion11getI16ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1339)
          to label %1342 unwind label %44

1342:                                             ; preds = %1340
  %1343 = sext i16 %1341 to i64
  invoke void @_ZN7glslang11TConstUnion11setI64ConstEx(ptr noundef nonnull align 8 dereferenceable(12) %1334, i64 noundef %1343)
          to label %1344 unwind label %44

1344:                                             ; preds = %1342
  br label %1417

1345:                                             ; preds = %1246
  %1346 = load i32, ptr %11, align 4, !tbaa !13
  %1347 = sext i32 %1346 to i64
  %1348 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %1347)
          to label %1349 unwind label %44

1349:                                             ; preds = %1345
  %1350 = load ptr, ptr %8, align 8, !tbaa !5
  %1351 = load i32, ptr %11, align 4, !tbaa !13
  %1352 = sext i32 %1351 to i64
  %1353 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1350, i64 noundef %1352)
          to label %1354 unwind label %44

1354:                                             ; preds = %1349
  %1355 = invoke noundef signext i16 @_ZNK7glslang11TConstUnion11getI16ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1353)
          to label %1356 unwind label %44

1356:                                             ; preds = %1354
  %1357 = trunc i16 %1355 to i8
  invoke void @_ZN7glslang11TConstUnion10setU8ConstEh(ptr noundef nonnull align 8 dereferenceable(12) %1348, i8 noundef zeroext %1357)
          to label %1358 unwind label %44

1358:                                             ; preds = %1356
  br label %1417

1359:                                             ; preds = %1246
  %1360 = load i32, ptr %11, align 4, !tbaa !13
  %1361 = sext i32 %1360 to i64
  %1362 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %1361)
          to label %1363 unwind label %44

1363:                                             ; preds = %1359
  %1364 = load ptr, ptr %8, align 8, !tbaa !5
  %1365 = load i32, ptr %11, align 4, !tbaa !13
  %1366 = sext i32 %1365 to i64
  %1367 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1364, i64 noundef %1366)
          to label %1368 unwind label %44

1368:                                             ; preds = %1363
  %1369 = invoke noundef signext i16 @_ZNK7glslang11TConstUnion11getI16ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1367)
          to label %1370 unwind label %44

1370:                                             ; preds = %1368
  invoke void @_ZN7glslang11TConstUnion11setU16ConstEt(ptr noundef nonnull align 8 dereferenceable(12) %1362, i16 noundef zeroext %1369)
          to label %1371 unwind label %44

1371:                                             ; preds = %1370
  br label %1417

1372:                                             ; preds = %1246
  %1373 = load i32, ptr %11, align 4, !tbaa !13
  %1374 = sext i32 %1373 to i64
  %1375 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %1374)
          to label %1376 unwind label %44

1376:                                             ; preds = %1372
  %1377 = load ptr, ptr %8, align 8, !tbaa !5
  %1378 = load i32, ptr %11, align 4, !tbaa !13
  %1379 = sext i32 %1378 to i64
  %1380 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1377, i64 noundef %1379)
          to label %1381 unwind label %44

1381:                                             ; preds = %1376
  %1382 = invoke noundef signext i16 @_ZNK7glslang11TConstUnion11getI16ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1380)
          to label %1383 unwind label %44

1383:                                             ; preds = %1381
  %1384 = sext i16 %1382 to i32
  invoke void @_ZN7glslang11TConstUnion9setUConstEj(ptr noundef nonnull align 8 dereferenceable(12) %1375, i32 noundef %1384)
          to label %1385 unwind label %44

1385:                                             ; preds = %1383
  br label %1417

1386:                                             ; preds = %1246
  %1387 = load i32, ptr %11, align 4, !tbaa !13
  %1388 = sext i32 %1387 to i64
  %1389 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %1388)
          to label %1390 unwind label %44

1390:                                             ; preds = %1386
  %1391 = load ptr, ptr %8, align 8, !tbaa !5
  %1392 = load i32, ptr %11, align 4, !tbaa !13
  %1393 = sext i32 %1392 to i64
  %1394 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1391, i64 noundef %1393)
          to label %1395 unwind label %44

1395:                                             ; preds = %1390
  %1396 = invoke noundef signext i16 @_ZNK7glslang11TConstUnion11getI16ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1394)
          to label %1397 unwind label %44

1397:                                             ; preds = %1395
  %1398 = sext i16 %1396 to i64
  invoke void @_ZN7glslang11TConstUnion11setU64ConstEy(ptr noundef nonnull align 8 dereferenceable(12) %1389, i64 noundef %1398)
          to label %1399 unwind label %44

1399:                                             ; preds = %1397
  br label %1417

1400:                                             ; preds = %1246
  %1401 = load i32, ptr %11, align 4, !tbaa !13
  %1402 = sext i32 %1401 to i64
  %1403 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %1402)
          to label %1404 unwind label %44

1404:                                             ; preds = %1400
  %1405 = load ptr, ptr %8, align 8, !tbaa !5
  %1406 = load i32, ptr %11, align 4, !tbaa !13
  %1407 = sext i32 %1406 to i64
  %1408 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1405, i64 noundef %1407)
          to label %1409 unwind label %44

1409:                                             ; preds = %1404
  %1410 = invoke noundef signext i16 @_ZNK7glslang11TConstUnion11getI16ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1408)
          to label %1411 unwind label %44

1411:                                             ; preds = %1409
  %1412 = sext i16 %1410 to i32
  %1413 = icmp ne i32 %1412, 0
  invoke void @_ZN7glslang11TConstUnion9setBConstEb(ptr noundef nonnull align 8 dereferenceable(12) %1403, i1 noundef zeroext %1413)
          to label %1414 unwind label %44

1414:                                             ; preds = %1411
  br label %1417

1415:                                             ; preds = %1246
  %1416 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %1416, ptr %4, align 8
  store i32 1, ptr %12, align 4
  br label %2110

1417:                                             ; preds = %1414, %1399, %1385, %1371, %1358, %1344, %1330, %1316, %1303, %1289, %1275, %1261
  br label %2106

1418:                                             ; preds = %43
  %1419 = load i32, ptr %6, align 4, !tbaa !9
  switch i32 %1419, label %1586 [
    i32 3, label %1420
    i32 1, label %1434
    i32 2, label %1448
    i32 4, label %1462
    i32 6, label %1476
    i32 8, label %1490
    i32 10, label %1504
    i32 5, label %1517
    i32 7, label %1531
    i32 9, label %1545
    i32 11, label %1559
    i32 12, label %1572
  ]

1420:                                             ; preds = %1418
  %1421 = load i32, ptr %11, align 4, !tbaa !13
  %1422 = sext i32 %1421 to i64
  %1423 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %1422)
          to label %1424 unwind label %44

1424:                                             ; preds = %1420
  %1425 = load ptr, ptr %8, align 8, !tbaa !5
  %1426 = load i32, ptr %11, align 4, !tbaa !13
  %1427 = sext i32 %1426 to i64
  %1428 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1425, i64 noundef %1427)
          to label %1429 unwind label %44

1429:                                             ; preds = %1424
  %1430 = invoke noundef i64 @_ZNK7glslang11TConstUnion11getI64ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1428)
          to label %1431 unwind label %44

1431:                                             ; preds = %1429
  %1432 = sitofp i64 %1430 to double
  invoke void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %1423, double noundef %1432)
          to label %1433 unwind label %44

1433:                                             ; preds = %1431
  br label %1588

1434:                                             ; preds = %1418
  %1435 = load i32, ptr %11, align 4, !tbaa !13
  %1436 = sext i32 %1435 to i64
  %1437 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %1436)
          to label %1438 unwind label %44

1438:                                             ; preds = %1434
  %1439 = load ptr, ptr %8, align 8, !tbaa !5
  %1440 = load i32, ptr %11, align 4, !tbaa !13
  %1441 = sext i32 %1440 to i64
  %1442 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1439, i64 noundef %1441)
          to label %1443 unwind label %44

1443:                                             ; preds = %1438
  %1444 = invoke noundef i64 @_ZNK7glslang11TConstUnion11getI64ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1442)
          to label %1445 unwind label %44

1445:                                             ; preds = %1443
  %1446 = sitofp i64 %1444 to double
  invoke void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %1437, double noundef %1446)
          to label %1447 unwind label %44

1447:                                             ; preds = %1445
  br label %1588

1448:                                             ; preds = %1418
  %1449 = load i32, ptr %11, align 4, !tbaa !13
  %1450 = sext i32 %1449 to i64
  %1451 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %1450)
          to label %1452 unwind label %44

1452:                                             ; preds = %1448
  %1453 = load ptr, ptr %8, align 8, !tbaa !5
  %1454 = load i32, ptr %11, align 4, !tbaa !13
  %1455 = sext i32 %1454 to i64
  %1456 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1453, i64 noundef %1455)
          to label %1457 unwind label %44

1457:                                             ; preds = %1452
  %1458 = invoke noundef i64 @_ZNK7glslang11TConstUnion11getI64ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1456)
          to label %1459 unwind label %44

1459:                                             ; preds = %1457
  %1460 = sitofp i64 %1458 to double
  invoke void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %1451, double noundef %1460)
          to label %1461 unwind label %44

1461:                                             ; preds = %1459
  br label %1588

1462:                                             ; preds = %1418
  %1463 = load i32, ptr %11, align 4, !tbaa !13
  %1464 = sext i32 %1463 to i64
  %1465 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %1464)
          to label %1466 unwind label %44

1466:                                             ; preds = %1462
  %1467 = load ptr, ptr %8, align 8, !tbaa !5
  %1468 = load i32, ptr %11, align 4, !tbaa !13
  %1469 = sext i32 %1468 to i64
  %1470 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1467, i64 noundef %1469)
          to label %1471 unwind label %44

1471:                                             ; preds = %1466
  %1472 = invoke noundef i64 @_ZNK7glslang11TConstUnion11getI64ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1470)
          to label %1473 unwind label %44

1473:                                             ; preds = %1471
  %1474 = trunc i64 %1472 to i8
  invoke void @_ZN7glslang11TConstUnion10setI8ConstEa(ptr noundef nonnull align 8 dereferenceable(12) %1465, i8 noundef signext %1474)
          to label %1475 unwind label %44

1475:                                             ; preds = %1473
  br label %1588

1476:                                             ; preds = %1418
  %1477 = load i32, ptr %11, align 4, !tbaa !13
  %1478 = sext i32 %1477 to i64
  %1479 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %1478)
          to label %1480 unwind label %44

1480:                                             ; preds = %1476
  %1481 = load ptr, ptr %8, align 8, !tbaa !5
  %1482 = load i32, ptr %11, align 4, !tbaa !13
  %1483 = sext i32 %1482 to i64
  %1484 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1481, i64 noundef %1483)
          to label %1485 unwind label %44

1485:                                             ; preds = %1480
  %1486 = invoke noundef i64 @_ZNK7glslang11TConstUnion11getI64ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1484)
          to label %1487 unwind label %44

1487:                                             ; preds = %1485
  %1488 = trunc i64 %1486 to i16
  invoke void @_ZN7glslang11TConstUnion11setI16ConstEs(ptr noundef nonnull align 8 dereferenceable(12) %1479, i16 noundef signext %1488)
          to label %1489 unwind label %44

1489:                                             ; preds = %1487
  br label %1588

1490:                                             ; preds = %1418
  %1491 = load i32, ptr %11, align 4, !tbaa !13
  %1492 = sext i32 %1491 to i64
  %1493 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %1492)
          to label %1494 unwind label %44

1494:                                             ; preds = %1490
  %1495 = load ptr, ptr %8, align 8, !tbaa !5
  %1496 = load i32, ptr %11, align 4, !tbaa !13
  %1497 = sext i32 %1496 to i64
  %1498 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1495, i64 noundef %1497)
          to label %1499 unwind label %44

1499:                                             ; preds = %1494
  %1500 = invoke noundef i64 @_ZNK7glslang11TConstUnion11getI64ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1498)
          to label %1501 unwind label %44

1501:                                             ; preds = %1499
  %1502 = trunc i64 %1500 to i32
  invoke void @_ZN7glslang11TConstUnion9setIConstEi(ptr noundef nonnull align 8 dereferenceable(12) %1493, i32 noundef %1502)
          to label %1503 unwind label %44

1503:                                             ; preds = %1501
  br label %1588

1504:                                             ; preds = %1418
  %1505 = load i32, ptr %11, align 4, !tbaa !13
  %1506 = sext i32 %1505 to i64
  %1507 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %1506)
          to label %1508 unwind label %44

1508:                                             ; preds = %1504
  %1509 = load ptr, ptr %8, align 8, !tbaa !5
  %1510 = load i32, ptr %11, align 4, !tbaa !13
  %1511 = sext i32 %1510 to i64
  %1512 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1509, i64 noundef %1511)
          to label %1513 unwind label %44

1513:                                             ; preds = %1508
  %1514 = invoke noundef i64 @_ZNK7glslang11TConstUnion11getI64ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1512)
          to label %1515 unwind label %44

1515:                                             ; preds = %1513
  invoke void @_ZN7glslang11TConstUnion11setI64ConstEx(ptr noundef nonnull align 8 dereferenceable(12) %1507, i64 noundef %1514)
          to label %1516 unwind label %44

1516:                                             ; preds = %1515
  br label %1588

1517:                                             ; preds = %1418
  %1518 = load i32, ptr %11, align 4, !tbaa !13
  %1519 = sext i32 %1518 to i64
  %1520 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %1519)
          to label %1521 unwind label %44

1521:                                             ; preds = %1517
  %1522 = load ptr, ptr %8, align 8, !tbaa !5
  %1523 = load i32, ptr %11, align 4, !tbaa !13
  %1524 = sext i32 %1523 to i64
  %1525 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1522, i64 noundef %1524)
          to label %1526 unwind label %44

1526:                                             ; preds = %1521
  %1527 = invoke noundef i64 @_ZNK7glslang11TConstUnion11getI64ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1525)
          to label %1528 unwind label %44

1528:                                             ; preds = %1526
  %1529 = trunc i64 %1527 to i8
  invoke void @_ZN7glslang11TConstUnion10setU8ConstEh(ptr noundef nonnull align 8 dereferenceable(12) %1520, i8 noundef zeroext %1529)
          to label %1530 unwind label %44

1530:                                             ; preds = %1528
  br label %1588

1531:                                             ; preds = %1418
  %1532 = load i32, ptr %11, align 4, !tbaa !13
  %1533 = sext i32 %1532 to i64
  %1534 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %1533)
          to label %1535 unwind label %44

1535:                                             ; preds = %1531
  %1536 = load ptr, ptr %8, align 8, !tbaa !5
  %1537 = load i32, ptr %11, align 4, !tbaa !13
  %1538 = sext i32 %1537 to i64
  %1539 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1536, i64 noundef %1538)
          to label %1540 unwind label %44

1540:                                             ; preds = %1535
  %1541 = invoke noundef i64 @_ZNK7glslang11TConstUnion11getI64ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1539)
          to label %1542 unwind label %44

1542:                                             ; preds = %1540
  %1543 = trunc i64 %1541 to i16
  invoke void @_ZN7glslang11TConstUnion11setU16ConstEt(ptr noundef nonnull align 8 dereferenceable(12) %1534, i16 noundef zeroext %1543)
          to label %1544 unwind label %44

1544:                                             ; preds = %1542
  br label %1588

1545:                                             ; preds = %1418
  %1546 = load i32, ptr %11, align 4, !tbaa !13
  %1547 = sext i32 %1546 to i64
  %1548 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %1547)
          to label %1549 unwind label %44

1549:                                             ; preds = %1545
  %1550 = load ptr, ptr %8, align 8, !tbaa !5
  %1551 = load i32, ptr %11, align 4, !tbaa !13
  %1552 = sext i32 %1551 to i64
  %1553 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1550, i64 noundef %1552)
          to label %1554 unwind label %44

1554:                                             ; preds = %1549
  %1555 = invoke noundef i64 @_ZNK7glslang11TConstUnion11getI64ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1553)
          to label %1556 unwind label %44

1556:                                             ; preds = %1554
  %1557 = trunc i64 %1555 to i32
  invoke void @_ZN7glslang11TConstUnion9setUConstEj(ptr noundef nonnull align 8 dereferenceable(12) %1548, i32 noundef %1557)
          to label %1558 unwind label %44

1558:                                             ; preds = %1556
  br label %1588

1559:                                             ; preds = %1418
  %1560 = load i32, ptr %11, align 4, !tbaa !13
  %1561 = sext i32 %1560 to i64
  %1562 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %1561)
          to label %1563 unwind label %44

1563:                                             ; preds = %1559
  %1564 = load ptr, ptr %8, align 8, !tbaa !5
  %1565 = load i32, ptr %11, align 4, !tbaa !13
  %1566 = sext i32 %1565 to i64
  %1567 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1564, i64 noundef %1566)
          to label %1568 unwind label %44

1568:                                             ; preds = %1563
  %1569 = invoke noundef i64 @_ZNK7glslang11TConstUnion11getI64ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1567)
          to label %1570 unwind label %44

1570:                                             ; preds = %1568
  invoke void @_ZN7glslang11TConstUnion11setU64ConstEy(ptr noundef nonnull align 8 dereferenceable(12) %1562, i64 noundef %1569)
          to label %1571 unwind label %44

1571:                                             ; preds = %1570
  br label %1588

1572:                                             ; preds = %1418
  %1573 = load i32, ptr %11, align 4, !tbaa !13
  %1574 = sext i32 %1573 to i64
  %1575 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %1574)
          to label %1576 unwind label %44

1576:                                             ; preds = %1572
  %1577 = load ptr, ptr %8, align 8, !tbaa !5
  %1578 = load i32, ptr %11, align 4, !tbaa !13
  %1579 = sext i32 %1578 to i64
  %1580 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1577, i64 noundef %1579)
          to label %1581 unwind label %44

1581:                                             ; preds = %1576
  %1582 = invoke noundef i64 @_ZNK7glslang11TConstUnion11getI64ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1580)
          to label %1583 unwind label %44

1583:                                             ; preds = %1581
  %1584 = icmp ne i64 %1582, 0
  invoke void @_ZN7glslang11TConstUnion9setBConstEb(ptr noundef nonnull align 8 dereferenceable(12) %1575, i1 noundef zeroext %1584)
          to label %1585 unwind label %44

1585:                                             ; preds = %1583
  br label %1588

1586:                                             ; preds = %1418
  %1587 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %1587, ptr %4, align 8
  store i32 1, ptr %12, align 4
  br label %2110

1588:                                             ; preds = %1585, %1571, %1558, %1544, %1530, %1516, %1503, %1489, %1475, %1461, %1447, %1433
  br label %2106

1589:                                             ; preds = %43
  %1590 = load i32, ptr %6, align 4, !tbaa !9
  switch i32 %1590, label %1758 [
    i32 3, label %1591
    i32 1, label %1605
    i32 2, label %1619
    i32 4, label %1633
    i32 6, label %1646
    i32 8, label %1660
    i32 10, label %1674
    i32 5, label %1688
    i32 7, label %1701
    i32 9, label %1715
    i32 11, label %1729
    i32 12, label %1743
  ]

1591:                                             ; preds = %1589
  %1592 = load i32, ptr %11, align 4, !tbaa !13
  %1593 = sext i32 %1592 to i64
  %1594 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %1593)
          to label %1595 unwind label %44

1595:                                             ; preds = %1591
  %1596 = load ptr, ptr %8, align 8, !tbaa !5
  %1597 = load i32, ptr %11, align 4, !tbaa !13
  %1598 = sext i32 %1597 to i64
  %1599 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1596, i64 noundef %1598)
          to label %1600 unwind label %44

1600:                                             ; preds = %1595
  %1601 = invoke noundef zeroext i8 @_ZNK7glslang11TConstUnion10getU8ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1599)
          to label %1602 unwind label %44

1602:                                             ; preds = %1600
  %1603 = uitofp i8 %1601 to double
  invoke void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %1594, double noundef %1603)
          to label %1604 unwind label %44

1604:                                             ; preds = %1602
  br label %1760

1605:                                             ; preds = %1589
  %1606 = load i32, ptr %11, align 4, !tbaa !13
  %1607 = sext i32 %1606 to i64
  %1608 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %1607)
          to label %1609 unwind label %44

1609:                                             ; preds = %1605
  %1610 = load ptr, ptr %8, align 8, !tbaa !5
  %1611 = load i32, ptr %11, align 4, !tbaa !13
  %1612 = sext i32 %1611 to i64
  %1613 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1610, i64 noundef %1612)
          to label %1614 unwind label %44

1614:                                             ; preds = %1609
  %1615 = invoke noundef zeroext i8 @_ZNK7glslang11TConstUnion10getU8ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1613)
          to label %1616 unwind label %44

1616:                                             ; preds = %1614
  %1617 = uitofp i8 %1615 to double
  invoke void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %1608, double noundef %1617)
          to label %1618 unwind label %44

1618:                                             ; preds = %1616
  br label %1760

1619:                                             ; preds = %1589
  %1620 = load i32, ptr %11, align 4, !tbaa !13
  %1621 = sext i32 %1620 to i64
  %1622 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %1621)
          to label %1623 unwind label %44

1623:                                             ; preds = %1619
  %1624 = load ptr, ptr %8, align 8, !tbaa !5
  %1625 = load i32, ptr %11, align 4, !tbaa !13
  %1626 = sext i32 %1625 to i64
  %1627 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1624, i64 noundef %1626)
          to label %1628 unwind label %44

1628:                                             ; preds = %1623
  %1629 = invoke noundef zeroext i8 @_ZNK7glslang11TConstUnion10getU8ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1627)
          to label %1630 unwind label %44

1630:                                             ; preds = %1628
  %1631 = uitofp i8 %1629 to double
  invoke void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %1622, double noundef %1631)
          to label %1632 unwind label %44

1632:                                             ; preds = %1630
  br label %1760

1633:                                             ; preds = %1589
  %1634 = load i32, ptr %11, align 4, !tbaa !13
  %1635 = sext i32 %1634 to i64
  %1636 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %1635)
          to label %1637 unwind label %44

1637:                                             ; preds = %1633
  %1638 = load ptr, ptr %8, align 8, !tbaa !5
  %1639 = load i32, ptr %11, align 4, !tbaa !13
  %1640 = sext i32 %1639 to i64
  %1641 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1638, i64 noundef %1640)
          to label %1642 unwind label %44

1642:                                             ; preds = %1637
  %1643 = invoke noundef zeroext i8 @_ZNK7glslang11TConstUnion10getU8ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1641)
          to label %1644 unwind label %44

1644:                                             ; preds = %1642
  invoke void @_ZN7glslang11TConstUnion10setI8ConstEa(ptr noundef nonnull align 8 dereferenceable(12) %1636, i8 noundef signext %1643)
          to label %1645 unwind label %44

1645:                                             ; preds = %1644
  br label %1760

1646:                                             ; preds = %1589
  %1647 = load i32, ptr %11, align 4, !tbaa !13
  %1648 = sext i32 %1647 to i64
  %1649 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %1648)
          to label %1650 unwind label %44

1650:                                             ; preds = %1646
  %1651 = load ptr, ptr %8, align 8, !tbaa !5
  %1652 = load i32, ptr %11, align 4, !tbaa !13
  %1653 = sext i32 %1652 to i64
  %1654 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1651, i64 noundef %1653)
          to label %1655 unwind label %44

1655:                                             ; preds = %1650
  %1656 = invoke noundef zeroext i8 @_ZNK7glslang11TConstUnion10getU8ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1654)
          to label %1657 unwind label %44

1657:                                             ; preds = %1655
  %1658 = zext i8 %1656 to i16
  invoke void @_ZN7glslang11TConstUnion11setI16ConstEs(ptr noundef nonnull align 8 dereferenceable(12) %1649, i16 noundef signext %1658)
          to label %1659 unwind label %44

1659:                                             ; preds = %1657
  br label %1760

1660:                                             ; preds = %1589
  %1661 = load i32, ptr %11, align 4, !tbaa !13
  %1662 = sext i32 %1661 to i64
  %1663 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %1662)
          to label %1664 unwind label %44

1664:                                             ; preds = %1660
  %1665 = load ptr, ptr %8, align 8, !tbaa !5
  %1666 = load i32, ptr %11, align 4, !tbaa !13
  %1667 = sext i32 %1666 to i64
  %1668 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1665, i64 noundef %1667)
          to label %1669 unwind label %44

1669:                                             ; preds = %1664
  %1670 = invoke noundef zeroext i8 @_ZNK7glslang11TConstUnion10getU8ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1668)
          to label %1671 unwind label %44

1671:                                             ; preds = %1669
  %1672 = zext i8 %1670 to i32
  invoke void @_ZN7glslang11TConstUnion9setIConstEi(ptr noundef nonnull align 8 dereferenceable(12) %1663, i32 noundef %1672)
          to label %1673 unwind label %44

1673:                                             ; preds = %1671
  br label %1760

1674:                                             ; preds = %1589
  %1675 = load i32, ptr %11, align 4, !tbaa !13
  %1676 = sext i32 %1675 to i64
  %1677 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %1676)
          to label %1678 unwind label %44

1678:                                             ; preds = %1674
  %1679 = load ptr, ptr %8, align 8, !tbaa !5
  %1680 = load i32, ptr %11, align 4, !tbaa !13
  %1681 = sext i32 %1680 to i64
  %1682 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1679, i64 noundef %1681)
          to label %1683 unwind label %44

1683:                                             ; preds = %1678
  %1684 = invoke noundef zeroext i8 @_ZNK7glslang11TConstUnion10getU8ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1682)
          to label %1685 unwind label %44

1685:                                             ; preds = %1683
  %1686 = zext i8 %1684 to i64
  invoke void @_ZN7glslang11TConstUnion11setI64ConstEx(ptr noundef nonnull align 8 dereferenceable(12) %1677, i64 noundef %1686)
          to label %1687 unwind label %44

1687:                                             ; preds = %1685
  br label %1760

1688:                                             ; preds = %1589
  %1689 = load i32, ptr %11, align 4, !tbaa !13
  %1690 = sext i32 %1689 to i64
  %1691 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %1690)
          to label %1692 unwind label %44

1692:                                             ; preds = %1688
  %1693 = load ptr, ptr %8, align 8, !tbaa !5
  %1694 = load i32, ptr %11, align 4, !tbaa !13
  %1695 = sext i32 %1694 to i64
  %1696 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1693, i64 noundef %1695)
          to label %1697 unwind label %44

1697:                                             ; preds = %1692
  %1698 = invoke noundef zeroext i8 @_ZNK7glslang11TConstUnion10getU8ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1696)
          to label %1699 unwind label %44

1699:                                             ; preds = %1697
  invoke void @_ZN7glslang11TConstUnion10setU8ConstEh(ptr noundef nonnull align 8 dereferenceable(12) %1691, i8 noundef zeroext %1698)
          to label %1700 unwind label %44

1700:                                             ; preds = %1699
  br label %1760

1701:                                             ; preds = %1589
  %1702 = load i32, ptr %11, align 4, !tbaa !13
  %1703 = sext i32 %1702 to i64
  %1704 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %1703)
          to label %1705 unwind label %44

1705:                                             ; preds = %1701
  %1706 = load ptr, ptr %8, align 8, !tbaa !5
  %1707 = load i32, ptr %11, align 4, !tbaa !13
  %1708 = sext i32 %1707 to i64
  %1709 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1706, i64 noundef %1708)
          to label %1710 unwind label %44

1710:                                             ; preds = %1705
  %1711 = invoke noundef zeroext i8 @_ZNK7glslang11TConstUnion10getU8ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1709)
          to label %1712 unwind label %44

1712:                                             ; preds = %1710
  %1713 = zext i8 %1711 to i16
  invoke void @_ZN7glslang11TConstUnion11setU16ConstEt(ptr noundef nonnull align 8 dereferenceable(12) %1704, i16 noundef zeroext %1713)
          to label %1714 unwind label %44

1714:                                             ; preds = %1712
  br label %1760

1715:                                             ; preds = %1589
  %1716 = load i32, ptr %11, align 4, !tbaa !13
  %1717 = sext i32 %1716 to i64
  %1718 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %1717)
          to label %1719 unwind label %44

1719:                                             ; preds = %1715
  %1720 = load ptr, ptr %8, align 8, !tbaa !5
  %1721 = load i32, ptr %11, align 4, !tbaa !13
  %1722 = sext i32 %1721 to i64
  %1723 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1720, i64 noundef %1722)
          to label %1724 unwind label %44

1724:                                             ; preds = %1719
  %1725 = invoke noundef zeroext i8 @_ZNK7glslang11TConstUnion10getU8ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1723)
          to label %1726 unwind label %44

1726:                                             ; preds = %1724
  %1727 = zext i8 %1725 to i32
  invoke void @_ZN7glslang11TConstUnion9setUConstEj(ptr noundef nonnull align 8 dereferenceable(12) %1718, i32 noundef %1727)
          to label %1728 unwind label %44

1728:                                             ; preds = %1726
  br label %1760

1729:                                             ; preds = %1589
  %1730 = load i32, ptr %11, align 4, !tbaa !13
  %1731 = sext i32 %1730 to i64
  %1732 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %1731)
          to label %1733 unwind label %44

1733:                                             ; preds = %1729
  %1734 = load ptr, ptr %8, align 8, !tbaa !5
  %1735 = load i32, ptr %11, align 4, !tbaa !13
  %1736 = sext i32 %1735 to i64
  %1737 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1734, i64 noundef %1736)
          to label %1738 unwind label %44

1738:                                             ; preds = %1733
  %1739 = invoke noundef zeroext i8 @_ZNK7glslang11TConstUnion10getU8ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1737)
          to label %1740 unwind label %44

1740:                                             ; preds = %1738
  %1741 = zext i8 %1739 to i64
  invoke void @_ZN7glslang11TConstUnion11setU64ConstEy(ptr noundef nonnull align 8 dereferenceable(12) %1732, i64 noundef %1741)
          to label %1742 unwind label %44

1742:                                             ; preds = %1740
  br label %1760

1743:                                             ; preds = %1589
  %1744 = load i32, ptr %11, align 4, !tbaa !13
  %1745 = sext i32 %1744 to i64
  %1746 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %1745)
          to label %1747 unwind label %44

1747:                                             ; preds = %1743
  %1748 = load ptr, ptr %8, align 8, !tbaa !5
  %1749 = load i32, ptr %11, align 4, !tbaa !13
  %1750 = sext i32 %1749 to i64
  %1751 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1748, i64 noundef %1750)
          to label %1752 unwind label %44

1752:                                             ; preds = %1747
  %1753 = invoke noundef zeroext i8 @_ZNK7glslang11TConstUnion10getU8ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1751)
          to label %1754 unwind label %44

1754:                                             ; preds = %1752
  %1755 = zext i8 %1753 to i32
  %1756 = icmp ne i32 %1755, 0
  invoke void @_ZN7glslang11TConstUnion9setBConstEb(ptr noundef nonnull align 8 dereferenceable(12) %1746, i1 noundef zeroext %1756)
          to label %1757 unwind label %44

1757:                                             ; preds = %1754
  br label %1760

1758:                                             ; preds = %1589
  %1759 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %1759, ptr %4, align 8
  store i32 1, ptr %12, align 4
  br label %2110

1760:                                             ; preds = %1757, %1742, %1728, %1714, %1700, %1687, %1673, %1659, %1645, %1632, %1618, %1604
  br label %2106

1761:                                             ; preds = %43
  %1762 = load i32, ptr %6, align 4, !tbaa !9
  switch i32 %1762, label %1930 [
    i32 3, label %1763
    i32 1, label %1777
    i32 2, label %1791
    i32 4, label %1805
    i32 6, label %1819
    i32 8, label %1832
    i32 10, label %1846
    i32 5, label %1860
    i32 7, label %1874
    i32 9, label %1887
    i32 11, label %1901
    i32 12, label %1915
  ]

1763:                                             ; preds = %1761
  %1764 = load i32, ptr %11, align 4, !tbaa !13
  %1765 = sext i32 %1764 to i64
  %1766 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %1765)
          to label %1767 unwind label %44

1767:                                             ; preds = %1763
  %1768 = load ptr, ptr %8, align 8, !tbaa !5
  %1769 = load i32, ptr %11, align 4, !tbaa !13
  %1770 = sext i32 %1769 to i64
  %1771 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1768, i64 noundef %1770)
          to label %1772 unwind label %44

1772:                                             ; preds = %1767
  %1773 = invoke noundef zeroext i16 @_ZNK7glslang11TConstUnion11getU16ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1771)
          to label %1774 unwind label %44

1774:                                             ; preds = %1772
  %1775 = uitofp i16 %1773 to double
  invoke void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %1766, double noundef %1775)
          to label %1776 unwind label %44

1776:                                             ; preds = %1774
  br label %1932

1777:                                             ; preds = %1761
  %1778 = load i32, ptr %11, align 4, !tbaa !13
  %1779 = sext i32 %1778 to i64
  %1780 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %1779)
          to label %1781 unwind label %44

1781:                                             ; preds = %1777
  %1782 = load ptr, ptr %8, align 8, !tbaa !5
  %1783 = load i32, ptr %11, align 4, !tbaa !13
  %1784 = sext i32 %1783 to i64
  %1785 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1782, i64 noundef %1784)
          to label %1786 unwind label %44

1786:                                             ; preds = %1781
  %1787 = invoke noundef zeroext i16 @_ZNK7glslang11TConstUnion11getU16ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1785)
          to label %1788 unwind label %44

1788:                                             ; preds = %1786
  %1789 = uitofp i16 %1787 to double
  invoke void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %1780, double noundef %1789)
          to label %1790 unwind label %44

1790:                                             ; preds = %1788
  br label %1932

1791:                                             ; preds = %1761
  %1792 = load i32, ptr %11, align 4, !tbaa !13
  %1793 = sext i32 %1792 to i64
  %1794 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %1793)
          to label %1795 unwind label %44

1795:                                             ; preds = %1791
  %1796 = load ptr, ptr %8, align 8, !tbaa !5
  %1797 = load i32, ptr %11, align 4, !tbaa !13
  %1798 = sext i32 %1797 to i64
  %1799 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1796, i64 noundef %1798)
          to label %1800 unwind label %44

1800:                                             ; preds = %1795
  %1801 = invoke noundef zeroext i16 @_ZNK7glslang11TConstUnion11getU16ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1799)
          to label %1802 unwind label %44

1802:                                             ; preds = %1800
  %1803 = uitofp i16 %1801 to double
  invoke void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %1794, double noundef %1803)
          to label %1804 unwind label %44

1804:                                             ; preds = %1802
  br label %1932

1805:                                             ; preds = %1761
  %1806 = load i32, ptr %11, align 4, !tbaa !13
  %1807 = sext i32 %1806 to i64
  %1808 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %1807)
          to label %1809 unwind label %44

1809:                                             ; preds = %1805
  %1810 = load ptr, ptr %8, align 8, !tbaa !5
  %1811 = load i32, ptr %11, align 4, !tbaa !13
  %1812 = sext i32 %1811 to i64
  %1813 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1810, i64 noundef %1812)
          to label %1814 unwind label %44

1814:                                             ; preds = %1809
  %1815 = invoke noundef zeroext i16 @_ZNK7glslang11TConstUnion11getU16ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1813)
          to label %1816 unwind label %44

1816:                                             ; preds = %1814
  %1817 = trunc i16 %1815 to i8
  invoke void @_ZN7glslang11TConstUnion10setI8ConstEa(ptr noundef nonnull align 8 dereferenceable(12) %1808, i8 noundef signext %1817)
          to label %1818 unwind label %44

1818:                                             ; preds = %1816
  br label %1932

1819:                                             ; preds = %1761
  %1820 = load i32, ptr %11, align 4, !tbaa !13
  %1821 = sext i32 %1820 to i64
  %1822 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %1821)
          to label %1823 unwind label %44

1823:                                             ; preds = %1819
  %1824 = load ptr, ptr %8, align 8, !tbaa !5
  %1825 = load i32, ptr %11, align 4, !tbaa !13
  %1826 = sext i32 %1825 to i64
  %1827 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1824, i64 noundef %1826)
          to label %1828 unwind label %44

1828:                                             ; preds = %1823
  %1829 = invoke noundef zeroext i16 @_ZNK7glslang11TConstUnion11getU16ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1827)
          to label %1830 unwind label %44

1830:                                             ; preds = %1828
  invoke void @_ZN7glslang11TConstUnion11setI16ConstEs(ptr noundef nonnull align 8 dereferenceable(12) %1822, i16 noundef signext %1829)
          to label %1831 unwind label %44

1831:                                             ; preds = %1830
  br label %1932

1832:                                             ; preds = %1761
  %1833 = load i32, ptr %11, align 4, !tbaa !13
  %1834 = sext i32 %1833 to i64
  %1835 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %1834)
          to label %1836 unwind label %44

1836:                                             ; preds = %1832
  %1837 = load ptr, ptr %8, align 8, !tbaa !5
  %1838 = load i32, ptr %11, align 4, !tbaa !13
  %1839 = sext i32 %1838 to i64
  %1840 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1837, i64 noundef %1839)
          to label %1841 unwind label %44

1841:                                             ; preds = %1836
  %1842 = invoke noundef zeroext i16 @_ZNK7glslang11TConstUnion11getU16ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1840)
          to label %1843 unwind label %44

1843:                                             ; preds = %1841
  %1844 = zext i16 %1842 to i32
  invoke void @_ZN7glslang11TConstUnion9setIConstEi(ptr noundef nonnull align 8 dereferenceable(12) %1835, i32 noundef %1844)
          to label %1845 unwind label %44

1845:                                             ; preds = %1843
  br label %1932

1846:                                             ; preds = %1761
  %1847 = load i32, ptr %11, align 4, !tbaa !13
  %1848 = sext i32 %1847 to i64
  %1849 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %1848)
          to label %1850 unwind label %44

1850:                                             ; preds = %1846
  %1851 = load ptr, ptr %8, align 8, !tbaa !5
  %1852 = load i32, ptr %11, align 4, !tbaa !13
  %1853 = sext i32 %1852 to i64
  %1854 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1851, i64 noundef %1853)
          to label %1855 unwind label %44

1855:                                             ; preds = %1850
  %1856 = invoke noundef zeroext i16 @_ZNK7glslang11TConstUnion11getU16ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1854)
          to label %1857 unwind label %44

1857:                                             ; preds = %1855
  %1858 = zext i16 %1856 to i64
  invoke void @_ZN7glslang11TConstUnion11setI64ConstEx(ptr noundef nonnull align 8 dereferenceable(12) %1849, i64 noundef %1858)
          to label %1859 unwind label %44

1859:                                             ; preds = %1857
  br label %1932

1860:                                             ; preds = %1761
  %1861 = load i32, ptr %11, align 4, !tbaa !13
  %1862 = sext i32 %1861 to i64
  %1863 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %1862)
          to label %1864 unwind label %44

1864:                                             ; preds = %1860
  %1865 = load ptr, ptr %8, align 8, !tbaa !5
  %1866 = load i32, ptr %11, align 4, !tbaa !13
  %1867 = sext i32 %1866 to i64
  %1868 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1865, i64 noundef %1867)
          to label %1869 unwind label %44

1869:                                             ; preds = %1864
  %1870 = invoke noundef zeroext i16 @_ZNK7glslang11TConstUnion11getU16ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1868)
          to label %1871 unwind label %44

1871:                                             ; preds = %1869
  %1872 = trunc i16 %1870 to i8
  invoke void @_ZN7glslang11TConstUnion10setU8ConstEh(ptr noundef nonnull align 8 dereferenceable(12) %1863, i8 noundef zeroext %1872)
          to label %1873 unwind label %44

1873:                                             ; preds = %1871
  br label %1932

1874:                                             ; preds = %1761
  %1875 = load i32, ptr %11, align 4, !tbaa !13
  %1876 = sext i32 %1875 to i64
  %1877 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %1876)
          to label %1878 unwind label %44

1878:                                             ; preds = %1874
  %1879 = load ptr, ptr %8, align 8, !tbaa !5
  %1880 = load i32, ptr %11, align 4, !tbaa !13
  %1881 = sext i32 %1880 to i64
  %1882 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1879, i64 noundef %1881)
          to label %1883 unwind label %44

1883:                                             ; preds = %1878
  %1884 = invoke noundef zeroext i16 @_ZNK7glslang11TConstUnion11getU16ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1882)
          to label %1885 unwind label %44

1885:                                             ; preds = %1883
  invoke void @_ZN7glslang11TConstUnion11setU16ConstEt(ptr noundef nonnull align 8 dereferenceable(12) %1877, i16 noundef zeroext %1884)
          to label %1886 unwind label %44

1886:                                             ; preds = %1885
  br label %1932

1887:                                             ; preds = %1761
  %1888 = load i32, ptr %11, align 4, !tbaa !13
  %1889 = sext i32 %1888 to i64
  %1890 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %1889)
          to label %1891 unwind label %44

1891:                                             ; preds = %1887
  %1892 = load ptr, ptr %8, align 8, !tbaa !5
  %1893 = load i32, ptr %11, align 4, !tbaa !13
  %1894 = sext i32 %1893 to i64
  %1895 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1892, i64 noundef %1894)
          to label %1896 unwind label %44

1896:                                             ; preds = %1891
  %1897 = invoke noundef zeroext i16 @_ZNK7glslang11TConstUnion11getU16ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1895)
          to label %1898 unwind label %44

1898:                                             ; preds = %1896
  %1899 = zext i16 %1897 to i32
  invoke void @_ZN7glslang11TConstUnion9setUConstEj(ptr noundef nonnull align 8 dereferenceable(12) %1890, i32 noundef %1899)
          to label %1900 unwind label %44

1900:                                             ; preds = %1898
  br label %1932

1901:                                             ; preds = %1761
  %1902 = load i32, ptr %11, align 4, !tbaa !13
  %1903 = sext i32 %1902 to i64
  %1904 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %1903)
          to label %1905 unwind label %44

1905:                                             ; preds = %1901
  %1906 = load ptr, ptr %8, align 8, !tbaa !5
  %1907 = load i32, ptr %11, align 4, !tbaa !13
  %1908 = sext i32 %1907 to i64
  %1909 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1906, i64 noundef %1908)
          to label %1910 unwind label %44

1910:                                             ; preds = %1905
  %1911 = invoke noundef zeroext i16 @_ZNK7glslang11TConstUnion11getU16ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1909)
          to label %1912 unwind label %44

1912:                                             ; preds = %1910
  %1913 = zext i16 %1911 to i64
  invoke void @_ZN7glslang11TConstUnion11setU64ConstEy(ptr noundef nonnull align 8 dereferenceable(12) %1904, i64 noundef %1913)
          to label %1914 unwind label %44

1914:                                             ; preds = %1912
  br label %1932

1915:                                             ; preds = %1761
  %1916 = load i32, ptr %11, align 4, !tbaa !13
  %1917 = sext i32 %1916 to i64
  %1918 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %1917)
          to label %1919 unwind label %44

1919:                                             ; preds = %1915
  %1920 = load ptr, ptr %8, align 8, !tbaa !5
  %1921 = load i32, ptr %11, align 4, !tbaa !13
  %1922 = sext i32 %1921 to i64
  %1923 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1920, i64 noundef %1922)
          to label %1924 unwind label %44

1924:                                             ; preds = %1919
  %1925 = invoke noundef zeroext i16 @_ZNK7glslang11TConstUnion11getU16ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1923)
          to label %1926 unwind label %44

1926:                                             ; preds = %1924
  %1927 = zext i16 %1925 to i32
  %1928 = icmp ne i32 %1927, 0
  invoke void @_ZN7glslang11TConstUnion9setBConstEb(ptr noundef nonnull align 8 dereferenceable(12) %1918, i1 noundef zeroext %1928)
          to label %1929 unwind label %44

1929:                                             ; preds = %1926
  br label %1932

1930:                                             ; preds = %1761
  %1931 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %1931, ptr %4, align 8
  store i32 1, ptr %12, align 4
  br label %2110

1932:                                             ; preds = %1929, %1914, %1900, %1886, %1873, %1859, %1845, %1831, %1818, %1804, %1790, %1776
  br label %2106

1933:                                             ; preds = %43
  %1934 = load i32, ptr %6, align 4, !tbaa !9
  switch i32 %1934, label %2101 [
    i32 3, label %1935
    i32 1, label %1949
    i32 2, label %1963
    i32 4, label %1977
    i32 6, label %1991
    i32 8, label %2005
    i32 10, label %2019
    i32 5, label %2032
    i32 7, label %2046
    i32 9, label %2060
    i32 11, label %2074
    i32 12, label %2087
  ]

1935:                                             ; preds = %1933
  %1936 = load i32, ptr %11, align 4, !tbaa !13
  %1937 = sext i32 %1936 to i64
  %1938 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %1937)
          to label %1939 unwind label %44

1939:                                             ; preds = %1935
  %1940 = load ptr, ptr %8, align 8, !tbaa !5
  %1941 = load i32, ptr %11, align 4, !tbaa !13
  %1942 = sext i32 %1941 to i64
  %1943 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1940, i64 noundef %1942)
          to label %1944 unwind label %44

1944:                                             ; preds = %1939
  %1945 = invoke noundef i64 @_ZNK7glslang11TConstUnion11getU64ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1943)
          to label %1946 unwind label %44

1946:                                             ; preds = %1944
  %1947 = uitofp i64 %1945 to double
  invoke void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %1938, double noundef %1947)
          to label %1948 unwind label %44

1948:                                             ; preds = %1946
  br label %2103

1949:                                             ; preds = %1933
  %1950 = load i32, ptr %11, align 4, !tbaa !13
  %1951 = sext i32 %1950 to i64
  %1952 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %1951)
          to label %1953 unwind label %44

1953:                                             ; preds = %1949
  %1954 = load ptr, ptr %8, align 8, !tbaa !5
  %1955 = load i32, ptr %11, align 4, !tbaa !13
  %1956 = sext i32 %1955 to i64
  %1957 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1954, i64 noundef %1956)
          to label %1958 unwind label %44

1958:                                             ; preds = %1953
  %1959 = invoke noundef i64 @_ZNK7glslang11TConstUnion11getU64ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1957)
          to label %1960 unwind label %44

1960:                                             ; preds = %1958
  %1961 = uitofp i64 %1959 to double
  invoke void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %1952, double noundef %1961)
          to label %1962 unwind label %44

1962:                                             ; preds = %1960
  br label %2103

1963:                                             ; preds = %1933
  %1964 = load i32, ptr %11, align 4, !tbaa !13
  %1965 = sext i32 %1964 to i64
  %1966 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %1965)
          to label %1967 unwind label %44

1967:                                             ; preds = %1963
  %1968 = load ptr, ptr %8, align 8, !tbaa !5
  %1969 = load i32, ptr %11, align 4, !tbaa !13
  %1970 = sext i32 %1969 to i64
  %1971 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1968, i64 noundef %1970)
          to label %1972 unwind label %44

1972:                                             ; preds = %1967
  %1973 = invoke noundef i64 @_ZNK7glslang11TConstUnion11getU64ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1971)
          to label %1974 unwind label %44

1974:                                             ; preds = %1972
  %1975 = uitofp i64 %1973 to double
  invoke void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %1966, double noundef %1975)
          to label %1976 unwind label %44

1976:                                             ; preds = %1974
  br label %2103

1977:                                             ; preds = %1933
  %1978 = load i32, ptr %11, align 4, !tbaa !13
  %1979 = sext i32 %1978 to i64
  %1980 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %1979)
          to label %1981 unwind label %44

1981:                                             ; preds = %1977
  %1982 = load ptr, ptr %8, align 8, !tbaa !5
  %1983 = load i32, ptr %11, align 4, !tbaa !13
  %1984 = sext i32 %1983 to i64
  %1985 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1982, i64 noundef %1984)
          to label %1986 unwind label %44

1986:                                             ; preds = %1981
  %1987 = invoke noundef i64 @_ZNK7glslang11TConstUnion11getU64ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1985)
          to label %1988 unwind label %44

1988:                                             ; preds = %1986
  %1989 = trunc i64 %1987 to i8
  invoke void @_ZN7glslang11TConstUnion10setI8ConstEa(ptr noundef nonnull align 8 dereferenceable(12) %1980, i8 noundef signext %1989)
          to label %1990 unwind label %44

1990:                                             ; preds = %1988
  br label %2103

1991:                                             ; preds = %1933
  %1992 = load i32, ptr %11, align 4, !tbaa !13
  %1993 = sext i32 %1992 to i64
  %1994 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %1993)
          to label %1995 unwind label %44

1995:                                             ; preds = %1991
  %1996 = load ptr, ptr %8, align 8, !tbaa !5
  %1997 = load i32, ptr %11, align 4, !tbaa !13
  %1998 = sext i32 %1997 to i64
  %1999 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %1996, i64 noundef %1998)
          to label %2000 unwind label %44

2000:                                             ; preds = %1995
  %2001 = invoke noundef i64 @_ZNK7glslang11TConstUnion11getU64ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %1999)
          to label %2002 unwind label %44

2002:                                             ; preds = %2000
  %2003 = trunc i64 %2001 to i16
  invoke void @_ZN7glslang11TConstUnion11setI16ConstEs(ptr noundef nonnull align 8 dereferenceable(12) %1994, i16 noundef signext %2003)
          to label %2004 unwind label %44

2004:                                             ; preds = %2002
  br label %2103

2005:                                             ; preds = %1933
  %2006 = load i32, ptr %11, align 4, !tbaa !13
  %2007 = sext i32 %2006 to i64
  %2008 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %2007)
          to label %2009 unwind label %44

2009:                                             ; preds = %2005
  %2010 = load ptr, ptr %8, align 8, !tbaa !5
  %2011 = load i32, ptr %11, align 4, !tbaa !13
  %2012 = sext i32 %2011 to i64
  %2013 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %2010, i64 noundef %2012)
          to label %2014 unwind label %44

2014:                                             ; preds = %2009
  %2015 = invoke noundef i64 @_ZNK7glslang11TConstUnion11getU64ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %2013)
          to label %2016 unwind label %44

2016:                                             ; preds = %2014
  %2017 = trunc i64 %2015 to i32
  invoke void @_ZN7glslang11TConstUnion9setIConstEi(ptr noundef nonnull align 8 dereferenceable(12) %2008, i32 noundef %2017)
          to label %2018 unwind label %44

2018:                                             ; preds = %2016
  br label %2103

2019:                                             ; preds = %1933
  %2020 = load i32, ptr %11, align 4, !tbaa !13
  %2021 = sext i32 %2020 to i64
  %2022 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %2021)
          to label %2023 unwind label %44

2023:                                             ; preds = %2019
  %2024 = load ptr, ptr %8, align 8, !tbaa !5
  %2025 = load i32, ptr %11, align 4, !tbaa !13
  %2026 = sext i32 %2025 to i64
  %2027 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %2024, i64 noundef %2026)
          to label %2028 unwind label %44

2028:                                             ; preds = %2023
  %2029 = invoke noundef i64 @_ZNK7glslang11TConstUnion11getU64ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %2027)
          to label %2030 unwind label %44

2030:                                             ; preds = %2028
  invoke void @_ZN7glslang11TConstUnion11setI64ConstEx(ptr noundef nonnull align 8 dereferenceable(12) %2022, i64 noundef %2029)
          to label %2031 unwind label %44

2031:                                             ; preds = %2030
  br label %2103

2032:                                             ; preds = %1933
  %2033 = load i32, ptr %11, align 4, !tbaa !13
  %2034 = sext i32 %2033 to i64
  %2035 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %2034)
          to label %2036 unwind label %44

2036:                                             ; preds = %2032
  %2037 = load ptr, ptr %8, align 8, !tbaa !5
  %2038 = load i32, ptr %11, align 4, !tbaa !13
  %2039 = sext i32 %2038 to i64
  %2040 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %2037, i64 noundef %2039)
          to label %2041 unwind label %44

2041:                                             ; preds = %2036
  %2042 = invoke noundef i64 @_ZNK7glslang11TConstUnion11getU64ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %2040)
          to label %2043 unwind label %44

2043:                                             ; preds = %2041
  %2044 = trunc i64 %2042 to i8
  invoke void @_ZN7glslang11TConstUnion10setU8ConstEh(ptr noundef nonnull align 8 dereferenceable(12) %2035, i8 noundef zeroext %2044)
          to label %2045 unwind label %44

2045:                                             ; preds = %2043
  br label %2103

2046:                                             ; preds = %1933
  %2047 = load i32, ptr %11, align 4, !tbaa !13
  %2048 = sext i32 %2047 to i64
  %2049 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %2048)
          to label %2050 unwind label %44

2050:                                             ; preds = %2046
  %2051 = load ptr, ptr %8, align 8, !tbaa !5
  %2052 = load i32, ptr %11, align 4, !tbaa !13
  %2053 = sext i32 %2052 to i64
  %2054 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %2051, i64 noundef %2053)
          to label %2055 unwind label %44

2055:                                             ; preds = %2050
  %2056 = invoke noundef i64 @_ZNK7glslang11TConstUnion11getU64ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %2054)
          to label %2057 unwind label %44

2057:                                             ; preds = %2055
  %2058 = trunc i64 %2056 to i16
  invoke void @_ZN7glslang11TConstUnion11setU16ConstEt(ptr noundef nonnull align 8 dereferenceable(12) %2049, i16 noundef zeroext %2058)
          to label %2059 unwind label %44

2059:                                             ; preds = %2057
  br label %2103

2060:                                             ; preds = %1933
  %2061 = load i32, ptr %11, align 4, !tbaa !13
  %2062 = sext i32 %2061 to i64
  %2063 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %2062)
          to label %2064 unwind label %44

2064:                                             ; preds = %2060
  %2065 = load ptr, ptr %8, align 8, !tbaa !5
  %2066 = load i32, ptr %11, align 4, !tbaa !13
  %2067 = sext i32 %2066 to i64
  %2068 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %2065, i64 noundef %2067)
          to label %2069 unwind label %44

2069:                                             ; preds = %2064
  %2070 = invoke noundef i64 @_ZNK7glslang11TConstUnion11getU64ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %2068)
          to label %2071 unwind label %44

2071:                                             ; preds = %2069
  %2072 = trunc i64 %2070 to i32
  invoke void @_ZN7glslang11TConstUnion9setUConstEj(ptr noundef nonnull align 8 dereferenceable(12) %2063, i32 noundef %2072)
          to label %2073 unwind label %44

2073:                                             ; preds = %2071
  br label %2103

2074:                                             ; preds = %1933
  %2075 = load i32, ptr %11, align 4, !tbaa !13
  %2076 = sext i32 %2075 to i64
  %2077 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %2076)
          to label %2078 unwind label %44

2078:                                             ; preds = %2074
  %2079 = load ptr, ptr %8, align 8, !tbaa !5
  %2080 = load i32, ptr %11, align 4, !tbaa !13
  %2081 = sext i32 %2080 to i64
  %2082 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %2079, i64 noundef %2081)
          to label %2083 unwind label %44

2083:                                             ; preds = %2078
  %2084 = invoke noundef i64 @_ZNK7glslang11TConstUnion11getU64ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %2082)
          to label %2085 unwind label %44

2085:                                             ; preds = %2083
  invoke void @_ZN7glslang11TConstUnion11setU64ConstEy(ptr noundef nonnull align 8 dereferenceable(12) %2077, i64 noundef %2084)
          to label %2086 unwind label %44

2086:                                             ; preds = %2085
  br label %2103

2087:                                             ; preds = %1933
  %2088 = load i32, ptr %11, align 4, !tbaa !13
  %2089 = sext i32 %2088 to i64
  %2090 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %10, i64 noundef %2089)
          to label %2091 unwind label %44

2091:                                             ; preds = %2087
  %2092 = load ptr, ptr %8, align 8, !tbaa !5
  %2093 = load i32, ptr %11, align 4, !tbaa !13
  %2094 = sext i32 %2093 to i64
  %2095 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %2092, i64 noundef %2094)
          to label %2096 unwind label %44

2096:                                             ; preds = %2091
  %2097 = invoke noundef i64 @_ZNK7glslang11TConstUnion11getU64ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %2095)
          to label %2098 unwind label %44

2098:                                             ; preds = %2096
  %2099 = icmp ne i64 %2097, 0
  invoke void @_ZN7glslang11TConstUnion9setBConstEb(ptr noundef nonnull align 8 dereferenceable(12) %2090, i1 noundef zeroext %2099)
          to label %2100 unwind label %44

2100:                                             ; preds = %2098
  br label %2103

2101:                                             ; preds = %1933
  %2102 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %2102, ptr %4, align 8
  store i32 1, ptr %12, align 4
  br label %2110

2103:                                             ; preds = %2100, %2086, %2073, %2059, %2045, %2031, %2018, %2004, %1990, %1976, %1962, %1948
  br label %2106

2104:                                             ; preds = %43
  %2105 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %2105, ptr %4, align 8
  store i32 1, ptr %12, align 4
  br label %2110

2106:                                             ; preds = %2103, %1932, %1760, %1588, %1417, %1245, %1073, %903, %733, %559, %388, %217
  br label %2107

2107:                                             ; preds = %2106
  %2108 = load i32, ptr %11, align 4, !tbaa !13
  %2109 = add nsw i32 %2108, 1
  store i32 %2109, ptr %11, align 4, !tbaa !13
  br label %27, !llvm.loop !15

2110:                                             ; preds = %2104, %2101, %1930, %1758, %1586, %1415, %1243, %1071, %901, %731, %557, %386, %215, %31
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #3
  %2111 = load i32, ptr %12, align 4
  switch i32 %2111, label %2171 [
    i32 2, label %2112
  ]

2112:                                             ; preds = %2110
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #3
  %2113 = load ptr, ptr %7, align 8, !tbaa !5
  %2114 = load ptr, ptr %2113, align 8, !tbaa !11
  %2115 = getelementptr inbounds ptr, ptr %2114, i64 30
  %2116 = load ptr, ptr %2115, align 8
  %2117 = invoke noundef nonnull align 8 dereferenceable(144) ptr %2116(ptr noundef nonnull align 8 dereferenceable(176) %2113)
          to label %2118 unwind label %2157

2118:                                             ; preds = %2112
  store ptr %2117, ptr %15, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 144, ptr %16) #3
  %2119 = load i32, ptr %6, align 4, !tbaa !9
  %2120 = load ptr, ptr %15, align 8, !tbaa !5
  %2121 = load ptr, ptr %2120, align 8, !tbaa !11
  %2122 = getelementptr inbounds ptr, ptr %2121, i64 11
  %2123 = load ptr, ptr %2122, align 8
  %2124 = invoke noundef nonnull align 8 dereferenceable(72) ptr %2123(ptr noundef nonnull align 8 dereferenceable(144) %2120)
          to label %2125 unwind label %2161

2125:                                             ; preds = %2118
  %2126 = getelementptr inbounds %"class.glslang::TQualifier", ptr %2124, i32 0, i32 1
  %2127 = load i64, ptr %2126, align 8
  %2128 = and i64 %2127, 63
  %2129 = trunc i64 %2128 to i32
  %2130 = load ptr, ptr %15, align 8, !tbaa !5
  %2131 = load ptr, ptr %2130, align 8, !tbaa !11
  %2132 = getelementptr inbounds ptr, ptr %2131, i64 12
  %2133 = load ptr, ptr %2132, align 8
  %2134 = invoke noundef i32 %2133(ptr noundef nonnull align 8 dereferenceable(144) %2130)
          to label %2135 unwind label %2161

2135:                                             ; preds = %2125
  %2136 = load ptr, ptr %15, align 8, !tbaa !5
  %2137 = load ptr, ptr %2136, align 8, !tbaa !11
  %2138 = getelementptr inbounds ptr, ptr %2137, i64 13
  %2139 = load ptr, ptr %2138, align 8
  %2140 = invoke noundef i32 %2139(ptr noundef nonnull align 8 dereferenceable(144) %2136)
          to label %2141 unwind label %2161

2141:                                             ; preds = %2135
  %2142 = load ptr, ptr %15, align 8, !tbaa !5
  %2143 = load ptr, ptr %2142, align 8, !tbaa !11
  %2144 = getelementptr inbounds ptr, ptr %2143, i64 14
  %2145 = load ptr, ptr %2144, align 8
  %2146 = invoke noundef i32 %2145(ptr noundef nonnull align 8 dereferenceable(144) %2142)
          to label %2147 unwind label %2161

2147:                                             ; preds = %2141
  invoke void @_ZN7glslang5TTypeC2ENS_10TBasicTypeENS_17TStorageQualifierEiiib(ptr noundef nonnull align 8 dereferenceable(144) %16, i32 noundef %2119, i32 noundef %2129, i32 noundef %2134, i32 noundef %2140, i32 noundef %2146, i1 noundef zeroext false)
          to label %2148 unwind label %2161

2148:                                             ; preds = %2147
  %2149 = load ptr, ptr %7, align 8, !tbaa !5
  %2150 = load ptr, ptr %2149, align 8, !tbaa !11
  %2151 = getelementptr inbounds ptr, ptr %2150, i64 0
  %2152 = load ptr, ptr %2151, align 8
  %2153 = invoke noundef nonnull align 8 dereferenceable(24) ptr %2152(ptr noundef nonnull align 8 dereferenceable(32) %2149)
          to label %2154 unwind label %2165

2154:                                             ; preds = %2148
  %2155 = invoke noundef ptr @_ZNK7glslang13TIntermediate16addConstantUnionERKNS_16TConstUnionArrayERKNS_5TTypeERKNS_10TSourceLocEb(ptr noundef nonnull align 8 dereferenceable(1784) %17, ptr noundef nonnull align 8 dereferenceable(16) %10, ptr noundef nonnull align 8 dereferenceable(144) %16, ptr noundef nonnull align 8 dereferenceable(24) %2153, i1 noundef zeroext false)
          to label %2156 unwind label %2165

2156:                                             ; preds = %2154
  store ptr %2155, ptr %4, align 8
  call void @_ZN7glslang5TTypeD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %16) #3
  call void @llvm.lifetime.end.p0(i64 144, ptr %16) #3
  store i32 1, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #3
  br label %2171

2157:                                             ; preds = %2112
  %2158 = landingpad { ptr, i32 }
          cleanup
  %2159 = extractvalue { ptr, i32 } %2158, 0
  store ptr %2159, ptr %13, align 8
  %2160 = extractvalue { ptr, i32 } %2158, 1
  store i32 %2160, ptr %14, align 4
  br label %2170

2161:                                             ; preds = %2147, %2141, %2135, %2125, %2118
  %2162 = landingpad { ptr, i32 }
          cleanup
  %2163 = extractvalue { ptr, i32 } %2162, 0
  store ptr %2163, ptr %13, align 8
  %2164 = extractvalue { ptr, i32 } %2162, 1
  store i32 %2164, ptr %14, align 4
  br label %2169

2165:                                             ; preds = %2154, %2148
  %2166 = landingpad { ptr, i32 }
          cleanup
  %2167 = extractvalue { ptr, i32 } %2166, 0
  store ptr %2167, ptr %13, align 8
  %2168 = extractvalue { ptr, i32 } %2166, 1
  store i32 %2168, ptr %14, align 4
  call void @_ZN7glslang5TTypeD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %16) #3
  br label %2169

2169:                                             ; preds = %2165, %2161
  call void @llvm.lifetime.end.p0(i64 144, ptr %16) #3
  br label %2170

2170:                                             ; preds = %2169, %2157
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #3
  br label %2173

2171:                                             ; preds = %2156, %2110
  call void @_ZN7glslang16TConstUnionArrayD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %10) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr %10) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #3
  %2172 = load ptr, ptr %4, align 8
  ret ptr %2172

2173:                                             ; preds = %2170, %44
  call void @_ZN7glslang16TConstUnionArrayD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %10) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr %10) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #3
  br label %2174

2174:                                             ; preds = %2173
  %2175 = load ptr, ptr %13, align 8
  %2176 = load i32, ptr %14, align 4
  %2177 = insertvalue { ptr, i32 } poison, ptr %2175, 0
  %2178 = insertvalue { ptr, i32 } %2177, i32 %2176, 1
  resume { ptr, i32 } %2178
}

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZNK7glslang5TType20computeNumComponentsEv(ptr noundef nonnull align 8 dereferenceable(144)) #2 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZNK7glslang13TIntermediate16addConstantUnionERKNS_16TConstUnionArrayERKNS_5TTypeERKNS_10TSourceLocEb(ptr noundef nonnull align 8 dereferenceable(1784), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(144), ptr noundef nonnull align 8 dereferenceable(24), i1 noundef zeroext) #2 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNK7glslang11TConstUnion11getU64ConstEv(ptr noundef nonnull align 8 dereferenceable(12)) #1 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 }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"_ZTSN7glslang10TBasicTypeE", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"vtable pointer", !8, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"int", !7, i64 0}
!15 = distinct !{!15, !16}
!16 = !{!"llvm.loop.mustprogress"}


; 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.glslang::TConstUnionArray" = type { ptr, ptr }
%"class.glslang::TType" = type { ptr, i32, [4 x i8], %"class.glslang::TQualifier", ptr, %union.anon, ptr, ptr, %"struct.glslang::TSampler", ptr, ptr }
%"class.glslang::TQualifier" = type <{ ptr, i64, i8, [3 x i8], i32, i32, i64, i64, i8, i8, i8, i8, i8, [3 x i8], i32, i8, [3 x i8], i32, ptr }>
%union.anon = type { ptr }
%"struct.glslang::TSampler" = type { i32 }

; 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 void @_ZN7glslang16TConstUnionArrayD2Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7glslang5TTypeC2ENS_10TBasicTypeENS_17TStorageQualifierEiiib(ptr noundef nonnull align 8 dereferenceable(144), i32 noundef, i32 noundef, i32 noundef, i32 noundef, i32 noundef, i1 noundef zeroext) unnamed_addr #2 align 2

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

; Function Attrs: mustprogress uwtable
define dso_local noundef ptr @_ZNK7glslang13TIntermediate20promoteConstantUnionENS_10TBasicTypeEPNS_20TIntermConstantUnionE(ptr noundef nonnull align 8 dereferenceable(1784) %0, i32 noundef %1, ptr noundef nonnull %2) local_unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca %"class.glslang::TConstUnionArray", align 8
  %5 = alloca %"class.glslang::TType", align 8
  %6 = tail call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK7glslang20TIntermConstantUnion13getConstArrayEv(ptr noundef nonnull align 8 dereferenceable(193) %2)
  %7 = load ptr, ptr %2, align 8, !tbaa !5
  %8 = getelementptr inbounds i8, ptr %7, i64 240
  %9 = load ptr, ptr %8, align 8
  %10 = tail call noundef nonnull align 8 dereferenceable(144) ptr %9(ptr noundef nonnull align 8 dereferenceable(176) %2)
  %11 = tail call noundef i32 @_ZNK7glslang5TType20computeNumComponentsEv(ptr noundef nonnull align 8 dereferenceable(144) %10)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %4) #3
  call void @_ZN7glslang16TConstUnionArrayC2Ei(ptr noundef nonnull align 8 dereferenceable(16) %4, i32 noundef %11)
  %.not485 = icmp sgt i32 %11, 0
  br i1 %.not485, label %.lr.ph.preheader, label %.critedge

.lr.ph.preheader:                                 ; preds = %3
  %wide.trip.count = zext nneg i32 %11 to i64
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.preheader, %730
  %indvars.iv = phi i64 [ 0, %.lr.ph.preheader ], [ %indvars.iv.next, %730 ]
  %12 = load ptr, ptr %2, align 8, !tbaa !5
  %13 = getelementptr inbounds i8, ptr %12, i64 240
  %14 = load ptr, ptr %13, align 8
  %15 = invoke noundef nonnull align 8 dereferenceable(144) ptr %14(ptr noundef nonnull align 8 dereferenceable(176) %2)
          to label %16 unwind label %22

16:                                               ; preds = %.lr.ph
  %17 = load ptr, ptr %15, align 8, !tbaa !5
  %18 = getelementptr inbounds i8, ptr %17, i64 56
  %19 = load ptr, ptr %18, align 8
  %20 = invoke noundef i32 %19(ptr noundef nonnull align 8 dereferenceable(144) %15)
          to label %21 unwind label %22

21:                                               ; preds = %16
  switch i32 %20, label %.loopexit [
    i32 1, label %24
    i32 8, label %82
    i32 9, label %141
    i32 12, label %200
    i32 3, label %260
    i32 2, label %318
    i32 4, label %376
    i32 6, label %435
    i32 10, label %494
    i32 5, label %553
    i32 7, label %612
    i32 11, label %671
  ]

22:                                               ; preds = %16, %.lr.ph
  %23 = landingpad { ptr, i32 }
          cleanup
  br label %774

24:                                               ; preds = %21
  switch i32 %1, label %.loopexit [
    i32 3, label %25
    i32 1, label %29
    i32 2, label %33
    i32 4, label %37
    i32 6, label %42
    i32 8, label %47
    i32 10, label %52
    i32 5, label %57
    i32 7, label %62
    i32 9, label %67
    i32 11, label %72
    i32 12, label %77
  ]

25:                                               ; preds = %24
  %26 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %27 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %28 = call noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %27)
  call void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %26, double noundef %28)
  br label %730

29:                                               ; preds = %24
  %30 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %31 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %32 = call noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %31)
  call void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %30, double noundef %32)
  br label %730

33:                                               ; preds = %24
  %34 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %35 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %36 = call noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %35)
  call void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %34, double noundef %36)
  br label %730

37:                                               ; preds = %24
  %38 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %39 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %40 = call noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %39)
  %41 = fptosi double %40 to i8
  call void @_ZN7glslang11TConstUnion10setI8ConstEa(ptr noundef nonnull align 8 dereferenceable(12) %38, i8 noundef signext %41)
  br label %730

42:                                               ; preds = %24
  %43 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %44 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %45 = call noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %44)
  %46 = fptosi double %45 to i16
  call void @_ZN7glslang11TConstUnion11setI16ConstEs(ptr noundef nonnull align 8 dereferenceable(12) %43, i16 noundef signext %46)
  br label %730

47:                                               ; preds = %24
  %48 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %49 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %50 = call noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %49)
  %51 = fptosi double %50 to i32
  call void @_ZN7glslang11TConstUnion9setIConstEi(ptr noundef nonnull align 8 dereferenceable(12) %48, i32 noundef %51)
  br label %730

52:                                               ; preds = %24
  %53 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %54 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %55 = call noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %54)
  %56 = fptosi double %55 to i64
  call void @_ZN7glslang11TConstUnion11setI64ConstEx(ptr noundef nonnull align 8 dereferenceable(12) %53, i64 noundef %56)
  br label %730

57:                                               ; preds = %24
  %58 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %59 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %60 = call noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %59)
  %61 = fptoui double %60 to i8
  call void @_ZN7glslang11TConstUnion10setU8ConstEh(ptr noundef nonnull align 8 dereferenceable(12) %58, i8 noundef zeroext %61)
  br label %730

62:                                               ; preds = %24
  %63 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %64 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %65 = call noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %64)
  %66 = fptoui double %65 to i16
  call void @_ZN7glslang11TConstUnion11setU16ConstEt(ptr noundef nonnull align 8 dereferenceable(12) %63, i16 noundef zeroext %66)
  br label %730

67:                                               ; preds = %24
  %68 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %69 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %70 = call noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %69)
  %71 = fptoui double %70 to i32
  call void @_ZN7glslang11TConstUnion9setUConstEj(ptr noundef nonnull align 8 dereferenceable(12) %68, i32 noundef %71)
  br label %730

72:                                               ; preds = %24
  %73 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %74 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %75 = call noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %74)
  %76 = fptoui double %75 to i64
  call void @_ZN7glslang11TConstUnion11setU64ConstEy(ptr noundef nonnull align 8 dereferenceable(12) %73, i64 noundef %76)
  br label %730

77:                                               ; preds = %24
  %78 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %79 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %80 = call noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %79)
  %81 = fcmp une double %80, 0.000000e+00
  call void @_ZN7glslang11TConstUnion9setBConstEb(ptr noundef nonnull align 8 dereferenceable(12) %78, i1 noundef zeroext %81)
  br label %730

82:                                               ; preds = %21
  switch i32 %1, label %.loopexit [
    i32 3, label %83
    i32 1, label %88
    i32 2, label %93
    i32 4, label %98
    i32 6, label %103
    i32 8, label %108
    i32 10, label %112
    i32 5, label %117
    i32 7, label %122
    i32 9, label %127
    i32 11, label %131
    i32 12, label %136
  ]

83:                                               ; preds = %82
  %84 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %85 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %86 = call noundef i32 @_ZNK7glslang11TConstUnion9getIConstEv(ptr noundef nonnull align 8 dereferenceable(12) %85)
  %87 = sitofp i32 %86 to double
  call void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %84, double noundef %87)
  br label %730

88:                                               ; preds = %82
  %89 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %90 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %91 = call noundef i32 @_ZNK7glslang11TConstUnion9getIConstEv(ptr noundef nonnull align 8 dereferenceable(12) %90)
  %92 = sitofp i32 %91 to double
  call void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %89, double noundef %92)
  br label %730

93:                                               ; preds = %82
  %94 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %95 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %96 = call noundef i32 @_ZNK7glslang11TConstUnion9getIConstEv(ptr noundef nonnull align 8 dereferenceable(12) %95)
  %97 = sitofp i32 %96 to double
  call void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %94, double noundef %97)
  br label %730

98:                                               ; preds = %82
  %99 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %100 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %101 = call noundef i32 @_ZNK7glslang11TConstUnion9getIConstEv(ptr noundef nonnull align 8 dereferenceable(12) %100)
  %102 = trunc i32 %101 to i8
  call void @_ZN7glslang11TConstUnion10setI8ConstEa(ptr noundef nonnull align 8 dereferenceable(12) %99, i8 noundef signext %102)
  br label %730

103:                                              ; preds = %82
  %104 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %105 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %106 = call noundef i32 @_ZNK7glslang11TConstUnion9getIConstEv(ptr noundef nonnull align 8 dereferenceable(12) %105)
  %107 = trunc i32 %106 to i16
  call void @_ZN7glslang11TConstUnion11setI16ConstEs(ptr noundef nonnull align 8 dereferenceable(12) %104, i16 noundef signext %107)
  br label %730

108:                                              ; preds = %82
  %109 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %110 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %111 = call noundef i32 @_ZNK7glslang11TConstUnion9getIConstEv(ptr noundef nonnull align 8 dereferenceable(12) %110)
  call void @_ZN7glslang11TConstUnion9setIConstEi(ptr noundef nonnull align 8 dereferenceable(12) %109, i32 noundef %111)
  br label %730

112:                                              ; preds = %82
  %113 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %114 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %115 = call noundef i32 @_ZNK7glslang11TConstUnion9getIConstEv(ptr noundef nonnull align 8 dereferenceable(12) %114)
  %116 = sext i32 %115 to i64
  call void @_ZN7glslang11TConstUnion11setI64ConstEx(ptr noundef nonnull align 8 dereferenceable(12) %113, i64 noundef %116)
  br label %730

117:                                              ; preds = %82
  %118 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %119 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %120 = call noundef i32 @_ZNK7glslang11TConstUnion9getIConstEv(ptr noundef nonnull align 8 dereferenceable(12) %119)
  %121 = trunc i32 %120 to i8
  call void @_ZN7glslang11TConstUnion10setU8ConstEh(ptr noundef nonnull align 8 dereferenceable(12) %118, i8 noundef zeroext %121)
  br label %730

122:                                              ; preds = %82
  %123 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %124 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %125 = call noundef i32 @_ZNK7glslang11TConstUnion9getIConstEv(ptr noundef nonnull align 8 dereferenceable(12) %124)
  %126 = trunc i32 %125 to i16
  call void @_ZN7glslang11TConstUnion11setU16ConstEt(ptr noundef nonnull align 8 dereferenceable(12) %123, i16 noundef zeroext %126)
  br label %730

127:                                              ; preds = %82
  %128 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %129 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %130 = call noundef i32 @_ZNK7glslang11TConstUnion9getIConstEv(ptr noundef nonnull align 8 dereferenceable(12) %129)
  call void @_ZN7glslang11TConstUnion9setUConstEj(ptr noundef nonnull align 8 dereferenceable(12) %128, i32 noundef %130)
  br label %730

131:                                              ; preds = %82
  %132 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %133 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %134 = call noundef i32 @_ZNK7glslang11TConstUnion9getIConstEv(ptr noundef nonnull align 8 dereferenceable(12) %133)
  %135 = sext i32 %134 to i64
  call void @_ZN7glslang11TConstUnion11setU64ConstEy(ptr noundef nonnull align 8 dereferenceable(12) %132, i64 noundef %135)
  br label %730

136:                                              ; preds = %82
  %137 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %138 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %139 = call noundef i32 @_ZNK7glslang11TConstUnion9getIConstEv(ptr noundef nonnull align 8 dereferenceable(12) %138)
  %140 = icmp ne i32 %139, 0
  call void @_ZN7glslang11TConstUnion9setBConstEb(ptr noundef nonnull align 8 dereferenceable(12) %137, i1 noundef zeroext %140)
  br label %730

141:                                              ; preds = %21
  switch i32 %1, label %.loopexit [
    i32 3, label %142
    i32 1, label %147
    i32 2, label %152
    i32 4, label %157
    i32 6, label %162
    i32 8, label %167
    i32 10, label %171
    i32 5, label %176
    i32 7, label %181
    i32 9, label %186
    i32 11, label %190
    i32 12, label %195
  ]

142:                                              ; preds = %141
  %143 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %144 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %145 = call noundef i32 @_ZNK7glslang11TConstUnion9getUConstEv(ptr noundef nonnull align 8 dereferenceable(12) %144)
  %146 = uitofp i32 %145 to double
  call void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %143, double noundef %146)
  br label %730

147:                                              ; preds = %141
  %148 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %149 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %150 = call noundef i32 @_ZNK7glslang11TConstUnion9getUConstEv(ptr noundef nonnull align 8 dereferenceable(12) %149)
  %151 = uitofp i32 %150 to double
  call void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %148, double noundef %151)
  br label %730

152:                                              ; preds = %141
  %153 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %154 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %155 = call noundef i32 @_ZNK7glslang11TConstUnion9getUConstEv(ptr noundef nonnull align 8 dereferenceable(12) %154)
  %156 = uitofp i32 %155 to double
  call void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %153, double noundef %156)
  br label %730

157:                                              ; preds = %141
  %158 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %159 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %160 = call noundef i32 @_ZNK7glslang11TConstUnion9getUConstEv(ptr noundef nonnull align 8 dereferenceable(12) %159)
  %161 = trunc i32 %160 to i8
  call void @_ZN7glslang11TConstUnion10setI8ConstEa(ptr noundef nonnull align 8 dereferenceable(12) %158, i8 noundef signext %161)
  br label %730

162:                                              ; preds = %141
  %163 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %164 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %165 = call noundef i32 @_ZNK7glslang11TConstUnion9getUConstEv(ptr noundef nonnull align 8 dereferenceable(12) %164)
  %166 = trunc i32 %165 to i16
  call void @_ZN7glslang11TConstUnion11setI16ConstEs(ptr noundef nonnull align 8 dereferenceable(12) %163, i16 noundef signext %166)
  br label %730

167:                                              ; preds = %141
  %168 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %169 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %170 = call noundef i32 @_ZNK7glslang11TConstUnion9getUConstEv(ptr noundef nonnull align 8 dereferenceable(12) %169)
  call void @_ZN7glslang11TConstUnion9setIConstEi(ptr noundef nonnull align 8 dereferenceable(12) %168, i32 noundef %170)
  br label %730

171:                                              ; preds = %141
  %172 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %173 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %174 = call noundef i32 @_ZNK7glslang11TConstUnion9getUConstEv(ptr noundef nonnull align 8 dereferenceable(12) %173)
  %175 = zext i32 %174 to i64
  call void @_ZN7glslang11TConstUnion11setI64ConstEx(ptr noundef nonnull align 8 dereferenceable(12) %172, i64 noundef %175)
  br label %730

176:                                              ; preds = %141
  %177 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %178 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %179 = call noundef i32 @_ZNK7glslang11TConstUnion9getUConstEv(ptr noundef nonnull align 8 dereferenceable(12) %178)
  %180 = trunc i32 %179 to i8
  call void @_ZN7glslang11TConstUnion10setU8ConstEh(ptr noundef nonnull align 8 dereferenceable(12) %177, i8 noundef zeroext %180)
  br label %730

181:                                              ; preds = %141
  %182 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %183 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %184 = call noundef i32 @_ZNK7glslang11TConstUnion9getUConstEv(ptr noundef nonnull align 8 dereferenceable(12) %183)
  %185 = trunc i32 %184 to i16
  call void @_ZN7glslang11TConstUnion11setU16ConstEt(ptr noundef nonnull align 8 dereferenceable(12) %182, i16 noundef zeroext %185)
  br label %730

186:                                              ; preds = %141
  %187 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %188 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %189 = call noundef i32 @_ZNK7glslang11TConstUnion9getUConstEv(ptr noundef nonnull align 8 dereferenceable(12) %188)
  call void @_ZN7glslang11TConstUnion9setUConstEj(ptr noundef nonnull align 8 dereferenceable(12) %187, i32 noundef %189)
  br label %730

190:                                              ; preds = %141
  %191 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %192 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %193 = call noundef i32 @_ZNK7glslang11TConstUnion9getUConstEv(ptr noundef nonnull align 8 dereferenceable(12) %192)
  %194 = zext i32 %193 to i64
  call void @_ZN7glslang11TConstUnion11setU64ConstEy(ptr noundef nonnull align 8 dereferenceable(12) %191, i64 noundef %194)
  br label %730

195:                                              ; preds = %141
  %196 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %197 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %198 = call noundef i32 @_ZNK7glslang11TConstUnion9getUConstEv(ptr noundef nonnull align 8 dereferenceable(12) %197)
  %199 = icmp ne i32 %198, 0
  call void @_ZN7glslang11TConstUnion9setBConstEb(ptr noundef nonnull align 8 dereferenceable(12) %196, i1 noundef zeroext %199)
  br label %730

200:                                              ; preds = %21
  switch i32 %1, label %.loopexit [
    i32 3, label %201
    i32 1, label %206
    i32 2, label %211
    i32 4, label %216
    i32 6, label %221
    i32 8, label %226
    i32 10, label %231
    i32 5, label %236
    i32 7, label %241
    i32 9, label %246
    i32 11, label %251
    i32 12, label %256
  ]

201:                                              ; preds = %200
  %202 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %203 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %204 = call noundef zeroext i1 @_ZNK7glslang11TConstUnion9getBConstEv(ptr noundef nonnull align 8 dereferenceable(12) %203)
  %205 = uitofp i1 %204 to double
  call void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %202, double noundef %205)
  br label %730

206:                                              ; preds = %200
  %207 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %208 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %209 = call noundef zeroext i1 @_ZNK7glslang11TConstUnion9getBConstEv(ptr noundef nonnull align 8 dereferenceable(12) %208)
  %210 = uitofp i1 %209 to double
  call void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %207, double noundef %210)
  br label %730

211:                                              ; preds = %200
  %212 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %213 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %214 = call noundef zeroext i1 @_ZNK7glslang11TConstUnion9getBConstEv(ptr noundef nonnull align 8 dereferenceable(12) %213)
  %215 = uitofp i1 %214 to double
  call void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %212, double noundef %215)
  br label %730

216:                                              ; preds = %200
  %217 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %218 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %219 = call noundef zeroext i1 @_ZNK7glslang11TConstUnion9getBConstEv(ptr noundef nonnull align 8 dereferenceable(12) %218)
  %220 = zext i1 %219 to i8
  call void @_ZN7glslang11TConstUnion10setI8ConstEa(ptr noundef nonnull align 8 dereferenceable(12) %217, i8 noundef signext %220)
  br label %730

221:                                              ; preds = %200
  %222 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %223 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %224 = call noundef zeroext i1 @_ZNK7glslang11TConstUnion9getBConstEv(ptr noundef nonnull align 8 dereferenceable(12) %223)
  %225 = zext i1 %224 to i16
  call void @_ZN7glslang11TConstUnion11setI16ConstEs(ptr noundef nonnull align 8 dereferenceable(12) %222, i16 noundef signext %225)
  br label %730

226:                                              ; preds = %200
  %227 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %228 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %229 = call noundef zeroext i1 @_ZNK7glslang11TConstUnion9getBConstEv(ptr noundef nonnull align 8 dereferenceable(12) %228)
  %230 = zext i1 %229 to i32
  call void @_ZN7glslang11TConstUnion9setIConstEi(ptr noundef nonnull align 8 dereferenceable(12) %227, i32 noundef %230)
  br label %730

231:                                              ; preds = %200
  %232 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %233 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %234 = call noundef zeroext i1 @_ZNK7glslang11TConstUnion9getBConstEv(ptr noundef nonnull align 8 dereferenceable(12) %233)
  %235 = zext i1 %234 to i64
  call void @_ZN7glslang11TConstUnion11setI64ConstEx(ptr noundef nonnull align 8 dereferenceable(12) %232, i64 noundef %235)
  br label %730

236:                                              ; preds = %200
  %237 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %238 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %239 = call noundef zeroext i1 @_ZNK7glslang11TConstUnion9getBConstEv(ptr noundef nonnull align 8 dereferenceable(12) %238)
  %240 = zext i1 %239 to i8
  call void @_ZN7glslang11TConstUnion10setU8ConstEh(ptr noundef nonnull align 8 dereferenceable(12) %237, i8 noundef zeroext %240)
  br label %730

241:                                              ; preds = %200
  %242 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %243 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %244 = call noundef zeroext i1 @_ZNK7glslang11TConstUnion9getBConstEv(ptr noundef nonnull align 8 dereferenceable(12) %243)
  %245 = zext i1 %244 to i16
  call void @_ZN7glslang11TConstUnion11setU16ConstEt(ptr noundef nonnull align 8 dereferenceable(12) %242, i16 noundef zeroext %245)
  br label %730

246:                                              ; preds = %200
  %247 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %248 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %249 = call noundef zeroext i1 @_ZNK7glslang11TConstUnion9getBConstEv(ptr noundef nonnull align 8 dereferenceable(12) %248)
  %250 = zext i1 %249 to i32
  call void @_ZN7glslang11TConstUnion9setUConstEj(ptr noundef nonnull align 8 dereferenceable(12) %247, i32 noundef %250)
  br label %730

251:                                              ; preds = %200
  %252 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %253 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %254 = call noundef zeroext i1 @_ZNK7glslang11TConstUnion9getBConstEv(ptr noundef nonnull align 8 dereferenceable(12) %253)
  %255 = zext i1 %254 to i64
  call void @_ZN7glslang11TConstUnion11setU64ConstEy(ptr noundef nonnull align 8 dereferenceable(12) %252, i64 noundef %255)
  br label %730

256:                                              ; preds = %200
  %257 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %258 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %259 = call noundef zeroext i1 @_ZNK7glslang11TConstUnion9getBConstEv(ptr noundef nonnull align 8 dereferenceable(12) %258)
  call void @_ZN7glslang11TConstUnion9setBConstEb(ptr noundef nonnull align 8 dereferenceable(12) %257, i1 noundef zeroext %259)
  br label %730

260:                                              ; preds = %21
  switch i32 %1, label %.loopexit [
    i32 3, label %261
    i32 1, label %265
    i32 2, label %269
    i32 4, label %273
    i32 6, label %278
    i32 8, label %283
    i32 10, label %288
    i32 5, label %293
    i32 7, label %298
    i32 9, label %303
    i32 11, label %308
    i32 12, label %313
  ]

261:                                              ; preds = %260
  %262 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %263 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %264 = call noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %263)
  call void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %262, double noundef %264)
  br label %730

265:                                              ; preds = %260
  %266 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %267 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %268 = call noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %267)
  call void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %266, double noundef %268)
  br label %730

269:                                              ; preds = %260
  %270 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %271 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %272 = call noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %271)
  call void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %270, double noundef %272)
  br label %730

273:                                              ; preds = %260
  %274 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %275 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %276 = call noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %275)
  %277 = fptosi double %276 to i8
  call void @_ZN7glslang11TConstUnion10setI8ConstEa(ptr noundef nonnull align 8 dereferenceable(12) %274, i8 noundef signext %277)
  br label %730

278:                                              ; preds = %260
  %279 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %280 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %281 = call noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %280)
  %282 = fptosi double %281 to i16
  call void @_ZN7glslang11TConstUnion11setI16ConstEs(ptr noundef nonnull align 8 dereferenceable(12) %279, i16 noundef signext %282)
  br label %730

283:                                              ; preds = %260
  %284 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %285 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %286 = call noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %285)
  %287 = fptosi double %286 to i32
  call void @_ZN7glslang11TConstUnion9setIConstEi(ptr noundef nonnull align 8 dereferenceable(12) %284, i32 noundef %287)
  br label %730

288:                                              ; preds = %260
  %289 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %290 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %291 = call noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %290)
  %292 = fptosi double %291 to i64
  call void @_ZN7glslang11TConstUnion11setI64ConstEx(ptr noundef nonnull align 8 dereferenceable(12) %289, i64 noundef %292)
  br label %730

293:                                              ; preds = %260
  %294 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %295 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %296 = call noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %295)
  %297 = fptoui double %296 to i8
  call void @_ZN7glslang11TConstUnion10setU8ConstEh(ptr noundef nonnull align 8 dereferenceable(12) %294, i8 noundef zeroext %297)
  br label %730

298:                                              ; preds = %260
  %299 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %300 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %301 = call noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %300)
  %302 = fptoui double %301 to i16
  call void @_ZN7glslang11TConstUnion11setU16ConstEt(ptr noundef nonnull align 8 dereferenceable(12) %299, i16 noundef zeroext %302)
  br label %730

303:                                              ; preds = %260
  %304 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %305 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %306 = call noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %305)
  %307 = fptoui double %306 to i32
  call void @_ZN7glslang11TConstUnion9setUConstEj(ptr noundef nonnull align 8 dereferenceable(12) %304, i32 noundef %307)
  br label %730

308:                                              ; preds = %260
  %309 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %310 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %311 = call noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %310)
  %312 = fptoui double %311 to i64
  call void @_ZN7glslang11TConstUnion11setU64ConstEy(ptr noundef nonnull align 8 dereferenceable(12) %309, i64 noundef %312)
  br label %730

313:                                              ; preds = %260
  %314 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %315 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %316 = call noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %315)
  %317 = fcmp une double %316, 0.000000e+00
  call void @_ZN7glslang11TConstUnion9setBConstEb(ptr noundef nonnull align 8 dereferenceable(12) %314, i1 noundef zeroext %317)
  br label %730

318:                                              ; preds = %21
  switch i32 %1, label %.loopexit [
    i32 3, label %319
    i32 1, label %323
    i32 2, label %327
    i32 4, label %331
    i32 6, label %336
    i32 8, label %341
    i32 10, label %346
    i32 5, label %351
    i32 7, label %356
    i32 9, label %361
    i32 11, label %366
    i32 12, label %371
  ]

319:                                              ; preds = %318
  %320 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %321 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %322 = call noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %321)
  call void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %320, double noundef %322)
  br label %730

323:                                              ; preds = %318
  %324 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %325 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %326 = call noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %325)
  call void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %324, double noundef %326)
  br label %730

327:                                              ; preds = %318
  %328 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %329 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %330 = call noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %329)
  call void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %328, double noundef %330)
  br label %730

331:                                              ; preds = %318
  %332 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %333 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %334 = call noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %333)
  %335 = fptosi double %334 to i8
  call void @_ZN7glslang11TConstUnion10setI8ConstEa(ptr noundef nonnull align 8 dereferenceable(12) %332, i8 noundef signext %335)
  br label %730

336:                                              ; preds = %318
  %337 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %338 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %339 = call noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %338)
  %340 = fptosi double %339 to i16
  call void @_ZN7glslang11TConstUnion11setI16ConstEs(ptr noundef nonnull align 8 dereferenceable(12) %337, i16 noundef signext %340)
  br label %730

341:                                              ; preds = %318
  %342 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %343 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %344 = call noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %343)
  %345 = fptosi double %344 to i32
  call void @_ZN7glslang11TConstUnion9setIConstEi(ptr noundef nonnull align 8 dereferenceable(12) %342, i32 noundef %345)
  br label %730

346:                                              ; preds = %318
  %347 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %348 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %349 = call noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %348)
  %350 = fptosi double %349 to i64
  call void @_ZN7glslang11TConstUnion11setI64ConstEx(ptr noundef nonnull align 8 dereferenceable(12) %347, i64 noundef %350)
  br label %730

351:                                              ; preds = %318
  %352 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %353 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %354 = call noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %353)
  %355 = fptoui double %354 to i8
  call void @_ZN7glslang11TConstUnion10setU8ConstEh(ptr noundef nonnull align 8 dereferenceable(12) %352, i8 noundef zeroext %355)
  br label %730

356:                                              ; preds = %318
  %357 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %358 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %359 = call noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %358)
  %360 = fptoui double %359 to i16
  call void @_ZN7glslang11TConstUnion11setU16ConstEt(ptr noundef nonnull align 8 dereferenceable(12) %357, i16 noundef zeroext %360)
  br label %730

361:                                              ; preds = %318
  %362 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %363 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %364 = call noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %363)
  %365 = fptoui double %364 to i32
  call void @_ZN7glslang11TConstUnion9setUConstEj(ptr noundef nonnull align 8 dereferenceable(12) %362, i32 noundef %365)
  br label %730

366:                                              ; preds = %318
  %367 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %368 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %369 = call noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %368)
  %370 = fptoui double %369 to i64
  call void @_ZN7glslang11TConstUnion11setU64ConstEy(ptr noundef nonnull align 8 dereferenceable(12) %367, i64 noundef %370)
  br label %730

371:                                              ; preds = %318
  %372 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %373 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %374 = call noundef double @_ZNK7glslang11TConstUnion9getDConstEv(ptr noundef nonnull align 8 dereferenceable(12) %373)
  %375 = fcmp une double %374, 0.000000e+00
  call void @_ZN7glslang11TConstUnion9setBConstEb(ptr noundef nonnull align 8 dereferenceable(12) %372, i1 noundef zeroext %375)
  br label %730

376:                                              ; preds = %21
  switch i32 %1, label %.loopexit [
    i32 3, label %377
    i32 1, label %382
    i32 2, label %387
    i32 4, label %392
    i32 6, label %396
    i32 8, label %401
    i32 10, label %406
    i32 5, label %411
    i32 7, label %415
    i32 9, label %420
    i32 11, label %425
    i32 12, label %430
  ]

377:                                              ; preds = %376
  %378 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %379 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %380 = call noundef signext i8 @_ZNK7glslang11TConstUnion10getI8ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %379)
  %381 = sitofp i8 %380 to double
  call void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %378, double noundef %381)
  br label %730

382:                                              ; preds = %376
  %383 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %384 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %385 = call noundef signext i8 @_ZNK7glslang11TConstUnion10getI8ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %384)
  %386 = sitofp i8 %385 to double
  call void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %383, double noundef %386)
  br label %730

387:                                              ; preds = %376
  %388 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %389 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %390 = call noundef signext i8 @_ZNK7glslang11TConstUnion10getI8ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %389)
  %391 = sitofp i8 %390 to double
  call void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %388, double noundef %391)
  br label %730

392:                                              ; preds = %376
  %393 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %394 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %395 = call noundef signext i8 @_ZNK7glslang11TConstUnion10getI8ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %394)
  call void @_ZN7glslang11TConstUnion10setI8ConstEa(ptr noundef nonnull align 8 dereferenceable(12) %393, i8 noundef signext %395)
  br label %730

396:                                              ; preds = %376
  %397 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %398 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %399 = call noundef signext i8 @_ZNK7glslang11TConstUnion10getI8ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %398)
  %400 = sext i8 %399 to i16
  call void @_ZN7glslang11TConstUnion11setI16ConstEs(ptr noundef nonnull align 8 dereferenceable(12) %397, i16 noundef signext %400)
  br label %730

401:                                              ; preds = %376
  %402 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %403 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %404 = call noundef signext i8 @_ZNK7glslang11TConstUnion10getI8ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %403)
  %405 = sext i8 %404 to i32
  call void @_ZN7glslang11TConstUnion9setIConstEi(ptr noundef nonnull align 8 dereferenceable(12) %402, i32 noundef %405)
  br label %730

406:                                              ; preds = %376
  %407 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %408 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %409 = call noundef signext i8 @_ZNK7glslang11TConstUnion10getI8ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %408)
  %410 = sext i8 %409 to i64
  call void @_ZN7glslang11TConstUnion11setI64ConstEx(ptr noundef nonnull align 8 dereferenceable(12) %407, i64 noundef %410)
  br label %730

411:                                              ; preds = %376
  %412 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %413 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %414 = call noundef signext i8 @_ZNK7glslang11TConstUnion10getI8ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %413)
  call void @_ZN7glslang11TConstUnion10setU8ConstEh(ptr noundef nonnull align 8 dereferenceable(12) %412, i8 noundef zeroext %414)
  br label %730

415:                                              ; preds = %376
  %416 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %417 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %418 = call noundef signext i8 @_ZNK7glslang11TConstUnion10getI8ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %417)
  %419 = sext i8 %418 to i16
  call void @_ZN7glslang11TConstUnion11setU16ConstEt(ptr noundef nonnull align 8 dereferenceable(12) %416, i16 noundef zeroext %419)
  br label %730

420:                                              ; preds = %376
  %421 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %422 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %423 = call noundef signext i8 @_ZNK7glslang11TConstUnion10getI8ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %422)
  %424 = sext i8 %423 to i32
  call void @_ZN7glslang11TConstUnion9setUConstEj(ptr noundef nonnull align 8 dereferenceable(12) %421, i32 noundef %424)
  br label %730

425:                                              ; preds = %376
  %426 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %427 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %428 = call noundef signext i8 @_ZNK7glslang11TConstUnion10getI8ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %427)
  %429 = sext i8 %428 to i64
  call void @_ZN7glslang11TConstUnion11setU64ConstEy(ptr noundef nonnull align 8 dereferenceable(12) %426, i64 noundef %429)
  br label %730

430:                                              ; preds = %376
  %431 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %432 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %433 = call noundef signext i8 @_ZNK7glslang11TConstUnion10getI8ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %432)
  %434 = icmp ne i8 %433, 0
  call void @_ZN7glslang11TConstUnion9setBConstEb(ptr noundef nonnull align 8 dereferenceable(12) %431, i1 noundef zeroext %434)
  br label %730

435:                                              ; preds = %21
  switch i32 %1, label %.loopexit [
    i32 3, label %436
    i32 1, label %441
    i32 2, label %446
    i32 4, label %451
    i32 6, label %456
    i32 8, label %460
    i32 10, label %465
    i32 5, label %470
    i32 7, label %475
    i32 9, label %479
    i32 11, label %484
    i32 12, label %489
  ]

436:                                              ; preds = %435
  %437 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %438 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %439 = call noundef signext i16 @_ZNK7glslang11TConstUnion11getI16ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %438)
  %440 = sitofp i16 %439 to double
  call void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %437, double noundef %440)
  br label %730

441:                                              ; preds = %435
  %442 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %443 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %444 = call noundef signext i16 @_ZNK7glslang11TConstUnion11getI16ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %443)
  %445 = sitofp i16 %444 to double
  call void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %442, double noundef %445)
  br label %730

446:                                              ; preds = %435
  %447 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %448 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %449 = call noundef signext i16 @_ZNK7glslang11TConstUnion11getI16ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %448)
  %450 = sitofp i16 %449 to double
  call void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %447, double noundef %450)
  br label %730

451:                                              ; preds = %435
  %452 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %453 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %454 = call noundef signext i16 @_ZNK7glslang11TConstUnion11getI16ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %453)
  %455 = trunc i16 %454 to i8
  call void @_ZN7glslang11TConstUnion10setI8ConstEa(ptr noundef nonnull align 8 dereferenceable(12) %452, i8 noundef signext %455)
  br label %730

456:                                              ; preds = %435
  %457 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %458 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %459 = call noundef signext i16 @_ZNK7glslang11TConstUnion11getI16ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %458)
  call void @_ZN7glslang11TConstUnion11setI16ConstEs(ptr noundef nonnull align 8 dereferenceable(12) %457, i16 noundef signext %459)
  br label %730

460:                                              ; preds = %435
  %461 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %462 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %463 = call noundef signext i16 @_ZNK7glslang11TConstUnion11getI16ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %462)
  %464 = sext i16 %463 to i32
  call void @_ZN7glslang11TConstUnion9setIConstEi(ptr noundef nonnull align 8 dereferenceable(12) %461, i32 noundef %464)
  br label %730

465:                                              ; preds = %435
  %466 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %467 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %468 = call noundef signext i16 @_ZNK7glslang11TConstUnion11getI16ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %467)
  %469 = sext i16 %468 to i64
  call void @_ZN7glslang11TConstUnion11setI64ConstEx(ptr noundef nonnull align 8 dereferenceable(12) %466, i64 noundef %469)
  br label %730

470:                                              ; preds = %435
  %471 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %472 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %473 = call noundef signext i16 @_ZNK7glslang11TConstUnion11getI16ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %472)
  %474 = trunc i16 %473 to i8
  call void @_ZN7glslang11TConstUnion10setU8ConstEh(ptr noundef nonnull align 8 dereferenceable(12) %471, i8 noundef zeroext %474)
  br label %730

475:                                              ; preds = %435
  %476 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %477 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %478 = call noundef signext i16 @_ZNK7glslang11TConstUnion11getI16ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %477)
  call void @_ZN7glslang11TConstUnion11setU16ConstEt(ptr noundef nonnull align 8 dereferenceable(12) %476, i16 noundef zeroext %478)
  br label %730

479:                                              ; preds = %435
  %480 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %481 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %482 = call noundef signext i16 @_ZNK7glslang11TConstUnion11getI16ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %481)
  %483 = sext i16 %482 to i32
  call void @_ZN7glslang11TConstUnion9setUConstEj(ptr noundef nonnull align 8 dereferenceable(12) %480, i32 noundef %483)
  br label %730

484:                                              ; preds = %435
  %485 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %486 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %487 = call noundef signext i16 @_ZNK7glslang11TConstUnion11getI16ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %486)
  %488 = sext i16 %487 to i64
  call void @_ZN7glslang11TConstUnion11setU64ConstEy(ptr noundef nonnull align 8 dereferenceable(12) %485, i64 noundef %488)
  br label %730

489:                                              ; preds = %435
  %490 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %491 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %492 = call noundef signext i16 @_ZNK7glslang11TConstUnion11getI16ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %491)
  %493 = icmp ne i16 %492, 0
  call void @_ZN7glslang11TConstUnion9setBConstEb(ptr noundef nonnull align 8 dereferenceable(12) %490, i1 noundef zeroext %493)
  br label %730

494:                                              ; preds = %21
  switch i32 %1, label %.loopexit [
    i32 3, label %495
    i32 1, label %500
    i32 2, label %505
    i32 4, label %510
    i32 6, label %515
    i32 8, label %520
    i32 10, label %525
    i32 5, label %529
    i32 7, label %534
    i32 9, label %539
    i32 11, label %544
    i32 12, label %548
  ]

495:                                              ; preds = %494
  %496 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %497 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %498 = call noundef i64 @_ZNK7glslang11TConstUnion11getI64ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %497)
  %499 = sitofp i64 %498 to double
  call void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %496, double noundef %499)
  br label %730

500:                                              ; preds = %494
  %501 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %502 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %503 = call noundef i64 @_ZNK7glslang11TConstUnion11getI64ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %502)
  %504 = sitofp i64 %503 to double
  call void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %501, double noundef %504)
  br label %730

505:                                              ; preds = %494
  %506 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %507 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %508 = call noundef i64 @_ZNK7glslang11TConstUnion11getI64ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %507)
  %509 = sitofp i64 %508 to double
  call void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %506, double noundef %509)
  br label %730

510:                                              ; preds = %494
  %511 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %512 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %513 = call noundef i64 @_ZNK7glslang11TConstUnion11getI64ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %512)
  %514 = trunc i64 %513 to i8
  call void @_ZN7glslang11TConstUnion10setI8ConstEa(ptr noundef nonnull align 8 dereferenceable(12) %511, i8 noundef signext %514)
  br label %730

515:                                              ; preds = %494
  %516 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %517 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %518 = call noundef i64 @_ZNK7glslang11TConstUnion11getI64ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %517)
  %519 = trunc i64 %518 to i16
  call void @_ZN7glslang11TConstUnion11setI16ConstEs(ptr noundef nonnull align 8 dereferenceable(12) %516, i16 noundef signext %519)
  br label %730

520:                                              ; preds = %494
  %521 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %522 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %523 = call noundef i64 @_ZNK7glslang11TConstUnion11getI64ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %522)
  %524 = trunc i64 %523 to i32
  call void @_ZN7glslang11TConstUnion9setIConstEi(ptr noundef nonnull align 8 dereferenceable(12) %521, i32 noundef %524)
  br label %730

525:                                              ; preds = %494
  %526 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %527 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %528 = call noundef i64 @_ZNK7glslang11TConstUnion11getI64ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %527)
  call void @_ZN7glslang11TConstUnion11setI64ConstEx(ptr noundef nonnull align 8 dereferenceable(12) %526, i64 noundef %528)
  br label %730

529:                                              ; preds = %494
  %530 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %531 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %532 = call noundef i64 @_ZNK7glslang11TConstUnion11getI64ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %531)
  %533 = trunc i64 %532 to i8
  call void @_ZN7glslang11TConstUnion10setU8ConstEh(ptr noundef nonnull align 8 dereferenceable(12) %530, i8 noundef zeroext %533)
  br label %730

534:                                              ; preds = %494
  %535 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %536 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %537 = call noundef i64 @_ZNK7glslang11TConstUnion11getI64ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %536)
  %538 = trunc i64 %537 to i16
  call void @_ZN7glslang11TConstUnion11setU16ConstEt(ptr noundef nonnull align 8 dereferenceable(12) %535, i16 noundef zeroext %538)
  br label %730

539:                                              ; preds = %494
  %540 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %541 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %542 = call noundef i64 @_ZNK7glslang11TConstUnion11getI64ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %541)
  %543 = trunc i64 %542 to i32
  call void @_ZN7glslang11TConstUnion9setUConstEj(ptr noundef nonnull align 8 dereferenceable(12) %540, i32 noundef %543)
  br label %730

544:                                              ; preds = %494
  %545 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %546 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %547 = call noundef i64 @_ZNK7glslang11TConstUnion11getI64ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %546)
  call void @_ZN7glslang11TConstUnion11setU64ConstEy(ptr noundef nonnull align 8 dereferenceable(12) %545, i64 noundef %547)
  br label %730

548:                                              ; preds = %494
  %549 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %550 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %551 = call noundef i64 @_ZNK7glslang11TConstUnion11getI64ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %550)
  %552 = icmp ne i64 %551, 0
  call void @_ZN7glslang11TConstUnion9setBConstEb(ptr noundef nonnull align 8 dereferenceable(12) %549, i1 noundef zeroext %552)
  br label %730

553:                                              ; preds = %21
  switch i32 %1, label %.loopexit [
    i32 3, label %554
    i32 1, label %559
    i32 2, label %564
    i32 4, label %569
    i32 6, label %573
    i32 8, label %578
    i32 10, label %583
    i32 5, label %588
    i32 7, label %592
    i32 9, label %597
    i32 11, label %602
    i32 12, label %607
  ]

554:                                              ; preds = %553
  %555 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %556 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %557 = call noundef zeroext i8 @_ZNK7glslang11TConstUnion10getU8ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %556)
  %558 = uitofp i8 %557 to double
  call void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %555, double noundef %558)
  br label %730

559:                                              ; preds = %553
  %560 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %561 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %562 = call noundef zeroext i8 @_ZNK7glslang11TConstUnion10getU8ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %561)
  %563 = uitofp i8 %562 to double
  call void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %560, double noundef %563)
  br label %730

564:                                              ; preds = %553
  %565 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %566 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %567 = call noundef zeroext i8 @_ZNK7glslang11TConstUnion10getU8ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %566)
  %568 = uitofp i8 %567 to double
  call void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %565, double noundef %568)
  br label %730

569:                                              ; preds = %553
  %570 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %571 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %572 = call noundef zeroext i8 @_ZNK7glslang11TConstUnion10getU8ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %571)
  call void @_ZN7glslang11TConstUnion10setI8ConstEa(ptr noundef nonnull align 8 dereferenceable(12) %570, i8 noundef signext %572)
  br label %730

573:                                              ; preds = %553
  %574 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %575 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %576 = call noundef zeroext i8 @_ZNK7glslang11TConstUnion10getU8ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %575)
  %577 = zext i8 %576 to i16
  call void @_ZN7glslang11TConstUnion11setI16ConstEs(ptr noundef nonnull align 8 dereferenceable(12) %574, i16 noundef signext %577)
  br label %730

578:                                              ; preds = %553
  %579 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %580 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %581 = call noundef zeroext i8 @_ZNK7glslang11TConstUnion10getU8ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %580)
  %582 = zext i8 %581 to i32
  call void @_ZN7glslang11TConstUnion9setIConstEi(ptr noundef nonnull align 8 dereferenceable(12) %579, i32 noundef %582)
  br label %730

583:                                              ; preds = %553
  %584 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %585 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %586 = call noundef zeroext i8 @_ZNK7glslang11TConstUnion10getU8ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %585)
  %587 = zext i8 %586 to i64
  call void @_ZN7glslang11TConstUnion11setI64ConstEx(ptr noundef nonnull align 8 dereferenceable(12) %584, i64 noundef %587)
  br label %730

588:                                              ; preds = %553
  %589 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %590 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %591 = call noundef zeroext i8 @_ZNK7glslang11TConstUnion10getU8ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %590)
  call void @_ZN7glslang11TConstUnion10setU8ConstEh(ptr noundef nonnull align 8 dereferenceable(12) %589, i8 noundef zeroext %591)
  br label %730

592:                                              ; preds = %553
  %593 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %594 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %595 = call noundef zeroext i8 @_ZNK7glslang11TConstUnion10getU8ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %594)
  %596 = zext i8 %595 to i16
  call void @_ZN7glslang11TConstUnion11setU16ConstEt(ptr noundef nonnull align 8 dereferenceable(12) %593, i16 noundef zeroext %596)
  br label %730

597:                                              ; preds = %553
  %598 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %599 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %600 = call noundef zeroext i8 @_ZNK7glslang11TConstUnion10getU8ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %599)
  %601 = zext i8 %600 to i32
  call void @_ZN7glslang11TConstUnion9setUConstEj(ptr noundef nonnull align 8 dereferenceable(12) %598, i32 noundef %601)
  br label %730

602:                                              ; preds = %553
  %603 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %604 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %605 = call noundef zeroext i8 @_ZNK7glslang11TConstUnion10getU8ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %604)
  %606 = zext i8 %605 to i64
  call void @_ZN7glslang11TConstUnion11setU64ConstEy(ptr noundef nonnull align 8 dereferenceable(12) %603, i64 noundef %606)
  br label %730

607:                                              ; preds = %553
  %608 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %609 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %610 = call noundef zeroext i8 @_ZNK7glslang11TConstUnion10getU8ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %609)
  %611 = icmp ne i8 %610, 0
  call void @_ZN7glslang11TConstUnion9setBConstEb(ptr noundef nonnull align 8 dereferenceable(12) %608, i1 noundef zeroext %611)
  br label %730

612:                                              ; preds = %21
  switch i32 %1, label %.loopexit [
    i32 3, label %613
    i32 1, label %618
    i32 2, label %623
    i32 4, label %628
    i32 6, label %633
    i32 8, label %637
    i32 10, label %642
    i32 5, label %647
    i32 7, label %652
    i32 9, label %656
    i32 11, label %661
    i32 12, label %666
  ]

613:                                              ; preds = %612
  %614 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %615 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %616 = call noundef zeroext i16 @_ZNK7glslang11TConstUnion11getU16ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %615)
  %617 = uitofp i16 %616 to double
  call void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %614, double noundef %617)
  br label %730

618:                                              ; preds = %612
  %619 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %620 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %621 = call noundef zeroext i16 @_ZNK7glslang11TConstUnion11getU16ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %620)
  %622 = uitofp i16 %621 to double
  call void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %619, double noundef %622)
  br label %730

623:                                              ; preds = %612
  %624 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %625 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %626 = call noundef zeroext i16 @_ZNK7glslang11TConstUnion11getU16ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %625)
  %627 = uitofp i16 %626 to double
  call void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %624, double noundef %627)
  br label %730

628:                                              ; preds = %612
  %629 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %630 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %631 = call noundef zeroext i16 @_ZNK7glslang11TConstUnion11getU16ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %630)
  %632 = trunc i16 %631 to i8
  call void @_ZN7glslang11TConstUnion10setI8ConstEa(ptr noundef nonnull align 8 dereferenceable(12) %629, i8 noundef signext %632)
  br label %730

633:                                              ; preds = %612
  %634 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %635 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %636 = call noundef zeroext i16 @_ZNK7glslang11TConstUnion11getU16ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %635)
  call void @_ZN7glslang11TConstUnion11setI16ConstEs(ptr noundef nonnull align 8 dereferenceable(12) %634, i16 noundef signext %636)
  br label %730

637:                                              ; preds = %612
  %638 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %639 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %640 = call noundef zeroext i16 @_ZNK7glslang11TConstUnion11getU16ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %639)
  %641 = zext i16 %640 to i32
  call void @_ZN7glslang11TConstUnion9setIConstEi(ptr noundef nonnull align 8 dereferenceable(12) %638, i32 noundef %641)
  br label %730

642:                                              ; preds = %612
  %643 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %644 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %645 = call noundef zeroext i16 @_ZNK7glslang11TConstUnion11getU16ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %644)
  %646 = zext i16 %645 to i64
  call void @_ZN7glslang11TConstUnion11setI64ConstEx(ptr noundef nonnull align 8 dereferenceable(12) %643, i64 noundef %646)
  br label %730

647:                                              ; preds = %612
  %648 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %649 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %650 = call noundef zeroext i16 @_ZNK7glslang11TConstUnion11getU16ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %649)
  %651 = trunc i16 %650 to i8
  call void @_ZN7glslang11TConstUnion10setU8ConstEh(ptr noundef nonnull align 8 dereferenceable(12) %648, i8 noundef zeroext %651)
  br label %730

652:                                              ; preds = %612
  %653 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %654 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %655 = call noundef zeroext i16 @_ZNK7glslang11TConstUnion11getU16ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %654)
  call void @_ZN7glslang11TConstUnion11setU16ConstEt(ptr noundef nonnull align 8 dereferenceable(12) %653, i16 noundef zeroext %655)
  br label %730

656:                                              ; preds = %612
  %657 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %658 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %659 = call noundef zeroext i16 @_ZNK7glslang11TConstUnion11getU16ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %658)
  %660 = zext i16 %659 to i32
  call void @_ZN7glslang11TConstUnion9setUConstEj(ptr noundef nonnull align 8 dereferenceable(12) %657, i32 noundef %660)
  br label %730

661:                                              ; preds = %612
  %662 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %663 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %664 = call noundef zeroext i16 @_ZNK7glslang11TConstUnion11getU16ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %663)
  %665 = zext i16 %664 to i64
  call void @_ZN7glslang11TConstUnion11setU64ConstEy(ptr noundef nonnull align 8 dereferenceable(12) %662, i64 noundef %665)
  br label %730

666:                                              ; preds = %612
  %667 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %668 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %669 = call noundef zeroext i16 @_ZNK7glslang11TConstUnion11getU16ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %668)
  %670 = icmp ne i16 %669, 0
  call void @_ZN7glslang11TConstUnion9setBConstEb(ptr noundef nonnull align 8 dereferenceable(12) %667, i1 noundef zeroext %670)
  br label %730

671:                                              ; preds = %21
  switch i32 %1, label %.loopexit [
    i32 3, label %672
    i32 1, label %677
    i32 2, label %682
    i32 4, label %687
    i32 6, label %692
    i32 8, label %697
    i32 10, label %702
    i32 5, label %706
    i32 7, label %711
    i32 9, label %716
    i32 11, label %721
    i32 12, label %725
  ]

672:                                              ; preds = %671
  %673 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %674 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %675 = call noundef i64 @_ZNK7glslang11TConstUnion11getU64ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %674)
  %676 = uitofp i64 %675 to double
  call void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %673, double noundef %676)
  br label %730

677:                                              ; preds = %671
  %678 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %679 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %680 = call noundef i64 @_ZNK7glslang11TConstUnion11getU64ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %679)
  %681 = uitofp i64 %680 to double
  call void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %678, double noundef %681)
  br label %730

682:                                              ; preds = %671
  %683 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %684 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %685 = call noundef i64 @_ZNK7glslang11TConstUnion11getU64ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %684)
  %686 = uitofp i64 %685 to double
  call void @_ZN7glslang11TConstUnion9setDConstEd(ptr noundef nonnull align 8 dereferenceable(12) %683, double noundef %686)
  br label %730

687:                                              ; preds = %671
  %688 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %689 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %690 = call noundef i64 @_ZNK7glslang11TConstUnion11getU64ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %689)
  %691 = trunc i64 %690 to i8
  call void @_ZN7glslang11TConstUnion10setI8ConstEa(ptr noundef nonnull align 8 dereferenceable(12) %688, i8 noundef signext %691)
  br label %730

692:                                              ; preds = %671
  %693 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %694 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %695 = call noundef i64 @_ZNK7glslang11TConstUnion11getU64ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %694)
  %696 = trunc i64 %695 to i16
  call void @_ZN7glslang11TConstUnion11setI16ConstEs(ptr noundef nonnull align 8 dereferenceable(12) %693, i16 noundef signext %696)
  br label %730

697:                                              ; preds = %671
  %698 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %699 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %700 = call noundef i64 @_ZNK7glslang11TConstUnion11getU64ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %699)
  %701 = trunc i64 %700 to i32
  call void @_ZN7glslang11TConstUnion9setIConstEi(ptr noundef nonnull align 8 dereferenceable(12) %698, i32 noundef %701)
  br label %730

702:                                              ; preds = %671
  %703 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %704 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %705 = call noundef i64 @_ZNK7glslang11TConstUnion11getU64ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %704)
  call void @_ZN7glslang11TConstUnion11setI64ConstEx(ptr noundef nonnull align 8 dereferenceable(12) %703, i64 noundef %705)
  br label %730

706:                                              ; preds = %671
  %707 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %708 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %709 = call noundef i64 @_ZNK7glslang11TConstUnion11getU64ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %708)
  %710 = trunc i64 %709 to i8
  call void @_ZN7glslang11TConstUnion10setU8ConstEh(ptr noundef nonnull align 8 dereferenceable(12) %707, i8 noundef zeroext %710)
  br label %730

711:                                              ; preds = %671
  %712 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %713 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %714 = call noundef i64 @_ZNK7glslang11TConstUnion11getU64ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %713)
  %715 = trunc i64 %714 to i16
  call void @_ZN7glslang11TConstUnion11setU16ConstEt(ptr noundef nonnull align 8 dereferenceable(12) %712, i16 noundef zeroext %715)
  br label %730

716:                                              ; preds = %671
  %717 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %718 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %719 = call noundef i64 @_ZNK7glslang11TConstUnion11getU64ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %718)
  %720 = trunc i64 %719 to i32
  call void @_ZN7glslang11TConstUnion9setUConstEj(ptr noundef nonnull align 8 dereferenceable(12) %717, i32 noundef %720)
  br label %730

721:                                              ; preds = %671
  %722 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %723 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %724 = call noundef i64 @_ZNK7glslang11TConstUnion11getU64ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %723)
  call void @_ZN7glslang11TConstUnion11setU64ConstEy(ptr noundef nonnull align 8 dereferenceable(12) %722, i64 noundef %724)
  br label %730

725:                                              ; preds = %671
  %726 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef %indvars.iv)
  %727 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK7glslang16TConstUnionArrayixEm(ptr noundef nonnull align 8 dereferenceable(16) %6, i64 noundef %indvars.iv)
  %728 = call noundef i64 @_ZNK7glslang11TConstUnion11getU64ConstEv(ptr noundef nonnull align 8 dereferenceable(12) %727)
  %729 = icmp ne i64 %728, 0
  call void @_ZN7glslang11TConstUnion9setBConstEb(ptr noundef nonnull align 8 dereferenceable(12) %726, i1 noundef zeroext %729)
  br label %730

730:                                              ; preds = %77, %72, %67, %62, %57, %52, %47, %42, %37, %33, %29, %25, %136, %131, %127, %122, %117, %112, %108, %103, %98, %93, %88, %83, %195, %190, %186, %181, %176, %171, %167, %162, %157, %152, %147, %142, %256, %251, %246, %241, %236, %231, %226, %221, %216, %211, %206, %201, %313, %308, %303, %298, %293, %288, %283, %278, %273, %269, %265, %261, %371, %366, %361, %356, %351, %346, %341, %336, %331, %327, %323, %319, %430, %425, %420, %415, %411, %406, %401, %396, %392, %387, %382, %377, %489, %484, %479, %475, %470, %465, %460, %456, %451, %446, %441, %436, %548, %544, %539, %534, %529, %525, %520, %515, %510, %505, %500, %495, %607, %602, %597, %592, %588, %583, %578, %573, %569, %564, %559, %554, %666, %661, %656, %652, %647, %642, %637, %633, %628, %623, %618, %613, %725, %721, %716, %711, %706, %702, %697, %692, %687, %682, %677, %672
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %.critedge, label %.lr.ph, !llvm.loop !8

.critedge:                                        ; preds = %730, %3
  %731 = load ptr, ptr %2, align 8, !tbaa !5
  %732 = getelementptr inbounds i8, ptr %731, i64 240
  %733 = load ptr, ptr %732, align 8
  %734 = invoke noundef nonnull align 8 dereferenceable(144) ptr %733(ptr noundef nonnull align 8 dereferenceable(176) %2)
          to label %735 unwind label %767

735:                                              ; preds = %.critedge
  call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %5) #3
  %736 = load ptr, ptr %734, align 8, !tbaa !5
  %737 = getelementptr inbounds i8, ptr %736, i64 88
  %738 = load ptr, ptr %737, align 8
  %739 = invoke noundef nonnull align 8 dereferenceable(72) ptr %738(ptr noundef nonnull align 8 dereferenceable(144) %734)
          to label %740 unwind label %769

740:                                              ; preds = %735
  %741 = getelementptr inbounds i8, ptr %739, i64 8
  %742 = load i64, ptr %741, align 8
  %743 = trunc i64 %742 to i32
  %744 = and i32 %743, 63
  %745 = load ptr, ptr %734, align 8, !tbaa !5
  %746 = getelementptr inbounds i8, ptr %745, i64 96
  %747 = load ptr, ptr %746, align 8
  %748 = invoke noundef i32 %747(ptr noundef nonnull align 8 dereferenceable(144) %734)
          to label %749 unwind label %769

749:                                              ; preds = %740
  %750 = load ptr, ptr %734, align 8, !tbaa !5
  %751 = getelementptr inbounds i8, ptr %750, i64 104
  %752 = load ptr, ptr %751, align 8
  %753 = invoke noundef i32 %752(ptr noundef nonnull align 8 dereferenceable(144) %734)
          to label %754 unwind label %769

754:                                              ; preds = %749
  %755 = load ptr, ptr %734, align 8, !tbaa !5
  %756 = getelementptr inbounds i8, ptr %755, i64 112
  %757 = load ptr, ptr %756, align 8
  %758 = invoke noundef i32 %757(ptr noundef nonnull align 8 dereferenceable(144) %734)
          to label %759 unwind label %769

759:                                              ; preds = %754
  invoke void @_ZN7glslang5TTypeC2ENS_10TBasicTypeENS_17TStorageQualifierEiiib(ptr noundef nonnull align 8 dereferenceable(144) %5, i32 noundef %1, i32 noundef %744, i32 noundef %748, i32 noundef %753, i32 noundef %758, i1 noundef zeroext false)
          to label %760 unwind label %769

760:                                              ; preds = %759
  %761 = load ptr, ptr %2, align 8, !tbaa !5
  %762 = load ptr, ptr %761, align 8
  %763 = invoke noundef nonnull align 8 dereferenceable(24) ptr %762(ptr noundef nonnull align 8 dereferenceable(32) %2)
          to label %764 unwind label %771

764:                                              ; preds = %760
  %765 = invoke noundef ptr @_ZNK7glslang13TIntermediate16addConstantUnionERKNS_16TConstUnionArrayERKNS_5TTypeERKNS_10TSourceLocEb(ptr noundef nonnull align 8 dereferenceable(1784) %0, ptr noundef nonnull align 8 dereferenceable(16) %4, ptr noundef nonnull align 8 dereferenceable(144) %5, ptr noundef nonnull align 8 dereferenceable(24) %763, i1 noundef zeroext false)
          to label %766 unwind label %771

766:                                              ; preds = %764
  call void @_ZN7glslang5TTypeD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %5) #3
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %5) #3
  br label %.loopexit

767:                                              ; preds = %.critedge
  %768 = landingpad { ptr, i32 }
          cleanup
  br label %774

769:                                              ; preds = %759, %754, %749, %740, %735
  %770 = landingpad { ptr, i32 }
          cleanup
  br label %773

771:                                              ; preds = %764, %760
  %772 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7glslang5TTypeD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %5) #3
  br label %773

773:                                              ; preds = %771, %769
  %.pn = phi { ptr, i32 } [ %772, %771 ], [ %770, %769 ]
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %5) #3
  br label %774

.loopexit:                                        ; preds = %24, %82, %141, %200, %260, %318, %376, %435, %494, %553, %612, %671, %21, %766
  %.1 = phi ptr [ %765, %766 ], [ %2, %21 ], [ %2, %671 ], [ %2, %612 ], [ %2, %553 ], [ %2, %494 ], [ %2, %435 ], [ %2, %376 ], [ %2, %318 ], [ %2, %260 ], [ %2, %200 ], [ %2, %141 ], [ %2, %82 ], [ %2, %24 ]
  call void @_ZN7glslang16TConstUnionArrayD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %4) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #3
  ret ptr %.1

774:                                              ; preds = %767, %773, %22
  %.pn.pn.pn = phi { ptr, i32 } [ %23, %22 ], [ %.pn, %773 ], [ %768, %767 ]
  call void @_ZN7glslang16TConstUnionArrayD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %4) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %4) #3
  resume { ptr, i32 } %.pn.pn.pn
}

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZNK7glslang13TIntermediate16addConstantUnionERKNS_16TConstUnionArrayERKNS_5TTypeERKNS_10TSourceLocEb(ptr noundef nonnull align 8 dereferenceable(1784), ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(144), ptr noundef nonnull align 8 dereferenceable(24), i1 noundef zeroext) local_unnamed_addr #2 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNK7glslang11TConstUnion11getU64ConstEv(ptr noundef nonnull align 8 dereferenceable(12)) local_unnamed_addr #1 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 }

!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 = !{!"vtable pointer", !7, i64 0}
!7 = !{!"Simple C++ TBAA"}
!8 = distinct !{!8, !9}
!9 = !{!"llvm.loop.mustprogress"}


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