; 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"

%"struct.std::_Rb_tree_const_iterator.433" = type { ptr }
%"class.std::unique_ptr.434" = type { %"struct.std::__uniq_ptr_data.435" }
%"struct.std::__uniq_ptr_data.435" = type { %"class.std::__uniq_ptr_impl.436" }
%"class.std::__uniq_ptr_impl.436" = type { %"class.std::tuple.437" }
%"class.std::tuple.437" = type { %"struct.std::_Tuple_impl.438" }
%"struct.std::_Tuple_impl.438" = type { %"struct.std::_Head_base.441" }
%"struct.std::_Head_base.441" = type { ptr }
%"class.std::vector.442" = type { %"struct.std::_Vector_base.443" }
%"struct.std::_Vector_base.443" = type { %"struct.std::_Vector_base<std::tuple<std::shared_ptr<std::vector<long>>, std::shared_ptr<std::vector<float>>, unsigned int>, std::allocator<std::tuple<std::shared_ptr<std::vector<long>>, std::shared_ptr<std::vector<float>>, unsigned int>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::tuple<std::shared_ptr<std::vector<long>>, std::shared_ptr<std::vector<float>>, unsigned int>, std::allocator<std::tuple<std::shared_ptr<std::vector<long>>, std::shared_ptr<std::vector<float>>, unsigned int>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::tuple<std::shared_ptr<std::vector<long>>, std::shared_ptr<std::vector<float>>, unsigned int>, std::allocator<std::tuple<std::shared_ptr<std::vector<long>>, std::shared_ptr<std::vector<float>>, unsigned int>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::tuple<std::shared_ptr<std::vector<long>>, std::shared_ptr<std::vector<float>>, unsigned int>, std::allocator<std::tuple<std::shared_ptr<std::vector<long>>, std::shared_ptr<std::vector<float>>, unsigned int>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.422" = type { %"struct.std::_Vector_base.423" }
%"struct.std::_Vector_base.423" = type { %"struct.std::_Vector_base<long, std::allocator<long>>::_Vector_impl" }
%"struct.std::_Vector_base<long, std::allocator<long>>::_Vector_impl" = type { %"struct.std::_Vector_base<long, std::allocator<long>>::_Vector_impl_data" }
%"struct.std::_Vector_base<long, std::allocator<long>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.447" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.448" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.427" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.462" = type { ptr }
%class.aiVector3t = type { float, float, float }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::allocator.72" = type { i8 }
%class.aiQuaterniont = type { float, float, float, float }
%class.aiMatrix4x4t = type { float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float }
%class.aiMatrix3x3t = type { float, float, float, float, float, float, float, float, float }
%struct.aiNodeAnim = type { %struct.aiString, i32, ptr, i32, ptr, i32, ptr, i32, i32 }
%struct.aiString = type { i32, [1024 x i8] }
%"struct.std::pair.395" = type { %"class.std::__cxx11::basic_string", %"class.std::vector.378" }
%"class.std::vector.378" = type { %"struct.std::_Vector_base.379" }
%"struct.std::_Vector_base.379" = type { %"struct.std::_Vector_base<const Assimp::FBX::AnimationCurveNode *, std::allocator<const Assimp::FBX::AnimationCurveNode *>>::_Vector_impl" }
%"struct.std::_Vector_base<const Assimp::FBX::AnimationCurveNode *, std::allocator<const Assimp::FBX::AnimationCurveNode *>>::_Vector_impl" = type { %"struct.std::_Vector_base<const Assimp::FBX::AnimationCurveNode *, std::allocator<const Assimp::FBX::AnimationCurveNode *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<const Assimp::FBX::AnimationCurveNode *, std::allocator<const Assimp::FBX::AnimationCurveNode *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.aiVectorKey = type { double, %class.aiVector3t, i32 }
%struct.aiQuatKey = type <{ double, %class.aiQuaterniont, i32, [4 x i8] }>
%"class.Assimp::FBX::FBXConverter" = type <{ i32, [4 x i8], %"class.std::vector", %"class.std::vector.0", %"class.std::vector.5", %"class.std::vector.10", %"class.std::vector.15", %"class.std::vector.20", %"class.std::map", %"class.std::map.28", %"class.std::map.34", %"class.std::map.40", %"class.std::map.40", %"class.std::map.46", double, %"class.std::vector.52", ptr, ptr, i8, [7 x i8] }>
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<aiMesh *, std::allocator<aiMesh *>>::_Vector_impl" }
%"struct.std::_Vector_base<aiMesh *, std::allocator<aiMesh *>>::_Vector_impl" = type { %"struct.std::_Vector_base<aiMesh *, std::allocator<aiMesh *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<aiMesh *, std::allocator<aiMesh *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.0" = type { %"struct.std::_Vector_base.1" }
%"struct.std::_Vector_base.1" = type { %"struct.std::_Vector_base<aiMaterial *, std::allocator<aiMaterial *>>::_Vector_impl" }
%"struct.std::_Vector_base<aiMaterial *, std::allocator<aiMaterial *>>::_Vector_impl" = type { %"struct.std::_Vector_base<aiMaterial *, std::allocator<aiMaterial *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<aiMaterial *, std::allocator<aiMaterial *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.5" = type { %"struct.std::_Vector_base.6" }
%"struct.std::_Vector_base.6" = type { %"struct.std::_Vector_base<aiAnimation *, std::allocator<aiAnimation *>>::_Vector_impl" }
%"struct.std::_Vector_base<aiAnimation *, std::allocator<aiAnimation *>>::_Vector_impl" = type { %"struct.std::_Vector_base<aiAnimation *, std::allocator<aiAnimation *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<aiAnimation *, std::allocator<aiAnimation *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.10" = type { %"struct.std::_Vector_base.11" }
%"struct.std::_Vector_base.11" = type { %"struct.std::_Vector_base<aiLight *, std::allocator<aiLight *>>::_Vector_impl" }
%"struct.std::_Vector_base<aiLight *, std::allocator<aiLight *>>::_Vector_impl" = type { %"struct.std::_Vector_base<aiLight *, std::allocator<aiLight *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<aiLight *, std::allocator<aiLight *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.15" = type { %"struct.std::_Vector_base.16" }
%"struct.std::_Vector_base.16" = type { %"struct.std::_Vector_base<aiCamera *, std::allocator<aiCamera *>>::_Vector_impl" }
%"struct.std::_Vector_base<aiCamera *, std::allocator<aiCamera *>>::_Vector_impl" = type { %"struct.std::_Vector_base<aiCamera *, std::allocator<aiCamera *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<aiCamera *, std::allocator<aiCamera *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.20" = type { %"struct.std::_Vector_base.21" }
%"struct.std::_Vector_base.21" = type { %"struct.std::_Vector_base<aiTexture *, std::allocator<aiTexture *>>::_Vector_impl" }
%"struct.std::_Vector_base<aiTexture *, std::allocator<aiTexture *>>::_Vector_impl" = type { %"struct.std::_Vector_base<aiTexture *, std::allocator<aiTexture *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<aiTexture *, std::allocator<aiTexture *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::map" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<const Assimp::FBX::Material *, std::pair<const Assimp::FBX::Material *const, unsigned int>, std::_Select1st<std::pair<const Assimp::FBX::Material *const, unsigned int>>, std::less<const Assimp::FBX::Material *>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<const Assimp::FBX::Material *, std::pair<const Assimp::FBX::Material *const, unsigned int>, std::_Select1st<std::pair<const Assimp::FBX::Material *const, unsigned int>>, std::less<const Assimp::FBX::Material *>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"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::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 }

@.str.18 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [12 x i8], align 1

declare i32 @__gxx_personality_v0(...)

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #3 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #2 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)) #2 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) #4

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

; 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 #2 align 2

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { <2 x float>, float } @_ZN6Assimp3FBX11PropertyGetI10aiVector3tIfEEET_RKNS0_13PropertyTableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERbb(ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(1), i1 noundef zeroext) #6

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef ptr @_ZN6Assimp3FBX12FBXConverter22GenerateSimpleNodeAnimERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS0_5ModelEPSt23_Rb_tree_const_iteratorISt4pairIS8_St6vectorIPKNS0_18AnimationCurveNodeESaISI_EEEESM_llRdSO_(ptr noundef nonnull align 8 dereferenceable(489) %0, ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef nonnull align 8 dereferenceable(208) %2, ptr noundef %3, ptr %4, i64 noundef %5, i64 noundef %6, ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(8) %8) #8 align 2 personality ptr @__gxx_personality_v0 {
  %10 = alloca ptr, align 8
  %11 = alloca %"struct.std::_Rb_tree_const_iterator.433", align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca i64, align 8
  %17 = alloca i64, align 8
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca %"class.std::unique_ptr.434", align 8
  %21 = alloca ptr, align 8
  %22 = alloca i32, align 4
  %23 = alloca ptr, align 8
  %24 = alloca [17 x %"class.std::vector.442"], align 16
  %25 = alloca %"class.std::vector.422", align 8
  %26 = alloca i64, align 8
  %27 = alloca i32, align 4
  %28 = alloca %"class.std::vector.442", align 8
  %29 = alloca %"class.std::vector.442", align 8
  %30 = alloca %"class.__gnu_cxx::__normal_iterator.447", align 8
  %31 = alloca %"class.__gnu_cxx::__normal_iterator.448", align 8
  %32 = alloca %"class.__gnu_cxx::__normal_iterator.448", align 8
  %33 = alloca ptr, align 8
  %34 = alloca %"class.__gnu_cxx::__normal_iterator.427", align 8
  %35 = alloca %"class.__gnu_cxx::__normal_iterator.462", align 8
  %36 = alloca %"class.__gnu_cxx::__normal_iterator.427", align 8
  %37 = alloca %"class.__gnu_cxx::__normal_iterator.427", align 8
  %38 = alloca %"class.__gnu_cxx::__normal_iterator.462", align 8
  %39 = alloca %"class.__gnu_cxx::__normal_iterator.462", align 8
  %40 = alloca %"class.__gnu_cxx::__normal_iterator.462", align 8
  %41 = alloca %"class.__gnu_cxx::__normal_iterator.462", align 8
  %42 = alloca %"class.__gnu_cxx::__normal_iterator.462", align 8
  %43 = alloca %"class.__gnu_cxx::__normal_iterator.462", align 8
  %44 = alloca %"class.__gnu_cxx::__normal_iterator.427", align 8
  %45 = alloca %"class.__gnu_cxx::__normal_iterator.427", align 8
  %46 = alloca %"class.__gnu_cxx::__normal_iterator.462", align 8
  %47 = alloca %"class.__gnu_cxx::__normal_iterator.462", align 8
  %48 = alloca i32, align 4
  %49 = alloca i64, align 8
  %50 = alloca %class.aiVector3t, align 4
  %51 = alloca %"class.std::__cxx11::basic_string", align 8
  %52 = alloca %"class.std::allocator.72", align 1
  %53 = alloca %class.aiVector3t, align 4
  %54 = alloca { <2 x float>, float }, align 8
  %55 = alloca %class.aiVector3t, align 4
  %56 = alloca %"class.std::__cxx11::basic_string", align 8
  %57 = alloca %"class.std::allocator.72", align 1
  %58 = alloca %class.aiVector3t, align 4
  %59 = alloca { <2 x float>, float }, align 8
  %60 = alloca %class.aiVector3t, align 4
  %61 = alloca %"class.std::__cxx11::basic_string", align 8
  %62 = alloca %"class.std::allocator.72", align 1
  %63 = alloca %class.aiVector3t, align 4
  %64 = alloca { <2 x float>, float }, align 8
  %65 = alloca ptr, align 8
  %66 = alloca ptr, align 8
  %67 = alloca ptr, align 8
  %68 = alloca i64, align 8
  %69 = alloca %class.aiQuaterniont, align 4
  %70 = alloca i64, align 8
  %71 = alloca i64, align 8
  %72 = alloca i8, align 1
  %73 = alloca float, align 4
  %74 = alloca ptr, align 8
  %75 = alloca %class.aiVector3t, align 4
  %76 = alloca %"class.std::__cxx11::basic_string", align 8
  %77 = alloca %"class.std::allocator.72", align 1
  %78 = alloca { <2 x float>, float }, align 8
  %79 = alloca %class.aiQuaterniont, align 4
  %80 = alloca i64, align 8
  %81 = alloca %class.aiQuaterniont, align 4
  %82 = alloca ptr, align 8
  %83 = alloca %class.aiVector3t, align 4
  %84 = alloca %"class.std::__cxx11::basic_string", align 8
  %85 = alloca %"class.std::allocator.72", align 1
  %86 = alloca { <2 x float>, float }, align 8
  %87 = alloca %class.aiQuaterniont, align 4
  %88 = alloca i64, align 8
  %89 = alloca %class.aiQuaterniont, align 4
  %90 = alloca i64, align 8
  %91 = alloca ptr, align 8
  %92 = alloca ptr, align 8
  %93 = alloca ptr, align 8
  %94 = alloca %class.aiMatrix4x4t, align 4
  %95 = alloca %class.aiMatrix4x4t, align 4
  %96 = alloca %class.aiMatrix4x4t, align 4
  %97 = alloca %class.aiMatrix3x3t, align 4
  %98 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator.433", ptr %11, i32 0, i32 0
  store ptr %4, ptr %98, align 8
  store ptr %0, ptr %12, align 8, !tbaa !5
  store ptr %1, ptr %13, align 8, !tbaa !5
  store ptr %2, ptr %14, align 8, !tbaa !5
  store ptr %3, ptr %15, align 8, !tbaa !5
  store i64 %5, ptr %16, align 8, !tbaa !9
  store i64 %6, ptr %17, align 8, !tbaa !9
  store ptr %7, ptr %18, align 8, !tbaa !5
  store ptr %8, ptr %19, align 8, !tbaa !5
  %99 = load ptr, ptr %12, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #10
  %100 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 1080) #11
  call void @_ZN10aiNodeAnimC2Ev(ptr noundef nonnull align 8 dereferenceable(1080) %100) #10
  call void @_ZNSt10unique_ptrI10aiNodeAnimSt14default_deleteIS0_EEC2IS2_vEEPS0_(ptr noundef nonnull align 8 dereferenceable(8) %20, ptr noundef %100) #10
  %101 = call noundef ptr @_ZNKSt10unique_ptrI10aiNodeAnimSt14default_deleteIS0_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %20) #10
  %102 = getelementptr inbounds %struct.aiNodeAnim, ptr %101, i32 0, i32 0
  %103 = load ptr, ptr %13, align 8, !tbaa !5
  invoke void @_ZN8aiString3SetERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 4 dereferenceable(1028) %102, ptr noundef nonnull align 8 dereferenceable(32) %103)
          to label %104 unwind label %119

104:                                              ; preds = %9
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #10
  %105 = load ptr, ptr %14, align 8, !tbaa !5
  %106 = invoke noundef nonnull align 8 dereferenceable(120) ptr @_ZNK6Assimp3FBX5Model5PropsEv(ptr noundef nonnull align 8 dereferenceable(208) %105)
          to label %107 unwind label %123

107:                                              ; preds = %104
  store ptr %106, ptr %23, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 408, ptr %24) #10
  %108 = getelementptr inbounds [17 x %"class.std::vector.442"], ptr %24, i32 0, i32 0
  %109 = getelementptr inbounds %"class.std::vector.442", ptr %108, i64 17
  br label %110

110:                                              ; preds = %110, %107
  %111 = phi ptr [ %108, %107 ], [ %112, %110 ]
  call void @_ZNSt6vectorISt5tupleIJSt10shared_ptrIS_IlSaIlEEES1_IS_IfSaIfEEEjEESaIS8_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %111) #10
  %112 = getelementptr inbounds %"class.std::vector.442", ptr %111, i64 1
  %113 = icmp eq ptr %112, %109
  br i1 %113, label %114, label %110

114:                                              ; preds = %110
  call void @llvm.lifetime.start.p0(i64 24, ptr %25) #10
  call void @_ZNSt6vectorIlSaIlEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %25) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #10
  store i64 0, ptr %26, align 8, !tbaa !9
  br label %115

115:                                              ; preds = %246, %114
  %116 = load i64, ptr %26, align 8, !tbaa !9
  %117 = icmp ult i64 %116, 17
  br i1 %117, label %127, label %118

118:                                              ; preds = %115
  store i32 2, ptr %27, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #10
  br label %263

119:                                              ; preds = %9
  %120 = landingpad { ptr, i32 }
          cleanup
  %121 = extractvalue { ptr, i32 } %120, 0
  store ptr %121, ptr %21, align 8
  %122 = extractvalue { ptr, i32 } %120, 1
  store i32 %122, ptr %22, align 4
  br label %726

123:                                              ; preds = %104
  %124 = landingpad { ptr, i32 }
          cleanup
  %125 = extractvalue { ptr, i32 } %124, 0
  store ptr %125, ptr %21, align 8
  %126 = extractvalue { ptr, i32 } %124, 1
  store i32 %126, ptr %22, align 4
  br label %725

127:                                              ; preds = %115
  %128 = load ptr, ptr %15, align 8, !tbaa !5
  %129 = load i64, ptr %26, align 8, !tbaa !9
  %130 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator.433", ptr %128, i64 %129
  %131 = call noundef zeroext i1 @_ZSteqRKSt23_Rb_tree_const_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIPKN6Assimp3FBX18AnimationCurveNodeESaISD_EEEESJ_(ptr noundef nonnull align 8 dereferenceable(8) %130, ptr noundef nonnull align 8 dereferenceable(8) %11) #10
  br i1 %131, label %132, label %133

132:                                              ; preds = %127
  br label %246

133:                                              ; preds = %127
  %134 = load i64, ptr %26, align 8, !tbaa !9
  %135 = icmp eq i64 %134, 7
  br i1 %135, label %145, label %136

136:                                              ; preds = %133
  %137 = load i64, ptr %26, align 8, !tbaa !9
  %138 = icmp eq i64 %137, 6
  br i1 %138, label %145, label %139

139:                                              ; preds = %136
  %140 = load i64, ptr %26, align 8, !tbaa !9
  %141 = icmp eq i64 %140, 8
  br i1 %141, label %145, label %142

142:                                              ; preds = %139
  %143 = load i64, ptr %26, align 8, !tbaa !9
  %144 = icmp eq i64 %143, 15
  br i1 %144, label %145, label %161

145:                                              ; preds = %142, %139, %136, %133
  call void @llvm.lifetime.start.p0(i64 24, ptr %28) #10
  %146 = load ptr, ptr %15, align 8, !tbaa !5
  %147 = load i64, ptr %26, align 8, !tbaa !9
  %148 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator.433", ptr %146, i64 %147
  %149 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIPKN6Assimp3FBX18AnimationCurveNodeESaISD_EEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %148) #10
  %150 = getelementptr inbounds %"struct.std::pair.395", ptr %149, i32 0, i32 1
  %151 = load i64, ptr %16, align 8, !tbaa !9
  %152 = load i64, ptr %17, align 8, !tbaa !9
  invoke void @_ZN6Assimp3FBX12FBXConverter23GetRotationKeyframeListERKSt6vectorIPKNS0_18AnimationCurveNodeESaIS5_EEll(ptr dead_on_unwind writable sret(%"class.std::vector.442") align 8 %28, ptr noundef nonnull align 8 dereferenceable(489) %99, ptr noundef nonnull align 8 dereferenceable(24) %150, i64 noundef %151, i64 noundef %152)
          to label %153 unwind label %157

153:                                              ; preds = %145
  %154 = load i64, ptr %26, align 8, !tbaa !9
  %155 = getelementptr inbounds [17 x %"class.std::vector.442"], ptr %24, i64 0, i64 %154
  %156 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorISt5tupleIJSt10shared_ptrIS_IlSaIlEEES1_IS_IfSaIfEEEjEESaIS8_EEaSEOSA_(ptr noundef nonnull align 8 dereferenceable(24) %155, ptr noundef nonnull align 8 dereferenceable(24) %28) #10
  call void @_ZNSt6vectorISt5tupleIJSt10shared_ptrIS_IlSaIlEEES1_IS_IfSaIfEEEjEESaIS8_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %28) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %28) #10
  br label %177

157:                                              ; preds = %145
  %158 = landingpad { ptr, i32 }
          cleanup
  %159 = extractvalue { ptr, i32 } %158, 0
  store ptr %159, ptr %21, align 8
  %160 = extractvalue { ptr, i32 } %158, 1
  store i32 %160, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %28) #10
  br label %262

161:                                              ; preds = %142
  call void @llvm.lifetime.start.p0(i64 24, ptr %29) #10
  %162 = load ptr, ptr %15, align 8, !tbaa !5
  %163 = load i64, ptr %26, align 8, !tbaa !9
  %164 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator.433", ptr %162, i64 %163
  %165 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIPKN6Assimp3FBX18AnimationCurveNodeESaISD_EEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %164) #10
  %166 = getelementptr inbounds %"struct.std::pair.395", ptr %165, i32 0, i32 1
  %167 = load i64, ptr %16, align 8, !tbaa !9
  %168 = load i64, ptr %17, align 8, !tbaa !9
  invoke void @_ZN6Assimp3FBX12FBXConverter15GetKeyframeListERKSt6vectorIPKNS0_18AnimationCurveNodeESaIS5_EEll(ptr dead_on_unwind writable sret(%"class.std::vector.442") align 8 %29, ptr noundef nonnull align 8 dereferenceable(489) %99, ptr noundef nonnull align 8 dereferenceable(24) %166, i64 noundef %167, i64 noundef %168)
          to label %169 unwind label %173

