; LLVM IR from Overload-Technologies/Overload :: Dependencies/assimp/code/Common (SceneCombiner)

; 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::unordered_set" = type { %"class.std::_Hashtable" }
%"class.std::_Hashtable" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.std::__detail::_Hash_node_base" = type { ptr }
%"struct.std::__detail::_Prime_rehash_policy" = type { float, i64 }
%"struct.std::pair.23" = type <{ %"struct.std::__detail::_Node_iterator", i8, [7 x i8] }>
%"struct.std::__detail::_Node_iterator" = type { %"struct.std::__detail::_Node_iterator_base" }
%"struct.std::__detail::_Node_iterator_base" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.26" = type { ptr }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<Assimp::SceneHelper, std::allocator<Assimp::SceneHelper>>::_Vector_impl" }
%"struct.std::_Vector_base<Assimp::SceneHelper, std::allocator<Assimp::SceneHelper>>::_Vector_impl" = type { %"struct.std::_Vector_base<Assimp::SceneHelper, std::allocator<Assimp::SceneHelper>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Assimp::SceneHelper, std::allocator<Assimp::SceneHelper>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.0" = type { i8 }
%"struct.Assimp::SceneHelper" = type { ptr, [32 x i8], i32, %"class.std::set" }
%"class.std::set" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<unsigned int, unsigned int, std::_Identity<unsigned int>, std::less<unsigned int>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<unsigned int, unsigned int, std::_Identity<unsigned int>, std::less<unsigned int>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"class.std::vector.27" = type { %"struct.std::_Vector_base.28" }
%"struct.std::_Vector_base.28" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.29" = type { i8 }
%"struct.std::pair" = type <{ %"struct.std::_Rb_tree_const_iterator", i8, [7 x i8] }>
%"struct.std::_Rb_tree_const_iterator" = type { ptr }
%struct.aiString = type { i32, [1024 x i8] }
%"class.std::vector.13" = type { %"struct.std::_Vector_base.14" }
%"struct.std::_Vector_base.14" = type { %"struct.std::_Vector_base<Assimp::NodeAttachmentInfo, std::allocator<Assimp::NodeAttachmentInfo>>::_Vector_impl" }
%"struct.std::_Vector_base<Assimp::NodeAttachmentInfo, std::allocator<Assimp::NodeAttachmentInfo>>::_Vector_impl" = type { %"struct.std::_Vector_base<Assimp::NodeAttachmentInfo, std::allocator<Assimp::NodeAttachmentInfo>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Assimp::NodeAttachmentInfo, std::allocator<Assimp::NodeAttachmentInfo>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%"struct.Assimp::AttachmentInfo" = type { ptr, ptr }
%struct.aiScene = type { i32, ptr, i32, ptr, i32, ptr, i32, ptr, i32, ptr, i32, ptr, i32, ptr, ptr, %struct.aiString, i32, ptr, ptr }
%struct.aiAnimation = type { %struct.aiString, double, double, i32, ptr, i32, ptr, i32, ptr }
%struct.aiMaterial = type { ptr, i32, i32 }
%struct.aiMaterialProperty = type { %struct.aiString, i32, i32, i32, i32, ptr }
%struct.aiMesh = type { i32, i32, i32, ptr, ptr, ptr, ptr, [8 x ptr], [8 x ptr], [8 x i32], ptr, i32, ptr, i32, %struct.aiString, i32, ptr, i32, %struct.aiAABB, ptr }
%struct.aiAABB = type { %class.aiVector3t, %class.aiVector3t }
%class.aiVector3t = type { float, float, float }
%struct.aiBone = type { %struct.aiString, i32, ptr, ptr, ptr, %class.aiMatrix4x4t }
%class.aiMatrix4x4t = type { float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float }
%struct.aiLight = type { %struct.aiString, i32, %class.aiVector3t, %class.aiVector3t, %class.aiVector3t, float, float, float, %struct.aiColor3D, %struct.aiColor3D, %struct.aiColor3D, float, float, %class.aiVector2t }
%struct.aiColor3D = type { float, float, float }
%class.aiVector2t = type { float, float }
%struct.aiCamera = type { %struct.aiString, %class.aiVector3t, %class.aiVector3t, %class.aiVector3t, float, float, float, float, float }
%struct.aiNodeAnim = type { %struct.aiString, i32, ptr, i32, ptr, i32, ptr, i32, i32 }
%"struct.Assimp::NodeAttachmentInfo" = type { ptr, ptr, i8, i64 }
%struct.aiNode = type { %struct.aiString, %class.aiMatrix4x4t, ptr, i32, ptr, i32, ptr, ptr }

@.str.4 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [2 x i8], align 1

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

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i8 } @_ZNSt3setIjSt4lessIjESaIjEE6insertEOj(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 4 dereferenceable(4)) #0 align 2

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_Z13SuperFastHashPKcjj(ptr noundef, i32 noundef, i32 noundef) #2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Assimp13SceneCombiner15AddNodePrefixesEP6aiNodePKcj(ptr noundef, ptr noundef, i32 noundef) #0 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6Assimp12PrefixStringER8aiStringPKcj(ptr noundef nonnull align 4 dereferenceable(1028), ptr noundef, i32 noundef) #3

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN6Assimp13SceneCombiner13FindNameMatchERK8aiStringRSt6vectorINS_11SceneHelperESaIS5_EEj(ptr noundef nonnull align 4 dereferenceable(1028), ptr noundef nonnull align 8 dereferenceable(24), i32 noundef) #0 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Assimp13SceneCombiner21OffsetNodeMeshIndicesEP6aiNodej(ptr noundef, i32 noundef) #0 align 2

; Function Attrs: nounwind
declare void @_ZN7aiSceneD1Ev(ptr noundef nonnull align 8 dereferenceable(1168)) unnamed_addr #5

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Assimp13SceneCombiner13CopySceneFlatEPP7aiScenePKS1_(ptr noundef, ptr noundef) #0 align 2

declare void @_ZN7aiSceneC1Ev(ptr noundef nonnull align 8 dereferenceable(1168)) unnamed_addr #6

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN6Assimp13SceneCombiner11MergeScenesEPP7aiSceneS2_RSt6vectorINS_14AttachmentInfoESaIS5_EEj(ptr noundef %0, ptr noundef %1, ptr noundef nonnull align 8 dereferenceable(24) %2, i32 noundef %3) #0 align 2 personality ptr @__gxx_personality_v0 {
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca i32, align 4
  %9 = alloca %"class.std::unordered_set", align 8
  %10 = alloca ptr, align 8
  %11 = alloca i32, align 4
  %12 = alloca %"struct.std::pair.23", align 8
  %13 = alloca ptr, align 8
  %14 = alloca %"class.__gnu_cxx::__normal_iterator.26", align 8
  %15 = alloca %"class.__gnu_cxx::__normal_iterator.26", align 8
  %16 = alloca ptr, align 8
  %17 = alloca %"struct.std::pair.23", align 8
  %18 = alloca ptr, align 8
  %19 = alloca %"struct.std::__detail::_Node_iterator", align 8
  %20 = alloca %"struct.std::__detail::_Node_iterator", align 8
  %21 = alloca ptr, align 8
  %22 = alloca ptr, align 8
  %23 = alloca %"class.std::vector", align 8
  %24 = alloca %"class.std::allocator.0", align 1
  %25 = alloca i32, align 4
  %26 = alloca %"struct.Assimp::SceneHelper", align 8
  %27 = alloca %"class.std::vector.27", align 8
  %28 = alloca i32, align 4
  %29 = alloca %"class.std::allocator.29", align 1
  %30 = alloca %"class.std::vector.27", align 8
  %31 = alloca %"class.std::allocator.29", align 1
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca ptr, align 8
  %38 = alloca i32, align 4
  %39 = alloca %"struct.std::pair", align 8
  %40 = alloca i32, align 4
  %41 = alloca i32, align 4
  %42 = alloca ptr, align 8
  %43 = alloca ptr, align 8
  %44 = alloca i32, align 4
  %45 = alloca ptr, align 8
  %46 = alloca i32, align 4
  %47 = alloca ptr, align 8
  %48 = alloca i32, align 4
  %49 = alloca ptr, align 8
  %50 = alloca i32, align 4
  %51 = alloca i32, align 4
  %52 = alloca ptr, align 8
  %53 = alloca %struct.aiString, align 4
  %54 = alloca i32, align 4
  %55 = alloca i32, align 4
  %56 = alloca ptr, align 8
  %57 = alloca ptr, align 8
  %58 = alloca i32, align 4
  %59 = alloca ptr, align 8
  %60 = alloca i32, align 4
  %61 = alloca %"class.std::vector.13", align 8
  %62 = alloca ptr, align 8
  %63 = alloca ptr, align 8
  %64 = alloca i64, align 8
  %65 = alloca i1, align 1
  %66 = alloca ptr, align 8
  %67 = alloca ptr, align 8
  %68 = alloca i64, align 8
  %69 = alloca i1, align 1
  %70 = alloca ptr, align 8
  %71 = alloca ptr, align 8
  %72 = alloca i64, align 8
  %73 = alloca i1, align 1
  %74 = alloca i32, align 4
  %75 = alloca ptr, align 8
  %76 = alloca ptr, align 8
  %77 = alloca i32, align 4
  %78 = alloca ptr, align 8
  %79 = alloca i32, align 4
  %80 = alloca i32, align 4
  %81 = alloca i32, align 4
  %82 = alloca i32, align 4
  %83 = alloca i32, align 4
  %84 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %85 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %86 = alloca i32, align 4
  %87 = alloca i32, align 4
  %88 = alloca ptr, align 8
  store ptr %0, ptr %5, align 8, !tbaa !5
  store ptr %1, ptr %6, align 8, !tbaa !5
  store ptr %2, ptr %7, align 8, !tbaa !5
  store i32 %3, ptr %8, align 4, !tbaa !9
  %89 = load ptr, ptr %5, align 8, !tbaa !5
  %90 = icmp eq ptr null, %89
  br i1 %90, label %91, label %151

91:                                               ; preds = %4
  call void @llvm.lifetime.start.p0(i64 56, ptr %9) #12
  call void @_ZNSt13unordered_setIP7aiSceneSt4hashIS1_ESt8equal_toIS1_ESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %9) #12
  %92 = invoke { ptr, i8 } @_ZNSt13unordered_setIP7aiSceneSt4hashIS1_ESt8equal_toIS1_ESaIS1_EE6insertERKS1_(ptr noundef nonnull align 8 dereferenceable(56) %9, ptr noundef nonnull align 8 dereferenceable(8) %6)
          to label %93 unwind label %108

93:                                               ; preds = %91
  %94 = getelementptr inbounds { ptr, i8 }, ptr %12, i32 0, i32 0
  %95 = extractvalue { ptr, i8 } %92, 0
  store ptr %95, ptr %94, align 8
  %96 = getelementptr inbounds { ptr, i8 }, ptr %12, i32 0, i32 1
  %97 = extractvalue { ptr, i8 } %92, 1
  store i8 %97, ptr %96, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #12
  %98 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %98, ptr %13, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #12
  %99 = load ptr, ptr %13, align 8, !tbaa !5
  %100 = call ptr @_ZNSt6vectorIN6Assimp14AttachmentInfoESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %99) #12
  %101 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.26", ptr %14, i32 0, i32 0
  store ptr %100, ptr %101, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #12
  %102 = load ptr, ptr %13, align 8, !tbaa !5
  %103 = call ptr @_ZNSt6vectorIN6Assimp14AttachmentInfoESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %102) #12
  %104 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.26", ptr %15, i32 0, i32 0
  store ptr %103, ptr %104, align 8
  br label %105

105:                                              ; preds = %122, %93
  %106 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN6Assimp14AttachmentInfoESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %14, ptr noundef nonnull align 8 dereferenceable(8) %15) #12
  br i1 %106, label %112, label %107

107:                                              ; preds = %105
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #12
  br label %128

108:                                              ; preds = %91
  %109 = landingpad { ptr, i32 }
          cleanup
  %110 = extractvalue { ptr, i32 } %109, 0
  store ptr %110, ptr %10, align 8
  %111 = extractvalue { ptr, i32 } %109, 1
  store i32 %111, ptr %11, align 4
  br label %150

112:                                              ; preds = %105
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #12
  %113 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN6Assimp14AttachmentInfoESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %14) #12
  store ptr %113, ptr %16, align 8, !tbaa !5
  %114 = load ptr, ptr %16, align 8, !tbaa !5
  %115 = getelementptr inbounds %"struct.Assimp::AttachmentInfo", ptr %114, i32 0, i32 0
  %116 = invoke { ptr, i8 } @_ZNSt13unordered_setIP7aiSceneSt4hashIS1_ESt8equal_toIS1_ESaIS1_EE6insertERKS1_(ptr noundef nonnull align 8 dereferenceable(56) %9, ptr noundef nonnull align 8 dereferenceable(8) %115)
          to label %117 unwind label %124

117:                                              ; preds = %112
  %118 = getelementptr inbounds { ptr, i8 }, ptr %17, i32 0, i32 0
  %119 = extractvalue { ptr, i8 } %116, 0
  store ptr %119, ptr %118, align 8
  %120 = getelementptr inbounds { ptr, i8 }, ptr %17, i32 0, i32 1
  %121 = extractvalue { ptr, i8 } %116, 1
  store i8 %121, ptr %120, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #12
  br label %122

122:                                              ; preds = %117
  %123 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN6Assimp14AttachmentInfoESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %14) #12
  br label %105

124:                                              ; preds = %112
  %125 = landingpad { ptr, i32 }
          cleanup
  %126 = extractvalue { ptr, i32 } %125, 0
  store ptr %126, ptr %10, align 8
  %127 = extractvalue { ptr, i32 } %125, 1
  store i32 %127, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #12
  br label %150

128:                                              ; preds = %107
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #12
  store ptr %9, ptr %18, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #12
  %129 = load ptr, ptr %18, align 8, !tbaa !5
  %130 = call ptr @_ZNSt13unordered_setIP7aiSceneSt4hashIS1_ESt8equal_toIS1_ESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(56) %129) #12
  %131 = getelementptr inbounds %"struct.std::__detail::_Node_iterator", ptr %19, i32 0, i32 0
  %132 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %131, i32 0, i32 0
  store ptr %130, ptr %132, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #12
  %133 = load ptr, ptr %18, align 8, !tbaa !5
  %134 = call ptr @_ZNSt13unordered_setIP7aiSceneSt4hashIS1_ESt8equal_toIS1_ESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %133) #12
  %135 = getelementptr inbounds %"struct.std::__detail::_Node_iterator", ptr %20, i32 0, i32 0
  %136 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %135, i32 0, i32 0
  store ptr %134, ptr %136, align 8
  br label %137

137:                                              ; preds = %147, %128
  %138 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseIP7aiSceneLb0EEES5_(ptr noundef nonnull align 8 dereferenceable(8) %19, ptr noundef nonnull align 8 dereferenceable(8) %20) #12
  br i1 %138, label %140, label %139

139:                                              ; preds = %137
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #12
  br label %149

140:                                              ; preds = %137
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #12
  %141 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8__detail14_Node_iteratorIP7aiSceneLb1ELb0EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %19) #12
  store ptr %141, ptr %21, align 8, !tbaa !5
  %142 = load ptr, ptr %21, align 8, !tbaa !5
  %143 = load ptr, ptr %142, align 8, !tbaa !5
  %144 = icmp eq ptr %143, null
  br i1 %144, label %146, label %145

145:                                              ; preds = %140
  call void @_ZN7aiSceneD1Ev(ptr noundef nonnull align 8 dereferenceable(1168) %143) #12
  call void @_ZdlPvm(ptr noundef %143, i64 noundef 1168) #13
  br label %146

146:                                              ; preds = %145, %140
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #12
  br label %147

147:                                              ; preds = %146
  %148 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8__detail14_Node_iteratorIP7aiSceneLb1ELb0EEppEv(ptr noundef nonnull align 8 dereferenceable(8) %19) #12
  br label %137

149:                                              ; preds = %139
  call void @_ZNSt13unordered_setIP7aiSceneSt4hashIS1_ESt8equal_toIS1_ESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %9) #12
  call void @llvm.lifetime.end.p0(i64 56, ptr %9) #12
  br label %1725

150:                                              ; preds = %124, %108
  call void @_ZNSt13unordered_setIP7aiSceneSt4hashIS1_ESt8equal_toIS1_ESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %9) #12
  call void @llvm.lifetime.end.p0(i64 56, ptr %9) #12
  br label %1736

151:                                              ; preds = %4
  %152 = load ptr, ptr %7, align 8, !tbaa !5
  %153 = call noundef zeroext i1 @_ZNKSt6vectorIN6Assimp14AttachmentInfoESaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %152) #12
  br i1 %153, label %154, label %169

154:                                              ; preds = %151
  %155 = load ptr, ptr %5, align 8, !tbaa !5
  %156 = load ptr, ptr %155, align 8, !tbaa !5
  %157 = icmp ne ptr %156, null
  br i1 %157, label %158, label %165

158:                                              ; preds = %154
  %159 = load ptr, ptr %5, align 8, !tbaa !5
  %160 = load ptr, ptr %6, align 8, !tbaa !5
  call void @_ZN6Assimp13SceneCombiner13CopySceneFlatEPP7aiScenePKS1_(ptr noundef %159, ptr noundef %160)
  %161 = load ptr, ptr %6, align 8, !tbaa !5
  %162 = icmp eq ptr %161, null
  br i1 %162, label %164, label %163

163:                                              ; preds = %158
  call void @_ZN7aiSceneD1Ev(ptr noundef nonnull align 8 dereferenceable(1168) %161) #12
  call void @_ZdlPvm(ptr noundef %161, i64 noundef 1168) #13
  br label %164

164:                                              ; preds = %163, %158
  br label %168

165:                                              ; preds = %154
  %166 = load ptr, ptr %6, align 8, !tbaa !5
  %167 = load ptr, ptr %5, align 8, !tbaa !5
  store ptr %166, ptr %167, align 8, !tbaa !5
  br label %168

168:                                              ; preds = %165, %164
  br label %1725

169:                                              ; preds = %151
  %170 = load ptr, ptr %5, align 8, !tbaa !5
  %171 = load ptr, ptr %170, align 8, !tbaa !5
  %172 = icmp ne ptr %171, null
  br i1 %172, label %173, label %178

173:                                              ; preds = %169
  %174 = load ptr, ptr %5, align 8, !tbaa !5
  %175 = load ptr, ptr %174, align 8, !tbaa !5
  call void @_ZN7aiSceneD1Ev(ptr noundef nonnull align 8 dereferenceable(1168) %175) #12
  %176 = load ptr, ptr %5, align 8, !tbaa !5
  %177 = load ptr, ptr %176, align 8, !tbaa !5
  call void @_ZN7aiSceneC1Ev(ptr noundef nonnull align 8 dereferenceable(1168) %177)
  br label %186

178:                                              ; preds = %169
  %179 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 1168) #14
  invoke void @_ZN7aiSceneC1Ev(ptr noundef nonnull align 8 dereferenceable(1168) %179)
          to label %180 unwind label %182

180:                                              ; preds = %178
  %181 = load ptr, ptr %5, align 8, !tbaa !5
  store ptr %179, ptr %181, align 8, !tbaa !5
  br label %186

182:                                              ; preds = %178
  %183 = landingpad { ptr, i32 }
          cleanup
  %184 = extractvalue { ptr, i32 } %183, 0
  store ptr %184, ptr %10, align 8
  %185 = extractvalue { ptr, i32 } %183, 1
  store i32 %185, ptr %11, align 4
  call void @_ZdlPvm(ptr noundef %179, i64 noundef 1168) #13
  br label %1736

186:                                              ; preds = %180, %173
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #12
  %187 = load ptr, ptr %5, align 8, !tbaa !5
  %188 = load ptr, ptr %187, align 8, !tbaa !5
  store ptr %188, ptr %22, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr %23) #12
  %189 = load ptr, ptr %7, align 8, !tbaa !5
  %190 = call noundef i64 @_ZNKSt6vectorIN6Assimp14AttachmentInfoESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %189) #12
  %191 = add i64 %190, 1
  call void @llvm.lifetime.start.p0(i64 1, ptr %24) #12
  call void @_ZNSaIN6Assimp11SceneHelperEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #12
  invoke void @_ZNSt6vectorIN6Assimp11SceneHelperESaIS1_EEC2EmRKS2_(ptr noundef nonnull align 8 dereferenceable(24) %23, i64 noundef %191, ptr noundef nonnull align 1 dereferenceable(1) %24)
          to label %192 unwind label %203

192:                                              ; preds = %186
  call void @_ZNSt15__new_allocatorIN6Assimp11SceneHelperEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %24) #12
  %193 = load ptr, ptr %6, align 8, !tbaa !5
  %194 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN6Assimp11SceneHelperESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %23, i64 noundef 0) #12
  %195 = getelementptr inbounds %"struct.Assimp::SceneHelper", ptr %194, i32 0, i32 0
  store ptr %193, ptr %195, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #12
  store i32 0, ptr %25, align 4, !tbaa !9
  br label %196

196:                                              ; preds = %220, %192
  %197 = load i32, ptr %25, align 4, !tbaa !9
  %198 = zext i32 %197 to i64
  %199 = load ptr, ptr %7, align 8, !tbaa !5
  %200 = call noundef i64 @_ZNKSt6vectorIN6Assimp14AttachmentInfoESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %199) #12
  %201 = icmp ult i64 %198, %200
  br i1 %201, label %207, label %202

202:                                              ; preds = %196
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #12
  br label %227

203:                                              ; preds = %186
  %204 = landingpad { ptr, i32 }
          cleanup
  %205 = extractvalue { ptr, i32 } %204, 0
  store ptr %205, ptr %10, align 8
  %206 = extractvalue { ptr, i32 } %204, 1
  store i32 %206, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIN6Assimp11SceneHelperEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %24) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %24) #12
  br label %1735

207:                                              ; preds = %196
  call void @llvm.lifetime.start.p0(i64 96, ptr %26) #12
  %208 = load ptr, ptr %7, align 8, !tbaa !5
  %209 = load i32, ptr %25, align 4, !tbaa !9
  %210 = zext i32 %209 to i64
  %211 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN6Assimp14AttachmentInfoESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %208, i64 noundef %210) #12
  %212 = getelementptr inbounds %"struct.Assimp::AttachmentInfo", ptr %211, i32 0, i32 0
  %213 = load ptr, ptr %212, align 8, !tbaa !22
  invoke void @_ZN6Assimp11SceneHelperC2EP7aiScene(ptr noundef nonnull align 8 dereferenceable(96) %26, ptr noundef %213)
          to label %214 unwind label %223

214:                                              ; preds = %207
  %215 = load i32, ptr %25, align 4, !tbaa !9
  %216 = add i32 %215, 1
  %217 = zext i32 %216 to i64
  %218 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN6Assimp11SceneHelperESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %23, i64 noundef %217) #12
  %219 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZN6Assimp11SceneHelperaSEOS0_(ptr noundef nonnull align 8 dereferenceable(96) %218, ptr noundef nonnull align 8 dereferenceable(96) %26) #12
  call void @_ZN6Assimp11SceneHelperD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %26) #12
  call void @llvm.lifetime.end.p0(i64 96, ptr %26) #12
  br label %220

220:                                              ; preds = %214
  %221 = load i32, ptr %25, align 4, !tbaa !9
  %222 = add i32 %221, 1
  store i32 %222, ptr %25, align 4, !tbaa !9
  br label %196, !llvm.loop !24

223:                                              ; preds = %207
  %224 = landingpad { ptr, i32 }
          cleanup
  %225 = extractvalue { ptr, i32 } %224, 0
  store ptr %225, ptr %10, align 8
  %226 = extractvalue { ptr, i32 } %224, 1
  store i32 %226, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 96, ptr %26) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #12
  br label %1734

227:                                              ; preds = %202
  call void @llvm.lifetime.start.p0(i64 24, ptr %27) #12
  %228 = call noundef i64 @_ZNKSt6vectorIN6Assimp11SceneHelperESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %23) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #12
  store i32 -1, ptr %28, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %29) #12
  call void @_ZNSaIjEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #12
  invoke void @_ZNSt6vectorIjSaIjEEC2EmRKjRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %27, i64 noundef %228, ptr noundef nonnull align 4 dereferenceable(4) %28, ptr noundef nonnull align 1 dereferenceable(1) %29)
          to label %229 unwind label %238

229:                                              ; preds = %227
  call void @_ZNSt15__new_allocatorIjED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %29) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #12
  call void @llvm.lifetime.start.p0(i64 24, ptr %30) #12
  %230 = call noundef i64 @_ZNKSt6vectorIN6Assimp11SceneHelperESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %23) #12
  call void @llvm.lifetime.start.p0(i64 1, ptr %31) #12
  call void @_ZNSaIjEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #12
  invoke void @_ZNSt6vectorIjSaIjEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %30, i64 noundef %230, ptr noundef nonnull align 1 dereferenceable(1) %31)
          to label %231 unwind label %242

231:                                              ; preds = %229
  call void @_ZNSt15__new_allocatorIjED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %31) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #12
  store i32 0, ptr %32, align 4, !tbaa !9
  br label %232

232:                                              ; preds = %295, %231
  %233 = load i32, ptr %32, align 4, !tbaa !9
  %234 = zext i32 %233 to i64
  %235 = call noundef i64 @_ZNKSt6vectorIN6Assimp11SceneHelperESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %23) #12
  %236 = icmp ult i64 %234, %235
  br i1 %236, label %246, label %237

237:                                              ; preds = %232
  store i32 9, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #12
  br label %298

238:                                              ; preds = %227
  %239 = landingpad { ptr, i32 }
          cleanup
  %240 = extractvalue { ptr, i32 } %239, 0
  store ptr %240, ptr %10, align 8
  %241 = extractvalue { ptr, i32 } %239, 1
  store i32 %241, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIjED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %29) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %29) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #12
  br label %1733

242:                                              ; preds = %229
  %243 = landingpad { ptr, i32 }
          cleanup
  %244 = extractvalue { ptr, i32 } %243, 0
  store ptr %244, ptr %10, align 8
  %245 = extractvalue { ptr, i32 } %243, 1
  store i32 %245, ptr %11, align 4
  call void @_ZNSt15__new_allocatorIjED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %31) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr %31) #12
  br label %1732

246:                                              ; preds = %232
  %247 = load i32, ptr %32, align 4, !tbaa !9
  %248 = zext i32 %247 to i64
  %249 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %27, i64 noundef %248) #12
  %250 = load i32, ptr %249, align 4, !tbaa !9
  %251 = load i32, ptr %32, align 4, !tbaa !9
  %252 = icmp ne i32 %250, %251
  br i1 %252, label %253, label %260

253:                                              ; preds = %246
  %254 = load i32, ptr %32, align 4, !tbaa !9
  %255 = zext i32 %254 to i64
  %256 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %27, i64 noundef %255) #12
  %257 = load i32, ptr %256, align 4, !tbaa !9
  %258 = icmp ne i32 %257, -1
  br i1 %258, label %259, label %260

259:                                              ; preds = %253
  br label %295

260:                                              ; preds = %253, %246
  %261 = load i32, ptr %32, align 4, !tbaa !9
  %262 = load i32, ptr %32, align 4, !tbaa !9
  %263 = zext i32 %262 to i64
  %264 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %27, i64 noundef %263) #12
  store i32 %261, ptr %264, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #12
  %265 = load i32, ptr %32, align 4, !tbaa !9
  %266 = add i32 %265, 1
  store i32 %266, ptr %34, align 4, !tbaa !9
  br label %267

267:                                              ; preds = %291, %260
  %268 = load i32, ptr %34, align 4, !tbaa !9
  %269 = zext i32 %268 to i64
  %270 = call noundef i64 @_ZNKSt6vectorIN6Assimp11SceneHelperESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %23) #12
  %271 = icmp ult i64 %269, %270
  br i1 %271, label %273, label %272

272:                                              ; preds = %267
  store i32 12, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #12
  br label %294

273:                                              ; preds = %267
  %274 = load i32, ptr %32, align 4, !tbaa !9
  %275 = zext i32 %274 to i64
  %276 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN6Assimp11SceneHelperESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %23, i64 noundef %275) #12
  %277 = getelementptr inbounds %"struct.Assimp::SceneHelper", ptr %276, i32 0, i32 0
  %278 = load ptr, ptr %277, align 8, !tbaa !11
  %279 = load i32, ptr %34, align 4, !tbaa !9
  %280 = zext i32 %279 to i64
  %281 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN6Assimp11SceneHelperESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %23, i64 noundef %280) #12
  %282 = getelementptr inbounds %"struct.Assimp::SceneHelper", ptr %281, i32 0, i32 0
  %283 = load ptr, ptr %282, align 8, !tbaa !11
  %284 = icmp eq ptr %278, %283
  br i1 %284, label %285, label %290

285:                                              ; preds = %273
  %286 = load i32, ptr %32, align 4, !tbaa !9
  %287 = load i32, ptr %34, align 4, !tbaa !9
  %288 = zext i32 %287 to i64
  %289 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %27, i64 noundef %288) #12
  store i32 %286, ptr %289, align 4, !tbaa !9
  br label %290

290:                                              ; preds = %285, %273
  br label %291

291:                                              ; preds = %290
  %292 = load i32, ptr %34, align 4, !tbaa !9
  %293 = add i32 %292, 1
  store i32 %293, ptr %34, align 4, !tbaa !9
  br label %267, !llvm.loop !26

294:                                              ; preds = %272
  br label %295

295:                                              ; preds = %294, %259
  %296 = load i32, ptr %32, align 4, !tbaa !9
  %297 = add i32 %296, 1
  store i32 %297, ptr %32, align 4, !tbaa !9
  br label %232, !llvm.loop !27

298:                                              ; preds = %237
  %299 = load i32, ptr %8, align 4, !tbaa !9
  %300 = and i32 %299, 1
  %301 = icmp ne i32 %300, 0
  br i1 %301, label %302, label %408

302:                                              ; preds = %298
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #12
  store i32 1, ptr %35, align 4, !tbaa !9
  br label %303

303:                                              ; preds = %403, %302
  %304 = load i32, ptr %35, align 4, !tbaa !9
  %305 = zext i32 %304 to i64
  %306 = call noundef i64 @_ZNKSt6vectorIN6Assimp11SceneHelperESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %23) #12
  %307 = icmp ult i64 %305, %306
  br i1 %307, label %309, label %308

308:                                              ; preds = %303
  store i32 15, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #12
  br label %407

309:                                              ; preds = %303
  %310 = load i32, ptr %35, align 4, !tbaa !9
  %311 = zext i32 %310 to i64
  %312 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN6Assimp11SceneHelperESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %23, i64 noundef %311) #12
  %313 = getelementptr inbounds %"struct.Assimp::SceneHelper", ptr %312, i32 0, i32 1
  %314 = getelementptr inbounds [32 x i8], ptr %313, i64 0, i64 0
  %315 = load i32, ptr %35, align 4, !tbaa !9
  %316 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %314, i64 noundef 32, ptr noundef @.str.4, i32 noundef %315) #12
  %317 = load i32, ptr %35, align 4, !tbaa !9
  %318 = zext i32 %317 to i64
  %319 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN6Assimp11SceneHelperESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %23, i64 noundef %318) #12
  %320 = getelementptr inbounds %"struct.Assimp::SceneHelper", ptr %319, i32 0, i32 2
  store i32 %316, ptr %320, align 8, !tbaa !28
  %321 = load i32, ptr %8, align 4, !tbaa !9
  %322 = and i32 %321, 16
  %323 = icmp ne i32 %322, 0
  br i1 %323, label %324, label %402

324:                                              ; preds = %309
  %325 = load i32, ptr %35, align 4, !tbaa !9
  %326 = zext i32 %325 to i64
  %327 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN6Assimp11SceneHelperESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %23, i64 noundef %326) #12
  %328 = invoke noundef ptr @_ZNK6Assimp11SceneHelperptEv(ptr noundef nonnull align 8 dereferenceable(96) %327)
          to label %329 unwind label %348

329:                                              ; preds = %324
  %330 = getelementptr inbounds %struct.aiScene, ptr %328, i32 0, i32 1
  %331 = load ptr, ptr %330, align 8, !tbaa !29
  %332 = load i32, ptr %35, align 4, !tbaa !9
  %333 = zext i32 %332 to i64
  %334 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN6Assimp11SceneHelperESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %23, i64 noundef %333) #12
  %335 = getelementptr inbounds %"struct.Assimp::SceneHelper", ptr %334, i32 0, i32 3
  invoke void @_ZN6Assimp13SceneCombiner13AddNodeHashesEP6aiNodeRSt3setIjSt4lessIjESaIjEE(ptr noundef %331, ptr noundef nonnull align 8 dereferenceable(48) %335)
          to label %336 unwind label %348

336:                                              ; preds = %329
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #12
  store i32 0, ptr %36, align 4, !tbaa !9
  br label %337

337:                                              ; preds = %388, %336
  %338 = load i32, ptr %36, align 4, !tbaa !9
  %339 = load i32, ptr %35, align 4, !tbaa !9
  %340 = zext i32 %339 to i64
  %341 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN6Assimp11SceneHelperESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %23, i64 noundef %340) #12
  %342 = invoke noundef ptr @_ZNK6Assimp11SceneHelperptEv(ptr noundef nonnull align 8 dereferenceable(96) %341)
          to label %343 unwind label %352

343:                                              ; preds = %337
  %344 = getelementptr inbounds %struct.aiScene, ptr %342, i32 0, i32 6
  %345 = load i32, ptr %344, align 8, !tbaa !32
  %346 = icmp ult i32 %338, %345
  br i1 %346, label %356, label %347

347:                                              ; preds = %343
  store i32 18, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #12
  br label %401

