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

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

%"class.std::vector.75" = type { %"struct.std::_Vector_base.76" }
%"struct.std::_Vector_base.76" = type { %"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.318" = type { %"struct.std::_Vector_base.319" }
%"struct.std::_Vector_base.319" = type { %"struct.std::_Vector_base<aiBone *, std::allocator<aiBone *>>::_Vector_impl" }
%"struct.std::_Vector_base<aiBone *, std::allocator<aiBone *>>::_Vector_impl" = type { %"struct.std::_Vector_base<aiBone *, std::allocator<aiBone *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<aiBone *, std::allocator<aiBone *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.323" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.221" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.222" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.324" = type { ptr }
%"struct.Assimp::FBX::Util::delete_fun.325" = type { 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 }
%struct.aiMesh = type { i32, i32, i32, ptr, ptr, ptr, ptr, [8 x ptr], [8 x ptr], [8 x i32], ptr, i32, ptr, i32, %struct.aiString, i32, ptr, i32, %struct.aiAABB, ptr }
%struct.aiString = type { i32, [1024 x i8] }
%struct.aiAABB = type { %class.aiVector3t, %class.aiVector3t }
%class.aiVector3t = type { float, float, float }

@.str.5 = external hidden unnamed_addr constant [119 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [39 x i8], align 1
@_ZTISt9exception = external constant ptr
@.str.66 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [19 x i8], align 1

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #0

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

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

; Function Attrs: noinline noreturn nounwind uwtable
declare hidden void @__clang_call_terminate(ptr noundef) #2

declare ptr @__cxa_begin_catch(ptr)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN6Assimp3FBX12FBXConverter14ConvertWeightsEP6aiMeshRKNS0_12MeshGeometryERK12aiMatrix4x4tIfEP6aiNodejPSt6vectorIjSaIjEE(ptr noundef nonnull align 8 dereferenceable(489) %0, ptr noundef %1, ptr noundef nonnull align 8 dereferenceable(1000) %2, ptr noundef nonnull align 4 dereferenceable(64) %3, ptr noundef %4, i32 noundef %5, ptr noundef %6) #9 align 2 personality ptr @__gxx_personality_v0 {
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca i32, align 4
  %14 = alloca ptr, align 8
  %15 = alloca %"class.std::vector.75", align 8
  %16 = alloca %"class.std::vector.75", align 8
  %17 = alloca %"class.std::vector.75", align 8
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca i32, align 4
  %21 = alloca %"class.std::vector.318", align 8
  %22 = alloca i8, align 1
  %23 = alloca ptr, align 8
  %24 = alloca %"class.__gnu_cxx::__normal_iterator.323", align 8
  %25 = alloca %"class.__gnu_cxx::__normal_iterator.323", align 8
  %26 = alloca i32, align 4
  %27 = alloca ptr, align 8
  %28 = alloca ptr, align 8
  %29 = alloca ptr, align 8
  %30 = alloca i64, align 8
  %31 = alloca ptr, align 8
  %32 = alloca %"class.__gnu_cxx::__normal_iterator.221", align 8
  %33 = alloca %"class.__gnu_cxx::__normal_iterator.221", align 8
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca ptr, align 8
  %37 = alloca i64, align 8
  %38 = alloca i32, align 4
  %39 = alloca i64, align 8
  %40 = alloca %"class.__gnu_cxx::__normal_iterator.222", align 8
  %41 = alloca %"class.__gnu_cxx::__normal_iterator.222", align 8
  %42 = alloca %"class.__gnu_cxx::__normal_iterator.222", align 8
  %43 = alloca i64, align 8
  %44 = alloca %"class.__gnu_cxx::__normal_iterator.222", align 8
  %45 = alloca %"class.__gnu_cxx::__normal_iterator.222", align 8
  %46 = alloca ptr, align 8
  %47 = alloca %"class.__gnu_cxx::__normal_iterator.324", align 8
  %48 = alloca %"class.__gnu_cxx::__normal_iterator.324", align 8
  %49 = alloca %"struct.Assimp::FBX::Util::delete_fun.325", align 1
  %50 = alloca %"struct.Assimp::FBX::Util::delete_fun.325", align 1
  %51 = alloca %"class.__gnu_cxx::__normal_iterator.324", align 8
  %52 = alloca %"class.__gnu_cxx::__normal_iterator.324", align 8
  store ptr %0, ptr %8, align 8, !tbaa !5
  store ptr %1, ptr %9, align 8, !tbaa !5
  store ptr %2, ptr %10, align 8, !tbaa !5
  store ptr %3, ptr %11, align 8, !tbaa !5
  store ptr %4, ptr %12, align 8, !tbaa !5
  store i32 %5, ptr %13, align 4, !tbaa !9
  store ptr %6, ptr %14, align 8, !tbaa !5
  %53 = load ptr, ptr %8, align 8
  %54 = load ptr, ptr %10, align 8, !tbaa !5
  %55 = call noundef ptr @_ZNK6Assimp3FBX8Geometry12DeformerSkinEv(ptr noundef nonnull align 8 dereferenceable(120) %54)
  %56 = icmp ne ptr %55, null
  br i1 %56, label %58, label %57

57:                                               ; preds = %7
  call void @_ZN6Assimp17aiAssertViolationEPKcS1_i(ptr noundef @.str.64, ptr noundef @.str.5, i32 noundef 1566)
  br label %58

58:                                               ; preds = %57, %7
  %59 = phi i1 [ true, %7 ], [ false, %57 ]
  call void @llvm.lifetime.start.p0(i64 24, ptr %15) #12
  call void @_ZNSt6vectorImSaImEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #12
  call void @llvm.lifetime.start.p0(i64 24, ptr %16) #12
  call void @_ZNSt6vectorImSaImEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %16) #12
  call void @llvm.lifetime.start.p0(i64 24, ptr %17) #12
  call void @_ZNSt6vectorImSaImEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #12
  %60 = load ptr, ptr %10, align 8, !tbaa !5
  %61 = invoke noundef ptr @_ZNK6Assimp3FBX8Geometry12DeformerSkinEv(ptr noundef nonnull align 8 dereferenceable(120) %60)
          to label %62 unwind label %87

62:                                               ; preds = %58
  store ptr %61, ptr %18, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr %21) #12
  call void @_ZNSt6vectorIP6aiBoneSaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %21) #12
  call void @llvm.lifetime.start.p0(i64 1, ptr %22) #12
  %63 = load i32, ptr %13, align 4, !tbaa !9
  %64 = icmp eq i32 %63, -1
  %65 = zext i1 %64 to i8
  store i8 %65, ptr %22, align 1, !tbaa !11
  %66 = load i8, ptr %22, align 1, !tbaa !11, !range !13, !noundef !14
  %67 = trunc i8 %66 to i1
  br i1 %67, label %73, label %68

68:                                               ; preds = %62
  %69 = load ptr, ptr %14, align 8, !tbaa !5
  %70 = icmp ne ptr %69, null
  br i1 %70, label %73, label %71

71:                                               ; preds = %68
  invoke void @_ZN6Assimp17aiAssertViolationEPKcS1_i(ptr noundef @.str.65, ptr noundef @.str.5, i32 noundef 1574)
          to label %72 unwind label %91

72:                                               ; preds = %71
  br label %73

73:                                               ; preds = %72, %68, %62
  %74 = phi i1 [ true, %68 ], [ true, %62 ], [ false, %72 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #12
  %75 = load ptr, ptr %18, align 8, !tbaa !5
  %76 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX4Skin8ClustersEv(ptr noundef nonnull align 8 dereferenceable(104) %75)
          to label %77 unwind label %95

77:                                               ; preds = %73
  store ptr %76, ptr %23, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #12
  %78 = load ptr, ptr %23, align 8, !tbaa !5
  %79 = call ptr @_ZNKSt6vectorIPKN6Assimp3FBX7ClusterESaIS4_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %78) #12
  %80 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.323", ptr %24, i32 0, i32 0
  store ptr %79, ptr %80, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #12
  %81 = load ptr, ptr %23, align 8, !tbaa !5
  %82 = call ptr @_ZNKSt6vectorIPKN6Assimp3FBX7ClusterESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %81) #12
  %83 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.323", ptr %25, i32 0, i32 0
  store ptr %82, ptr %83, align 8
  br label %84