169:                                              ; preds = %161
  %170 = load i64, ptr %26, align 8, !tbaa !9
  %171 = getelementptr inbounds [17 x %"class.std::vector.442"], ptr %24, i64 0, i64 %170
  %172 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorISt5tupleIJSt10shared_ptrIS_IlSaIlEEES1_IS_IfSaIfEEEjEESaIS8_EEaSEOSA_(ptr noundef nonnull align 8 dereferenceable(24) %171, ptr noundef nonnull align 8 dereferenceable(24) %29) #10
  call void @_ZNSt6vectorISt5tupleIJSt10shared_ptrIS_IlSaIlEEES1_IS_IfSaIfEEEjEESaIS8_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %29) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %29) #10
  br label %177

173:                                              ; preds = %161
  %174 = landingpad { ptr, i32 }
          cleanup
  %175 = extractvalue { ptr, i32 } %174, 0
  store ptr %175, ptr %21, align 8
  %176 = extractvalue { ptr, i32 } %174, 1
  store i32 %176, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 24, ptr %29) #10
  br label %262

177:                                              ; preds = %169, %153
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #10
  %178 = load i64, ptr %26, align 8, !tbaa !9
  %179 = getelementptr inbounds [17 x %"class.std::vector.442"], ptr %24, i64 0, i64 %178
  %180 = call ptr @_ZNSt6vectorISt5tupleIJSt10shared_ptrIS_IlSaIlEEES1_IS_IfSaIfEEEjEESaIS8_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %179) #10
  %181 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.448", ptr %31, i32 0, i32 0
  store ptr %180, ptr %181, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKSt5tupleIJSt10shared_ptrISt6vectorIlSaIlEEES2_IS3_IfSaIfEEEjEES3_ISA_SaISA_EEEC2IPSA_vEERKNS0_IT_SE_EE(ptr noundef nonnull align 8 dereferenceable(8) %30, ptr noundef nonnull align 8 dereferenceable(8) %31) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #10
  br label %182

182:                                              ; preds = %210, %177
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #10
  %183 = load i64, ptr %26, align 8, !tbaa !9
  %184 = getelementptr inbounds [17 x %"class.std::vector.442"], ptr %24, i64 0, i64 %183
  %185 = call ptr @_ZNSt6vectorISt5tupleIJSt10shared_ptrIS_IlSaIlEEES1_IS_IfSaIfEEEjEESaIS8_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %184) #10
  %186 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.448", ptr %32, i32 0, i32 0
  store ptr %185, ptr %186, align 8
  %187 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt5tupleIJSt10shared_ptrISt6vectorIlSaIlEEES2_IS3_IfSaIfEEEjEEPSA_S3_ISA_SaISA_EEEEbRKNS_17__normal_iteratorIT_T1_EERKNSG_IT0_SI_EE(ptr noundef nonnull align 8 dereferenceable(8) %30, ptr noundef nonnull align 8 dereferenceable(8) %32) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #10
  br i1 %187, label %189, label %188

188:                                              ; preds = %182
  store i32 5, ptr %27, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #10
  br label %216

189:                                              ; preds = %182
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #10
  %190 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKSt5tupleIJSt10shared_ptrISt6vectorIlSaIlEEES2_IS3_IfSaIfEEEjEES3_ISA_SaISA_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %30) #10
  %191 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZSt3getILm0EJSt10shared_ptrISt6vectorIlSaIlEEES0_IS1_IfSaIfEEEjEERKNSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeERKSC_(ptr noundef nonnull align 8 dereferenceable(40) %190) #10
  %192 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt19__shared_ptr_accessISt6vectorIlSaIlEELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %191) #10
  store ptr %192, ptr %33, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #10
  %193 = call ptr @_ZNSt6vectorIlSaIlEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %25) #10
  %194 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.462", ptr %35, i32 0, i32 0
  store ptr %193, ptr %194, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKlSt6vectorIlSaIlEEEC2IPlvEERKNS0_IT_S5_EE(ptr noundef nonnull align 8 dereferenceable(8) %34, ptr noundef nonnull align 8 dereferenceable(8) %35) #10
  %195 = load ptr, ptr %33, align 8, !tbaa !5
  %196 = call ptr @_ZNKSt6vectorIlSaIlEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %195) #10
  %197 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.427", ptr %36, i32 0, i32 0
  store ptr %196, ptr %197, align 8
  %198 = load ptr, ptr %33, align 8, !tbaa !5
  %199 = call ptr @_ZNKSt6vectorIlSaIlEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %198) #10
  %200 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.427", ptr %37, i32 0, i32 0
  store ptr %199, ptr %200, align 8
  %201 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.427", ptr %34, i32 0, i32 0
  %202 = load ptr, ptr %201, align 8
  %203 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.427", ptr %36, i32 0, i32 0
  %204 = load ptr, ptr %203, align 8
  %205 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.427", ptr %37, i32 0, i32 0
  %206 = load ptr, ptr %205, align 8
  %207 = invoke ptr @_ZNSt6vectorIlSaIlEE6insertIN9__gnu_cxx17__normal_iteratorIPKlS1_EEvEENS4_IPlS1_EES7_T_SA_(ptr noundef nonnull align 8 dereferenceable(24) %25, ptr %202, ptr %204, ptr %206)
          to label %208 unwind label %212

208:                                              ; preds = %189
  %209 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.462", ptr %38, i32 0, i32 0
  store ptr %207, ptr %209, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #10
  br label %210

210:                                              ; preds = %208
  %211 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKSt5tupleIJSt10shared_ptrISt6vectorIlSaIlEEES2_IS3_IfSaIfEEEjEES3_ISA_SaISA_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %30) #10
  br label %182, !llvm.loop !11

212:                                              ; preds = %189
  %213 = landingpad { ptr, i32 }
          cleanup
  %214 = extractvalue { ptr, i32 } %213, 0
  store ptr %214, ptr %21, align 8
  %215 = extractvalue { ptr, i32 } %213, 1
  store i32 %215, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #10
  br label %262

216:                                              ; preds = %188
  %217 = call ptr @_ZNSt6vectorIlSaIlEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %25) #10
  %218 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.462", ptr %39, i32 0, i32 0
  store ptr %217, ptr %218, align 8
  %219 = call ptr @_ZNSt6vectorIlSaIlEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %25) #10
  %220 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.462", ptr %40, i32 0, i32 0
  store ptr %219, ptr %220, align 8
  %221 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.462", ptr %39, i32 0, i32 0
  %222 = load ptr, ptr %221, align 8
  %223 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.462", ptr %40, i32 0, i32 0
  %224 = load ptr, ptr %223, align 8
  invoke void @_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPlSt6vectorIlSaIlEEEEEvT_S7_(ptr %222, ptr %224)
          to label %225 unwind label %249

225:                                              ; preds = %216
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #10
  %226 = call ptr @_ZNSt6vectorIlSaIlEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %25) #10
  %227 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.462", ptr %42, i32 0, i32 0
  store ptr %226, ptr %227, align 8
  %228 = call ptr @_ZNSt6vectorIlSaIlEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %25) #10
  %229 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.462", ptr %43, i32 0, i32 0
  store ptr %228, ptr %229, align 8
  %230 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.462", ptr %42, i32 0, i32 0
  %231 = load ptr, ptr %230, align 8
  %232 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.462", ptr %43, i32 0, i32 0
  %233 = load ptr, ptr %232, align 8
  %234 = invoke ptr @_ZSt6uniqueIN9__gnu_cxx17__normal_iteratorIPlSt6vectorIlSaIlEEEEET_S7_S7_(ptr %231, ptr %233)
          to label %235 unwind label %253

235:                                              ; preds = %225
  %236 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.462", ptr %41, i32 0, i32 0
  store ptr %234, ptr %236, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKlSt6vectorIlSaIlEEEC2IPlvEERKNS0_IT_S5_EE(ptr noundef nonnull align 8 dereferenceable(8) %44, ptr noundef nonnull align 8 dereferenceable(8) %41) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #10
  %237 = call ptr @_ZNSt6vectorIlSaIlEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %25) #10
  %238 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.462", ptr %46, i32 0, i32 0
  store ptr %237, ptr %238, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKlSt6vectorIlSaIlEEEC2IPlvEERKNS0_IT_S5_EE(ptr noundef nonnull align 8 dereferenceable(8) %45, ptr noundef nonnull align 8 dereferenceable(8) %46) #10
  %239 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.427", ptr %44, i32 0, i32 0
  %240 = load ptr, ptr %239, align 8
  %241 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.427", ptr %45, i32 0, i32 0
  %242 = load ptr, ptr %241, align 8
  %243 = invoke ptr @_ZNSt6vectorIlSaIlEE5eraseEN9__gnu_cxx17__normal_iteratorIPKlS1_EES6_(ptr noundef nonnull align 8 dereferenceable(24) %25, ptr %240, ptr %242)
          to label %244 unwind label %257

244:                                              ; preds = %235
  %245 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.462", ptr %47, i32 0, i32 0
  store ptr %243, ptr %245, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #10
  br label %246

246:                                              ; preds = %244, %132
  %247 = load i64, ptr %26, align 8, !tbaa !9
  %248 = add i64 %247, 1
  store i64 %248, ptr %26, align 8, !tbaa !9
  br label %115, !llvm.loop !13

249:                                              ; preds = %216
  %250 = landingpad { ptr, i32 }
          cleanup
  %251 = extractvalue { ptr, i32 } %250, 0
  store ptr %251, ptr %21, align 8
  %252 = extractvalue { ptr, i32 } %250, 1
  store i32 %252, ptr %22, align 4
  br label %262

253:                                              ; preds = %225
  %254 = landingpad { ptr, i32 }
          cleanup
  %255 = extractvalue { ptr, i32 } %254, 0
  store ptr %255, ptr %21, align 8
  %256 = extractvalue { ptr, i32 } %254, 1
  store i32 %256, ptr %22, align 4
  br label %261

257:                                              ; preds = %235
  %258 = landingpad { ptr, i32 }
          cleanup
  %259 = extractvalue { ptr, i32 } %258, 0
  store ptr %259, ptr %21, align 8
  %260 = extractvalue { ptr, i32 } %258, 1
  store i32 %260, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #10
  br label %261

261:                                              ; preds = %257, %253
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #10
  br label %262

262:                                              ; preds = %261, %249, %212, %173, %157
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #10
  br label %711

263:                                              ; preds = %118
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #10
  %264 = load ptr, ptr %14, align 8, !tbaa !5
  %265 = invoke noundef i32 @_ZNK6Assimp3FBX5Model13RotationOrderEv(ptr noundef nonnull align 8 dereferenceable(208) %264)
          to label %266 unwind label %337

266:                                              ; preds = %263
  store i32 %265, ptr %48, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #10
  %267 = call noundef i64 @_ZNKSt6vectorIlSaIlEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %25) #10
  store i64 %267, ptr %49, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 12, ptr %50) #10
  %268 = load ptr, ptr %23, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %51) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr %52) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %52) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %51, ptr noundef @.str.32, ptr noundef nonnull align 1 dereferenceable(1) %52)
          to label %269 unwind label %341

269:                                              ; preds = %266
  call void @llvm.lifetime.start.p0(i64 12, ptr %53) #10
  invoke void @_ZN10aiVector3tIfEC2Efff(ptr noundef nonnull align 4 dereferenceable(12) %53, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00)
          to label %270 unwind label %345

270:                                              ; preds = %269
  %271 = invoke { <2 x float>, float } @_ZN6Assimp3FBX11PropertyGetI10aiVector3tIfEEET_RKNS0_13PropertyTableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS4_(ptr noundef nonnull align 8 dereferenceable(120) %268, ptr noundef nonnull align 8 dereferenceable(32) %51, ptr noundef nonnull align 4 dereferenceable(12) %53)
          to label %272 unwind label %345

272:                                              ; preds = %270
  store { <2 x float>, float } %271, ptr %54, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %50, ptr align 8 %54, i64 12, i1 false)
  call void @llvm.lifetime.end.p0(i64 12, ptr %53) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %52) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %52) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %51) #10
  call void @llvm.lifetime.start.p0(i64 12, ptr %55) #10
  %273 = load ptr, ptr %23, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %56) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr %57) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %57) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %56, ptr noundef @.str.33, ptr noundef nonnull align 1 dereferenceable(1) %57)
          to label %274 unwind label %350

274:                                              ; preds = %272
  call void @llvm.lifetime.start.p0(i64 12, ptr %58) #10
  invoke void @_ZN10aiVector3tIfEC2Efff(ptr noundef nonnull align 4 dereferenceable(12) %58, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00)
          to label %275 unwind label %354

275:                                              ; preds = %274
  %276 = invoke { <2 x float>, float } @_ZN6Assimp3FBX11PropertyGetI10aiVector3tIfEEET_RKNS0_13PropertyTableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS4_(ptr noundef nonnull align 8 dereferenceable(120) %273, ptr noundef nonnull align 8 dereferenceable(32) %56, ptr noundef nonnull align 4 dereferenceable(12) %58)
          to label %277 unwind label %354

277:                                              ; preds = %275
  store { <2 x float>, float } %276, ptr %59, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %55, ptr align 8 %59, i64 12, i1 false)
  call void @llvm.lifetime.end.p0(i64 12, ptr %58) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %56) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %57) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %57) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %56) #10
  call void @llvm.lifetime.start.p0(i64 12, ptr %60) #10
  %278 = load ptr, ptr %23, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %61) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr %62) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %62) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %61, ptr noundef @.str.34, ptr noundef nonnull align 1 dereferenceable(1) %62)
          to label %279 unwind label %359

279:                                              ; preds = %277
  call void @llvm.lifetime.start.p0(i64 12, ptr %63) #10
  invoke void @_ZN10aiVector3tIfEC2Efff(ptr noundef nonnull align 4 dereferenceable(12) %63, float noundef 1.000000e+00, float noundef 1.000000e+00, float noundef 1.000000e+00)
          to label %280 unwind label %363

280:                                              ; preds = %279
  %281 = invoke { <2 x float>, float } @_ZN6Assimp3FBX11PropertyGetI10aiVector3tIfEEET_RKNS0_13PropertyTableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS4_(ptr noundef nonnull align 8 dereferenceable(120) %278, ptr noundef nonnull align 8 dereferenceable(32) %61, ptr noundef nonnull align 4 dereferenceable(12) %63)
          to label %282 unwind label %363

282:                                              ; preds = %280
  store { <2 x float>, float } %281, ptr %64, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %60, ptr align 8 %64, i64 12, i1 false)
  call void @llvm.lifetime.end.p0(i64 12, ptr %63) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %62) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %62) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %61) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #10
  %283 = load i64, ptr %49, align 8, !tbaa !9
  %284 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %283, i64 24)
  %285 = extractvalue { i64, i1 } %284, 1
  %286 = extractvalue { i64, i1 } %284, 0
  %287 = select i1 %285, i64 -1, i64 %286
  %288 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %287) #11
          to label %289 unwind label %368

289:                                              ; preds = %282
  %290 = icmp eq i64 %283, 0
  br i1 %290, label %297, label %291

291:                                              ; preds = %289
  %292 = getelementptr inbounds %struct.aiVectorKey, ptr %288, i64 %283
  br label %293

293:                                              ; preds = %293, %291
  %294 = phi ptr [ %288, %291 ], [ %295, %293 ]
  call void @_ZN11aiVectorKeyC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %294) #10
  %295 = getelementptr inbounds %struct.aiVectorKey, ptr %294, i64 1
  %296 = icmp eq ptr %295, %292
  br i1 %296, label %297, label %293

297:                                              ; preds = %293, %289
  store ptr %288, ptr %65, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #10
  %298 = load i64, ptr %49, align 8, !tbaa !9
  %299 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %298, i64 32)
  %300 = extractvalue { i64, i1 } %299, 1
  %301 = extractvalue { i64, i1 } %299, 0
  %302 = select i1 %300, i64 -1, i64 %301
  %303 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %302) #11
          to label %304 unwind label %372

304:                                              ; preds = %297
  %305 = icmp eq i64 %298, 0
  br i1 %305, label %312, label %306

306:                                              ; preds = %304
  %307 = getelementptr inbounds %struct.aiQuatKey, ptr %303, i64 %298
  br label %308

308:                                              ; preds = %308, %306
  %309 = phi ptr [ %303, %306 ], [ %310, %308 ]
  call void @_ZN9aiQuatKeyC2Ev(ptr noundef nonnull align 8 dereferenceable(28) %309) #10
  %310 = getelementptr inbounds %struct.aiQuatKey, ptr %309, i64 1
  %311 = icmp eq ptr %310, %307
  br i1 %311, label %312, label %308

312:                                              ; preds = %308, %304
  store ptr %303, ptr %66, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #10
  %313 = load i64, ptr %49, align 8, !tbaa !9
  %314 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %313, i64 24)
  %315 = extractvalue { i64, i1 } %314, 1
  %316 = extractvalue { i64, i1 } %314, 0
  %317 = select i1 %315, i64 -1, i64 %316
  %318 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %317) #11
          to label %319 unwind label %376

319:                                              ; preds = %312
  %320 = icmp eq i64 %313, 0
  br i1 %320, label %327, label %321

321:                                              ; preds = %319
  %322 = getelementptr inbounds %struct.aiVectorKey, ptr %318, i64 %313
  br label %323

323:                                              ; preds = %323, %321
  %324 = phi ptr [ %318, %321 ], [ %325, %323 ]
  call void @_ZN11aiVectorKeyC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %324) #10
  %325 = getelementptr inbounds %struct.aiVectorKey, ptr %324, i64 1
  %326 = icmp eq ptr %325, %322
  br i1 %326, label %327, label %323

327:                                              ; preds = %323, %319
  store ptr %318, ptr %67, align 8, !tbaa !5
  %328 = getelementptr inbounds [17 x %"class.std::vector.442"], ptr %24, i64 0, i64 3
  %329 = call noundef i64 @_ZNKSt6vectorISt5tupleIJSt10shared_ptrIS_IlSaIlEEES1_IS_IfSaIfEEEjEESaIS8_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %328) #10
  %330 = icmp ugt i64 %329, 0
  br i1 %330, label %331, label %380

331:                                              ; preds = %327
  %332 = load ptr, ptr %65, align 8, !tbaa !5
  %333 = getelementptr inbounds [17 x %"class.std::vector.442"], ptr %24, i64 0, i64 3
  %334 = load ptr, ptr %18, align 8, !tbaa !5
  %335 = load ptr, ptr %19, align 8, !tbaa !5
  invoke void @_ZN6Assimp3FBX12FBXConverter15InterpolateKeysEP11aiVectorKeyRKSt6vectorIlSaIlEERKS4_ISt5tupleIJSt10shared_ptrIS6_ESA_IS4_IfSaIfEEEjEESaISF_EERK10aiVector3tIfERdSO_(ptr noundef nonnull align 8 dereferenceable(489) %99, ptr noundef %332, ptr noundef nonnull align 8 dereferenceable(24) %25, ptr noundef nonnull align 8 dereferenceable(24) %333, ptr noundef nonnull align 4 dereferenceable(12) %50, ptr noundef nonnull align 8 dereferenceable(8) %334, ptr noundef nonnull align 8 dereferenceable(8) %335)
          to label %336 unwind label %376

336:                                              ; preds = %331
  br label %407

337:                                              ; preds = %263
  %338 = landingpad { ptr, i32 }
          cleanup
  %339 = extractvalue { ptr, i32 } %338, 0
  store ptr %339, ptr %21, align 8
  %340 = extractvalue { ptr, i32 } %338, 1
  store i32 %340, ptr %22, align 4
  br label %710

341:                                              ; preds = %266
  %342 = landingpad { ptr, i32 }
          cleanup
  %343 = extractvalue { ptr, i32 } %342, 0
  store ptr %343, ptr %21, align 8
  %344 = extractvalue { ptr, i32 } %342, 1
  store i32 %344, ptr %22, align 4
  br label %349

345:                                              ; preds = %270, %269
  %346 = landingpad { ptr, i32 }
          cleanup
  %347 = extractvalue { ptr, i32 } %346, 0
  store ptr %347, ptr %21, align 8
  %348 = extractvalue { ptr, i32 } %346, 1
  store i32 %348, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 12, ptr %53) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #10
  br label %349

349:                                              ; preds = %345, %341
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %52) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %52) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %51) #10
  br label %709

350:                                              ; preds = %272
  %351 = landingpad { ptr, i32 }
          cleanup
  %352 = extractvalue { ptr, i32 } %351, 0
  store ptr %352, ptr %21, align 8
  %353 = extractvalue { ptr, i32 } %351, 1
  store i32 %353, ptr %22, align 4
  br label %358

354:                                              ; preds = %275, %274
  %355 = landingpad { ptr, i32 }
          cleanup
  %356 = extractvalue { ptr, i32 } %355, 0
  store ptr %356, ptr %21, align 8
  %357 = extractvalue { ptr, i32 } %355, 1
  store i32 %357, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 12, ptr %58) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %56) #10
  br label %358

358:                                              ; preds = %354, %350
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %57) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %57) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %56) #10
  br label %708

359:                                              ; preds = %277
  %360 = landingpad { ptr, i32 }
          cleanup
  %361 = extractvalue { ptr, i32 } %360, 0
  store ptr %361, ptr %21, align 8
  %362 = extractvalue { ptr, i32 } %360, 1
  store i32 %362, ptr %22, align 4
  br label %367

363:                                              ; preds = %280, %279
  %364 = landingpad { ptr, i32 }
          cleanup
  %365 = extractvalue { ptr, i32 } %364, 0
  store ptr %365, ptr %21, align 8
  %366 = extractvalue { ptr, i32 } %364, 1
  store i32 %366, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 12, ptr %63) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #10
  br label %367

367:                                              ; preds = %363, %359
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %62) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %62) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %61) #10
  br label %707

368:                                              ; preds = %282
  %369 = landingpad { ptr, i32 }
          cleanup
  %370 = extractvalue { ptr, i32 } %369, 0
  store ptr %370, ptr %21, align 8
  %371 = extractvalue { ptr, i32 } %369, 1
  store i32 %371, ptr %22, align 4
  br label %706

