; LLVM IR from hbatagelo/abcg :: abcg/external/glslang/glslang/HLSL (hlslParseables)

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

%struct.anon = type { ptr, ptr, ptr, ptr, ptr, i32, i8 }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>::_Alloc_hider" = type { %"class.glslang::pool_allocator", ptr }
%"class.glslang::pool_allocator" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.glslang::TBuiltInParseables" = type { ptr, %"class.std::__cxx11::basic_string", [14 x %"class.std::__cxx11::basic_string"] }

@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [4 x i8], align 1
@_ZZN7glslang22TBuiltInParseablesHlsl10initializeEi8EProfileRKNS_10SpvVersionEE14hlslIntrinsics = external hidden constant [302 x %struct.anon], align 16
@.str.15 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.352 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.353 = external hidden unnamed_addr constant [1 x i8], align 1

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7glslang22TBuiltInParseablesHlsl17createMatTimesMatEv(ptr noundef nonnull align 8 dereferenceable(608)) #0 align 2

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

; Function Attrs: mustprogress uwtable
declare hidden noundef nonnull align 8 dereferenceable(40) ptr @_ZN12_GLOBAL__N_114AppendTypeNameERNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEEPKcSA_ii(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef, ptr noundef, i32 noundef, i32 noundef) #0

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE6appendEPKc(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef) #0 align 2

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN7glslang22TBuiltInParseablesHlsl10initializeEi8EProfileRKNS_10SpvVersionE(ptr noundef nonnull align 8 dereferenceable(608) %0, i32 noundef %1, i32 noundef %2, ptr noundef nonnull align 4 dereferenceable(17) %3) unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 {
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca ptr, align 8
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca ptr, align 8
  %12 = alloca i32, align 4
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca i8, align 1
  %16 = alloca i8, align 1
  %17 = alloca i8, align 1
  %18 = alloca i8, align 1
  %19 = alloca i8, align 1
  %20 = alloca i8, align 1
  %21 = alloca %"class.std::__cxx11::basic_string", align 8
  %22 = alloca %"class.glslang::pool_allocator", align 8
  %23 = alloca ptr, align 8
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca %"class.std::__cxx11::basic_string", align 8
  %28 = alloca %"class.glslang::pool_allocator", align 8
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca ptr, align 8
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca ptr, align 8
  %37 = alloca ptr, align 8
  %38 = alloca %"class.std::__cxx11::basic_string", align 8
  %39 = alloca i1, align 1
  %40 = alloca %"class.glslang::pool_allocator", align 8
  %41 = alloca i1, align 1
  %42 = alloca ptr, align 8
  %43 = alloca ptr, align 8
  %44 = alloca i32, align 4
  %45 = alloca ptr, align 8
  %46 = alloca ptr, align 8
  %47 = alloca i32, align 4
  %48 = alloca i32, align 4
  %49 = alloca ptr, align 8
  %50 = alloca %"class.std::__cxx11::basic_string", align 8
  %51 = alloca i1, align 1
  %52 = alloca %"class.glslang::pool_allocator", align 8
  %53 = alloca i1, align 1
  store ptr %0, ptr %5, align 8, !tbaa !5
  store i32 %1, ptr %6, align 4, !tbaa !9
  store i32 %2, ptr %7, align 4, !tbaa !11
  store ptr %3, ptr %8, align 8, !tbaa !5
  %54 = load ptr, ptr %5, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #6
  store i32 0, ptr %9, align 4, !tbaa !9
  br label %55

55:                                               ; preds = %446, %4
  %56 = load i32, ptr %9, align 4, !tbaa !9
  %57 = sext i32 %56 to i64
  %58 = getelementptr inbounds [302 x %struct.anon], ptr @_ZZN7glslang22TBuiltInParseablesHlsl10initializeEi8EProfileRKNS_10SpvVersionEE14hlslIntrinsics, i64 0, i64 %57
  %59 = getelementptr inbounds %struct.anon, ptr %58, i32 0, i32 0
  %60 = load ptr, ptr %59, align 16, !tbaa !13
  %61 = icmp ne ptr %60, null
  br i1 %61, label %63, label %62

62:                                               ; preds = %55
  store i32 2, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #6
  br label %449

63:                                               ; preds = %55
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #6
  %64 = load i32, ptr %9, align 4, !tbaa !9
  %65 = sext i32 %64 to i64
  %66 = getelementptr inbounds [302 x %struct.anon], ptr @_ZZN7glslang22TBuiltInParseablesHlsl10initializeEi8EProfileRKNS_10SpvVersionEE14hlslIntrinsics, i64 0, i64 %65
  store ptr %66, ptr %11, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #6
  store i32 0, ptr %12, align 4, !tbaa !9
  br label %67

67:                                               ; preds = %441, %63
  %68 = load i32, ptr %12, align 4, !tbaa !9
  %69 = icmp slt i32 %68, 14
  br i1 %69, label %71, label %70

70:                                               ; preds = %67
  store i32 5, ptr %10, align 4
  br label %444

71:                                               ; preds = %67
  %72 = load ptr, ptr %11, align 8, !tbaa !5
  %73 = getelementptr inbounds %struct.anon, ptr %72, i32 0, i32 5
  %74 = load i32, ptr %73, align 8, !tbaa !16
  %75 = load i32, ptr %12, align 4, !tbaa !9
  %76 = shl i32 1, %75
  %77 = and i32 %74, %76
  %78 = icmp eq i32 %77, 0
  br i1 %78, label %79, label %80

79:                                               ; preds = %71
  br label %441

80:                                               ; preds = %71
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #6
  %81 = load ptr, ptr %11, align 8, !tbaa !5
  %82 = getelementptr inbounds %struct.anon, ptr %81, i32 0, i32 5
  %83 = load i32, ptr %82, align 8, !tbaa !16
  %84 = icmp eq i32 %83, 13
  br i1 %84, label %85, label %87

85:                                               ; preds = %80
  %86 = getelementptr inbounds %"class.glslang::TBuiltInParseables", ptr %54, i32 0, i32 1
  br label %92

87:                                               ; preds = %80
  %88 = getelementptr inbounds %"class.glslang::TBuiltInParseables", ptr %54, i32 0, i32 2
  %89 = load i32, ptr %12, align 4, !tbaa !9
  %90 = sext i32 %89 to i64
  %91 = getelementptr inbounds [14 x %"class.std::__cxx11::basic_string"], ptr %88, i64 0, i64 %90
  br label %92

92:                                               ; preds = %87, %85
  %93 = phi ptr [ %86, %85 ], [ %91, %87 ]
  store ptr %93, ptr %13, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #6
  %94 = load ptr, ptr %11, align 8, !tbaa !5
  %95 = getelementptr inbounds %struct.anon, ptr %94, i32 0, i32 3
  %96 = load ptr, ptr %95, align 8, !tbaa !17
  store ptr %96, ptr %14, align 8, !tbaa !5
  br label %97

97:                                               ; preds = %426, %92
  %98 = load ptr, ptr %14, align 8, !tbaa !5
  %99 = call noundef zeroext i1 @_ZN12_GLOBAL__N_110IsEndOfArgEPKc(ptr noundef %98)
  %100 = xor i1 %99, true
  br i1 %100, label %102, label %101

101:                                              ; preds = %97
  store i32 8, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #6
  br label %431

102:                                              ; preds = %97
  call void @llvm.lifetime.start.p0(i64 1, ptr %15) #6
  %103 = load ptr, ptr %14, align 8, !tbaa !5
  %104 = load i8, ptr %103, align 1, !tbaa !18
  %105 = call noundef zeroext i1 @_ZN12_GLOBAL__N_113IsTextureTypeEc(i8 noundef signext %104)
  %106 = zext i1 %105 to i8
  store i8 %106, ptr %15, align 1, !tbaa !19
  call void @llvm.lifetime.start.p0(i64 1, ptr %16) #6
  %107 = load ptr, ptr %14, align 8, !tbaa !5
  %108 = load i8, ptr %107, align 1, !tbaa !18
  %109 = call noundef zeroext i1 @_ZN12_GLOBAL__N_19IsArrayedEc(i8 noundef signext %108)
  %110 = zext i1 %109 to i8
  store i8 %110, ptr %16, align 1, !tbaa !19
  call void @llvm.lifetime.start.p0(i64 1, ptr %17) #6
  %111 = load ptr, ptr %14, align 8, !tbaa !5
  %112 = load i8, ptr %111, align 1, !tbaa !18
  %113 = call noundef zeroext i1 @_ZN12_GLOBAL__N_111IsTextureMSEc(i8 noundef signext %112)
  %114 = zext i1 %113 to i8
  store i8 %114, ptr %17, align 1, !tbaa !19
  call void @llvm.lifetime.start.p0(i64 1, ptr %18) #6
  %115 = load ptr, ptr %14, align 8, !tbaa !5
  %116 = load i8, ptr %115, align 1, !tbaa !18
  %117 = call noundef zeroext i1 @_ZN12_GLOBAL__N_18IsBufferEc(i8 noundef signext %116)
  %118 = zext i1 %117 to i8
  store i8 %118, ptr %18, align 1, !tbaa !19
  call void @llvm.lifetime.start.p0(i64 1, ptr %19) #6
  %119 = load ptr, ptr %14, align 8, !tbaa !5
  %120 = load i8, ptr %119, align 1, !tbaa !18
  %121 = call noundef zeroext i1 @_ZN12_GLOBAL__N_17IsImageEc(i8 noundef signext %120)
  %122 = zext i1 %121 to i8
  store i8 %122, ptr %19, align 1, !tbaa !19
  call void @llvm.lifetime.start.p0(i64 1, ptr %20) #6
  call void @llvm.lifetime.start.p0(i64 40, ptr %21) #6
  %123 = load ptr, ptr %11, align 8, !tbaa !5
  %124 = getelementptr inbounds %struct.anon, ptr %123, i32 0, i32 0
  %125 = load ptr, ptr %124, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #6
  call void @_ZN7glslang14pool_allocatorIcEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %22)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEC2IS5_EEPKcRKS5_(ptr noundef nonnull align 8 dereferenceable(40) %21, ptr noundef %125, ptr noundef nonnull align 8 dereferenceable(8) %22)
  %126 = load i8, ptr %17, align 1, !tbaa !19, !range !20, !noundef !21
  %127 = trunc i8 %126 to i1
  %128 = load i8, ptr %18, align 1, !tbaa !19, !range !20, !noundef !21
  %129 = trunc i8 %128 to i1
  %130 = load i8, ptr %19, align 1, !tbaa !19, !range !20, !noundef !21
  %131 = trunc i8 %130 to i1
  %132 = invoke noundef zeroext i1 @_ZN12_GLOBAL__N_113HasMipInCoordERKNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEEbbb(ptr noundef nonnull align 8 dereferenceable(40) %21, i1 noundef zeroext %127, i1 noundef zeroext %129, i1 noundef zeroext %131)
          to label %133 unwind label %154

