; LLVM IR from Overload-Technologies/Overload :: Dependencies/assimp/code/AssetLib/FBX (FBXConverter)

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

%"class.std::__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.__gnu_cxx::__normal_iterator.221" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.227" = type { ptr }
%"class.std::vector.190" = type { %"struct.std::_Vector_base.191" }
%"struct.std::_Vector_base.191" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::map.300" = type { %"class.std::_Rb_tree.301" }
%"class.std::_Rb_tree.301" = type { %"struct.std::_Rb_tree<unsigned int, std::pair<const unsigned int, unsigned int>, std::_Select1st<std::pair<const unsigned int, unsigned int>>, std::less<unsigned int>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<unsigned int, std::pair<const unsigned int, unsigned int>, std::_Select1st<std::pair<const unsigned int, unsigned int>>, std::less<unsigned int>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"class.std::vector.206" = type { %"struct.std::_Vector_base.207" }
%"struct.std::_Vector_base.207" = 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.aiVector3t = type { float, float, float }
%"class.std::vector.237" = type { %"struct.std::_Vector_base.238" }
%"struct.std::_Vector_base.238" = type { %"struct.std::_Vector_base<aiAnimMesh *, std::allocator<aiAnimMesh *>>::_Vector_impl" }
%"struct.std::_Vector_base<aiAnimMesh *, std::allocator<aiAnimMesh *>>::_Vector_impl" = type { %"struct.std::_Vector_base<aiAnimMesh *, std::allocator<aiAnimMesh *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<aiAnimMesh *, std::allocator<aiAnimMesh *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.std::__detail::_Node_const_iterator" = type { %"struct.std::__detail::_Node_iterator_base" }
%"struct.std::__detail::_Node_iterator_base" = type { ptr }
%"struct.std::__detail::_Node_const_iterator.262" = type { %"struct.std::__detail::_Node_iterator_base.263" }
%"struct.std::__detail::_Node_iterator_base.263" = type { ptr }
%"struct.std::__detail::_Node_const_iterator.289" = type { %"struct.std::__detail::_Node_iterator_base.290" }
%"struct.std::__detail::_Node_iterator_base.290" = type { ptr }
%"struct.std::_Rb_tree_iterator.306" = type { ptr }
%"class.Assimp::FBX::FBXConverter" = type <{ i32, [4 x i8], %"class.std::vector", %"class.std::vector.0", %"class.std::vector.5", %"class.std::vector.10", %"class.std::vector.15", %"class.std::vector.20", %"class.std::map", %"class.std::map.28", %"class.std::map.34", %"class.std::map.40", %"class.std::map.40", %"class.std::map.46", double, %"class.std::vector.52", ptr, ptr, i8, [7 x i8] }>
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<aiMesh *, std::allocator<aiMesh *>>::_Vector_impl" }
%"struct.std::_Vector_base<aiMesh *, std::allocator<aiMesh *>>::_Vector_impl" = type { %"struct.std::_Vector_base<aiMesh *, std::allocator<aiMesh *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<aiMesh *, std::allocator<aiMesh *>>::_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<aiMaterial *, std::allocator<aiMaterial *>>::_Vector_impl" }
%"struct.std::_Vector_base<aiMaterial *, std::allocator<aiMaterial *>>::_Vector_impl" = type { %"struct.std::_Vector_base<aiMaterial *, std::allocator<aiMaterial *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<aiMaterial *, std::allocator<aiMaterial *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.5" = type { %"struct.std::_Vector_base.6" }
%"struct.std::_Vector_base.6" = type { %"struct.std::_Vector_base<aiAnimation *, std::allocator<aiAnimation *>>::_Vector_impl" }
%"struct.std::_Vector_base<aiAnimation *, std::allocator<aiAnimation *>>::_Vector_impl" = type { %"struct.std::_Vector_base<aiAnimation *, std::allocator<aiAnimation *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<aiAnimation *, std::allocator<aiAnimation *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.10" = type { %"struct.std::_Vector_base.11" }
%"struct.std::_Vector_base.11" = type { %"struct.std::_Vector_base<aiLight *, std::allocator<aiLight *>>::_Vector_impl" }
%"struct.std::_Vector_base<aiLight *, std::allocator<aiLight *>>::_Vector_impl" = type { %"struct.std::_Vector_base<aiLight *, std::allocator<aiLight *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<aiLight *, std::allocator<aiLight *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.15" = type { %"struct.std::_Vector_base.16" }
%"struct.std::_Vector_base.16" = type { %"struct.std::_Vector_base<aiCamera *, std::allocator<aiCamera *>>::_Vector_impl" }
%"struct.std::_Vector_base<aiCamera *, std::allocator<aiCamera *>>::_Vector_impl" = type { %"struct.std::_Vector_base<aiCamera *, std::allocator<aiCamera *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<aiCamera *, std::allocator<aiCamera *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.20" = type { %"struct.std::_Vector_base.21" }
%"struct.std::_Vector_base.21" = type { %"struct.std::_Vector_base<aiTexture *, std::allocator<aiTexture *>>::_Vector_impl" }
%"struct.std::_Vector_base<aiTexture *, std::allocator<aiTexture *>>::_Vector_impl" = type { %"struct.std::_Vector_base<aiTexture *, std::allocator<aiTexture *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<aiTexture *, std::allocator<aiTexture *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::map" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<const Assimp::FBX::Material *, std::pair<const Assimp::FBX::Material *const, unsigned int>, std::_Select1st<std::pair<const Assimp::FBX::Material *const, unsigned int>>, std::less<const Assimp::FBX::Material *>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<const Assimp::FBX::Material *, std::pair<const Assimp::FBX::Material *const, unsigned int>, std::_Select1st<std::pair<const Assimp::FBX::Material *const, unsigned int>>, std::less<const Assimp::FBX::Material *>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::map.28" = type { %"class.std::_Rb_tree.29" }
%"class.std::_Rb_tree.29" = type { %"struct.std::_Rb_tree<const Assimp::FBX::Video *, std::pair<const Assimp::FBX::Video *const, unsigned int>, std::_Select1st<std::pair<const Assimp::FBX::Video *const, unsigned int>>, std::less<const Assimp::FBX::Video *>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<const Assimp::FBX::Video *, std::pair<const Assimp::FBX::Video *const, unsigned int>, std::_Select1st<std::pair<const Assimp::FBX::Video *const, unsigned int>>, std::less<const Assimp::FBX::Video *>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::map.34" = type { %"class.std::_Rb_tree.35" }
%"class.std::_Rb_tree.35" = type { %"struct.std::_Rb_tree<const Assimp::FBX::Geometry *, std::pair<const Assimp::FBX::Geometry *const, std::vector<unsigned int>>, std::_Select1st<std::pair<const Assimp::FBX::Geometry *const, std::vector<unsigned int>>>, std::less<const Assimp::FBX::Geometry *>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<const Assimp::FBX::Geometry *, std::pair<const Assimp::FBX::Geometry *const, std::vector<unsigned int>>, std::_Select1st<std::pair<const Assimp::FBX::Geometry *const, std::vector<unsigned int>>>, std::less<const Assimp::FBX::Geometry *>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::map.40" = type { %"class.std::_Rb_tree.41" }
%"class.std::_Rb_tree.41" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, unsigned int>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, 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>, unsigned int>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, unsigned int>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::map.46" = type { %"class.std::_Rb_tree.47" }
%"class.std::_Rb_tree.47" = type { %"struct.std::_Rb_tree<const std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, aiBone *>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, aiBone *>>, std::less<const std::__cxx11::basic_string<char>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<const std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, aiBone *>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, aiBone *>>, std::less<const std::__cxx11::basic_string<char>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::vector.52" = type { %"struct.std::_Vector_base.53" }
%"struct.std::_Vector_base.53" = type { %"struct.std::_Vector_base<aiSkeleton *, std::allocator<aiSkeleton *>>::_Vector_impl" }
%"struct.std::_Vector_base<aiSkeleton *, std::allocator<aiSkeleton *>>::_Vector_impl" = type { %"struct.std::_Vector_base<aiSkeleton *, std::allocator<aiSkeleton *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<aiSkeleton *, std::allocator<aiSkeleton *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.Assimp::FBX::ImportSettings" = type { i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8 }
%struct.aiMesh = type { i32, i32, i32, ptr, ptr, ptr, ptr, [8 x ptr], [8 x ptr], [8 x i32], ptr, i32, ptr, i32, %struct.aiString, i32, ptr, i32, %struct.aiAABB, ptr }
%struct.aiString = type { i32, [1024 x i8] }
%struct.aiAABB = type { %class.aiVector3t, %class.aiVector3t }
%struct.aiFace = type { i32, ptr }
%class.aiColor4t = type { float, float, float, float }
%class.aiVector2t = type { float, float }
%struct.aiAnimMesh = type { %struct.aiString, ptr, ptr, ptr, ptr, [8 x ptr], [8 x ptr], i32, float }

@.str.5 = external hidden unnamed_addr constant [119 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [15 x i8], align 1

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 1 dereferenceable(15) ptr @_ZNK6Assimp3FBX8Document8SettingsEv(ptr noundef nonnull align 8 dereferenceable(336)) #0 align 2

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN8aiString3SetERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 4 dereferenceable(1028), ptr noundef nonnull align 8 dereferenceable(32)) #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZNK6Assimp3FBX6Object4NameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(56)) #0 align 2

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #2

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN10aiVector3tIfEC2Efff(ptr noundef nonnull align 4 dereferenceable(12), float noundef, float noundef, float noundef) unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12)) unnamed_addr #0 align 2

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

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

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

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

declare noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX12MeshGeometry11GetVerticesEv(ptr noundef nonnull align 8 dereferenceable(1000)) #3

declare noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX12MeshGeometry18GetFaceIndexCountsEv(ptr noundef nonnull align 8 dereferenceable(1000)) #3

declare noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX12MeshGeometry18GetMaterialIndicesEv(ptr noundef nonnull align 8 dereferenceable(1000)) #3

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN6Assimp3FBX12FBXConverter14SetupEmptyMeshERKNS0_8GeometryEP6aiNode(ptr noundef nonnull align 8 dereferenceable(489), ptr noundef nonnull align 8 dereferenceable(120), ptr noundef) #7 align 2

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

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

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

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

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

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

declare noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX12MeshGeometry10GetNormalsEv(ptr noundef nonnull align 8 dereferenceable(1000)) #3

declare noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX12MeshGeometry11GetTangentsEv(ptr noundef nonnull align 8 dereferenceable(1000)) #3

declare noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX12MeshGeometry12GetBinormalsEv(ptr noundef nonnull align 8 dereferenceable(1000)) #3

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorI10aiVector3tIfESaIS1_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #7 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { <2 x float>, float } @_ZeoIfE10aiVector3tIT_ERKS2_S4_(ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12)) #8

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(12) ptr @_ZNKSt6vectorI10aiVector3tIfESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorI10aiVector3tIfESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #0 align 2

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

declare noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX12MeshGeometry16GetTextureCoordsEj(ptr noundef nonnull align 8 dereferenceable(1000), i32 noundef) #3

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

declare noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX12MeshGeometry15GetVertexColorsEj(ptr noundef nonnull align 8 dereferenceable(1000), i32 noundef) #3

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Assimp3FBX12FBXConverter22ConvertMaterialForMeshEP6aiMeshRKNS0_5ModelERKNS0_12MeshGeometryEi(ptr noundef nonnull align 8 dereferenceable(489), ptr noundef, ptr noundef nonnull align 8 dereferenceable(208), ptr noundef nonnull align 8 dereferenceable(1000), i32 noundef) #7 align 2

declare noundef ptr @_ZNK6Assimp3FBX8Geometry12DeformerSkinEv(ptr noundef nonnull align 8 dereferenceable(120)) #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Assimp3FBX12FBXConverter14ConvertWeightsEP6aiMeshRKNS0_12MeshGeometryERK12aiMatrix4x4tIfEP6aiNodejPSt6vectorIjSaIjEE(ptr noundef nonnull align 8 dereferenceable(489), ptr noundef, ptr noundef nonnull align 8 dereferenceable(1000), ptr noundef nonnull align 4 dereferenceable(64), ptr noundef, i32 noundef, ptr noundef) #7 align 2

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

declare noundef nonnull align 8 dereferenceable(56) ptr @_ZNK6Assimp3FBX8Geometry14GetBlendShapesEv(ptr noundef nonnull align 8 dereferenceable(120)) #3

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(56) ptr @_ZNK6Assimp3FBX10BlendShape18BlendShapeChannelsEv(ptr noundef nonnull align 8 dereferenceable(128)) #0 align 2

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(56) ptr @_ZNK6Assimp3FBX17BlendShapeChannel18GetShapeGeometriesEv(ptr noundef nonnull align 8 dereferenceable(160)) #0 align 2

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

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

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

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

declare noundef ptr @_ZN6Assimp16aiCreateAnimMeshEPK6aiMeshbbbbb(ptr noundef, i1 noundef zeroext, i1 noundef zeroext, i1 noundef zeroext, i1 noundef zeroext, i1 noundef zeroext) #3

declare noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX13ShapeGeometry11GetVerticesEv(ptr noundef nonnull align 8 dereferenceable(192)) #3

declare noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX13ShapeGeometry10GetNormalsEv(ptr noundef nonnull align 8 dereferenceable(192)) #3

declare noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX13ShapeGeometry10GetIndicesEv(ptr noundef nonnull align 8 dereferenceable(192)) #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Assimp3FBX12FBXConverter15FixAnimMeshNameERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(489), ptr noundef nonnull align 8 dereferenceable(32)) #7 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIjSaIjEE2atEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #7 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 4 dereferenceable(12) ptr @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #7 align 2

declare noundef ptr @_ZNK6Assimp3FBX12MeshGeometry19ToOutputVertexIndexEjRj(ptr noundef nonnull align 8 dereferenceable(1000), i32 noundef, ptr noundef nonnull align 4 dereferenceable(4)) #3

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 4 dereferenceable(12) ptr @_ZN10aiVector3tIfE13NormalizeSafeEv(ptr noundef nonnull align 4 dereferenceable(12)) #8 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef float @_ZNK6Assimp3FBX17BlendShapeChannel13DeformPercentEv(ptr noundef nonnull align 8 dereferenceable(160)) #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIP10aiAnimMeshSaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(8)) #7 align 2

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN6Assimp3FBX12FBXConverter24ConvertMeshMultiMaterialERKNS0_12MeshGeometryERKNS0_5ModelERK12aiMatrix4x4tIfEiP6aiNodeSD_(ptr noundef nonnull align 8 dereferenceable(489) %0, ptr noundef nonnull align 8 dereferenceable(1000) %1, ptr noundef nonnull align 8 dereferenceable(208) %2, ptr noundef nonnull align 4 dereferenceable(64) %3, i32 noundef %4, ptr noundef %5, ptr noundef %6) #9 align 2 personality ptr @__gxx_personality_v0 {
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca i32, align 4
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca i8, align 1
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca %"class.__gnu_cxx::__normal_iterator.221", align 8
  %23 = alloca %"class.__gnu_cxx::__normal_iterator.227", align 8
  %24 = alloca %"class.__gnu_cxx::__normal_iterator.227", align 8
  %25 = alloca %"class.std::vector.190", align 8
  %26 = alloca %"class.std::map.300", align 8
  %27 = alloca ptr, align 8
  %28 = alloca i32, align 4
  %29 = alloca ptr, align 8
  %30 = alloca ptr, align 8
  %31 = alloca ptr, align 8
  %32 = alloca ptr, align 8
  %33 = alloca %"class.std::vector.206", align 8
  %34 = alloca i32, align 4
  %35 = alloca %class.aiVector3t, align 4
  %36 = alloca { <2 x float>, float }, align 8
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca i32, align 4
  %40 = alloca ptr, align 8
  %41 = alloca i32, align 4
  %42 = alloca i32, align 4
  %43 = alloca ptr, align 8
  %44 = alloca i32, align 4
  %45 = alloca i32, align 4
  %46 = alloca %"class.__gnu_cxx::__normal_iterator.221", align 8
  %47 = alloca %"class.__gnu_cxx::__normal_iterator.227", align 8
  %48 = alloca %"class.__gnu_cxx::__normal_iterator.227", align 8
  %49 = alloca i32, align 4
  %50 = alloca ptr, align 8
  %51 = alloca i32, align 4
  %52 = alloca i32, align 4
  %53 = alloca ptr, align 8
  %54 = alloca %class.aiVector3t, align 4
  %55 = alloca i32, align 4
  %56 = alloca ptr, align 8
  %57 = alloca %"class.std::vector.237", align 8
  %58 = alloca ptr, align 8
  %59 = alloca %"struct.std::__detail::_Node_const_iterator", align 8
  %60 = alloca %"struct.std::__detail::_Node_const_iterator", align 8
  %61 = alloca ptr, align 8
  %62 = alloca ptr, align 8
  %63 = alloca %"struct.std::__detail::_Node_const_iterator.262", align 8
  %64 = alloca %"struct.std::__detail::_Node_const_iterator.262", align 8
  %65 = alloca ptr, align 8
  %66 = alloca ptr, align 8
  %67 = alloca ptr, align 8
  %68 = alloca %"struct.std::__detail::_Node_const_iterator.289", align 8
  %69 = alloca %"struct.std::__detail::_Node_const_iterator.289", align 8
  %70 = alloca ptr, align 8
  %71 = alloca ptr, align 8
  %72 = alloca ptr, align 8
  %73 = alloca ptr, align 8
  %74 = alloca ptr, align 8
  %75 = alloca %"class.std::__cxx11::basic_string", align 8
  %76 = alloca i64, align 8
  %77 = alloca i32, align 4
  %78 = alloca %class.aiVector3t, align 4
  %79 = alloca %class.aiVector3t, align 4
  %80 = alloca i32, align 4
  %81 = alloca ptr, align 8
  %82 = alloca i32, align 4
  %83 = alloca i32, align 4
  %84 = alloca %"struct.std::_Rb_tree_iterator.306", align 8
  %85 = alloca %"struct.std::_Rb_tree_iterator.306", align 8
  %86 = alloca i32, align 4
  %87 = alloca i64, align 8
  %88 = alloca i64, align 8
  store ptr %0, ptr %8, align 8, !tbaa !5
  store ptr %1, ptr %9, align 8, !tbaa !5
  store ptr %2, ptr %10, align 8, !tbaa !5
  store ptr %3, ptr %11, align 8, !tbaa !5
  store i32 %4, ptr %12, align 4, !tbaa !9
  store ptr %5, ptr %13, align 8, !tbaa !5
  store ptr %6, ptr %14, align 8, !tbaa !5
  %89 = load ptr, ptr %8, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #10
  %90 = load ptr, ptr %9, align 8, !tbaa !5
  %91 = load ptr, ptr %13, align 8, !tbaa !5
  %92 = call noundef ptr @_ZN6Assimp3FBX12FBXConverter14SetupEmptyMeshERKNS0_8GeometryEP6aiNode(ptr noundef nonnull align 8 dereferenceable(489) %89, ptr noundef nonnull align 8 dereferenceable(120) %90, ptr noundef %91)
  store ptr %92, ptr %15, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #10
  %93 = load ptr, ptr %9, align 8, !tbaa !5
  %94 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX12MeshGeometry18GetMaterialIndicesEv(ptr noundef nonnull align 8 dereferenceable(1000) %93)
  store ptr %94, ptr %16, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #10
  %95 = load ptr, ptr %9, align 8, !tbaa !5
  %96 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX12MeshGeometry11GetVerticesEv(ptr noundef nonnull align 8 dereferenceable(1000) %95)
  store ptr %96, ptr %17, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #10
  %97 = load ptr, ptr %9, align 8, !tbaa !5
  %98 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX12MeshGeometry18GetFaceIndexCountsEv(ptr noundef nonnull align 8 dereferenceable(1000) %97)
  store ptr %98, ptr %18, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %19) #10
  %99 = getelementptr inbounds %"class.Assimp::FBX::FBXConverter", ptr %89, i32 0, i32 17
  %100 = load ptr, ptr %99, align 8, !tbaa !11
  %101 = call noundef nonnull align 1 dereferenceable(15) ptr @_ZNK6Assimp3FBX8Document8SettingsEv(ptr noundef nonnull align 8 dereferenceable(336) %100)
  %102 = getelementptr inbounds %"struct.Assimp::FBX::ImportSettings", ptr %101, i32 0, i32 8
  %103 = load i8, ptr %102, align 1, !tbaa !72, !range !74, !noundef !75
  %104 = trunc i8 %103 to i1
  br i1 %104, label %105, label %109

105:                                              ; preds = %7
  %106 = load ptr, ptr %9, align 8, !tbaa !5
  %107 = call noundef ptr @_ZNK6Assimp3FBX8Geometry12DeformerSkinEv(ptr noundef nonnull align 8 dereferenceable(120) %106)
  %108 = icmp ne ptr %107, null
  br label %109

109:                                              ; preds = %105, %7
  %110 = phi i1 [ false, %7 ], [ %108, %105 ]
  %111 = zext i1 %110 to i8
  store i8 %111, ptr %19, align 1, !tbaa !76
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #10
  store i32 0, ptr %20, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #10
  store i32 0, ptr %21, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #10
  %112 = load ptr, ptr %18, align 8, !tbaa !5
  %113 = call ptr @_ZNKSt6vectorIjSaIjEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %112) #10
  %114 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.221", ptr %22, i32 0, i32 0
  store ptr %113, ptr %114, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #10
  %115 = load ptr, ptr %16, align 8, !tbaa !5
  %116 = call ptr @_ZNKSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %115) #10
  %117 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.227", ptr %23, i32 0, i32 0
  store ptr %116, ptr %117, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #10
  %118 = load ptr, ptr %16, align 8, !tbaa !5
  %119 = call ptr @_ZNKSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %118) #10
  %120 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.227", ptr %24, i32 0, i32 0
  store ptr %119, ptr %120, align 8
  br label %121

121:                                              ; preds = %137, %109
  %122 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 8 dereferenceable(8) %24) #10
  br i1 %122, label %124, label %123

123:                                              ; preds = %121
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #10
  br label %140

124:                                              ; preds = %121
  %125 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %23) #10
  %126 = load i32, ptr %125, align 4, !tbaa !9
  %127 = load i32, ptr %12, align 4, !tbaa !9
  %128 = icmp ne i32 %126, %127
  br i1 %128, label %129, label %130

129:                                              ; preds = %124
  br label %137

130:                                              ; preds = %124
  %131 = load i32, ptr %20, align 4, !tbaa !9
  %132 = add i32 %131, 1
  store i32 %132, ptr %20, align 4, !tbaa !9
  %133 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKjSt6vectorIjSaIjEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %22) #10
  %134 = load i32, ptr %133, align 4, !tbaa !9
  %135 = load i32, ptr %21, align 4, !tbaa !9
  %136 = add i32 %135, %134
  store i32 %136, ptr %21, align 4, !tbaa !9
  br label %137

137:                                              ; preds = %130, %129
  %138 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %23) #10
  %139 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKjSt6vectorIjSaIjEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %22) #10
  br label %121, !llvm.loop !77

140:                                              ; preds = %123
  %141 = load i32, ptr %20, align 4, !tbaa !9
  %142 = icmp ne i32 %141, 0
  br i1 %142, label %144, label %143

143:                                              ; preds = %140
  call void @_ZN6Assimp17aiAssertViolationEPKcS1_i(ptr noundef @.str.62, ptr noundef @.str.5, i32 noundef 1342)
  br label %144

144:                                              ; preds = %143, %140
  %145 = phi i1 [ true, %140 ], [ false, %143 ]
  %146 = load i32, ptr %21, align 4, !tbaa !9
  %147 = icmp ne i32 %146, 0
  br i1 %147, label %149, label %148

148:                                              ; preds = %144
  call void @_ZN6Assimp17aiAssertViolationEPKcS1_i(ptr noundef @.str.63, ptr noundef @.str.5, i32 noundef 1343)
  br label %149

149:                                              ; preds = %148, %144
  %150 = phi i1 [ true, %144 ], [ false, %148 ]
  call void @llvm.lifetime.start.p0(i64 24, ptr %25) #10
  call void @_ZNSt6vectorIjSaIjEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %25) #10
  call void @llvm.lifetime.start.p0(i64 48, ptr %26) #10
  call void @_ZNSt3mapIjjSt4lessIjESaISt4pairIKjjEEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %26) #10
  %151 = load i8, ptr %19, align 1, !tbaa !76, !range !74, !noundef !75
  %152 = trunc i8 %151 to i1
  br i1 %152, label %159, label %153

153:                                              ; preds = %149
  %154 = load ptr, ptr %9, align 8, !tbaa !5
  %155 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZNK6Assimp3FBX8Geometry14GetBlendShapesEv(ptr noundef nonnull align 8 dereferenceable(120) %154)
          to label %156 unwind label %163

156:                                              ; preds = %153
  %157 = call noundef i64 @_ZNKSt13unordered_setIPKN6Assimp3FBX10BlendShapeESt4hashIS4_ESt8equal_toIS4_ESaIS4_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(56) %155) #10
  %158 = icmp ugt i64 %157, 0
  br i1 %158, label %159, label %167

159:                                              ; preds = %156, %149
  %160 = load i32, ptr %21, align 4, !tbaa !9
  %161 = zext i32 %160 to i64
  invoke void @_ZNSt6vectorIjSaIjEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %25, i64 noundef %161)
          to label %162 unwind label %163

162:                                              ; preds = %159
  br label %167

163:                                              ; preds = %167, %159, %153
  %164 = landingpad { ptr, i32 }
          cleanup
  %165 = extractvalue { ptr, i32 } %164, 0
  store ptr %165, ptr %27, align 8
  %166 = extractvalue { ptr, i32 } %164, 1
  store i32 %166, ptr %28, align 4
  br label %1053