348:                                              ; preds = %329, %324
  %349 = landingpad { ptr, i32 }
          cleanup
  %350 = extractvalue { ptr, i32 } %349, 0
  store ptr %350, ptr %10, align 8
  %351 = extractvalue { ptr, i32 } %349, 1
  store i32 %351, ptr %11, align 4
  br label %406

352:                                              ; preds = %337
  %353 = landingpad { ptr, i32 }
          cleanup
  %354 = extractvalue { ptr, i32 } %353, 0
  store ptr %354, ptr %10, align 8
  %355 = extractvalue { ptr, i32 } %353, 1
  store i32 %355, ptr %11, align 4
  br label %400

356:                                              ; preds = %343
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #12
  %357 = load i32, ptr %35, align 4, !tbaa !9
  %358 = zext i32 %357 to i64
  %359 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN6Assimp11SceneHelperESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %23, i64 noundef %358) #12
  %360 = invoke noundef ptr @_ZNK6Assimp11SceneHelperptEv(ptr noundef nonnull align 8 dereferenceable(96) %359)
          to label %361 unwind label %391

361:                                              ; preds = %356
  %362 = getelementptr inbounds %struct.aiScene, ptr %360, i32 0, i32 7
  %363 = load ptr, ptr %362, align 8, !tbaa !33
  %364 = load i32, ptr %36, align 4, !tbaa !9
  %365 = zext i32 %364 to i64
  %366 = getelementptr inbounds ptr, ptr %363, i64 %365
  %367 = load ptr, ptr %366, align 8, !tbaa !5
  store ptr %367, ptr %37, align 8, !tbaa !5
  %368 = load i32, ptr %35, align 4, !tbaa !9
  %369 = zext i32 %368 to i64
  %370 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN6Assimp11SceneHelperESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %23, i64 noundef %369) #12
  %371 = getelementptr inbounds %"struct.Assimp::SceneHelper", ptr %370, i32 0, i32 3
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #12
  %372 = load ptr, ptr %37, align 8, !tbaa !5
  %373 = getelementptr inbounds %struct.aiAnimation, ptr %372, i32 0, i32 0
  %374 = getelementptr inbounds %struct.aiString, ptr %373, i32 0, i32 1
  %375 = getelementptr inbounds [1024 x i8], ptr %374, i64 0, i64 0
  %376 = load ptr, ptr %37, align 8, !tbaa !5
  %377 = getelementptr inbounds %struct.aiAnimation, ptr %376, i32 0, i32 0
  %378 = getelementptr inbounds %struct.aiString, ptr %377, i32 0, i32 0
  %379 = load i32, ptr %378, align 8, !tbaa !34
  %380 = invoke noundef i32 @_Z13SuperFastHashPKcjj(ptr noundef %375, i32 noundef %379, i32 noundef 0)
          to label %381 unwind label %395

381:                                              ; preds = %361
  store i32 %380, ptr %38, align 4, !tbaa !9
  %382 = invoke { ptr, i8 } @_ZNSt3setIjSt4lessIjESaIjEE6insertEOj(ptr noundef nonnull align 8 dereferenceable(48) %371, ptr noundef nonnull align 4 dereferenceable(4) %38)
          to label %383 unwind label %395

383:                                              ; preds = %381
  %384 = getelementptr inbounds { ptr, i8 }, ptr %39, i32 0, i32 0
  %385 = extractvalue { ptr, i8 } %382, 0
  store ptr %385, ptr %384, align 8
  %386 = getelementptr inbounds { ptr, i8 }, ptr %39, i32 0, i32 1
  %387 = extractvalue { ptr, i8 } %382, 1
  store i8 %387, ptr %386, align 8
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #12
  br label %388

388:                                              ; preds = %383
  %389 = load i32, ptr %36, align 4, !tbaa !9
  %390 = add i32 %389, 1
  store i32 %390, ptr %36, align 4, !tbaa !9
  br label %337, !llvm.loop !37

391:                                              ; preds = %356
  %392 = landingpad { ptr, i32 }
          cleanup
  %393 = extractvalue { ptr, i32 } %392, 0
  store ptr %393, ptr %10, align 8
  %394 = extractvalue { ptr, i32 } %392, 1
  store i32 %394, ptr %11, align 4
  br label %399

395:                                              ; preds = %381, %361
  %396 = landingpad { ptr, i32 }
          cleanup
  %397 = extractvalue { ptr, i32 } %396, 0
  store ptr %397, ptr %10, align 8
  %398 = extractvalue { ptr, i32 } %396, 1
  store i32 %398, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #12
  br label %399

399:                                              ; preds = %395, %391
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #12
  br label %400

400:                                              ; preds = %399, %352
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #12
  br label %406

401:                                              ; preds = %347
  br label %402

402:                                              ; preds = %401, %309
  br label %403

403:                                              ; preds = %402
  %404 = load i32, ptr %35, align 4, !tbaa !9
  %405 = add i32 %404, 1
  store i32 %405, ptr %35, align 4, !tbaa !9
  br label %303, !llvm.loop !38

406:                                              ; preds = %400, %348
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #12
  br label %1731

407:                                              ; preds = %308
  br label %408

408:                                              ; preds = %407, %298
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #12
  store i32 0, ptr %41, align 4, !tbaa !9
  br label %409

409:                                              ; preds = %502, %408
  %410 = load i32, ptr %41, align 4, !tbaa !9
  %411 = zext i32 %410 to i64
  %412 = call noundef i64 @_ZNKSt6vectorIN6Assimp11SceneHelperESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %23) #12
  %413 = icmp ult i64 %411, %412
  br i1 %413, label %415, label %414

414:                                              ; preds = %409
  store i32 21, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #12
  br label %505

415:                                              ; preds = %409
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #12
  %416 = load i32, ptr %41, align 4, !tbaa !9
  %417 = zext i32 %416 to i64
  %418 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN6Assimp11SceneHelperESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %23, i64 noundef %417) #12
  store ptr %418, ptr %42, align 8, !tbaa !5
  %419 = load i32, ptr %41, align 4, !tbaa !9
  %420 = load i32, ptr %41, align 4, !tbaa !9
  %421 = zext i32 %420 to i64
  %422 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %27, i64 noundef %421) #12
  %423 = load i32, ptr %422, align 4, !tbaa !9
  %424 = icmp eq i32 %419, %423
  br i1 %424, label %429, label %425

425:                                              ; preds = %415
  %426 = load i32, ptr %8, align 4, !tbaa !9
  %427 = and i32 %426, 4
  %428 = icmp ne i32 %427, 0
  br i1 %428, label %429, label %461

429:                                              ; preds = %425, %415
  %430 = load ptr, ptr %42, align 8, !tbaa !5
  %431 = invoke noundef ptr @_ZNK6Assimp11SceneHelperptEv(ptr noundef nonnull align 8 dereferenceable(96) %430)
          to label %432 unwind label %457

432:                                              ; preds = %429
  %433 = getelementptr inbounds %struct.aiScene, ptr %431, i32 0, i32 8
  %434 = load i32, ptr %433, align 8, !tbaa !39
  %435 = load ptr, ptr %22, align 8, !tbaa !5
  %436 = getelementptr inbounds %struct.aiScene, ptr %435, i32 0, i32 8
  %437 = load i32, ptr %436, align 8, !tbaa !39
  %438 = add i32 %437, %434
  store i32 %438, ptr %436, align 8, !tbaa !39
  %439 = load ptr, ptr %42, align 8, !tbaa !5
  %440 = invoke noundef ptr @_ZNK6Assimp11SceneHelperptEv(ptr noundef nonnull align 8 dereferenceable(96) %439)
          to label %441 unwind label %457

441:                                              ; preds = %432
  %442 = getelementptr inbounds %struct.aiScene, ptr %440, i32 0, i32 4
  %443 = load i32, ptr %442, align 8, !tbaa !40
  %444 = load ptr, ptr %22, align 8, !tbaa !5
  %445 = getelementptr inbounds %struct.aiScene, ptr %444, i32 0, i32 4
  %446 = load i32, ptr %445, align 8, !tbaa !40
  %447 = add i32 %446, %443
  store i32 %447, ptr %445, align 8, !tbaa !40
  %448 = load ptr, ptr %42, align 8, !tbaa !5
  %449 = invoke noundef ptr @_ZNK6Assimp11SceneHelperptEv(ptr noundef nonnull align 8 dereferenceable(96) %448)
          to label %450 unwind label %457

450:                                              ; preds = %441
  %451 = getelementptr inbounds %struct.aiScene, ptr %449, i32 0, i32 2
  %452 = load i32, ptr %451, align 8, !tbaa !41
  %453 = load ptr, ptr %22, align 8, !tbaa !5
  %454 = getelementptr inbounds %struct.aiScene, ptr %453, i32 0, i32 2
  %455 = load i32, ptr %454, align 8, !tbaa !41
  %456 = add i32 %455, %452
  store i32 %456, ptr %454, align 8, !tbaa !41
  br label %461

457:                                              ; preds = %482, %473, %464, %461, %441, %432, %429
  %458 = landingpad { ptr, i32 }
          cleanup
  %459 = extractvalue { ptr, i32 } %458, 0
  store ptr %459, ptr %10, align 8
  %460 = extractvalue { ptr, i32 } %458, 1
  store i32 %460, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #12
  br label %1730

461:                                              ; preds = %450, %425
  %462 = load ptr, ptr %42, align 8, !tbaa !5
  %463 = invoke noundef ptr @_ZNK6Assimp11SceneHelperptEv(ptr noundef nonnull align 8 dereferenceable(96) %462)
          to label %464 unwind label %457

464:                                              ; preds = %461
  %465 = getelementptr inbounds %struct.aiScene, ptr %463, i32 0, i32 10
  %466 = load i32, ptr %465, align 8, !tbaa !42
  %467 = load ptr, ptr %22, align 8, !tbaa !5
  %468 = getelementptr inbounds %struct.aiScene, ptr %467, i32 0, i32 10
  %469 = load i32, ptr %468, align 8, !tbaa !42
  %470 = add i32 %469, %466
  store i32 %470, ptr %468, align 8, !tbaa !42
  %471 = load ptr, ptr %42, align 8, !tbaa !5
  %472 = invoke noundef ptr @_ZNK6Assimp11SceneHelperptEv(ptr noundef nonnull align 8 dereferenceable(96) %471)
          to label %473 unwind label %457

473:                                              ; preds = %464
  %474 = getelementptr inbounds %struct.aiScene, ptr %472, i32 0, i32 12
  %475 = load i32, ptr %474, align 8, !tbaa !43
  %476 = load ptr, ptr %22, align 8, !tbaa !5
  %477 = getelementptr inbounds %struct.aiScene, ptr %476, i32 0, i32 12
  %478 = load i32, ptr %477, align 8, !tbaa !43
  %479 = add i32 %478, %475
  store i32 %479, ptr %477, align 8, !tbaa !43
  %480 = load ptr, ptr %42, align 8, !tbaa !5
  %481 = invoke noundef ptr @_ZNK6Assimp11SceneHelperptEv(ptr noundef nonnull align 8 dereferenceable(96) %480)
          to label %482 unwind label %457

482:                                              ; preds = %473
  %483 = getelementptr inbounds %struct.aiScene, ptr %481, i32 0, i32 6
  %484 = load i32, ptr %483, align 8, !tbaa !32
  %485 = load ptr, ptr %22, align 8, !tbaa !5
  %486 = getelementptr inbounds %struct.aiScene, ptr %485, i32 0, i32 6
  %487 = load i32, ptr %486, align 8, !tbaa !32
  %488 = add i32 %487, %484
  store i32 %488, ptr %486, align 8, !tbaa !32
  %489 = load ptr, ptr %42, align 8, !tbaa !5
  %490 = invoke noundef ptr @_ZNK6Assimp11SceneHelperptEv(ptr noundef nonnull align 8 dereferenceable(96) %489)
          to label %491 unwind label %457

491:                                              ; preds = %482
  %492 = getelementptr inbounds %struct.aiScene, ptr %490, i32 0, i32 0
  %493 = load i32, ptr %492, align 8, !tbaa !44
  %494 = and i32 %493, 8
  %495 = icmp ne i32 %494, 0
  br i1 %495, label %496, label %501

496:                                              ; preds = %491
  %497 = load ptr, ptr %22, align 8, !tbaa !5
  %498 = getelementptr inbounds %struct.aiScene, ptr %497, i32 0, i32 0
  %499 = load i32, ptr %498, align 8, !tbaa !44
  %500 = or i32 %499, 8
  store i32 %500, ptr %498, align 8, !tbaa !44
  br label %501

501:                                              ; preds = %496, %491
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #12
  br label %502

502:                                              ; preds = %501
  %503 = load i32, ptr %41, align 4, !tbaa !9
  %504 = add i32 %503, 1
  store i32 %504, ptr %41, align 4, !tbaa !9
  br label %409, !llvm.loop !45

505:                                              ; preds = %414
  %506 = load ptr, ptr %22, align 8, !tbaa !5
  %507 = getelementptr inbounds %struct.aiScene, ptr %506, i32 0, i32 8
  %508 = load i32, ptr %507, align 8, !tbaa !39
  %509 = icmp ne i32 %508, 0
  br i1 %509, label %510, label %611

510:                                              ; preds = %505
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #12
  %511 = load ptr, ptr %22, align 8, !tbaa !5
  %512 = getelementptr inbounds %struct.aiScene, ptr %511, i32 0, i32 8
  %513 = load i32, ptr %512, align 8, !tbaa !39
  %514 = zext i32 %513 to i64
  %515 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %514, i64 8)
  %516 = extractvalue { i64, i1 } %515, 1
  %517 = extractvalue { i64, i1 } %515, 0
  %518 = select i1 %516, i64 -1, i64 %517
  %519 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %518) #14
          to label %520 unwind label %529

520:                                              ; preds = %510
  %521 = load ptr, ptr %22, align 8, !tbaa !5
  %522 = getelementptr inbounds %struct.aiScene, ptr %521, i32 0, i32 9
  store ptr %519, ptr %522, align 8, !tbaa !46
  store ptr %519, ptr %43, align 8, !tbaa !5
  store i32 0, ptr %40, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #12
  store i32 0, ptr %44, align 4, !tbaa !9
  br label %523

523:                                              ; preds = %606, %520
  %524 = load i32, ptr %44, align 4, !tbaa !9
  %525 = zext i32 %524 to i64
  %526 = call noundef i64 @_ZNKSt6vectorIN6Assimp11SceneHelperESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %23) #12
  %527 = icmp ult i64 %525, %526
  br i1 %527, label %533, label %528

528:                                              ; preds = %523
  store i32 24, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #12
  br label %609

529:                                              ; preds = %510
  %530 = landingpad { ptr, i32 }
          cleanup
  %531 = extractvalue { ptr, i32 } %530, 0
  store ptr %531, ptr %10, align 8
  %532 = extractvalue { ptr, i32 } %530, 1
  store i32 %532, ptr %11, align 4
  br label %610

533:                                              ; preds = %523
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #12
  %534 = load i32, ptr %44, align 4, !tbaa !9
  %535 = zext i32 %534 to i64
  %536 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN6Assimp11SceneHelperESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %23, i64 noundef %535) #12
  store ptr %536, ptr %45, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #12
  store i32 0, ptr %46, align 4, !tbaa !9
  br label %537

537:                                              ; preds = %589, %533
  %538 = load i32, ptr %46, align 4, !tbaa !9
  %539 = load ptr, ptr %45, align 8, !tbaa !5
  %540 = invoke noundef ptr @_ZNK6Assimp11SceneHelperptEv(ptr noundef nonnull align 8 dereferenceable(96) %539)
          to label %541 unwind label %546

541:                                              ; preds = %537
  %542 = getelementptr inbounds %struct.aiScene, ptr %540, i32 0, i32 8
  %543 = load i32, ptr %542, align 8, !tbaa !39
  %544 = icmp ult i32 %538, %543
  br i1 %544, label %550, label %545

545:                                              ; preds = %541
  store i32 27, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #12
  br label %592

546:                                              ; preds = %575, %565, %561, %537
  %547 = landingpad { ptr, i32 }
          cleanup
  %548 = extractvalue { ptr, i32 } %547, 0
  store ptr %548, ptr %10, align 8
  %549 = extractvalue { ptr, i32 } %547, 1
  store i32 %549, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #12
  br label %610

550:                                              ; preds = %541
  %551 = load i32, ptr %44, align 4, !tbaa !9
  %552 = load i32, ptr %44, align 4, !tbaa !9
  %553 = zext i32 %552 to i64
  %554 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %27, i64 noundef %553) #12
  %555 = load i32, ptr %554, align 4, !tbaa !9
  %556 = icmp ne i32 %551, %555
  br i1 %556, label %557, label %575

557:                                              ; preds = %550
  %558 = load i32, ptr %8, align 4, !tbaa !9
  %559 = and i32 %558, 4
  %560 = icmp ne i32 %559, 0
  br i1 %560, label %561, label %573

561:                                              ; preds = %557
  %562 = load ptr, ptr %43, align 8, !tbaa !5
  %563 = load ptr, ptr %45, align 8, !tbaa !5
  %564 = invoke noundef ptr @_ZNK6Assimp11SceneHelperptEv(ptr noundef nonnull align 8 dereferenceable(96) %563)
          to label %565 unwind label %546

565:                                              ; preds = %561
  %566 = getelementptr inbounds %struct.aiScene, ptr %564, i32 0, i32 9
  %567 = load ptr, ptr %566, align 8, !tbaa !46
  %568 = load i32, ptr %46, align 4, !tbaa !9
  %569 = zext i32 %568 to i64
  %570 = getelementptr inbounds ptr, ptr %567, i64 %569
  %571 = load ptr, ptr %570, align 8, !tbaa !5
  invoke void @_ZN6Assimp13SceneCombiner4CopyEPP9aiTexturePKS1_(ptr noundef %562, ptr noundef %571)
          to label %572 unwind label %546

572:                                              ; preds = %565
  br label %574

573:                                              ; preds = %557
  br label %589

574:                                              ; preds = %572
  br label %586

575:                                              ; preds = %550
  %576 = load ptr, ptr %45, align 8, !tbaa !5
  %577 = invoke noundef ptr @_ZNK6Assimp11SceneHelperptEv(ptr noundef nonnull align 8 dereferenceable(96) %576)
          to label %578 unwind label %546

578:                                              ; preds = %575
  %579 = getelementptr inbounds %struct.aiScene, ptr %577, i32 0, i32 9
  %580 = load ptr, ptr %579, align 8, !tbaa !46
  %581 = load i32, ptr %46, align 4, !tbaa !9
  %582 = zext i32 %581 to i64
  %583 = getelementptr inbounds ptr, ptr %580, i64 %582
  %584 = load ptr, ptr %583, align 8, !tbaa !5
  %585 = load ptr, ptr %43, align 8, !tbaa !5
  store ptr %584, ptr %585, align 8, !tbaa !5
  br label %586

586:                                              ; preds = %578, %574
  %587 = load ptr, ptr %43, align 8, !tbaa !5
  %588 = getelementptr inbounds ptr, ptr %587, i32 1
  store ptr %588, ptr %43, align 8, !tbaa !5
  br label %589

589:                                              ; preds = %586, %573
  %590 = load i32, ptr %46, align 4, !tbaa !9
  %591 = add i32 %590, 1
  store i32 %591, ptr %46, align 4, !tbaa !9
  br label %537, !llvm.loop !47

592:                                              ; preds = %545
  %593 = load i32, ptr %40, align 4, !tbaa !9
  %594 = load i32, ptr %44, align 4, !tbaa !9
  %595 = zext i32 %594 to i64
  %596 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %30, i64 noundef %595) #12
  store i32 %593, ptr %596, align 4, !tbaa !9
  %597 = load ptr, ptr %43, align 8, !tbaa !5
  %598 = load ptr, ptr %22, align 8, !tbaa !5
  %599 = getelementptr inbounds %struct.aiScene, ptr %598, i32 0, i32 9
  %600 = load ptr, ptr %599, align 8, !tbaa !46
  %601 = ptrtoint ptr %597 to i64
  %602 = ptrtoint ptr %600 to i64
  %603 = sub i64 %601, %602
  %604 = sdiv exact i64 %603, 8
  %605 = trunc i64 %604 to i32
  store i32 %605, ptr %40, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #12
  br label %606

606:                                              ; preds = %592
  %607 = load i32, ptr %44, align 4, !tbaa !9
  %608 = add i32 %607, 1
  store i32 %608, ptr %44, align 4, !tbaa !9
  br label %523, !llvm.loop !48

609:                                              ; preds = %528
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #12
  br label %611

610:                                              ; preds = %546, %529
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #12
  br label %1730

611:                                              ; preds = %609, %505
  %612 = load ptr, ptr %22, align 8, !tbaa !5
  %613 = getelementptr inbounds %struct.aiScene, ptr %612, i32 0, i32 4
  %614 = load i32, ptr %613, align 8, !tbaa !40
  %615 = icmp ne i32 %614, 0
  br i1 %615, label %616, label %865

616:                                              ; preds = %611
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #12
  %617 = load ptr, ptr %22, align 8, !tbaa !5
  %618 = getelementptr inbounds %struct.aiScene, ptr %617, i32 0, i32 4
  %619 = load i32, ptr %618, align 8, !tbaa !40
  %620 = zext i32 %619 to i64
  %621 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %620, i64 8)
  %622 = extractvalue { i64, i1 } %621, 1
  %623 = extractvalue { i64, i1 } %621, 0
  %624 = select i1 %622, i64 -1, i64 %623
  %625 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %624) #14
          to label %626 unwind label %635

626:                                              ; preds = %616
  %627 = load ptr, ptr %22, align 8, !tbaa !5
  %628 = getelementptr inbounds %struct.aiScene, ptr %627, i32 0, i32 5
  store ptr %625, ptr %628, align 8, !tbaa !49
  store ptr %625, ptr %47, align 8, !tbaa !5
  store i32 0, ptr %40, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #12
  store i32 0, ptr %48, align 4, !tbaa !9
  br label %629

629:                                              ; preds = %860, %626
  %630 = load i32, ptr %48, align 4, !tbaa !9
  %631 = zext i32 %630 to i64
  %632 = call noundef i64 @_ZNKSt6vectorIN6Assimp11SceneHelperESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %23) #12
  %633 = icmp ult i64 %631, %632
  br i1 %633, label %639, label %634

634:                                              ; preds = %629
  store i32 30, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #12
  br label %863

635:                                              ; preds = %616
  %636 = landingpad { ptr, i32 }
          cleanup
  %637 = extractvalue { ptr, i32 } %636, 0
  store ptr %637, ptr %10, align 8
  %638 = extractvalue { ptr, i32 } %636, 1
  store i32 %638, ptr %11, align 4
  br label %864

639:                                              ; preds = %629
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #12
  %640 = load i32, ptr %48, align 4, !tbaa !9
  %641 = zext i32 %640 to i64
  %642 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN6Assimp11SceneHelperESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %23, i64 noundef %641) #12
  store ptr %642, ptr %49, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #12
  store i32 0, ptr %50, align 4, !tbaa !9
  br label %643

643:                                              ; preds = %842, %639
  %644 = load i32, ptr %50, align 4, !tbaa !9
  %645 = load ptr, ptr %49, align 8, !tbaa !5
  %646 = invoke noundef ptr @_ZNK6Assimp11SceneHelperptEv(ptr noundef nonnull align 8 dereferenceable(96) %645)
          to label %647 unwind label %652

647:                                              ; preds = %643
  %648 = getelementptr inbounds %struct.aiScene, ptr %646, i32 0, i32 4
  %649 = load i32, ptr %648, align 8, !tbaa !40
  %650 = icmp ult i32 %644, %649
  br i1 %650, label %656, label %651

651:                                              ; preds = %647
  store i32 33, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #12
  br label %846

652:                                              ; preds = %692, %681, %671, %667, %643
  %653 = landingpad { ptr, i32 }
          cleanup
  %654 = extractvalue { ptr, i32 } %653, 0
  store ptr %654, ptr %10, align 8
  %655 = extractvalue { ptr, i32 } %653, 1
  store i32 %655, ptr %11, align 4
  br label %845

656:                                              ; preds = %647
  %657 = load i32, ptr %48, align 4, !tbaa !9
  %658 = load i32, ptr %48, align 4, !tbaa !9
  %659 = zext i32 %658 to i64
  %660 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %27, i64 noundef %659) #12
  %661 = load i32, ptr %660, align 4, !tbaa !9
  %662 = icmp ne i32 %657, %661
  br i1 %662, label %663, label %681

663:                                              ; preds = %656
  %664 = load i32, ptr %8, align 4, !tbaa !9
  %665 = and i32 %664, 4
  %666 = icmp ne i32 %665, 0
  br i1 %666, label %667, label %679

667:                                              ; preds = %663
  %668 = load ptr, ptr %47, align 8, !tbaa !5
  %669 = load ptr, ptr %49, align 8, !tbaa !5
  %670 = invoke noundef ptr @_ZNK6Assimp11SceneHelperptEv(ptr noundef nonnull align 8 dereferenceable(96) %669)
          to label %671 unwind label %652

671:                                              ; preds = %667
  %672 = getelementptr inbounds %struct.aiScene, ptr %670, i32 0, i32 5
  %673 = load ptr, ptr %672, align 8, !tbaa !49
  %674 = load i32, ptr %50, align 4, !tbaa !9
  %675 = zext i32 %674 to i64
  %676 = getelementptr inbounds ptr, ptr %673, i64 %675
  %677 = load ptr, ptr %676, align 8, !tbaa !5
  invoke void @_ZN6Assimp13SceneCombiner4CopyEPP10aiMaterialPKS1_(ptr noundef %668, ptr noundef %677)
          to label %678 unwind label %652

678:                                              ; preds = %671
  br label %680

679:                                              ; preds = %663
  br label %842

680:                                              ; preds = %678
  br label %692

681:                                              ; preds = %656
  %682 = load ptr, ptr %49, align 8, !tbaa !5
  %683 = invoke noundef ptr @_ZNK6Assimp11SceneHelperptEv(ptr noundef nonnull align 8 dereferenceable(96) %682)
          to label %684 unwind label %652

684:                                              ; preds = %681
  %685 = getelementptr inbounds %struct.aiScene, ptr %683, i32 0, i32 5
  %686 = load ptr, ptr %685, align 8, !tbaa !49
  %687 = load i32, ptr %50, align 4, !tbaa !9
  %688 = zext i32 %687 to i64
  %689 = getelementptr inbounds ptr, ptr %686, i64 %688
  %690 = load ptr, ptr %689, align 8, !tbaa !5
  %691 = load ptr, ptr %47, align 8, !tbaa !5
  store ptr %690, ptr %691, align 8, !tbaa !5
  br label %692

692:                                              ; preds = %684, %680
  %693 = load ptr, ptr %49, align 8, !tbaa !5
  %694 = invoke noundef ptr @_ZNK6Assimp11SceneHelperptEv(ptr noundef nonnull align 8 dereferenceable(96) %693)
          to label %695 unwind label %652

695:                                              ; preds = %692
  %696 = getelementptr inbounds %struct.aiScene, ptr %694, i32 0, i32 8
  %697 = load i32, ptr %696, align 8, !tbaa !39
  %698 = load ptr, ptr %22, align 8, !tbaa !5
  %699 = getelementptr inbounds %struct.aiScene, ptr %698, i32 0, i32 8
  %700 = load i32, ptr %699, align 8, !tbaa !39
  %701 = icmp ne i32 %697, %700
  br i1 %701, label %702, label %839

702:                                              ; preds = %695
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #12
  store i32 0, ptr %51, align 4, !tbaa !9
  br label %703

703:                                              ; preds = %834, %702
  %704 = load i32, ptr %51, align 4, !tbaa !9
  %705 = load ptr, ptr %47, align 8, !tbaa !5
  %706 = load ptr, ptr %705, align 8, !tbaa !5
  %707 = getelementptr inbounds %struct.aiMaterial, ptr %706, i32 0, i32 1
  %708 = load i32, ptr %707, align 8, !tbaa !50
  %709 = icmp ult i32 %704, %708
  br i1 %709, label %711, label %710

710:                                              ; preds = %703
  store i32 36, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #12
  br label %838

711:                                              ; preds = %703
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #12
  %712 = load ptr, ptr %47, align 8, !tbaa !5
  %713 = load ptr, ptr %712, align 8, !tbaa !5
  %714 = getelementptr inbounds %struct.aiMaterial, ptr %713, i32 0, i32 0
  %715 = load ptr, ptr %714, align 8, !tbaa !52
  %716 = load i32, ptr %51, align 4, !tbaa !9
  %717 = zext i32 %716 to i64
  %718 = getelementptr inbounds ptr, ptr %715, i64 %717
  %719 = load ptr, ptr %718, align 8, !tbaa !5
  store ptr %719, ptr %52, align 8, !tbaa !5
  %720 = load ptr, ptr %52, align 8, !tbaa !5
  %721 = getelementptr inbounds %struct.aiMaterialProperty, ptr %720, i32 0, i32 0
  %722 = getelementptr inbounds %struct.aiString, ptr %721, i32 0, i32 1
  %723 = getelementptr inbounds [1024 x i8], ptr %722, i64 0, i64 0
  %724 = call i32 @strncmp(ptr noundef %723, ptr noundef @.str.5, i64 noundef 9) #15
  %725 = icmp ne i32 %724, 0
  br i1 %725, label %805, label %726

726:                                              ; preds = %711
  call void @llvm.lifetime.start.p0(i64 1028, ptr %53) #12
  %727 = load ptr, ptr %52, align 8, !tbaa !5
  %728 = getelementptr inbounds %struct.aiMaterialProperty, ptr %727, i32 0, i32 5
  %729 = load ptr, ptr %728, align 8, !tbaa !53
  invoke void @_ZN8aiStringC2ERKS_(ptr noundef nonnull align 4 dereferenceable(1028) %53, ptr noundef nonnull align 4 dereferenceable(1028) %729)
          to label %730 unwind label %782

730:                                              ; preds = %726
  %731 = getelementptr inbounds %struct.aiString, ptr %53, i32 0, i32 1
  %732 = getelementptr inbounds [1024 x i8], ptr %731, i64 0, i64 0
  %733 = load i8, ptr %732, align 4, !tbaa !56
  %734 = sext i8 %733 to i32
  %735 = icmp eq i32 42, %734
  br i1 %735, label %736, label %803

736:                                              ; preds = %730
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #12
  %737 = getelementptr inbounds %struct.aiString, ptr %53, i32 0, i32 1
  %738 = getelementptr inbounds [1024 x i8], ptr %737, i64 0, i64 1
  %739 = invoke noundef i32 @_ZN6Assimp9strtoul10EPKcPS1_(ptr noundef %738, ptr noundef null)
          to label %740 unwind label %786

740:                                              ; preds = %736
  %741 = load i32, ptr %48, align 4, !tbaa !9
  %742 = zext i32 %741 to i64
  %743 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %30, i64 noundef %742) #12
  %744 = load i32, ptr %743, align 4, !tbaa !9
  %745 = add i32 %739, %744
  store i32 %745, ptr %54, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #12
  %746 = getelementptr inbounds %struct.aiString, ptr %53, i32 0, i32 0
  %747 = load i32, ptr %746, align 4, !tbaa !57
  store i32 %747, ptr %55, align 4, !tbaa !9
  %748 = getelementptr inbounds %struct.aiString, ptr %53, i32 0, i32 1
  %749 = getelementptr inbounds [1024 x i8], ptr %748, i64 0, i64 1
  %750 = load i32, ptr %54, align 4, !tbaa !9
  %751 = invoke noundef i32 @_ZN6Assimp13ASSIMP_itoa10EPcji(ptr noundef %749, i32 noundef 1023, i32 noundef %750)
          to label %752 unwind label %790

752:                                              ; preds = %740
  %753 = add i32 1, %751
  %754 = getelementptr inbounds %struct.aiString, ptr %53, i32 0, i32 0
  store i32 %753, ptr %754, align 4, !tbaa !57
  %755 = load i32, ptr %55, align 4, !tbaa !9
  %756 = getelementptr inbounds %struct.aiString, ptr %53, i32 0, i32 0
  %757 = load i32, ptr %756, align 4, !tbaa !57
  %758 = icmp ult i32 %755, %757
  br i1 %758, label %759, label %794

759:                                              ; preds = %752
  %760 = getelementptr inbounds %struct.aiString, ptr %53, i32 0, i32 0
  %761 = load i32, ptr %760, align 4, !tbaa !57
  %762 = load i32, ptr %55, align 4, !tbaa !9
  %763 = sub i32 %761, %762
  %764 = load ptr, ptr %52, align 8, !tbaa !5
  %765 = getelementptr inbounds %struct.aiMaterialProperty, ptr %764, i32 0, i32 3
  %766 = load i32, ptr %765, align 4, !tbaa !58
  %767 = add i32 %766, %763
  store i32 %767, ptr %765, align 4, !tbaa !58
  %768 = load ptr, ptr %52, align 8, !tbaa !5
  %769 = getelementptr inbounds %struct.aiMaterialProperty, ptr %768, i32 0, i32 5
  %770 = load ptr, ptr %769, align 8, !tbaa !53
  %771 = icmp eq ptr %770, null
  br i1 %771, label %773, label %772

772:                                              ; preds = %759
  call void @_ZdaPv(ptr noundef %770) #13
  br label %773

773:                                              ; preds = %772, %759
  %774 = load ptr, ptr %52, align 8, !tbaa !5
  %775 = getelementptr inbounds %struct.aiMaterialProperty, ptr %774, i32 0, i32 3
  %776 = load i32, ptr %775, align 4, !tbaa !58
  %777 = zext i32 %776 to i64
  %778 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %777) #14
          to label %779 unwind label %790

779:                                              ; preds = %773
  %780 = load ptr, ptr %52, align 8, !tbaa !5
  %781 = getelementptr inbounds %struct.aiMaterialProperty, ptr %780, i32 0, i32 5
  store ptr %778, ptr %781, align 8, !tbaa !53
  br label %794