84:                                               ; preds = %265, %77
  %85 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKPKN6Assimp3FBX7ClusterESt6vectorIS5_SaIS5_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull align 8 dereferenceable(8) %25) #12
  br i1 %85, label %99, label %86

86:                                               ; preds = %84
  store i32 2, ptr %26, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #12
  br label %292

87:                                               ; preds = %58
  %88 = landingpad { ptr, i32 }
          cleanup
  %89 = extractvalue { ptr, i32 } %88, 0
  store ptr %89, ptr %19, align 8
  %90 = extractvalue { ptr, i32 } %88, 1
  store i32 %90, ptr %20, align 4
  br label %337

91:                                               ; preds = %313, %306, %71
  %92 = landingpad { ptr, i32 }
          cleanup
  %93 = extractvalue { ptr, i32 } %92, 0
  store ptr %93, ptr %19, align 8
  %94 = extractvalue { ptr, i32 } %92, 1
  store i32 %94, ptr %20, align 4
  br label %336

95:                                               ; preds = %73
  %96 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %97 = extractvalue { ptr, i32 } %96, 0
  store ptr %97, ptr %19, align 8
  %98 = extractvalue { ptr, i32 } %96, 1
  store i32 %98, ptr %20, align 4
  br label %275

99:                                               ; preds = %84
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #12
  %100 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKPKN6Assimp3FBX7ClusterESt6vectorIS5_SaIS5_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %24) #12
  %101 = load ptr, ptr %100, align 8, !tbaa !5
  store ptr %101, ptr %27, align 8, !tbaa !5
  %102 = load ptr, ptr %27, align 8, !tbaa !5
  %103 = icmp ne ptr %102, null
  br i1 %103, label %106, label %104

104:                                              ; preds = %99
  invoke void @_ZN6Assimp17aiAssertViolationEPKcS1_i(ptr noundef @.str.66, ptr noundef @.str.5, i32 noundef 1579)
          to label %105 unwind label %124

105:                                              ; preds = %104
  br label %106

106:                                              ; preds = %105, %99
  %107 = phi i1 [ true, %99 ], [ false, %105 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #12
  %108 = load ptr, ptr %27, align 8, !tbaa !5
  %109 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX7Cluster10GetIndicesEv(ptr noundef nonnull align 8 dereferenceable(256) %108)
          to label %110 unwind label %128

110:                                              ; preds = %106
  store ptr %109, ptr %28, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #12
  %111 = load ptr, ptr %10, align 8, !tbaa !5
  %112 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX12MeshGeometry18GetMaterialIndicesEv(ptr noundef nonnull align 8 dereferenceable(1000) %111)
          to label %113 unwind label %132

113:                                              ; preds = %110
  store ptr %112, ptr %29, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #12
  store i64 -1, ptr %30, align 8, !tbaa !15
  call void @_ZNSt6vectorImSaImEE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %17) #12
  call void @_ZNSt6vectorImSaImEE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %16) #12
  call void @_ZNSt6vectorImSaImEE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %15) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #12
  %114 = load ptr, ptr %28, align 8, !tbaa !5
  store ptr %114, ptr %31, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #12
  %115 = load ptr, ptr %31, align 8, !tbaa !5
  %116 = call ptr @_ZNKSt6vectorIjSaIjEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %115) #12
  %117 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.221", ptr %32, i32 0, i32 0
  store ptr %116, ptr %117, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #12
  %118 = load ptr, ptr %31, align 8, !tbaa !5
  %119 = call ptr @_ZNKSt6vectorIjSaIjEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %118) #12
  %120 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.221", ptr %33, i32 0, i32 0
  store ptr %119, ptr %120, align 8
  br label %121

121:                                              ; preds = %257, %113
  %122 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKjSt6vectorIjSaIjEEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8) %32, ptr noundef nonnull align 8 dereferenceable(8) %33) #12
  br i1 %122, label %136, label %123

123:                                              ; preds = %121
  store i32 4, ptr %26, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #12
  br label %260

124:                                              ; preds = %104
  %125 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %126 = extractvalue { ptr, i32 } %125, 0
  store ptr %126, ptr %19, align 8
  %127 = extractvalue { ptr, i32 } %125, 1
  store i32 %127, ptr %20, align 4
  br label %274

128:                                              ; preds = %106
  %129 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %130 = extractvalue { ptr, i32 } %129, 0
  store ptr %130, ptr %19, align 8
  %131 = extractvalue { ptr, i32 } %129, 1
  store i32 %131, ptr %20, align 4
  br label %273

132:                                              ; preds = %110
  %133 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %134 = extractvalue { ptr, i32 } %133, 0
  store ptr %134, ptr %19, align 8
  %135 = extractvalue { ptr, i32 } %133, 1
  store i32 %135, ptr %20, align 4
  br label %272

136:                                              ; preds = %121
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #12
  %137 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKjSt6vectorIjSaIjEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %32) #12
  %138 = load i32, ptr %137, align 4, !tbaa !9
  store i32 %138, ptr %34, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #12
  store i32 0, ptr %35, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #12
  %139 = load ptr, ptr %10, align 8, !tbaa !5
  %140 = load i32, ptr %34, align 4, !tbaa !9
  %141 = invoke noundef ptr @_ZNK6Assimp3FBX12MeshGeometry19ToOutputVertexIndexEjRj(ptr noundef nonnull align 8 dereferenceable(1000) %139, i32 noundef %140, ptr noundef nonnull align 4 dereferenceable(4) %35)
          to label %142 unwind label %156

142:                                              ; preds = %136
  store ptr %141, ptr %36, align 8, !tbaa !5
  %143 = load ptr, ptr %36, align 8, !tbaa !5
  %144 = icmp ne ptr %143, null
  br i1 %144, label %147, label %145

145:                                              ; preds = %142
  invoke void @_ZN6Assimp17aiAssertViolationEPKcS1_i(ptr noundef @.str.67, ptr noundef @.str.5, i32 noundef 1599)
          to label %146 unwind label %156

146:                                              ; preds = %145
  br label %147

147:                                              ; preds = %146, %142
  %148 = phi i1 [ true, %142 ], [ false, %146 ]
  invoke void @_ZNSt6vectorImSaImEE9push_backERKm(ptr noundef nonnull align 8 dereferenceable(24) %16, ptr noundef nonnull align 8 dereferenceable(8) %30)
          to label %149 unwind label %156

149:                                              ; preds = %147
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #12
  store i64 0, ptr %37, align 8, !tbaa !15
  invoke void @_ZNSt6vectorImSaImEE9push_backEOm(ptr noundef nonnull align 8 dereferenceable(24) %17, ptr noundef nonnull align 8 dereferenceable(8) %37)
          to label %150 unwind label %160

150:                                              ; preds = %149
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #12
  store i32 0, ptr %38, align 4, !tbaa !9
  br label %151

151:                                              ; preds = %252, %150
  %152 = load i32, ptr %38, align 4, !tbaa !9
  %153 = load i32, ptr %35, align 4, !tbaa !9
  %154 = icmp ult i32 %152, %153
  br i1 %154, label %164, label %155

155:                                              ; preds = %151
  store i32 6, ptr %26, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #12
  br label %256

156:                                              ; preds = %147, %145, %136
  %157 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %158 = extractvalue { ptr, i32 } %157, 0
  store ptr %158, ptr %19, align 8
  %159 = extractvalue { ptr, i32 } %157, 1
  store i32 %159, ptr %20, align 4
  br label %259

160:                                              ; preds = %149
  %161 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %162 = extractvalue { ptr, i32 } %161, 0
  store ptr %162, ptr %19, align 8
  %163 = extractvalue { ptr, i32 } %161, 1
  store i32 %163, ptr %20, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #12
  br label %259

164:                                              ; preds = %151
  %165 = load i8, ptr %22, align 1, !tbaa !11, !range !13, !noundef !14
  %166 = trunc i8 %165 to i1
  br i1 %166, label %184, label %167

