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

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

%"struct.std::_Rb_tree_const_iterator" = type { ptr }
%"struct.Assimp::ObjFile::Model" = type { %"class.std::__cxx11::basic_string", %"class.std::vector.5", ptr, ptr, ptr, %"class.std::vector.0", %"class.std::vector.26", %"class.std::vector.26", %"class.std::vector.26", %"class.std::map", ptr, %"class.std::__cxx11::basic_string", %"class.std::vector.26", i32, ptr, %"class.std::vector.34", %"class.std::map.39" }
%"class.std::vector.5" = type { %"struct.std::_Vector_base.6" }
%"struct.std::_Vector_base.6" = 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.0" = type { %"struct.std::_Vector_base.1" }
%"struct.std::_Vector_base.1" = 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::__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.26" = type { %"struct.std::_Vector_base.27" }
%"struct.std::_Vector_base.27" = 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.34" = type { %"struct.std::_Vector_base.35" }
%"struct.std::_Vector_base.35" = 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.39" = type { %"class.std::_Rb_tree.40" }
%"class.std::_Rb_tree.40" = 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.aiScene = type { i32, ptr, i32, ptr, i32, ptr, i32, ptr, i32, ptr, i32, ptr, i32, ptr, ptr, %struct.aiString, i32, ptr, ptr }
%struct.aiString = type { i32, [1024 x i8] }
%"struct.std::pair" = type { %"class.std::__cxx11::basic_string", ptr }
%"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.64", %"struct.Assimp::Maybe", %"struct.Assimp::Maybe", float, float }
%struct.aiColor3D = type { float, float, float }
%"struct.Assimp::Maybe.64" = type <{ %struct.aiColor3D, i8, [3 x i8] }>
%"struct.Assimp::Maybe" = type <{ float, i8, [3 x i8] }>

@.str.14 = external hidden unnamed_addr constant [122 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [38 x i8], align 1

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

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: nobuiltin nounwind
declare void @_ZdlPvm(ptr noundef, i64 noundef) #1

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znwm(i64 noundef) #2

declare void @_ZN6Assimp17aiAssertViolationEPKcS1_i(ptr noundef, ptr noundef, i32 noundef) #3

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare { i64, i1 } @llvm.umul.with.overflow.i64(i64, i64) #4

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znam(i64 noundef) #2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN6Assimp15ObjFileImporter15createMaterialsEPKNS_7ObjFile5ModelEP7aiScene(ptr noundef nonnull align 8 dereferenceable(136) %0, ptr noundef %1, ptr noundef %2) #5 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %11 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %12 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca i32, align 4
  %16 = alloca ptr, align 8
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  store ptr %0, ptr %4, align 8, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !5
  store ptr %2, ptr %6, align 8, !tbaa !5
  %22 = load ptr, ptr %4, align 8
  %23 = load ptr, ptr %6, align 8, !tbaa !5
  %24 = icmp eq ptr null, %23
  br i1 %24, label %25, label %26

25:                                               ; preds = %3
  br label %553

26:                                               ; preds = %3
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #9
  %27 = load ptr, ptr %5, align 8, !tbaa !5
  %28 = getelementptr inbounds %"struct.Assimp::ObjFile::Model", ptr %27, i32 0, i32 5
  %29 = call noundef i64 @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %28) #9
  %30 = trunc i64 %29 to i32
  store i32 %30, ptr %7, align 4, !tbaa !9
  %31 = load ptr, ptr %6, align 8, !tbaa !5
  %32 = getelementptr inbounds %struct.aiScene, ptr %31, i32 0, i32 4
  store i32 0, ptr %32, align 8, !tbaa !11
  %33 = load ptr, ptr %5, align 8, !tbaa !5
  %34 = getelementptr inbounds %"struct.Assimp::ObjFile::Model", ptr %33, i32 0, i32 5
  %35 = call noundef zeroext i1 @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %34) #9
  br i1 %35, label %36, label %38

36:                                               ; preds = %26
  %37 = call noundef ptr @_ZN6Assimp13DefaultLogger3getEv()
  call void @_ZN6Assimp6Logger5debugEPKc(ptr noundef nonnull align 8 dereferenceable(12) %37, ptr noundef @.str.27)
  store i32 1, ptr %8, align 4
  br label %551

38:                                               ; preds = %26
  %39 = load i32, ptr %7, align 4, !tbaa !9
  %40 = zext i32 %39 to i64
  %41 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %40, i64 8)
  %42 = extractvalue { i64, i1 } %41, 1
  %43 = extractvalue { i64, i1 } %41, 0
  %44 = select i1 %42, i64 -1, i64 %43
  %45 = call noalias noundef nonnull ptr @_Znam(i64 noundef %44) #10
  %46 = load ptr, ptr %6, align 8, !tbaa !5
  %47 = getelementptr inbounds %struct.aiScene, ptr %46, i32 0, i32 5
  store ptr %45, ptr %47, align 8, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #9
  store i32 0, ptr %9, align 4, !tbaa !9
  br label %48

48:                                               ; preds = %539, %38
  %49 = load i32, ptr %9, align 4, !tbaa !9
  %50 = load i32, ptr %7, align 4, !tbaa !9
  %51 = icmp ult i32 %49, %50
  br i1 %51, label %53, label %52

52:                                               ; preds = %48
  store i32 2, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #9
  br label %542

53:                                               ; preds = %48
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #9
  call void @_ZNSt23_Rb_tree_const_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPN6Assimp7ObjFile8MaterialEEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %10) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #9
  %54 = load ptr, ptr %5, align 8, !tbaa !5
  %55 = getelementptr inbounds %"struct.Assimp::ObjFile::Model", ptr %54, i32 0, i32 16
  %56 = load ptr, ptr %5, align 8, !tbaa !5
  %57 = getelementptr inbounds %"struct.Assimp::ObjFile::Model", ptr %56, i32 0, i32 5
  %58 = load i32, ptr %9, align 4, !tbaa !9
  %59 = zext i32 %58 to i64
  %60 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %57, i64 noundef %59) #9
  %61 = call ptr @_ZNKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPN6Assimp7ObjFile8MaterialESt4lessIS5_ESaISt4pairIKS5_S9_EEE4findERSD_(ptr noundef nonnull align 8 dereferenceable(48) %55, ptr noundef nonnull align 8 dereferenceable(32) %60)
  %62 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %11, i32 0, i32 0
  store ptr %61, ptr %62, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %10, ptr align 8 %11, i64 8, i1 false), !tbaa.struct !15
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #9
  %63 = load ptr, ptr %5, align 8, !tbaa !5
  %64 = getelementptr inbounds %"struct.Assimp::ObjFile::Model", ptr %63, i32 0, i32 16
  %65 = call ptr @_ZNKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPN6Assimp7ObjFile8MaterialESt4lessIS5_ESaISt4pairIKS5_S9_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %64) #9
  %66 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %12, i32 0, i32 0
  store ptr %65, ptr %66, align 8
  %67 = call noundef zeroext i1 @_ZSteqRKSt23_Rb_tree_const_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPN6Assimp7ObjFile8MaterialEEESF_(ptr noundef nonnull align 8 dereferenceable(8) %12, ptr noundef nonnull align 8 dereferenceable(8) %10) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #9
  br i1 %67, label %68, label %69

68:                                               ; preds = %53
  store i32 4, ptr %8, align 4
  br label %536

69:                                               ; preds = %53
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #9
  %70 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 16) #10
  invoke void @_ZN10aiMaterialC1Ev(ptr noundef nonnull align 8 dereferenceable(16) %70)
          to label %71 unwind label %82

71:                                               ; preds = %69
  store ptr %70, ptr %13, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #9
  %72 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPN6Assimp7ObjFile8MaterialEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %10) #9
  %73 = getelementptr inbounds %"struct.std::pair", ptr %72, i32 0, i32 1
  %74 = load ptr, ptr %73, align 8, !tbaa !16
  store ptr %74, ptr %16, align 8, !tbaa !5
  %75 = load ptr, ptr %13, align 8, !tbaa !5
  %76 = load ptr, ptr %16, align 8, !tbaa !5
  %77 = getelementptr inbounds %"struct.Assimp::ObjFile::Material", ptr %76, i32 0, i32 0
  %78 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPK8aiStringPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %75, ptr noundef %77, ptr noundef @.str.28, i32 noundef 0, i32 noundef 0)
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #9
  store i32 0, ptr %17, align 4, !tbaa !9
  %79 = load ptr, ptr %16, align 8, !tbaa !5
  %80 = getelementptr inbounds %"struct.Assimp::ObjFile::Material", ptr %79, i32 0, i32 22
  %81 = load i32, ptr %80, align 4, !tbaa !21
  switch i32 %81, label %89 [
    i32 0, label %86
    i32 1, label %87
    i32 2, label %88
  ]

82:                                               ; preds = %69
  %83 = landingpad { ptr, i32 }
          cleanup
  %84 = extractvalue { ptr, i32 } %83, 0
  store ptr %84, ptr %14, align 8
  %85 = extractvalue { ptr, i32 } %83, 1
  store i32 %85, ptr %15, align 4
  call void @_ZdlPvm(ptr noundef %70, i64 noundef 16) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #9
  br label %554

86:                                               ; preds = %71
  store i32 9, ptr %17, align 4, !tbaa !9
  br label %91

87:                                               ; preds = %71
  store i32 2, ptr %17, align 4, !tbaa !9
  br label %91

88:                                               ; preds = %71
  store i32 3, ptr %17, align 4, !tbaa !9
  br label %91

89:                                               ; preds = %71
  store i32 2, ptr %17, align 4, !tbaa !9
  %90 = call noundef ptr @_ZN6Assimp13DefaultLogger3getEv()
  call void @_ZN6Assimp6Logger5errorEPKc(ptr noundef nonnull align 8 dereferenceable(12) %90, ptr noundef @.str.29)
  br label %91

91:                                               ; preds = %89, %88, %87, %86
  %92 = load ptr, ptr %13, align 8, !tbaa !5
  %93 = call noundef i32 @_ZN10aiMaterial11AddPropertyIiEE8aiReturnPKT_jPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %92, ptr noundef %17, i32 noundef 1, ptr noundef @.str.30, i32 noundef 0, i32 noundef 0)
  %94 = load ptr, ptr %13, align 8, !tbaa !5
  %95 = load ptr, ptr %16, align 8, !tbaa !5
  %96 = getelementptr inbounds %"struct.Assimp::ObjFile::Material", ptr %95, i32 0, i32 22
  %97 = call noundef i32 @_ZN10aiMaterial11AddPropertyIiEE8aiReturnPKT_jPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %94, ptr noundef %96, i32 noundef 1, ptr noundef @.str.31, i32 noundef 0, i32 noundef 0)
  %98 = load ptr, ptr %13, align 8, !tbaa !5
  %99 = load ptr, ptr %16, align 8, !tbaa !5
  %100 = getelementptr inbounds %"struct.Assimp::ObjFile::Material", ptr %99, i32 0, i32 16
  %101 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPK9aiColor3DjPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %98, ptr noundef %100, i32 noundef 1, ptr noundef @.str.32, i32 noundef 0, i32 noundef 0)
  %102 = load ptr, ptr %13, align 8, !tbaa !5
  %103 = load ptr, ptr %16, align 8, !tbaa !5
  %104 = getelementptr inbounds %"struct.Assimp::ObjFile::Material", ptr %103, i32 0, i32 17
  %105 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPK9aiColor3DjPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %102, ptr noundef %104, i32 noundef 1, ptr noundef @.str.33, i32 noundef 0, i32 noundef 0)
  %106 = load ptr, ptr %13, align 8, !tbaa !5
  %107 = load ptr, ptr %16, align 8, !tbaa !5
  %108 = getelementptr inbounds %"struct.Assimp::ObjFile::Material", ptr %107, i32 0, i32 18
  %109 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPK9aiColor3DjPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %106, ptr noundef %108, i32 noundef 1, ptr noundef @.str.34, i32 noundef 0, i32 noundef 0)
  %110 = load ptr, ptr %13, align 8, !tbaa !5
  %111 = load ptr, ptr %16, align 8, !tbaa !5
  %112 = getelementptr inbounds %"struct.Assimp::ObjFile::Material", ptr %111, i32 0, i32 19
  %113 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPK9aiColor3DjPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %110, ptr noundef %112, i32 noundef 1, ptr noundef @.str.35, i32 noundef 0, i32 noundef 0)
  %114 = load ptr, ptr %13, align 8, !tbaa !5
  %115 = load ptr, ptr %16, align 8, !tbaa !5
  %116 = getelementptr inbounds %"struct.Assimp::ObjFile::Material", ptr %115, i32 0, i32 21
  %117 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPKfjPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %114, ptr noundef %116, i32 noundef 1, ptr noundef @.str.36, i32 noundef 0, i32 noundef 0)
  %118 = load ptr, ptr %13, align 8, !tbaa !5
  %119 = load ptr, ptr %16, align 8, !tbaa !5
  %120 = getelementptr inbounds %"struct.Assimp::ObjFile::Material", ptr %119, i32 0, i32 20
  %121 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPKfjPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %118, ptr noundef %120, i32 noundef 1, ptr noundef @.str.37, i32 noundef 0, i32 noundef 0)
  %122 = load ptr, ptr %13, align 8, !tbaa !5
  %123 = load ptr, ptr %16, align 8, !tbaa !5
  %124 = getelementptr inbounds %"struct.Assimp::ObjFile::Material", ptr %123, i32 0, i32 24
  %125 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPK9aiColor3DjPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %122, ptr noundef %124, i32 noundef 1, ptr noundef @.str.38, i32 noundef 0, i32 noundef 0)
  %126 = load ptr, ptr %16, align 8, !tbaa !5
  %127 = getelementptr inbounds %"struct.Assimp::ObjFile::Material", ptr %126, i32 0, i32 25
  %128 = call noundef zeroext i1 @_ZNK6Assimp5MaybeIfEcvbEv(ptr noundef nonnull align 4 dereferenceable(5) %127)
  br i1 %128, label %129, label %135