782:                                              ; preds = %726
  %783 = landingpad { ptr, i32 }
          cleanup
  %784 = extractvalue { ptr, i32 } %783, 0
  store ptr %784, ptr %10, align 8
  %785 = extractvalue { ptr, i32 } %783, 1
  store i32 %785, ptr %11, align 4
  br label %804

786:                                              ; preds = %736
  %787 = landingpad { ptr, i32 }
          cleanup
  %788 = extractvalue { ptr, i32 } %787, 0
  store ptr %788, ptr %10, align 8
  %789 = extractvalue { ptr, i32 } %787, 1
  store i32 %789, ptr %11, align 4
  br label %802

790:                                              ; preds = %773, %740
  %791 = landingpad { ptr, i32 }
          cleanup
  %792 = extractvalue { ptr, i32 } %791, 0
  store ptr %792, ptr %10, align 8
  %793 = extractvalue { ptr, i32 } %791, 1
  store i32 %793, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #12
  br label %802

794:                                              ; preds = %779, %752
  %795 = load ptr, ptr %52, align 8, !tbaa !5
  %796 = getelementptr inbounds %struct.aiMaterialProperty, ptr %795, i32 0, i32 5
  %797 = load ptr, ptr %796, align 8, !tbaa !53
  %798 = load ptr, ptr %52, align 8, !tbaa !5
  %799 = getelementptr inbounds %struct.aiMaterialProperty, ptr %798, i32 0, i32 3
  %800 = load i32, ptr %799, align 4, !tbaa !58
  %801 = zext i32 %800 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %797, ptr align 1 %53, i64 %801, i1 false)
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #12
  br label %803

802:                                              ; preds = %790, %786
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #12
  br label %804

803:                                              ; preds = %794, %730
  call void @llvm.lifetime.end.p0(i64 1028, ptr %53) #12
  br label %833

804:                                              ; preds = %802, %782
  call void @llvm.lifetime.end.p0(i64 1028, ptr %53) #12
  br label %837

805:                                              ; preds = %711
  %806 = load ptr, ptr %52, align 8, !tbaa !5
  %807 = getelementptr inbounds %struct.aiMaterialProperty, ptr %806, i32 0, i32 0
  %808 = getelementptr inbounds %struct.aiString, ptr %807, i32 0, i32 1
  %809 = getelementptr inbounds [1024 x i8], ptr %808, i64 0, i64 0
  %810 = call i32 @strcmp(ptr noundef %809, ptr noundef @.str.6) #15
  %811 = icmp ne i32 %810, 0
  br i1 %811, label %832, label %812

812:                                              ; preds = %805
  %813 = load i32, ptr %8, align 4, !tbaa !9
  %814 = and i32 %813, 2
  %815 = icmp ne i32 %814, 0
  br i1 %815, label %816, label %832

816:                                              ; preds = %812
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #12
  %817 = load ptr, ptr %52, align 8, !tbaa !5
  %818 = getelementptr inbounds %struct.aiMaterialProperty, ptr %817, i32 0, i32 5
  %819 = load ptr, ptr %818, align 8, !tbaa !53
  store ptr %819, ptr %56, align 8, !tbaa !5
  %820 = load ptr, ptr %56, align 8, !tbaa !5
  %821 = load ptr, ptr %49, align 8, !tbaa !5
  %822 = getelementptr inbounds %"struct.Assimp::SceneHelper", ptr %821, i32 0, i32 1
  %823 = getelementptr inbounds [32 x i8], ptr %822, i64 0, i64 0
  %824 = load ptr, ptr %49, align 8, !tbaa !5
  %825 = getelementptr inbounds %"struct.Assimp::SceneHelper", ptr %824, i32 0, i32 2
  %826 = load i32, ptr %825, align 8, !tbaa !28
  invoke void @_ZN6Assimp12PrefixStringER8aiStringPKcj(ptr noundef nonnull align 4 dereferenceable(1028) %820, ptr noundef %823, i32 noundef %826)
          to label %827 unwind label %828

827:                                              ; preds = %816
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #12
  br label %832

828:                                              ; preds = %816
  %829 = landingpad { ptr, i32 }
          cleanup
  %830 = extractvalue { ptr, i32 } %829, 0
  store ptr %830, ptr %10, align 8
  %831 = extractvalue { ptr, i32 } %829, 1
  store i32 %831, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #12
  br label %837

832:                                              ; preds = %827, %812, %805
  br label %833

833:                                              ; preds = %832, %803
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #12
  br label %834

834:                                              ; preds = %833
  %835 = load i32, ptr %51, align 4, !tbaa !9
  %836 = add i32 %835, 1
  store i32 %836, ptr %51, align 4, !tbaa !9
  br label %703, !llvm.loop !59

837:                                              ; preds = %828, %804
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #12
  br label %845

838:                                              ; preds = %710
  br label %839

839:                                              ; preds = %838, %695
  %840 = load ptr, ptr %47, align 8, !tbaa !5
  %841 = getelementptr inbounds ptr, ptr %840, i32 1
  store ptr %841, ptr %47, align 8, !tbaa !5
  br label %842

842:                                              ; preds = %839, %679
  %843 = load i32, ptr %50, align 4, !tbaa !9
  %844 = add i32 %843, 1
  store i32 %844, ptr %50, align 4, !tbaa !9
  br label %643, !llvm.loop !60

845:                                              ; preds = %837, %652
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #12
  br label %864

846:                                              ; preds = %651
  %847 = load i32, ptr %40, align 4, !tbaa !9
  %848 = load i32, ptr %48, align 4, !tbaa !9
  %849 = zext i32 %848 to i64
  %850 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %30, i64 noundef %849) #12
  store i32 %847, ptr %850, align 4, !tbaa !9
  %851 = load ptr, ptr %47, align 8, !tbaa !5
  %852 = load ptr, ptr %22, align 8, !tbaa !5
  %853 = getelementptr inbounds %struct.aiScene, ptr %852, i32 0, i32 5
  %854 = load ptr, ptr %853, align 8, !tbaa !49
  %855 = ptrtoint ptr %851 to i64
  %856 = ptrtoint ptr %854 to i64
  %857 = sub i64 %855, %856
  %858 = sdiv exact i64 %857, 8
  %859 = trunc i64 %858 to i32
  store i32 %859, ptr %40, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #12
  br label %860

860:                                              ; preds = %846
  %861 = load i32, ptr %48, align 4, !tbaa !9
  %862 = add i32 %861, 1
  store i32 %862, ptr %48, align 4, !tbaa !9
  br label %629, !llvm.loop !61

863:                                              ; preds = %634
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #12
  br label %865

864:                                              ; preds = %845, %635
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #12
  br label %1730

865:                                              ; preds = %863, %611
  %866 = load ptr, ptr %22, align 8, !tbaa !5
  %867 = getelementptr inbounds %struct.aiScene, ptr %866, i32 0, i32 2
  %868 = load i32, ptr %867, align 8, !tbaa !41
  %869 = icmp ne i32 %868, 0
  br i1 %869, label %870, label %980

870:                                              ; preds = %865
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #12
  %871 = load ptr, ptr %22, align 8, !tbaa !5
  %872 = getelementptr inbounds %struct.aiScene, ptr %871, i32 0, i32 2
  %873 = load i32, ptr %872, align 8, !tbaa !41
  %874 = zext i32 %873 to i64
  %875 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %874, i64 8)
  %876 = extractvalue { i64, i1 } %875, 1
  %877 = extractvalue { i64, i1 } %875, 0
  %878 = select i1 %876, i64 -1, i64 %877
  %879 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %878) #14
          to label %880 unwind label %889

880:                                              ; preds = %870
  %881 = load ptr, ptr %22, align 8, !tbaa !5
  %882 = getelementptr inbounds %struct.aiScene, ptr %881, i32 0, i32 3
  store ptr %879, ptr %882, align 8, !tbaa !62
  store ptr %879, ptr %57, align 8, !tbaa !5
  store i32 0, ptr %40, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #12
  store i32 0, ptr %58, align 4, !tbaa !9
  br label %883

883:                                              ; preds = %975, %880
  %884 = load i32, ptr %58, align 4, !tbaa !9
  %885 = zext i32 %884 to i64
  %886 = call noundef i64 @_ZNKSt6vectorIN6Assimp11SceneHelperESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %23) #12
  %887 = icmp ult i64 %885, %886
  br i1 %887, label %893, label %888

888:                                              ; preds = %883
  store i32 39, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #12
  br label %978

889:                                              ; preds = %870
  %890 = landingpad { ptr, i32 }
          cleanup
  %891 = extractvalue { ptr, i32 } %890, 0
  store ptr %891, ptr %10, align 8
  %892 = extractvalue { ptr, i32 } %890, 1
  store i32 %892, ptr %11, align 4
  br label %979

893:                                              ; preds = %883
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #12
  %894 = load i32, ptr %58, align 4, !tbaa !9
  %895 = zext i32 %894 to i64
  %896 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN6Assimp11SceneHelperESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %23, i64 noundef %895) #12
  store ptr %896, ptr %59, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %60) #12
  store i32 0, ptr %60, align 4, !tbaa !9
  br label %897

897:                                              ; preds = %958, %893
  %898 = load i32, ptr %60, align 4, !tbaa !9
  %899 = load ptr, ptr %59, align 8, !tbaa !5
  %900 = invoke noundef ptr @_ZNK6Assimp11SceneHelperptEv(ptr noundef nonnull align 8 dereferenceable(96) %899)
          to label %901 unwind label %906

901:                                              ; preds = %897
  %902 = getelementptr inbounds %struct.aiScene, ptr %900, i32 0, i32 2
  %903 = load i32, ptr %902, align 8, !tbaa !41
  %904 = icmp ult i32 %898, %903
  br i1 %904, label %910, label %905

905:                                              ; preds = %901
  store i32 42, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #12
  br label %961

906:                                              ; preds = %935, %925, %921, %897
  %907 = landingpad { ptr, i32 }
          cleanup
  %908 = extractvalue { ptr, i32 } %907, 0
  store ptr %908, ptr %10, align 8
  %909 = extractvalue { ptr, i32 } %907, 1
  store i32 %909, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #12
  br label %979

910:                                              ; preds = %901
  %911 = load i32, ptr %58, align 4, !tbaa !9
  %912 = load i32, ptr %58, align 4, !tbaa !9
  %913 = zext i32 %912 to i64
  %914 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %27, i64 noundef %913) #12
  %915 = load i32, ptr %914, align 4, !tbaa !9
  %916 = icmp ne i32 %911, %915
  br i1 %916, label %917, label %935

917:                                              ; preds = %910
  %918 = load i32, ptr %8, align 4, !tbaa !9
  %919 = and i32 %918, 4
  %920 = icmp ne i32 %919, 0
  br i1 %920, label %921, label %933

921:                                              ; preds = %917
  %922 = load ptr, ptr %57, align 8, !tbaa !5
  %923 = load ptr, ptr %59, align 8, !tbaa !5
  %924 = invoke noundef ptr @_ZNK6Assimp11SceneHelperptEv(ptr noundef nonnull align 8 dereferenceable(96) %923)
          to label %925 unwind label %906

925:                                              ; preds = %921
  %926 = getelementptr inbounds %struct.aiScene, ptr %924, i32 0, i32 3
  %927 = load ptr, ptr %926, align 8, !tbaa !62
  %928 = load i32, ptr %60, align 4, !tbaa !9
  %929 = zext i32 %928 to i64
  %930 = getelementptr inbounds ptr, ptr %927, i64 %929
  %931 = load ptr, ptr %930, align 8, !tbaa !5
  invoke void @_ZN6Assimp13SceneCombiner4CopyEPP6aiMeshPKS1_(ptr noundef %922, ptr noundef %931)
          to label %932 unwind label %906

932:                                              ; preds = %925
  br label %934

933:                                              ; preds = %917
  br label %958

934:                                              ; preds = %932
  br label %946

935:                                              ; preds = %910
  %936 = load ptr, ptr %59, align 8, !tbaa !5
  %937 = invoke noundef ptr @_ZNK6Assimp11SceneHelperptEv(ptr noundef nonnull align 8 dereferenceable(96) %936)
          to label %938 unwind label %906

938:                                              ; preds = %935
  %939 = getelementptr inbounds %struct.aiScene, ptr %937, i32 0, i32 3
  %940 = load ptr, ptr %939, align 8, !tbaa !62
  %941 = load i32, ptr %60, align 4, !tbaa !9
  %942 = zext i32 %941 to i64
  %943 = getelementptr inbounds ptr, ptr %940, i64 %942
  %944 = load ptr, ptr %943, align 8, !tbaa !5
  %945 = load ptr, ptr %57, align 8, !tbaa !5
  store ptr %944, ptr %945, align 8, !tbaa !5
  br label %946

946:                                              ; preds = %938, %934
  %947 = load i32, ptr %58, align 4, !tbaa !9
  %948 = zext i32 %947 to i64
  %949 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %30, i64 noundef %948) #12
  %950 = load i32, ptr %949, align 4, !tbaa !9
  %951 = load ptr, ptr %57, align 8, !tbaa !5
  %952 = load ptr, ptr %951, align 8, !tbaa !5
  %953 = getelementptr inbounds %struct.aiMesh, ptr %952, i32 0, i32 13
  %954 = load i32, ptr %953, align 8, !tbaa !63
  %955 = add i32 %954, %950
  store i32 %955, ptr %953, align 8, !tbaa !63
  %956 = load ptr, ptr %57, align 8, !tbaa !5
  %957 = getelementptr inbounds ptr, ptr %956, i32 1
  store ptr %957, ptr %57, align 8, !tbaa !5
  br label %958

958:                                              ; preds = %946, %933
  %959 = load i32, ptr %60, align 4, !tbaa !9
  %960 = add i32 %959, 1
  store i32 %960, ptr %60, align 4, !tbaa !9
  br label %897, !llvm.loop !69

961:                                              ; preds = %905
  %962 = load i32, ptr %40, align 4, !tbaa !9
  %963 = load i32, ptr %58, align 4, !tbaa !9
  %964 = zext i32 %963 to i64
  %965 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %30, i64 noundef %964) #12
  store i32 %962, ptr %965, align 4, !tbaa !9
  %966 = load ptr, ptr %57, align 8, !tbaa !5
  %967 = load ptr, ptr %22, align 8, !tbaa !5
  %968 = getelementptr inbounds %struct.aiScene, ptr %967, i32 0, i32 3
  %969 = load ptr, ptr %968, align 8, !tbaa !62
  %970 = ptrtoint ptr %966 to i64
  %971 = ptrtoint ptr %969 to i64
  %972 = sub i64 %970, %971
  %973 = sdiv exact i64 %972, 8
  %974 = trunc i64 %973 to i32
  store i32 %974, ptr %40, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #12
  br label %975

975:                                              ; preds = %961
  %976 = load i32, ptr %58, align 4, !tbaa !9
  %977 = add i32 %976, 1
  store i32 %977, ptr %58, align 4, !tbaa !9
  br label %883, !llvm.loop !70

978:                                              ; preds = %888
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #12
  br label %980

979:                                              ; preds = %906, %889
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #12
  br label %1730

980:                                              ; preds = %978, %865
  call void @llvm.lifetime.start.p0(i64 24, ptr %61) #12
  call void @_ZNSt6vectorIN6Assimp18NodeAttachmentInfoESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %61) #12
  %981 = load ptr, ptr %7, align 8, !tbaa !5
  %982 = call noundef i64 @_ZNKSt6vectorIN6Assimp14AttachmentInfoESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %981) #12
  invoke void @_ZNSt6vectorIN6Assimp18NodeAttachmentInfoESaIS1_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %61, i64 noundef %982)
          to label %983 unwind label %1051

983:                                              ; preds = %980
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #12
  %984 = load ptr, ptr %22, align 8, !tbaa !5
  %985 = getelementptr inbounds %struct.aiScene, ptr %984, i32 0, i32 10
  %986 = load i32, ptr %985, align 8, !tbaa !42
  %987 = icmp ne i32 %986, 0
  store i1 false, ptr %65, align 1
  br i1 %987, label %988, label %999

988:                                              ; preds = %983
  %989 = load ptr, ptr %22, align 8, !tbaa !5
  %990 = getelementptr inbounds %struct.aiScene, ptr %989, i32 0, i32 10
  %991 = load i32, ptr %990, align 8, !tbaa !42
  %992 = zext i32 %991 to i64
  %993 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %992, i64 8)
  %994 = extractvalue { i64, i1 } %993, 1
  %995 = extractvalue { i64, i1 } %993, 0
  %996 = select i1 %994, i64 -1, i64 %995
  %997 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %996) #14
          to label %998 unwind label %1055

998:                                              ; preds = %988
  store ptr %997, ptr %63, align 8
  store i64 %996, ptr %64, align 8
  store i1 true, ptr %65, align 1
  br label %1000

999:                                              ; preds = %983
  br label %1000

1000:                                             ; preds = %999, %998
  %1001 = phi ptr [ %997, %998 ], [ null, %999 ]
  %1002 = load ptr, ptr %22, align 8, !tbaa !5
  %1003 = getelementptr inbounds %struct.aiScene, ptr %1002, i32 0, i32 11
  store ptr %1001, ptr %1003, align 8, !tbaa !71
  store ptr %1001, ptr %62, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #12
  %1004 = load ptr, ptr %22, align 8, !tbaa !5
  %1005 = getelementptr inbounds %struct.aiScene, ptr %1004, i32 0, i32 12
  %1006 = load i32, ptr %1005, align 8, !tbaa !43
  %1007 = icmp ne i32 %1006, 0
  store i1 false, ptr %69, align 1
  br i1 %1007, label %1008, label %1019

1008:                                             ; preds = %1000
  %1009 = load ptr, ptr %22, align 8, !tbaa !5
  %1010 = getelementptr inbounds %struct.aiScene, ptr %1009, i32 0, i32 12
  %1011 = load i32, ptr %1010, align 8, !tbaa !43
  %1012 = zext i32 %1011 to i64
  %1013 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %1012, i64 8)
  %1014 = extractvalue { i64, i1 } %1013, 1
  %1015 = extractvalue { i64, i1 } %1013, 0
  %1016 = select i1 %1014, i64 -1, i64 %1015
  %1017 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %1016) #14
          to label %1018 unwind label %1059

1018:                                             ; preds = %1008
  store ptr %1017, ptr %67, align 8
  store i64 %1016, ptr %68, align 8
  store i1 true, ptr %69, align 1
  br label %1020

1019:                                             ; preds = %1000
  br label %1020

1020:                                             ; preds = %1019, %1018
  %1021 = phi ptr [ %1017, %1018 ], [ null, %1019 ]
  %1022 = load ptr, ptr %22, align 8, !tbaa !5
  %1023 = getelementptr inbounds %struct.aiScene, ptr %1022, i32 0, i32 13
  store ptr %1021, ptr %1023, align 8, !tbaa !72
  store ptr %1021, ptr %66, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #12
  %1024 = load ptr, ptr %22, align 8, !tbaa !5
  %1025 = getelementptr inbounds %struct.aiScene, ptr %1024, i32 0, i32 6
  %1026 = load i32, ptr %1025, align 8, !tbaa !32
  %1027 = icmp ne i32 %1026, 0
  store i1 false, ptr %73, align 1
  br i1 %1027, label %1028, label %1039

1028:                                             ; preds = %1020
  %1029 = load ptr, ptr %22, align 8, !tbaa !5
  %1030 = getelementptr inbounds %struct.aiScene, ptr %1029, i32 0, i32 6
  %1031 = load i32, ptr %1030, align 8, !tbaa !32
  %1032 = zext i32 %1031 to i64
  %1033 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %1032, i64 8)
  %1034 = extractvalue { i64, i1 } %1033, 1
  %1035 = extractvalue { i64, i1 } %1033, 0
  %1036 = select i1 %1034, i64 -1, i64 %1035
  %1037 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %1036) #14
          to label %1038 unwind label %1063

1038:                                             ; preds = %1028
  store ptr %1037, ptr %71, align 8
  store i64 %1036, ptr %72, align 8
  store i1 true, ptr %73, align 1
  br label %1040

1039:                                             ; preds = %1020
  br label %1040

1040:                                             ; preds = %1039, %1038
  %1041 = phi ptr [ %1037, %1038 ], [ null, %1039 ]
  %1042 = load ptr, ptr %22, align 8, !tbaa !5
  %1043 = getelementptr inbounds %struct.aiScene, ptr %1042, i32 0, i32 7
  store ptr %1041, ptr %1043, align 8, !tbaa !33
  store ptr %1041, ptr %70, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %74) #12
  %1044 = call noundef i64 @_ZNKSt6vectorIN6Assimp11SceneHelperESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %23) #12
  %1045 = sub i64 %1044, 1
  %1046 = trunc i64 %1045 to i32
  store i32 %1046, ptr %74, align 4, !tbaa !9
  br label %1047

1047:                                             ; preds = %1538, %1040
  %1048 = load i32, ptr %74, align 4, !tbaa !9
  %1049 = icmp sge i32 %1048, 0
  br i1 %1049, label %1067, label %1050

1050:                                             ; preds = %1047
  store i32 45, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #12
  br label %1542

1051:                                             ; preds = %980
  %1052 = landingpad { ptr, i32 }
          cleanup
  %1053 = extractvalue { ptr, i32 } %1052, 0
  store ptr %1053, ptr %10, align 8
  %1054 = extractvalue { ptr, i32 } %1052, 1
  store i32 %1054, ptr %11, align 4
  br label %1729

1055:                                             ; preds = %988
  %1056 = landingpad { ptr, i32 }
          cleanup
  %1057 = extractvalue { ptr, i32 } %1056, 0
  store ptr %1057, ptr %10, align 8
  %1058 = extractvalue { ptr, i32 } %1056, 1
  store i32 %1058, ptr %11, align 4
  br label %1728

1059:                                             ; preds = %1008
  %1060 = landingpad { ptr, i32 }
          cleanup
  %1061 = extractvalue { ptr, i32 } %1060, 0
  store ptr %1061, ptr %10, align 8
  %1062 = extractvalue { ptr, i32 } %1060, 1
  store i32 %1062, ptr %11, align 4
  br label %1727

1063:                                             ; preds = %1542, %1028
  %1064 = landingpad { ptr, i32 }
          cleanup
  %1065 = extractvalue { ptr, i32 } %1064, 0
  store ptr %1065, ptr %10, align 8
  %1066 = extractvalue { ptr, i32 } %1064, 1
  store i32 %1066, ptr %11, align 4
  br label %1726

1067:                                             ; preds = %1047
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #12
  %1068 = load i32, ptr %74, align 4, !tbaa !9
  %1069 = sext i32 %1068 to i64
  %1070 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN6Assimp11SceneHelperESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %23, i64 noundef %1069) #12
  store ptr %1070, ptr %75, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #12
  %1071 = load i32, ptr %74, align 4, !tbaa !9
  %1072 = load i32, ptr %74, align 4, !tbaa !9
  %1073 = sext i32 %1072 to i64
  %1074 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %27, i64 noundef %1073) #12
  %1075 = load i32, ptr %1074, align 4, !tbaa !9
  %1076 = icmp ne i32 %1071, %1075
  br i1 %1076, label %1077, label %1116

1077:                                             ; preds = %1067
  %1078 = load ptr, ptr %75, align 8, !tbaa !5
  %1079 = invoke noundef ptr @_ZNK6Assimp11SceneHelperptEv(ptr noundef nonnull align 8 dereferenceable(96) %1078)
          to label %1080 unwind label %1111

1080:                                             ; preds = %1077
  %1081 = getelementptr inbounds %struct.aiScene, ptr %1079, i32 0, i32 1
  %1082 = load ptr, ptr %1081, align 8, !tbaa !29
  invoke void @_ZN6Assimp13SceneCombiner4CopyEPP6aiNodePKS1_(ptr noundef %76, ptr noundef %1082)
          to label %1083 unwind label %1111

1083:                                             ; preds = %1080
  %1084 = load ptr, ptr %76, align 8, !tbaa !5
  %1085 = load i32, ptr %74, align 4, !tbaa !9
  %1086 = sext i32 %1085 to i64
  %1087 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %27, i64 noundef %1086) #12
  %1088 = load i32, ptr %1087, align 4, !tbaa !9
  %1089 = zext i32 %1088 to i64
  %1090 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %30, i64 noundef %1089) #12
  %1091 = load i32, ptr %1090, align 4, !tbaa !9
  invoke void @_ZN6Assimp13SceneCombiner21OffsetNodeMeshIndicesEP6aiNodej(ptr noundef %1084, i32 noundef %1091)
          to label %1092 unwind label %1111

1092:                                             ; preds = %1083
  %1093 = load i32, ptr %8, align 4, !tbaa !9
  %1094 = and i32 %1093, 4
  %1095 = icmp ne i32 %1094, 0
  br i1 %1095, label %1096, label %1115

1096:                                             ; preds = %1092
  %1097 = load ptr, ptr %76, align 8, !tbaa !5
  %1098 = load i32, ptr %74, align 4, !tbaa !9
  %1099 = sext i32 %1098 to i64
  %1100 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %30, i64 noundef %1099) #12
  %1101 = load i32, ptr %1100, align 4, !tbaa !9
  %1102 = load i32, ptr %74, align 4, !tbaa !9
  %1103 = sext i32 %1102 to i64
  %1104 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %27, i64 noundef %1103) #12
  %1105 = load i32, ptr %1104, align 4, !tbaa !9
  %1106 = zext i32 %1105 to i64
  %1107 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %30, i64 noundef %1106) #12
  %1108 = load i32, ptr %1107, align 4, !tbaa !9
  %1109 = sub i32 %1101, %1108
  invoke void @_ZN6Assimp13SceneCombiner21OffsetNodeMeshIndicesEP6aiNodej(ptr noundef %1097, i32 noundef %1109)
          to label %1110 unwind label %1111

1110:                                             ; preds = %1096
  br label %1115

1111:                                             ; preds = %1158, %1148, %1131, %1119, %1116, %1096, %1083, %1080, %1077
  %1112 = landingpad { ptr, i32 }
          cleanup
  %1113 = extractvalue { ptr, i32 } %1112, 0
  store ptr %1113, ptr %10, align 8
  %1114 = extractvalue { ptr, i32 } %1112, 1
  store i32 %1114, ptr %11, align 4
  br label %1541

1115:                                             ; preds = %1110, %1092
  br label %1128

1116:                                             ; preds = %1067
  %1117 = load ptr, ptr %75, align 8, !tbaa !5
  %1118 = invoke noundef ptr @_ZNK6Assimp11SceneHelperptEv(ptr noundef nonnull align 8 dereferenceable(96) %1117)
          to label %1119 unwind label %1111

1119:                                             ; preds = %1116
  %1120 = getelementptr inbounds %struct.aiScene, ptr %1118, i32 0, i32 1
  %1121 = load ptr, ptr %1120, align 8, !tbaa !29
  store ptr %1121, ptr %76, align 8, !tbaa !5
  %1122 = load ptr, ptr %76, align 8, !tbaa !5
  %1123 = load i32, ptr %74, align 4, !tbaa !9
  %1124 = sext i32 %1123 to i64
  %1125 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %30, i64 noundef %1124) #12
  %1126 = load i32, ptr %1125, align 4, !tbaa !9
  invoke void @_ZN6Assimp13SceneCombiner21OffsetNodeMeshIndicesEP6aiNodej(ptr noundef %1122, i32 noundef %1126)
          to label %1127 unwind label %1111

1127:                                             ; preds = %1119
  br label %1128

1128:                                             ; preds = %1127, %1115
  %1129 = load i32, ptr %74, align 4, !tbaa !9
  %1130 = icmp ne i32 %1129, 0
  br i1 %1130, label %1131, label %1140

1131:                                             ; preds = %1128
  %1132 = load ptr, ptr %7, align 8, !tbaa !5
  %1133 = load i32, ptr %74, align 4, !tbaa !9
  %1134 = sub nsw i32 %1133, 1
  %1135 = sext i32 %1134 to i64
  %1136 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN6Assimp14AttachmentInfoESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1132, i64 noundef %1135) #12
  %1137 = getelementptr inbounds %"struct.Assimp::AttachmentInfo", ptr %1136, i32 0, i32 1
  %1138 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Assimp18NodeAttachmentInfoESaIS1_EE12emplace_backIJRP6aiNodeS7_RiEEERS1_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %61, ptr noundef nonnull align 8 dereferenceable(8) %76, ptr noundef nonnull align 8 dereferenceable(8) %1137, ptr noundef nonnull align 4 dereferenceable(4) %74)
          to label %1139 unwind label %1111

1139:                                             ; preds = %1131
  br label %1140

1140:                                             ; preds = %1139, %1128
  %1141 = load i32, ptr %8, align 4, !tbaa !9
  %1142 = and i32 %1141, 1
  %1143 = icmp ne i32 %1142, 0
  br i1 %1143, label %1144, label %1250

1144:                                             ; preds = %1140
  %1145 = load i32, ptr %8, align 4, !tbaa !9
  %1146 = and i32 %1145, 16
  %1147 = icmp ne i32 %1146, 0
  br i1 %1147, label %1148, label %1158

1148:                                             ; preds = %1144
  %1149 = load ptr, ptr %76, align 8, !tbaa !5
  %1150 = load ptr, ptr %75, align 8, !tbaa !5
  %1151 = getelementptr inbounds %"struct.Assimp::SceneHelper", ptr %1150, i32 0, i32 1
  %1152 = getelementptr inbounds [32 x i8], ptr %1151, i64 0, i64 0
  %1153 = load ptr, ptr %75, align 8, !tbaa !5
  %1154 = getelementptr inbounds %"struct.Assimp::SceneHelper", ptr %1153, i32 0, i32 2
  %1155 = load i32, ptr %1154, align 8, !tbaa !28
  %1156 = load i32, ptr %74, align 4, !tbaa !9
  invoke void @_ZN6Assimp13SceneCombiner22AddNodePrefixesCheckedEP6aiNodePKcjRSt6vectorINS_11SceneHelperESaIS6_EEj(ptr noundef %1149, ptr noundef %1152, i32 noundef %1155, ptr noundef nonnull align 8 dereferenceable(24) %23, i32 noundef %1156)
          to label %1157 unwind label %1111

1157:                                             ; preds = %1148
  br label %1167

1158:                                             ; preds = %1144
  %1159 = load ptr, ptr %76, align 8, !tbaa !5
  %1160 = load ptr, ptr %75, align 8, !tbaa !5
  %1161 = getelementptr inbounds %"struct.Assimp::SceneHelper", ptr %1160, i32 0, i32 1
  %1162 = getelementptr inbounds [32 x i8], ptr %1161, i64 0, i64 0
  %1163 = load ptr, ptr %75, align 8, !tbaa !5
  %1164 = getelementptr inbounds %"struct.Assimp::SceneHelper", ptr %1163, i32 0, i32 2
  %1165 = load i32, ptr %1164, align 8, !tbaa !28
  invoke void @_ZN6Assimp13SceneCombiner15AddNodePrefixesEP6aiNodePKcj(ptr noundef %1159, ptr noundef %1162, i32 noundef %1165)
          to label %1166 unwind label %1111

1166:                                             ; preds = %1158
  br label %1167

1167:                                             ; preds = %1166, %1157
  call void @llvm.lifetime.start.p0(i64 4, ptr %77) #12
  store i32 0, ptr %77, align 4, !tbaa !9
  br label %1168

1168:                                             ; preds = %1244, %1167
  %1169 = load i32, ptr %77, align 4, !tbaa !9
  %1170 = load ptr, ptr %75, align 8, !tbaa !5
  %1171 = invoke noundef ptr @_ZNK6Assimp11SceneHelperptEv(ptr noundef nonnull align 8 dereferenceable(96) %1170)
          to label %1172 unwind label %1177

1172:                                             ; preds = %1168
  %1173 = getelementptr inbounds %struct.aiScene, ptr %1171, i32 0, i32 2
  %1174 = load i32, ptr %1173, align 8, !tbaa !41
  %1175 = icmp ult i32 %1169, %1174
  br i1 %1175, label %1181, label %1176

1176:                                             ; preds = %1172
  store i32 48, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #12
  br label %1249

1177:                                             ; preds = %1168
  %1178 = landingpad { ptr, i32 }
          cleanup
  %1179 = extractvalue { ptr, i32 } %1178, 0
  store ptr %1179, ptr %10, align 8
  %1180 = extractvalue { ptr, i32 } %1178, 1
  store i32 %1180, ptr %11, align 4
  br label %1248

1181:                                             ; preds = %1172
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #12
  %1182 = load ptr, ptr %75, align 8, !tbaa !5
  %1183 = invoke noundef ptr @_ZNK6Assimp11SceneHelperptEv(ptr noundef nonnull align 8 dereferenceable(96) %1182)
          to label %1184 unwind label %1198

1184:                                             ; preds = %1181
  %1185 = getelementptr inbounds %struct.aiScene, ptr %1183, i32 0, i32 3
  %1186 = load ptr, ptr %1185, align 8, !tbaa !62
  %1187 = load i32, ptr %77, align 4, !tbaa !9
  %1188 = zext i32 %1187 to i64
  %1189 = getelementptr inbounds ptr, ptr %1186, i64 %1188
  %1190 = load ptr, ptr %1189, align 8, !tbaa !5
  store ptr %1190, ptr %78, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %79) #12
  store i32 0, ptr %79, align 4, !tbaa !9
  br label %1191

1191:                                             ; preds = %1240, %1184
  %1192 = load i32, ptr %79, align 4, !tbaa !9
  %1193 = load ptr, ptr %78, align 8, !tbaa !5
  %1194 = getelementptr inbounds %struct.aiMesh, ptr %1193, i32 0, i32 11
  %1195 = load i32, ptr %1194, align 8, !tbaa !73
  %1196 = icmp ult i32 %1192, %1195
  br i1 %1196, label %1202, label %1197

1197:                                             ; preds = %1191
  store i32 51, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #12
  br label %1243