167:                                              ; preds = %164
  %168 = load ptr, ptr %29, align 8, !tbaa !5
  %169 = load ptr, ptr %10, align 8, !tbaa !5
  %170 = load ptr, ptr %36, align 8, !tbaa !5
  %171 = load i32, ptr %38, align 4, !tbaa !9
  %172 = zext i32 %171 to i64
  %173 = getelementptr inbounds i32, ptr %170, i64 %172
  %174 = load i32, ptr %173, align 4, !tbaa !9
  %175 = invoke noundef i32 @_ZNK6Assimp3FBX12MeshGeometry18FaceForVertexIndexEj(ptr noundef nonnull align 8 dereferenceable(1000) %169, i32 noundef %174)
          to label %176 unwind label %191

176:                                              ; preds = %167
  %177 = zext i32 %175 to i64
  %178 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %168, i64 noundef %177) #12
  %179 = load i32, ptr %178, align 4, !tbaa !9
  %180 = sext i32 %179 to i64
  %181 = load i32, ptr %13, align 4, !tbaa !9
  %182 = zext i32 %181 to i64
  %183 = icmp eq i64 %180, %182
  br i1 %183, label %184, label %251

184:                                              ; preds = %176, %164
  %185 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImSaImEE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %16) #12
  %186 = load i64, ptr %185, align 8, !tbaa !15
  %187 = icmp eq i64 %186, -1
  br i1 %187, label %188, label %195

188:                                              ; preds = %184
  %189 = call noundef i64 @_ZNKSt6vectorImSaImEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %15) #12
  %190 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImSaImEE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %16) #12
  store i64 %189, ptr %190, align 8, !tbaa !15
  br label %195

191:                                              ; preds = %167
  %192 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %193 = extractvalue { ptr, i32 } %192, 0
  store ptr %193, ptr %19, align 8
  %194 = extractvalue { ptr, i32 } %192, 1
  store i32 %194, ptr %20, align 4
  br label %255

195:                                              ; preds = %188, %184
  %196 = load i8, ptr %22, align 1, !tbaa !11, !range !13, !noundef !14
  %197 = trunc i8 %196 to i1
  br i1 %197, label %198, label %210

198:                                              ; preds = %195
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #12
  %199 = load ptr, ptr %36, align 8, !tbaa !5
  %200 = load i32, ptr %38, align 4, !tbaa !9
  %201 = zext i32 %200 to i64
  %202 = getelementptr inbounds i32, ptr %199, i64 %201
  %203 = load i32, ptr %202, align 4, !tbaa !9
  %204 = zext i32 %203 to i64
  store i64 %204, ptr %39, align 8, !tbaa !15
  invoke void @_ZNSt6vectorImSaImEE9push_backEOm(ptr noundef nonnull align 8 dereferenceable(24) %15, ptr noundef nonnull align 8 dereferenceable(8) %39)
          to label %205 unwind label %206

205:                                              ; preds = %198
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #12
  br label %247

206:                                              ; preds = %198
  %207 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %208 = extractvalue { ptr, i32 } %207, 0
  store ptr %208, ptr %19, align 8
  %209 = extractvalue { ptr, i32 } %207, 1
  store i32 %209, ptr %20, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #12
  br label %255

210:                                              ; preds = %195
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #12
  %211 = load ptr, ptr %14, align 8, !tbaa !5
  %212 = call ptr @_ZNSt6vectorIjSaIjEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %211) #12
  %213 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.222", ptr %41, i32 0, i32 0
  store ptr %212, ptr %213, align 8
  %214 = load ptr, ptr %14, align 8, !tbaa !5
  %215 = call ptr @_ZNSt6vectorIjSaIjEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %214) #12
  %216 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.222", ptr %42, i32 0, i32 0
  store ptr %215, ptr %216, align 8
  %217 = load ptr, ptr %36, align 8, !tbaa !5
  %218 = load i32, ptr %38, align 4, !tbaa !9
  %219 = zext i32 %218 to i64
  %220 = getelementptr inbounds i32, ptr %217, i64 %219
  %221 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.222", ptr %41, i32 0, i32 0
  %222 = load ptr, ptr %221, align 8
  %223 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.222", ptr %42, i32 0, i32 0
  %224 = load ptr, ptr %223, align 8
  %225 = invoke ptr @_ZSt11lower_boundIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEjET_S7_S7_RKT0_(ptr %222, ptr %224, ptr noundef nonnull align 4 dereferenceable(4) %220)
          to label %226 unwind label %238

226:                                              ; preds = %210
  %227 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.222", ptr %40, i32 0, i32 0
  store ptr %225, ptr %227, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #12
  %228 = load ptr, ptr %14, align 8, !tbaa !5
  %229 = call ptr @_ZNSt6vectorIjSaIjEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %228) #12
  %230 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.222", ptr %44, i32 0, i32 0
  store ptr %229, ptr %230, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %45, ptr align 8 %40, i64 8, i1 false), !tbaa.struct !17
  %231 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.222", ptr %44, i32 0, i32 0
  %232 = load ptr, ptr %231, align 8
  %233 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.222", ptr %45, i32 0, i32 0
  %234 = load ptr, ptr %233, align 8
  %235 = invoke noundef i64 @_ZSt8distanceIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEENSt15iterator_traitsIT_E15difference_typeES8_S8_(ptr %232, ptr %234)
          to label %236 unwind label %242

236:                                              ; preds = %226
  store i64 %235, ptr %43, align 8, !tbaa !15
  invoke void @_ZNSt6vectorImSaImEE9push_backEOm(ptr noundef nonnull align 8 dereferenceable(24) %15, ptr noundef nonnull align 8 dereferenceable(8) %43)
          to label %237 unwind label %242

237:                                              ; preds = %236
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #12
  br label %247

238:                                              ; preds = %210
  %239 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %240 = extractvalue { ptr, i32 } %239, 0
  store ptr %240, ptr %19, align 8
  %241 = extractvalue { ptr, i32 } %239, 1
  store i32 %241, ptr %20, align 4
  br label %246

242:                                              ; preds = %236, %226
  %243 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %244 = extractvalue { ptr, i32 } %243, 0
  store ptr %244, ptr %19, align 8
  %245 = extractvalue { ptr, i32 } %243, 1
  store i32 %245, ptr %20, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #12
  br label %246

246:                                              ; preds = %242, %238
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #12
  br label %255

247:                                              ; preds = %237, %205
  %248 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImSaImEE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %17) #12
  %249 = load i64, ptr %248, align 8, !tbaa !15
  %250 = add i64 %249, 1
  store i64 %250, ptr %248, align 8, !tbaa !15
  br label %251

251:                                              ; preds = %247, %176
  br label %252

252:                                              ; preds = %251
  %253 = load i32, ptr %38, align 4, !tbaa !9
  %254 = add i32 %253, 1
  store i32 %254, ptr %38, align 4, !tbaa !9
  br label %151, !llvm.loop !18

255:                                              ; preds = %246, %206, %191
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #12
  br label %259

256:                                              ; preds = %155
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #12
  br label %257

257:                                              ; preds = %256
  %258 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKjSt6vectorIjSaIjEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %32) #12
  br label %121

259:                                              ; preds = %255, %160, %156
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #12
  br label %271

260:                                              ; preds = %123
  %261 = load ptr, ptr %27, align 8, !tbaa !5
  %262 = load ptr, ptr %11, align 8, !tbaa !5
  %263 = load ptr, ptr %12, align 8, !tbaa !5
  invoke void @_ZN6Assimp3FBX12FBXConverter14ConvertClusterERSt6vectorIP6aiBoneSaIS4_EEPKNS0_7ClusterERS2_ImSaImEESD_SD_RK12aiMatrix4x4tIfEP6aiNode(ptr noundef nonnull align 8 dereferenceable(489) %53, ptr noundef nonnull align 8 dereferenceable(24) %21, ptr noundef %261, ptr noundef nonnull align 8 dereferenceable(24) %15, ptr noundef nonnull align 8 dereferenceable(24) %16, ptr noundef nonnull align 8 dereferenceable(24) %17, ptr noundef nonnull align 4 dereferenceable(64) %262, ptr noundef %263)
          to label %264 unwind label %267

264:                                              ; preds = %260
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #12
  br label %265

