; LLVM IR from Overload-Technologies/Overload :: Dependencies/assimp/code/AssetLib/Obj (ObjFileMtlImporter)

; 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.__gnu_cxx::__normal_iterator" = type { ptr }
%"class.Assimp::ObjFileMtlImporter" = type { %"class.std::__cxx11::basic_string", %"class.__gnu_cxx::__normal_iterator", %"class.__gnu_cxx::__normal_iterator", ptr, i32, %"class.std::vector" }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<char, std::allocator<char>>::_Vector_impl" }
%"struct.std::_Vector_base<char, std::allocator<char>>::_Vector_impl" = type { %"struct.std::_Vector_base<char, std::allocator<char>>::_Vector_impl_data" }
%"struct.std::_Vector_base<char, std::allocator<char>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.Assimp::ObjFile::Model" = type { %"class.std::__cxx11::basic_string", %"class.std::vector.0", ptr, ptr, ptr, %"class.std::vector.5", %"class.std::vector.10", %"class.std::vector.10", %"class.std::vector.10", %"class.std::map", ptr, %"class.std::__cxx11::basic_string", %"class.std::vector.10", i32, ptr, %"class.std::vector.18", %"class.std::map.23" }
%"class.std::vector.0" = type { %"struct.std::_Vector_base.1" }
%"struct.std::_Vector_base.1" = type { %"struct.std::_Vector_base<Assimp::ObjFile::Object *, std::allocator<Assimp::ObjFile::Object *>>::_Vector_impl" }
%"struct.std::_Vector_base<Assimp::ObjFile::Object *, std::allocator<Assimp::ObjFile::Object *>>::_Vector_impl" = type { %"struct.std::_Vector_base<Assimp::ObjFile::Object *, std::allocator<Assimp::ObjFile::Object *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Assimp::ObjFile::Object *, std::allocator<Assimp::ObjFile::Object *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.5" = type { %"struct.std::_Vector_base.6" }
%"struct.std::_Vector_base.6" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::map" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, std::vector<unsigned int> *>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, std::vector<unsigned int> *>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, std::vector<unsigned int> *>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, std::vector<unsigned int> *>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"class.std::vector.10" = type { %"struct.std::_Vector_base.11" }
%"struct.std::_Vector_base.11" = type { %"struct.std::_Vector_base<aiVector3t<float>, std::allocator<aiVector3t<float>>>::_Vector_impl" }
%"struct.std::_Vector_base<aiVector3t<float>, std::allocator<aiVector3t<float>>>::_Vector_impl" = type { %"struct.std::_Vector_base<aiVector3t<float>, std::allocator<aiVector3t<float>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<aiVector3t<float>, std::allocator<aiVector3t<float>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.18" = type { %"struct.std::_Vector_base.19" }
%"struct.std::_Vector_base.19" = type { %"struct.std::_Vector_base<Assimp::ObjFile::Mesh *, std::allocator<Assimp::ObjFile::Mesh *>>::_Vector_impl" }
%"struct.std::_Vector_base<Assimp::ObjFile::Mesh *, std::allocator<Assimp::ObjFile::Mesh *>>::_Vector_impl" = type { %"struct.std::_Vector_base<Assimp::ObjFile::Mesh *, std::allocator<Assimp::ObjFile::Mesh *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Assimp::ObjFile::Mesh *, std::allocator<Assimp::ObjFile::Mesh *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::map.23" = type { %"class.std::_Rb_tree.24" }
%"class.std::_Rb_tree.24" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, Assimp::ObjFile::Material *>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, Assimp::ObjFile::Material *>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, Assimp::ObjFile::Material *>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, Assimp::ObjFile::Material *>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.Assimp::ObjFile::Material" = type { %struct.aiString, %struct.aiString, %struct.aiString, %struct.aiString, %struct.aiString, %struct.aiString, %struct.aiString, [6 x %struct.aiString], %struct.aiString, %struct.aiString, %struct.aiString, %struct.aiString, %struct.aiString, %struct.aiString, %struct.aiString, [20 x i8], %struct.aiColor3D, %struct.aiColor3D, %struct.aiColor3D, %struct.aiColor3D, float, float, i32, float, %struct.aiColor3D, %"struct.Assimp::Maybe", %"struct.Assimp::Maybe", %"struct.Assimp::Maybe.28", %"struct.Assimp::Maybe", %"struct.Assimp::Maybe", float, float }
%struct.aiString = type { i32, [1024 x i8] }
%struct.aiColor3D = type { float, float, float }
%"struct.Assimp::Maybe.28" = type <{ %struct.aiColor3D, i8, [3 x i8] }>
%"struct.Assimp::Maybe" = type <{ float, i8, [3 x i8] }>

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN6Assimp18ObjFileMtlImporter4loadEv(ptr noundef nonnull align 8 dereferenceable(88) %0) #1 align 2 {
  %2 = alloca ptr, align 8
  %3 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %4 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %5 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %6 = alloca float, align 4
  %7 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %8 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %9 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %10 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %11 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %12 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %13 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %14 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %15 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %16 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %17 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %18 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %19 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %20 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %21 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %22 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %23 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %24 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %25 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %26 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %27 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %28 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %29 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %30 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %31 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %32 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %33 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %34 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %35 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %36 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  store ptr %0, ptr %2, align 8, !tbaa !5
  %37 = load ptr, ptr %2, align 8
  %38 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 1
  %39 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 2
  %40 = call noundef zeroext i1 @_ZN9__gnu_cxxeqIPcSt6vectorIcSaIcEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8) %38, ptr noundef nonnull align 8 dereferenceable(8) %39) #6
  br i1 %40, label %41, label %42

41:                                               ; preds = %1
  br label %495

42:                                               ; preds = %1
  br label %43

43:                                               ; preds = %494, %42
  %44 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 1
  %45 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 2
  %46 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPcSt6vectorIcSaIcEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8) %44, ptr noundef nonnull align 8 dereferenceable(8) %45) #6
  br i1 %46, label %47, label %495

47:                                               ; preds = %43
  %48 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 1
  %49 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %48) #6
  %50 = load i8, ptr %49, align 1, !tbaa !9
  %51 = sext i8 %50 to i32
  switch i32 %51, label %483 [
    i32 107, label %52
    i32 75, label %52
    i32 84, label %152
    i32 100, label %210
    i32 78, label %263
    i32 110, label %263
    i32 80, label %315
    i32 109, label %415
    i32 98, label %415
    i32 114, label %415
    i32 105, label %426
    i32 97, label %458
  ]

52:                                               ; preds = %47, %47
  %53 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 1
  %54 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %53) #6
  %55 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 1
  %56 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %55) #6
  %57 = load i8, ptr %56, align 1, !tbaa !9
  %58 = sext i8 %57 to i32
  %59 = icmp eq i32 %58, 97
  br i1 %59, label %60, label %75

60:                                               ; preds = %52
  %61 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 1
  %62 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %61) #6
  %63 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 3
  %64 = load ptr, ptr %63, align 8, !tbaa !10
  %65 = getelementptr inbounds %"struct.Assimp::ObjFile::Model", ptr %64, i32 0, i32 3
  %66 = load ptr, ptr %65, align 8, !tbaa !21
  %67 = icmp ne ptr %66, null
  br i1 %67, label %68, label %74

68:                                               ; preds = %60
  %69 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 3
  %70 = load ptr, ptr %69, align 8, !tbaa !10
  %71 = getelementptr inbounds %"struct.Assimp::ObjFile::Model", ptr %70, i32 0, i32 3
  %72 = load ptr, ptr %71, align 8, !tbaa !21
  %73 = getelementptr inbounds %"struct.Assimp::ObjFile::Material", ptr %72, i32 0, i32 16
  call void @_ZN6Assimp18ObjFileMtlImporter12getColorRGBAEP9aiColor3D(ptr noundef nonnull align 8 dereferenceable(88) %37, ptr noundef %73)
  br label %74

74:                                               ; preds = %68, %60
  br label %141

75:                                               ; preds = %52
  %76 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 1
  %77 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %76) #6
  %78 = load i8, ptr %77, align 1, !tbaa !9
  %79 = sext i8 %78 to i32
  %80 = icmp eq i32 %79, 100
  br i1 %80, label %81, label %96

81:                                               ; preds = %75
  %82 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 1
  %83 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %82) #6
  %84 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 3
  %85 = load ptr, ptr %84, align 8, !tbaa !10
  %86 = getelementptr inbounds %"struct.Assimp::ObjFile::Model", ptr %85, i32 0, i32 3
  %87 = load ptr, ptr %86, align 8, !tbaa !21
  %88 = icmp ne ptr %87, null
  br i1 %88, label %89, label %95

89:                                               ; preds = %81
  %90 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 3
  %91 = load ptr, ptr %90, align 8, !tbaa !10
  %92 = getelementptr inbounds %"struct.Assimp::ObjFile::Model", ptr %91, i32 0, i32 3
  %93 = load ptr, ptr %92, align 8, !tbaa !21
  %94 = getelementptr inbounds %"struct.Assimp::ObjFile::Material", ptr %93, i32 0, i32 17
  call void @_ZN6Assimp18ObjFileMtlImporter12getColorRGBAEP9aiColor3D(ptr noundef nonnull align 8 dereferenceable(88) %37, ptr noundef %94)
  br label %95

95:                                               ; preds = %89, %81
  br label %140

96:                                               ; preds = %75
  %97 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 1
  %98 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %97) #6
  %99 = load i8, ptr %98, align 1, !tbaa !9
  %100 = sext i8 %99 to i32
  %101 = icmp eq i32 %100, 115
  br i1 %101, label %102, label %117

102:                                              ; preds = %96
  %103 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 1
  %104 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %103) #6
  %105 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 3
  %106 = load ptr, ptr %105, align 8, !tbaa !10
  %107 = getelementptr inbounds %"struct.Assimp::ObjFile::Model", ptr %106, i32 0, i32 3
  %108 = load ptr, ptr %107, align 8, !tbaa !21
  %109 = icmp ne ptr %108, null
  br i1 %109, label %110, label %116

