; LLVM IR from Razakhel/RaZ :: extern/fastgltf/src/fastgltf.ll (ZN8fastgltf7URIView5parseEv)

; 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.std::basic_string_view" = type { i64, ptr }
%"class.fastgltf::URIView" = type <{ %"class.std::basic_string_view", %"class.std::basic_string_view", %"class.std::basic_string_view", %"class.std::basic_string_view", %"class.std::basic_string_view", %"class.std::basic_string_view", %"class.std::basic_string_view", %"class.std::basic_string_view", i8, [7 x i8] }>

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt17basic_string_viewIcSt11char_traitsIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16)) #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: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #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 nounwind uwtable
declare dso_local void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull) unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN8fastgltf7URIView5parseEv(ptr noundef nonnull align 8 dereferenceable(129) %0) #3 align 2 {
  %2 = alloca ptr, align 8
  %3 = alloca i64, align 8
  %4 = alloca i64, align 8
  %5 = alloca i32, align 4
  %6 = alloca %"class.std::basic_string_view", align 8
  %7 = alloca %"class.std::basic_string_view", align 8
  %8 = alloca %"class.std::basic_string_view", align 8
  %9 = alloca i64, align 8
  %10 = alloca i64, align 8
  %11 = alloca %"class.std::basic_string_view", align 8
  %12 = alloca i64, align 8
  %13 = alloca i64, align 8
  %14 = alloca %"class.std::basic_string_view", align 8
  %15 = alloca %"class.std::basic_string_view", align 8
  %16 = alloca %"class.std::basic_string_view", align 8
  %17 = alloca %"class.std::basic_string_view", align 8
  %18 = alloca %"class.std::basic_string_view", align 8
  %19 = alloca %"class.std::basic_string_view", align 8
  %20 = alloca i64, align 8
  %21 = alloca i64, align 8
  %22 = alloca %"class.std::basic_string_view", align 8
  %23 = alloca %"class.std::basic_string_view", align 8
  %24 = alloca %"class.std::basic_string_view", align 8
  %25 = alloca %"class.std::basic_string_view", align 8
  %26 = alloca %"class.std::basic_string_view", align 8
  %27 = alloca %"class.std::basic_string_view", align 8
  %28 = alloca %"class.std::basic_string_view", align 8
  store ptr %0, ptr %2, align 8, !tbaa !5
  %29 = load ptr, ptr %2, align 8
  %30 = getelementptr inbounds %"class.fastgltf::URIView", ptr %29, i32 0, i32 0
  %31 = call noundef zeroext i1 @_ZNKSt17basic_string_viewIcSt11char_traitsIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %30) #5
  br i1 %31, label %32, label %34

32:                                               ; preds = %1
  %33 = getelementptr inbounds %"class.fastgltf::URIView", ptr %29, i32 0, i32 8
  store i8 0, ptr %33, align 8, !tbaa !9
  br label %291

34:                                               ; preds = %1
  call void @llvm.lifetime.start.p0(i64 8, ptr %3) #5
  store i64 0, ptr %3, align 8, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 8, ptr %4) #5
  %35 = getelementptr inbounds %"class.fastgltf::URIView", ptr %29, i32 0, i32 0
  %36 = call noundef i64 @_ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findEcm(ptr noundef nonnull align 8 dereferenceable(16) %35, i8 noundef signext 58, i64 noundef 0) #5
  store i64 %36, ptr %4, align 8, !tbaa !14
  %37 = load i64, ptr %4, align 8, !tbaa !14
  %38 = icmp ne i64 %37, -1
  br i1 %38, label %39, label %55

39:                                               ; preds = %34
  %40 = load i64, ptr %4, align 8, !tbaa !14
  %41 = icmp eq i64 %40, 0
  br i1 %41, label %42, label %44

42:                                               ; preds = %39
  %43 = getelementptr inbounds %"class.fastgltf::URIView", ptr %29, i32 0, i32 8
  store i8 0, ptr %43, align 8, !tbaa !9
  store i32 1, ptr %5, align 4
  br label %289

44:                                               ; preds = %39
  call void @llvm.lifetime.start.p0(i64 16, ptr %6) #5
  %45 = getelementptr inbounds %"class.fastgltf::URIView", ptr %29, i32 0, i32 0
  %46 = load i64, ptr %4, align 8, !tbaa !14
  %47 = call { i64, ptr } @_ZNKSt17basic_string_viewIcSt11char_traitsIcEE6substrEmm(ptr noundef nonnull align 8 dereferenceable(16) %45, i64 noundef 0, i64 noundef %46)
  %48 = getelementptr inbounds { i64, ptr }, ptr %6, i32 0, i32 0
  %49 = extractvalue { i64, ptr } %47, 0
  store i64 %49, ptr %48, align 8
  %50 = getelementptr inbounds { i64, ptr }, ptr %6, i32 0, i32 1
  %51 = extractvalue { i64, ptr } %47, 1
  store ptr %51, ptr %50, align 8
  %52 = getelementptr inbounds %"class.fastgltf::URIView", ptr %29, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %52, ptr align 8 %6, i64 16, i1 false), !tbaa.struct !15
  call void @llvm.lifetime.end.p0(i64 16, ptr %6) #5
  %53 = load i64, ptr %4, align 8, !tbaa !14
  %54 = add i64 %53, 1
  store i64 %54, ptr %3, align 8, !tbaa !14
  br label %55