265:                                              ; preds = %264
  %266 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKPKN6Assimp3FBX7ClusterESt6vectorIS5_SaIS5_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %24) #12
  br label %84

267:                                              ; preds = %260
  %268 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  %269 = extractvalue { ptr, i32 } %268, 0
  store ptr %269, ptr %19, align 8
  %270 = extractvalue { ptr, i32 } %268, 1
  store i32 %270, ptr %20, align 4
  br label %271

271:                                              ; preds = %267, %259
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #12
  br label %272

272:                                              ; preds = %271, %132
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #12
  br label %273

273:                                              ; preds = %272, %128
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #12
  br label %274

274:                                              ; preds = %273, %124
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #12
  br label %275

275:                                              ; preds = %274, %95
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #12
  br label %276

276:                                              ; preds = %275
  %277 = load i32, ptr %20, align 4
  %278 = call i32 @llvm.eh.typeid.for.p0(ptr @_ZTISt9exception) #12
  %279 = icmp eq i32 %277, %278
  br i1 %279, label %280, label %336

280:                                              ; preds = %276
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #12
  %281 = load ptr, ptr %19, align 8
  %282 = call ptr @__cxa_begin_catch(ptr %281) #12
  store ptr %282, ptr %46, align 8
  %283 = call ptr @_ZNSt6vectorIP6aiBoneSaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %21) #12
  %284 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.324", ptr %47, i32 0, i32 0
  store ptr %283, ptr %284, align 8
  %285 = call ptr @_ZNSt6vectorIP6aiBoneSaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %21) #12
  %286 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.324", ptr %48, i32 0, i32 0
  store ptr %285, ptr %286, align 8
  %287 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.324", ptr %47, i32 0, i32 0
  %288 = load ptr, ptr %287, align 8
  %289 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.324", ptr %48, i32 0, i32 0
  %290 = load ptr, ptr %289, align 8
  invoke void @_ZSt8for_eachIN9__gnu_cxx17__normal_iteratorIPP6aiBoneSt6vectorIS3_SaIS3_EEEEN6Assimp3FBX4Util10delete_funIS2_EEET0_T_SF_SE_(ptr %288, ptr %290)
          to label %291 unwind label %294

291:                                              ; preds = %280
  invoke void @__cxa_rethrow() #13
          to label %346 unwind label %294

292:                                              ; preds = %86
  %293 = getelementptr inbounds %"class.Assimp::FBX::FBXConverter", ptr %53, i32 0, i32 13
  call void @_ZNSt3mapIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP6aiBoneSt4lessIS6_ESaISt4pairIS6_S8_EEE5clearEv(ptr noundef nonnull align 8 dereferenceable(48) %293) #12
  br label %299

294:                                              ; preds = %291, %280
  %295 = landingpad { ptr, i32 }
          cleanup
  %296 = extractvalue { ptr, i32 } %295, 0
  store ptr %296, ptr %19, align 8
  %297 = extractvalue { ptr, i32 } %295, 1
  store i32 %297, ptr %20, align 4
  invoke void @__cxa_end_catch()
          to label %298 unwind label %343

298:                                              ; preds = %294
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #12
  br label %336

299:                                              ; preds = %292
  %300 = call noundef zeroext i1 @_ZNKSt6vectorIP6aiBoneSaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %21) #12
  br i1 %300, label %301, label %306

301:                                              ; preds = %299
  %302 = load ptr, ptr %9, align 8, !tbaa !5
  %303 = getelementptr inbounds %struct.aiMesh, ptr %302, i32 0, i32 12
  store ptr null, ptr %303, align 8, !tbaa !20
  %304 = load ptr, ptr %9, align 8, !tbaa !5
  %305 = getelementptr inbounds %struct.aiMesh, ptr %304, i32 0, i32 11
  store i32 0, ptr %305, align 8, !tbaa !27
  store i32 1, ptr %26, align 4
  br label %333

306:                                              ; preds = %299
  %307 = call noundef i64 @_ZNKSt6vectorIP6aiBoneSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %21) #12
  %308 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %307, i64 8)
  %309 = extractvalue { i64, i1 } %308, 1
  %310 = extractvalue { i64, i1 } %308, 0
  %311 = select i1 %309, i64 -1, i64 %310
  %312 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %311) #14
          to label %313 unwind label %91

313:                                              ; preds = %306
  call void @llvm.memset.p0.i64(ptr align 8 %312, i8 0, i64 %311, i1 false)
  %314 = load ptr, ptr %9, align 8, !tbaa !5
  %315 = getelementptr inbounds %struct.aiMesh, ptr %314, i32 0, i32 12
  store ptr %312, ptr %315, align 8, !tbaa !20
  %316 = call noundef i64 @_ZNKSt6vectorIP6aiBoneSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %21) #12
  %317 = trunc i64 %316 to i32
  %318 = load ptr, ptr %9, align 8, !tbaa !5
  %319 = getelementptr inbounds %struct.aiMesh, ptr %318, i32 0, i32 11
  store i32 %317, ptr %319, align 8, !tbaa !27
  %320 = call ptr @_ZNSt6vectorIP6aiBoneSaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %21) #12
  %321 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.324", ptr %51, i32 0, i32 0
  store ptr %320, ptr %321, align 8
  %322 = call ptr @_ZNSt6vectorIP6aiBoneSaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %21) #12
  %323 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.324", ptr %52, i32 0, i32 0
  store ptr %322, ptr %323, align 8
  %324 = load ptr, ptr %9, align 8, !tbaa !5
  %325 = getelementptr inbounds %struct.aiMesh, ptr %324, i32 0, i32 12
  %326 = load ptr, ptr %325, align 8, !tbaa !20
  %327 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.324", ptr %51, i32 0, i32 0
  %328 = load ptr, ptr %327, align 8
  %329 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.324", ptr %52, i32 0, i32 0
  %330 = load ptr, ptr %329, align 8
  %331 = invoke noundef ptr @_ZSt11swap_rangesIN9__gnu_cxx17__normal_iteratorIPP6aiBoneSt6vectorIS3_SaIS3_EEEES4_ET0_T_SA_S9_(ptr %328, ptr %330, ptr noundef %326)
          to label %332 unwind label %91

332:                                              ; preds = %313
  store i32 0, ptr %26, align 4
  br label %333

333:                                              ; preds = %332, %301
  call void @llvm.lifetime.end.p0(i64 1, ptr %22) #12
  call void @_ZNSt6vectorIP6aiBoneSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %21) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr %21) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #12
  call void @_ZNSt6vectorImSaImEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr %17) #12
  call void @_ZNSt6vectorImSaImEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %16) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr %16) #12
  call void @_ZNSt6vectorImSaImEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr %15) #12
  %334 = load i32, ptr %26, align 4
  switch i32 %334, label %346 [
    i32 0, label %335
    i32 1, label %335
  ]

335:                                              ; preds = %333, %333
  ret void

336:                                              ; preds = %298, %276, %91
  call void @llvm.lifetime.end.p0(i64 1, ptr %22) #12
  call void @_ZNSt6vectorIP6aiBoneSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %21) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr %21) #12
  br label %337

337:                                              ; preds = %336, %87
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #12
  call void @_ZNSt6vectorImSaImEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr %17) #12
  call void @_ZNSt6vectorImSaImEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %16) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr %16) #12
  call void @_ZNSt6vectorImSaImEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr %15) #12
  br label %338

338:                                              ; preds = %337
  %339 = load ptr, ptr %19, align 8
  %340 = load i32, ptr %20, align 4
  %341 = insertvalue { ptr, i32 } poison, ptr %339, 0
  %342 = insertvalue { ptr, i32 } %341, i32 %340, 1
  resume { ptr, i32 } %342

343:                                              ; preds = %294
  %344 = landingpad { ptr, i32 }
          catch ptr null
  %345 = extractvalue { ptr, i32 } %344, 0
  call void @__clang_call_terminate(ptr %345) #15
  unreachable

346:                                              ; preds = %333, %291
  unreachable
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i64 @_ZSt8distanceIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEENSt15iterator_traitsIT_E15difference_typeES8_S8_(ptr, ptr) #10

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

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

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