167:                                              ; preds = %162, %156
  %168 = load i32, ptr %21, align 4, !tbaa !9
  %169 = load ptr, ptr %15, align 8, !tbaa !5
  %170 = getelementptr inbounds %struct.aiMesh, ptr %169, i32 0, i32 1
  store i32 %168, ptr %170, align 4, !tbaa !79
  %171 = load i32, ptr %21, align 4, !tbaa !9
  %172 = zext i32 %171 to i64
  %173 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %172, i64 12)
  %174 = extractvalue { i64, i1 } %173, 1
  %175 = extractvalue { i64, i1 } %173, 0
  %176 = select i1 %174, i64 -1, i64 %175
  %177 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %176) #11
          to label %178 unwind label %163

178:                                              ; preds = %167
  %179 = icmp eq i64 %172, 0
  br i1 %179, label %186, label %180

180:                                              ; preds = %178
  %181 = getelementptr inbounds %class.aiVector3t, ptr %177, i64 %172
  br label %182

182:                                              ; preds = %182, %180
  %183 = phi ptr [ %177, %180 ], [ %184, %182 ]
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %183) #10
  %184 = getelementptr inbounds %class.aiVector3t, ptr %183, i64 1
  %185 = icmp eq ptr %184, %181
  br i1 %185, label %186, label %182

186:                                              ; preds = %182, %178
  %187 = load ptr, ptr %15, align 8, !tbaa !5
  %188 = getelementptr inbounds %struct.aiMesh, ptr %187, i32 0, i32 3
  store ptr %177, ptr %188, align 8, !tbaa !86
  %189 = load i32, ptr %20, align 4, !tbaa !9
  %190 = load ptr, ptr %15, align 8, !tbaa !5
  %191 = getelementptr inbounds %struct.aiMesh, ptr %190, i32 0, i32 2
  store i32 %189, ptr %191, align 8, !tbaa !87
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #10
  %192 = load i32, ptr %20, align 4, !tbaa !9
  %193 = zext i32 %192 to i64
  %194 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %193, i64 16)
  %195 = extractvalue { i64, i1 } %194, 1
  %196 = extractvalue { i64, i1 } %194, 0
  %197 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %196, i64 8)
  %198 = extractvalue { i64, i1 } %197, 1
  %199 = or i1 %195, %198
  %200 = extractvalue { i64, i1 } %197, 0
  %201 = select i1 %199, i64 -1, i64 %200
  %202 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %201) #11
          to label %203 unwind label %249

203:                                              ; preds = %186
  store i64 %193, ptr %202, align 16
  %204 = getelementptr inbounds i8, ptr %202, i64 8
  %205 = icmp eq i64 %193, 0
  br i1 %205, label %212, label %206

206:                                              ; preds = %203
  %207 = getelementptr inbounds %struct.aiFace, ptr %204, i64 %193
  br label %208

208:                                              ; preds = %208, %206
  %209 = phi ptr [ %204, %206 ], [ %210, %208 ]
  call void @_ZN6aiFaceC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %209) #10
  %210 = getelementptr inbounds %struct.aiFace, ptr %209, i64 1
  %211 = icmp eq ptr %210, %207
  br i1 %211, label %212, label %208

212:                                              ; preds = %208, %203
  %213 = load ptr, ptr %15, align 8, !tbaa !5
  %214 = getelementptr inbounds %struct.aiMesh, ptr %213, i32 0, i32 10
  store ptr %204, ptr %214, align 8, !tbaa !88
  store ptr %204, ptr %29, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #10
  %215 = load ptr, ptr %9, align 8, !tbaa !5
  %216 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX12MeshGeometry10GetNormalsEv(ptr noundef nonnull align 8 dereferenceable(1000) %215)
          to label %217 unwind label %253

217:                                              ; preds = %212
  store ptr %216, ptr %30, align 8, !tbaa !5
  %218 = load ptr, ptr %30, align 8, !tbaa !5
  %219 = call noundef i64 @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %218) #10
  %220 = icmp ne i64 %219, 0
  br i1 %220, label %221, label %257

221:                                              ; preds = %217
  %222 = load ptr, ptr %30, align 8, !tbaa !5
  %223 = call noundef i64 @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %222) #10
  %224 = load ptr, ptr %17, align 8, !tbaa !5
  %225 = call noundef i64 @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %224) #10
  %226 = icmp eq i64 %223, %225
  br i1 %226, label %229, label %227

227:                                              ; preds = %221
  invoke void @_ZN6Assimp17aiAssertViolationEPKcS1_i(ptr noundef @.str.56, ptr noundef @.str.5, i32 noundef 1362)
          to label %228 unwind label %253

228:                                              ; preds = %227
  br label %229

229:                                              ; preds = %228, %221
  %230 = phi i1 [ true, %221 ], [ false, %228 ]
  %231 = load i32, ptr %21, align 4, !tbaa !9
  %232 = zext i32 %231 to i64
  %233 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %232, i64 12)
  %234 = extractvalue { i64, i1 } %233, 1
  %235 = extractvalue { i64, i1 } %233, 0
  %236 = select i1 %234, i64 -1, i64 %235
  %237 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %236) #11
          to label %238 unwind label %253

238:                                              ; preds = %229
  %239 = icmp eq i64 %232, 0
  br i1 %239, label %246, label %240

240:                                              ; preds = %238
  %241 = getelementptr inbounds %class.aiVector3t, ptr %237, i64 %232
  br label %242

242:                                              ; preds = %242, %240
  %243 = phi ptr [ %237, %240 ], [ %244, %242 ]
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %243) #10
  %244 = getelementptr inbounds %class.aiVector3t, ptr %243, i64 1
  %245 = icmp eq ptr %244, %241
  br i1 %245, label %246, label %242

246:                                              ; preds = %242, %238
  %247 = load ptr, ptr %15, align 8, !tbaa !5
  %248 = getelementptr inbounds %struct.aiMesh, ptr %247, i32 0, i32 4
  store ptr %237, ptr %248, align 8, !tbaa !89
  br label %257

249:                                              ; preds = %186
  %250 = landingpad { ptr, i32 }
          cleanup
  %251 = extractvalue { ptr, i32 } %250, 0
  store ptr %251, ptr %27, align 8
  %252 = extractvalue { ptr, i32 } %250, 1
  store i32 %252, ptr %28, align 4
  br label %1052

253:                                              ; preds = %229, %227, %212
  %254 = landingpad { ptr, i32 }
          cleanup
  %255 = extractvalue { ptr, i32 } %254, 0
  store ptr %255, ptr %27, align 8
  %256 = extractvalue { ptr, i32 } %254, 1
  store i32 %256, ptr %28, align 4
  br label %1051

257:                                              ; preds = %246, %217
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #10
  %258 = load ptr, ptr %9, align 8, !tbaa !5
  %259 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX12MeshGeometry11GetTangentsEv(ptr noundef nonnull align 8 dereferenceable(1000) %258)
          to label %260 unwind label %286

260:                                              ; preds = %257
  store ptr %259, ptr %31, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #10
  %261 = load ptr, ptr %9, align 8, !tbaa !5
  %262 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX12MeshGeometry12GetBinormalsEv(ptr noundef nonnull align 8 dereferenceable(1000) %261)
          to label %263 unwind label %290

263:                                              ; preds = %260
  store ptr %262, ptr %32, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr %33) #10
  call void @_ZNSt6vectorI10aiVector3tIfESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %33) #10
  %264 = load ptr, ptr %31, align 8, !tbaa !5
  %265 = call noundef i64 @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %264) #10
  %266 = icmp ne i64 %265, 0
  br i1 %266, label %267, label %381

267:                                              ; preds = %263
  %268 = load ptr, ptr %32, align 8, !tbaa !5
  %269 = call noundef i64 @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %268) #10
  %270 = icmp ne i64 %269, 0
  br i1 %270, label %322, label %271

271:                                              ; preds = %267
  %272 = load ptr, ptr %30, align 8, !tbaa !5
  %273 = call noundef i64 @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %272) #10
  %274 = icmp ne i64 %273, 0
  br i1 %274, label %275, label %320

275:                                              ; preds = %271
  %276 = load ptr, ptr %30, align 8, !tbaa !5
  %277 = call noundef i64 @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %276) #10
  invoke void @_ZNSt6vectorI10aiVector3tIfESaIS1_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %33, i64 noundef %277)
          to label %278 unwind label %294

278:                                              ; preds = %275
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #10
  store i32 0, ptr %34, align 4, !tbaa !9
  br label %279

279:                                              ; preds = %312, %278
  %280 = load i32, ptr %34, align 4, !tbaa !9
  %281 = zext i32 %280 to i64
  %282 = load ptr, ptr %31, align 8, !tbaa !5
  %283 = call noundef i64 @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %282) #10
  %284 = icmp ult i64 %281, %283
  br i1 %284, label %298, label %285

285:                                              ; preds = %279
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #10
  br label %319

286:                                              ; preds = %257
  %287 = landingpad { ptr, i32 }
          cleanup
  %288 = extractvalue { ptr, i32 } %287, 0
  store ptr %288, ptr %27, align 8
  %289 = extractvalue { ptr, i32 } %287, 1
  store i32 %289, ptr %28, align 4
  br label %1050

290:                                              ; preds = %260
  %291 = landingpad { ptr, i32 }
          cleanup
  %292 = extractvalue { ptr, i32 } %291, 0
  store ptr %292, ptr %27, align 8
  %293 = extractvalue { ptr, i32 } %291, 1
  store i32 %293, ptr %28, align 4
  br label %1049

294:                                              ; preds = %359, %342, %340, %331, %275
  %295 = landingpad { ptr, i32 }
          cleanup
  %296 = extractvalue { ptr, i32 } %295, 0
  store ptr %296, ptr %27, align 8
  %297 = extractvalue { ptr, i32 } %295, 1
  store i32 %297, ptr %28, align 4
  br label %1048

298:                                              ; preds = %279
  call void @llvm.lifetime.start.p0(i64 12, ptr %35) #10
  %299 = load ptr, ptr %30, align 8, !tbaa !5
  %300 = load i32, ptr %34, align 4, !tbaa !9
  %301 = zext i32 %300 to i64
  %302 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNKSt6vectorI10aiVector3tIfESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %299, i64 noundef %301) #10
  %303 = load ptr, ptr %31, align 8, !tbaa !5
  %304 = load i32, ptr %34, align 4, !tbaa !9
  %305 = zext i32 %304 to i64
  %306 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNKSt6vectorI10aiVector3tIfESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %303, i64 noundef %305) #10
  %307 = invoke { <2 x float>, float } @_ZeoIfE10aiVector3tIT_ERKS2_S4_(ptr noundef nonnull align 4 dereferenceable(12) %302, ptr noundef nonnull align 4 dereferenceable(12) %306)
          to label %308 unwind label %315

308:                                              ; preds = %298
  store { <2 x float>, float } %307, ptr %36, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %35, ptr align 8 %36, i64 12, i1 false)
  %309 = load i32, ptr %34, align 4, !tbaa !9
  %310 = zext i32 %309 to i64
  %311 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorI10aiVector3tIfESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %33, i64 noundef %310) #10
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %311, ptr align 4 %35, i64 12, i1 false), !tbaa.struct !90
  call void @llvm.lifetime.end.p0(i64 12, ptr %35) #10
  br label %312

312:                                              ; preds = %308
  %313 = load i32, ptr %34, align 4, !tbaa !9
  %314 = add i32 %313, 1
  store i32 %314, ptr %34, align 4, !tbaa !9
  br label %279, !llvm.loop !92

315:                                              ; preds = %298
  %316 = landingpad { ptr, i32 }
          cleanup
  %317 = extractvalue { ptr, i32 } %316, 0
  store ptr %317, ptr %27, align 8
  %318 = extractvalue { ptr, i32 } %316, 1
  store i32 %318, ptr %28, align 4
  call void @llvm.lifetime.end.p0(i64 12, ptr %35) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #10
  br label %1048

319:                                              ; preds = %285
  store ptr %33, ptr %32, align 8, !tbaa !5
  br label %321

320:                                              ; preds = %271
  store ptr null, ptr %32, align 8, !tbaa !5
  br label %321

321:                                              ; preds = %320, %319
  br label %322

322:                                              ; preds = %321, %267
  %323 = load ptr, ptr %32, align 8, !tbaa !5
  %324 = icmp ne ptr %323, null
  br i1 %324, label %325, label %380

325:                                              ; preds = %322
  %326 = load ptr, ptr %31, align 8, !tbaa !5
  %327 = call noundef i64 @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %326) #10
  %328 = load ptr, ptr %17, align 8, !tbaa !5
  %329 = call noundef i64 @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %328) #10
  %330 = icmp eq i64 %327, %329
  br i1 %330, label %333, label %331

331:                                              ; preds = %325
  invoke void @_ZN6Assimp17aiAssertViolationEPKcS1_i(ptr noundef @.str.57, ptr noundef @.str.5, i32 noundef 1388)
          to label %332 unwind label %294

332:                                              ; preds = %331
  br label %333

333:                                              ; preds = %332, %325
  %334 = phi i1 [ true, %325 ], [ false, %332 ]
  %335 = load ptr, ptr %32, align 8, !tbaa !5
  %336 = call noundef i64 @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %335) #10
  %337 = load ptr, ptr %17, align 8, !tbaa !5
  %338 = call noundef i64 @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %337) #10
  %339 = icmp eq i64 %336, %338
  br i1 %339, label %342, label %340

340:                                              ; preds = %333
  invoke void @_ZN6Assimp17aiAssertViolationEPKcS1_i(ptr noundef @.str.58, ptr noundef @.str.5, i32 noundef 1389)
          to label %341 unwind label %294

341:                                              ; preds = %340
  br label %342

342:                                              ; preds = %341, %333
  %343 = phi i1 [ true, %333 ], [ false, %341 ]
  %344 = load i32, ptr %21, align 4, !tbaa !9
  %345 = zext i32 %344 to i64
  %346 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %345, i64 12)
  %347 = extractvalue { i64, i1 } %346, 1
  %348 = extractvalue { i64, i1 } %346, 0
  %349 = select i1 %347, i64 -1, i64 %348
  %350 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %349) #11
          to label %351 unwind label %294

351:                                              ; preds = %342
  %352 = icmp eq i64 %345, 0
  br i1 %352, label %359, label %353

353:                                              ; preds = %351
  %354 = getelementptr inbounds %class.aiVector3t, ptr %350, i64 %345
  br label %355

355:                                              ; preds = %355, %353
  %356 = phi ptr [ %350, %353 ], [ %357, %355 ]
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %356) #10
  %357 = getelementptr inbounds %class.aiVector3t, ptr %356, i64 1
  %358 = icmp eq ptr %357, %354
  br i1 %358, label %359, label %355

359:                                              ; preds = %355, %351
  %360 = load ptr, ptr %15, align 8, !tbaa !5
  %361 = getelementptr inbounds %struct.aiMesh, ptr %360, i32 0, i32 5
  store ptr %350, ptr %361, align 8, !tbaa !93
  %362 = load i32, ptr %21, align 4, !tbaa !9
  %363 = zext i32 %362 to i64
  %364 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %363, i64 12)
  %365 = extractvalue { i64, i1 } %364, 1
  %366 = extractvalue { i64, i1 } %364, 0
  %367 = select i1 %365, i64 -1, i64 %366
  %368 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %367) #11
          to label %369 unwind label %294

369:                                              ; preds = %359
  %370 = icmp eq i64 %363, 0
  br i1 %370, label %377, label %371

371:                                              ; preds = %369
  %372 = getelementptr inbounds %class.aiVector3t, ptr %368, i64 %363
  br label %373

373:                                              ; preds = %373, %371
  %374 = phi ptr [ %368, %371 ], [ %375, %373 ]
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %374) #10
  %375 = getelementptr inbounds %class.aiVector3t, ptr %374, i64 1
  %376 = icmp eq ptr %375, %372
  br i1 %376, label %377, label %373

377:                                              ; preds = %373, %369
  %378 = load ptr, ptr %15, align 8, !tbaa !5
  %379 = getelementptr inbounds %struct.aiMesh, ptr %378, i32 0, i32 6
  store ptr %368, ptr %379, align 8, !tbaa !94
  br label %380

380:                                              ; preds = %377, %322
  br label %381

381:                                              ; preds = %380, %263
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #10
  store i32 0, ptr %37, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #10
  store i32 0, ptr %38, align 4, !tbaa !9
  br label %382

382:                                              ; preds = %428, %381
  %383 = load i32, ptr %38, align 4, !tbaa !9
  %384 = icmp ult i32 %383, 8
  br i1 %384, label %386, label %385

385:                                              ; preds = %382
  store i32 8, ptr %39, align 4
  br label %433

386:                                              ; preds = %382
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #10
  %387 = load ptr, ptr %9, align 8, !tbaa !5
  %388 = load i32, ptr %38, align 4, !tbaa !9
  %389 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX12MeshGeometry16GetTextureCoordsEj(ptr noundef nonnull align 8 dereferenceable(1000) %387, i32 noundef %388)
          to label %390 unwind label %394

390:                                              ; preds = %386
  store ptr %389, ptr %40, align 8, !tbaa !5
  %391 = load ptr, ptr %40, align 8, !tbaa !5
  %392 = call noundef zeroext i1 @_ZNKSt6vectorI10aiVector2tIfESaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %391) #10
  br i1 %392, label %393, label %398

393:                                              ; preds = %390
  store i32 8, ptr %39, align 4
  br label %425

394:                                              ; preds = %398, %386
  %395 = landingpad { ptr, i32 }
          cleanup
  %396 = extractvalue { ptr, i32 } %395, 0
  store ptr %396, ptr %27, align 8
  %397 = extractvalue { ptr, i32 } %395, 1
  store i32 %397, ptr %28, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #10
  br label %1047

398:                                              ; preds = %390
  %399 = load i32, ptr %21, align 4, !tbaa !9
  %400 = zext i32 %399 to i64
  %401 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %400, i64 12)
  %402 = extractvalue { i64, i1 } %401, 1
  %403 = extractvalue { i64, i1 } %401, 0
  %404 = select i1 %402, i64 -1, i64 %403
  %405 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %404) #11
          to label %406 unwind label %394

406:                                              ; preds = %398
  %407 = icmp eq i64 %400, 0
  br i1 %407, label %414, label %408

408:                                              ; preds = %406
  %409 = getelementptr inbounds %class.aiVector3t, ptr %405, i64 %400
  br label %410

410:                                              ; preds = %410, %408
  %411 = phi ptr [ %405, %408 ], [ %412, %410 ]
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %411) #10
  %412 = getelementptr inbounds %class.aiVector3t, ptr %411, i64 1
  %413 = icmp eq ptr %412, %409
  br i1 %413, label %414, label %410

414:                                              ; preds = %410, %406
  %415 = load ptr, ptr %15, align 8, !tbaa !5
  %416 = getelementptr inbounds %struct.aiMesh, ptr %415, i32 0, i32 8
  %417 = load i32, ptr %38, align 4, !tbaa !9
  %418 = zext i32 %417 to i64
  %419 = getelementptr inbounds [8 x ptr], ptr %416, i64 0, i64 %418
  store ptr %405, ptr %419, align 8, !tbaa !5
  %420 = load ptr, ptr %15, align 8, !tbaa !5
  %421 = getelementptr inbounds %struct.aiMesh, ptr %420, i32 0, i32 9
  %422 = load i32, ptr %38, align 4, !tbaa !9
  %423 = zext i32 %422 to i64
  %424 = getelementptr inbounds [8 x i32], ptr %421, i64 0, i64 %423
  store i32 2, ptr %424, align 4, !tbaa !9
  store i32 0, ptr %39, align 4
  br label %425

425:                                              ; preds = %414, %393
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #10
  %426 = load i32, ptr %39, align 4
  switch i32 %426, label %433 [
    i32 0, label %427
  ]

427:                                              ; preds = %425
  br label %428

428:                                              ; preds = %427
  %429 = load i32, ptr %38, align 4, !tbaa !9
  %430 = add i32 %429, 1
  store i32 %430, ptr %38, align 4, !tbaa !9
  %431 = load i32, ptr %37, align 4, !tbaa !9
  %432 = add i32 %431, 1
  store i32 %432, ptr %37, align 4, !tbaa !9
  br label %382, !llvm.loop !95

433:                                              ; preds = %425, %385
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #10
  br label %434

434:                                              ; preds = %433
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #10
  store i32 0, ptr %41, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #10
  store i32 0, ptr %42, align 4, !tbaa !9
  br label %435

435:                                              ; preds = %476, %434
  %436 = load i32, ptr %42, align 4, !tbaa !9
  %437 = icmp ult i32 %436, 8
  br i1 %437, label %439, label %438

438:                                              ; preds = %435
  store i32 11, ptr %39, align 4
  br label %481

439:                                              ; preds = %435
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #10
  %440 = load ptr, ptr %9, align 8, !tbaa !5
  %441 = load i32, ptr %42, align 4, !tbaa !9
  %442 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX12MeshGeometry15GetVertexColorsEj(ptr noundef nonnull align 8 dereferenceable(1000) %440, i32 noundef %441)
          to label %443 unwind label %447

443:                                              ; preds = %439
  store ptr %442, ptr %43, align 8, !tbaa !5
  %444 = load ptr, ptr %43, align 8, !tbaa !5
  %445 = call noundef zeroext i1 @_ZNKSt6vectorI9aiColor4tIfESaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %444) #10
  br i1 %445, label %446, label %451

446:                                              ; preds = %443
  store i32 11, ptr %39, align 4
  br label %473

447:                                              ; preds = %451, %439
  %448 = landingpad { ptr, i32 }
          cleanup
  %449 = extractvalue { ptr, i32 } %448, 0
  store ptr %449, ptr %27, align 8
  %450 = extractvalue { ptr, i32 } %448, 1
  store i32 %450, ptr %28, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #10
  br label %1046

451:                                              ; preds = %443
  %452 = load i32, ptr %21, align 4, !tbaa !9
  %453 = zext i32 %452 to i64
  %454 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %453, i64 16)
  %455 = extractvalue { i64, i1 } %454, 1
  %456 = extractvalue { i64, i1 } %454, 0
  %457 = select i1 %455, i64 -1, i64 %456
  %458 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %457) #11
          to label %459 unwind label %447

459:                                              ; preds = %451
  %460 = icmp eq i64 %453, 0
  br i1 %460, label %467, label %461

461:                                              ; preds = %459
  %462 = getelementptr inbounds %class.aiColor4t, ptr %458, i64 %453
  br label %463

463:                                              ; preds = %463, %461
  %464 = phi ptr [ %458, %461 ], [ %465, %463 ]
  call void @_ZN9aiColor4tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(16) %464) #10
  %465 = getelementptr inbounds %class.aiColor4t, ptr %464, i64 1
  %466 = icmp eq ptr %465, %462
  br i1 %466, label %467, label %463

467:                                              ; preds = %463, %459
  %468 = load ptr, ptr %15, align 8, !tbaa !5
  %469 = getelementptr inbounds %struct.aiMesh, ptr %468, i32 0, i32 7
  %470 = load i32, ptr %42, align 4, !tbaa !9
  %471 = zext i32 %470 to i64
  %472 = getelementptr inbounds [8 x ptr], ptr %469, i64 0, i64 %471
  store ptr %458, ptr %472, align 8, !tbaa !5
  store i32 0, ptr %39, align 4
  br label %473

473:                                              ; preds = %467, %446
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #10
  %474 = load i32, ptr %39, align 4
  switch i32 %474, label %481 [
    i32 0, label %475
  ]

475:                                              ; preds = %473
  br label %476

476:                                              ; preds = %475
  %477 = load i32, ptr %42, align 4, !tbaa !9
  %478 = add i32 %477, 1
  store i32 %478, ptr %42, align 4, !tbaa !9
  %479 = load i32, ptr %41, align 4, !tbaa !9
  %480 = add i32 %479, 1
  store i32 %480, ptr %41, align 4, !tbaa !9
  br label %435, !llvm.loop !96

481:                                              ; preds = %473, %438
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #10
  br label %482

482:                                              ; preds = %481
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #10
  store i32 0, ptr %44, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #10
  store i32 0, ptr %45, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #10
  %483 = load ptr, ptr %18, align 8, !tbaa !5
  %484 = call ptr @_ZNKSt6vectorIjSaIjEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %483) #10
  %485 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.221", ptr %46, i32 0, i32 0
  store ptr %484, ptr %485, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %22, ptr align 8 %46, i64 8, i1 false), !tbaa.struct !97
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #10
  %486 = load ptr, ptr %16, align 8, !tbaa !5
  %487 = call ptr @_ZNKSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %486) #10
  %488 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.227", ptr %47, i32 0, i32 0
  store ptr %487, ptr %488, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #10
  %489 = load ptr, ptr %16, align 8, !tbaa !5
  %490 = call ptr @_ZNKSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %489) #10
  %491 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.227", ptr %48, i32 0, i32 0
  store ptr %490, ptr %491, align 8
  br label %492

492:                                              ; preds = %716, %482
  %493 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8) %47, ptr noundef nonnull align 8 dereferenceable(8) %48) #10
  br i1 %493, label %495, label %494

494:                                              ; preds = %492
  store i32 14, ptr %39, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #10
  br label %720

495:                                              ; preds = %492
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #10
  %496 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKjSt6vectorIjSaIjEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %22) #10
  %497 = load i32, ptr %496, align 4, !tbaa !9
  store i32 %497, ptr %49, align 4, !tbaa !9
  %498 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %47) #10
  %499 = load i32, ptr %498, align 4, !tbaa !9
  %500 = load i32, ptr %12, align 4, !tbaa !9
  %501 = icmp ne i32 %499, %500
  br i1 %501, label %502, label %506

502:                                              ; preds = %495
  %503 = load i32, ptr %49, align 4, !tbaa !9
  %504 = load i32, ptr %45, align 4, !tbaa !9
  %505 = add i32 %504, %503
  store i32 %505, ptr %45, align 4, !tbaa !9
  store i32 16, ptr %39, align 4
  br label %713

