; 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.__gnu_cxx::__normal_iterator.228" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.221" = type { 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.__gnu_cxx::__normal_iterator.229" = type { ptr }
%struct.aiString = type { i32, [1024 x i8] }
%"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.230" = type { ptr }
%"struct.Assimp::FBX::SkeletonBoneContainer" = type { %"class.std::vector", %"class.std::map.231" }
%"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::map.231" = type { %"class.std::_Rb_tree.232" }
%"class.std::_Rb_tree.232" = type { %"struct.std::_Rb_tree<aiMesh *, std::pair<aiMesh *const, std::vector<aiSkeletonBone *> *>, std::_Select1st<std::pair<aiMesh *const, std::vector<aiSkeletonBone *> *>>, std::less<aiMesh *>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<aiMesh *, std::pair<aiMesh *const, std::vector<aiSkeletonBone *> *>, std::_Select1st<std::pair<aiMesh *const, std::vector<aiSkeletonBone *> *>>, std::less<aiMesh *>>::_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.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.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.aiAABB = type { %class.aiVector3t, %class.aiVector3t }
%struct.aiFace = type { i32, ptr }
%class.aiVector2t = type { float, float }
%class.aiColor4t = type { float, float, float, float }
%"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.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.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.59 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [2 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: mustprogress nounwind uwtable
declare noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32)) #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 uwtable
declare noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) #6 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 @_ZN8aiStringC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 4 dereferenceable(1028), ptr noundef nonnull align 8 dereferenceable(32)) 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 ptr @_ZNKSt6vectorIjSaIjEE3endEv(ptr noundef nonnull align 8 dereferenceable(24)) #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 noundef zeroext i1 @_ZNKSt6vectorIiSaIiEE5emptyEv(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 @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #0 align 2

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN6Assimp3FBX12FBXConverter25ConvertMeshSingleMaterialERKNS0_12MeshGeometryERKNS0_5ModelERK12aiMatrix4x4tIfEP6aiNodeSD_(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, ptr noundef %4, ptr noundef %5) #7 align 2 personality ptr @__gxx_personality_v0 {
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca %"class.__gnu_cxx::__normal_iterator.228", align 8
  %18 = alloca %"class.__gnu_cxx::__normal_iterator.228", align 8
  %19 = alloca ptr, align 8
  %20 = alloca i32, align 4
  %21 = alloca ptr, align 8
  %22 = alloca %"class.__gnu_cxx::__normal_iterator.221", align 8
  %23 = alloca %"class.__gnu_cxx::__normal_iterator.221", align 8
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca ptr, align 8
  %27 = alloca i32, align 4
  %28 = alloca ptr, align 8
  %29 = alloca %"class.__gnu_cxx::__normal_iterator.228", align 8
  %30 = alloca %"class.__gnu_cxx::__normal_iterator.228", align 8
  %31 = alloca ptr, align 8
  %32 = alloca ptr, align 8
  %33 = alloca %"class.std::vector.206", align 8
  %34 = alloca ptr, align 8
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca %class.aiVector3t, align 4
  %38 = alloca { <2 x float>, float }, align 8
  %39 = alloca %"class.__gnu_cxx::__normal_iterator.228", align 8
  %40 = alloca %"class.__gnu_cxx::__normal_iterator.228", align 8
  %41 = alloca %"class.__gnu_cxx::__normal_iterator.228", align 8
  %42 = alloca %"class.__gnu_cxx::__normal_iterator.228", align 8
  %43 = alloca i32, align 4
  %44 = alloca ptr, align 8
  %45 = alloca ptr, align 8
  %46 = alloca ptr, align 8
  %47 = alloca %"class.__gnu_cxx::__normal_iterator.229", align 8
  %48 = alloca %"class.__gnu_cxx::__normal_iterator.229", align 8
  %49 = alloca ptr, align 8
  %50 = alloca %class.aiVector3t, align 4
  %51 = alloca %struct.aiString, align 4
  %52 = alloca %"class.std::__cxx11::basic_string", align 8
  %53 = alloca i32, align 4
  %54 = alloca ptr, align 8
  %55 = alloca %"class.__gnu_cxx::__normal_iterator.230", align 8
  %56 = alloca %"class.__gnu_cxx::__normal_iterator.230", align 8
  %57 = alloca %"struct.Assimp::FBX::SkeletonBoneContainer", align 8
  %58 = alloca ptr, align 8
  %59 = alloca %"class.std::vector.237", align 8
  %60 = alloca ptr, align 8
  %61 = alloca %"struct.std::__detail::_Node_const_iterator", align 8
  %62 = alloca %"struct.std::__detail::_Node_const_iterator", align 8
  %63 = alloca ptr, align 8
  %64 = alloca ptr, align 8
  %65 = alloca %"struct.std::__detail::_Node_const_iterator.262", align 8
  %66 = alloca %"struct.std::__detail::_Node_const_iterator.262", align 8
  %67 = alloca ptr, align 8
  %68 = alloca ptr, align 8
  %69 = alloca ptr, align 8
  %70 = alloca %"struct.std::__detail::_Node_const_iterator.289", align 8
  %71 = alloca %"struct.std::__detail::_Node_const_iterator.289", align 8
  %72 = alloca ptr, align 8
  %73 = alloca ptr, align 8
  %74 = alloca ptr, align 8
  %75 = alloca ptr, align 8
  %76 = alloca ptr, align 8
  %77 = alloca %"class.std::__cxx11::basic_string", align 8
  %78 = alloca %"class.std::__cxx11::basic_string", align 8
  %79 = alloca %"class.std::__cxx11::basic_string", align 8
  %80 = alloca i64, align 8
  %81 = alloca i32, align 4
  %82 = alloca %class.aiVector3t, align 4
  %83 = alloca %class.aiVector3t, align 4
  %84 = alloca i32, align 4
  %85 = alloca ptr, align 8
  %86 = alloca i32, align 4
  %87 = alloca i32, align 4
  %88 = alloca i64, align 8
  %89 = alloca i64, align 8
  store ptr %0, ptr %7, align 8, !tbaa !5
  store ptr %1, ptr %8, align 8, !tbaa !5
  store ptr %2, ptr %9, align 8, !tbaa !5
  store ptr %3, ptr %10, align 8, !tbaa !5
  store ptr %4, ptr %11, align 8, !tbaa !5
  store ptr %5, ptr %12, align 8, !tbaa !5
  %90 = load ptr, ptr %7, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #11
  %91 = load ptr, ptr %8, align 8, !tbaa !5
  %92 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX12MeshGeometry18GetMaterialIndicesEv(ptr noundef nonnull align 8 dereferenceable(1000) %91)
  store ptr %92, ptr %13, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #11
  %93 = load ptr, ptr %8, align 8, !tbaa !5
  %94 = load ptr, ptr %11, align 8, !tbaa !5
  %95 = call noundef ptr @_ZN6Assimp3FBX12FBXConverter14SetupEmptyMeshERKNS0_8GeometryEP6aiNode(ptr noundef nonnull align 8 dereferenceable(489) %90, ptr noundef nonnull align 8 dereferenceable(120) %93, ptr noundef %94)
  store ptr %95, ptr %14, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #11
  %96 = load ptr, ptr %8, align 8, !tbaa !5
  %97 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX12MeshGeometry11GetVerticesEv(ptr noundef nonnull align 8 dereferenceable(1000) %96)
  store ptr %97, ptr %15, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #11
  %98 = load ptr, ptr %8, align 8, !tbaa !5
  %99 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX12MeshGeometry18GetFaceIndexCountsEv(ptr noundef nonnull align 8 dereferenceable(1000) %98)
  store ptr %99, ptr %16, align 8, !tbaa !5
  %100 = load ptr, ptr %15, align 8, !tbaa !5
  %101 = call noundef i64 @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %100) #11
  %102 = trunc i64 %101 to i32
  %103 = load ptr, ptr %14, align 8, !tbaa !5
  %104 = getelementptr inbounds %struct.aiMesh, ptr %103, i32 0, i32 1
  store i32 %102, ptr %104, align 4, !tbaa !9
  %105 = load ptr, ptr %15, align 8, !tbaa !5
  %106 = call noundef i64 @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %105) #11
  %107 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %106, i64 12)
  %108 = extractvalue { i64, i1 } %107, 1
  %109 = extractvalue { i64, i1 } %107, 0
  %110 = select i1 %108, i64 -1, i64 %109
  %111 = call noalias noundef nonnull ptr @_Znam(i64 noundef %110) #12
  %112 = icmp eq i64 %106, 0
  br i1 %112, label %119, label %113

113:                                              ; preds = %6
  %114 = getelementptr inbounds %class.aiVector3t, ptr %111, i64 %106
  br label %115

115:                                              ; preds = %115, %113
  %116 = phi ptr [ %111, %113 ], [ %117, %115 ]
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %116) #11
  %117 = getelementptr inbounds %class.aiVector3t, ptr %116, i64 1
  %118 = icmp eq ptr %117, %114
  br i1 %118, label %119, label %115

119:                                              ; preds = %115, %6
  %120 = load ptr, ptr %14, align 8, !tbaa !5
  %121 = getelementptr inbounds %struct.aiMesh, ptr %120, i32 0, i32 3
  store ptr %111, ptr %121, align 8, !tbaa !17
  %122 = load ptr, ptr %15, align 8, !tbaa !5
  %123 = call ptr @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %122) #11
  %124 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.228", ptr %17, i32 0, i32 0
  store ptr %123, ptr %124, align 8
  %125 = load ptr, ptr %15, align 8, !tbaa !5
  %126 = call ptr @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %125) #11
  %127 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.228", ptr %18, i32 0, i32 0
  store ptr %126, ptr %127, align 8
  %128 = load ptr, ptr %14, align 8, !tbaa !5
  %129 = getelementptr inbounds %struct.aiMesh, ptr %128, i32 0, i32 3
  %130 = load ptr, ptr %129, align 8, !tbaa !17
  %131 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.228", ptr %17, i32 0, i32 0
  %132 = load ptr, ptr %131, align 8
  %133 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.228", ptr %18, i32 0, i32 0
  %134 = load ptr, ptr %133, align 8
  %135 = call noundef ptr @_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPK10aiVector3tIfESt6vectorIS3_SaIS3_EEEEPS3_ET0_T_SC_SB_(ptr %132, ptr %134, ptr noundef %130)
  %136 = load ptr, ptr %16, align 8, !tbaa !5
  %137 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %136) #11
  %138 = trunc i64 %137 to i32
  %139 = load ptr, ptr %14, align 8, !tbaa !5
  %140 = getelementptr inbounds %struct.aiMesh, ptr %139, i32 0, i32 2
  store i32 %138, ptr %140, align 8, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #11
  %141 = load ptr, ptr %16, align 8, !tbaa !5
  %142 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %141) #11
  %143 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %142, i64 16)
  %144 = extractvalue { i64, i1 } %143, 1
  %145 = extractvalue { i64, i1 } %143, 0
  %146 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %145, i64 8)
  %147 = extractvalue { i64, i1 } %146, 1
  %148 = or i1 %144, %147
  %149 = extractvalue { i64, i1 } %146, 0
  %150 = select i1 %148, i64 -1, i64 %149
  %151 = call noalias noundef nonnull ptr @_Znam(i64 noundef %150) #12
  store i64 %142, ptr %151, align 16
  %152 = getelementptr inbounds i8, ptr %151, i64 8
  %153 = icmp eq i64 %142, 0
  br i1 %153, label %160, label %154

154:                                              ; preds = %119
  %155 = getelementptr inbounds %struct.aiFace, ptr %152, i64 %142
  br label %156

156:                                              ; preds = %156, %154
  %157 = phi ptr [ %152, %154 ], [ %158, %156 ]
  call void @_ZN6aiFaceC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %157) #11
  %158 = getelementptr inbounds %struct.aiFace, ptr %157, i64 1
  %159 = icmp eq ptr %158, %155
  br i1 %159, label %160, label %156

160:                                              ; preds = %156, %119
  %161 = load ptr, ptr %14, align 8, !tbaa !5
  %162 = getelementptr inbounds %struct.aiMesh, ptr %161, i32 0, i32 10
  store ptr %152, ptr %162, align 8, !tbaa !19
  store ptr %152, ptr %19, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #11
  store i32 0, ptr %20, align 4, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #11
  %163 = load ptr, ptr %16, align 8, !tbaa !5
  store ptr %163, ptr %21, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #11
  %164 = load ptr, ptr %21, align 8, !tbaa !5
  %165 = call ptr @_ZNKSt6vectorIjSaIjEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %164) #11
  %166 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.221", ptr %22, i32 0, i32 0
  store ptr %165, ptr %166, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #11
  %167 = load ptr, ptr %21, align 8, !tbaa !5
  %168 = call ptr @_ZNKSt6vectorIjSaIjEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %167) #11
  %169 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.221", ptr %23, i32 0, i32 0
  store ptr %168, ptr %169, align 8
  br label %170

170:                                              ; preds = %230, %160
  %171 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKjSt6vectorIjSaIjEEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 8 dereferenceable(8) %23) #11
  br i1 %171, label %173, label %172

172:                                              ; preds = %170
  store i32 2, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #11
  br label %232

173:                                              ; preds = %170
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #11
  %174 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKjSt6vectorIjSaIjEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %22) #11
  %175 = load i32, ptr %174, align 4, !tbaa !20
  store i32 %175, ptr %25, align 4, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #11
  %176 = load ptr, ptr %19, align 8, !tbaa !5
  %177 = getelementptr inbounds %struct.aiFace, ptr %176, i32 1
  store ptr %177, ptr %19, align 8, !tbaa !5
  store ptr %176, ptr %26, align 8, !tbaa !5
  %178 = load i32, ptr %25, align 4, !tbaa !20
  %179 = load ptr, ptr %26, align 8, !tbaa !5
  %180 = getelementptr inbounds %struct.aiFace, ptr %179, i32 0, i32 0
  store i32 %178, ptr %180, align 8, !tbaa !21
  %181 = load i32, ptr %25, align 4, !tbaa !20
  %182 = zext i32 %181 to i64
  %183 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %182, i64 4)
  %184 = extractvalue { i64, i1 } %183, 1
  %185 = extractvalue { i64, i1 } %183, 0
  %186 = select i1 %184, i64 -1, i64 %185
  %187 = call noalias noundef nonnull ptr @_Znam(i64 noundef %186) #12
  %188 = load ptr, ptr %26, align 8, !tbaa !5
  %189 = getelementptr inbounds %struct.aiFace, ptr %188, i32 0, i32 1
  store ptr %187, ptr %189, align 8, !tbaa !23
  %190 = load i32, ptr %25, align 4, !tbaa !20
  switch i32 %190, label %206 [
    i32 1, label %191
    i32 2, label %196
    i32 3, label %201
  ]

191:                                              ; preds = %173
  %192 = load ptr, ptr %14, align 8, !tbaa !5
  %193 = getelementptr inbounds %struct.aiMesh, ptr %192, i32 0, i32 0
  %194 = load i32, ptr %193, align 8, !tbaa !24
  %195 = or i32 %194, 1
  store i32 %195, ptr %193, align 8, !tbaa !24
  br label %211

196:                                              ; preds = %173
  %197 = load ptr, ptr %14, align 8, !tbaa !5
  %198 = getelementptr inbounds %struct.aiMesh, ptr %197, i32 0, i32 0
  %199 = load i32, ptr %198, align 8, !tbaa !24
  %200 = or i32 %199, 2
  store i32 %200, ptr %198, align 8, !tbaa !24
  br label %211

201:                                              ; preds = %173
  %202 = load ptr, ptr %14, align 8, !tbaa !5
  %203 = getelementptr inbounds %struct.aiMesh, ptr %202, i32 0, i32 0
  %204 = load i32, ptr %203, align 8, !tbaa !24
  %205 = or i32 %204, 4
  store i32 %205, ptr %203, align 8, !tbaa !24
  br label %211

206:                                              ; preds = %173
  %207 = load ptr, ptr %14, align 8, !tbaa !5
  %208 = getelementptr inbounds %struct.aiMesh, ptr %207, i32 0, i32 0
  %209 = load i32, ptr %208, align 8, !tbaa !24
  %210 = or i32 %209, 8
  store i32 %210, ptr %208, align 8, !tbaa !24
  br label %211

211:                                              ; preds = %206, %201, %196, %191
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #11
  store i32 0, ptr %27, align 4, !tbaa !20
  br label %212

212:                                              ; preds = %226, %211
  %213 = load i32, ptr %27, align 4, !tbaa !20
  %214 = load i32, ptr %25, align 4, !tbaa !20
  %215 = icmp ult i32 %213, %214
  br i1 %215, label %217, label %216

216:                                              ; preds = %212
  store i32 5, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #11
  br label %229

217:                                              ; preds = %212
  %218 = load i32, ptr %20, align 4, !tbaa !20
  %219 = add i32 %218, 1
  store i32 %219, ptr %20, align 4, !tbaa !20
  %220 = load ptr, ptr %26, align 8, !tbaa !5
  %221 = getelementptr inbounds %struct.aiFace, ptr %220, i32 0, i32 1
  %222 = load ptr, ptr %221, align 8, !tbaa !23
  %223 = load i32, ptr %27, align 4, !tbaa !20
  %224 = zext i32 %223 to i64
  %225 = getelementptr inbounds i32, ptr %222, i64 %224
  store i32 %218, ptr %225, align 4, !tbaa !20
  br label %226

226:                                              ; preds = %217
  %227 = load i32, ptr %27, align 4, !tbaa !20
  %228 = add i32 %227, 1
  store i32 %228, ptr %27, align 4, !tbaa !20
  br label %212, !llvm.loop !25

229:                                              ; preds = %216
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #11
  br label %230

230:                                              ; preds = %229
  %231 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKjSt6vectorIjSaIjEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %22) #11
  br label %170

232:                                              ; preds = %172
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #11
  %233 = load ptr, ptr %8, align 8, !tbaa !5
  %234 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX12MeshGeometry10GetNormalsEv(ptr noundef nonnull align 8 dereferenceable(1000) %233)
  store ptr %234, ptr %28, align 8, !tbaa !5
  %235 = load ptr, ptr %28, align 8, !tbaa !5
  %236 = call noundef i64 @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %235) #11
  %237 = icmp ne i64 %236, 0
  br i1 %237, label %238, label %278

238:                                              ; preds = %232
  %239 = load ptr, ptr %28, align 8, !tbaa !5
  %240 = call noundef i64 @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %239) #11
  %241 = load ptr, ptr %15, align 8, !tbaa !5
  %242 = call noundef i64 @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %241) #11
  %243 = icmp eq i64 %240, %242
  br i1 %243, label %245, label %244

244:                                              ; preds = %238
  call void @_ZN6Assimp17aiAssertViolationEPKcS1_i(ptr noundef @.str.56, ptr noundef @.str.5, i32 noundef 1161)
  br label %245

245:                                              ; preds = %244, %238
  %246 = phi i1 [ true, %238 ], [ false, %244 ]
  %247 = load ptr, ptr %15, align 8, !tbaa !5
  %248 = call noundef i64 @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %247) #11
  %249 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %248, i64 12)
  %250 = extractvalue { i64, i1 } %249, 1
  %251 = extractvalue { i64, i1 } %249, 0
  %252 = select i1 %250, i64 -1, i64 %251
  %253 = call noalias noundef nonnull ptr @_Znam(i64 noundef %252) #12
  %254 = icmp eq i64 %248, 0
  br i1 %254, label %261, label %255

255:                                              ; preds = %245
  %256 = getelementptr inbounds %class.aiVector3t, ptr %253, i64 %248
  br label %257

257:                                              ; preds = %257, %255
  %258 = phi ptr [ %253, %255 ], [ %259, %257 ]
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %258) #11
  %259 = getelementptr inbounds %class.aiVector3t, ptr %258, i64 1
  %260 = icmp eq ptr %259, %256
  br i1 %260, label %261, label %257