; Function Attrs: nounwind memory(none)
declare i32 @llvm.eh.typeid.for.p0(ptr) #11

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZSt8for_eachIN9__gnu_cxx17__normal_iteratorIPP6aiBoneSt6vectorIS3_SaIS3_EEEEN6Assimp3FBX4Util10delete_funIS2_EEET0_T_SF_SE_(ptr, ptr) #9

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

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

declare void @__cxa_rethrow()

declare void @__cxa_end_catch()

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZSt11swap_rangesIN9__gnu_cxx17__normal_iteratorIPP6aiBoneSt6vectorIS3_SaIS3_EEEES4_ET0_T_SA_S9_(ptr, ptr, ptr noundef) #9

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"bool", !7, i64 0}
!13 = !{i8 0, i8 2}
!14 = !{}
!15 = !{!16, !16, i64 0}
!16 = !{!"long", !7, i64 0}
!17 = !{i64 0, i64 8, !5}
!18 = distinct !{!18, !19}
!19 = !{!"llvm.loop.mustprogress"}
!20 = !{!21, !6, i64 224}
!21 = !{!"_ZTS6aiMesh", !10, i64 0, !10, i64 4, !10, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !7, i64 48, !7, i64 112, !7, i64 176, !6, i64 208, !10, i64 216, !6, i64 224, !10, i64 232, !22, i64 236, !10, i64 1264, !6, i64 1272, !23, i64 1280, !24, i64 1284, !6, i64 1312}
!22 = !{!"_ZTS8aiString", !10, i64 0, !7, i64 4}
!23 = !{!"_ZTS16aiMorphingMethod", !7, i64 0}
!24 = !{!"_ZTS6aiAABB", !25, i64 0, !25, i64 12}
!25 = !{!"_ZTS10aiVector3tIfE", !26, i64 0, !26, i64 4, !26, i64 8}
!26 = !{!"float", !7, i64 0}
!27 = !{!21, !10, i64 216}


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

%"class.std::vector.75" = type { %"struct.std::_Vector_base.76" }
%"struct.std::_Vector_base.76" = type { %"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned long, std::allocator<unsigned long>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.318" = type { %"struct.std::_Vector_base.319" }
%"struct.std::_Vector_base.319" = type { %"struct.std::_Vector_base<aiBone *, std::allocator<aiBone *>>::_Vector_impl" }
%"struct.std::_Vector_base<aiBone *, std::allocator<aiBone *>>::_Vector_impl" = type { %"struct.std::_Vector_base<aiBone *, std::allocator<aiBone *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<aiBone *, std::allocator<aiBone *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.323" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.221" = type { ptr }

@.str.5 = external hidden unnamed_addr constant [119 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [39 x i8], align 1
@_ZTISt9exception = external constant ptr
@.str.66 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [19 x i8], align 1

; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #0

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

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

; Function Attrs: noinline noreturn nounwind uwtable
declare hidden void @__clang_call_terminate(ptr noundef) local_unnamed_addr #2

declare ptr @__cxa_begin_catch(ptr) local_unnamed_addr

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN6Assimp3FBX12FBXConverter14ConvertWeightsEP6aiMeshRKNS0_12MeshGeometryERK12aiMatrix4x4tIfEP6aiNodejPSt6vectorIjSaIjEE(ptr noundef nonnull align 8 dereferenceable(489) %0, ptr nocapture noundef %1, ptr noundef nonnull align 8 dereferenceable(1000) %2, ptr noundef nonnull align 4 dereferenceable(64) %3, ptr noundef %4, i32 noundef %5, ptr noundef %6) local_unnamed_addr #7 align 2 personality ptr @__gxx_personality_v0 {
  %8 = alloca %"class.std::vector.75", align 8
  %9 = alloca %"class.std::vector.75", align 8
  %10 = alloca %"class.std::vector.75", align 8
  %11 = alloca %"class.std::vector.318", align 8
  %12 = alloca %"class.__gnu_cxx::__normal_iterator.323", align 8
  %13 = alloca %"class.__gnu_cxx::__normal_iterator.323", align 8
  %14 = alloca i64, align 8
  %15 = alloca %"class.__gnu_cxx::__normal_iterator.221", align 8
  %16 = alloca %"class.__gnu_cxx::__normal_iterator.221", align 8
  %17 = alloca i32, align 4
  %18 = alloca i64, align 8
  %19 = alloca i64, align 8
  %20 = alloca i64, align 8
  %21 = tail call noundef ptr @_ZNK6Assimp3FBX8Geometry12DeformerSkinEv(ptr noundef nonnull align 8 dereferenceable(120) %2)
  %.not = icmp eq ptr %21, null
  br i1 %.not, label %22, label %23

22:                                               ; preds = %7
  tail call void @_ZN6Assimp17aiAssertViolationEPKcS1_i(ptr noundef nonnull @.str.64, ptr noundef nonnull @.str.5, i32 noundef 1566)
  br label %23

23:                                               ; preds = %22, %7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %8) #10
  call void @_ZNSt6vectorImSaImEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %9) #10
  call void @_ZNSt6vectorImSaImEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %10) #10
  call void @_ZNSt6vectorImSaImEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #10
  %24 = invoke noundef ptr @_ZNK6Assimp3FBX8Geometry12DeformerSkinEv(ptr noundef nonnull align 8 dereferenceable(120) %2)
          to label %25 unwind label %82

25:                                               ; preds = %23
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %11) #10
  call void @_ZNSt6vectorIP6aiBoneSaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #10
  %26 = icmp eq i32 %5, -1
  %27 = icmp ne ptr %6, null
  %or.cond = or i1 %26, %27
  br i1 %or.cond, label %.split88, label %28

28:                                               ; preds = %25
  invoke void @_ZN6Assimp17aiAssertViolationEPKcS1_i(ptr noundef nonnull @.str.65, ptr noundef nonnull @.str.5, i32 noundef 1574)
          to label %.split88 unwind label %86

.split88:                                         ; preds = %28, %25
  %29 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX4Skin8ClustersEv(ptr noundef nonnull align 8 dereferenceable(104) %24)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #10
  %30 = call ptr @_ZNKSt6vectorIPKN6Assimp3FBX7ClusterESaIS4_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %29) #10
  store ptr %30, ptr %12, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #10
  %31 = call ptr @_ZNKSt6vectorIPKN6Assimp3FBX7ClusterESaIS4_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %29) #10
  store ptr %31, ptr %13, align 8
  %32 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKPKN6Assimp3FBX7ClusterESt6vectorIS5_SaIS5_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8) %12, ptr noundef nonnull align 8 dereferenceable(8) %13) #10
  br i1 %32, label %.lr.ph89, label %._crit_edge

.lr.ph89:                                         ; preds = %.split88
  %33 = zext i32 %5 to i64
  br i1 %26, label %.lr.ph89.split.us, label %.lr.ph89.split

.lr.ph89.split.us:                                ; preds = %.lr.ph89, %43
  %34 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKPKN6Assimp3FBX7ClusterESt6vectorIS5_SaIS5_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %12) #10
  %35 = load ptr, ptr %34, align 8, !tbaa !5
  %.not64.us = icmp eq ptr %35, null
  br i1 %.not64.us, label %36, label %37

36:                                               ; preds = %.lr.ph89.split.us
  invoke void @_ZN6Assimp17aiAssertViolationEPKcS1_i(ptr noundef nonnull @.str.66, ptr noundef nonnull @.str.5, i32 noundef 1579)
          to label %37 unwind label %.split91.us

37:                                               ; preds = %36, %.lr.ph89.split.us
  %38 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX7Cluster10GetIndicesEv(ptr noundef nonnull align 8 dereferenceable(256) %35)
  %39 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX12MeshGeometry18GetMaterialIndicesEv(ptr noundef nonnull align 8 dereferenceable(1000) %2)
          to label %.split78.us unwind label %.split94.us

.split78.us:                                      ; preds = %37
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #10
  store i64 -1, ptr %14, align 8, !tbaa !9
  call void @_ZNSt6vectorImSaImEE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %10) #10
  call void @_ZNSt6vectorImSaImEE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %9) #10
  call void @_ZNSt6vectorImSaImEE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %8) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #10
  %40 = call ptr @_ZNKSt6vectorIjSaIjEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %38) #10
  store ptr %40, ptr %15, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #10
  %41 = call ptr @_ZNKSt6vectorIjSaIjEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %38) #10
  store ptr %41, ptr %16, align 8
  %42 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKjSt6vectorIjSaIjEEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8) %15, ptr noundef nonnull align 8 dereferenceable(8) %16) #10
  br i1 %42, label %.lr.ph79.us, label %._crit_edge80.split.us.us