1198:                                             ; preds = %1181
  %1199 = landingpad { ptr, i32 }
          cleanup
  %1200 = extractvalue { ptr, i32 } %1199, 0
  store ptr %1200, ptr %10, align 8
  %1201 = extractvalue { ptr, i32 } %1199, 1
  store i32 %1201, ptr %11, align 4
  br label %1247

1202:                                             ; preds = %1191
  %1203 = load i32, ptr %8, align 4, !tbaa !9
  %1204 = and i32 %1203, 16
  %1205 = icmp ne i32 %1204, 0
  br i1 %1205, label %1206, label %1224

1206:                                             ; preds = %1202
  %1207 = load ptr, ptr %78, align 8, !tbaa !5
  %1208 = getelementptr inbounds %struct.aiMesh, ptr %1207, i32 0, i32 12
  %1209 = load ptr, ptr %1208, align 8, !tbaa !74
  %1210 = load i32, ptr %79, align 4, !tbaa !9
  %1211 = zext i32 %1210 to i64
  %1212 = getelementptr inbounds ptr, ptr %1209, i64 %1211
  %1213 = load ptr, ptr %1212, align 8, !tbaa !5
  %1214 = getelementptr inbounds %struct.aiBone, ptr %1213, i32 0, i32 0
  %1215 = load i32, ptr %74, align 4, !tbaa !9
  %1216 = invoke noundef zeroext i1 @_ZN6Assimp13SceneCombiner13FindNameMatchERK8aiStringRSt6vectorINS_11SceneHelperESaIS5_EEj(ptr noundef nonnull align 4 dereferenceable(1028) %1214, ptr noundef nonnull align 8 dereferenceable(24) %23, i32 noundef %1215)
          to label %1217 unwind label %1219

1217:                                             ; preds = %1206
  br i1 %1216, label %1223, label %1218

1218:                                             ; preds = %1217
  br label %1240

1219:                                             ; preds = %1224, %1206
  %1220 = landingpad { ptr, i32 }
          cleanup
  %1221 = extractvalue { ptr, i32 } %1220, 0
  store ptr %1221, ptr %10, align 8
  %1222 = extractvalue { ptr, i32 } %1220, 1
  store i32 %1222, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #12
  br label %1247

1223:                                             ; preds = %1217
  br label %1224

1224:                                             ; preds = %1223, %1202
  %1225 = load ptr, ptr %78, align 8, !tbaa !5
  %1226 = getelementptr inbounds %struct.aiMesh, ptr %1225, i32 0, i32 12
  %1227 = load ptr, ptr %1226, align 8, !tbaa !74
  %1228 = load i32, ptr %79, align 4, !tbaa !9
  %1229 = zext i32 %1228 to i64
  %1230 = getelementptr inbounds ptr, ptr %1227, i64 %1229
  %1231 = load ptr, ptr %1230, align 8, !tbaa !5
  %1232 = getelementptr inbounds %struct.aiBone, ptr %1231, i32 0, i32 0
  %1233 = load ptr, ptr %75, align 8, !tbaa !5
  %1234 = getelementptr inbounds %"struct.Assimp::SceneHelper", ptr %1233, i32 0, i32 1
  %1235 = getelementptr inbounds [32 x i8], ptr %1234, i64 0, i64 0
  %1236 = load ptr, ptr %75, align 8, !tbaa !5
  %1237 = getelementptr inbounds %"struct.Assimp::SceneHelper", ptr %1236, i32 0, i32 2
  %1238 = load i32, ptr %1237, align 8, !tbaa !28
  invoke void @_ZN6Assimp12PrefixStringER8aiStringPKcj(ptr noundef nonnull align 4 dereferenceable(1028) %1232, ptr noundef %1235, i32 noundef %1238)
          to label %1239 unwind label %1219

1239:                                             ; preds = %1224
  br label %1240

1240:                                             ; preds = %1239, %1218
  %1241 = load i32, ptr %79, align 4, !tbaa !9
  %1242 = add i32 %1241, 1
  store i32 %1242, ptr %79, align 4, !tbaa !9
  br label %1191, !llvm.loop !75

1243:                                             ; preds = %1197
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #12
  br label %1244

1244:                                             ; preds = %1243
  %1245 = load i32, ptr %77, align 4, !tbaa !9
  %1246 = add i32 %1245, 1
  store i32 %1246, ptr %77, align 4, !tbaa !9
  br label %1168, !llvm.loop !76

1247:                                             ; preds = %1219, %1198
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #12
  br label %1248

1248:                                             ; preds = %1247, %1177
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #12
  br label %1541

1249:                                             ; preds = %1176
  br label %1250

1250:                                             ; preds = %1249, %1140
  call void @llvm.lifetime.start.p0(i64 4, ptr %80) #12
  store i32 0, ptr %80, align 4, !tbaa !9
  br label %1251

1251:                                             ; preds = %1323, %1250
  %1252 = load i32, ptr %80, align 4, !tbaa !9
  %1253 = load ptr, ptr %75, align 8, !tbaa !5
  %1254 = invoke noundef ptr @_ZNK6Assimp11SceneHelperptEv(ptr noundef nonnull align 8 dereferenceable(96) %1253)
          to label %1255 unwind label %1260

1255:                                             ; preds = %1251
  %1256 = getelementptr inbounds %struct.aiScene, ptr %1254, i32 0, i32 10
  %1257 = load i32, ptr %1256, align 8, !tbaa !42
  %1258 = icmp ult i32 %1252, %1257
  br i1 %1258, label %1264, label %1259

1259:                                             ; preds = %1255
  store i32 54, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #12
  br label %1328

1260:                                             ; preds = %1311, %1302, %1283, %1275, %1271, %1251
  %1261 = landingpad { ptr, i32 }
          cleanup
  %1262 = extractvalue { ptr, i32 } %1261, 0
  store ptr %1262, ptr %10, align 8
  %1263 = extractvalue { ptr, i32 } %1261, 1
  store i32 %1263, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #12
  br label %1541

1264:                                             ; preds = %1255
  %1265 = load i32, ptr %74, align 4, !tbaa !9
  %1266 = load i32, ptr %74, align 4, !tbaa !9
  %1267 = sext i32 %1266 to i64
  %1268 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %27, i64 noundef %1267) #12
  %1269 = load i32, ptr %1268, align 4, !tbaa !9
  %1270 = icmp ne i32 %1265, %1269
  br i1 %1270, label %1271, label %1283

1271:                                             ; preds = %1264
  %1272 = load ptr, ptr %62, align 8, !tbaa !5
  %1273 = load ptr, ptr %75, align 8, !tbaa !5
  %1274 = invoke noundef ptr @_ZNK6Assimp11SceneHelperptEv(ptr noundef nonnull align 8 dereferenceable(96) %1273)
          to label %1275 unwind label %1260

1275:                                             ; preds = %1271
  %1276 = getelementptr inbounds %struct.aiScene, ptr %1274, i32 0, i32 11
  %1277 = load ptr, ptr %1276, align 8, !tbaa !71
  %1278 = load i32, ptr %80, align 4, !tbaa !9
  %1279 = zext i32 %1278 to i64
  %1280 = getelementptr inbounds ptr, ptr %1277, i64 %1279
  %1281 = load ptr, ptr %1280, align 8, !tbaa !5
  invoke void @_ZN6Assimp13SceneCombiner4CopyEPP7aiLightPKS1_(ptr noundef %1272, ptr noundef %1281)
          to label %1282 unwind label %1260

1282:                                             ; preds = %1275
  br label %1294

1283:                                             ; preds = %1264
  %1284 = load ptr, ptr %75, align 8, !tbaa !5
  %1285 = invoke noundef ptr @_ZNK6Assimp11SceneHelperptEv(ptr noundef nonnull align 8 dereferenceable(96) %1284)
          to label %1286 unwind label %1260

1286:                                             ; preds = %1283
  %1287 = getelementptr inbounds %struct.aiScene, ptr %1285, i32 0, i32 11
  %1288 = load ptr, ptr %1287, align 8, !tbaa !71
  %1289 = load i32, ptr %80, align 4, !tbaa !9
  %1290 = zext i32 %1289 to i64
  %1291 = getelementptr inbounds ptr, ptr %1288, i64 %1290
  %1292 = load ptr, ptr %1291, align 8, !tbaa !5
  %1293 = load ptr, ptr %62, align 8, !tbaa !5
  store ptr %1292, ptr %1293, align 8, !tbaa !5
  br label %1294

1294:                                             ; preds = %1286, %1282
  %1295 = load i32, ptr %8, align 4, !tbaa !9
  %1296 = and i32 %1295, 1
  %1297 = icmp ne i32 %1296, 0
  br i1 %1297, label %1298, label %1322

1298:                                             ; preds = %1294
  %1299 = load i32, ptr %8, align 4, !tbaa !9
  %1300 = and i32 %1299, 16
  %1301 = icmp ne i32 %1300, 0
  br i1 %1301, label %1302, label %1311

1302:                                             ; preds = %1298
  %1303 = load ptr, ptr %62, align 8, !tbaa !5
  %1304 = load ptr, ptr %1303, align 8, !tbaa !5
  %1305 = getelementptr inbounds %struct.aiLight, ptr %1304, i32 0, i32 0
  %1306 = load i32, ptr %74, align 4, !tbaa !9
  %1307 = invoke noundef zeroext i1 @_ZN6Assimp13SceneCombiner13FindNameMatchERK8aiStringRSt6vectorINS_11SceneHelperESaIS5_EEj(ptr noundef nonnull align 4 dereferenceable(1028) %1305, ptr noundef nonnull align 8 dereferenceable(24) %23, i32 noundef %1306)
          to label %1308 unwind label %1260

1308:                                             ; preds = %1302
  br i1 %1307, label %1310, label %1309

1309:                                             ; preds = %1308
  br label %1323

1310:                                             ; preds = %1308
  br label %1311

1311:                                             ; preds = %1310, %1298
  %1312 = load ptr, ptr %62, align 8, !tbaa !5
  %1313 = load ptr, ptr %1312, align 8, !tbaa !5
  %1314 = getelementptr inbounds %struct.aiLight, ptr %1313, i32 0, i32 0
  %1315 = load ptr, ptr %75, align 8, !tbaa !5
  %1316 = getelementptr inbounds %"struct.Assimp::SceneHelper", ptr %1315, i32 0, i32 1
  %1317 = getelementptr inbounds [32 x i8], ptr %1316, i64 0, i64 0
  %1318 = load ptr, ptr %75, align 8, !tbaa !5
  %1319 = getelementptr inbounds %"struct.Assimp::SceneHelper", ptr %1318, i32 0, i32 2
  %1320 = load i32, ptr %1319, align 8, !tbaa !28
  invoke void @_ZN6Assimp12PrefixStringER8aiStringPKcj(ptr noundef nonnull align 4 dereferenceable(1028) %1314, ptr noundef %1317, i32 noundef %1320)
          to label %1321 unwind label %1260

1321:                                             ; preds = %1311
  br label %1322

1322:                                             ; preds = %1321, %1294
  br label %1323

1323:                                             ; preds = %1322, %1309
  %1324 = load i32, ptr %80, align 4, !tbaa !9
  %1325 = add i32 %1324, 1
  store i32 %1325, ptr %80, align 4, !tbaa !9
  %1326 = load ptr, ptr %62, align 8, !tbaa !5
  %1327 = getelementptr inbounds ptr, ptr %1326, i32 1
  store ptr %1327, ptr %62, align 8, !tbaa !5
  br label %1251, !llvm.loop !77

1328:                                             ; preds = %1259
  call void @llvm.lifetime.start.p0(i64 4, ptr %81) #12
  store i32 0, ptr %81, align 4, !tbaa !9
  br label %1329

1329:                                             ; preds = %1401, %1328
  %1330 = load i32, ptr %81, align 4, !tbaa !9
  %1331 = load ptr, ptr %75, align 8, !tbaa !5
  %1332 = invoke noundef ptr @_ZNK6Assimp11SceneHelperptEv(ptr noundef nonnull align 8 dereferenceable(96) %1331)
          to label %1333 unwind label %1338

1333:                                             ; preds = %1329
  %1334 = getelementptr inbounds %struct.aiScene, ptr %1332, i32 0, i32 12
  %1335 = load i32, ptr %1334, align 8, !tbaa !43
  %1336 = icmp ult i32 %1330, %1335
  br i1 %1336, label %1342, label %1337

1337:                                             ; preds = %1333
  store i32 57, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #12
  br label %1406

1338:                                             ; preds = %1389, %1380, %1361, %1353, %1349, %1329
  %1339 = landingpad { ptr, i32 }
          cleanup
  %1340 = extractvalue { ptr, i32 } %1339, 0
  store ptr %1340, ptr %10, align 8
  %1341 = extractvalue { ptr, i32 } %1339, 1
  store i32 %1341, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #12
  br label %1541

1342:                                             ; preds = %1333
  %1343 = load i32, ptr %74, align 4, !tbaa !9
  %1344 = load i32, ptr %74, align 4, !tbaa !9
  %1345 = sext i32 %1344 to i64
  %1346 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %27, i64 noundef %1345) #12
  %1347 = load i32, ptr %1346, align 4, !tbaa !9
  %1348 = icmp ne i32 %1343, %1347
  br i1 %1348, label %1349, label %1361

1349:                                             ; preds = %1342
  %1350 = load ptr, ptr %66, align 8, !tbaa !5
  %1351 = load ptr, ptr %75, align 8, !tbaa !5
  %1352 = invoke noundef ptr @_ZNK6Assimp11SceneHelperptEv(ptr noundef nonnull align 8 dereferenceable(96) %1351)
          to label %1353 unwind label %1338

1353:                                             ; preds = %1349
  %1354 = getelementptr inbounds %struct.aiScene, ptr %1352, i32 0, i32 13
  %1355 = load ptr, ptr %1354, align 8, !tbaa !72
  %1356 = load i32, ptr %81, align 4, !tbaa !9
  %1357 = zext i32 %1356 to i64
  %1358 = getelementptr inbounds ptr, ptr %1355, i64 %1357
  %1359 = load ptr, ptr %1358, align 8, !tbaa !5
  invoke void @_ZN6Assimp13SceneCombiner4CopyEPP8aiCameraPKS1_(ptr noundef %1350, ptr noundef %1359)
          to label %1360 unwind label %1338

1360:                                             ; preds = %1353
  br label %1372

1361:                                             ; preds = %1342
  %1362 = load ptr, ptr %75, align 8, !tbaa !5
  %1363 = invoke noundef ptr @_ZNK6Assimp11SceneHelperptEv(ptr noundef nonnull align 8 dereferenceable(96) %1362)
          to label %1364 unwind label %1338

1364:                                             ; preds = %1361
  %1365 = getelementptr inbounds %struct.aiScene, ptr %1363, i32 0, i32 13
  %1366 = load ptr, ptr %1365, align 8, !tbaa !72
  %1367 = load i32, ptr %81, align 4, !tbaa !9
  %1368 = zext i32 %1367 to i64
  %1369 = getelementptr inbounds ptr, ptr %1366, i64 %1368
  %1370 = load ptr, ptr %1369, align 8, !tbaa !5
  %1371 = load ptr, ptr %66, align 8, !tbaa !5
  store ptr %1370, ptr %1371, align 8, !tbaa !5
  br label %1372

1372:                                             ; preds = %1364, %1360
  %1373 = load i32, ptr %8, align 4, !tbaa !9
  %1374 = and i32 %1373, 1
  %1375 = icmp ne i32 %1374, 0
  br i1 %1375, label %1376, label %1400

1376:                                             ; preds = %1372
  %1377 = load i32, ptr %8, align 4, !tbaa !9
  %1378 = and i32 %1377, 16
  %1379 = icmp ne i32 %1378, 0
  br i1 %1379, label %1380, label %1389

1380:                                             ; preds = %1376
  %1381 = load ptr, ptr %66, align 8, !tbaa !5
  %1382 = load ptr, ptr %1381, align 8, !tbaa !5
  %1383 = getelementptr inbounds %struct.aiCamera, ptr %1382, i32 0, i32 0
  %1384 = load i32, ptr %74, align 4, !tbaa !9
  %1385 = invoke noundef zeroext i1 @_ZN6Assimp13SceneCombiner13FindNameMatchERK8aiStringRSt6vectorINS_11SceneHelperESaIS5_EEj(ptr noundef nonnull align 4 dereferenceable(1028) %1383, ptr noundef nonnull align 8 dereferenceable(24) %23, i32 noundef %1384)
          to label %1386 unwind label %1338

1386:                                             ; preds = %1380
  br i1 %1385, label %1388, label %1387

1387:                                             ; preds = %1386
  br label %1401

1388:                                             ; preds = %1386
  br label %1389

1389:                                             ; preds = %1388, %1376
  %1390 = load ptr, ptr %66, align 8, !tbaa !5
  %1391 = load ptr, ptr %1390, align 8, !tbaa !5
  %1392 = getelementptr inbounds %struct.aiCamera, ptr %1391, i32 0, i32 0
  %1393 = load ptr, ptr %75, align 8, !tbaa !5
  %1394 = getelementptr inbounds %"struct.Assimp::SceneHelper", ptr %1393, i32 0, i32 1
  %1395 = getelementptr inbounds [32 x i8], ptr %1394, i64 0, i64 0
  %1396 = load ptr, ptr %75, align 8, !tbaa !5
  %1397 = getelementptr inbounds %"struct.Assimp::SceneHelper", ptr %1396, i32 0, i32 2
  %1398 = load i32, ptr %1397, align 8, !tbaa !28
  invoke void @_ZN6Assimp12PrefixStringER8aiStringPKcj(ptr noundef nonnull align 4 dereferenceable(1028) %1392, ptr noundef %1395, i32 noundef %1398)
          to label %1399 unwind label %1338

1399:                                             ; preds = %1389
  br label %1400

1400:                                             ; preds = %1399, %1372
  br label %1401

1401:                                             ; preds = %1400, %1387
  %1402 = load i32, ptr %81, align 4, !tbaa !9
  %1403 = add i32 %1402, 1
  store i32 %1403, ptr %81, align 4, !tbaa !9
  %1404 = load ptr, ptr %66, align 8, !tbaa !5
  %1405 = getelementptr inbounds ptr, ptr %1404, i32 1
  store ptr %1405, ptr %66, align 8, !tbaa !5
  br label %1329, !llvm.loop !78

1406:                                             ; preds = %1337
  call void @llvm.lifetime.start.p0(i64 4, ptr %82) #12
  store i32 0, ptr %82, align 4, !tbaa !9
  br label %1407

1407:                                             ; preds = %1531, %1406
  %1408 = load i32, ptr %82, align 4, !tbaa !9
  %1409 = load ptr, ptr %75, align 8, !tbaa !5
  %1410 = invoke noundef ptr @_ZNK6Assimp11SceneHelperptEv(ptr noundef nonnull align 8 dereferenceable(96) %1409)
          to label %1411 unwind label %1416

1411:                                             ; preds = %1407
  %1412 = getelementptr inbounds %struct.aiScene, ptr %1410, i32 0, i32 6
  %1413 = load i32, ptr %1412, align 8, !tbaa !32
  %1414 = icmp ult i32 %1408, %1413
  br i1 %1414, label %1420, label %1415

1415:                                             ; preds = %1411
  store i32 60, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #12
  br label %1537

1416:                                             ; preds = %1467, %1458, %1439, %1431, %1427, %1407
  %1417 = landingpad { ptr, i32 }
          cleanup
  %1418 = extractvalue { ptr, i32 } %1417, 0
  store ptr %1418, ptr %10, align 8
  %1419 = extractvalue { ptr, i32 } %1417, 1
  store i32 %1419, ptr %11, align 4
  br label %1536

1420:                                             ; preds = %1411
  %1421 = load i32, ptr %74, align 4, !tbaa !9
  %1422 = load i32, ptr %74, align 4, !tbaa !9
  %1423 = sext i32 %1422 to i64
  %1424 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %27, i64 noundef %1423) #12
  %1425 = load i32, ptr %1424, align 4, !tbaa !9
  %1426 = icmp ne i32 %1421, %1425
  br i1 %1426, label %1427, label %1439

1427:                                             ; preds = %1420
  %1428 = load ptr, ptr %70, align 8, !tbaa !5
  %1429 = load ptr, ptr %75, align 8, !tbaa !5
  %1430 = invoke noundef ptr @_ZNK6Assimp11SceneHelperptEv(ptr noundef nonnull align 8 dereferenceable(96) %1429)
          to label %1431 unwind label %1416

1431:                                             ; preds = %1427
  %1432 = getelementptr inbounds %struct.aiScene, ptr %1430, i32 0, i32 7
  %1433 = load ptr, ptr %1432, align 8, !tbaa !33
  %1434 = load i32, ptr %82, align 4, !tbaa !9
  %1435 = zext i32 %1434 to i64
  %1436 = getelementptr inbounds ptr, ptr %1433, i64 %1435
  %1437 = load ptr, ptr %1436, align 8, !tbaa !5
  invoke void @_ZN6Assimp13SceneCombiner4CopyEPP11aiAnimationPKS1_(ptr noundef %1428, ptr noundef %1437)
          to label %1438 unwind label %1416

1438:                                             ; preds = %1431
  br label %1450

1439:                                             ; preds = %1420
  %1440 = load ptr, ptr %75, align 8, !tbaa !5
  %1441 = invoke noundef ptr @_ZNK6Assimp11SceneHelperptEv(ptr noundef nonnull align 8 dereferenceable(96) %1440)
          to label %1442 unwind label %1416

1442:                                             ; preds = %1439
  %1443 = getelementptr inbounds %struct.aiScene, ptr %1441, i32 0, i32 7
  %1444 = load ptr, ptr %1443, align 8, !tbaa !33
  %1445 = load i32, ptr %82, align 4, !tbaa !9
  %1446 = zext i32 %1445 to i64
  %1447 = getelementptr inbounds ptr, ptr %1444, i64 %1446
  %1448 = load ptr, ptr %1447, align 8, !tbaa !5
  %1449 = load ptr, ptr %70, align 8, !tbaa !5
  store ptr %1448, ptr %1449, align 8, !tbaa !5
  br label %1450

1450:                                             ; preds = %1442, %1438
  %1451 = load i32, ptr %8, align 4, !tbaa !9
  %1452 = and i32 %1451, 1
  %1453 = icmp ne i32 %1452, 0
  br i1 %1453, label %1454, label %1530

1454:                                             ; preds = %1450
  %1455 = load i32, ptr %8, align 4, !tbaa !9
  %1456 = and i32 %1455, 16
  %1457 = icmp ne i32 %1456, 0
  br i1 %1457, label %1458, label %1467

1458:                                             ; preds = %1454
  %1459 = load ptr, ptr %70, align 8, !tbaa !5
  %1460 = load ptr, ptr %1459, align 8, !tbaa !5
  %1461 = getelementptr inbounds %struct.aiAnimation, ptr %1460, i32 0, i32 0
  %1462 = load i32, ptr %74, align 4, !tbaa !9
  %1463 = invoke noundef zeroext i1 @_ZN6Assimp13SceneCombiner13FindNameMatchERK8aiStringRSt6vectorINS_11SceneHelperESaIS5_EEj(ptr noundef nonnull align 4 dereferenceable(1028) %1461, ptr noundef nonnull align 8 dereferenceable(24) %23, i32 noundef %1462)
          to label %1464 unwind label %1416

1464:                                             ; preds = %1458
  br i1 %1463, label %1466, label %1465

1465:                                             ; preds = %1464
  br label %1531

1466:                                             ; preds = %1464
  br label %1467

1467:                                             ; preds = %1466, %1454
  %1468 = load ptr, ptr %70, align 8, !tbaa !5
  %1469 = load ptr, ptr %1468, align 8, !tbaa !5
  %1470 = getelementptr inbounds %struct.aiAnimation, ptr %1469, i32 0, i32 0
  %1471 = load ptr, ptr %75, align 8, !tbaa !5
  %1472 = getelementptr inbounds %"struct.Assimp::SceneHelper", ptr %1471, i32 0, i32 1
  %1473 = getelementptr inbounds [32 x i8], ptr %1472, i64 0, i64 0
  %1474 = load ptr, ptr %75, align 8, !tbaa !5
  %1475 = getelementptr inbounds %"struct.Assimp::SceneHelper", ptr %1474, i32 0, i32 2
  %1476 = load i32, ptr %1475, align 8, !tbaa !28
  invoke void @_ZN6Assimp12PrefixStringER8aiStringPKcj(ptr noundef nonnull align 4 dereferenceable(1028) %1470, ptr noundef %1473, i32 noundef %1476)
          to label %1477 unwind label %1416

1477:                                             ; preds = %1467
  call void @llvm.lifetime.start.p0(i64 4, ptr %83) #12
  store i32 0, ptr %83, align 4, !tbaa !9
  br label %1478

1478:                                             ; preds = %1526, %1477
  %1479 = load i32, ptr %83, align 4, !tbaa !9
  %1480 = load ptr, ptr %70, align 8, !tbaa !5
  %1481 = load ptr, ptr %1480, align 8, !tbaa !5
  %1482 = getelementptr inbounds %struct.aiAnimation, ptr %1481, i32 0, i32 3
  %1483 = load i32, ptr %1482, align 8, !tbaa !79
  %1484 = icmp ult i32 %1479, %1483
  br i1 %1484, label %1486, label %1485

1485:                                             ; preds = %1478
  store i32 63, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #12
  br label %1529

1486:                                             ; preds = %1478
  %1487 = load i32, ptr %8, align 4, !tbaa !9
  %1488 = and i32 %1487, 16
  %1489 = icmp ne i32 %1488, 0
  br i1 %1489, label %1490, label %1509

1490:                                             ; preds = %1486
  %1491 = load ptr, ptr %70, align 8, !tbaa !5
  %1492 = load ptr, ptr %1491, align 8, !tbaa !5
  %1493 = getelementptr inbounds %struct.aiAnimation, ptr %1492, i32 0, i32 4
  %1494 = load ptr, ptr %1493, align 8, !tbaa !80
  %1495 = load i32, ptr %83, align 4, !tbaa !9
  %1496 = zext i32 %1495 to i64
  %1497 = getelementptr inbounds ptr, ptr %1494, i64 %1496
  %1498 = load ptr, ptr %1497, align 8, !tbaa !5
  %1499 = getelementptr inbounds %struct.aiNodeAnim, ptr %1498, i32 0, i32 0
  %1500 = load i32, ptr %74, align 4, !tbaa !9
  %1501 = invoke noundef zeroext i1 @_ZN6Assimp13SceneCombiner13FindNameMatchERK8aiStringRSt6vectorINS_11SceneHelperESaIS5_EEj(ptr noundef nonnull align 4 dereferenceable(1028) %1499, ptr noundef nonnull align 8 dereferenceable(24) %23, i32 noundef %1500)
          to label %1502 unwind label %1504

1502:                                             ; preds = %1490
  br i1 %1501, label %1508, label %1503

1503:                                             ; preds = %1502
  br label %1526

1504:                                             ; preds = %1509, %1490
  %1505 = landingpad { ptr, i32 }
          cleanup
  %1506 = extractvalue { ptr, i32 } %1505, 0
  store ptr %1506, ptr %10, align 8
  %1507 = extractvalue { ptr, i32 } %1505, 1
  store i32 %1507, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #12
  br label %1536

1508:                                             ; preds = %1502
  br label %1509

1509:                                             ; preds = %1508, %1486
  %1510 = load ptr, ptr %70, align 8, !tbaa !5
  %1511 = load ptr, ptr %1510, align 8, !tbaa !5
  %1512 = getelementptr inbounds %struct.aiAnimation, ptr %1511, i32 0, i32 4
  %1513 = load ptr, ptr %1512, align 8, !tbaa !80
  %1514 = load i32, ptr %83, align 4, !tbaa !9
  %1515 = zext i32 %1514 to i64
  %1516 = getelementptr inbounds ptr, ptr %1513, i64 %1515
  %1517 = load ptr, ptr %1516, align 8, !tbaa !5
  %1518 = getelementptr inbounds %struct.aiNodeAnim, ptr %1517, i32 0, i32 0
  %1519 = load ptr, ptr %75, align 8, !tbaa !5
  %1520 = getelementptr inbounds %"struct.Assimp::SceneHelper", ptr %1519, i32 0, i32 1
  %1521 = getelementptr inbounds [32 x i8], ptr %1520, i64 0, i64 0
  %1522 = load ptr, ptr %75, align 8, !tbaa !5
  %1523 = getelementptr inbounds %"struct.Assimp::SceneHelper", ptr %1522, i32 0, i32 2
  %1524 = load i32, ptr %1523, align 8, !tbaa !28
  invoke void @_ZN6Assimp12PrefixStringER8aiStringPKcj(ptr noundef nonnull align 4 dereferenceable(1028) %1518, ptr noundef %1521, i32 noundef %1524)
          to label %1525 unwind label %1504

1525:                                             ; preds = %1509
  br label %1526

1526:                                             ; preds = %1525, %1503
  %1527 = load i32, ptr %83, align 4, !tbaa !9
  %1528 = add i32 %1527, 1
  store i32 %1528, ptr %83, align 4, !tbaa !9
  br label %1478, !llvm.loop !81

1529:                                             ; preds = %1485
  br label %1530

1530:                                             ; preds = %1529, %1450
  br label %1531

1531:                                             ; preds = %1530, %1465
  %1532 = load i32, ptr %82, align 4, !tbaa !9
  %1533 = add i32 %1532, 1
  store i32 %1533, ptr %82, align 4, !tbaa !9
  %1534 = load ptr, ptr %70, align 8, !tbaa !5
  %1535 = getelementptr inbounds ptr, ptr %1534, i32 1
  store ptr %1535, ptr %70, align 8, !tbaa !5
  br label %1407, !llvm.loop !82

1536:                                             ; preds = %1504, %1416
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #12
  br label %1541

1537:                                             ; preds = %1415
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #12
  br label %1538

1538:                                             ; preds = %1537
  %1539 = load i32, ptr %74, align 4, !tbaa !9
  %1540 = add nsw i32 %1539, -1
  store i32 %1540, ptr %74, align 4, !tbaa !9
  br label %1047, !llvm.loop !83

1541:                                             ; preds = %1536, %1338, %1260, %1248, %1111
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #12
  br label %1726

1542:                                             ; preds = %1050
  %1543 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN6Assimp13SceneCombiner13AttachToGraphEP7aiSceneRSt6vectorINS_18NodeAttachmentInfoESaIS4_EE(ptr noundef %1543, ptr noundef nonnull align 8 dereferenceable(24) %61)
          to label %1544 unwind label %1063

1544:                                             ; preds = %1542
  %1545 = load ptr, ptr %6, align 8, !tbaa !5
  %1546 = getelementptr inbounds %struct.aiScene, ptr %1545, i32 0, i32 1
  %1547 = load ptr, ptr %1546, align 8, !tbaa !29
  %1548 = load ptr, ptr %22, align 8, !tbaa !5
  %1549 = getelementptr inbounds %struct.aiScene, ptr %1548, i32 0, i32 1
  store ptr %1547, ptr %1549, align 8, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 8, ptr %84) #12
  %1550 = call ptr @_ZNSt6vectorIN6Assimp18NodeAttachmentInfoESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %61) #12
  %1551 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %84, i32 0, i32 0
  store ptr %1550, ptr %1551, align 8
  br label %1552

1552:                                             ; preds = %1628, %1544
  call void @llvm.lifetime.start.p0(i64 8, ptr %85) #12
  %1553 = call ptr @_ZNSt6vectorIN6Assimp18NodeAttachmentInfoESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %61) #12
  %1554 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %85, i32 0, i32 0
  store ptr %1553, ptr %1554, align 8
  %1555 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN6Assimp18NodeAttachmentInfoESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %84, ptr noundef nonnull align 8 dereferenceable(8) %85) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #12
  br i1 %1555, label %1557, label %1556

1556:                                             ; preds = %1552
  store i32 66, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #12
  br label %1631

1557:                                             ; preds = %1552
  %1558 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN6Assimp18NodeAttachmentInfoESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %84) #12
  %1559 = getelementptr inbounds %"struct.Assimp::NodeAttachmentInfo", ptr %1558, i32 0, i32 2
  %1560 = load i8, ptr %1559, align 8, !tbaa !84, !range !87, !noundef !88
  %1561 = trunc i8 %1560 to i1
  br i1 %1561, label %1627, label %1562

1562:                                             ; preds = %1557
  %1563 = load i32, ptr %8, align 4, !tbaa !9
  %1564 = and i32 %1563, 8
  %1565 = icmp ne i32 %1564, 0
  br i1 %1565, label %1566, label %1603

1566:                                             ; preds = %1562
  call void @llvm.lifetime.start.p0(i64 4, ptr %86) #12
  store i32 0, ptr %86, align 4, !tbaa !9
  br label %1567

1567:                                             ; preds = %1598, %1566
  %1568 = load i32, ptr %86, align 4, !tbaa !9
  %1569 = zext i32 %1568 to i64
  %1570 = call noundef i64 @_ZNKSt6vectorIN6Assimp11SceneHelperESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %23) #12
  %1571 = icmp ult i64 %1569, %1570
  br i1 %1571, label %1573, label %1572

1572:                                             ; preds = %1567
  store i32 69, ptr %33, align 4
  br label %1601

1573:                                             ; preds = %1567
  %1574 = load i32, ptr %86, align 4, !tbaa !9
  %1575 = zext i32 %1574 to i64
  %1576 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN6Assimp18NodeAttachmentInfoESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %84) #12
  %1577 = getelementptr inbounds %"struct.Assimp::NodeAttachmentInfo", ptr %1576, i32 0, i32 3
  %1578 = load i64, ptr %1577, align 8, !tbaa !89
  %1579 = icmp ne i64 %1575, %1578
  br i1 %1579, label %1580, label %1597