110:                                              ; preds = %102
  %111 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 3
  %112 = load ptr, ptr %111, align 8, !tbaa !10
  %113 = getelementptr inbounds %"struct.Assimp::ObjFile::Model", ptr %112, i32 0, i32 3
  %114 = load ptr, ptr %113, align 8, !tbaa !21
  %115 = getelementptr inbounds %"struct.Assimp::ObjFile::Material", ptr %114, i32 0, i32 18
  call void @_ZN6Assimp18ObjFileMtlImporter12getColorRGBAEP9aiColor3D(ptr noundef nonnull align 8 dereferenceable(88) %37, ptr noundef %115)
  br label %116

116:                                              ; preds = %110, %102
  br label %139

117:                                              ; preds = %96
  %118 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 1
  %119 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %118) #6
  %120 = load i8, ptr %119, align 1, !tbaa !9
  %121 = sext i8 %120 to i32
  %122 = icmp eq i32 %121, 101
  br i1 %122, label %123, label %138

123:                                              ; preds = %117
  %124 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 1
  %125 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %124) #6
  %126 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 3
  %127 = load ptr, ptr %126, align 8, !tbaa !10
  %128 = getelementptr inbounds %"struct.Assimp::ObjFile::Model", ptr %127, i32 0, i32 3
  %129 = load ptr, ptr %128, align 8, !tbaa !21
  %130 = icmp ne ptr %129, null
  br i1 %130, label %131, label %137

131:                                              ; preds = %123
  %132 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 3
  %133 = load ptr, ptr %132, align 8, !tbaa !10
  %134 = getelementptr inbounds %"struct.Assimp::ObjFile::Model", ptr %133, i32 0, i32 3
  %135 = load ptr, ptr %134, align 8, !tbaa !21
  %136 = getelementptr inbounds %"struct.Assimp::ObjFile::Material", ptr %135, i32 0, i32 19
  call void @_ZN6Assimp18ObjFileMtlImporter12getColorRGBAEP9aiColor3D(ptr noundef nonnull align 8 dereferenceable(88) %37, ptr noundef %136)
  br label %137

137:                                              ; preds = %131, %123
  br label %138

138:                                              ; preds = %137, %117
  br label %139

139:                                              ; preds = %138, %116
  br label %140

140:                                              ; preds = %139, %95
  br label %141

141:                                              ; preds = %140, %74
  call void @llvm.lifetime.start.p0(i64 8, ptr %3) #6
  %142 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %4, ptr align 8 %142, i64 8, i1 false), !tbaa.struct !50
  %143 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %5, ptr align 8 %143, i64 8, i1 false), !tbaa.struct !50
  %144 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 4
  %145 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %4, i32 0, i32 0
  %146 = load ptr, ptr %145, align 8
  %147 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %5, i32 0, i32 0
  %148 = load ptr, ptr %147, align 8
  %149 = call ptr @_ZN6Assimp8skipLineIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEEEET_S8_S8_Rj(ptr %146, ptr %148, ptr noundef nonnull align 4 dereferenceable(4) %144)
  %150 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %3, i32 0, i32 0
  store ptr %149, ptr %150, align 8
  %151 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %151, ptr align 8 %3, i64 8, i1 false), !tbaa.struct !50
  call void @llvm.lifetime.end.p0(i64 8, ptr %3) #6
  br label %494

152:                                              ; preds = %47
  %153 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 1
  %154 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %153) #6
  %155 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 1
  %156 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %155) #6
  %157 = load i8, ptr %156, align 1, !tbaa !9
  %158 = sext i8 %157 to i32
  %159 = icmp eq i32 %158, 102
  br i1 %159, label %160, label %175

160:                                              ; preds = %152
  %161 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 1
  %162 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %161) #6
  %163 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 3
  %164 = load ptr, ptr %163, align 8, !tbaa !10
  %165 = getelementptr inbounds %"struct.Assimp::ObjFile::Model", ptr %164, i32 0, i32 3
  %166 = load ptr, ptr %165, align 8, !tbaa !21
  %167 = icmp ne ptr %166, null
  br i1 %167, label %168, label %174

168:                                              ; preds = %160
  %169 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 3
  %170 = load ptr, ptr %169, align 8, !tbaa !10
  %171 = getelementptr inbounds %"struct.Assimp::ObjFile::Model", ptr %170, i32 0, i32 3
  %172 = load ptr, ptr %171, align 8, !tbaa !21
  %173 = getelementptr inbounds %"struct.Assimp::ObjFile::Material", ptr %172, i32 0, i32 24
  call void @_ZN6Assimp18ObjFileMtlImporter12getColorRGBAEP9aiColor3D(ptr noundef nonnull align 8 dereferenceable(88) %37, ptr noundef %173)
  br label %174

174:                                              ; preds = %168, %160
  br label %199

175:                                              ; preds = %152
  %176 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 1
  %177 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %176) #6
  %178 = load i8, ptr %177, align 1, !tbaa !9
  %179 = sext i8 %178 to i32
  %180 = icmp eq i32 %179, 114
  br i1 %180, label %181, label %198

181:                                              ; preds = %175
  %182 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 1
  %183 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %182) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #6
  call void @_ZN6Assimp18ObjFileMtlImporter13getFloatValueERf(ptr noundef nonnull align 8 dereferenceable(88) %37, ptr noundef nonnull align 4 dereferenceable(4) %6)
  %184 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 3
  %185 = load ptr, ptr %184, align 8, !tbaa !10
  %186 = getelementptr inbounds %"struct.Assimp::ObjFile::Model", ptr %185, i32 0, i32 3
  %187 = load ptr, ptr %186, align 8, !tbaa !21
  %188 = icmp ne ptr %187, null
  br i1 %188, label %189, label %197

189:                                              ; preds = %181
  %190 = load float, ptr %6, align 4, !tbaa !51
  %191 = fsub float 1.000000e+00, %190
  %192 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 3
  %193 = load ptr, ptr %192, align 8, !tbaa !10
  %194 = getelementptr inbounds %"struct.Assimp::ObjFile::Model", ptr %193, i32 0, i32 3
  %195 = load ptr, ptr %194, align 8, !tbaa !21
  %196 = getelementptr inbounds %"struct.Assimp::ObjFile::Material", ptr %195, i32 0, i32 20
  store float %191, ptr %196, align 4, !tbaa !53
  br label %197

197:                                              ; preds = %189, %181
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #6
  br label %198

198:                                              ; preds = %197, %175
  br label %199

199:                                              ; preds = %198, %174
  call void @llvm.lifetime.start.p0(i64 8, ptr %7) #6
  %200 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %8, ptr align 8 %200, i64 8, i1 false), !tbaa.struct !50
  %201 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %9, ptr align 8 %201, i64 8, i1 false), !tbaa.struct !50
  %202 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 4
  %203 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %8, i32 0, i32 0
  %204 = load ptr, ptr %203, align 8
  %205 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %9, i32 0, i32 0
  %206 = load ptr, ptr %205, align 8
  %207 = call ptr @_ZN6Assimp8skipLineIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEEEET_S8_S8_Rj(ptr %204, ptr %206, ptr noundef nonnull align 4 dereferenceable(4) %202)
  %208 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %7, i32 0, i32 0
  store ptr %207, ptr %208, align 8
  %209 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %209, ptr align 8 %7, i64 8, i1 false), !tbaa.struct !50
  call void @llvm.lifetime.end.p0(i64 8, ptr %7) #6
  br label %494

210:                                              ; preds = %47
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #6
  %211 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 1
  %212 = call ptr @_ZNK9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEplEl(ptr noundef nonnull align 8 dereferenceable(8) %211, i64 noundef 1) #6
  %213 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %10, i32 0, i32 0
  store ptr %212, ptr %213, align 8
  %214 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %10) #6
  %215 = load i8, ptr %214, align 1, !tbaa !9
  %216 = sext i8 %215 to i32
  %217 = icmp eq i32 %216, 105
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #6
  br i1 %217, label %218, label %234

218:                                              ; preds = %210
  %219 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 1
  %220 = call ptr @_ZNK9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEplEl(ptr noundef nonnull align 8 dereferenceable(8) %219, i64 noundef 2) #6
  %221 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %11, i32 0, i32 0
  store ptr %220, ptr %221, align 8
  %222 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %11) #6
  %223 = load i8, ptr %222, align 1, !tbaa !9
  %224 = sext i8 %223 to i32
  %225 = icmp eq i32 %224, 115
  br i1 %225, label %226, label %234

226:                                              ; preds = %218
  %227 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 1
  %228 = call ptr @_ZNK9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEplEl(ptr noundef nonnull align 8 dereferenceable(8) %227, i64 noundef 3) #6
  %229 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %12, i32 0, i32 0
  store ptr %228, ptr %229, align 8
  %230 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %12) #6
  %231 = load i8, ptr %230, align 1, !tbaa !9
  %232 = sext i8 %231 to i32
  %233 = icmp eq i32 %232, 112
  br label %234

234:                                              ; preds = %226, %218, %210
  %235 = phi i1 [ false, %218 ], [ false, %210 ], [ %233, %226 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #6
  br i1 %235, label %236, label %237

236:                                              ; preds = %234
  call void @_ZN6Assimp18ObjFileMtlImporter10getTextureEv(ptr noundef nonnull align 8 dereferenceable(88) %37)
  br label %262

237:                                              ; preds = %234
  %238 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 1
  %239 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %238) #6
  %240 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 3
  %241 = load ptr, ptr %240, align 8, !tbaa !10
  %242 = getelementptr inbounds %"struct.Assimp::ObjFile::Model", ptr %241, i32 0, i32 3
  %243 = load ptr, ptr %242, align 8, !tbaa !21
  %244 = icmp ne ptr %243, null
  br i1 %244, label %245, label %251