._crit_edge80.split.us.us:                        ; preds = %._crit_edge.split.us.us.us, %.split78.us
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #10
  invoke void @_ZN6Assimp3FBX12FBXConverter14ConvertClusterERSt6vectorIP6aiBoneSaIS4_EEPKNS0_7ClusterERS2_ImSaImEESD_SD_RK12aiMatrix4x4tIfEP6aiNode(ptr noundef nonnull align 8 dereferenceable(489) %0, ptr noundef nonnull align 8 dereferenceable(24) %11, ptr noundef nonnull %35, ptr noundef nonnull align 8 dereferenceable(24) %8, ptr noundef nonnull align 8 dereferenceable(24) %9, ptr noundef nonnull align 8 dereferenceable(24) %10, ptr noundef nonnull align 4 dereferenceable(64) %3, ptr noundef %4)
          to label %43 unwind label %.split97.us

43:                                               ; preds = %._crit_edge80.split.us.us
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #10
  %44 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKPKN6Assimp3FBX7ClusterESt6vectorIS5_SaIS5_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %12) #10
  %45 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKPKN6Assimp3FBX7ClusterESt6vectorIS5_SaIS5_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8) %12, ptr noundef nonnull align 8 dereferenceable(8) %13) #10
  br i1 %45, label %.lr.ph89.split.us, label %._crit_edge

.lr.ph79.us:                                      ; preds = %.split78.us, %._crit_edge.split.us.us.us
  %46 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKjSt6vectorIjSaIjEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %15) #10
  %47 = load i32, ptr %46, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #10
  store i32 0, ptr %17, align 4, !tbaa !11
  %48 = invoke noundef ptr @_ZNK6Assimp3FBX12MeshGeometry19ToOutputVertexIndexEjRj(ptr noundef nonnull align 8 dereferenceable(1000) %2, i32 noundef %47, ptr noundef nonnull align 4 dereferenceable(4) %17)
          to label %49 unwind label %.split82.us.split.us

49:                                               ; preds = %.lr.ph79.us
  %.not65.us.us = icmp eq ptr %48, null
  br i1 %.not65.us.us, label %50, label %51

50:                                               ; preds = %49
  invoke void @_ZN6Assimp17aiAssertViolationEPKcS1_i(ptr noundef nonnull @.str.67, ptr noundef nonnull @.str.5, i32 noundef 1599)
          to label %51 unwind label %.split82.us.split.us

51:                                               ; preds = %50, %49
  invoke void @_ZNSt6vectorImSaImEE9push_backERKm(ptr noundef nonnull align 8 dereferenceable(24) %9, ptr noundef nonnull align 8 dereferenceable(8) %14)
          to label %52 unwind label %.split82.us.split.us

52:                                               ; preds = %51
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #10
  store i64 0, ptr %18, align 8, !tbaa !9
  invoke void @_ZNSt6vectorImSaImEE9push_backEOm(ptr noundef nonnull align 8 dereferenceable(24) %10, ptr noundef nonnull align 8 dereferenceable(8) %18)
          to label %53 unwind label %.split85.us.split.us

53:                                               ; preds = %52
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #10
  %54 = load i32, ptr %17, align 4, !tbaa !11
  %.not105 = icmp eq i32 %54, 0
  br i1 %.not105, label %._crit_edge.split.us.us.us, label %.lr.ph.us.us

._crit_edge.split.us.us.us:                       ; preds = %67, %53
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #10
  %55 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKjSt6vectorIjSaIjEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %15) #10
  %56 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKjSt6vectorIjSaIjEEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8) %15, ptr noundef nonnull align 8 dereferenceable(8) %16) #10
  br i1 %56, label %.lr.ph79.us, label %._crit_edge80.split.us.us

.lr.ph.us.us:                                     ; preds = %53, %67
  %indvars.iv108 = phi i64 [ %indvars.iv.next109, %67 ], [ 0, %53 ]
  %57 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImSaImEE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %9) #10
  %58 = load i64, ptr %57, align 8, !tbaa !9
  %59 = icmp eq i64 %58, -1
  br i1 %59, label %60, label %63

60:                                               ; preds = %.lr.ph.us.us
  %61 = call noundef i64 @_ZNKSt6vectorImSaImEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %8) #10
  %62 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImSaImEE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %9) #10
  store i64 %61, ptr %62, align 8, !tbaa !9
  br label %63

63:                                               ; preds = %60, %.lr.ph.us.us
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #10
  %64 = getelementptr inbounds i32, ptr %48, i64 %indvars.iv108
  %65 = load i32, ptr %64, align 4, !tbaa !11
  %66 = zext i32 %65 to i64
  store i64 %66, ptr %19, align 8, !tbaa !9
  invoke void @_ZNSt6vectorImSaImEE9push_backEOm(ptr noundef nonnull align 8 dereferenceable(24) %8, ptr noundef nonnull align 8 dereferenceable(8) %19)
          to label %67 unwind label %.split76.us.split.us.split.us

67:                                               ; preds = %63
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #10
  %68 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImSaImEE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %10) #10
  %69 = load i64, ptr %68, align 8, !tbaa !9
  %70 = add i64 %69, 1
  store i64 %70, ptr %68, align 8, !tbaa !9
  %indvars.iv.next109 = add nuw nsw i64 %indvars.iv108, 1
  %71 = load i32, ptr %17, align 4, !tbaa !11
  %72 = zext i32 %71 to i64
  %73 = icmp ult i64 %indvars.iv.next109, %72
  br i1 %73, label %.lr.ph.us.us, label %._crit_edge.split.us.us.us, !llvm.loop !13

.split91.us:                                      ; preds = %36
  %74 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  br label %158

.split94.us:                                      ; preds = %37
  %75 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  br label %158

.split97.us:                                      ; preds = %._crit_edge80.split.us.us
  %76 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  br label %157

.split82.us.split.us:                             ; preds = %51, %50, %.lr.ph79.us
  %77 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  br label %152

.split85.us.split.us:                             ; preds = %52
  %78 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  br label %114

.split76.us.split.us.split.us:                    ; preds = %63
  %79 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #10
  br label %152

._crit_edge:                                      ; preds = %153, %43, %.split88
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #10
  %80 = getelementptr inbounds i8, ptr %0, i64 392
  call void @_ZNSt3mapIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP6aiBoneSt4lessIS6_ESaISt4pairIS6_S8_EEE5clearEv(ptr noundef nonnull align 8 dereferenceable(48) %80) #10
  %81 = call noundef zeroext i1 @_ZNKSt6vectorIP6aiBoneSaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %11) #10
  br i1 %81, label %171, label %174

82:                                               ; preds = %23
  %83 = landingpad { ptr, i32 }
          cleanup
  %84 = extractvalue { ptr, i32 } %83, 0
  %85 = extractvalue { ptr, i32 } %83, 1
  br label %191

86:                                               ; preds = %180, %174, %28
  %87 = landingpad { ptr, i32 }
          cleanup
  %88 = extractvalue { ptr, i32 } %87, 0
  %89 = extractvalue { ptr, i32 } %87, 1
  br label %190

.lr.ph89.split:                                   ; preds = %.lr.ph89, %153
  %90 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKPKN6Assimp3FBX7ClusterESt6vectorIS5_SaIS5_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %12) #10
  %91 = load ptr, ptr %90, align 8, !tbaa !5
  %.not64 = icmp eq ptr %91, null
  br i1 %.not64, label %92, label %93

92:                                               ; preds = %.lr.ph89.split
  invoke void @_ZN6Assimp17aiAssertViolationEPKcS1_i(ptr noundef nonnull @.str.66, ptr noundef nonnull @.str.5, i32 noundef 1579)
          to label %93 unwind label %.split91