55:                                               ; preds = %44, %34
  %56 = getelementptr inbounds %"class.fastgltf::URIView", ptr %29, i32 0, i32 0
  %57 = load i64, ptr %3, align 8, !tbaa !14
  %58 = call { i64, ptr } @_ZNKSt17basic_string_viewIcSt11char_traitsIcEE6substrEmm(ptr noundef nonnull align 8 dereferenceable(16) %56, i64 noundef %57, i64 noundef -1)
  %59 = getelementptr inbounds { i64, ptr }, ptr %7, i32 0, i32 0
  %60 = extractvalue { i64, ptr } %58, 0
  store i64 %60, ptr %59, align 8
  %61 = getelementptr inbounds { i64, ptr }, ptr %7, i32 0, i32 1
  %62 = extractvalue { i64, ptr } %58, 1
  store ptr %62, ptr %61, align 8
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %8, ptr noundef @.str.18) #5
  %63 = getelementptr inbounds { i64, ptr }, ptr %7, i32 0, i32 0
  %64 = load i64, ptr %63, align 8
  %65 = getelementptr inbounds { i64, ptr }, ptr %7, i32 0, i32 1
  %66 = load ptr, ptr %65, align 8
  %67 = getelementptr inbounds { i64, ptr }, ptr %8, i32 0, i32 0
  %68 = load i64, ptr %67, align 8
  %69 = getelementptr inbounds { i64, ptr }, ptr %8, i32 0, i32 1
  %70 = load ptr, ptr %69, align 8
  %71 = call noundef zeroext i1 @_ZN8fastgltf10startsWithESt17basic_string_viewIcSt11char_traitsIcEES3_(i64 %64, ptr %66, i64 %68, ptr %70)
  br i1 %71, label %72, label %176

72:                                               ; preds = %55
  %73 = load i64, ptr %3, align 8, !tbaa !14
  %74 = add i64 %73, 2
  store i64 %74, ptr %3, align 8, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #5
  %75 = getelementptr inbounds %"class.fastgltf::URIView", ptr %29, i32 0, i32 0
  %76 = load i64, ptr %3, align 8, !tbaa !14
  %77 = call noundef i64 @_ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findEcm(ptr noundef nonnull align 8 dereferenceable(16) %75, i8 noundef signext 47, i64 noundef %76) #5
  store i64 %77, ptr %9, align 8, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #5
  %78 = getelementptr inbounds %"class.fastgltf::URIView", ptr %29, i32 0, i32 0
  %79 = load i64, ptr %3, align 8, !tbaa !14
  %80 = call noundef i64 @_ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findEcm(ptr noundef nonnull align 8 dereferenceable(16) %78, i8 noundef signext 64, i64 noundef %79) #5
  store i64 %80, ptr %10, align 8, !tbaa !14
  %81 = load i64, ptr %10, align 8, !tbaa !14
  %82 = icmp ne i64 %81, -1
  br i1 %82, label %83, label %104

83:                                               ; preds = %72
  %84 = load i64, ptr %10, align 8, !tbaa !14
  %85 = load i64, ptr %9, align 8, !tbaa !14
  %86 = icmp ult i64 %84, %85
  br i1 %86, label %87, label %104

87:                                               ; preds = %83
  call void @llvm.lifetime.start.p0(i64 16, ptr %11) #5
  %88 = getelementptr inbounds %"class.fastgltf::URIView", ptr %29, i32 0, i32 0
  %89 = load i64, ptr %3, align 8, !tbaa !14
  %90 = load i64, ptr %10, align 8, !tbaa !14
  %91 = load i64, ptr %3, align 8, !tbaa !14
  %92 = sub i64 %90, %91
  %93 = call { i64, ptr } @_ZNKSt17basic_string_viewIcSt11char_traitsIcEE6substrEmm(ptr noundef nonnull align 8 dereferenceable(16) %88, i64 noundef %89, i64 noundef %92)
  %94 = getelementptr inbounds { i64, ptr }, ptr %11, i32 0, i32 0
  %95 = extractvalue { i64, ptr } %93, 0
  store i64 %95, ptr %94, align 8
  %96 = getelementptr inbounds { i64, ptr }, ptr %11, i32 0, i32 1
  %97 = extractvalue { i64, ptr } %93, 1
  store ptr %97, ptr %96, align 8
  %98 = getelementptr inbounds %"class.fastgltf::URIView", ptr %29, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %98, ptr align 8 %11, i64 16, i1 false), !tbaa.struct !15
  call void @llvm.lifetime.end.p0(i64 16, ptr %11) #5
  %99 = getelementptr inbounds %"class.fastgltf::URIView", ptr %29, i32 0, i32 3
  %100 = call noundef i64 @_ZNKSt17basic_string_viewIcSt11char_traitsIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %99) #5
  %101 = add i64 %100, 1
  %102 = load i64, ptr %3, align 8, !tbaa !14
  %103 = add i64 %102, %101
  store i64 %103, ptr %3, align 8, !tbaa !14
  br label %104

104:                                              ; preds = %87, %83, %72
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #5
  %105 = load i64, ptr %9, align 8, !tbaa !14
  %106 = sub i64 %105, 1
  store i64 %106, ptr %12, align 8, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #5
  %107 = getelementptr inbounds %"class.fastgltf::URIView", ptr %29, i32 0, i32 0
  %108 = load i64, ptr %3, align 8, !tbaa !14
  %109 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt17basic_string_viewIcSt11char_traitsIcEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %107, i64 noundef %108) #5
  %110 = load i8, ptr %109, align 1, !tbaa !16
  %111 = sext i8 %110 to i32
  %112 = icmp eq i32 %111, 91
  br i1 %112, label %113, label %125

113:                                              ; preds = %104
  %114 = getelementptr inbounds %"class.fastgltf::URIView", ptr %29, i32 0, i32 0
  %115 = load i64, ptr %3, align 8, !tbaa !14
  %116 = call noundef i64 @_ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findEcm(ptr noundef nonnull align 8 dereferenceable(16) %114, i8 noundef signext 93, i64 noundef %115) #5
  store i64 %116, ptr %12, align 8, !tbaa !14
  %117 = load i64, ptr %12, align 8, !tbaa !14
  %118 = icmp eq i64 %117, -1
  br i1 %118, label %119, label %121

119:                                              ; preds = %113
  %120 = getelementptr inbounds %"class.fastgltf::URIView", ptr %29, i32 0, i32 8
  store i8 0, ptr %120, align 8, !tbaa !9
  store i32 1, ptr %5, align 4
  br label %173

121:                                              ; preds = %113
  %122 = getelementptr inbounds %"class.fastgltf::URIView", ptr %29, i32 0, i32 0
  %123 = load i64, ptr %12, align 8, !tbaa !14
  %124 = call noundef i64 @_ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findEcm(ptr noundef nonnull align 8 dereferenceable(16) %122, i8 noundef signext 58, i64 noundef %123) #5
  store i64 %124, ptr %13, align 8, !tbaa !14
  br label %129