372:                                              ; preds = %297
  %373 = landingpad { ptr, i32 }
          cleanup
  %374 = extractvalue { ptr, i32 } %373, 0
  store ptr %374, ptr %21, align 8
  %375 = extractvalue { ptr, i32 } %373, 1
  store i32 %375, ptr %22, align 4
  br label %705

376:                                              ; preds = %460, %411, %331, %312
  %377 = landingpad { ptr, i32 }
          cleanup
  %378 = extractvalue { ptr, i32 } %377, 0
  store ptr %378, ptr %21, align 8
  %379 = extractvalue { ptr, i32 } %377, 1
  store i32 %379, ptr %22, align 4
  br label %704

380:                                              ; preds = %327
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #10
  store i64 0, ptr %68, align 8, !tbaa !9
  br label %381

381:                                              ; preds = %403, %380
  %382 = load i64, ptr %68, align 8, !tbaa !9
  %383 = load i64, ptr %49, align 8, !tbaa !9
  %384 = icmp ult i64 %382, %383
  br i1 %384, label %386, label %385

385:                                              ; preds = %381
  store i32 8, ptr %27, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #10
  br label %406

386:                                              ; preds = %381
  %387 = load i64, ptr %68, align 8, !tbaa !9
  %388 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIlSaIlEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %25, i64 noundef %387) #10
  %389 = load i64, ptr %388, align 8, !tbaa !9
  %390 = sitofp i64 %389 to double
  %391 = fdiv double %390, 0x422581D1AF600000
  %392 = getelementptr inbounds %"class.Assimp::FBX::FBXConverter", ptr %99, i32 0, i32 14
  %393 = load double, ptr %392, align 8, !tbaa !16
  %394 = fmul double %391, %393
  %395 = load ptr, ptr %65, align 8, !tbaa !5
  %396 = load i64, ptr %68, align 8, !tbaa !9
  %397 = getelementptr inbounds %struct.aiVectorKey, ptr %395, i64 %396
  %398 = getelementptr inbounds %struct.aiVectorKey, ptr %397, i32 0, i32 0
  store double %394, ptr %398, align 8, !tbaa !77
  %399 = load ptr, ptr %65, align 8, !tbaa !5
  %400 = load i64, ptr %68, align 8, !tbaa !9
  %401 = getelementptr inbounds %struct.aiVectorKey, ptr %399, i64 %400
  %402 = getelementptr inbounds %struct.aiVectorKey, ptr %401, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %402, ptr align 4 %50, i64 12, i1 false), !tbaa.struct !82
  br label %403

403:                                              ; preds = %386
  %404 = load i64, ptr %68, align 8, !tbaa !9
  %405 = add i64 %404, 1
  store i64 %405, ptr %68, align 8, !tbaa !9
  br label %381, !llvm.loop !84

406:                                              ; preds = %385
  br label %407

407:                                              ; preds = %406, %336
  %408 = getelementptr inbounds [17 x %"class.std::vector.442"], ptr %24, i64 0, i64 7
  %409 = call noundef i64 @_ZNKSt6vectorISt5tupleIJSt10shared_ptrIS_IlSaIlEEES1_IS_IfSaIfEEEjEESaIS8_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %408) #10
  %410 = icmp ugt i64 %409, 0
  br i1 %410, label %411, label %418

411:                                              ; preds = %407
  %412 = load ptr, ptr %66, align 8, !tbaa !5
  %413 = getelementptr inbounds [17 x %"class.std::vector.442"], ptr %24, i64 0, i64 7
  %414 = load ptr, ptr %18, align 8, !tbaa !5
  %415 = load ptr, ptr %19, align 8, !tbaa !5
  %416 = load i32, ptr %48, align 4, !tbaa !14
  invoke void @_ZN6Assimp3FBX12FBXConverter15InterpolateKeysEP9aiQuatKeyRKSt6vectorIlSaIlEERKS4_ISt5tupleIJSt10shared_ptrIS6_ESA_IS4_IfSaIfEEEjEESaISF_EERK10aiVector3tIfERdSO_NS0_5Model8RotOrderE(ptr noundef nonnull align 8 dereferenceable(489) %99, ptr noundef %412, ptr noundef nonnull align 8 dereferenceable(24) %25, ptr noundef nonnull align 8 dereferenceable(24) %413, ptr noundef nonnull align 4 dereferenceable(12) %55, ptr noundef nonnull align 8 dereferenceable(8) %414, ptr noundef nonnull align 8 dereferenceable(8) %415, i32 noundef %416)
          to label %417 unwind label %376

417:                                              ; preds = %411
  br label %456

418:                                              ; preds = %407
  call void @llvm.lifetime.start.p0(i64 16, ptr %69) #10
  %419 = load i32, ptr %48, align 4, !tbaa !14
  %420 = invoke { <2 x float>, <2 x float> } @_ZN6Assimp3FBX12FBXConverter17EulerToQuaternionERK10aiVector3tIfENS0_5Model8RotOrderE(ptr noundef nonnull align 8 dereferenceable(489) %99, ptr noundef nonnull align 4 dereferenceable(12) %55, i32 noundef %419)
          to label %421 unwind label %431

421:                                              ; preds = %418
  %422 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %69, i32 0, i32 0
  %423 = extractvalue { <2 x float>, <2 x float> } %420, 0
  store <2 x float> %423, ptr %422, align 4
  %424 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %69, i32 0, i32 1
  %425 = extractvalue { <2 x float>, <2 x float> } %420, 1
  store <2 x float> %425, ptr %424, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #10
  store i64 0, ptr %70, align 8, !tbaa !9
  br label %426

426:                                              ; preds = %452, %421
  %427 = load i64, ptr %70, align 8, !tbaa !9
  %428 = load i64, ptr %49, align 8, !tbaa !9
  %429 = icmp ult i64 %427, %428
  br i1 %429, label %435, label %430

430:                                              ; preds = %426
  store i32 11, ptr %27, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #10
  br label %455

431:                                              ; preds = %418
  %432 = landingpad { ptr, i32 }
          cleanup
  %433 = extractvalue { ptr, i32 } %432, 0
  store ptr %433, ptr %21, align 8
  %434 = extractvalue { ptr, i32 } %432, 1
  store i32 %434, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %69) #10
  br label %704

435:                                              ; preds = %426
  %436 = load i64, ptr %70, align 8, !tbaa !9
  %437 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIlSaIlEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %25, i64 noundef %436) #10
  %438 = load i64, ptr %437, align 8, !tbaa !9
  %439 = sitofp i64 %438 to double
  %440 = fdiv double %439, 0x422581D1AF600000
  %441 = getelementptr inbounds %"class.Assimp::FBX::FBXConverter", ptr %99, i32 0, i32 14
  %442 = load double, ptr %441, align 8, !tbaa !16
  %443 = fmul double %440, %442
  %444 = load ptr, ptr %66, align 8, !tbaa !5
  %445 = load i64, ptr %70, align 8, !tbaa !9
  %446 = getelementptr inbounds %struct.aiQuatKey, ptr %444, i64 %445
  %447 = getelementptr inbounds %struct.aiQuatKey, ptr %446, i32 0, i32 0
  store double %443, ptr %447, align 8, !tbaa !85
  %448 = load ptr, ptr %66, align 8, !tbaa !5
  %449 = load i64, ptr %70, align 8, !tbaa !9
  %450 = getelementptr inbounds %struct.aiQuatKey, ptr %448, i64 %449
  %451 = getelementptr inbounds %struct.aiQuatKey, ptr %450, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %451, ptr align 4 %69, i64 16, i1 false), !tbaa.struct !88
  br label %452

452:                                              ; preds = %435
  %453 = load i64, ptr %70, align 8, !tbaa !9
  %454 = add i64 %453, 1
  store i64 %454, ptr %70, align 8, !tbaa !9
  br label %426, !llvm.loop !89

455:                                              ; preds = %430
  call void @llvm.lifetime.end.p0(i64 16, ptr %69) #10
  br label %456

456:                                              ; preds = %455, %417
  %457 = getelementptr inbounds [17 x %"class.std::vector.442"], ptr %24, i64 0, i64 12
  %458 = call noundef i64 @_ZNKSt6vectorISt5tupleIJSt10shared_ptrIS_IlSaIlEEES1_IS_IfSaIfEEEjEESaIS8_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %457) #10
  %459 = icmp ugt i64 %458, 0
  br i1 %459, label %460, label %466

460:                                              ; preds = %456
  %461 = load ptr, ptr %67, align 8, !tbaa !5
  %462 = getelementptr inbounds [17 x %"class.std::vector.442"], ptr %24, i64 0, i64 12
  %463 = load ptr, ptr %18, align 8, !tbaa !5
  %464 = load ptr, ptr %19, align 8, !tbaa !5
  invoke void @_ZN6Assimp3FBX12FBXConverter15InterpolateKeysEP11aiVectorKeyRKSt6vectorIlSaIlEERKS4_ISt5tupleIJSt10shared_ptrIS6_ESA_IS4_IfSaIfEEEjEESaISF_EERK10aiVector3tIfERdSO_(ptr noundef nonnull align 8 dereferenceable(489) %99, ptr noundef %461, ptr noundef nonnull align 8 dereferenceable(24) %25, ptr noundef nonnull align 8 dereferenceable(24) %462, ptr noundef nonnull align 4 dereferenceable(12) %60, ptr noundef nonnull align 8 dereferenceable(8) %463, ptr noundef nonnull align 8 dereferenceable(8) %464)
          to label %465 unwind label %376

465:                                              ; preds = %460
  br label %493

466:                                              ; preds = %456
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #10
  store i64 0, ptr %71, align 8, !tbaa !9
  br label %467

467:                                              ; preds = %489, %466
  %468 = load i64, ptr %71, align 8, !tbaa !9
  %469 = load i64, ptr %49, align 8, !tbaa !9
  %470 = icmp ult i64 %468, %469
  br i1 %470, label %472, label %471

471:                                              ; preds = %467
  store i32 14, ptr %27, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #10
  br label %492

472:                                              ; preds = %467
  %473 = load i64, ptr %71, align 8, !tbaa !9
  %474 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIlSaIlEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %25, i64 noundef %473) #10
  %475 = load i64, ptr %474, align 8, !tbaa !9
  %476 = sitofp i64 %475 to double
  %477 = fdiv double %476, 0x422581D1AF600000
  %478 = getelementptr inbounds %"class.Assimp::FBX::FBXConverter", ptr %99, i32 0, i32 14
  %479 = load double, ptr %478, align 8, !tbaa !16
  %480 = fmul double %477, %479
  %481 = load ptr, ptr %67, align 8, !tbaa !5
  %482 = load i64, ptr %71, align 8, !tbaa !9
  %483 = getelementptr inbounds %struct.aiVectorKey, ptr %481, i64 %482
  %484 = getelementptr inbounds %struct.aiVectorKey, ptr %483, i32 0, i32 0
  store double %480, ptr %484, align 8, !tbaa !77
  %485 = load ptr, ptr %67, align 8, !tbaa !5
  %486 = load i64, ptr %71, align 8, !tbaa !9
  %487 = getelementptr inbounds %struct.aiVectorKey, ptr %485, i64 %486
  %488 = getelementptr inbounds %struct.aiVectorKey, ptr %487, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %488, ptr align 4 %60, i64 12, i1 false), !tbaa.struct !82
  br label %489

489:                                              ; preds = %472
  %490 = load i64, ptr %71, align 8, !tbaa !9
  %491 = add i64 %490, 1
  store i64 %491, ptr %71, align 8, !tbaa !9
  br label %467, !llvm.loop !90

492:                                              ; preds = %471
  br label %493

493:                                              ; preds = %492, %465
  call void @llvm.lifetime.start.p0(i64 1, ptr %72) #10
  store i8 0, ptr %72, align 1, !tbaa !91
  call void @llvm.lifetime.start.p0(i64 4, ptr %73) #10
  store float 0x3EB0C6F7A0000000, ptr %73, align 4, !tbaa !83
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #10
  call void @llvm.lifetime.start.p0(i64 12, ptr %75) #10
  %494 = load ptr, ptr %23, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %76) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr %77) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %77) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %76, ptr noundef @.str.18, ptr noundef nonnull align 1 dereferenceable(1) %77)
          to label %495 unwind label %518

495:                                              ; preds = %493
  %496 = invoke { <2 x float>, float } @_ZN6Assimp3FBX11PropertyGetI10aiVector3tIfEEET_RKNS0_13PropertyTableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERbb(ptr noundef nonnull align 8 dereferenceable(120) %494, ptr noundef nonnull align 8 dereferenceable(32) %76, ptr noundef nonnull align 1 dereferenceable(1) %72, i1 noundef zeroext false)
          to label %497 unwind label %522

497:                                              ; preds = %495
  store { <2 x float>, float } %496, ptr %78, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %75, ptr align 8 %78, i64 12, i1 false)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %76) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %77) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %77) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %76) #10
  store ptr %75, ptr %74, align 8, !tbaa !5
  %498 = load i8, ptr %72, align 1, !tbaa !91, !range !92, !noundef !93
  %499 = trunc i8 %498 to i1
  br i1 %499, label %500, label %559

500:                                              ; preds = %497
  %501 = load ptr, ptr %74, align 8, !tbaa !5
  %502 = invoke noundef float @_ZNK10aiVector3tIfE12SquareLengthEv(ptr noundef nonnull align 4 dereferenceable(12) %501)
          to label %503 unwind label %527

503:                                              ; preds = %500
  %504 = fcmp ogt float %502, 0x3EB0C6F7A0000000
  br i1 %504, label %505, label %559

505:                                              ; preds = %503
  call void @llvm.lifetime.start.p0(i64 16, ptr %79) #10
  %506 = load ptr, ptr %74, align 8, !tbaa !5
  %507 = invoke { <2 x float>, <2 x float> } @_ZN6Assimp3FBX12FBXConverter17EulerToQuaternionERK10aiVector3tIfENS0_5Model8RotOrderE(ptr noundef nonnull align 8 dereferenceable(489) %99, ptr noundef nonnull align 4 dereferenceable(12) %506, i32 noundef 0)
          to label %508 unwind label %531

508:                                              ; preds = %505
  %509 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %79, i32 0, i32 0
  %510 = extractvalue { <2 x float>, <2 x float> } %507, 0
  store <2 x float> %510, ptr %509, align 4
  %511 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %79, i32 0, i32 1
  %512 = extractvalue { <2 x float>, <2 x float> } %507, 1
  store <2 x float> %512, ptr %511, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %80) #10
  store i64 0, ptr %80, align 8, !tbaa !9
  br label %513

513:                                              ; preds = %550, %508
  %514 = load i64, ptr %80, align 8, !tbaa !9
  %515 = load i64, ptr %49, align 8, !tbaa !9
  %516 = icmp ult i64 %514, %515
  br i1 %516, label %535, label %517

517:                                              ; preds = %513
  store i32 17, ptr %27, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #10
  br label %557

518:                                              ; preds = %493
  %519 = landingpad { ptr, i32 }
          cleanup
  %520 = extractvalue { ptr, i32 } %519, 0
  store ptr %520, ptr %21, align 8
  %521 = extractvalue { ptr, i32 } %519, 1
  store i32 %521, ptr %22, align 4
  br label %526

522:                                              ; preds = %495
  %523 = landingpad { ptr, i32 }
          cleanup
  %524 = extractvalue { ptr, i32 } %523, 0
  store ptr %524, ptr %21, align 8
  %525 = extractvalue { ptr, i32 } %523, 1
  store i32 %525, ptr %22, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %76) #10
  br label %526

526:                                              ; preds = %522, %518
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %77) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %77) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %76) #10
  br label %703

527:                                              ; preds = %500
  %528 = landingpad { ptr, i32 }
          cleanup
  %529 = extractvalue { ptr, i32 } %528, 0
  store ptr %529, ptr %21, align 8
  %530 = extractvalue { ptr, i32 } %528, 1
  store i32 %530, ptr %22, align 4
  br label %702

531:                                              ; preds = %505
  %532 = landingpad { ptr, i32 }
          cleanup
  %533 = extractvalue { ptr, i32 } %532, 0
  store ptr %533, ptr %21, align 8
  %534 = extractvalue { ptr, i32 } %532, 1
  store i32 %534, ptr %22, align 4
  br label %558

535:                                              ; preds = %513
  call void @llvm.lifetime.start.p0(i64 16, ptr %81) #10
  %536 = load ptr, ptr %66, align 8, !tbaa !5
  %537 = load i64, ptr %80, align 8, !tbaa !9
  %538 = getelementptr inbounds %struct.aiQuatKey, ptr %536, i64 %537
  %539 = getelementptr inbounds %struct.aiQuatKey, ptr %538, i32 0, i32 1
  %540 = invoke { <2 x float>, <2 x float> } @_ZNK13aiQuaterniontIfEmlERKS0_(ptr noundef nonnull align 4 dereferenceable(16) %79, ptr noundef nonnull align 4 dereferenceable(16) %539)
          to label %541 unwind label %553

541:                                              ; preds = %535
  %542 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %81, i32 0, i32 0
  %543 = extractvalue { <2 x float>, <2 x float> } %540, 0
  store <2 x float> %543, ptr %542, align 4
  %544 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %81, i32 0, i32 1
  %545 = extractvalue { <2 x float>, <2 x float> } %540, 1
  store <2 x float> %545, ptr %544, align 4
  %546 = load ptr, ptr %66, align 8, !tbaa !5
  %547 = load i64, ptr %80, align 8, !tbaa !9
  %548 = getelementptr inbounds %struct.aiQuatKey, ptr %546, i64 %547
  %549 = getelementptr inbounds %struct.aiQuatKey, ptr %548, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %549, ptr align 4 %81, i64 16, i1 false), !tbaa.struct !88
  call void @llvm.lifetime.end.p0(i64 16, ptr %81) #10
  br label %550

550:                                              ; preds = %541
  %551 = load i64, ptr %80, align 8, !tbaa !9
  %552 = add i64 %551, 1
  store i64 %552, ptr %80, align 8, !tbaa !9
  br label %513, !llvm.loop !94

553:                                              ; preds = %535
  %554 = landingpad { ptr, i32 }
          cleanup
  %555 = extractvalue { ptr, i32 } %554, 0
  store ptr %555, ptr %21, align 8
  %556 = extractvalue { ptr, i32 } %554, 1
  store i32 %556, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %81) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #10
  br label %558

557:                                              ; preds = %517
  call void @llvm.lifetime.end.p0(i64 16, ptr %79) #10
  br label %559

558:                                              ; preds = %553, %531
  call void @llvm.lifetime.end.p0(i64 16, ptr %79) #10
  br label %702

559:                                              ; preds = %557, %503, %497
  call void @llvm.lifetime.start.p0(i64 8, ptr %82) #10
  call void @llvm.lifetime.start.p0(i64 12, ptr %83) #10
  %560 = load ptr, ptr %23, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %84) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr %85) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %85) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %84, ptr noundef @.str.20, ptr noundef nonnull align 1 dereferenceable(1) %85)
          to label %561 unwind label %584

561:                                              ; preds = %559
  %562 = invoke { <2 x float>, float } @_ZN6Assimp3FBX11PropertyGetI10aiVector3tIfEEET_RKNS0_13PropertyTableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERbb(ptr noundef nonnull align 8 dereferenceable(120) %560, ptr noundef nonnull align 8 dereferenceable(32) %84, ptr noundef nonnull align 1 dereferenceable(1) %72, i1 noundef zeroext false)
          to label %563 unwind label %588

563:                                              ; preds = %561
  store { <2 x float>, float } %562, ptr %86, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %83, ptr align 8 %86, i64 12, i1 false)
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %84) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %85) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %85) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %84) #10
  store ptr %83, ptr %82, align 8, !tbaa !5
  %564 = load i8, ptr %72, align 1, !tbaa !91, !range !92, !noundef !93
  %565 = trunc i8 %564 to i1
  br i1 %565, label %566, label %625

566:                                              ; preds = %563
  %567 = load ptr, ptr %82, align 8, !tbaa !5
  %568 = invoke noundef float @_ZNK10aiVector3tIfE12SquareLengthEv(ptr noundef nonnull align 4 dereferenceable(12) %567)
          to label %569 unwind label %593

569:                                              ; preds = %566
  %570 = fcmp ogt float %568, 0x3EB0C6F7A0000000
  br i1 %570, label %571, label %625

571:                                              ; preds = %569
  call void @llvm.lifetime.start.p0(i64 16, ptr %87) #10
  %572 = load ptr, ptr %82, align 8, !tbaa !5
  %573 = invoke { <2 x float>, <2 x float> } @_ZN6Assimp3FBX12FBXConverter17EulerToQuaternionERK10aiVector3tIfENS0_5Model8RotOrderE(ptr noundef nonnull align 8 dereferenceable(489) %99, ptr noundef nonnull align 4 dereferenceable(12) %572, i32 noundef 0)
          to label %574 unwind label %597

574:                                              ; preds = %571
  %575 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %87, i32 0, i32 0
  %576 = extractvalue { <2 x float>, <2 x float> } %573, 0
  store <2 x float> %576, ptr %575, align 4
  %577 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %87, i32 0, i32 1
  %578 = extractvalue { <2 x float>, <2 x float> } %573, 1
  store <2 x float> %578, ptr %577, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %88) #10
  store i64 0, ptr %88, align 8, !tbaa !9
  br label %579

579:                                              ; preds = %616, %574
  %580 = load i64, ptr %88, align 8, !tbaa !9
  %581 = load i64, ptr %49, align 8, !tbaa !9
  %582 = icmp ult i64 %580, %581
  br i1 %582, label %601, label %583

583:                                              ; preds = %579
  store i32 20, ptr %27, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #10
  br label %623