245:                                              ; preds = %237
  %246 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 3
  %247 = load ptr, ptr %246, align 8, !tbaa !10
  %248 = getelementptr inbounds %"struct.Assimp::ObjFile::Model", ptr %247, i32 0, i32 3
  %249 = load ptr, ptr %248, align 8, !tbaa !21
  %250 = getelementptr inbounds %"struct.Assimp::ObjFile::Material", ptr %249, i32 0, i32 20
  call void @_ZN6Assimp18ObjFileMtlImporter13getFloatValueERf(ptr noundef nonnull align 8 dereferenceable(88) %37, ptr noundef nonnull align 4 dereferenceable(4) %250)
  br label %251

251:                                              ; preds = %245, %237
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #6
  %252 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %14, ptr align 8 %252, i64 8, i1 false), !tbaa.struct !50
  %253 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %15, ptr align 8 %253, i64 8, i1 false), !tbaa.struct !50
  %254 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 4
  %255 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %14, i32 0, i32 0
  %256 = load ptr, ptr %255, align 8
  %257 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %15, i32 0, i32 0
  %258 = load ptr, ptr %257, align 8
  %259 = call ptr @_ZN6Assimp8skipLineIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEEEET_S8_S8_Rj(ptr %256, ptr %258, ptr noundef nonnull align 4 dereferenceable(4) %254)
  %260 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %13, i32 0, i32 0
  store ptr %259, ptr %260, align 8
  %261 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %261, ptr align 8 %13, i64 8, i1 false), !tbaa.struct !50
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #6
  br label %262

262:                                              ; preds = %251, %236
  br label %494

263:                                              ; preds = %47, %47
  %264 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 1
  %265 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %264) #6
  %266 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 1
  %267 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %266) #6
  %268 = load i8, ptr %267, align 1, !tbaa !9
  %269 = sext i8 %268 to i32
  switch i32 %269, label %304 [
    i32 115, label %270
    i32 105, label %285
    i32 101, label %300
    i32 111, label %301
  ]

270:                                              ; preds = %263
  %271 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 1
  %272 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %271) #6
  %273 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 3
  %274 = load ptr, ptr %273, align 8, !tbaa !10
  %275 = getelementptr inbounds %"struct.Assimp::ObjFile::Model", ptr %274, i32 0, i32 3
  %276 = load ptr, ptr %275, align 8, !tbaa !21
  %277 = icmp ne ptr %276, null
  br i1 %277, label %278, label %284

278:                                              ; preds = %270
  %279 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 3
  %280 = load ptr, ptr %279, align 8, !tbaa !10
  %281 = getelementptr inbounds %"struct.Assimp::ObjFile::Model", ptr %280, i32 0, i32 3
  %282 = load ptr, ptr %281, align 8, !tbaa !21
  %283 = getelementptr inbounds %"struct.Assimp::ObjFile::Material", ptr %282, i32 0, i32 21
  call void @_ZN6Assimp18ObjFileMtlImporter13getFloatValueERf(ptr noundef nonnull align 8 dereferenceable(88) %37, ptr noundef nonnull align 4 dereferenceable(4) %283)
  br label %284

284:                                              ; preds = %278, %270
  br label %304

285:                                              ; preds = %263
  %286 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 1
  %287 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %286) #6
  %288 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 3
  %289 = load ptr, ptr %288, align 8, !tbaa !10
  %290 = getelementptr inbounds %"struct.Assimp::ObjFile::Model", ptr %289, i32 0, i32 3
  %291 = load ptr, ptr %290, align 8, !tbaa !21
  %292 = icmp ne ptr %291, null
  br i1 %292, label %293, label %299

293:                                              ; preds = %285
  %294 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 3
  %295 = load ptr, ptr %294, align 8, !tbaa !10
  %296 = getelementptr inbounds %"struct.Assimp::ObjFile::Model", ptr %295, i32 0, i32 3
  %297 = load ptr, ptr %296, align 8, !tbaa !21
  %298 = getelementptr inbounds %"struct.Assimp::ObjFile::Material", ptr %297, i32 0, i32 23
  call void @_ZN6Assimp18ObjFileMtlImporter13getFloatValueERf(ptr noundef nonnull align 8 dereferenceable(88) %37, ptr noundef nonnull align 4 dereferenceable(4) %298)
  br label %299

299:                                              ; preds = %293, %285
  br label %304

300:                                              ; preds = %263
  call void @_ZN6Assimp18ObjFileMtlImporter14createMaterialEv(ptr noundef nonnull align 8 dereferenceable(88) %37)
  br label %304

301:                                              ; preds = %263
  %302 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 1
  %303 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEmmEv(ptr noundef nonnull align 8 dereferenceable(8) %302) #6
  call void @_ZN6Assimp18ObjFileMtlImporter10getTextureEv(ptr noundef nonnull align 8 dereferenceable(88) %37)
  br label %304

304:                                              ; preds = %301, %300, %299, %284, %263
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #6
  %305 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %17, ptr align 8 %305, i64 8, i1 false), !tbaa.struct !50
  %306 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %18, ptr align 8 %306, i64 8, i1 false), !tbaa.struct !50
  %307 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 4
  %308 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %17, i32 0, i32 0
  %309 = load ptr, ptr %308, align 8
  %310 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %18, i32 0, i32 0
  %311 = load ptr, ptr %310, align 8
  %312 = call ptr @_ZN6Assimp8skipLineIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEEEET_S8_S8_Rj(ptr %309, ptr %311, ptr noundef nonnull align 4 dereferenceable(4) %307)
  %313 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %16, i32 0, i32 0
  store ptr %312, ptr %313, align 8
  %314 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %314, ptr align 8 %16, i64 8, i1 false), !tbaa.struct !50
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #6
  br label %494

315:                                              ; preds = %47
  %316 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 1
  %317 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %316) #6
  %318 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 1
  %319 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %318) #6
  %320 = load i8, ptr %319, align 1, !tbaa !9
  %321 = sext i8 %320 to i32
  switch i32 %321, label %404 [
    i32 114, label %322
    i32 109, label %337
    i32 115, label %352
    i32 99, label %367
  ]

322:                                              ; preds = %315
  %323 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 1
  %324 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %323) #6
  %325 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 3
  %326 = load ptr, ptr %325, align 8, !tbaa !10
  %327 = getelementptr inbounds %"struct.Assimp::ObjFile::Model", ptr %326, i32 0, i32 3
  %328 = load ptr, ptr %327, align 8, !tbaa !21
  %329 = icmp ne ptr %328, null
  br i1 %329, label %330, label %336

330:                                              ; preds = %322
  %331 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 3
  %332 = load ptr, ptr %331, align 8, !tbaa !10
  %333 = getelementptr inbounds %"struct.Assimp::ObjFile::Model", ptr %332, i32 0, i32 3
  %334 = load ptr, ptr %333, align 8, !tbaa !21
  %335 = getelementptr inbounds %"struct.Assimp::ObjFile::Material", ptr %334, i32 0, i32 25
  call void @_ZN6Assimp18ObjFileMtlImporter13getFloatValueERNS_5MaybeIfEE(ptr noundef nonnull align 8 dereferenceable(88) %37, ptr noundef nonnull align 4 dereferenceable(5) %335)
  br label %336

336:                                              ; preds = %330, %322
  br label %404

337:                                              ; preds = %315
  %338 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 1
  %339 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %338) #6
  %340 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 3
  %341 = load ptr, ptr %340, align 8, !tbaa !10
  %342 = getelementptr inbounds %"struct.Assimp::ObjFile::Model", ptr %341, i32 0, i32 3
  %343 = load ptr, ptr %342, align 8, !tbaa !21
  %344 = icmp ne ptr %343, null
  br i1 %344, label %345, label %351

345:                                              ; preds = %337
  %346 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 3
  %347 = load ptr, ptr %346, align 8, !tbaa !10
  %348 = getelementptr inbounds %"struct.Assimp::ObjFile::Model", ptr %347, i32 0, i32 3
  %349 = load ptr, ptr %348, align 8, !tbaa !21
  %350 = getelementptr inbounds %"struct.Assimp::ObjFile::Material", ptr %349, i32 0, i32 26
  call void @_ZN6Assimp18ObjFileMtlImporter13getFloatValueERNS_5MaybeIfEE(ptr noundef nonnull align 8 dereferenceable(88) %37, ptr noundef nonnull align 4 dereferenceable(5) %350)
  br label %351

351:                                              ; preds = %345, %337
  br label %404

352:                                              ; preds = %315
  %353 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 1
  %354 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %353) #6
  %355 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 3
  %356 = load ptr, ptr %355, align 8, !tbaa !10
  %357 = getelementptr inbounds %"struct.Assimp::ObjFile::Model", ptr %356, i32 0, i32 3
  %358 = load ptr, ptr %357, align 8, !tbaa !21
  %359 = icmp ne ptr %358, null
  br i1 %359, label %360, label %366

360:                                              ; preds = %352
  %361 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 3
  %362 = load ptr, ptr %361, align 8, !tbaa !10
  %363 = getelementptr inbounds %"struct.Assimp::ObjFile::Model", ptr %362, i32 0, i32 3
  %364 = load ptr, ptr %363, align 8, !tbaa !21
  %365 = getelementptr inbounds %"struct.Assimp::ObjFile::Material", ptr %364, i32 0, i32 27
  call void @_ZN6Assimp18ObjFileMtlImporter12getColorRGBAERNS_5MaybeI9aiColor3DEE(ptr noundef nonnull align 8 dereferenceable(88) %37, ptr noundef nonnull align 4 dereferenceable(13) %365)
  br label %366

366:                                              ; preds = %360, %352
  br label %404