1580:                                             ; preds = %1573
  %1581 = load i32, ptr %86, align 4, !tbaa !9
  %1582 = zext i32 %1581 to i64
  %1583 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN6Assimp11SceneHelperESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %23, i64 noundef %1582) #12
  %1584 = getelementptr inbounds %"struct.Assimp::SceneHelper", ptr %1583, i32 0, i32 0
  %1585 = load ptr, ptr %1584, align 8, !tbaa !11
  invoke void @_ZN6Assimp13SceneCombiner13AttachToGraphEP7aiSceneRSt6vectorINS_18NodeAttachmentInfoESaIS4_EE(ptr noundef %1585, ptr noundef nonnull align 8 dereferenceable(24) %61)
          to label %1586 unwind label %1592

1586:                                             ; preds = %1580
  %1587 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN6Assimp18NodeAttachmentInfoESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %84) #12
  %1588 = getelementptr inbounds %"struct.Assimp::NodeAttachmentInfo", ptr %1587, i32 0, i32 2
  %1589 = load i8, ptr %1588, align 8, !tbaa !84, !range !87, !noundef !88
  %1590 = trunc i8 %1589 to i1
  br i1 %1590, label %1591, label %1596

1591:                                             ; preds = %1586
  store i32 69, ptr %33, align 4
  br label %1601

1592:                                             ; preds = %1580
  %1593 = landingpad { ptr, i32 }
          cleanup
  %1594 = extractvalue { ptr, i32 } %1593, 0
  store ptr %1594, ptr %10, align 8
  %1595 = extractvalue { ptr, i32 } %1593, 1
  store i32 %1595, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %86) #12
  br label %1630

1596:                                             ; preds = %1586
  br label %1597

1597:                                             ; preds = %1596, %1573
  br label %1598

1598:                                             ; preds = %1597
  %1599 = load i32, ptr %86, align 4, !tbaa !9
  %1600 = add i32 %1599, 1
  store i32 %1600, ptr %86, align 4, !tbaa !9
  br label %1567, !llvm.loop !90

1601:                                             ; preds = %1591, %1572
  call void @llvm.lifetime.end.p0(i64 4, ptr %86) #12
  br label %1602

1602:                                             ; preds = %1601
  br label %1603

1603:                                             ; preds = %1602, %1562
  %1604 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN6Assimp18NodeAttachmentInfoESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %84) #12
  %1605 = getelementptr inbounds %"struct.Assimp::NodeAttachmentInfo", ptr %1604, i32 0, i32 2
  %1606 = load i8, ptr %1605, align 8, !tbaa !84, !range !87, !noundef !88
  %1607 = trunc i8 %1606 to i1
  br i1 %1607, label %1626, label %1608

1608:                                             ; preds = %1603
  %1609 = invoke noundef ptr @_ZN6Assimp13DefaultLogger3getEv()
          to label %1610 unwind label %1622

1610:                                             ; preds = %1608
  %1611 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN6Assimp18NodeAttachmentInfoESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %84) #12
  %1612 = getelementptr inbounds %"struct.Assimp::NodeAttachmentInfo", ptr %1611, i32 0, i32 0
  %1613 = load ptr, ptr %1612, align 8, !tbaa !91
  %1614 = getelementptr inbounds %struct.aiNode, ptr %1613, i32 0, i32 0
  %1615 = getelementptr inbounds %struct.aiString, ptr %1614, i32 0, i32 1
  %1616 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN6Assimp18NodeAttachmentInfoESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %84) #12
  %1617 = getelementptr inbounds %"struct.Assimp::NodeAttachmentInfo", ptr %1616, i32 0, i32 1
  %1618 = load ptr, ptr %1617, align 8, !tbaa !92
  %1619 = getelementptr inbounds %struct.aiNode, ptr %1618, i32 0, i32 0
  %1620 = getelementptr inbounds %struct.aiString, ptr %1619, i32 0, i32 1
  invoke void @_ZN6Assimp6Logger5errorIJRA45_KcRA1024_cRA2_S2_S6_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(12) %1609, ptr noundef nonnull align 1 dereferenceable(45) @.str.7, ptr noundef nonnull align 1 dereferenceable(1024) %1615, ptr noundef nonnull align 1 dereferenceable(2) @.str.8, ptr noundef nonnull align 1 dereferenceable(1024) %1620)
          to label %1621 unwind label %1622

1621:                                             ; preds = %1610
  br label %1626

1622:                                             ; preds = %1610, %1608
  %1623 = landingpad { ptr, i32 }
          cleanup
  %1624 = extractvalue { ptr, i32 } %1623, 0
  store ptr %1624, ptr %10, align 8
  %1625 = extractvalue { ptr, i32 } %1623, 1
  store i32 %1625, ptr %11, align 4
  br label %1630

1626:                                             ; preds = %1621, %1603
  br label %1627

1627:                                             ; preds = %1626, %1557
  br label %1628

1628:                                             ; preds = %1627
  %1629 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN6Assimp18NodeAttachmentInfoESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %84) #12
  br label %1552, !llvm.loop !93

1630:                                             ; preds = %1622, %1592
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #12
  br label %1726

1631:                                             ; preds = %1556
  call void @llvm.lifetime.start.p0(i64 4, ptr %87) #12
  store i32 0, ptr %87, align 4, !tbaa !9
  br label %1632

1632:                                             ; preds = %1706, %1631
  %1633 = load i32, ptr %87, align 4, !tbaa !9
  %1634 = zext i32 %1633 to i64
  %1635 = call noundef i64 @_ZNKSt6vectorIN6Assimp11SceneHelperESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %23) #12
  %1636 = icmp ult i64 %1634, %1635
  br i1 %1636, label %1638, label %1637

1637:                                             ; preds = %1632
  store i32 72, ptr %33, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #12
  br label %1709

1638:                                             ; preds = %1632
  %1639 = load i32, ptr %87, align 4, !tbaa !9
  %1640 = load i32, ptr %87, align 4, !tbaa !9
  %1641 = zext i32 %1640 to i64
  %1642 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %27, i64 noundef %1641) #12
  %1643 = load i32, ptr %1642, align 4, !tbaa !9
  %1644 = icmp ne i32 %1639, %1643
  br i1 %1644, label %1645, label %1646

1645:                                             ; preds = %1638
  br label %1706

1646:                                             ; preds = %1638
  call void @llvm.lifetime.start.p0(i64 8, ptr %88) #12
  %1647 = load i32, ptr %87, align 4, !tbaa !9
  %1648 = zext i32 %1647 to i64
  %1649 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN6Assimp11SceneHelperESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %23, i64 noundef %1648) #12
  %1650 = getelementptr inbounds %"struct.Assimp::SceneHelper", ptr %1649, i32 0, i32 0
  %1651 = load ptr, ptr %1650, align 8, !tbaa !11
  store ptr %1651, ptr %88, align 8, !tbaa !5
  %1652 = load ptr, ptr %88, align 8, !tbaa !5
  %1653 = getelementptr inbounds %struct.aiScene, ptr %1652, i32 0, i32 3
  %1654 = load ptr, ptr %1653, align 8, !tbaa !62
  %1655 = icmp eq ptr %1654, null
  br i1 %1655, label %1657, label %1656

1656:                                             ; preds = %1646
  call void @_ZdaPv(ptr noundef %1654) #13
  br label %1657

1657:                                             ; preds = %1656, %1646
  %1658 = load ptr, ptr %88, align 8, !tbaa !5
  %1659 = getelementptr inbounds %struct.aiScene, ptr %1658, i32 0, i32 3
  store ptr null, ptr %1659, align 8, !tbaa !62
  %1660 = load ptr, ptr %88, align 8, !tbaa !5
  %1661 = getelementptr inbounds %struct.aiScene, ptr %1660, i32 0, i32 13
  %1662 = load ptr, ptr %1661, align 8, !tbaa !72
  %1663 = icmp eq ptr %1662, null
  br i1 %1663, label %1665, label %1664

1664:                                             ; preds = %1657
  call void @_ZdaPv(ptr noundef %1662) #13
  br label %1665

1665:                                             ; preds = %1664, %1657
  %1666 = load ptr, ptr %88, align 8, !tbaa !5
  %1667 = getelementptr inbounds %struct.aiScene, ptr %1666, i32 0, i32 13
  store ptr null, ptr %1667, align 8, !tbaa !72
  %1668 = load ptr, ptr %88, align 8, !tbaa !5
  %1669 = getelementptr inbounds %struct.aiScene, ptr %1668, i32 0, i32 11
  %1670 = load ptr, ptr %1669, align 8, !tbaa !71
  %1671 = icmp eq ptr %1670, null
  br i1 %1671, label %1673, label %1672

1672:                                             ; preds = %1665
  call void @_ZdaPv(ptr noundef %1670) #13
  br label %1673

1673:                                             ; preds = %1672, %1665
  %1674 = load ptr, ptr %88, align 8, !tbaa !5
  %1675 = getelementptr inbounds %struct.aiScene, ptr %1674, i32 0, i32 11
  store ptr null, ptr %1675, align 8, !tbaa !71
  %1676 = load ptr, ptr %88, align 8, !tbaa !5
  %1677 = getelementptr inbounds %struct.aiScene, ptr %1676, i32 0, i32 5
  %1678 = load ptr, ptr %1677, align 8, !tbaa !49
  %1679 = icmp eq ptr %1678, null
  br i1 %1679, label %1681, label %1680

1680:                                             ; preds = %1673
  call void @_ZdaPv(ptr noundef %1678) #13
  br label %1681

1681:                                             ; preds = %1680, %1673
  %1682 = load ptr, ptr %88, align 8, !tbaa !5
  %1683 = getelementptr inbounds %struct.aiScene, ptr %1682, i32 0, i32 5
  store ptr null, ptr %1683, align 8, !tbaa !49
  %1684 = load ptr, ptr %88, align 8, !tbaa !5
  %1685 = getelementptr inbounds %struct.aiScene, ptr %1684, i32 0, i32 7
  %1686 = load ptr, ptr %1685, align 8, !tbaa !33
  %1687 = icmp eq ptr %1686, null
  br i1 %1687, label %1689, label %1688

1688:                                             ; preds = %1681
  call void @_ZdaPv(ptr noundef %1686) #13
  br label %1689

1689:                                             ; preds = %1688, %1681
  %1690 = load ptr, ptr %88, align 8, !tbaa !5
  %1691 = getelementptr inbounds %struct.aiScene, ptr %1690, i32 0, i32 7
  store ptr null, ptr %1691, align 8, !tbaa !33
  %1692 = load ptr, ptr %88, align 8, !tbaa !5
  %1693 = getelementptr inbounds %struct.aiScene, ptr %1692, i32 0, i32 9
  %1694 = load ptr, ptr %1693, align 8, !tbaa !46
  %1695 = icmp eq ptr %1694, null
  br i1 %1695, label %1697, label %1696

1696:                                             ; preds = %1689
  call void @_ZdaPv(ptr noundef %1694) #13
  br label %1697

1697:                                             ; preds = %1696, %1689
  %1698 = load ptr, ptr %88, align 8, !tbaa !5
  %1699 = getelementptr inbounds %struct.aiScene, ptr %1698, i32 0, i32 9
  store ptr null, ptr %1699, align 8, !tbaa !46
  %1700 = load ptr, ptr %88, align 8, !tbaa !5
  %1701 = getelementptr inbounds %struct.aiScene, ptr %1700, i32 0, i32 1
  store ptr null, ptr %1701, align 8, !tbaa !29
  %1702 = load ptr, ptr %88, align 8, !tbaa !5
  %1703 = icmp eq ptr %1702, null
  br i1 %1703, label %1705, label %1704

1704:                                             ; preds = %1697
  call void @_ZN7aiSceneD1Ev(ptr noundef nonnull align 8 dereferenceable(1168) %1702) #12
  call void @_ZdlPvm(ptr noundef %1702, i64 noundef 1168) #13
  br label %1705

1705:                                             ; preds = %1704, %1697
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #12
  br label %1706

1706:                                             ; preds = %1705, %1645
  %1707 = load i32, ptr %87, align 4, !tbaa !9
  %1708 = add i32 %1707, 1
  store i32 %1708, ptr %87, align 4, !tbaa !9
  br label %1632, !llvm.loop !94

1709:                                             ; preds = %1637
  %1710 = load ptr, ptr %22, align 8, !tbaa !5
  %1711 = getelementptr inbounds %struct.aiScene, ptr %1710, i32 0, i32 2
  %1712 = load i32, ptr %1711, align 8, !tbaa !41
  %1713 = icmp ne i32 %1712, 0
  br i1 %1713, label %1714, label %1719

1714:                                             ; preds = %1709
  %1715 = load ptr, ptr %22, align 8, !tbaa !5
  %1716 = getelementptr inbounds %struct.aiScene, ptr %1715, i32 0, i32 4
  %1717 = load i32, ptr %1716, align 8, !tbaa !40
  %1718 = icmp ne i32 %1717, 0
  br i1 %1718, label %1724, label %1719

1719:                                             ; preds = %1714, %1709
  %1720 = load ptr, ptr %22, align 8, !tbaa !5
  %1721 = getelementptr inbounds %struct.aiScene, ptr %1720, i32 0, i32 0
  %1722 = load i32, ptr %1721, align 8, !tbaa !44
  %1723 = or i32 %1722, 1
  store i32 %1723, ptr %1721, align 8, !tbaa !44
  br label %1724

1724:                                             ; preds = %1719, %1714
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #12
  call void @_ZNSt6vectorIN6Assimp18NodeAttachmentInfoESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %61) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr %61) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #12
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %30) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr %30) #12
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %27) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr %27) #12
  call void @_ZNSt6vectorIN6Assimp11SceneHelperESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %23) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr %23) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #12
  br label %1725

1725:                                             ; preds = %1724, %168, %149
  ret void

1726:                                             ; preds = %1630, %1541, %1063
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #12
  br label %1727

1727:                                             ; preds = %1726, %1059
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #12
  br label %1728

1728:                                             ; preds = %1727, %1055
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #12
  br label %1729

1729:                                             ; preds = %1728, %1051
  call void @_ZNSt6vectorIN6Assimp18NodeAttachmentInfoESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %61) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr %61) #12
  br label %1730

1730:                                             ; preds = %1729, %979, %864, %610, %457
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #12
  br label %1731

1731:                                             ; preds = %1730, %406
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %30) #12
  br label %1732

1732:                                             ; preds = %1731, %242
  call void @llvm.lifetime.end.p0(i64 24, ptr %30) #12
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %27) #12
  br label %1733

1733:                                             ; preds = %1732, %238
  call void @llvm.lifetime.end.p0(i64 24, ptr %27) #12
  br label %1734

1734:                                             ; preds = %1733, %223
  call void @_ZNSt6vectorIN6Assimp11SceneHelperESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %23) #12
  br label %1735

1735:                                             ; preds = %1734, %203
  call void @llvm.lifetime.end.p0(i64 24, ptr %23) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #12
  br label %1736

1736:                                             ; preds = %1735, %182, %150
  %1737 = load ptr, ptr %10, align 8
  %1738 = load i32, ptr %11, align 4
  %1739 = insertvalue { ptr, i32 } poison, ptr %1737, 0
  %1740 = insertvalue { ptr, i32 } %1739, i32 %1738, 1
  resume { ptr, i32 } %1740
}

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

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

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

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

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

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

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

; Function Attrs: nobuiltin nounwind
declare void @_ZdaPv(ptr noundef) #8

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

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

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i8 } @_ZNSt13unordered_setIP7aiSceneSt4hashIS1_ESt8equal_toIS1_ESaIS1_EE6insertERKS1_(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(8)) #0 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIN6Assimp11SceneHelperESaIS1_EEC2EmRKS2_(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef, ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #0 align 2

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIjSaIjEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef, ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #0 align 2

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

; Function Attrs: nounwind
declare i32 @snprintf(ptr noundef, i64 noundef, ptr noundef, ...) #5

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Assimp13SceneCombiner4CopyEPP9aiTexturePKS1_(ptr noundef, ptr noundef) #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Assimp13SceneCombiner4CopyEPP10aiMaterialPKS1_(ptr noundef, ptr noundef) #0 align 2

; Function Attrs: nounwind willreturn memory(read)
declare i32 @strncmp(ptr noundef, ptr noundef, i64 noundef) #11

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN6Assimp9strtoul10EPKcPS1_(ptr noundef, ptr noundef) #2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i32 @_ZN6Assimp13ASSIMP_itoa10EPcji(ptr noundef, i32 noundef, i32 noundef) #3

; Function Attrs: nounwind willreturn memory(read)
declare i32 @strcmp(ptr noundef, ptr noundef) #11

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Assimp13SceneCombiner4CopyEPP6aiMeshPKS1_(ptr noundef, ptr noundef) #0 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Assimp13SceneCombiner4CopyEPP6aiNodePKS1_(ptr noundef, ptr noundef) #0 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Assimp13SceneCombiner4CopyEPP7aiLightPKS1_(ptr noundef, ptr noundef) #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Assimp13SceneCombiner4CopyEPP8aiCameraPKS1_(ptr noundef, ptr noundef) #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Assimp13SceneCombiner4CopyEPP11aiAnimationPKS1_(ptr noundef, ptr noundef) #0 align 2

declare noundef ptr @_ZN6Assimp13DefaultLogger3getEv() #6

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Assimp6Logger5errorIJRA45_KcRA1024_cRA2_S2_S6_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(12), ptr noundef nonnull align 1 dereferenceable(45), ptr noundef nonnull align 1 dereferenceable(1024), ptr noundef nonnull align 1 dereferenceable(2), ptr noundef nonnull align 1 dereferenceable(1024)) #0 align 2

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !6, i64 0}
!12 = !{!"_ZTSN6Assimp11SceneHelperE", !6, i64 0, !7, i64 8, !10, i64 40, !13, i64 48}
!13 = !{!"_ZTSSt3setIjSt4lessIjESaIjEE", !14, i64 0}
!14 = !{!"_ZTSSt8_Rb_treeIjjSt9_IdentityIjESt4lessIjESaIjEE", !15, i64 0}
!15 = !{!"_ZTSNSt8_Rb_treeIjjSt9_IdentityIjESt4lessIjESaIjEE13_Rb_tree_implIS3_Lb1EEE", !16, i64 0, !18, i64 8}
!16 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIjEE", !17, i64 0}
!17 = !{!"_ZTSSt4lessIjE"}
!18 = !{!"_ZTSSt15_Rb_tree_header", !19, i64 0, !21, i64 32}
!19 = !{!"_ZTSSt18_Rb_tree_node_base", !20, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!20 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!21 = !{!"long", !7, i64 0}
!22 = !{!23, !6, i64 0}
!23 = !{!"_ZTSN6Assimp14AttachmentInfoE", !6, i64 0, !6, i64 8}
!24 = distinct !{!24, !25}
!25 = !{!"llvm.loop.mustprogress"}
!26 = distinct !{!26, !25}
!27 = distinct !{!27, !25}
!28 = !{!12, !10, i64 40}
!29 = !{!30, !6, i64 8}
!30 = !{!"_ZTS7aiScene", !10, i64 0, !6, i64 8, !10, i64 16, !6, i64 24, !10, i64 32, !6, i64 40, !10, i64 48, !6, i64 56, !10, i64 64, !6, i64 72, !10, i64 80, !6, i64 88, !10, i64 96, !6, i64 104, !6, i64 112, !31, i64 120, !10, i64 1148, !6, i64 1152, !6, i64 1160}
!31 = !{!"_ZTS8aiString", !10, i64 0, !7, i64 4}
!32 = !{!30, !10, i64 48}
!33 = !{!30, !6, i64 56}
!34 = !{!35, !10, i64 0}
!35 = !{!"_ZTS11aiAnimation", !31, i64 0, !36, i64 1032, !36, i64 1040, !10, i64 1048, !6, i64 1056, !10, i64 1064, !6, i64 1072, !10, i64 1080, !6, i64 1088}
!36 = !{!"double", !7, i64 0}
!37 = distinct !{!37, !25}
!38 = distinct !{!38, !25}
!39 = !{!30, !10, i64 64}
!40 = !{!30, !10, i64 32}
!41 = !{!30, !10, i64 16}
!42 = !{!30, !10, i64 80}
!43 = !{!30, !10, i64 96}
!44 = !{!30, !10, i64 0}
!45 = distinct !{!45, !25}
!46 = !{!30, !6, i64 72}
!47 = distinct !{!47, !25}
!48 = distinct !{!48, !25}
!49 = !{!30, !6, i64 40}
!50 = !{!51, !10, i64 8}
!51 = !{!"_ZTS10aiMaterial", !6, i64 0, !10, i64 8, !10, i64 12}
!52 = !{!51, !6, i64 0}
!53 = !{!54, !6, i64 1048}
!54 = !{!"_ZTS18aiMaterialProperty", !31, i64 0, !10, i64 1028, !10, i64 1032, !10, i64 1036, !55, i64 1040, !6, i64 1048}
!55 = !{!"_ZTS18aiPropertyTypeInfo", !7, i64 0}
!56 = !{!7, !7, i64 0}
!57 = !{!31, !10, i64 0}
!58 = !{!54, !10, i64 1036}
!59 = distinct !{!59, !25}
!60 = distinct !{!60, !25}
!61 = distinct !{!61, !25}
!62 = !{!30, !6, i64 24}
!63 = !{!64, !10, i64 232}
!64 = !{!"_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, !31, i64 236, !10, i64 1264, !6, i64 1272, !65, i64 1280, !66, i64 1284, !6, i64 1312}
!65 = !{!"_ZTS16aiMorphingMethod", !7, i64 0}
!66 = !{!"_ZTS6aiAABB", !67, i64 0, !67, i64 12}
!67 = !{!"_ZTS10aiVector3tIfE", !68, i64 0, !68, i64 4, !68, i64 8}
!68 = !{!"float", !7, i64 0}
!69 = distinct !{!69, !25}
!70 = distinct !{!70, !25}
!71 = !{!30, !6, i64 88}
!72 = !{!30, !6, i64 104}
!73 = !{!64, !10, i64 216}
!74 = !{!64, !6, i64 224}
!75 = distinct !{!75, !25}
!76 = distinct !{!76, !25}
!77 = distinct !{!77, !25}
!78 = distinct !{!78, !25}
!79 = !{!35, !10, i64 1048}
!80 = !{!35, !6, i64 1056}
!81 = distinct !{!81, !25}
!82 = distinct !{!82, !25}
!83 = distinct !{!83, !25}
!84 = !{!85, !86, i64 16}
!85 = !{!"_ZTSN6Assimp18NodeAttachmentInfoE", !6, i64 0, !6, i64 8, !86, i64 16, !21, i64 24}
!86 = !{!"bool", !7, i64 0}
!87 = !{i8 0, i8 2}
!88 = !{}
!89 = !{!85, !21, i64 24}
!90 = distinct !{!90, !25}
!91 = !{!85, !6, i64 0}
!92 = !{!85, !6, i64 8}
!93 = distinct !{!93, !25}
!94 = distinct !{!94, !25}


; 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::unordered_set" = type { %"class.std::_Hashtable" }
%"class.std::_Hashtable" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.std::__detail::_Hash_node_base" = type { ptr }
%"struct.std::__detail::_Prime_rehash_policy" = type { float, i64 }
%"class.__gnu_cxx::__normal_iterator.26" = type { ptr }
%"struct.std::__detail::_Node_iterator" = type { %"struct.std::__detail::_Node_iterator_base" }
%"struct.std::__detail::_Node_iterator_base" = type { ptr }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<Assimp::SceneHelper, std::allocator<Assimp::SceneHelper>>::_Vector_impl" }
%"struct.std::_Vector_base<Assimp::SceneHelper, std::allocator<Assimp::SceneHelper>>::_Vector_impl" = type { %"struct.std::_Vector_base<Assimp::SceneHelper, std::allocator<Assimp::SceneHelper>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Assimp::SceneHelper, std::allocator<Assimp::SceneHelper>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.0" = type { i8 }
%"struct.Assimp::SceneHelper" = type { ptr, [32 x i8], i32, %"class.std::set" }
%"class.std::set" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<unsigned int, unsigned int, std::_Identity<unsigned int>, std::less<unsigned int>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<unsigned int, unsigned int, std::_Identity<unsigned int>, std::less<unsigned int>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"class.std::vector.27" = type { %"struct.std::_Vector_base.28" }
%"struct.std::_Vector_base.28" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.29" = type { i8 }
%struct.aiString = type { i32, [1024 x i8] }
%"class.std::vector.13" = type { %"struct.std::_Vector_base.14" }
%"struct.std::_Vector_base.14" = type { %"struct.std::_Vector_base<Assimp::NodeAttachmentInfo, std::allocator<Assimp::NodeAttachmentInfo>>::_Vector_impl" }
%"struct.std::_Vector_base<Assimp::NodeAttachmentInfo, std::allocator<Assimp::NodeAttachmentInfo>>::_Vector_impl" = type { %"struct.std::_Vector_base<Assimp::NodeAttachmentInfo, std::allocator<Assimp::NodeAttachmentInfo>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Assimp::NodeAttachmentInfo, std::allocator<Assimp::NodeAttachmentInfo>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }

@.str.4 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [45 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [2 x i8], align 1

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

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i8 } @_ZNSt3setIjSt4lessIjESaIjEE6insertEOj(ptr noundef nonnull align 8 dereferenceable(48), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #0 align 2

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_Z13SuperFastHashPKcjj(ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Assimp13SceneCombiner15AddNodePrefixesEP6aiNodePKcj(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #0 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN6Assimp12PrefixStringER8aiStringPKcj(ptr noundef nonnull align 4 dereferenceable(1028), ptr noundef, i32 noundef) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN6Assimp13SceneCombiner13FindNameMatchERK8aiStringRSt6vectorINS_11SceneHelperESaIS5_EEj(ptr noundef nonnull align 4 dereferenceable(1028), ptr noundef nonnull align 8 dereferenceable(24), i32 noundef) local_unnamed_addr #0 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Assimp13SceneCombiner21OffsetNodeMeshIndicesEP6aiNodej(ptr noundef, i32 noundef) local_unnamed_addr #0 align 2

; Function Attrs: nounwind
declare void @_ZN7aiSceneD1Ev(ptr noundef nonnull align 8 dereferenceable(1168)) unnamed_addr #5

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Assimp13SceneCombiner13CopySceneFlatEPP7aiScenePKS1_(ptr noundef, ptr noundef) local_unnamed_addr #0 align 2

declare void @_ZN7aiSceneC1Ev(ptr noundef nonnull align 8 dereferenceable(1168)) unnamed_addr #6

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN6Assimp13SceneCombiner11MergeScenesEPP7aiSceneS2_RSt6vectorINS_14AttachmentInfoESaIS5_EEj(ptr noundef %0, ptr noundef %1, ptr noundef nonnull align 8 dereferenceable(24) %2, i32 noundef %3) local_unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 {
  %5 = alloca ptr, align 8
  %6 = alloca %"class.std::unordered_set", align 8
  %7 = alloca %"class.__gnu_cxx::__normal_iterator.26", align 8
  %8 = alloca %"class.__gnu_cxx::__normal_iterator.26", align 8
  %9 = alloca %"struct.std::__detail::_Node_iterator", align 8
  %10 = alloca %"struct.std::__detail::_Node_iterator", align 8
  %11 = alloca %"class.std::vector", align 8
  %12 = alloca %"class.std::allocator.0", align 1
  %13 = alloca %"struct.Assimp::SceneHelper", align 8
  %14 = alloca %"class.std::vector.27", align 8
  %15 = alloca i32, align 4
  %16 = alloca %"class.std::allocator.29", align 1
  %17 = alloca %"class.std::vector.27", align 8
  %18 = alloca %"class.std::allocator.29", align 1
  %19 = alloca i32, align 4
  %20 = alloca %struct.aiString, align 4
  %21 = alloca %"class.std::vector.13", align 8
  %22 = alloca i32, align 4
  %23 = alloca ptr, align 8
  %24 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %25 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  store ptr %1, ptr %5, align 8, !tbaa !5
  %26 = icmp eq ptr %0, null
  br i1 %26, label %27, label %53

27:                                               ; preds = %4
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %6) #12
  call void @_ZNSt13unordered_setIP7aiSceneSt4hashIS1_ESt8equal_toIS1_ESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %6) #12
  %28 = invoke { ptr, i8 } @_ZNSt13unordered_setIP7aiSceneSt4hashIS1_ESt8equal_toIS1_ESaIS1_EE6insertERKS1_(ptr noundef nonnull align 8 dereferenceable(56) %6, ptr noundef nonnull align 8 dereferenceable(8) %5)
          to label %29 unwind label %36

29:                                               ; preds = %27
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #12
  %30 = call ptr @_ZNSt6vectorIN6Assimp14AttachmentInfoESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %2) #12
  store ptr %30, ptr %7, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #12
  %31 = call ptr @_ZNSt6vectorIN6Assimp14AttachmentInfoESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %2) #12
  store ptr %31, ptr %8, align 8
  %32 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN6Assimp14AttachmentInfoESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(8) %8) #12
  br i1 %32, label %.lr.ph584, label %._crit_edge585

._crit_edge585:                                   ; preds = %40, %29
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #12
  %33 = call ptr @_ZNSt13unordered_setIP7aiSceneSt4hashIS1_ESt8equal_toIS1_ESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(56) %6) #12
  store ptr %33, ptr %9, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #12
  %34 = call ptr @_ZNSt13unordered_setIP7aiSceneSt4hashIS1_ESt8equal_toIS1_ESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %6) #12
  store ptr %34, ptr %10, align 8
  %35 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseIP7aiSceneLb0EEES5_(ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef nonnull align 8 dereferenceable(8) %10) #12
  br i1 %35, label %.lr.ph587, label %._crit_edge588

36:                                               ; preds = %27
  %37 = landingpad { ptr, i32 }
          cleanup
  br label %52

.lr.ph584:                                        ; preds = %29, %40
  %38 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN6Assimp14AttachmentInfoESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %7) #12
  %39 = invoke { ptr, i8 } @_ZNSt13unordered_setIP7aiSceneSt4hashIS1_ESt8equal_toIS1_ESaIS1_EE6insertERKS1_(ptr noundef nonnull align 8 dereferenceable(56) %6, ptr noundef nonnull align 8 dereferenceable(8) %38)
          to label %40 unwind label %43

40:                                               ; preds = %.lr.ph584
  %41 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN6Assimp14AttachmentInfoESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %7) #12
  %42 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN6Assimp14AttachmentInfoESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(8) %8) #12
  br i1 %42, label %.lr.ph584, label %._crit_edge585

43:                                               ; preds = %.lr.ph584
  %44 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #12
  br label %52

._crit_edge588:                                   ; preds = %49, %._crit_edge585
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #12
  call void @_ZNSt13unordered_setIP7aiSceneSt4hashIS1_ESt8equal_toIS1_ESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %6) #12
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %6) #12
  br label %884

.lr.ph587:                                        ; preds = %._crit_edge585, %49
  %45 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt8__detail14_Node_iteratorIP7aiSceneLb1ELb0EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %9) #12
  %46 = load ptr, ptr %45, align 8, !tbaa !5
  %47 = icmp eq ptr %46, null
  br i1 %47, label %49, label %48

48:                                               ; preds = %.lr.ph587
  call void @_ZN7aiSceneD1Ev(ptr noundef nonnull align 8 dereferenceable(1168) %46) #12
  call void @_ZdlPvm(ptr noundef nonnull %46, i64 noundef 1168) #13
  br label %49

49:                                               ; preds = %48, %.lr.ph587
  %50 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8__detail14_Node_iteratorIP7aiSceneLb1ELb0EEppEv(ptr noundef nonnull align 8 dereferenceable(8) %9) #12
  %51 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseIP7aiSceneLb0EEES5_(ptr noundef nonnull align 8 dereferenceable(8) %9, ptr noundef nonnull align 8 dereferenceable(8) %10) #12
  br i1 %51, label %.lr.ph587, label %._crit_edge588

52:                                               ; preds = %43, %36
  %.pn450 = phi { ptr, i32 } [ %44, %43 ], [ %37, %36 ]
  call void @_ZNSt13unordered_setIP7aiSceneSt4hashIS1_ESt8equal_toIS1_ESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %6) #12
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %6) #12
  br label %890

53:                                               ; preds = %4
  %54 = tail call noundef zeroext i1 @_ZNKSt6vectorIN6Assimp14AttachmentInfoESaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %2) #12
  %55 = load ptr, ptr %0, align 8, !tbaa !5
  %.not449 = icmp eq ptr %55, null
  br i1 %54, label %56, label %61

56:                                               ; preds = %53
  br i1 %.not449, label %60, label %57

57:                                               ; preds = %56
  tail call void @_ZN6Assimp13SceneCombiner13CopySceneFlatEPP7aiScenePKS1_(ptr noundef nonnull %0, ptr noundef %1)
  %58 = icmp eq ptr %1, null
  br i1 %58, label %884, label %59

59:                                               ; preds = %57
  tail call void @_ZN7aiSceneD1Ev(ptr noundef nonnull align 8 dereferenceable(1168) %1) #12
  tail call void @_ZdlPvm(ptr noundef nonnull %1, i64 noundef 1168) #13
  br label %884

60:                                               ; preds = %56
  store ptr %1, ptr %0, align 8, !tbaa !5
  br label %884

61:                                               ; preds = %53
  br i1 %.not449, label %64, label %62

62:                                               ; preds = %61
  tail call void @_ZN7aiSceneD1Ev(ptr noundef nonnull align 8 dereferenceable(1168) %55) #12
  %63 = load ptr, ptr %0, align 8, !tbaa !5
  tail call void @_ZN7aiSceneC1Ev(ptr noundef nonnull align 8 dereferenceable(1168) %63)
  %.pre = load ptr, ptr %0, align 8, !tbaa !5
  br label %69

64:                                               ; preds = %61
  %65 = tail call noalias noundef nonnull dereferenceable(1168) ptr @_Znwm(i64 noundef 1168) #14
  invoke void @_ZN7aiSceneC1Ev(ptr noundef nonnull align 8 dereferenceable(1168) %65)
          to label %66 unwind label %67