261:                                              ; preds = %257, %245
  %262 = load ptr, ptr %14, align 8, !tbaa !5
  %263 = getelementptr inbounds %struct.aiMesh, ptr %262, i32 0, i32 4
  store ptr %253, ptr %263, align 8, !tbaa !27
  %264 = load ptr, ptr %28, align 8, !tbaa !5
  %265 = call ptr @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %264) #11
  %266 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.228", ptr %29, i32 0, i32 0
  store ptr %265, ptr %266, align 8
  %267 = load ptr, ptr %28, align 8, !tbaa !5
  %268 = call ptr @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %267) #11
  %269 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.228", ptr %30, i32 0, i32 0
  store ptr %268, ptr %269, align 8
  %270 = load ptr, ptr %14, align 8, !tbaa !5
  %271 = getelementptr inbounds %struct.aiMesh, ptr %270, i32 0, i32 4
  %272 = load ptr, ptr %271, align 8, !tbaa !27
  %273 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.228", ptr %29, i32 0, i32 0
  %274 = load ptr, ptr %273, align 8
  %275 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.228", ptr %30, i32 0, i32 0
  %276 = load ptr, ptr %275, align 8
  %277 = call noundef ptr @_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPK10aiVector3tIfESt6vectorIS3_SaIS3_EEEEPS3_ET0_T_SC_SB_(ptr %274, ptr %276, ptr noundef %272)
  br label %278

278:                                              ; preds = %261, %232
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #11
  %279 = load ptr, ptr %8, align 8, !tbaa !5
  %280 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX12MeshGeometry11GetTangentsEv(ptr noundef nonnull align 8 dereferenceable(1000) %279)
  store ptr %280, ptr %31, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #11
  %281 = load ptr, ptr %8, align 8, !tbaa !5
  %282 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX12MeshGeometry12GetBinormalsEv(ptr noundef nonnull align 8 dereferenceable(1000) %281)
  store ptr %282, ptr %32, align 8, !tbaa !5
  %283 = load ptr, ptr %31, align 8, !tbaa !5
  %284 = call noundef i64 @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %283) #11
  %285 = icmp ne i64 %284, 0
  br i1 %285, label %286, label %423

286:                                              ; preds = %278
  call void @llvm.lifetime.start.p0(i64 24, ptr %33) #11
  call void @_ZNSt6vectorI10aiVector3tIfESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %33) #11
  %287 = load ptr, ptr %32, align 8, !tbaa !5
  %288 = call noundef i64 @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %287) #11
  %289 = icmp ne i64 %288, 0
  br i1 %289, label %333, label %290

290:                                              ; preds = %286
  %291 = load ptr, ptr %28, align 8, !tbaa !5
  %292 = call noundef i64 @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %291) #11
  %293 = icmp ne i64 %292, 0
  br i1 %293, label %294, label %331

294:                                              ; preds = %290
  %295 = load ptr, ptr %28, align 8, !tbaa !5
  %296 = call noundef i64 @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %295) #11
  invoke void @_ZNSt6vectorI10aiVector3tIfESaIS1_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %33, i64 noundef %296)
          to label %297 unwind label %305

297:                                              ; preds = %294
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #11
  store i32 0, ptr %36, align 4, !tbaa !20
  br label %298

298:                                              ; preds = %323, %297
  %299 = load i32, ptr %36, align 4, !tbaa !20
  %300 = zext i32 %299 to i64
  %301 = load ptr, ptr %31, align 8, !tbaa !5
  %302 = call noundef i64 @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %301) #11
  %303 = icmp ult i64 %300, %302
  br i1 %303, label %309, label %304

304:                                              ; preds = %298
  store i32 8, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #11
  br label %330

305:                                              ; preds = %403, %387, %370, %353, %351, %342, %294
  %306 = landingpad { ptr, i32 }
          cleanup
  %307 = extractvalue { ptr, i32 } %306, 0
  store ptr %307, ptr %34, align 8
  %308 = extractvalue { ptr, i32 } %306, 1
  store i32 %308, ptr %35, align 4
  br label %422

309:                                              ; preds = %298
  call void @llvm.lifetime.start.p0(i64 12, ptr %37) #11
  %310 = load ptr, ptr %28, align 8, !tbaa !5
  %311 = load i32, ptr %36, align 4, !tbaa !20
  %312 = zext i32 %311 to i64
  %313 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNKSt6vectorI10aiVector3tIfESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %310, i64 noundef %312) #11
  %314 = load ptr, ptr %31, align 8, !tbaa !5
  %315 = load i32, ptr %36, align 4, !tbaa !20
  %316 = zext i32 %315 to i64
  %317 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNKSt6vectorI10aiVector3tIfESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %314, i64 noundef %316) #11
  %318 = invoke { <2 x float>, float } @_ZeoIfE10aiVector3tIT_ERKS2_S4_(ptr noundef nonnull align 4 dereferenceable(12) %313, ptr noundef nonnull align 4 dereferenceable(12) %317)
          to label %319 unwind label %326

319:                                              ; preds = %309
  store { <2 x float>, float } %318, ptr %38, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %37, ptr align 8 %38, i64 12, i1 false)
  %320 = load i32, ptr %36, align 4, !tbaa !20
  %321 = zext i32 %320 to i64
  %322 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorI10aiVector3tIfESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %33, i64 noundef %321) #11
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %322, ptr align 4 %37, i64 12, i1 false), !tbaa.struct !28
  call void @llvm.lifetime.end.p0(i64 12, ptr %37) #11
  br label %323

323:                                              ; preds = %319
  %324 = load i32, ptr %36, align 4, !tbaa !20
  %325 = add i32 %324, 1
  store i32 %325, ptr %36, align 4, !tbaa !20
  br label %298, !llvm.loop !30

326:                                              ; preds = %309
  %327 = landingpad { ptr, i32 }
          cleanup
  %328 = extractvalue { ptr, i32 } %327, 0
  store ptr %328, ptr %34, align 8
  %329 = extractvalue { ptr, i32 } %327, 1
  store i32 %329, ptr %35, align 4
  call void @llvm.lifetime.end.p0(i64 12, ptr %37) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #11
  br label %422

330:                                              ; preds = %304
  store ptr %33, ptr %32, align 8, !tbaa !5
  br label %332

331:                                              ; preds = %290
  store ptr null, ptr %32, align 8, !tbaa !5
  br label %332

332:                                              ; preds = %331, %330
  br label %333

333:                                              ; preds = %332, %286
  %334 = load ptr, ptr %32, align 8, !tbaa !5
  %335 = icmp ne ptr %334, null
  br i1 %335, label %336, label %421

336:                                              ; preds = %333
  %337 = load ptr, ptr %31, align 8, !tbaa !5
  %338 = call noundef i64 @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %337) #11
  %339 = load ptr, ptr %15, align 8, !tbaa !5
  %340 = call noundef i64 @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %339) #11
  %341 = icmp eq i64 %338, %340
  br i1 %341, label %344, label %342

342:                                              ; preds = %336
  invoke void @_ZN6Assimp17aiAssertViolationEPKcS1_i(ptr noundef @.str.57, ptr noundef @.str.5, i32 noundef 1189)
          to label %343 unwind label %305

343:                                              ; preds = %342
  br label %344

344:                                              ; preds = %343, %336
  %345 = phi i1 [ true, %336 ], [ false, %343 ]
  %346 = load ptr, ptr %32, align 8, !tbaa !5
  %347 = call noundef i64 @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %346) #11
  %348 = load ptr, ptr %15, align 8, !tbaa !5
  %349 = call noundef i64 @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %348) #11
  %350 = icmp eq i64 %347, %349
  br i1 %350, label %353, label %351

351:                                              ; preds = %344
  invoke void @_ZN6Assimp17aiAssertViolationEPKcS1_i(ptr noundef @.str.58, ptr noundef @.str.5, i32 noundef 1190)
          to label %352 unwind label %305

352:                                              ; preds = %351
  br label %353

353:                                              ; preds = %352, %344
  %354 = phi i1 [ true, %344 ], [ false, %352 ]
  %355 = load ptr, ptr %15, align 8, !tbaa !5
  %356 = call noundef i64 @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %355) #11
  %357 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %356, i64 12)
  %358 = extractvalue { i64, i1 } %357, 1
  %359 = extractvalue { i64, i1 } %357, 0
  %360 = select i1 %358, i64 -1, i64 %359
  %361 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %360) #12
          to label %362 unwind label %305

362:                                              ; preds = %353
  %363 = icmp eq i64 %356, 0
  br i1 %363, label %370, label %364

364:                                              ; preds = %362
  %365 = getelementptr inbounds %class.aiVector3t, ptr %361, i64 %356
  br label %366

366:                                              ; preds = %366, %364
  %367 = phi ptr [ %361, %364 ], [ %368, %366 ]
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %367) #11
  %368 = getelementptr inbounds %class.aiVector3t, ptr %367, i64 1
  %369 = icmp eq ptr %368, %365
  br i1 %369, label %370, label %366

370:                                              ; preds = %366, %362
  %371 = load ptr, ptr %14, align 8, !tbaa !5
  %372 = getelementptr inbounds %struct.aiMesh, ptr %371, i32 0, i32 5
  store ptr %361, ptr %372, align 8, !tbaa !31
  %373 = load ptr, ptr %31, align 8, !tbaa !5
  %374 = call ptr @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %373) #11
  %375 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.228", ptr %39, i32 0, i32 0
  store ptr %374, ptr %375, align 8
  %376 = load ptr, ptr %31, align 8, !tbaa !5
  %377 = call ptr @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %376) #11
  %378 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.228", ptr %40, i32 0, i32 0
  store ptr %377, ptr %378, align 8
  %379 = load ptr, ptr %14, align 8, !tbaa !5
  %380 = getelementptr inbounds %struct.aiMesh, ptr %379, i32 0, i32 5
  %381 = load ptr, ptr %380, align 8, !tbaa !31
  %382 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.228", ptr %39, i32 0, i32 0
  %383 = load ptr, ptr %382, align 8
  %384 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.228", ptr %40, i32 0, i32 0
  %385 = load ptr, ptr %384, align 8
  %386 = invoke noundef ptr @_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPK10aiVector3tIfESt6vectorIS3_SaIS3_EEEEPS3_ET0_T_SC_SB_(ptr %383, ptr %385, ptr noundef %381)
          to label %387 unwind label %305

387:                                              ; preds = %370
  %388 = load ptr, ptr %15, align 8, !tbaa !5
  %389 = call noundef i64 @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %388) #11
  %390 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %389, i64 12)
  %391 = extractvalue { i64, i1 } %390, 1
  %392 = extractvalue { i64, i1 } %390, 0
  %393 = select i1 %391, i64 -1, i64 %392
  %394 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %393) #12
          to label %395 unwind label %305

395:                                              ; preds = %387
  %396 = icmp eq i64 %389, 0
  br i1 %396, label %403, label %397

397:                                              ; preds = %395
  %398 = getelementptr inbounds %class.aiVector3t, ptr %394, i64 %389
  br label %399

399:                                              ; preds = %399, %397
  %400 = phi ptr [ %394, %397 ], [ %401, %399 ]
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %400) #11
  %401 = getelementptr inbounds %class.aiVector3t, ptr %400, i64 1
  %402 = icmp eq ptr %401, %398
  br i1 %402, label %403, label %399

403:                                              ; preds = %399, %395
  %404 = load ptr, ptr %14, align 8, !tbaa !5
  %405 = getelementptr inbounds %struct.aiMesh, ptr %404, i32 0, i32 6
  store ptr %394, ptr %405, align 8, !tbaa !32
  %406 = load ptr, ptr %32, align 8, !tbaa !5
  %407 = call ptr @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %406) #11
  %408 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.228", ptr %41, i32 0, i32 0
  store ptr %407, ptr %408, align 8
  %409 = load ptr, ptr %32, align 8, !tbaa !5
  %410 = call ptr @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %409) #11
  %411 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.228", ptr %42, i32 0, i32 0
  store ptr %410, ptr %411, align 8
  %412 = load ptr, ptr %14, align 8, !tbaa !5
  %413 = getelementptr inbounds %struct.aiMesh, ptr %412, i32 0, i32 6
  %414 = load ptr, ptr %413, align 8, !tbaa !32
  %415 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.228", ptr %41, i32 0, i32 0
  %416 = load ptr, ptr %415, align 8
  %417 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.228", ptr %42, i32 0, i32 0
  %418 = load ptr, ptr %417, align 8
  %419 = invoke noundef ptr @_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPK10aiVector3tIfESt6vectorIS3_SaIS3_EEEEPS3_ET0_T_SC_SB_(ptr %416, ptr %418, ptr noundef %414)
          to label %420 unwind label %305

420:                                              ; preds = %403
  br label %421

421:                                              ; preds = %420, %333
  call void @_ZNSt6vectorI10aiVector3tIfESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %33) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %33) #11
  br label %423

422:                                              ; preds = %326, %305
  call void @_ZNSt6vectorI10aiVector3tIfESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %33) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %33) #11
  br label %964

423:                                              ; preds = %421, %278
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #11
  store i32 0, ptr %43, align 4, !tbaa !20
  br label %424

424:                                              ; preds = %493, %423
  %425 = load i32, ptr %43, align 4, !tbaa !20
  %426 = icmp ult i32 %425, 8
  br i1 %426, label %428, label %427

427:                                              ; preds = %424
  store i32 11, ptr %24, align 4
  br label %500

428:                                              ; preds = %424
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #11
  %429 = load ptr, ptr %8, align 8, !tbaa !5
  %430 = load i32, ptr %43, align 4, !tbaa !20
  %431 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX12MeshGeometry16GetTextureCoordsEj(ptr noundef nonnull align 8 dereferenceable(1000) %429, i32 noundef %430)
  store ptr %431, ptr %44, align 8, !tbaa !5
  %432 = load ptr, ptr %44, align 8, !tbaa !5
  %433 = call noundef zeroext i1 @_ZNKSt6vectorI10aiVector2tIfESaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %432) #11
  br i1 %433, label %434, label %435

434:                                              ; preds = %428
  store i32 11, ptr %24, align 4
  br label %490

435:                                              ; preds = %428
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #11
  %436 = load ptr, ptr %15, align 8, !tbaa !5
  %437 = call noundef i64 @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %436) #11
  %438 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %437, i64 12)
  %439 = extractvalue { i64, i1 } %438, 1
  %440 = extractvalue { i64, i1 } %438, 0
  %441 = select i1 %439, i64 -1, i64 %440
  %442 = call noalias noundef nonnull ptr @_Znam(i64 noundef %441) #12
  %443 = icmp eq i64 %437, 0
  br i1 %443, label %450, label %444

444:                                              ; preds = %435
  %445 = getelementptr inbounds %class.aiVector3t, ptr %442, i64 %437
  br label %446

446:                                              ; preds = %446, %444
  %447 = phi ptr [ %442, %444 ], [ %448, %446 ]
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %447) #11
  %448 = getelementptr inbounds %class.aiVector3t, ptr %447, i64 1
  %449 = icmp eq ptr %448, %445
  br i1 %449, label %450, label %446

450:                                              ; preds = %446, %435
  %451 = load ptr, ptr %14, align 8, !tbaa !5
  %452 = getelementptr inbounds %struct.aiMesh, ptr %451, i32 0, i32 8
  %453 = load i32, ptr %43, align 4, !tbaa !20
  %454 = zext i32 %453 to i64
  %455 = getelementptr inbounds [8 x ptr], ptr %452, i64 0, i64 %454
  store ptr %442, ptr %455, align 8, !tbaa !5
  store ptr %442, ptr %45, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #11
  %456 = load ptr, ptr %44, align 8, !tbaa !5
  store ptr %456, ptr %46, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #11
  %457 = load ptr, ptr %46, align 8, !tbaa !5
  %458 = call ptr @_ZNKSt6vectorI10aiVector2tIfESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %457) #11
  %459 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.229", ptr %47, i32 0, i32 0
  store ptr %458, ptr %459, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #11
  %460 = load ptr, ptr %46, align 8, !tbaa !5
  %461 = call ptr @_ZNKSt6vectorI10aiVector2tIfESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %460) #11
  %462 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.229", ptr %48, i32 0, i32 0
  store ptr %461, ptr %462, align 8
  br label %463

463:                                              ; preds = %476, %450
  %464 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPK10aiVector2tIfESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %47, ptr noundef nonnull align 8 dereferenceable(8) %48) #11
  br i1 %464, label %466, label %465

465:                                              ; preds = %463
  store i32 14, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #11
  br label %478

466:                                              ; preds = %463
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #11
  %467 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPK10aiVector2tIfESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %47) #11
  store ptr %467, ptr %49, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 12, ptr %50) #11
  %468 = load ptr, ptr %49, align 8, !tbaa !5
  %469 = getelementptr inbounds %class.aiVector2t, ptr %468, i32 0, i32 0
  %470 = load float, ptr %469, align 4, !tbaa !33
  %471 = load ptr, ptr %49, align 8, !tbaa !5
  %472 = getelementptr inbounds %class.aiVector2t, ptr %471, i32 0, i32 1
  %473 = load float, ptr %472, align 4, !tbaa !35
  call void @_ZN10aiVector3tIfEC2Efff(ptr noundef nonnull align 4 dereferenceable(12) %50, float noundef %470, float noundef %473, float noundef 0.000000e+00)
  %474 = load ptr, ptr %45, align 8, !tbaa !5
  %475 = getelementptr inbounds %class.aiVector3t, ptr %474, i32 1
  store ptr %475, ptr %45, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %474, ptr align 4 %50, i64 12, i1 false), !tbaa.struct !28
  call void @llvm.lifetime.end.p0(i64 12, ptr %50) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #11
  br label %476

476:                                              ; preds = %466
  %477 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPK10aiVector2tIfESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %47) #11
  br label %463

478:                                              ; preds = %465
  %479 = load ptr, ptr %14, align 8, !tbaa !5
  %480 = load i32, ptr %43, align 4, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 1028, ptr %51) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr %52) #11
  %481 = load ptr, ptr %8, align 8, !tbaa !5
  %482 = load i32, ptr %43, align 4, !tbaa !20
  call void @_ZNK6Assimp3FBX12MeshGeometry26GetTextureCoordChannelNameB5cxx11Ej(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %52, ptr noundef nonnull align 8 dereferenceable(1000) %481, i32 noundef %482)
  invoke void @_ZN8aiStringC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 4 dereferenceable(1028) %51, ptr noundef nonnull align 8 dereferenceable(32) %52)
          to label %483 unwind label %496

483:                                              ; preds = %478
  invoke void @_ZN6aiMesh20SetTextureCoordsNameEjRK8aiString(ptr noundef nonnull align 8 dereferenceable(1320) %479, i32 noundef %480, ptr noundef nonnull align 4 dereferenceable(1028) %51)
          to label %484 unwind label %496

484:                                              ; preds = %483
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %52) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr %52) #11
  call void @llvm.lifetime.end.p0(i64 1028, ptr %51) #11
  %485 = load ptr, ptr %14, align 8, !tbaa !5
  %486 = getelementptr inbounds %struct.aiMesh, ptr %485, i32 0, i32 9
  %487 = load i32, ptr %43, align 4, !tbaa !20
  %488 = zext i32 %487 to i64
  %489 = getelementptr inbounds [8 x i32], ptr %486, i64 0, i64 %488
  store i32 2, ptr %489, align 4, !tbaa !20
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #11
  store i32 0, ptr %24, align 4
  br label %490

490:                                              ; preds = %484, %434
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #11
  %491 = load i32, ptr %24, align 4
  switch i32 %491, label %500 [
    i32 0, label %492
  ]

492:                                              ; preds = %490
  br label %493

493:                                              ; preds = %492
  %494 = load i32, ptr %43, align 4, !tbaa !20
  %495 = add i32 %494, 1
  store i32 %495, ptr %43, align 4, !tbaa !20
  br label %424, !llvm.loop !36

496:                                              ; preds = %483, %478
  %497 = landingpad { ptr, i32 }
          cleanup
  %498 = extractvalue { ptr, i32 } %497, 0
  store ptr %498, ptr %34, align 8
  %499 = extractvalue { ptr, i32 } %497, 1
  store i32 %499, ptr %35, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %52) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr %52) #11
  call void @llvm.lifetime.end.p0(i64 1028, ptr %51) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #11
  br label %964