506:                                              ; preds = %495
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #10
  %507 = load ptr, ptr %29, align 8, !tbaa !5
  %508 = getelementptr inbounds %struct.aiFace, ptr %507, i32 1
  store ptr %508, ptr %29, align 8, !tbaa !5
  store ptr %507, ptr %50, align 8, !tbaa !5
  %509 = load i32, ptr %49, align 4, !tbaa !9
  %510 = load ptr, ptr %50, align 8, !tbaa !5
  %511 = getelementptr inbounds %struct.aiFace, ptr %510, i32 0, i32 0
  store i32 %509, ptr %511, align 8, !tbaa !98
  %512 = load i32, ptr %49, align 4, !tbaa !9
  %513 = zext i32 %512 to i64
  %514 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %513, i64 4)
  %515 = extractvalue { i64, i1 } %514, 1
  %516 = extractvalue { i64, i1 } %514, 0
  %517 = select i1 %515, i64 -1, i64 %516
  %518 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %517) #11
          to label %519 unwind label %523

519:                                              ; preds = %506
  %520 = load ptr, ptr %50, align 8, !tbaa !5
  %521 = getelementptr inbounds %struct.aiFace, ptr %520, i32 0, i32 1
  store ptr %518, ptr %521, align 8, !tbaa !100
  %522 = load i32, ptr %49, align 4, !tbaa !9
  switch i32 %522, label %542 [
    i32 1, label %527
    i32 2, label %532
    i32 3, label %537
  ]

523:                                              ; preds = %506
  %524 = landingpad { ptr, i32 }
          cleanup
  %525 = extractvalue { ptr, i32 } %524, 0
  store ptr %525, ptr %27, align 8
  %526 = extractvalue { ptr, i32 } %524, 1
  store i32 %526, ptr %28, align 4
  br label %719

527:                                              ; preds = %519
  %528 = load ptr, ptr %15, align 8, !tbaa !5
  %529 = getelementptr inbounds %struct.aiMesh, ptr %528, i32 0, i32 0
  %530 = load i32, ptr %529, align 8, !tbaa !101
  %531 = or i32 %530, 1
  store i32 %531, ptr %529, align 8, !tbaa !101
  br label %547

532:                                              ; preds = %519
  %533 = load ptr, ptr %15, align 8, !tbaa !5
  %534 = getelementptr inbounds %struct.aiMesh, ptr %533, i32 0, i32 0
  %535 = load i32, ptr %534, align 8, !tbaa !101
  %536 = or i32 %535, 2
  store i32 %536, ptr %534, align 8, !tbaa !101
  br label %547

537:                                              ; preds = %519
  %538 = load ptr, ptr %15, align 8, !tbaa !5
  %539 = getelementptr inbounds %struct.aiMesh, ptr %538, i32 0, i32 0
  %540 = load i32, ptr %539, align 8, !tbaa !101
  %541 = or i32 %540, 4
  store i32 %541, ptr %539, align 8, !tbaa !101
  br label %547

542:                                              ; preds = %519
  %543 = load ptr, ptr %15, align 8, !tbaa !5
  %544 = getelementptr inbounds %struct.aiMesh, ptr %543, i32 0, i32 0
  %545 = load i32, ptr %544, align 8, !tbaa !101
  %546 = or i32 %545, 8
  store i32 %546, ptr %544, align 8, !tbaa !101
  br label %547

547:                                              ; preds = %542, %537, %532, %527
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #10
  store i32 0, ptr %51, align 4, !tbaa !9
  br label %548

548:                                              ; preds = %704, %547
  %549 = load i32, ptr %51, align 4, !tbaa !9
  %550 = load i32, ptr %49, align 4, !tbaa !9
  %551 = icmp ult i32 %549, %550
  br i1 %551, label %553, label %552

552:                                              ; preds = %548
  store i32 18, ptr %39, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #10
  br label %712

553:                                              ; preds = %548
  %554 = load i32, ptr %44, align 4, !tbaa !9
  %555 = load ptr, ptr %50, align 8, !tbaa !5
  %556 = getelementptr inbounds %struct.aiFace, ptr %555, i32 0, i32 1
  %557 = load ptr, ptr %556, align 8, !tbaa !100
  %558 = load i32, ptr %51, align 4, !tbaa !9
  %559 = zext i32 %558 to i64
  %560 = getelementptr inbounds i32, ptr %557, i64 %559
  store i32 %554, ptr %560, align 4, !tbaa !9
  %561 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %25) #10
  %562 = icmp ne i64 %561, 0
  br i1 %562, label %563, label %575

563:                                              ; preds = %553
  %564 = load i32, ptr %45, align 4, !tbaa !9
  %565 = load i32, ptr %44, align 4, !tbaa !9
  %566 = zext i32 %565 to i64
  %567 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %25, i64 noundef %566) #10
  store i32 %564, ptr %567, align 4, !tbaa !9
  %568 = load i32, ptr %44, align 4, !tbaa !9
  %569 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt3mapIjjSt4lessIjESaISt4pairIKjjEEEixERS3_(ptr noundef nonnull align 8 dereferenceable(48) %26, ptr noundef nonnull align 4 dereferenceable(4) %45)
          to label %570 unwind label %571

570:                                              ; preds = %563
  store i32 %568, ptr %569, align 4, !tbaa !9
  br label %575

571:                                              ; preds = %563
  %572 = landingpad { ptr, i32 }
          cleanup
  %573 = extractvalue { ptr, i32 } %572, 0
  store ptr %573, ptr %27, align 8
  %574 = extractvalue { ptr, i32 } %572, 1
  store i32 %574, ptr %28, align 4
  br label %711

575:                                              ; preds = %570, %553
  %576 = load ptr, ptr %17, align 8, !tbaa !5
  %577 = load i32, ptr %45, align 4, !tbaa !9
  %578 = zext i32 %577 to i64
  %579 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNKSt6vectorI10aiVector3tIfESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %576, i64 noundef %578) #10
  %580 = load ptr, ptr %15, align 8, !tbaa !5
  %581 = getelementptr inbounds %struct.aiMesh, ptr %580, i32 0, i32 3
  %582 = load ptr, ptr %581, align 8, !tbaa !86
  %583 = load i32, ptr %44, align 4, !tbaa !9
  %584 = zext i32 %583 to i64
  %585 = getelementptr inbounds %class.aiVector3t, ptr %582, i64 %584
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %585, ptr align 4 %579, i64 12, i1 false), !tbaa.struct !90
  %586 = load ptr, ptr %15, align 8, !tbaa !5
  %587 = getelementptr inbounds %struct.aiMesh, ptr %586, i32 0, i32 4
  %588 = load ptr, ptr %587, align 8, !tbaa !89
  %589 = icmp ne ptr %588, null
  br i1 %589, label %590, label %601

590:                                              ; preds = %575
  %591 = load ptr, ptr %30, align 8, !tbaa !5
  %592 = load i32, ptr %45, align 4, !tbaa !9
  %593 = zext i32 %592 to i64
  %594 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNKSt6vectorI10aiVector3tIfESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %591, i64 noundef %593) #10
  %595 = load ptr, ptr %15, align 8, !tbaa !5
  %596 = getelementptr inbounds %struct.aiMesh, ptr %595, i32 0, i32 4
  %597 = load ptr, ptr %596, align 8, !tbaa !89
  %598 = load i32, ptr %44, align 4, !tbaa !9
  %599 = zext i32 %598 to i64
  %600 = getelementptr inbounds %class.aiVector3t, ptr %597, i64 %599
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %600, ptr align 4 %594, i64 12, i1 false), !tbaa.struct !90
  br label %601

601:                                              ; preds = %590, %575
  %602 = load ptr, ptr %15, align 8, !tbaa !5
  %603 = getelementptr inbounds %struct.aiMesh, ptr %602, i32 0, i32 5
  %604 = load ptr, ptr %603, align 8, !tbaa !93
  %605 = icmp ne ptr %604, null
  br i1 %605, label %606, label %627

606:                                              ; preds = %601
  %607 = load ptr, ptr %31, align 8, !tbaa !5
  %608 = load i32, ptr %45, align 4, !tbaa !9
  %609 = zext i32 %608 to i64
  %610 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNKSt6vectorI10aiVector3tIfESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %607, i64 noundef %609) #10
  %611 = load ptr, ptr %15, align 8, !tbaa !5
  %612 = getelementptr inbounds %struct.aiMesh, ptr %611, i32 0, i32 5
  %613 = load ptr, ptr %612, align 8, !tbaa !93
  %614 = load i32, ptr %44, align 4, !tbaa !9
  %615 = zext i32 %614 to i64
  %616 = getelementptr inbounds %class.aiVector3t, ptr %613, i64 %615
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %616, ptr align 4 %610, i64 12, i1 false), !tbaa.struct !90
  %617 = load ptr, ptr %32, align 8, !tbaa !5
  %618 = load i32, ptr %45, align 4, !tbaa !9
  %619 = zext i32 %618 to i64
  %620 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNKSt6vectorI10aiVector3tIfESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %617, i64 noundef %619) #10
  %621 = load ptr, ptr %15, align 8, !tbaa !5
  %622 = getelementptr inbounds %struct.aiMesh, ptr %621, i32 0, i32 6
  %623 = load ptr, ptr %622, align 8, !tbaa !94
  %624 = load i32, ptr %44, align 4, !tbaa !9
  %625 = zext i32 %624 to i64
  %626 = getelementptr inbounds %class.aiVector3t, ptr %623, i64 %625
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %626, ptr align 4 %620, i64 12, i1 false), !tbaa.struct !90
  br label %627

627:                                              ; preds = %606, %601
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #10
  store i32 0, ptr %52, align 4, !tbaa !9
  br label %628

628:                                              ; preds = %660, %627
  %629 = load i32, ptr %52, align 4, !tbaa !9
  %630 = load i32, ptr %37, align 4, !tbaa !9
  %631 = icmp ult i32 %629, %630
  br i1 %631, label %633, label %632

632:                                              ; preds = %628
  store i32 21, ptr %39, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #10
  br label %672

633:                                              ; preds = %628
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #10
  %634 = load ptr, ptr %9, align 8, !tbaa !5
  %635 = load i32, ptr %52, align 4, !tbaa !9
  %636 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX12MeshGeometry16GetTextureCoordsEj(ptr noundef nonnull align 8 dereferenceable(1000) %634, i32 noundef %635)
          to label %637 unwind label %663

637:                                              ; preds = %633
  store ptr %636, ptr %53, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 12, ptr %54) #10
  %638 = load ptr, ptr %53, align 8, !tbaa !5
  %639 = load i32, ptr %45, align 4, !tbaa !9
  %640 = zext i32 %639 to i64
  %641 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNKSt6vectorI10aiVector2tIfESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %638, i64 noundef %640) #10
  %642 = getelementptr inbounds %class.aiVector2t, ptr %641, i32 0, i32 0
  %643 = load float, ptr %642, align 4, !tbaa !102
  %644 = load ptr, ptr %53, align 8, !tbaa !5
  %645 = load i32, ptr %45, align 4, !tbaa !9
  %646 = zext i32 %645 to i64
  %647 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNKSt6vectorI10aiVector2tIfESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %644, i64 noundef %646) #10
  %648 = getelementptr inbounds %class.aiVector2t, ptr %647, i32 0, i32 1
  %649 = load float, ptr %648, align 4, !tbaa !104
  invoke void @_ZN10aiVector3tIfEC2Efff(ptr noundef nonnull align 4 dereferenceable(12) %54, float noundef %643, float noundef %649, float noundef 0.000000e+00)
          to label %650 unwind label %667

650:                                              ; preds = %637
  %651 = load ptr, ptr %15, align 8, !tbaa !5
  %652 = getelementptr inbounds %struct.aiMesh, ptr %651, i32 0, i32 8
  %653 = load i32, ptr %52, align 4, !tbaa !9
  %654 = zext i32 %653 to i64
  %655 = getelementptr inbounds [8 x ptr], ptr %652, i64 0, i64 %654
  %656 = load ptr, ptr %655, align 8, !tbaa !5
  %657 = load i32, ptr %44, align 4, !tbaa !9
  %658 = zext i32 %657 to i64
  %659 = getelementptr inbounds %class.aiVector3t, ptr %656, i64 %658
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %659, ptr align 4 %54, i64 12, i1 false), !tbaa.struct !90
  call void @llvm.lifetime.end.p0(i64 12, ptr %54) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #10
  br label %660

660:                                              ; preds = %650
  %661 = load i32, ptr %52, align 4, !tbaa !9
  %662 = add i32 %661, 1
  store i32 %662, ptr %52, align 4, !tbaa !9
  br label %628, !llvm.loop !105

663:                                              ; preds = %633
  %664 = landingpad { ptr, i32 }
          cleanup
  %665 = extractvalue { ptr, i32 } %664, 0
  store ptr %665, ptr %27, align 8
  %666 = extractvalue { ptr, i32 } %664, 1
  store i32 %666, ptr %28, align 4
  br label %671

667:                                              ; preds = %637
  %668 = landingpad { ptr, i32 }
          cleanup
  %669 = extractvalue { ptr, i32 } %668, 0
  store ptr %669, ptr %27, align 8
  %670 = extractvalue { ptr, i32 } %668, 1
  store i32 %670, ptr %28, align 4
  call void @llvm.lifetime.end.p0(i64 12, ptr %54) #10
  br label %671

671:                                              ; preds = %667, %663
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #10
  br label %711

672:                                              ; preds = %632
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #10
  store i32 0, ptr %55, align 4, !tbaa !9
  br label %673

673:                                              ; preds = %696, %672
  %674 = load i32, ptr %55, align 4, !tbaa !9
  %675 = load i32, ptr %41, align 4, !tbaa !9
  %676 = icmp ult i32 %674, %675
  br i1 %676, label %678, label %677

677:                                              ; preds = %673
  store i32 24, ptr %39, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #10
  br label %703

678:                                              ; preds = %673
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #10
  %679 = load ptr, ptr %9, align 8, !tbaa !5
  %680 = load i32, ptr %55, align 4, !tbaa !9
  %681 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX12MeshGeometry15GetVertexColorsEj(ptr noundef nonnull align 8 dereferenceable(1000) %679, i32 noundef %680)
          to label %682 unwind label %699

682:                                              ; preds = %678
  store ptr %681, ptr %56, align 8, !tbaa !5
  %683 = load ptr, ptr %56, align 8, !tbaa !5
  %684 = load i32, ptr %45, align 4, !tbaa !9
  %685 = zext i32 %684 to i64
  %686 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZNKSt6vectorI9aiColor4tIfESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %683, i64 noundef %685) #10
  %687 = load ptr, ptr %15, align 8, !tbaa !5
  %688 = getelementptr inbounds %struct.aiMesh, ptr %687, i32 0, i32 7
  %689 = load i32, ptr %55, align 4, !tbaa !9
  %690 = zext i32 %689 to i64
  %691 = getelementptr inbounds [8 x ptr], ptr %688, i64 0, i64 %690
  %692 = load ptr, ptr %691, align 8, !tbaa !5
  %693 = load i32, ptr %44, align 4, !tbaa !9
  %694 = zext i32 %693 to i64
  %695 = getelementptr inbounds %class.aiColor4t, ptr %692, i64 %694
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %695, ptr align 4 %686, i64 16, i1 false), !tbaa.struct !106
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #10
  br label %696

696:                                              ; preds = %682
  %697 = load i32, ptr %55, align 4, !tbaa !9
  %698 = add i32 %697, 1
  store i32 %698, ptr %55, align 4, !tbaa !9
  br label %673, !llvm.loop !107

699:                                              ; preds = %678
  %700 = landingpad { ptr, i32 }
          cleanup
  %701 = extractvalue { ptr, i32 } %700, 0
  store ptr %701, ptr %27, align 8
  %702 = extractvalue { ptr, i32 } %700, 1
  store i32 %702, ptr %28, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #10
  br label %711

703:                                              ; preds = %677
  br label %704

704:                                              ; preds = %703
  %705 = load i32, ptr %51, align 4, !tbaa !9
  %706 = add i32 %705, 1
  store i32 %706, ptr %51, align 4, !tbaa !9
  %707 = load i32, ptr %44, align 4, !tbaa !9
  %708 = add i32 %707, 1
  store i32 %708, ptr %44, align 4, !tbaa !9
  %709 = load i32, ptr %45, align 4, !tbaa !9
  %710 = add i32 %709, 1
  store i32 %710, ptr %45, align 4, !tbaa !9
  br label %548, !llvm.loop !108

711:                                              ; preds = %699, %671, %571
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #10
  br label %719

712:                                              ; preds = %552
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #10
  store i32 0, ptr %39, align 4
  br label %713

713:                                              ; preds = %712, %502
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #10
  %714 = load i32, ptr %39, align 4
  switch i32 %714, label %1059 [
    i32 0, label %715
    i32 16, label %716
  ]

715:                                              ; preds = %713
  br label %716

716:                                              ; preds = %715, %713
  %717 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %47) #10
  %718 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKjSt6vectorIjSaIjEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %22) #10
  br label %492, !llvm.loop !109

719:                                              ; preds = %711, %523
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #10
  br label %1045

720:                                              ; preds = %494
  %721 = load ptr, ptr %15, align 8, !tbaa !5
  %722 = load ptr, ptr %10, align 8, !tbaa !5
  %723 = load ptr, ptr %9, align 8, !tbaa !5
  %724 = load i32, ptr %12, align 4, !tbaa !9
  invoke void @_ZN6Assimp3FBX12FBXConverter22ConvertMaterialForMeshEP6aiMeshRKNS0_5ModelERKNS0_12MeshGeometryEi(ptr noundef nonnull align 8 dereferenceable(489) %89, ptr noundef %721, ptr noundef nonnull align 8 dereferenceable(208) %722, ptr noundef nonnull align 8 dereferenceable(1000) %723, i32 noundef %724)
          to label %725 unwind label %735

725:                                              ; preds = %720
  %726 = load i8, ptr %19, align 1, !tbaa !76, !range !74, !noundef !75
  %727 = trunc i8 %726 to i1
  br i1 %727, label %728, label %739

728:                                              ; preds = %725
  %729 = load ptr, ptr %15, align 8, !tbaa !5
  %730 = load ptr, ptr %9, align 8, !tbaa !5
  %731 = load ptr, ptr %11, align 8, !tbaa !5
  %732 = load ptr, ptr %13, align 8, !tbaa !5
  %733 = load i32, ptr %12, align 4, !tbaa !9
  invoke void @_ZN6Assimp3FBX12FBXConverter14ConvertWeightsEP6aiMeshRKNS0_12MeshGeometryERK12aiMatrix4x4tIfEP6aiNodejPSt6vectorIjSaIjEE(ptr noundef nonnull align 8 dereferenceable(489) %89, ptr noundef %729, ptr noundef nonnull align 8 dereferenceable(1000) %730, ptr noundef nonnull align 4 dereferenceable(64) %731, ptr noundef %732, i32 noundef %733, ptr noundef %25)
          to label %734 unwind label %735

734:                                              ; preds = %728
  br label %739

735:                                              ; preds = %728, %720
  %736 = landingpad { ptr, i32 }
          cleanup
  %737 = extractvalue { ptr, i32 } %736, 0
  store ptr %737, ptr %27, align 8
  %738 = extractvalue { ptr, i32 } %736, 1
  store i32 %738, ptr %28, align 4
  br label %1045

739:                                              ; preds = %734, %725
  call void @llvm.lifetime.start.p0(i64 24, ptr %57) #10
  call void @_ZNSt6vectorIP10aiAnimMeshSaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %57) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #10
  %740 = load ptr, ptr %9, align 8, !tbaa !5
  %741 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZNK6Assimp3FBX8Geometry14GetBlendShapesEv(ptr noundef nonnull align 8 dereferenceable(120) %740)
          to label %742 unwind label %754

742:                                              ; preds = %739
  store ptr %741, ptr %58, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #10
  %743 = load ptr, ptr %58, align 8, !tbaa !5
  %744 = call ptr @_ZNKSt13unordered_setIPKN6Assimp3FBX10BlendShapeESt4hashIS4_ESt8equal_toIS4_ESaIS4_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(56) %743) #10
  %745 = getelementptr inbounds %"struct.std::__detail::_Node_const_iterator", ptr %59, i32 0, i32 0
  %746 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %745, i32 0, i32 0
  store ptr %744, ptr %746, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #10
  %747 = load ptr, ptr %58, align 8, !tbaa !5
  %748 = call ptr @_ZNKSt13unordered_setIPKN6Assimp3FBX10BlendShapeESt4hashIS4_ESt8equal_toIS4_ESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %747) #10
  %749 = getelementptr inbounds %"struct.std::__detail::_Node_const_iterator", ptr %60, i32 0, i32 0
  %750 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %749, i32 0, i32 0
  store ptr %748, ptr %750, align 8
  br label %751

751:                                              ; preds = %990, %742
  %752 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseIPKN6Assimp3FBX10BlendShapeELb0EEES8_(ptr noundef nonnull align 8 dereferenceable(8) %59, ptr noundef nonnull align 8 dereferenceable(8) %60) #10
  br i1 %752, label %758, label %753

753:                                              ; preds = %751
  store i32 27, ptr %39, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #10
  br label %993

754:                                              ; preds = %739
  %755 = landingpad { ptr, i32 }
          cleanup
  %756 = extractvalue { ptr, i32 } %755, 0
  store ptr %756, ptr %27, align 8
  %757 = extractvalue { ptr, i32 } %755, 1
  store i32 %757, ptr %28, align 4
  br label %992

758:                                              ; preds = %751
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #10
  %759 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8__detail20_Node_const_iteratorIPKN6Assimp3FBX10BlendShapeELb1ELb0EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %59) #10
  %760 = load ptr, ptr %759, align 8, !tbaa !5
  store ptr %760, ptr %61, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #10
  %761 = load ptr, ptr %61, align 8, !tbaa !5
  %762 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZNK6Assimp3FBX10BlendShape18BlendShapeChannelsEv(ptr noundef nonnull align 8 dereferenceable(128) %761)
          to label %763 unwind label %775

763:                                              ; preds = %758
  store ptr %762, ptr %62, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #10
  %764 = load ptr, ptr %62, align 8, !tbaa !5
  %765 = call ptr @_ZNKSt13unordered_setIPKN6Assimp3FBX17BlendShapeChannelESt4hashIS4_ESt8equal_toIS4_ESaIS4_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(56) %764) #10
  %766 = getelementptr inbounds %"struct.std::__detail::_Node_const_iterator.262", ptr %63, i32 0, i32 0
  %767 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base.263", ptr %766, i32 0, i32 0
  store ptr %765, ptr %767, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #10
  %768 = load ptr, ptr %62, align 8, !tbaa !5
  %769 = call ptr @_ZNKSt13unordered_setIPKN6Assimp3FBX17BlendShapeChannelESt4hashIS4_ESt8equal_toIS4_ESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %768) #10
  %770 = getelementptr inbounds %"struct.std::__detail::_Node_const_iterator.262", ptr %64, i32 0, i32 0
  %771 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base.263", ptr %770, i32 0, i32 0
  store ptr %769, ptr %771, align 8
  br label %772

772:                                              ; preds = %985, %763
  %773 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseIPKN6Assimp3FBX17BlendShapeChannelELb0EEES8_(ptr noundef nonnull align 8 dereferenceable(8) %63, ptr noundef nonnull align 8 dereferenceable(8) %64) #10
  br i1 %773, label %779, label %774

774:                                              ; preds = %772
  store i32 29, ptr %39, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #10
  br label %989

775:                                              ; preds = %758
  %776 = landingpad { ptr, i32 }
          cleanup
  %777 = extractvalue { ptr, i32 } %776, 0
  store ptr %777, ptr %27, align 8
  %778 = extractvalue { ptr, i32 } %776, 1
  store i32 %778, ptr %28, align 4
  br label %988

779:                                              ; preds = %772
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #10
  %780 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8__detail20_Node_const_iteratorIPKN6Assimp3FBX17BlendShapeChannelELb1ELb0EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %63) #10
  %781 = load ptr, ptr %780, align 8, !tbaa !5
  store ptr %781, ptr %65, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #10
  %782 = load ptr, ptr %65, align 8, !tbaa !5
  %783 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZNK6Assimp3FBX17BlendShapeChannel18GetShapeGeometriesEv(ptr noundef nonnull align 8 dereferenceable(160) %782)
          to label %784 unwind label %797

784:                                              ; preds = %779
  store ptr %783, ptr %66, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #10
  %785 = load ptr, ptr %66, align 8, !tbaa !5
  store ptr %785, ptr %67, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #10
  %786 = load ptr, ptr %67, align 8, !tbaa !5
  %787 = call ptr @_ZNKSt13unordered_setIPKN6Assimp3FBX13ShapeGeometryESt4hashIS4_ESt8equal_toIS4_ESaIS4_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(56) %786) #10
  %788 = getelementptr inbounds %"struct.std::__detail::_Node_const_iterator.289", ptr %68, i32 0, i32 0
  %789 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base.290", ptr %788, i32 0, i32 0
  store ptr %787, ptr %789, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #10
  %790 = load ptr, ptr %67, align 8, !tbaa !5
  %791 = call ptr @_ZNKSt13unordered_setIPKN6Assimp3FBX13ShapeGeometryESt4hashIS4_ESt8equal_toIS4_ESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %790) #10
  %792 = getelementptr inbounds %"struct.std::__detail::_Node_const_iterator.289", ptr %69, i32 0, i32 0
  %793 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base.290", ptr %792, i32 0, i32 0
  store ptr %791, ptr %793, align 8
  br label %794

794:                                              ; preds = %978, %784
  %795 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseIPKN6Assimp3FBX13ShapeGeometryELb0EEES8_(ptr noundef nonnull align 8 dereferenceable(8) %68, ptr noundef nonnull align 8 dereferenceable(8) %69) #10
  br i1 %795, label %801, label %796

796:                                              ; preds = %794
  store i32 31, ptr %39, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #10
  br label %984

797:                                              ; preds = %779
  %798 = landingpad { ptr, i32 }
          cleanup
  %799 = extractvalue { ptr, i32 } %798, 0
  store ptr %799, ptr %27, align 8
  %800 = extractvalue { ptr, i32 } %798, 1
  store i32 %800, ptr %28, align 4
  br label %987