367:                                              ; preds = %315
  %368 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 1
  %369 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %368) #6
  %370 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 1
  %371 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %370) #6
  %372 = load i8, ptr %371, align 1, !tbaa !9
  %373 = sext i8 %372 to i32
  %374 = icmp eq i32 %373, 114
  br i1 %374, label %375, label %390

375:                                              ; preds = %367
  %376 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 1
  %377 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %376) #6
  %378 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 3
  %379 = load ptr, ptr %378, align 8, !tbaa !10
  %380 = getelementptr inbounds %"struct.Assimp::ObjFile::Model", ptr %379, i32 0, i32 3
  %381 = load ptr, ptr %380, align 8, !tbaa !21
  %382 = icmp ne ptr %381, null
  br i1 %382, label %383, label %389

383:                                              ; preds = %375
  %384 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 3
  %385 = load ptr, ptr %384, align 8, !tbaa !10
  %386 = getelementptr inbounds %"struct.Assimp::ObjFile::Model", ptr %385, i32 0, i32 3
  %387 = load ptr, ptr %386, align 8, !tbaa !21
  %388 = getelementptr inbounds %"struct.Assimp::ObjFile::Material", ptr %387, i32 0, i32 29
  call void @_ZN6Assimp18ObjFileMtlImporter13getFloatValueERNS_5MaybeIfEE(ptr noundef nonnull align 8 dereferenceable(88) %37, ptr noundef nonnull align 4 dereferenceable(5) %388)
  br label %389

389:                                              ; preds = %383, %375
  br label %403

390:                                              ; preds = %367
  %391 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 3
  %392 = load ptr, ptr %391, align 8, !tbaa !10
  %393 = getelementptr inbounds %"struct.Assimp::ObjFile::Model", ptr %392, i32 0, i32 3
  %394 = load ptr, ptr %393, align 8, !tbaa !21
  %395 = icmp ne ptr %394, null
  br i1 %395, label %396, label %402

396:                                              ; preds = %390
  %397 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 3
  %398 = load ptr, ptr %397, align 8, !tbaa !10
  %399 = getelementptr inbounds %"struct.Assimp::ObjFile::Model", ptr %398, i32 0, i32 3
  %400 = load ptr, ptr %399, align 8, !tbaa !21
  %401 = getelementptr inbounds %"struct.Assimp::ObjFile::Material", ptr %400, i32 0, i32 28
  call void @_ZN6Assimp18ObjFileMtlImporter13getFloatValueERNS_5MaybeIfEE(ptr noundef nonnull align 8 dereferenceable(88) %37, ptr noundef nonnull align 4 dereferenceable(5) %401)
  br label %402

402:                                              ; preds = %396, %390
  br label %403

403:                                              ; preds = %402, %389
  br label %404

404:                                              ; preds = %403, %366, %351, %336, %315
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #6
  %405 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %20, ptr align 8 %405, i64 8, i1 false), !tbaa.struct !50
  %406 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %21, ptr align 8 %406, i64 8, i1 false), !tbaa.struct !50
  %407 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 4
  %408 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %20, i32 0, i32 0
  %409 = load ptr, ptr %408, align 8
  %410 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %21, i32 0, i32 0
  %411 = load ptr, ptr %410, align 8
  %412 = call ptr @_ZN6Assimp8skipLineIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEEEET_S8_S8_Rj(ptr %409, ptr %411, ptr noundef nonnull align 4 dereferenceable(4) %407)
  %413 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %19, i32 0, i32 0
  store ptr %412, ptr %413, align 8
  %414 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %414, ptr align 8 %19, i64 8, i1 false), !tbaa.struct !50
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #6
  br label %494

415:                                              ; preds = %47, %47, %47
  call void @_ZN6Assimp18ObjFileMtlImporter10getTextureEv(ptr noundef nonnull align 8 dereferenceable(88) %37)
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #6
  %416 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %23, ptr align 8 %416, i64 8, i1 false), !tbaa.struct !50
  %417 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %24, ptr align 8 %417, i64 8, i1 false), !tbaa.struct !50
  %418 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 4
  %419 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %23, i32 0, i32 0
  %420 = load ptr, ptr %419, align 8
  %421 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %24, i32 0, i32 0
  %422 = load ptr, ptr %421, align 8
  %423 = call ptr @_ZN6Assimp8skipLineIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEEEET_S8_S8_Rj(ptr %420, ptr %422, ptr noundef nonnull align 4 dereferenceable(4) %418)
  %424 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %22, i32 0, i32 0
  store ptr %423, ptr %424, align 8
  %425 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %425, ptr align 8 %22, i64 8, i1 false), !tbaa.struct !50
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #6
  br label %494

426:                                              ; preds = %47
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #6
  %427 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %26, ptr align 8 %427, i64 8, i1 false), !tbaa.struct !50
  %428 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %27, ptr align 8 %428, i64 8, i1 false), !tbaa.struct !50
  %429 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %26, i32 0, i32 0
  %430 = load ptr, ptr %429, align 8
  %431 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %27, i32 0, i32 0
  %432 = load ptr, ptr %431, align 8
  %433 = call ptr @_ZN6Assimp12getNextTokenIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEEEET_S8_S8_(ptr %430, ptr %432)
  %434 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %25, i32 0, i32 0
  store ptr %433, ptr %434, align 8
  %435 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %435, ptr align 8 %25, i64 8, i1 false), !tbaa.struct !50
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #6
  %436 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 3
  %437 = load ptr, ptr %436, align 8, !tbaa !10
  %438 = getelementptr inbounds %"struct.Assimp::ObjFile::Model", ptr %437, i32 0, i32 3
  %439 = load ptr, ptr %438, align 8, !tbaa !21
  %440 = icmp ne ptr %439, null
  br i1 %440, label %441, label %447

441:                                              ; preds = %426
  %442 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 3
  %443 = load ptr, ptr %442, align 8, !tbaa !10
  %444 = getelementptr inbounds %"struct.Assimp::ObjFile::Model", ptr %443, i32 0, i32 3
  %445 = load ptr, ptr %444, align 8, !tbaa !21
  %446 = getelementptr inbounds %"struct.Assimp::ObjFile::Material", ptr %445, i32 0, i32 22
  call void @_ZN6Assimp18ObjFileMtlImporter20getIlluminationModelERi(ptr noundef nonnull align 8 dereferenceable(88) %37, ptr noundef nonnull align 4 dereferenceable(4) %446)
  br label %447

447:                                              ; preds = %441, %426
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #6
  %448 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %29, ptr align 8 %448, i64 8, i1 false), !tbaa.struct !50
  %449 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %30, ptr align 8 %449, i64 8, i1 false), !tbaa.struct !50
  %450 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 4
  %451 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %29, i32 0, i32 0
  %452 = load ptr, ptr %451, align 8
  %453 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %30, i32 0, i32 0
  %454 = load ptr, ptr %453, align 8
  %455 = call ptr @_ZN6Assimp8skipLineIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEEEET_S8_S8_Rj(ptr %452, ptr %454, ptr noundef nonnull align 4 dereferenceable(4) %450)
  %456 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %28, i32 0, i32 0
  store ptr %455, ptr %456, align 8
  %457 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %457, ptr align 8 %28, i64 8, i1 false), !tbaa.struct !50
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #6
  br label %494

458:                                              ; preds = %47
  %459 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 1
  %460 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %459) #6
  %461 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 3
  %462 = load ptr, ptr %461, align 8, !tbaa !10
  %463 = getelementptr inbounds %"struct.Assimp::ObjFile::Model", ptr %462, i32 0, i32 3
  %464 = load ptr, ptr %463, align 8, !tbaa !21
  %465 = icmp ne ptr %464, null
  br i1 %465, label %466, label %472

466:                                              ; preds = %458
  %467 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 3
  %468 = load ptr, ptr %467, align 8, !tbaa !10
  %469 = getelementptr inbounds %"struct.Assimp::ObjFile::Model", ptr %468, i32 0, i32 3
  %470 = load ptr, ptr %469, align 8, !tbaa !21
  %471 = getelementptr inbounds %"struct.Assimp::ObjFile::Material", ptr %470, i32 0, i32 30
  call void @_ZN6Assimp18ObjFileMtlImporter13getFloatValueERf(ptr noundef nonnull align 8 dereferenceable(88) %37, ptr noundef nonnull align 4 dereferenceable(4) %471)
  br label %472

472:                                              ; preds = %466, %458
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #6
  %473 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %32, ptr align 8 %473, i64 8, i1 false), !tbaa.struct !50
  %474 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %33, ptr align 8 %474, i64 8, i1 false), !tbaa.struct !50
  %475 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 4
  %476 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %32, i32 0, i32 0
  %477 = load ptr, ptr %476, align 8
  %478 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %33, i32 0, i32 0
  %479 = load ptr, ptr %478, align 8
  %480 = call ptr @_ZN6Assimp8skipLineIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEEEET_S8_S8_Rj(ptr %477, ptr %479, ptr noundef nonnull align 4 dereferenceable(4) %475)
  %481 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %31, i32 0, i32 0
  store ptr %480, ptr %481, align 8
  %482 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %482, ptr align 8 %31, i64 8, i1 false), !tbaa.struct !50
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #6
  br label %494

483:                                              ; preds = %47
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #6
  %484 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %35, ptr align 8 %484, i64 8, i1 false), !tbaa.struct !50
  %485 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %36, ptr align 8 %485, i64 8, i1 false), !tbaa.struct !50
  %486 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 4
  %487 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %35, i32 0, i32 0
  %488 = load ptr, ptr %487, align 8
  %489 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %36, i32 0, i32 0
  %490 = load ptr, ptr %489, align 8
  %491 = call ptr @_ZN6Assimp8skipLineIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEEEET_S8_S8_Rj(ptr %488, ptr %490, ptr noundef nonnull align 4 dereferenceable(4) %486)
  %492 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %34, i32 0, i32 0
  store ptr %491, ptr %492, align 8
  %493 = getelementptr inbounds %"class.Assimp::ObjFileMtlImporter", ptr %37, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %493, ptr align 8 %34, i64 8, i1 false), !tbaa.struct !50
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #6
  br label %494