500:                                              ; preds = %490, %427
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #11
  br label %501

501:                                              ; preds = %500
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #11
  store i32 0, ptr %53, align 4, !tbaa !20
  br label %502

502:                                              ; preds = %554, %501
  %503 = load i32, ptr %53, align 4, !tbaa !20
  %504 = icmp ult i32 %503, 8
  br i1 %504, label %506, label %505

505:                                              ; preds = %502
  store i32 16, ptr %24, align 4
  br label %557

506:                                              ; preds = %502
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #11
  %507 = load ptr, ptr %8, align 8, !tbaa !5
  %508 = load i32, ptr %53, align 4, !tbaa !20
  %509 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX12MeshGeometry15GetVertexColorsEj(ptr noundef nonnull align 8 dereferenceable(1000) %507, i32 noundef %508)
  store ptr %509, ptr %54, align 8, !tbaa !5
  %510 = load ptr, ptr %54, align 8, !tbaa !5
  %511 = call noundef zeroext i1 @_ZNKSt6vectorI9aiColor4tIfESaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %510) #11
  br i1 %511, label %512, label %513

512:                                              ; preds = %506
  store i32 16, ptr %24, align 4
  br label %551

513:                                              ; preds = %506
  %514 = load ptr, ptr %15, align 8, !tbaa !5
  %515 = call noundef i64 @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %514) #11
  %516 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %515, i64 16)
  %517 = extractvalue { i64, i1 } %516, 1
  %518 = extractvalue { i64, i1 } %516, 0
  %519 = select i1 %517, i64 -1, i64 %518
  %520 = call noalias noundef nonnull ptr @_Znam(i64 noundef %519) #12
  %521 = icmp eq i64 %515, 0
  br i1 %521, label %528, label %522

522:                                              ; preds = %513
  %523 = getelementptr inbounds %class.aiColor4t, ptr %520, i64 %515
  br label %524

524:                                              ; preds = %524, %522
  %525 = phi ptr [ %520, %522 ], [ %526, %524 ]
  call void @_ZN9aiColor4tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(16) %525) #11
  %526 = getelementptr inbounds %class.aiColor4t, ptr %525, i64 1
  %527 = icmp eq ptr %526, %523
  br i1 %527, label %528, label %524

528:                                              ; preds = %524, %513
  %529 = load ptr, ptr %14, align 8, !tbaa !5
  %530 = getelementptr inbounds %struct.aiMesh, ptr %529, i32 0, i32 7
  %531 = load i32, ptr %53, align 4, !tbaa !20
  %532 = zext i32 %531 to i64
  %533 = getelementptr inbounds [8 x ptr], ptr %530, i64 0, i64 %532
  store ptr %520, ptr %533, align 8, !tbaa !5
  %534 = load ptr, ptr %54, align 8, !tbaa !5
  %535 = call ptr @_ZNKSt6vectorI9aiColor4tIfESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %534) #11
  %536 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.230", ptr %55, i32 0, i32 0
  store ptr %535, ptr %536, align 8
  %537 = load ptr, ptr %54, align 8, !tbaa !5
  %538 = call ptr @_ZNKSt6vectorI9aiColor4tIfESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %537) #11
  %539 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.230", ptr %56, i32 0, i32 0
  store ptr %538, ptr %539, align 8
  %540 = load ptr, ptr %14, align 8, !tbaa !5
  %541 = getelementptr inbounds %struct.aiMesh, ptr %540, i32 0, i32 7
  %542 = load i32, ptr %53, align 4, !tbaa !20
  %543 = zext i32 %542 to i64
  %544 = getelementptr inbounds [8 x ptr], ptr %541, i64 0, i64 %543
  %545 = load ptr, ptr %544, align 8, !tbaa !5
  %546 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.230", ptr %55, i32 0, i32 0
  %547 = load ptr, ptr %546, align 8
  %548 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.230", ptr %56, i32 0, i32 0
  %549 = load ptr, ptr %548, align 8
  %550 = call noundef ptr @_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPK9aiColor4tIfESt6vectorIS3_SaIS3_EEEEPS3_ET0_T_SC_SB_(ptr %547, ptr %549, ptr noundef %545)
  store i32 0, ptr %24, align 4
  br label %551

551:                                              ; preds = %528, %512
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #11
  %552 = load i32, ptr %24, align 4
  switch i32 %552, label %557 [
    i32 0, label %553
  ]

553:                                              ; preds = %551
  br label %554

554:                                              ; preds = %553
  %555 = load i32, ptr %53, align 4, !tbaa !20
  %556 = add i32 %555, 1
  store i32 %556, ptr %53, align 4, !tbaa !20
  br label %502, !llvm.loop !37

557:                                              ; preds = %551, %505
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #11
  br label %558

558:                                              ; preds = %557
  %559 = getelementptr inbounds %"class.Assimp::FBX::FBXConverter", ptr %90, i32 0, i32 17
  %560 = load ptr, ptr %559, align 8, !tbaa !38
  %561 = call noundef nonnull align 1 dereferenceable(15) ptr @_ZNK6Assimp3FBX8Document8SettingsEv(ptr noundef nonnull align 8 dereferenceable(336) %560)
  %562 = getelementptr inbounds %"struct.Assimp::FBX::ImportSettings", ptr %561, i32 0, i32 3
  %563 = load i8, ptr %562, align 1, !tbaa !99, !range !101, !noundef !102
  %564 = trunc i8 %563 to i1
  br i1 %564, label %565, label %568

565:                                              ; preds = %558
  %566 = load ptr, ptr %13, align 8, !tbaa !5
  %567 = call noundef zeroext i1 @_ZNKSt6vectorIiSaIiEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %566) #11
  br i1 %567, label %568, label %572

568:                                              ; preds = %565, %558
  call void @_ZN6Assimp12LogFunctionsINS_11FBXImporterEE8LogErrorIJRA55_KcEEEvDpOT_(ptr noundef nonnull align 1 dereferenceable(55) @.str.59)
  %569 = call noundef i32 @_ZN6Assimp3FBX12FBXConverter18GetDefaultMaterialEv(ptr noundef nonnull align 8 dereferenceable(489) %90)
  %570 = load ptr, ptr %14, align 8, !tbaa !5
  %571 = getelementptr inbounds %struct.aiMesh, ptr %570, i32 0, i32 13
  store i32 %569, ptr %571, align 8, !tbaa !103
  br label %579

572:                                              ; preds = %565
  %573 = load ptr, ptr %14, align 8, !tbaa !5
  %574 = load ptr, ptr %9, align 8, !tbaa !5
  %575 = load ptr, ptr %8, align 8, !tbaa !5
  %576 = load ptr, ptr %13, align 8, !tbaa !5
  %577 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %576, i64 noundef 0) #11
  %578 = load i32, ptr %577, align 4, !tbaa !20
  call void @_ZN6Assimp3FBX12FBXConverter22ConvertMaterialForMeshEP6aiMeshRKNS0_5ModelERKNS0_12MeshGeometryEi(ptr noundef nonnull align 8 dereferenceable(489) %90, ptr noundef %573, ptr noundef nonnull align 8 dereferenceable(208) %574, ptr noundef nonnull align 8 dereferenceable(1000) %575, i32 noundef %578)
  br label %579

579:                                              ; preds = %572, %568
  %580 = getelementptr inbounds %"class.Assimp::FBX::FBXConverter", ptr %90, i32 0, i32 17
  %581 = load ptr, ptr %580, align 8, !tbaa !38
  %582 = call noundef nonnull align 1 dereferenceable(15) ptr @_ZNK6Assimp3FBX8Document8SettingsEv(ptr noundef nonnull align 8 dereferenceable(336) %581)
  %583 = getelementptr inbounds %"struct.Assimp::FBX::ImportSettings", ptr %582, i32 0, i32 8
  %584 = load i8, ptr %583, align 1, !tbaa !104, !range !101, !noundef !102
  %585 = trunc i8 %584 to i1
  br i1 %585, label %586, label %602

586:                                              ; preds = %579
  %587 = load ptr, ptr %8, align 8, !tbaa !5
  %588 = call noundef ptr @_ZNK6Assimp3FBX8Geometry12DeformerSkinEv(ptr noundef nonnull align 8 dereferenceable(120) %587)
  %589 = icmp ne ptr %588, null
  br i1 %589, label %590, label %602

590:                                              ; preds = %586
  %591 = getelementptr inbounds %"class.Assimp::FBX::FBXConverter", ptr %90, i32 0, i32 17
  %592 = load ptr, ptr %591, align 8, !tbaa !38
  %593 = call noundef nonnull align 1 dereferenceable(15) ptr @_ZNK6Assimp3FBX8Document8SettingsEv(ptr noundef nonnull align 8 dereferenceable(336) %592)
  %594 = getelementptr inbounds %"struct.Assimp::FBX::ImportSettings", ptr %593, i32 0, i32 9
  %595 = load i8, ptr %594, align 1, !tbaa !105, !range !101, !noundef !102
  %596 = trunc i8 %595 to i1
  br i1 %596, label %602, label %597

597:                                              ; preds = %590
  %598 = load ptr, ptr %14, align 8, !tbaa !5
  %599 = load ptr, ptr %8, align 8, !tbaa !5
  %600 = load ptr, ptr %10, align 8, !tbaa !5
  %601 = load ptr, ptr %11, align 8, !tbaa !5
  call void @_ZN6Assimp3FBX12FBXConverter14ConvertWeightsEP6aiMeshRKNS0_12MeshGeometryERK12aiMatrix4x4tIfEP6aiNodejPSt6vectorIjSaIjEE(ptr noundef nonnull align 8 dereferenceable(489) %90, ptr noundef %598, ptr noundef nonnull align 8 dereferenceable(1000) %599, ptr noundef nonnull align 4 dereferenceable(64) %600, ptr noundef %601, i32 noundef -1, ptr noundef null)
  br label %645

602:                                              ; preds = %590, %586, %579
  %603 = getelementptr inbounds %"class.Assimp::FBX::FBXConverter", ptr %90, i32 0, i32 17
  %604 = load ptr, ptr %603, align 8, !tbaa !38
  %605 = call noundef nonnull align 1 dereferenceable(15) ptr @_ZNK6Assimp3FBX8Document8SettingsEv(ptr noundef nonnull align 8 dereferenceable(336) %604)
  %606 = getelementptr inbounds %"struct.Assimp::FBX::ImportSettings", ptr %605, i32 0, i32 8
  %607 = load i8, ptr %606, align 1, !tbaa !104, !range !101, !noundef !102
  %608 = trunc i8 %607 to i1
  br i1 %608, label %609, label %644

609:                                              ; preds = %602
  %610 = load ptr, ptr %8, align 8, !tbaa !5
  %611 = call noundef ptr @_ZNK6Assimp3FBX8Geometry12DeformerSkinEv(ptr noundef nonnull align 8 dereferenceable(120) %610)
  %612 = icmp ne ptr %611, null
  br i1 %612, label %613, label %644

613:                                              ; preds = %609
  %614 = getelementptr inbounds %"class.Assimp::FBX::FBXConverter", ptr %90, i32 0, i32 17
  %615 = load ptr, ptr %614, align 8, !tbaa !38
  %616 = call noundef nonnull align 1 dereferenceable(15) ptr @_ZNK6Assimp3FBX8Document8SettingsEv(ptr noundef nonnull align 8 dereferenceable(336) %615)
  %617 = getelementptr inbounds %"struct.Assimp::FBX::ImportSettings", ptr %616, i32 0, i32 9
  %618 = load i8, ptr %617, align 1, !tbaa !105, !range !101, !noundef !102
  %619 = trunc i8 %618 to i1
  br i1 %619, label %620, label %644

620:                                              ; preds = %613
  call void @llvm.lifetime.start.p0(i64 72, ptr %57) #11
  call void @_ZN6Assimp3FBX21SkeletonBoneContainerC2Ev(ptr noundef nonnull align 8 dereferenceable(72) %57) #11
  %621 = load ptr, ptr %14, align 8, !tbaa !5
  %622 = load ptr, ptr %8, align 8, !tbaa !5
  %623 = load ptr, ptr %10, align 8, !tbaa !5
  %624 = load ptr, ptr %11, align 8, !tbaa !5
  invoke void @_ZN6Assimp3FBX12FBXConverter24ConvertWeightsToSkeletonEP6aiMeshRKNS0_12MeshGeometryERK12aiMatrix4x4tIfEP6aiNodejPSt6vectorIjSaIjEERNS0_21SkeletonBoneContainerE(ptr noundef nonnull align 8 dereferenceable(489) %90, ptr noundef %621, ptr noundef nonnull align 8 dereferenceable(1000) %622, ptr noundef nonnull align 4 dereferenceable(64) %623, ptr noundef %624, i32 noundef -1, ptr noundef null, ptr noundef nonnull align 8 dereferenceable(72) %57)
          to label %625 unwind label %634

625:                                              ; preds = %620
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #11
  %626 = invoke noundef ptr @_ZN6Assimp3FBXL16createAiSkeletonERNS0_21SkeletonBoneContainerE(ptr noundef nonnull align 8 dereferenceable(72) %57)
          to label %627 unwind label %638

627:                                              ; preds = %625
  store ptr %626, ptr %58, align 8, !tbaa !5
  %628 = load ptr, ptr %58, align 8, !tbaa !5
  %629 = icmp ne ptr %628, null
  br i1 %629, label %630, label %642

630:                                              ; preds = %627
  %631 = getelementptr inbounds %"class.Assimp::FBX::FBXConverter", ptr %90, i32 0, i32 15
  %632 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP10aiSkeletonSaIS1_EE12emplace_backIJRS1_EEES5_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %631, ptr noundef nonnull align 8 dereferenceable(8) %58)
          to label %633 unwind label %638

633:                                              ; preds = %630
  br label %642

634:                                              ; preds = %620
  %635 = landingpad { ptr, i32 }
          cleanup
  %636 = extractvalue { ptr, i32 } %635, 0
  store ptr %636, ptr %34, align 8
  %637 = extractvalue { ptr, i32 } %635, 1
  store i32 %637, ptr %35, align 4
  br label %643

638:                                              ; preds = %630, %625
  %639 = landingpad { ptr, i32 }
          cleanup
  %640 = extractvalue { ptr, i32 } %639, 0
  store ptr %640, ptr %34, align 8
  %641 = extractvalue { ptr, i32 } %639, 1
  store i32 %641, ptr %35, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #11
  br label %643

642:                                              ; preds = %633, %627
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #11
  call void @_ZN6Assimp3FBX21SkeletonBoneContainerD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %57) #11
  call void @llvm.lifetime.end.p0(i64 72, ptr %57) #11
  br label %644

643:                                              ; preds = %638, %634
  call void @_ZN6Assimp3FBX21SkeletonBoneContainerD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %57) #11
  call void @llvm.lifetime.end.p0(i64 72, ptr %57) #11
  br label %964

644:                                              ; preds = %642, %613, %609, %602
  br label %645

645:                                              ; preds = %644, %597
  call void @llvm.lifetime.start.p0(i64 24, ptr %59) #11
  call void @_ZNSt6vectorIP10aiAnimMeshSaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %59) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #11
  %646 = load ptr, ptr %8, align 8, !tbaa !5
  %647 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZNK6Assimp3FBX8Geometry14GetBlendShapesEv(ptr noundef nonnull align 8 dereferenceable(120) %646)
          to label %648 unwind label %660

648:                                              ; preds = %645
  store ptr %647, ptr %60, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #11
  %649 = load ptr, ptr %60, align 8, !tbaa !5
  %650 = call ptr @_ZNKSt13unordered_setIPKN6Assimp3FBX10BlendShapeESt4hashIS4_ESt8equal_toIS4_ESaIS4_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(56) %649) #11
  %651 = getelementptr inbounds %"struct.std::__detail::_Node_const_iterator", ptr %61, i32 0, i32 0
  %652 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %651, i32 0, i32 0
  store ptr %650, ptr %652, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #11
  %653 = load ptr, ptr %60, align 8, !tbaa !5
  %654 = call ptr @_ZNKSt13unordered_setIPKN6Assimp3FBX10BlendShapeESt4hashIS4_ESt8equal_toIS4_ESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %653) #11
  %655 = getelementptr inbounds %"struct.std::__detail::_Node_const_iterator", ptr %62, i32 0, i32 0
  %656 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %655, i32 0, i32 0
  store ptr %654, ptr %656, align 8
  br label %657

657:                                              ; preds = %909, %648
  %658 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseIPKN6Assimp3FBX10BlendShapeELb0EEES8_(ptr noundef nonnull align 8 dereferenceable(8) %61, ptr noundef nonnull align 8 dereferenceable(8) %62) #11
  br i1 %658, label %664, label %659

659:                                              ; preds = %657
  store i32 19, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #11
  br label %912

660:                                              ; preds = %645
  %661 = landingpad { ptr, i32 }
          cleanup
  %662 = extractvalue { ptr, i32 } %661, 0
  store ptr %662, ptr %34, align 8
  %663 = extractvalue { ptr, i32 } %661, 1
  store i32 %663, ptr %35, align 4
  br label %911

664:                                              ; preds = %657
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #11
  %665 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8__detail20_Node_const_iteratorIPKN6Assimp3FBX10BlendShapeELb1ELb0EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %61) #11
  %666 = load ptr, ptr %665, align 8, !tbaa !5
  store ptr %666, ptr %63, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #11
  %667 = load ptr, ptr %63, align 8, !tbaa !5
  %668 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZNK6Assimp3FBX10BlendShape18BlendShapeChannelsEv(ptr noundef nonnull align 8 dereferenceable(128) %667)
          to label %669 unwind label %681

669:                                              ; preds = %664
  store ptr %668, ptr %64, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #11
  %670 = load ptr, ptr %64, align 8, !tbaa !5
  %671 = call ptr @_ZNKSt13unordered_setIPKN6Assimp3FBX17BlendShapeChannelESt4hashIS4_ESt8equal_toIS4_ESaIS4_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(56) %670) #11
  %672 = getelementptr inbounds %"struct.std::__detail::_Node_const_iterator.262", ptr %65, i32 0, i32 0
  %673 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base.263", ptr %672, i32 0, i32 0
  store ptr %671, ptr %673, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #11
  %674 = load ptr, ptr %64, align 8, !tbaa !5
  %675 = call ptr @_ZNKSt13unordered_setIPKN6Assimp3FBX17BlendShapeChannelESt4hashIS4_ESt8equal_toIS4_ESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %674) #11
  %676 = getelementptr inbounds %"struct.std::__detail::_Node_const_iterator.262", ptr %66, i32 0, i32 0
  %677 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base.263", ptr %676, i32 0, i32 0
  store ptr %675, ptr %677, align 8
  br label %678

678:                                              ; preds = %904, %669
  %679 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseIPKN6Assimp3FBX17BlendShapeChannelELb0EEES8_(ptr noundef nonnull align 8 dereferenceable(8) %65, ptr noundef nonnull align 8 dereferenceable(8) %66) #11
  br i1 %679, label %685, label %680

680:                                              ; preds = %678
  store i32 21, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #11
  br label %908

681:                                              ; preds = %664
  %682 = landingpad { ptr, i32 }
          cleanup
  %683 = extractvalue { ptr, i32 } %682, 0
  store ptr %683, ptr %34, align 8
  %684 = extractvalue { ptr, i32 } %682, 1
  store i32 %684, ptr %35, align 4
  br label %907

685:                                              ; preds = %678
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #11
  %686 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8__detail20_Node_const_iteratorIPKN6Assimp3FBX17BlendShapeChannelELb1ELb0EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %65) #11
  %687 = load ptr, ptr %686, align 8, !tbaa !5
  store ptr %687, ptr %67, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #11
  %688 = load ptr, ptr %67, align 8, !tbaa !5
  %689 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZNK6Assimp3FBX17BlendShapeChannel18GetShapeGeometriesEv(ptr noundef nonnull align 8 dereferenceable(160) %688)
          to label %690 unwind label %703