133:                                              ; preds = %102
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %21) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #6
  call void @llvm.lifetime.end.p0(i64 40, ptr %21) #6
  %134 = zext i1 %132 to i8
  store i8 %134, ptr %20, align 1, !tbaa !19
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #6
  %135 = load ptr, ptr %14, align 8, !tbaa !5
  %136 = call noundef i32 @_ZN12_GLOBAL__N_112FixedVecSizeEPKc(ptr noundef %135)
  store i32 %136, ptr %25, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #6
  call void @llvm.lifetime.start.p0(i64 40, ptr %27) #6
  %137 = load ptr, ptr %11, align 8, !tbaa !5
  %138 = getelementptr inbounds %struct.anon, ptr %137, i32 0, i32 0
  %139 = load ptr, ptr %138, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #6
  call void @_ZN7glslang14pool_allocatorIcEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %28)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEC2IS5_EEPKcRKS5_(ptr noundef nonnull align 8 dereferenceable(40) %27, ptr noundef %139, ptr noundef nonnull align 8 dereferenceable(8) %28)
  %140 = load i8, ptr %15, align 1, !tbaa !19, !range !20, !noundef !21
  %141 = trunc i8 %140 to i1
  %142 = invoke noundef i32 @_ZN12_GLOBAL__N_116CoordinateArgPosERKNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEEb(ptr noundef nonnull align 8 dereferenceable(40) %27, i1 noundef zeroext %141)
          to label %143 unwind label %158

143:                                              ; preds = %133
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %27) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #6
  call void @llvm.lifetime.end.p0(i64 40, ptr %27) #6
  store i32 %142, ptr %26, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #6
  store i32 1, ptr %29, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #6
  store i32 1, ptr %30, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #6
  store i32 1, ptr %31, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #6
  store i32 1, ptr %32, align 4, !tbaa !9
  %144 = load ptr, ptr %14, align 8, !tbaa !5
  %145 = load i32, ptr %25, align 4, !tbaa !9
  call void @_ZN12_GLOBAL__N_122FindVectorMatrixBoundsEPKciRiS2_S2_S2_(ptr noundef %144, i32 noundef %145, ptr noundef nonnull align 4 dereferenceable(4) %29, ptr noundef nonnull align 4 dereferenceable(4) %30, ptr noundef nonnull align 4 dereferenceable(4) %31, ptr noundef nonnull align 4 dereferenceable(4) %32)
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #6
  %146 = load ptr, ptr %11, align 8, !tbaa !5
  %147 = getelementptr inbounds %struct.anon, ptr %146, i32 0, i32 4
  %148 = load ptr, ptr %147, align 8, !tbaa !22
  store ptr %148, ptr %33, align 8, !tbaa !5
  br label %149

149:                                              ; preds = %399, %143
  %150 = load ptr, ptr %33, align 8, !tbaa !5
  %151 = call noundef zeroext i1 @_ZN12_GLOBAL__N_110IsEndOfArgEPKc(ptr noundef %150)
  %152 = xor i1 %151, true
  br i1 %152, label %162, label %153

153:                                              ; preds = %149
  store i32 11, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #6
  br label %402

154:                                              ; preds = %102
  %155 = landingpad { ptr, i32 }
          cleanup
  %156 = extractvalue { ptr, i32 } %155, 0
  store ptr %156, ptr %23, align 8
  %157 = extractvalue { ptr, i32 } %155, 1
  store i32 %157, ptr %24, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %21) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #6
  call void @llvm.lifetime.end.p0(i64 40, ptr %21) #6
  br label %430

158:                                              ; preds = %133
  %159 = landingpad { ptr, i32 }
          cleanup
  %160 = extractvalue { ptr, i32 } %159, 0
  store ptr %160, ptr %23, align 8
  %161 = extractvalue { ptr, i32 } %159, 1
  store i32 %161, ptr %24, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %27) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #6
  call void @llvm.lifetime.end.p0(i64 40, ptr %27) #6
  br label %429

162:                                              ; preds = %149
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #6
  %163 = load i32, ptr %29, align 4, !tbaa !9
  store i32 %163, ptr %34, align 4, !tbaa !9
  br label %164

164:                                              ; preds = %395, %162
  %165 = load i32, ptr %34, align 4, !tbaa !9
  %166 = load i32, ptr %30, align 4, !tbaa !9
  %167 = icmp sle i32 %165, %166
  br i1 %167, label %169, label %168

168:                                              ; preds = %164
  store i32 14, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #6
  br label %398

169:                                              ; preds = %164
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #6
  %170 = load i32, ptr %31, align 4, !tbaa !9
  store i32 %170, ptr %35, align 4, !tbaa !9
  br label %171

171:                                              ; preds = %390, %169
  %172 = load i32, ptr %35, align 4, !tbaa !9
  %173 = load i32, ptr %32, align 4, !tbaa !9
  %174 = icmp sle i32 %172, %173
  br i1 %174, label %176, label %175

175:                                              ; preds = %171
  store i32 17, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #6
  br label %394

176:                                              ; preds = %171
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #6
  %177 = load ptr, ptr %11, align 8, !tbaa !5
  %178 = getelementptr inbounds %struct.anon, ptr %177, i32 0, i32 1
  %179 = load ptr, ptr %178, align 8, !tbaa !23
  %180 = icmp ne ptr %179, null
  br i1 %180, label %181, label %185

181:                                              ; preds = %176
  %182 = load ptr, ptr %11, align 8, !tbaa !5
  %183 = getelementptr inbounds %struct.anon, ptr %182, i32 0, i32 1
  %184 = load ptr, ptr %183, align 8, !tbaa !23
  br label %187

185:                                              ; preds = %176
  %186 = load ptr, ptr %14, align 8, !tbaa !5
  br label %187

187:                                              ; preds = %185, %181
  %188 = phi ptr [ %184, %181 ], [ %186, %185 ]
  store ptr %188, ptr %36, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #6
  %189 = load ptr, ptr %11, align 8, !tbaa !5
  %190 = getelementptr inbounds %struct.anon, ptr %189, i32 0, i32 2
  %191 = load ptr, ptr %190, align 8, !tbaa !24
  %192 = icmp ne ptr %191, null
  br i1 %192, label %193, label %197

193:                                              ; preds = %187
  %194 = load ptr, ptr %11, align 8, !tbaa !5
  %195 = getelementptr inbounds %struct.anon, ptr %194, i32 0, i32 2
  %196 = load ptr, ptr %195, align 8, !tbaa !24
  br label %199

197:                                              ; preds = %187
  %198 = load ptr, ptr %33, align 8, !tbaa !5
  br label %199

199:                                              ; preds = %197, %193
  %200 = phi ptr [ %196, %193 ], [ %198, %197 ]
  store ptr %200, ptr %37, align 8, !tbaa !5
  %201 = load ptr, ptr %11, align 8, !tbaa !5
  %202 = getelementptr inbounds %struct.anon, ptr %201, i32 0, i32 0
  %203 = load ptr, ptr %202, align 8, !tbaa !13
  %204 = load ptr, ptr %36, align 8, !tbaa !5
  %205 = load i8, ptr %204, align 1, !tbaa !18
  %206 = load ptr, ptr %37, align 8, !tbaa !5
  %207 = load i8, ptr %206, align 1, !tbaa !18
  %208 = load ptr, ptr %14, align 8, !tbaa !5
  %209 = load i8, ptr %208, align 1, !tbaa !18
  %210 = load ptr, ptr %33, align 8, !tbaa !5
  %211 = load i8, ptr %210, align 1, !tbaa !18
  %212 = load i32, ptr %34, align 4, !tbaa !9
  %213 = load i32, ptr %35, align 4, !tbaa !9
  %214 = call noundef zeroext i1 @_ZN12_GLOBAL__N_17IsValidEPKcccccii(ptr noundef %203, i8 noundef signext %205, i8 noundef signext %207, i8 noundef signext %209, i8 noundef signext %211, i32 noundef %212, i32 noundef %213)
  br i1 %214, label %216, label %215