494:                                              ; preds = %483, %472, %447, %415, %404, %304, %262, %199, %141
  br label %43, !llvm.loop !60

495:                                              ; preds = %43, %41
  ret void
}

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Assimp18ObjFileMtlImporter12getColorRGBAEP9aiColor3D(ptr noundef nonnull align 8 dereferenceable(88), ptr noundef) #1 align 2

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

; 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) #5

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Assimp18ObjFileMtlImporter13getFloatValueERf(ptr noundef nonnull align 8 dereferenceable(88), ptr noundef nonnull align 4 dereferenceable(4)) #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNK9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEplEl(ptr noundef nonnull align 8 dereferenceable(8), i64 noundef) #3 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Assimp18ObjFileMtlImporter13getFloatValueERNS_5MaybeIfEE(ptr noundef nonnull align 8 dereferenceable(88), ptr noundef nonnull align 4 dereferenceable(5)) #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Assimp18ObjFileMtlImporter12getColorRGBAERNS_5MaybeI9aiColor3DEE(ptr noundef nonnull align 8 dereferenceable(88), ptr noundef nonnull align 4 dereferenceable(13)) #1 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local ptr @_ZN6Assimp12getNextTokenIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEEEET_S8_S8_(ptr, ptr) #4

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Assimp18ObjFileMtlImporter20getIlluminationModelERi(ptr noundef nonnull align 8 dereferenceable(88), ptr noundef nonnull align 4 dereferenceable(4)) #1 align 2

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
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 = { 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 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #6 = { 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 = !{!7, !7, i64 0}
!10 = !{!11, !6, i64 48}
!11 = !{!"_ZTSN6Assimp18ObjFileMtlImporterE", !12, i64 0, !15, i64 32, !15, i64 40, !6, i64 48, !16, i64 56, !17, i64 64}
!12 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !13, i64 0, !14, i64 8, !7, i64 16}
!13 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!14 = !{!"long", !7, i64 0}
!15 = !{!"_ZTSN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEE", !6, i64 0}
!16 = !{!"int", !7, i64 0}
!17 = !{!"_ZTSSt6vectorIcSaIcEE", !18, i64 0}
!18 = !{!"_ZTSSt12_Vector_baseIcSaIcEE", !19, i64 0}
!19 = !{!"_ZTSNSt12_Vector_baseIcSaIcEE12_Vector_implE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseIcSaIcEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!21 = !{!22, !6, i64 64}
!22 = !{!"_ZTSN6Assimp7ObjFile5ModelE", !12, i64 0, !23, i64 32, !6, i64 56, !6, i64 64, !6, i64 72, !27, i64 80, !31, i64 104, !31, i64 128, !31, i64 152, !35, i64 176, !6, i64 224, !12, i64 232, !31, i64 264, !16, i64 288, !6, i64 296, !43, i64 304, !47, i64 328}
!23 = !{!"_ZTSSt6vectorIPN6Assimp7ObjFile6ObjectESaIS3_EE", !24, i64 0}
!24 = !{!"_ZTSSt12_Vector_baseIPN6Assimp7ObjFile6ObjectESaIS3_EE", !25, i64 0}
!25 = !{!"_ZTSNSt12_Vector_baseIPN6Assimp7ObjFile6ObjectESaIS3_EE12_Vector_implE", !26, i64 0}
!26 = !{!"_ZTSNSt12_Vector_baseIPN6Assimp7ObjFile6ObjectESaIS3_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!27 = !{!"_ZTSSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !28, i64 0}
!28 = !{!"_ZTSSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !29, i64 0}
!29 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12_Vector_implE", !30, i64 0}
!30 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!31 = !{!"_ZTSSt6vectorI10aiVector3tIfESaIS1_EE", !32, i64 0}
!32 = !{!"_ZTSSt12_Vector_baseI10aiVector3tIfESaIS1_EE", !33, i64 0}
!33 = !{!"_ZTSNSt12_Vector_baseI10aiVector3tIfESaIS1_EE12_Vector_implE", !34, i64 0}
!34 = !{!"_ZTSNSt12_Vector_baseI10aiVector3tIfESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!35 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPSt6vectorIjSaIjEESt4lessIS5_ESaISt4pairIKS5_S9_EEE", !36, i64 0}
!36 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_PSt6vectorIjSaIjEEESt10_Select1stISC_ESt4lessIS5_ESaISC_EE", !37, i64 0}
!37 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_PSt6vectorIjSaIjEEESt10_Select1stISC_ESt4lessIS5_ESaISC_EE13_Rb_tree_implISG_Lb1EEE", !38, i64 0, !40, i64 8}
!38 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE", !39, i64 0}
!39 = !{!"_ZTSSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE"}
!40 = !{!"_ZTSSt15_Rb_tree_header", !41, i64 0, !14, i64 32}
!41 = !{!"_ZTSSt18_Rb_tree_node_base", !42, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!42 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!43 = !{!"_ZTSSt6vectorIPN6Assimp7ObjFile4MeshESaIS3_EE", !44, i64 0}
!44 = !{!"_ZTSSt12_Vector_baseIPN6Assimp7ObjFile4MeshESaIS3_EE", !45, i64 0}
!45 = !{!"_ZTSNSt12_Vector_baseIPN6Assimp7ObjFile4MeshESaIS3_EE12_Vector_implE", !46, i64 0}
!46 = !{!"_ZTSNSt12_Vector_baseIPN6Assimp7ObjFile4MeshESaIS3_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!47 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPN6Assimp7ObjFile8MaterialESt4lessIS5_ESaISt4pairIKS5_S9_EEE", !48, i64 0}
!48 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_PN6Assimp7ObjFile8MaterialEESt10_Select1stISC_ESt4lessIS5_ESaISC_EE", !49, i64 0}
!49 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_PN6Assimp7ObjFile8MaterialEESt10_Select1stISC_ESt4lessIS5_ESaISC_EE13_Rb_tree_implISG_Lb1EEE", !38, i64 0, !40, i64 8}
!50 = !{i64 0, i64 8, !5}
!51 = !{!52, !52, i64 0}
!52 = !{!"float", !7, i64 0}
!53 = !{!54, !52, i64 20628}
!54 = !{!"_ZTSN6Assimp7ObjFile8MaterialE", !55, i64 0, !55, i64 1028, !55, i64 2056, !55, i64 3084, !55, i64 4112, !55, i64 5140, !55, i64 6168, !7, i64 7196, !55, i64 13364, !55, i64 14392, !55, i64 15420, !55, i64 16448, !55, i64 17476, !55, i64 18504, !55, i64 19532, !7, i64 20560, !56, i64 20580, !56, i64 20592, !56, i64 20604, !56, i64 20616, !52, i64 20628, !52, i64 20632, !16, i64 20636, !52, i64 20640, !56, i64 20644, !57, i64 20656, !57, i64 20664, !59, i64 20672, !57, i64 20688, !57, i64 20696, !52, i64 20704, !52, i64 20708}
!55 = !{!"_ZTS8aiString", !16, i64 0, !7, i64 4}
!56 = !{!"_ZTS9aiColor3D", !52, i64 0, !52, i64 4, !52, i64 8}
!57 = !{!"_ZTSN6Assimp5MaybeIfEE", !52, i64 0, !58, i64 4}
!58 = !{!"bool", !7, i64 0}
!59 = !{!"_ZTSN6Assimp5MaybeI9aiColor3DEE", !56, i64 0, !58, i64 12}
!60 = distinct !{!60, !61}
!61 = !{!"llvm.loop.mustprogress"}


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

%"class.__gnu_cxx::__normal_iterator" = type { ptr }

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN6Assimp18ObjFileMtlImporter4loadEv(ptr noundef nonnull align 8 dereferenceable(88) %0) local_unnamed_addr #1 align 2 {
  %2 = alloca float, align 4
  %3 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %4 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %5 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %6 = getelementptr inbounds i8, ptr %0, i64 32
  %7 = getelementptr inbounds i8, ptr %0, i64 40
  %8 = tail call noundef zeroext i1 @_ZN9__gnu_cxxeqIPcSt6vectorIcSaIcEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 8 dereferenceable(8) %7) #6
  br i1 %8, label %.loopexit, label %.preheader

.preheader:                                       ; preds = %1
  %9 = tail call noundef zeroext i1 @_ZN9__gnu_cxxneIPcSt6vectorIcSaIcEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 8 dereferenceable(8) %7) #6
  br i1 %9, label %.lr.ph, label %.loopexit

.lr.ph:                                           ; preds = %.preheader
  %10 = getelementptr inbounds i8, ptr %0, i64 48
  %11 = getelementptr inbounds i8, ptr %0, i64 56
  br label %12

12:                                               ; preds = %.lr.ph, %208
  %13 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %6) #6
  %14 = load i8, ptr %13, align 1, !tbaa !5
  switch i8 %14, label %206 [
    i8 107, label %15
    i8 75, label %15
    i8 84, label %62
    i8 100, label %90
    i8 78, label %115
    i8 110, label %115
    i8 80, label %141
    i8 109, label %186
    i8 98, label %186
    i8 114, label %186
    i8 105, label %188
    i8 97, label %197
  ]

15:                                               ; preds = %12, %12
  %16 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %6) #6
  %17 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %6) #6
  %18 = load i8, ptr %17, align 1, !tbaa !5
  %19 = icmp eq i8 %18, 97
  br i1 %19, label %20, label %27

20:                                               ; preds = %15
  %21 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %6) #6
  %22 = load ptr, ptr %10, align 8, !tbaa !8
  %23 = getelementptr inbounds i8, ptr %22, i64 64
  %24 = load ptr, ptr %23, align 8, !tbaa !20
  %.not59 = icmp eq ptr %24, null
  br i1 %.not59, label %60, label %25