690:                                              ; preds = %685
  store ptr %689, ptr %68, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #11
  %691 = load ptr, ptr %68, align 8, !tbaa !5
  store ptr %691, ptr %69, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #11
  %692 = load ptr, ptr %69, align 8, !tbaa !5
  %693 = call ptr @_ZNKSt13unordered_setIPKN6Assimp3FBX13ShapeGeometryESt4hashIS4_ESt8equal_toIS4_ESaIS4_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(56) %692) #11
  %694 = getelementptr inbounds %"struct.std::__detail::_Node_const_iterator.289", ptr %70, i32 0, i32 0
  %695 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base.290", ptr %694, i32 0, i32 0
  store ptr %693, ptr %695, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #11
  %696 = load ptr, ptr %69, align 8, !tbaa !5
  %697 = call ptr @_ZNKSt13unordered_setIPKN6Assimp3FBX13ShapeGeometryESt4hashIS4_ESt8equal_toIS4_ESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %696) #11
  %698 = getelementptr inbounds %"struct.std::__detail::_Node_const_iterator.289", ptr %71, i32 0, i32 0
  %699 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base.290", ptr %698, i32 0, i32 0
  store ptr %697, ptr %699, align 8
  br label %700

700:                                              ; preds = %894, %690
  %701 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseIPKN6Assimp3FBX13ShapeGeometryELb0EEES8_(ptr noundef nonnull align 8 dereferenceable(8) %70, ptr noundef nonnull align 8 dereferenceable(8) %71) #11
  br i1 %701, label %707, label %702

702:                                              ; preds = %700
  store i32 23, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #11
  br label %903

703:                                              ; preds = %685
  %704 = landingpad { ptr, i32 }
          cleanup
  %705 = extractvalue { ptr, i32 } %704, 0
  store ptr %705, ptr %34, align 8
  %706 = extractvalue { ptr, i32 } %704, 1
  store i32 %706, ptr %35, align 4
  br label %906

707:                                              ; preds = %700
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #11
  %708 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8__detail20_Node_const_iteratorIPKN6Assimp3FBX13ShapeGeometryELb1ELb0EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %70) #11
  %709 = load ptr, ptr %708, align 8, !tbaa !5
  store ptr %709, ptr %72, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #11
  %710 = load ptr, ptr %14, align 8, !tbaa !5
  %711 = invoke noundef ptr @_ZN6Assimp16aiCreateAnimMeshEPK6aiMeshbbbbb(ptr noundef %710, i1 noundef zeroext true, i1 noundef zeroext true, i1 noundef zeroext true, i1 noundef zeroext true, i1 noundef zeroext true)
          to label %712 unwind label %734

712:                                              ; preds = %707
  store ptr %711, ptr %73, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #11
  %713 = load ptr, ptr %72, align 8, !tbaa !5
  %714 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX13ShapeGeometry11GetVerticesEv(ptr noundef nonnull align 8 dereferenceable(192) %713)
          to label %715 unwind label %738

715:                                              ; preds = %712
  store ptr %714, ptr %74, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #11
  %716 = load ptr, ptr %72, align 8, !tbaa !5
  %717 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX13ShapeGeometry10GetNormalsEv(ptr noundef nonnull align 8 dereferenceable(192) %716)
          to label %718 unwind label %742

718:                                              ; preds = %715
  store ptr %717, ptr %75, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #11
  %719 = load ptr, ptr %72, align 8, !tbaa !5
  %720 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX13ShapeGeometry10GetIndicesEv(ptr noundef nonnull align 8 dereferenceable(192) %719)
          to label %721 unwind label %746

721:                                              ; preds = %718
  store ptr %720, ptr %76, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %77) #11
  %722 = load ptr, ptr %67, align 8, !tbaa !5
  %723 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK6Assimp3FBX6Object4NameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(56) %722)
          to label %724 unwind label %750

724:                                              ; preds = %721
  invoke void @_ZN6Assimp3FBX12FBXConverter15FixAnimMeshNameERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %77, ptr noundef nonnull align 8 dereferenceable(489) %90, ptr noundef nonnull align 8 dereferenceable(32) %723)
          to label %725 unwind label %750

725:                                              ; preds = %724
  call void @llvm.lifetime.start.p0(i64 32, ptr %78) #11
  %726 = load ptr, ptr %72, align 8, !tbaa !5
  %727 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK6Assimp3FBX6Object4NameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(56) %726)
          to label %728 unwind label %754

728:                                              ; preds = %725
  invoke void @_ZN6Assimp3FBX12FBXConverter15FixAnimMeshNameERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %78, ptr noundef nonnull align 8 dereferenceable(489) %90, ptr noundef nonnull align 8 dereferenceable(32) %727)
          to label %729 unwind label %754

729:                                              ; preds = %728
  %730 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %77) #11
  br i1 %730, label %731, label %762

731:                                              ; preds = %729
  %732 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %77, ptr noundef nonnull align 8 dereferenceable(32) %78)
          to label %733 unwind label %758

733:                                              ; preds = %731
  br label %779

734:                                              ; preds = %707
  %735 = landingpad { ptr, i32 }
          cleanup
  %736 = extractvalue { ptr, i32 } %735, 0
  store ptr %736, ptr %34, align 8
  %737 = extractvalue { ptr, i32 } %735, 1
  store i32 %737, ptr %35, align 4
  br label %902

738:                                              ; preds = %712
  %739 = landingpad { ptr, i32 }
          cleanup
  %740 = extractvalue { ptr, i32 } %739, 0
  store ptr %740, ptr %34, align 8
  %741 = extractvalue { ptr, i32 } %739, 1
  store i32 %741, ptr %35, align 4
  br label %901

742:                                              ; preds = %715
  %743 = landingpad { ptr, i32 }
          cleanup
  %744 = extractvalue { ptr, i32 } %743, 0
  store ptr %744, ptr %34, align 8
  %745 = extractvalue { ptr, i32 } %743, 1
  store i32 %745, ptr %35, align 4
  br label %900

746:                                              ; preds = %718
  %747 = landingpad { ptr, i32 }
          cleanup
  %748 = extractvalue { ptr, i32 } %747, 0
  store ptr %748, ptr %34, align 8
  %749 = extractvalue { ptr, i32 } %747, 1
  store i32 %749, ptr %35, align 4
  br label %899

750:                                              ; preds = %724, %721
  %751 = landingpad { ptr, i32 }
          cleanup
  %752 = extractvalue { ptr, i32 } %751, 0
  store ptr %752, ptr %34, align 8
  %753 = extractvalue { ptr, i32 } %751, 1
  store i32 %753, ptr %35, align 4
  br label %898

754:                                              ; preds = %728, %725
  %755 = landingpad { ptr, i32 }
          cleanup
  %756 = extractvalue { ptr, i32 } %755, 0
  store ptr %756, ptr %34, align 8
  %757 = extractvalue { ptr, i32 } %755, 1
  store i32 %757, ptr %35, align 4
  br label %897

758:                                              ; preds = %889, %883, %779, %731
  %759 = landingpad { ptr, i32 }
          cleanup
  %760 = extractvalue { ptr, i32 } %759, 0
  store ptr %760, ptr %34, align 8
  %761 = extractvalue { ptr, i32 } %759, 1
  store i32 %761, ptr %35, align 4
  br label %896

762:                                              ; preds = %729
  %763 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEcm(ptr noundef nonnull align 8 dereferenceable(32) %77, i8 noundef signext 46, i64 noundef 0) #11
  %764 = icmp eq i64 %763, -1
  br i1 %764, label %765, label %778

765:                                              ; preds = %762
  call void @llvm.lifetime.start.p0(i64 32, ptr %79) #11
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %79, ptr noundef @.str.60, ptr noundef nonnull align 8 dereferenceable(32) %78)
          to label %766 unwind label %769

766:                                              ; preds = %765
  %767 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %77, ptr noundef nonnull align 8 dereferenceable(32) %79)
          to label %768 unwind label %773

768:                                              ; preds = %766
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %79) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr %79) #11
  br label %778

769:                                              ; preds = %765
  %770 = landingpad { ptr, i32 }
          cleanup
  %771 = extractvalue { ptr, i32 } %770, 0
  store ptr %771, ptr %34, align 8
  %772 = extractvalue { ptr, i32 } %770, 1
  store i32 %772, ptr %35, align 4
  br label %777

773:                                              ; preds = %766
  %774 = landingpad { ptr, i32 }
          cleanup
  %775 = extractvalue { ptr, i32 } %774, 0
  store ptr %775, ptr %34, align 8
  %776 = extractvalue { ptr, i32 } %774, 1
  store i32 %776, ptr %35, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %79) #11
  br label %777

777:                                              ; preds = %773, %769
  call void @llvm.lifetime.end.p0(i64 32, ptr %79) #11
  br label %896

778:                                              ; preds = %768, %762
  br label %779

779:                                              ; preds = %778, %733
  %780 = load ptr, ptr %73, align 8, !tbaa !5
  %781 = getelementptr inbounds %struct.aiAnimMesh, ptr %780, i32 0, i32 0
  invoke void @_ZN8aiString3SetERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 4 dereferenceable(1028) %781, ptr noundef nonnull align 8 dereferenceable(32) %77)
          to label %782 unwind label %758

782:                                              ; preds = %779
  call void @llvm.lifetime.start.p0(i64 8, ptr %80) #11
  store i64 0, ptr %80, align 8, !tbaa !106
  br label %783

783:                                              ; preds = %872, %782
  %784 = load i64, ptr %80, align 8, !tbaa !106
  %785 = load ptr, ptr %76, align 8, !tbaa !5
  %786 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %785) #11
  %787 = icmp ult i64 %784, %786
  br i1 %787, label %789, label %788

788:                                              ; preds = %783
  store i32 25, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #11
  br label %879

789:                                              ; preds = %783
  call void @llvm.lifetime.start.p0(i64 4, ptr %81) #11
  %790 = load ptr, ptr %76, align 8, !tbaa !5
  %791 = load i64, ptr %80, align 8, !tbaa !106
  %792 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIjSaIjEE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %790, i64 noundef %791)
          to label %793 unwind label %812

793:                                              ; preds = %789
  %794 = load i32, ptr %792, align 4, !tbaa !20
  store i32 %794, ptr %81, align 4, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 12, ptr %82) #11
  %795 = load ptr, ptr %74, align 8, !tbaa !5
  %796 = load i64, ptr %80, align 8, !tbaa !106
  %797 = invoke noundef nonnull align 4 dereferenceable(12) ptr @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %795, i64 noundef %796)
          to label %798 unwind label %816

798:                                              ; preds = %793
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %82, ptr align 4 %797, i64 12, i1 false), !tbaa.struct !28
  call void @llvm.lifetime.start.p0(i64 12, ptr %83) #11
  %799 = load ptr, ptr %75, align 8, !tbaa !5
  %800 = load i64, ptr %80, align 8, !tbaa !106
  %801 = invoke noundef nonnull align 4 dereferenceable(12) ptr @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %799, i64 noundef %800)
          to label %802 unwind label %820

802:                                              ; preds = %798
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %83, ptr align 4 %801, i64 12, i1 false), !tbaa.struct !28
  call void @llvm.lifetime.start.p0(i64 4, ptr %84) #11
  store i32 0, ptr %84, align 4, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 8, ptr %85) #11
  %803 = load ptr, ptr %8, align 8, !tbaa !5
  %804 = load i32, ptr %81, align 4, !tbaa !20
  %805 = invoke noundef ptr @_ZNK6Assimp3FBX12MeshGeometry19ToOutputVertexIndexEjRj(ptr noundef nonnull align 8 dereferenceable(1000) %803, i32 noundef %804, ptr noundef nonnull align 4 dereferenceable(4) %84)
          to label %806 unwind label %824

806:                                              ; preds = %802
  store ptr %805, ptr %85, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %86) #11
  store i32 0, ptr %86, align 4, !tbaa !20
  br label %807

807:                                              ; preds = %868, %806
  %808 = load i32, ptr %86, align 4, !tbaa !20
  %809 = load i32, ptr %84, align 4, !tbaa !20
  %810 = icmp ult i32 %808, %809
  br i1 %810, label %828, label %811

811:                                              ; preds = %807
  store i32 28, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %86) #11
  br label %871

812:                                              ; preds = %789
  %813 = landingpad { ptr, i32 }
          cleanup
  %814 = extractvalue { ptr, i32 } %813, 0
  store ptr %814, ptr %34, align 8
  %815 = extractvalue { ptr, i32 } %813, 1
  store i32 %815, ptr %35, align 4
  br label %878

816:                                              ; preds = %793
  %817 = landingpad { ptr, i32 }
          cleanup
  %818 = extractvalue { ptr, i32 } %817, 0
  store ptr %818, ptr %34, align 8
  %819 = extractvalue { ptr, i32 } %817, 1
  store i32 %819, ptr %35, align 4
  br label %877

820:                                              ; preds = %798
  %821 = landingpad { ptr, i32 }
          cleanup
  %822 = extractvalue { ptr, i32 } %821, 0
  store ptr %822, ptr %34, align 8
  %823 = extractvalue { ptr, i32 } %821, 1
  store i32 %823, ptr %35, align 4
  br label %876

824:                                              ; preds = %802
  %825 = landingpad { ptr, i32 }
          cleanup
  %826 = extractvalue { ptr, i32 } %825, 0
  store ptr %826, ptr %34, align 8
  %827 = extractvalue { ptr, i32 } %825, 1
  store i32 %827, ptr %35, align 4
  br label %875

828:                                              ; preds = %807
  call void @llvm.lifetime.start.p0(i64 4, ptr %87) #11
  %829 = load ptr, ptr %85, align 8, !tbaa !5
  %830 = load i32, ptr %86, align 4, !tbaa !20
  %831 = zext i32 %830 to i64
  %832 = getelementptr inbounds i32, ptr %829, i64 %831
  %833 = load i32, ptr %832, align 4, !tbaa !20
  store i32 %833, ptr %87, align 4, !tbaa !20
  %834 = load ptr, ptr %73, align 8, !tbaa !5
  %835 = getelementptr inbounds %struct.aiAnimMesh, ptr %834, i32 0, i32 1
  %836 = load ptr, ptr %835, align 8, !tbaa !107
  %837 = load i32, ptr %87, align 4, !tbaa !20
  %838 = zext i32 %837 to i64
  %839 = getelementptr inbounds %class.aiVector3t, ptr %836, i64 %838
  %840 = invoke noundef nonnull align 4 dereferenceable(12) ptr @_ZN10aiVector3tIfEpLERKS0_(ptr noundef nonnull align 4 dereferenceable(12) %839, ptr noundef nonnull align 4 dereferenceable(12) %82)
          to label %841 unwind label %863

841:                                              ; preds = %828
  %842 = load ptr, ptr %73, align 8, !tbaa !5
  %843 = getelementptr inbounds %struct.aiAnimMesh, ptr %842, i32 0, i32 2
  %844 = load ptr, ptr %843, align 8, !tbaa !109
  %845 = icmp ne ptr %844, null
  br i1 %845, label %846, label %867

846:                                              ; preds = %841
  %847 = load ptr, ptr %73, align 8, !tbaa !5
  %848 = getelementptr inbounds %struct.aiAnimMesh, ptr %847, i32 0, i32 2
  %849 = load ptr, ptr %848, align 8, !tbaa !109
  %850 = load i32, ptr %87, align 4, !tbaa !20
  %851 = zext i32 %850 to i64
  %852 = getelementptr inbounds %class.aiVector3t, ptr %849, i64 %851
  %853 = invoke noundef nonnull align 4 dereferenceable(12) ptr @_ZN10aiVector3tIfEpLERKS0_(ptr noundef nonnull align 4 dereferenceable(12) %852, ptr noundef nonnull align 4 dereferenceable(12) %83)
          to label %854 unwind label %863

854:                                              ; preds = %846
  %855 = load ptr, ptr %73, align 8, !tbaa !5
  %856 = getelementptr inbounds %struct.aiAnimMesh, ptr %855, i32 0, i32 2
  %857 = load ptr, ptr %856, align 8, !tbaa !109
  %858 = load i32, ptr %87, align 4, !tbaa !20
  %859 = zext i32 %858 to i64
  %860 = getelementptr inbounds %class.aiVector3t, ptr %857, i64 %859
  %861 = invoke noundef nonnull align 4 dereferenceable(12) ptr @_ZN10aiVector3tIfE13NormalizeSafeEv(ptr noundef nonnull align 4 dereferenceable(12) %860)
          to label %862 unwind label %863

862:                                              ; preds = %854
  br label %867

863:                                              ; preds = %854, %846, %828
  %864 = landingpad { ptr, i32 }
          cleanup
  %865 = extractvalue { ptr, i32 } %864, 0
  store ptr %865, ptr %34, align 8
  %866 = extractvalue { ptr, i32 } %864, 1
  store i32 %866, ptr %35, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %86) #11
  br label %875

867:                                              ; preds = %862, %841
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #11
  br label %868

868:                                              ; preds = %867
  %869 = load i32, ptr %86, align 4, !tbaa !20
  %870 = add i32 %869, 1
  store i32 %870, ptr %86, align 4, !tbaa !20
  br label %807, !llvm.loop !110

871:                                              ; preds = %811
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %84) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr %83) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr %82) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #11
  br label %872

872:                                              ; preds = %871
  %873 = load i64, ptr %80, align 8, !tbaa !106
  %874 = add i64 %873, 1
  store i64 %874, ptr %80, align 8, !tbaa !106
  br label %783, !llvm.loop !111

875:                                              ; preds = %863, %824
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %84) #11
  br label %876

876:                                              ; preds = %875, %820
  call void @llvm.lifetime.end.p0(i64 12, ptr %83) #11
  br label %877

877:                                              ; preds = %876, %816
  call void @llvm.lifetime.end.p0(i64 12, ptr %82) #11
  br label %878

878:                                              ; preds = %877, %812
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #11
  br label %896

879:                                              ; preds = %788
  %880 = load ptr, ptr %68, align 8, !tbaa !5
  %881 = call noundef i64 @_ZNKSt13unordered_setIPKN6Assimp3FBX13ShapeGeometryESt4hashIS4_ESt8equal_toIS4_ESaIS4_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(56) %880) #11
  %882 = icmp ugt i64 %881, 1
  br i1 %882, label %883, label %888

883:                                              ; preds = %879
  %884 = load ptr, ptr %67, align 8, !tbaa !5
  %885 = invoke noundef float @_ZNK6Assimp3FBX17BlendShapeChannel13DeformPercentEv(ptr noundef nonnull align 8 dereferenceable(160) %884)
          to label %886 unwind label %758

886:                                              ; preds = %883
  %887 = fdiv float %885, 1.000000e+02
  br label %889

888:                                              ; preds = %879
  br label %889

889:                                              ; preds = %888, %886
  %890 = phi float [ %887, %886 ], [ 1.000000e+00, %888 ]
  %891 = load ptr, ptr %73, align 8, !tbaa !5
  %892 = getelementptr inbounds %struct.aiAnimMesh, ptr %891, i32 0, i32 8
  store float %890, ptr %892, align 4, !tbaa !112
  invoke void @_ZNSt6vectorIP10aiAnimMeshSaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %59, ptr noundef nonnull align 8 dereferenceable(8) %73)
          to label %893 unwind label %758

893:                                              ; preds = %889
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %78) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr %78) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %77) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr %77) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #11
  br label %894

894:                                              ; preds = %893
  %895 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8__detail20_Node_const_iteratorIPKN6Assimp3FBX13ShapeGeometryELb1ELb0EEppEv(ptr noundef nonnull align 8 dereferenceable(8) %70) #11
  br label %700

896:                                              ; preds = %878, %777, %758
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %78) #11
  br label %897

897:                                              ; preds = %896, %754
  call void @llvm.lifetime.end.p0(i64 32, ptr %78) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %77) #11
  br label %898

898:                                              ; preds = %897, %750
  call void @llvm.lifetime.end.p0(i64 32, ptr %77) #11
  br label %899

899:                                              ; preds = %898, %746
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #11
  br label %900

900:                                              ; preds = %899, %742
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #11
  br label %901

901:                                              ; preds = %900, %738
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #11
  br label %902