584:                                              ; preds = %559
  %585 = landingpad { ptr, i32 }
          cleanup
  %586 = extractvalue { ptr, i32 } %585, 0
  store ptr %586, ptr %21, align 8
  %587 = extractvalue { ptr, i32 } %585, 1
  store i32 %587, ptr %22, align 4
  br label %592

588:                                              ; preds = %561
  %589 = landingpad { ptr, i32 }
          cleanup
  %590 = extractvalue { ptr, i32 } %589, 0
  store ptr %590, ptr %21, align 8
  %591 = extractvalue { ptr, i32 } %589, 1
  store i32 %591, ptr %22, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %84) #10
  br label %592

592:                                              ; preds = %588, %584
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %85) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %85) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %84) #10
  br label %701

593:                                              ; preds = %566
  %594 = landingpad { ptr, i32 }
          cleanup
  %595 = extractvalue { ptr, i32 } %594, 0
  store ptr %595, ptr %21, align 8
  %596 = extractvalue { ptr, i32 } %594, 1
  store i32 %596, ptr %22, align 4
  br label %700

597:                                              ; preds = %571
  %598 = landingpad { ptr, i32 }
          cleanup
  %599 = extractvalue { ptr, i32 } %598, 0
  store ptr %599, ptr %21, align 8
  %600 = extractvalue { ptr, i32 } %598, 1
  store i32 %600, ptr %22, align 4
  br label %624

601:                                              ; preds = %579
  call void @llvm.lifetime.start.p0(i64 16, ptr %89) #10
  %602 = load ptr, ptr %66, align 8, !tbaa !5
  %603 = load i64, ptr %88, align 8, !tbaa !9
  %604 = getelementptr inbounds %struct.aiQuatKey, ptr %602, i64 %603
  %605 = getelementptr inbounds %struct.aiQuatKey, ptr %604, i32 0, i32 1
  %606 = invoke { <2 x float>, <2 x float> } @_ZNK13aiQuaterniontIfEmlERKS0_(ptr noundef nonnull align 4 dereferenceable(16) %605, ptr noundef nonnull align 4 dereferenceable(16) %87)
          to label %607 unwind label %619

607:                                              ; preds = %601
  %608 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %89, i32 0, i32 0
  %609 = extractvalue { <2 x float>, <2 x float> } %606, 0
  store <2 x float> %609, ptr %608, align 4
  %610 = getelementptr inbounds { <2 x float>, <2 x float> }, ptr %89, i32 0, i32 1
  %611 = extractvalue { <2 x float>, <2 x float> } %606, 1
  store <2 x float> %611, ptr %610, align 4
  %612 = load ptr, ptr %66, align 8, !tbaa !5
  %613 = load i64, ptr %88, align 8, !tbaa !9
  %614 = getelementptr inbounds %struct.aiQuatKey, ptr %612, i64 %613
  %615 = getelementptr inbounds %struct.aiQuatKey, ptr %614, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %615, ptr align 4 %89, i64 16, i1 false), !tbaa.struct !88
  call void @llvm.lifetime.end.p0(i64 16, ptr %89) #10
  br label %616

616:                                              ; preds = %607
  %617 = load i64, ptr %88, align 8, !tbaa !9
  %618 = add i64 %617, 1
  store i64 %618, ptr %88, align 8, !tbaa !9
  br label %579, !llvm.loop !95

619:                                              ; preds = %601
  %620 = landingpad { ptr, i32 }
          cleanup
  %621 = extractvalue { ptr, i32 } %620, 0
  store ptr %621, ptr %21, align 8
  %622 = extractvalue { ptr, i32 } %620, 1
  store i32 %622, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %89) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #10
  br label %624

623:                                              ; preds = %583
  call void @llvm.lifetime.end.p0(i64 16, ptr %87) #10
  br label %625

624:                                              ; preds = %619, %597
  call void @llvm.lifetime.end.p0(i64 16, ptr %87) #10
  br label %700

625:                                              ; preds = %623, %569, %563
  call void @llvm.lifetime.start.p0(i64 8, ptr %90) #10
  store i64 0, ptr %90, align 8, !tbaa !9
  br label %626

626:                                              ; preds = %661, %625
  %627 = load i64, ptr %90, align 8, !tbaa !9
  %628 = load i64, ptr %49, align 8, !tbaa !9
  %629 = icmp ult i64 %627, %628
  br i1 %629, label %631, label %630

630:                                              ; preds = %626
  store i32 23, ptr %27, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #10
  br label %673

631:                                              ; preds = %626
  call void @llvm.lifetime.start.p0(i64 8, ptr %91) #10
  %632 = load ptr, ptr %66, align 8, !tbaa !5
  %633 = load i64, ptr %90, align 8, !tbaa !9
  %634 = getelementptr inbounds %struct.aiQuatKey, ptr %632, i64 %633
  %635 = getelementptr inbounds %struct.aiQuatKey, ptr %634, i32 0, i32 1
  store ptr %635, ptr %91, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %92) #10
  %636 = load ptr, ptr %67, align 8, !tbaa !5
  %637 = load i64, ptr %90, align 8, !tbaa !9
  %638 = getelementptr inbounds %struct.aiVectorKey, ptr %636, i64 %637
  %639 = getelementptr inbounds %struct.aiVectorKey, ptr %638, i32 0, i32 1
  store ptr %639, ptr %92, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %93) #10
  %640 = load ptr, ptr %65, align 8, !tbaa !5
  %641 = load i64, ptr %90, align 8, !tbaa !9
  %642 = getelementptr inbounds %struct.aiVectorKey, ptr %640, i64 %641
  %643 = getelementptr inbounds %struct.aiVectorKey, ptr %642, i32 0, i32 1
  store ptr %643, ptr %93, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 64, ptr %94) #10
  call void @_ZN12aiMatrix4x4tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(64) %94) #10
  call void @llvm.lifetime.start.p0(i64 64, ptr %95) #10
  call void @_ZN12aiMatrix4x4tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(64) %95) #10
  %644 = load ptr, ptr %93, align 8, !tbaa !5
  %645 = invoke noundef nonnull align 4 dereferenceable(64) ptr @_ZN12aiMatrix4x4tIfE11TranslationERK10aiVector3tIfERS0_(ptr noundef nonnull align 4 dereferenceable(12) %644, ptr noundef nonnull align 4 dereferenceable(64) %94)
          to label %646 unwind label %664

646:                                              ; preds = %631
  call void @llvm.lifetime.start.p0(i64 64, ptr %96) #10
  call void @llvm.lifetime.start.p0(i64 36, ptr %97) #10
  %647 = load ptr, ptr %91, align 8, !tbaa !5
  invoke void @_ZNK13aiQuaterniontIfE9GetMatrixEv(ptr dead_on_unwind writable sret(%class.aiMatrix3x3t) align 4 %97, ptr noundef nonnull align 4 dereferenceable(16) %647)
          to label %648 unwind label %668

648:                                              ; preds = %646
  invoke void @_ZN12aiMatrix4x4tIfEC2ERK12aiMatrix3x3tIfE(ptr noundef nonnull align 4 dereferenceable(64) %96, ptr noundef nonnull align 4 dereferenceable(36) %97)
          to label %649 unwind label %668

649:                                              ; preds = %648
  %650 = invoke noundef nonnull align 4 dereferenceable(64) ptr @_ZN12aiMatrix4x4tIfEmLERKS0_(ptr noundef nonnull align 4 dereferenceable(64) %94, ptr noundef nonnull align 4 dereferenceable(64) %96)
          to label %651 unwind label %668

651:                                              ; preds = %649
  call void @llvm.lifetime.end.p0(i64 36, ptr %97) #10
  call void @llvm.lifetime.end.p0(i64 64, ptr %96) #10
  %652 = load ptr, ptr %92, align 8, !tbaa !5
  %653 = invoke noundef nonnull align 4 dereferenceable(64) ptr @_ZN12aiMatrix4x4tIfE7ScalingERK10aiVector3tIfERS0_(ptr noundef nonnull align 4 dereferenceable(12) %652, ptr noundef nonnull align 4 dereferenceable(64) %95)
          to label %654 unwind label %664

654:                                              ; preds = %651
  %655 = invoke noundef nonnull align 4 dereferenceable(64) ptr @_ZN12aiMatrix4x4tIfEmLERKS0_(ptr noundef nonnull align 4 dereferenceable(64) %94, ptr noundef nonnull align 4 dereferenceable(64) %653)
          to label %656 unwind label %664

656:                                              ; preds = %654
  %657 = load ptr, ptr %92, align 8, !tbaa !5
  %658 = load ptr, ptr %91, align 8, !tbaa !5
  %659 = load ptr, ptr %93, align 8, !tbaa !5
  invoke void @_ZNK12aiMatrix4x4tIfE9DecomposeER10aiVector3tIfER13aiQuaterniontIfES3_(ptr noundef nonnull align 4 dereferenceable(64) %94, ptr noundef nonnull align 4 dereferenceable(12) %657, ptr noundef nonnull align 4 dereferenceable(16) %658, ptr noundef nonnull align 4 dereferenceable(12) %659)
          to label %660 unwind label %664

660:                                              ; preds = %656
  call void @llvm.lifetime.end.p0(i64 64, ptr %95) #10
  call void @llvm.lifetime.end.p0(i64 64, ptr %94) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #10
  br label %661

661:                                              ; preds = %660
  %662 = load i64, ptr %90, align 8, !tbaa !9
  %663 = add i64 %662, 1
  store i64 %663, ptr %90, align 8, !tbaa !9
  br label %626, !llvm.loop !96

664:                                              ; preds = %656, %654, %651, %631
  %665 = landingpad { ptr, i32 }
          cleanup
  %666 = extractvalue { ptr, i32 } %665, 0
  store ptr %666, ptr %21, align 8
  %667 = extractvalue { ptr, i32 } %665, 1
  store i32 %667, ptr %22, align 4
  br label %672

668:                                              ; preds = %649, %648, %646
  %669 = landingpad { ptr, i32 }
          cleanup
  %670 = extractvalue { ptr, i32 } %669, 0
  store ptr %670, ptr %21, align 8
  %671 = extractvalue { ptr, i32 } %669, 1
  store i32 %671, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 36, ptr %97) #10
  call void @llvm.lifetime.end.p0(i64 64, ptr %96) #10
  br label %672

672:                                              ; preds = %668, %664
  call void @llvm.lifetime.end.p0(i64 64, ptr %95) #10
  call void @llvm.lifetime.end.p0(i64 64, ptr %94) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #10
  br label %700

673:                                              ; preds = %630
  %674 = load i64, ptr %49, align 8, !tbaa !9
  %675 = trunc i64 %674 to i32
  %676 = call noundef ptr @_ZNKSt10unique_ptrI10aiNodeAnimSt14default_deleteIS0_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %20) #10
  %677 = getelementptr inbounds %struct.aiNodeAnim, ptr %676, i32 0, i32 5
  store i32 %675, ptr %677, align 8, !tbaa !97
  %678 = call noundef ptr @_ZNKSt10unique_ptrI10aiNodeAnimSt14default_deleteIS0_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %20) #10
  %679 = getelementptr inbounds %struct.aiNodeAnim, ptr %678, i32 0, i32 5
  %680 = load i32, ptr %679, align 8, !tbaa !97
  %681 = call noundef ptr @_ZNKSt10unique_ptrI10aiNodeAnimSt14default_deleteIS0_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %20) #10
  %682 = getelementptr inbounds %struct.aiNodeAnim, ptr %681, i32 0, i32 3
  store i32 %680, ptr %682, align 8, !tbaa !101
  %683 = call noundef ptr @_ZNKSt10unique_ptrI10aiNodeAnimSt14default_deleteIS0_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %20) #10
  %684 = getelementptr inbounds %struct.aiNodeAnim, ptr %683, i32 0, i32 5
  %685 = load i32, ptr %684, align 8, !tbaa !97
  %686 = call noundef ptr @_ZNKSt10unique_ptrI10aiNodeAnimSt14default_deleteIS0_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %20) #10
  %687 = getelementptr inbounds %struct.aiNodeAnim, ptr %686, i32 0, i32 1
  store i32 %685, ptr %687, align 4, !tbaa !102
  %688 = load ptr, ptr %67, align 8, !tbaa !5
  %689 = call noundef ptr @_ZNKSt10unique_ptrI10aiNodeAnimSt14default_deleteIS0_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %20) #10
  %690 = getelementptr inbounds %struct.aiNodeAnim, ptr %689, i32 0, i32 6
  store ptr %688, ptr %690, align 8, !tbaa !103
  %691 = load ptr, ptr %66, align 8, !tbaa !5
  %692 = call noundef ptr @_ZNKSt10unique_ptrI10aiNodeAnimSt14default_deleteIS0_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %20) #10
  %693 = getelementptr inbounds %struct.aiNodeAnim, ptr %692, i32 0, i32 4
  store ptr %691, ptr %693, align 8, !tbaa !104
  %694 = load ptr, ptr %65, align 8, !tbaa !5
  %695 = call noundef ptr @_ZNKSt10unique_ptrI10aiNodeAnimSt14default_deleteIS0_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %20) #10
  %696 = getelementptr inbounds %struct.aiNodeAnim, ptr %695, i32 0, i32 2
  store ptr %694, ptr %696, align 8, !tbaa !105
  %697 = call noundef ptr @_ZNSt10unique_ptrI10aiNodeAnimSt14default_deleteIS0_EE7releaseEv(ptr noundef nonnull align 8 dereferenceable(8) %20) #10
  store ptr %697, ptr %10, align 8
  store i32 1, ptr %27, align 4
  call void @llvm.lifetime.end.p0(i64 12, ptr %83) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #10
  call void @llvm.lifetime.end.p0(i64 12, ptr %75) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %72) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #10
  call void @llvm.lifetime.end.p0(i64 12, ptr %60) #10
  call void @llvm.lifetime.end.p0(i64 12, ptr %55) #10
  call void @llvm.lifetime.end.p0(i64 12, ptr %50) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #10
  call void @_ZNSt6vectorIlSaIlEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %25) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %25) #10
  %698 = getelementptr inbounds [17 x %"class.std::vector.442"], ptr %24, i32 0, i32 0
  %699 = getelementptr inbounds %"class.std::vector.442", ptr %698, i64 17
  br label %714

700:                                              ; preds = %672, %624, %593
  call void @llvm.lifetime.end.p0(i64 12, ptr %83) #10
  br label %701

701:                                              ; preds = %700, %592
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #10
  br label %702

702:                                              ; preds = %701, %558, %527
  call void @llvm.lifetime.end.p0(i64 12, ptr %75) #10
  br label %703

703:                                              ; preds = %702, %526
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %72) #10
  br label %704

704:                                              ; preds = %703, %431, %376
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #10
  br label %705

705:                                              ; preds = %704, %372
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #10
  br label %706

706:                                              ; preds = %705, %368
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #10
  br label %707

707:                                              ; preds = %706, %367
  call void @llvm.lifetime.end.p0(i64 12, ptr %60) #10
  br label %708

708:                                              ; preds = %707, %358
  call void @llvm.lifetime.end.p0(i64 12, ptr %55) #10
  br label %709

709:                                              ; preds = %708, %349
  call void @llvm.lifetime.end.p0(i64 12, ptr %50) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #10
  br label %710

710:                                              ; preds = %709, %337
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #10
  br label %711

711:                                              ; preds = %710, %262
  call void @_ZNSt6vectorIlSaIlEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %25) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %25) #10
  %712 = getelementptr inbounds [17 x %"class.std::vector.442"], ptr %24, i32 0, i32 0
  %713 = getelementptr inbounds %"class.std::vector.442", ptr %712, i64 17
  br label %720

714:                                              ; preds = %714, %673
  %715 = phi ptr [ %699, %673 ], [ %716, %714 ]
  %716 = getelementptr inbounds %"class.std::vector.442", ptr %715, i64 -1
  call void @_ZNSt6vectorISt5tupleIJSt10shared_ptrIS_IlSaIlEEES1_IS_IfSaIfEEEjEESaIS8_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %716) #10
  %717 = icmp eq ptr %716, %698
  br i1 %717, label %718, label %714

718:                                              ; preds = %714
  call void @llvm.lifetime.end.p0(i64 408, ptr %24) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #10
  call void @_ZNSt10unique_ptrI10aiNodeAnimSt14default_deleteIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %20) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #10
  %719 = load ptr, ptr %10, align 8
  ret ptr %719

720:                                              ; preds = %720, %711
  %721 = phi ptr [ %713, %711 ], [ %722, %720 ]
  %722 = getelementptr inbounds %"class.std::vector.442", ptr %721, i64 -1
  call void @_ZNSt6vectorISt5tupleIJSt10shared_ptrIS_IlSaIlEEES1_IS_IfSaIfEEEjEESaIS8_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %722) #10
  %723 = icmp eq ptr %722, %712
  br i1 %723, label %724, label %720

724:                                              ; preds = %720
  call void @llvm.lifetime.end.p0(i64 408, ptr %24) #10
  br label %725

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

726:                                              ; preds = %725, %119
  call void @_ZNSt10unique_ptrI10aiNodeAnimSt14default_deleteIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %20) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #10
  br label %727