25:                                               ; preds = %20
  %26 = getelementptr inbounds i8, ptr %24, i64 20580
  br label %.sink.split

27:                                               ; preds = %15
  %28 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %6) #6
  %29 = load i8, ptr %28, align 1, !tbaa !5
  %30 = icmp eq i8 %29, 100
  br i1 %30, label %31, label %38

31:                                               ; preds = %27
  %32 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %6) #6
  %33 = load ptr, ptr %10, align 8, !tbaa !8
  %34 = getelementptr inbounds i8, ptr %33, i64 64
  %35 = load ptr, ptr %34, align 8, !tbaa !20
  %.not58 = icmp eq ptr %35, null
  br i1 %.not58, label %60, label %36

36:                                               ; preds = %31
  %37 = getelementptr inbounds i8, ptr %35, i64 20592
  br label %.sink.split

38:                                               ; preds = %27
  %39 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %6) #6
  %40 = load i8, ptr %39, align 1, !tbaa !5
  %41 = icmp eq i8 %40, 115
  br i1 %41, label %42, label %49

42:                                               ; preds = %38
  %43 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %6) #6
  %44 = load ptr, ptr %10, align 8, !tbaa !8
  %45 = getelementptr inbounds i8, ptr %44, i64 64
  %46 = load ptr, ptr %45, align 8, !tbaa !20
  %.not57 = icmp eq ptr %46, null
  br i1 %.not57, label %60, label %47

47:                                               ; preds = %42
  %48 = getelementptr inbounds i8, ptr %46, i64 20604
  br label %.sink.split

49:                                               ; preds = %38
  %50 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %6) #6
  %51 = load i8, ptr %50, align 1, !tbaa !5
  %52 = icmp eq i8 %51, 101
  br i1 %52, label %53, label %60

53:                                               ; preds = %49
  %54 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %6) #6
  %55 = load ptr, ptr %10, align 8, !tbaa !8
  %56 = getelementptr inbounds i8, ptr %55, i64 64
  %57 = load ptr, ptr %56, align 8, !tbaa !20
  %.not56 = icmp eq ptr %57, null
  br i1 %.not56, label %60, label %58

58:                                               ; preds = %53
  %59 = getelementptr inbounds i8, ptr %57, i64 20616
  br label %.sink.split

.sink.split:                                      ; preds = %25, %47, %58, %36
  %.sink = phi ptr [ %37, %36 ], [ %59, %58 ], [ %48, %47 ], [ %26, %25 ]
  call void @_ZN6Assimp18ObjFileMtlImporter12getColorRGBAEP9aiColor3D(ptr noundef nonnull align 8 dereferenceable(88) %0, ptr noundef nonnull %.sink)
  br label %60

60:                                               ; preds = %.sink.split, %31, %49, %53, %42, %20
  %.sroa.028.0.copyload = load ptr, ptr %6, align 8, !tbaa !49
  %.sroa.027.0.copyload = load ptr, ptr %7, align 8, !tbaa !49
  %61 = call ptr @_ZN6Assimp8skipLineIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEEEET_S8_S8_Rj(ptr %.sroa.028.0.copyload, ptr %.sroa.027.0.copyload, ptr noundef nonnull align 4 dereferenceable(4) %11)
  store ptr %61, ptr %6, align 8, !tbaa !49
  br label %208

62:                                               ; preds = %12
  %63 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %6) #6
  %64 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %6) #6
  %65 = load i8, ptr %64, align 1, !tbaa !5
  %66 = icmp eq i8 %65, 102
  br i1 %66, label %67, label %74

67:                                               ; preds = %62
  %68 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %6) #6
  %69 = load ptr, ptr %10, align 8, !tbaa !8
  %70 = getelementptr inbounds i8, ptr %69, i64 64
  %71 = load ptr, ptr %70, align 8, !tbaa !20
  %.not55 = icmp eq ptr %71, null
  br i1 %.not55, label %88, label %72

72:                                               ; preds = %67
  %73 = getelementptr inbounds i8, ptr %71, i64 20644
  call void @_ZN6Assimp18ObjFileMtlImporter12getColorRGBAEP9aiColor3D(ptr noundef nonnull align 8 dereferenceable(88) %0, ptr noundef nonnull %73)
  br label %88

74:                                               ; preds = %62
  %75 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %6) #6
  %76 = load i8, ptr %75, align 1, !tbaa !5
  %77 = icmp eq i8 %76, 114
  br i1 %77, label %78, label %88

78:                                               ; preds = %74
  %79 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %6) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %2) #6
  call void @_ZN6Assimp18ObjFileMtlImporter13getFloatValueERf(ptr noundef nonnull align 8 dereferenceable(88) %0, ptr noundef nonnull align 4 dereferenceable(4) %2)
  %80 = load ptr, ptr %10, align 8, !tbaa !8
  %81 = getelementptr inbounds i8, ptr %80, i64 64
  %82 = load ptr, ptr %81, align 8, !tbaa !20
  %.not54 = icmp eq ptr %82, null
  br i1 %.not54, label %87, label %83

83:                                               ; preds = %78
  %84 = load float, ptr %2, align 4, !tbaa !50
  %85 = fsub float 1.000000e+00, %84
  %86 = getelementptr inbounds i8, ptr %82, i64 20628
  store float %85, ptr %86, align 4, !tbaa !52
  br label %87

87:                                               ; preds = %83, %78
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %2) #6
  br label %88

88:                                               ; preds = %74, %87, %67, %72
  %.sroa.025.0.copyload = load ptr, ptr %6, align 8, !tbaa !49
  %.sroa.024.0.copyload = load ptr, ptr %7, align 8, !tbaa !49
  %89 = call ptr @_ZN6Assimp8skipLineIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEEEET_S8_S8_Rj(ptr %.sroa.025.0.copyload, ptr %.sroa.024.0.copyload, ptr noundef nonnull align 4 dereferenceable(4) %11)
  store ptr %89, ptr %6, align 8, !tbaa !49
  br label %208

90:                                               ; preds = %12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #6
  %91 = call ptr @_ZNK9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEplEl(ptr noundef nonnull align 8 dereferenceable(8) %6, i64 noundef 1) #6
  store ptr %91, ptr %3, align 8
  %92 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %3) #6
  %93 = load i8, ptr %92, align 1, !tbaa !5
  %94 = icmp eq i8 %93, 105
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #6
  br i1 %94, label %95, label %.critedge

95:                                               ; preds = %90
  %96 = call ptr @_ZNK9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEplEl(ptr noundef nonnull align 8 dereferenceable(8) %6, i64 noundef 2) #6
  store ptr %96, ptr %4, align 8
  %97 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %4) #6
  %98 = load i8, ptr %97, align 1, !tbaa !5
  %99 = icmp eq i8 %98, 115
  br i1 %99, label %100, label %.critedge

100:                                              ; preds = %95
  %101 = call ptr @_ZNK9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEplEl(ptr noundef nonnull align 8 dereferenceable(8) %6, i64 noundef 3) #6
  store ptr %101, ptr %5, align 8
  %102 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %5) #6
  %103 = load i8, ptr %102, align 1, !tbaa !5
  %104 = icmp eq i8 %103, 112
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #6
  br i1 %104, label %105, label %106

105:                                              ; preds = %100
  call void @_ZN6Assimp18ObjFileMtlImporter10getTextureEv(ptr noundef nonnull align 8 dereferenceable(88) %0)
  br label %208

.critedge:                                        ; preds = %90, %95
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #6
  br label %106

106:                                              ; preds = %.critedge, %100
  %107 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %6) #6
  %108 = load ptr, ptr %10, align 8, !tbaa !8
  %109 = getelementptr inbounds i8, ptr %108, i64 64
  %110 = load ptr, ptr %109, align 8, !tbaa !20
  %.not53 = icmp eq ptr %110, null
  br i1 %.not53, label %113, label %111

111:                                              ; preds = %106
  %112 = getelementptr inbounds i8, ptr %110, i64 20628
  call void @_ZN6Assimp18ObjFileMtlImporter13getFloatValueERf(ptr noundef nonnull align 8 dereferenceable(88) %0, ptr noundef nonnull align 4 dereferenceable(4) %112)
  br label %113

113:                                              ; preds = %111, %106
  %.sroa.022.0.copyload = load ptr, ptr %6, align 8, !tbaa !49
  %.sroa.021.0.copyload = load ptr, ptr %7, align 8, !tbaa !49
  %114 = call ptr @_ZN6Assimp8skipLineIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEEEET_S8_S8_Rj(ptr %.sroa.022.0.copyload, ptr %.sroa.021.0.copyload, ptr noundef nonnull align 4 dereferenceable(4) %11)
  store ptr %114, ptr %6, align 8, !tbaa !49
  br label %208

115:                                              ; preds = %12, %12
  %116 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %6) #6
  %117 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %6) #6
  %118 = load i8, ptr %117, align 1, !tbaa !5
  %119 = sext i8 %118 to i32
  %120 = add nsw i32 %119, -101
  %121 = call i32 @llvm.fshl.i32(i32 %120, i32 %120, i32 31)
  switch i32 %121, label %139 [
    i32 7, label %122
    i32 2, label %129
    i32 0, label %136
    i32 5, label %137
  ]

122:                                              ; preds = %115
  %123 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %6) #6
  %124 = load ptr, ptr %10, align 8, !tbaa !8
  %125 = getelementptr inbounds i8, ptr %124, i64 64
  %126 = load ptr, ptr %125, align 8, !tbaa !20
  %.not52 = icmp eq ptr %126, null
  br i1 %.not52, label %139, label %127

127:                                              ; preds = %122
  %128 = getelementptr inbounds i8, ptr %126, i64 20632
  call void @_ZN6Assimp18ObjFileMtlImporter13getFloatValueERf(ptr noundef nonnull align 8 dereferenceable(88) %0, ptr noundef nonnull align 4 dereferenceable(4) %128)
  br label %139