66:                                               ; preds = %64
  store ptr %65, ptr %0, align 8, !tbaa !5
  br label %69

67:                                               ; preds = %64
  %68 = landingpad { ptr, i32 }
          cleanup
  tail call void @_ZdlPvm(ptr noundef nonnull %65, i64 noundef 1168) #13
  br label %890

69:                                               ; preds = %66, %62
  %70 = phi ptr [ %65, %66 ], [ %.pre, %62 ]
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %11) #12
  %71 = tail call noundef i64 @_ZNKSt6vectorIN6Assimp14AttachmentInfoESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %2) #12
  %72 = add i64 %71, 1
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %12) #12
  call void @_ZNSaIN6Assimp11SceneHelperEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #12
  invoke void @_ZNSt6vectorIN6Assimp11SceneHelperESaIS1_EEC2EmRKS2_(ptr noundef nonnull align 8 dereferenceable(24) %11, i64 noundef %72, ptr noundef nonnull align 1 dereferenceable(1) %12)
          to label %73 unwind label %77

73:                                               ; preds = %69
  call void @_ZNSt15__new_allocatorIN6Assimp11SceneHelperEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %12) #12
  %74 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN6Assimp11SceneHelperESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %11, i64 noundef 0) #12
  store ptr %1, ptr %74, align 8, !tbaa !9
  %75 = call noundef i64 @_ZNKSt6vectorIN6Assimp14AttachmentInfoESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %2) #12
  %.not589 = icmp eq i64 %75, 0
  br i1 %.not589, label %._crit_edge, label %.lr.ph

._crit_edge:                                      ; preds = %.lr.ph, %73
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %14) #12
  %76 = call noundef i64 @_ZNKSt6vectorIN6Assimp11SceneHelperESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %11) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %15) #12
  store i32 -1, ptr %15, align 4, !tbaa !21
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %16) #12
  call void @_ZNSaIjEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #12
  invoke void @_ZNSt6vectorIjSaIjEEC2EmRKjRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %76, ptr noundef nonnull align 4 dereferenceable(4) %15, ptr noundef nonnull align 1 dereferenceable(1) %16)
          to label %88 unwind label %96

77:                                               ; preds = %69
  %78 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIN6Assimp11SceneHelperEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %12) #12
  br label %889

.lr.ph:                                           ; preds = %73, %.lr.ph
  %79 = phi i64 [ %83, %.lr.ph ], [ 0, %73 ]
  %.0325478 = phi i32 [ %82, %.lr.ph ], [ 0, %73 ]
  call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %13) #12
  %80 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN6Assimp14AttachmentInfoESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef %79) #12
  %81 = load ptr, ptr %80, align 8, !tbaa !22
  call void @_ZN6Assimp11SceneHelperC2EP7aiScene(ptr noundef nonnull align 8 dereferenceable(96) %13, ptr noundef %81)
  %82 = add i32 %.0325478, 1
  %83 = zext i32 %82 to i64
  %84 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN6Assimp11SceneHelperESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %11, i64 noundef %83) #12
  %85 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZN6Assimp11SceneHelperaSEOS0_(ptr noundef nonnull align 8 dereferenceable(96) %84, ptr noundef nonnull align 8 dereferenceable(96) %13) #12
  call void @_ZN6Assimp11SceneHelperD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %13) #12
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %13) #12
  %86 = call noundef i64 @_ZNKSt6vectorIN6Assimp14AttachmentInfoESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %2) #12
  %87 = icmp ugt i64 %86, %83
  br i1 %87, label %.lr.ph, label %._crit_edge, !llvm.loop !24

88:                                               ; preds = %._crit_edge
  call void @_ZNSt15__new_allocatorIjED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %16) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #12
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %17) #12
  %89 = call noundef i64 @_ZNKSt6vectorIN6Assimp11SceneHelperESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %11) #12
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %18) #12
  call void @_ZNSaIjEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #12
  invoke void @_ZNSt6vectorIjSaIjEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %17, i64 noundef %89, ptr noundef nonnull align 1 dereferenceable(1) %18)
          to label %90 unwind label %98

90:                                               ; preds = %88
  call void @_ZNSt15__new_allocatorIjED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %18) #12
  %91 = call noundef i64 @_ZNKSt6vectorIN6Assimp11SceneHelperESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %11) #12
  %.not590 = icmp eq i64 %91, 0
  br i1 %.not590, label %._crit_edge487, label %.lr.ph486

._crit_edge487:                                   ; preds = %.loopexit468, %90
  %92 = and i32 %3, 1
  %.not388 = icmp eq i32 %92, 0
  br i1 %.not388, label %.loopexit467, label %.preheader466

.preheader466:                                    ; preds = %._crit_edge487
  %93 = call noundef i64 @_ZNKSt6vectorIN6Assimp11SceneHelperESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %11) #12
  %94 = icmp ugt i64 %93, 1
  br i1 %94, label %.lr.ph491, label %.loopexit467

.lr.ph491:                                        ; preds = %.preheader466
  %95 = and i32 %3, 16
  %.not440 = icmp eq i32 %95, 0
  br label %125

96:                                               ; preds = %._crit_edge
  %97 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIjED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %16) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #12
  br label %888

98:                                               ; preds = %88
  %99 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIjED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #12
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %18) #12
  br label %887

.lr.ph486:                                        ; preds = %90, %.loopexit468
  %100 = phi i64 [ %.pre-phi672, %.loopexit468 ], [ 0, %90 ]
  %.0326483 = phi i32 [ %.pre-phi, %.loopexit468 ], [ 0, %90 ]
  %101 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %100) #12
  %102 = load i32, ptr %101, align 4, !tbaa !21
  %.not447 = icmp eq i32 %102, %.0326483
  br i1 %.not447, label %106, label %103

103:                                              ; preds = %.lr.ph486
  %104 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %100) #12
  %105 = load i32, ptr %104, align 4, !tbaa !21
  %.not448 = icmp eq i32 %105, -1
  br i1 %.not448, label %106, label %..loopexit468_crit_edge

..loopexit468_crit_edge:                          ; preds = %103
  %.pre670 = add i32 %.0326483, 1
  %.pre671 = zext i32 %.pre670 to i64
  br label %.loopexit468

106:                                              ; preds = %103, %.lr.ph486
  %107 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %100) #12
  store i32 %.0326483, ptr %107, align 4, !tbaa !21
  %.0329479 = add i32 %.0326483, 1
  %108 = zext i32 %.0329479 to i64
  %109 = call noundef i64 @_ZNKSt6vectorIN6Assimp11SceneHelperESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %11) #12
  %110 = icmp ugt i64 %109, %108
  br i1 %110, label %.lr.ph482, label %.loopexit468

.lr.ph482:                                        ; preds = %106, %119
  %111 = phi i64 [ %120, %119 ], [ %108, %106 ]
  %.0329480 = phi i32 [ %.0329, %119 ], [ %.0329479, %106 ]
  %112 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN6Assimp11SceneHelperESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %11, i64 noundef %100) #12
  %113 = load ptr, ptr %112, align 8, !tbaa !9
  %114 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN6Assimp11SceneHelperESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %11, i64 noundef %111) #12
  %115 = load ptr, ptr %114, align 8, !tbaa !9
  %116 = icmp eq ptr %113, %115
  br i1 %116, label %117, label %119

117:                                              ; preds = %.lr.ph482
  %118 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %111) #12
  store i32 %.0326483, ptr %118, align 4, !tbaa !21
  br label %119

119:                                              ; preds = %.lr.ph482, %117
  %.0329 = add i32 %.0329480, 1
  %120 = zext i32 %.0329 to i64
  %121 = call noundef i64 @_ZNKSt6vectorIN6Assimp11SceneHelperESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %11) #12
  %122 = icmp ugt i64 %121, %120
  br i1 %122, label %.lr.ph482, label %.loopexit468, !llvm.loop !26

.loopexit468:                                     ; preds = %119, %..loopexit468_crit_edge, %106
  %.pre-phi672 = phi i64 [ %.pre671, %..loopexit468_crit_edge ], [ %108, %106 ], [ %108, %119 ]
  %.pre-phi = phi i32 [ %.pre670, %..loopexit468_crit_edge ], [ %.0329479, %106 ], [ %.0329479, %119 ]
  %123 = call noundef i64 @_ZNKSt6vectorIN6Assimp11SceneHelperESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %11) #12
  %124 = icmp ugt i64 %123, %.pre-phi672
  br i1 %124, label %.lr.ph486, label %._crit_edge487, !llvm.loop !27

125:                                              ; preds = %.lr.ph491, %.loopexit465
  %126 = phi i64 [ 1, %.lr.ph491 ], [ %167, %.loopexit465 ]
  %.0330490 = phi i32 [ 1, %.lr.ph491 ], [ %166, %.loopexit465 ]
  %127 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN6Assimp11SceneHelperESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %11, i64 noundef %126) #12
  %128 = getelementptr inbounds i8, ptr %127, i64 8
  %129 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %128, i64 noundef 32, ptr noundef nonnull @.str.4, i32 noundef %.0330490) #12
  %130 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN6Assimp11SceneHelperESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %11, i64 noundef %126) #12
  %131 = getelementptr inbounds i8, ptr %130, i64 40
  store i32 %129, ptr %131, align 8, !tbaa !28
  br i1 %.not440, label %.loopexit465, label %132

132:                                              ; preds = %125
  %133 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN6Assimp11SceneHelperESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %11, i64 noundef %126) #12
  %134 = call noundef ptr @_ZNK6Assimp11SceneHelperptEv(ptr noundef nonnull align 8 dereferenceable(96) %133)
  %135 = getelementptr inbounds i8, ptr %134, i64 8
  %136 = load ptr, ptr %135, align 8, !tbaa !29
  %137 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN6Assimp11SceneHelperESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %11, i64 noundef %126) #12
  %138 = getelementptr inbounds i8, ptr %137, i64 48
  invoke void @_ZN6Assimp13SceneCombiner13AddNodeHashesEP6aiNodeRSt3setIjSt4lessIjESaIjEE(ptr noundef %136, ptr noundef nonnull align 8 dereferenceable(48) %138)
          to label %.preheader464 unwind label %143

.preheader464:                                    ; preds = %132
  %139 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN6Assimp11SceneHelperESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %11, i64 noundef %126) #12
  %140 = call noundef ptr @_ZNK6Assimp11SceneHelperptEv(ptr noundef nonnull align 8 dereferenceable(96) %139)
  %141 = getelementptr inbounds i8, ptr %140, i64 48
  %142 = load i32, ptr %141, align 8, !tbaa !32
  %.not591 = icmp eq i32 %142, 0
  br i1 %.not591, label %.loopexit465, label %.lr.ph489

143:                                              ; preds = %132
  %144 = landingpad { ptr, i32 }
          cleanup
  br label %886

.lr.ph489:                                        ; preds = %.preheader464, %157
  %indvars.iv = phi i64 [ %indvars.iv.next, %157 ], [ 0, %.preheader464 ]
  %145 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN6Assimp11SceneHelperESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %11, i64 noundef %126) #12
  %146 = call noundef ptr @_ZNK6Assimp11SceneHelperptEv(ptr noundef nonnull align 8 dereferenceable(96) %145)
  %147 = getelementptr inbounds i8, ptr %146, i64 56
  %148 = load ptr, ptr %147, align 8, !tbaa !33
  %149 = getelementptr inbounds ptr, ptr %148, i64 %indvars.iv
  %150 = load ptr, ptr %149, align 8, !tbaa !5
  %151 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN6Assimp11SceneHelperESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %11, i64 noundef %126) #12
  %152 = getelementptr inbounds i8, ptr %151, i64 48
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %19) #12
  %153 = getelementptr inbounds i8, ptr %150, i64 4
  %154 = load i32, ptr %150, align 8, !tbaa !34
  %155 = call noundef i32 @_Z13SuperFastHashPKcjj(ptr noundef nonnull %153, i32 noundef %154, i32 noundef 0)
  store i32 %155, ptr %19, align 4, !tbaa !21
  %156 = invoke { ptr, i8 } @_ZNSt3setIjSt4lessIjESaIjEE6insertEOj(ptr noundef nonnull align 8 dereferenceable(48) %152, ptr noundef nonnull align 4 dereferenceable(4) %19)
          to label %157 unwind label %164

157:                                              ; preds = %.lr.ph489
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #12
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %158 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN6Assimp11SceneHelperESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %11, i64 noundef %126) #12
  %159 = call noundef ptr @_ZNK6Assimp11SceneHelperptEv(ptr noundef nonnull align 8 dereferenceable(96) %158)
  %160 = getelementptr inbounds i8, ptr %159, i64 48
  %161 = load i32, ptr %160, align 8, !tbaa !32
  %162 = zext i32 %161 to i64
  %163 = icmp ult i64 %indvars.iv.next, %162
  br i1 %163, label %.lr.ph489, label %.loopexit465, !llvm.loop !37

164:                                              ; preds = %.lr.ph489
  %165 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #12
  br label %886

.loopexit465:                                     ; preds = %157, %.preheader464, %125
  %166 = add i32 %.0330490, 1
  %167 = zext i32 %166 to i64
  %168 = call noundef i64 @_ZNKSt6vectorIN6Assimp11SceneHelperESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %11) #12
  %169 = icmp ugt i64 %168, %167
  br i1 %169, label %125, label %.loopexit467, !llvm.loop !38

.loopexit467:                                     ; preds = %.loopexit465, %.preheader466, %._crit_edge487
  %170 = call noundef i64 @_ZNKSt6vectorIN6Assimp11SceneHelperESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %11) #12
  %.not592 = icmp eq i64 %170, 0
  br i1 %.not592, label %._crit_edge495, label %.lr.ph494

.lr.ph494:                                        ; preds = %.loopexit467
  %171 = and i32 %3, 4
  %.not438 = icmp eq i32 %171, 0
  %172 = getelementptr inbounds i8, ptr %70, i64 64
  %173 = getelementptr inbounds i8, ptr %70, i64 32
  %174 = getelementptr inbounds i8, ptr %70, i64 16
  %175 = getelementptr inbounds i8, ptr %70, i64 80
  %176 = getelementptr inbounds i8, ptr %70, i64 96
  %177 = getelementptr inbounds i8, ptr %70, i64 48
  br label %180

._crit_edge495:                                   ; preds = %224, %.loopexit467
  %178 = getelementptr inbounds i8, ptr %70, i64 64
  %179 = load i32, ptr %178, align 8, !tbaa !39
  %.not389 = icmp eq i32 %179, 0
  br i1 %.not389, label %.loopexit463, label %229

180:                                              ; preds = %.lr.ph494, %224
  %181 = phi i64 [ 0, %.lr.ph494 ], [ %226, %224 ]
  %.0340492 = phi i32 [ 0, %.lr.ph494 ], [ %225, %224 ]
  %182 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN6Assimp11SceneHelperESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %11, i64 noundef %181) #12
  %183 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %181) #12
  %184 = load i32, ptr %183, align 4, !tbaa !21
  %185 = icmp ne i32 %.0340492, %184
  %or.cond = and i1 %.not438, %185
  br i1 %or.cond, label %202, label %186

186:                                              ; preds = %180
  %187 = call noundef ptr @_ZNK6Assimp11SceneHelperptEv(ptr noundef nonnull align 8 dereferenceable(96) %182)
  %188 = getelementptr inbounds i8, ptr %187, i64 64
  %189 = load i32, ptr %188, align 8, !tbaa !39
  %190 = load i32, ptr %172, align 8, !tbaa !39
  %191 = add i32 %190, %189
  store i32 %191, ptr %172, align 8, !tbaa !39
  %192 = call noundef ptr @_ZNK6Assimp11SceneHelperptEv(ptr noundef nonnull align 8 dereferenceable(96) %182)
  %193 = getelementptr inbounds i8, ptr %192, i64 32
  %194 = load i32, ptr %193, align 8, !tbaa !40
  %195 = load i32, ptr %173, align 8, !tbaa !40
  %196 = add i32 %195, %194
  store i32 %196, ptr %173, align 8, !tbaa !40
  %197 = call noundef ptr @_ZNK6Assimp11SceneHelperptEv(ptr noundef nonnull align 8 dereferenceable(96) %182)
  %198 = getelementptr inbounds i8, ptr %197, i64 16
  %199 = load i32, ptr %198, align 8, !tbaa !41
  %200 = load i32, ptr %174, align 8, !tbaa !41
  %201 = add i32 %200, %199
  store i32 %201, ptr %174, align 8, !tbaa !41
  br label %202

202:                                              ; preds = %180, %186
  %203 = call noundef ptr @_ZNK6Assimp11SceneHelperptEv(ptr noundef nonnull align 8 dereferenceable(96) %182)
  %204 = getelementptr inbounds i8, ptr %203, i64 80
  %205 = load i32, ptr %204, align 8, !tbaa !42
  %206 = load i32, ptr %175, align 8, !tbaa !42
  %207 = add i32 %206, %205
  store i32 %207, ptr %175, align 8, !tbaa !42
  %208 = call noundef ptr @_ZNK6Assimp11SceneHelperptEv(ptr noundef nonnull align 8 dereferenceable(96) %182)
  %209 = getelementptr inbounds i8, ptr %208, i64 96
  %210 = load i32, ptr %209, align 8, !tbaa !43
  %211 = load i32, ptr %176, align 8, !tbaa !43
  %212 = add i32 %211, %210
  store i32 %212, ptr %176, align 8, !tbaa !43
  %213 = call noundef ptr @_ZNK6Assimp11SceneHelperptEv(ptr noundef nonnull align 8 dereferenceable(96) %182)
  %214 = getelementptr inbounds i8, ptr %213, i64 48
  %215 = load i32, ptr %214, align 8, !tbaa !32
  %216 = load i32, ptr %177, align 8, !tbaa !32
  %217 = add i32 %216, %215
  store i32 %217, ptr %177, align 8, !tbaa !32
  %218 = call noundef ptr @_ZNK6Assimp11SceneHelperptEv(ptr noundef nonnull align 8 dereferenceable(96) %182)
  %219 = load i32, ptr %218, align 8, !tbaa !44
  %220 = and i32 %219, 8
  %.not439 = icmp eq i32 %220, 0
  br i1 %.not439, label %224, label %221

221:                                              ; preds = %202
  %222 = load i32, ptr %70, align 8, !tbaa !44
  %223 = or i32 %222, 8
  store i32 %223, ptr %70, align 8, !tbaa !44
  br label %224

224:                                              ; preds = %221, %202
  %225 = add i32 %.0340492, 1
  %226 = zext i32 %225 to i64
  %227 = call noundef i64 @_ZNKSt6vectorIN6Assimp11SceneHelperESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %11) #12
  %228 = icmp ugt i64 %227, %226
  br i1 %228, label %180, label %._crit_edge495, !llvm.loop !45

229:                                              ; preds = %._crit_edge495
  %230 = zext i32 %179 to i64
  %231 = shl nuw nsw i64 %230, 3
  %232 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %231) #14
          to label %233 unwind label %237

233:                                              ; preds = %229
  %234 = getelementptr inbounds i8, ptr %70, i64 72
  store ptr %232, ptr %234, align 8, !tbaa !46
  %235 = call noundef i64 @_ZNKSt6vectorIN6Assimp11SceneHelperESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %11) #12
  %.not593 = icmp eq i64 %235, 0
  br i1 %.not593, label %.loopexit463, label %.lr.ph507

.lr.ph507:                                        ; preds = %233
  %236 = and i32 %3, 4
  %.not434 = icmp eq i32 %236, 0
  br label %239

237:                                              ; preds = %229
  %238 = landingpad { ptr, i32 }
          cleanup
  br label %886

239:                                              ; preds = %.lr.ph507, %._crit_edge501
  %240 = phi i64 [ 0, %.lr.ph507 ], [ %268, %._crit_edge501 ]
  %.0334505 = phi i32 [ 0, %.lr.ph507 ], [ %266, %._crit_edge501 ]
  %.0345504 = phi ptr [ %232, %.lr.ph507 ], [ %.1346.lcssa, %._crit_edge501 ]
  %.0348502 = phi i32 [ 0, %.lr.ph507 ], [ %267, %._crit_edge501 ]
  %241 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN6Assimp11SceneHelperESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %11, i64 noundef %240) #12
  %242 = call noundef ptr @_ZNK6Assimp11SceneHelperptEv(ptr noundef nonnull align 8 dereferenceable(96) %241)
  %243 = getelementptr inbounds i8, ptr %242, i64 64
  %244 = load i32, ptr %243, align 8, !tbaa !39
  %.not594 = icmp eq i32 %244, 0
  br i1 %.not594, label %._crit_edge501, label %.lr.ph500

.lr.ph500:                                        ; preds = %239
  br i1 %.not434, label %.lr.ph500.split.us, label %.lr.ph500.split

.lr.ph500.split.us:                               ; preds = %.lr.ph500, %254
  %indvars.iv620 = phi i64 [ %indvars.iv.next621, %254 ], [ 0, %.lr.ph500 ]
  %.1346498.us = phi ptr [ %.2347.us, %254 ], [ %.0345504, %.lr.ph500 ]
  %245 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %240) #12
  %246 = load i32, ptr %245, align 4, !tbaa !21
  %.not433.us = icmp eq i32 %.0348502, %246
  br i1 %.not433.us, label %247, label %254

247:                                              ; preds = %.lr.ph500.split.us
  %248 = call noundef ptr @_ZNK6Assimp11SceneHelperptEv(ptr noundef nonnull align 8 dereferenceable(96) %241)
  %249 = getelementptr inbounds i8, ptr %248, i64 72
  %250 = load ptr, ptr %249, align 8, !tbaa !46
  %251 = getelementptr inbounds ptr, ptr %250, i64 %indvars.iv620
  %252 = load ptr, ptr %251, align 8, !tbaa !5
  store ptr %252, ptr %.1346498.us, align 8, !tbaa !5
  %253 = getelementptr inbounds i8, ptr %.1346498.us, i64 8
  br label %254

254:                                              ; preds = %.lr.ph500.split.us, %247
  %.2347.us = phi ptr [ %253, %247 ], [ %.1346498.us, %.lr.ph500.split.us ]
  %indvars.iv.next621 = add nuw nsw i64 %indvars.iv620, 1
  %255 = call noundef ptr @_ZNK6Assimp11SceneHelperptEv(ptr noundef nonnull align 8 dereferenceable(96) %241)
  %256 = getelementptr inbounds i8, ptr %255, i64 64
  %257 = load i32, ptr %256, align 8, !tbaa !39
  %258 = zext i32 %257 to i64
  %259 = icmp ult i64 %indvars.iv.next621, %258
  br i1 %259, label %.lr.ph500.split.us, label %._crit_edge501, !llvm.loop !47

._crit_edge501:                                   ; preds = %282, %254, %239
  %.1346.lcssa = phi ptr [ %.0345504, %239 ], [ %.2347.us, %254 ], [ %283, %282 ]
  %260 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %17, i64 noundef %240) #12
  store i32 %.0334505, ptr %260, align 4, !tbaa !21
  %261 = load ptr, ptr %234, align 8, !tbaa !46
  %262 = ptrtoint ptr %.1346.lcssa to i64
  %263 = ptrtoint ptr %261 to i64
  %264 = sub i64 %262, %263
  %265 = lshr exact i64 %264, 3
  %266 = trunc i64 %265 to i32
  %267 = add i32 %.0348502, 1
  %268 = zext i32 %267 to i64
  %269 = call noundef i64 @_ZNKSt6vectorIN6Assimp11SceneHelperESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %11) #12
  %270 = icmp ugt i64 %269, %268
  br i1 %270, label %239, label %.loopexit463, !llvm.loop !48

271:                                              ; preds = %280
  %272 = landingpad { ptr, i32 }
          cleanup
  br label %886

.lr.ph500.split:                                  ; preds = %.lr.ph500, %282
  %indvars.iv617 = phi i64 [ %indvars.iv.next618, %282 ], [ 0, %.lr.ph500 ]
  %.1346498 = phi ptr [ %283, %282 ], [ %.0345504, %.lr.ph500 ]
  %273 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %240) #12
  %274 = load i32, ptr %273, align 4, !tbaa !21
  %.not433 = icmp eq i32 %.0348502, %274
  %275 = call noundef ptr @_ZNK6Assimp11SceneHelperptEv(ptr noundef nonnull align 8 dereferenceable(96) %241)
  %276 = getelementptr inbounds i8, ptr %275, i64 72
  %277 = load ptr, ptr %276, align 8, !tbaa !46
  %278 = getelementptr inbounds ptr, ptr %277, i64 %indvars.iv617
  %279 = load ptr, ptr %278, align 8, !tbaa !5
  br i1 %.not433, label %281, label %280

280:                                              ; preds = %.lr.ph500.split
  invoke void @_ZN6Assimp13SceneCombiner4CopyEPP9aiTexturePKS1_(ptr noundef %.1346498, ptr noundef %279)
          to label %282 unwind label %271

281:                                              ; preds = %.lr.ph500.split
  store ptr %279, ptr %.1346498, align 8, !tbaa !5
  br label %282

282:                                              ; preds = %280, %281
  %283 = getelementptr inbounds i8, ptr %.1346498, i64 8
  %indvars.iv.next618 = add nuw nsw i64 %indvars.iv617, 1
  %284 = call noundef ptr @_ZNK6Assimp11SceneHelperptEv(ptr noundef nonnull align 8 dereferenceable(96) %241)
  %285 = getelementptr inbounds i8, ptr %284, i64 64
  %286 = load i32, ptr %285, align 8, !tbaa !39
  %287 = zext i32 %286 to i64
  %288 = icmp ult i64 %indvars.iv.next618, %287
  br i1 %288, label %.lr.ph500.split, label %._crit_edge501, !llvm.loop !47

.loopexit463:                                     ; preds = %._crit_edge501, %233, %._crit_edge495
  %289 = getelementptr inbounds i8, ptr %70, i64 32
  %290 = load i32, ptr %289, align 8, !tbaa !40
  %.not390 = icmp eq i32 %290, 0
  br i1 %.not390, label %.loopexit462, label %291

291:                                              ; preds = %.loopexit463
  %292 = zext i32 %290 to i64
  %293 = shl nuw nsw i64 %292, 3
  %294 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %293) #14
          to label %295 unwind label %302

295:                                              ; preds = %291
  %296 = getelementptr inbounds i8, ptr %70, i64 40
  store ptr %294, ptr %296, align 8, !tbaa !49
  %297 = call noundef i64 @_ZNKSt6vectorIN6Assimp11SceneHelperESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %11) #12
  %.not595 = icmp eq i64 %297, 0
  br i1 %.not595, label %.loopexit462, label %.lr.ph521

.lr.ph521:                                        ; preds = %295
  %298 = and i32 %3, 4
  %.not424 = icmp eq i32 %298, 0
  %299 = and i32 %3, 2
  %.not428 = icmp eq i32 %299, 0
  %300 = getelementptr inbounds i8, ptr %20, i64 4
  %301 = getelementptr inbounds i8, ptr %20, i64 5
  br label %304

302:                                              ; preds = %291
  %303 = landingpad { ptr, i32 }
          cleanup
  br label %886

304:                                              ; preds = %.lr.ph521, %._crit_edge515
  %305 = phi i64 [ 0, %.lr.ph521 ], [ %320, %._crit_edge515 ]
  %.1335519 = phi i32 [ 0, %.lr.ph521 ], [ %318, %._crit_edge515 ]
  %.0350518 = phi ptr [ %294, %.lr.ph521 ], [ %.1351.lcssa, %._crit_edge515 ]
  %.0355517 = phi i32 [ 0, %.lr.ph521 ], [ %319, %._crit_edge515 ]
  %306 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN6Assimp11SceneHelperESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %11, i64 noundef %305) #12
  %307 = call noundef ptr @_ZNK6Assimp11SceneHelperptEv(ptr noundef nonnull align 8 dereferenceable(96) %306)
  %308 = getelementptr inbounds i8, ptr %307, i64 32
  %309 = load i32, ptr %308, align 8, !tbaa !40
  %.not596 = icmp eq i32 %309, 0
  br i1 %.not596, label %._crit_edge515, label %.lr.ph514

.lr.ph514:                                        ; preds = %304
  %310 = getelementptr inbounds i8, ptr %306, i64 8
  %311 = getelementptr inbounds i8, ptr %306, i64 40
  br label %325

._crit_edge515:                                   ; preds = %405, %304
  %.1351.lcssa = phi ptr [ %.0350518, %304 ], [ %.2352, %405 ]
  %312 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %17, i64 noundef %305) #12
  store i32 %.1335519, ptr %312, align 4, !tbaa !21
  %313 = load ptr, ptr %296, align 8, !tbaa !49
  %314 = ptrtoint ptr %.1351.lcssa to i64
  %315 = ptrtoint ptr %313 to i64
  %316 = sub i64 %314, %315
  %317 = lshr exact i64 %316, 3
  %318 = trunc i64 %317 to i32
  %319 = add i32 %.0355517, 1
  %320 = zext i32 %319 to i64
  %321 = call noundef i64 @_ZNKSt6vectorIN6Assimp11SceneHelperESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %11) #12
  %322 = icmp ugt i64 %321, %320
  br i1 %322, label %304, label %.loopexit462, !llvm.loop !50

323:                                              ; preds = %329
  %324 = landingpad { ptr, i32 }
          cleanup
  br label %886

325:                                              ; preds = %.lr.ph514, %405
  %indvars.iv626 = phi i64 [ 0, %.lr.ph514 ], [ %indvars.iv.next627, %405 ]
  %.1351512 = phi ptr [ %.0350518, %.lr.ph514 ], [ %.2352, %405 ]
  %326 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %305) #12
  %327 = load i32, ptr %326, align 4, !tbaa !21
  %.not423 = icmp eq i32 %.0355517, %327
  br i1 %.not423, label %335, label %328

328:                                              ; preds = %325
  br i1 %.not424, label %405, label %329

329:                                              ; preds = %328
  %330 = call noundef ptr @_ZNK6Assimp11SceneHelperptEv(ptr noundef nonnull align 8 dereferenceable(96) %306)
  %331 = getelementptr inbounds i8, ptr %330, i64 40
  %332 = load ptr, ptr %331, align 8, !tbaa !49
  %333 = getelementptr inbounds ptr, ptr %332, i64 %indvars.iv626
  %334 = load ptr, ptr %333, align 8, !tbaa !5
  invoke void @_ZN6Assimp13SceneCombiner4CopyEPP10aiMaterialPKS1_(ptr noundef %.1351512, ptr noundef %334)
          to label %341 unwind label %323

335:                                              ; preds = %325
  %336 = call noundef ptr @_ZNK6Assimp11SceneHelperptEv(ptr noundef nonnull align 8 dereferenceable(96) %306)
  %337 = getelementptr inbounds i8, ptr %336, i64 40
  %338 = load ptr, ptr %337, align 8, !tbaa !49
  %339 = getelementptr inbounds ptr, ptr %338, i64 %indvars.iv626
  %340 = load ptr, ptr %339, align 8, !tbaa !5
  store ptr %340, ptr %.1351512, align 8, !tbaa !5
  br label %341

341:                                              ; preds = %329, %335
  %342 = call noundef ptr @_ZNK6Assimp11SceneHelperptEv(ptr noundef nonnull align 8 dereferenceable(96) %306)
  %343 = getelementptr inbounds i8, ptr %342, i64 64
  %344 = load i32, ptr %343, align 8, !tbaa !39
  %345 = load i32, ptr %178, align 8, !tbaa !39
  %.not425 = icmp eq i32 %344, %345
  br i1 %.not425, label %.loopexit461, label %.preheader460

.preheader460:                                    ; preds = %341
  %346 = load ptr, ptr %.1351512, align 8, !tbaa !5
  %347 = getelementptr inbounds i8, ptr %346, i64 8
  %348 = load i32, ptr %347, align 8, !tbaa !51
  %.not597 = icmp eq i32 %348, 0
  br i1 %.not597, label %.loopexit461, label %.lr.ph509

.lr.ph509:                                        ; preds = %.preheader460, %398
  %indvars.iv623 = phi i64 [ %indvars.iv.next624, %398 ], [ 0, %.preheader460 ]
  %349 = phi ptr [ %399, %398 ], [ %346, %.preheader460 ]
  %350 = load ptr, ptr %349, align 8, !tbaa !53
  %351 = getelementptr inbounds ptr, ptr %350, i64 %indvars.iv623
  %352 = load ptr, ptr %351, align 8, !tbaa !5
  %353 = getelementptr inbounds i8, ptr %352, i64 4
  %354 = call i32 @strncmp(ptr noundef nonnull dereferenceable(1) %353, ptr noundef nonnull dereferenceable(1) @.str.5, i64 noundef 9) #15
  %.not426 = icmp eq i32 %354, 0
  br i1 %.not426, label %355, label %390

355:                                              ; preds = %.lr.ph509
  call void @llvm.lifetime.start.p0(i64 1028, ptr nonnull %20) #12
  %356 = getelementptr inbounds i8, ptr %352, i64 1048
  %357 = load ptr, ptr %356, align 8, !tbaa !54
  call void @_ZN8aiStringC2ERKS_(ptr noundef nonnull align 4 dereferenceable(1028) %20, ptr noundef nonnull align 4 dereferenceable(1028) %357)
  %358 = load i8, ptr %300, align 4, !tbaa !57
  %359 = icmp eq i8 %358, 42
  br i1 %359, label %360, label %389

360:                                              ; preds = %355
  %361 = call noundef i32 @_ZN6Assimp9strtoul10EPKcPS1_(ptr noundef nonnull %301, ptr noundef null)
  %362 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %17, i64 noundef %305) #12
  %363 = load i32, ptr %362, align 4, !tbaa !21
  %364 = add i32 %363, %361
  %365 = load i32, ptr %20, align 4, !tbaa !58
  %366 = invoke noundef i32 @_ZN6Assimp13ASSIMP_itoa10EPcji(ptr noundef nonnull %301, i32 noundef 1023, i32 noundef %364)
          to label %367 unwind label %382