727:                                              ; preds = %726
  %728 = load ptr, ptr %21, align 8
  %729 = load i32, ptr %22, align 4
  %730 = insertvalue { ptr, i32 } poison, ptr %728, 0
  %731 = insertvalue { ptr, i32 } %730, i32 %729, 1
  resume { ptr, i32 } %731
}

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Assimp3FBX12FBXConverter23GetRotationKeyframeListERKSt6vectorIPKNS0_18AnimationCurveNodeESaIS5_EEll(ptr dead_on_unwind noalias writable sret(%"class.std::vector.442") align 8, ptr noundef nonnull align 8 dereferenceable(489), ptr noundef nonnull align 8 dereferenceable(24), i64 noundef, i64 noundef) #3 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Assimp3FBX12FBXConverter15GetKeyframeListERKSt6vectorIPKNS0_18AnimationCurveNodeESaIS5_EEll(ptr dead_on_unwind noalias writable sret(%"class.std::vector.442") align 8, ptr noundef nonnull align 8 dereferenceable(489), ptr noundef nonnull align 8 dereferenceable(24), i64 noundef, i64 noundef) #3 align 2

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPlSt6vectorIlSaIlEEEEEvT_S7_(ptr, ptr) #6

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local ptr @_ZSt6uniqueIN9__gnu_cxx17__normal_iteratorIPlSt6vectorIlSaIlEEEEET_S7_S7_(ptr, ptr) #6

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Assimp3FBX12FBXConverter15InterpolateKeysEP11aiVectorKeyRKSt6vectorIlSaIlEERKS4_ISt5tupleIJSt10shared_ptrIS6_ESA_IS4_IfSaIfEEEjEESaISF_EERK10aiVector3tIfERdSO_(ptr noundef nonnull align 8 dereferenceable(489), ptr noundef, ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #3 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Assimp3FBX12FBXConverter15InterpolateKeysEP9aiQuatKeyRKSt6vectorIlSaIlEERKS4_ISt5tupleIJSt10shared_ptrIS6_ESA_IS4_IfSaIfEEEjEESaISF_EERK10aiVector3tIfERdSO_NS0_5Model8RotOrderE(ptr noundef nonnull align 8 dereferenceable(489), ptr noundef, ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), i32 noundef) #3 align 2

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZNK13aiQuaterniontIfE9GetMatrixEv(ptr dead_on_unwind noalias writable sret(%class.aiMatrix3x3t) align 4, ptr noundef nonnull align 4 dereferenceable(16)) #7 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN12aiMatrix4x4tIfEC2ERK12aiMatrix3x3tIfE(ptr noundef nonnull align 4 dereferenceable(64), ptr noundef nonnull align 4 dereferenceable(36)) unnamed_addr #7 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZNK12aiMatrix4x4tIfE9DecomposeER10aiVector3tIfER13aiQuaterniontIfES3_(ptr noundef nonnull align 4 dereferenceable(64), ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(16), ptr noundef nonnull align 4 dereferenceable(12)) #9 align 2

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"long", !7, i64 0}
!11 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = distinct !{!13, !12}
!14 = !{!15, !15, i64 0}
!15 = !{!"_ZTSN6Assimp3FBX5Model8RotOrderE", !7, i64 0}
!16 = !{!17, !71, i64 440}
!17 = !{!"_ZTSN6Assimp3FBX12FBXConverterE", !18, i64 0, !19, i64 8, !23, i64 32, !27, i64 56, !31, i64 80, !35, i64 104, !39, i64 128, !43, i64 152, !51, i64 200, !56, i64 248, !61, i64 296, !61, i64 344, !66, i64 392, !71, i64 440, !72, i64 448, !6, i64 472, !6, i64 480, !76, i64 488}
!18 = !{!"int", !7, i64 0}
!19 = !{!"_ZTSSt6vectorIP6aiMeshSaIS1_EE", !20, i64 0}
!20 = !{!"_ZTSSt12_Vector_baseIP6aiMeshSaIS1_EE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseIP6aiMeshSaIS1_EE12_Vector_implE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseIP6aiMeshSaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!23 = !{!"_ZTSSt6vectorIP10aiMaterialSaIS1_EE", !24, i64 0}
!24 = !{!"_ZTSSt12_Vector_baseIP10aiMaterialSaIS1_EE", !25, i64 0}
!25 = !{!"_ZTSNSt12_Vector_baseIP10aiMaterialSaIS1_EE12_Vector_implE", !26, i64 0}
!26 = !{!"_ZTSNSt12_Vector_baseIP10aiMaterialSaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!27 = !{!"_ZTSSt6vectorIP11aiAnimationSaIS1_EE", !28, i64 0}
!28 = !{!"_ZTSSt12_Vector_baseIP11aiAnimationSaIS1_EE", !29, i64 0}
!29 = !{!"_ZTSNSt12_Vector_baseIP11aiAnimationSaIS1_EE12_Vector_implE", !30, i64 0}
!30 = !{!"_ZTSNSt12_Vector_baseIP11aiAnimationSaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!31 = !{!"_ZTSSt6vectorIP7aiLightSaIS1_EE", !32, i64 0}
!32 = !{!"_ZTSSt12_Vector_baseIP7aiLightSaIS1_EE", !33, i64 0}
!33 = !{!"_ZTSNSt12_Vector_baseIP7aiLightSaIS1_EE12_Vector_implE", !34, i64 0}
!34 = !{!"_ZTSNSt12_Vector_baseIP7aiLightSaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!35 = !{!"_ZTSSt6vectorIP8aiCameraSaIS1_EE", !36, i64 0}
!36 = !{!"_ZTSSt12_Vector_baseIP8aiCameraSaIS1_EE", !37, i64 0}
!37 = !{!"_ZTSNSt12_Vector_baseIP8aiCameraSaIS1_EE12_Vector_implE", !38, i64 0}
!38 = !{!"_ZTSNSt12_Vector_baseIP8aiCameraSaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!39 = !{!"_ZTSSt6vectorIP9aiTextureSaIS1_EE", !40, i64 0}
!40 = !{!"_ZTSSt12_Vector_baseIP9aiTextureSaIS1_EE", !41, i64 0}
!41 = !{!"_ZTSNSt12_Vector_baseIP9aiTextureSaIS1_EE12_Vector_implE", !42, i64 0}
!42 = !{!"_ZTSNSt12_Vector_baseIP9aiTextureSaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!43 = !{!"_ZTSSt3mapIPKN6Assimp3FBX8MaterialEjSt4lessIS4_ESaISt4pairIKS4_jEEE", !44, i64 0}
!44 = !{!"_ZTSSt8_Rb_treeIPKN6Assimp3FBX8MaterialESt4pairIKS4_jESt10_Select1stIS7_ESt4lessIS4_ESaIS7_EE", !45, i64 0}
!45 = !{!"_ZTSNSt8_Rb_treeIPKN6Assimp3FBX8MaterialESt4pairIKS4_jESt10_Select1stIS7_ESt4lessIS4_ESaIS7_EE13_Rb_tree_implISB_Lb1EEE", !46, i64 0, !48, i64 8}
!46 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIPKN6Assimp3FBX8MaterialEEE", !47, i64 0}
!47 = !{!"_ZTSSt4lessIPKN6Assimp3FBX8MaterialEE"}
!48 = !{!"_ZTSSt15_Rb_tree_header", !49, i64 0, !10, i64 32}
!49 = !{!"_ZTSSt18_Rb_tree_node_base", !50, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!50 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!51 = !{!"_ZTSSt3mapIPKN6Assimp3FBX5VideoEjSt4lessIS4_ESaISt4pairIKS4_jEEE", !52, i64 0}
!52 = !{!"_ZTSSt8_Rb_treeIPKN6Assimp3FBX5VideoESt4pairIKS4_jESt10_Select1stIS7_ESt4lessIS4_ESaIS7_EE", !53, i64 0}
!53 = !{!"_ZTSNSt8_Rb_treeIPKN6Assimp3FBX5VideoESt4pairIKS4_jESt10_Select1stIS7_ESt4lessIS4_ESaIS7_EE13_Rb_tree_implISB_Lb1EEE", !54, i64 0, !48, i64 8}
!54 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIPKN6Assimp3FBX5VideoEEE", !55, i64 0}
!55 = !{!"_ZTSSt4lessIPKN6Assimp3FBX5VideoEE"}
!56 = !{!"_ZTSSt3mapIPKN6Assimp3FBX8GeometryESt6vectorIjSaIjEESt4lessIS4_ESaISt4pairIKS4_S7_EEE", !57, i64 0}
!57 = !{!"_ZTSSt8_Rb_treeIPKN6Assimp3FBX8GeometryESt4pairIKS4_St6vectorIjSaIjEEESt10_Select1stISA_ESt4lessIS4_ESaISA_EE", !58, i64 0}
!58 = !{!"_ZTSNSt8_Rb_treeIPKN6Assimp3FBX8GeometryESt4pairIKS4_St6vectorIjSaIjEEESt10_Select1stISA_ESt4lessIS4_ESaISA_EE13_Rb_tree_implISE_Lb1EEE", !59, i64 0, !48, i64 8}
!59 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIPKN6Assimp3FBX8GeometryEEE", !60, i64 0}
!60 = !{!"_ZTSSt4lessIPKN6Assimp3FBX8GeometryEE"}
!61 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjSt4lessIS5_ESaISt4pairIKS5_jEEE", !62, i64 0}
!62 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_jESt10_Select1stIS8_ESt4lessIS5_ESaIS8_EE", !63, i64 0}
!63 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_jESt10_Select1stIS8_ESt4lessIS5_ESaIS8_EE13_Rb_tree_implISC_Lb1EEE", !64, i64 0, !48, i64 8}
!64 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE", !65, i64 0}
!65 = !{!"_ZTSSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE"}
!66 = !{!"_ZTSSt3mapIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP6aiBoneSt4lessIS6_ESaISt4pairIS6_S8_EEE", !67, i64 0}
!67 = !{!"_ZTSSt8_Rb_treeIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIS6_P6aiBoneESt10_Select1stISA_ESt4lessIS6_ESaISA_EE", !68, i64 0}
!68 = !{!"_ZTSNSt8_Rb_treeIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIS6_P6aiBoneESt10_Select1stISA_ESt4lessIS6_ESaISA_EE13_Rb_tree_implISE_Lb1EEE", !69, i64 0, !48, i64 8}
!69 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE", !70, i64 0}
!70 = !{!"_ZTSSt4lessIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE"}
!71 = !{!"double", !7, i64 0}
!72 = !{!"_ZTSSt6vectorIP10aiSkeletonSaIS1_EE", !73, i64 0}
!73 = !{!"_ZTSSt12_Vector_baseIP10aiSkeletonSaIS1_EE", !74, i64 0}
!74 = !{!"_ZTSNSt12_Vector_baseIP10aiSkeletonSaIS1_EE12_Vector_implE", !75, i64 0}
!75 = !{!"_ZTSNSt12_Vector_baseIP10aiSkeletonSaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!76 = !{!"bool", !7, i64 0}
!77 = !{!78, !71, i64 0}
!78 = !{!"_ZTS11aiVectorKey", !71, i64 0, !79, i64 8, !81, i64 20}
!79 = !{!"_ZTS10aiVector3tIfE", !80, i64 0, !80, i64 4, !80, i64 8}
!80 = !{!"float", !7, i64 0}
!81 = !{!"_ZTS19aiAnimInterpolation", !7, i64 0}
!82 = !{i64 0, i64 4, !83, i64 4, i64 4, !83, i64 8, i64 4, !83}
!83 = !{!80, !80, i64 0}
!84 = distinct !{!84, !12}
!85 = !{!86, !71, i64 0}
!86 = !{!"_ZTS9aiQuatKey", !71, i64 0, !87, i64 8, !81, i64 24}
!87 = !{!"_ZTS13aiQuaterniontIfE", !80, i64 0, !80, i64 4, !80, i64 8, !80, i64 12}
!88 = !{i64 0, i64 4, !83, i64 4, i64 4, !83, i64 8, i64 4, !83, i64 12, i64 4, !83}
!89 = distinct !{!89, !12}
!90 = distinct !{!90, !12}
!91 = !{!76, !76, i64 0}
!92 = !{i8 0, i8 2}
!93 = !{}
!94 = distinct !{!94, !12}
!95 = distinct !{!95, !12}
!96 = distinct !{!96, !12}
!97 = !{!98, !18, i64 1056}
!98 = !{!"_ZTS10aiNodeAnim", !99, i64 0, !18, i64 1028, !6, i64 1032, !18, i64 1040, !6, i64 1048, !18, i64 1056, !6, i64 1064, !100, i64 1072, !100, i64 1076}
!99 = !{!"_ZTS8aiString", !18, i64 0, !7, i64 4}
!100 = !{!"_ZTS15aiAnimBehaviour", !7, i64 0}
!101 = !{!98, !18, i64 1040}
!102 = !{!98, !18, i64 1028}
!103 = !{!98, !6, i64 1064}
!104 = !{!98, !6, i64 1048}
!105 = !{!98, !6, i64 1032}


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

%"struct.std::_Rb_tree_const_iterator.433" = type { ptr }
%"class.std::unique_ptr.434" = type { %"struct.std::__uniq_ptr_data.435" }
%"struct.std::__uniq_ptr_data.435" = type { %"class.std::__uniq_ptr_impl.436" }
%"class.std::__uniq_ptr_impl.436" = type { %"class.std::tuple.437" }
%"class.std::tuple.437" = type { %"struct.std::_Tuple_impl.438" }
%"struct.std::_Tuple_impl.438" = type { %"struct.std::_Head_base.441" }
%"struct.std::_Head_base.441" = type { ptr }
%"class.std::vector.442" = type { %"struct.std::_Vector_base.443" }
%"struct.std::_Vector_base.443" = type { %"struct.std::_Vector_base<std::tuple<std::shared_ptr<std::vector<long>>, std::shared_ptr<std::vector<float>>, unsigned int>, std::allocator<std::tuple<std::shared_ptr<std::vector<long>>, std::shared_ptr<std::vector<float>>, unsigned int>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::tuple<std::shared_ptr<std::vector<long>>, std::shared_ptr<std::vector<float>>, unsigned int>, std::allocator<std::tuple<std::shared_ptr<std::vector<long>>, std::shared_ptr<std::vector<float>>, unsigned int>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::tuple<std::shared_ptr<std::vector<long>>, std::shared_ptr<std::vector<float>>, unsigned int>, std::allocator<std::tuple<std::shared_ptr<std::vector<long>>, std::shared_ptr<std::vector<float>>, unsigned int>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::tuple<std::shared_ptr<std::vector<long>>, std::shared_ptr<std::vector<float>>, unsigned int>, std::allocator<std::tuple<std::shared_ptr<std::vector<long>>, std::shared_ptr<std::vector<float>>, unsigned int>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.422" = type { %"struct.std::_Vector_base.423" }
%"struct.std::_Vector_base.423" = type { %"struct.std::_Vector_base<long, std::allocator<long>>::_Vector_impl" }
%"struct.std::_Vector_base<long, std::allocator<long>>::_Vector_impl" = type { %"struct.std::_Vector_base<long, std::allocator<long>>::_Vector_impl_data" }
%"struct.std::_Vector_base<long, std::allocator<long>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.447" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.448" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.427" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.462" = type { ptr }
%class.aiVector3t = type { float, float, float }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::allocator.72" = type { i8 }
%class.aiQuaterniont = type { float, float, float, float }
%class.aiMatrix4x4t = type { float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float }
%class.aiMatrix3x3t = type { float, float, float, float, float, float, float, float, float }
%struct.aiVectorKey = type { double, %class.aiVector3t, i32 }
%struct.aiQuatKey = type <{ double, %class.aiQuaterniont, i32, [4 x i8] }>

@.str.18 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [12 x i8], align 1

declare i32 @__gxx_personality_v0(...)

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #3 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #2 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 #2 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) #4

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

; 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 #2 align 2

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { <2 x float>, float } @_ZN6Assimp3FBX11PropertyGetI10aiVector3tIfEEET_RKNS0_13PropertyTableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERbb(ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(1), i1 noundef zeroext) local_unnamed_addr #6

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef ptr @_ZN6Assimp3FBX12FBXConverter22GenerateSimpleNodeAnimERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS0_5ModelEPSt23_Rb_tree_const_iteratorISt4pairIS8_St6vectorIPKNS0_18AnimationCurveNodeESaISI_EEEESM_llRdSO_(ptr noundef nonnull align 8 dereferenceable(489) %0, ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef nonnull align 8 dereferenceable(208) %2, ptr noundef %3, ptr %4, i64 noundef %5, i64 noundef %6, ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(8) %8) local_unnamed_addr #8 align 2 personality ptr @__gxx_personality_v0 {
  %10 = alloca %"struct.std::_Rb_tree_const_iterator.433", align 8
  %11 = alloca %"class.std::unique_ptr.434", align 8
  %12 = alloca [17 x %"class.std::vector.442"], align 16
  %13 = alloca %"class.std::vector.422", align 8
  %14 = alloca %"class.std::vector.442", align 8
  %15 = alloca %"class.std::vector.442", align 8
  %16 = alloca %"class.__gnu_cxx::__normal_iterator.447", align 8
  %17 = alloca %"class.__gnu_cxx::__normal_iterator.448", align 8
  %18 = alloca %"class.__gnu_cxx::__normal_iterator.448", align 8
  %19 = alloca %"class.__gnu_cxx::__normal_iterator.427", align 8
  %20 = alloca %"class.__gnu_cxx::__normal_iterator.462", align 8
  %21 = alloca %"class.__gnu_cxx::__normal_iterator.462", align 8
  %22 = alloca %"class.__gnu_cxx::__normal_iterator.427", align 8
  %23 = alloca %"class.__gnu_cxx::__normal_iterator.427", align 8
  %24 = alloca %"class.__gnu_cxx::__normal_iterator.462", align 8
  %25 = alloca %class.aiVector3t, align 8
  %26 = alloca %"class.std::__cxx11::basic_string", align 8
  %27 = alloca %"class.std::allocator.72", align 1
  %28 = alloca %class.aiVector3t, align 4
  %29 = alloca %class.aiVector3t, align 8
  %30 = alloca %"class.std::__cxx11::basic_string", align 8
  %31 = alloca %"class.std::allocator.72", align 1
  %32 = alloca %class.aiVector3t, align 4
  %33 = alloca %class.aiVector3t, align 8
  %34 = alloca %"class.std::__cxx11::basic_string", align 8
  %35 = alloca %"class.std::allocator.72", align 1
  %36 = alloca %class.aiVector3t, align 4
  %37 = alloca i8, align 1
  %38 = alloca %class.aiVector3t, align 8
  %39 = alloca %"class.std::__cxx11::basic_string", align 8
  %40 = alloca %"class.std::allocator.72", align 1
  %41 = alloca %class.aiQuaterniont, align 8
  %42 = alloca %class.aiVector3t, align 8
  %43 = alloca %"class.std::__cxx11::basic_string", align 8
  %44 = alloca %"class.std::allocator.72", align 1
  %45 = alloca %class.aiQuaterniont, align 8
  %46 = alloca %class.aiMatrix4x4t, align 4
  %47 = alloca %class.aiMatrix4x4t, align 4
  %48 = alloca %class.aiMatrix4x4t, align 4
  %49 = alloca %class.aiMatrix3x3t, align 4
  store ptr %4, ptr %10, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #10
  %50 = tail call noalias noundef nonnull dereferenceable(1080) ptr @_Znwm(i64 noundef 1080) #11
  tail call void @_ZN10aiNodeAnimC2Ev(ptr noundef nonnull align 8 dereferenceable(1080) %50) #10
  call void @_ZNSt10unique_ptrI10aiNodeAnimSt14default_deleteIS0_EEC2IS2_vEEPS0_(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull %50) #10
  %51 = call noundef ptr @_ZNKSt10unique_ptrI10aiNodeAnimSt14default_deleteIS0_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %11) #10
  call void @_ZN8aiString3SetERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 4 dereferenceable(1028) %51, ptr noundef nonnull align 8 dereferenceable(32) %1)
  %52 = invoke noundef nonnull align 8 dereferenceable(120) ptr @_ZNK6Assimp3FBX5Model5PropsEv(ptr noundef nonnull align 8 dereferenceable(208) %2)
          to label %53 unwind label %56

53:                                               ; preds = %9
  call void @llvm.lifetime.start.p0(i64 408, ptr nonnull %12) #10
  call void @_ZNSt6vectorISt5tupleIJSt10shared_ptrIS_IlSaIlEEES1_IS_IfSaIfEEEjEESaIS8_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #10
  %.ptr.1 = getelementptr inbounds i8, ptr %12, i64 24
  call void @_ZNSt6vectorISt5tupleIJSt10shared_ptrIS_IlSaIlEEES1_IS_IfSaIfEEEjEESaIS8_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %.ptr.1) #10
  %.ptr.2 = getelementptr inbounds i8, ptr %12, i64 48
  call void @_ZNSt6vectorISt5tupleIJSt10shared_ptrIS_IlSaIlEEES1_IS_IfSaIfEEEjEESaIS8_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %.ptr.2) #10
  %.ptr.3 = getelementptr inbounds i8, ptr %12, i64 72
  call void @_ZNSt6vectorISt5tupleIJSt10shared_ptrIS_IlSaIlEEES1_IS_IfSaIfEEEjEESaIS8_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %.ptr.3) #10
  %.ptr.4 = getelementptr inbounds i8, ptr %12, i64 96
  call void @_ZNSt6vectorISt5tupleIJSt10shared_ptrIS_IlSaIlEEES1_IS_IfSaIfEEEjEESaIS8_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %.ptr.4) #10
  %.ptr.5 = getelementptr inbounds i8, ptr %12, i64 120
  call void @_ZNSt6vectorISt5tupleIJSt10shared_ptrIS_IlSaIlEEES1_IS_IfSaIfEEEjEESaIS8_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %.ptr.5) #10
  %.ptr.6 = getelementptr inbounds i8, ptr %12, i64 144
  call void @_ZNSt6vectorISt5tupleIJSt10shared_ptrIS_IlSaIlEEES1_IS_IfSaIfEEEjEESaIS8_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %.ptr.6) #10
  %.ptr.7 = getelementptr inbounds i8, ptr %12, i64 168
  call void @_ZNSt6vectorISt5tupleIJSt10shared_ptrIS_IlSaIlEEES1_IS_IfSaIfEEEjEESaIS8_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %.ptr.7) #10
  %.ptr.8 = getelementptr inbounds i8, ptr %12, i64 192
  call void @_ZNSt6vectorISt5tupleIJSt10shared_ptrIS_IlSaIlEEES1_IS_IfSaIfEEEjEESaIS8_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %.ptr.8) #10
  %.ptr.9 = getelementptr inbounds i8, ptr %12, i64 216
  call void @_ZNSt6vectorISt5tupleIJSt10shared_ptrIS_IlSaIlEEES1_IS_IfSaIfEEEjEESaIS8_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %.ptr.9) #10
  %.ptr.10 = getelementptr inbounds i8, ptr %12, i64 240
  call void @_ZNSt6vectorISt5tupleIJSt10shared_ptrIS_IlSaIlEEES1_IS_IfSaIfEEEjEESaIS8_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %.ptr.10) #10
  %.ptr.11 = getelementptr inbounds i8, ptr %12, i64 264
  call void @_ZNSt6vectorISt5tupleIJSt10shared_ptrIS_IlSaIlEEES1_IS_IfSaIfEEEjEESaIS8_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %.ptr.11) #10
  %.ptr.12 = getelementptr inbounds i8, ptr %12, i64 288
  call void @_ZNSt6vectorISt5tupleIJSt10shared_ptrIS_IlSaIlEEES1_IS_IfSaIfEEEjEESaIS8_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %.ptr.12) #10
  %.ptr.13 = getelementptr inbounds i8, ptr %12, i64 312
  call void @_ZNSt6vectorISt5tupleIJSt10shared_ptrIS_IlSaIlEEES1_IS_IfSaIfEEEjEESaIS8_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %.ptr.13) #10
  %.ptr.14 = getelementptr inbounds i8, ptr %12, i64 336
  call void @_ZNSt6vectorISt5tupleIJSt10shared_ptrIS_IlSaIlEEES1_IS_IfSaIfEEEjEESaIS8_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %.ptr.14) #10
  %.ptr.15 = getelementptr inbounds i8, ptr %12, i64 360
  call void @_ZNSt6vectorISt5tupleIJSt10shared_ptrIS_IlSaIlEEES1_IS_IfSaIfEEEjEESaIS8_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %.ptr.15) #10
  %.ptr.16 = getelementptr inbounds i8, ptr %12, i64 384
  call void @_ZNSt6vectorISt5tupleIJSt10shared_ptrIS_IlSaIlEEES1_IS_IfSaIfEEEjEESaIS8_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %.ptr.16) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %13) #10
  call void @_ZNSt6vectorIlSaIlEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #10
  br label %58

54:                                               ; preds = %110
  %55 = invoke noundef i32 @_ZNK6Assimp3FBX5Model13RotationOrderEv(ptr noundef nonnull align 8 dereferenceable(208) %2)
          to label %119 unwind label %166

56:                                               ; preds = %9
  %57 = landingpad { ptr, i32 }
          cleanup
  br label %370

58:                                               ; preds = %53, %110
  %.0165220 = phi i64 [ 0, %53 ], [ %111, %110 ]
  %59 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator.433", ptr %3, i64 %.0165220
  %60 = call noundef zeroext i1 @_ZSteqRKSt23_Rb_tree_const_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIPKN6Assimp3FBX18AnimationCurveNodeESaISD_EEEESJ_(ptr noundef nonnull align 8 dereferenceable(8) %59, ptr noundef nonnull align 8 dereferenceable(8) %10) #10
  br i1 %60, label %110, label %61

61:                                               ; preds = %58
  %62 = and i64 %.0165220, 30
  %or.cond = icmp eq i64 %62, 6
  br i1 %or.cond, label %63, label %switch.early.test

switch.early.test:                                ; preds = %61
  switch i64 %.0165220, label %71 [
    i64 15, label %63
    i64 8, label %63
  ]

63:                                               ; preds = %switch.early.test, %switch.early.test, %61
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %14) #10
  %64 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIPKN6Assimp3FBX18AnimationCurveNodeESaISD_EEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %59) #10
  %65 = getelementptr inbounds i8, ptr %64, i64 32
  invoke void @_ZN6Assimp3FBX12FBXConverter23GetRotationKeyframeListERKSt6vectorIPKNS0_18AnimationCurveNodeESaIS5_EEll(ptr dead_on_unwind nonnull writable sret(%"class.std::vector.442") align 8 %14, ptr noundef nonnull align 8 dereferenceable(489) %0, ptr noundef nonnull align 8 dereferenceable(24) %65, i64 noundef %5, i64 noundef %6)
          to label %66 unwind label %69