902:                                              ; preds = %901, %734
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #11
  br label %906

903:                                              ; preds = %702
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #11
  br label %904

904:                                              ; preds = %903
  %905 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8__detail20_Node_const_iteratorIPKN6Assimp3FBX17BlendShapeChannelELb1ELb0EEppEv(ptr noundef nonnull align 8 dereferenceable(8) %65) #11
  br label %678

906:                                              ; preds = %902, %703
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #11
  br label %907

907:                                              ; preds = %906, %681
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #11
  br label %911

908:                                              ; preds = %680
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #11
  br label %909

909:                                              ; preds = %908
  %910 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8__detail20_Node_const_iteratorIPKN6Assimp3FBX10BlendShapeELb1ELb0EEppEv(ptr noundef nonnull align 8 dereferenceable(8) %61) #11
  br label %657

911:                                              ; preds = %907, %660
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #11
  br label %963

912:                                              ; preds = %659
  call void @llvm.lifetime.start.p0(i64 8, ptr %88) #11
  %913 = call noundef i64 @_ZNKSt6vectorIP10aiAnimMeshSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %59) #11
  store i64 %913, ptr %88, align 8, !tbaa !106
  %914 = load i64, ptr %88, align 8, !tbaa !106
  %915 = icmp ugt i64 %914, 0
  br i1 %915, label %916, label %957

916:                                              ; preds = %912
  %917 = load i64, ptr %88, align 8, !tbaa !106
  %918 = trunc i64 %917 to i32
  %919 = load ptr, ptr %14, align 8, !tbaa !5
  %920 = getelementptr inbounds %struct.aiMesh, ptr %919, i32 0, i32 15
  store i32 %918, ptr %920, align 8, !tbaa !113
  %921 = load i64, ptr %88, align 8, !tbaa !106
  %922 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %921, i64 8)
  %923 = extractvalue { i64, i1 } %922, 1
  %924 = extractvalue { i64, i1 } %922, 0
  %925 = select i1 %923, i64 -1, i64 %924
  %926 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %925) #12
          to label %927 unwind label %935

927:                                              ; preds = %916
  %928 = load ptr, ptr %14, align 8, !tbaa !5
  %929 = getelementptr inbounds %struct.aiMesh, ptr %928, i32 0, i32 16
  store ptr %926, ptr %929, align 8, !tbaa !114
  call void @llvm.lifetime.start.p0(i64 8, ptr %89) #11
  store i64 0, ptr %89, align 8, !tbaa !106
  br label %930

930:                                              ; preds = %949, %927
  %931 = load i64, ptr %89, align 8, !tbaa !106
  %932 = load i64, ptr %88, align 8, !tbaa !106
  %933 = icmp ult i64 %931, %932
  br i1 %933, label %939, label %934

934:                                              ; preds = %930
  store i32 31, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #11
  br label %956

935:                                              ; preds = %916
  %936 = landingpad { ptr, i32 }
          cleanup
  %937 = extractvalue { ptr, i32 } %936, 0
  store ptr %937, ptr %34, align 8
  %938 = extractvalue { ptr, i32 } %936, 1
  store i32 %938, ptr %35, align 4
  br label %962

939:                                              ; preds = %930
  %940 = load i64, ptr %89, align 8, !tbaa !106
  %941 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP10aiAnimMeshSaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %59, i64 noundef %940)
          to label %942 unwind label %952

942:                                              ; preds = %939
  %943 = load ptr, ptr %941, align 8, !tbaa !5
  %944 = load ptr, ptr %14, align 8, !tbaa !5
  %945 = getelementptr inbounds %struct.aiMesh, ptr %944, i32 0, i32 16
  %946 = load ptr, ptr %945, align 8, !tbaa !114
  %947 = load i64, ptr %89, align 8, !tbaa !106
  %948 = getelementptr inbounds ptr, ptr %946, i64 %947
  store ptr %943, ptr %948, align 8, !tbaa !5
  br label %949

949:                                              ; preds = %942
  %950 = load i64, ptr %89, align 8, !tbaa !106
  %951 = add i64 %950, 1
  store i64 %951, ptr %89, align 8, !tbaa !106
  br label %930, !llvm.loop !115

952:                                              ; preds = %939
  %953 = landingpad { ptr, i32 }
          cleanup
  %954 = extractvalue { ptr, i32 } %953, 0
  store ptr %954, ptr %34, align 8
  %955 = extractvalue { ptr, i32 } %953, 1
  store i32 %955, ptr %35, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #11
  br label %962

956:                                              ; preds = %934
  br label %957

957:                                              ; preds = %956, %912
  %958 = getelementptr inbounds %"class.Assimp::FBX::FBXConverter", ptr %90, i32 0, i32 2
  %959 = call noundef i64 @_ZNKSt6vectorIP6aiMeshSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %958) #11
  %960 = sub i64 %959, 1
  %961 = trunc i64 %960 to i32
  store i32 1, ptr %24, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #11
  call void @_ZNSt6vectorIP10aiAnimMeshSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %59) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %59) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #11
  ret i32 %961

962:                                              ; preds = %952, %935
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #11
  br label %963

963:                                              ; preds = %962, %911
  call void @_ZNSt6vectorIP10aiAnimMeshSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %59) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %59) #11
  br label %964

964:                                              ; preds = %963, %643, %496, %422
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #11
  br label %965

965:                                              ; preds = %964
  %966 = load ptr, ptr %34, align 8
  %967 = load i32, ptr %35, align 4
  %968 = insertvalue { ptr, i32 } poison, ptr %966, 0
  %969 = insertvalue { ptr, i32 } %968, i32 %967, 1
  resume { ptr, i32 } %969
}

; 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) #6 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: inlinehint mustprogress uwtable
declare dso_local noundef ptr @_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPK10aiVector3tIfESt6vectorIS3_SaIS3_EEEEPS3_ET0_T_SC_SB_(ptr, ptr, ptr noundef) #8

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE3endEv(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: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPKjSt6vectorIjSaIjEEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #9

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPK10aiVector2tIfESt6vectorIS2_SaIS2_EEEdeEv(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_iteratorIPK10aiVector2tIfESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8)) #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6aiMesh20SetTextureCoordsNameEjRK8aiString(ptr noundef nonnull align 8 dereferenceable(1320), i32 noundef, ptr noundef nonnull align 4 dereferenceable(1028)) #6 align 2

declare void @_ZNK6Assimp3FBX12MeshGeometry26GetTextureCoordChannelNameB5cxx11Ej(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(1000), i32 noundef) #3

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: inlinehint mustprogress uwtable
declare dso_local noundef ptr @_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPK9aiColor4tIfESt6vectorIS3_SaIS3_EEEEPS3_ET0_T_SC_SB_(ptr, ptr, ptr noundef) #8

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Assimp12LogFunctionsINS_11FBXImporterEE8LogErrorIJRA55_KcEEEvDpOT_(ptr noundef nonnull align 1 dereferenceable(55)) #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN6Assimp3FBX12FBXConverter18GetDefaultMaterialEv(ptr noundef nonnull align 8 dereferenceable(489)) #6 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) #6 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) #6 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Assimp3FBX12FBXConverter24ConvertWeightsToSkeletonEP6aiMeshRKNS0_12MeshGeometryERK12aiMatrix4x4tIfEP6aiNodejPSt6vectorIjSaIjEERNS0_21SkeletonBoneContainerE(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, ptr noundef nonnull align 8 dereferenceable(72)) #6 align 2

; Function Attrs: mustprogress uwtable
declare hidden noundef ptr @_ZN6Assimp3FBXL16createAiSkeletonERNS0_21SkeletonBoneContainerE(ptr noundef nonnull align 8 dereferenceable(72)) #6

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN6Assimp3FBX21SkeletonBoneContainerD2Ev(ptr noundef nonnull align 8 dereferenceable(72)) unnamed_addr #9 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)) #6 align 2

; Function Attrs: nounwind
declare noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEcm(ptr noundef nonnull align 8 dereferenceable(32), i8 noundef signext, i64 noundef) #10

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

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) #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) #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) #6 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)) #9 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)) #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)) #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) #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

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


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

%"class.__gnu_cxx::__normal_iterator.221" = type { 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.__gnu_cxx::__normal_iterator.229" = type { ptr }
%class.aiVector3t = type { float, float, float }
%struct.aiString = type { i32, [1024 x i8] }
%"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] }
%"struct.Assimp::FBX::SkeletonBoneContainer" = type { %"class.std::vector", %"class.std::map.231" }
%"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::map.231" = type { %"class.std::_Rb_tree.232" }
%"class.std::_Rb_tree.232" = type { %"struct.std::_Rb_tree<aiMesh *, std::pair<aiMesh *const, std::vector<aiSkeletonBone *> *>, std::_Select1st<std::pair<aiMesh *const, std::vector<aiSkeletonBone *> *>>, std::less<aiMesh *>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<aiMesh *, std::pair<aiMesh *const, std::vector<aiSkeletonBone *> *>, std::_Select1st<std::pair<aiMesh *const, std::vector<aiSkeletonBone *> *>>, std::less<aiMesh *>>::_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.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.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.59 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [2 x i8], align 1
@switch.table._ZN6Assimp3FBX12FBXConverter25ConvertMeshSingleMaterialERKNS0_12MeshGeometryERKNS0_5ModelERK12aiMatrix4x4tIfEP6aiNodeSD_ = 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 nounwind uwtable
declare noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32)) 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 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 uwtable
declare noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #6 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 @_ZN8aiStringC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 4 dereferenceable(1028), ptr noundef nonnull align 8 dereferenceable(32)) 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 ptr @_ZNKSt6vectorIjSaIjEE3endEv(ptr noundef nonnull align 8 dereferenceable(24)) local_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 noundef zeroext i1 @_ZNKSt6vectorIiSaIiEE5emptyEv(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 @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN6Assimp3FBX12FBXConverter25ConvertMeshSingleMaterialERKNS0_12MeshGeometryERKNS0_5ModelERK12aiMatrix4x4tIfEP6aiNodeSD_(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, ptr noundef %4, ptr nocapture noundef readnone %5) local_unnamed_addr #7 align 2 personality ptr @__gxx_personality_v0 {
  %7 = alloca %"class.__gnu_cxx::__normal_iterator.221", align 8
  %8 = alloca %"class.__gnu_cxx::__normal_iterator.221", align 8
  %9 = alloca %"class.std::vector.206", align 8
  %10 = alloca %"class.__gnu_cxx::__normal_iterator.229", align 8
  %11 = alloca %"class.__gnu_cxx::__normal_iterator.229", align 8
  %12 = alloca %class.aiVector3t, align 4
  %13 = alloca %struct.aiString, align 4
  %14 = alloca %"class.std::__cxx11::basic_string", align 8
  %15 = alloca %"struct.Assimp::FBX::SkeletonBoneContainer", align 8
  %16 = alloca ptr, align 8
  %17 = alloca %"class.std::vector.237", align 8
  %18 = alloca %"struct.std::__detail::_Node_const_iterator", align 8
  %19 = alloca %"struct.std::__detail::_Node_const_iterator", align 8
  %20 = alloca %"struct.std::__detail::_Node_const_iterator.262", align 8
  %21 = alloca %"struct.std::__detail::_Node_const_iterator.262", align 8
  %22 = alloca %"struct.std::__detail::_Node_const_iterator.289", align 8
  %23 = alloca %"struct.std::__detail::_Node_const_iterator.289", align 8
  %24 = alloca ptr, align 8
  %25 = alloca %"class.std::__cxx11::basic_string", align 8
  %26 = alloca %"class.std::__cxx11::basic_string", align 8
  %27 = alloca %"class.std::__cxx11::basic_string", align 8
  %28 = alloca %class.aiVector3t, align 4
  %29 = alloca %class.aiVector3t, align 4
  %30 = alloca i32, align 4
  %31 = tail call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX12MeshGeometry18GetMaterialIndicesEv(ptr noundef nonnull align 8 dereferenceable(1000) %1)
  %32 = tail call noundef ptr @_ZN6Assimp3FBX12FBXConverter14SetupEmptyMeshERKNS0_8GeometryEP6aiNode(ptr noundef nonnull align 8 dereferenceable(489) %0, ptr noundef nonnull align 8 dereferenceable(120) %1, ptr noundef %4)
  %33 = tail call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX12MeshGeometry11GetVerticesEv(ptr noundef nonnull align 8 dereferenceable(1000) %1)
  %34 = tail call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX12MeshGeometry18GetFaceIndexCountsEv(ptr noundef nonnull align 8 dereferenceable(1000) %1)
  %35 = tail call noundef i64 @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %33) #11
  %36 = trunc i64 %35 to i32
  %37 = getelementptr inbounds i8, ptr %32, i64 4
  store i32 %36, ptr %37, align 4, !tbaa !5
  %38 = tail call noundef i64 @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %33) #11
  %39 = tail call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %38, i64 12)
  %40 = extractvalue { i64, i1 } %39, 1
  %41 = extractvalue { i64, i1 } %39, 0
  %42 = select i1 %40, i64 -1, i64 %41
  %43 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %42) #12
  %44 = icmp eq i64 %38, 0
  br i1 %44, label %.loopexit270, label %45

45:                                               ; preds = %6
  %46 = getelementptr inbounds %class.aiVector3t, ptr %43, i64 %38
  br label %47

47:                                               ; preds = %47, %45
  %48 = phi ptr [ %43, %45 ], [ %49, %47 ]
  tail call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %48) #11
  %49 = getelementptr inbounds i8, ptr %48, i64 12
  %50 = icmp eq ptr %49, %46
  br i1 %50, label %.loopexit270, label %47

.loopexit270:                                     ; preds = %47, %6
  %51 = getelementptr inbounds i8, ptr %32, i64 16
  store ptr %43, ptr %51, align 8, !tbaa !16
  %52 = tail call ptr @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %33) #11
  %53 = tail call ptr @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %33) #11
  %54 = load ptr, ptr %51, align 8, !tbaa !16
  %55 = tail call noundef ptr @_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPK10aiVector3tIfESt6vectorIS3_SaIS3_EEEEPS3_ET0_T_SC_SB_(ptr %52, ptr %53, ptr noundef %54)
  %56 = tail call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %34) #11
  %57 = trunc i64 %56 to i32
  %58 = getelementptr inbounds i8, ptr %32, i64 8
  store i32 %57, ptr %58, align 8, !tbaa !17
  %59 = tail call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %34) #11
  %60 = icmp ugt i64 %59, 1152921504606846975
  %61 = shl nuw i64 %59, 4
  %62 = or disjoint i64 %61, 8
  %63 = select i1 %60, i64 -1, i64 %62
  %64 = tail call noalias noundef nonnull ptr @_Znam(i64 noundef %63) #12
  store i64 %59, ptr %64, align 16
  %65 = getelementptr inbounds i8, ptr %64, i64 8
  %66 = icmp eq i64 %59, 0
  br i1 %66, label %.loopexit269, label %67

67:                                               ; preds = %.loopexit270
  %68 = getelementptr inbounds %struct.aiFace, ptr %65, i64 %59
  br label %69

69:                                               ; preds = %69, %67
  %70 = phi ptr [ %65, %67 ], [ %71, %69 ]
  tail call void @_ZN6aiFaceC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %70) #11
  %71 = getelementptr inbounds i8, ptr %70, i64 16
  %72 = icmp eq ptr %71, %68
  br i1 %72, label %.loopexit269, label %69

.loopexit269:                                     ; preds = %69, %.loopexit270
  %73 = getelementptr inbounds i8, ptr %32, i64 208
  store ptr %65, ptr %73, align 8, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #11
  %74 = tail call ptr @_ZNKSt6vectorIjSaIjEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %34) #11
  store ptr %74, ptr %7, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #11
  %75 = tail call ptr @_ZNKSt6vectorIjSaIjEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %34) #11
  store ptr %75, ptr %8, align 8
  %76 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKjSt6vectorIjSaIjEEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(8) %8) #11
  br i1 %76, label %.lr.ph276, label %._crit_edge277

._crit_edge277:                                   ; preds = %._crit_edge, %.loopexit269
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #11
  %77 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX12MeshGeometry10GetNormalsEv(ptr noundef nonnull align 8 dereferenceable(1000) %1)
  %78 = call noundef i64 @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %77) #11
  %.not = icmp eq i64 %78, 0
  br i1 %.not, label %123, label %99

.lr.ph276:                                        ; preds = %.loopexit269, %._crit_edge
  %.0184274 = phi ptr [ %81, %._crit_edge ], [ %65, %.loopexit269 ]
  %.0185273 = phi i32 [ %.1.lcssa, %._crit_edge ], [ 0, %.loopexit269 ]
  %79 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKjSt6vectorIjSaIjEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %7) #11
  %80 = load i32, ptr %79, align 4, !tbaa !19
  %81 = getelementptr inbounds i8, ptr %.0184274, i64 16
  store i32 %80, ptr %.0184274, align 8, !tbaa !20
  %82 = zext i32 %80 to i64
  %83 = shl nuw nsw i64 %82, 2
  %84 = call noalias noundef nonnull ptr @_Znam(i64 noundef %83) #12
  %85 = getelementptr inbounds i8, ptr %.0184274, i64 8
  store ptr %84, ptr %85, align 8, !tbaa !22
  %86 = load i32, ptr %32, align 8, !tbaa !23
  %switch.tableidx = add i32 %80, -1
  %87 = icmp ult i32 %switch.tableidx, 3
  br i1 %87, label %switch.lookup, label %88

88:                                               ; preds = %.lr.ph276
  %89 = or i32 %86, 8
  store i32 %89, ptr %32, align 8, !tbaa !23
  %.not303 = icmp eq i32 %80, 0
  br i1 %.not303, label %._crit_edge, label %.lr.ph.preheader

switch.lookup:                                    ; preds = %.lr.ph276
  %90 = zext nneg i32 %switch.tableidx to i64
  %switch.gep = getelementptr inbounds [3 x i32], ptr @switch.table._ZN6Assimp3FBX12FBXConverter25ConvertMeshSingleMaterialERKNS0_12MeshGeometryERKNS0_5ModelERK12aiMatrix4x4tIfEP6aiNodeSD_, i64 0, i64 %90
  %switch.load = load i32, ptr %switch.gep, align 4
  %91 = or i32 %86, %switch.load
  store i32 %91, ptr %32, align 8, !tbaa !23
  br label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %switch.lookup, %88
  %min.iters.check = icmp ult i32 %80, 8
  br i1 %min.iters.check, label %.lr.ph.preheader331, label %vector.ph

.lr.ph.preheader331:                              ; preds = %middle.block, %.lr.ph.preheader
  %indvars.iv.ph = phi i64 [ 0, %.lr.ph.preheader ], [ %n.vec, %middle.block ]
  %.1272.ph = phi i32 [ %.0185273, %.lr.ph.preheader ], [ %ind.end, %middle.block ]
  br label %.lr.ph

vector.ph:                                        ; preds = %.lr.ph.preheader
  %n.vec = and i64 %82, 4294967288
  %.cast = trunc nuw i64 %n.vec to i32
  %ind.end = add i32 %.0185273, %.cast
  %.splatinsert = insertelement <4 x i32> poison, i32 %.0185273, i64 0
  %.splat = shufflevector <4 x i32> %.splatinsert, <4 x i32> poison, <4 x i32> zeroinitializer
  %induction = add <4 x i32> %.splat, <i32 0, i32 1, i32 2, i32 3>
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %vec.ind = phi <4 x i32> [ %induction, %vector.ph ], [ %vec.ind.next, %vector.body ]
  %step.add = add <4 x i32> %vec.ind, <i32 4, i32 4, i32 4, i32 4>
  %92 = getelementptr inbounds i32, ptr %84, i64 %index
  %93 = getelementptr inbounds i8, ptr %92, i64 16
  store <4 x i32> %vec.ind, ptr %92, align 4, !tbaa !19
  store <4 x i32> %step.add, ptr %93, align 4, !tbaa !19
  %index.next = add nuw i64 %index, 8
  %vec.ind.next = add <4 x i32> %vec.ind, <i32 8, i32 8, i32 8, i32 8>
  %94 = icmp eq i64 %index.next, %n.vec
  br i1 %94, label %middle.block, label %vector.body, !llvm.loop !24

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %n.vec, %82
  br i1 %cmp.n, label %._crit_edge, label %.lr.ph.preheader331