801:                                              ; preds = %794
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #10
  %802 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8__detail20_Node_const_iteratorIPKN6Assimp3FBX13ShapeGeometryELb1ELb0EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %68) #10
  %803 = load ptr, ptr %802, align 8, !tbaa !5
  store ptr %803, ptr %70, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #10
  %804 = load ptr, ptr %15, align 8, !tbaa !5
  %805 = invoke noundef ptr @_ZN6Assimp16aiCreateAnimMeshEPK6aiMeshbbbbb(ptr noundef %804, i1 noundef zeroext true, i1 noundef zeroext true, i1 noundef zeroext true, i1 noundef zeroext true, i1 noundef zeroext true)
          to label %806 unwind label %829

806:                                              ; preds = %801
  store ptr %805, ptr %71, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #10
  %807 = load ptr, ptr %70, align 8, !tbaa !5
  %808 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX13ShapeGeometry11GetVerticesEv(ptr noundef nonnull align 8 dereferenceable(192) %807)
          to label %809 unwind label %833

809:                                              ; preds = %806
  store ptr %808, ptr %72, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #10
  %810 = load ptr, ptr %70, align 8, !tbaa !5
  %811 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX13ShapeGeometry10GetNormalsEv(ptr noundef nonnull align 8 dereferenceable(192) %810)
          to label %812 unwind label %837

812:                                              ; preds = %809
  store ptr %811, ptr %73, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #10
  %813 = load ptr, ptr %70, align 8, !tbaa !5
  %814 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX13ShapeGeometry10GetIndicesEv(ptr noundef nonnull align 8 dereferenceable(192) %813)
          to label %815 unwind label %841

815:                                              ; preds = %812
  store ptr %814, ptr %74, align 8, !tbaa !5
  %816 = load ptr, ptr %71, align 8, !tbaa !5
  %817 = getelementptr inbounds %struct.aiAnimMesh, ptr %816, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 32, ptr %75) #10
  %818 = load ptr, ptr %70, align 8, !tbaa !5
  %819 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK6Assimp3FBX6Object4NameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(56) %818)
          to label %820 unwind label %845

820:                                              ; preds = %815
  invoke void @_ZN6Assimp3FBX12FBXConverter15FixAnimMeshNameERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %75, ptr noundef nonnull align 8 dereferenceable(489) %89, ptr noundef nonnull align 8 dereferenceable(32) %819)
          to label %821 unwind label %845

821:                                              ; preds = %820
  invoke void @_ZN8aiString3SetERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 4 dereferenceable(1028) %817, ptr noundef nonnull align 8 dereferenceable(32) %75)
          to label %822 unwind label %849

822:                                              ; preds = %821
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %75) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %75) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #10
  store i64 0, ptr %76, align 8, !tbaa !110
  br label %823

823:                                              ; preds = %956, %822
  %824 = load i64, ptr %76, align 8, !tbaa !110
  %825 = load ptr, ptr %74, align 8, !tbaa !5
  %826 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %825) #10
  %827 = icmp ult i64 %824, %826
  br i1 %827, label %854, label %828

828:                                              ; preds = %823
  store i32 33, ptr %39, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #10
  br label %963

829:                                              ; preds = %801
  %830 = landingpad { ptr, i32 }
          cleanup
  %831 = extractvalue { ptr, i32 } %830, 0
  store ptr %831, ptr %27, align 8
  %832 = extractvalue { ptr, i32 } %830, 1
  store i32 %832, ptr %28, align 4
  br label %983

833:                                              ; preds = %806
  %834 = landingpad { ptr, i32 }
          cleanup
  %835 = extractvalue { ptr, i32 } %834, 0
  store ptr %835, ptr %27, align 8
  %836 = extractvalue { ptr, i32 } %834, 1
  store i32 %836, ptr %28, align 4
  br label %982

837:                                              ; preds = %809
  %838 = landingpad { ptr, i32 }
          cleanup
  %839 = extractvalue { ptr, i32 } %838, 0
  store ptr %839, ptr %27, align 8
  %840 = extractvalue { ptr, i32 } %838, 1
  store i32 %840, ptr %28, align 4
  br label %981

841:                                              ; preds = %973, %967, %812
  %842 = landingpad { ptr, i32 }
          cleanup
  %843 = extractvalue { ptr, i32 } %842, 0
  store ptr %843, ptr %27, align 8
  %844 = extractvalue { ptr, i32 } %842, 1
  store i32 %844, ptr %28, align 4
  br label %980

845:                                              ; preds = %820, %815
  %846 = landingpad { ptr, i32 }
          cleanup
  %847 = extractvalue { ptr, i32 } %846, 0
  store ptr %847, ptr %27, align 8
  %848 = extractvalue { ptr, i32 } %846, 1
  store i32 %848, ptr %28, align 4
  br label %853

849:                                              ; preds = %821
  %850 = landingpad { ptr, i32 }
          cleanup
  %851 = extractvalue { ptr, i32 } %850, 0
  store ptr %851, ptr %27, align 8
  %852 = extractvalue { ptr, i32 } %850, 1
  store i32 %852, ptr %28, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %75) #10
  br label %853

853:                                              ; preds = %849, %845
  call void @llvm.lifetime.end.p0(i64 32, ptr %75) #10
  br label %980

854:                                              ; preds = %823
  call void @llvm.lifetime.start.p0(i64 4, ptr %77) #10
  %855 = load ptr, ptr %74, align 8, !tbaa !5
  %856 = load i64, ptr %76, align 8, !tbaa !110
  %857 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIjSaIjEE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %855, i64 noundef %856)
          to label %858 unwind label %877

858:                                              ; preds = %854
  %859 = load i32, ptr %857, align 4, !tbaa !9
  store i32 %859, ptr %77, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 12, ptr %78) #10
  %860 = load ptr, ptr %72, align 8, !tbaa !5
  %861 = load i64, ptr %76, align 8, !tbaa !110
  %862 = invoke noundef nonnull align 4 dereferenceable(12) ptr @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %860, i64 noundef %861)
          to label %863 unwind label %881

863:                                              ; preds = %858
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %78, ptr align 4 %862, i64 12, i1 false), !tbaa.struct !90
  call void @llvm.lifetime.start.p0(i64 12, ptr %79) #10
  %864 = load ptr, ptr %73, align 8, !tbaa !5
  %865 = load i64, ptr %76, align 8, !tbaa !110
  %866 = invoke noundef nonnull align 4 dereferenceable(12) ptr @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %864, i64 noundef %865)
          to label %867 unwind label %885

867:                                              ; preds = %863
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %79, ptr align 4 %866, i64 12, i1 false), !tbaa.struct !90
  call void @llvm.lifetime.start.p0(i64 4, ptr %80) #10
  store i32 0, ptr %80, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %81) #10
  %868 = load ptr, ptr %9, align 8, !tbaa !5
  %869 = load i32, ptr %77, align 4, !tbaa !9
  %870 = invoke noundef ptr @_ZNK6Assimp3FBX12MeshGeometry19ToOutputVertexIndexEjRj(ptr noundef nonnull align 8 dereferenceable(1000) %868, i32 noundef %869, ptr noundef nonnull align 4 dereferenceable(4) %80)
          to label %871 unwind label %889

871:                                              ; preds = %867
  store ptr %870, ptr %81, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %82) #10
  store i32 0, ptr %82, align 4, !tbaa !9
  br label %872

872:                                              ; preds = %951, %871
  %873 = load i32, ptr %82, align 4, !tbaa !9
  %874 = load i32, ptr %80, align 4, !tbaa !9
  %875 = icmp ult i32 %873, %874
  br i1 %875, label %893, label %876

876:                                              ; preds = %872
  store i32 36, ptr %39, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #10
  br label %955

877:                                              ; preds = %854
  %878 = landingpad { ptr, i32 }
          cleanup
  %879 = extractvalue { ptr, i32 } %878, 0
  store ptr %879, ptr %27, align 8
  %880 = extractvalue { ptr, i32 } %878, 1
  store i32 %880, ptr %28, align 4
  br label %962

881:                                              ; preds = %858
  %882 = landingpad { ptr, i32 }
          cleanup
  %883 = extractvalue { ptr, i32 } %882, 0
  store ptr %883, ptr %27, align 8
  %884 = extractvalue { ptr, i32 } %882, 1
  store i32 %884, ptr %28, align 4
  br label %961

885:                                              ; preds = %863
  %886 = landingpad { ptr, i32 }
          cleanup
  %887 = extractvalue { ptr, i32 } %886, 0
  store ptr %887, ptr %27, align 8
  %888 = extractvalue { ptr, i32 } %886, 1
  store i32 %888, ptr %28, align 4
  br label %960

889:                                              ; preds = %867
  %890 = landingpad { ptr, i32 }
          cleanup
  %891 = extractvalue { ptr, i32 } %890, 0
  store ptr %891, ptr %27, align 8
  %892 = extractvalue { ptr, i32 } %890, 1
  store i32 %892, ptr %28, align 4
  br label %959

893:                                              ; preds = %872
  call void @llvm.lifetime.start.p0(i64 4, ptr %83) #10
  %894 = load ptr, ptr %81, align 8, !tbaa !5
  %895 = load i32, ptr %82, align 4, !tbaa !9
  %896 = zext i32 %895 to i64
  %897 = getelementptr inbounds i32, ptr %894, i64 %896
  %898 = load i32, ptr %897, align 4, !tbaa !9
  store i32 %898, ptr %83, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %84) #10
  %899 = invoke ptr @_ZNSt3mapIjjSt4lessIjESaISt4pairIKjjEEE4findERS3_(ptr noundef nonnull align 8 dereferenceable(48) %26, ptr noundef nonnull align 4 dereferenceable(4) %83)
          to label %900 unwind label %906

900:                                              ; preds = %893
  %901 = getelementptr inbounds %"struct.std::_Rb_tree_iterator.306", ptr %84, i32 0, i32 0
  store ptr %899, ptr %901, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %85) #10
  %902 = call ptr @_ZNSt3mapIjjSt4lessIjESaISt4pairIKjjEEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %26) #10
  %903 = getelementptr inbounds %"struct.std::_Rb_tree_iterator.306", ptr %85, i32 0, i32 0
  store ptr %902, ptr %903, align 8
  %904 = call noundef zeroext i1 @_ZSteqRKSt17_Rb_tree_iteratorISt4pairIKjjEES5_(ptr noundef nonnull align 8 dereferenceable(8) %84, ptr noundef nonnull align 8 dereferenceable(8) %85) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #10
  br i1 %904, label %905, label %910

905:                                              ; preds = %900
  store i32 38, ptr %39, align 4
  br label %948

906:                                              ; preds = %893
  %907 = landingpad { ptr, i32 }
          cleanup
  %908 = extractvalue { ptr, i32 } %907, 0
  store ptr %908, ptr %27, align 8
  %909 = extractvalue { ptr, i32 } %907, 1
  store i32 %909, ptr %28, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #10
  br label %954

910:                                              ; preds = %900
  call void @llvm.lifetime.start.p0(i64 4, ptr %86) #10
  %911 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt3mapIjjSt4lessIjESaISt4pairIKjjEEEixERS3_(ptr noundef nonnull align 8 dereferenceable(48) %26, ptr noundef nonnull align 4 dereferenceable(4) %83)
          to label %912 unwind label %943

912:                                              ; preds = %910
  %913 = load i32, ptr %911, align 4, !tbaa !9
  store i32 %913, ptr %86, align 4, !tbaa !9
  %914 = load ptr, ptr %71, align 8, !tbaa !5
  %915 = getelementptr inbounds %struct.aiAnimMesh, ptr %914, i32 0, i32 1
  %916 = load ptr, ptr %915, align 8, !tbaa !111
  %917 = load i32, ptr %86, align 4, !tbaa !9
  %918 = zext i32 %917 to i64
  %919 = getelementptr inbounds %class.aiVector3t, ptr %916, i64 %918
  %920 = invoke noundef nonnull align 4 dereferenceable(12) ptr @_ZN10aiVector3tIfEpLERKS0_(ptr noundef nonnull align 4 dereferenceable(12) %919, ptr noundef nonnull align 4 dereferenceable(12) %78)
          to label %921 unwind label %943

921:                                              ; preds = %912
  %922 = load ptr, ptr %71, align 8, !tbaa !5
  %923 = getelementptr inbounds %struct.aiAnimMesh, ptr %922, i32 0, i32 2
  %924 = load ptr, ptr %923, align 8, !tbaa !113
  %925 = icmp ne ptr %924, null
  br i1 %925, label %926, label %947

926:                                              ; preds = %921
  %927 = load ptr, ptr %71, align 8, !tbaa !5
  %928 = getelementptr inbounds %struct.aiAnimMesh, ptr %927, i32 0, i32 2
  %929 = load ptr, ptr %928, align 8, !tbaa !113
  %930 = load i32, ptr %86, align 4, !tbaa !9
  %931 = zext i32 %930 to i64
  %932 = getelementptr inbounds %class.aiVector3t, ptr %929, i64 %931
  %933 = invoke noundef nonnull align 4 dereferenceable(12) ptr @_ZN10aiVector3tIfEpLERKS0_(ptr noundef nonnull align 4 dereferenceable(12) %932, ptr noundef nonnull align 4 dereferenceable(12) %79)
          to label %934 unwind label %943

934:                                              ; preds = %926
  %935 = load ptr, ptr %71, align 8, !tbaa !5
  %936 = getelementptr inbounds %struct.aiAnimMesh, ptr %935, i32 0, i32 2
  %937 = load ptr, ptr %936, align 8, !tbaa !113
  %938 = load i32, ptr %86, align 4, !tbaa !9
  %939 = zext i32 %938 to i64
  %940 = getelementptr inbounds %class.aiVector3t, ptr %937, i64 %939
  %941 = invoke noundef nonnull align 4 dereferenceable(12) ptr @_ZN10aiVector3tIfE13NormalizeSafeEv(ptr noundef nonnull align 4 dereferenceable(12) %940)
          to label %942 unwind label %943

942:                                              ; preds = %934
  br label %947

943:                                              ; preds = %934, %926, %912, %910
  %944 = landingpad { ptr, i32 }
          cleanup
  %945 = extractvalue { ptr, i32 } %944, 0
  store ptr %945, ptr %27, align 8
  %946 = extractvalue { ptr, i32 } %944, 1
  store i32 %946, ptr %28, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %86) #10
  br label %954

947:                                              ; preds = %942, %921
  call void @llvm.lifetime.end.p0(i64 4, ptr %86) #10
  store i32 0, ptr %39, align 4
  br label %948

948:                                              ; preds = %947, %905
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #10
  %949 = load i32, ptr %39, align 4
  switch i32 %949, label %1059 [
    i32 0, label %950
    i32 38, label %951
  ]

950:                                              ; preds = %948
  br label %951

951:                                              ; preds = %950, %948
  %952 = load i32, ptr %82, align 4, !tbaa !9
  %953 = add i32 %952, 1
  store i32 %953, ptr %82, align 4, !tbaa !9
  br label %872, !llvm.loop !114

954:                                              ; preds = %943, %906
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #10
  br label %959

955:                                              ; preds = %876
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #10
  call void @llvm.lifetime.end.p0(i64 12, ptr %79) #10
  call void @llvm.lifetime.end.p0(i64 12, ptr %78) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #10
  br label %956

956:                                              ; preds = %955
  %957 = load i64, ptr %76, align 8, !tbaa !110
  %958 = add i64 %957, 1
  store i64 %958, ptr %76, align 8, !tbaa !110
  br label %823, !llvm.loop !115

959:                                              ; preds = %954, %889
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #10
  br label %960

960:                                              ; preds = %959, %885
  call void @llvm.lifetime.end.p0(i64 12, ptr %79) #10
  br label %961

961:                                              ; preds = %960, %881
  call void @llvm.lifetime.end.p0(i64 12, ptr %78) #10
  br label %962

962:                                              ; preds = %961, %877
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #10
  br label %980

963:                                              ; preds = %828
  %964 = load ptr, ptr %66, align 8, !tbaa !5
  %965 = call noundef i64 @_ZNKSt13unordered_setIPKN6Assimp3FBX13ShapeGeometryESt4hashIS4_ESt8equal_toIS4_ESaIS4_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(56) %964) #10
  %966 = icmp ugt i64 %965, 1
  br i1 %966, label %967, label %972

967:                                              ; preds = %963
  %968 = load ptr, ptr %65, align 8, !tbaa !5
  %969 = invoke noundef float @_ZNK6Assimp3FBX17BlendShapeChannel13DeformPercentEv(ptr noundef nonnull align 8 dereferenceable(160) %968)
          to label %970 unwind label %841

970:                                              ; preds = %967
  %971 = fdiv float %969, 1.000000e+02
  br label %973

972:                                              ; preds = %963
  br label %973

973:                                              ; preds = %972, %970
  %974 = phi float [ %971, %970 ], [ 1.000000e+00, %972 ]
  %975 = load ptr, ptr %71, align 8, !tbaa !5
  %976 = getelementptr inbounds %struct.aiAnimMesh, ptr %975, i32 0, i32 8
  store float %974, ptr %976, align 4, !tbaa !116
  invoke void @_ZNSt6vectorIP10aiAnimMeshSaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %57, ptr noundef nonnull align 8 dereferenceable(8) %71)
          to label %977 unwind label %841

977:                                              ; preds = %973
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #10
  br label %978

978:                                              ; preds = %977
  %979 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8__detail20_Node_const_iteratorIPKN6Assimp3FBX13ShapeGeometryELb1ELb0EEppEv(ptr noundef nonnull align 8 dereferenceable(8) %68) #10
  br label %794

980:                                              ; preds = %962, %853, %841
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #10
  br label %981

981:                                              ; preds = %980, %837
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #10
  br label %982

982:                                              ; preds = %981, %833
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #10
  br label %983

983:                                              ; preds = %982, %829
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #10
  br label %987

984:                                              ; preds = %796
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #10
  br label %985

985:                                              ; preds = %984
  %986 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8__detail20_Node_const_iteratorIPKN6Assimp3FBX17BlendShapeChannelELb1ELb0EEppEv(ptr noundef nonnull align 8 dereferenceable(8) %63) #10
  br label %772

987:                                              ; preds = %983, %797
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #10
  br label %988

988:                                              ; preds = %987, %775
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #10
  br label %992

989:                                              ; preds = %774
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #10
  br label %990

990:                                              ; preds = %989
  %991 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8__detail20_Node_const_iteratorIPKN6Assimp3FBX10BlendShapeELb1ELb0EEppEv(ptr noundef nonnull align 8 dereferenceable(8) %59) #10
  br label %751

992:                                              ; preds = %988, %754
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #10
  br label %1044

993:                                              ; preds = %753
  call void @llvm.lifetime.start.p0(i64 8, ptr %87) #10
  %994 = call noundef i64 @_ZNKSt6vectorIP10aiAnimMeshSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %57) #10
  store i64 %994, ptr %87, align 8, !tbaa !110
  %995 = load i64, ptr %87, align 8, !tbaa !110
  %996 = icmp ugt i64 %995, 0
  br i1 %996, label %997, label %1038

997:                                              ; preds = %993
  %998 = load i64, ptr %87, align 8, !tbaa !110
  %999 = trunc i64 %998 to i32
  %1000 = load ptr, ptr %15, align 8, !tbaa !5
  %1001 = getelementptr inbounds %struct.aiMesh, ptr %1000, i32 0, i32 15
  store i32 %999, ptr %1001, align 8, !tbaa !117
  %1002 = load i64, ptr %87, align 8, !tbaa !110
  %1003 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %1002, i64 8)
  %1004 = extractvalue { i64, i1 } %1003, 1
  %1005 = extractvalue { i64, i1 } %1003, 0
  %1006 = select i1 %1004, i64 -1, i64 %1005
  %1007 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %1006) #11
          to label %1008 unwind label %1016

1008:                                             ; preds = %997
  %1009 = load ptr, ptr %15, align 8, !tbaa !5
  %1010 = getelementptr inbounds %struct.aiMesh, ptr %1009, i32 0, i32 16
  store ptr %1007, ptr %1010, align 8, !tbaa !118
  call void @llvm.lifetime.start.p0(i64 8, ptr %88) #10
  store i64 0, ptr %88, align 8, !tbaa !110
  br label %1011

1011:                                             ; preds = %1030, %1008
  %1012 = load i64, ptr %88, align 8, !tbaa !110
  %1013 = load i64, ptr %87, align 8, !tbaa !110
  %1014 = icmp ult i64 %1012, %1013
  br i1 %1014, label %1020, label %1015

1015:                                             ; preds = %1011
  store i32 39, ptr %39, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #10
  br label %1037

1016:                                             ; preds = %997
  %1017 = landingpad { ptr, i32 }
          cleanup
  %1018 = extractvalue { ptr, i32 } %1017, 0
  store ptr %1018, ptr %27, align 8
  %1019 = extractvalue { ptr, i32 } %1017, 1
  store i32 %1019, ptr %28, align 4
  br label %1043

1020:                                             ; preds = %1011
  %1021 = load i64, ptr %88, align 8, !tbaa !110
  %1022 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP10aiAnimMeshSaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %57, i64 noundef %1021)
          to label %1023 unwind label %1033

1023:                                             ; preds = %1020
  %1024 = load ptr, ptr %1022, align 8, !tbaa !5
  %1025 = load ptr, ptr %15, align 8, !tbaa !5
  %1026 = getelementptr inbounds %struct.aiMesh, ptr %1025, i32 0, i32 16
  %1027 = load ptr, ptr %1026, align 8, !tbaa !118
  %1028 = load i64, ptr %88, align 8, !tbaa !110
  %1029 = getelementptr inbounds ptr, ptr %1027, i64 %1028
  store ptr %1024, ptr %1029, align 8, !tbaa !5
  br label %1030

1030:                                             ; preds = %1023
  %1031 = load i64, ptr %88, align 8, !tbaa !110
  %1032 = add i64 %1031, 1
  store i64 %1032, ptr %88, align 8, !tbaa !110
  br label %1011, !llvm.loop !119

1033:                                             ; preds = %1020
  %1034 = landingpad { ptr, i32 }
          cleanup
  %1035 = extractvalue { ptr, i32 } %1034, 0
  store ptr %1035, ptr %27, align 8
  %1036 = extractvalue { ptr, i32 } %1034, 1
  store i32 %1036, ptr %28, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #10
  br label %1043

1037:                                             ; preds = %1015
  br label %1038

1038:                                             ; preds = %1037, %993
  %1039 = getelementptr inbounds %"class.Assimp::FBX::FBXConverter", ptr %89, i32 0, i32 2
  %1040 = call noundef i64 @_ZNKSt6vectorIP6aiMeshSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1039) #10
  %1041 = sub i64 %1040, 1
  %1042 = trunc i64 %1041 to i32
  store i32 1, ptr %39, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #10
  call void @_ZNSt6vectorIP10aiAnimMeshSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %57) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %57) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #10
  call void @_ZNSt6vectorI10aiVector3tIfESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %33) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %33) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #10
  call void @_ZNSt3mapIjjSt4lessIjESaISt4pairIKjjEEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %26) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr %26) #10
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %25) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %25) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #10
  ret i32 %1042

1043:                                             ; preds = %1033, %1016
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #10
  br label %1044

1044:                                             ; preds = %1043, %992
  call void @_ZNSt6vectorIP10aiAnimMeshSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %57) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %57) #10
  br label %1045

1045:                                             ; preds = %1044, %735, %719
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #10
  br label %1046

1046:                                             ; preds = %1045, %447
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #10
  br label %1047

1047:                                             ; preds = %1046, %394
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #10
  br label %1048

1048:                                             ; preds = %1047, %315, %294
  call void @_ZNSt6vectorI10aiVector3tIfESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %33) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %33) #10
  br label %1049

1049:                                             ; preds = %1048, %290
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #10
  br label %1050

1050:                                             ; preds = %1049, %286
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #10
  br label %1051

1051:                                             ; preds = %1050, %253
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #10
  br label %1052

1052:                                             ; preds = %1051, %249
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #10
  br label %1053

1053:                                             ; preds = %1052, %163
  call void @_ZNSt3mapIjjSt4lessIjESaISt4pairIKjjEEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %26) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr %26) #10
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %25) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %25) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #10
  br label %1054

1054:                                             ; preds = %1053
  %1055 = load ptr, ptr %27, align 8
  %1056 = load i32, ptr %28, align 4
  %1057 = insertvalue { ptr, i32 } poison, ptr %1055, 0
  %1058 = insertvalue { ptr, i32 } %1057, i32 %1056, 1
  resume { ptr, i32 } %1058

1059:                                             ; preds = %948, %713
  unreachable
}

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIjSaIjEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #7 align 2

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

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

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

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

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

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

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

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

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