66:                                               ; preds = %63
  %67 = getelementptr inbounds [17 x %"class.std::vector.442"], ptr %12, i64 0, i64 %.0165220
  %68 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorISt5tupleIJSt10shared_ptrIS_IlSaIlEEES1_IS_IfSaIfEEEjEESaIS8_EEaSEOSA_(ptr noundef nonnull align 8 dereferenceable(24) %67, ptr noundef nonnull align 8 dereferenceable(24) %14) #10
  call void @_ZNSt6vectorISt5tupleIJSt10shared_ptrIS_IlSaIlEEES1_IS_IfSaIfEEEjEESaIS8_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %14) #10
  br label %79

69:                                               ; preds = %63
  %70 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %14) #10
  br label %353

71:                                               ; preds = %switch.early.test
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %15) #10
  %72 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIPKN6Assimp3FBX18AnimationCurveNodeESaISD_EEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %59) #10
  %73 = getelementptr inbounds i8, ptr %72, i64 32
  invoke void @_ZN6Assimp3FBX12FBXConverter15GetKeyframeListERKSt6vectorIPKNS0_18AnimationCurveNodeESaIS5_EEll(ptr dead_on_unwind nonnull writable sret(%"class.std::vector.442") align 8 %15, ptr noundef nonnull align 8 dereferenceable(489) %0, ptr noundef nonnull align 8 dereferenceable(24) %73, i64 noundef %5, i64 noundef %6)
          to label %74 unwind label %77

74:                                               ; preds = %71
  %75 = getelementptr inbounds [17 x %"class.std::vector.442"], ptr %12, i64 0, i64 %.0165220
  %76 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorISt5tupleIJSt10shared_ptrIS_IlSaIlEEES1_IS_IfSaIfEEEjEESaIS8_EEaSEOSA_(ptr noundef nonnull align 8 dereferenceable(24) %75, ptr noundef nonnull align 8 dereferenceable(24) %15) #10
  call void @_ZNSt6vectorISt5tupleIJSt10shared_ptrIS_IlSaIlEEES1_IS_IfSaIfEEEjEESaIS8_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15) #10
  br label %79

77:                                               ; preds = %71
  %78 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15) #10
  br label %353

79:                                               ; preds = %74, %66
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #10
  %80 = getelementptr inbounds [17 x %"class.std::vector.442"], ptr %12, i64 0, i64 %.0165220
  %81 = call ptr @_ZNSt6vectorISt5tupleIJSt10shared_ptrIS_IlSaIlEEES1_IS_IfSaIfEEEjEESaIS8_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %80) #10
  store ptr %81, ptr %17, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKSt5tupleIJSt10shared_ptrISt6vectorIlSaIlEEES2_IS3_IfSaIfEEEjEES3_ISA_SaISA_EEEC2IPSA_vEERKNS0_IT_SE_EE(ptr noundef nonnull align 8 dereferenceable(8) %16, ptr noundef nonnull align 8 dereferenceable(8) %17) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #10
  %82 = call ptr @_ZNSt6vectorISt5tupleIJSt10shared_ptrIS_IlSaIlEEES1_IS_IfSaIfEEEjEESaIS8_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %80) #10
  store ptr %82, ptr %18, align 8
  %83 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt5tupleIJSt10shared_ptrISt6vectorIlSaIlEEES2_IS3_IfSaIfEEEjEEPSA_S3_ISA_SaISA_EEEEbRKNS_17__normal_iteratorIT_T1_EERKNSG_IT0_SI_EE(ptr noundef nonnull align 8 dereferenceable(8) %16, ptr noundef nonnull align 8 dereferenceable(8) %18) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #10
  br i1 %83, label %.lr.ph, label %._crit_edge

._crit_edge:                                      ; preds = %94, %79
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #10
  %84 = call ptr @_ZNSt6vectorIlSaIlEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %13) #10
  %85 = call ptr @_ZNSt6vectorIlSaIlEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %13) #10
  invoke void @_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPlSt6vectorIlSaIlEEEEEvT_S7_(ptr %84, ptr %85)
          to label %100 unwind label %112

.lr.ph:                                           ; preds = %79, %94
  %86 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKSt5tupleIJSt10shared_ptrISt6vectorIlSaIlEEES2_IS3_IfSaIfEEEjEES3_ISA_SaISA_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %16) #10
  %87 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZSt3getILm0EJSt10shared_ptrISt6vectorIlSaIlEEES0_IS1_IfSaIfEEEjEERKNSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeERKSC_(ptr noundef nonnull align 8 dereferenceable(40) %86) #10
  %88 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt19__shared_ptr_accessISt6vectorIlSaIlEELN9__gnu_cxx12_Lock_policyE2ELb0ELb0EEdeEv(ptr noundef nonnull align 1 dereferenceable(1) %87) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #10
  %89 = call ptr @_ZNSt6vectorIlSaIlEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %13) #10
  store ptr %89, ptr %20, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKlSt6vectorIlSaIlEEEC2IPlvEERKNS0_IT_S5_EE(ptr noundef nonnull align 8 dereferenceable(8) %19, ptr noundef nonnull align 8 dereferenceable(8) %20) #10
  %90 = call ptr @_ZNKSt6vectorIlSaIlEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %88) #10
  %91 = call ptr @_ZNKSt6vectorIlSaIlEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %88) #10
  %92 = load ptr, ptr %19, align 8
  %93 = invoke ptr @_ZNSt6vectorIlSaIlEE6insertIN9__gnu_cxx17__normal_iteratorIPKlS1_EEvEENS4_IPlS1_EES7_T_SA_(ptr noundef nonnull align 8 dereferenceable(24) %13, ptr %92, ptr %90, ptr %91)
          to label %94 unwind label %98

94:                                               ; preds = %.lr.ph
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #10
  %95 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKSt5tupleIJSt10shared_ptrISt6vectorIlSaIlEEES2_IS3_IfSaIfEEEjEES3_ISA_SaISA_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %16) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #10
  %96 = call ptr @_ZNSt6vectorISt5tupleIJSt10shared_ptrIS_IlSaIlEEES1_IS_IfSaIfEEEjEESaIS8_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %80) #10
  store ptr %96, ptr %18, align 8
  %97 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt5tupleIJSt10shared_ptrISt6vectorIlSaIlEEES2_IS3_IfSaIfEEEjEEPSA_S3_ISA_SaISA_EEEEbRKNS_17__normal_iteratorIT_T1_EERKNSG_IT0_SI_EE(ptr noundef nonnull align 8 dereferenceable(8) %16, ptr noundef nonnull align 8 dereferenceable(8) %18) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #10
  br i1 %97, label %.lr.ph, label %._crit_edge, !llvm.loop !5

98:                                               ; preds = %.lr.ph
  %99 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #10
  br label %353

100:                                              ; preds = %._crit_edge
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #10
  %101 = call ptr @_ZNSt6vectorIlSaIlEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %13) #10
  %102 = call ptr @_ZNSt6vectorIlSaIlEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %13) #10
  %103 = invoke ptr @_ZSt6uniqueIN9__gnu_cxx17__normal_iteratorIPlSt6vectorIlSaIlEEEEET_S7_S7_(ptr %101, ptr %102)
          to label %104 unwind label %114

104:                                              ; preds = %100
  store ptr %103, ptr %21, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKlSt6vectorIlSaIlEEEC2IPlvEERKNS0_IT_S5_EE(ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 8 dereferenceable(8) %21) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #10
  %105 = call ptr @_ZNSt6vectorIlSaIlEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %13) #10
  store ptr %105, ptr %24, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKlSt6vectorIlSaIlEEEC2IPlvEERKNS0_IT_S5_EE(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 8 dereferenceable(8) %24) #10
  %106 = load ptr, ptr %22, align 8
  %107 = load ptr, ptr %23, align 8
  %108 = invoke ptr @_ZNSt6vectorIlSaIlEE5eraseEN9__gnu_cxx17__normal_iteratorIPKlS1_EES6_(ptr noundef nonnull align 8 dereferenceable(24) %13, ptr %106, ptr %107)
          to label %109 unwind label %116

109:                                              ; preds = %104
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #10
  br label %110

110:                                              ; preds = %58, %109
  %111 = add nuw nsw i64 %.0165220, 1
  %exitcond.not = icmp eq i64 %111, 17
  br i1 %exitcond.not, label %54, label %58, !llvm.loop !7

112:                                              ; preds = %._crit_edge
  %113 = landingpad { ptr, i32 }
          cleanup
  br label %353

114:                                              ; preds = %100
  %115 = landingpad { ptr, i32 }
          cleanup
  br label %118

116:                                              ; preds = %104
  %117 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #10
  br label %118

118:                                              ; preds = %116, %114
  %.pn208 = phi { ptr, i32 } [ %117, %116 ], [ %115, %114 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #10
  br label %353

119:                                              ; preds = %54
  %120 = call noundef i64 @_ZNKSt6vectorIlSaIlEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %13) #10
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %25) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %26) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %27) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %26, ptr noundef nonnull @.str.32, ptr noundef nonnull align 1 dereferenceable(1) %27)
          to label %121 unwind label %168

121:                                              ; preds = %119
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %28) #10
  call void @_ZN10aiVector3tIfEC2Efff(ptr noundef nonnull align 4 dereferenceable(12) %28, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %122 = invoke { <2 x float>, float } @_ZN6Assimp3FBX11PropertyGetI10aiVector3tIfEEET_RKNS0_13PropertyTableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS4_(ptr noundef nonnull align 8 dereferenceable(120) %52, ptr noundef nonnull align 8 dereferenceable(32) %26, ptr noundef nonnull align 4 dereferenceable(12) %28)
          to label %123 unwind label %170

123:                                              ; preds = %121
  %.fca.0.extract78 = extractvalue { <2 x float>, float } %122, 0
  %.fca.1.extract79 = extractvalue { <2 x float>, float } %122, 1
  store <2 x float> %.fca.0.extract78, ptr %25, align 8
  %.sroa.281.0..sroa_idx = getelementptr inbounds i8, ptr %25, i64 8
  store float %.fca.1.extract79, ptr %.sroa.281.0..sroa_idx, align 8
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %28) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %27) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %26) #10
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %29) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %30) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %31) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %30, ptr noundef nonnull @.str.33, ptr noundef nonnull align 1 dereferenceable(1) %31)
          to label %124 unwind label %173

124:                                              ; preds = %123
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %32) #10
  call void @_ZN10aiVector3tIfEC2Efff(ptr noundef nonnull align 4 dereferenceable(12) %32, float noundef 0.000000e+00, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %125 = invoke { <2 x float>, float } @_ZN6Assimp3FBX11PropertyGetI10aiVector3tIfEEET_RKNS0_13PropertyTableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS4_(ptr noundef nonnull align 8 dereferenceable(120) %52, ptr noundef nonnull align 8 dereferenceable(32) %30, ptr noundef nonnull align 4 dereferenceable(12) %32)
          to label %126 unwind label %175

126:                                              ; preds = %124
  %.fca.0.extract74 = extractvalue { <2 x float>, float } %125, 0
  %.fca.1.extract75 = extractvalue { <2 x float>, float } %125, 1
  store <2 x float> %.fca.0.extract74, ptr %29, align 8
  %.sroa.277.0..sroa_idx = getelementptr inbounds i8, ptr %29, i64 8
  store float %.fca.1.extract75, ptr %.sroa.277.0..sroa_idx, align 8
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %32) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %31) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %30) #10
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %33) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %34) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %35) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %34, ptr noundef nonnull @.str.34, ptr noundef nonnull align 1 dereferenceable(1) %35)
          to label %127 unwind label %178

127:                                              ; preds = %126
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %36) #10
  call void @_ZN10aiVector3tIfEC2Efff(ptr noundef nonnull align 4 dereferenceable(12) %36, float noundef 1.000000e+00, float noundef 1.000000e+00, float noundef 1.000000e+00)
  %128 = invoke { <2 x float>, float } @_ZN6Assimp3FBX11PropertyGetI10aiVector3tIfEEET_RKNS0_13PropertyTableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKS4_(ptr noundef nonnull align 8 dereferenceable(120) %52, ptr noundef nonnull align 8 dereferenceable(32) %34, ptr noundef nonnull align 4 dereferenceable(12) %36)
          to label %129 unwind label %180

129:                                              ; preds = %127
  %.fca.0.extract70 = extractvalue { <2 x float>, float } %128, 0
  %.fca.1.extract71 = extractvalue { <2 x float>, float } %128, 1
  store <2 x float> %.fca.0.extract70, ptr %33, align 8
  %.sroa.273.0..sroa_idx = getelementptr inbounds i8, ptr %33, i64 8
  store float %.fca.1.extract71, ptr %.sroa.273.0..sroa_idx, align 8
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %36) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %35) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %34) #10
  %130 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %120, i64 24)
  %131 = extractvalue { i64, i1 } %130, 1
  %132 = extractvalue { i64, i1 } %130, 0
  %133 = select i1 %131, i64 -1, i64 %132
  %134 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %133) #11
          to label %135 unwind label %183

135:                                              ; preds = %129
  %136 = icmp eq i64 %120, 0
  br i1 %136, label %.loopexit219, label %137

137:                                              ; preds = %135
  %138 = getelementptr inbounds %struct.aiVectorKey, ptr %134, i64 %120
  br label %139

139:                                              ; preds = %139, %137
  %140 = phi ptr [ %134, %137 ], [ %141, %139 ]
  call void @_ZN11aiVectorKeyC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %140) #10
  %141 = getelementptr inbounds i8, ptr %140, i64 24
  %142 = icmp eq ptr %141, %138
  br i1 %142, label %.loopexit219, label %139

.loopexit219:                                     ; preds = %139, %135
  %143 = icmp ugt i64 %120, 576460752303423487
  %144 = shl nuw i64 %120, 5
  %145 = select i1 %143, i64 -1, i64 %144
  %146 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %145) #11
          to label %147 unwind label %185

147:                                              ; preds = %.loopexit219
  br i1 %136, label %.loopexit218, label %148

148:                                              ; preds = %147
  %149 = getelementptr inbounds %struct.aiQuatKey, ptr %146, i64 %120
  br label %150

150:                                              ; preds = %150, %148
  %151 = phi ptr [ %146, %148 ], [ %152, %150 ]
  call void @_ZN9aiQuatKeyC2Ev(ptr noundef nonnull align 8 dereferenceable(28) %151) #10
  %152 = getelementptr inbounds i8, ptr %151, i64 32
  %153 = icmp eq ptr %152, %149
  br i1 %153, label %.loopexit218, label %150

.loopexit218:                                     ; preds = %150, %147
  %154 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %133) #11
          to label %155 unwind label %187

155:                                              ; preds = %.loopexit218
  br i1 %136, label %.loopexit217.thread, label %156

156:                                              ; preds = %155
  %157 = getelementptr inbounds %struct.aiVectorKey, ptr %154, i64 %120
  br label %158

158:                                              ; preds = %158, %156
  %159 = phi ptr [ %154, %156 ], [ %160, %158 ]
  call void @_ZN11aiVectorKeyC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %159) #10
  %160 = getelementptr inbounds i8, ptr %159, i64 24
  %161 = icmp eq ptr %160, %157
  br i1 %161, label %.loopexit217, label %158

.loopexit217:                                     ; preds = %158
  %162 = call noundef i64 @_ZNKSt6vectorISt5tupleIJSt10shared_ptrIS_IlSaIlEEES1_IS_IfSaIfEEEjEESaIS8_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %.ptr.3) #10
  %.not = icmp eq i64 %162, 0
  br i1 %.not, label %.preheader215, label %165

.loopexit217.thread:                              ; preds = %155
  %163 = call noundef i64 @_ZNKSt6vectorISt5tupleIJSt10shared_ptrIS_IlSaIlEEES1_IS_IfSaIfEEEjEESaIS8_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %.ptr.3) #10
  %.not253 = icmp eq i64 %163, 0
  br i1 %.not253, label %.loopexit216, label %165

.preheader215:                                    ; preds = %.loopexit217
  br i1 %136, label %.loopexit216, label %.lr.ph223

.lr.ph223:                                        ; preds = %.preheader215
  %164 = getelementptr inbounds i8, ptr %0, i64 440
  br label %189

165:                                              ; preds = %.loopexit217.thread, %.loopexit217
  invoke void @_ZN6Assimp3FBX12FBXConverter15InterpolateKeysEP11aiVectorKeyRKSt6vectorIlSaIlEERKS4_ISt5tupleIJSt10shared_ptrIS6_ESA_IS4_IfSaIfEEEjEESaISF_EERK10aiVector3tIfERdSO_(ptr noundef nonnull align 8 dereferenceable(489) %0, ptr noundef nonnull %134, ptr noundef nonnull align 8 dereferenceable(24) %13, ptr noundef nonnull align 8 dereferenceable(24) %.ptr.3, ptr noundef nonnull align 4 dereferenceable(12) %25, ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(8) %8)
          to label %.loopexit216 unwind label %187

166:                                              ; preds = %54
  %167 = landingpad { ptr, i32 }
          cleanup
  br label %353

168:                                              ; preds = %119
  %169 = landingpad { ptr, i32 }
          cleanup
  br label %172

170:                                              ; preds = %121
  %171 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %28) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #10
  br label %172

172:                                              ; preds = %170, %168
  %.pn = phi { ptr, i32 } [ %171, %170 ], [ %169, %168 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %27) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %27) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %26) #10
  br label %352

173:                                              ; preds = %123
  %174 = landingpad { ptr, i32 }
          cleanup
  br label %177

175:                                              ; preds = %124
  %176 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %32) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #10
  br label %177

177:                                              ; preds = %175, %173
  %.pn181 = phi { ptr, i32 } [ %176, %175 ], [ %174, %173 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %31) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %30) #10
  br label %351

178:                                              ; preds = %126
  %179 = landingpad { ptr, i32 }
          cleanup
  br label %182

180:                                              ; preds = %127
  %181 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %36) #10
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #10
  br label %182

182:                                              ; preds = %180, %178
  %.pn183 = phi { ptr, i32 } [ %181, %180 ], [ %179, %178 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %35) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %35) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %34) #10
  br label %350

183:                                              ; preds = %129
  %184 = landingpad { ptr, i32 }
          cleanup
  br label %350

185:                                              ; preds = %.loopexit219
  %186 = landingpad { ptr, i32 }
          cleanup
  br label %350

187:                                              ; preds = %222, %200, %165, %.loopexit218
  %188 = landingpad { ptr, i32 }
          cleanup
  br label %350

189:                                              ; preds = %.lr.ph223, %189
  %.0167222 = phi i64 [ 0, %.lr.ph223 ], [ %198, %189 ]
  %190 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIlSaIlEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef %.0167222) #10
  %191 = load i64, ptr %190, align 8, !tbaa !8
  %192 = sitofp i64 %191 to double
  %193 = fdiv double %192, 0x422581D1AF600000
  %194 = load double, ptr %164, align 8, !tbaa !12
  %195 = fmul double %194, %193
  %196 = getelementptr inbounds %struct.aiVectorKey, ptr %134, i64 %.0167222
  store double %195, ptr %196, align 8, !tbaa !74
  %197 = getelementptr inbounds i8, ptr %196, i64 8
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(12) %197, ptr noundef nonnull align 8 dereferenceable(12) %25, i64 12, i1 false), !tbaa.struct !79
  %198 = add nuw i64 %.0167222, 1
  %exitcond247.not = icmp eq i64 %198, %120
  br i1 %exitcond247.not, label %.loopexit216, label %189, !llvm.loop !81

.loopexit216:                                     ; preds = %189, %.loopexit217.thread, %.preheader215, %165
  %199 = call noundef i64 @_ZNKSt6vectorISt5tupleIJSt10shared_ptrIS_IlSaIlEEES1_IS_IfSaIfEEEjEESaIS8_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %.ptr.7) #10
  %.not185 = icmp eq i64 %199, 0
  br i1 %.not185, label %201, label %200

200:                                              ; preds = %.loopexit216
  invoke void @_ZN6Assimp3FBX12FBXConverter15InterpolateKeysEP9aiQuatKeyRKSt6vectorIlSaIlEERKS4_ISt5tupleIJSt10shared_ptrIS6_ESA_IS4_IfSaIfEEEjEESaISF_EERK10aiVector3tIfERdSO_NS0_5Model8RotOrderE(ptr noundef nonnull align 8 dereferenceable(489) %0, ptr noundef nonnull %146, ptr noundef nonnull align 8 dereferenceable(24) %13, ptr noundef nonnull align 8 dereferenceable(24) %.ptr.7, ptr noundef nonnull align 4 dereferenceable(12) %29, ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(8) %8, i32 noundef %55)
          to label %.loopexit214 unwind label %187

201:                                              ; preds = %.loopexit216
  %202 = invoke { <2 x float>, <2 x float> } @_ZN6Assimp3FBX12FBXConverter17EulerToQuaternionERK10aiVector3tIfENS0_5Model8RotOrderE(ptr noundef nonnull align 8 dereferenceable(489) %0, ptr noundef nonnull align 4 dereferenceable(12) %29, i32 noundef %55)
          to label %203 unwind label %207

203:                                              ; preds = %201
  %204 = extractvalue { <2 x float>, <2 x float> } %202, 0
  %205 = extractvalue { <2 x float>, <2 x float> } %202, 1
  br i1 %136, label %.loopexit214.thread, label %.lr.ph226

.lr.ph226:                                        ; preds = %203
  %206 = getelementptr inbounds i8, ptr %0, i64 440
  br label %209

207:                                              ; preds = %201
  %208 = landingpad { ptr, i32 }
          cleanup
  br label %350