._crit_edge:                                      ; preds = %.lr.ph, %middle.block, %88
  %.1.lcssa = phi i32 [ %.0185273, %88 ], [ %ind.end, %middle.block ], [ %97, %.lr.ph ]
  %95 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKjSt6vectorIjSaIjEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %7) #11
  %96 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKjSt6vectorIjSaIjEEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(8) %8) #11
  br i1 %96, label %.lr.ph276, label %._crit_edge277

.lr.ph:                                           ; preds = %.lr.ph.preheader331, %.lr.ph
  %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph ], [ %indvars.iv.ph, %.lr.ph.preheader331 ]
  %.1272 = phi i32 [ %97, %.lr.ph ], [ %.1272.ph, %.lr.ph.preheader331 ]
  %97 = add i32 %.1272, 1
  %98 = getelementptr inbounds i32, ptr %84, i64 %indvars.iv
  store i32 %.1272, ptr %98, align 4, !tbaa !19
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %82
  br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !28

99:                                               ; preds = %._crit_edge277
  %100 = call noundef i64 @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %77) #11
  %101 = call noundef i64 @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %33) #11
  %102 = icmp eq i64 %100, %101
  br i1 %102, label %104, label %103

103:                                              ; preds = %99
  call void @_ZN6Assimp17aiAssertViolationEPKcS1_i(ptr noundef nonnull @.str.56, ptr noundef nonnull @.str.5, i32 noundef 1161)
  br label %104

104:                                              ; preds = %103, %99
  %105 = call noundef i64 @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %33) #11
  %106 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %105, i64 12)
  %107 = extractvalue { i64, i1 } %106, 1
  %108 = extractvalue { i64, i1 } %106, 0
  %109 = select i1 %107, i64 -1, i64 %108
  %110 = call noalias noundef nonnull ptr @_Znam(i64 noundef %109) #12
  %111 = icmp eq i64 %105, 0
  br i1 %111, label %.loopexit268, label %112

112:                                              ; preds = %104
  %113 = getelementptr inbounds %class.aiVector3t, ptr %110, i64 %105
  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) #11
  %116 = getelementptr inbounds i8, ptr %115, i64 12
  %117 = icmp eq ptr %116, %113
  br i1 %117, label %.loopexit268, label %114

.loopexit268:                                     ; preds = %114, %104
  %118 = getelementptr inbounds i8, ptr %32, i64 24
  store ptr %110, ptr %118, align 8, !tbaa !29
  %119 = call ptr @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %77) #11
  %120 = call ptr @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %77) #11
  %121 = load ptr, ptr %118, align 8, !tbaa !29
  %122 = call noundef ptr @_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPK10aiVector3tIfESt6vectorIS3_SaIS3_EEEEPS3_ET0_T_SC_SB_(ptr %119, ptr %120, ptr noundef %121)
  br label %123

123:                                              ; preds = %.loopexit268, %._crit_edge277
  %124 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX12MeshGeometry11GetTangentsEv(ptr noundef nonnull align 8 dereferenceable(1000) %1)
  %125 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX12MeshGeometry12GetBinormalsEv(ptr noundef nonnull align 8 dereferenceable(1000) %1)
  %126 = call noundef i64 @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %124) #11
  %.not226 = icmp eq i64 %126, 0
  br i1 %.not226, label %199, label %127

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

129:                                              ; preds = %127
  %130 = call noundef i64 @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %77) #11
  %.not228 = icmp eq i64 %130, 0
  br i1 %.not228, label %197, label %131

131:                                              ; preds = %129
  %132 = call noundef i64 @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %77) #11
  invoke void @_ZNSt6vectorI10aiVector3tIfESaIS1_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %9, i64 noundef %132)
          to label %.preheader266 unwind label %134

.preheader266:                                    ; preds = %131
  %133 = call noundef i64 @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %124) #11
  %.not304 = icmp eq i64 %133, 0
  br i1 %.not304, label %.loopexit267, label %.lr.ph279

134:                                              ; preds = %.loopexit264, %177, %.loopexit265, %157, %156, %151, %131
  %135 = landingpad { ptr, i32 }
          cleanup
  br label %198

.lr.ph279:                                        ; preds = %.preheader266, %140
  %136 = phi i64 [ %143, %140 ], [ 0, %.preheader266 ]
  %.0212278 = phi i32 [ %142, %140 ], [ 0, %.preheader266 ]
  %137 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNKSt6vectorI10aiVector3tIfESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %77, i64 noundef %136) #11
  %138 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNKSt6vectorI10aiVector3tIfESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %124, i64 noundef %136) #11
  %139 = invoke { <2 x float>, float } @_ZeoIfE10aiVector3tIT_ERKS2_S4_(ptr noundef nonnull align 4 dereferenceable(12) %137, ptr noundef nonnull align 4 dereferenceable(12) %138)
          to label %140 unwind label %146

140:                                              ; preds = %.lr.ph279
  %.fca.0.extract = extractvalue { <2 x float>, float } %139, 0
  %.fca.1.extract = extractvalue { <2 x float>, float } %139, 1
  %141 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorI10aiVector3tIfESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %9, i64 noundef %136) #11
  store <2 x float> %.fca.0.extract, ptr %141, align 4
  %.sroa.5.0..sroa_idx = getelementptr inbounds i8, ptr %141, i64 8
  store float %.fca.1.extract, ptr %.sroa.5.0..sroa_idx, align 4, !tbaa !30
  %142 = add i32 %.0212278, 1
  %143 = zext i32 %142 to i64
  %144 = call noundef i64 @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %124) #11
  %145 = icmp ugt i64 %144, %143
  br i1 %145, label %.lr.ph279, label %.loopexit267, !llvm.loop !31

146:                                              ; preds = %.lr.ph279
  %147 = landingpad { ptr, i32 }
          cleanup
  br label %198

.loopexit267:                                     ; preds = %140, %.preheader266, %127
  %.0191.ph = phi ptr [ %125, %127 ], [ %9, %.preheader266 ], [ %9, %140 ]
  %148 = call noundef i64 @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %124) #11
  %149 = call noundef i64 @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %33) #11
  %150 = icmp eq i64 %148, %149
  br i1 %150, label %152, label %151

151:                                              ; preds = %.loopexit267
  invoke void @_ZN6Assimp17aiAssertViolationEPKcS1_i(ptr noundef nonnull @.str.57, ptr noundef nonnull @.str.5, i32 noundef 1189)
          to label %152 unwind label %134

152:                                              ; preds = %151, %.loopexit267
  %153 = call noundef i64 @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %.0191.ph) #11
  %154 = call noundef i64 @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %33) #11
  %155 = icmp eq i64 %153, %154
  br i1 %155, label %157, label %156

156:                                              ; preds = %152
  invoke void @_ZN6Assimp17aiAssertViolationEPKcS1_i(ptr noundef nonnull @.str.58, ptr noundef nonnull @.str.5, i32 noundef 1190)
          to label %157 unwind label %134

157:                                              ; preds = %156, %152
  %158 = call noundef i64 @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %33) #11
  %159 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %158, i64 12)
  %160 = extractvalue { i64, i1 } %159, 1
  %161 = extractvalue { i64, i1 } %159, 0
  %162 = select i1 %160, i64 -1, i64 %161
  %163 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %162) #12
          to label %164 unwind label %134

164:                                              ; preds = %157
  %165 = icmp eq i64 %158, 0
  br i1 %165, label %.loopexit265, label %166

166:                                              ; preds = %164
  %167 = getelementptr inbounds %class.aiVector3t, ptr %163, i64 %158
  br label %168

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

.loopexit265:                                     ; preds = %168, %164
  %172 = getelementptr inbounds i8, ptr %32, i64 32
  store ptr %163, ptr %172, align 8, !tbaa !32
  %173 = call ptr @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %124) #11
  %174 = call ptr @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %124) #11
  %175 = load ptr, ptr %172, align 8, !tbaa !32
  %176 = invoke noundef ptr @_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPK10aiVector3tIfESt6vectorIS3_SaIS3_EEEEPS3_ET0_T_SC_SB_(ptr %173, ptr %174, ptr noundef %175)
          to label %177 unwind label %134

177:                                              ; preds = %.loopexit265
  %178 = call noundef i64 @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %33) #11
  %179 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %178, i64 12)
  %180 = extractvalue { i64, i1 } %179, 1
  %181 = extractvalue { i64, i1 } %179, 0
  %182 = select i1 %180, i64 -1, i64 %181
  %183 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %182) #12
          to label %184 unwind label %134

184:                                              ; preds = %177
  %185 = icmp eq i64 %178, 0
  br i1 %185, label %.loopexit264, label %186

186:                                              ; preds = %184
  %187 = getelementptr inbounds %class.aiVector3t, ptr %183, i64 %178
  br label %188

188:                                              ; preds = %188, %186
  %189 = phi ptr [ %183, %186 ], [ %190, %188 ]
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %189) #11
  %190 = getelementptr inbounds i8, ptr %189, i64 12
  %191 = icmp eq ptr %190, %187
  br i1 %191, label %.loopexit264, label %188

.loopexit264:                                     ; preds = %188, %184
  %192 = getelementptr inbounds i8, ptr %32, i64 40
  store ptr %183, ptr %192, align 8, !tbaa !33
  %193 = call ptr @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %.0191.ph) #11
  %194 = call ptr @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %.0191.ph) #11
  %195 = load ptr, ptr %192, align 8, !tbaa !33
  %196 = invoke noundef ptr @_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPK10aiVector3tIfESt6vectorIS3_SaIS3_EEEEPS3_ET0_T_SC_SB_(ptr %193, ptr %194, ptr noundef %195)
          to label %197 unwind label %134

197:                                              ; preds = %129, %.loopexit264
  call void @_ZNSt6vectorI10aiVector3tIfESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #11
  br label %199

198:                                              ; preds = %146, %134
  %.pn = phi { ptr, i32 } [ %135, %134 ], [ %147, %146 ]
  call void @_ZNSt6vectorI10aiVector3tIfESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #11
  br label %611

199:                                              ; preds = %197, %123
  %200 = getelementptr inbounds i8, ptr %32, i64 112
  %201 = getelementptr inbounds i8, ptr %32, i64 176
  br label %204

202:                                              ; preds = %._crit_edge283
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #11
  call void @llvm.lifetime.end.p0(i64 1028, ptr nonnull %13) #11
  %203 = getelementptr inbounds [8 x i32], ptr %201, i64 0, i64 %indvars.iv308
  store i32 2, ptr %203, align 4, !tbaa !19
  %indvars.iv.next309 = add nuw nsw i64 %indvars.iv308, 1
  %exitcond311.not = icmp eq i64 %indvars.iv.next309, 8
  br i1 %exitcond311.not, label %.critedge, label %204, !llvm.loop !34

204:                                              ; preds = %199, %202
  %indvars.iv308 = phi i64 [ 0, %199 ], [ %indvars.iv.next309, %202 ]
  %205 = trunc nuw nsw i64 %indvars.iv308 to i32
  %206 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX12MeshGeometry16GetTextureCoordsEj(ptr noundef nonnull align 8 dereferenceable(1000) %1, i32 noundef %205)
  %207 = call noundef zeroext i1 @_ZNKSt6vectorI10aiVector2tIfESaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %206) #11
  br i1 %207, label %.critedge, label %208

208:                                              ; preds = %204
  %209 = call noundef i64 @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %33) #11
  %210 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %209, i64 12)
  %211 = extractvalue { i64, i1 } %210, 1
  %212 = extractvalue { i64, i1 } %210, 0
  %213 = select i1 %211, i64 -1, i64 %212
  %214 = call noalias noundef nonnull ptr @_Znam(i64 noundef %213) #12
  %215 = icmp eq i64 %209, 0
  br i1 %215, label %.loopexit263, label %216

216:                                              ; preds = %208
  %217 = getelementptr inbounds %class.aiVector3t, ptr %214, i64 %209
  br label %218

218:                                              ; preds = %218, %216
  %219 = phi ptr [ %214, %216 ], [ %220, %218 ]
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %219) #11
  %220 = getelementptr inbounds i8, ptr %219, i64 12
  %221 = icmp eq ptr %220, %217
  br i1 %221, label %.loopexit263, label %218

.loopexit263:                                     ; preds = %218, %208
  %222 = getelementptr inbounds [8 x ptr], ptr %200, i64 0, i64 %indvars.iv308
  store ptr %214, ptr %222, align 8, !tbaa !35
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #11
  %223 = call ptr @_ZNKSt6vectorI10aiVector2tIfESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %206) #11
  store ptr %223, ptr %10, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #11
  %224 = call ptr @_ZNKSt6vectorI10aiVector2tIfESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %206) #11
  store ptr %224, ptr %11, align 8
  %225 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPK10aiVector2tIfESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %10, ptr noundef nonnull align 8 dereferenceable(8) %11) #11
  br i1 %225, label %.lr.ph282, label %._crit_edge283

._crit_edge283:                                   ; preds = %.lr.ph282, %.loopexit263
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #11
  call void @llvm.lifetime.start.p0(i64 1028, ptr nonnull %13) #11
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %14) #11
  call void @_ZNK6Assimp3FBX12MeshGeometry26GetTextureCoordChannelNameB5cxx11Ej(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %14, ptr noundef nonnull align 8 dereferenceable(1000) %1, i32 noundef %205)
  call void @_ZN8aiStringC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 4 dereferenceable(1028) %13, ptr noundef nonnull align 8 dereferenceable(32) %14)
  invoke void @_ZN6aiMesh20SetTextureCoordsNameEjRK8aiString(ptr noundef nonnull align 8 dereferenceable(1320) %32, i32 noundef %205, ptr noundef nonnull align 4 dereferenceable(1028) %13)
          to label %202 unwind label %233

.lr.ph282:                                        ; preds = %.loopexit263, %.lr.ph282
  %.0214280 = phi ptr [ %230, %.lr.ph282 ], [ %214, %.loopexit263 ]
  %226 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPK10aiVector2tIfESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %10) #11
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %12) #11
  %227 = load float, ptr %226, align 4, !tbaa !36
  %228 = getelementptr inbounds i8, ptr %226, i64 4
  %229 = load float, ptr %228, align 4, !tbaa !38
  call void @_ZN10aiVector3tIfEC2Efff(ptr noundef nonnull align 4 dereferenceable(12) %12, float noundef %227, float noundef %229, float noundef 0.000000e+00)
  %230 = getelementptr inbounds i8, ptr %.0214280, i64 12
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %.0214280, ptr noundef nonnull align 4 dereferenceable(12) %12, i64 12, i1 false), !tbaa.struct !39
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %12) #11
  %231 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPK10aiVector2tIfESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %10) #11
  %232 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPK10aiVector2tIfESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %10, ptr noundef nonnull align 8 dereferenceable(8) %11) #11
  br i1 %232, label %.lr.ph282, label %._crit_edge283

233:                                              ; preds = %._crit_edge283
  %234 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #11
  call void @llvm.lifetime.end.p0(i64 1028, ptr nonnull %13) #11
  br label %611

.critedge:                                        ; preds = %204, %202
  %235 = getelementptr inbounds i8, ptr %32, i64 48
  %236 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX12MeshGeometry15GetVertexColorsEj(ptr noundef nonnull align 8 dereferenceable(1000) %1, i32 noundef 0)
  %237 = call noundef zeroext i1 @_ZNKSt6vectorI9aiColor4tIfESaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %236) #11
  br i1 %237, label %.critedge258, label %382

.loopexit262.loopexit:                            ; preds = %391, %382
  store ptr %387, ptr %235, align 8, !tbaa !35
  %238 = call ptr @_ZNKSt6vectorI9aiColor4tIfESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %236) #11
  %239 = call ptr @_ZNKSt6vectorI9aiColor4tIfESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %236) #11
  %240 = load ptr, ptr %235, align 8, !tbaa !35
  %241 = call noundef ptr @_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPK9aiColor4tIfESt6vectorIS3_SaIS3_EEEEPS3_ET0_T_SC_SB_(ptr %238, ptr %239, ptr noundef %240)
  %242 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX12MeshGeometry15GetVertexColorsEj(ptr noundef nonnull align 8 dereferenceable(1000) %1, i32 noundef 1)
  %243 = call noundef zeroext i1 @_ZNKSt6vectorI9aiColor4tIfESaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %242) #11
  br i1 %243, label %.critedge258, label %244

244:                                              ; preds = %.loopexit262.loopexit
  %245 = call noundef i64 @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %33) #11
  %246 = icmp ugt i64 %245, 1152921504606846975
  %247 = shl nuw i64 %245, 4
  %248 = select i1 %246, i64 -1, i64 %247
  %249 = call noalias noundef nonnull ptr @_Znam(i64 noundef %248) #12
  %250 = icmp eq i64 %245, 0
  br i1 %250, label %.loopexit327, label %251

251:                                              ; preds = %244
  %252 = getelementptr inbounds %class.aiColor4t, ptr %249, i64 %245
  br label %253

253:                                              ; preds = %253, %251
  %254 = phi ptr [ %249, %251 ], [ %255, %253 ]
  call void @_ZN9aiColor4tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(16) %254) #11
  %255 = getelementptr inbounds i8, ptr %254, i64 16
  %256 = icmp eq ptr %255, %252
  br i1 %256, label %.loopexit327, label %253

.loopexit327:                                     ; preds = %253, %244
  %257 = getelementptr inbounds i8, ptr %32, i64 56
  store ptr %249, ptr %257, align 8, !tbaa !35
  %258 = call ptr @_ZNKSt6vectorI9aiColor4tIfESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %242) #11
  %259 = call ptr @_ZNKSt6vectorI9aiColor4tIfESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %242) #11
  %260 = load ptr, ptr %257, align 8, !tbaa !35
  %261 = call noundef ptr @_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPK9aiColor4tIfESt6vectorIS3_SaIS3_EEEEPS3_ET0_T_SC_SB_(ptr %258, ptr %259, ptr noundef %260)
  %262 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX12MeshGeometry15GetVertexColorsEj(ptr noundef nonnull align 8 dereferenceable(1000) %1, i32 noundef 2)
  %263 = call noundef zeroext i1 @_ZNKSt6vectorI9aiColor4tIfESaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %262) #11
  br i1 %263, label %.critedge258, label %264

264:                                              ; preds = %.loopexit327
  %265 = call noundef i64 @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %33) #11
  %266 = icmp ugt i64 %265, 1152921504606846975
  %267 = shl nuw i64 %265, 4
  %268 = select i1 %266, i64 -1, i64 %267
  %269 = call noalias noundef nonnull ptr @_Znam(i64 noundef %268) #12
  %270 = icmp eq i64 %265, 0
  br i1 %270, label %.loopexit326, label %271

271:                                              ; preds = %264
  %272 = getelementptr inbounds %class.aiColor4t, ptr %269, i64 %265
  br label %273

273:                                              ; preds = %273, %271
  %274 = phi ptr [ %269, %271 ], [ %275, %273 ]
  call void @_ZN9aiColor4tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(16) %274) #11
  %275 = getelementptr inbounds i8, ptr %274, i64 16
  %276 = icmp eq ptr %275, %272
  br i1 %276, label %.loopexit326, label %273

.loopexit326:                                     ; preds = %273, %264
  %277 = getelementptr inbounds i8, ptr %32, i64 64
  store ptr %269, ptr %277, align 8, !tbaa !35
  %278 = call ptr @_ZNKSt6vectorI9aiColor4tIfESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %262) #11
  %279 = call ptr @_ZNKSt6vectorI9aiColor4tIfESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %262) #11
  %280 = load ptr, ptr %277, align 8, !tbaa !35
  %281 = call noundef ptr @_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPK9aiColor4tIfESt6vectorIS3_SaIS3_EEEEPS3_ET0_T_SC_SB_(ptr %278, ptr %279, ptr noundef %280)
  %282 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX12MeshGeometry15GetVertexColorsEj(ptr noundef nonnull align 8 dereferenceable(1000) %1, i32 noundef 3)
  %283 = call noundef zeroext i1 @_ZNKSt6vectorI9aiColor4tIfESaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %282) #11
  br i1 %283, label %.critedge258, label %284