93:                                               ; preds = %92, %.lr.ph89.split
  %94 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX7Cluster10GetIndicesEv(ptr noundef nonnull align 8 dereferenceable(256) %91)
  %95 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK6Assimp3FBX12MeshGeometry18GetMaterialIndicesEv(ptr noundef nonnull align 8 dereferenceable(1000) %2)
          to label %.split78 unwind label %.split94

.split78:                                         ; preds = %93
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #10
  store i64 -1, ptr %14, align 8, !tbaa !9
  call void @_ZNSt6vectorImSaImEE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %10) #10
  call void @_ZNSt6vectorImSaImEE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %9) #10
  call void @_ZNSt6vectorImSaImEE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %8) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #10
  %96 = call ptr @_ZNKSt6vectorIjSaIjEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %94) #10
  store ptr %96, ptr %15, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #10
  %97 = call ptr @_ZNKSt6vectorIjSaIjEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %94) #10
  store ptr %97, ptr %16, align 8
  %98 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKjSt6vectorIjSaIjEEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8) %15, ptr noundef nonnull align 8 dereferenceable(8) %16) #10
  br i1 %98, label %.lr.ph79, label %._crit_edge80.split

._crit_edge80.split:                              ; preds = %._crit_edge.split, %.split78
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #10
  invoke void @_ZN6Assimp3FBX12FBXConverter14ConvertClusterERSt6vectorIP6aiBoneSaIS4_EEPKNS0_7ClusterERS2_ImSaImEESD_SD_RK12aiMatrix4x4tIfEP6aiNode(ptr noundef nonnull align 8 dereferenceable(489) %0, ptr noundef nonnull align 8 dereferenceable(24) %11, ptr noundef nonnull %91, ptr noundef nonnull align 8 dereferenceable(24) %8, ptr noundef nonnull align 8 dereferenceable(24) %9, ptr noundef nonnull align 8 dereferenceable(24) %10, ptr noundef nonnull align 4 dereferenceable(64) %3, ptr noundef %4)
          to label %153 unwind label %.split97

.split91:                                         ; preds = %92
  %99 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  br label %158

.split94:                                         ; preds = %93
  %100 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  br label %158

.lr.ph79:                                         ; preds = %.split78, %._crit_edge.split
  %101 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKjSt6vectorIjSaIjEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %15) #10
  %102 = load i32, ptr %101, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #10
  store i32 0, ptr %17, align 4, !tbaa !11
  %103 = invoke noundef ptr @_ZNK6Assimp3FBX12MeshGeometry19ToOutputVertexIndexEjRj(ptr noundef nonnull align 8 dereferenceable(1000) %2, i32 noundef %102, ptr noundef nonnull align 4 dereferenceable(4) %17)
          to label %104 unwind label %.split82

104:                                              ; preds = %.lr.ph79
  %.not65 = icmp eq ptr %103, null
  br i1 %.not65, label %105, label %106

105:                                              ; preds = %104
  invoke void @_ZN6Assimp17aiAssertViolationEPKcS1_i(ptr noundef nonnull @.str.67, ptr noundef nonnull @.str.5, i32 noundef 1599)
          to label %106 unwind label %.split82

106:                                              ; preds = %105, %104
  invoke void @_ZNSt6vectorImSaImEE9push_backERKm(ptr noundef nonnull align 8 dereferenceable(24) %9, ptr noundef nonnull align 8 dereferenceable(8) %14)
          to label %107 unwind label %.split82

107:                                              ; preds = %106
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #10
  store i64 0, ptr %18, align 8, !tbaa !9
  invoke void @_ZNSt6vectorImSaImEE9push_backEOm(ptr noundef nonnull align 8 dereferenceable(24) %10, ptr noundef nonnull align 8 dereferenceable(8) %18)
          to label %108 unwind label %.split85

108:                                              ; preds = %107
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #10
  %109 = load i32, ptr %17, align 4, !tbaa !11
  %.not104 = icmp eq i32 %109, 0
  br i1 %.not104, label %._crit_edge.split, label %.lr.ph

._crit_edge.split:                                ; preds = %148, %108
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #10
  %110 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKjSt6vectorIjSaIjEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %15) #10
  %111 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKjSt6vectorIjSaIjEEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8) %15, ptr noundef nonnull align 8 dereferenceable(8) %16) #10
  br i1 %111, label %.lr.ph79, label %._crit_edge80.split

.split82:                                         ; preds = %106, %105, %.lr.ph79
  %112 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  br label %152

.split85:                                         ; preds = %107
  %113 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  br label %114

114:                                              ; preds = %.split85.us.split.us, %.split85
  %.us-phi86 = phi { ptr, i32 } [ %113, %.split85 ], [ %78, %.split85.us.split.us ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #10
  br label %152

.lr.ph:                                           ; preds = %108, %148
  %indvars.iv = phi i64 [ %indvars.iv.next, %148 ], [ 0, %108 ]
  %115 = getelementptr inbounds i32, ptr %103, i64 %indvars.iv
  %116 = load i32, ptr %115, align 4, !tbaa !11
  %117 = invoke noundef i32 @_ZNK6Assimp3FBX12MeshGeometry18FaceForVertexIndexEj(ptr noundef nonnull align 8 dereferenceable(1000) %2, i32 noundef %116)
          to label %118 unwind label %.split

118:                                              ; preds = %.lr.ph
  %119 = zext i32 %117 to i64
  %120 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %95, i64 noundef %119) #10
  %121 = load i32, ptr %120, align 4, !tbaa !11
  %122 = sext i32 %121 to i64
  %123 = icmp eq i64 %122, %33
  br i1 %123, label %124, label %148

124:                                              ; preds = %118
  %125 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImSaImEE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %9) #10
  %126 = load i64, ptr %125, align 8, !tbaa !9
  %127 = icmp eq i64 %126, -1
  br i1 %127, label %128, label %132

128:                                              ; preds = %124
  %129 = call noundef i64 @_ZNKSt6vectorImSaImEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %8) #10
  %130 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImSaImEE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %9) #10
  store i64 %129, ptr %130, align 8, !tbaa !9
  br label %132

.split:                                           ; preds = %.lr.ph
  %131 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  br label %152

132:                                              ; preds = %128, %124
  %133 = call ptr @_ZNSt6vectorIjSaIjEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #10
  %134 = call ptr @_ZNSt6vectorIjSaIjEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #10
  %135 = invoke ptr @_ZSt11lower_boundIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEjET_S7_S7_RKT0_(ptr %133, ptr %134, ptr noundef nonnull align 4 dereferenceable(4) %115)
          to label %136 unwind label %144

136:                                              ; preds = %132
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #10
  %137 = call ptr @_ZNSt6vectorIjSaIjEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #10
  %138 = invoke noundef i64 @_ZSt8distanceIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEENSt15iterator_traitsIT_E15difference_typeES8_S8_(ptr %137, ptr %135)
          to label %139 unwind label %146

139:                                              ; preds = %136
  store i64 %138, ptr %20, align 8, !tbaa !9
  invoke void @_ZNSt6vectorImSaImEE9push_backEOm(ptr noundef nonnull align 8 dereferenceable(24) %8, ptr noundef nonnull align 8 dereferenceable(8) %20)
          to label %140 unwind label %146

140:                                              ; preds = %139
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #10
  %141 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorImSaImEE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %10) #10
  %142 = load i64, ptr %141, align 8, !tbaa !9
  %143 = add i64 %142, 1
  store i64 %143, ptr %141, align 8, !tbaa !9
  br label %148

144:                                              ; preds = %132
  %145 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  br label %152

146:                                              ; preds = %139, %136
  %147 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #10
  br label %152

148:                                              ; preds = %118, %140
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %149 = load i32, ptr %17, align 4, !tbaa !11
  %150 = zext i32 %149 to i64
  %151 = icmp ult i64 %indvars.iv.next, %150
  br i1 %151, label %.lr.ph, label %._crit_edge.split, !llvm.loop !13