209:                                              ; preds = %.lr.ph226, %209
  %.0169224 = phi i64 [ 0, %.lr.ph226 ], [ %218, %209 ]
  %210 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIlSaIlEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef %.0169224) #10
  %211 = load i64, ptr %210, align 8, !tbaa !8
  %212 = sitofp i64 %211 to double
  %213 = fdiv double %212, 0x422581D1AF600000
  %214 = load double, ptr %206, align 8, !tbaa !12
  %215 = fmul double %214, %213
  %216 = getelementptr inbounds %struct.aiQuatKey, ptr %146, i64 %.0169224
  store double %215, ptr %216, align 8, !tbaa !82
  %217 = getelementptr inbounds i8, ptr %216, i64 8
  store <2 x float> %204, ptr %217, align 8
  %.sroa.545.0..sroa_idx = getelementptr inbounds i8, ptr %216, i64 16
  store <2 x float> %205, ptr %.sroa.545.0..sroa_idx, align 8
  %218 = add nuw i64 %.0169224, 1
  %exitcond248.not = icmp eq i64 %218, %120
  br i1 %exitcond248.not, label %.loopexit214, label %209, !llvm.loop !85

.loopexit214:                                     ; preds = %209, %200
  %219 = call noundef i64 @_ZNKSt6vectorISt5tupleIJSt10shared_ptrIS_IlSaIlEEES1_IS_IfSaIfEEEjEESaIS8_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %.ptr.12) #10
  %.not186 = icmp eq i64 %219, 0
  br i1 %.not186, label %.preheader, label %222

.loopexit214.thread:                              ; preds = %203
  %220 = call noundef i64 @_ZNKSt6vectorISt5tupleIJSt10shared_ptrIS_IlSaIlEEES1_IS_IfSaIfEEEjEESaIS8_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %.ptr.12) #10
  %.not186254 = icmp eq i64 %220, 0
  br i1 %.not186254, label %.loopexit, label %222

.preheader:                                       ; preds = %.loopexit214
  br i1 %136, label %.loopexit, label %.lr.ph228

.lr.ph228:                                        ; preds = %.preheader
  %221 = getelementptr inbounds i8, ptr %0, i64 440
  br label %223

222:                                              ; preds = %.loopexit214.thread, %.loopexit214
  invoke void @_ZN6Assimp3FBX12FBXConverter15InterpolateKeysEP11aiVectorKeyRKSt6vectorIlSaIlEERKS4_ISt5tupleIJSt10shared_ptrIS6_ESA_IS4_IfSaIfEEEjEESaISF_EERK10aiVector3tIfERdSO_(ptr noundef nonnull align 8 dereferenceable(489) %0, ptr noundef nonnull %154, ptr noundef nonnull align 8 dereferenceable(24) %13, ptr noundef nonnull align 8 dereferenceable(24) %.ptr.12, ptr noundef nonnull align 4 dereferenceable(12) %33, ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(8) %8)
          to label %.loopexit unwind label %187

223:                                              ; preds = %.lr.ph228, %223
  %.0170227 = phi i64 [ 0, %.lr.ph228 ], [ %232, %223 ]
  %224 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIlSaIlEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef %.0170227) #10
  %225 = load i64, ptr %224, align 8, !tbaa !8
  %226 = sitofp i64 %225 to double
  %227 = fdiv double %226, 0x422581D1AF600000
  %228 = load double, ptr %221, align 8, !tbaa !12
  %229 = fmul double %228, %227
  %230 = getelementptr inbounds %struct.aiVectorKey, ptr %154, i64 %.0170227
  store double %229, ptr %230, align 8, !tbaa !74
  %231 = getelementptr inbounds i8, ptr %230, i64 8
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(12) %231, ptr noundef nonnull align 8 dereferenceable(12) %33, i64 12, i1 false), !tbaa.struct !79
  %232 = add nuw i64 %.0170227, 1
  %exitcond249.not = icmp eq i64 %232, %120
  br i1 %exitcond249.not, label %.loopexit, label %223, !llvm.loop !86

.loopexit:                                        ; preds = %223, %.loopexit214.thread, %.preheader, %222
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %37) #10
  store i8 0, ptr %37, align 1, !tbaa !87
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %38) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %39) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %40) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %39, ptr noundef nonnull @.str.18, ptr noundef nonnull align 1 dereferenceable(1) %40)
          to label %233 unwind label %247

233:                                              ; preds = %.loopexit
  %234 = invoke { <2 x float>, float } @_ZN6Assimp3FBX11PropertyGetI10aiVector3tIfEEET_RKNS0_13PropertyTableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERbb(ptr noundef nonnull align 8 dereferenceable(120) %52, ptr noundef nonnull align 8 dereferenceable(32) %39, ptr noundef nonnull align 1 dereferenceable(1) %37, i1 noundef zeroext false)
          to label %235 unwind label %249

235:                                              ; preds = %233
  %.fca.0.extract28 = extractvalue { <2 x float>, float } %234, 0
  %.fca.1.extract29 = extractvalue { <2 x float>, float } %234, 1
  store <2 x float> %.fca.0.extract28, ptr %38, align 8
  %.sroa.231.0..sroa_idx = getelementptr inbounds i8, ptr %38, i64 8
  store float %.fca.1.extract29, ptr %.sroa.231.0..sroa_idx, align 8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %40) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %39) #10
  %236 = load i8, ptr %37, align 1, !tbaa !87, !range !88, !noundef !89
  %237 = trunc nuw i8 %236 to i1
  br i1 %237, label %238, label %263

238:                                              ; preds = %235
  %239 = call noundef float @_ZNK10aiVector3tIfE12SquareLengthEv(ptr noundef nonnull align 4 dereferenceable(12) %38)
  %240 = fcmp ogt float %239, 0x3EB0C6F7A0000000
  br i1 %240, label %241, label %263

241:                                              ; preds = %238
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %41) #10
  %242 = invoke { <2 x float>, <2 x float> } @_ZN6Assimp3FBX12FBXConverter17EulerToQuaternionERK10aiVector3tIfENS0_5Model8RotOrderE(ptr noundef nonnull align 8 dereferenceable(489) %0, ptr noundef nonnull align 4 dereferenceable(12) %38, i32 noundef 0)
          to label %243 unwind label %252

243:                                              ; preds = %241
  %244 = extractvalue { <2 x float>, <2 x float> } %242, 0
  store <2 x float> %244, ptr %41, align 8
  %245 = getelementptr inbounds i8, ptr %41, i64 8
  %246 = extractvalue { <2 x float>, <2 x float> } %242, 1
  store <2 x float> %246, ptr %245, align 8
  br i1 %136, label %._crit_edge232, label %.lr.ph231

._crit_edge232:                                   ; preds = %256, %243
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %41) #10
  br label %263

247:                                              ; preds = %.loopexit
  %248 = landingpad { ptr, i32 }
          cleanup
  br label %251

249:                                              ; preds = %233
  %250 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #10
  br label %251

251:                                              ; preds = %249, %247
  %.pn187 = phi { ptr, i32 } [ %250, %249 ], [ %248, %247 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %40) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %39) #10
  br label %349

252:                                              ; preds = %241
  %253 = landingpad { ptr, i32 }
          cleanup
  br label %262

.lr.ph231:                                        ; preds = %243, %256
  %.0171229 = phi i64 [ %259, %256 ], [ 0, %243 ]
  %254 = getelementptr inbounds %struct.aiQuatKey, ptr %146, i64 %.0171229, i32 1
  %255 = invoke { <2 x float>, <2 x float> } @_ZNK13aiQuaterniontIfEmlERKS0_(ptr noundef nonnull align 4 dereferenceable(16) %41, ptr noundef nonnull align 4 dereferenceable(16) %254)
          to label %256 unwind label %260

256:                                              ; preds = %.lr.ph231
  %257 = extractvalue { <2 x float>, <2 x float> } %255, 0
  %258 = extractvalue { <2 x float>, <2 x float> } %255, 1
  store <2 x float> %257, ptr %254, align 8
  %.sroa.523.0..sroa_idx = getelementptr inbounds i8, ptr %254, i64 8
  store <2 x float> %258, ptr %.sroa.523.0..sroa_idx, align 8
  %259 = add nuw i64 %.0171229, 1
  %exitcond250.not = icmp eq i64 %259, %120
  br i1 %exitcond250.not, label %._crit_edge232, label %.lr.ph231, !llvm.loop !90

260:                                              ; preds = %.lr.ph231
  %261 = landingpad { ptr, i32 }
          cleanup
  br label %262

262:                                              ; preds = %260, %252
  %.pn197 = phi { ptr, i32 } [ %261, %260 ], [ %253, %252 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %41) #10
  br label %348

263:                                              ; preds = %._crit_edge232, %238, %235
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %42) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %43) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %44) #10
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #10
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %43, ptr noundef nonnull @.str.20, ptr noundef nonnull align 1 dereferenceable(1) %44)
          to label %264 unwind label %278

264:                                              ; preds = %263
  %265 = invoke { <2 x float>, float } @_ZN6Assimp3FBX11PropertyGetI10aiVector3tIfEEET_RKNS0_13PropertyTableERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERbb(ptr noundef nonnull align 8 dereferenceable(120) %52, ptr noundef nonnull align 8 dereferenceable(32) %43, ptr noundef nonnull align 1 dereferenceable(1) %37, i1 noundef zeroext false)
          to label %266 unwind label %280

266:                                              ; preds = %264
  %.fca.0.extract = extractvalue { <2 x float>, float } %265, 0
  %.fca.1.extract = extractvalue { <2 x float>, float } %265, 1
  store <2 x float> %.fca.0.extract, ptr %42, align 8
  %.sroa.2.0..sroa_idx = getelementptr inbounds i8, ptr %42, i64 8
  store float %.fca.1.extract, ptr %.sroa.2.0..sroa_idx, align 8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #10
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %44) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %43) #10
  %267 = load i8, ptr %37, align 1, !tbaa !87, !range !88, !noundef !89
  %268 = trunc nuw i8 %267 to i1
  br i1 %268, label %269, label %294

269:                                              ; preds = %266
  %270 = call noundef float @_ZNK10aiVector3tIfE12SquareLengthEv(ptr noundef nonnull align 4 dereferenceable(12) %42)
  %271 = fcmp ogt float %270, 0x3EB0C6F7A0000000
  br i1 %271, label %272, label %294

272:                                              ; preds = %269
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %45) #10
  %273 = invoke { <2 x float>, <2 x float> } @_ZN6Assimp3FBX12FBXConverter17EulerToQuaternionERK10aiVector3tIfENS0_5Model8RotOrderE(ptr noundef nonnull align 8 dereferenceable(489) %0, ptr noundef nonnull align 4 dereferenceable(12) %42, i32 noundef 0)
          to label %274 unwind label %283

274:                                              ; preds = %272
  %275 = extractvalue { <2 x float>, <2 x float> } %273, 0
  store <2 x float> %275, ptr %45, align 8
  %276 = getelementptr inbounds i8, ptr %45, i64 8
  %277 = extractvalue { <2 x float>, <2 x float> } %273, 1
  store <2 x float> %277, ptr %276, align 8
  br i1 %136, label %._crit_edge236, label %.lr.ph235

._crit_edge236:                                   ; preds = %287, %274
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %45) #10
  br label %294

278:                                              ; preds = %263
  %279 = landingpad { ptr, i32 }
          cleanup
  br label %282

280:                                              ; preds = %264
  %281 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #10
  br label %282

282:                                              ; preds = %280, %278
  %.pn189 = phi { ptr, i32 } [ %281, %280 ], [ %279, %278 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %44) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %44) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %43) #10
  br label %348

283:                                              ; preds = %272
  %284 = landingpad { ptr, i32 }
          cleanup
  br label %293

.lr.ph235:                                        ; preds = %274, %287
  %.0168233 = phi i64 [ %290, %287 ], [ 0, %274 ]
  %285 = getelementptr inbounds %struct.aiQuatKey, ptr %146, i64 %.0168233, i32 1
  %286 = invoke { <2 x float>, <2 x float> } @_ZNK13aiQuaterniontIfEmlERKS0_(ptr noundef nonnull align 4 dereferenceable(16) %285, ptr noundef nonnull align 4 dereferenceable(16) %45)
          to label %287 unwind label %291

287:                                              ; preds = %.lr.ph235
  %288 = extractvalue { <2 x float>, <2 x float> } %286, 0
  %289 = extractvalue { <2 x float>, <2 x float> } %286, 1
  store <2 x float> %288, ptr %285, align 8
  %.sroa.5.0..sroa_idx = getelementptr inbounds i8, ptr %285, i64 8
  store <2 x float> %289, ptr %.sroa.5.0..sroa_idx, align 8
  %290 = add nuw i64 %.0168233, 1
  %exitcond251.not = icmp eq i64 %290, %120
  br i1 %exitcond251.not, label %._crit_edge236, label %.lr.ph235, !llvm.loop !91

291:                                              ; preds = %.lr.ph235
  %292 = landingpad { ptr, i32 }
          cleanup
  br label %293

293:                                              ; preds = %291, %283
  %.pn193 = phi { ptr, i32 } [ %292, %291 ], [ %284, %283 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %45) #10
  br label %347

294:                                              ; preds = %._crit_edge236, %269, %266
  br i1 %136, label %._crit_edge240, label %.lr.ph239

._crit_edge240:                                   ; preds = %340, %294
  %295 = trunc i64 %120 to i32
  %296 = call noundef ptr @_ZNKSt10unique_ptrI10aiNodeAnimSt14default_deleteIS0_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %11) #10
  %297 = getelementptr inbounds i8, ptr %296, i64 1056
  store i32 %295, ptr %297, align 8, !tbaa !92
  %298 = call noundef ptr @_ZNKSt10unique_ptrI10aiNodeAnimSt14default_deleteIS0_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %11) #10
  %299 = getelementptr inbounds i8, ptr %298, i64 1056
  %300 = load i32, ptr %299, align 8, !tbaa !92
  %301 = call noundef ptr @_ZNKSt10unique_ptrI10aiNodeAnimSt14default_deleteIS0_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %11) #10
  %302 = getelementptr inbounds i8, ptr %301, i64 1040
  store i32 %300, ptr %302, align 8, !tbaa !96
  %303 = call noundef ptr @_ZNKSt10unique_ptrI10aiNodeAnimSt14default_deleteIS0_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %11) #10
  %304 = getelementptr inbounds i8, ptr %303, i64 1056
  %305 = load i32, ptr %304, align 8, !tbaa !92
  %306 = call noundef ptr @_ZNKSt10unique_ptrI10aiNodeAnimSt14default_deleteIS0_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %11) #10
  %307 = getelementptr inbounds i8, ptr %306, i64 1028
  store i32 %305, ptr %307, align 4, !tbaa !97
  %308 = call noundef ptr @_ZNKSt10unique_ptrI10aiNodeAnimSt14default_deleteIS0_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %11) #10
  %309 = getelementptr inbounds i8, ptr %308, i64 1064
  store ptr %154, ptr %309, align 8, !tbaa !98
  %310 = call noundef ptr @_ZNKSt10unique_ptrI10aiNodeAnimSt14default_deleteIS0_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %11) #10
  %311 = getelementptr inbounds i8, ptr %310, i64 1048
  store ptr %146, ptr %311, align 8, !tbaa !99
  %312 = call noundef ptr @_ZNKSt10unique_ptrI10aiNodeAnimSt14default_deleteIS0_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %11) #10
  %313 = getelementptr inbounds i8, ptr %312, i64 1032
  store ptr %134, ptr %313, align 8, !tbaa !100
  %314 = call noundef ptr @_ZNSt10unique_ptrI10aiNodeAnimSt14default_deleteIS0_EE7releaseEv(ptr noundef nonnull align 8 dereferenceable(8) %11) #10
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %42) #10
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %38) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %37) #10
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %33) #10
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %29) #10
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %25) #10
  call void @_ZNSt6vectorIlSaIlEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %13) #10
  %315 = getelementptr inbounds i8, ptr %12, i64 384
  call void @_ZNSt6vectorISt5tupleIJSt10shared_ptrIS_IlSaIlEEES1_IS_IfSaIfEEEjEESaIS8_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %315) #10
  %316 = getelementptr inbounds i8, ptr %12, i64 360
  call void @_ZNSt6vectorISt5tupleIJSt10shared_ptrIS_IlSaIlEEES1_IS_IfSaIfEEEjEESaIS8_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %316) #10
  %317 = getelementptr inbounds i8, ptr %12, i64 336
  call void @_ZNSt6vectorISt5tupleIJSt10shared_ptrIS_IlSaIlEEES1_IS_IfSaIfEEEjEESaIS8_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %317) #10
  %318 = getelementptr inbounds i8, ptr %12, i64 312
  call void @_ZNSt6vectorISt5tupleIJSt10shared_ptrIS_IlSaIlEEES1_IS_IfSaIfEEEjEESaIS8_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %318) #10
  %319 = getelementptr inbounds i8, ptr %12, i64 288
  call void @_ZNSt6vectorISt5tupleIJSt10shared_ptrIS_IlSaIlEEES1_IS_IfSaIfEEEjEESaIS8_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %319) #10
  %320 = getelementptr inbounds i8, ptr %12, i64 264
  call void @_ZNSt6vectorISt5tupleIJSt10shared_ptrIS_IlSaIlEEES1_IS_IfSaIfEEEjEESaIS8_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %320) #10
  %321 = getelementptr inbounds i8, ptr %12, i64 240
  call void @_ZNSt6vectorISt5tupleIJSt10shared_ptrIS_IlSaIlEEES1_IS_IfSaIfEEEjEESaIS8_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %321) #10
  %322 = getelementptr inbounds i8, ptr %12, i64 216
  call void @_ZNSt6vectorISt5tupleIJSt10shared_ptrIS_IlSaIlEEES1_IS_IfSaIfEEEjEESaIS8_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %322) #10
  %323 = getelementptr inbounds i8, ptr %12, i64 192
  call void @_ZNSt6vectorISt5tupleIJSt10shared_ptrIS_IlSaIlEEES1_IS_IfSaIfEEEjEESaIS8_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %323) #10
  %324 = getelementptr inbounds i8, ptr %12, i64 168
  call void @_ZNSt6vectorISt5tupleIJSt10shared_ptrIS_IlSaIlEEES1_IS_IfSaIfEEEjEESaIS8_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %324) #10
  %325 = getelementptr inbounds i8, ptr %12, i64 144
  call void @_ZNSt6vectorISt5tupleIJSt10shared_ptrIS_IlSaIlEEES1_IS_IfSaIfEEEjEESaIS8_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %325) #10
  %326 = getelementptr inbounds i8, ptr %12, i64 120
  call void @_ZNSt6vectorISt5tupleIJSt10shared_ptrIS_IlSaIlEEES1_IS_IfSaIfEEEjEESaIS8_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %326) #10
  %327 = getelementptr inbounds i8, ptr %12, i64 96
  call void @_ZNSt6vectorISt5tupleIJSt10shared_ptrIS_IlSaIlEEES1_IS_IfSaIfEEEjEESaIS8_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %327) #10
  %328 = getelementptr inbounds i8, ptr %12, i64 72
  call void @_ZNSt6vectorISt5tupleIJSt10shared_ptrIS_IlSaIlEEES1_IS_IfSaIfEEEjEESaIS8_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %328) #10
  %329 = getelementptr inbounds i8, ptr %12, i64 48
  call void @_ZNSt6vectorISt5tupleIJSt10shared_ptrIS_IlSaIlEEES1_IS_IfSaIfEEEjEESaIS8_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %329) #10
  %330 = getelementptr inbounds i8, ptr %12, i64 24
  call void @_ZNSt6vectorISt5tupleIJSt10shared_ptrIS_IlSaIlEEES1_IS_IfSaIfEEEjEESaIS8_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %330) #10
  call void @_ZNSt6vectorISt5tupleIJSt10shared_ptrIS_IlSaIlEEES1_IS_IfSaIfEEEjEESaIS8_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #10
  call void @llvm.lifetime.end.p0(i64 408, ptr nonnull %12) #10
  call void @_ZNSt10unique_ptrI10aiNodeAnimSt14default_deleteIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %11) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #10
  ret ptr %314

.lr.ph239:                                        ; preds = %294, %340
  %.0166237 = phi i64 [ %341, %340 ], [ 0, %294 ]
  %331 = getelementptr inbounds %struct.aiQuatKey, ptr %146, i64 %.0166237, i32 1
  %332 = getelementptr inbounds %struct.aiVectorKey, ptr %154, i64 %.0166237, i32 1
  %333 = getelementptr inbounds %struct.aiVectorKey, ptr %134, i64 %.0166237, i32 1
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %46) #10
  call void @_ZN12aiMatrix4x4tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(64) %46) #10
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %47) #10
  call void @_ZN12aiMatrix4x4tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(64) %47) #10
  %334 = call noundef nonnull align 4 dereferenceable(64) ptr @_ZN12aiMatrix4x4tIfE11TranslationERK10aiVector3tIfERS0_(ptr noundef nonnull align 4 dereferenceable(12) %333, ptr noundef nonnull align 4 dereferenceable(64) %46)
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %48) #10
  call void @llvm.lifetime.start.p0(i64 36, ptr nonnull %49) #10
  call void @_ZNK13aiQuaterniontIfE9GetMatrixEv(ptr dead_on_unwind nonnull writable sret(%class.aiMatrix3x3t) align 4 %49, ptr noundef nonnull align 4 dereferenceable(16) %331)
  call void @_ZN12aiMatrix4x4tIfEC2ERK12aiMatrix3x3tIfE(ptr noundef nonnull align 4 dereferenceable(64) %48, ptr noundef nonnull align 4 dereferenceable(36) %49)
  %335 = invoke noundef nonnull align 4 dereferenceable(64) ptr @_ZN12aiMatrix4x4tIfEmLERKS0_(ptr noundef nonnull align 4 dereferenceable(64) %46, ptr noundef nonnull align 4 dereferenceable(64) %48)
          to label %336 unwind label %344