215:                                              ; preds = %199
  store i32 19, ptr %10, align 4
  br label %387

216:                                              ; preds = %199
  %217 = load i8, ptr %15, align 1, !tbaa !19, !range !20, !noundef !21
  %218 = trunc i8 %217 to i1
  store i1 false, ptr %39, align 1
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #6
  store i1 false, ptr %41, align 1
  br i1 %218, label %219, label %227

219:                                              ; preds = %216
  call void @llvm.lifetime.start.p0(i64 40, ptr %38) #6
  store i1 true, ptr %39, align 1
  %220 = load ptr, ptr %11, align 8, !tbaa !5
  %221 = getelementptr inbounds %struct.anon, ptr %220, i32 0, i32 0
  %222 = load ptr, ptr %221, align 8, !tbaa !13
  call void @_ZN7glslang14pool_allocatorIcEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %40)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEC2IS5_EEPKcRKS5_(ptr noundef nonnull align 8 dereferenceable(40) %38, ptr noundef %222, ptr noundef nonnull align 8 dereferenceable(8) %40)
  store i1 true, ptr %41, align 1
  %223 = load ptr, ptr %14, align 8, !tbaa !5
  %224 = load i32, ptr %34, align 4, !tbaa !9
  %225 = invoke noundef zeroext i1 @_ZN12_GLOBAL__N_115IsIllegalSampleERKNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEEPKci(ptr noundef nonnull align 8 dereferenceable(40) %38, ptr noundef %223, i32 noundef %224)
          to label %226 unwind label %236

226:                                              ; preds = %219
  br label %227

227:                                              ; preds = %226, %216
  %228 = phi i1 [ false, %216 ], [ %225, %226 ]
  %229 = load i1, ptr %41, align 1
  br i1 %229, label %230, label %231

230:                                              ; preds = %227
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %38) #6
  br label %231

231:                                              ; preds = %230, %227
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #6
  %232 = load i1, ptr %39, align 1
  br i1 %232, label %233, label %234

233:                                              ; preds = %231
  call void @llvm.lifetime.end.p0(i64 40, ptr %38) #6
  br label %234

234:                                              ; preds = %233, %231
  br i1 %228, label %235, label %246

235:                                              ; preds = %234
  store i32 19, ptr %10, align 4
  br label %387

236:                                              ; preds = %219
  %237 = landingpad { ptr, i32 }
          cleanup
  %238 = extractvalue { ptr, i32 } %237, 0
  store ptr %238, ptr %23, align 8
  %239 = extractvalue { ptr, i32 } %237, 1
  store i32 %239, ptr %24, align 4
  %240 = load i1, ptr %41, align 1
  br i1 %240, label %241, label %242

241:                                              ; preds = %236
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %38) #6
  br label %242

242:                                              ; preds = %241, %236
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #6
  %243 = load i1, ptr %39, align 1
  br i1 %243, label %244, label %245

244:                                              ; preds = %242
  call void @llvm.lifetime.end.p0(i64 40, ptr %38) #6
  br label %245

245:                                              ; preds = %244, %242
  br label %393

246:                                              ; preds = %234
  %247 = load ptr, ptr %13, align 8, !tbaa !5
  %248 = load ptr, ptr %36, align 8, !tbaa !5
  %249 = load ptr, ptr %37, align 8, !tbaa !5
  %250 = load i32, ptr %34, align 4, !tbaa !9
  %251 = load i32, ptr %35, align 4, !tbaa !9
  %252 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZN12_GLOBAL__N_114AppendTypeNameERNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEEPKcSA_ii(ptr noundef nonnull align 8 dereferenceable(40) %247, ptr noundef %248, ptr noundef %249, i32 noundef %250, i32 noundef %251)
  %253 = load ptr, ptr %13, align 8, !tbaa !5
  %254 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE6appendEPKc(ptr noundef nonnull align 8 dereferenceable(40) %253, ptr noundef @.str.2)
  %255 = load ptr, ptr %11, align 8, !tbaa !5
  %256 = getelementptr inbounds %struct.anon, ptr %255, i32 0, i32 6
  %257 = load i8, ptr %256, align 4, !tbaa !25, !range !20, !noundef !21
  %258 = trunc i8 %257 to i1
  br i1 %258, label %259, label %262

259:                                              ; preds = %246
  %260 = load ptr, ptr %13, align 8, !tbaa !5
  %261 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE6appendEPKc(ptr noundef nonnull align 8 dereferenceable(40) %260, ptr noundef @.str.352)
  br label %262

262:                                              ; preds = %259, %246
  %263 = load ptr, ptr %13, align 8, !tbaa !5
  %264 = load ptr, ptr %11, align 8, !tbaa !5
  %265 = getelementptr inbounds %struct.anon, ptr %264, i32 0, i32 0
  %266 = load ptr, ptr %265, align 8, !tbaa !13
  %267 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE6appendEPKc(ptr noundef nonnull align 8 dereferenceable(40) %263, ptr noundef %266)
  %268 = load ptr, ptr %13, align 8, !tbaa !5
  %269 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE6appendEPKc(ptr noundef nonnull align 8 dereferenceable(40) %268, ptr noundef @.str.4)
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #6
  store ptr null, ptr %42, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #6
  store ptr null, ptr %43, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #6
  store i32 0, ptr %44, align 4, !tbaa !9
  br label %270

270:                                              ; preds = %380, %262
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #6
  %271 = load ptr, ptr %14, align 8, !tbaa !5
  %272 = load i32, ptr %44, align 4, !tbaa !9
  %273 = call noundef ptr @_ZN12_GLOBAL__N_16NthArgEPKci(ptr noundef %271, i32 noundef %272)
  store ptr %273, ptr %45, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #6
  %274 = load ptr, ptr %33, align 8, !tbaa !5
  %275 = load i32, ptr %44, align 4, !tbaa !9
  %276 = call noundef ptr @_ZN12_GLOBAL__N_16NthArgEPKci(ptr noundef %274, i32 noundef %275)
  store ptr %276, ptr %46, align 8, !tbaa !5
  %277 = load ptr, ptr %45, align 8, !tbaa !5
  %278 = icmp eq ptr %277, null
  br i1 %278, label %282, label %279

279:                                              ; preds = %270
  %280 = load ptr, ptr %46, align 8, !tbaa !5
  %281 = icmp eq ptr %280, null
  br i1 %281, label %282, label %283

282:                                              ; preds = %279, %270
  store i32 20, ptr %10, align 4
  br label %377

283:                                              ; preds = %279
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #6
  %284 = load i8, ptr %15, align 1, !tbaa !19, !range !20, !noundef !21
  %285 = trunc i8 %284 to i1
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #6
  br i1 %285, label %286, label %292

286:                                              ; preds = %283
  %287 = load i32, ptr %44, align 4, !tbaa !9
  %288 = icmp sgt i32 %287, 0
  br i1 %288, label %289, label %292

289:                                              ; preds = %286
  store i32 3, ptr %48, align 4, !tbaa !9
  %290 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %34, ptr noundef nonnull align 4 dereferenceable(4) %48)
  %291 = load i32, ptr %290, align 4, !tbaa !9
  br label %294

292:                                              ; preds = %286, %283
  %293 = load i32, ptr %34, align 4, !tbaa !9
  br label %294

294:                                              ; preds = %292, %289
  %295 = phi i32 [ %291, %289 ], [ %293, %292 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #6
  store i32 %295, ptr %47, align 4, !tbaa !9
  %296 = load ptr, ptr %13, align 8, !tbaa !5
  %297 = load i32, ptr %44, align 4, !tbaa !9
  %298 = icmp sgt i32 %297, 0
  %299 = zext i1 %298 to i64
  %300 = select i1 %298, ptr @.str.5, ptr @.str.353
  %301 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE6appendEPKc(ptr noundef nonnull align 8 dereferenceable(40) %296, ptr noundef %300)
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #6
  %302 = load ptr, ptr %45, align 8, !tbaa !5
  store ptr %302, ptr %49, align 8, !tbaa !5
  %303 = load ptr, ptr %13, align 8, !tbaa !5
  %304 = load ptr, ptr %45, align 8, !tbaa !5
  %305 = call noundef ptr @_ZN12_GLOBAL__N_17IoParamERNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEEPKc(ptr noundef nonnull align 8 dereferenceable(40) %303, ptr noundef %304)
  store ptr %305, ptr %45, align 8, !tbaa !5
  %306 = load ptr, ptr %49, align 8, !tbaa !5
  call void @_ZN12_GLOBAL__N_115HandleRepeatArgERPKcS2_S1_(ptr noundef nonnull align 8 dereferenceable(8) %45, ptr noundef nonnull align 8 dereferenceable(8) %42, ptr noundef %306)
  %307 = load ptr, ptr %46, align 8, !tbaa !5
  call void @_ZN12_GLOBAL__N_115HandleRepeatArgERPKcS2_S1_(ptr noundef nonnull align 8 dereferenceable(8) %46, ptr noundef nonnull align 8 dereferenceable(8) %43, ptr noundef %307)
  %308 = load ptr, ptr %13, align 8, !tbaa !5
  %309 = load ptr, ptr %45, align 8, !tbaa !5
  %310 = call noundef ptr @_ZN12_GLOBAL__N_17IoParamERNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEEPKc(ptr noundef nonnull align 8 dereferenceable(40) %308, ptr noundef %309)
  store ptr %310, ptr %45, align 8, !tbaa !5
  %311 = load i8, ptr %16, align 1, !tbaa !19, !range !20, !noundef !21
  %312 = trunc i8 %311 to i1
  store i1 false, ptr %51, align 1
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #6
  store i1 false, ptr %53, align 1
  br i1 %312, label %313, label %324

313:                                              ; preds = %294
  %314 = load i32, ptr %44, align 4, !tbaa !9
  %315 = load i32, ptr %26, align 4, !tbaa !9
  %316 = icmp eq i32 %314, %315
  br i1 %316, label %317, label %324

317:                                              ; preds = %313
  call void @llvm.lifetime.start.p0(i64 40, ptr %50) #6
  store i1 true, ptr %51, align 1
  %318 = load ptr, ptr %11, align 8, !tbaa !5
  %319 = getelementptr inbounds %struct.anon, ptr %318, i32 0, i32 0
  %320 = load ptr, ptr %319, align 8, !tbaa !13
  call void @_ZN7glslang14pool_allocatorIcEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %52)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEC2IS5_EEPKcRKS5_(ptr noundef nonnull align 8 dereferenceable(40) %50, ptr noundef %320, ptr noundef nonnull align 8 dereferenceable(8) %52)
  store i1 true, ptr %53, align 1
  %321 = invoke noundef zeroext i1 @_ZN12_GLOBAL__N_112NoArrayCoordERKNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEE(ptr noundef nonnull align 8 dereferenceable(40) %50)
          to label %322 unwind label %335