152:                                              ; preds = %.split82, %.split82.us.split.us, %.split, %.split76.us.split.us.split.us, %146, %144, %114
  %.pn67.pn = phi { ptr, i32 } [ %.us-phi86, %114 ], [ %79, %.split76.us.split.us.split.us ], [ %131, %.split ], [ %147, %146 ], [ %145, %144 ], [ %112, %.split82 ], [ %77, %.split82.us.split.us ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #10
  br label %157

153:                                              ; preds = %._crit_edge80.split
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #10
  %154 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKPKN6Assimp3FBX7ClusterESt6vectorIS5_SaIS5_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %12) #10
  %155 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKPKN6Assimp3FBX7ClusterESt6vectorIS5_SaIS5_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8) %12, ptr noundef nonnull align 8 dereferenceable(8) %13) #10
  br i1 %155, label %.lr.ph89.split, label %._crit_edge

.split97:                                         ; preds = %._crit_edge80.split
  %156 = landingpad { ptr, i32 }
          cleanup
          catch ptr @_ZTISt9exception
  br label %157

157:                                              ; preds = %.split97, %.split97.us, %152
  %.pn67.pn.pn = phi { ptr, i32 } [ %.pn67.pn, %152 ], [ %156, %.split97 ], [ %76, %.split97.us ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #10
  br label %158

158:                                              ; preds = %.split94, %.split94.us, %.split91, %.split91.us, %157
  %.pn67.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn67.pn.pn, %157 ], [ %99, %.split91 ], [ %74, %.split91.us ], [ %100, %.split94 ], [ %75, %.split94.us ]
  %.5 = extractvalue { ptr, i32 } %.pn67.pn.pn.pn.pn, 0
  %.559 = extractvalue { ptr, i32 } %.pn67.pn.pn.pn.pn, 1
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #10
  %159 = call i32 @llvm.eh.typeid.for.p0(ptr nonnull @_ZTISt9exception) #10
  %160 = icmp eq i32 %.559, %159
  br i1 %160, label %161, label %190

161:                                              ; preds = %158
  %162 = call ptr @__cxa_begin_catch(ptr %.5) #10
  %163 = call ptr @_ZNSt6vectorIP6aiBoneSaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %11) #10
  %164 = call ptr @_ZNSt6vectorIP6aiBoneSaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %11) #10
  invoke void @_ZSt8for_eachIN9__gnu_cxx17__normal_iteratorIPP6aiBoneSt6vectorIS3_SaIS3_EEEEN6Assimp3FBX4Util10delete_funIS2_EEET0_T_SF_SE_(ptr %163, ptr %164)
          to label %165 unwind label %166

165:                                              ; preds = %161
  invoke void @__cxa_rethrow() #11
          to label %197 unwind label %166

166:                                              ; preds = %165, %161
  %167 = landingpad { ptr, i32 }
          cleanup
  invoke void @__cxa_end_catch()
          to label %168 unwind label %194

168:                                              ; preds = %166
  %169 = extractvalue { ptr, i32 } %167, 1
  %170 = extractvalue { ptr, i32 } %167, 0
  br label %190

171:                                              ; preds = %._crit_edge
  %172 = getelementptr inbounds i8, ptr %1, i64 224
  store ptr null, ptr %172, align 8, !tbaa !15
  %173 = getelementptr inbounds i8, ptr %1, i64 216
  store i32 0, ptr %173, align 8, !tbaa !22
  br label %189

174:                                              ; preds = %._crit_edge
  %175 = call noundef i64 @_ZNKSt6vectorIP6aiBoneSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %11) #10
  %176 = icmp ugt i64 %175, 2305843009213693951
  %177 = shl nuw i64 %175, 3
  %178 = select i1 %176, i64 -1, i64 %177
  %179 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %178) #12
          to label %180 unwind label %86

180:                                              ; preds = %174
  call void @llvm.memset.p0.i64(ptr nonnull align 8 %179, i8 0, i64 %178, i1 false)
  %181 = getelementptr inbounds i8, ptr %1, i64 224
  store ptr %179, ptr %181, align 8, !tbaa !15
  %182 = call noundef i64 @_ZNKSt6vectorIP6aiBoneSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %11) #10
  %183 = trunc i64 %182 to i32
  %184 = getelementptr inbounds i8, ptr %1, i64 216
  store i32 %183, ptr %184, align 8, !tbaa !22
  %185 = call ptr @_ZNSt6vectorIP6aiBoneSaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %11) #10
  %186 = call ptr @_ZNSt6vectorIP6aiBoneSaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %11) #10
  %187 = load ptr, ptr %181, align 8, !tbaa !15
  %188 = invoke noundef ptr @_ZSt11swap_rangesIN9__gnu_cxx17__normal_iteratorIPP6aiBoneSt6vectorIS3_SaIS3_EEEES4_ET0_T_SA_S9_(ptr %185, ptr %186, ptr noundef %187)
          to label %189 unwind label %86

189:                                              ; preds = %180, %171
  call void @_ZNSt6vectorIP6aiBoneSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11) #10
  call void @_ZNSt6vectorImSaImEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) #10
  call void @_ZNSt6vectorImSaImEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #10
  call void @_ZNSt6vectorImSaImEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) #10
  ret void

190:                                              ; preds = %168, %158, %86
  %.660 = phi i32 [ %169, %168 ], [ %.559, %158 ], [ %89, %86 ]
  %.6 = phi ptr [ %170, %168 ], [ %.5, %158 ], [ %88, %86 ]
  call void @_ZNSt6vectorIP6aiBoneSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11) #10
  br label %191

191:                                              ; preds = %190, %82
  %.761 = phi i32 [ %.660, %190 ], [ %85, %82 ]
  %.7 = phi ptr [ %.6, %190 ], [ %84, %82 ]
  call void @_ZNSt6vectorImSaImEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) #10
  call void @_ZNSt6vectorImSaImEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #10
  call void @_ZNSt6vectorImSaImEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) #10
  %192 = insertvalue { ptr, i32 } poison, ptr %.7, 0
  %193 = insertvalue { ptr, i32 } %192, i32 %.761, 1
  resume { ptr, i32 } %193

194:                                              ; preds = %166
  %195 = landingpad { ptr, i32 }
          catch ptr null
  %196 = extractvalue { ptr, i32 } %195, 0
  call void @__clang_call_terminate(ptr %196) #13
  unreachable

197:                                              ; preds = %165
  unreachable
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i64 @_ZSt8distanceIN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEEENSt15iterator_traitsIT_E15difference_typeES8_S8_(ptr, ptr) local_unnamed_addr #8

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

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

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

; Function Attrs: nofree nosync nounwind memory(none)
declare i32 @llvm.eh.typeid.for.p0(ptr) #9

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZSt8for_eachIN9__gnu_cxx17__normal_iteratorIPP6aiBoneSt6vectorIS3_SaIS3_EEEEN6Assimp3FBX4Util10delete_funIS2_EEET0_T_SF_SE_(ptr, ptr) local_unnamed_addr #7

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

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

declare void @__cxa_rethrow() local_unnamed_addr

declare void @__cxa_end_catch() local_unnamed_addr

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZSt11swap_rangesIN9__gnu_cxx17__normal_iteratorIPP6aiBoneSt6vectorIS3_SaIS3_EEEES4_ET0_T_SA_S9_(ptr, ptr, ptr noundef) local_unnamed_addr #7

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"long", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"int", !7, i64 0}
!13 = distinct !{!13, !14}
!14 = !{!"llvm.loop.mustprogress"}
!15 = !{!16, !6, i64 224}
!16 = !{!"_ZTS6aiMesh", !12, i64 0, !12, i64 4, !12, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !7, i64 48, !7, i64 112, !7, i64 176, !6, i64 208, !12, i64 216, !6, i64 224, !12, i64 232, !17, i64 236, !12, i64 1264, !6, i64 1272, !18, i64 1280, !19, i64 1284, !6, i64 1312}
!17 = !{!"_ZTS8aiString", !12, i64 0, !7, i64 4}
!18 = !{!"_ZTS16aiMorphingMethod", !7, i64 0}
!19 = !{!"_ZTS6aiAABB", !20, i64 0, !20, i64 12}
!20 = !{!"_ZTS10aiVector3tIfE", !21, i64 0, !21, i64 4, !21, i64 8}
!21 = !{!"float", !7, i64 0}
!22 = !{!16, !12, i64 216}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LICMPass,LoopInstSimplifyPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,SROAPass,SimplifyCFGPass,TailCallElimPass