336:                                              ; preds = %.lr.ph239
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %49) #10
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %48) #10
  %337 = call noundef nonnull align 4 dereferenceable(64) ptr @_ZN12aiMatrix4x4tIfE7ScalingERK10aiVector3tIfERS0_(ptr noundef nonnull align 4 dereferenceable(12) %332, ptr noundef nonnull align 4 dereferenceable(64) %47)
  %338 = invoke noundef nonnull align 4 dereferenceable(64) ptr @_ZN12aiMatrix4x4tIfEmLERKS0_(ptr noundef nonnull align 4 dereferenceable(64) %46, ptr noundef nonnull align 4 dereferenceable(64) %337)
          to label %339 unwind label %342

339:                                              ; preds = %336
  invoke void @_ZNK12aiMatrix4x4tIfE9DecomposeER10aiVector3tIfER13aiQuaterniontIfES3_(ptr noundef nonnull align 4 dereferenceable(64) %46, ptr noundef nonnull align 4 dereferenceable(12) %332, ptr noundef nonnull align 4 dereferenceable(16) %331, ptr noundef nonnull align 4 dereferenceable(12) %333)
          to label %340 unwind label %342

340:                                              ; preds = %339
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %47) #10
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %46) #10
  %341 = add nuw i64 %.0166237, 1
  %exitcond252.not = icmp eq i64 %341, %120
  br i1 %exitcond252.not, label %._crit_edge240, label %.lr.ph239, !llvm.loop !101

342:                                              ; preds = %339, %336
  %343 = landingpad { ptr, i32 }
          cleanup
  br label %346

344:                                              ; preds = %.lr.ph239
  %345 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %49) #10
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %48) #10
  br label %346

346:                                              ; preds = %344, %342
  %.pn191 = phi { ptr, i32 } [ %343, %342 ], [ %345, %344 ]
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %47) #10
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %46) #10
  br label %347

347:                                              ; preds = %346, %293
  %.pn193.pn = phi { ptr, i32 } [ %.pn193, %293 ], [ %.pn191, %346 ]
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %42) #10
  br label %348

348:                                              ; preds = %282, %347, %262
  %.pn197.pn = phi { ptr, i32 } [ %.pn197, %262 ], [ %.pn193.pn, %347 ], [ %.pn189, %282 ]
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %38) #10
  br label %349

349:                                              ; preds = %348, %251
  %.pn197.pn.pn = phi { ptr, i32 } [ %.pn197.pn, %348 ], [ %.pn187, %251 ]
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %37) #10
  br label %350

350:                                              ; preds = %183, %187, %207, %349, %185, %182
  %.pn197.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn183, %182 ], [ %184, %183 ], [ %186, %185 ], [ %.pn197.pn.pn, %349 ], [ %188, %187 ], [ %208, %207 ]
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %33) #10
  br label %351

351:                                              ; preds = %350, %177
  %.pn197.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn197.pn.pn.pn.pn.pn.pn, %350 ], [ %.pn181, %177 ]
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %29) #10
  br label %352

352:                                              ; preds = %351, %172
  %.pn197.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn197.pn.pn.pn.pn.pn.pn.pn, %351 ], [ %.pn, %172 ]
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %25) #10
  br label %353

353:                                              ; preds = %166, %352, %69, %77, %98, %112, %118
  %.pn210.pn = phi { ptr, i32 } [ %99, %98 ], [ %.pn208, %118 ], [ %113, %112 ], [ %70, %69 ], [ %78, %77 ], [ %.pn197.pn.pn.pn.pn.pn.pn.pn.pn, %352 ], [ %167, %166 ]
  call void @_ZNSt6vectorIlSaIlEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %13) #10
  %354 = getelementptr inbounds i8, ptr %12, i64 384
  call void @_ZNSt6vectorISt5tupleIJSt10shared_ptrIS_IlSaIlEEES1_IS_IfSaIfEEEjEESaIS8_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %354) #10
  %355 = getelementptr inbounds i8, ptr %12, i64 360
  call void @_ZNSt6vectorISt5tupleIJSt10shared_ptrIS_IlSaIlEEES1_IS_IfSaIfEEEjEESaIS8_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %355) #10
  %356 = getelementptr inbounds i8, ptr %12, i64 336
  call void @_ZNSt6vectorISt5tupleIJSt10shared_ptrIS_IlSaIlEEES1_IS_IfSaIfEEEjEESaIS8_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %356) #10
  %357 = getelementptr inbounds i8, ptr %12, i64 312
  call void @_ZNSt6vectorISt5tupleIJSt10shared_ptrIS_IlSaIlEEES1_IS_IfSaIfEEEjEESaIS8_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %357) #10
  %358 = getelementptr inbounds i8, ptr %12, i64 288
  call void @_ZNSt6vectorISt5tupleIJSt10shared_ptrIS_IlSaIlEEES1_IS_IfSaIfEEEjEESaIS8_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %358) #10
  %359 = getelementptr inbounds i8, ptr %12, i64 264
  call void @_ZNSt6vectorISt5tupleIJSt10shared_ptrIS_IlSaIlEEES1_IS_IfSaIfEEEjEESaIS8_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %359) #10
  %360 = getelementptr inbounds i8, ptr %12, i64 240
  call void @_ZNSt6vectorISt5tupleIJSt10shared_ptrIS_IlSaIlEEES1_IS_IfSaIfEEEjEESaIS8_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %360) #10
  %361 = getelementptr inbounds i8, ptr %12, i64 216
  call void @_ZNSt6vectorISt5tupleIJSt10shared_ptrIS_IlSaIlEEES1_IS_IfSaIfEEEjEESaIS8_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %361) #10
  %362 = getelementptr inbounds i8, ptr %12, i64 192
  call void @_ZNSt6vectorISt5tupleIJSt10shared_ptrIS_IlSaIlEEES1_IS_IfSaIfEEEjEESaIS8_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %362) #10
  %363 = getelementptr inbounds i8, ptr %12, i64 168
  call void @_ZNSt6vectorISt5tupleIJSt10shared_ptrIS_IlSaIlEEES1_IS_IfSaIfEEEjEESaIS8_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %363) #10
  %364 = getelementptr inbounds i8, ptr %12, i64 144
  call void @_ZNSt6vectorISt5tupleIJSt10shared_ptrIS_IlSaIlEEES1_IS_IfSaIfEEEjEESaIS8_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %364) #10
  %365 = getelementptr inbounds i8, ptr %12, i64 120
  call void @_ZNSt6vectorISt5tupleIJSt10shared_ptrIS_IlSaIlEEES1_IS_IfSaIfEEEjEESaIS8_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %365) #10
  %366 = getelementptr inbounds i8, ptr %12, i64 96
  call void @_ZNSt6vectorISt5tupleIJSt10shared_ptrIS_IlSaIlEEES1_IS_IfSaIfEEEjEESaIS8_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %366) #10
  %367 = getelementptr inbounds i8, ptr %12, i64 72
  call void @_ZNSt6vectorISt5tupleIJSt10shared_ptrIS_IlSaIlEEES1_IS_IfSaIfEEEjEESaIS8_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %367) #10
  %368 = getelementptr inbounds i8, ptr %12, i64 48
  call void @_ZNSt6vectorISt5tupleIJSt10shared_ptrIS_IlSaIlEEES1_IS_IfSaIfEEEjEESaIS8_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %368) #10
  %369 = getelementptr inbounds i8, ptr %12, i64 24
  call void @_ZNSt6vectorISt5tupleIJSt10shared_ptrIS_IlSaIlEEES1_IS_IfSaIfEEEjEESaIS8_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %369) #10
  call void @_ZNSt6vectorISt5tupleIJSt10shared_ptrIS_IlSaIlEEES1_IS_IfSaIfEEEjEESaIS8_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #10
  call void @llvm.lifetime.end.p0(i64 408, ptr nonnull %12) #10
  br label %370

370:                                              ; preds = %353, %56
  %.pn210.pn.pn = phi { ptr, i32 } [ %.pn210.pn, %353 ], [ %57, %56 ]
  call void @_ZNSt10unique_ptrI10aiNodeAnimSt14default_deleteIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %11) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #10
  resume { ptr, i32 } %.pn210.pn.pn
}

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Assimp3FBX12FBXConverter23GetRotationKeyframeListERKSt6vectorIPKNS0_18AnimationCurveNodeESaIS5_EEll(ptr dead_on_unwind noalias writable sret(%"class.std::vector.442") align 8, ptr noundef nonnull align 8 dereferenceable(489), ptr noundef nonnull align 8 dereferenceable(24), i64 noundef, i64 noundef) local_unnamed_addr #3 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Assimp3FBX12FBXConverter15GetKeyframeListERKSt6vectorIPKNS0_18AnimationCurveNodeESaIS5_EEll(ptr dead_on_unwind noalias writable sret(%"class.std::vector.442") align 8, ptr noundef nonnull align 8 dereferenceable(489), ptr noundef nonnull align 8 dereferenceable(24), i64 noundef, i64 noundef) local_unnamed_addr #3 align 2

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPlSt6vectorIlSaIlEEEEEvT_S7_(ptr, ptr) local_unnamed_addr #6

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Assimp3FBX12FBXConverter15InterpolateKeysEP11aiVectorKeyRKSt6vectorIlSaIlEERKS4_ISt5tupleIJSt10shared_ptrIS6_ESA_IS4_IfSaIfEEEjEESaISF_EERK10aiVector3tIfERdSO_(ptr noundef nonnull align 8 dereferenceable(489), ptr noundef, ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #3 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Assimp3FBX12FBXConverter15InterpolateKeysEP9aiQuatKeyRKSt6vectorIlSaIlEERKS4_ISt5tupleIJSt10shared_ptrIS6_ESA_IS4_IfSaIfEEEjEESaISF_EERK10aiVector3tIfERdSO_NS0_5Model8RotOrderE(ptr noundef nonnull align 8 dereferenceable(489), ptr noundef, ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), i32 noundef) local_unnamed_addr #3 align 2

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZNK13aiQuaterniontIfE9GetMatrixEv(ptr dead_on_unwind noalias writable sret(%class.aiMatrix3x3t) align 4, ptr noundef nonnull align 4 dereferenceable(16)) local_unnamed_addr #7 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN12aiMatrix4x4tIfEC2ERK12aiMatrix3x3tIfE(ptr noundef nonnull align 4 dereferenceable(64), ptr noundef nonnull align 4 dereferenceable(36)) unnamed_addr #7 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZNK12aiMatrix4x4tIfE9DecomposeER10aiVector3tIfER13aiQuaterniontIfES3_(ptr noundef nonnull align 4 dereferenceable(64), ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(16), ptr noundef nonnull align 4 dereferenceable(12)) local_unnamed_addr #9 align 2

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = distinct !{!5, !6}
!6 = !{!"llvm.loop.mustprogress"}
!7 = distinct !{!7, !6}
!8 = !{!9, !9, i64 0}
!9 = !{!"long", !10, i64 0}
!10 = !{!"omnipotent char", !11, i64 0}
!11 = !{!"Simple C++ TBAA"}
!12 = !{!13, !68, i64 440}
!13 = !{!"_ZTSN6Assimp3FBX12FBXConverterE", !14, i64 0, !15, i64 8, !20, i64 32, !24, i64 56, !28, i64 80, !32, i64 104, !36, i64 128, !40, i64 152, !48, i64 200, !53, i64 248, !58, i64 296, !58, i64 344, !63, i64 392, !68, i64 440, !69, i64 448, !19, i64 472, !19, i64 480, !73, i64 488}
!14 = !{!"int", !10, i64 0}
!15 = !{!"_ZTSSt6vectorIP6aiMeshSaIS1_EE", !16, i64 0}
!16 = !{!"_ZTSSt12_Vector_baseIP6aiMeshSaIS1_EE", !17, i64 0}
!17 = !{!"_ZTSNSt12_Vector_baseIP6aiMeshSaIS1_EE12_Vector_implE", !18, i64 0}
!18 = !{!"_ZTSNSt12_Vector_baseIP6aiMeshSaIS1_EE17_Vector_impl_dataE", !19, i64 0, !19, i64 8, !19, i64 16}
!19 = !{!"any pointer", !10, i64 0}
!20 = !{!"_ZTSSt6vectorIP10aiMaterialSaIS1_EE", !21, i64 0}
!21 = !{!"_ZTSSt12_Vector_baseIP10aiMaterialSaIS1_EE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseIP10aiMaterialSaIS1_EE12_Vector_implE", !23, i64 0}
!23 = !{!"_ZTSNSt12_Vector_baseIP10aiMaterialSaIS1_EE17_Vector_impl_dataE", !19, i64 0, !19, i64 8, !19, i64 16}
!24 = !{!"_ZTSSt6vectorIP11aiAnimationSaIS1_EE", !25, i64 0}
!25 = !{!"_ZTSSt12_Vector_baseIP11aiAnimationSaIS1_EE", !26, i64 0}
!26 = !{!"_ZTSNSt12_Vector_baseIP11aiAnimationSaIS1_EE12_Vector_implE", !27, i64 0}
!27 = !{!"_ZTSNSt12_Vector_baseIP11aiAnimationSaIS1_EE17_Vector_impl_dataE", !19, i64 0, !19, i64 8, !19, i64 16}
!28 = !{!"_ZTSSt6vectorIP7aiLightSaIS1_EE", !29, i64 0}
!29 = !{!"_ZTSSt12_Vector_baseIP7aiLightSaIS1_EE", !30, i64 0}
!30 = !{!"_ZTSNSt12_Vector_baseIP7aiLightSaIS1_EE12_Vector_implE", !31, i64 0}
!31 = !{!"_ZTSNSt12_Vector_baseIP7aiLightSaIS1_EE17_Vector_impl_dataE", !19, i64 0, !19, i64 8, !19, i64 16}
!32 = !{!"_ZTSSt6vectorIP8aiCameraSaIS1_EE", !33, i64 0}
!33 = !{!"_ZTSSt12_Vector_baseIP8aiCameraSaIS1_EE", !34, i64 0}
!34 = !{!"_ZTSNSt12_Vector_baseIP8aiCameraSaIS1_EE12_Vector_implE", !35, i64 0}
!35 = !{!"_ZTSNSt12_Vector_baseIP8aiCameraSaIS1_EE17_Vector_impl_dataE", !19, i64 0, !19, i64 8, !19, i64 16}
!36 = !{!"_ZTSSt6vectorIP9aiTextureSaIS1_EE", !37, i64 0}
!37 = !{!"_ZTSSt12_Vector_baseIP9aiTextureSaIS1_EE", !38, i64 0}
!38 = !{!"_ZTSNSt12_Vector_baseIP9aiTextureSaIS1_EE12_Vector_implE", !39, i64 0}
!39 = !{!"_ZTSNSt12_Vector_baseIP9aiTextureSaIS1_EE17_Vector_impl_dataE", !19, i64 0, !19, i64 8, !19, i64 16}
!40 = !{!"_ZTSSt3mapIPKN6Assimp3FBX8MaterialEjSt4lessIS4_ESaISt4pairIKS4_jEEE", !41, i64 0}
!41 = !{!"_ZTSSt8_Rb_treeIPKN6Assimp3FBX8MaterialESt4pairIKS4_jESt10_Select1stIS7_ESt4lessIS4_ESaIS7_EE", !42, i64 0}
!42 = !{!"_ZTSNSt8_Rb_treeIPKN6Assimp3FBX8MaterialESt4pairIKS4_jESt10_Select1stIS7_ESt4lessIS4_ESaIS7_EE13_Rb_tree_implISB_Lb1EEE", !43, i64 0, !45, i64 8}
!43 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIPKN6Assimp3FBX8MaterialEEE", !44, i64 0}
!44 = !{!"_ZTSSt4lessIPKN6Assimp3FBX8MaterialEE"}
!45 = !{!"_ZTSSt15_Rb_tree_header", !46, i64 0, !9, i64 32}
!46 = !{!"_ZTSSt18_Rb_tree_node_base", !47, i64 0, !19, i64 8, !19, i64 16, !19, i64 24}
!47 = !{!"_ZTSSt14_Rb_tree_color", !10, i64 0}
!48 = !{!"_ZTSSt3mapIPKN6Assimp3FBX5VideoEjSt4lessIS4_ESaISt4pairIKS4_jEEE", !49, i64 0}
!49 = !{!"_ZTSSt8_Rb_treeIPKN6Assimp3FBX5VideoESt4pairIKS4_jESt10_Select1stIS7_ESt4lessIS4_ESaIS7_EE", !50, i64 0}
!50 = !{!"_ZTSNSt8_Rb_treeIPKN6Assimp3FBX5VideoESt4pairIKS4_jESt10_Select1stIS7_ESt4lessIS4_ESaIS7_EE13_Rb_tree_implISB_Lb1EEE", !51, i64 0, !45, i64 8}
!51 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIPKN6Assimp3FBX5VideoEEE", !52, i64 0}
!52 = !{!"_ZTSSt4lessIPKN6Assimp3FBX5VideoEE"}
!53 = !{!"_ZTSSt3mapIPKN6Assimp3FBX8GeometryESt6vectorIjSaIjEESt4lessIS4_ESaISt4pairIKS4_S7_EEE", !54, i64 0}
!54 = !{!"_ZTSSt8_Rb_treeIPKN6Assimp3FBX8GeometryESt4pairIKS4_St6vectorIjSaIjEEESt10_Select1stISA_ESt4lessIS4_ESaISA_EE", !55, i64 0}
!55 = !{!"_ZTSNSt8_Rb_treeIPKN6Assimp3FBX8GeometryESt4pairIKS4_St6vectorIjSaIjEEESt10_Select1stISA_ESt4lessIS4_ESaISA_EE13_Rb_tree_implISE_Lb1EEE", !56, i64 0, !45, i64 8}
!56 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIPKN6Assimp3FBX8GeometryEEE", !57, i64 0}
!57 = !{!"_ZTSSt4lessIPKN6Assimp3FBX8GeometryEE"}
!58 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEjSt4lessIS5_ESaISt4pairIKS5_jEEE", !59, i64 0}
!59 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_jESt10_Select1stIS8_ESt4lessIS5_ESaIS8_EE", !60, i64 0}
!60 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_jESt10_Select1stIS8_ESt4lessIS5_ESaIS8_EE13_Rb_tree_implISC_Lb1EEE", !61, i64 0, !45, i64 8}
!61 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE", !62, i64 0}
!62 = !{!"_ZTSSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE"}
!63 = !{!"_ZTSSt3mapIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP6aiBoneSt4lessIS6_ESaISt4pairIS6_S8_EEE", !64, i64 0}
!64 = !{!"_ZTSSt8_Rb_treeIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIS6_P6aiBoneESt10_Select1stISA_ESt4lessIS6_ESaISA_EE", !65, i64 0}
!65 = !{!"_ZTSNSt8_Rb_treeIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIS6_P6aiBoneESt10_Select1stISA_ESt4lessIS6_ESaISA_EE13_Rb_tree_implISE_Lb1EEE", !66, i64 0, !45, i64 8}
!66 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE", !67, i64 0}
!67 = !{!"_ZTSSt4lessIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE"}
!68 = !{!"double", !10, i64 0}
!69 = !{!"_ZTSSt6vectorIP10aiSkeletonSaIS1_EE", !70, i64 0}
!70 = !{!"_ZTSSt12_Vector_baseIP10aiSkeletonSaIS1_EE", !71, i64 0}
!71 = !{!"_ZTSNSt12_Vector_baseIP10aiSkeletonSaIS1_EE12_Vector_implE", !72, i64 0}
!72 = !{!"_ZTSNSt12_Vector_baseIP10aiSkeletonSaIS1_EE17_Vector_impl_dataE", !19, i64 0, !19, i64 8, !19, i64 16}
!73 = !{!"bool", !10, i64 0}
!74 = !{!75, !68, i64 0}
!75 = !{!"_ZTS11aiVectorKey", !68, i64 0, !76, i64 8, !78, i64 20}
!76 = !{!"_ZTS10aiVector3tIfE", !77, i64 0, !77, i64 4, !77, i64 8}
!77 = !{!"float", !10, i64 0}
!78 = !{!"_ZTS19aiAnimInterpolation", !10, i64 0}
!79 = !{i64 0, i64 4, !80, i64 4, i64 4, !80, i64 8, i64 4, !80}
!80 = !{!77, !77, i64 0}
!81 = distinct !{!81, !6}
!82 = !{!83, !68, i64 0}
!83 = !{!"_ZTS9aiQuatKey", !68, i64 0, !84, i64 8, !78, i64 24}
!84 = !{!"_ZTS13aiQuaterniontIfE", !77, i64 0, !77, i64 4, !77, i64 8, !77, i64 12}
!85 = distinct !{!85, !6}
!86 = distinct !{!86, !6}
!87 = !{!73, !73, i64 0}
!88 = !{i8 0, i8 2}
!89 = !{}
!90 = distinct !{!90, !6}
!91 = distinct !{!91, !6}
!92 = !{!93, !14, i64 1056}
!93 = !{!"_ZTS10aiNodeAnim", !94, i64 0, !14, i64 1028, !19, i64 1032, !14, i64 1040, !19, i64 1048, !14, i64 1056, !19, i64 1064, !95, i64 1072, !95, i64 1076}
!94 = !{!"_ZTS8aiString", !14, i64 0, !10, i64 4}
!95 = !{!"_ZTS15aiAnimBehaviour", !10, i64 0}
!96 = !{!93, !14, i64 1040}
!97 = !{!93, !14, i64 1028}
!98 = !{!93, !19, i64 1064}
!99 = !{!93, !19, i64 1048}
!100 = !{!93, !19, i64 1032}
!101 = distinct !{!101, !6}


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