322:                                              ; preds = %317
  %323 = xor i1 %321, true
  br label %324

324:                                              ; preds = %322, %313, %294
  %325 = phi i1 [ false, %313 ], [ false, %294 ], [ %323, %322 ]
  %326 = load i1, ptr %53, align 1
  br i1 %326, label %327, label %328

327:                                              ; preds = %324
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %50) #6
  br label %328

328:                                              ; preds = %327, %324
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #6
  %329 = load i1, ptr %51, align 1
  br i1 %329, label %330, label %331

330:                                              ; preds = %328
  call void @llvm.lifetime.end.p0(i64 40, ptr %50) #6
  br label %331

331:                                              ; preds = %330, %328
  br i1 %325, label %332, label %345

332:                                              ; preds = %331
  %333 = load i32, ptr %47, align 4, !tbaa !9
  %334 = add nsw i32 %333, 1
  store i32 %334, ptr %47, align 4, !tbaa !9
  br label %345

335:                                              ; preds = %317
  %336 = landingpad { ptr, i32 }
          cleanup
  %337 = extractvalue { ptr, i32 } %336, 0
  store ptr %337, ptr %23, align 8
  %338 = extractvalue { ptr, i32 } %336, 1
  store i32 %338, ptr %24, align 4
  %339 = load i1, ptr %53, align 1
  br i1 %339, label %340, label %341

340:                                              ; preds = %335
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %50) #6
  br label %341

341:                                              ; preds = %340, %335
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #6
  %342 = load i1, ptr %51, align 1
  br i1 %342, label %343, label %344

343:                                              ; preds = %341
  call void @llvm.lifetime.end.p0(i64 40, ptr %50) #6
  br label %344

344:                                              ; preds = %343, %341
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #6
  br label %393

345:                                              ; preds = %332, %331
  %346 = load i32, ptr %44, align 4, !tbaa !9
  %347 = load i32, ptr %26, align 4, !tbaa !9
  %348 = icmp eq i32 %346, %347
  br i1 %348, label %349, label %355

349:                                              ; preds = %345
  %350 = load i8, ptr %20, align 1, !tbaa !19, !range !20, !noundef !21
  %351 = trunc i8 %350 to i1
  br i1 %351, label %352, label %355

352:                                              ; preds = %349
  %353 = load i32, ptr %47, align 4, !tbaa !9
  %354 = add nsw i32 %353, 1
  store i32 %354, ptr %47, align 4, !tbaa !9
  br label %355

355:                                              ; preds = %352, %349, %345
  %356 = load i8, ptr %15, align 1, !tbaa !19, !range !20, !noundef !21
  %357 = trunc i8 %356 to i1
  br i1 %357, label %358, label %370

358:                                              ; preds = %355
  %359 = load i32, ptr %47, align 4, !tbaa !9
  %360 = icmp eq i32 %359, 1
  br i1 %360, label %361, label %370

361:                                              ; preds = %358
  %362 = load i32, ptr %44, align 4, !tbaa !9
  %363 = icmp sgt i32 %362, 0
  br i1 %363, label %364, label %370

364:                                              ; preds = %361
  %365 = load ptr, ptr %45, align 8, !tbaa !5
  %366 = load i8, ptr %365, align 1, !tbaa !18
  %367 = sext i8 %366 to i32
  %368 = icmp eq i32 %367, 86
  br i1 %368, label %369, label %370

369:                                              ; preds = %364
  store ptr @.str.15, ptr %45, align 8, !tbaa !5
  br label %370

370:                                              ; preds = %369, %364, %361, %358, %355
  %371 = load ptr, ptr %13, align 8, !tbaa !5
  %372 = load ptr, ptr %45, align 8, !tbaa !5
  %373 = load ptr, ptr %46, align 8, !tbaa !5
  %374 = load i32, ptr %47, align 4, !tbaa !9
  %375 = load i32, ptr %35, align 4, !tbaa !9
  %376 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZN12_GLOBAL__N_114AppendTypeNameERNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEEPKcSA_ii(ptr noundef nonnull align 8 dereferenceable(40) %371, ptr noundef %372, ptr noundef %373, i32 noundef %374, i32 noundef %375)
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #6
  store i32 0, ptr %10, align 4
  br label %377

377:                                              ; preds = %370, %282
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #6
  %378 = load i32, ptr %10, align 4
  switch i32 %378, label %383 [
    i32 0, label %379
  ]

379:                                              ; preds = %377
  br label %380

380:                                              ; preds = %379
  %381 = load i32, ptr %44, align 4, !tbaa !9
  %382 = add nsw i32 %381, 1
  store i32 %382, ptr %44, align 4, !tbaa !9
  br label %270, !llvm.loop !26

383:                                              ; preds = %377
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #6
  br label %384

384:                                              ; preds = %383
  %385 = load ptr, ptr %13, align 8, !tbaa !5
  %386 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE6appendEPKc(ptr noundef nonnull align 8 dereferenceable(40) %385, ptr noundef @.str.6)
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #6
  store i32 0, ptr %10, align 4
  br label %387

387:                                              ; preds = %384, %235, %215
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #6
  %388 = load i32, ptr %10, align 4
  switch i32 %388, label %455 [
    i32 0, label %389
    i32 19, label %390
  ]

389:                                              ; preds = %387
  br label %390

390:                                              ; preds = %389, %387
  %391 = load i32, ptr %35, align 4, !tbaa !9
  %392 = add nsw i32 %391, 1
  store i32 %392, ptr %35, align 4, !tbaa !9
  br label %171, !llvm.loop !28

393:                                              ; preds = %344, %245
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #6
  br label %429

394:                                              ; preds = %175
  br label %395

395:                                              ; preds = %394
  %396 = load i32, ptr %34, align 4, !tbaa !9
  %397 = add nsw i32 %396, 1
  store i32 %397, ptr %34, align 4, !tbaa !9
  br label %164, !llvm.loop !29

398:                                              ; preds = %168
  br label %399

399:                                              ; preds = %398
  %400 = load ptr, ptr %33, align 8, !tbaa !5
  %401 = getelementptr inbounds i8, ptr %400, i32 1
  store ptr %401, ptr %33, align 8, !tbaa !5
  br label %149, !llvm.loop !30

402:                                              ; preds = %153
  %403 = load i8, ptr %15, align 1, !tbaa !19, !range !20, !noundef !21
  %404 = trunc i8 %403 to i1
  br i1 %404, label %405, label %415

405:                                              ; preds = %402
  %406 = load ptr, ptr %14, align 8, !tbaa !5
  %407 = getelementptr inbounds i8, ptr %406, i64 1
  %408 = load i8, ptr %407, align 1, !tbaa !18
  %409 = sext i8 %408 to i32
  %410 = call i32 @isalpha(i32 noundef %409) #7
  %411 = icmp ne i32 %410, 0
  br i1 %411, label %412, label %415

412:                                              ; preds = %405
  %413 = load ptr, ptr %14, align 8, !tbaa !5
  %414 = getelementptr inbounds i8, ptr %413, i32 1
  store ptr %414, ptr %14, align 8, !tbaa !5
  br label %415

415:                                              ; preds = %412, %405, %402
  %416 = load ptr, ptr %14, align 8, !tbaa !5
  %417 = getelementptr inbounds i8, ptr %416, i64 1
  %418 = load i8, ptr %417, align 1, !tbaa !18
  %419 = sext i8 %418 to i32
  %420 = call i32 @isdigit(i32 noundef %419) #7
  %421 = icmp ne i32 %420, 0
  br i1 %421, label %422, label %425

422:                                              ; preds = %415
  %423 = load ptr, ptr %14, align 8, !tbaa !5
  %424 = getelementptr inbounds i8, ptr %423, i32 1
  store ptr %424, ptr %14, align 8, !tbaa !5
  br label %425

425:                                              ; preds = %422, %415
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %18) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %16) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %15) #6
  br label %426