129:                                              ; preds = %91
  %130 = load ptr, ptr %13, align 8, !tbaa !5
  %131 = load ptr, ptr %16, align 8, !tbaa !5
  %132 = getelementptr inbounds %"struct.Assimp::ObjFile::Material", ptr %131, i32 0, i32 25
  %133 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK6Assimp5MaybeIfE3GetEv(ptr noundef nonnull align 4 dereferenceable(5) %132)
  %134 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPKfjPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %130, ptr noundef %133, i32 noundef 1, ptr noundef @.str.39, i32 noundef 0, i32 noundef 0)
  br label %135

135:                                              ; preds = %129, %91
  %136 = load ptr, ptr %16, align 8, !tbaa !5
  %137 = getelementptr inbounds %"struct.Assimp::ObjFile::Material", ptr %136, i32 0, i32 26
  %138 = call noundef zeroext i1 @_ZNK6Assimp5MaybeIfEcvbEv(ptr noundef nonnull align 4 dereferenceable(5) %137)
  br i1 %138, label %139, label %145

139:                                              ; preds = %135
  %140 = load ptr, ptr %13, align 8, !tbaa !5
  %141 = load ptr, ptr %16, align 8, !tbaa !5
  %142 = getelementptr inbounds %"struct.Assimp::ObjFile::Material", ptr %141, i32 0, i32 26
  %143 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK6Assimp5MaybeIfE3GetEv(ptr noundef nonnull align 4 dereferenceable(5) %142)
  %144 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPKfjPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %140, ptr noundef %143, i32 noundef 1, ptr noundef @.str.40, i32 noundef 0, i32 noundef 0)
  br label %145

145:                                              ; preds = %139, %135
  %146 = load ptr, ptr %16, align 8, !tbaa !5
  %147 = getelementptr inbounds %"struct.Assimp::ObjFile::Material", ptr %146, i32 0, i32 27
  %148 = call noundef zeroext i1 @_ZNK6Assimp5MaybeI9aiColor3DEcvbEv(ptr noundef nonnull align 4 dereferenceable(13) %147)
  br i1 %148, label %149, label %155

149:                                              ; preds = %145
  %150 = load ptr, ptr %13, align 8, !tbaa !5
  %151 = load ptr, ptr %16, align 8, !tbaa !5
  %152 = getelementptr inbounds %"struct.Assimp::ObjFile::Material", ptr %151, i32 0, i32 27
  %153 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNK6Assimp5MaybeI9aiColor3DE3GetEv(ptr noundef nonnull align 4 dereferenceable(13) %152)
  %154 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPK9aiColor3DjPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %150, ptr noundef %153, i32 noundef 1, ptr noundef @.str.41, i32 noundef 0, i32 noundef 0)
  br label %155

155:                                              ; preds = %149, %145
  %156 = load ptr, ptr %16, align 8, !tbaa !5
  %157 = getelementptr inbounds %"struct.Assimp::ObjFile::Material", ptr %156, i32 0, i32 28
  %158 = call noundef zeroext i1 @_ZNK6Assimp5MaybeIfEcvbEv(ptr noundef nonnull align 4 dereferenceable(5) %157)
  br i1 %158, label %159, label %165

159:                                              ; preds = %155
  %160 = load ptr, ptr %13, align 8, !tbaa !5
  %161 = load ptr, ptr %16, align 8, !tbaa !5
  %162 = getelementptr inbounds %"struct.Assimp::ObjFile::Material", ptr %161, i32 0, i32 28
  %163 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK6Assimp5MaybeIfE3GetEv(ptr noundef nonnull align 4 dereferenceable(5) %162)
  %164 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPKfjPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %160, ptr noundef %163, i32 noundef 1, ptr noundef @.str.42, i32 noundef 0, i32 noundef 0)
  br label %165

165:                                              ; preds = %159, %155
  %166 = load ptr, ptr %16, align 8, !tbaa !5
  %167 = getelementptr inbounds %"struct.Assimp::ObjFile::Material", ptr %166, i32 0, i32 29
  %168 = call noundef zeroext i1 @_ZNK6Assimp5MaybeIfEcvbEv(ptr noundef nonnull align 4 dereferenceable(5) %167)
  br i1 %168, label %169, label %175

169:                                              ; preds = %165
  %170 = load ptr, ptr %13, align 8, !tbaa !5
  %171 = load ptr, ptr %16, align 8, !tbaa !5
  %172 = getelementptr inbounds %"struct.Assimp::ObjFile::Material", ptr %171, i32 0, i32 29
  %173 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK6Assimp5MaybeIfE3GetEv(ptr noundef nonnull align 4 dereferenceable(5) %172)
  %174 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPKfjPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %170, ptr noundef %173, i32 noundef 1, ptr noundef @.str.43, i32 noundef 0, i32 noundef 0)
  br label %175

175:                                              ; preds = %169, %165
  %176 = load ptr, ptr %13, align 8, !tbaa !5
  %177 = load ptr, ptr %16, align 8, !tbaa !5
  %178 = getelementptr inbounds %"struct.Assimp::ObjFile::Material", ptr %177, i32 0, i32 30
  %179 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPKfjPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %176, ptr noundef %178, i32 noundef 1, ptr noundef @.str.44, i32 noundef 0, i32 noundef 0)
  %180 = load ptr, ptr %13, align 8, !tbaa !5
  %181 = load ptr, ptr %16, align 8, !tbaa !5
  %182 = getelementptr inbounds %"struct.Assimp::ObjFile::Material", ptr %181, i32 0, i32 23
  %183 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPKfjPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %180, ptr noundef %182, i32 noundef 1, ptr noundef @.str.45, i32 noundef 0, i32 noundef 0)
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #9
  store i32 0, ptr %18, align 4, !tbaa !9
  %184 = load ptr, ptr %16, align 8, !tbaa !5
  %185 = getelementptr inbounds %"struct.Assimp::ObjFile::Material", ptr %184, i32 0, i32 1
  %186 = getelementptr inbounds %struct.aiString, ptr %185, i32 0, i32 0
  %187 = load i32, ptr %186, align 4, !tbaa !28
  %188 = icmp ne i32 0, %187
  br i1 %188, label %189, label %204

189:                                              ; preds = %175
  %190 = load ptr, ptr %13, align 8, !tbaa !5
  %191 = load ptr, ptr %16, align 8, !tbaa !5
  %192 = getelementptr inbounds %"struct.Assimp::ObjFile::Material", ptr %191, i32 0, i32 1
  %193 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPK8aiStringPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %190, ptr noundef %192, ptr noundef @.str.46, i32 noundef 1, i32 noundef 0)
  %194 = load ptr, ptr %13, align 8, !tbaa !5
  %195 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPKijPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %194, ptr noundef %18, i32 noundef 1, ptr noundef @.str.47, i32 noundef 1, i32 noundef 0)
  %196 = load ptr, ptr %16, align 8, !tbaa !5
  %197 = getelementptr inbounds %"struct.Assimp::ObjFile::Material", ptr %196, i32 0, i32 15
  %198 = getelementptr inbounds [20 x i8], ptr %197, i64 0, i64 0
  %199 = load i8, ptr %198, align 4, !tbaa !29, !range !30, !noundef !31
  %200 = trunc i8 %199 to i1
  br i1 %200, label %201, label %203

201:                                              ; preds = %189
  %202 = load ptr, ptr %13, align 8, !tbaa !5
  call void @_ZN6Assimp15ObjFileImporter29addTextureMappingModePropertyEP10aiMaterial13aiTextureTypeii(ptr noundef nonnull align 8 dereferenceable(136) %22, ptr noundef %202, i32 noundef 1, i32 noundef 1, i32 noundef 0)
  br label %203

203:                                              ; preds = %201, %189
  br label %204

204:                                              ; preds = %203, %175
  %205 = load ptr, ptr %16, align 8, !tbaa !5
  %206 = getelementptr inbounds %"struct.Assimp::ObjFile::Material", ptr %205, i32 0, i32 3
  %207 = getelementptr inbounds %struct.aiString, ptr %206, i32 0, i32 0
  %208 = load i32, ptr %207, align 4, !tbaa !32
  %209 = icmp ne i32 0, %208
  br i1 %209, label %210, label %225

210:                                              ; preds = %204
  %211 = load ptr, ptr %13, align 8, !tbaa !5
  %212 = load ptr, ptr %16, align 8, !tbaa !5
  %213 = getelementptr inbounds %"struct.Assimp::ObjFile::Material", ptr %212, i32 0, i32 3
  %214 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPK8aiStringPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %211, ptr noundef %213, ptr noundef @.str.46, i32 noundef 3, i32 noundef 0)
  %215 = load ptr, ptr %13, align 8, !tbaa !5
  %216 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPKijPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %215, ptr noundef %18, i32 noundef 1, ptr noundef @.str.47, i32 noundef 3, i32 noundef 0)
  %217 = load ptr, ptr %16, align 8, !tbaa !5
  %218 = getelementptr inbounds %"struct.Assimp::ObjFile::Material", ptr %217, i32 0, i32 15
  %219 = getelementptr inbounds [20 x i8], ptr %218, i64 0, i64 2
  %220 = load i8, ptr %219, align 2, !tbaa !29, !range !30, !noundef !31
  %221 = trunc i8 %220 to i1
  br i1 %221, label %222, label %224

222:                                              ; preds = %210
  %223 = load ptr, ptr %13, align 8, !tbaa !5
  call void @_ZN6Assimp15ObjFileImporter29addTextureMappingModePropertyEP10aiMaterial13aiTextureTypeii(ptr noundef nonnull align 8 dereferenceable(136) %22, ptr noundef %223, i32 noundef 3, i32 noundef 1, i32 noundef 0)
  br label %224

224:                                              ; preds = %222, %210
  br label %225

225:                                              ; preds = %224, %204
  %226 = load ptr, ptr %16, align 8, !tbaa !5
  %227 = getelementptr inbounds %"struct.Assimp::ObjFile::Material", ptr %226, i32 0, i32 4
  %228 = getelementptr inbounds %struct.aiString, ptr %227, i32 0, i32 0
  %229 = load i32, ptr %228, align 4, !tbaa !33
  %230 = icmp ne i32 0, %229
  br i1 %230, label %231, label %238