284:                                              ; preds = %.loopexit326
  %285 = call noundef i64 @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %33) #11
  %286 = icmp ugt i64 %285, 1152921504606846975
  %287 = shl nuw i64 %285, 4
  %288 = select i1 %286, i64 -1, i64 %287
  %289 = call noalias noundef nonnull ptr @_Znam(i64 noundef %288) #12
  %290 = icmp eq i64 %285, 0
  br i1 %290, label %.loopexit325, label %291

291:                                              ; preds = %284
  %292 = getelementptr inbounds %class.aiColor4t, ptr %289, i64 %285
  br label %293

293:                                              ; preds = %293, %291
  %294 = phi ptr [ %289, %291 ], [ %295, %293 ]
  call void @_ZN9aiColor4tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(16) %294) #11
  %295 = getelementptr inbounds i8, ptr %294, i64 16
  %296 = icmp eq ptr %295, %292
  br i1 %296, label %.loopexit325, label %293

.loopexit325:                                     ; preds = %293, %284
  %297 = getelementptr inbounds i8, ptr %32, i64 72
  store ptr %289, ptr %297, align 8, !tbaa !35
  %298 = call ptr @_ZNKSt6vectorI9aiColor4tIfESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %282) #11
  %299 = call ptr @_ZNKSt6vectorI9aiColor4tIfESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %282) #11
  %300 = load ptr, ptr %297, align 8, !tbaa !35
  %301 = call noundef ptr @_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPK9aiColor4tIfESt6vectorIS3_SaIS3_EEEEPS3_ET0_T_SC_SB_(ptr %298, ptr %299, ptr noundef %300)
  %302 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX12MeshGeometry15GetVertexColorsEj(ptr noundef nonnull align 8 dereferenceable(1000) %1, i32 noundef 4)
  %303 = call noundef zeroext i1 @_ZNKSt6vectorI9aiColor4tIfESaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %302) #11
  br i1 %303, label %.critedge258, label %304

304:                                              ; preds = %.loopexit325
  %305 = call noundef i64 @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %33) #11
  %306 = icmp ugt i64 %305, 1152921504606846975
  %307 = shl nuw i64 %305, 4
  %308 = select i1 %306, i64 -1, i64 %307
  %309 = call noalias noundef nonnull ptr @_Znam(i64 noundef %308) #12
  %310 = icmp eq i64 %305, 0
  br i1 %310, label %.loopexit324, label %311

311:                                              ; preds = %304
  %312 = getelementptr inbounds %class.aiColor4t, ptr %309, i64 %305
  br label %313

313:                                              ; preds = %313, %311
  %314 = phi ptr [ %309, %311 ], [ %315, %313 ]
  call void @_ZN9aiColor4tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(16) %314) #11
  %315 = getelementptr inbounds i8, ptr %314, i64 16
  %316 = icmp eq ptr %315, %312
  br i1 %316, label %.loopexit324, label %313

.loopexit324:                                     ; preds = %313, %304
  %317 = getelementptr inbounds i8, ptr %32, i64 80
  store ptr %309, ptr %317, align 8, !tbaa !35
  %318 = call ptr @_ZNKSt6vectorI9aiColor4tIfESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %302) #11
  %319 = call ptr @_ZNKSt6vectorI9aiColor4tIfESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %302) #11
  %320 = load ptr, ptr %317, align 8, !tbaa !35
  %321 = call noundef ptr @_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPK9aiColor4tIfESt6vectorIS3_SaIS3_EEEEPS3_ET0_T_SC_SB_(ptr %318, ptr %319, ptr noundef %320)
  %322 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX12MeshGeometry15GetVertexColorsEj(ptr noundef nonnull align 8 dereferenceable(1000) %1, i32 noundef 5)
  %323 = call noundef zeroext i1 @_ZNKSt6vectorI9aiColor4tIfESaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %322) #11
  br i1 %323, label %.critedge258, label %324

324:                                              ; preds = %.loopexit324
  %325 = call noundef i64 @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %33) #11
  %326 = icmp ugt i64 %325, 1152921504606846975
  %327 = shl nuw i64 %325, 4
  %328 = select i1 %326, i64 -1, i64 %327
  %329 = call noalias noundef nonnull ptr @_Znam(i64 noundef %328) #12
  %330 = icmp eq i64 %325, 0
  br i1 %330, label %.loopexit323, label %331

331:                                              ; preds = %324
  %332 = getelementptr inbounds %class.aiColor4t, ptr %329, i64 %325
  br label %333

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

.loopexit323:                                     ; preds = %333, %324
  %337 = getelementptr inbounds i8, ptr %32, i64 88
  store ptr %329, ptr %337, align 8, !tbaa !35
  %338 = call ptr @_ZNKSt6vectorI9aiColor4tIfESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %322) #11
  %339 = call ptr @_ZNKSt6vectorI9aiColor4tIfESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %322) #11
  %340 = load ptr, ptr %337, align 8, !tbaa !35
  %341 = call noundef ptr @_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPK9aiColor4tIfESt6vectorIS3_SaIS3_EEEEPS3_ET0_T_SC_SB_(ptr %338, ptr %339, ptr noundef %340)
  %342 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX12MeshGeometry15GetVertexColorsEj(ptr noundef nonnull align 8 dereferenceable(1000) %1, i32 noundef 6)
  %343 = call noundef zeroext i1 @_ZNKSt6vectorI9aiColor4tIfESaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %342) #11
  br i1 %343, label %.critedge258, label %344

344:                                              ; preds = %.loopexit323
  %345 = call noundef i64 @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %33) #11
  %346 = icmp ugt i64 %345, 1152921504606846975
  %347 = shl nuw i64 %345, 4
  %348 = select i1 %346, i64 -1, i64 %347
  %349 = call noalias noundef nonnull ptr @_Znam(i64 noundef %348) #12
  %350 = icmp eq i64 %345, 0
  br i1 %350, label %.loopexit322, label %351

351:                                              ; preds = %344
  %352 = getelementptr inbounds %class.aiColor4t, ptr %349, i64 %345
  br label %353

353:                                              ; preds = %353, %351
  %354 = phi ptr [ %349, %351 ], [ %355, %353 ]
  call void @_ZN9aiColor4tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(16) %354) #11
  %355 = getelementptr inbounds i8, ptr %354, i64 16
  %356 = icmp eq ptr %355, %352
  br i1 %356, label %.loopexit322, label %353

.loopexit322:                                     ; preds = %353, %344
  %357 = getelementptr inbounds i8, ptr %32, i64 96
  store ptr %349, ptr %357, align 8, !tbaa !35
  %358 = call ptr @_ZNKSt6vectorI9aiColor4tIfESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %342) #11
  %359 = call ptr @_ZNKSt6vectorI9aiColor4tIfESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %342) #11
  %360 = load ptr, ptr %357, align 8, !tbaa !35
  %361 = call noundef ptr @_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPK9aiColor4tIfESt6vectorIS3_SaIS3_EEEEPS3_ET0_T_SC_SB_(ptr %358, ptr %359, ptr noundef %360)
  %362 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX12MeshGeometry15GetVertexColorsEj(ptr noundef nonnull align 8 dereferenceable(1000) %1, i32 noundef 7)
  %363 = call noundef zeroext i1 @_ZNKSt6vectorI9aiColor4tIfESaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %362) #11
  br i1 %363, label %.critedge258, label %364

364:                                              ; preds = %.loopexit322
  %365 = call noundef i64 @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %33) #11
  %366 = icmp ugt i64 %365, 1152921504606846975
  %367 = shl nuw i64 %365, 4
  %368 = select i1 %366, i64 -1, i64 %367
  %369 = call noalias noundef nonnull ptr @_Znam(i64 noundef %368) #12
  %370 = icmp eq i64 %365, 0
  br i1 %370, label %.loopexit321, label %371

371:                                              ; preds = %364
  %372 = getelementptr inbounds %class.aiColor4t, ptr %369, i64 %365
  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) #11
  %375 = getelementptr inbounds i8, ptr %374, i64 16
  %376 = icmp eq ptr %375, %372
  br i1 %376, label %.loopexit321, label %373

.loopexit321:                                     ; preds = %373, %364
  %377 = getelementptr inbounds i8, ptr %32, i64 104
  store ptr %369, ptr %377, align 8, !tbaa !35
  %378 = call ptr @_ZNKSt6vectorI9aiColor4tIfESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %362) #11
  %379 = call ptr @_ZNKSt6vectorI9aiColor4tIfESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %362) #11
  %380 = load ptr, ptr %377, align 8, !tbaa !35
  %381 = call noundef ptr @_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPK9aiColor4tIfESt6vectorIS3_SaIS3_EEEEPS3_ET0_T_SC_SB_(ptr %378, ptr %379, ptr noundef %380)
  br label %.critedge258

382:                                              ; preds = %.critedge
  %383 = call noundef i64 @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %33) #11
  %384 = icmp ugt i64 %383, 1152921504606846975
  %385 = shl nuw i64 %383, 4
  %386 = select i1 %384, i64 -1, i64 %385
  %387 = call noalias noundef nonnull ptr @_Znam(i64 noundef %386) #12
  %388 = icmp eq i64 %383, 0
  br i1 %388, label %.loopexit262.loopexit, label %389

389:                                              ; preds = %382
  %390 = getelementptr inbounds %class.aiColor4t, ptr %387, i64 %383
  br label %391

391:                                              ; preds = %391, %389
  %392 = phi ptr [ %387, %389 ], [ %393, %391 ]
  call void @_ZN9aiColor4tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(16) %392) #11
  %393 = getelementptr inbounds i8, ptr %392, i64 16
  %394 = icmp eq ptr %393, %390
  br i1 %394, label %.loopexit262.loopexit, label %391

.critedge258:                                     ; preds = %.loopexit321, %.loopexit322, %.loopexit323, %.loopexit324, %.loopexit325, %.loopexit326, %.loopexit327, %.loopexit262.loopexit, %.critedge
  %395 = getelementptr inbounds i8, ptr %0, i64 480
  %396 = load ptr, ptr %395, align 8, !tbaa !40
  %397 = call noundef nonnull align 1 dereferenceable(15) ptr @_ZNK6Assimp3FBX8Document8SettingsEv(ptr noundef nonnull align 8 dereferenceable(336) %396)
  %398 = getelementptr inbounds i8, ptr %397, i64 3
  %399 = load i8, ptr %398, align 1, !tbaa !101, !range !103, !noundef !104
  %400 = trunc nuw i8 %399 to i1
  br i1 %400, label %401, label %403

401:                                              ; preds = %.critedge258
  %402 = call noundef zeroext i1 @_ZNKSt6vectorIiSaIiEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %31) #11
  br i1 %402, label %403, label %406

403:                                              ; preds = %401, %.critedge258
  call void @_ZN6Assimp12LogFunctionsINS_11FBXImporterEE8LogErrorIJRA55_KcEEEvDpOT_(ptr noundef nonnull align 1 dereferenceable(55) @.str.59)
  %404 = call noundef i32 @_ZN6Assimp3FBX12FBXConverter18GetDefaultMaterialEv(ptr noundef nonnull align 8 dereferenceable(489) %0)
  %405 = getelementptr inbounds i8, ptr %32, i64 232
  store i32 %404, ptr %405, align 8, !tbaa !105
  br label %409

406:                                              ; preds = %401
  %407 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %31, i64 noundef 0) #11
  %408 = load i32, ptr %407, align 4, !tbaa !19
  call void @_ZN6Assimp3FBX12FBXConverter22ConvertMaterialForMeshEP6aiMeshRKNS0_5ModelERKNS0_12MeshGeometryEi(ptr noundef nonnull align 8 dereferenceable(489) %0, ptr noundef %32, ptr noundef nonnull align 8 dereferenceable(208) %2, ptr noundef nonnull align 8 dereferenceable(1000) %1, i32 noundef %408)
  br label %409

409:                                              ; preds = %406, %403
  %410 = load ptr, ptr %395, align 8, !tbaa !40
  %411 = call noundef nonnull align 1 dereferenceable(15) ptr @_ZNK6Assimp3FBX8Document8SettingsEv(ptr noundef nonnull align 8 dereferenceable(336) %410)
  %412 = getelementptr inbounds i8, ptr %411, i64 8
  %413 = load i8, ptr %412, align 1, !tbaa !106, !range !103, !noundef !104
  %414 = trunc nuw i8 %413 to i1
  br i1 %414, label %415, label %424

415:                                              ; preds = %409
  %416 = call noundef ptr @_ZNK6Assimp3FBX8Geometry12DeformerSkinEv(ptr noundef nonnull align 8 dereferenceable(120) %1)
  %.not231 = icmp eq ptr %416, null
  br i1 %.not231, label %424, label %417

417:                                              ; preds = %415
  %418 = load ptr, ptr %395, align 8, !tbaa !40
  %419 = call noundef nonnull align 1 dereferenceable(15) ptr @_ZNK6Assimp3FBX8Document8SettingsEv(ptr noundef nonnull align 8 dereferenceable(336) %418)
  %420 = getelementptr inbounds i8, ptr %419, i64 9
  %421 = load i8, ptr %420, align 1, !tbaa !107, !range !103, !noundef !104
  %422 = trunc nuw i8 %421 to i1
  br i1 %422, label %424, label %423

423:                                              ; preds = %417
  call void @_ZN6Assimp3FBX12FBXConverter14ConvertWeightsEP6aiMeshRKNS0_12MeshGeometryERK12aiMatrix4x4tIfEP6aiNodejPSt6vectorIjSaIjEE(ptr noundef nonnull align 8 dereferenceable(489) %0, ptr noundef %32, ptr noundef nonnull align 8 dereferenceable(1000) %1, ptr noundef nonnull align 4 dereferenceable(64) %3, ptr noundef %4, i32 noundef -1, ptr noundef null)
  br label %451

424:                                              ; preds = %417, %415, %409
  %425 = load ptr, ptr %395, align 8, !tbaa !40
  %426 = call noundef nonnull align 1 dereferenceable(15) ptr @_ZNK6Assimp3FBX8Document8SettingsEv(ptr noundef nonnull align 8 dereferenceable(336) %425)
  %427 = getelementptr inbounds i8, ptr %426, i64 8
  %428 = load i8, ptr %427, align 1, !tbaa !106, !range !103, !noundef !104
  %429 = trunc nuw i8 %428 to i1
  br i1 %429, label %430, label %451

430:                                              ; preds = %424
  %431 = call noundef ptr @_ZNK6Assimp3FBX8Geometry12DeformerSkinEv(ptr noundef nonnull align 8 dereferenceable(120) %1)
  %.not232 = icmp eq ptr %431, null
  br i1 %.not232, label %451, label %432

432:                                              ; preds = %430
  %433 = load ptr, ptr %395, align 8, !tbaa !40
  %434 = call noundef nonnull align 1 dereferenceable(15) ptr @_ZNK6Assimp3FBX8Document8SettingsEv(ptr noundef nonnull align 8 dereferenceable(336) %433)
  %435 = getelementptr inbounds i8, ptr %434, i64 9
  %436 = load i8, ptr %435, align 1, !tbaa !107, !range !103, !noundef !104
  %437 = trunc nuw i8 %436 to i1
  br i1 %437, label %438, label %451

438:                                              ; preds = %432
  call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %15) #11
  call void @_ZN6Assimp3FBX21SkeletonBoneContainerC2Ev(ptr noundef nonnull align 8 dereferenceable(72) %15) #11
  invoke void @_ZN6Assimp3FBX12FBXConverter24ConvertWeightsToSkeletonEP6aiMeshRKNS0_12MeshGeometryERK12aiMatrix4x4tIfEP6aiNodejPSt6vectorIjSaIjEERNS0_21SkeletonBoneContainerE(ptr noundef nonnull align 8 dereferenceable(489) %0, ptr noundef %32, ptr noundef nonnull align 8 dereferenceable(1000) %1, ptr noundef nonnull align 4 dereferenceable(64) %3, ptr noundef %4, i32 noundef -1, ptr noundef null, ptr noundef nonnull align 8 dereferenceable(72) %15)
          to label %439 unwind label %445

439:                                              ; preds = %438
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #11
  %440 = invoke noundef ptr @_ZN6Assimp3FBXL16createAiSkeletonERNS0_21SkeletonBoneContainerE(ptr noundef nonnull align 8 dereferenceable(72) %15)
          to label %441 unwind label %447

441:                                              ; preds = %439
  store ptr %440, ptr %16, align 8, !tbaa !35
  %.not233 = icmp eq ptr %440, null
  br i1 %.not233, label %449, label %442

442:                                              ; preds = %441
  %443 = getelementptr inbounds i8, ptr %0, i64 448
  %444 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP10aiSkeletonSaIS1_EE12emplace_backIJRS1_EEES5_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %443, ptr noundef nonnull align 8 dereferenceable(8) %16)
          to label %449 unwind label %447

445:                                              ; preds = %438
  %446 = landingpad { ptr, i32 }
          cleanup
  br label %450

447:                                              ; preds = %442, %439
  %448 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #11
  br label %450

449:                                              ; preds = %442, %441
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #11
  call void @_ZN6Assimp3FBX21SkeletonBoneContainerD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %15) #11
  call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %15) #11
  br label %451

450:                                              ; preds = %447, %445
  %.pn234 = phi { ptr, i32 } [ %448, %447 ], [ %446, %445 ]
  call void @_ZN6Assimp3FBX21SkeletonBoneContainerD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %15) #11
  call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %15) #11
  br label %611

451:                                              ; preds = %424, %430, %432, %449, %423
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %17) #11
  call void @_ZNSt6vectorIP10aiAnimMeshSaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #11
  %452 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZNK6Assimp3FBX8Geometry14GetBlendShapesEv(ptr noundef nonnull align 8 dereferenceable(120) %1)
          to label %453 unwind label %458

453:                                              ; preds = %451
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #11
  %454 = call ptr @_ZNKSt13unordered_setIPKN6Assimp3FBX10BlendShapeESt4hashIS4_ESt8equal_toIS4_ESaIS4_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(56) %452) #11
  store ptr %454, ptr %18, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #11
  %455 = call ptr @_ZNKSt13unordered_setIPKN6Assimp3FBX10BlendShapeESt4hashIS4_ESt8equal_toIS4_ESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %452) #11
  store ptr %455, ptr %19, align 8
  %456 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseIPKN6Assimp3FBX10BlendShapeELb0EEES8_(ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef nonnull align 8 dereferenceable(8) %19) #11
  br i1 %456, label %.lr.ph300, label %._crit_edge301

._crit_edge301:                                   ; preds = %._crit_edge298, %453
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #11
  %457 = call noundef i64 @_ZNKSt6vectorIP10aiAnimMeshSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %17) #11
  %.not236 = icmp eq i64 %457, 0
  br i1 %.not236, label %.loopexit, label %586

458:                                              ; preds = %451
  %459 = landingpad { ptr, i32 }
          cleanup
  br label %610

.lr.ph300:                                        ; preds = %453, %._crit_edge298
  %460 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8__detail20_Node_const_iteratorIPKN6Assimp3FBX10BlendShapeELb1ELb0EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %18) #11
  %461 = load ptr, ptr %460, align 8, !tbaa !35
  %462 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNK6Assimp3FBX10BlendShape18BlendShapeChannelsEv(ptr noundef nonnull align 8 dereferenceable(128) %461)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #11
  %463 = call ptr @_ZNKSt13unordered_setIPKN6Assimp3FBX17BlendShapeChannelESt4hashIS4_ESt8equal_toIS4_ESaIS4_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(56) %462) #11
  store ptr %463, ptr %20, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #11
  %464 = call ptr @_ZNKSt13unordered_setIPKN6Assimp3FBX17BlendShapeChannelESt4hashIS4_ESt8equal_toIS4_ESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %462) #11
  store ptr %464, ptr %21, align 8
  %465 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseIPKN6Assimp3FBX17BlendShapeChannelELb0EEES8_(ptr noundef nonnull align 8 dereferenceable(8) %20, ptr noundef nonnull align 8 dereferenceable(8) %21) #11
  br i1 %465, label %.lr.ph297, label %._crit_edge298