!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, !6, i64 480}
!12 = !{!"_ZTSN6Assimp3FBX12FBXConverterE", !10, i64 0, !13, i64 8, !17, i64 32, !21, i64 56, !25, i64 80, !29, i64 104, !33, i64 128, !37, i64 152, !46, i64 200, !51, i64 248, !56, i64 296, !56, i64 344, !61, i64 392, !66, i64 440, !67, i64 448, !6, i64 472, !6, i64 480, !71, i64 488}
!13 = !{!"_ZTSSt6vectorIP6aiMeshSaIS1_EE", !14, i64 0}
!14 = !{!"_ZTSSt12_Vector_baseIP6aiMeshSaIS1_EE", !15, i64 0}
!15 = !{!"_ZTSNSt12_Vector_baseIP6aiMeshSaIS1_EE12_Vector_implE", !16, i64 0}
!16 = !{!"_ZTSNSt12_Vector_baseIP6aiMeshSaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!17 = !{!"_ZTSSt6vectorIP10aiMaterialSaIS1_EE", !18, i64 0}
!18 = !{!"_ZTSSt12_Vector_baseIP10aiMaterialSaIS1_EE", !19, i64 0}
!19 = !{!"_ZTSNSt12_Vector_baseIP10aiMaterialSaIS1_EE12_Vector_implE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseIP10aiMaterialSaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!21 = !{!"_ZTSSt6vectorIP11aiAnimationSaIS1_EE", !22, i64 0}
!22 = !{!"_ZTSSt12_Vector_baseIP11aiAnimationSaIS1_EE", !23, i64 0}
!23 = !{!"_ZTSNSt12_Vector_baseIP11aiAnimationSaIS1_EE12_Vector_implE", !24, i64 0}
!24 = !{!"_ZTSNSt12_Vector_baseIP11aiAnimationSaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!25 = !{!"_ZTSSt6vectorIP7aiLightSaIS1_EE", !26, i64 0}
!26 = !{!"_ZTSSt12_Vector_baseIP7aiLightSaIS1_EE", !27, i64 0}
!27 = !{!"_ZTSNSt12_Vector_baseIP7aiLightSaIS1_EE12_Vector_implE", !28, i64 0}
!28 = !{!"_ZTSNSt12_Vector_baseIP7aiLightSaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!29 = !{!"_ZTSSt6vectorIP8aiCameraSaIS1_EE", !30, i64 0}
!30 = !{!"_ZTSSt12_Vector_baseIP8aiCameraSaIS1_EE", !31, i64 0}
!31 = !{!"_ZTSNSt12_Vector_baseIP8aiCameraSaIS1_EE12_Vector_implE", !32, i64 0}
!32 = !{!"_ZTSNSt12_Vector_baseIP8aiCameraSaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!33 = !{!"_ZTSSt6vectorIP9aiTextureSaIS1_EE", !34, i64 0}
!34 = !{!"_ZTSSt12_Vector_baseIP9aiTextureSaIS1_EE", !35, i64 0}
!35 = !{!"_ZTSNSt12_Vector_baseIP9aiTextureSaIS1_EE12_Vector_implE", !36, i64 0}
!36 = !{!"_ZTSNSt12_Vector_baseIP9aiTextureSaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!37 = !{!"_ZTSSt3mapIPKN6Assimp3FBX8MaterialEjSt4lessIS4_ESaISt4pairIKS4_jEEE", !38, i64 0}
!38 = !{!"_ZTSSt8_Rb_treeIPKN6Assimp3FBX8MaterialESt4pairIKS4_jESt10_Select1stIS7_ESt4lessIS4_ESaIS7_EE", !39, i64 0}
!39 = !{!"_ZTSNSt8_Rb_treeIPKN6Assimp3FBX8MaterialESt4pairIKS4_jESt10_Select1stIS7_ESt4lessIS4_ESaIS7_EE13_Rb_tree_implISB_Lb1EEE", !40, i64 0, !42, i64 8}
!40 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIPKN6Assimp3FBX8MaterialEEE", !41, i64 0}
!41 = !{!"_ZTSSt4lessIPKN6Assimp3FBX8MaterialEE"}
!42 = !{!"_ZTSSt15_Rb_tree_header", !43, i64 0, !45, i64 32}
!43 = !{!"_ZTSSt18_Rb_tree_node_base", !44, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!44 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!45 = !{!"long", !7, i64 0}
!46 = !{!"_ZTSSt3mapIPKN6Assimp3FBX5VideoEjSt4lessIS4_ESaISt4pairIKS4_jEEE", !47, i64 0}
!47 = !{!"_ZTSSt8_Rb_treeIPKN6Assimp3FBX5VideoESt4pairIKS4_jESt10_Select1stIS7_ESt4lessIS4_ESaIS7_EE", !48, i64 0}
!48 = !{!"_ZTSNSt8_Rb_treeIPKN6Assimp3FBX5VideoESt4pairIKS4_jESt10_Select1stIS7_ESt4lessIS4_ESaIS7_EE13_Rb_tree_implISB_Lb1EEE", !49, i64 0, !42, i64 8}
!49 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIPKN6Assimp3FBX5VideoEEE", !50, i64 0}
!50 = !{!"_ZTSSt4lessIPKN6Assimp3FBX5VideoEE"}
!51 = !{!"_ZTSSt3mapIPKN6Assimp3FBX8GeometryESt6vectorIjSaIjEESt4lessIS4_ESaISt4pairIKS4_S7_EEE", !52, i64 0}
!52 = !{!"_ZTSSt8_Rb_treeIPKN6Assimp3FBX8GeometryESt4pairIKS4_St6vectorIjSaIjEEESt10_Select1stISA_ESt4lessIS4_ESaISA_EE", !53, i64 0}
!53 = !{!"_ZTSNSt8_Rb_treeIPKN6Assimp3FBX8GeometryESt4pairIKS4_St6vectorIjSaIjEEESt10_Select1stISA_ESt4lessIS4_ESaISA_EE13_Rb_tree_implISE_Lb1EEE", !54, i64 0, !42, i64 8}
!54 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIPKN6Assimp3FBX8GeometryEEE", !55, i64 0}
!55 = !{!"_ZTSSt4lessIPKN6Assimp3FBX8GeometryEE"}
!56 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjSt4lessIS5_ESaISt4pairIKS5_jEEE", !57, i64 0}
!57 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_jESt10_Select1stIS8_ESt4lessIS5_ESaIS8_EE", !58, i64 0}
!58 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_jESt10_Select1stIS8_ESt4lessIS5_ESaIS8_EE13_Rb_tree_implISC_Lb1EEE", !59, i64 0, !42, i64 8}
!59 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE", !60, i64 0}
!60 = !{!"_ZTSSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE"}
!61 = !{!"_ZTSSt3mapIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP6aiBoneSt4lessIS6_ESaISt4pairIS6_S8_EEE", !62, i64 0}
!62 = !{!"_ZTSSt8_Rb_treeIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIS6_P6aiBoneESt10_Select1stISA_ESt4lessIS6_ESaISA_EE", !63, i64 0}
!63 = !{!"_ZTSNSt8_Rb_treeIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIS6_P6aiBoneESt10_Select1stISA_ESt4lessIS6_ESaISA_EE13_Rb_tree_implISE_Lb1EEE", !64, i64 0, !42, i64 8}
!64 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE", !65, i64 0}
!65 = !{!"_ZTSSt4lessIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE"}
!66 = !{!"double", !7, i64 0}
!67 = !{!"_ZTSSt6vectorIP10aiSkeletonSaIS1_EE", !68, i64 0}
!68 = !{!"_ZTSSt12_Vector_baseIP10aiSkeletonSaIS1_EE", !69, i64 0}
!69 = !{!"_ZTSNSt12_Vector_baseIP10aiSkeletonSaIS1_EE12_Vector_implE", !70, i64 0}
!70 = !{!"_ZTSNSt12_Vector_baseIP10aiSkeletonSaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!71 = !{!"bool", !7, i64 0}
!72 = !{!73, !71, i64 8}
!73 = !{!"_ZTSN6Assimp3FBX14ImportSettingsE", !71, i64 0, !71, i64 1, !71, i64 2, !71, i64 3, !71, i64 4, !71, i64 5, !71, i64 6, !71, i64 7, !71, i64 8, !71, i64 9, !71, i64 10, !71, i64 11, !71, i64 12, !71, i64 13, !71, i64 14}
!74 = !{i8 0, i8 2}
!75 = !{}
!76 = !{!71, !71, i64 0}
!77 = distinct !{!77, !78}
!78 = !{!"llvm.loop.mustprogress"}
!79 = !{!80, !10, i64 4}
!80 = !{!"_ZTS6aiMesh", !10, i64 0, !10, i64 4, !10, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !7, i64 48, !7, i64 112, !7, i64 176, !6, i64 208, !10, i64 216, !6, i64 224, !10, i64 232, !81, i64 236, !10, i64 1264, !6, i64 1272, !82, i64 1280, !83, i64 1284, !6, i64 1312}
!81 = !{!"_ZTS8aiString", !10, i64 0, !7, i64 4}
!82 = !{!"_ZTS16aiMorphingMethod", !7, i64 0}
!83 = !{!"_ZTS6aiAABB", !84, i64 0, !84, i64 12}
!84 = !{!"_ZTS10aiVector3tIfE", !85, i64 0, !85, i64 4, !85, i64 8}
!85 = !{!"float", !7, i64 0}
!86 = !{!80, !6, i64 16}
!87 = !{!80, !10, i64 8}
!88 = !{!80, !6, i64 208}
!89 = !{!80, !6, i64 24}
!90 = !{i64 0, i64 4, !91, i64 4, i64 4, !91, i64 8, i64 4, !91}
!91 = !{!85, !85, i64 0}
!92 = distinct !{!92, !78}
!93 = !{!80, !6, i64 32}
!94 = !{!80, !6, i64 40}
!95 = distinct !{!95, !78}
!96 = distinct !{!96, !78}
!97 = !{i64 0, i64 8, !5}
!98 = !{!99, !10, i64 0}
!99 = !{!"_ZTS6aiFace", !10, i64 0, !6, i64 8}
!100 = !{!99, !6, i64 8}
!101 = !{!80, !10, i64 0}
!102 = !{!103, !85, i64 0}
!103 = !{!"_ZTS10aiVector2tIfE", !85, i64 0, !85, i64 4}
!104 = !{!103, !85, i64 4}
!105 = distinct !{!105, !78}
!106 = !{i64 0, i64 4, !91, i64 4, i64 4, !91, i64 8, i64 4, !91, i64 12, i64 4, !91}
!107 = distinct !{!107, !78}
!108 = distinct !{!108, !78}
!109 = distinct !{!109, !78}
!110 = !{!45, !45, i64 0}
!111 = !{!112, !6, i64 1032}
!112 = !{!"_ZTS10aiAnimMesh", !81, i64 0, !6, i64 1032, !6, i64 1040, !6, i64 1048, !6, i64 1056, !7, i64 1064, !7, i64 1128, !10, i64 1192, !85, i64 1196}
!113 = !{!112, !6, i64 1040}
!114 = distinct !{!114, !78}
!115 = distinct !{!115, !78}
!116 = !{!112, !85, i64 1196}
!117 = !{!80, !10, i64 1264}
!118 = !{!80, !6, i64 1272}
!119 = distinct !{!119, !78}


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

%"class.std::__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.__gnu_cxx::__normal_iterator.221" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.227" = type { ptr }
%"class.std::vector.190" = type { %"struct.std::_Vector_base.191" }
%"struct.std::_Vector_base.191" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::map.300" = type { %"class.std::_Rb_tree.301" }
%"class.std::_Rb_tree.301" = type { %"struct.std::_Rb_tree<unsigned int, std::pair<const unsigned int, unsigned int>, std::_Select1st<std::pair<const unsigned int, unsigned int>>, std::less<unsigned int>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<unsigned int, std::pair<const unsigned int, unsigned int>, std::_Select1st<std::pair<const unsigned int, unsigned int>>, std::less<unsigned int>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"class.std::vector.206" = type { %"struct.std::_Vector_base.207" }
%"struct.std::_Vector_base.207" = 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.aiVector3t = type { float, float, float }
%"class.std::vector.237" = type { %"struct.std::_Vector_base.238" }
%"struct.std::_Vector_base.238" = type { %"struct.std::_Vector_base<aiAnimMesh *, std::allocator<aiAnimMesh *>>::_Vector_impl" }
%"struct.std::_Vector_base<aiAnimMesh *, std::allocator<aiAnimMesh *>>::_Vector_impl" = type { %"struct.std::_Vector_base<aiAnimMesh *, std::allocator<aiAnimMesh *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<aiAnimMesh *, std::allocator<aiAnimMesh *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.std::__detail::_Node_const_iterator" = type { %"struct.std::__detail::_Node_iterator_base" }
%"struct.std::__detail::_Node_iterator_base" = type { ptr }
%"struct.std::__detail::_Node_const_iterator.262" = type { %"struct.std::__detail::_Node_iterator_base.263" }
%"struct.std::__detail::_Node_iterator_base.263" = type { ptr }
%"struct.std::__detail::_Node_const_iterator.289" = type { %"struct.std::__detail::_Node_iterator_base.290" }
%"struct.std::__detail::_Node_iterator_base.290" = type { ptr }
%"struct.std::_Rb_tree_iterator.306" = type { ptr }
%struct.aiFace = type { i32, ptr }
%class.aiColor4t = type { float, float, float, float }

@.str.5 = external hidden unnamed_addr constant [119 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [15 x i8], align 1
@switch.table._ZN6Assimp3FBX12FBXConverter24ConvertMeshMultiMaterialERKNS0_12MeshGeometryERKNS0_5ModelERK12aiMatrix4x4tIfEiP6aiNodeSD_ = private unnamed_addr constant [3 x i32] [i32 1, i32 2, i32 4], align 4

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 1 dereferenceable(15) ptr @_ZNK6Assimp3FBX8Document8SettingsEv(ptr noundef nonnull align 8 dereferenceable(336)) local_unnamed_addr #0 align 2

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN8aiString3SetERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 4 dereferenceable(1028), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZNK6Assimp3FBX6Object4NameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(56)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #2

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 #4

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN10aiVector3tIfEC2Efff(ptr noundef nonnull align 4 dereferenceable(12), float noundef, float noundef, float noundef) unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12)) unnamed_addr #0 align 2

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

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

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

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

declare noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX12MeshGeometry11GetVerticesEv(ptr noundef nonnull align 8 dereferenceable(1000)) local_unnamed_addr #3

declare noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX12MeshGeometry18GetFaceIndexCountsEv(ptr noundef nonnull align 8 dereferenceable(1000)) local_unnamed_addr #3

declare noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX12MeshGeometry18GetMaterialIndicesEv(ptr noundef nonnull align 8 dereferenceable(1000)) local_unnamed_addr #3

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN6Assimp3FBX12FBXConverter14SetupEmptyMeshERKNS0_8GeometryEP6aiNode(ptr noundef nonnull align 8 dereferenceable(489), ptr noundef nonnull align 8 dereferenceable(120), ptr noundef) local_unnamed_addr #6 align 2

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

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

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

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

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

declare noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX12MeshGeometry10GetNormalsEv(ptr noundef nonnull align 8 dereferenceable(1000)) local_unnamed_addr #3

declare noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX12MeshGeometry11GetTangentsEv(ptr noundef nonnull align 8 dereferenceable(1000)) local_unnamed_addr #3

declare noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX12MeshGeometry12GetBinormalsEv(ptr noundef nonnull align 8 dereferenceable(1000)) local_unnamed_addr #3

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { <2 x float>, float } @_ZeoIfE10aiVector3tIT_ERKS2_S4_(ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12)) local_unnamed_addr #7

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(12) ptr @_ZNKSt6vectorI10aiVector3tIfESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorI10aiVector3tIfESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #0 align 2

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

declare noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX12MeshGeometry16GetTextureCoordsEj(ptr noundef nonnull align 8 dereferenceable(1000), i32 noundef) local_unnamed_addr #3

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

declare noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX12MeshGeometry15GetVertexColorsEj(ptr noundef nonnull align 8 dereferenceable(1000), i32 noundef) local_unnamed_addr #3

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Assimp3FBX12FBXConverter22ConvertMaterialForMeshEP6aiMeshRKNS0_5ModelERKNS0_12MeshGeometryEi(ptr noundef nonnull align 8 dereferenceable(489), ptr noundef, ptr noundef nonnull align 8 dereferenceable(208), ptr noundef nonnull align 8 dereferenceable(1000), i32 noundef) local_unnamed_addr #6 align 2

declare noundef ptr @_ZNK6Assimp3FBX8Geometry12DeformerSkinEv(ptr noundef nonnull align 8 dereferenceable(120)) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Assimp3FBX12FBXConverter14ConvertWeightsEP6aiMeshRKNS0_12MeshGeometryERK12aiMatrix4x4tIfEP6aiNodejPSt6vectorIjSaIjEE(ptr noundef nonnull align 8 dereferenceable(489), ptr noundef, ptr noundef nonnull align 8 dereferenceable(1000), ptr noundef nonnull align 4 dereferenceable(64), ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #6 align 2

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

declare noundef nonnull align 8 dereferenceable(56) ptr @_ZNK6Assimp3FBX8Geometry14GetBlendShapesEv(ptr noundef nonnull align 8 dereferenceable(120)) local_unnamed_addr #3

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(56) ptr @_ZNK6Assimp3FBX10BlendShape18BlendShapeChannelsEv(ptr noundef nonnull align 8 dereferenceable(128)) local_unnamed_addr #0 align 2

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(56) ptr @_ZNK6Assimp3FBX17BlendShapeChannel18GetShapeGeometriesEv(ptr noundef nonnull align 8 dereferenceable(160)) local_unnamed_addr #0 align 2

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

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

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

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

declare noundef ptr @_ZN6Assimp16aiCreateAnimMeshEPK6aiMeshbbbbb(ptr noundef, i1 noundef zeroext, i1 noundef zeroext, i1 noundef zeroext, i1 noundef zeroext, i1 noundef zeroext) local_unnamed_addr #3

declare noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX13ShapeGeometry11GetVerticesEv(ptr noundef nonnull align 8 dereferenceable(192)) local_unnamed_addr #3

declare noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX13ShapeGeometry10GetNormalsEv(ptr noundef nonnull align 8 dereferenceable(192)) local_unnamed_addr #3

declare noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX13ShapeGeometry10GetIndicesEv(ptr noundef nonnull align 8 dereferenceable(192)) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Assimp3FBX12FBXConverter15FixAnimMeshNameERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(489), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #6 align 2

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

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

declare noundef ptr @_ZNK6Assimp3FBX12MeshGeometry19ToOutputVertexIndexEjRj(ptr noundef nonnull align 8 dereferenceable(1000), i32 noundef, ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #3

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef float @_ZNK6Assimp3FBX17BlendShapeChannel13DeformPercentEv(ptr noundef nonnull align 8 dereferenceable(160)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIP10aiAnimMeshSaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #6 align 2

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN6Assimp3FBX12FBXConverter24ConvertMeshMultiMaterialERKNS0_12MeshGeometryERKNS0_5ModelERK12aiMatrix4x4tIfEiP6aiNodeSD_(ptr noundef nonnull align 8 dereferenceable(489) %0, ptr noundef nonnull align 8 dereferenceable(1000) %1, ptr noundef nonnull align 8 dereferenceable(208) %2, ptr noundef nonnull align 4 dereferenceable(64) %3, i32 noundef %4, ptr noundef %5, ptr nocapture noundef readnone %6) local_unnamed_addr #8 align 2 personality ptr @__gxx_personality_v0 {
  %8 = alloca %"class.__gnu_cxx::__normal_iterator.221", align 8
  %9 = alloca %"class.__gnu_cxx::__normal_iterator.227", align 8
  %10 = alloca %"class.__gnu_cxx::__normal_iterator.227", align 8
  %11 = alloca %"class.std::vector.190", align 8
  %12 = alloca %"class.std::map.300", align 8
  %13 = alloca %"class.std::vector.206", align 8
  %14 = alloca i32, align 4
  %15 = alloca %"class.__gnu_cxx::__normal_iterator.227", align 8
  %16 = alloca %"class.__gnu_cxx::__normal_iterator.227", align 8
  %17 = alloca %class.aiVector3t, align 4
  %18 = alloca %"class.std::vector.237", align 8
  %19 = alloca %"struct.std::__detail::_Node_const_iterator", align 8
  %20 = alloca %"struct.std::__detail::_Node_const_iterator", align 8
  %21 = alloca %"struct.std::__detail::_Node_const_iterator.262", align 8
  %22 = alloca %"struct.std::__detail::_Node_const_iterator.262", align 8
  %23 = alloca %"struct.std::__detail::_Node_const_iterator.289", align 8
  %24 = alloca %"struct.std::__detail::_Node_const_iterator.289", align 8
  %25 = alloca ptr, align 8
  %26 = alloca %"class.std::__cxx11::basic_string", align 8
  %27 = alloca %class.aiVector3t, align 4
  %28 = alloca %class.aiVector3t, align 4
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca %"struct.std::_Rb_tree_iterator.306", align 8
  %32 = alloca %"struct.std::_Rb_tree_iterator.306", align 8
  %33 = tail call noundef ptr @_ZN6Assimp3FBX12FBXConverter14SetupEmptyMeshERKNS0_8GeometryEP6aiNode(ptr noundef nonnull align 8 dereferenceable(489) %0, ptr noundef nonnull align 8 dereferenceable(120) %1, ptr noundef %5)
  %34 = tail call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX12MeshGeometry18GetMaterialIndicesEv(ptr noundef nonnull align 8 dereferenceable(1000) %1)
  %35 = tail call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX12MeshGeometry11GetVerticesEv(ptr noundef nonnull align 8 dereferenceable(1000) %1)
  %36 = tail call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX12MeshGeometry18GetFaceIndexCountsEv(ptr noundef nonnull align 8 dereferenceable(1000) %1)
  %37 = getelementptr inbounds i8, ptr %0, i64 480
  %38 = load ptr, ptr %37, align 8, !tbaa !5
  %39 = tail call noundef nonnull align 1 dereferenceable(15) ptr @_ZNK6Assimp3FBX8Document8SettingsEv(ptr noundef nonnull align 8 dereferenceable(336) %38)
  %40 = getelementptr inbounds i8, ptr %39, i64 8
  %41 = load i8, ptr %40, align 1, !tbaa !70, !range !72, !noundef !73
  %42 = trunc nuw i8 %41 to i1
  br i1 %42, label %43, label %46

43:                                               ; preds = %7
  %44 = tail call noundef ptr @_ZNK6Assimp3FBX8Geometry12DeformerSkinEv(ptr noundef nonnull align 8 dereferenceable(120) %1)
  %45 = icmp ne ptr %44, null
  br label %46

46:                                               ; preds = %43, %7
  %47 = phi i1 [ false, %7 ], [ %45, %43 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #9
  %48 = tail call ptr @_ZNKSt6vectorIjSaIjEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %36) #9
  store ptr %48, ptr %8, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #9
  %49 = tail call ptr @_ZNKSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %34) #9
  store ptr %49, ptr %9, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #9
  %50 = tail call ptr @_ZNKSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %34) #9
  store ptr %50, ptr %10, align 8
  %51 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef nonnull align 8 dereferenceable(8) %10) #9
  br i1 %51, label %.lr.ph, label %._crit_edge.thread

._crit_edge.thread:                               ; preds = %46
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #9
  br label %63

._crit_edge:                                      ; preds = %59
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #9
  %.not = icmp eq i32 %.1, 0
  br i1 %.not, label %63, label %64

.lr.ph:                                           ; preds = %46, %59
  %.0194312 = phi i32 [ %.1, %59 ], [ 0, %46 ]
  %.0195311 = phi i32 [ %.1196, %59 ], [ 0, %46 ]
  %52 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %9) #9
  %53 = load i32, ptr %52, align 4, !tbaa !74
  %.not289 = icmp eq i32 %53, %4
  br i1 %.not289, label %54, label %59

54:                                               ; preds = %.lr.ph
  %55 = add i32 %.0194312, 1
  %56 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKjSt6vectorIjSaIjEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %8) #9
  %57 = load i32, ptr %56, align 4, !tbaa !74
  %58 = add i32 %57, %.0195311
  br label %59

59:                                               ; preds = %.lr.ph, %54
  %.1196 = phi i32 [ %.0195311, %.lr.ph ], [ %58, %54 ]
  %.1 = phi i32 [ %.0194312, %.lr.ph ], [ %55, %54 ]
  %60 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %9) #9
  %61 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKjSt6vectorIjSaIjEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %8) #9
  %62 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef nonnull align 8 dereferenceable(8) %10) #9
  br i1 %62, label %.lr.ph, label %._crit_edge, !llvm.loop !75

63:                                               ; preds = %._crit_edge.thread, %._crit_edge
  %.0195.lcssa400 = phi i32 [ 0, %._crit_edge.thread ], [ %.1196, %._crit_edge ]
  call void @_ZN6Assimp17aiAssertViolationEPKcS1_i(ptr noundef nonnull @.str.62, ptr noundef nonnull @.str.5, i32 noundef 1342)
  br label %64

64:                                               ; preds = %63, %._crit_edge
  %.not403 = phi i1 [ true, %63 ], [ false, %._crit_edge ]
  %.0194.lcssa401 = phi i32 [ 0, %63 ], [ %.1, %._crit_edge ]
  %.0195.lcssa399 = phi i32 [ %.0195.lcssa400, %63 ], [ %.1196, %._crit_edge ]
  %.not251 = icmp eq i32 %.0195.lcssa399, 0
  br i1 %.not251, label %65, label %66

65:                                               ; preds = %64
  call void @_ZN6Assimp17aiAssertViolationEPKcS1_i(ptr noundef nonnull @.str.63, ptr noundef nonnull @.str.5, i32 noundef 1343)
  br label %66

66:                                               ; preds = %65, %64
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %11) #9
  call void @_ZNSt6vectorIjSaIjEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #9
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %12) #9
  call void @_ZNSt3mapIjjSt4lessIjESaISt4pairIKjjEEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %12) #9
  br i1 %47, label %71, label %67

67:                                               ; preds = %66
  %68 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZNK6Assimp3FBX8Geometry14GetBlendShapesEv(ptr noundef nonnull align 8 dereferenceable(120) %1)
          to label %69 unwind label %73

69:                                               ; preds = %67
  %70 = call noundef i64 @_ZNKSt13unordered_setIPKN6Assimp3FBX10BlendShapeESt4hashIS4_ESt8equal_toIS4_ESaIS4_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(56) %68) #9
  %.not252 = icmp eq i64 %70, 0
  br i1 %.not252, label %._crit_edge393, label %71

._crit_edge393:                                   ; preds = %69
  %.pre = zext i32 %.0195.lcssa399 to i64
  br label %75

71:                                               ; preds = %69, %66
  %72 = zext i32 %.0195.lcssa399 to i64
  invoke void @_ZNSt6vectorIjSaIjEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %11, i64 noundef %72)
          to label %75 unwind label %73

73:                                               ; preds = %75, %71, %67
  %74 = landingpad { ptr, i32 }
          cleanup
  br label %659

75:                                               ; preds = %._crit_edge393, %71
  %.pre-phi = phi i64 [ %.pre, %._crit_edge393 ], [ %72, %71 ]
  %76 = getelementptr inbounds i8, ptr %33, i64 4
  store i32 %.0195.lcssa399, ptr %76, align 4, !tbaa !77
  %77 = mul nuw nsw i64 %.pre-phi, 12
  %78 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %77) #10
          to label %79 unwind label %73

79:                                               ; preds = %75
  br i1 %.not251, label %.loopexit305, label %80

80:                                               ; preds = %79
  %81 = getelementptr inbounds %class.aiVector3t, ptr %78, i64 %.pre-phi
  br label %82