125:                                              ; preds = %104
  %126 = getelementptr inbounds %"class.fastgltf::URIView", ptr %29, i32 0, i32 0
  %127 = load i64, ptr %3, align 8, !tbaa !14
  %128 = call noundef i64 @_ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findEcm(ptr noundef nonnull align 8 dereferenceable(16) %126, i8 noundef signext 58, i64 noundef %127) #5
  store i64 %128, ptr %13, align 8, !tbaa !14
  br label %129

129:                                              ; preds = %125, %121
  %130 = load i64, ptr %13, align 8, !tbaa !14
  %131 = icmp ne i64 %130, -1
  br i1 %131, label %132, label %157

132:                                              ; preds = %129
  call void @llvm.lifetime.start.p0(i64 16, ptr %14) #5
  %133 = getelementptr inbounds %"class.fastgltf::URIView", ptr %29, i32 0, i32 0
  %134 = load i64, ptr %3, align 8, !tbaa !14
  %135 = load i64, ptr %13, align 8, !tbaa !14
  %136 = load i64, ptr %3, align 8, !tbaa !14
  %137 = sub i64 %135, %136
  %138 = call { i64, ptr } @_ZNKSt17basic_string_viewIcSt11char_traitsIcEE6substrEmm(ptr noundef nonnull align 8 dereferenceable(16) %133, i64 noundef %134, i64 noundef %137)
  %139 = getelementptr inbounds { i64, ptr }, ptr %14, i32 0, i32 0
  %140 = extractvalue { i64, ptr } %138, 0
  store i64 %140, ptr %139, align 8
  %141 = getelementptr inbounds { i64, ptr }, ptr %14, i32 0, i32 1
  %142 = extractvalue { i64, ptr } %138, 1
  store ptr %142, ptr %141, align 8
  %143 = getelementptr inbounds %"class.fastgltf::URIView", ptr %29, i32 0, i32 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %143, ptr align 8 %14, i64 16, i1 false), !tbaa.struct !15
  call void @llvm.lifetime.end.p0(i64 16, ptr %14) #5
  %144 = load i64, ptr %13, align 8, !tbaa !14
  %145 = add i64 %144, 1
  store i64 %145, ptr %13, align 8, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 16, ptr %15) #5
  %146 = getelementptr inbounds %"class.fastgltf::URIView", ptr %29, i32 0, i32 0
  %147 = load i64, ptr %13, align 8, !tbaa !14
  %148 = load i64, ptr %9, align 8, !tbaa !14
  %149 = load i64, ptr %13, align 8, !tbaa !14
  %150 = sub i64 %148, %149
  %151 = call { i64, ptr } @_ZNKSt17basic_string_viewIcSt11char_traitsIcEE6substrEmm(ptr noundef nonnull align 8 dereferenceable(16) %146, i64 noundef %147, i64 noundef %150)
  %152 = getelementptr inbounds { i64, ptr }, ptr %15, i32 0, i32 0
  %153 = extractvalue { i64, ptr } %151, 0
  store i64 %153, ptr %152, align 8
  %154 = getelementptr inbounds { i64, ptr }, ptr %15, i32 0, i32 1
  %155 = extractvalue { i64, ptr } %151, 1
  store ptr %155, ptr %154, align 8
  %156 = getelementptr inbounds %"class.fastgltf::URIView", ptr %29, i32 0, i32 5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %156, ptr align 8 %15, i64 16, i1 false), !tbaa.struct !15
  call void @llvm.lifetime.end.p0(i64 16, ptr %15) #5
  br label %171

157:                                              ; preds = %129
  %158 = load i64, ptr %3, align 8, !tbaa !14
  %159 = add i64 %158, 1
  store i64 %159, ptr %3, align 8, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 16, ptr %16) #5
  %160 = getelementptr inbounds %"class.fastgltf::URIView", ptr %29, i32 0, i32 0
  %161 = load i64, ptr %3, align 8, !tbaa !14
  %162 = load i64, ptr %12, align 8, !tbaa !14
  %163 = load i64, ptr %3, align 8, !tbaa !14
  %164 = sub i64 %162, %163
  %165 = call { i64, ptr } @_ZNKSt17basic_string_viewIcSt11char_traitsIcEE6substrEmm(ptr noundef nonnull align 8 dereferenceable(16) %160, i64 noundef %161, i64 noundef %164)
  %166 = getelementptr inbounds { i64, ptr }, ptr %16, i32 0, i32 0
  %167 = extractvalue { i64, ptr } %165, 0
  store i64 %167, ptr %166, align 8
  %168 = getelementptr inbounds { i64, ptr }, ptr %16, i32 0, i32 1
  %169 = extractvalue { i64, ptr } %165, 1
  store ptr %169, ptr %168, align 8
  %170 = getelementptr inbounds %"class.fastgltf::URIView", ptr %29, i32 0, i32 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %170, ptr align 8 %16, i64 16, i1 false), !tbaa.struct !15
  call void @llvm.lifetime.end.p0(i64 16, ptr %16) #5
  br label %171

171:                                              ; preds = %157, %132
  %172 = load i64, ptr %9, align 8, !tbaa !14
  store i64 %172, ptr %3, align 8, !tbaa !14
  store i32 0, ptr %5, align 4
  br label %173

173:                                              ; preds = %171, %119
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #5
  %174 = load i32, ptr %5, align 4
  switch i32 %174, label %289 [
    i32 0, label %175
  ]

175:                                              ; preds = %173
  br label %176