231:                                              ; preds = %225
  %232 = load ptr, ptr %13, align 8, !tbaa !5
  %233 = load ptr, ptr %16, align 8, !tbaa !5
  %234 = getelementptr inbounds %"struct.Assimp::ObjFile::Material", ptr %233, i32 0, i32 4
  %235 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPK8aiStringPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %232, ptr noundef %234, ptr noundef @.str.46, i32 noundef 4, i32 noundef 0)
  %236 = load ptr, ptr %13, align 8, !tbaa !5
  %237 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPKijPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %236, ptr noundef %18, i32 noundef 1, ptr noundef @.str.47, i32 noundef 4, i32 noundef 0)
  br label %238

238:                                              ; preds = %231, %225
  %239 = load ptr, ptr %16, align 8, !tbaa !5
  %240 = getelementptr inbounds %"struct.Assimp::ObjFile::Material", ptr %239, i32 0, i32 2
  %241 = getelementptr inbounds %struct.aiString, ptr %240, i32 0, i32 0
  %242 = load i32, ptr %241, align 4, !tbaa !34
  %243 = icmp ne i32 0, %242
  br i1 %243, label %244, label %259

244:                                              ; preds = %238
  %245 = load ptr, ptr %13, align 8, !tbaa !5
  %246 = load ptr, ptr %16, align 8, !tbaa !5
  %247 = getelementptr inbounds %"struct.Assimp::ObjFile::Material", ptr %246, i32 0, i32 2
  %248 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPK8aiStringPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %245, ptr noundef %247, ptr noundef @.str.46, i32 noundef 2, i32 noundef 0)
  %249 = load ptr, ptr %13, align 8, !tbaa !5
  %250 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPKijPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %249, ptr noundef %18, i32 noundef 1, ptr noundef @.str.47, i32 noundef 2, i32 noundef 0)
  %251 = load ptr, ptr %16, align 8, !tbaa !5
  %252 = getelementptr inbounds %"struct.Assimp::ObjFile::Material", ptr %251, i32 0, i32 15
  %253 = getelementptr inbounds [20 x i8], ptr %252, i64 0, i64 1
  %254 = load i8, ptr %253, align 1, !tbaa !29, !range !30, !noundef !31
  %255 = trunc i8 %254 to i1
  br i1 %255, label %256, label %258

256:                                              ; preds = %244
  %257 = load ptr, ptr %13, align 8, !tbaa !5
  call void @_ZN6Assimp15ObjFileImporter29addTextureMappingModePropertyEP10aiMaterial13aiTextureTypeii(ptr noundef nonnull align 8 dereferenceable(136) %22, ptr noundef %257, i32 noundef 2, i32 noundef 1, i32 noundef 0)
  br label %258

258:                                              ; preds = %256, %244
  br label %259

259:                                              ; preds = %258, %238
  %260 = load ptr, ptr %16, align 8, !tbaa !5
  %261 = getelementptr inbounds %"struct.Assimp::ObjFile::Material", ptr %260, i32 0, i32 5
  %262 = getelementptr inbounds %struct.aiString, ptr %261, i32 0, i32 0
  %263 = load i32, ptr %262, align 4, !tbaa !35
  %264 = icmp ne i32 0, %263
  br i1 %264, label %265, label %291

265:                                              ; preds = %259
  %266 = load ptr, ptr %13, align 8, !tbaa !5
  %267 = load ptr, ptr %16, align 8, !tbaa !5
  %268 = getelementptr inbounds %"struct.Assimp::ObjFile::Material", ptr %267, i32 0, i32 5
  %269 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPK8aiStringPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %266, ptr noundef %268, ptr noundef @.str.46, i32 noundef 5, i32 noundef 0)
  %270 = load ptr, ptr %13, align 8, !tbaa !5
  %271 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPKijPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %270, ptr noundef %18, i32 noundef 1, ptr noundef @.str.47, i32 noundef 5, i32 noundef 0)
  %272 = load ptr, ptr %16, align 8, !tbaa !5
  %273 = getelementptr inbounds %"struct.Assimp::ObjFile::Material", ptr %272, i32 0, i32 31
  %274 = load float, ptr %273, align 4, !tbaa !36
  %275 = fpext float %274 to double
  %276 = fcmp une double %275, 1.000000e+00
  br i1 %276, label %277, label %282

277:                                              ; preds = %265
  %278 = load ptr, ptr %13, align 8, !tbaa !5
  %279 = load ptr, ptr %16, align 8, !tbaa !5
  %280 = getelementptr inbounds %"struct.Assimp::ObjFile::Material", ptr %279, i32 0, i32 31
  %281 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPKfjPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %278, ptr noundef %280, i32 noundef 1, ptr noundef @.str.48, i32 noundef 5, i32 noundef 0)
  br label %282

282:                                              ; preds = %277, %265
  %283 = load ptr, ptr %16, align 8, !tbaa !5
  %284 = getelementptr inbounds %"struct.Assimp::ObjFile::Material", ptr %283, i32 0, i32 15
  %285 = getelementptr inbounds [20 x i8], ptr %284, i64 0, i64 4
  %286 = load i8, ptr %285, align 4, !tbaa !29, !range !30, !noundef !31
  %287 = trunc i8 %286 to i1
  br i1 %287, label %288, label %290

288:                                              ; preds = %282
  %289 = load ptr, ptr %13, align 8, !tbaa !5
  call void @_ZN6Assimp15ObjFileImporter29addTextureMappingModePropertyEP10aiMaterial13aiTextureTypeii(ptr noundef nonnull align 8 dereferenceable(136) %22, ptr noundef %289, i32 noundef 5, i32 noundef 1, i32 noundef 0)
  br label %290

290:                                              ; preds = %288, %282
  br label %291

291:                                              ; preds = %290, %259
  %292 = load ptr, ptr %16, align 8, !tbaa !5
  %293 = getelementptr inbounds %"struct.Assimp::ObjFile::Material", ptr %292, i32 0, i32 6
  %294 = getelementptr inbounds %struct.aiString, ptr %293, i32 0, i32 0
  %295 = load i32, ptr %294, align 4, !tbaa !37
  %296 = icmp ne i32 0, %295
  br i1 %296, label %297, label %323

297:                                              ; preds = %291
  %298 = load ptr, ptr %13, align 8, !tbaa !5
  %299 = load ptr, ptr %16, align 8, !tbaa !5
  %300 = getelementptr inbounds %"struct.Assimp::ObjFile::Material", ptr %299, i32 0, i32 6
  %301 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPK8aiStringPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %298, ptr noundef %300, ptr noundef @.str.46, i32 noundef 6, i32 noundef 0)
  %302 = load ptr, ptr %13, align 8, !tbaa !5
  %303 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPKijPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %302, ptr noundef %18, i32 noundef 1, ptr noundef @.str.47, i32 noundef 6, i32 noundef 0)
  %304 = load ptr, ptr %16, align 8, !tbaa !5
  %305 = getelementptr inbounds %"struct.Assimp::ObjFile::Material", ptr %304, i32 0, i32 31
  %306 = load float, ptr %305, align 4, !tbaa !36
  %307 = fpext float %306 to double
  %308 = fcmp une double %307, 1.000000e+00
  br i1 %308, label %309, label %314

309:                                              ; preds = %297
  %310 = load ptr, ptr %13, align 8, !tbaa !5
  %311 = load ptr, ptr %16, align 8, !tbaa !5
  %312 = getelementptr inbounds %"struct.Assimp::ObjFile::Material", ptr %311, i32 0, i32 31
  %313 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPKfjPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %310, ptr noundef %312, i32 noundef 1, ptr noundef @.str.48, i32 noundef 6, i32 noundef 0)
  br label %314

314:                                              ; preds = %309, %297
  %315 = load ptr, ptr %16, align 8, !tbaa !5
  %316 = getelementptr inbounds %"struct.Assimp::ObjFile::Material", ptr %315, i32 0, i32 15
  %317 = getelementptr inbounds [20 x i8], ptr %316, i64 0, i64 5
  %318 = load i8, ptr %317, align 1, !tbaa !29, !range !30, !noundef !31
  %319 = trunc i8 %318 to i1
  br i1 %319, label %320, label %322

320:                                              ; preds = %314
  %321 = load ptr, ptr %13, align 8, !tbaa !5
  call void @_ZN6Assimp15ObjFileImporter29addTextureMappingModePropertyEP10aiMaterial13aiTextureTypeii(ptr noundef nonnull align 8 dereferenceable(136) %22, ptr noundef %321, i32 noundef 6, i32 noundef 1, i32 noundef 0)
  br label %322

322:                                              ; preds = %320, %314
  br label %323

323:                                              ; preds = %322, %291
  %324 = load ptr, ptr %16, align 8, !tbaa !5
  %325 = getelementptr inbounds %"struct.Assimp::ObjFile::Material", ptr %324, i32 0, i32 7
  %326 = getelementptr inbounds [6 x %struct.aiString], ptr %325, i64 0, i64 0
  %327 = getelementptr inbounds %struct.aiString, ptr %326, i32 0, i32 0
  %328 = load i32, ptr %327, align 4, !tbaa !38
  %329 = icmp ne i32 0, %328
  br i1 %329, label %330, label %375

330:                                              ; preds = %323
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #9
  %331 = load ptr, ptr %16, align 8, !tbaa !5
  %332 = getelementptr inbounds %"struct.Assimp::ObjFile::Material", ptr %331, i32 0, i32 7
  %333 = getelementptr inbounds [6 x %struct.aiString], ptr %332, i64 0, i64 1
  %334 = getelementptr inbounds %struct.aiString, ptr %333, i32 0, i32 0
  %335 = load i32, ptr %334, align 4, !tbaa !38
  %336 = icmp ne i32 0, %335
  %337 = zext i1 %336 to i64
  %338 = select i1 %336, i32 7, i32 6
  store i32 %338, ptr %19, align 4, !tbaa !39
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #9
  %339 = load i32, ptr %19, align 4, !tbaa !39
  %340 = icmp eq i32 %339, 6
  %341 = zext i1 %340 to i64
  %342 = select i1 %340, i32 1, i32 6
  store i32 %342, ptr %20, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #9
  store i32 0, ptr %21, align 4, !tbaa !9
  br label %343

343:                                              ; preds = %371, %330
  %344 = load i32, ptr %21, align 4, !tbaa !9
  %345 = load i32, ptr %20, align 4, !tbaa !9
  %346 = icmp ult i32 %344, %345
  br i1 %346, label %348, label %347

347:                                              ; preds = %343
  store i32 6, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #9
  br label %374

348:                                              ; preds = %343
  %349 = load ptr, ptr %13, align 8, !tbaa !5
  %350 = load ptr, ptr %16, align 8, !tbaa !5
  %351 = getelementptr inbounds %"struct.Assimp::ObjFile::Material", ptr %350, i32 0, i32 7
  %352 = load i32, ptr %21, align 4, !tbaa !9
  %353 = zext i32 %352 to i64
  %354 = getelementptr inbounds [6 x %struct.aiString], ptr %351, i64 0, i64 %353
  %355 = load i32, ptr %21, align 4, !tbaa !9
  %356 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPK8aiStringPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %349, ptr noundef %354, ptr noundef @.str.46, i32 noundef 11, i32 noundef %355)
  %357 = load ptr, ptr %13, align 8, !tbaa !5
  %358 = load i32, ptr %21, align 4, !tbaa !9
  %359 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPKijPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %357, ptr noundef %18, i32 noundef 1, ptr noundef @.str.47, i32 noundef 11, i32 noundef %358)
  %360 = load ptr, ptr %16, align 8, !tbaa !5
  %361 = getelementptr inbounds %"struct.Assimp::ObjFile::Material", ptr %360, i32 0, i32 15
  %362 = load i32, ptr %19, align 4, !tbaa !39
  %363 = zext i32 %362 to i64
  %364 = getelementptr inbounds [20 x i8], ptr %361, i64 0, i64 %363
  %365 = load i8, ptr %364, align 1, !tbaa !29, !range !30, !noundef !31
  %366 = trunc i8 %365 to i1
  br i1 %366, label %367, label %370