82:                                               ; preds = %82, %80
  %83 = phi ptr [ %78, %80 ], [ %84, %82 ]
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %83) #9
  %84 = getelementptr inbounds i8, ptr %83, i64 12
  %85 = icmp eq ptr %84, %81
  br i1 %85, label %.loopexit305, label %82

.loopexit305:                                     ; preds = %82, %79
  %86 = getelementptr inbounds i8, ptr %33, i64 16
  store ptr %78, ptr %86, align 8, !tbaa !84
  %87 = getelementptr inbounds i8, ptr %33, i64 8
  store i32 %.0194.lcssa401, ptr %87, align 8, !tbaa !85
  %88 = zext i32 %.0194.lcssa401 to i64
  %89 = shl nuw nsw i64 %88, 4
  %90 = or disjoint i64 %89, 8
  %91 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %90) #10
          to label %92 unwind label %119

92:                                               ; preds = %.loopexit305
  store i64 %88, ptr %91, align 16
  %93 = getelementptr inbounds i8, ptr %91, i64 8
  br i1 %.not403, label %.loopexit304, label %94

94:                                               ; preds = %92
  %95 = getelementptr inbounds %struct.aiFace, ptr %93, i64 %88
  br label %96

96:                                               ; preds = %96, %94
  %97 = phi ptr [ %93, %94 ], [ %98, %96 ]
  call void @_ZN6aiFaceC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %97) #9
  %98 = getelementptr inbounds i8, ptr %97, i64 16
  %99 = icmp eq ptr %98, %95
  br i1 %99, label %.loopexit304, label %96

.loopexit304:                                     ; preds = %96, %92
  %100 = getelementptr inbounds i8, ptr %33, i64 208
  store ptr %93, ptr %100, align 8, !tbaa !86
  %101 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX12MeshGeometry10GetNormalsEv(ptr noundef nonnull align 8 dereferenceable(1000) %1)
          to label %102 unwind label %121

102:                                              ; preds = %.loopexit304
  %103 = call noundef i64 @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %101) #9
  %.not253 = icmp eq i64 %103, 0
  br i1 %.not253, label %123, label %104

104:                                              ; preds = %102
  %105 = call noundef i64 @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %101) #9
  %106 = call noundef i64 @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %35) #9
  %107 = icmp eq i64 %105, %106
  br i1 %107, label %109, label %108

108:                                              ; preds = %104
  invoke void @_ZN6Assimp17aiAssertViolationEPKcS1_i(ptr noundef nonnull @.str.56, ptr noundef nonnull @.str.5, i32 noundef 1362)
          to label %109 unwind label %121

109:                                              ; preds = %108, %104
  %110 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %77) #10
          to label %111 unwind label %121

111:                                              ; preds = %109
  br i1 %.not251, label %.loopexit303, label %112

112:                                              ; preds = %111
  %113 = getelementptr inbounds %class.aiVector3t, ptr %110, i64 %.pre-phi
  br label %114

114:                                              ; preds = %114, %112
  %115 = phi ptr [ %110, %112 ], [ %116, %114 ]
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %115) #9
  %116 = getelementptr inbounds i8, ptr %115, i64 12
  %117 = icmp eq ptr %116, %113
  br i1 %117, label %.loopexit303, label %114

.loopexit303:                                     ; preds = %114, %111
  %118 = getelementptr inbounds i8, ptr %33, i64 24
  store ptr %110, ptr %118, align 8, !tbaa !87
  br label %123

119:                                              ; preds = %.loopexit305
  %120 = landingpad { ptr, i32 }
          cleanup
  br label %659

121:                                              ; preds = %109, %108, %.loopexit304
  %122 = landingpad { ptr, i32 }
          cleanup
  br label %659

123:                                              ; preds = %.loopexit303, %102
  %124 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX12MeshGeometry11GetTangentsEv(ptr noundef nonnull align 8 dereferenceable(1000) %1)
          to label %125 unwind label %136

125:                                              ; preds = %123
  %126 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX12MeshGeometry12GetBinormalsEv(ptr noundef nonnull align 8 dereferenceable(1000) %1)
          to label %127 unwind label %138

127:                                              ; preds = %125
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %13) #9
  call void @_ZNSt6vectorI10aiVector3tIfESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #9
  %128 = call noundef i64 @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %124) #9
  %.not254 = icmp eq i64 %128, 0
  br i1 %.not254, label %182, label %129

129:                                              ; preds = %127
  %130 = call noundef i64 @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %126) #9
  %.not255 = icmp eq i64 %130, 0
  br i1 %.not255, label %131, label %.loopexit302

131:                                              ; preds = %129
  %132 = call noundef i64 @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %101) #9
  %.not256 = icmp eq i64 %132, 0
  br i1 %.not256, label %182, label %133

133:                                              ; preds = %131
  %134 = call noundef i64 @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %101) #9
  invoke void @_ZNSt6vectorI10aiVector3tIfESaIS1_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef %134)
          to label %.preheader301 unwind label %140

.preheader301:                                    ; preds = %133
  %135 = call noundef i64 @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %124) #9
  %.not352 = icmp eq i64 %135, 0
  br i1 %.not352, label %.loopexit302, label %.lr.ph315

136:                                              ; preds = %123
  %137 = landingpad { ptr, i32 }
          cleanup
  br label %659

138:                                              ; preds = %125
  %139 = landingpad { ptr, i32 }
          cleanup
  br label %659

140:                                              ; preds = %.loopexit300, %163, %162, %157, %133
  %141 = landingpad { ptr, i32 }
          cleanup
  br label %658

.lr.ph315:                                        ; preds = %.preheader301, %146
  %142 = phi i64 [ %149, %146 ], [ 0, %.preheader301 ]
  %.0228314 = phi i32 [ %148, %146 ], [ 0, %.preheader301 ]
  %143 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNKSt6vectorI10aiVector3tIfESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %101, i64 noundef %142) #9
  %144 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNKSt6vectorI10aiVector3tIfESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %124, i64 noundef %142) #9
  %145 = invoke { <2 x float>, float } @_ZeoIfE10aiVector3tIT_ERKS2_S4_(ptr noundef nonnull align 4 dereferenceable(12) %143, ptr noundef nonnull align 4 dereferenceable(12) %144)
          to label %146 unwind label %152

146:                                              ; preds = %.lr.ph315
  %.fca.0.extract = extractvalue { <2 x float>, float } %145, 0
  %.fca.1.extract = extractvalue { <2 x float>, float } %145, 1
  %147 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorI10aiVector3tIfESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef %142) #9
  store <2 x float> %.fca.0.extract, ptr %147, align 4
  %.sroa.5.0..sroa_idx = getelementptr inbounds i8, ptr %147, i64 8
  store float %.fca.1.extract, ptr %.sroa.5.0..sroa_idx, align 4, !tbaa !88
  %148 = add i32 %.0228314, 1
  %149 = zext i32 %148 to i64
  %150 = call noundef i64 @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %124) #9
  %151 = icmp ugt i64 %150, %149
  br i1 %151, label %.lr.ph315, label %.loopexit302, !llvm.loop !89

152:                                              ; preds = %.lr.ph315
  %153 = landingpad { ptr, i32 }
          cleanup
  br label %658

.loopexit302:                                     ; preds = %146, %.preheader301, %129
  %.0226.ph = phi ptr [ %126, %129 ], [ %13, %.preheader301 ], [ %13, %146 ]
  %154 = call noundef i64 @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %124) #9
  %155 = call noundef i64 @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %35) #9
  %156 = icmp eq i64 %154, %155
  br i1 %156, label %158, label %157

157:                                              ; preds = %.loopexit302
  invoke void @_ZN6Assimp17aiAssertViolationEPKcS1_i(ptr noundef nonnull @.str.57, ptr noundef nonnull @.str.5, i32 noundef 1388)
          to label %158 unwind label %140

158:                                              ; preds = %157, %.loopexit302
  %159 = call noundef i64 @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %.0226.ph) #9
  %160 = call noundef i64 @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %35) #9
  %161 = icmp eq i64 %159, %160
  br i1 %161, label %163, label %162

162:                                              ; preds = %158
  invoke void @_ZN6Assimp17aiAssertViolationEPKcS1_i(ptr noundef nonnull @.str.58, ptr noundef nonnull @.str.5, i32 noundef 1389)
          to label %163 unwind label %140

163:                                              ; preds = %162, %158
  %164 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %77) #10
          to label %165 unwind label %140

165:                                              ; preds = %163
  br i1 %.not251, label %.loopexit300, label %166

166:                                              ; preds = %165
  %167 = getelementptr inbounds %class.aiVector3t, ptr %164, i64 %.pre-phi
  br label %168

168:                                              ; preds = %168, %166
  %169 = phi ptr [ %164, %166 ], [ %170, %168 ]
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %169) #9
  %170 = getelementptr inbounds i8, ptr %169, i64 12
  %171 = icmp eq ptr %170, %167
  br i1 %171, label %.loopexit300, label %168

.loopexit300:                                     ; preds = %168, %165
  %172 = getelementptr inbounds i8, ptr %33, i64 32
  store ptr %164, ptr %172, align 8, !tbaa !90
  %173 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %77) #10
          to label %174 unwind label %140

174:                                              ; preds = %.loopexit300
  br i1 %.not251, label %.loopexit299, label %175

175:                                              ; preds = %174
  %176 = getelementptr inbounds %class.aiVector3t, ptr %173, i64 %.pre-phi
  br label %177

177:                                              ; preds = %177, %175
  %178 = phi ptr [ %173, %175 ], [ %179, %177 ]
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %178) #9
  %179 = getelementptr inbounds i8, ptr %178, i64 12
  %180 = icmp eq ptr %179, %176
  br i1 %180, label %.loopexit299, label %177

.loopexit299:                                     ; preds = %177, %174
  %181 = getelementptr inbounds i8, ptr %33, i64 40
  store ptr %173, ptr %181, align 8, !tbaa !91
  br label %182

182:                                              ; preds = %131, %.loopexit299, %127
  %.1227 = phi ptr [ %.0226.ph, %.loopexit299 ], [ %126, %127 ], [ null, %131 ]
  %183 = getelementptr inbounds i8, ptr %33, i64 112
  %184 = getelementptr inbounds i8, ptr %33, i64 176
  %185 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX12MeshGeometry16GetTextureCoordsEj(ptr noundef nonnull align 8 dereferenceable(1000) %1, i32 noundef 0)
          to label %186 unwind label %188

186:                                              ; preds = %182
  %187 = call noundef zeroext i1 @_ZNKSt6vectorI10aiVector2tIfESaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %185) #9
  br i1 %187, label %.critedge, label %190

188:                                              ; preds = %286, %.thread295.6, %272, %.thread295.5, %258, %.thread295.4, %244, %.thread295.3, %230, %.thread295.2, %216, %.thread295.1, %202, %.thread295, %190, %182
  %189 = landingpad { ptr, i32 }
          cleanup
  br label %658

190:                                              ; preds = %186
  %191 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %77) #10
          to label %192 unwind label %188

192:                                              ; preds = %190
  br i1 %.not251, label %.thread295, label %193

193:                                              ; preds = %192
  %194 = getelementptr inbounds %class.aiVector3t, ptr %191, i64 %.pre-phi
  br label %195

195:                                              ; preds = %195, %193
  %196 = phi ptr [ %191, %193 ], [ %197, %195 ]
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %196) #9
  %197 = getelementptr inbounds i8, ptr %196, i64 12
  %198 = icmp eq ptr %197, %194
  br i1 %198, label %.thread295, label %195

.thread295:                                       ; preds = %195, %192
  store ptr %191, ptr %183, align 8, !tbaa !92
  store i32 2, ptr %184, align 4, !tbaa !74
  %199 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX12MeshGeometry16GetTextureCoordsEj(ptr noundef nonnull align 8 dereferenceable(1000) %1, i32 noundef 1)
          to label %200 unwind label %188

200:                                              ; preds = %.thread295
  %201 = call noundef zeroext i1 @_ZNKSt6vectorI10aiVector2tIfESaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %199) #9
  br i1 %201, label %.critedge, label %202

202:                                              ; preds = %200
  %203 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %77) #10
          to label %204 unwind label %188

204:                                              ; preds = %202
  br i1 %.not251, label %.thread295.1, label %205

205:                                              ; preds = %204
  %206 = getelementptr inbounds %class.aiVector3t, ptr %203, i64 %.pre-phi
  br label %207

207:                                              ; preds = %207, %205
  %208 = phi ptr [ %203, %205 ], [ %209, %207 ]
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %208) #9
  %209 = getelementptr inbounds i8, ptr %208, i64 12
  %210 = icmp eq ptr %209, %206
  br i1 %210, label %.thread295.1, label %207

.thread295.1:                                     ; preds = %207, %204
  %211 = getelementptr inbounds i8, ptr %33, i64 120
  store ptr %203, ptr %211, align 8, !tbaa !92
  %212 = getelementptr inbounds i8, ptr %33, i64 180
  store i32 2, ptr %212, align 4, !tbaa !74
  %213 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX12MeshGeometry16GetTextureCoordsEj(ptr noundef nonnull align 8 dereferenceable(1000) %1, i32 noundef 2)
          to label %214 unwind label %188

214:                                              ; preds = %.thread295.1
  %215 = call noundef zeroext i1 @_ZNKSt6vectorI10aiVector2tIfESaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %213) #9
  br i1 %215, label %.critedge, label %216

216:                                              ; preds = %214
  %217 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %77) #10
          to label %218 unwind label %188

218:                                              ; preds = %216
  br i1 %.not251, label %.thread295.2, label %219

219:                                              ; preds = %218
  %220 = getelementptr inbounds %class.aiVector3t, ptr %217, i64 %.pre-phi
  br label %221

221:                                              ; preds = %221, %219
  %222 = phi ptr [ %217, %219 ], [ %223, %221 ]
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %222) #9
  %223 = getelementptr inbounds i8, ptr %222, i64 12
  %224 = icmp eq ptr %223, %220
  br i1 %224, label %.thread295.2, label %221

.thread295.2:                                     ; preds = %221, %218
  %225 = getelementptr inbounds i8, ptr %33, i64 128
  store ptr %217, ptr %225, align 8, !tbaa !92
  %226 = getelementptr inbounds i8, ptr %33, i64 184
  store i32 2, ptr %226, align 4, !tbaa !74
  %227 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX12MeshGeometry16GetTextureCoordsEj(ptr noundef nonnull align 8 dereferenceable(1000) %1, i32 noundef 3)
          to label %228 unwind label %188

228:                                              ; preds = %.thread295.2
  %229 = call noundef zeroext i1 @_ZNKSt6vectorI10aiVector2tIfESaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %227) #9
  br i1 %229, label %.critedge, label %230

230:                                              ; preds = %228
  %231 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %77) #10
          to label %232 unwind label %188

232:                                              ; preds = %230
  br i1 %.not251, label %.thread295.3, label %233

233:                                              ; preds = %232
  %234 = getelementptr inbounds %class.aiVector3t, ptr %231, i64 %.pre-phi
  br label %235

235:                                              ; preds = %235, %233
  %236 = phi ptr [ %231, %233 ], [ %237, %235 ]
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %236) #9
  %237 = getelementptr inbounds i8, ptr %236, i64 12
  %238 = icmp eq ptr %237, %234
  br i1 %238, label %.thread295.3, label %235

.thread295.3:                                     ; preds = %235, %232
  %239 = getelementptr inbounds i8, ptr %33, i64 136
  store ptr %231, ptr %239, align 8, !tbaa !92
  %240 = getelementptr inbounds i8, ptr %33, i64 188
  store i32 2, ptr %240, align 4, !tbaa !74
  %241 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX12MeshGeometry16GetTextureCoordsEj(ptr noundef nonnull align 8 dereferenceable(1000) %1, i32 noundef 4)
          to label %242 unwind label %188

242:                                              ; preds = %.thread295.3
  %243 = call noundef zeroext i1 @_ZNKSt6vectorI10aiVector2tIfESaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %241) #9
  br i1 %243, label %.critedge, label %244

244:                                              ; preds = %242
  %245 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %77) #10
          to label %246 unwind label %188

246:                                              ; preds = %244
  br i1 %.not251, label %.thread295.4, label %247

247:                                              ; preds = %246
  %248 = getelementptr inbounds %class.aiVector3t, ptr %245, i64 %.pre-phi
  br label %249

249:                                              ; preds = %249, %247
  %250 = phi ptr [ %245, %247 ], [ %251, %249 ]
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %250) #9
  %251 = getelementptr inbounds i8, ptr %250, i64 12
  %252 = icmp eq ptr %251, %248
  br i1 %252, label %.thread295.4, label %249

.thread295.4:                                     ; preds = %249, %246
  %253 = getelementptr inbounds i8, ptr %33, i64 144
  store ptr %245, ptr %253, align 8, !tbaa !92
  %254 = getelementptr inbounds i8, ptr %33, i64 192
  store i32 2, ptr %254, align 4, !tbaa !74
  %255 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX12MeshGeometry16GetTextureCoordsEj(ptr noundef nonnull align 8 dereferenceable(1000) %1, i32 noundef 5)
          to label %256 unwind label %188

256:                                              ; preds = %.thread295.4
  %257 = call noundef zeroext i1 @_ZNKSt6vectorI10aiVector2tIfESaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %255) #9
  br i1 %257, label %.critedge, label %258

258:                                              ; preds = %256
  %259 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %77) #10
          to label %260 unwind label %188

260:                                              ; preds = %258
  br i1 %.not251, label %.thread295.5, label %261

261:                                              ; preds = %260
  %262 = getelementptr inbounds %class.aiVector3t, ptr %259, i64 %.pre-phi
  br label %263

263:                                              ; preds = %263, %261
  %264 = phi ptr [ %259, %261 ], [ %265, %263 ]
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %264) #9
  %265 = getelementptr inbounds i8, ptr %264, i64 12
  %266 = icmp eq ptr %265, %262
  br i1 %266, label %.thread295.5, label %263

.thread295.5:                                     ; preds = %263, %260
  %267 = getelementptr inbounds i8, ptr %33, i64 152
  store ptr %259, ptr %267, align 8, !tbaa !92
  %268 = getelementptr inbounds i8, ptr %33, i64 196
  store i32 2, ptr %268, align 4, !tbaa !74
  %269 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX12MeshGeometry16GetTextureCoordsEj(ptr noundef nonnull align 8 dereferenceable(1000) %1, i32 noundef 6)
          to label %270 unwind label %188

270:                                              ; preds = %.thread295.5
  %271 = call noundef zeroext i1 @_ZNKSt6vectorI10aiVector2tIfESaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %269) #9
  br i1 %271, label %.critedge, label %272

272:                                              ; preds = %270
  %273 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %77) #10
          to label %274 unwind label %188

274:                                              ; preds = %272
  br i1 %.not251, label %.thread295.6, label %275

275:                                              ; preds = %274
  %276 = getelementptr inbounds %class.aiVector3t, ptr %273, i64 %.pre-phi
  br label %277

277:                                              ; preds = %277, %275
  %278 = phi ptr [ %273, %275 ], [ %279, %277 ]
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %278) #9
  %279 = getelementptr inbounds i8, ptr %278, i64 12
  %280 = icmp eq ptr %279, %276
  br i1 %280, label %.thread295.6, label %277

.thread295.6:                                     ; preds = %277, %274
  %281 = getelementptr inbounds i8, ptr %33, i64 160
  store ptr %273, ptr %281, align 8, !tbaa !92
  %282 = getelementptr inbounds i8, ptr %33, i64 200
  store i32 2, ptr %282, align 4, !tbaa !74
  %283 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX12MeshGeometry16GetTextureCoordsEj(ptr noundef nonnull align 8 dereferenceable(1000) %1, i32 noundef 7)
          to label %284 unwind label %188

284:                                              ; preds = %.thread295.6
  %285 = call noundef zeroext i1 @_ZNKSt6vectorI10aiVector2tIfESaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %283) #9
  br i1 %285, label %.critedge, label %286

286:                                              ; preds = %284
  %287 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %77) #10
          to label %288 unwind label %188

288:                                              ; preds = %286
  br i1 %.not251, label %.critedge.sink.split, label %289

289:                                              ; preds = %288
  %290 = getelementptr inbounds %class.aiVector3t, ptr %287, i64 %.pre-phi
  br label %291

291:                                              ; preds = %291, %289
  %292 = phi ptr [ %287, %289 ], [ %293, %291 ]
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %292) #9
  %293 = getelementptr inbounds i8, ptr %292, i64 12
  %294 = icmp eq ptr %293, %290
  br i1 %294, label %.critedge.sink.split, label %291

.critedge.sink.split:                             ; preds = %291, %288
  %295 = getelementptr inbounds i8, ptr %33, i64 168
  store ptr %287, ptr %295, align 8, !tbaa !92
  %296 = getelementptr inbounds i8, ptr %33, i64 204
  store i32 2, ptr %296, align 4, !tbaa !74
  br label %.critedge

.critedge:                                        ; preds = %.critedge.sink.split, %284, %270, %256, %242, %228, %214, %200, %186
  %.0229.lcssa = phi i64 [ 0, %186 ], [ 1, %200 ], [ 2, %214 ], [ 3, %228 ], [ 4, %242 ], [ 5, %256 ], [ 6, %270 ], [ 7, %284 ], [ 8, %.critedge.sink.split ]
  %297 = shl nuw nsw i64 %.pre-phi, 4
  %298 = getelementptr inbounds i8, ptr %33, i64 48
  %299 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX12MeshGeometry15GetVertexColorsEj(ptr noundef nonnull align 8 dereferenceable(1000) %1, i32 noundef 0)
          to label %300 unwind label %302

300:                                              ; preds = %.critedge
  %301 = call noundef zeroext i1 @_ZNKSt6vectorI9aiColor4tIfESaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %299) #9
  br i1 %301, label %.critedge291, label %304

302:                                              ; preds = %394, %.thread296.6, %381, %.thread296.5, %368, %.thread296.4, %355, %.thread296.3, %342, %.thread296.2, %329, %.thread296.1, %316, %.thread296, %304, %.critedge
  %303 = landingpad { ptr, i32 }
          cleanup
  br label %658

304:                                              ; preds = %300
  %305 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %297) #10
          to label %306 unwind label %302

306:                                              ; preds = %304
  br i1 %.not251, label %.thread296, label %307

307:                                              ; preds = %306
  %308 = getelementptr inbounds %class.aiColor4t, ptr %305, i64 %.pre-phi
  br label %309

309:                                              ; preds = %309, %307
  %310 = phi ptr [ %305, %307 ], [ %311, %309 ]
  call void @_ZN9aiColor4tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(16) %310) #9
  %311 = getelementptr inbounds i8, ptr %310, i64 16
  %312 = icmp eq ptr %311, %308
  br i1 %312, label %.thread296, label %309

.thread296:                                       ; preds = %309, %306
  store ptr %305, ptr %298, align 8, !tbaa !92
  %313 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX12MeshGeometry15GetVertexColorsEj(ptr noundef nonnull align 8 dereferenceable(1000) %1, i32 noundef 1)
          to label %314 unwind label %302

314:                                              ; preds = %.thread296
  %315 = call noundef zeroext i1 @_ZNKSt6vectorI9aiColor4tIfESaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %313) #9
  br i1 %315, label %.critedge291, label %316

316:                                              ; preds = %314
  %317 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %297) #10
          to label %318 unwind label %302

318:                                              ; preds = %316
  br i1 %.not251, label %.thread296.1, label %319

319:                                              ; preds = %318
  %320 = getelementptr inbounds %class.aiColor4t, ptr %317, i64 %.pre-phi
  br label %321

321:                                              ; preds = %321, %319
  %322 = phi ptr [ %317, %319 ], [ %323, %321 ]
  call void @_ZN9aiColor4tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(16) %322) #9
  %323 = getelementptr inbounds i8, ptr %322, i64 16
  %324 = icmp eq ptr %323, %320
  br i1 %324, label %.thread296.1, label %321

.thread296.1:                                     ; preds = %321, %318
  %325 = getelementptr inbounds i8, ptr %33, i64 56
  store ptr %317, ptr %325, align 8, !tbaa !92
  %326 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX12MeshGeometry15GetVertexColorsEj(ptr noundef nonnull align 8 dereferenceable(1000) %1, i32 noundef 2)
          to label %327 unwind label %302

327:                                              ; preds = %.thread296.1
  %328 = call noundef zeroext i1 @_ZNKSt6vectorI9aiColor4tIfESaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %326) #9
  br i1 %328, label %.critedge291, label %329

329:                                              ; preds = %327
  %330 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %297) #10
          to label %331 unwind label %302

331:                                              ; preds = %329
  br i1 %.not251, label %.thread296.2, label %332

332:                                              ; preds = %331
  %333 = getelementptr inbounds %class.aiColor4t, ptr %330, i64 %.pre-phi
  br label %334

334:                                              ; preds = %334, %332
  %335 = phi ptr [ %330, %332 ], [ %336, %334 ]
  call void @_ZN9aiColor4tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(16) %335) #9
  %336 = getelementptr inbounds i8, ptr %335, i64 16
  %337 = icmp eq ptr %336, %333
  br i1 %337, label %.thread296.2, label %334

.thread296.2:                                     ; preds = %334, %331
  %338 = getelementptr inbounds i8, ptr %33, i64 64
  store ptr %330, ptr %338, align 8, !tbaa !92
  %339 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX12MeshGeometry15GetVertexColorsEj(ptr noundef nonnull align 8 dereferenceable(1000) %1, i32 noundef 3)
          to label %340 unwind label %302

340:                                              ; preds = %.thread296.2
  %341 = call noundef zeroext i1 @_ZNKSt6vectorI9aiColor4tIfESaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %339) #9
  br i1 %341, label %.critedge291, label %342

342:                                              ; preds = %340
  %343 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %297) #10
          to label %344 unwind label %302

344:                                              ; preds = %342
  br i1 %.not251, label %.thread296.3, label %345

345:                                              ; preds = %344
  %346 = getelementptr inbounds %class.aiColor4t, ptr %343, i64 %.pre-phi
  br label %347