176:                                              ; preds = %175, %55
  %177 = getelementptr inbounds %"class.fastgltf::URIView", ptr %29, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %17, ptr align 8 %177, i64 16, i1 false), !tbaa.struct !15
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %18, ptr noundef @.str.19) #5
  %178 = getelementptr inbounds { i64, ptr }, ptr %17, i32 0, i32 0
  %179 = load i64, ptr %178, align 8
  %180 = getelementptr inbounds { i64, ptr }, ptr %17, i32 0, i32 1
  %181 = load ptr, ptr %180, align 8
  %182 = getelementptr inbounds { i64, ptr }, ptr %18, i32 0, i32 0
  %183 = load i64, ptr %182, align 8
  %184 = getelementptr inbounds { i64, ptr }, ptr %18, i32 0, i32 1
  %185 = load ptr, ptr %184, align 8
  %186 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE(i64 %179, ptr %181, i64 %183, ptr %185) #5
  br i1 %186, label %187, label %196

187:                                              ; preds = %176
  call void @llvm.lifetime.start.p0(i64 16, ptr %19) #5
  %188 = getelementptr inbounds %"class.fastgltf::URIView", ptr %29, i32 0, i32 0
  %189 = load i64, ptr %3, align 8, !tbaa !14
  %190 = call { i64, ptr } @_ZNKSt17basic_string_viewIcSt11char_traitsIcEE6substrEmm(ptr noundef nonnull align 8 dereferenceable(16) %188, i64 noundef %189, i64 noundef -1)
  %191 = getelementptr inbounds { i64, ptr }, ptr %19, i32 0, i32 0
  %192 = extractvalue { i64, ptr } %190, 0
  store i64 %192, ptr %191, align 8
  %193 = getelementptr inbounds { i64, ptr }, ptr %19, i32 0, i32 1
  %194 = extractvalue { i64, ptr } %190, 1
  store ptr %194, ptr %193, align 8
  %195 = getelementptr inbounds %"class.fastgltf::URIView", ptr %29, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %195, ptr align 8 %19, i64 16, i1 false), !tbaa.struct !15
  call void @llvm.lifetime.end.p0(i64 16, ptr %19) #5
  br label %288

196:                                              ; preds = %176
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #5
  %197 = getelementptr inbounds %"class.fastgltf::URIView", ptr %29, i32 0, i32 0
  %198 = load i64, ptr %3, align 8, !tbaa !14
  %199 = call noundef i64 @_ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findEcm(ptr noundef nonnull align 8 dereferenceable(16) %197, i8 noundef signext 63, i64 noundef %198) #5
  store i64 %199, ptr %20, align 8, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #5
  %200 = getelementptr inbounds %"class.fastgltf::URIView", ptr %29, i32 0, i32 0
  %201 = load i64, ptr %3, align 8, !tbaa !14
  %202 = call noundef i64 @_ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findEcm(ptr noundef nonnull align 8 dereferenceable(16) %200, i8 noundef signext 35, i64 noundef %201) #5
  store i64 %202, ptr %21, align 8, !tbaa !14
  %203 = load i64, ptr %20, align 8, !tbaa !14
  %204 = icmp ne i64 %203, -1
  br i1 %204, label %205, label %253

205:                                              ; preds = %196
  call void @llvm.lifetime.start.p0(i64 16, ptr %22) #5
  %206 = getelementptr inbounds %"class.fastgltf::URIView", ptr %29, i32 0, i32 0
  %207 = load i64, ptr %3, align 8, !tbaa !14
  %208 = load i64, ptr %20, align 8, !tbaa !14
  %209 = load i64, ptr %3, align 8, !tbaa !14
  %210 = sub i64 %208, %209
  %211 = call { i64, ptr } @_ZNKSt17basic_string_viewIcSt11char_traitsIcEE6substrEmm(ptr noundef nonnull align 8 dereferenceable(16) %206, i64 noundef %207, i64 noundef %210)
  %212 = getelementptr inbounds { i64, ptr }, ptr %22, i32 0, i32 0
  %213 = extractvalue { i64, ptr } %211, 0
  store i64 %213, ptr %212, align 8
  %214 = getelementptr inbounds { i64, ptr }, ptr %22, i32 0, i32 1
  %215 = extractvalue { i64, ptr } %211, 1
  store ptr %215, ptr %214, align 8
  %216 = getelementptr inbounds %"class.fastgltf::URIView", ptr %29, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %216, ptr align 8 %22, i64 16, i1 false), !tbaa.struct !15
  call void @llvm.lifetime.end.p0(i64 16, ptr %22) #5
  %217 = load i64, ptr %21, align 8, !tbaa !14
  %218 = icmp eq i64 %217, -1
  br i1 %218, label %219, label %229

219:                                              ; preds = %205
  call void @llvm.lifetime.start.p0(i64 16, ptr %23) #5
  %220 = getelementptr inbounds %"class.fastgltf::URIView", ptr %29, i32 0, i32 0
  %221 = load i64, ptr %20, align 8, !tbaa !14
  %222 = add i64 %221, 1
  store i64 %222, ptr %20, align 8, !tbaa !14
  %223 = call { i64, ptr } @_ZNKSt17basic_string_viewIcSt11char_traitsIcEE6substrEmm(ptr noundef nonnull align 8 dereferenceable(16) %220, i64 noundef %222, i64 noundef -1)
  %224 = getelementptr inbounds { i64, ptr }, ptr %23, i32 0, i32 0
  %225 = extractvalue { i64, ptr } %223, 0
  store i64 %225, ptr %224, align 8
  %226 = getelementptr inbounds { i64, ptr }, ptr %23, i32 0, i32 1
  %227 = extractvalue { i64, ptr } %223, 1
  store ptr %227, ptr %226, align 8
  %228 = getelementptr inbounds %"class.fastgltf::URIView", ptr %29, i32 0, i32 6
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %228, ptr align 8 %23, i64 16, i1 false), !tbaa.struct !15
  call void @llvm.lifetime.end.p0(i64 16, ptr %23) #5
  br label %252