367:                                              ; preds = %348
  %368 = load ptr, ptr %13, align 8, !tbaa !5
  %369 = load i32, ptr %21, align 4, !tbaa !9
  call void @_ZN6Assimp15ObjFileImporter29addTextureMappingModePropertyEP10aiMaterial13aiTextureTypeii(ptr noundef nonnull align 8 dereferenceable(136) %22, ptr noundef %368, i32 noundef 11, i32 noundef 1, i32 noundef %369)
  br label %370

370:                                              ; preds = %367, %348
  br label %371

371:                                              ; preds = %370
  %372 = load i32, ptr %21, align 4, !tbaa !9
  %373 = add i32 %372, 1
  store i32 %373, ptr %21, align 4, !tbaa !9
  br label %343, !llvm.loop !41

374:                                              ; preds = %347
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #9
  br label %375

375:                                              ; preds = %374, %323
  %376 = load ptr, ptr %16, align 8, !tbaa !5
  %377 = getelementptr inbounds %"struct.Assimp::ObjFile::Material", ptr %376, i32 0, i32 10
  %378 = getelementptr inbounds %struct.aiString, ptr %377, i32 0, i32 0
  %379 = load i32, ptr %378, align 4, !tbaa !43
  %380 = icmp ne i32 0, %379
  br i1 %380, label %381, label %396

381:                                              ; preds = %375
  %382 = load ptr, ptr %13, align 8, !tbaa !5
  %383 = load ptr, ptr %16, align 8, !tbaa !5
  %384 = getelementptr inbounds %"struct.Assimp::ObjFile::Material", ptr %383, i32 0, i32 10
  %385 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPK8aiStringPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %382, ptr noundef %384, ptr noundef @.str.46, i32 noundef 9, i32 noundef 0)
  %386 = load ptr, ptr %13, align 8, !tbaa !5
  %387 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPKijPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %386, ptr noundef %18, i32 noundef 1, ptr noundef @.str.47, i32 noundef 9, i32 noundef 0)
  %388 = load ptr, ptr %16, align 8, !tbaa !5
  %389 = getelementptr inbounds %"struct.Assimp::ObjFile::Material", ptr %388, i32 0, i32 15
  %390 = getelementptr inbounds [20 x i8], ptr %389, i64 0, i64 15
  %391 = load i8, ptr %390, align 1, !tbaa !29, !range !30, !noundef !31
  %392 = trunc i8 %391 to i1
  br i1 %392, label %393, label %395

393:                                              ; preds = %381
  %394 = load ptr, ptr %13, align 8, !tbaa !5
  call void @_ZN6Assimp15ObjFileImporter29addTextureMappingModePropertyEP10aiMaterial13aiTextureTypeii(ptr noundef nonnull align 8 dereferenceable(136) %22, ptr noundef %394, i32 noundef 9, i32 noundef 1, i32 noundef 0)
  br label %395

395:                                              ; preds = %393, %381
  br label %396

396:                                              ; preds = %395, %375
  %397 = load ptr, ptr %16, align 8, !tbaa !5
  %398 = getelementptr inbounds %"struct.Assimp::ObjFile::Material", ptr %397, i32 0, i32 9
  %399 = getelementptr inbounds %struct.aiString, ptr %398, i32 0, i32 0
  %400 = load i32, ptr %399, align 4, !tbaa !44
  %401 = icmp ne i32 0, %400
  br i1 %401, label %402, label %417

402:                                              ; preds = %396
  %403 = load ptr, ptr %13, align 8, !tbaa !5
  %404 = load ptr, ptr %16, align 8, !tbaa !5
  %405 = getelementptr inbounds %"struct.Assimp::ObjFile::Material", ptr %404, i32 0, i32 9
  %406 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPK8aiStringPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %403, ptr noundef %405, ptr noundef @.str.46, i32 noundef 8, i32 noundef 0)
  %407 = load ptr, ptr %13, align 8, !tbaa !5
  %408 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPKijPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %407, ptr noundef %18, i32 noundef 1, ptr noundef @.str.47, i32 noundef 8, i32 noundef 0)
  %409 = load ptr, ptr %16, align 8, !tbaa !5
  %410 = getelementptr inbounds %"struct.Assimp::ObjFile::Material", ptr %409, i32 0, i32 15
  %411 = getelementptr inbounds [20 x i8], ptr %410, i64 0, i64 14
  %412 = load i8, ptr %411, align 2, !tbaa !29, !range !30, !noundef !31
  %413 = trunc i8 %412 to i1
  br i1 %413, label %414, label %416

414:                                              ; preds = %402
  %415 = load ptr, ptr %13, align 8, !tbaa !5
  call void @_ZN6Assimp15ObjFileImporter29addTextureMappingModePropertyEP10aiMaterial13aiTextureTypeii(ptr noundef nonnull align 8 dereferenceable(136) %22, ptr noundef %415, i32 noundef 8, i32 noundef 1, i32 noundef 0)
  br label %416

416:                                              ; preds = %414, %402
  br label %417

417:                                              ; preds = %416, %396
  %418 = load ptr, ptr %16, align 8, !tbaa !5
  %419 = getelementptr inbounds %"struct.Assimp::ObjFile::Material", ptr %418, i32 0, i32 8
  %420 = getelementptr inbounds %struct.aiString, ptr %419, i32 0, i32 0
  %421 = load i32, ptr %420, align 4, !tbaa !45
  %422 = icmp ne i32 0, %421
  br i1 %422, label %423, label %438

423:                                              ; preds = %417
  %424 = load ptr, ptr %13, align 8, !tbaa !5
  %425 = load ptr, ptr %16, align 8, !tbaa !5
  %426 = getelementptr inbounds %"struct.Assimp::ObjFile::Material", ptr %425, i32 0, i32 8
  %427 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPK8aiStringPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %424, ptr noundef %426, ptr noundef @.str.46, i32 noundef 7, i32 noundef 0)
  %428 = load ptr, ptr %13, align 8, !tbaa !5
  %429 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPKijPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %428, ptr noundef %18, i32 noundef 1, ptr noundef @.str.47, i32 noundef 7, i32 noundef 0)
  %430 = load ptr, ptr %16, align 8, !tbaa !5
  %431 = getelementptr inbounds %"struct.Assimp::ObjFile::Material", ptr %430, i32 0, i32 15
  %432 = getelementptr inbounds [20 x i8], ptr %431, i64 0, i64 13
  %433 = load i8, ptr %432, align 1, !tbaa !29, !range !30, !noundef !31
  %434 = trunc i8 %433 to i1
  br i1 %434, label %435, label %437

435:                                              ; preds = %423
  %436 = load ptr, ptr %13, align 8, !tbaa !5
  call void @_ZN6Assimp15ObjFileImporter29addTextureMappingModePropertyEP10aiMaterial13aiTextureTypeii(ptr noundef nonnull align 8 dereferenceable(136) %22, ptr noundef %436, i32 noundef 7, i32 noundef 1, i32 noundef 0)
  br label %437

437:                                              ; preds = %435, %423
  br label %438

438:                                              ; preds = %437, %417
  %439 = load ptr, ptr %16, align 8, !tbaa !5
  %440 = getelementptr inbounds %"struct.Assimp::ObjFile::Material", ptr %439, i32 0, i32 11
  %441 = getelementptr inbounds %struct.aiString, ptr %440, i32 0, i32 0
  %442 = load i32, ptr %441, align 4, !tbaa !46
  %443 = icmp ne i32 0, %442
  br i1 %443, label %444, label %459

444:                                              ; preds = %438
  %445 = load ptr, ptr %13, align 8, !tbaa !5
  %446 = load ptr, ptr %16, align 8, !tbaa !5
  %447 = getelementptr inbounds %"struct.Assimp::ObjFile::Material", ptr %446, i32 0, i32 11
  %448 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPK8aiStringPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %445, ptr noundef %447, ptr noundef @.str.46, i32 noundef 16, i32 noundef 0)
  %449 = load ptr, ptr %13, align 8, !tbaa !5
  %450 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPKijPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %449, ptr noundef %18, i32 noundef 1, ptr noundef @.str.47, i32 noundef 16, i32 noundef 0)
  %451 = load ptr, ptr %16, align 8, !tbaa !5
  %452 = getelementptr inbounds %"struct.Assimp::ObjFile::Material", ptr %451, i32 0, i32 15
  %453 = getelementptr inbounds [20 x i8], ptr %452, i64 0, i64 16
  %454 = load i8, ptr %453, align 4, !tbaa !29, !range !30, !noundef !31
  %455 = trunc i8 %454 to i1
  br i1 %455, label %456, label %458

456:                                              ; preds = %444
  %457 = load ptr, ptr %13, align 8, !tbaa !5
  call void @_ZN6Assimp15ObjFileImporter29addTextureMappingModePropertyEP10aiMaterial13aiTextureTypeii(ptr noundef nonnull align 8 dereferenceable(136) %22, ptr noundef %457, i32 noundef 16, i32 noundef 1, i32 noundef 0)
  br label %458

458:                                              ; preds = %456, %444
  br label %459

459:                                              ; preds = %458, %438
  %460 = load ptr, ptr %16, align 8, !tbaa !5
  %461 = getelementptr inbounds %"struct.Assimp::ObjFile::Material", ptr %460, i32 0, i32 12
  %462 = getelementptr inbounds %struct.aiString, ptr %461, i32 0, i32 0
  %463 = load i32, ptr %462, align 4, !tbaa !47
  %464 = icmp ne i32 0, %463
  br i1 %464, label %465, label %480

465:                                              ; preds = %459
  %466 = load ptr, ptr %13, align 8, !tbaa !5
  %467 = load ptr, ptr %16, align 8, !tbaa !5
  %468 = getelementptr inbounds %"struct.Assimp::ObjFile::Material", ptr %467, i32 0, i32 12
  %469 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPK8aiStringPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %466, ptr noundef %468, ptr noundef @.str.46, i32 noundef 15, i32 noundef 0)
  %470 = load ptr, ptr %13, align 8, !tbaa !5
  %471 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPKijPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %470, ptr noundef %18, i32 noundef 1, ptr noundef @.str.47, i32 noundef 15, i32 noundef 0)
  %472 = load ptr, ptr %16, align 8, !tbaa !5
  %473 = getelementptr inbounds %"struct.Assimp::ObjFile::Material", ptr %472, i32 0, i32 15
  %474 = getelementptr inbounds [20 x i8], ptr %473, i64 0, i64 17
  %475 = load i8, ptr %474, align 1, !tbaa !29, !range !30, !noundef !31
  %476 = trunc i8 %475 to i1
  br i1 %476, label %477, label %479

477:                                              ; preds = %465
  %478 = load ptr, ptr %13, align 8, !tbaa !5
  call void @_ZN6Assimp15ObjFileImporter29addTextureMappingModePropertyEP10aiMaterial13aiTextureTypeii(ptr noundef nonnull align 8 dereferenceable(136) %22, ptr noundef %478, i32 noundef 15, i32 noundef 1, i32 noundef 0)
  br label %479

479:                                              ; preds = %477, %465
  br label %480

480:                                              ; preds = %479, %459
  %481 = load ptr, ptr %16, align 8, !tbaa !5
  %482 = getelementptr inbounds %"struct.Assimp::ObjFile::Material", ptr %481, i32 0, i32 13
  %483 = getelementptr inbounds %struct.aiString, ptr %482, i32 0, i32 0
  %484 = load i32, ptr %483, align 4, !tbaa !48
  %485 = icmp ne i32 0, %484
  br i1 %485, label %486, label %501

486:                                              ; preds = %480
  %487 = load ptr, ptr %13, align 8, !tbaa !5
  %488 = load ptr, ptr %16, align 8, !tbaa !5
  %489 = getelementptr inbounds %"struct.Assimp::ObjFile::Material", ptr %488, i32 0, i32 13
  %490 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPK8aiStringPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %487, ptr noundef %489, ptr noundef @.str.46, i32 noundef 19, i32 noundef 0)
  %491 = load ptr, ptr %13, align 8, !tbaa !5
  %492 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPKijPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %491, ptr noundef %18, i32 noundef 1, ptr noundef @.str.47, i32 noundef 19, i32 noundef 0)
  %493 = load ptr, ptr %16, align 8, !tbaa !5
  %494 = getelementptr inbounds %"struct.Assimp::ObjFile::Material", ptr %493, i32 0, i32 15
  %495 = getelementptr inbounds [20 x i8], ptr %494, i64 0, i64 18
  %496 = load i8, ptr %495, align 2, !tbaa !29, !range !30, !noundef !31
  %497 = trunc i8 %496 to i1
  br i1 %497, label %498, label %500