426:                                              ; preds = %425
  %427 = load ptr, ptr %14, align 8, !tbaa !5
  %428 = getelementptr inbounds i8, ptr %427, i32 1
  store ptr %428, ptr %14, align 8, !tbaa !5
  br label %97, !llvm.loop !31

429:                                              ; preds = %393, %158
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #6
  br label %430

430:                                              ; preds = %429, %154
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %18) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %16) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %15) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #6
  br label %450

431:                                              ; preds = %101
  %432 = load ptr, ptr %11, align 8, !tbaa !5
  %433 = getelementptr inbounds %struct.anon, ptr %432, i32 0, i32 5
  %434 = load i32, ptr %433, align 8, !tbaa !16
  %435 = icmp eq i32 %434, 13
  br i1 %435, label %436, label %437

436:                                              ; preds = %431
  store i32 5, ptr %10, align 4
  br label %438

437:                                              ; preds = %431
  store i32 0, ptr %10, align 4
  br label %438

438:                                              ; preds = %437, %436
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #6
  %439 = load i32, ptr %10, align 4
  switch i32 %439, label %444 [
    i32 0, label %440
  ]

440:                                              ; preds = %438
  br label %441

441:                                              ; preds = %440, %79
  %442 = load i32, ptr %12, align 4, !tbaa !9
  %443 = add nsw i32 %442, 1
  store i32 %443, ptr %12, align 4, !tbaa !9
  br label %67, !llvm.loop !32

444:                                              ; preds = %438, %70
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #6
  br label %445

445:                                              ; preds = %444
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #6
  br label %446

446:                                              ; preds = %445
  %447 = load i32, ptr %9, align 4, !tbaa !9
  %448 = add nsw i32 %447, 1
  store i32 %448, ptr %9, align 4, !tbaa !9
  br label %55, !llvm.loop !33

449:                                              ; preds = %62
  call void @_ZN7glslang22TBuiltInParseablesHlsl17createMatTimesMatEv(ptr noundef nonnull align 8 dereferenceable(608) %54)
  ret void

450:                                              ; preds = %430
  %451 = load ptr, ptr %23, align 8
  %452 = load i32, ptr %24, align 4
  %453 = insertvalue { ptr, i32 } poison, ptr %451, 0
  %454 = insertvalue { ptr, i32 } %453, i32 %452, 1
  resume { ptr, i32 } %454

455:                                              ; preds = %387
  unreachable
}

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZN12_GLOBAL__N_110IsEndOfArgEPKc(ptr noundef) #2

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZN12_GLOBAL__N_113IsTextureTypeEc(i8 noundef signext) #0

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZN12_GLOBAL__N_19IsArrayedEc(i8 noundef signext) #3

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZN12_GLOBAL__N_111IsTextureMSEc(i8 noundef signext) #3

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZN12_GLOBAL__N_18IsBufferEc(i8 noundef signext) #3

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZN12_GLOBAL__N_17IsImageEc(i8 noundef signext) #3

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZN12_GLOBAL__N_113HasMipInCoordERKNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEEbbb(ptr noundef nonnull align 8 dereferenceable(40), i1 noundef zeroext, i1 noundef zeroext, i1 noundef zeroext) #0

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

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

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef i32 @_ZN12_GLOBAL__N_112FixedVecSizeEPKc(ptr noundef) #3

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef i32 @_ZN12_GLOBAL__N_116CoordinateArgPosERKNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEEb(ptr noundef nonnull align 8 dereferenceable(40), i1 noundef zeroext) #3

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_122FindVectorMatrixBoundsEPKciRiS2_S2_S2_(ptr noundef, i32 noundef, ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) #4

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef zeroext i1 @_ZN12_GLOBAL__N_17IsValidEPKcccccii(ptr noundef, i8 noundef signext, i8 noundef signext, i8 noundef signext, i8 noundef signext, i32 noundef, i32 noundef) #4

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZN12_GLOBAL__N_115IsIllegalSampleERKNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEEPKci(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef, i32 noundef) #0

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef ptr @_ZN12_GLOBAL__N_16NthArgEPKci(ptr noundef, i32 noundef) #4

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) #2

; Function Attrs: mustprogress uwtable
declare hidden noundef ptr @_ZN12_GLOBAL__N_17IoParamERNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEEPKc(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef) #0

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZN12_GLOBAL__N_115HandleRepeatArgERPKcS2_S1_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #3

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZN12_GLOBAL__N_112NoArrayCoordERKNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEE(ptr noundef nonnull align 8 dereferenceable(40)) #3

; Function Attrs: nounwind willreturn memory(read)
declare i32 @isalpha(i32 noundef) #5

; Function Attrs: nounwind willreturn memory(read)
declare i32 @isdigit(i32 noundef) #5

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

!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 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"_ZTS8EProfile", !7, i64 0}
!13 = !{!14, !6, i64 0}
!14 = !{!"_ZTSZN7glslang22TBuiltInParseablesHlsl10initializeEi8EProfileRKNS_10SpvVersionEE3$_0", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !10, i64 40, !15, i64 44}
!15 = !{!"bool", !7, i64 0}
!16 = !{!14, !10, i64 40}
!17 = !{!14, !6, i64 24}
!18 = !{!7, !7, i64 0}
!19 = !{!15, !15, i64 0}
!20 = !{i8 0, i8 2}
!21 = !{}
!22 = !{!14, !6, i64 32}
!23 = !{!14, !6, i64 8}
!24 = !{!14, !6, i64 16}
!25 = !{!14, !15, i64 44}
!26 = distinct !{!26, !27}
!27 = !{!"llvm.loop.mustprogress"}
!28 = distinct !{!28, !27}
!29 = distinct !{!29, !27}
!30 = distinct !{!30, !27}
!31 = distinct !{!31, !27}
!32 = distinct !{!32, !27}
!33 = distinct !{!33, !27}


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

%struct.anon = type { ptr, ptr, ptr, ptr, ptr, i32, i8 }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char>>::_Alloc_hider" = type { %"class.glslang::pool_allocator", ptr }
%"class.glslang::pool_allocator" = type { ptr }
%union.anon = type { i64, [8 x i8] }

@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [4 x i8], align 1
@_ZZN7glslang22TBuiltInParseablesHlsl10initializeEi8EProfileRKNS_10SpvVersionEE14hlslIntrinsics = external hidden local_unnamed_addr constant [302 x %struct.anon], align 16
@.str.15 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.352 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.353 = external hidden unnamed_addr constant [1 x i8], align 1

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7glslang22TBuiltInParseablesHlsl17createMatTimesMatEv(ptr noundef nonnull align 8 dereferenceable(608)) local_unnamed_addr #0 align 2

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