229:                                              ; preds = %205
  %230 = load i64, ptr %20, align 8, !tbaa !14
  %231 = add i64 %230, 1
  store i64 %231, ptr %20, align 8, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 16, ptr %24) #5
  %232 = getelementptr inbounds %"class.fastgltf::URIView", ptr %29, i32 0, i32 0
  %233 = load i64, ptr %20, align 8, !tbaa !14
  %234 = load i64, ptr %21, align 8, !tbaa !14
  %235 = load i64, ptr %20, align 8, !tbaa !14
  %236 = sub i64 %234, %235
  %237 = call { i64, ptr } @_ZNKSt17basic_string_viewIcSt11char_traitsIcEE6substrEmm(ptr noundef nonnull align 8 dereferenceable(16) %232, i64 noundef %233, i64 noundef %236)
  %238 = getelementptr inbounds { i64, ptr }, ptr %24, i32 0, i32 0
  %239 = extractvalue { i64, ptr } %237, 0
  store i64 %239, ptr %238, align 8
  %240 = getelementptr inbounds { i64, ptr }, ptr %24, i32 0, i32 1
  %241 = extractvalue { i64, ptr } %237, 1
  store ptr %241, ptr %240, align 8
  %242 = getelementptr inbounds %"class.fastgltf::URIView", ptr %29, i32 0, i32 6
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %242, ptr align 8 %24, i64 16, i1 false), !tbaa.struct !15
  call void @llvm.lifetime.end.p0(i64 16, ptr %24) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr %25) #5
  %243 = getelementptr inbounds %"class.fastgltf::URIView", ptr %29, i32 0, i32 0
  %244 = load i64, ptr %21, align 8, !tbaa !14
  %245 = add i64 %244, 1
  store i64 %245, ptr %21, align 8, !tbaa !14
  %246 = call { i64, ptr } @_ZNKSt17basic_string_viewIcSt11char_traitsIcEE6substrEmm(ptr noundef nonnull align 8 dereferenceable(16) %243, i64 noundef %245, i64 noundef -1)
  %247 = getelementptr inbounds { i64, ptr }, ptr %25, i32 0, i32 0
  %248 = extractvalue { i64, ptr } %246, 0
  store i64 %248, ptr %247, align 8
  %249 = getelementptr inbounds { i64, ptr }, ptr %25, i32 0, i32 1
  %250 = extractvalue { i64, ptr } %246, 1
  store ptr %250, ptr %249, align 8
  %251 = getelementptr inbounds %"class.fastgltf::URIView", ptr %29, i32 0, i32 7
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %251, ptr align 8 %25, i64 16, i1 false), !tbaa.struct !15
  call void @llvm.lifetime.end.p0(i64 16, ptr %25) #5
  br label %252

252:                                              ; preds = %229, %219
  br label %287

253:                                              ; preds = %196
  %254 = load i64, ptr %21, align 8, !tbaa !14
  %255 = icmp ne i64 %254, -1
  br i1 %255, label %256, label %277

256:                                              ; preds = %253
  call void @llvm.lifetime.start.p0(i64 16, ptr %26) #5
  %257 = getelementptr inbounds %"class.fastgltf::URIView", ptr %29, i32 0, i32 0
  %258 = load i64, ptr %3, align 8, !tbaa !14
  %259 = load i64, ptr %21, align 8, !tbaa !14
  %260 = load i64, ptr %3, align 8, !tbaa !14
  %261 = sub i64 %259, %260
  %262 = call { i64, ptr } @_ZNKSt17basic_string_viewIcSt11char_traitsIcEE6substrEmm(ptr noundef nonnull align 8 dereferenceable(16) %257, i64 noundef %258, i64 noundef %261)
  %263 = getelementptr inbounds { i64, ptr }, ptr %26, i32 0, i32 0
  %264 = extractvalue { i64, ptr } %262, 0
  store i64 %264, ptr %263, align 8
  %265 = getelementptr inbounds { i64, ptr }, ptr %26, i32 0, i32 1
  %266 = extractvalue { i64, ptr } %262, 1
  store ptr %266, ptr %265, align 8
  %267 = getelementptr inbounds %"class.fastgltf::URIView", ptr %29, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %267, ptr align 8 %26, i64 16, i1 false), !tbaa.struct !15
  call void @llvm.lifetime.end.p0(i64 16, ptr %26) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr %27) #5
  %268 = getelementptr inbounds %"class.fastgltf::URIView", ptr %29, i32 0, i32 0
  %269 = load i64, ptr %21, align 8, !tbaa !14
  %270 = add i64 %269, 1
  store i64 %270, ptr %21, align 8, !tbaa !14
  %271 = call { i64, ptr } @_ZNKSt17basic_string_viewIcSt11char_traitsIcEE6substrEmm(ptr noundef nonnull align 8 dereferenceable(16) %268, i64 noundef %270, i64 noundef -1)
  %272 = getelementptr inbounds { i64, ptr }, ptr %27, i32 0, i32 0
  %273 = extractvalue { i64, ptr } %271, 0
  store i64 %273, ptr %272, align 8
  %274 = getelementptr inbounds { i64, ptr }, ptr %27, i32 0, i32 1
  %275 = extractvalue { i64, ptr } %271, 1
  store ptr %275, ptr %274, align 8
  %276 = getelementptr inbounds %"class.fastgltf::URIView", ptr %29, i32 0, i32 7
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %276, ptr align 8 %27, i64 16, i1 false), !tbaa.struct !15
  call void @llvm.lifetime.end.p0(i64 16, ptr %27) #5
  br label %286

277:                                              ; preds = %253
  call void @llvm.lifetime.start.p0(i64 16, ptr %28) #5
  %278 = getelementptr inbounds %"class.fastgltf::URIView", ptr %29, i32 0, i32 0
  %279 = load i64, ptr %3, align 8, !tbaa !14
  %280 = call { i64, ptr } @_ZNKSt17basic_string_viewIcSt11char_traitsIcEE6substrEmm(ptr noundef nonnull align 8 dereferenceable(16) %278, i64 noundef %279, i64 noundef -1)
  %281 = getelementptr inbounds { i64, ptr }, ptr %28, i32 0, i32 0
  %282 = extractvalue { i64, ptr } %280, 0
  store i64 %282, ptr %281, align 8
  %283 = getelementptr inbounds { i64, ptr }, ptr %28, i32 0, i32 1
  %284 = extractvalue { i64, ptr } %280, 1
  store ptr %284, ptr %283, align 8
  %285 = getelementptr inbounds %"class.fastgltf::URIView", ptr %29, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %285, ptr align 8 %28, i64 16, i1 false), !tbaa.struct !15
  call void @llvm.lifetime.end.p0(i64 16, ptr %28) #5
  br label %286