498:                                              ; preds = %486
  %499 = load ptr, ptr %13, align 8, !tbaa !5
  call void @_ZN6Assimp15ObjFileImporter29addTextureMappingModePropertyEP10aiMaterial13aiTextureTypeii(ptr noundef nonnull align 8 dereferenceable(136) %22, ptr noundef %499, i32 noundef 19, i32 noundef 1, i32 noundef 0)
  br label %500

500:                                              ; preds = %498, %486
  br label %501

501:                                              ; preds = %500, %480
  %502 = load ptr, ptr %16, align 8, !tbaa !5
  %503 = getelementptr inbounds %"struct.Assimp::ObjFile::Material", ptr %502, i32 0, i32 14
  %504 = getelementptr inbounds %struct.aiString, ptr %503, i32 0, i32 0
  %505 = load i32, ptr %504, align 4, !tbaa !49
  %506 = icmp ne i32 0, %505
  br i1 %506, label %507, label %522

507:                                              ; preds = %501
  %508 = load ptr, ptr %13, align 8, !tbaa !5
  %509 = load ptr, ptr %16, align 8, !tbaa !5
  %510 = getelementptr inbounds %"struct.Assimp::ObjFile::Material", ptr %509, i32 0, i32 14
  %511 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPK8aiStringPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %508, ptr noundef %510, ptr noundef @.str.46, i32 noundef 18, i32 noundef 0)
  %512 = load ptr, ptr %13, align 8, !tbaa !5
  %513 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPKijPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %512, ptr noundef %18, i32 noundef 1, ptr noundef @.str.47, i32 noundef 18, i32 noundef 0)
  %514 = load ptr, ptr %16, align 8, !tbaa !5
  %515 = getelementptr inbounds %"struct.Assimp::ObjFile::Material", ptr %514, i32 0, i32 15
  %516 = getelementptr inbounds [20 x i8], ptr %515, i64 0, i64 19
  %517 = load i8, ptr %516, align 1, !tbaa !29, !range !30, !noundef !31
  %518 = trunc i8 %517 to i1
  br i1 %518, label %519, label %521

519:                                              ; preds = %507
  %520 = load ptr, ptr %13, align 8, !tbaa !5
  call void @_ZN6Assimp15ObjFileImporter29addTextureMappingModePropertyEP10aiMaterial13aiTextureTypeii(ptr noundef nonnull align 8 dereferenceable(136) %22, ptr noundef %520, i32 noundef 18, i32 noundef 1, i32 noundef 0)
  br label %521

521:                                              ; preds = %519, %507
  br label %522

522:                                              ; preds = %521, %501
  %523 = load ptr, ptr %13, align 8, !tbaa !5
  %524 = load ptr, ptr %6, align 8, !tbaa !5
  %525 = getelementptr inbounds %struct.aiScene, ptr %524, i32 0, i32 5
  %526 = load ptr, ptr %525, align 8, !tbaa !14
  %527 = load ptr, ptr %6, align 8, !tbaa !5
  %528 = getelementptr inbounds %struct.aiScene, ptr %527, i32 0, i32 4
  %529 = load i32, ptr %528, align 8, !tbaa !11
  %530 = zext i32 %529 to i64
  %531 = getelementptr inbounds ptr, ptr %526, i64 %530
  store ptr %523, ptr %531, align 8, !tbaa !5
  %532 = load ptr, ptr %6, align 8, !tbaa !5
  %533 = getelementptr inbounds %struct.aiScene, ptr %532, i32 0, i32 4
  %534 = load i32, ptr %533, align 8, !tbaa !11
  %535 = add i32 %534, 1
  store i32 %535, ptr %533, align 8, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #9
  store i32 0, ptr %8, align 4
  br label %536

536:                                              ; preds = %522, %68
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #9
  %537 = load i32, ptr %8, align 4
  switch i32 %537, label %559 [
    i32 0, label %538
    i32 4, label %539
  ]

538:                                              ; preds = %536
  br label %539

539:                                              ; preds = %538, %536
  %540 = load i32, ptr %9, align 4, !tbaa !9
  %541 = add i32 %540, 1
  store i32 %541, ptr %9, align 4, !tbaa !9
  br label %48, !llvm.loop !50

542:                                              ; preds = %52
  %543 = load ptr, ptr %6, align 8, !tbaa !5
  %544 = getelementptr inbounds %struct.aiScene, ptr %543, i32 0, i32 4
  %545 = load i32, ptr %544, align 8, !tbaa !11
  %546 = load i32, ptr %7, align 4, !tbaa !9
  %547 = icmp eq i32 %545, %546
  br i1 %547, label %549, label %548

548:                                              ; preds = %542
  call void @_ZN6Assimp17aiAssertViolationEPKcS1_i(ptr noundef @.str.49, ptr noundef @.str.14, i32 noundef 773)
  br label %549

549:                                              ; preds = %548, %542
  %550 = phi i1 [ true, %542 ], [ false, %548 ]
  store i32 0, ptr %8, align 4
  br label %551

551:                                              ; preds = %549, %36
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #9
  %552 = load i32, ptr %8, align 4
  switch i32 %552, label %559 [
    i32 0, label %553
    i32 1, label %553
  ]

553:                                              ; preds = %551, %551, %25
  ret void

554:                                              ; preds = %82
  %555 = load ptr, ptr %14, align 8
  %556 = load i32, ptr %15, align 4
  %557 = insertvalue { ptr, i32 } poison, ptr %555, 0
  %558 = insertvalue { ptr, i32 } %557, i32 %556, 1
  resume { ptr, i32 } %558

559:                                              ; preds = %551, %536
  unreachable
}

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Assimp15ObjFileImporter29addTextureMappingModePropertyEP10aiMaterial13aiTextureTypeii(ptr noundef nonnull align 8 dereferenceable(136), ptr noundef, i32 noundef, i32 noundef, i32 noundef) #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i32 @_ZN10aiMaterial11AddPropertyIiEE8aiReturnPKT_jPKcjj(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef, i32 noundef, ptr noundef, i32 noundef, i32 noundef) #7 align 2

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

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

declare noundef ptr @_ZN6Assimp13DefaultLogger3getEv() #3

declare void @_ZN6Assimp6Logger5debugEPKc(ptr noundef nonnull align 8 dereferenceable(12), ptr noundef) #3

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

; Function Attrs: mustprogress uwtable
declare dso_local ptr @_ZNKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPN6Assimp7ObjFile8MaterialESt4lessIS5_ESaISt4pairIKS5_S9_EEE4findERSD_(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(32)) #5 align 2

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

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

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

declare void @_ZN10aiMaterialC1Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #3

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

declare noundef i32 @_ZN10aiMaterial11AddPropertyEPK8aiStringPKcjj(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef, ptr noundef, i32 noundef, i32 noundef) #3

declare void @_ZN6Assimp6Logger5errorEPKc(ptr noundef nonnull align 8 dereferenceable(12), ptr noundef) #3

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i32 @_ZN10aiMaterial11AddPropertyEPK9aiColor3DjPKcjj(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef, i32 noundef, ptr noundef, i32 noundef, i32 noundef) #7 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i32 @_ZN10aiMaterial11AddPropertyEPKfjPKcjj(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef, i32 noundef, ptr noundef, i32 noundef, i32 noundef) #7 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK6Assimp5MaybeIfEcvbEv(ptr noundef nonnull align 4 dereferenceable(5)) #8 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNK6Assimp5MaybeIfE3GetEv(ptr noundef nonnull align 4 dereferenceable(5)) #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK6Assimp5MaybeI9aiColor3DEcvbEv(ptr noundef nonnull align 4 dereferenceable(13)) #8 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 4 dereferenceable(12) ptr @_ZNK6Assimp5MaybeI9aiColor3DE3GetEv(ptr noundef nonnull align 4 dereferenceable(13)) #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i32 @_ZN10aiMaterial11AddPropertyEPKijPKcjj(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef, i32 noundef, ptr noundef, i32 noundef, i32 noundef) #7 align 2

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { nobuiltin nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { nobuiltin allocsize(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 = { "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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { 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 #6 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #7 = { 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 #8 = { 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 #9 = { nounwind }
attributes #10 = { builtin allocsize(0) }
attributes #11 = { builtin nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !10, i64 32}
!12 = !{!"_ZTS7aiScene", !10, i64 0, !6, i64 8, !10, i64 16, !6, i64 24, !10, i64 32, !6, i64 40, !10, i64 48, !6, i64 56, !10, i64 64, !6, i64 72, !10, i64 80, !6, i64 88, !10, i64 96, !6, i64 104, !6, i64 112, !13, i64 120, !10, i64 1148, !6, i64 1152, !6, i64 1160}
!13 = !{!"_ZTS8aiString", !10, i64 0, !7, i64 4}
!14 = !{!12, !6, i64 40}
!15 = !{i64 0, i64 8, !5}
!16 = !{!17, !6, i64 32}
!17 = !{!"_ZTSSt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPN6Assimp7ObjFile8MaterialEE", !18, i64 0, !6, i64 32}
!18 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !19, i64 0, !20, i64 8, !7, i64 16}
!19 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!20 = !{!"long", !7, i64 0}
!21 = !{!22, !10, i64 20636}
!22 = !{!"_ZTSN6Assimp7ObjFile8MaterialE", !13, i64 0, !13, i64 1028, !13, i64 2056, !13, i64 3084, !13, i64 4112, !13, i64 5140, !13, i64 6168, !7, i64 7196, !13, i64 13364, !13, i64 14392, !13, i64 15420, !13, i64 16448, !13, i64 17476, !13, i64 18504, !13, i64 19532, !7, i64 20560, !23, i64 20580, !23, i64 20592, !23, i64 20604, !23, i64 20616, !24, i64 20628, !24, i64 20632, !10, i64 20636, !24, i64 20640, !23, i64 20644, !25, i64 20656, !25, i64 20664, !27, i64 20672, !25, i64 20688, !25, i64 20696, !24, i64 20704, !24, i64 20708}
!23 = !{!"_ZTS9aiColor3D", !24, i64 0, !24, i64 4, !24, i64 8}
!24 = !{!"float", !7, i64 0}
!25 = !{!"_ZTSN6Assimp5MaybeIfEE", !24, i64 0, !26, i64 4}
!26 = !{!"bool", !7, i64 0}
!27 = !{!"_ZTSN6Assimp5MaybeI9aiColor3DEE", !23, i64 0, !26, i64 12}
!28 = !{!22, !10, i64 1028}
!29 = !{!26, !26, i64 0}
!30 = !{i8 0, i8 2}
!31 = !{}
!32 = !{!22, !10, i64 3084}
!33 = !{!22, !10, i64 4112}
!34 = !{!22, !10, i64 2056}
!35 = !{!22, !10, i64 5140}
!36 = !{!22, !24, i64 20708}
!37 = !{!22, !10, i64 6168}
!38 = !{!13, !10, i64 0}
!39 = !{!40, !40, i64 0}
!40 = !{!"_ZTSN6Assimp7ObjFile8Material11TextureTypeE", !7, i64 0}
!41 = distinct !{!41, !42}
!42 = !{!"llvm.loop.mustprogress"}
!43 = !{!22, !10, i64 15420}
!44 = !{!22, !10, i64 14392}
!45 = !{!22, !10, i64 13364}
!46 = !{!22, !10, i64 16448}
!47 = !{!22, !10, i64 17476}
!48 = !{!22, !10, i64 18504}
!49 = !{!22, !10, i64 19532}
!50 = distinct !{!50, !42}


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

%"struct.std::_Rb_tree_const_iterator" = type { ptr }
%struct.aiString = type { i32, [1024 x i8] }

@.str.14 = external hidden unnamed_addr constant [122 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [52 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [38 x i8], align 1

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

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: nobuiltin nounwind
declare void @_ZdlPvm(ptr noundef, i64 noundef) local_unnamed_addr #1

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znwm(i64 noundef) local_unnamed_addr #2

declare void @_ZN6Assimp17aiAssertViolationEPKcS1_i(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #3

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znam(i64 noundef) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN6Assimp15ObjFileImporter15createMaterialsEPKNS_7ObjFile5ModelEP7aiScene(ptr noundef nonnull align 8 dereferenceable(136) %0, ptr noundef %1, ptr noundef %2) local_unnamed_addr #4 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %5 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = icmp eq ptr %2, null
  br i1 %8, label %261, label %9

9:                                                ; preds = %3
  %10 = getelementptr inbounds i8, ptr %1, i64 80
  %11 = tail call noundef i64 @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %10) #7
  %12 = trunc i64 %11 to i32
  %13 = getelementptr inbounds i8, ptr %2, i64 32
  store i32 0, ptr %13, align 8, !tbaa !5
  %14 = tail call noundef zeroext i1 @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %10) #7
  br i1 %14, label %15, label %17

15:                                               ; preds = %9
  %16 = tail call noundef ptr @_ZN6Assimp13DefaultLogger3getEv()
  tail call void @_ZN6Assimp6Logger5debugEPKc(ptr noundef nonnull align 8 dereferenceable(12) %16, ptr noundef nonnull @.str.27)
  br label %261

17:                                               ; preds = %9
  %18 = shl i64 %11, 3
  %19 = and i64 %18, 34359738360
  %20 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %19) #8
  %21 = getelementptr inbounds i8, ptr %2, i64 40
  store ptr %20, ptr %21, align 8, !tbaa !12
  %.not177 = icmp eq i32 %12, 0
  br i1 %.not177, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %17
  %22 = getelementptr inbounds i8, ptr %1, i64 328
  %wide.trip.count = and i64 %11, 4294967295
  br label %25

._crit_edge:                                      ; preds = %259, %17
  %23 = load i32, ptr %13, align 8, !tbaa !5
  %24 = icmp eq i32 %23, %12
  br i1 %24, label %261, label %260

25:                                               ; preds = %.lr.ph, %259
  %indvars.iv179 = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next180, %259 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #7
  call void @_ZNSt23_Rb_tree_const_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPN6Assimp7ObjFile8MaterialEEEC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %4) #7
  %26 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef %indvars.iv179) #7
  %27 = call ptr @_ZNKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPN6Assimp7ObjFile8MaterialESt4lessIS5_ESaISt4pairIKS5_S9_EEE4findERSD_(ptr noundef nonnull align 8 dereferenceable(48) %22, ptr noundef nonnull align 8 dereferenceable(32) %26)
  store ptr %27, ptr %4, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #7
  %28 = call ptr @_ZNKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPN6Assimp7ObjFile8MaterialESt4lessIS5_ESaISt4pairIKS5_S9_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %22) #7
  store ptr %28, ptr %5, align 8
  %29 = call noundef zeroext i1 @_ZSteqRKSt23_Rb_tree_const_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPN6Assimp7ObjFile8MaterialEEESF_(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull align 8 dereferenceable(8) %4) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #7
  br i1 %29, label %259, label %30