._crit_edge298:                                   ; preds = %._crit_edge295, %.lr.ph300
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #11
  %466 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8__detail20_Node_const_iteratorIPKN6Assimp3FBX10BlendShapeELb1ELb0EEppEv(ptr noundef nonnull align 8 dereferenceable(8) %18) #11
  %467 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseIPKN6Assimp3FBX10BlendShapeELb0EEES8_(ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef nonnull align 8 dereferenceable(8) %19) #11
  br i1 %467, label %.lr.ph300, label %._crit_edge301

.lr.ph297:                                        ; preds = %.lr.ph300, %._crit_edge295
  %468 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8__detail20_Node_const_iteratorIPKN6Assimp3FBX17BlendShapeChannelELb1ELb0EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %20) #11
  %469 = load ptr, ptr %468, align 8, !tbaa !35
  %470 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNK6Assimp3FBX17BlendShapeChannel18GetShapeGeometriesEv(ptr noundef nonnull align 8 dereferenceable(160) %469)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #11
  %471 = call ptr @_ZNKSt13unordered_setIPKN6Assimp3FBX13ShapeGeometryESt4hashIS4_ESt8equal_toIS4_ESaIS4_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(56) %470) #11
  store ptr %471, ptr %22, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #11
  %472 = call ptr @_ZNKSt13unordered_setIPKN6Assimp3FBX13ShapeGeometryESt4hashIS4_ESt8equal_toIS4_ESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %470) #11
  store ptr %472, ptr %23, align 8
  %473 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseIPKN6Assimp3FBX13ShapeGeometryELb0EEES8_(ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 8 dereferenceable(8) %23) #11
  br i1 %473, label %.lr.ph294, label %._crit_edge295

._crit_edge295:                                   ; preds = %579, %.lr.ph297
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #11
  %474 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8__detail20_Node_const_iteratorIPKN6Assimp3FBX17BlendShapeChannelELb1ELb0EEppEv(ptr noundef nonnull align 8 dereferenceable(8) %20) #11
  %475 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseIPKN6Assimp3FBX17BlendShapeChannelELb0EEES8_(ptr noundef nonnull align 8 dereferenceable(8) %20, ptr noundef nonnull align 8 dereferenceable(8) %21) #11
  br i1 %475, label %.lr.ph297, label %._crit_edge298

.lr.ph294:                                        ; preds = %.lr.ph297, %579
  %476 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8__detail20_Node_const_iteratorIPKN6Assimp3FBX13ShapeGeometryELb1ELb0EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %22) #11
  %477 = load ptr, ptr %476, align 8, !tbaa !35
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #11
  %478 = invoke noundef ptr @_ZN6Assimp16aiCreateAnimMeshEPK6aiMeshbbbbb(ptr noundef %32, i1 noundef zeroext true, i1 noundef zeroext true, i1 noundef zeroext true, i1 noundef zeroext true, i1 noundef zeroext true)
          to label %479 unwind label %493

479:                                              ; preds = %.lr.ph294
  store ptr %478, ptr %24, align 8, !tbaa !35
  %480 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX13ShapeGeometry11GetVerticesEv(ptr noundef nonnull align 8 dereferenceable(192) %477)
          to label %481 unwind label %495

481:                                              ; preds = %479
  %482 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX13ShapeGeometry10GetNormalsEv(ptr noundef nonnull align 8 dereferenceable(192) %477)
          to label %483 unwind label %497

483:                                              ; preds = %481
  %484 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX13ShapeGeometry10GetIndicesEv(ptr noundef nonnull align 8 dereferenceable(192) %477)
          to label %485 unwind label %499

485:                                              ; preds = %483
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %25) #11
  %486 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK6Assimp3FBX6Object4NameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(56) %469)
  invoke void @_ZN6Assimp3FBX12FBXConverter15FixAnimMeshNameERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %25, ptr noundef nonnull align 8 dereferenceable(489) %0, ptr noundef nonnull align 8 dereferenceable(32) %486)
          to label %487 unwind label %501

487:                                              ; preds = %485
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %26) #11
  %488 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK6Assimp3FBX6Object4NameB5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(56) %477)
  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) %488)
          to label %489 unwind label %503

489:                                              ; preds = %487
  %490 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %25) #11
  br i1 %490, label %491, label %507

491:                                              ; preds = %489
  %492 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEaSERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef nonnull align 8 dereferenceable(32) %26)
          to label %519 unwind label %505

493:                                              ; preds = %.lr.ph294
  %494 = landingpad { ptr, i32 }
          cleanup
  br label %585

495:                                              ; preds = %479
  %496 = landingpad { ptr, i32 }
          cleanup
  br label %585

497:                                              ; preds = %481
  %498 = landingpad { ptr, i32 }
          cleanup
  br label %585

499:                                              ; preds = %483
  %500 = landingpad { ptr, i32 }
          cleanup
  br label %585

501:                                              ; preds = %485
  %502 = landingpad { ptr, i32 }
          cleanup
  br label %584

503:                                              ; preds = %487
  %504 = landingpad { ptr, i32 }
          cleanup
  br label %583

505:                                              ; preds = %575, %491
  %506 = landingpad { ptr, i32 }
          cleanup
  br label %582

507:                                              ; preds = %489
  %508 = call noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEcm(ptr noundef nonnull align 8 dereferenceable(32) %25, i8 noundef signext 46, i64 noundef 0) #11
  %509 = icmp eq i64 %508, -1
  br i1 %509, label %510, label %519

510:                                              ; preds = %507
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %27) #11
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %27, ptr noundef nonnull @.str.60, ptr noundef nonnull align 8 dereferenceable(32) %26)
          to label %511 unwind label %514

511:                                              ; preds = %510
  %512 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef nonnull align 8 dereferenceable(32) %27)
          to label %513 unwind label %516

513:                                              ; preds = %511
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) #11
  br label %519

514:                                              ; preds = %510
  %515 = landingpad { ptr, i32 }
          cleanup
  br label %518

516:                                              ; preds = %511
  %517 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #11
  br label %518

518:                                              ; preds = %516, %514
  %.pn239 = phi { ptr, i32 } [ %517, %516 ], [ %515, %514 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) #11
  br label %582

519:                                              ; preds = %507, %513, %491
  %520 = load ptr, ptr %24, align 8, !tbaa !35
  call void @_ZN8aiString3SetERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 4 dereferenceable(1028) %520, ptr noundef nonnull align 8 dereferenceable(32) %25)
  %521 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %484) #11
  %.not305 = icmp eq i64 %521, 0
  br i1 %.not305, label %._crit_edge292, label %.lr.ph291

._crit_edge292:                                   ; preds = %._crit_edge288, %519
  %522 = call noundef i64 @_ZNKSt13unordered_setIPKN6Assimp3FBX13ShapeGeometryESt4hashIS4_ESt8equal_toIS4_ESaIS4_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(56) %470) #11
  %523 = icmp ugt i64 %522, 1
  br i1 %523, label %572, label %575

.lr.ph291:                                        ; preds = %519, %._crit_edge288
  %.0190289 = phi i64 [ %533, %._crit_edge288 ], [ 0, %519 ]
  %524 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIjSaIjEE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %484, i64 noundef %.0190289)
          to label %525 unwind label %536

525:                                              ; preds = %.lr.ph291
  %526 = load i32, ptr %524, align 4, !tbaa !19
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %28) #11
  %527 = invoke noundef nonnull align 4 dereferenceable(12) ptr @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %480, i64 noundef %.0190289)
          to label %528 unwind label %538

528:                                              ; preds = %525
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %28, ptr noundef nonnull align 4 dereferenceable(12) %527, i64 12, i1 false), !tbaa.struct !39
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %29) #11
  %529 = invoke noundef nonnull align 4 dereferenceable(12) ptr @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %482, i64 noundef %.0190289)
          to label %530 unwind label %540

530:                                              ; preds = %528
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %29, ptr noundef nonnull align 4 dereferenceable(12) %529, i64 12, i1 false), !tbaa.struct !39
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %30) #11
  store i32 0, ptr %30, align 4, !tbaa !19
  %531 = invoke noundef ptr @_ZNK6Assimp3FBX12MeshGeometry19ToOutputVertexIndexEjRj(ptr noundef nonnull align 8 dereferenceable(1000) %1, i32 noundef %526, ptr noundef nonnull align 4 dereferenceable(4) %30)
          to label %.preheader unwind label %542

.preheader:                                       ; preds = %530
  %532 = load i32, ptr %30, align 4, !tbaa !19
  %.not306 = icmp eq i32 %532, 0
  br i1 %.not306, label %._crit_edge288, label %.lr.ph287

._crit_edge288:                                   ; preds = %565, %.preheader
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %30) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %29) #11
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %28) #11
  %533 = add nuw i64 %.0190289, 1
  %534 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %484) #11
  %535 = icmp ult i64 %533, %534
  br i1 %535, label %.lr.ph291, label %._crit_edge292, !llvm.loop !108

536:                                              ; preds = %.lr.ph291
  %537 = landingpad { ptr, i32 }
          cleanup
  br label %582

538:                                              ; preds = %525
  %539 = landingpad { ptr, i32 }
          cleanup
  br label %571

540:                                              ; preds = %528
  %541 = landingpad { ptr, i32 }
          cleanup
  br label %570

542:                                              ; preds = %530
  %543 = landingpad { ptr, i32 }
          cleanup
  br label %569

.lr.ph287:                                        ; preds = %.preheader, %565
  %indvars.iv316 = phi i64 [ %indvars.iv.next317, %565 ], [ 0, %.preheader ]
  %544 = getelementptr inbounds i32, ptr %531, i64 %indvars.iv316
  %545 = load i32, ptr %544, align 4, !tbaa !19
  %546 = load ptr, ptr %24, align 8, !tbaa !35
  %547 = getelementptr inbounds i8, ptr %546, i64 1032
  %548 = load ptr, ptr %547, align 8, !tbaa !109
  %549 = zext i32 %545 to i64
  %550 = getelementptr inbounds %class.aiVector3t, ptr %548, i64 %549
  %551 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN10aiVector3tIfEpLERKS0_(ptr noundef nonnull align 4 dereferenceable(12) %550, ptr noundef nonnull align 4 dereferenceable(12) %28)
  %552 = load ptr, ptr %24, align 8, !tbaa !35
  %553 = getelementptr inbounds i8, ptr %552, i64 1040
  %554 = load ptr, ptr %553, align 8, !tbaa !111
  %.not241 = icmp eq ptr %554, null
  br i1 %.not241, label %565, label %555

555:                                              ; preds = %.lr.ph287
  %556 = getelementptr inbounds %class.aiVector3t, ptr %554, i64 %549
  %557 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZN10aiVector3tIfEpLERKS0_(ptr noundef nonnull align 4 dereferenceable(12) %556, ptr noundef nonnull align 4 dereferenceable(12) %29)
  %558 = load ptr, ptr %24, align 8, !tbaa !35
  %559 = getelementptr inbounds i8, ptr %558, i64 1040
  %560 = load ptr, ptr %559, align 8, !tbaa !111
  %561 = getelementptr inbounds %class.aiVector3t, ptr %560, i64 %549
  %562 = invoke noundef nonnull align 4 dereferenceable(12) ptr @_ZN10aiVector3tIfE13NormalizeSafeEv(ptr noundef nonnull align 4 dereferenceable(12) %561)
          to label %565 unwind label %563

563:                                              ; preds = %555
  %564 = landingpad { ptr, i32 }
          cleanup
  br label %569

565:                                              ; preds = %555, %.lr.ph287
  %indvars.iv.next317 = add nuw nsw i64 %indvars.iv316, 1
  %566 = load i32, ptr %30, align 4, !tbaa !19
  %567 = zext i32 %566 to i64
  %568 = icmp ult i64 %indvars.iv.next317, %567
  br i1 %568, label %.lr.ph287, label %._crit_edge288, !llvm.loop !112

569:                                              ; preds = %563, %542
  %.pn242 = phi { ptr, i32 } [ %564, %563 ], [ %543, %542 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %30) #11
  br label %570

570:                                              ; preds = %569, %540
  %.pn242.pn = phi { ptr, i32 } [ %.pn242, %569 ], [ %541, %540 ]
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %29) #11
  br label %571

571:                                              ; preds = %570, %538
  %.pn242.pn.pn = phi { ptr, i32 } [ %.pn242.pn, %570 ], [ %539, %538 ]
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %28) #11
  br label %582

572:                                              ; preds = %._crit_edge292
  %573 = call noundef float @_ZNK6Assimp3FBX17BlendShapeChannel13DeformPercentEv(ptr noundef nonnull align 8 dereferenceable(160) %469)
  %574 = fdiv float %573, 1.000000e+02
  br label %575

575:                                              ; preds = %._crit_edge292, %572
  %576 = phi float [ %574, %572 ], [ 1.000000e+00, %._crit_edge292 ]
  %577 = load ptr, ptr %24, align 8, !tbaa !35
  %578 = getelementptr inbounds i8, ptr %577, i64 1196
  store float %576, ptr %578, align 4, !tbaa !113
  invoke void @_ZNSt6vectorIP10aiAnimMeshSaIS1_EE9push_backERKS1_(ptr noundef nonnull align 8 dereferenceable(24) %17, ptr noundef nonnull align 8 dereferenceable(8) %24)
          to label %579 unwind label %505

579:                                              ; preds = %575
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %26) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #11
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #11
  %580 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8__detail20_Node_const_iteratorIPKN6Assimp3FBX13ShapeGeometryELb1ELb0EEppEv(ptr noundef nonnull align 8 dereferenceable(8) %22) #11
  %581 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseIPKN6Assimp3FBX13ShapeGeometryELb0EEES8_(ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 8 dereferenceable(8) %23) #11
  br i1 %581, label %.lr.ph294, label %._crit_edge295

582:                                              ; preds = %536, %571, %518, %505
  %.pn242.pn.pn.pn.pn = phi { ptr, i32 } [ %506, %505 ], [ %.pn239, %518 ], [ %.pn242.pn.pn, %571 ], [ %537, %536 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #11
  br label %583

583:                                              ; preds = %582, %503
  %.pn242.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn242.pn.pn.pn.pn, %582 ], [ %504, %503 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %26) #11
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #11
  br label %584

584:                                              ; preds = %583, %501
  %.pn242.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn242.pn.pn.pn.pn.pn, %583 ], [ %502, %501 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) #11
  br label %585

585:                                              ; preds = %495, %499, %584, %497, %493
  %.pn242.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %494, %493 ], [ %496, %495 ], [ %498, %497 ], [ %.pn242.pn.pn.pn.pn.pn.pn, %584 ], [ %500, %499 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #11
  br label %610

586:                                              ; preds = %._crit_edge301
  %587 = trunc i64 %457 to i32
  %588 = getelementptr inbounds i8, ptr %32, i64 1264
  store i32 %587, ptr %588, align 8, !tbaa !114
  %589 = icmp ugt i64 %457, 2305843009213693951
  %590 = shl nuw i64 %457, 3
  %591 = select i1 %589, i64 -1, i64 %590
  %592 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %591) #12
          to label %593 unwind label %595

593:                                              ; preds = %586
  %594 = getelementptr inbounds i8, ptr %32, i64 1272
  store ptr %592, ptr %594, align 8, !tbaa !115
  br label %597

595:                                              ; preds = %586
  %596 = landingpad { ptr, i32 }
          cleanup
  br label %610

597:                                              ; preds = %593, %599
  %.0302 = phi i64 [ 0, %593 ], [ %603, %599 ]
  %598 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP10aiAnimMeshSaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %17, i64 noundef %.0302)
          to label %599 unwind label %604

599:                                              ; preds = %597
  %600 = load ptr, ptr %598, align 8, !tbaa !35
  %601 = load ptr, ptr %594, align 8, !tbaa !115
  %602 = getelementptr inbounds ptr, ptr %601, i64 %.0302
  store ptr %600, ptr %602, align 8, !tbaa !35
  %603 = add nuw i64 %.0302, 1
  %exitcond319.not = icmp eq i64 %603, %457
  br i1 %exitcond319.not, label %.loopexit, label %597, !llvm.loop !116

604:                                              ; preds = %597
  %605 = landingpad { ptr, i32 }
          cleanup
  br label %610

.loopexit:                                        ; preds = %599, %._crit_edge301
  %606 = getelementptr inbounds i8, ptr %0, i64 8
  %607 = call noundef i64 @_ZNKSt6vectorIP6aiMeshSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %606) #11
  %608 = trunc i64 %607 to i32
  %609 = add i32 %608, -1
  call void @_ZNSt6vectorIP10aiAnimMeshSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %17) #11
  ret i32 %609

610:                                              ; preds = %595, %604, %458, %585
  %.pn242.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn242.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %585 ], [ %459, %458 ], [ %605, %604 ], [ %596, %595 ]
  call void @_ZNSt6vectorIP10aiAnimMeshSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %17) #11
  br label %611

611:                                              ; preds = %610, %450, %233, %198
  %.pn242.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn242.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %610 ], [ %.pn234, %450 ], [ %234, %233 ], [ %.pn, %198 ]
  resume { ptr, i32 } %.pn242.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn
}

; 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: inlinehint mustprogress uwtable
declare dso_local noundef ptr @_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPK10aiVector3tIfESt6vectorIS3_SaIS3_EEEEPS3_ET0_T_SC_SB_(ptr, ptr, ptr noundef) local_unnamed_addr #8

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNKSt6vectorI10aiVector3tIfESaIS1_EE3endEv(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: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPKjSt6vectorIjSaIjEEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #9

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNKSt6vectorI10aiVector2tIfESaIS1_EE3endEv(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_cxxneIPK10aiVector2tIfESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #9

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPK10aiVector2tIfESt6vectorIS2_SaIS2_EEEdeEv(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_iteratorIPK10aiVector2tIfESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #0 align 2

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

declare void @_ZNK6Assimp3FBX12MeshGeometry26GetTextureCoordChannelNameB5cxx11Ej(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(1000), i32 noundef) local_unnamed_addr #3

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: inlinehint mustprogress uwtable
declare dso_local noundef ptr @_ZSt4copyIN9__gnu_cxx17__normal_iteratorIPK9aiColor4tIfESt6vectorIS3_SaIS3_EEEEPS3_ET0_T_SC_SB_(ptr, ptr, ptr noundef) local_unnamed_addr #8

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Assimp12LogFunctionsINS_11FBXImporterEE8LogErrorIJRA55_KcEEEvDpOT_(ptr noundef nonnull align 1 dereferenceable(55)) local_unnamed_addr #6 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN6Assimp3FBX12FBXConverter18GetDefaultMaterialEv(ptr noundef nonnull align 8 dereferenceable(489)) local_unnamed_addr #6 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: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN6Assimp3FBX21SkeletonBoneContainerC2Ev(ptr noundef nonnull align 8 dereferenceable(72)) unnamed_addr #9 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Assimp3FBX12FBXConverter24ConvertWeightsToSkeletonEP6aiMeshRKNS0_12MeshGeometryERK12aiMatrix4x4tIfEP6aiNodejPSt6vectorIjSaIjEERNS0_21SkeletonBoneContainerE(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, ptr noundef nonnull align 8 dereferenceable(72)) local_unnamed_addr #6 align 2

; Function Attrs: mustprogress uwtable
declare hidden noundef ptr @_ZN6Assimp3FBXL16createAiSkeletonERNS0_21SkeletonBoneContainerE(ptr noundef nonnull align 8 dereferenceable(72)) local_unnamed_addr #6

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN6Assimp3FBX21SkeletonBoneContainerD2Ev(ptr noundef nonnull align 8 dereferenceable(72)) unnamed_addr #9 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: nounwind
declare noundef i64 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE4findEcm(ptr noundef nonnull align 8 dereferenceable(32), i8 noundef signext, i64 noundef) local_unnamed_addr #10

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

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32), 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 #9 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 #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)) 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

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


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