286:                                              ; preds = %277, %256
  br label %287

287:                                              ; preds = %286, %252
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #5
  br label %288

288:                                              ; preds = %287, %187
  store i32 0, ptr %5, align 4
  br label %289

289:                                              ; preds = %288, %173, %42
  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %3) #5
  %290 = load i32, ptr %5, align 4
  switch i32 %290, label %292 [
    i32 0, label %291
    i32 1, label %291
  ]

291:                                              ; preds = %289, %289, %32
  ret void

292:                                              ; preds = %289
  unreachable
}

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNKSt17basic_string_viewIcSt11char_traitsIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16)) #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findEcm(ptr noundef nonnull align 8 dereferenceable(16), i8 noundef signext, i64 noundef) #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local { i64, ptr } @_ZNKSt17basic_string_viewIcSt11char_traitsIcEE6substrEmm(ptr noundef nonnull align 8 dereferenceable(16), i64 noundef, i64 noundef) #3 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN8fastgltf10startsWithESt17basic_string_viewIcSt11char_traitsIcEES3_(i64, ptr, i64, ptr) #4

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

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

attributes #0 = { 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 #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #3 = { 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 #4 = { 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 #5 = { 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, !13, i64 128}
!10 = !{!"_ZTSN8fastgltf7URIViewE", !11, i64 0, !11, i64 16, !11, i64 32, !11, i64 48, !11, i64 64, !11, i64 80, !11, i64 96, !11, i64 112, !13, i64 128}
!11 = !{!"_ZTSSt17basic_string_viewIcSt11char_traitsIcEE", !12, i64 0, !6, i64 8}
!12 = !{!"long", !7, i64 0}
!13 = !{!"bool", !7, i64 0}
!14 = !{!12, !12, i64 0}
!15 = !{i64 0, i64 8, !14, i64 8, i64 8, !5}
!16 = !{!7, !7, i64 0}


; 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.std::basic_string_view" = type { i64, ptr }

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt17basic_string_viewIcSt11char_traitsIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #0 align 2

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN8fastgltf7URIView5parseEv(ptr noundef nonnull align 8 dereferenceable(129) %0) local_unnamed_addr #1 align 2 {
  %2 = alloca %"class.std::basic_string_view", align 8
  %3 = alloca %"class.std::basic_string_view", align 8
  %4 = tail call noundef zeroext i1 @_ZNKSt17basic_string_viewIcSt11char_traitsIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16) %0) #3
  br i1 %4, label %5, label %7

5:                                                ; preds = %1
  %6 = getelementptr inbounds i8, ptr %0, i64 128
  store i8 0, ptr %6, align 8, !tbaa !5
  br label %118

7:                                                ; preds = %1
  %8 = tail call noundef i64 @_ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findEcm(ptr noundef nonnull align 8 dereferenceable(16) %0, i8 noundef signext 58, i64 noundef 0) #3
  switch i64 %8, label %11 [
    i64 -1, label %17
    i64 0, label %9
  ]

9:                                                ; preds = %7
  %10 = getelementptr inbounds i8, ptr %0, i64 128
  store i8 0, ptr %10, align 8, !tbaa !5
  br label %118

11:                                               ; preds = %7
  %12 = tail call { i64, ptr } @_ZNKSt17basic_string_viewIcSt11char_traitsIcEE6substrEmm(ptr noundef nonnull align 8 dereferenceable(16) %0, i64 noundef 0, i64 noundef %8)
  %13 = extractvalue { i64, ptr } %12, 0
  %14 = extractvalue { i64, ptr } %12, 1
  %15 = getelementptr inbounds i8, ptr %0, i64 16
  store i64 %13, ptr %15, align 8, !tbaa !13
  %.sroa.453.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 24
  store ptr %14, ptr %.sroa.453.0..sroa_idx, align 8, !tbaa !14
  %16 = add nuw i64 %8, 1
  br label %17

17:                                               ; preds = %7, %11
  %.0 = phi i64 [ %16, %11 ], [ 0, %7 ]
  %18 = tail call { i64, ptr } @_ZNKSt17basic_string_viewIcSt11char_traitsIcEE6substrEmm(ptr noundef nonnull align 8 dereferenceable(16) %0, i64 noundef %.0, i64 noundef -1)
  %19 = extractvalue { i64, ptr } %18, 0
  %20 = extractvalue { i64, ptr } %18, 1
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %2, ptr noundef @.str.18) #3
  %21 = load i64, ptr %2, align 8
  %22 = getelementptr inbounds i8, ptr %2, i64 8
  %23 = load ptr, ptr %22, align 8
  %24 = call noundef zeroext i1 @_ZN8fastgltf10startsWithESt17basic_string_viewIcSt11char_traitsIcEES3_(i64 %19, ptr %20, i64 %21, ptr %23)
  br i1 %24, label %25, label %.thread

25:                                               ; preds = %17
  %26 = add i64 %.0, 2
  %27 = call noundef i64 @_ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findEcm(ptr noundef nonnull align 8 dereferenceable(16) %0, i8 noundef signext 47, i64 noundef %26) #3
  %28 = call noundef i64 @_ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findEcm(ptr noundef nonnull align 8 dereferenceable(16) %0, i8 noundef signext 64, i64 noundef %26) #3
  %29 = icmp ult i64 %28, %27
  br i1 %29, label %30, label %39

30:                                               ; preds = %25
  %31 = sub i64 %28, %26
  %32 = call { i64, ptr } @_ZNKSt17basic_string_viewIcSt11char_traitsIcEE6substrEmm(ptr noundef nonnull align 8 dereferenceable(16) %0, i64 noundef %26, i64 noundef %31)
  %33 = extractvalue { i64, ptr } %32, 0
  %34 = extractvalue { i64, ptr } %32, 1
  %35 = getelementptr inbounds i8, ptr %0, i64 48
  store i64 %33, ptr %35, align 8, !tbaa !13
  %.sroa.442.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 56
  store ptr %34, ptr %.sroa.442.0..sroa_idx, align 8, !tbaa !14
  %36 = call noundef i64 @_ZNKSt17basic_string_viewIcSt11char_traitsIcEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %35) #3
  %37 = add i64 %.0, 3
  %38 = add i64 %37, %36
  br label %39