; Function Attrs: mustprogress uwtable
declare hidden noundef nonnull align 8 dereferenceable(40) ptr @_ZN12_GLOBAL__N_114AppendTypeNameERNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEEPKcSA_ii(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef, ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #0

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE6appendEPKc(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef) local_unnamed_addr #0 align 2

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN7glslang22TBuiltInParseablesHlsl10initializeEi8EProfileRKNS_10SpvVersionE(ptr noundef nonnull align 8 dereferenceable(608) %0, i32 noundef %1, i32 noundef %2, ptr nocapture noundef nonnull readnone align 4 dereferenceable(17) %3) unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 {
  %5 = alloca %"class.std::__cxx11::basic_string", align 8
  %6 = alloca %"class.glslang::pool_allocator", align 8
  %7 = alloca %"class.std::__cxx11::basic_string", align 8
  %8 = alloca %"class.glslang::pool_allocator", align 8
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca %"class.std::__cxx11::basic_string", align 8
  %15 = alloca %"class.glslang::pool_allocator", align 8
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca i32, align 4
  %21 = alloca %"class.std::__cxx11::basic_string", align 8
  %22 = alloca %"class.glslang::pool_allocator", align 8
  %23 = load ptr, ptr @_ZZN7glslang22TBuiltInParseablesHlsl10initializeEi8EProfileRKNS_10SpvVersionEE14hlslIntrinsics, align 16, !tbaa !5
  %.not166 = icmp eq ptr %23, null
  br i1 %.not166, label %._crit_edge168, label %.preheader.lr.ph

.preheader.lr.ph:                                 ; preds = %4
  %24 = getelementptr inbounds i8, ptr %0, i64 8
  %25 = getelementptr inbounds i8, ptr %0, i64 48
  br label %.preheader

.preheader:                                       ; preds = %.preheader.lr.ph, %183
  %indvars.iv = phi i64 [ 0, %.preheader.lr.ph ], [ %indvars.iv.next, %183 ]
  %26 = phi ptr [ %23, %.preheader.lr.ph ], [ %185, %183 ]
  %27 = phi ptr [ @_ZZN7glslang22TBuiltInParseablesHlsl10initializeEi8EProfileRKNS_10SpvVersionEE14hlslIntrinsics, %.preheader.lr.ph ], [ %184, %183 ]
  %28 = getelementptr inbounds i8, ptr %27, i64 40
  %29 = load i32, ptr %28, align 8, !tbaa !12
  %30 = icmp ne i32 %29, 13
  %31 = getelementptr inbounds i8, ptr %27, i64 24
  %32 = getelementptr inbounds i8, ptr %27, i64 32
  %33 = getelementptr inbounds i8, ptr %27, i64 8
  %34 = getelementptr inbounds i8, ptr %27, i64 16
  %35 = getelementptr inbounds i8, ptr %27, i64 44
  br label %36

._crit_edge168:                                   ; preds = %183, %4
  call void @_ZN7glslang22TBuiltInParseablesHlsl17createMatTimesMatEv(ptr noundef nonnull align 8 dereferenceable(608) %0)
  ret void

36:                                               ; preds = %.backedge, %.preheader
  %.0116165 = phi i32 [ 0, %.preheader ], [ %.0116165.be, %.backedge ]
  %37 = shl nuw nsw i32 1, %.0116165
  %38 = and i32 %29, %37
  %39 = icmp eq i32 %38, 0
  br i1 %39, label %182, label %40

40:                                               ; preds = %36
  %41 = zext nneg i32 %.0116165 to i64
  %42 = getelementptr inbounds [14 x %"class.std::__cxx11::basic_string"], ptr %25, i64 0, i64 %41
  %43 = select i1 %30, ptr %42, ptr %24
  %44 = load ptr, ptr %31, align 8, !tbaa !13
  %45 = call noundef zeroext i1 @_ZN12_GLOBAL__N_110IsEndOfArgEPKc(ptr noundef %44)
  br i1 %45, label %._crit_edge164, label %.lr.ph163

._crit_edge164:                                   ; preds = %175, %40
  %46 = icmp ult i32 %.0116165, 13
  %or.cond171 = and i1 %30, %46
  br i1 %or.cond171, label %.backedge, label %183

.lr.ph163:                                        ; preds = %40, %175
  %.0119161 = phi ptr [ %179, %175 ], [ %44, %40 ]
  %47 = load i8, ptr %.0119161, align 1, !tbaa !14
  %48 = call noundef zeroext i1 @_ZN12_GLOBAL__N_113IsTextureTypeEc(i8 noundef signext %47)
  %49 = load i8, ptr %.0119161, align 1, !tbaa !14
  %50 = call noundef zeroext i1 @_ZN12_GLOBAL__N_19IsArrayedEc(i8 noundef signext %49)
  %51 = load i8, ptr %.0119161, align 1, !tbaa !14
  %52 = call noundef zeroext i1 @_ZN12_GLOBAL__N_111IsTextureMSEc(i8 noundef signext %51)
  %53 = load i8, ptr %.0119161, align 1, !tbaa !14
  %54 = call noundef zeroext i1 @_ZN12_GLOBAL__N_18IsBufferEc(i8 noundef signext %53)
  %55 = load i8, ptr %.0119161, align 1, !tbaa !14
  %56 = call noundef zeroext i1 @_ZN12_GLOBAL__N_17IsImageEc(i8 noundef signext %55)
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %5) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #6
  call void @_ZN7glslang14pool_allocatorIcEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %6)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEC2IS5_EEPKcRKS5_(ptr noundef nonnull align 8 dereferenceable(40) %5, ptr noundef nonnull %26, ptr noundef nonnull align 8 dereferenceable(8) %6)
  %57 = invoke noundef zeroext i1 @_ZN12_GLOBAL__N_113HasMipInCoordERKNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEEbbb(ptr noundef nonnull align 8 dereferenceable(40) %5, i1 noundef zeroext %52, i1 noundef zeroext %54, i1 noundef zeroext %56)
          to label %58 unwind label %64

58:                                               ; preds = %.lr.ph163
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %5) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #6
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %5) #6
  %59 = call noundef i32 @_ZN12_GLOBAL__N_112FixedVecSizeEPKc(ptr noundef nonnull %.0119161)
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %7) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #6
  call void @_ZN7glslang14pool_allocatorIcEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %8)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEC2IS5_EEPKcRKS5_(ptr noundef nonnull align 8 dereferenceable(40) %7, ptr noundef nonnull %26, ptr noundef nonnull align 8 dereferenceable(8) %8)
  %60 = call noundef i32 @_ZN12_GLOBAL__N_116CoordinateArgPosERKNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEEb(ptr noundef nonnull align 8 dereferenceable(40) %7, i1 noundef zeroext %48)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %7) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #6
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %7) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #6
  store i32 1, ptr %9, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #6
  store i32 1, ptr %10, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %11) #6
  store i32 1, ptr %11, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %12) #6
  store i32 1, ptr %12, align 4, !tbaa !15
  call void @_ZN12_GLOBAL__N_122FindVectorMatrixBoundsEPKciRiS2_S2_S2_(ptr noundef nonnull %.0119161, i32 noundef %59, ptr noundef nonnull align 4 dereferenceable(4) %9, ptr noundef nonnull align 4 dereferenceable(4) %10, ptr noundef nonnull align 4 dereferenceable(4) %11, ptr noundef nonnull align 4 dereferenceable(4) %12)
  %61 = load ptr, ptr %32, align 8, !tbaa !16
  %62 = call noundef zeroext i1 @_ZN12_GLOBAL__N_110IsEndOfArgEPKc(ptr noundef %61)
  br i1 %62, label %._crit_edge160, label %.lr.ph159.preheader

.lr.ph159.preheader:                              ; preds = %58
  %63 = icmp eq i32 %60, 0
  %or.cond.peel = and i1 %50, %63
  %narrow.peel = and i1 %57, %63
  %spec.select136.peel = zext i1 %narrow.peel to i32
  br label %.lr.ph159

._crit_edge160:                                   ; preds = %._crit_edge155, %58
  br i1 %48, label %170, label %175

64:                                               ; preds = %.lr.ph163
  %65 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %5) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #6
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %5) #6
  br label %181

.lr.ph159:                                        ; preds = %.lr.ph159.preheader, %._crit_edge155
  %.0118156 = phi ptr [ %71, %._crit_edge155 ], [ %61, %.lr.ph159.preheader ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %13) #6
  %66 = load i32, ptr %9, align 4, !tbaa !15
  store i32 %66, ptr %13, align 4, !tbaa !15
  %67 = load i32, ptr %10, align 4, !tbaa !15
  %.not127152 = icmp sgt i32 %66, %67
  br i1 %.not127152, label %._crit_edge155, label %.lr.ph154

.lr.ph154:                                        ; preds = %.lr.ph159
  %68 = load i32, ptr %11, align 4, !tbaa !15
  %69 = load i32, ptr %12, align 4, !tbaa !15
  %70 = icmp sgt i32 %68, %69
  br i1 %70, label %._crit_edge155, label %.lr.ph154.split

._crit_edge155:                                   ; preds = %._crit_edge151, %.lr.ph154, %.lr.ph159
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #6
  %71 = getelementptr inbounds i8, ptr %.0118156, i64 1
  %72 = call noundef zeroext i1 @_ZN12_GLOBAL__N_110IsEndOfArgEPKc(ptr noundef nonnull %71)
  br i1 %72, label %._crit_edge160, label %.lr.ph159, !llvm.loop !17

.lr.ph154.split:                                  ; preds = %.lr.ph154, %._crit_edge151
  %73 = phi i32 [ %80, %._crit_edge151 ], [ %67, %.lr.ph154 ]
  %74 = phi i32 [ %83, %._crit_edge151 ], [ %66, %.lr.ph154 ]
  %75 = phi i32 [ %82, %._crit_edge151 ], [ %69, %.lr.ph154 ]
  %76 = load i32, ptr %11, align 4, !tbaa !15
  %.not128146 = icmp sgt i32 %76, %75
  br i1 %.not128146, label %._crit_edge151, label %.lr.ph150

.lr.ph150:                                        ; preds = %.lr.ph154.split
  %77 = load ptr, ptr %33, align 8, !tbaa !19
  %.not129 = icmp eq ptr %77, null
  %.0119. = select i1 %.not129, ptr %.0119161, ptr %77
  %78 = load ptr, ptr %34, align 8, !tbaa !20
  %.not130 = icmp eq ptr %78, null
  %79 = select i1 %.not130, ptr %.0118156, ptr %78
  br label %84

._crit_edge151.loopexit:                          ; preds = %167
  %.pre177 = load i32, ptr %13, align 4, !tbaa !15
  %.pre178 = load i32, ptr %10, align 4, !tbaa !15
  br label %._crit_edge151

._crit_edge151:                                   ; preds = %._crit_edge151.loopexit, %.lr.ph154.split
  %80 = phi i32 [ %.pre178, %._crit_edge151.loopexit ], [ %73, %.lr.ph154.split ]
  %81 = phi i32 [ %.pre177, %._crit_edge151.loopexit ], [ %74, %.lr.ph154.split ]
  %82 = phi i32 [ %169, %._crit_edge151.loopexit ], [ %75, %.lr.ph154.split ]
  %83 = add nsw i32 %81, 1
  store i32 %83, ptr %13, align 4, !tbaa !15
  %.not127.not = icmp slt i32 %81, %80
  br i1 %.not127.not, label %.lr.ph154.split, label %._crit_edge155, !llvm.loop !21

84:                                               ; preds = %.lr.ph150, %167
  %.0117147 = phi i32 [ %76, %.lr.ph150 ], [ %168, %167 ]
  %85 = load i8, ptr %.0119., align 1, !tbaa !14
  %86 = load i8, ptr %79, align 1, !tbaa !14
  %87 = load i8, ptr %.0119161, align 1, !tbaa !14
  %88 = load i8, ptr %.0118156, align 1, !tbaa !14
  %89 = load i32, ptr %13, align 4, !tbaa !15
  %90 = call noundef zeroext i1 @_ZN12_GLOBAL__N_17IsValidEPKcccccii(ptr noundef nonnull %26, i8 noundef signext %85, i8 noundef signext %86, i8 noundef signext %87, i8 noundef signext %88, i32 noundef %89, i32 noundef %.0117147)
  br i1 %90, label %91, label %167