347:                                              ; preds = %347, %345
  %348 = phi ptr [ %343, %345 ], [ %349, %347 ]
  call void @_ZN9aiColor4tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(16) %348) #9
  %349 = getelementptr inbounds i8, ptr %348, i64 16
  %350 = icmp eq ptr %349, %346
  br i1 %350, label %.thread296.3, label %347

.thread296.3:                                     ; preds = %347, %344
  %351 = getelementptr inbounds i8, ptr %33, i64 72
  store ptr %343, ptr %351, align 8, !tbaa !92
  %352 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX12MeshGeometry15GetVertexColorsEj(ptr noundef nonnull align 8 dereferenceable(1000) %1, i32 noundef 4)
          to label %353 unwind label %302

353:                                              ; preds = %.thread296.3
  %354 = call noundef zeroext i1 @_ZNKSt6vectorI9aiColor4tIfESaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %352) #9
  br i1 %354, label %.critedge291, label %355

355:                                              ; preds = %353
  %356 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %297) #10
          to label %357 unwind label %302

357:                                              ; preds = %355
  br i1 %.not251, label %.thread296.4, label %358

358:                                              ; preds = %357
  %359 = getelementptr inbounds %class.aiColor4t, ptr %356, i64 %.pre-phi
  br label %360

360:                                              ; preds = %360, %358
  %361 = phi ptr [ %356, %358 ], [ %362, %360 ]
  call void @_ZN9aiColor4tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(16) %361) #9
  %362 = getelementptr inbounds i8, ptr %361, i64 16
  %363 = icmp eq ptr %362, %359
  br i1 %363, label %.thread296.4, label %360

.thread296.4:                                     ; preds = %360, %357
  %364 = getelementptr inbounds i8, ptr %33, i64 80
  store ptr %356, ptr %364, align 8, !tbaa !92
  %365 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX12MeshGeometry15GetVertexColorsEj(ptr noundef nonnull align 8 dereferenceable(1000) %1, i32 noundef 5)
          to label %366 unwind label %302

366:                                              ; preds = %.thread296.4
  %367 = call noundef zeroext i1 @_ZNKSt6vectorI9aiColor4tIfESaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %365) #9
  br i1 %367, label %.critedge291, label %368

368:                                              ; preds = %366
  %369 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %297) #10
          to label %370 unwind label %302

370:                                              ; preds = %368
  br i1 %.not251, label %.thread296.5, label %371

371:                                              ; preds = %370
  %372 = getelementptr inbounds %class.aiColor4t, ptr %369, i64 %.pre-phi
  br label %373

373:                                              ; preds = %373, %371
  %374 = phi ptr [ %369, %371 ], [ %375, %373 ]
  call void @_ZN9aiColor4tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(16) %374) #9
  %375 = getelementptr inbounds i8, ptr %374, i64 16
  %376 = icmp eq ptr %375, %372
  br i1 %376, label %.thread296.5, label %373

.thread296.5:                                     ; preds = %373, %370
  %377 = getelementptr inbounds i8, ptr %33, i64 88
  store ptr %369, ptr %377, align 8, !tbaa !92
  %378 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX12MeshGeometry15GetVertexColorsEj(ptr noundef nonnull align 8 dereferenceable(1000) %1, i32 noundef 6)
          to label %379 unwind label %302

379:                                              ; preds = %.thread296.5
  %380 = call noundef zeroext i1 @_ZNKSt6vectorI9aiColor4tIfESaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %378) #9
  br i1 %380, label %.critedge291, label %381

381:                                              ; preds = %379
  %382 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %297) #10
          to label %383 unwind label %302

383:                                              ; preds = %381
  br i1 %.not251, label %.thread296.6, label %384

384:                                              ; preds = %383
  %385 = getelementptr inbounds %class.aiColor4t, ptr %382, i64 %.pre-phi
  br label %386

386:                                              ; preds = %386, %384
  %387 = phi ptr [ %382, %384 ], [ %388, %386 ]
  call void @_ZN9aiColor4tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(16) %387) #9
  %388 = getelementptr inbounds i8, ptr %387, i64 16
  %389 = icmp eq ptr %388, %385
  br i1 %389, label %.thread296.6, label %386

.thread296.6:                                     ; preds = %386, %383
  %390 = getelementptr inbounds i8, ptr %33, i64 96
  store ptr %382, ptr %390, align 8, !tbaa !92
  %391 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX12MeshGeometry15GetVertexColorsEj(ptr noundef nonnull align 8 dereferenceable(1000) %1, i32 noundef 7)
          to label %392 unwind label %302

392:                                              ; preds = %.thread296.6
  %393 = call noundef zeroext i1 @_ZNKSt6vectorI9aiColor4tIfESaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %391) #9
  br i1 %393, label %.critedge291, label %394

394:                                              ; preds = %392
  %395 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %297) #10
          to label %396 unwind label %302

396:                                              ; preds = %394
  br i1 %.not251, label %.critedge291.sink.split, label %397

397:                                              ; preds = %396
  %398 = getelementptr inbounds %class.aiColor4t, ptr %395, i64 %.pre-phi
  br label %399

399:                                              ; preds = %399, %397
  %400 = phi ptr [ %395, %397 ], [ %401, %399 ]
  call void @_ZN9aiColor4tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(16) %400) #9
  %401 = getelementptr inbounds i8, ptr %400, i64 16
  %402 = icmp eq ptr %401, %398
  br i1 %402, label %.critedge291.sink.split, label %399

.critedge291.sink.split:                          ; preds = %399, %396
  %403 = getelementptr inbounds i8, ptr %33, i64 104
  store ptr %395, ptr %403, align 8, !tbaa !92
  br label %.critedge291

.critedge291:                                     ; preds = %.critedge291.sink.split, %392, %379, %366, %353, %340, %327, %314, %300
  %.0233.lcssa = phi i64 [ 0, %300 ], [ 1, %314 ], [ 2, %327 ], [ 3, %340 ], [ 4, %353 ], [ 5, %366 ], [ 6, %379 ], [ 7, %392 ], [ 8, %.critedge291.sink.split ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %14) #9
  store i32 0, ptr %14, align 4, !tbaa !74
  %404 = call ptr @_ZNKSt6vectorIjSaIjEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %36) #9
  store ptr %404, ptr %8, align 8, !tbaa !92
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #9
  %405 = call ptr @_ZNKSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %34) #9
  store ptr %405, ptr %15, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #9
  %406 = call ptr @_ZNKSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %34) #9
  store ptr %406, ptr %16, align 8
  %407 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8) %15, ptr noundef nonnull align 8 dereferenceable(8) %16) #9
  br i1 %407, label %.lr.ph333, label %._crit_edge334

.lr.ph333:                                        ; preds = %.critedge291
  %408 = getelementptr inbounds i8, ptr %33, i64 24
  %409 = getelementptr inbounds i8, ptr %33, i64 32
  %410 = getelementptr inbounds i8, ptr %33, i64 40
  br label %411

._crit_edge334:                                   ; preds = %.loopexit298, %.critedge291
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #9
  invoke void @_ZN6Assimp3FBX12FBXConverter22ConvertMaterialForMeshEP6aiMeshRKNS0_5ModelERKNS0_12MeshGeometryEi(ptr noundef nonnull align 8 dereferenceable(489) %0, ptr noundef %33, ptr noundef nonnull align 8 dereferenceable(208) %2, ptr noundef nonnull align 8 dereferenceable(1000) %1, i32 noundef %4)
          to label %507 unwind label %509

411:                                              ; preds = %.lr.ph333, %.loopexit298
  %.0224332 = phi ptr [ %93, %.lr.ph333 ], [ %.1225, %.loopexit298 ]
  %.0235331 = phi i32 [ 0, %.lr.ph333 ], [ %.2237, %.loopexit298 ]
  %412 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKjSt6vectorIjSaIjEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %8) #9
  %413 = load i32, ptr %412, align 4, !tbaa !74
  %414 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %15) #9
  %415 = load i32, ptr %414, align 4, !tbaa !74
  %.not273 = icmp eq i32 %415, %4
  br i1 %.not273, label %419, label %416

416:                                              ; preds = %411
  %417 = load i32, ptr %14, align 4, !tbaa !74
  %418 = add i32 %417, %413
  store i32 %418, ptr %14, align 4, !tbaa !74
  br label %.loopexit298

419:                                              ; preds = %411
  %420 = getelementptr inbounds i8, ptr %.0224332, i64 16
  store i32 %413, ptr %.0224332, align 8, !tbaa !93
  %421 = zext i32 %413 to i64
  %422 = shl nuw nsw i64 %421, 2
  %423 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %422) #10
          to label %424 unwind label %428

424:                                              ; preds = %419
  %425 = getelementptr inbounds i8, ptr %.0224332, i64 8
  store ptr %423, ptr %425, align 8, !tbaa !95
  %426 = load i32, ptr %33, align 8, !tbaa !96
  %switch.tableidx = add i32 %413, -1
  %427 = icmp ult i32 %switch.tableidx, 3
  br i1 %427, label %switch.lookup, label %430

428:                                              ; preds = %419
  %429 = landingpad { ptr, i32 }
          cleanup
  br label %506

430:                                              ; preds = %424
  %431 = or i32 %426, 8
  store i32 %431, ptr %33, align 8, !tbaa !96
  %.not355 = icmp eq i32 %413, 0
  br i1 %.not355, label %.loopexit298, label %.lr.ph329.preheader

switch.lookup:                                    ; preds = %424
  %432 = zext nneg i32 %switch.tableidx to i64
  %switch.gep = getelementptr inbounds [3 x i32], ptr @switch.table._ZN6Assimp3FBX12FBXConverter24ConvertMeshMultiMaterialERKNS0_12MeshGeometryERKNS0_5ModelERK12aiMatrix4x4tIfEiP6aiNodeSD_, i64 0, i64 %432
  %switch.load = load i32, ptr %switch.gep, align 4
  %433 = or i32 %426, %switch.load
  store i32 %433, ptr %33, align 8, !tbaa !96
  br label %.lr.ph329.preheader

.lr.ph329.preheader:                              ; preds = %switch.lookup, %430
  br label %.lr.ph329

.lr.ph329:                                        ; preds = %.lr.ph329.preheader, %._crit_edge325
  %indvars.iv370 = phi i64 [ %indvars.iv.next371, %._crit_edge325 ], [ 0, %.lr.ph329.preheader ]
  %.1236327 = phi i32 [ %489, %._crit_edge325 ], [ %.0235331, %.lr.ph329.preheader ]
  %434 = load ptr, ptr %425, align 8, !tbaa !95
  %435 = getelementptr inbounds i32, ptr %434, i64 %indvars.iv370
  store i32 %.1236327, ptr %435, align 4, !tbaa !74
  %436 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %11) #9
  %.not274 = icmp eq i64 %436, 0
  br i1 %.not274, label %.lr.ph329._crit_edge, label %437

.lr.ph329._crit_edge:                             ; preds = %.lr.ph329
  %.pre394 = zext i32 %.1236327 to i64
  br label %445

437:                                              ; preds = %.lr.ph329
  %438 = load i32, ptr %14, align 4, !tbaa !74
  %439 = zext i32 %.1236327 to i64
  %440 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %11, i64 noundef %439) #9
  store i32 %438, ptr %440, align 4, !tbaa !74
  %441 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt3mapIjjSt4lessIjESaISt4pairIKjjEEEixERS3_(ptr noundef nonnull align 8 dereferenceable(48) %12, ptr noundef nonnull align 4 dereferenceable(4) %14)
          to label %442 unwind label %443

442:                                              ; preds = %437
  store i32 %.1236327, ptr %441, align 4, !tbaa !74
  br label %445

443:                                              ; preds = %437
  %444 = landingpad { ptr, i32 }
          cleanup
  br label %506

445:                                              ; preds = %.lr.ph329._crit_edge, %442
  %.pre-phi395 = phi i64 [ %.pre394, %.lr.ph329._crit_edge ], [ %439, %442 ]
  %446 = load i32, ptr %14, align 4, !tbaa !74
  %447 = zext i32 %446 to i64
  %448 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNKSt6vectorI10aiVector3tIfESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %35, i64 noundef %447) #9
  %449 = load ptr, ptr %86, align 8, !tbaa !84
  %450 = getelementptr inbounds %class.aiVector3t, ptr %449, i64 %.pre-phi395
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %450, ptr noundef nonnull align 4 dereferenceable(12) %448, i64 12, i1 false), !tbaa.struct !97
  %451 = load ptr, ptr %408, align 8, !tbaa !87
  %.not275 = icmp eq ptr %451, null
  br i1 %.not275, label %458, label %452

452:                                              ; preds = %445
  %453 = load i32, ptr %14, align 4, !tbaa !74
  %454 = zext i32 %453 to i64
  %455 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNKSt6vectorI10aiVector3tIfESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %101, i64 noundef %454) #9
  %456 = load ptr, ptr %408, align 8, !tbaa !87
  %457 = getelementptr inbounds %class.aiVector3t, ptr %456, i64 %.pre-phi395
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %457, ptr noundef nonnull align 4 dereferenceable(12) %455, i64 12, i1 false), !tbaa.struct !97
  br label %458

458:                                              ; preds = %452, %445
  %459 = load ptr, ptr %409, align 8, !tbaa !90
  %.not276 = icmp eq ptr %459, null
  br i1 %.not276, label %471, label %460

460:                                              ; preds = %458
  %461 = load i32, ptr %14, align 4, !tbaa !74
  %462 = zext i32 %461 to i64
  %463 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNKSt6vectorI10aiVector3tIfESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %124, i64 noundef %462) #9
  %464 = load ptr, ptr %409, align 8, !tbaa !90
  %465 = getelementptr inbounds %class.aiVector3t, ptr %464, i64 %.pre-phi395
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %465, ptr noundef nonnull align 4 dereferenceable(12) %463, i64 12, i1 false), !tbaa.struct !97
  %466 = load i32, ptr %14, align 4, !tbaa !74
  %467 = zext i32 %466 to i64
  %468 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNKSt6vectorI10aiVector3tIfESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %.1227, i64 noundef %467) #9
  %469 = load ptr, ptr %410, align 8, !tbaa !91
  %470 = getelementptr inbounds %class.aiVector3t, ptr %469, i64 %.pre-phi395
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %470, ptr noundef nonnull align 4 dereferenceable(12) %468, i64 12, i1 false), !tbaa.struct !97
  br label %471

471:                                              ; preds = %460, %458
  br i1 %187, label %.preheader297, label %.lr.ph322

.preheader297:                                    ; preds = %474, %471
  br i1 %301, label %._crit_edge325, label %.lr.ph324

.lr.ph322:                                        ; preds = %471, %474
  %indvars.iv = phi i64 [ %indvars.iv.next, %474 ], [ 0, %471 ]
  %472 = trunc nuw nsw i64 %indvars.iv to i32
  %473 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX12MeshGeometry16GetTextureCoordsEj(ptr noundef nonnull align 8 dereferenceable(1000) %1, i32 noundef %472)
          to label %474 unwind label %487

474:                                              ; preds = %.lr.ph322
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %17) #9
  %475 = load i32, ptr %14, align 4, !tbaa !74
  %476 = zext i32 %475 to i64
  %477 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNKSt6vectorI10aiVector2tIfESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %473, i64 noundef %476) #9
  %478 = load float, ptr %477, align 4, !tbaa !98
  %479 = load i32, ptr %14, align 4, !tbaa !74
  %480 = zext i32 %479 to i64
  %481 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNKSt6vectorI10aiVector2tIfESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %473, i64 noundef %480) #9
  %482 = getelementptr inbounds i8, ptr %481, i64 4
  %483 = load float, ptr %482, align 4, !tbaa !100
  call void @_ZN10aiVector3tIfEC2Efff(ptr noundef nonnull align 4 dereferenceable(12) %17, float noundef %478, float noundef %483, float noundef 0.000000e+00)
  %484 = getelementptr inbounds [8 x ptr], ptr %183, i64 0, i64 %indvars.iv
  %485 = load ptr, ptr %484, align 8, !tbaa !92
  %486 = getelementptr inbounds %class.aiVector3t, ptr %485, i64 %.pre-phi395
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %486, ptr noundef nonnull align 4 dereferenceable(12) %17, i64 12, i1 false), !tbaa.struct !97
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %17) #9
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %.0229.lcssa
  br i1 %exitcond.not, label %.preheader297, label %.lr.ph322, !llvm.loop !101

487:                                              ; preds = %.lr.ph322
  %488 = landingpad { ptr, i32 }
          cleanup
  br label %506

._crit_edge325:                                   ; preds = %494, %.preheader297
  %indvars.iv.next371 = add nuw nsw i64 %indvars.iv370, 1
  %489 = add i32 %.1236327, 1
  %490 = load i32, ptr %14, align 4, !tbaa !74
  %491 = add i32 %490, 1
  store i32 %491, ptr %14, align 4, !tbaa !74
  %exitcond374.not = icmp eq i64 %indvars.iv.next371, %421
  br i1 %exitcond374.not, label %.loopexit298, label %.lr.ph329, !llvm.loop !102

.lr.ph324:                                        ; preds = %.preheader297, %494
  %indvars.iv365 = phi i64 [ %indvars.iv.next366, %494 ], [ 0, %.preheader297 ]
  %492 = trunc nuw nsw i64 %indvars.iv365 to i32
  %493 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX12MeshGeometry15GetVertexColorsEj(ptr noundef nonnull align 8 dereferenceable(1000) %1, i32 noundef %492)
          to label %494 unwind label %501

494:                                              ; preds = %.lr.ph324
  %495 = load i32, ptr %14, align 4, !tbaa !74
  %496 = zext i32 %495 to i64
  %497 = call noundef nonnull align 4 dereferenceable(16) ptr @_ZNKSt6vectorI9aiColor4tIfESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %493, i64 noundef %496) #9
  %498 = getelementptr inbounds [8 x ptr], ptr %298, i64 0, i64 %indvars.iv365
  %499 = load ptr, ptr %498, align 8, !tbaa !92
  %500 = getelementptr inbounds %class.aiColor4t, ptr %499, i64 %.pre-phi395
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %500, ptr noundef nonnull align 4 dereferenceable(16) %497, i64 16, i1 false), !tbaa.struct !103
  %indvars.iv.next366 = add nuw nsw i64 %indvars.iv365, 1
  %exitcond369.not = icmp eq i64 %indvars.iv.next366, %.0233.lcssa
  br i1 %exitcond369.not, label %._crit_edge325, label %.lr.ph324, !llvm.loop !104

501:                                              ; preds = %.lr.ph324
  %502 = landingpad { ptr, i32 }
          cleanup
  br label %506

.loopexit298:                                     ; preds = %._crit_edge325, %430, %416
  %.2237 = phi i32 [ %.0235331, %416 ], [ %.0235331, %430 ], [ %489, %._crit_edge325 ]
  %.1225 = phi ptr [ %.0224332, %416 ], [ %420, %430 ], [ %420, %._crit_edge325 ]
  %503 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKiSt6vectorIiSaIiEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %15) #9
  %504 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKjSt6vectorIjSaIjEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %8) #9
  %505 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8) %15, ptr noundef nonnull align 8 dereferenceable(8) %16) #9
  br i1 %505, label %411, label %._crit_edge334, !llvm.loop !105

506:                                              ; preds = %443, %487, %501, %428
  %.pn277.pn = phi { ptr, i32 } [ %429, %428 ], [ %488, %487 ], [ %502, %501 ], [ %444, %443 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #9
  br label %657

507:                                              ; preds = %._crit_edge334
  br i1 %47, label %508, label %511

508:                                              ; preds = %507
  invoke void @_ZN6Assimp3FBX12FBXConverter14ConvertWeightsEP6aiMeshRKNS0_12MeshGeometryERK12aiMatrix4x4tIfEP6aiNodejPSt6vectorIjSaIjEE(ptr noundef nonnull align 8 dereferenceable(489) %0, ptr noundef %33, ptr noundef nonnull align 8 dereferenceable(1000) %1, ptr noundef nonnull align 4 dereferenceable(64) %3, ptr noundef %5, i32 noundef %4, ptr noundef nonnull %11)
          to label %511 unwind label %509

509:                                              ; preds = %508, %._crit_edge334
  %510 = landingpad { ptr, i32 }
          cleanup
  br label %657

511:                                              ; preds = %508, %507
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %18) #9
  call void @_ZNSt6vectorIP10aiAnimMeshSaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #9
  %512 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZNK6Assimp3FBX8Geometry14GetBlendShapesEv(ptr noundef nonnull align 8 dereferenceable(120) %1)
          to label %513 unwind label %518

513:                                              ; preds = %511
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #9
  %514 = call ptr @_ZNKSt13unordered_setIPKN6Assimp3FBX10BlendShapeESt4hashIS4_ESt8equal_toIS4_ESaIS4_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(56) %512) #9
  store ptr %514, ptr %19, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #9
  %515 = call ptr @_ZNKSt13unordered_setIPKN6Assimp3FBX10BlendShapeESt4hashIS4_ESt8equal_toIS4_ESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %512) #9
  store ptr %515, ptr %20, align 8
  %516 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseIPKN6Assimp3FBX10BlendShapeELb0EEES8_(ptr noundef nonnull align 8 dereferenceable(8) %19, ptr noundef nonnull align 8 dereferenceable(8) %20) #9
  br i1 %516, label %.lr.ph349, label %._crit_edge350

._crit_edge350:                                   ; preds = %._crit_edge347, %513
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #9
  %517 = call noundef i64 @_ZNKSt6vectorIP10aiAnimMeshSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %18) #9
  %.not258 = icmp eq i64 %517, 0
  br i1 %.not258, label %.loopexit, label %632

518:                                              ; preds = %511
  %519 = landingpad { ptr, i32 }
          cleanup
  br label %656

.lr.ph349:                                        ; preds = %513, %._crit_edge347
  %520 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8__detail20_Node_const_iteratorIPKN6Assimp3FBX10BlendShapeELb1ELb0EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %19) #9
  %521 = load ptr, ptr %520, align 8, !tbaa !92
  %522 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNK6Assimp3FBX10BlendShape18BlendShapeChannelsEv(ptr noundef nonnull align 8 dereferenceable(128) %521)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #9
  %523 = call ptr @_ZNKSt13unordered_setIPKN6Assimp3FBX17BlendShapeChannelESt4hashIS4_ESt8equal_toIS4_ESaIS4_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(56) %522) #9
  store ptr %523, ptr %21, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #9
  %524 = call ptr @_ZNKSt13unordered_setIPKN6Assimp3FBX17BlendShapeChannelESt4hashIS4_ESt8equal_toIS4_ESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %522) #9
  store ptr %524, ptr %22, align 8
  %525 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseIPKN6Assimp3FBX17BlendShapeChannelELb0EEES8_(ptr noundef nonnull align 8 dereferenceable(8) %21, ptr noundef nonnull align 8 dereferenceable(8) %22) #9
  br i1 %525, label %.lr.ph346, label %._crit_edge347

._crit_edge347:                                   ; preds = %._crit_edge344, %.lr.ph349
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #9
  %526 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8__detail20_Node_const_iteratorIPKN6Assimp3FBX10BlendShapeELb1ELb0EEppEv(ptr noundef nonnull align 8 dereferenceable(8) %19) #9
  %527 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseIPKN6Assimp3FBX10BlendShapeELb0EEES8_(ptr noundef nonnull align 8 dereferenceable(8) %19, ptr noundef nonnull align 8 dereferenceable(8) %20) #9
  br i1 %527, label %.lr.ph349, label %._crit_edge350

.lr.ph346:                                        ; preds = %.lr.ph349, %._crit_edge344
  %528 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8__detail20_Node_const_iteratorIPKN6Assimp3FBX17BlendShapeChannelELb1ELb0EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %21) #9
  %529 = load ptr, ptr %528, align 8, !tbaa !92
  %530 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNK6Assimp3FBX17BlendShapeChannel18GetShapeGeometriesEv(ptr noundef nonnull align 8 dereferenceable(160) %529)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #9
  %531 = call ptr @_ZNKSt13unordered_setIPKN6Assimp3FBX13ShapeGeometryESt4hashIS4_ESt8equal_toIS4_ESaIS4_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(56) %530) #9
  store ptr %531, ptr %23, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #9
  %532 = call ptr @_ZNKSt13unordered_setIPKN6Assimp3FBX13ShapeGeometryESt4hashIS4_ESt8equal_toIS4_ESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %530) #9
  store ptr %532, ptr %24, align 8
  %533 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseIPKN6Assimp3FBX13ShapeGeometryELb0EEES8_(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 8 dereferenceable(8) %24) #9
  br i1 %533, label %.lr.ph343, label %._crit_edge344

._crit_edge344:                                   ; preds = %628, %.lr.ph346
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #9
  %534 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8__detail20_Node_const_iteratorIPKN6Assimp3FBX17BlendShapeChannelELb1ELb0EEppEv(ptr noundef nonnull align 8 dereferenceable(8) %21) #9
  %535 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseIPKN6Assimp3FBX17BlendShapeChannelELb0EEES8_(ptr noundef nonnull align 8 dereferenceable(8) %21, ptr noundef nonnull align 8 dereferenceable(8) %22) #9
  br i1 %535, label %.lr.ph346, label %._crit_edge347

.lr.ph343:                                        ; preds = %.lr.ph346, %628
  %536 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8__detail20_Node_const_iteratorIPKN6Assimp3FBX13ShapeGeometryELb1ELb0EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %23) #9
  %537 = load ptr, ptr %536, align 8, !tbaa !92
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #9
  %538 = invoke noundef ptr @_ZN6Assimp16aiCreateAnimMeshEPK6aiMeshbbbbb(ptr noundef %33, i1 noundef zeroext true, i1 noundef zeroext true, i1 noundef zeroext true, i1 noundef zeroext true, i1 noundef zeroext true)
          to label %539 unwind label %552

539:                                              ; preds = %.lr.ph343
  store ptr %538, ptr %25, align 8, !tbaa !92
  %540 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX13ShapeGeometry11GetVerticesEv(ptr noundef nonnull align 8 dereferenceable(192) %537)
          to label %541 unwind label %554

541:                                              ; preds = %539
  %542 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX13ShapeGeometry10GetNormalsEv(ptr noundef nonnull align 8 dereferenceable(192) %537)
          to label %543 unwind label %556