39:                                               ; preds = %30, %25
  %.1 = phi i64 [ %38, %30 ], [ %26, %25 ]
  %40 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt17basic_string_viewIcSt11char_traitsIcEEixEm(ptr noundef nonnull align 8 dereferenceable(16) %0, i64 noundef %.1) #3
  %41 = load i8, ptr %40, align 1, !tbaa !15
  %42 = icmp eq i8 %41, 91
  br i1 %42, label %43, label %46

43:                                               ; preds = %39
  %44 = call noundef i64 @_ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findEcm(ptr noundef nonnull align 8 dereferenceable(16) %0, i8 noundef signext 93, i64 noundef %.1) #3
  %45 = icmp eq i64 %44, -1
  br i1 %45, label %56, label %48

46:                                               ; preds = %39
  %47 = add i64 %27, -1
  br label %48

48:                                               ; preds = %43, %46
  %.1.sink = phi i64 [ %.1, %46 ], [ %44, %43 ]
  %.083 = phi i64 [ %47, %46 ], [ %44, %43 ]
  %49 = call noundef i64 @_ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findEcm(ptr noundef nonnull align 8 dereferenceable(16) %0, i8 noundef signext 58, i64 noundef %.1.sink) #3
  %.not92 = icmp eq i64 %49, -1
  br i1 %.not92, label %.thread.sink.split, label %50

50:                                               ; preds = %48
  %51 = sub i64 %49, %.1
  %52 = call { i64, ptr } @_ZNKSt17basic_string_viewIcSt11char_traitsIcEE6substrEmm(ptr noundef nonnull align 8 dereferenceable(16) %0, i64 noundef %.1, i64 noundef %51)
  %53 = extractvalue { i64, ptr } %52, 0
  %54 = extractvalue { i64, ptr } %52, 1
  %55 = getelementptr inbounds i8, ptr %0, i64 64
  store i64 %53, ptr %55, align 8, !tbaa !13
  %.sroa.432.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 72
  store ptr %54, ptr %.sroa.432.0..sroa_idx, align 8, !tbaa !14
  br label %.thread.sink.split

56:                                               ; preds = %43
  %57 = getelementptr inbounds i8, ptr %0, i64 128
  store i8 0, ptr %57, align 8, !tbaa !5
  br label %118

.thread.sink.split:                               ; preds = %48, %50
  %.sink105 = phi i64 [ %49, %50 ], [ %.1, %48 ]
  %.sink = phi i64 [ %27, %50 ], [ %.083, %48 ]
  %.sink100 = phi i64 [ 80, %50 ], [ 64, %48 ]
  %.sink97 = phi i64 [ 88, %50 ], [ 72, %48 ]
  %58 = add i64 %.sink105, 1
  %59 = sub i64 %.sink, %58
  %60 = call { i64, ptr } @_ZNKSt17basic_string_viewIcSt11char_traitsIcEE6substrEmm(ptr noundef nonnull align 8 dereferenceable(16) %0, i64 noundef %58, i64 noundef %59)
  %61 = extractvalue { i64, ptr } %60, 0
  %62 = extractvalue { i64, ptr } %60, 1
  %63 = getelementptr inbounds i8, ptr %0, i64 %.sink100
  store i64 %61, ptr %63, align 8, !tbaa !13
  %.sroa.430.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 %.sink97
  store ptr %62, ptr %.sroa.430.0..sroa_idx, align 8, !tbaa !14
  br label %.thread

.thread:                                          ; preds = %.thread.sink.split, %17
  %.3 = phi i64 [ %.0, %17 ], [ %27, %.thread.sink.split ]
  %64 = getelementptr inbounds i8, ptr %0, i64 16
  %.sroa.026.0.copyload = load i64, ptr %64, align 8, !tbaa !13
  %.sroa.2.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 24
  %.sroa.2.0.copyload = load ptr, ptr %.sroa.2.0..sroa_idx, align 8, !tbaa !14
  call void @_ZNSt17basic_string_viewIcSt11char_traitsIcEEC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %3, ptr noundef @.str.19) #3
  %65 = load i64, ptr %3, align 8
  %66 = getelementptr inbounds i8, ptr %3, i64 8
  %67 = load ptr, ptr %66, align 8
  %68 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcEEbSt17basic_string_viewIT_T0_ENSt15__type_identityIS5_E4typeE(i64 %.sroa.026.0.copyload, ptr %.sroa.2.0.copyload, i64 %65, ptr %67) #3
  br i1 %68, label %69, label %74

69:                                               ; preds = %.thread
  %70 = call { i64, ptr } @_ZNKSt17basic_string_viewIcSt11char_traitsIcEE6substrEmm(ptr noundef nonnull align 8 dereferenceable(16) %0, i64 noundef %.3, i64 noundef -1)
  %71 = extractvalue { i64, ptr } %70, 0
  %72 = extractvalue { i64, ptr } %70, 1
  %73 = getelementptr inbounds i8, ptr %0, i64 32
  store i64 %71, ptr %73, align 8, !tbaa !13
  %.sroa.425.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 40
  store ptr %72, ptr %.sroa.425.0..sroa_idx, align 8, !tbaa !14
  br label %118

74:                                               ; preds = %.thread
  %75 = call noundef i64 @_ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findEcm(ptr noundef nonnull align 8 dereferenceable(16) %0, i8 noundef signext 63, i64 noundef %.3) #3
  %76 = call noundef i64 @_ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findEcm(ptr noundef nonnull align 8 dereferenceable(16) %0, i8 noundef signext 35, i64 noundef %.3) #3
  %.not93 = icmp eq i64 %75, -1
  br i1 %.not93, label %101, label %77