91:                                               ; preds = %84
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #6
  br i1 %48, label %92, label %.thread141

92:                                               ; preds = %91
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %14) #6
  call void @_ZN7glslang14pool_allocatorIcEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %15)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEC2IS5_EEPKcRKS5_(ptr noundef nonnull align 8 dereferenceable(40) %14, ptr noundef nonnull %26, ptr noundef nonnull align 8 dereferenceable(8) %15)
  %93 = load i32, ptr %13, align 4, !tbaa !15
  %94 = invoke noundef zeroext i1 @_ZN12_GLOBAL__N_115IsIllegalSampleERKNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEEPKci(ptr noundef nonnull align 8 dereferenceable(40) %14, ptr noundef nonnull %.0119161, i32 noundef %93)
          to label %95 unwind label %96

.thread141:                                       ; preds = %91
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #6
  br label %98

95:                                               ; preds = %92
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %14) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #6
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %14) #6
  br i1 %94, label %167, label %98

96:                                               ; preds = %92
  %97 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %14) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #6
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %14) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #6
  br label %181

98:                                               ; preds = %.thread141, %95
  %99 = load i32, ptr %13, align 4, !tbaa !15
  %100 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZN12_GLOBAL__N_114AppendTypeNameERNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEEPKcSA_ii(ptr noundef nonnull align 8 dereferenceable(40) %43, ptr noundef nonnull %.0119., ptr noundef nonnull %79, i32 noundef %99, i32 noundef %.0117147)
  %101 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE6appendEPKc(ptr noundef nonnull align 8 dereferenceable(40) %43, ptr noundef nonnull @.str.2)
  %102 = load i8, ptr %35, align 4, !tbaa !23, !range !24, !noundef !25
  %103 = trunc nuw i8 %102 to i1
  br i1 %103, label %104, label %106

104:                                              ; preds = %98
  %105 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE6appendEPKc(ptr noundef nonnull align 8 dereferenceable(40) %43, ptr noundef nonnull @.str.352)
  br label %106

106:                                              ; preds = %104, %98
  %107 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE6appendEPKc(ptr noundef nonnull align 8 dereferenceable(40) %43, ptr noundef nonnull %26)
  %108 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE6appendEPKc(ptr noundef nonnull align 8 dereferenceable(40) %43, ptr noundef nonnull @.str.4)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #6
  store ptr null, ptr %16, align 8, !tbaa !26
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #6
  store ptr null, ptr %17, align 8, !tbaa !26
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #6
  %109 = call noundef ptr @_ZN12_GLOBAL__N_16NthArgEPKci(ptr noundef nonnull %.0119161, i32 noundef 0)
  store ptr %109, ptr %18, align 8, !tbaa !26
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #6
  %110 = call noundef ptr @_ZN12_GLOBAL__N_16NthArgEPKci(ptr noundef nonnull %.0118156, i32 noundef 0)
  store ptr %110, ptr %19, align 8, !tbaa !26
  %111 = load ptr, ptr %18, align 8, !tbaa !26
  %112 = icmp ne ptr %111, null
  %113 = icmp ne ptr %110, null
  %or.cond.not144 = and i1 %113, %112
  br i1 %or.cond.not144, label %114, label %._crit_edge

114:                                              ; preds = %106
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %20) #6
  %.pre = load i32, ptr %13, align 4, !tbaa !15
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #6
  %115 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE6appendEPKc(ptr noundef nonnull align 8 dereferenceable(40) %43, ptr noundef nonnull @.str.353)
  %116 = load ptr, ptr %18, align 8, !tbaa !26
  %117 = call noundef ptr @_ZN12_GLOBAL__N_17IoParamERNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEEPKc(ptr noundef nonnull align 8 dereferenceable(40) %43, ptr noundef %116)
  store ptr %117, ptr %18, align 8, !tbaa !26
  call void @_ZN12_GLOBAL__N_115HandleRepeatArgERPKcS2_S1_(ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef nonnull align 8 dereferenceable(8) %16, ptr noundef %116)
  %118 = load ptr, ptr %19, align 8, !tbaa !26
  call void @_ZN12_GLOBAL__N_115HandleRepeatArgERPKcS2_S1_(ptr noundef nonnull align 8 dereferenceable(8) %19, ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef %118)
  %119 = load ptr, ptr %18, align 8, !tbaa !26
  %120 = call noundef ptr @_ZN12_GLOBAL__N_17IoParamERNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEEPKc(ptr noundef nonnull align 8 dereferenceable(40) %43, ptr noundef %119)
  store ptr %120, ptr %18, align 8, !tbaa !26
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #6
  br i1 %or.cond.peel, label %121, label %.critedge135.peel

.critedge135.peel:                                ; preds = %114
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #6
  br label %124

121:                                              ; preds = %114
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %21) #6
  call void @_ZN7glslang14pool_allocatorIcEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %22)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEC2IS5_EEPKcRKS5_(ptr noundef nonnull align 8 dereferenceable(40) %21, ptr noundef nonnull %26, ptr noundef nonnull align 8 dereferenceable(8) %22)
  %122 = call noundef zeroext i1 @_ZN12_GLOBAL__N_112NoArrayCoordERKNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEE(ptr noundef nonnull align 8 dereferenceable(40) %21)
  %123 = xor i1 %122, true
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %21) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #6
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %21) #6
  %.pre175.pre = load ptr, ptr %18, align 8, !tbaa !26
  br label %124

124:                                              ; preds = %.critedge135.peel, %121
  %.pre175 = phi ptr [ %120, %.critedge135.peel ], [ %.pre175.pre, %121 ]
  %125 = phi i1 [ false, %.critedge135.peel ], [ %123, %121 ]
  %spec.select.peel = add i32 %.pre, %spec.select136.peel
  %126 = zext i1 %125 to i32
  %.1.peel = add i32 %spec.select.peel, %126
  %127 = load ptr, ptr %19, align 8, !tbaa !26
  %128 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZN12_GLOBAL__N_114AppendTypeNameERNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEEPKcSA_ii(ptr noundef nonnull align 8 dereferenceable(40) %43, ptr noundef %.pre175, ptr noundef %127, i32 noundef %.1.peel, i32 noundef %.0117147)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #6
  %129 = call noundef ptr @_ZN12_GLOBAL__N_16NthArgEPKci(ptr noundef nonnull %.0119161, i32 noundef 1)
  store ptr %129, ptr %18, align 8, !tbaa !26
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #6
  %130 = call noundef ptr @_ZN12_GLOBAL__N_16NthArgEPKci(ptr noundef nonnull %.0118156, i32 noundef 1)
  store ptr %130, ptr %19, align 8, !tbaa !26
  %131 = load ptr, ptr %18, align 8, !tbaa !26
  %132 = icmp ne ptr %131, null
  %133 = icmp ne ptr %130, null
  %or.cond.not.peel = and i1 %133, %132
  br i1 %or.cond.not.peel, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %124, %156
  %.0111145 = phi i32 [ %160, %156 ], [ 1, %124 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %20) #6
  br i1 %48, label %134, label %136

134:                                              ; preds = %.lr.ph
  store i32 3, ptr %20, align 4, !tbaa !15
  %135 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %13, ptr noundef nonnull align 4 dereferenceable(4) %20)
  br label %136

136:                                              ; preds = %.lr.ph, %134
  %.in = phi ptr [ %135, %134 ], [ %13, %.lr.ph ]
  %137 = load i32, ptr %.in, align 4, !tbaa !15
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #6
  %138 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE6appendEPKc(ptr noundef nonnull align 8 dereferenceable(40) %43, ptr noundef nonnull @.str.5)
  %139 = load ptr, ptr %18, align 8, !tbaa !26
  %140 = call noundef ptr @_ZN12_GLOBAL__N_17IoParamERNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEEPKc(ptr noundef nonnull align 8 dereferenceable(40) %43, ptr noundef %139)
  store ptr %140, ptr %18, align 8, !tbaa !26
  call void @_ZN12_GLOBAL__N_115HandleRepeatArgERPKcS2_S1_(ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef nonnull align 8 dereferenceable(8) %16, ptr noundef %139)
  %141 = load ptr, ptr %19, align 8, !tbaa !26
  call void @_ZN12_GLOBAL__N_115HandleRepeatArgERPKcS2_S1_(ptr noundef nonnull align 8 dereferenceable(8) %19, ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef %141)
  %142 = load ptr, ptr %18, align 8, !tbaa !26
  %143 = call noundef ptr @_ZN12_GLOBAL__N_17IoParamERNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEEPKc(ptr noundef nonnull align 8 dereferenceable(40) %43, ptr noundef %142)
  store ptr %143, ptr %18, align 8, !tbaa !26
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #6
  %144 = icmp eq i32 %.0111145, %60
  %or.cond = and i1 %50, %144
  br i1 %or.cond, label %145, label %.critedge135

145:                                              ; preds = %136
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %21) #6
  call void @_ZN7glslang14pool_allocatorIcEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %22)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEC2IS5_EEPKcRKS5_(ptr noundef nonnull align 8 dereferenceable(40) %21, ptr noundef nonnull %26, ptr noundef nonnull align 8 dereferenceable(8) %22)
  %146 = call noundef zeroext i1 @_ZN12_GLOBAL__N_112NoArrayCoordERKNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEE(ptr noundef nonnull align 8 dereferenceable(40) %21)
  %147 = xor i1 %146, true
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %21) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #6
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %21) #6
  %.pre176.pre = load ptr, ptr %18, align 8, !tbaa !26
  br label %148