129:                                              ; preds = %115
  %130 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %6) #6
  %131 = load ptr, ptr %10, align 8, !tbaa !8
  %132 = getelementptr inbounds i8, ptr %131, i64 64
  %133 = load ptr, ptr %132, align 8, !tbaa !20
  %.not51 = icmp eq ptr %133, null
  br i1 %.not51, label %139, label %134

134:                                              ; preds = %129
  %135 = getelementptr inbounds i8, ptr %133, i64 20640
  call void @_ZN6Assimp18ObjFileMtlImporter13getFloatValueERf(ptr noundef nonnull align 8 dereferenceable(88) %0, ptr noundef nonnull align 4 dereferenceable(4) %135)
  br label %139

136:                                              ; preds = %115
  call void @_ZN6Assimp18ObjFileMtlImporter14createMaterialEv(ptr noundef nonnull align 8 dereferenceable(88) %0)
  br label %139

137:                                              ; preds = %115
  %138 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEmmEv(ptr noundef nonnull align 8 dereferenceable(8) %6) #6
  call void @_ZN6Assimp18ObjFileMtlImporter10getTextureEv(ptr noundef nonnull align 8 dereferenceable(88) %0)
  br label %139

139:                                              ; preds = %129, %134, %122, %127, %137, %136, %115
  %.sroa.019.0.copyload = load ptr, ptr %6, align 8, !tbaa !49
  %.sroa.018.0.copyload = load ptr, ptr %7, align 8, !tbaa !49
  %140 = call ptr @_ZN6Assimp8skipLineIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEEEET_S8_S8_Rj(ptr %.sroa.019.0.copyload, ptr %.sroa.018.0.copyload, ptr noundef nonnull align 4 dereferenceable(4) %11)
  store ptr %140, ptr %6, align 8, !tbaa !49
  br label %208

141:                                              ; preds = %12
  %142 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %6) #6
  %143 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %6) #6
  %144 = load i8, ptr %143, align 1, !tbaa !5
  switch i8 %144, label %184 [
    i8 114, label %145
    i8 109, label %152
    i8 115, label %159
    i8 99, label %166
  ]

145:                                              ; preds = %141
  %146 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %6) #6
  %147 = load ptr, ptr %10, align 8, !tbaa !8
  %148 = getelementptr inbounds i8, ptr %147, i64 64
  %149 = load ptr, ptr %148, align 8, !tbaa !20
  %.not50 = icmp eq ptr %149, null
  br i1 %.not50, label %184, label %150

150:                                              ; preds = %145
  %151 = getelementptr inbounds i8, ptr %149, i64 20656
  call void @_ZN6Assimp18ObjFileMtlImporter13getFloatValueERNS_5MaybeIfEE(ptr noundef nonnull align 8 dereferenceable(88) %0, ptr noundef nonnull align 4 dereferenceable(5) %151)
  br label %184

152:                                              ; preds = %141
  %153 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %6) #6
  %154 = load ptr, ptr %10, align 8, !tbaa !8
  %155 = getelementptr inbounds i8, ptr %154, i64 64
  %156 = load ptr, ptr %155, align 8, !tbaa !20
  %.not49 = icmp eq ptr %156, null
  br i1 %.not49, label %184, label %157

157:                                              ; preds = %152
  %158 = getelementptr inbounds i8, ptr %156, i64 20664
  call void @_ZN6Assimp18ObjFileMtlImporter13getFloatValueERNS_5MaybeIfEE(ptr noundef nonnull align 8 dereferenceable(88) %0, ptr noundef nonnull align 4 dereferenceable(5) %158)
  br label %184

159:                                              ; preds = %141
  %160 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %6) #6
  %161 = load ptr, ptr %10, align 8, !tbaa !8
  %162 = getelementptr inbounds i8, ptr %161, i64 64
  %163 = load ptr, ptr %162, align 8, !tbaa !20
  %.not48 = icmp eq ptr %163, null
  br i1 %.not48, label %184, label %164

164:                                              ; preds = %159
  %165 = getelementptr inbounds i8, ptr %163, i64 20672
  call void @_ZN6Assimp18ObjFileMtlImporter12getColorRGBAERNS_5MaybeI9aiColor3DEE(ptr noundef nonnull align 8 dereferenceable(88) %0, ptr noundef nonnull align 4 dereferenceable(13) %165)
  br label %184

166:                                              ; preds = %141
  %167 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %6) #6
  %168 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %6) #6
  %169 = load i8, ptr %168, align 1, !tbaa !5
  %170 = icmp eq i8 %169, 114
  br i1 %170, label %171, label %178

171:                                              ; preds = %166
  %172 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %6) #6
  %173 = load ptr, ptr %10, align 8, !tbaa !8
  %174 = getelementptr inbounds i8, ptr %173, i64 64
  %175 = load ptr, ptr %174, align 8, !tbaa !20
  %.not47 = icmp eq ptr %175, null
  br i1 %.not47, label %184, label %176

176:                                              ; preds = %171
  %177 = getelementptr inbounds i8, ptr %175, i64 20696
  call void @_ZN6Assimp18ObjFileMtlImporter13getFloatValueERNS_5MaybeIfEE(ptr noundef nonnull align 8 dereferenceable(88) %0, ptr noundef nonnull align 4 dereferenceable(5) %177)
  br label %184

178:                                              ; preds = %166
  %179 = load ptr, ptr %10, align 8, !tbaa !8
  %180 = getelementptr inbounds i8, ptr %179, i64 64
  %181 = load ptr, ptr %180, align 8, !tbaa !20
  %.not46 = icmp eq ptr %181, null
  br i1 %.not46, label %184, label %182

182:                                              ; preds = %178
  %183 = getelementptr inbounds i8, ptr %181, i64 20688
  call void @_ZN6Assimp18ObjFileMtlImporter13getFloatValueERNS_5MaybeIfEE(ptr noundef nonnull align 8 dereferenceable(88) %0, ptr noundef nonnull align 4 dereferenceable(5) %183)
  br label %184

184:                                              ; preds = %176, %171, %182, %178, %159, %164, %152, %157, %145, %150, %141
  %.sroa.016.0.copyload = load ptr, ptr %6, align 8, !tbaa !49
  %.sroa.015.0.copyload = load ptr, ptr %7, align 8, !tbaa !49
  %185 = call ptr @_ZN6Assimp8skipLineIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEEEET_S8_S8_Rj(ptr %.sroa.016.0.copyload, ptr %.sroa.015.0.copyload, ptr noundef nonnull align 4 dereferenceable(4) %11)
  store ptr %185, ptr %6, align 8, !tbaa !49
  br label %208

186:                                              ; preds = %12, %12, %12
  call void @_ZN6Assimp18ObjFileMtlImporter10getTextureEv(ptr noundef nonnull align 8 dereferenceable(88) %0)
  %.sroa.013.0.copyload = load ptr, ptr %6, align 8, !tbaa !49
  %.sroa.012.0.copyload = load ptr, ptr %7, align 8, !tbaa !49
  %187 = call ptr @_ZN6Assimp8skipLineIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEEEET_S8_S8_Rj(ptr %.sroa.013.0.copyload, ptr %.sroa.012.0.copyload, ptr noundef nonnull align 4 dereferenceable(4) %11)
  store ptr %187, ptr %6, align 8, !tbaa !49
  br label %208

188:                                              ; preds = %12
  %.sroa.010.0.copyload = load ptr, ptr %6, align 8, !tbaa !49
  %.sroa.09.0.copyload = load ptr, ptr %7, align 8, !tbaa !49
  %189 = call ptr @_ZN6Assimp12getNextTokenIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEEEET_S8_S8_(ptr %.sroa.010.0.copyload, ptr %.sroa.09.0.copyload)
  store ptr %189, ptr %6, align 8, !tbaa !49
  %190 = load ptr, ptr %10, align 8, !tbaa !8
  %191 = getelementptr inbounds i8, ptr %190, i64 64
  %192 = load ptr, ptr %191, align 8, !tbaa !20
  %.not45 = icmp eq ptr %192, null
  br i1 %.not45, label %195, label %193

193:                                              ; preds = %188
  %194 = getelementptr inbounds i8, ptr %192, i64 20636
  call void @_ZN6Assimp18ObjFileMtlImporter20getIlluminationModelERi(ptr noundef nonnull align 8 dereferenceable(88) %0, ptr noundef nonnull align 4 dereferenceable(4) %194)
  %.sroa.07.0.copyload.pre = load ptr, ptr %6, align 8, !tbaa !49
  br label %195

195:                                              ; preds = %193, %188
  %.sroa.07.0.copyload = phi ptr [ %.sroa.07.0.copyload.pre, %193 ], [ %189, %188 ]
  %.sroa.06.0.copyload = load ptr, ptr %7, align 8, !tbaa !49
  %196 = call ptr @_ZN6Assimp8skipLineIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEEEET_S8_S8_Rj(ptr %.sroa.07.0.copyload, ptr %.sroa.06.0.copyload, ptr noundef nonnull align 4 dereferenceable(4) %11)
  store ptr %196, ptr %6, align 8, !tbaa !49
  br label %208

197:                                              ; preds = %12
  %198 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %6) #6
  %199 = load ptr, ptr %10, align 8, !tbaa !8
  %200 = getelementptr inbounds i8, ptr %199, i64 64
  %201 = load ptr, ptr %200, align 8, !tbaa !20
  %.not = icmp eq ptr %201, null
  br i1 %.not, label %204, label %202

202:                                              ; preds = %197
  %203 = getelementptr inbounds i8, ptr %201, i64 20704
  call void @_ZN6Assimp18ObjFileMtlImporter13getFloatValueERf(ptr noundef nonnull align 8 dereferenceable(88) %0, ptr noundef nonnull align 4 dereferenceable(4) %203)
  br label %204