77:                                               ; preds = %74
  %78 = sub i64 %75, %.3
  %79 = call { i64, ptr } @_ZNKSt17basic_string_viewIcSt11char_traitsIcEE6substrEmm(ptr noundef nonnull align 8 dereferenceable(16) %0, i64 noundef %.3, i64 noundef %78)
  %80 = extractvalue { i64, ptr } %79, 0
  %81 = extractvalue { i64, ptr } %79, 1
  %82 = getelementptr inbounds i8, ptr %0, i64 32
  store i64 %80, ptr %82, align 8, !tbaa !13
  %.sroa.412.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 40
  store ptr %81, ptr %.sroa.412.0..sroa_idx, align 8, !tbaa !14
  %83 = icmp eq i64 %76, -1
  %84 = add nuw i64 %75, 1
  br i1 %83, label %85, label %90

85:                                               ; preds = %77
  %86 = call { i64, ptr } @_ZNKSt17basic_string_viewIcSt11char_traitsIcEE6substrEmm(ptr noundef nonnull align 8 dereferenceable(16) %0, i64 noundef %84, i64 noundef -1)
  %87 = extractvalue { i64, ptr } %86, 0
  %88 = extractvalue { i64, ptr } %86, 1
  %89 = getelementptr inbounds i8, ptr %0, i64 96
  store i64 %87, ptr %89, align 8, !tbaa !13
  %.sroa.410.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 104
  store ptr %88, ptr %.sroa.410.0..sroa_idx, align 8, !tbaa !14
  br label %118

90:                                               ; preds = %77
  %91 = sub i64 %76, %84
  %92 = call { i64, ptr } @_ZNKSt17basic_string_viewIcSt11char_traitsIcEE6substrEmm(ptr noundef nonnull align 8 dereferenceable(16) %0, i64 noundef %84, i64 noundef %91)
  %93 = extractvalue { i64, ptr } %92, 0
  %94 = extractvalue { i64, ptr } %92, 1
  %95 = getelementptr inbounds i8, ptr %0, i64 96
  store i64 %93, ptr %95, align 8, !tbaa !13
  %.sroa.48.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 104
  store ptr %94, ptr %.sroa.48.0..sroa_idx, align 8, !tbaa !14
  %96 = add nuw i64 %76, 1
  %97 = call { i64, ptr } @_ZNKSt17basic_string_viewIcSt11char_traitsIcEE6substrEmm(ptr noundef nonnull align 8 dereferenceable(16) %0, i64 noundef %96, i64 noundef -1)
  %98 = extractvalue { i64, ptr } %97, 0
  %99 = extractvalue { i64, ptr } %97, 1
  %100 = getelementptr inbounds i8, ptr %0, i64 112
  store i64 %98, ptr %100, align 8, !tbaa !13
  %.sroa.46.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 120
  store ptr %99, ptr %.sroa.46.0..sroa_idx, align 8, !tbaa !14
  br label %118

101:                                              ; preds = %74
  %.not94 = icmp eq i64 %76, -1
  br i1 %.not94, label %113, label %102

102:                                              ; preds = %101
  %103 = sub i64 %76, %.3
  %104 = call { i64, ptr } @_ZNKSt17basic_string_viewIcSt11char_traitsIcEE6substrEmm(ptr noundef nonnull align 8 dereferenceable(16) %0, i64 noundef %.3, i64 noundef %103)
  %105 = extractvalue { i64, ptr } %104, 0
  %106 = extractvalue { i64, ptr } %104, 1
  %107 = getelementptr inbounds i8, ptr %0, i64 32
  store i64 %105, ptr %107, align 8, !tbaa !13
  %.sroa.44.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 40
  store ptr %106, ptr %.sroa.44.0..sroa_idx, align 8, !tbaa !14
  %108 = add nuw i64 %76, 1
  %109 = call { i64, ptr } @_ZNKSt17basic_string_viewIcSt11char_traitsIcEE6substrEmm(ptr noundef nonnull align 8 dereferenceable(16) %0, i64 noundef %108, i64 noundef -1)
  %110 = extractvalue { i64, ptr } %109, 0
  %111 = extractvalue { i64, ptr } %109, 1
  %112 = getelementptr inbounds i8, ptr %0, i64 112
  store i64 %110, ptr %112, align 8, !tbaa !13
  %.sroa.42.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 120
  store ptr %111, ptr %.sroa.42.0..sroa_idx, align 8, !tbaa !14
  br label %118

113:                                              ; preds = %101
  %114 = call { i64, ptr } @_ZNKSt17basic_string_viewIcSt11char_traitsIcEE6substrEmm(ptr noundef nonnull align 8 dereferenceable(16) %0, i64 noundef %.3, i64 noundef -1)
  %115 = extractvalue { i64, ptr } %114, 0
  %116 = extractvalue { i64, ptr } %114, 1
  %117 = getelementptr inbounds i8, ptr %0, i64 32
  store i64 %115, ptr %117, align 8, !tbaa !13
  %.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %0, i64 40
  store ptr %116, ptr %.sroa.4.0..sroa_idx, align 8, !tbaa !14
  br label %118

118:                                              ; preds = %56, %9, %90, %85, %113, %102, %69, %5
  ret void
}

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNKSt17basic_string_viewIcSt11char_traitsIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt17basic_string_viewIcSt11char_traitsIcEE4findEcm(ptr noundef nonnull align 8 dereferenceable(16), i8 noundef signext, i64 noundef) local_unnamed_addr #0 align 2

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

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

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

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

attributes #0 = { 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 #1 = { 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 #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 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !12, i64 128}
!6 = !{!"_ZTSN8fastgltf7URIViewE", !7, i64 0, !7, i64 16, !7, i64 32, !7, i64 48, !7, i64 64, !7, i64 80, !7, i64 96, !7, i64 112, !12, i64 128}
!7 = !{!"_ZTSSt17basic_string_viewIcSt11char_traitsIcEE", !8, i64 0, !11, i64 8}
!8 = !{!"long", !9, i64 0}
!9 = !{!"omnipotent char", !10, i64 0}
!10 = !{!"Simple C++ TBAA"}
!11 = !{!"any pointer", !9, i64 0}
!12 = !{!"bool", !9, i64 0}
!13 = !{!8, !8, i64 0}
!14 = !{!11, !11, i64 0}
!15 = !{!9, !9, i64 0}


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