30:                                               ; preds = %25
  %31 = call noalias noundef nonnull dereferenceable(16) ptr @_Znwm(i64 noundef 16) #8
  invoke void @_ZN10aiMaterialC1Ev(ptr noundef nonnull align 8 dereferenceable(16) %31)
          to label %32 unwind label %39

32:                                               ; preds = %30
  %33 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPN6Assimp7ObjFile8MaterialEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %4) #7
  %34 = getelementptr inbounds i8, ptr %33, i64 32
  %35 = load ptr, ptr %34, align 8, !tbaa !14
  %36 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPK8aiStringPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef %35, ptr noundef nonnull @.str.28, i32 noundef 0, i32 noundef 0)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #7
  %37 = getelementptr inbounds i8, ptr %35, i64 20636
  %38 = load i32, ptr %37, align 4, !tbaa !19
  switch i32 %38, label %44 [
    i32 0, label %41
    i32 1, label %42
    i32 2, label %43
  ]

39:                                               ; preds = %30
  %40 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %31, i64 noundef 16) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #7
  resume { ptr, i32 } %40

41:                                               ; preds = %32
  store i32 9, ptr %6, align 4, !tbaa !26
  br label %46

42:                                               ; preds = %32
  store i32 2, ptr %6, align 4, !tbaa !26
  br label %46

43:                                               ; preds = %32
  store i32 3, ptr %6, align 4, !tbaa !26
  br label %46

44:                                               ; preds = %32
  store i32 2, ptr %6, align 4, !tbaa !26
  %45 = call noundef ptr @_ZN6Assimp13DefaultLogger3getEv()
  call void @_ZN6Assimp6Logger5errorEPKc(ptr noundef nonnull align 8 dereferenceable(12) %45, ptr noundef nonnull @.str.29)
  br label %46

46:                                               ; preds = %44, %43, %42, %41
  %47 = call noundef i32 @_ZN10aiMaterial11AddPropertyIiEE8aiReturnPKT_jPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef nonnull %6, i32 noundef 1, ptr noundef nonnull @.str.30, i32 noundef 0, i32 noundef 0)
  %48 = call noundef i32 @_ZN10aiMaterial11AddPropertyIiEE8aiReturnPKT_jPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef nonnull %37, i32 noundef 1, ptr noundef nonnull @.str.31, i32 noundef 0, i32 noundef 0)
  %49 = getelementptr inbounds i8, ptr %35, i64 20580
  %50 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPK9aiColor3DjPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef nonnull %49, i32 noundef 1, ptr noundef nonnull @.str.32, i32 noundef 0, i32 noundef 0)
  %51 = getelementptr inbounds i8, ptr %35, i64 20592
  %52 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPK9aiColor3DjPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef nonnull %51, i32 noundef 1, ptr noundef nonnull @.str.33, i32 noundef 0, i32 noundef 0)
  %53 = getelementptr inbounds i8, ptr %35, i64 20604
  %54 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPK9aiColor3DjPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef nonnull %53, i32 noundef 1, ptr noundef nonnull @.str.34, i32 noundef 0, i32 noundef 0)
  %55 = getelementptr inbounds i8, ptr %35, i64 20616
  %56 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPK9aiColor3DjPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef nonnull %55, i32 noundef 1, ptr noundef nonnull @.str.35, i32 noundef 0, i32 noundef 0)
  %57 = getelementptr inbounds i8, ptr %35, i64 20632
  %58 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPKfjPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef nonnull %57, i32 noundef 1, ptr noundef nonnull @.str.36, i32 noundef 0, i32 noundef 0)
  %59 = getelementptr inbounds i8, ptr %35, i64 20628
  %60 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPKfjPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef nonnull %59, i32 noundef 1, ptr noundef nonnull @.str.37, i32 noundef 0, i32 noundef 0)
  %61 = getelementptr inbounds i8, ptr %35, i64 20644
  %62 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPK9aiColor3DjPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef nonnull %61, i32 noundef 1, ptr noundef nonnull @.str.38, i32 noundef 0, i32 noundef 0)
  %63 = getelementptr inbounds i8, ptr %35, i64 20656
  %64 = call noundef zeroext i1 @_ZNK6Assimp5MaybeIfEcvbEv(ptr noundef nonnull align 4 dereferenceable(5) %63)
  br i1 %64, label %65, label %68

65:                                               ; preds = %46
  %66 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK6Assimp5MaybeIfE3GetEv(ptr noundef nonnull align 4 dereferenceable(5) %63)
  %67 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPKfjPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef nonnull %66, i32 noundef 1, ptr noundef nonnull @.str.39, i32 noundef 0, i32 noundef 0)
  br label %68

68:                                               ; preds = %65, %46
  %69 = getelementptr inbounds i8, ptr %35, i64 20664
  %70 = call noundef zeroext i1 @_ZNK6Assimp5MaybeIfEcvbEv(ptr noundef nonnull align 4 dereferenceable(5) %69)
  br i1 %70, label %71, label %74

71:                                               ; preds = %68
  %72 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK6Assimp5MaybeIfE3GetEv(ptr noundef nonnull align 4 dereferenceable(5) %69)
  %73 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPKfjPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef nonnull %72, i32 noundef 1, ptr noundef nonnull @.str.40, i32 noundef 0, i32 noundef 0)
  br label %74

74:                                               ; preds = %71, %68
  %75 = getelementptr inbounds i8, ptr %35, i64 20672
  %76 = call noundef zeroext i1 @_ZNK6Assimp5MaybeI9aiColor3DEcvbEv(ptr noundef nonnull align 4 dereferenceable(13) %75)
  br i1 %76, label %77, label %80

77:                                               ; preds = %74
  %78 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNK6Assimp5MaybeI9aiColor3DE3GetEv(ptr noundef nonnull align 4 dereferenceable(13) %75)
  %79 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPK9aiColor3DjPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef nonnull %78, i32 noundef 1, ptr noundef nonnull @.str.41, i32 noundef 0, i32 noundef 0)
  br label %80

80:                                               ; preds = %77, %74
  %81 = getelementptr inbounds i8, ptr %35, i64 20688
  %82 = call noundef zeroext i1 @_ZNK6Assimp5MaybeIfEcvbEv(ptr noundef nonnull align 4 dereferenceable(5) %81)
  br i1 %82, label %83, label %86

83:                                               ; preds = %80
  %84 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK6Assimp5MaybeIfE3GetEv(ptr noundef nonnull align 4 dereferenceable(5) %81)
  %85 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPKfjPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef nonnull %84, i32 noundef 1, ptr noundef nonnull @.str.42, i32 noundef 0, i32 noundef 0)
  br label %86

86:                                               ; preds = %83, %80
  %87 = getelementptr inbounds i8, ptr %35, i64 20696
  %88 = call noundef zeroext i1 @_ZNK6Assimp5MaybeIfEcvbEv(ptr noundef nonnull align 4 dereferenceable(5) %87)
  br i1 %88, label %89, label %92

89:                                               ; preds = %86
  %90 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK6Assimp5MaybeIfE3GetEv(ptr noundef nonnull align 4 dereferenceable(5) %87)
  %91 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPKfjPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef nonnull %90, i32 noundef 1, ptr noundef nonnull @.str.43, i32 noundef 0, i32 noundef 0)
  br label %92

92:                                               ; preds = %89, %86
  %93 = getelementptr inbounds i8, ptr %35, i64 20704
  %94 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPKfjPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef nonnull %93, i32 noundef 1, ptr noundef nonnull @.str.44, i32 noundef 0, i32 noundef 0)
  %95 = getelementptr inbounds i8, ptr %35, i64 20640
  %96 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPKfjPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef nonnull %95, i32 noundef 1, ptr noundef nonnull @.str.45, i32 noundef 0, i32 noundef 0)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #7
  store i32 0, ptr %7, align 4, !tbaa !26
  %97 = getelementptr inbounds i8, ptr %35, i64 1028
  %98 = load i32, ptr %97, align 4, !tbaa !27
  %.not = icmp eq i32 %98, 0
  br i1 %.not, label %106, label %99

99:                                               ; preds = %92
  %100 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPK8aiStringPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef nonnull %97, ptr noundef nonnull @.str.46, i32 noundef 1, i32 noundef 0)
  %101 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPKijPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef nonnull %7, i32 noundef 1, ptr noundef nonnull @.str.47, i32 noundef 1, i32 noundef 0)
  %102 = getelementptr inbounds i8, ptr %35, i64 20560
  %103 = load i8, ptr %102, align 4, !tbaa !28, !range !29, !noundef !30
  %104 = trunc nuw i8 %103 to i1
  br i1 %104, label %105, label %106

105:                                              ; preds = %99
  call void @_ZN6Assimp15ObjFileImporter29addTextureMappingModePropertyEP10aiMaterial13aiTextureTypeii(ptr noundef nonnull align 8 dereferenceable(136) %0, ptr noundef nonnull %31, i32 noundef 1, i32 noundef 1, i32 noundef 0)
  br label %106