543:                                              ; preds = %541
  %544 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX13ShapeGeometry10GetIndicesEv(ptr noundef nonnull align 8 dereferenceable(192) %537)
          to label %545 unwind label %558

545:                                              ; preds = %543
  %546 = load ptr, ptr %25, align 8, !tbaa !92
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %26) #9
  %547 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK6Assimp3FBX6Object4NameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(56) %537)
  invoke void @_ZN6Assimp3FBX12FBXConverter15FixAnimMeshNameERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %26, ptr noundef nonnull align 8 dereferenceable(489) %0, ptr noundef nonnull align 8 dereferenceable(32) %547)
          to label %548 unwind label %560

548:                                              ; preds = %545
  call void @_ZN8aiString3SetERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 4 dereferenceable(1028) %546, ptr noundef nonnull align 8 dereferenceable(32) %26)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %26) #9
  %549 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %544) #9
  %.not356 = icmp eq i64 %549, 0
  br i1 %.not356, label %._crit_edge341, label %.lr.ph340

._crit_edge341:                                   ; preds = %._crit_edge337, %548
  %550 = call noundef i64 @_ZNKSt13unordered_setIPKN6Assimp3FBX13ShapeGeometryESt4hashIS4_ESt8equal_toIS4_ESaIS4_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(56) %530) #9
  %551 = icmp ugt i64 %550, 1
  br i1 %551, label %621, label %624

552:                                              ; preds = %.lr.ph343
  %553 = landingpad { ptr, i32 }
          cleanup
  br label %631

554:                                              ; preds = %539
  %555 = landingpad { ptr, i32 }
          cleanup
  br label %631

556:                                              ; preds = %541
  %557 = landingpad { ptr, i32 }
          cleanup
  br label %631

558:                                              ; preds = %624, %543
  %559 = landingpad { ptr, i32 }
          cleanup
  br label %631

560:                                              ; preds = %545
  %561 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %26) #9
  br label %631

.lr.ph340:                                        ; preds = %548, %._crit_edge337
  %.0223338 = phi i64 [ %571, %._crit_edge337 ], [ 0, %548 ]
  %562 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIjSaIjEE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %544, i64 noundef %.0223338)
          to label %563 unwind label %574

563:                                              ; preds = %.lr.ph340
  %564 = load i32, ptr %562, align 4, !tbaa !74
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %27) #9
  %565 = invoke noundef nonnull align 4 dereferenceable(12) ptr @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %540, i64 noundef %.0223338)
          to label %566 unwind label %576

566:                                              ; preds = %563
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %27, ptr noundef nonnull align 4 dereferenceable(12) %565, i64 12, i1 false), !tbaa.struct !97
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %28) #9
  %567 = invoke noundef nonnull align 4 dereferenceable(12) ptr @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %542, i64 noundef %.0223338)
          to label %568 unwind label %578

568:                                              ; preds = %566
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %28, ptr noundef nonnull align 4 dereferenceable(12) %567, i64 12, i1 false), !tbaa.struct !97
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %29) #9
  store i32 0, ptr %29, align 4, !tbaa !74
  %569 = invoke noundef ptr @_ZNK6Assimp3FBX12MeshGeometry19ToOutputVertexIndexEjRj(ptr noundef nonnull align 8 dereferenceable(1000) %1, i32 noundef %564, ptr noundef nonnull align 4 dereferenceable(4) %29)
          to label %.preheader unwind label %580

.preheader:                                       ; preds = %568
  %570 = load i32, ptr %29, align 4, !tbaa !74
  %.not357 = icmp eq i32 %570, 0
  br i1 %.not357, label %._crit_edge337, label %.lr.ph336

._crit_edge337:                                   ; preds = %613, %.preheader
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %29) #9
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %28) #9
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %27) #9
  %571 = add nuw i64 %.0223338, 1
  %572 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %544) #9
  %573 = icmp ult i64 %571, %572
  br i1 %573, label %.lr.ph340, label %._crit_edge341, !llvm.loop !106

574:                                              ; preds = %.lr.ph340
  %575 = landingpad { ptr, i32 }
          cleanup
  br label %631

576:                                              ; preds = %563
  %577 = landingpad { ptr, i32 }
          cleanup
  br label %620

578:                                              ; preds = %566
  %579 = landingpad { ptr, i32 }
          cleanup
  br label %619

580:                                              ; preds = %568
  %581 = landingpad { ptr, i32 }
          cleanup
  br label %618

.lr.ph336:                                        ; preds = %.preheader, %613
  %indvars.iv375 = phi i64 [ %indvars.iv.next376, %613 ], [ 0, %.preheader ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %30) #9
  %582 = getelementptr inbounds i32, ptr %569, i64 %indvars.iv375
  %583 = load i32, ptr %582, align 4, !tbaa !74
  store i32 %583, ptr %30, align 4, !tbaa !74
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #9
  %584 = invoke ptr @_ZNSt3mapIjjSt4lessIjESaISt4pairIKjjEEE4findERS3_(ptr noundef nonnull align 8 dereferenceable(48) %12, ptr noundef nonnull align 4 dereferenceable(4) %30)
          to label %585 unwind label %588

585:                                              ; preds = %.lr.ph336
  store ptr %584, ptr %31, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #9
  %586 = call ptr @_ZNSt3mapIjjSt4lessIjESaISt4pairIKjjEEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %12) #9
  store ptr %586, ptr %32, align 8
  %587 = call noundef zeroext i1 @_ZSteqRKSt17_Rb_tree_iteratorISt4pairIKjjEES5_(ptr noundef nonnull align 8 dereferenceable(8) %31, ptr noundef nonnull align 8 dereferenceable(8) %32) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #9
  br i1 %587, label %613, label %590

588:                                              ; preds = %.lr.ph336
  %589 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #9
  br label %617

590:                                              ; preds = %585
  %591 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt3mapIjjSt4lessIjESaISt4pairIKjjEEEixERS3_(ptr noundef nonnull align 8 dereferenceable(48) %12, ptr noundef nonnull align 4 dereferenceable(4) %30)
          to label %592 unwind label %611

592:                                              ; preds = %590
  %593 = load i32, ptr %591, align 4, !tbaa !74
  %594 = load ptr, ptr %25, align 8, !tbaa !92
  %595 = getelementptr inbounds i8, ptr %594, i64 1032
  %596 = load ptr, ptr %595, align 8, !tbaa !107
  %597 = zext i32 %593 to i64
  %598 = getelementptr inbounds %class.aiVector3t, ptr %596, i64 %597
  %599 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN10aiVector3tIfEpLERKS0_(ptr noundef nonnull align 4 dereferenceable(12) %598, ptr noundef nonnull align 4 dereferenceable(12) %27)
  %600 = load ptr, ptr %25, align 8, !tbaa !92
  %601 = getelementptr inbounds i8, ptr %600, i64 1040
  %602 = load ptr, ptr %601, align 8, !tbaa !109
  %.not260 = icmp eq ptr %602, null
  br i1 %.not260, label %613, label %603

603:                                              ; preds = %592
  %604 = getelementptr inbounds %class.aiVector3t, ptr %602, i64 %597
  %605 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN10aiVector3tIfEpLERKS0_(ptr noundef nonnull align 4 dereferenceable(12) %604, ptr noundef nonnull align 4 dereferenceable(12) %28)
  %606 = load ptr, ptr %25, align 8, !tbaa !92
  %607 = getelementptr inbounds i8, ptr %606, i64 1040
  %608 = load ptr, ptr %607, align 8, !tbaa !109
  %609 = getelementptr inbounds %class.aiVector3t, ptr %608, i64 %597
  %610 = invoke noundef nonnull align 4 dereferenceable(12) ptr @_ZN10aiVector3tIfE13NormalizeSafeEv(ptr noundef nonnull align 4 dereferenceable(12) %609)
          to label %613 unwind label %611

611:                                              ; preds = %603, %590
  %612 = landingpad { ptr, i32 }
          cleanup
  br label %617

613:                                              ; preds = %592, %603, %585
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %30) #9
  %indvars.iv.next376 = add nuw nsw i64 %indvars.iv375, 1
  %614 = load i32, ptr %29, align 4, !tbaa !74
  %615 = zext i32 %614 to i64
  %616 = icmp ult i64 %indvars.iv.next376, %615
  br i1 %616, label %.lr.ph336, label %._crit_edge337, !llvm.loop !110

617:                                              ; preds = %611, %588
  %.pn261 = phi { ptr, i32 } [ %612, %611 ], [ %589, %588 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %30) #9
  br label %618

618:                                              ; preds = %617, %580
  %.pn261.pn = phi { ptr, i32 } [ %.pn261, %617 ], [ %581, %580 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %29) #9
  br label %619

619:                                              ; preds = %618, %578
  %.pn261.pn.pn = phi { ptr, i32 } [ %.pn261.pn, %618 ], [ %579, %578 ]
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %28) #9
  br label %620

620:                                              ; preds = %619, %576
  %.pn261.pn.pn.pn = phi { ptr, i32 } [ %.pn261.pn.pn, %619 ], [ %577, %576 ]
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %27) #9
  br label %631

621:                                              ; preds = %._crit_edge341
  %622 = call noundef float @_ZNK6Assimp3FBX17BlendShapeChannel13DeformPercentEv(ptr noundef nonnull align 8 dereferenceable(160) %529)
  %623 = fdiv float %622, 1.000000e+02
  br label %624

624:                                              ; preds = %._crit_edge341, %621
  %625 = phi float [ %623, %621 ], [ 1.000000e+00, %._crit_edge341 ]
  %626 = load ptr, ptr %25, align 8, !tbaa !92
  %627 = getelementptr inbounds i8, ptr %626, i64 1196
  store float %625, ptr %627, align 4, !tbaa !111
  invoke void @_ZNSt6vectorIP10aiAnimMeshSaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %18, ptr noundef nonnull align 8 dereferenceable(8) %25)
          to label %628 unwind label %558

628:                                              ; preds = %624
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #9
  %629 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8__detail20_Node_const_iteratorIPKN6Assimp3FBX13ShapeGeometryELb1ELb0EEppEv(ptr noundef nonnull align 8 dereferenceable(8) %23) #9
  %630 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseIPKN6Assimp3FBX13ShapeGeometryELb0EEES8_(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 8 dereferenceable(8) %24) #9
  br i1 %630, label %.lr.ph343, label %._crit_edge344

631:                                              ; preds = %554, %558, %560, %620, %574, %556, %552
  %.pn261.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %553, %552 ], [ %555, %554 ], [ %557, %556 ], [ %559, %558 ], [ %561, %560 ], [ %.pn261.pn.pn.pn, %620 ], [ %575, %574 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #9
  br label %656

632:                                              ; preds = %._crit_edge350
  %633 = trunc i64 %517 to i32
  %634 = getelementptr inbounds i8, ptr %33, i64 1264
  store i32 %633, ptr %634, align 8, !tbaa !112
  %635 = icmp ugt i64 %517, 2305843009213693951
  %636 = shl nuw i64 %517, 3
  %637 = select i1 %635, i64 -1, i64 %636
  %638 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %637) #10
          to label %639 unwind label %641

639:                                              ; preds = %632
  %640 = getelementptr inbounds i8, ptr %33, i64 1272
  store ptr %638, ptr %640, align 8, !tbaa !113
  br label %643

641:                                              ; preds = %632
  %642 = landingpad { ptr, i32 }
          cleanup
  br label %656

643:                                              ; preds = %639, %645
  %.0351 = phi i64 [ 0, %639 ], [ %649, %645 ]
  %644 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP10aiAnimMeshSaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %18, i64 noundef %.0351)
          to label %645 unwind label %650

645:                                              ; preds = %643
  %646 = load ptr, ptr %644, align 8, !tbaa !92
  %647 = load ptr, ptr %640, align 8, !tbaa !113
  %648 = getelementptr inbounds ptr, ptr %647, i64 %.0351
  store ptr %646, ptr %648, align 8, !tbaa !92
  %649 = add nuw i64 %.0351, 1
  %exitcond378.not = icmp eq i64 %649, %517
  br i1 %exitcond378.not, label %.loopexit, label %643, !llvm.loop !114

650:                                              ; preds = %643
  %651 = landingpad { ptr, i32 }
          cleanup
  br label %656

.loopexit:                                        ; preds = %645, %._crit_edge350
  %652 = getelementptr inbounds i8, ptr %0, i64 8
  %653 = call noundef i64 @_ZNKSt6vectorIP6aiMeshSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %652) #9
  %654 = trunc i64 %653 to i32
  %655 = add i32 %654, -1
  call void @_ZNSt6vectorIP10aiAnimMeshSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %18) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #9
  call void @_ZNSt6vectorI10aiVector3tIfESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %13) #9
  call void @_ZNSt3mapIjjSt4lessIjESaISt4pairIKjjEEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %12) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %12) #9
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #9
  ret i32 %655

656:                                              ; preds = %641, %650, %518, %631
  %.pn261.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn261.pn.pn.pn.pn.pn.pn.pn.pn, %631 ], [ %519, %518 ], [ %651, %650 ], [ %642, %641 ]
  call void @_ZNSt6vectorIP10aiAnimMeshSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %18) #9
  br label %657

657:                                              ; preds = %656, %509, %506
  %.pn277.pn.pn = phi { ptr, i32 } [ %.pn277.pn, %506 ], [ %.pn261.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %656 ], [ %510, %509 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #9
  br label %658

658:                                              ; preds = %188, %657, %302, %152, %140
  %.pn277.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %141, %140 ], [ %153, %152 ], [ %189, %188 ], [ %.pn277.pn.pn, %657 ], [ %303, %302 ]
  call void @_ZNSt6vectorI10aiVector3tIfESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %13) #9
  br label %659

659:                                              ; preds = %119, %136, %658, %138, %121, %73
  %.pn277.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %74, %73 ], [ %120, %119 ], [ %122, %121 ], [ %137, %136 ], [ %.pn277.pn.pn.pn.pn.pn, %658 ], [ %139, %138 ]
  call void @_ZNSt3mapIjjSt4lessIjESaISt4pairIKjjEEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %12) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %12) #9
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #9
  resume { ptr, i32 } %.pn277.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn
}

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

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

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

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

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

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

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

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

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

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

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

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

!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, !14, i64 480}
!6 = !{!"_ZTSN6Assimp3FBX12FBXConverterE", !7, i64 0, !10, i64 8, !15, i64 32, !19, i64 56, !23, i64 80, !27, i64 104, !31, i64 128, !35, i64 152, !44, i64 200, !49, i64 248, !54, i64 296, !54, i64 344, !59, i64 392, !64, i64 440, !65, i64 448, !14, i64 472, !14, i64 480, !69, i64 488}
!7 = !{!"int", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"_ZTSSt6vectorIP6aiMeshSaIS1_EE", !11, i64 0}
!11 = !{!"_ZTSSt12_Vector_baseIP6aiMeshSaIS1_EE", !12, i64 0}
!12 = !{!"_ZTSNSt12_Vector_baseIP6aiMeshSaIS1_EE12_Vector_implE", !13, i64 0}
!13 = !{!"_ZTSNSt12_Vector_baseIP6aiMeshSaIS1_EE17_Vector_impl_dataE", !14, i64 0, !14, i64 8, !14, i64 16}
!14 = !{!"any pointer", !8, i64 0}
!15 = !{!"_ZTSSt6vectorIP10aiMaterialSaIS1_EE", !16, i64 0}
!16 = !{!"_ZTSSt12_Vector_baseIP10aiMaterialSaIS1_EE", !17, i64 0}
!17 = !{!"_ZTSNSt12_Vector_baseIP10aiMaterialSaIS1_EE12_Vector_implE", !18, i64 0}
!18 = !{!"_ZTSNSt12_Vector_baseIP10aiMaterialSaIS1_EE17_Vector_impl_dataE", !14, i64 0, !14, i64 8, !14, i64 16}
!19 = !{!"_ZTSSt6vectorIP11aiAnimationSaIS1_EE", !20, i64 0}
!20 = !{!"_ZTSSt12_Vector_baseIP11aiAnimationSaIS1_EE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseIP11aiAnimationSaIS1_EE12_Vector_implE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseIP11aiAnimationSaIS1_EE17_Vector_impl_dataE", !14, i64 0, !14, i64 8, !14, i64 16}
!23 = !{!"_ZTSSt6vectorIP7aiLightSaIS1_EE", !24, i64 0}
!24 = !{!"_ZTSSt12_Vector_baseIP7aiLightSaIS1_EE", !25, i64 0}
!25 = !{!"_ZTSNSt12_Vector_baseIP7aiLightSaIS1_EE12_Vector_implE", !26, i64 0}
!26 = !{!"_ZTSNSt12_Vector_baseIP7aiLightSaIS1_EE17_Vector_impl_dataE", !14, i64 0, !14, i64 8, !14, i64 16}
!27 = !{!"_ZTSSt6vectorIP8aiCameraSaIS1_EE", !28, i64 0}
!28 = !{!"_ZTSSt12_Vector_baseIP8aiCameraSaIS1_EE", !29, i64 0}
!29 = !{!"_ZTSNSt12_Vector_baseIP8aiCameraSaIS1_EE12_Vector_implE", !30, i64 0}
!30 = !{!"_ZTSNSt12_Vector_baseIP8aiCameraSaIS1_EE17_Vector_impl_dataE", !14, i64 0, !14, i64 8, !14, i64 16}
!31 = !{!"_ZTSSt6vectorIP9aiTextureSaIS1_EE", !32, i64 0}
!32 = !{!"_ZTSSt12_Vector_baseIP9aiTextureSaIS1_EE", !33, i64 0}
!33 = !{!"_ZTSNSt12_Vector_baseIP9aiTextureSaIS1_EE12_Vector_implE", !34, i64 0}
!34 = !{!"_ZTSNSt12_Vector_baseIP9aiTextureSaIS1_EE17_Vector_impl_dataE", !14, i64 0, !14, i64 8, !14, i64 16}
!35 = !{!"_ZTSSt3mapIPKN6Assimp3FBX8MaterialEjSt4lessIS4_ESaISt4pairIKS4_jEEE", !36, i64 0}
!36 = !{!"_ZTSSt8_Rb_treeIPKN6Assimp3FBX8MaterialESt4pairIKS4_jESt10_Select1stIS7_ESt4lessIS4_ESaIS7_EE", !37, i64 0}
!37 = !{!"_ZTSNSt8_Rb_treeIPKN6Assimp3FBX8MaterialESt4pairIKS4_jESt10_Select1stIS7_ESt4lessIS4_ESaIS7_EE13_Rb_tree_implISB_Lb1EEE", !38, i64 0, !40, i64 8}
!38 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIPKN6Assimp3FBX8MaterialEEE", !39, i64 0}
!39 = !{!"_ZTSSt4lessIPKN6Assimp3FBX8MaterialEE"}
!40 = !{!"_ZTSSt15_Rb_tree_header", !41, i64 0, !43, i64 32}
!41 = !{!"_ZTSSt18_Rb_tree_node_base", !42, i64 0, !14, i64 8, !14, i64 16, !14, i64 24}
!42 = !{!"_ZTSSt14_Rb_tree_color", !8, i64 0}
!43 = !{!"long", !8, i64 0}
!44 = !{!"_ZTSSt3mapIPKN6Assimp3FBX5VideoEjSt4lessIS4_ESaISt4pairIKS4_jEEE", !45, i64 0}
!45 = !{!"_ZTSSt8_Rb_treeIPKN6Assimp3FBX5VideoESt4pairIKS4_jESt10_Select1stIS7_ESt4lessIS4_ESaIS7_EE", !46, i64 0}
!46 = !{!"_ZTSNSt8_Rb_treeIPKN6Assimp3FBX5VideoESt4pairIKS4_jESt10_Select1stIS7_ESt4lessIS4_ESaIS7_EE13_Rb_tree_implISB_Lb1EEE", !47, i64 0, !40, i64 8}
!47 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIPKN6Assimp3FBX5VideoEEE", !48, i64 0}
!48 = !{!"_ZTSSt4lessIPKN6Assimp3FBX5VideoEE"}
!49 = !{!"_ZTSSt3mapIPKN6Assimp3FBX8GeometryESt6vectorIjSaIjEESt4lessIS4_ESaISt4pairIKS4_S7_EEE", !50, i64 0}
!50 = !{!"_ZTSSt8_Rb_treeIPKN6Assimp3FBX8GeometryESt4pairIKS4_St6vectorIjSaIjEEESt10_Select1stISA_ESt4lessIS4_ESaISA_EE", !51, i64 0}
!51 = !{!"_ZTSNSt8_Rb_treeIPKN6Assimp3FBX8GeometryESt4pairIKS4_St6vectorIjSaIjEEESt10_Select1stISA_ESt4lessIS4_ESaISA_EE13_Rb_tree_implISE_Lb1EEE", !52, i64 0, !40, i64 8}
!52 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIPKN6Assimp3FBX8GeometryEEE", !53, i64 0}
!53 = !{!"_ZTSSt4lessIPKN6Assimp3FBX8GeometryEE"}
!54 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjSt4lessIS5_ESaISt4pairIKS5_jEEE", !55, i64 0}
!55 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_jESt10_Select1stIS8_ESt4lessIS5_ESaIS8_EE", !56, i64 0}
!56 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_jESt10_Select1stIS8_ESt4lessIS5_ESaIS8_EE13_Rb_tree_implISC_Lb1EEE", !57, i64 0, !40, i64 8}
!57 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE", !58, i64 0}
!58 = !{!"_ZTSSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE"}
!59 = !{!"_ZTSSt3mapIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP6aiBoneSt4lessIS6_ESaISt4pairIS6_S8_EEE", !60, i64 0}
!60 = !{!"_ZTSSt8_Rb_treeIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIS6_P6aiBoneESt10_Select1stISA_ESt4lessIS6_ESaISA_EE", !61, i64 0}
!61 = !{!"_ZTSNSt8_Rb_treeIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIS6_P6aiBoneESt10_Select1stISA_ESt4lessIS6_ESaISA_EE13_Rb_tree_implISE_Lb1EEE", !62, i64 0, !40, i64 8}
!62 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE", !63, i64 0}
!63 = !{!"_ZTSSt4lessIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE"}
!64 = !{!"double", !8, i64 0}
!65 = !{!"_ZTSSt6vectorIP10aiSkeletonSaIS1_EE", !66, i64 0}
!66 = !{!"_ZTSSt12_Vector_baseIP10aiSkeletonSaIS1_EE", !67, i64 0}
!67 = !{!"_ZTSNSt12_Vector_baseIP10aiSkeletonSaIS1_EE12_Vector_implE", !68, i64 0}
!68 = !{!"_ZTSNSt12_Vector_baseIP10aiSkeletonSaIS1_EE17_Vector_impl_dataE", !14, i64 0, !14, i64 8, !14, i64 16}
!69 = !{!"bool", !8, i64 0}
!70 = !{!71, !69, i64 8}
!71 = !{!"_ZTSN6Assimp3FBX14ImportSettingsE", !69, i64 0, !69, i64 1, !69, i64 2, !69, i64 3, !69, i64 4, !69, i64 5, !69, i64 6, !69, i64 7, !69, i64 8, !69, i64 9, !69, i64 10, !69, i64 11, !69, i64 12, !69, i64 13, !69, i64 14}
!72 = !{i8 0, i8 2}
!73 = !{}
!74 = !{!7, !7, i64 0}
!75 = distinct !{!75, !76}
!76 = !{!"llvm.loop.mustprogress"}
!77 = !{!78, !7, i64 4}
!78 = !{!"_ZTS6aiMesh", !7, i64 0, !7, i64 4, !7, i64 8, !14, i64 16, !14, i64 24, !14, i64 32, !14, i64 40, !8, i64 48, !8, i64 112, !8, i64 176, !14, i64 208, !7, i64 216, !14, i64 224, !7, i64 232, !79, i64 236, !7, i64 1264, !14, i64 1272, !80, i64 1280, !81, i64 1284, !14, i64 1312}
!79 = !{!"_ZTS8aiString", !7, i64 0, !8, i64 4}
!80 = !{!"_ZTS16aiMorphingMethod", !8, i64 0}
!81 = !{!"_ZTS6aiAABB", !82, i64 0, !82, i64 12}
!82 = !{!"_ZTS10aiVector3tIfE", !83, i64 0, !83, i64 4, !83, i64 8}
!83 = !{!"float", !8, i64 0}
!84 = !{!78, !14, i64 16}
!85 = !{!78, !7, i64 8}
!86 = !{!78, !14, i64 208}
!87 = !{!78, !14, i64 24}
!88 = !{!83, !83, i64 0}
!89 = distinct !{!89, !76}
!90 = !{!78, !14, i64 32}
!91 = !{!78, !14, i64 40}
!92 = !{!14, !14, i64 0}
!93 = !{!94, !7, i64 0}
!94 = !{!"_ZTS6aiFace", !7, i64 0, !14, i64 8}
!95 = !{!94, !14, i64 8}
!96 = !{!78, !7, i64 0}
!97 = !{i64 0, i64 4, !88, i64 4, i64 4, !88, i64 8, i64 4, !88}
!98 = !{!99, !83, i64 0}
!99 = !{!"_ZTS10aiVector2tIfE", !83, i64 0, !83, i64 4}
!100 = !{!99, !83, i64 4}
!101 = distinct !{!101, !76}
!102 = distinct !{!102, !76}
!103 = !{i64 0, i64 4, !88, i64 4, i64 4, !88, i64 8, i64 4, !88, i64 12, i64 4, !88}
!104 = distinct !{!104, !76}
!105 = distinct !{!105, !76}
!106 = distinct !{!106, !76}
!107 = !{!108, !14, i64 1032}
!108 = !{!"_ZTS10aiAnimMesh", !79, i64 0, !14, i64 1032, !14, i64 1040, !14, i64 1048, !14, i64 1056, !8, i64 1064, !8, i64 1128, !7, i64 1192, !83, i64 1196}
!109 = !{!108, !14, i64 1040}
!110 = distinct !{!110, !76}
!111 = !{!108, !83, i64 1196}
!112 = !{!78, !7, i64 1264}
!113 = !{!78, !14, i64 1272}
!114 = distinct !{!114, !76}


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