367:                                              ; preds = %360
  %368 = add i32 %366, 1
  store i32 %368, ptr %20, align 4, !tbaa !58
  %369 = icmp ult i32 %365, %368
  %.pre660 = load ptr, ptr %356, align 8, !tbaa !54
  br i1 %369, label %370, label %384

370:                                              ; preds = %367
  %371 = sub i32 %368, %365
  %372 = getelementptr inbounds i8, ptr %352, i64 1036
  %373 = load i32, ptr %372, align 4, !tbaa !59
  %374 = add i32 %371, %373
  store i32 %374, ptr %372, align 4, !tbaa !59
  %375 = icmp eq ptr %.pre660, null
  br i1 %375, label %377, label %376

376:                                              ; preds = %370
  call void @_ZdaPv(ptr noundef nonnull %.pre660) #13
  %.pre659 = load i32, ptr %372, align 4, !tbaa !59
  br label %377

377:                                              ; preds = %376, %370
  %378 = phi i32 [ %.pre659, %376 ], [ %374, %370 ]
  %379 = zext i32 %378 to i64
  %380 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %379) #14
          to label %381 unwind label %382

381:                                              ; preds = %377
  store ptr %380, ptr %356, align 8, !tbaa !54
  br label %384

382:                                              ; preds = %377, %360
  %383 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 1028, ptr nonnull %20) #12
  br label %886

384:                                              ; preds = %381, %367
  %385 = phi ptr [ %380, %381 ], [ %.pre660, %367 ]
  %386 = getelementptr inbounds i8, ptr %352, i64 1036
  %387 = load i32, ptr %386, align 4, !tbaa !59
  %388 = zext i32 %387 to i64
  call void @llvm.memcpy.p0.p0.i64(ptr align 1 %385, ptr nonnull align 4 %20, i64 %388, i1 false)
  br label %389

389:                                              ; preds = %384, %355
  call void @llvm.lifetime.end.p0(i64 1028, ptr nonnull %20) #12
  br label %398

390:                                              ; preds = %.lr.ph509
  %391 = call i32 @strcmp(ptr noundef nonnull dereferenceable(1) %353, ptr noundef nonnull dereferenceable(1) @.str.6) #15
  %.not427 = icmp ne i32 %391, 0
  %or.cond453 = or i1 %.not428, %.not427
  br i1 %or.cond453, label %398, label %392

392:                                              ; preds = %390
  %393 = getelementptr inbounds i8, ptr %352, i64 1048
  %394 = load ptr, ptr %393, align 8, !tbaa !54
  %395 = load i32, ptr %311, align 8, !tbaa !28
  invoke void @_ZN6Assimp12PrefixStringER8aiStringPKcj(ptr noundef nonnull align 4 dereferenceable(1028) %394, ptr noundef nonnull %310, i32 noundef %395)
          to label %398 unwind label %396

396:                                              ; preds = %392
  %397 = landingpad { ptr, i32 }
          cleanup
  br label %886

398:                                              ; preds = %392, %390, %389
  %indvars.iv.next624 = add nuw nsw i64 %indvars.iv623, 1
  %399 = load ptr, ptr %.1351512, align 8, !tbaa !5
  %400 = getelementptr inbounds i8, ptr %399, i64 8
  %401 = load i32, ptr %400, align 8, !tbaa !51
  %402 = zext i32 %401 to i64
  %403 = icmp ult i64 %indvars.iv.next624, %402
  br i1 %403, label %.lr.ph509, label %.loopexit461, !llvm.loop !60

.loopexit461:                                     ; preds = %398, %.preheader460, %341
  %404 = getelementptr inbounds i8, ptr %.1351512, i64 8
  br label %405

405:                                              ; preds = %328, %.loopexit461
  %.2352 = phi ptr [ %404, %.loopexit461 ], [ %.1351512, %328 ]
  %indvars.iv.next627 = add nuw nsw i64 %indvars.iv626, 1
  %406 = call noundef ptr @_ZNK6Assimp11SceneHelperptEv(ptr noundef nonnull align 8 dereferenceable(96) %306)
  %407 = getelementptr inbounds i8, ptr %406, i64 32
  %408 = load i32, ptr %407, align 8, !tbaa !40
  %409 = zext i32 %408 to i64
  %410 = icmp ult i64 %indvars.iv.next627, %409
  br i1 %410, label %325, label %._crit_edge515, !llvm.loop !61

.loopexit462:                                     ; preds = %._crit_edge515, %295, %.loopexit463
  %411 = getelementptr inbounds i8, ptr %70, i64 16
  %412 = load i32, ptr %411, align 8, !tbaa !41
  %.not391 = icmp eq i32 %412, 0
  br i1 %.not391, label %.loopexit459, label %413

413:                                              ; preds = %.loopexit462
  %414 = zext i32 %412 to i64
  %415 = shl nuw nsw i64 %414, 3
  %416 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %415) #14
          to label %417 unwind label %421

417:                                              ; preds = %413
  %418 = getelementptr inbounds i8, ptr %70, i64 24
  store ptr %416, ptr %418, align 8, !tbaa !62
  %419 = call noundef i64 @_ZNKSt6vectorIN6Assimp11SceneHelperESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %11) #12
  %.not598 = icmp eq i64 %419, 0
  br i1 %.not598, label %.loopexit459, label %.lr.ph535

.lr.ph535:                                        ; preds = %417
  %420 = and i32 %3, 4
  %.not420 = icmp eq i32 %420, 0
  br label %423

421:                                              ; preds = %413
  %422 = landingpad { ptr, i32 }
          cleanup
  br label %886

423:                                              ; preds = %.lr.ph535, %._crit_edge527
  %424 = phi i64 [ 0, %.lr.ph535 ], [ %458, %._crit_edge527 ]
  %.2336533 = phi i32 [ 0, %.lr.ph535 ], [ %456, %._crit_edge527 ]
  %.0341531 = phi i32 [ 0, %.lr.ph535 ], [ %457, %._crit_edge527 ]
  %.0342530 = phi ptr [ %416, %.lr.ph535 ], [ %.1343.lcssa, %._crit_edge527 ]
  %425 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN6Assimp11SceneHelperESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %11, i64 noundef %424) #12
  %426 = call noundef ptr @_ZNK6Assimp11SceneHelperptEv(ptr noundef nonnull align 8 dereferenceable(96) %425)
  %427 = getelementptr inbounds i8, ptr %426, i64 16
  %428 = load i32, ptr %427, align 8, !tbaa !41
  %.not599 = icmp eq i32 %428, 0
  br i1 %.not599, label %._crit_edge527, label %.lr.ph526

.lr.ph526:                                        ; preds = %423
  br i1 %.not420, label %.lr.ph526.split.us, label %.lr.ph526.split

.lr.ph526.split.us:                               ; preds = %.lr.ph526, %444
  %indvars.iv632 = phi i64 [ %indvars.iv.next633, %444 ], [ 0, %.lr.ph526 ]
  %.1343522.us = phi ptr [ %.2344.us, %444 ], [ %.0342530, %.lr.ph526 ]
  %429 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %424) #12
  %430 = load i32, ptr %429, align 4, !tbaa !21
  %.not419.us = icmp eq i32 %.0341531, %430
  br i1 %.not419.us, label %431, label %444

431:                                              ; preds = %.lr.ph526.split.us
  %432 = call noundef ptr @_ZNK6Assimp11SceneHelperptEv(ptr noundef nonnull align 8 dereferenceable(96) %425)
  %433 = getelementptr inbounds i8, ptr %432, i64 24
  %434 = load ptr, ptr %433, align 8, !tbaa !62
  %435 = getelementptr inbounds ptr, ptr %434, i64 %indvars.iv632
  %436 = load ptr, ptr %435, align 8, !tbaa !5
  store ptr %436, ptr %.1343522.us, align 8, !tbaa !5
  %437 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %17, i64 noundef %424) #12
  %438 = load i32, ptr %437, align 4, !tbaa !21
  %439 = load ptr, ptr %.1343522.us, align 8, !tbaa !5
  %440 = getelementptr inbounds i8, ptr %439, i64 232
  %441 = load i32, ptr %440, align 8, !tbaa !63
  %442 = add i32 %441, %438
  store i32 %442, ptr %440, align 8, !tbaa !63
  %443 = getelementptr inbounds i8, ptr %.1343522.us, i64 8
  br label %444

444:                                              ; preds = %.lr.ph526.split.us, %431
  %.2344.us = phi ptr [ %443, %431 ], [ %.1343522.us, %.lr.ph526.split.us ]
  %indvars.iv.next633 = add nuw nsw i64 %indvars.iv632, 1
  %445 = call noundef ptr @_ZNK6Assimp11SceneHelperptEv(ptr noundef nonnull align 8 dereferenceable(96) %425)
  %446 = getelementptr inbounds i8, ptr %445, i64 16
  %447 = load i32, ptr %446, align 8, !tbaa !41
  %448 = zext i32 %447 to i64
  %449 = icmp ult i64 %indvars.iv.next633, %448
  br i1 %449, label %.lr.ph526.split.us, label %._crit_edge527, !llvm.loop !69

._crit_edge527:                                   ; preds = %472, %444, %423
  %.1343.lcssa = phi ptr [ %.0342530, %423 ], [ %.2344.us, %444 ], [ %479, %472 ]
  %450 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %17, i64 noundef %424) #12
  store i32 %.2336533, ptr %450, align 4, !tbaa !21
  %451 = load ptr, ptr %418, align 8, !tbaa !62
  %452 = ptrtoint ptr %.1343.lcssa to i64
  %453 = ptrtoint ptr %451 to i64
  %454 = sub i64 %452, %453
  %455 = lshr exact i64 %454, 3
  %456 = trunc i64 %455 to i32
  %457 = add i32 %.0341531, 1
  %458 = zext i32 %457 to i64
  %459 = call noundef i64 @_ZNKSt6vectorIN6Assimp11SceneHelperESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %11) #12
  %460 = icmp ugt i64 %459, %458
  br i1 %460, label %423, label %.loopexit459, !llvm.loop !70

461:                                              ; preds = %470
  %462 = landingpad { ptr, i32 }
          cleanup
  br label %886

.lr.ph526.split:                                  ; preds = %.lr.ph526, %472
  %indvars.iv629 = phi i64 [ %indvars.iv.next630, %472 ], [ 0, %.lr.ph526 ]
  %.1343522 = phi ptr [ %479, %472 ], [ %.0342530, %.lr.ph526 ]
  %463 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %424) #12
  %464 = load i32, ptr %463, align 4, !tbaa !21
  %.not419 = icmp eq i32 %.0341531, %464
  %465 = call noundef ptr @_ZNK6Assimp11SceneHelperptEv(ptr noundef nonnull align 8 dereferenceable(96) %425)
  %466 = getelementptr inbounds i8, ptr %465, i64 24
  %467 = load ptr, ptr %466, align 8, !tbaa !62
  %468 = getelementptr inbounds ptr, ptr %467, i64 %indvars.iv629
  %469 = load ptr, ptr %468, align 8, !tbaa !5
  br i1 %.not419, label %471, label %470

470:                                              ; preds = %.lr.ph526.split
  invoke void @_ZN6Assimp13SceneCombiner4CopyEPP6aiMeshPKS1_(ptr noundef %.1343522, ptr noundef %469)
          to label %472 unwind label %461

471:                                              ; preds = %.lr.ph526.split
  store ptr %469, ptr %.1343522, align 8, !tbaa !5
  br label %472

472:                                              ; preds = %470, %471
  %473 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %17, i64 noundef %424) #12
  %474 = load i32, ptr %473, align 4, !tbaa !21
  %475 = load ptr, ptr %.1343522, align 8, !tbaa !5
  %476 = getelementptr inbounds i8, ptr %475, i64 232
  %477 = load i32, ptr %476, align 8, !tbaa !63
  %478 = add i32 %477, %474
  store i32 %478, ptr %476, align 8, !tbaa !63
  %479 = getelementptr inbounds i8, ptr %.1343522, i64 8
  %indvars.iv.next630 = add nuw nsw i64 %indvars.iv629, 1
  %480 = call noundef ptr @_ZNK6Assimp11SceneHelperptEv(ptr noundef nonnull align 8 dereferenceable(96) %425)
  %481 = getelementptr inbounds i8, ptr %480, i64 16
  %482 = load i32, ptr %481, align 8, !tbaa !41
  %483 = zext i32 %482 to i64
  %484 = icmp ult i64 %indvars.iv.next630, %483
  br i1 %484, label %.lr.ph526.split, label %._crit_edge527, !llvm.loop !69

.loopexit459:                                     ; preds = %._crit_edge527, %417, %.loopexit462
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %21) #12
  call void @_ZNSt6vectorIN6Assimp18NodeAttachmentInfoESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %21) #12
  %485 = call noundef i64 @_ZNKSt6vectorIN6Assimp14AttachmentInfoESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %2) #12
  invoke void @_ZNSt6vectorIN6Assimp18NodeAttachmentInfoESaIS1_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %21, i64 noundef %485)
          to label %486 unwind label %520

486:                                              ; preds = %.loopexit459
  %487 = getelementptr inbounds i8, ptr %70, i64 80
  %488 = load i32, ptr %487, align 8, !tbaa !42
  %.not392 = icmp eq i32 %488, 0
  br i1 %.not392, label %493, label %489

489:                                              ; preds = %486
  %490 = zext i32 %488 to i64
  %491 = shl nuw nsw i64 %490, 3
  %492 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %491) #14
          to label %493 unwind label %522

493:                                              ; preds = %489, %486
  %494 = phi ptr [ null, %486 ], [ %492, %489 ]
  %495 = getelementptr inbounds i8, ptr %70, i64 88
  store ptr %494, ptr %495, align 8, !tbaa !71
  %496 = getelementptr inbounds i8, ptr %70, i64 96
  %497 = load i32, ptr %496, align 8, !tbaa !43
  %.not393 = icmp eq i32 %497, 0
  br i1 %.not393, label %502, label %498

498:                                              ; preds = %493
  %499 = zext i32 %497 to i64
  %500 = shl nuw nsw i64 %499, 3
  %501 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %500) #14
          to label %502 unwind label %524

502:                                              ; preds = %498, %493
  %503 = phi ptr [ null, %493 ], [ %501, %498 ]
  %504 = getelementptr inbounds i8, ptr %70, i64 104
  store ptr %503, ptr %504, align 8, !tbaa !72
  %505 = getelementptr inbounds i8, ptr %70, i64 48
  %506 = load i32, ptr %505, align 8, !tbaa !32
  %.not394 = icmp eq i32 %506, 0
  br i1 %.not394, label %511, label %507

507:                                              ; preds = %502
  %508 = zext i32 %506 to i64
  %509 = shl nuw nsw i64 %508, 3
  %510 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %509) #14
          to label %511 unwind label %526

511:                                              ; preds = %507, %502
  %512 = phi ptr [ null, %502 ], [ %510, %507 ]
  %513 = getelementptr inbounds i8, ptr %70, i64 56
  store ptr %512, ptr %513, align 8, !tbaa !33
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %22) #12
  %514 = call noundef i64 @_ZNKSt6vectorIN6Assimp11SceneHelperESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %11) #12
  %515 = trunc i64 %514 to i32
  %storemerge565 = add i32 %515, -1
  store i32 %storemerge565, ptr %22, align 4, !tbaa !21
  %516 = icmp sgt i32 %storemerge565, -1
  br i1 %516, label %.lr.ph571, label %._crit_edge572

.lr.ph571:                                        ; preds = %511
  %517 = and i32 %3, 4
  %.not402 = icmp eq i32 %517, 0
  %518 = and i32 %3, 16
  %.not404 = icmp eq i32 %518, 0
  br label %528

._crit_edge572:                                   ; preds = %._crit_edge563, %511
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #12
  %519 = load ptr, ptr %5, align 8, !tbaa !5
  invoke void @_ZN6Assimp13SceneCombiner13AttachToGraphEP7aiSceneRSt6vectorINS_18NodeAttachmentInfoESaIS4_EE(ptr noundef %519, ptr noundef nonnull align 8 dereferenceable(24) %21)
          to label %779 unwind label %526

520:                                              ; preds = %.loopexit459
  %521 = landingpad { ptr, i32 }
          cleanup
  br label %885

522:                                              ; preds = %489
  %523 = landingpad { ptr, i32 }
          cleanup
  br label %885

524:                                              ; preds = %498
  %525 = landingpad { ptr, i32 }
          cleanup
  br label %885

526:                                              ; preds = %._crit_edge572, %507
  %527 = landingpad { ptr, i32 }
          cleanup
  br label %885

528:                                              ; preds = %.lr.ph571, %._crit_edge563
  %storemerge569 = phi i32 [ %storemerge565, %.lr.ph571 ], [ %storemerge, %._crit_edge563 ]
  %.0327568 = phi ptr [ %512, %.lr.ph571 ], [ %.1328.lcssa, %._crit_edge563 ]
  %.0331567 = phi ptr [ %503, %.lr.ph571 ], [ %.1332.lcssa, %._crit_edge563 ]
  %.0337566 = phi ptr [ %494, %.lr.ph571 ], [ %.1338.lcssa, %._crit_edge563 ]
  %529 = zext nneg i32 %storemerge569 to i64
  %530 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN6Assimp11SceneHelperESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %11, i64 noundef %529) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #12
  %531 = load i32, ptr %22, align 4, !tbaa !21
  %532 = sext i32 %531 to i64
  %533 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %532) #12
  %534 = load i32, ptr %533, align 4, !tbaa !21
  %.not401 = icmp eq i32 %531, %534
  %535 = call noundef ptr @_ZNK6Assimp11SceneHelperptEv(ptr noundef nonnull align 8 dereferenceable(96) %530)
  %536 = getelementptr inbounds i8, ptr %535, i64 8
  %537 = load ptr, ptr %536, align 8, !tbaa !29
  br i1 %.not401, label %565, label %538

538:                                              ; preds = %528
  invoke void @_ZN6Assimp13SceneCombiner4CopyEPP6aiNodePKS1_(ptr noundef nonnull %23, ptr noundef %537)
          to label %539 unwind label %563

539:                                              ; preds = %538
  %540 = load ptr, ptr %23, align 8, !tbaa !5
  %541 = load i32, ptr %22, align 4, !tbaa !21
  %542 = sext i32 %541 to i64
  %543 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %542) #12
  %544 = load i32, ptr %543, align 4, !tbaa !21
  %545 = zext i32 %544 to i64
  %546 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %17, i64 noundef %545) #12
  %547 = load i32, ptr %546, align 4, !tbaa !21
  invoke void @_ZN6Assimp13SceneCombiner21OffsetNodeMeshIndicesEP6aiNodej(ptr noundef %540, i32 noundef %547)
          to label %548 unwind label %563

548:                                              ; preds = %539
  br i1 %.not402, label %572, label %549

549:                                              ; preds = %548
  %550 = load ptr, ptr %23, align 8, !tbaa !5
  %551 = load i32, ptr %22, align 4, !tbaa !21
  %552 = sext i32 %551 to i64
  %553 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %17, i64 noundef %552) #12
  %554 = load i32, ptr %553, align 4, !tbaa !21
  %555 = load i32, ptr %22, align 4, !tbaa !21
  %556 = sext i32 %555 to i64
  %557 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %556) #12
  %558 = load i32, ptr %557, align 4, !tbaa !21
  %559 = zext i32 %558 to i64
  %560 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %17, i64 noundef %559) #12
  %561 = load i32, ptr %560, align 4, !tbaa !21
  %562 = sub i32 %554, %561
  br label %.invoke

563:                                              ; preds = %.invoke, %588, %586, %574, %539, %538
  %564 = landingpad { ptr, i32 }
          cleanup
  br label %778

565:                                              ; preds = %528
  store ptr %537, ptr %23, align 8, !tbaa !5
  %566 = load i32, ptr %22, align 4, !tbaa !21
  %567 = sext i32 %566 to i64
  %568 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %17, i64 noundef %567) #12
  %569 = load i32, ptr %568, align 4, !tbaa !21
  br label %.invoke

.invoke:                                          ; preds = %549, %565
  %570 = phi ptr [ %537, %565 ], [ %550, %549 ]
  %571 = phi i32 [ %569, %565 ], [ %562, %549 ]
  invoke void @_ZN6Assimp13SceneCombiner21OffsetNodeMeshIndicesEP6aiNodej(ptr noundef %570, i32 noundef %571)
          to label %572 unwind label %563

572:                                              ; preds = %.invoke, %548
  %573 = load i32, ptr %22, align 4, !tbaa !21
  %.not403 = icmp eq i32 %573, 0
  br i1 %.not403, label %580, label %574

574:                                              ; preds = %572
  %575 = add nsw i32 %573, -1
  %576 = sext i32 %575 to i64
  %577 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt6vectorIN6Assimp14AttachmentInfoESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %2, i64 noundef %576) #12
  %578 = getelementptr inbounds i8, ptr %577, i64 8
  %579 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt6vectorIN6Assimp18NodeAttachmentInfoESaIS1_EE12emplace_backIJRP6aiNodeS7_RiEEERS1_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %21, ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 8 dereferenceable(8) %578, ptr noundef nonnull align 4 dereferenceable(4) %22)
          to label %580 unwind label %563

580:                                              ; preds = %574, %572
  br i1 %.not388, label %.loopexit458, label %581

581:                                              ; preds = %580
  %582 = load ptr, ptr %23, align 8, !tbaa !5
  %583 = getelementptr inbounds i8, ptr %530, i64 8
  %584 = getelementptr inbounds i8, ptr %530, i64 40
  %585 = load i32, ptr %584, align 8, !tbaa !28
  br i1 %.not404, label %588, label %586

586:                                              ; preds = %581
  %587 = load i32, ptr %22, align 4, !tbaa !21
  invoke void @_ZN6Assimp13SceneCombiner22AddNodePrefixesCheckedEP6aiNodePKcjRSt6vectorINS_11SceneHelperESaIS6_EEj(ptr noundef %582, ptr noundef nonnull %583, i32 noundef %585, ptr noundef nonnull align 8 dereferenceable(24) %11, i32 noundef %587)
          to label %589 unwind label %563

588:                                              ; preds = %581
  invoke void @_ZN6Assimp13SceneCombiner15AddNodePrefixesEP6aiNodePKcj(ptr noundef %582, ptr noundef nonnull %583, i32 noundef %585)
          to label %589 unwind label %563

589:                                              ; preds = %588, %586
  %590 = call noundef ptr @_ZNK6Assimp11SceneHelperptEv(ptr noundef nonnull align 8 dereferenceable(96) %530)
  %591 = getelementptr inbounds i8, ptr %590, i64 16
  %592 = load i32, ptr %591, align 8, !tbaa !41
  %.not600 = icmp eq i32 %592, 0
  br i1 %.not600, label %.loopexit458, label %.lr.ph543

.lr.ph543:                                        ; preds = %589
  %593 = getelementptr inbounds i8, ptr %530, i64 8
  %594 = getelementptr inbounds i8, ptr %530, i64 40
  br label %595

595:                                              ; preds = %.lr.ph543, %._crit_edge539
  %indvars.iv641 = phi i64 [ 0, %.lr.ph543 ], [ %indvars.iv.next642, %._crit_edge539 ]
  %596 = call noundef ptr @_ZNK6Assimp11SceneHelperptEv(ptr noundef nonnull align 8 dereferenceable(96) %530)
  %597 = getelementptr inbounds i8, ptr %596, i64 24
  %598 = load ptr, ptr %597, align 8, !tbaa !62
  %599 = getelementptr inbounds ptr, ptr %598, i64 %indvars.iv641
  %600 = load ptr, ptr %599, align 8, !tbaa !5
  %601 = getelementptr inbounds i8, ptr %600, i64 216
  %602 = load i32, ptr %601, align 8, !tbaa !73
  %.not601 = icmp eq i32 %602, 0
  br i1 %.not601, label %._crit_edge539, label %.lr.ph538

.lr.ph538:                                        ; preds = %595
  %603 = getelementptr inbounds i8, ptr %600, i64 224
  br i1 %.not404, label %.lr.ph538.split.us, label %.lr.ph538.split

.lr.ph538.split.us:                               ; preds = %.lr.ph538, %608
  %indvars.iv638 = phi i64 [ %indvars.iv.next639, %608 ], [ 0, %.lr.ph538 ]
  %604 = load ptr, ptr %603, align 8, !tbaa !74
  %605 = getelementptr inbounds ptr, ptr %604, i64 %indvars.iv638
  %606 = load ptr, ptr %605, align 8, !tbaa !5
  %607 = load i32, ptr %594, align 8, !tbaa !28
  invoke void @_ZN6Assimp12PrefixStringER8aiStringPKcj(ptr noundef nonnull align 4 dereferenceable(1028) %606, ptr noundef nonnull %593, i32 noundef %607)
          to label %608 unwind label %.split.us

608:                                              ; preds = %.lr.ph538.split.us
  %indvars.iv.next639 = add nuw nsw i64 %indvars.iv638, 1
  %609 = load i32, ptr %601, align 8, !tbaa !73
  %610 = zext i32 %609 to i64
  %611 = icmp ult i64 %indvars.iv.next639, %610
  br i1 %611, label %.lr.ph538.split.us, label %._crit_edge539, !llvm.loop !75

.split.us:                                        ; preds = %.lr.ph538.split.us
  %612 = landingpad { ptr, i32 }
          cleanup
  br label %778

._crit_edge539:                                   ; preds = %630, %608, %595
  %indvars.iv.next642 = add nuw nsw i64 %indvars.iv641, 1
  %613 = call noundef ptr @_ZNK6Assimp11SceneHelperptEv(ptr noundef nonnull align 8 dereferenceable(96) %530)
  %614 = getelementptr inbounds i8, ptr %613, i64 16
  %615 = load i32, ptr %614, align 8, !tbaa !41
  %616 = zext i32 %615 to i64
  %617 = icmp ult i64 %indvars.iv.next642, %616
  br i1 %617, label %595, label %.loopexit458, !llvm.loop !76

.lr.ph538.split:                                  ; preds = %.lr.ph538, %630
  %indvars.iv635 = phi i64 [ %indvars.iv.next636, %630 ], [ 0, %.lr.ph538 ]
  %618 = load ptr, ptr %603, align 8, !tbaa !74
  %619 = getelementptr inbounds ptr, ptr %618, i64 %indvars.iv635
  %620 = load ptr, ptr %619, align 8, !tbaa !5
  %621 = load i32, ptr %22, align 4, !tbaa !21
  %622 = invoke noundef zeroext i1 @_ZN6Assimp13SceneCombiner13FindNameMatchERK8aiStringRSt6vectorINS_11SceneHelperESaIS5_EEj(ptr noundef nonnull align 4 dereferenceable(1028) %620, ptr noundef nonnull align 8 dereferenceable(24) %11, i32 noundef %621)
          to label %623 unwind label %.split

623:                                              ; preds = %.lr.ph538.split
  br i1 %622, label %625, label %630

.split:                                           ; preds = %625, %.lr.ph538.split
  %624 = landingpad { ptr, i32 }
          cleanup
  br label %778

625:                                              ; preds = %623
  %626 = load ptr, ptr %603, align 8, !tbaa !74
  %627 = getelementptr inbounds ptr, ptr %626, i64 %indvars.iv635
  %628 = load ptr, ptr %627, align 8, !tbaa !5
  %629 = load i32, ptr %594, align 8, !tbaa !28
  invoke void @_ZN6Assimp12PrefixStringER8aiStringPKcj(ptr noundef nonnull align 4 dereferenceable(1028) %628, ptr noundef nonnull %593, i32 noundef %629)
          to label %630 unwind label %.split

630:                                              ; preds = %625, %623
  %indvars.iv.next636 = add nuw nsw i64 %indvars.iv635, 1
  %631 = load i32, ptr %601, align 8, !tbaa !73
  %632 = zext i32 %631 to i64
  %633 = icmp ult i64 %indvars.iv.next636, %632
  br i1 %633, label %.lr.ph538.split, label %._crit_edge539, !llvm.loop !75

.loopexit458:                                     ; preds = %._crit_edge539, %589, %580
  %634 = call noundef ptr @_ZNK6Assimp11SceneHelperptEv(ptr noundef nonnull align 8 dereferenceable(96) %530)
  %635 = getelementptr inbounds i8, ptr %634, i64 80
  %636 = load i32, ptr %635, align 8, !tbaa !42
  %.not602 = icmp eq i32 %636, 0
  br i1 %.not602, label %.preheader457, label %.lr.ph547

.lr.ph547:                                        ; preds = %.loopexit458
  %637 = getelementptr inbounds i8, ptr %530, i64 8
  %638 = getelementptr inbounds i8, ptr %530, i64 40
  br label %646

.preheader457:                                    ; preds = %667, %.loopexit458
  %.1338.lcssa = phi ptr [ %.0337566, %.loopexit458 ], [ %668, %667 ]
  %639 = call noundef ptr @_ZNK6Assimp11SceneHelperptEv(ptr noundef nonnull align 8 dereferenceable(96) %530)
  %640 = getelementptr inbounds i8, ptr %639, i64 96
  %641 = load i32, ptr %640, align 8, !tbaa !43
  %.not603 = icmp eq i32 %641, 0
  br i1 %.not603, label %.preheader456, label %.lr.ph551

.lr.ph551:                                        ; preds = %.preheader457
  %642 = getelementptr inbounds i8, ptr %530, i64 8
  %643 = getelementptr inbounds i8, ptr %530, i64 40
  br label %681

644:                                              ; preds = %664, %660, %656
  %645 = landingpad { ptr, i32 }
          cleanup
  br label %778

646:                                              ; preds = %.lr.ph547, %667
  %indvars.iv644 = phi i64 [ 0, %.lr.ph547 ], [ %indvars.iv.next645, %667 ]
  %.1338544 = phi ptr [ %.0337566, %.lr.ph547 ], [ %668, %667 ]
  %647 = load i32, ptr %22, align 4, !tbaa !21
  %648 = sext i32 %647 to i64
  %649 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %648) #12
  %650 = load i32, ptr %649, align 4, !tbaa !21
  %.not411 = icmp eq i32 %647, %650
  %651 = call noundef ptr @_ZNK6Assimp11SceneHelperptEv(ptr noundef nonnull align 8 dereferenceable(96) %530)
  %652 = getelementptr inbounds i8, ptr %651, i64 88
  %653 = load ptr, ptr %652, align 8, !tbaa !71
  %654 = getelementptr inbounds ptr, ptr %653, i64 %indvars.iv644
  %655 = load ptr, ptr %654, align 8, !tbaa !5
  br i1 %.not411, label %657, label %656

656:                                              ; preds = %646
  invoke void @_ZN6Assimp13SceneCombiner4CopyEPP7aiLightPKS1_(ptr noundef %.1338544, ptr noundef %655)
          to label %658 unwind label %644

657:                                              ; preds = %646
  store ptr %655, ptr %.1338544, align 8, !tbaa !5
  br label %658

658:                                              ; preds = %656, %657
  br i1 %.not388, label %667, label %659

659:                                              ; preds = %658
  %.pre663 = load ptr, ptr %.1338544, align 8, !tbaa !5
  br i1 %.not404, label %664, label %660

660:                                              ; preds = %659
  %661 = load i32, ptr %22, align 4, !tbaa !21
  %662 = invoke noundef zeroext i1 @_ZN6Assimp13SceneCombiner13FindNameMatchERK8aiStringRSt6vectorINS_11SceneHelperESaIS5_EEj(ptr noundef nonnull align 4 dereferenceable(1028) %.pre663, ptr noundef nonnull align 8 dereferenceable(24) %11, i32 noundef %661)
          to label %663 unwind label %644

663:                                              ; preds = %660
  br i1 %662, label %._crit_edge661, label %667

._crit_edge661:                                   ; preds = %663
  %.pre662 = load ptr, ptr %.1338544, align 8, !tbaa !5
  br label %664

664:                                              ; preds = %._crit_edge661, %659
  %665 = phi ptr [ %.pre662, %._crit_edge661 ], [ %.pre663, %659 ]
  %666 = load i32, ptr %638, align 8, !tbaa !28
  invoke void @_ZN6Assimp12PrefixStringER8aiStringPKcj(ptr noundef nonnull align 4 dereferenceable(1028) %665, ptr noundef nonnull %637, i32 noundef %666)
          to label %667 unwind label %644

667:                                              ; preds = %658, %664, %663
  %indvars.iv.next645 = add nuw nsw i64 %indvars.iv644, 1
  %668 = getelementptr inbounds i8, ptr %.1338544, i64 8
  %669 = call noundef ptr @_ZNK6Assimp11SceneHelperptEv(ptr noundef nonnull align 8 dereferenceable(96) %530)
  %670 = getelementptr inbounds i8, ptr %669, i64 80
  %671 = load i32, ptr %670, align 8, !tbaa !42
  %672 = zext i32 %671 to i64
  %673 = icmp ult i64 %indvars.iv.next645, %672
  br i1 %673, label %646, label %.preheader457, !llvm.loop !77

.preheader456:                                    ; preds = %702, %.preheader457
  %.1332.lcssa = phi ptr [ %.0331567, %.preheader457 ], [ %703, %702 ]
  %674 = call noundef ptr @_ZNK6Assimp11SceneHelperptEv(ptr noundef nonnull align 8 dereferenceable(96) %530)
  %675 = getelementptr inbounds i8, ptr %674, i64 48
  %676 = load i32, ptr %675, align 8, !tbaa !32
  %.not604 = icmp eq i32 %676, 0
  br i1 %.not604, label %._crit_edge563, label %.lr.ph562

.lr.ph562:                                        ; preds = %.preheader456
  %677 = getelementptr inbounds i8, ptr %530, i64 8
  %678 = getelementptr inbounds i8, ptr %530, i64 40
  br label %713