106:                                              ; preds = %99, %105, %92
  %107 = getelementptr inbounds i8, ptr %35, i64 3084
  %108 = load i32, ptr %107, align 4, !tbaa !31
  %.not161 = icmp eq i32 %108, 0
  br i1 %.not161, label %116, label %109

109:                                              ; preds = %106
  %110 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPK8aiStringPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef nonnull %107, ptr noundef nonnull @.str.46, i32 noundef 3, i32 noundef 0)
  %111 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPKijPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef nonnull %7, i32 noundef 1, ptr noundef nonnull @.str.47, i32 noundef 3, i32 noundef 0)
  %112 = getelementptr inbounds i8, ptr %35, i64 20562
  %113 = load i8, ptr %112, align 2, !tbaa !28, !range !29, !noundef !30
  %114 = trunc nuw i8 %113 to i1
  br i1 %114, label %115, label %116

115:                                              ; preds = %109
  call void @_ZN6Assimp15ObjFileImporter29addTextureMappingModePropertyEP10aiMaterial13aiTextureTypeii(ptr noundef nonnull align 8 dereferenceable(136) %0, ptr noundef nonnull %31, i32 noundef 3, i32 noundef 1, i32 noundef 0)
  br label %116

116:                                              ; preds = %109, %115, %106
  %117 = getelementptr inbounds i8, ptr %35, i64 4112
  %118 = load i32, ptr %117, align 4, !tbaa !32
  %.not162 = icmp eq i32 %118, 0
  br i1 %.not162, label %122, label %119

119:                                              ; preds = %116
  %120 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPK8aiStringPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef nonnull %117, ptr noundef nonnull @.str.46, i32 noundef 4, i32 noundef 0)
  %121 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPKijPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef nonnull %7, i32 noundef 1, ptr noundef nonnull @.str.47, i32 noundef 4, i32 noundef 0)
  br label %122

122:                                              ; preds = %119, %116
  %123 = getelementptr inbounds i8, ptr %35, i64 2056
  %124 = load i32, ptr %123, align 4, !tbaa !33
  %.not163 = icmp eq i32 %124, 0
  br i1 %.not163, label %132, label %125

125:                                              ; preds = %122
  %126 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPK8aiStringPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef nonnull %123, ptr noundef nonnull @.str.46, i32 noundef 2, i32 noundef 0)
  %127 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPKijPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef nonnull %7, i32 noundef 1, ptr noundef nonnull @.str.47, i32 noundef 2, i32 noundef 0)
  %128 = getelementptr inbounds i8, ptr %35, i64 20561
  %129 = load i8, ptr %128, align 1, !tbaa !28, !range !29, !noundef !30
  %130 = trunc nuw i8 %129 to i1
  br i1 %130, label %131, label %132

131:                                              ; preds = %125
  call void @_ZN6Assimp15ObjFileImporter29addTextureMappingModePropertyEP10aiMaterial13aiTextureTypeii(ptr noundef nonnull align 8 dereferenceable(136) %0, ptr noundef nonnull %31, i32 noundef 2, i32 noundef 1, i32 noundef 0)
  br label %132

132:                                              ; preds = %125, %131, %122
  %133 = getelementptr inbounds i8, ptr %35, i64 5140
  %134 = load i32, ptr %133, align 4, !tbaa !34
  %.not164 = icmp eq i32 %134, 0
  br i1 %.not164, label %148, label %135

135:                                              ; preds = %132
  %136 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPK8aiStringPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef nonnull %133, ptr noundef nonnull @.str.46, i32 noundef 5, i32 noundef 0)
  %137 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPKijPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef nonnull %7, i32 noundef 1, ptr noundef nonnull @.str.47, i32 noundef 5, i32 noundef 0)
  %138 = getelementptr inbounds i8, ptr %35, i64 20708
  %139 = load float, ptr %138, align 4, !tbaa !35
  %140 = fcmp une float %139, 1.000000e+00
  br i1 %140, label %141, label %143

141:                                              ; preds = %135
  %142 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPKfjPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef nonnull %138, i32 noundef 1, ptr noundef nonnull @.str.48, i32 noundef 5, i32 noundef 0)
  br label %143

143:                                              ; preds = %141, %135
  %144 = getelementptr inbounds i8, ptr %35, i64 20564
  %145 = load i8, ptr %144, align 4, !tbaa !28, !range !29, !noundef !30
  %146 = trunc nuw i8 %145 to i1
  br i1 %146, label %147, label %148

147:                                              ; preds = %143
  call void @_ZN6Assimp15ObjFileImporter29addTextureMappingModePropertyEP10aiMaterial13aiTextureTypeii(ptr noundef nonnull align 8 dereferenceable(136) %0, ptr noundef nonnull %31, i32 noundef 5, i32 noundef 1, i32 noundef 0)
  br label %148

148:                                              ; preds = %143, %147, %132
  %149 = getelementptr inbounds i8, ptr %35, i64 6168
  %150 = load i32, ptr %149, align 4, !tbaa !36
  %.not165 = icmp eq i32 %150, 0
  br i1 %.not165, label %164, label %151

151:                                              ; preds = %148
  %152 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPK8aiStringPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef nonnull %149, ptr noundef nonnull @.str.46, i32 noundef 6, i32 noundef 0)
  %153 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPKijPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef nonnull %7, i32 noundef 1, ptr noundef nonnull @.str.47, i32 noundef 6, i32 noundef 0)
  %154 = getelementptr inbounds i8, ptr %35, i64 20708
  %155 = load float, ptr %154, align 4, !tbaa !35
  %156 = fcmp une float %155, 1.000000e+00
  br i1 %156, label %157, label %159

157:                                              ; preds = %151
  %158 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPKfjPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef nonnull %154, i32 noundef 1, ptr noundef nonnull @.str.48, i32 noundef 6, i32 noundef 0)
  br label %159

159:                                              ; preds = %157, %151
  %160 = getelementptr inbounds i8, ptr %35, i64 20565
  %161 = load i8, ptr %160, align 1, !tbaa !28, !range !29, !noundef !30
  %162 = trunc nuw i8 %161 to i1
  br i1 %162, label %163, label %164

163:                                              ; preds = %159
  call void @_ZN6Assimp15ObjFileImporter29addTextureMappingModePropertyEP10aiMaterial13aiTextureTypeii(ptr noundef nonnull align 8 dereferenceable(136) %0, ptr noundef nonnull %31, i32 noundef 6, i32 noundef 1, i32 noundef 0)
  br label %164

164:                                              ; preds = %159, %163, %148
  %165 = getelementptr inbounds i8, ptr %35, i64 7196
  %166 = load i32, ptr %165, align 4, !tbaa !37
  %.not166 = icmp eq i32 %166, 0
  br i1 %.not166, label %.loopexit, label %167

167:                                              ; preds = %164
  %168 = getelementptr inbounds i8, ptr %35, i64 8224
  %169 = load i32, ptr %168, align 4, !tbaa !37
  %.not167 = icmp ne i32 %169, 0
  %170 = select i1 %.not167, i64 7, i64 6
  %171 = getelementptr inbounds i8, ptr %35, i64 20560
  %172 = getelementptr inbounds [20 x i8], ptr %171, i64 0, i64 %170
  br label %173

173:                                              ; preds = %167, %181
  %indvars.iv = phi i64 [ 0, %167 ], [ %indvars.iv.next, %181 ]
  %174 = getelementptr inbounds [6 x %struct.aiString], ptr %165, i64 0, i64 %indvars.iv
  %175 = trunc nuw nsw i64 %indvars.iv to i32
  %176 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPK8aiStringPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef nonnull %174, ptr noundef nonnull @.str.46, i32 noundef 11, i32 noundef %175)
  %177 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPKijPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef nonnull %7, i32 noundef 1, ptr noundef nonnull @.str.47, i32 noundef 11, i32 noundef %175)
  %178 = load i8, ptr %172, align 1, !tbaa !28, !range !29, !noundef !30
  %179 = trunc nuw i8 %178 to i1
  br i1 %179, label %180, label %181

180:                                              ; preds = %173
  call void @_ZN6Assimp15ObjFileImporter29addTextureMappingModePropertyEP10aiMaterial13aiTextureTypeii(ptr noundef nonnull align 8 dereferenceable(136) %0, ptr noundef nonnull %31, i32 noundef 11, i32 noundef 1, i32 noundef %175)
  br label %181

181:                                              ; preds = %173, %180
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %182 = icmp ult i64 %indvars.iv, 5
  %183 = and i1 %.not167, %182
  br i1 %183, label %173, label %.loopexit, !llvm.loop !38

.loopexit:                                        ; preds = %181, %164
  %184 = getelementptr inbounds i8, ptr %35, i64 15420
  %185 = load i32, ptr %184, align 4, !tbaa !40
  %.not168 = icmp eq i32 %185, 0
  br i1 %.not168, label %193, label %186

186:                                              ; preds = %.loopexit
  %187 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPK8aiStringPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef nonnull %184, ptr noundef nonnull @.str.46, i32 noundef 9, i32 noundef 0)
  %188 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPKijPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef nonnull %7, i32 noundef 1, ptr noundef nonnull @.str.47, i32 noundef 9, i32 noundef 0)
  %189 = getelementptr inbounds i8, ptr %35, i64 20575
  %190 = load i8, ptr %189, align 1, !tbaa !28, !range !29, !noundef !30
  %191 = trunc nuw i8 %190 to i1
  br i1 %191, label %192, label %193

192:                                              ; preds = %186
  call void @_ZN6Assimp15ObjFileImporter29addTextureMappingModePropertyEP10aiMaterial13aiTextureTypeii(ptr noundef nonnull align 8 dereferenceable(136) %0, ptr noundef nonnull %31, i32 noundef 9, i32 noundef 1, i32 noundef 0)
  br label %193

193:                                              ; preds = %186, %192, %.loopexit
  %194 = getelementptr inbounds i8, ptr %35, i64 14392
  %195 = load i32, ptr %194, align 4, !tbaa !41
  %.not169 = icmp eq i32 %195, 0
  br i1 %.not169, label %203, label %196

196:                                              ; preds = %193
  %197 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPK8aiStringPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef nonnull %194, ptr noundef nonnull @.str.46, i32 noundef 8, i32 noundef 0)
  %198 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPKijPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef nonnull %7, i32 noundef 1, ptr noundef nonnull @.str.47, i32 noundef 8, i32 noundef 0)
  %199 = getelementptr inbounds i8, ptr %35, i64 20574
  %200 = load i8, ptr %199, align 2, !tbaa !28, !range !29, !noundef !30
  %201 = trunc nuw i8 %200 to i1
  br i1 %201, label %202, label %203

202:                                              ; preds = %196
  call void @_ZN6Assimp15ObjFileImporter29addTextureMappingModePropertyEP10aiMaterial13aiTextureTypeii(ptr noundef nonnull align 8 dereferenceable(136) %0, ptr noundef nonnull %31, i32 noundef 8, i32 noundef 1, i32 noundef 0)
  br label %203

203:                                              ; preds = %196, %202, %193
  %204 = getelementptr inbounds i8, ptr %35, i64 13364
  %205 = load i32, ptr %204, align 4, !tbaa !42
  %.not170 = icmp eq i32 %205, 0
  br i1 %.not170, label %213, label %206

206:                                              ; preds = %203
  %207 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPK8aiStringPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef nonnull %204, ptr noundef nonnull @.str.46, i32 noundef 7, i32 noundef 0)
  %208 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPKijPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef nonnull %7, i32 noundef 1, ptr noundef nonnull @.str.47, i32 noundef 7, i32 noundef 0)
  %209 = getelementptr inbounds i8, ptr %35, i64 20573
  %210 = load i8, ptr %209, align 1, !tbaa !28, !range !29, !noundef !30
  %211 = trunc nuw i8 %210 to i1
  br i1 %211, label %212, label %213