204:                                              ; preds = %202, %197
  %.sroa.04.0.copyload = load ptr, ptr %6, align 8, !tbaa !49
  %.sroa.03.0.copyload = load ptr, ptr %7, align 8, !tbaa !49
  %205 = call ptr @_ZN6Assimp8skipLineIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEEEET_S8_S8_Rj(ptr %.sroa.04.0.copyload, ptr %.sroa.03.0.copyload, ptr noundef nonnull align 4 dereferenceable(4) %11)
  store ptr %205, ptr %6, align 8, !tbaa !49
  br label %208

206:                                              ; preds = %12
  %.sroa.01.0.copyload = load ptr, ptr %6, align 8, !tbaa !49
  %.sroa.0.0.copyload = load ptr, ptr %7, align 8, !tbaa !49
  %207 = call ptr @_ZN6Assimp8skipLineIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEEEET_S8_S8_Rj(ptr %.sroa.01.0.copyload, ptr %.sroa.0.0.copyload, ptr noundef nonnull align 4 dereferenceable(4) %11)
  store ptr %207, ptr %6, align 8, !tbaa !49
  br label %208

208:                                              ; preds = %105, %113, %206, %204, %195, %186, %184, %139, %88, %60
  %209 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPcSt6vectorIcSaIcEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 8 dereferenceable(8) %7) #6
  br i1 %209, label %12, label %.loopexit, !llvm.loop !59

.loopexit:                                        ; preds = %208, %.preheader, %1
  ret void
}

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Assimp18ObjFileMtlImporter12getColorRGBAEP9aiColor3D(ptr noundef nonnull align 8 dereferenceable(88), ptr noundef) local_unnamed_addr #1 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Assimp18ObjFileMtlImporter13getFloatValueERf(ptr noundef nonnull align 8 dereferenceable(88), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNK9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEplEl(ptr noundef nonnull align 8 dereferenceable(8), i64 noundef) local_unnamed_addr #3 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Assimp18ObjFileMtlImporter13getFloatValueERNS_5MaybeIfEE(ptr noundef nonnull align 8 dereferenceable(88), ptr noundef nonnull align 4 dereferenceable(5)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Assimp18ObjFileMtlImporter12getColorRGBAERNS_5MaybeI9aiColor3DEE(ptr noundef nonnull align 8 dereferenceable(88), ptr noundef nonnull align 4 dereferenceable(13)) local_unnamed_addr #1 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local ptr @_ZN6Assimp12getNextTokenIN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEEEET_S8_S8_(ptr, ptr) local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Assimp18ObjFileMtlImporter20getIlluminationModelERi(ptr noundef nonnull align 8 dereferenceable(88), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #1 align 2

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.fshl.i32(i32, i32, i32) #5

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
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 = { 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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #6 = { 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 = !{!"omnipotent char", !7, i64 0}
!7 = !{!"Simple C++ TBAA"}
!8 = !{!9, !12, i64 48}
!9 = !{!"_ZTSN6Assimp18ObjFileMtlImporterE", !10, i64 0, !14, i64 32, !14, i64 40, !12, i64 48, !15, i64 56, !16, i64 64}
!10 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !11, i64 0, !13, i64 8, !6, i64 16}
!11 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !12, i64 0}
!12 = !{!"any pointer", !6, i64 0}
!13 = !{!"long", !6, i64 0}
!14 = !{!"_ZTSN9__gnu_cxx17__normal_iteratorIPcSt6vectorIcSaIcEEEE", !12, i64 0}
!15 = !{!"int", !6, i64 0}
!16 = !{!"_ZTSSt6vectorIcSaIcEE", !17, i64 0}
!17 = !{!"_ZTSSt12_Vector_baseIcSaIcEE", !18, i64 0}
!18 = !{!"_ZTSNSt12_Vector_baseIcSaIcEE12_Vector_implE", !19, i64 0}
!19 = !{!"_ZTSNSt12_Vector_baseIcSaIcEE17_Vector_impl_dataE", !12, i64 0, !12, i64 8, !12, i64 16}
!20 = !{!21, !12, i64 64}
!21 = !{!"_ZTSN6Assimp7ObjFile5ModelE", !10, i64 0, !22, i64 32, !12, i64 56, !12, i64 64, !12, i64 72, !26, i64 80, !30, i64 104, !30, i64 128, !30, i64 152, !34, i64 176, !12, i64 224, !10, i64 232, !30, i64 264, !15, i64 288, !12, i64 296, !42, i64 304, !46, i64 328}
!22 = !{!"_ZTSSt6vectorIPN6Assimp7ObjFile6ObjectESaIS3_EE", !23, i64 0}
!23 = !{!"_ZTSSt12_Vector_baseIPN6Assimp7ObjFile6ObjectESaIS3_EE", !24, i64 0}
!24 = !{!"_ZTSNSt12_Vector_baseIPN6Assimp7ObjFile6ObjectESaIS3_EE12_Vector_implE", !25, i64 0}
!25 = !{!"_ZTSNSt12_Vector_baseIPN6Assimp7ObjFile6ObjectESaIS3_EE17_Vector_impl_dataE", !12, i64 0, !12, i64 8, !12, i64 16}
!26 = !{!"_ZTSSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !27, i64 0}
!27 = !{!"_ZTSSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !28, i64 0}
!28 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12_Vector_implE", !29, i64 0}
!29 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_Vector_impl_dataE", !12, i64 0, !12, i64 8, !12, i64 16}
!30 = !{!"_ZTSSt6vectorI10aiVector3tIfESaIS1_EE", !31, i64 0}
!31 = !{!"_ZTSSt12_Vector_baseI10aiVector3tIfESaIS1_EE", !32, i64 0}
!32 = !{!"_ZTSNSt12_Vector_baseI10aiVector3tIfESaIS1_EE12_Vector_implE", !33, i64 0}
!33 = !{!"_ZTSNSt12_Vector_baseI10aiVector3tIfESaIS1_EE17_Vector_impl_dataE", !12, i64 0, !12, i64 8, !12, i64 16}
!34 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPSt6vectorIjSaIjEESt4lessIS5_ESaISt4pairIKS5_S9_EEE", !35, i64 0}
!35 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_PSt6vectorIjSaIjEEESt10_Select1stISC_ESt4lessIS5_ESaISC_EE", !36, i64 0}
!36 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_PSt6vectorIjSaIjEEESt10_Select1stISC_ESt4lessIS5_ESaISC_EE13_Rb_tree_implISG_Lb1EEE", !37, i64 0, !39, i64 8}
!37 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE", !38, i64 0}
!38 = !{!"_ZTSSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE"}
!39 = !{!"_ZTSSt15_Rb_tree_header", !40, i64 0, !13, i64 32}
!40 = !{!"_ZTSSt18_Rb_tree_node_base", !41, i64 0, !12, i64 8, !12, i64 16, !12, i64 24}
!41 = !{!"_ZTSSt14_Rb_tree_color", !6, i64 0}
!42 = !{!"_ZTSSt6vectorIPN6Assimp7ObjFile4MeshESaIS3_EE", !43, i64 0}
!43 = !{!"_ZTSSt12_Vector_baseIPN6Assimp7ObjFile4MeshESaIS3_EE", !44, i64 0}
!44 = !{!"_ZTSNSt12_Vector_baseIPN6Assimp7ObjFile4MeshESaIS3_EE12_Vector_implE", !45, i64 0}
!45 = !{!"_ZTSNSt12_Vector_baseIPN6Assimp7ObjFile4MeshESaIS3_EE17_Vector_impl_dataE", !12, i64 0, !12, i64 8, !12, i64 16}
!46 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPN6Assimp7ObjFile8MaterialESt4lessIS5_ESaISt4pairIKS5_S9_EEE", !47, i64 0}
!47 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_PN6Assimp7ObjFile8MaterialEESt10_Select1stISC_ESt4lessIS5_ESaISC_EE", !48, i64 0}
!48 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_PN6Assimp7ObjFile8MaterialEESt10_Select1stISC_ESt4lessIS5_ESaISC_EE13_Rb_tree_implISG_Lb1EEE", !37, i64 0, !39, i64 8}
!49 = !{!12, !12, i64 0}
!50 = !{!51, !51, i64 0}
!51 = !{!"float", !6, i64 0}
!52 = !{!53, !51, i64 20628}
!53 = !{!"_ZTSN6Assimp7ObjFile8MaterialE", !54, i64 0, !54, i64 1028, !54, i64 2056, !54, i64 3084, !54, i64 4112, !54, i64 5140, !54, i64 6168, !6, i64 7196, !54, i64 13364, !54, i64 14392, !54, i64 15420, !54, i64 16448, !54, i64 17476, !54, i64 18504, !54, i64 19532, !6, i64 20560, !55, i64 20580, !55, i64 20592, !55, i64 20604, !55, i64 20616, !51, i64 20628, !51, i64 20632, !15, i64 20636, !51, i64 20640, !55, i64 20644, !56, i64 20656, !56, i64 20664, !58, i64 20672, !56, i64 20688, !56, i64 20696, !51, i64 20704, !51, i64 20708}
!54 = !{!"_ZTS8aiString", !15, i64 0, !6, i64 4}
!55 = !{!"_ZTS9aiColor3D", !51, i64 0, !51, i64 4, !51, i64 8}
!56 = !{!"_ZTSN6Assimp5MaybeIfEE", !51, i64 0, !57, i64 4}
!57 = !{!"bool", !6, i64 0}
!58 = !{!"_ZTSN6Assimp5MaybeI9aiColor3DEE", !55, i64 0, !57, i64 12}
!59 = distinct !{!59, !60}
!60 = !{!"llvm.loop.mustprogress"}


; Effective O3 passes: EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,SROAPass,SimplifyCFGPass,TailCallElimPass