679:                                              ; preds = %699, %695, %691
  %680 = landingpad { ptr, i32 }
          cleanup
  br label %778

681:                                              ; preds = %.lr.ph551, %702
  %indvars.iv647 = phi i64 [ 0, %.lr.ph551 ], [ %indvars.iv.next648, %702 ]
  %.1332549 = phi ptr [ %.0331567, %.lr.ph551 ], [ %703, %702 ]
  %682 = load i32, ptr %22, align 4, !tbaa !21
  %683 = sext i32 %682 to i64
  %684 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %683) #12
  %685 = load i32, ptr %684, align 4, !tbaa !21
  %.not409 = icmp eq i32 %682, %685
  %686 = call noundef ptr @_ZNK6Assimp11SceneHelperptEv(ptr noundef nonnull align 8 dereferenceable(96) %530)
  %687 = getelementptr inbounds i8, ptr %686, i64 104
  %688 = load ptr, ptr %687, align 8, !tbaa !72
  %689 = getelementptr inbounds ptr, ptr %688, i64 %indvars.iv647
  %690 = load ptr, ptr %689, align 8, !tbaa !5
  br i1 %.not409, label %692, label %691

691:                                              ; preds = %681
  invoke void @_ZN6Assimp13SceneCombiner4CopyEPP8aiCameraPKS1_(ptr noundef %.1332549, ptr noundef %690)
          to label %693 unwind label %679

692:                                              ; preds = %681
  store ptr %690, ptr %.1332549, align 8, !tbaa !5
  br label %693

693:                                              ; preds = %691, %692
  br i1 %.not388, label %702, label %694

694:                                              ; preds = %693
  %.pre666 = load ptr, ptr %.1332549, align 8, !tbaa !5
  br i1 %.not404, label %699, label %695

695:                                              ; preds = %694
  %696 = load i32, ptr %22, align 4, !tbaa !21
  %697 = invoke noundef zeroext i1 @_ZN6Assimp13SceneCombiner13FindNameMatchERK8aiStringRSt6vectorINS_11SceneHelperESaIS5_EEj(ptr noundef nonnull align 4 dereferenceable(1028) %.pre666, ptr noundef nonnull align 8 dereferenceable(24) %11, i32 noundef %696)
          to label %698 unwind label %679

698:                                              ; preds = %695
  br i1 %697, label %._crit_edge664, label %702

._crit_edge664:                                   ; preds = %698
  %.pre665 = load ptr, ptr %.1332549, align 8, !tbaa !5
  br label %699

699:                                              ; preds = %._crit_edge664, %694
  %700 = phi ptr [ %.pre665, %._crit_edge664 ], [ %.pre666, %694 ]
  %701 = load i32, ptr %643, align 8, !tbaa !28
  invoke void @_ZN6Assimp12PrefixStringER8aiStringPKcj(ptr noundef nonnull align 4 dereferenceable(1028) %700, ptr noundef nonnull %642, i32 noundef %701)
          to label %702 unwind label %679

702:                                              ; preds = %693, %699, %698
  %indvars.iv.next648 = add nuw nsw i64 %indvars.iv647, 1
  %703 = getelementptr inbounds i8, ptr %.1332549, i64 8
  %704 = call noundef ptr @_ZNK6Assimp11SceneHelperptEv(ptr noundef nonnull align 8 dereferenceable(96) %530)
  %705 = getelementptr inbounds i8, ptr %704, i64 96
  %706 = load i32, ptr %705, align 8, !tbaa !43
  %707 = zext i32 %706 to i64
  %708 = icmp ult i64 %indvars.iv.next648, %707
  br i1 %708, label %681, label %.preheader456, !llvm.loop !78

._crit_edge563:                                   ; preds = %.loopexit455, %.preheader456
  %.1328.lcssa = phi ptr [ %.0327568, %.preheader456 ], [ %772, %.loopexit455 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #12
  %709 = load i32, ptr %22, align 4, !tbaa !21
  %storemerge = add i32 %709, -1
  store i32 %storemerge, ptr %22, align 4, !tbaa !21
  %710 = icmp sgt i32 %storemerge, -1
  br i1 %710, label %528, label %._crit_edge572, !llvm.loop !79

711:                                              ; preds = %731, %727, %723
  %712 = landingpad { ptr, i32 }
          cleanup
  br label %778

713:                                              ; preds = %.lr.ph562, %.loopexit455
  %indvars.iv656 = phi i64 [ 0, %.lr.ph562 ], [ %indvars.iv.next657, %.loopexit455 ]
  %.1328558 = phi ptr [ %.0327568, %.lr.ph562 ], [ %772, %.loopexit455 ]
  %714 = load i32, ptr %22, align 4, !tbaa !21
  %715 = sext i32 %714 to i64
  %716 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %715) #12
  %717 = load i32, ptr %716, align 4, !tbaa !21
  %.not405 = icmp eq i32 %714, %717
  %718 = call noundef ptr @_ZNK6Assimp11SceneHelperptEv(ptr noundef nonnull align 8 dereferenceable(96) %530)
  %719 = getelementptr inbounds i8, ptr %718, i64 56
  %720 = load ptr, ptr %719, align 8, !tbaa !33
  %721 = getelementptr inbounds ptr, ptr %720, i64 %indvars.iv656
  %722 = load ptr, ptr %721, align 8, !tbaa !5
  br i1 %.not405, label %724, label %723

723:                                              ; preds = %713
  invoke void @_ZN6Assimp13SceneCombiner4CopyEPP11aiAnimationPKS1_(ptr noundef %.1328558, ptr noundef %722)
          to label %725 unwind label %711

724:                                              ; preds = %713
  store ptr %722, ptr %.1328558, align 8, !tbaa !5
  br label %725

725:                                              ; preds = %723, %724
  br i1 %.not388, label %.loopexit455, label %726

726:                                              ; preds = %725
  %.pre669 = load ptr, ptr %.1328558, align 8, !tbaa !5
  br i1 %.not404, label %731, label %727

727:                                              ; preds = %726
  %728 = load i32, ptr %22, align 4, !tbaa !21
  %729 = invoke noundef zeroext i1 @_ZN6Assimp13SceneCombiner13FindNameMatchERK8aiStringRSt6vectorINS_11SceneHelperESaIS5_EEj(ptr noundef nonnull align 4 dereferenceable(1028) %.pre669, ptr noundef nonnull align 8 dereferenceable(24) %11, i32 noundef %728)
          to label %730 unwind label %711

730:                                              ; preds = %727
  br i1 %729, label %._crit_edge667, label %.loopexit455

._crit_edge667:                                   ; preds = %730
  %.pre668 = load ptr, ptr %.1328558, align 8, !tbaa !5
  br label %731

731:                                              ; preds = %._crit_edge667, %726
  %732 = phi ptr [ %.pre668, %._crit_edge667 ], [ %.pre669, %726 ]
  %733 = load i32, ptr %678, align 8, !tbaa !28
  invoke void @_ZN6Assimp12PrefixStringER8aiStringPKcj(ptr noundef nonnull align 4 dereferenceable(1028) %732, ptr noundef nonnull %677, i32 noundef %733)
          to label %.preheader454 unwind label %711

.preheader454:                                    ; preds = %731
  %734 = load ptr, ptr %.1328558, align 8, !tbaa !5
  %735 = getelementptr inbounds i8, ptr %734, i64 1048
  %736 = load i32, ptr %735, align 8, !tbaa !80
  %.not605 = icmp eq i32 %736, 0
  br i1 %.not605, label %.loopexit455, label %.lr.ph554

.lr.ph554:                                        ; preds = %.preheader454
  br i1 %.not404, label %.lr.ph554.split.us, label %.lr.ph554.split

.lr.ph554.split.us:                               ; preds = %.lr.ph554, %743
  %737 = phi ptr [ %744, %743 ], [ %734, %.lr.ph554 ]
  %indvars.iv653 = phi i64 [ %indvars.iv.next654, %743 ], [ 0, %.lr.ph554 ]
  %738 = getelementptr inbounds i8, ptr %737, i64 1056
  %739 = load ptr, ptr %738, align 8, !tbaa !81
  %740 = getelementptr inbounds ptr, ptr %739, i64 %indvars.iv653
  %741 = load ptr, ptr %740, align 8, !tbaa !5
  %742 = load i32, ptr %678, align 8, !tbaa !28
  invoke void @_ZN6Assimp12PrefixStringER8aiStringPKcj(ptr noundef nonnull align 4 dereferenceable(1028) %741, ptr noundef nonnull %677, i32 noundef %742)
          to label %743 unwind label %.split556.us

743:                                              ; preds = %.lr.ph554.split.us
  %indvars.iv.next654 = add nuw nsw i64 %indvars.iv653, 1
  %744 = load ptr, ptr %.1328558, align 8, !tbaa !5
  %745 = getelementptr inbounds i8, ptr %744, i64 1048
  %746 = load i32, ptr %745, align 8, !tbaa !80
  %747 = zext i32 %746 to i64
  %748 = icmp ult i64 %indvars.iv.next654, %747
  br i1 %748, label %.lr.ph554.split.us, label %.loopexit455, !llvm.loop !82

.split556.us:                                     ; preds = %.lr.ph554.split.us
  %749 = landingpad { ptr, i32 }
          cleanup
  br label %778

.lr.ph554.split:                                  ; preds = %.lr.ph554, %766
  %indvars.iv650 = phi i64 [ %indvars.iv.next651, %766 ], [ 0, %.lr.ph554 ]
  %750 = phi ptr [ %767, %766 ], [ %734, %.lr.ph554 ]
  %751 = getelementptr inbounds i8, ptr %750, i64 1056
  %752 = load ptr, ptr %751, align 8, !tbaa !81
  %753 = getelementptr inbounds ptr, ptr %752, i64 %indvars.iv650
  %754 = load ptr, ptr %753, align 8, !tbaa !5
  %755 = load i32, ptr %22, align 4, !tbaa !21
  %756 = invoke noundef zeroext i1 @_ZN6Assimp13SceneCombiner13FindNameMatchERK8aiStringRSt6vectorINS_11SceneHelperESaIS5_EEj(ptr noundef nonnull align 4 dereferenceable(1028) %754, ptr noundef nonnull align 8 dereferenceable(24) %11, i32 noundef %755)
          to label %757 unwind label %.split556

757:                                              ; preds = %.lr.ph554.split
  br i1 %756, label %759, label %766

.split556:                                        ; preds = %759, %.lr.ph554.split
  %758 = landingpad { ptr, i32 }
          cleanup
  br label %778

759:                                              ; preds = %757
  %760 = load ptr, ptr %.1328558, align 8, !tbaa !5
  %761 = getelementptr inbounds i8, ptr %760, i64 1056
  %762 = load ptr, ptr %761, align 8, !tbaa !81
  %763 = getelementptr inbounds ptr, ptr %762, i64 %indvars.iv650
  %764 = load ptr, ptr %763, align 8, !tbaa !5
  %765 = load i32, ptr %678, align 8, !tbaa !28
  invoke void @_ZN6Assimp12PrefixStringER8aiStringPKcj(ptr noundef nonnull align 4 dereferenceable(1028) %764, ptr noundef nonnull %677, i32 noundef %765)
          to label %766 unwind label %.split556

766:                                              ; preds = %759, %757
  %indvars.iv.next651 = add nuw nsw i64 %indvars.iv650, 1
  %767 = load ptr, ptr %.1328558, align 8, !tbaa !5
  %768 = getelementptr inbounds i8, ptr %767, i64 1048
  %769 = load i32, ptr %768, align 8, !tbaa !80
  %770 = zext i32 %769 to i64
  %771 = icmp ult i64 %indvars.iv.next651, %770
  br i1 %771, label %.lr.ph554.split, label %.loopexit455, !llvm.loop !82

.loopexit455:                                     ; preds = %766, %743, %.preheader454, %725, %730
  %indvars.iv.next657 = add nuw nsw i64 %indvars.iv656, 1
  %772 = getelementptr inbounds i8, ptr %.1328558, i64 8
  %773 = call noundef ptr @_ZNK6Assimp11SceneHelperptEv(ptr noundef nonnull align 8 dereferenceable(96) %530)
  %774 = getelementptr inbounds i8, ptr %773, i64 48
  %775 = load i32, ptr %774, align 8, !tbaa !32
  %776 = zext i32 %775 to i64
  %777 = icmp ult i64 %indvars.iv.next657, %776
  br i1 %777, label %713, label %._crit_edge563, !llvm.loop !83

778:                                              ; preds = %.split556, %.split556.us, %.split, %.split.us, %711, %679, %644, %563
  %.pn413 = phi { ptr, i32 } [ %645, %644 ], [ %680, %679 ], [ %564, %563 ], [ %712, %711 ], [ %624, %.split ], [ %612, %.split.us ], [ %758, %.split556 ], [ %749, %.split556.us ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #12
  br label %885

779:                                              ; preds = %._crit_edge572
  %780 = getelementptr inbounds i8, ptr %519, i64 8
  %781 = load ptr, ptr %780, align 8, !tbaa !29
  %782 = getelementptr inbounds i8, ptr %70, i64 8
  store ptr %781, ptr %782, align 8, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #12
  %783 = call ptr @_ZNSt6vectorIN6Assimp18NodeAttachmentInfoESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %21) #12
  store ptr %783, ptr %24, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #12
  %784 = call ptr @_ZNSt6vectorIN6Assimp18NodeAttachmentInfoESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %21) #12
  store ptr %784, ptr %25, align 8
  %785 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN6Assimp18NodeAttachmentInfoESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull align 8 dereferenceable(8) %25) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #12
  br i1 %785, label %.lr.ph577, label %._crit_edge578

.lr.ph577:                                        ; preds = %779
  %786 = and i32 %3, 8
  %.not398 = icmp eq i32 %786, 0
  br label %788

._crit_edge578:                                   ; preds = %830, %779
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #12
  %787 = call noundef i64 @_ZNKSt6vectorIN6Assimp11SceneHelperESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %11) #12
  %.not607 = icmp eq i64 %787, 0
  br i1 %.not607, label %._crit_edge582, label %.lr.ph581

788:                                              ; preds = %.lr.ph577, %830
  %789 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN6Assimp18NodeAttachmentInfoESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %24) #12
  %790 = getelementptr inbounds i8, ptr %789, i64 16
  %791 = load i8, ptr %790, align 8, !tbaa !84, !range !87, !noundef !88
  %792 = trunc nuw i8 %791 to i1
  br i1 %792, label %830, label %793

793:                                              ; preds = %788
  br i1 %.not398, label %.loopexit, label %.preheader

.preheader:                                       ; preds = %793
  %794 = call noundef i64 @_ZNKSt6vectorIN6Assimp11SceneHelperESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %11) #12
  %.not606 = icmp eq i64 %794, 0
  br i1 %.not606, label %.loopexit, label %.lr.ph574

.lr.ph574:                                        ; preds = %.preheader, %809
  %795 = phi i64 [ %811, %809 ], [ 0, %.preheader ]
  %.0298573 = phi i32 [ %810, %809 ], [ 0, %.preheader ]
  %796 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN6Assimp18NodeAttachmentInfoESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %24) #12
  %797 = getelementptr inbounds i8, ptr %796, i64 24
  %798 = load i64, ptr %797, align 8, !tbaa !89
  %.not399 = icmp eq i64 %798, %795
  br i1 %.not399, label %809, label %799

799:                                              ; preds = %.lr.ph574
  %800 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN6Assimp11SceneHelperESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %11, i64 noundef %795) #12
  %801 = load ptr, ptr %800, align 8, !tbaa !9
  invoke void @_ZN6Assimp13SceneCombiner13AttachToGraphEP7aiSceneRSt6vectorINS_18NodeAttachmentInfoESaIS4_EE(ptr noundef %801, ptr noundef nonnull align 8 dereferenceable(24) %21)
          to label %802 unwind label %807

802:                                              ; preds = %799
  %803 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN6Assimp18NodeAttachmentInfoESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %24) #12
  %804 = getelementptr inbounds i8, ptr %803, i64 16
  %805 = load i8, ptr %804, align 8, !tbaa !84, !range !87, !noundef !88
  %806 = trunc nuw i8 %805 to i1
  br i1 %806, label %.loopexit, label %809

807:                                              ; preds = %799
  %808 = landingpad { ptr, i32 }
          cleanup
  br label %834

809:                                              ; preds = %.lr.ph574, %802
  %810 = add i32 %.0298573, 1
  %811 = zext i32 %810 to i64
  %812 = call noundef i64 @_ZNKSt6vectorIN6Assimp11SceneHelperESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %11) #12
  %813 = icmp ugt i64 %812, %811
  br i1 %813, label %.lr.ph574, label %.loopexit, !llvm.loop !90

.loopexit:                                        ; preds = %802, %809, %.preheader, %793
  %814 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN6Assimp18NodeAttachmentInfoESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %24) #12
  %815 = getelementptr inbounds i8, ptr %814, i64 16
  %816 = load i8, ptr %815, align 8, !tbaa !84, !range !87, !noundef !88
  %817 = trunc nuw i8 %816 to i1
  br i1 %817, label %830, label %818

818:                                              ; preds = %.loopexit
  %819 = invoke noundef ptr @_ZN6Assimp13DefaultLogger3getEv()
          to label %820 unwind label %828

820:                                              ; preds = %818
  %821 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN6Assimp18NodeAttachmentInfoESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %24) #12
  %822 = load ptr, ptr %821, align 8, !tbaa !91
  %823 = getelementptr inbounds i8, ptr %822, i64 4
  %824 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN6Assimp18NodeAttachmentInfoESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %24) #12
  %825 = getelementptr inbounds i8, ptr %824, i64 8
  %826 = load ptr, ptr %825, align 8, !tbaa !92
  %827 = getelementptr inbounds i8, ptr %826, i64 4
  invoke void @_ZN6Assimp6Logger5errorIJRA45_KcRA1024_cRA2_S2_S6_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(12) %819, ptr noundef nonnull align 1 dereferenceable(45) @.str.7, ptr noundef nonnull align 1 dereferenceable(1024) %823, ptr noundef nonnull align 1 dereferenceable(2) @.str.8, ptr noundef nonnull align 1 dereferenceable(1024) %827)
          to label %830 unwind label %828

828:                                              ; preds = %820, %818
  %829 = landingpad { ptr, i32 }
          cleanup
  br label %834

830:                                              ; preds = %788, %820, %.loopexit
  %831 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN6Assimp18NodeAttachmentInfoESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %24) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #12
  %832 = call ptr @_ZNSt6vectorIN6Assimp18NodeAttachmentInfoESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %21) #12
  store ptr %832, ptr %25, align 8
  %833 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN6Assimp18NodeAttachmentInfoESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull align 8 dereferenceable(8) %25) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #12
  br i1 %833, label %788, label %._crit_edge578, !llvm.loop !93

834:                                              ; preds = %828, %807
  %.pn = phi { ptr, i32 } [ %829, %828 ], [ %808, %807 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #12
  br label %885

._crit_edge582:                                   ; preds = %873, %._crit_edge578
  %835 = load i32, ptr %411, align 8, !tbaa !41
  %.not395 = icmp eq i32 %835, 0
  br i1 %.not395, label %880, label %878

.lr.ph581:                                        ; preds = %._crit_edge578, %873
  %836 = phi i64 [ %875, %873 ], [ 0, %._crit_edge578 ]
  %.0297579 = phi i32 [ %874, %873 ], [ 0, %._crit_edge578 ]
  %837 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %836) #12
  %838 = load i32, ptr %837, align 4, !tbaa !21
  %.not397 = icmp eq i32 %.0297579, %838
  br i1 %.not397, label %839, label %873

839:                                              ; preds = %.lr.ph581
  %840 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNSt6vectorIN6Assimp11SceneHelperESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %11, i64 noundef %836) #12
  %841 = load ptr, ptr %840, align 8, !tbaa !9
  %842 = getelementptr inbounds i8, ptr %841, i64 24
  %843 = load ptr, ptr %842, align 8, !tbaa !62
  %844 = icmp eq ptr %843, null
  br i1 %844, label %846, label %845

845:                                              ; preds = %839
  call void @_ZdaPv(ptr noundef nonnull %843) #13
  br label %846

846:                                              ; preds = %845, %839
  store ptr null, ptr %842, align 8, !tbaa !62
  %847 = getelementptr inbounds i8, ptr %841, i64 104
  %848 = load ptr, ptr %847, align 8, !tbaa !72
  %849 = icmp eq ptr %848, null
  br i1 %849, label %851, label %850

850:                                              ; preds = %846
  call void @_ZdaPv(ptr noundef nonnull %848) #13
  br label %851

851:                                              ; preds = %850, %846
  store ptr null, ptr %847, align 8, !tbaa !72
  %852 = getelementptr inbounds i8, ptr %841, i64 88
  %853 = load ptr, ptr %852, align 8, !tbaa !71
  %854 = icmp eq ptr %853, null
  br i1 %854, label %856, label %855

855:                                              ; preds = %851
  call void @_ZdaPv(ptr noundef nonnull %853) #13
  br label %856

856:                                              ; preds = %855, %851
  store ptr null, ptr %852, align 8, !tbaa !71
  %857 = getelementptr inbounds i8, ptr %841, i64 40
  %858 = load ptr, ptr %857, align 8, !tbaa !49
  %859 = icmp eq ptr %858, null
  br i1 %859, label %861, label %860

860:                                              ; preds = %856
  call void @_ZdaPv(ptr noundef nonnull %858) #13
  br label %861

861:                                              ; preds = %860, %856
  store ptr null, ptr %857, align 8, !tbaa !49
  %862 = getelementptr inbounds i8, ptr %841, i64 56
  %863 = load ptr, ptr %862, align 8, !tbaa !33
  %864 = icmp eq ptr %863, null
  br i1 %864, label %866, label %865

865:                                              ; preds = %861
  call void @_ZdaPv(ptr noundef nonnull %863) #13
  br label %866

866:                                              ; preds = %865, %861
  store ptr null, ptr %862, align 8, !tbaa !33
  %867 = getelementptr inbounds i8, ptr %841, i64 72
  %868 = load ptr, ptr %867, align 8, !tbaa !46
  %869 = icmp eq ptr %868, null
  br i1 %869, label %871, label %870

870:                                              ; preds = %866
  call void @_ZdaPv(ptr noundef nonnull %868) #13
  br label %871

871:                                              ; preds = %866, %870
  store ptr null, ptr %867, align 8, !tbaa !46
  %872 = getelementptr inbounds i8, ptr %841, i64 8
  store ptr null, ptr %872, align 8, !tbaa !29
  call void @_ZN7aiSceneD1Ev(ptr noundef nonnull align 8 dereferenceable(1168) %841) #12
  call void @_ZdlPvm(ptr noundef nonnull %841, i64 noundef 1168) #13
  br label %873

873:                                              ; preds = %871, %.lr.ph581
  %874 = add i32 %.0297579, 1
  %875 = zext i32 %874 to i64
  %876 = call noundef i64 @_ZNKSt6vectorIN6Assimp11SceneHelperESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %11) #12
  %877 = icmp ugt i64 %876, %875
  br i1 %877, label %.lr.ph581, label %._crit_edge582, !llvm.loop !94

878:                                              ; preds = %._crit_edge582
  %879 = load i32, ptr %289, align 8, !tbaa !40
  %.not396 = icmp eq i32 %879, 0
  br i1 %.not396, label %880, label %883

880:                                              ; preds = %878, %._crit_edge582
  %881 = load i32, ptr %70, align 8, !tbaa !44
  %882 = or i32 %881, 1
  store i32 %882, ptr %70, align 8, !tbaa !44
  br label %883

883:                                              ; preds = %880, %878
  call void @_ZNSt6vectorIN6Assimp18NodeAttachmentInfoESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %21) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %21) #12
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %17) #12
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %14) #12
  call void @_ZNSt6vectorIN6Assimp11SceneHelperESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11) #12
  br label %884

884:                                              ; preds = %60, %59, %57, %883, %._crit_edge588
  ret void

885:                                              ; preds = %522, %526, %778, %834, %524, %520
  %.pn413.pn.pn.pn.pn = phi { ptr, i32 } [ %521, %520 ], [ %523, %522 ], [ %525, %524 ], [ %.pn413, %778 ], [ %.pn, %834 ], [ %527, %526 ]
  call void @_ZNSt6vectorIN6Assimp18NodeAttachmentInfoESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %21) #12
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %21) #12
  br label %886

886:                                              ; preds = %885, %271, %237, %323, %396, %382, %302, %461, %421, %143, %164
  %.pn441.pn = phi { ptr, i32 } [ %165, %164 ], [ %144, %143 ], [ %.pn413.pn.pn.pn.pn, %885 ], [ %272, %271 ], [ %238, %237 ], [ %303, %302 ], [ %324, %323 ], [ %397, %396 ], [ %383, %382 ], [ %462, %461 ], [ %422, %421 ]
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #12
  br label %887

887:                                              ; preds = %886, %98
  %.pn441.pn.pn = phi { ptr, i32 } [ %.pn441.pn, %886 ], [ %99, %98 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %17) #12
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #12
  br label %888

888:                                              ; preds = %887, %96
  %.pn441.pn.pn.pn = phi { ptr, i32 } [ %.pn441.pn.pn, %887 ], [ %97, %96 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %14) #12
  call void @_ZNSt6vectorIN6Assimp11SceneHelperESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #12
  br label %889

889:                                              ; preds = %888, %77
  %.pn441.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn441.pn.pn.pn, %888 ], [ %78, %77 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11) #12
  br label %890

890:                                              ; preds = %889, %67, %52
  %.pn450.pn = phi { ptr, i32 } [ %.pn450, %52 ], [ %.pn441.pn.pn.pn.pn, %889 ], [ %68, %67 ]
  resume { ptr, i32 } %.pn450.pn
}

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

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

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

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

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

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

; Function Attrs: nobuiltin nounwind
declare void @_ZdaPv(ptr noundef) local_unnamed_addr #8

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

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

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i8 } @_ZNSt13unordered_setIP7aiSceneSt4hashIS1_ESt8equal_toIS1_ESaIS1_EE6insertERKS1_(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #0 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIN6Assimp11SceneHelperESaIS1_EEC2EmRKS2_(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef, ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #0 align 2

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIjSaIjEEC2EmRKS0_(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef, ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #0 align 2

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

; Function Attrs: nofree nounwind
declare noundef i32 @snprintf(ptr noalias nocapture noundef writeonly, i64 noundef, ptr nocapture noundef readonly, ...) local_unnamed_addr #10

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Assimp13SceneCombiner4CopyEPP9aiTexturePKS1_(ptr noundef, ptr noundef) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Assimp13SceneCombiner4CopyEPP10aiMaterialPKS1_(ptr noundef, ptr noundef) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: read)
declare i32 @strncmp(ptr nocapture noundef, ptr nocapture noundef, i64 noundef) local_unnamed_addr #11

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZN6Assimp9strtoul10EPKcPS1_(ptr noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i32 @_ZN6Assimp13ASSIMP_itoa10EPcji(ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #3

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: read)
declare i32 @strcmp(ptr nocapture noundef, ptr nocapture noundef) local_unnamed_addr #11

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Assimp13SceneCombiner4CopyEPP6aiMeshPKS1_(ptr noundef, ptr noundef) local_unnamed_addr #0 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Assimp13SceneCombiner4CopyEPP6aiNodePKS1_(ptr noundef, ptr noundef) local_unnamed_addr #0 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Assimp13SceneCombiner4CopyEPP7aiLightPKS1_(ptr noundef, ptr noundef) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Assimp13SceneCombiner4CopyEPP8aiCameraPKS1_(ptr noundef, ptr noundef) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Assimp13SceneCombiner4CopyEPP11aiAnimationPKS1_(ptr noundef, ptr noundef) local_unnamed_addr #0 align 2

declare noundef ptr @_ZN6Assimp13DefaultLogger3getEv() local_unnamed_addr #6

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Assimp6Logger5errorIJRA45_KcRA1024_cRA2_S2_S6_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(12), ptr noundef nonnull align 1 dereferenceable(45), ptr noundef nonnull align 1 dereferenceable(1024), ptr noundef nonnull align 1 dereferenceable(2), ptr noundef nonnull align 1 dereferenceable(1024)) local_unnamed_addr #0 align 2

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

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

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

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

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

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

!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, !6, i64 0}
!10 = !{!"_ZTSN6Assimp11SceneHelperE", !6, i64 0, !7, i64 8, !11, i64 40, !12, i64 48}
!11 = !{!"int", !7, i64 0}
!12 = !{!"_ZTSSt3setIjSt4lessIjESaIjEE", !13, i64 0}
!13 = !{!"_ZTSSt8_Rb_treeIjjSt9_IdentityIjESt4lessIjESaIjEE", !14, i64 0}
!14 = !{!"_ZTSNSt8_Rb_treeIjjSt9_IdentityIjESt4lessIjESaIjEE13_Rb_tree_implIS3_Lb1EEE", !15, i64 0, !17, i64 8}
!15 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIjEE", !16, i64 0}
!16 = !{!"_ZTSSt4lessIjE"}
!17 = !{!"_ZTSSt15_Rb_tree_header", !18, i64 0, !20, i64 32}
!18 = !{!"_ZTSSt18_Rb_tree_node_base", !19, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!19 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!20 = !{!"long", !7, i64 0}
!21 = !{!11, !11, i64 0}
!22 = !{!23, !6, i64 0}
!23 = !{!"_ZTSN6Assimp14AttachmentInfoE", !6, i64 0, !6, i64 8}
!24 = distinct !{!24, !25}
!25 = !{!"llvm.loop.mustprogress"}
!26 = distinct !{!26, !25}
!27 = distinct !{!27, !25}
!28 = !{!10, !11, i64 40}
!29 = !{!30, !6, i64 8}
!30 = !{!"_ZTS7aiScene", !11, i64 0, !6, i64 8, !11, i64 16, !6, i64 24, !11, i64 32, !6, i64 40, !11, i64 48, !6, i64 56, !11, i64 64, !6, i64 72, !11, i64 80, !6, i64 88, !11, i64 96, !6, i64 104, !6, i64 112, !31, i64 120, !11, i64 1148, !6, i64 1152, !6, i64 1160}
!31 = !{!"_ZTS8aiString", !11, i64 0, !7, i64 4}
!32 = !{!30, !11, i64 48}
!33 = !{!30, !6, i64 56}
!34 = !{!35, !11, i64 0}
!35 = !{!"_ZTS11aiAnimation", !31, i64 0, !36, i64 1032, !36, i64 1040, !11, i64 1048, !6, i64 1056, !11, i64 1064, !6, i64 1072, !11, i64 1080, !6, i64 1088}
!36 = !{!"double", !7, i64 0}
!37 = distinct !{!37, !25}
!38 = distinct !{!38, !25}
!39 = !{!30, !11, i64 64}
!40 = !{!30, !11, i64 32}
!41 = !{!30, !11, i64 16}
!42 = !{!30, !11, i64 80}
!43 = !{!30, !11, i64 96}
!44 = !{!30, !11, i64 0}
!45 = distinct !{!45, !25}
!46 = !{!30, !6, i64 72}
!47 = distinct !{!47, !25}
!48 = distinct !{!48, !25}
!49 = !{!30, !6, i64 40}
!50 = distinct !{!50, !25}
!51 = !{!52, !11, i64 8}
!52 = !{!"_ZTS10aiMaterial", !6, i64 0, !11, i64 8, !11, i64 12}
!53 = !{!52, !6, i64 0}
!54 = !{!55, !6, i64 1048}
!55 = !{!"_ZTS18aiMaterialProperty", !31, i64 0, !11, i64 1028, !11, i64 1032, !11, i64 1036, !56, i64 1040, !6, i64 1048}
!56 = !{!"_ZTS18aiPropertyTypeInfo", !7, i64 0}
!57 = !{!7, !7, i64 0}
!58 = !{!31, !11, i64 0}
!59 = !{!55, !11, i64 1036}
!60 = distinct !{!60, !25}
!61 = distinct !{!61, !25}
!62 = !{!30, !6, i64 24}
!63 = !{!64, !11, i64 232}
!64 = !{!"_ZTS6aiMesh", !11, i64 0, !11, i64 4, !11, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !7, i64 48, !7, i64 112, !7, i64 176, !6, i64 208, !11, i64 216, !6, i64 224, !11, i64 232, !31, i64 236, !11, i64 1264, !6, i64 1272, !65, i64 1280, !66, i64 1284, !6, i64 1312}
!65 = !{!"_ZTS16aiMorphingMethod", !7, i64 0}
!66 = !{!"_ZTS6aiAABB", !67, i64 0, !67, i64 12}
!67 = !{!"_ZTS10aiVector3tIfE", !68, i64 0, !68, i64 4, !68, i64 8}
!68 = !{!"float", !7, i64 0}
!69 = distinct !{!69, !25}
!70 = distinct !{!70, !25}
!71 = !{!30, !6, i64 88}
!72 = !{!30, !6, i64 104}
!73 = !{!64, !11, i64 216}
!74 = !{!64, !6, i64 224}
!75 = distinct !{!75, !25}
!76 = distinct !{!76, !25}
!77 = distinct !{!77, !25}
!78 = distinct !{!78, !25}
!79 = distinct !{!79, !25}
!80 = !{!35, !11, i64 1048}
!81 = !{!35, !6, i64 1056}
!82 = distinct !{!82, !25}
!83 = distinct !{!83, !25}
!84 = !{!85, !86, i64 16}
!85 = !{!"_ZTSN6Assimp18NodeAttachmentInfoE", !6, i64 0, !6, i64 8, !86, i64 16, !20, i64 24}
!86 = !{!"bool", !7, i64 0}
!87 = !{i8 0, i8 2}
!88 = !{}
!89 = !{!85, !20, i64 24}
!90 = distinct !{!90, !25}
!91 = !{!85, !6, i64 0}
!92 = !{!85, !6, i64 8}
!93 = distinct !{!93, !25}
!94 = distinct !{!94, !25}


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