212:                                              ; preds = %206
  call void @_ZN6Assimp15ObjFileImporter29addTextureMappingModePropertyEP10aiMaterial13aiTextureTypeii(ptr noundef nonnull align 8 dereferenceable(136) %0, ptr noundef nonnull %31, i32 noundef 7, i32 noundef 1, i32 noundef 0)
  br label %213

213:                                              ; preds = %206, %212, %203
  %214 = getelementptr inbounds i8, ptr %35, i64 16448
  %215 = load i32, ptr %214, align 4, !tbaa !43
  %.not171 = icmp eq i32 %215, 0
  br i1 %.not171, label %223, label %216

216:                                              ; preds = %213
  %217 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPK8aiStringPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef nonnull %214, ptr noundef nonnull @.str.46, i32 noundef 16, i32 noundef 0)
  %218 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPKijPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef nonnull %7, i32 noundef 1, ptr noundef nonnull @.str.47, i32 noundef 16, i32 noundef 0)
  %219 = getelementptr inbounds i8, ptr %35, i64 20576
  %220 = load i8, ptr %219, align 4, !tbaa !28, !range !29, !noundef !30
  %221 = trunc nuw i8 %220 to i1
  br i1 %221, label %222, label %223

222:                                              ; preds = %216
  call void @_ZN6Assimp15ObjFileImporter29addTextureMappingModePropertyEP10aiMaterial13aiTextureTypeii(ptr noundef nonnull align 8 dereferenceable(136) %0, ptr noundef nonnull %31, i32 noundef 16, i32 noundef 1, i32 noundef 0)
  br label %223

223:                                              ; preds = %216, %222, %213
  %224 = getelementptr inbounds i8, ptr %35, i64 17476
  %225 = load i32, ptr %224, align 4, !tbaa !44
  %.not172 = icmp eq i32 %225, 0
  br i1 %.not172, label %233, label %226

226:                                              ; preds = %223
  %227 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPK8aiStringPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef nonnull %224, ptr noundef nonnull @.str.46, i32 noundef 15, i32 noundef 0)
  %228 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPKijPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef nonnull %7, i32 noundef 1, ptr noundef nonnull @.str.47, i32 noundef 15, i32 noundef 0)
  %229 = getelementptr inbounds i8, ptr %35, i64 20577
  %230 = load i8, ptr %229, align 1, !tbaa !28, !range !29, !noundef !30
  %231 = trunc nuw i8 %230 to i1
  br i1 %231, label %232, label %233

232:                                              ; preds = %226
  call void @_ZN6Assimp15ObjFileImporter29addTextureMappingModePropertyEP10aiMaterial13aiTextureTypeii(ptr noundef nonnull align 8 dereferenceable(136) %0, ptr noundef nonnull %31, i32 noundef 15, i32 noundef 1, i32 noundef 0)
  br label %233

233:                                              ; preds = %226, %232, %223
  %234 = getelementptr inbounds i8, ptr %35, i64 18504
  %235 = load i32, ptr %234, align 4, !tbaa !45
  %.not173 = icmp eq i32 %235, 0
  br i1 %.not173, label %243, label %236

236:                                              ; preds = %233
  %237 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPK8aiStringPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef nonnull %234, ptr noundef nonnull @.str.46, i32 noundef 19, i32 noundef 0)
  %238 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPKijPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef nonnull %7, i32 noundef 1, ptr noundef nonnull @.str.47, i32 noundef 19, i32 noundef 0)
  %239 = getelementptr inbounds i8, ptr %35, i64 20578
  %240 = load i8, ptr %239, align 2, !tbaa !28, !range !29, !noundef !30
  %241 = trunc nuw i8 %240 to i1
  br i1 %241, label %242, label %243

242:                                              ; preds = %236
  call void @_ZN6Assimp15ObjFileImporter29addTextureMappingModePropertyEP10aiMaterial13aiTextureTypeii(ptr noundef nonnull align 8 dereferenceable(136) %0, ptr noundef nonnull %31, i32 noundef 19, i32 noundef 1, i32 noundef 0)
  br label %243

243:                                              ; preds = %236, %242, %233
  %244 = getelementptr inbounds i8, ptr %35, i64 19532
  %245 = load i32, ptr %244, align 4, !tbaa !46
  %.not174 = icmp eq i32 %245, 0
  br i1 %.not174, label %253, label %246

246:                                              ; preds = %243
  %247 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPK8aiStringPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef nonnull %244, ptr noundef nonnull @.str.46, i32 noundef 18, i32 noundef 0)
  %248 = call noundef i32 @_ZN10aiMaterial11AddPropertyEPKijPKcjj(ptr noundef nonnull align 8 dereferenceable(16) %31, ptr noundef nonnull %7, i32 noundef 1, ptr noundef nonnull @.str.47, i32 noundef 18, i32 noundef 0)
  %249 = getelementptr inbounds i8, ptr %35, i64 20579
  %250 = load i8, ptr %249, align 1, !tbaa !28, !range !29, !noundef !30
  %251 = trunc nuw i8 %250 to i1
  br i1 %251, label %252, label %253

252:                                              ; preds = %246
  call void @_ZN6Assimp15ObjFileImporter29addTextureMappingModePropertyEP10aiMaterial13aiTextureTypeii(ptr noundef nonnull align 8 dereferenceable(136) %0, ptr noundef nonnull %31, i32 noundef 18, i32 noundef 1, i32 noundef 0)
  br label %253

253:                                              ; preds = %246, %252, %243
  %254 = load ptr, ptr %21, align 8, !tbaa !12
  %255 = load i32, ptr %13, align 8, !tbaa !5
  %256 = zext i32 %255 to i64
  %257 = getelementptr inbounds ptr, ptr %254, i64 %256
  store ptr %31, ptr %257, align 8, !tbaa !13
  %258 = add i32 %255, 1
  store i32 %258, ptr %13, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #7
  br label %259

259:                                              ; preds = %25, %253
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #7
  %indvars.iv.next180 = add nuw nsw i64 %indvars.iv179, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next180, %wide.trip.count
  br i1 %exitcond.not, label %._crit_edge, label %25, !llvm.loop !47

260:                                              ; preds = %._crit_edge
  call void @_ZN6Assimp17aiAssertViolationEPKcS1_i(ptr noundef nonnull @.str.49, ptr noundef nonnull @.str.14, i32 noundef 773)
  br label %261

261:                                              ; preds = %15, %260, %._crit_edge, %3
  ret void
}

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Assimp15ObjFileImporter29addTextureMappingModePropertyEP10aiMaterial13aiTextureTypeii(ptr noundef nonnull align 8 dereferenceable(136), ptr noundef, i32 noundef, i32 noundef, i32 noundef) local_unnamed_addr #4 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i32 @_ZN10aiMaterial11AddPropertyIiEE8aiReturnPKT_jPKcjj(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef, i32 noundef, ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #6 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #6 align 2

declare noundef ptr @_ZN6Assimp13DefaultLogger3getEv() local_unnamed_addr #3

declare void @_ZN6Assimp6Logger5debugEPKc(ptr noundef nonnull align 8 dereferenceable(12), ptr noundef) local_unnamed_addr #3

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

; Function Attrs: mustprogress uwtable
declare dso_local ptr @_ZNKSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPN6Assimp7ObjFile8MaterialESt4lessIS5_ESaISt4pairIKS5_S9_EEE4findERSD_(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #6 align 2

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

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

declare void @_ZN10aiMaterialC1Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #3

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

declare noundef i32 @_ZN10aiMaterial11AddPropertyEPK8aiStringPKcjj(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef, ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #3

declare void @_ZN6Assimp6Logger5errorEPKc(ptr noundef nonnull align 8 dereferenceable(12), ptr noundef) local_unnamed_addr #3

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i32 @_ZN10aiMaterial11AddPropertyEPK9aiColor3DjPKcjj(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef, i32 noundef, ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i32 @_ZN10aiMaterial11AddPropertyEPKfjPKcjj(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef, i32 noundef, ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK6Assimp5MaybeIfEcvbEv(ptr noundef nonnull align 4 dereferenceable(5)) local_unnamed_addr #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNK6Assimp5MaybeIfE3GetEv(ptr noundef nonnull align 4 dereferenceable(5)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK6Assimp5MaybeI9aiColor3DEcvbEv(ptr noundef nonnull align 4 dereferenceable(13)) local_unnamed_addr #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 4 dereferenceable(12) ptr @_ZNK6Assimp5MaybeI9aiColor3DE3GetEv(ptr noundef nonnull align 4 dereferenceable(13)) local_unnamed_addr #4 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i32 @_ZN10aiMaterial11AddPropertyEPKijPKcjj(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef, i32 noundef, ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #5 align 2

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { nobuiltin nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { nobuiltin allocsize(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 = { "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 = { 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 = { 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 #6 = { 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 #7 = { nounwind }
attributes #8 = { builtin allocsize(0) }
attributes #9 = { builtin 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, !7, i64 32}
!6 = !{!"_ZTS7aiScene", !7, i64 0, !10, i64 8, !7, i64 16, !10, i64 24, !7, i64 32, !10, i64 40, !7, i64 48, !10, i64 56, !7, i64 64, !10, i64 72, !7, i64 80, !10, i64 88, !7, i64 96, !10, i64 104, !10, i64 112, !11, i64 120, !7, i64 1148, !10, i64 1152, !10, i64 1160}
!7 = !{!"int", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"any pointer", !8, i64 0}
!11 = !{!"_ZTS8aiString", !7, i64 0, !8, i64 4}
!12 = !{!6, !10, i64 40}
!13 = !{!10, !10, i64 0}
!14 = !{!15, !10, i64 32}
!15 = !{!"_ZTSSt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPN6Assimp7ObjFile8MaterialEE", !16, i64 0, !10, i64 32}
!16 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !17, i64 0, !18, i64 8, !8, i64 16}
!17 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !10, i64 0}
!18 = !{!"long", !8, i64 0}
!19 = !{!20, !7, i64 20636}
!20 = !{!"_ZTSN6Assimp7ObjFile8MaterialE", !11, i64 0, !11, i64 1028, !11, i64 2056, !11, i64 3084, !11, i64 4112, !11, i64 5140, !11, i64 6168, !8, i64 7196, !11, i64 13364, !11, i64 14392, !11, i64 15420, !11, i64 16448, !11, i64 17476, !11, i64 18504, !11, i64 19532, !8, i64 20560, !21, i64 20580, !21, i64 20592, !21, i64 20604, !21, i64 20616, !22, i64 20628, !22, i64 20632, !7, i64 20636, !22, i64 20640, !21, i64 20644, !23, i64 20656, !23, i64 20664, !25, i64 20672, !23, i64 20688, !23, i64 20696, !22, i64 20704, !22, i64 20708}
!21 = !{!"_ZTS9aiColor3D", !22, i64 0, !22, i64 4, !22, i64 8}
!22 = !{!"float", !8, i64 0}
!23 = !{!"_ZTSN6Assimp5MaybeIfEE", !22, i64 0, !24, i64 4}
!24 = !{!"bool", !8, i64 0}
!25 = !{!"_ZTSN6Assimp5MaybeI9aiColor3DEE", !21, i64 0, !24, i64 12}
!26 = !{!7, !7, i64 0}
!27 = !{!20, !7, i64 1028}
!28 = !{!24, !24, i64 0}
!29 = !{i8 0, i8 2}
!30 = !{}
!31 = !{!20, !7, i64 3084}
!32 = !{!20, !7, i64 4112}
!33 = !{!20, !7, i64 2056}
!34 = !{!20, !7, i64 5140}
!35 = !{!20, !22, i64 20708}
!36 = !{!20, !7, i64 6168}
!37 = !{!11, !7, i64 0}
!38 = distinct !{!38, !39}
!39 = !{!"llvm.loop.mustprogress"}
!40 = !{!20, !7, i64 15420}
!41 = !{!20, !7, i64 14392}
!42 = !{!20, !7, i64 13364}
!43 = !{!20, !7, i64 16448}
!44 = !{!20, !7, i64 17476}
!45 = !{!20, !7, i64 18504}
!46 = !{!20, !7, i64 19532}
!47 = distinct !{!47, !39}


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