.critedge135:                                     ; preds = %136
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #6
  br label %148

148:                                              ; preds = %.critedge135, %145
  %.pre176 = phi ptr [ %143, %.critedge135 ], [ %.pre176.pre, %145 ]
  %149 = phi i1 [ false, %.critedge135 ], [ %147, %145 ]
  %150 = zext i1 %149 to i32
  %narrow = and i1 %57, %144
  %spec.select136 = zext i1 %narrow to i32
  %spec.select = add i32 %137, %spec.select136
  %.1 = add i32 %spec.select, %150
  %151 = icmp eq i32 %.1, 1
  %or.cond6 = select i1 %48, i1 %151, i1 false
  br i1 %or.cond6, label %152, label %156

152:                                              ; preds = %148
  %153 = load i8, ptr %.pre176, align 1, !tbaa !14
  %154 = icmp eq i8 %153, 86
  br i1 %154, label %155, label %156

155:                                              ; preds = %152
  store ptr @.str.15, ptr %18, align 8, !tbaa !26
  br label %156

156:                                              ; preds = %148, %152, %155
  %157 = phi ptr [ %.pre176, %148 ], [ %.pre176, %152 ], [ @.str.15, %155 ]
  %158 = load ptr, ptr %19, align 8, !tbaa !26
  %159 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZN12_GLOBAL__N_114AppendTypeNameERNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEEPKcSA_ii(ptr noundef nonnull align 8 dereferenceable(40) %43, ptr noundef %157, ptr noundef %158, i32 noundef %.1, i32 noundef %.0117147)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #6
  %160 = add nuw nsw i32 %.0111145, 1
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #6
  %161 = call noundef ptr @_ZN12_GLOBAL__N_16NthArgEPKci(ptr noundef nonnull %.0119161, i32 noundef %160)
  store ptr %161, ptr %18, align 8, !tbaa !26
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #6
  %162 = call noundef ptr @_ZN12_GLOBAL__N_16NthArgEPKci(ptr noundef nonnull %.0118156, i32 noundef %160)
  store ptr %162, ptr %19, align 8, !tbaa !26
  %163 = load ptr, ptr %18, align 8, !tbaa !26
  %164 = icmp ne ptr %163, null
  %165 = icmp ne ptr %162, null
  %or.cond.not = and i1 %165, %164
  br i1 %or.cond.not, label %.lr.ph, label %._crit_edge, !llvm.loop !27

._crit_edge:                                      ; preds = %156, %124, %106
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #6
  %166 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEE6appendEPKc(ptr noundef nonnull align 8 dereferenceable(40) %43, ptr noundef nonnull @.str.6)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #6
  br label %167

167:                                              ; preds = %95, %84, %._crit_edge
  %168 = add nsw i32 %.0117147, 1
  %169 = load i32, ptr %12, align 4, !tbaa !15
  %.not128.not = icmp slt i32 %.0117147, %169
  br i1 %.not128.not, label %84, label %._crit_edge151.loopexit, !llvm.loop !29

170:                                              ; preds = %._crit_edge160
  %171 = getelementptr inbounds i8, ptr %.0119161, i64 1
  %172 = load i8, ptr %171, align 1, !tbaa !14
  %173 = sext i8 %172 to i32
  %174 = call i32 @isalpha(i32 noundef %173) #7
  %.not126 = icmp eq i32 %174, 0
  %spec.select139 = select i1 %.not126, ptr %.0119161, ptr %171
  br label %175

175:                                              ; preds = %170, %._crit_edge160
  %.1120 = phi ptr [ %.0119161, %._crit_edge160 ], [ %spec.select139, %170 ]
  %176 = getelementptr inbounds i8, ptr %.1120, i64 1
  %177 = load i8, ptr %176, align 1, !tbaa !14
  %178 = sext i8 %177 to i32
  %isdigittmp = add nsw i32 %178, -48
  %isdigit = icmp ult i32 %isdigittmp, 10
  %spec.select140 = select i1 %isdigit, ptr %176, ptr %.1120
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #6
  %179 = getelementptr inbounds i8, ptr %spec.select140, i64 1
  %180 = call noundef zeroext i1 @_ZN12_GLOBAL__N_110IsEndOfArgEPKc(ptr noundef nonnull %179)
  br i1 %180, label %._crit_edge164, label %.lr.ph163, !llvm.loop !30

181:                                              ; preds = %96, %64
  %.pn = phi { ptr, i32 } [ %97, %96 ], [ %65, %64 ]
  resume { ptr, i32 } %.pn

182:                                              ; preds = %36
  %.old170 = icmp ult i32 %.0116165, 13
  br i1 %.old170, label %.backedge, label %183

.backedge:                                        ; preds = %182, %._crit_edge164
  %.0116165.be = add nuw nsw i32 %.0116165, 1
  br label %36, !llvm.loop !31

183:                                              ; preds = %182, %._crit_edge164
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %184 = getelementptr inbounds [302 x %struct.anon], ptr @_ZZN7glslang22TBuiltInParseablesHlsl10initializeEi8EProfileRKNS_10SpvVersionEE14hlslIntrinsics, i64 0, i64 %indvars.iv.next
  %185 = load ptr, ptr %184, align 16, !tbaa !5
  %.not = icmp eq ptr %185, null
  br i1 %.not, label %._crit_edge168, label %.preheader, !llvm.loop !32
}

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZN12_GLOBAL__N_110IsEndOfArgEPKc(ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZN12_GLOBAL__N_113IsTextureTypeEc(i8 noundef signext) local_unnamed_addr #0

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZN12_GLOBAL__N_19IsArrayedEc(i8 noundef signext) local_unnamed_addr #3

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZN12_GLOBAL__N_111IsTextureMSEc(i8 noundef signext) local_unnamed_addr #3

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZN12_GLOBAL__N_18IsBufferEc(i8 noundef signext) local_unnamed_addr #3

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZN12_GLOBAL__N_17IsImageEc(i8 noundef signext) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZN12_GLOBAL__N_113HasMipInCoordERKNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEEbbb(ptr noundef nonnull align 8 dereferenceable(40), i1 noundef zeroext, i1 noundef zeroext, i1 noundef zeroext) local_unnamed_addr #0

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

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

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef i32 @_ZN12_GLOBAL__N_112FixedVecSizeEPKc(ptr noundef) local_unnamed_addr #3

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef i32 @_ZN12_GLOBAL__N_116CoordinateArgPosERKNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEEb(ptr noundef nonnull align 8 dereferenceable(40), i1 noundef zeroext) local_unnamed_addr #3

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_122FindVectorMatrixBoundsEPKciRiS2_S2_S2_(ptr noundef, i32 noundef, ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #4

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef zeroext i1 @_ZN12_GLOBAL__N_17IsValidEPKcccccii(ptr noundef, i8 noundef signext, i8 noundef signext, i8 noundef signext, i8 noundef signext, i32 noundef, i32 noundef) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZN12_GLOBAL__N_115IsIllegalSampleERKNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEEPKci(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef, i32 noundef) local_unnamed_addr #0

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef ptr @_ZN12_GLOBAL__N_16NthArgEPKci(ptr noundef, i32 noundef) local_unnamed_addr #4

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3minIiERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare hidden noundef ptr @_ZN12_GLOBAL__N_17IoParamERNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEEPKc(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef) local_unnamed_addr #0

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZN12_GLOBAL__N_115HandleRepeatArgERPKcS2_S1_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) local_unnamed_addr #3

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZN12_GLOBAL__N_112NoArrayCoordERKNSt7__cxx1112basic_stringIcSt11char_traitsIcEN7glslang14pool_allocatorIcEEEE(ptr noundef nonnull align 8 dereferenceable(40)) local_unnamed_addr #3

; Function Attrs: mustprogress nofree nounwind willreturn memory(read)
declare i32 @isalpha(i32 noundef) local_unnamed_addr #5

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

!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, !7, i64 0}
!6 = !{!"_ZTSZN7glslang22TBuiltInParseablesHlsl10initializeEi8EProfileRKNS_10SpvVersionEE3$_0", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !10, i64 40, !11, i64 44}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"int", !8, i64 0}
!11 = !{!"bool", !8, i64 0}
!12 = !{!6, !10, i64 40}
!13 = !{!6, !7, i64 24}
!14 = !{!8, !8, i64 0}
!15 = !{!10, !10, i64 0}
!16 = !{!6, !7, i64 32}
!17 = distinct !{!17, !18}
!18 = !{!"llvm.loop.mustprogress"}
!19 = !{!6, !7, i64 8}
!20 = !{!6, !7, i64 16}
!21 = distinct !{!21, !18, !22}
!22 = !{!"llvm.loop.unswitch.partial.disable"}
!23 = !{!6, !11, i64 44}
!24 = !{i8 0, i8 2}
!25 = !{}
!26 = !{!7, !7, i64 0}
!27 = distinct !{!27, !18, !28}
!28 = !{!"llvm.loop.peeled.count", i32 1}
!29 = distinct !{!29, !18}
!30 = distinct !{!30, !18}
!31 = distinct !{!31, !18}
!32 = distinct !{!32, !18}


; Effective O3 passes: BDCEPass,CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopFullUnrollPass,LoopInstSimplifyPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,ReassociatePass,SCCPPass,SROAPass,SimpleLoopUnswitchPass,SimplifyCFGPass