; LLVM IR from Overload-Technologies/Overload :: Dependencies/assimp/code/PostProcessing (PretransformVertices)

; 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.aiMatrix4x4t = type { float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<aiMesh *, std::allocator<aiMesh *>>::_Vector_impl" }
%"struct.std::_Vector_base<aiMesh *, std::allocator<aiMesh *>>::_Vector_impl" = type { %"struct.std::_Vector_base<aiMesh *, std::allocator<aiMesh *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<aiMesh *, std::allocator<aiMesh *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::__cxx11::list" = type { %"class.std::__cxx11::_List_base" }
%"class.std::__cxx11::_List_base" = type { %"struct.std::__cxx11::_List_base<unsigned int, std::allocator<unsigned int>>::_List_impl" }
%"struct.std::__cxx11::_List_base<unsigned int, std::allocator<unsigned int>>::_List_impl" = type { %"struct.std::__detail::_List_node_header" }
%"struct.std::__detail::_List_node_header" = type { %"struct.std::__detail::_List_node_base", i64 }
%"struct.std::__detail::_List_node_base" = type { ptr, ptr }
%"class.std::vector.3" = type { %"struct.std::_Vector_base.4" }
%"struct.std::_Vector_base.4" = 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.5" = type { i8 }
%"struct.std::_List_const_iterator" = type { ptr }
%"struct.std::_List_iterator" = type { ptr }
%class.aiVector3t = type { float, float, float }
%class.aiMatrix3x3t = type { float, float, float, float, float, float, float, float, float }
%"struct.Assimp::MinMaxChooser" = type { i8 }
%struct.aiScene = type { i32, ptr, i32, ptr, i32, ptr, i32, ptr, i32, ptr, i32, ptr, i32, ptr, ptr, %struct.aiString, i32, ptr, ptr }
%struct.aiString = type { i32, [1024 x i8] }
%"class.Assimp::PretransformVertices" = type <{ %"class.Assimp::BaseProcess", i8, i8, i8, i8, %class.aiMatrix4x4t, i8, [3 x i8] }>
%"class.Assimp::BaseProcess" = type { ptr, ptr, ptr }
%struct.aiNode = type { %struct.aiString, %class.aiMatrix4x4t, ptr, i32, ptr, i32, ptr, ptr }
%struct.aiMesh = type { i32, i32, i32, ptr, ptr, ptr, ptr, [8 x ptr], [8 x ptr], [8 x i32], ptr, i32, ptr, i32, %struct.aiString, i32, ptr, i32, %struct.aiAABB, ptr }
%struct.aiAABB = type { %class.aiVector3t, %class.aiVector3t }
%struct.aiFace = type { i32, ptr }
%class.aiColor4t = type { float, float, float, float }
%struct.aiCamera = type { %struct.aiString, %class.aiVector3t, %class.aiVector3t, %class.aiVector3t, 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 }

@.str.6 = external hidden unnamed_addr constant [129 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [78 x i8], align 1
@_ZTI17DeadlyImportError = external dso_local constant { ptr, ptr, ptr }, align 8
@.str.10 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [2 x i8], align 1

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZNK6Assimp20PretransformVertices10CountNodesEPK6aiNode(ptr noundef nonnull align 8 dereferenceable(93), ptr noundef) #2 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK6Assimp20PretransformVertices11CollectDataEPK7aiScenePK6aiNodejjP6aiMeshPjS9_(ptr noundef nonnull align 8 dereferenceable(93), ptr noundef, ptr noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef) #3 align 2

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZNK12aiMatrix4x4tIfEmlERKS0_(ptr dead_on_unwind noalias writable sret(%class.aiMatrix4x4t) align 4, ptr noundef nonnull align 4 dereferenceable(64), ptr noundef nonnull align 4 dereferenceable(64)) #9 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK6Assimp20PretransformVertices14ApplyTransformEP6aiMeshRK12aiMatrix4x4tIfE(ptr noundef nonnull align 8 dereferenceable(93), ptr noundef, ptr noundef nonnull align 4 dereferenceable(64)) #3 align 2

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

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

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

declare noundef ptr @_ZN6Assimp13DefaultLogger3getEv() #4

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN6Assimp20PretransformVertices7ExecuteEP7aiScene(ptr noundef nonnull align 8 dereferenceable(93) %0, ptr noundef %1) unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca i32, align 4
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca %class.aiMatrix4x4t, align 4
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca ptr, align 8
  %12 = alloca i32, align 4
  %13 = alloca %"class.std::vector", align 8
  %14 = alloca ptr, align 8
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca %"class.std::__cxx11::list", align 8
  %18 = alloca %"class.std::vector.3", align 8
  %19 = alloca i32, align 4
  %20 = alloca %"class.std::allocator.5", align 1
  %21 = alloca i32, align 4
  %22 = alloca %"struct.std::_List_const_iterator", align 8
  %23 = alloca %"struct.std::_List_iterator", align 8
  %24 = alloca %"struct.std::_List_const_iterator", align 8
  %25 = alloca %"struct.std::_List_iterator", align 8
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca ptr, align 8
  %29 = alloca ptr, align 8
  %30 = alloca [2 x i32], align 4
  %31 = alloca i32, align 4
  %32 = alloca ptr, align 8
  %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 ptr, align 8
  %39 = alloca %class.aiVector3t, align 4
  %40 = alloca { <2 x float>, float }, align 8
  %41 = alloca %class.aiVector3t, align 4
  %42 = alloca { <2 x float>, float }, align 8
  %43 = alloca %class.aiVector3t, align 4
  %44 = alloca %class.aiMatrix3x3t, align 4
  %45 = alloca { <2 x float>, float }, align 8
  %46 = alloca i32, align 4
  %47 = alloca ptr, align 8
  %48 = alloca ptr, align 8
  %49 = alloca %class.aiVector3t, align 4
  %50 = alloca { <2 x float>, float }, align 8
  %51 = alloca %class.aiVector3t, align 4
  %52 = alloca %class.aiMatrix3x3t, align 4
  %53 = alloca { <2 x float>, float }, align 8
  %54 = alloca %class.aiVector3t, align 4
  %55 = alloca %class.aiMatrix3x3t, align 4
  %56 = alloca { <2 x float>, float }, align 8
  %57 = alloca ptr, align 8
  %58 = alloca ptr, align 8
  %59 = alloca i32, align 4
  %60 = alloca ptr, align 8
  %61 = alloca i32, align 4
  %62 = alloca ptr, align 8
  %63 = alloca i32, align 4
  %64 = alloca ptr, align 8
  %65 = alloca %class.aiVector3t, align 4
  %66 = alloca %class.aiVector3t, align 4
  %67 = alloca %"struct.Assimp::MinMaxChooser", align 1
  %68 = alloca i32, align 4
  %69 = alloca ptr, align 8
  %70 = alloca i32, align 4
  %71 = alloca %class.aiVector3t, align 4
  %72 = alloca { <2 x float>, float }, align 8
  %73 = alloca %class.aiVector3t, align 4
  %74 = alloca { <2 x float>, float }, align 8
  %75 = alloca %class.aiVector3t, align 4
  %76 = alloca { <2 x float>, float }, align 8
  %77 = alloca float, align 4
  %78 = alloca %class.aiVector3t, align 4
  %79 = alloca %class.aiVector3t, align 4
  %80 = alloca { <2 x float>, float }, align 8
  %81 = alloca { <2 x float>, float }, align 8
  %82 = alloca i32, align 4
  %83 = alloca ptr, align 8
  %84 = alloca i32, align 4
  %85 = alloca %class.aiVector3t, align 4
  %86 = alloca %class.aiVector3t, align 4
  %87 = alloca { <2 x float>, float }, align 8
  %88 = alloca { <2 x float>, float }, align 8
  %89 = alloca i32, align 4
  store ptr %0, ptr %3, align 8, !tbaa !5
  store ptr %1, ptr %4, align 8, !tbaa !5
  %90 = load ptr, ptr %3, align 8
  %91 = call noundef ptr @_ZN6Assimp13DefaultLogger3getEv()
  call void @_ZN6Assimp6Logger5debugEPKc(ptr noundef nonnull align 8 dereferenceable(12) %91, ptr noundef @.str.8)
  %92 = load ptr, ptr %4, align 8, !tbaa !5
  %93 = getelementptr inbounds %struct.aiScene, ptr %92, i32 0, i32 2
  %94 = load i32, ptr %93, align 8, !tbaa !9
  %95 = icmp ne i32 %94, 0
  br i1 %95, label %97, label %96

96:                                               ; preds = %2
  br label %1272

97:                                               ; preds = %2
  call void @llvm.lifetime.start.p0(i64 4, ptr %5) #14
  %98 = load ptr, ptr %4, align 8, !tbaa !5
  %99 = getelementptr inbounds %struct.aiScene, ptr %98, i32 0, i32 2
  %100 = load i32, ptr %99, align 8, !tbaa !9
  store i32 %100, ptr %5, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #14
  %101 = load ptr, ptr %4, align 8, !tbaa !5
  %102 = getelementptr inbounds %struct.aiScene, ptr %101, i32 0, i32 6
  %103 = load i32, ptr %102, align 8, !tbaa !14
  store i32 %103, ptr %6, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #14
  %104 = load ptr, ptr %4, align 8, !tbaa !5
  %105 = getelementptr inbounds %struct.aiScene, ptr %104, i32 0, i32 1
  %106 = load ptr, ptr %105, align 8, !tbaa !15
  %107 = call noundef i32 @_ZNK6Assimp20PretransformVertices10CountNodesEPK6aiNode(ptr noundef nonnull align 8 dereferenceable(93) %90, ptr noundef %106)
  store i32 %107, ptr %7, align 4, !tbaa !13
  %108 = getelementptr inbounds %"class.Assimp::PretransformVertices", ptr %90, i32 0, i32 3
  %109 = load i8, ptr %108, align 2, !tbaa !16, !range !22, !noundef !23
  %110 = trunc i8 %109 to i1
  br i1 %110, label %111, label %121

111:                                              ; preds = %97
  call void @llvm.lifetime.start.p0(i64 64, ptr %8) #14
  %112 = getelementptr inbounds %"class.Assimp::PretransformVertices", ptr %90, i32 0, i32 5
  %113 = load ptr, ptr %4, align 8, !tbaa !5
  %114 = getelementptr inbounds %struct.aiScene, ptr %113, i32 0, i32 1
  %115 = load ptr, ptr %114, align 8, !tbaa !15
  %116 = getelementptr inbounds %struct.aiNode, ptr %115, i32 0, i32 1
  call void @_ZNK12aiMatrix4x4tIfEmlERKS0_(ptr dead_on_unwind writable sret(%class.aiMatrix4x4t) align 4 %8, ptr noundef nonnull align 4 dereferenceable(64) %112, ptr noundef nonnull align 4 dereferenceable(64) %116)
  %117 = load ptr, ptr %4, align 8, !tbaa !5
  %118 = getelementptr inbounds %struct.aiScene, ptr %117, i32 0, i32 1
  %119 = load ptr, ptr %118, align 8, !tbaa !15
  %120 = getelementptr inbounds %struct.aiNode, ptr %119, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %120, ptr align 4 %8, i64 64, i1 false), !tbaa.struct !24
  call void @llvm.lifetime.end.p0(i64 64, ptr %8) #14
  br label %121

121:                                              ; preds = %111, %97
  %122 = load ptr, ptr %4, align 8, !tbaa !5
  %123 = getelementptr inbounds %struct.aiScene, ptr %122, i32 0, i32 1
  %124 = load ptr, ptr %123, align 8, !tbaa !15
  call void @_ZN6Assimp20PretransformVertices24ComputeAbsoluteTransformEP6aiNode(ptr noundef nonnull align 8 dereferenceable(93) %90, ptr noundef %124)
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #14
  store i32 0, ptr %9, align 4, !tbaa !13
  br label %125

125:                                              ; preds = %170, %121
  %126 = load i32, ptr %9, align 4, !tbaa !13
  %127 = load ptr, ptr %4, align 8, !tbaa !5
  %128 = getelementptr inbounds %struct.aiScene, ptr %127, i32 0, i32 2
  %129 = load i32, ptr %128, align 8, !tbaa !9
  %130 = icmp ult i32 %126, %129
  br i1 %130, label %132, label %131

131:                                              ; preds = %125
  store i32 2, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #14
  br label %173

132:                                              ; preds = %125
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #14
  %133 = load ptr, ptr %4, align 8, !tbaa !5
  %134 = getelementptr inbounds %struct.aiScene, ptr %133, i32 0, i32 3
  %135 = load ptr, ptr %134, align 8, !tbaa !26
  %136 = load i32, ptr %9, align 4, !tbaa !13
  %137 = zext i32 %136 to i64
  %138 = getelementptr inbounds ptr, ptr %135, i64 %137
  %139 = load ptr, ptr %138, align 8, !tbaa !5
  store ptr %139, ptr %11, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #14
  store i32 0, ptr %12, align 4, !tbaa !13
  br label %140

140:                                              ; preds = %158, %132
  %141 = load i32, ptr %12, align 4, !tbaa !13
  %142 = load ptr, ptr %11, align 8, !tbaa !5
  %143 = getelementptr inbounds %struct.aiMesh, ptr %142, i32 0, i32 11
  %144 = load i32, ptr %143, align 8, !tbaa !27
  %145 = icmp ult i32 %141, %144
  br i1 %145, label %147, label %146

146:                                              ; preds = %140
  store i32 5, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #14
  br label %161

147:                                              ; preds = %140
  %148 = load ptr, ptr %11, align 8, !tbaa !5
  %149 = getelementptr inbounds %struct.aiMesh, ptr %148, i32 0, i32 12
  %150 = load ptr, ptr %149, align 8, !tbaa !32
  %151 = load i32, ptr %12, align 4, !tbaa !13
  %152 = zext i32 %151 to i64
  %153 = getelementptr inbounds ptr, ptr %150, i64 %152
  %154 = load ptr, ptr %153, align 8, !tbaa !5
  %155 = icmp eq ptr %154, null
  br i1 %155, label %157, label %156

156:                                              ; preds = %147
  call void @_ZN6aiBoneD2Ev(ptr noundef nonnull align 8 dereferenceable(1120) %154) #14
  call void @_ZdlPvm(ptr noundef %154, i64 noundef 1120) #15
  br label %157

157:                                              ; preds = %156, %147
  br label %158

158:                                              ; preds = %157
  %159 = load i32, ptr %12, align 4, !tbaa !13
  %160 = add i32 %159, 1
  store i32 %160, ptr %12, align 4, !tbaa !13
  br label %140, !llvm.loop !33

161:                                              ; preds = %146
  %162 = load ptr, ptr %11, align 8, !tbaa !5
  %163 = getelementptr inbounds %struct.aiMesh, ptr %162, i32 0, i32 12
  %164 = load ptr, ptr %163, align 8, !tbaa !32
  %165 = icmp eq ptr %164, null
  br i1 %165, label %167, label %166

166:                                              ; preds = %161
  call void @_ZdaPv(ptr noundef %164) #15
  br label %167

167:                                              ; preds = %166, %161
  %168 = load ptr, ptr %11, align 8, !tbaa !5
  %169 = getelementptr inbounds %struct.aiMesh, ptr %168, i32 0, i32 12
  store ptr null, ptr %169, align 8, !tbaa !32
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #14
  br label %170

170:                                              ; preds = %167
  %171 = load i32, ptr %9, align 4, !tbaa !13
  %172 = add i32 %171, 1
  store i32 %172, ptr %9, align 4, !tbaa !13
  br label %125, !llvm.loop !35

173:                                              ; preds = %131
  call void @llvm.lifetime.start.p0(i64 24, ptr %13) #14
  call void @_ZNSt6vectorIP6aiMeshSaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #14
  %174 = getelementptr inbounds %"class.Assimp::PretransformVertices", ptr %90, i32 0, i32 1
  %175 = load i8, ptr %174, align 8, !tbaa !36, !range !22, !noundef !23
  %176 = trunc i8 %175 to i1
  br i1 %176, label %177, label %243

177:                                              ; preds = %173
  %178 = load ptr, ptr %4, align 8, !tbaa !5
  %179 = getelementptr inbounds %struct.aiScene, ptr %178, i32 0, i32 3
  %180 = load ptr, ptr %179, align 8, !tbaa !26
  %181 = load ptr, ptr %4, align 8, !tbaa !5
  %182 = getelementptr inbounds %struct.aiScene, ptr %181, i32 0, i32 2
  %183 = load i32, ptr %182, align 8, !tbaa !9
  %184 = load ptr, ptr %4, align 8, !tbaa !5
  %185 = getelementptr inbounds %struct.aiScene, ptr %184, i32 0, i32 1
  %186 = load ptr, ptr %185, align 8, !tbaa !15
  invoke void @_ZNK6Assimp20PretransformVertices14BuildWCSMeshesERSt6vectorIP6aiMeshSaIS3_EEPS3_jP6aiNode(ptr noundef nonnull align 8 dereferenceable(93) %90, ptr noundef nonnull align 8 dereferenceable(24) %13, ptr noundef %180, i32 noundef %183, ptr noundef %186)
          to label %187 unwind label %197

187:                                              ; preds = %177
  %188 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZL22appendNewMeshesToSceneP7aiSceneRSt6vectorIP6aiMeshSaIS3_EE(ptr noundef %188, ptr noundef nonnull align 8 dereferenceable(24) %13)
          to label %189 unwind label %197

189:                                              ; preds = %187
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #14
  store i32 0, ptr %16, align 4, !tbaa !13
  br label %190

190:                                              ; preds = %235, %189
  %191 = load i32, ptr %16, align 4, !tbaa !13
  %192 = load ptr, ptr %4, align 8, !tbaa !5
  %193 = getelementptr inbounds %struct.aiScene, ptr %192, i32 0, i32 2
  %194 = load i32, ptr %193, align 8, !tbaa !9
  %195 = icmp ult i32 %191, %194
  br i1 %195, label %201, label %196

196:                                              ; preds = %190
  store i32 8, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #14
  br label %242

197:                                              ; preds = %1263, %1261, %1256, %1254, %1246, %1245, %1243, %1240, %1087, %243, %187, %177
  %198 = landingpad { ptr, i32 }
          cleanup
  %199 = extractvalue { ptr, i32 } %198, 0
  store ptr %199, ptr %14, align 8
  %200 = extractvalue { ptr, i32 } %198, 1
  store i32 %200, ptr %15, align 4
  br label %1273

201:                                              ; preds = %190
  %202 = load ptr, ptr %4, align 8, !tbaa !5
  %203 = getelementptr inbounds %struct.aiScene, ptr %202, i32 0, i32 3
  %204 = load ptr, ptr %203, align 8, !tbaa !26
  %205 = load i32, ptr %16, align 4, !tbaa !13
  %206 = zext i32 %205 to i64
  %207 = getelementptr inbounds ptr, ptr %204, i64 %206
  %208 = load ptr, ptr %207, align 8, !tbaa !5
  %209 = load ptr, ptr %4, align 8, !tbaa !5
  %210 = getelementptr inbounds %struct.aiScene, ptr %209, i32 0, i32 3
  %211 = load ptr, ptr %210, align 8, !tbaa !26
  %212 = load i32, ptr %16, align 4, !tbaa !13
  %213 = zext i32 %212 to i64
  %214 = getelementptr inbounds ptr, ptr %211, i64 %213
  %215 = load ptr, ptr %214, align 8, !tbaa !5
  %216 = getelementptr inbounds %struct.aiMesh, ptr %215, i32 0, i32 12
  %217 = load ptr, ptr %216, align 8, !tbaa !32
  invoke void @_ZNK6Assimp20PretransformVertices14ApplyTransformEP6aiMeshRK12aiMatrix4x4tIfE(ptr noundef nonnull align 8 dereferenceable(93) %90, ptr noundef %208, ptr noundef nonnull align 4 dereferenceable(64) %217)
          to label %218 unwind label %238

218:                                              ; preds = %201
  %219 = load ptr, ptr %4, align 8, !tbaa !5
  %220 = getelementptr inbounds %struct.aiScene, ptr %219, i32 0, i32 3
  %221 = load ptr, ptr %220, align 8, !tbaa !26
  %222 = load i32, ptr %16, align 4, !tbaa !13
  %223 = zext i32 %222 to i64
  %224 = getelementptr inbounds ptr, ptr %221, i64 %223
  %225 = load ptr, ptr %224, align 8, !tbaa !5
  %226 = getelementptr inbounds %struct.aiMesh, ptr %225, i32 0, i32 12
  store ptr null, ptr %226, align 8, !tbaa !32
  %227 = load ptr, ptr %4, align 8, !tbaa !5
  %228 = getelementptr inbounds %struct.aiScene, ptr %227, i32 0, i32 3
  %229 = load ptr, ptr %228, align 8, !tbaa !26
  %230 = load i32, ptr %16, align 4, !tbaa !13
  %231 = zext i32 %230 to i64
  %232 = getelementptr inbounds ptr, ptr %229, i64 %231
  %233 = load ptr, ptr %232, align 8, !tbaa !5
  %234 = getelementptr inbounds %struct.aiMesh, ptr %233, i32 0, i32 11
  store i32 0, ptr %234, align 8, !tbaa !27
  br label %235

235:                                              ; preds = %218
  %236 = load i32, ptr %16, align 4, !tbaa !13
  %237 = add i32 %236, 1
  store i32 %237, ptr %16, align 4, !tbaa !13
  br label %190, !llvm.loop !37

238:                                              ; preds = %201
  %239 = landingpad { ptr, i32 }
          cleanup
  %240 = extractvalue { ptr, i32 } %239, 0
  store ptr %240, ptr %14, align 8
  %241 = extractvalue { ptr, i32 } %239, 1
  store i32 %241, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #14
  br label %1273

242:                                              ; preds = %196
  br label %639

243:                                              ; preds = %173
  %244 = load ptr, ptr %4, align 8, !tbaa !5
  %245 = getelementptr inbounds %struct.aiScene, ptr %244, i32 0, i32 4
  %246 = load i32, ptr %245, align 8, !tbaa !38
  %247 = zext i32 %246 to i64
  %248 = shl i64 %247, 1
  invoke void @_ZNSt6vectorIP6aiMeshSaIS1_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef %248)
          to label %249 unwind label %197

249:                                              ; preds = %243
  call void @llvm.lifetime.start.p0(i64 24, ptr %17) #14
  call void @_ZNSt7__cxx114listIjSaIjEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #14
  call void @llvm.lifetime.start.p0(i64 24, ptr %18) #14
  %250 = load ptr, ptr %4, align 8, !tbaa !5
  %251 = getelementptr inbounds %struct.aiScene, ptr %250, i32 0, i32 2
  %252 = load i32, ptr %251, align 8, !tbaa !9
  %253 = zext i32 %252 to i64
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #14
  store i32 0, ptr %19, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 1, ptr %20) #14
  call void @_ZNSaIjEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #14
  invoke void @_ZNSt6vectorIjSaIjEEC2EmRKjRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %18, i64 noundef %253, ptr noundef nonnull align 4 dereferenceable(4) %19, ptr noundef nonnull align 1 dereferenceable(1) %20)
          to label %254 unwind label %267

254:                                              ; preds = %249
  call void @_ZNSt15__new_allocatorIjED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #14
  %255 = load ptr, ptr %4, align 8, !tbaa !5
  %256 = getelementptr inbounds %struct.aiScene, ptr %255, i32 0, i32 1
  %257 = load ptr, ptr %256, align 8, !tbaa !15
  %258 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %18, i64 noundef 0) #14
  invoke void @_ZNK6Assimp20PretransformVertices22BuildMeshRefCountArrayEPK6aiNodePj(ptr noundef nonnull align 8 dereferenceable(93) %90, ptr noundef %257, ptr noundef %258)
          to label %259 unwind label %271

259:                                              ; preds = %254
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #14
  store i32 0, ptr %21, align 4, !tbaa !13
  br label %260

260:                                              ; preds = %543, %259
  %261 = load i32, ptr %21, align 4, !tbaa !13
  %262 = load ptr, ptr %4, align 8, !tbaa !5
  %263 = getelementptr inbounds %struct.aiScene, ptr %262, i32 0, i32 4
  %264 = load i32, ptr %263, align 8, !tbaa !38
  %265 = icmp ult i32 %261, %264
  br i1 %265, label %275, label %266

266:                                              ; preds = %260
  store i32 11, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #14
  br label %547

267:                                              ; preds = %249
  %268 = landingpad { ptr, i32 }
          cleanup
  %269 = extractvalue { ptr, i32 } %268, 0
  store ptr %269, ptr %14, align 8
  %270 = extractvalue { ptr, i32 } %268, 1
  store i32 %270, ptr %15, align 4
  call void @_ZNSt15__new_allocatorIjED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %20) #14
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #14
  br label %638

271:                                              ; preds = %551, %254
  %272 = landingpad { ptr, i32 }
          cleanup
  %273 = extractvalue { ptr, i32 } %272, 0
  store ptr %273, ptr %14, align 8
  %274 = extractvalue { ptr, i32 } %272, 1
  store i32 %274, ptr %15, align 4
  br label %637

275:                                              ; preds = %260
  call void @_ZNSt7__cxx114listIjSaIjEE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %17) #14
  %276 = load ptr, ptr %4, align 8, !tbaa !5
  %277 = load i32, ptr %21, align 4, !tbaa !13
  invoke void @_ZN12_GLOBAL__N_114GetVFormatListEPK7aiScenejRNSt7__cxx114listIjSaIjEEE(ptr noundef %276, i32 noundef %277, ptr noundef nonnull align 8 dereferenceable(24) %17)
          to label %278 unwind label %288

278:                                              ; preds = %275
  invoke void @_ZNSt7__cxx114listIjSaIjEE4sortEv(ptr noundef nonnull align 8 dereferenceable(24) %17)
          to label %279 unwind label %288

279:                                              ; preds = %278
  invoke void @_ZNSt7__cxx114listIjSaIjEE6uniqueEv(ptr noundef nonnull align 8 dereferenceable(24) %17)
          to label %280 unwind label %288

280:                                              ; preds = %279
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #14
  %281 = call ptr @_ZNSt7__cxx114listIjSaIjEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %17) #14
  %282 = getelementptr inbounds %"struct.std::_List_iterator", ptr %23, i32 0, i32 0
  store ptr %281, ptr %282, align 8
  call void @_ZNSt20_List_const_iteratorIjEC2ERKSt14_List_iteratorIjE(ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 8 dereferenceable(8) %23) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #14
  br label %283

283:                                              ; preds = %539, %280
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #14
  %284 = call ptr @_ZNSt7__cxx114listIjSaIjEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %17) #14
  %285 = getelementptr inbounds %"struct.std::_List_iterator", ptr %25, i32 0, i32 0
  store ptr %284, ptr %285, align 8
  call void @_ZNSt20_List_const_iteratorIjEC2ERKSt14_List_iteratorIjE(ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull align 8 dereferenceable(8) %25) #14
  %286 = call noundef zeroext i1 @_ZStneRKSt20_List_const_iteratorIjES2_(ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 8 dereferenceable(8) %24) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #14
  br i1 %286, label %292, label %287

287:                                              ; preds = %283
  store i32 14, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #14
  br label %542

288:                                              ; preds = %279, %278, %275
  %289 = landingpad { ptr, i32 }
          cleanup
  %290 = extractvalue { ptr, i32 } %289, 0
  store ptr %290, ptr %14, align 8
  %291 = extractvalue { ptr, i32 } %289, 1
  store i32 %291, ptr %15, align 4
  br label %546

292:                                              ; preds = %283
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #14
  store i32 0, ptr %26, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #14
  store i32 0, ptr %27, align 4, !tbaa !13
  %293 = load ptr, ptr %4, align 8, !tbaa !5
  %294 = load ptr, ptr %4, align 8, !tbaa !5
  %295 = getelementptr inbounds %struct.aiScene, ptr %294, i32 0, i32 1
  %296 = load ptr, ptr %295, align 8, !tbaa !15
  %297 = load i32, ptr %21, align 4, !tbaa !13
  %298 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt20_List_const_iteratorIjEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %22) #14
  %299 = load i32, ptr %298, align 4, !tbaa !13
  invoke void @_ZNK6Assimp20PretransformVertices21CountVerticesAndFacesEPK7aiScenePK6aiNodejjPjS7_(ptr noundef nonnull align 8 dereferenceable(93) %90, ptr noundef %293, ptr noundef %296, i32 noundef %297, i32 noundef %299, ptr noundef %27, ptr noundef %26)
          to label %300 unwind label %385

300:                                              ; preds = %292
  %301 = load i32, ptr %27, align 4, !tbaa !13
  %302 = icmp ne i32 0, %301
  br i1 %302, label %303, label %538

303:                                              ; preds = %300
  %304 = load i32, ptr %26, align 4, !tbaa !13
  %305 = icmp ne i32 0, %304
  br i1 %305, label %306, label %538

306:                                              ; preds = %303
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #14
  %307 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 1320) #16
          to label %308 unwind label %389

308:                                              ; preds = %306
  call void @_ZN6aiMeshC2Ev(ptr noundef nonnull align 8 dereferenceable(1320) %307) #14
  store ptr %307, ptr %28, align 8, !tbaa !5
  invoke void @_ZNSt6vectorIP6aiMeshSaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %13, ptr noundef nonnull align 8 dereferenceable(8) %28)
          to label %309 unwind label %389

309:                                              ; preds = %308
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #14
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #14
  %310 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP6aiMeshSaIS1_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %13) #14
  %311 = load ptr, ptr %310, align 8, !tbaa !5
  store ptr %311, ptr %29, align 8, !tbaa !5
  %312 = load i32, ptr %27, align 4, !tbaa !13
  %313 = load ptr, ptr %29, align 8, !tbaa !5
  %314 = getelementptr inbounds %struct.aiMesh, ptr %313, i32 0, i32 2
  store i32 %312, ptr %314, align 8, !tbaa !39
  %315 = load i32, ptr %26, align 4, !tbaa !13
  %316 = load ptr, ptr %29, align 8, !tbaa !5
  %317 = getelementptr inbounds %struct.aiMesh, ptr %316, i32 0, i32 1
  store i32 %315, ptr %317, align 4, !tbaa !40
  %318 = load i32, ptr %27, align 4, !tbaa !13
  %319 = zext i32 %318 to i64
  %320 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %319, i64 16)
  %321 = extractvalue { i64, i1 } %320, 1
  %322 = extractvalue { i64, i1 } %320, 0
  %323 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %322, i64 8)
  %324 = extractvalue { i64, i1 } %323, 1
  %325 = or i1 %321, %324
  %326 = extractvalue { i64, i1 } %323, 0
  %327 = select i1 %325, i64 -1, i64 %326
  %328 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %327) #16
          to label %329 unwind label %393

329:                                              ; preds = %309
  store i64 %319, ptr %328, align 16
  %330 = getelementptr inbounds i8, ptr %328, i64 8
  %331 = icmp eq i64 %319, 0
  br i1 %331, label %338, label %332

332:                                              ; preds = %329
  %333 = getelementptr inbounds %struct.aiFace, ptr %330, i64 %319
  br label %334

334:                                              ; preds = %334, %332
  %335 = phi ptr [ %330, %332 ], [ %336, %334 ]
  call void @_ZN6aiFaceC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %335) #14
  %336 = getelementptr inbounds %struct.aiFace, ptr %335, i64 1
  %337 = icmp eq ptr %336, %333
  br i1 %337, label %338, label %334

338:                                              ; preds = %334, %329
  %339 = load ptr, ptr %29, align 8, !tbaa !5
  %340 = getelementptr inbounds %struct.aiMesh, ptr %339, i32 0, i32 10
  store ptr %330, ptr %340, align 8, !tbaa !41
  %341 = load i32, ptr %26, align 4, !tbaa !13
  %342 = zext i32 %341 to i64
  %343 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %342, i64 12)
  %344 = extractvalue { i64, i1 } %343, 1
  %345 = extractvalue { i64, i1 } %343, 0
  %346 = select i1 %344, i64 -1, i64 %345
  %347 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %346) #16
          to label %348 unwind label %393

348:                                              ; preds = %338
  %349 = icmp eq i64 %342, 0
  br i1 %349, label %356, label %350

350:                                              ; preds = %348
  %351 = getelementptr inbounds %class.aiVector3t, ptr %347, i64 %342
  br label %352

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

356:                                              ; preds = %352, %348
  %357 = load ptr, ptr %29, align 8, !tbaa !5
  %358 = getelementptr inbounds %struct.aiMesh, ptr %357, i32 0, i32 3
  store ptr %347, ptr %358, align 8, !tbaa !42
  %359 = load i32, ptr %21, align 4, !tbaa !13
  %360 = load ptr, ptr %29, align 8, !tbaa !5
  %361 = getelementptr inbounds %struct.aiMesh, ptr %360, i32 0, i32 13
  store i32 %359, ptr %361, align 8, !tbaa !43
  %362 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt20_List_const_iteratorIjEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %22) #14
  %363 = load i32, ptr %362, align 4, !tbaa !13
  %364 = and i32 %363, 2
  %365 = icmp ne i32 %364, 0
  br i1 %365, label %366, label %397

366:                                              ; preds = %356
  %367 = load i32, ptr %26, align 4, !tbaa !13
  %368 = zext i32 %367 to i64
  %369 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %368, i64 12)
  %370 = extractvalue { i64, i1 } %369, 1
  %371 = extractvalue { i64, i1 } %369, 0
  %372 = select i1 %370, i64 -1, i64 %371
  %373 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %372) #16
          to label %374 unwind label %393

374:                                              ; preds = %366
  %375 = icmp eq i64 %368, 0
  br i1 %375, label %382, label %376

376:                                              ; preds = %374
  %377 = getelementptr inbounds %class.aiVector3t, ptr %373, i64 %368
  br label %378

378:                                              ; preds = %378, %376
  %379 = phi ptr [ %373, %376 ], [ %380, %378 ]
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %379) #14
  %380 = getelementptr inbounds %class.aiVector3t, ptr %379, i64 1
  %381 = icmp eq ptr %380, %377
  br i1 %381, label %382, label %378

382:                                              ; preds = %378, %374
  %383 = load ptr, ptr %29, align 8, !tbaa !5
  %384 = getelementptr inbounds %struct.aiMesh, ptr %383, i32 0, i32 4
  store ptr %373, ptr %384, align 8, !tbaa !44
  br label %397

385:                                              ; preds = %292
  %386 = landingpad { ptr, i32 }
          cleanup
  %387 = extractvalue { ptr, i32 } %386, 0
  store ptr %387, ptr %14, align 8
  %388 = extractvalue { ptr, i32 } %386, 1
  store i32 %388, ptr %15, align 4
  br label %541

389:                                              ; preds = %308, %306
  %390 = landingpad { ptr, i32 }
          cleanup
  %391 = extractvalue { ptr, i32 } %390, 0
  store ptr %391, ptr %14, align 8
  %392 = extractvalue { ptr, i32 } %390, 1
  store i32 %392, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #14
  br label %541

393:                                              ; preds = %498, %447, %418, %402, %366, %338, %309
  %394 = landingpad { ptr, i32 }
          cleanup
  %395 = extractvalue { ptr, i32 } %394, 0
  store ptr %395, ptr %14, align 8
  %396 = extractvalue { ptr, i32 } %394, 1
  store i32 %396, ptr %15, align 4
  br label %537

397:                                              ; preds = %382, %356
  %398 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt20_List_const_iteratorIjEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %22) #14
  %399 = load i32, ptr %398, align 4, !tbaa !13
  %400 = and i32 %399, 4
  %401 = icmp ne i32 %400, 0
  br i1 %401, label %402, label %439

402:                                              ; preds = %397
  %403 = load i32, ptr %26, align 4, !tbaa !13
  %404 = zext i32 %403 to i64
  %405 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %404, i64 12)
  %406 = extractvalue { i64, i1 } %405, 1
  %407 = extractvalue { i64, i1 } %405, 0
  %408 = select i1 %406, i64 -1, i64 %407
  %409 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %408) #16
          to label %410 unwind label %393

410:                                              ; preds = %402
  %411 = icmp eq i64 %404, 0
  br i1 %411, label %418, label %412

412:                                              ; preds = %410
  %413 = getelementptr inbounds %class.aiVector3t, ptr %409, i64 %404
  br label %414

414:                                              ; preds = %414, %412
  %415 = phi ptr [ %409, %412 ], [ %416, %414 ]
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %415) #14
  %416 = getelementptr inbounds %class.aiVector3t, ptr %415, i64 1
  %417 = icmp eq ptr %416, %413
  br i1 %417, label %418, label %414

418:                                              ; preds = %414, %410
  %419 = load ptr, ptr %29, align 8, !tbaa !5
  %420 = getelementptr inbounds %struct.aiMesh, ptr %419, i32 0, i32 5
  store ptr %409, ptr %420, align 8, !tbaa !45
  %421 = load i32, ptr %26, align 4, !tbaa !13
  %422 = zext i32 %421 to i64
  %423 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %422, i64 12)
  %424 = extractvalue { i64, i1 } %423, 1
  %425 = extractvalue { i64, i1 } %423, 0
  %426 = select i1 %424, i64 -1, i64 %425
  %427 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %426) #16
          to label %428 unwind label %393

428:                                              ; preds = %418
  %429 = icmp eq i64 %422, 0
  br i1 %429, label %436, label %430

430:                                              ; preds = %428
  %431 = getelementptr inbounds %class.aiVector3t, ptr %427, i64 %422
  br label %432

432:                                              ; preds = %432, %430
  %433 = phi ptr [ %427, %430 ], [ %434, %432 ]
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %433) #14
  %434 = getelementptr inbounds %class.aiVector3t, ptr %433, i64 1
  %435 = icmp eq ptr %434, %431
  br i1 %435, label %436, label %432

436:                                              ; preds = %432, %428
  %437 = load ptr, ptr %29, align 8, !tbaa !5
  %438 = getelementptr inbounds %struct.aiMesh, ptr %437, i32 0, i32 6
  store ptr %427, ptr %438, align 8, !tbaa !46
  br label %439

439:                                              ; preds = %436, %397
  store i32 0, ptr %27, align 4, !tbaa !13
  br label %440

440:                                              ; preds = %487, %439
  %441 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt20_List_const_iteratorIjEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %22) #14
  %442 = load i32, ptr %441, align 4, !tbaa !13
  %443 = load i32, ptr %27, align 4, !tbaa !13
  %444 = shl i32 256, %443
  %445 = and i32 %442, %444
  %446 = icmp ne i32 %445, 0
  br i1 %446, label %447, label %490

447:                                              ; preds = %440
  %448 = load i32, ptr %26, align 4, !tbaa !13
  %449 = zext i32 %448 to i64
  %450 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %449, i64 12)
  %451 = extractvalue { i64, i1 } %450, 1
  %452 = extractvalue { i64, i1 } %450, 0
  %453 = select i1 %451, i64 -1, i64 %452
  %454 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %453) #16
          to label %455 unwind label %393

455:                                              ; preds = %447
  %456 = icmp eq i64 %449, 0
  br i1 %456, label %463, label %457

457:                                              ; preds = %455
  %458 = getelementptr inbounds %class.aiVector3t, ptr %454, i64 %449
  br label %459

459:                                              ; preds = %459, %457
  %460 = phi ptr [ %454, %457 ], [ %461, %459 ]
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %460) #14
  %461 = getelementptr inbounds %class.aiVector3t, ptr %460, i64 1
  %462 = icmp eq ptr %461, %458
  br i1 %462, label %463, label %459

463:                                              ; preds = %459, %455
  %464 = load ptr, ptr %29, align 8, !tbaa !5
  %465 = getelementptr inbounds %struct.aiMesh, ptr %464, i32 0, i32 8
  %466 = load i32, ptr %27, align 4, !tbaa !13
  %467 = zext i32 %466 to i64
  %468 = getelementptr inbounds [8 x ptr], ptr %465, i64 0, i64 %467
  store ptr %454, ptr %468, align 8, !tbaa !5
  %469 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt20_List_const_iteratorIjEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %22) #14
  %470 = load i32, ptr %469, align 4, !tbaa !13
  %471 = load i32, ptr %27, align 4, !tbaa !13
  %472 = shl i32 65536, %471
  %473 = and i32 %470, %472
  %474 = icmp ne i32 %473, 0
  br i1 %474, label %475, label %481

475:                                              ; preds = %463
  %476 = load ptr, ptr %29, align 8, !tbaa !5
  %477 = getelementptr inbounds %struct.aiMesh, ptr %476, i32 0, i32 9
  %478 = load i32, ptr %27, align 4, !tbaa !13
  %479 = zext i32 %478 to i64
  %480 = getelementptr inbounds [8 x i32], ptr %477, i64 0, i64 %479
  store i32 3, ptr %480, align 4, !tbaa !13
  br label %487

481:                                              ; preds = %463
  %482 = load ptr, ptr %29, align 8, !tbaa !5
  %483 = getelementptr inbounds %struct.aiMesh, ptr %482, i32 0, i32 9
  %484 = load i32, ptr %27, align 4, !tbaa !13
  %485 = zext i32 %484 to i64
  %486 = getelementptr inbounds [8 x i32], ptr %483, i64 0, i64 %485
  store i32 2, ptr %486, align 4, !tbaa !13
  br label %487

487:                                              ; preds = %481, %475
  %488 = load i32, ptr %27, align 4, !tbaa !13
  %489 = add i32 %488, 1
  store i32 %489, ptr %27, align 4, !tbaa !13
  br label %440, !llvm.loop !47

490:                                              ; preds = %440
  store i32 0, ptr %27, align 4, !tbaa !13
  br label %491

491:                                              ; preds = %514, %490
  %492 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt20_List_const_iteratorIjEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %22) #14
  %493 = load i32, ptr %492, align 4, !tbaa !13
  %494 = load i32, ptr %27, align 4, !tbaa !13
  %495 = shl i32 16777216, %494
  %496 = and i32 %493, %495
  %497 = icmp ne i32 %496, 0
  br i1 %497, label %498, label %521

498:                                              ; preds = %491
  %499 = load i32, ptr %26, align 4, !tbaa !13
  %500 = zext i32 %499 to i64
  %501 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %500, i64 16)
  %502 = extractvalue { i64, i1 } %501, 1
  %503 = extractvalue { i64, i1 } %501, 0
  %504 = select i1 %502, i64 -1, i64 %503
  %505 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %504) #16
          to label %506 unwind label %393

506:                                              ; preds = %498
  %507 = icmp eq i64 %500, 0
  br i1 %507, label %514, label %508

508:                                              ; preds = %506
  %509 = getelementptr inbounds %class.aiColor4t, ptr %505, i64 %500
  br label %510

510:                                              ; preds = %510, %508
  %511 = phi ptr [ %505, %508 ], [ %512, %510 ]
  call void @_ZN9aiColor4tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(16) %511) #14
  %512 = getelementptr inbounds %class.aiColor4t, ptr %511, i64 1
  %513 = icmp eq ptr %512, %509
  br i1 %513, label %514, label %510

514:                                              ; preds = %510, %506
  %515 = load ptr, ptr %29, align 8, !tbaa !5
  %516 = getelementptr inbounds %struct.aiMesh, ptr %515, i32 0, i32 7
  %517 = load i32, ptr %27, align 4, !tbaa !13
  %518 = add i32 %517, 1
  store i32 %518, ptr %27, align 4, !tbaa !13
  %519 = zext i32 %517 to i64
  %520 = getelementptr inbounds [8 x ptr], ptr %516, i64 0, i64 %519
  store ptr %505, ptr %520, align 8, !tbaa !5
  br label %491, !llvm.loop !48

521:                                              ; preds = %491
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #14
  call void @llvm.memset.p0.i64(ptr align 4 %30, i8 0, i64 8, i1 false)
  %522 = load ptr, ptr %4, align 8, !tbaa !5
  %523 = load ptr, ptr %4, align 8, !tbaa !5
  %524 = getelementptr inbounds %struct.aiScene, ptr %523, i32 0, i32 1
  %525 = load ptr, ptr %524, align 8, !tbaa !15
  %526 = load i32, ptr %21, align 4, !tbaa !13
  %527 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt20_List_const_iteratorIjEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %22) #14
  %528 = load i32, ptr %527, align 4, !tbaa !13
  %529 = load ptr, ptr %29, align 8, !tbaa !5
  %530 = getelementptr inbounds [2 x i32], ptr %30, i64 0, i64 0
  %531 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %18, i64 noundef 0) #14
  invoke void @_ZNK6Assimp20PretransformVertices11CollectDataEPK7aiScenePK6aiNodejjP6aiMeshPjS9_(ptr noundef nonnull align 8 dereferenceable(93) %90, ptr noundef %522, ptr noundef %525, i32 noundef %526, i32 noundef %528, ptr noundef %529, ptr noundef %530, ptr noundef %531)
          to label %532 unwind label %533

532:                                              ; preds = %521
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #14
  br label %538

533:                                              ; preds = %521
  %534 = landingpad { ptr, i32 }
          cleanup
  %535 = extractvalue { ptr, i32 } %534, 0
  store ptr %535, ptr %14, align 8
  %536 = extractvalue { ptr, i32 } %534, 1
  store i32 %536, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #14
  br label %537

537:                                              ; preds = %533, %393
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #14
  br label %541

538:                                              ; preds = %532, %303, %300
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #14
  br label %539

539:                                              ; preds = %538
  %540 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt20_List_const_iteratorIjEppEv(ptr noundef nonnull align 8 dereferenceable(8) %22) #14
  br label %283, !llvm.loop !49

541:                                              ; preds = %537, %389, %385
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #14
  br label %546

542:                                              ; preds = %287
  br label %543

543:                                              ; preds = %542
  %544 = load i32, ptr %21, align 4, !tbaa !13
  %545 = add i32 %544, 1
  store i32 %545, ptr %21, align 4, !tbaa !13
  br label %260, !llvm.loop !50

546:                                              ; preds = %541, %288
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #14
  br label %637

547:                                              ; preds = %266
  %548 = call noundef zeroext i1 @_ZNKSt6vectorIP6aiMeshSaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %13) #14
  br i1 %548, label %549, label %556

549:                                              ; preds = %547
  %550 = call ptr @__cxa_allocate_exception(i64 16) #14
  invoke void @_ZN17DeadlyImportErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %550, ptr noundef @.str.9)
          to label %551 unwind label %552

551:                                              ; preds = %549
  invoke void @__cxa_throw(ptr %550, ptr @_ZTI17DeadlyImportError, ptr @_ZNSt13runtime_errorD2Ev) #17
          to label %1279 unwind label %271

552:                                              ; preds = %549
  %553 = landingpad { ptr, i32 }
          cleanup
  %554 = extractvalue { ptr, i32 } %553, 0
  store ptr %554, ptr %14, align 8
  %555 = extractvalue { ptr, i32 } %553, 1
  store i32 %555, ptr %15, align 4
  call void @__cxa_free_exception(ptr %550) #14
  br label %637

556:                                              ; preds = %547
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #14
  store i32 0, ptr %31, align 4, !tbaa !13
  br label %557

557:                                              ; preds = %606, %556
  %558 = load i32, ptr %31, align 4, !tbaa !13
  %559 = load ptr, ptr %4, align 8, !tbaa !5
  %560 = getelementptr inbounds %struct.aiScene, ptr %559, i32 0, i32 2
  %561 = load i32, ptr %560, align 8, !tbaa !9
  %562 = icmp ult i32 %558, %561
  br i1 %562, label %564, label %563

563:                                              ; preds = %557
  store i32 21, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #14
  br label %609

564:                                              ; preds = %557
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #14
  %565 = load ptr, ptr %4, align 8, !tbaa !5
  %566 = getelementptr inbounds %struct.aiScene, ptr %565, i32 0, i32 3
  %567 = load ptr, ptr %566, align 8, !tbaa !26
  %568 = load i32, ptr %31, align 4, !tbaa !13
  %569 = zext i32 %568 to i64
  %570 = getelementptr inbounds ptr, ptr %567, i64 %569
  %571 = load ptr, ptr %570, align 8, !tbaa !5
  store ptr %571, ptr %32, align 8, !tbaa !5
  %572 = load ptr, ptr %32, align 8, !tbaa !5
  %573 = getelementptr inbounds %struct.aiMesh, ptr %572, i32 0, i32 11
  store i32 0, ptr %573, align 8, !tbaa !27
  %574 = load ptr, ptr %32, align 8, !tbaa !5
  %575 = getelementptr inbounds %struct.aiMesh, ptr %574, i32 0, i32 12
  store ptr null, ptr %575, align 8, !tbaa !32
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #14
  store i32 0, ptr %33, align 4, !tbaa !13
  br label %576

576:                                              ; preds = %598, %564
  %577 = load i32, ptr %33, align 4, !tbaa !13
  %578 = load ptr, ptr %32, align 8, !tbaa !5
  %579 = getelementptr inbounds %struct.aiMesh, ptr %578, i32 0, i32 2
  %580 = load i32, ptr %579, align 8, !tbaa !39
  %581 = icmp ult i32 %577, %580
  br i1 %581, label %583, label %582

582:                                              ; preds = %576
  store i32 24, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #14
  br label %601

583:                                              ; preds = %576
  %584 = load ptr, ptr %32, align 8, !tbaa !5
  %585 = getelementptr inbounds %struct.aiMesh, ptr %584, i32 0, i32 10
  %586 = load ptr, ptr %585, align 8, !tbaa !41
  %587 = load i32, ptr %33, align 4, !tbaa !13
  %588 = zext i32 %587 to i64
  %589 = getelementptr inbounds %struct.aiFace, ptr %586, i64 %588
  %590 = getelementptr inbounds %struct.aiFace, ptr %589, i32 0, i32 0
  store i32 0, ptr %590, align 8, !tbaa !51
  %591 = load ptr, ptr %32, align 8, !tbaa !5
  %592 = getelementptr inbounds %struct.aiMesh, ptr %591, i32 0, i32 10
  %593 = load ptr, ptr %592, align 8, !tbaa !41
  %594 = load i32, ptr %33, align 4, !tbaa !13
  %595 = zext i32 %594 to i64
  %596 = getelementptr inbounds %struct.aiFace, ptr %593, i64 %595
  %597 = getelementptr inbounds %struct.aiFace, ptr %596, i32 0, i32 1
  store ptr null, ptr %597, align 8, !tbaa !53
  br label %598

598:                                              ; preds = %583
  %599 = load i32, ptr %33, align 4, !tbaa !13
  %600 = add i32 %599, 1
  store i32 %600, ptr %33, align 4, !tbaa !13
  br label %576, !llvm.loop !54

601:                                              ; preds = %582
  %602 = load ptr, ptr %32, align 8, !tbaa !5
  %603 = icmp eq ptr %602, null
  br i1 %603, label %605, label %604

604:                                              ; preds = %601
  call void @_ZN6aiMeshD2Ev(ptr noundef nonnull align 8 dereferenceable(1320) %602) #14
  call void @_ZdlPvm(ptr noundef %602, i64 noundef 1320) #15
  br label %605

605:                                              ; preds = %604, %601
  store ptr null, ptr %32, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #14
  br label %606

606:                                              ; preds = %605
  %607 = load i32, ptr %31, align 4, !tbaa !13
  %608 = add i32 %607, 1
  store i32 %608, ptr %31, align 4, !tbaa !13
  br label %557, !llvm.loop !55

609:                                              ; preds = %563
  %610 = call noundef i64 @_ZNKSt6vectorIP6aiMeshSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %13) #14
  %611 = trunc i64 %610 to i32
  %612 = load ptr, ptr %4, align 8, !tbaa !5
  %613 = getelementptr inbounds %struct.aiScene, ptr %612, i32 0, i32 2
  store i32 %611, ptr %613, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #14
  store i32 0, ptr %34, align 4, !tbaa !13
  br label %614

614:                                              ; preds = %632, %609
  %615 = load i32, ptr %34, align 4, !tbaa !13
  %616 = load ptr, ptr %4, align 8, !tbaa !5
  %617 = getelementptr inbounds %struct.aiScene, ptr %616, i32 0, i32 2
  %618 = load i32, ptr %617, align 8, !tbaa !9
  %619 = icmp ult i32 %615, %618
  br i1 %619, label %621, label %620

620:                                              ; preds = %614
  store i32 27, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #14
  br label %635

621:                                              ; preds = %614
  %622 = load i32, ptr %34, align 4, !tbaa !13
  %623 = zext i32 %622 to i64
  %624 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP6aiMeshSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef %623) #14
  %625 = load ptr, ptr %624, align 8, !tbaa !5
  %626 = load ptr, ptr %4, align 8, !tbaa !5
  %627 = getelementptr inbounds %struct.aiScene, ptr %626, i32 0, i32 3
  %628 = load ptr, ptr %627, align 8, !tbaa !26
  %629 = load i32, ptr %34, align 4, !tbaa !13
  %630 = zext i32 %629 to i64
  %631 = getelementptr inbounds ptr, ptr %628, i64 %630
  store ptr %625, ptr %631, align 8, !tbaa !5
  br label %632

632:                                              ; preds = %621
  %633 = load i32, ptr %34, align 4, !tbaa !13
  %634 = add i32 %633, 1
  store i32 %634, ptr %34, align 4, !tbaa !13
  br label %614, !llvm.loop !56

635:                                              ; preds = %620
  br label %636

636:                                              ; preds = %635
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #14
  call void @llvm.lifetime.end.p0(i64 24, ptr %18) #14
  call void @_ZNSt7__cxx1110_List_baseIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #14
  call void @llvm.lifetime.end.p0(i64 24, ptr %17) #14
  br label %639

637:                                              ; preds = %552, %546, %271
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #14
  br label %638

638:                                              ; preds = %637, %267
  call void @llvm.lifetime.end.p0(i64 24, ptr %18) #14
  call void @_ZNSt7__cxx1110_List_baseIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #14
  call void @llvm.lifetime.end.p0(i64 24, ptr %17) #14
  br label %1273

639:                                              ; preds = %636, %242
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #14
  store i32 0, ptr %35, align 4, !tbaa !13
  br label %640

640:                                              ; preds = %658, %639
  %641 = load i32, ptr %35, align 4, !tbaa !13
  %642 = load ptr, ptr %4, align 8, !tbaa !5
  %643 = getelementptr inbounds %struct.aiScene, ptr %642, i32 0, i32 6
  %644 = load i32, ptr %643, align 8, !tbaa !14
  %645 = icmp ult i32 %641, %644
  br i1 %645, label %647, label %646

646:                                              ; preds = %640
  store i32 30, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #14
  br label %661

647:                                              ; preds = %640
  %648 = load ptr, ptr %4, align 8, !tbaa !5
  %649 = getelementptr inbounds %struct.aiScene, ptr %648, i32 0, i32 7
  %650 = load ptr, ptr %649, align 8, !tbaa !57
  %651 = load i32, ptr %35, align 4, !tbaa !13
  %652 = zext i32 %651 to i64
  %653 = getelementptr inbounds ptr, ptr %650, i64 %652
  %654 = load ptr, ptr %653, align 8, !tbaa !5
  %655 = icmp eq ptr %654, null
  br i1 %655, label %657, label %656

656:                                              ; preds = %647
  call void @_ZN11aiAnimationD2Ev(ptr noundef nonnull align 8 dereferenceable(1096) %654) #14
  call void @_ZdlPvm(ptr noundef %654, i64 noundef 1096) #15
  br label %657

657:                                              ; preds = %656, %647
  br label %658

658:                                              ; preds = %657
  %659 = load i32, ptr %35, align 4, !tbaa !13
  %660 = add i32 %659, 1
  store i32 %660, ptr %35, align 4, !tbaa !13
  br label %640, !llvm.loop !58

661:                                              ; preds = %646
  %662 = load ptr, ptr %4, align 8, !tbaa !5
  %663 = getelementptr inbounds %struct.aiScene, ptr %662, i32 0, i32 7
  %664 = load ptr, ptr %663, align 8, !tbaa !57
  %665 = icmp eq ptr %664, null
  br i1 %665, label %667, label %666

666:                                              ; preds = %661
  call void @_ZdaPv(ptr noundef %664) #15
  br label %667

667:                                              ; preds = %666, %661
  %668 = load ptr, ptr %4, align 8, !tbaa !5
  %669 = getelementptr inbounds %struct.aiScene, ptr %668, i32 0, i32 7
  store ptr null, ptr %669, align 8, !tbaa !57
  %670 = load ptr, ptr %4, align 8, !tbaa !5
  %671 = getelementptr inbounds %struct.aiScene, ptr %670, i32 0, i32 6
  store i32 0, ptr %671, align 8, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #14
  store i32 0, ptr %36, align 4, !tbaa !13
  br label %672

672:                                              ; preds = %725, %667
  %673 = load i32, ptr %36, align 4, !tbaa !13
  %674 = load ptr, ptr %4, align 8, !tbaa !5
  %675 = getelementptr inbounds %struct.aiScene, ptr %674, i32 0, i32 12
  %676 = load i32, ptr %675, align 8, !tbaa !59
  %677 = icmp ult i32 %673, %676
  br i1 %677, label %679, label %678

678:                                              ; preds = %672
  store i32 33, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #14
  br label %745

679:                                              ; preds = %672
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #14
  %680 = load ptr, ptr %4, align 8, !tbaa !5
  %681 = getelementptr inbounds %struct.aiScene, ptr %680, i32 0, i32 13
  %682 = load ptr, ptr %681, align 8, !tbaa !60
  %683 = load i32, ptr %36, align 4, !tbaa !13
  %684 = zext i32 %683 to i64
  %685 = getelementptr inbounds ptr, ptr %682, i64 %684
  %686 = load ptr, ptr %685, align 8, !tbaa !5
  store ptr %686, ptr %37, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #14
  %687 = load ptr, ptr %4, align 8, !tbaa !5
  %688 = getelementptr inbounds %struct.aiScene, ptr %687, i32 0, i32 1
  %689 = load ptr, ptr %688, align 8, !tbaa !15
  %690 = load ptr, ptr %37, align 8, !tbaa !5
  %691 = getelementptr inbounds %struct.aiCamera, ptr %690, i32 0, i32 0
  %692 = invoke noundef ptr @_ZN6aiNode8FindNodeERK8aiString(ptr noundef nonnull align 8 dereferenceable(1144) %689, ptr noundef nonnull align 4 dereferenceable(1028) %691)
          to label %693 unwind label %728

693:                                              ; preds = %679
  store ptr %692, ptr %38, align 8, !tbaa !5
  %694 = load ptr, ptr %38, align 8, !tbaa !5
  %695 = icmp ne ptr null, %694
  br i1 %695, label %698, label %696

696:                                              ; preds = %693
  invoke void @_ZN6Assimp17aiAssertViolationEPKcS1_i(ptr noundef @.str.10, ptr noundef @.str.6, i32 noundef 583)
          to label %697 unwind label %728

697:                                              ; preds = %696
  br label %698

698:                                              ; preds = %697, %693
  %699 = phi i1 [ true, %693 ], [ false, %697 ]
  call void @llvm.lifetime.start.p0(i64 12, ptr %39) #14
  %700 = load ptr, ptr %38, align 8, !tbaa !5
  %701 = getelementptr inbounds %struct.aiNode, ptr %700, i32 0, i32 1
  %702 = load ptr, ptr %37, align 8, !tbaa !5
  %703 = getelementptr inbounds %struct.aiCamera, ptr %702, i32 0, i32 1
  %704 = invoke { <2 x float>, float } @_ZmlIfE10aiVector3tIT_ERK12aiMatrix4x4tIS1_ERKS2_(ptr noundef nonnull align 4 dereferenceable(64) %701, ptr noundef nonnull align 4 dereferenceable(12) %703)
          to label %705 unwind label %732

705:                                              ; preds = %698
  store { <2 x float>, float } %704, ptr %40, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %39, ptr align 8 %40, i64 12, i1 false)
  %706 = load ptr, ptr %37, align 8, !tbaa !5
  %707 = getelementptr inbounds %struct.aiCamera, ptr %706, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %707, ptr align 4 %39, i64 12, i1 false), !tbaa.struct !61
  call void @llvm.lifetime.end.p0(i64 12, ptr %39) #14
  call void @llvm.lifetime.start.p0(i64 12, ptr %41) #14
  %708 = load ptr, ptr %38, align 8, !tbaa !5
  %709 = getelementptr inbounds %struct.aiNode, ptr %708, i32 0, i32 1
  %710 = load ptr, ptr %37, align 8, !tbaa !5
  %711 = getelementptr inbounds %struct.aiCamera, ptr %710, i32 0, i32 3
  %712 = invoke { <2 x float>, float } @_ZmlIfE10aiVector3tIT_ERK12aiMatrix4x4tIS1_ERKS2_(ptr noundef nonnull align 4 dereferenceable(64) %709, ptr noundef nonnull align 4 dereferenceable(12) %711)
          to label %713 unwind label %736

713:                                              ; preds = %705
  store { <2 x float>, float } %712, ptr %42, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %41, ptr align 8 %42, i64 12, i1 false)
  %714 = load ptr, ptr %37, align 8, !tbaa !5
  %715 = getelementptr inbounds %struct.aiCamera, ptr %714, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %715, ptr align 4 %41, i64 12, i1 false), !tbaa.struct !61
  call void @llvm.lifetime.end.p0(i64 12, ptr %41) #14
  call void @llvm.lifetime.start.p0(i64 12, ptr %43) #14
  call void @llvm.lifetime.start.p0(i64 36, ptr %44) #14
  %716 = load ptr, ptr %38, align 8, !tbaa !5
  %717 = getelementptr inbounds %struct.aiNode, ptr %716, i32 0, i32 1
  invoke void @_ZN12aiMatrix3x3tIfEC2ERK12aiMatrix4x4tIfE(ptr noundef nonnull align 4 dereferenceable(36) %44, ptr noundef nonnull align 4 dereferenceable(64) %717)
          to label %718 unwind label %740

718:                                              ; preds = %713
  %719 = load ptr, ptr %37, align 8, !tbaa !5
  %720 = getelementptr inbounds %struct.aiCamera, ptr %719, i32 0, i32 2
  %721 = invoke { <2 x float>, float } @_ZmlIfE10aiVector3tIT_ERK12aiMatrix3x3tIS1_ERKS2_(ptr noundef nonnull align 4 dereferenceable(36) %44, ptr noundef nonnull align 4 dereferenceable(12) %720)
          to label %722 unwind label %740

722:                                              ; preds = %718
  store { <2 x float>, float } %721, ptr %45, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %43, ptr align 8 %45, i64 12, i1 false)
  %723 = load ptr, ptr %37, align 8, !tbaa !5
  %724 = getelementptr inbounds %struct.aiCamera, ptr %723, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %724, ptr align 4 %43, i64 12, i1 false), !tbaa.struct !61
  call void @llvm.lifetime.end.p0(i64 36, ptr %44) #14
  call void @llvm.lifetime.end.p0(i64 12, ptr %43) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #14
  br label %725

725:                                              ; preds = %722
  %726 = load i32, ptr %36, align 4, !tbaa !13
  %727 = add i32 %726, 1
  store i32 %727, ptr %36, align 4, !tbaa !13
  br label %672, !llvm.loop !62

728:                                              ; preds = %696, %679
  %729 = landingpad { ptr, i32 }
          cleanup
  %730 = extractvalue { ptr, i32 } %729, 0
  store ptr %730, ptr %14, align 8
  %731 = extractvalue { ptr, i32 } %729, 1
  store i32 %731, ptr %15, align 4
  br label %744

732:                                              ; preds = %698
  %733 = landingpad { ptr, i32 }
          cleanup
  %734 = extractvalue { ptr, i32 } %733, 0
  store ptr %734, ptr %14, align 8
  %735 = extractvalue { ptr, i32 } %733, 1
  store i32 %735, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 12, ptr %39) #14
  br label %744

736:                                              ; preds = %705
  %737 = landingpad { ptr, i32 }
          cleanup
  %738 = extractvalue { ptr, i32 } %737, 0
  store ptr %738, ptr %14, align 8
  %739 = extractvalue { ptr, i32 } %737, 1
  store i32 %739, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 12, ptr %41) #14
  br label %744

740:                                              ; preds = %718, %713
  %741 = landingpad { ptr, i32 }
          cleanup
  %742 = extractvalue { ptr, i32 } %741, 0
  store ptr %742, ptr %14, align 8
  %743 = extractvalue { ptr, i32 } %741, 1
  store i32 %743, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 36, ptr %44) #14
  call void @llvm.lifetime.end.p0(i64 12, ptr %43) #14
  br label %744

744:                                              ; preds = %740, %736, %732, %728
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #14
  br label %1273

745:                                              ; preds = %678
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #14
  store i32 0, ptr %46, align 4, !tbaa !13
  br label %746

746:                                              ; preds = %800, %745
  %747 = load i32, ptr %46, align 4, !tbaa !13
  %748 = load ptr, ptr %4, align 8, !tbaa !5
  %749 = getelementptr inbounds %struct.aiScene, ptr %748, i32 0, i32 10
  %750 = load i32, ptr %749, align 8, !tbaa !63
  %751 = icmp ult i32 %747, %750
  br i1 %751, label %753, label %752

752:                                              ; preds = %746
  store i32 36, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #14
  br label %820

753:                                              ; preds = %746
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #14
  %754 = load ptr, ptr %4, align 8, !tbaa !5
  %755 = getelementptr inbounds %struct.aiScene, ptr %754, i32 0, i32 11
  %756 = load ptr, ptr %755, align 8, !tbaa !64
  %757 = load i32, ptr %46, align 4, !tbaa !13
  %758 = zext i32 %757 to i64
  %759 = getelementptr inbounds ptr, ptr %756, i64 %758
  %760 = load ptr, ptr %759, align 8, !tbaa !5
  store ptr %760, ptr %47, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #14
  %761 = load ptr, ptr %4, align 8, !tbaa !5
  %762 = getelementptr inbounds %struct.aiScene, ptr %761, i32 0, i32 1
  %763 = load ptr, ptr %762, align 8, !tbaa !15
  %764 = load ptr, ptr %47, align 8, !tbaa !5
  %765 = getelementptr inbounds %struct.aiLight, ptr %764, i32 0, i32 0
  %766 = invoke noundef ptr @_ZN6aiNode8FindNodeERK8aiString(ptr noundef nonnull align 8 dereferenceable(1144) %763, ptr noundef nonnull align 4 dereferenceable(1028) %765)
          to label %767 unwind label %803

767:                                              ; preds = %753
  store ptr %766, ptr %48, align 8, !tbaa !5
  %768 = load ptr, ptr %48, align 8, !tbaa !5
  %769 = icmp ne ptr null, %768
  br i1 %769, label %772, label %770

770:                                              ; preds = %767
  invoke void @_ZN6Assimp17aiAssertViolationEPKcS1_i(ptr noundef @.str.10, ptr noundef @.str.6, i32 noundef 595)
          to label %771 unwind label %803

771:                                              ; preds = %770
  br label %772

772:                                              ; preds = %771, %767
  %773 = phi i1 [ true, %767 ], [ false, %771 ]
  call void @llvm.lifetime.start.p0(i64 12, ptr %49) #14
  %774 = load ptr, ptr %48, align 8, !tbaa !5
  %775 = getelementptr inbounds %struct.aiNode, ptr %774, i32 0, i32 1
  %776 = load ptr, ptr %47, align 8, !tbaa !5
  %777 = getelementptr inbounds %struct.aiLight, ptr %776, i32 0, i32 2
  %778 = invoke { <2 x float>, float } @_ZmlIfE10aiVector3tIT_ERK12aiMatrix4x4tIS1_ERKS2_(ptr noundef nonnull align 4 dereferenceable(64) %775, ptr noundef nonnull align 4 dereferenceable(12) %777)
          to label %779 unwind label %807

779:                                              ; preds = %772
  store { <2 x float>, float } %778, ptr %50, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %49, ptr align 8 %50, i64 12, i1 false)
  %780 = load ptr, ptr %47, align 8, !tbaa !5
  %781 = getelementptr inbounds %struct.aiLight, ptr %780, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %781, ptr align 4 %49, i64 12, i1 false), !tbaa.struct !61
  call void @llvm.lifetime.end.p0(i64 12, ptr %49) #14
  call void @llvm.lifetime.start.p0(i64 12, ptr %51) #14
  call void @llvm.lifetime.start.p0(i64 36, ptr %52) #14
  %782 = load ptr, ptr %48, align 8, !tbaa !5
  %783 = getelementptr inbounds %struct.aiNode, ptr %782, i32 0, i32 1
  invoke void @_ZN12aiMatrix3x3tIfEC2ERK12aiMatrix4x4tIfE(ptr noundef nonnull align 4 dereferenceable(36) %52, ptr noundef nonnull align 4 dereferenceable(64) %783)
          to label %784 unwind label %811

784:                                              ; preds = %779
  %785 = load ptr, ptr %47, align 8, !tbaa !5
  %786 = getelementptr inbounds %struct.aiLight, ptr %785, i32 0, i32 3
  %787 = invoke { <2 x float>, float } @_ZmlIfE10aiVector3tIT_ERK12aiMatrix3x3tIS1_ERKS2_(ptr noundef nonnull align 4 dereferenceable(36) %52, ptr noundef nonnull align 4 dereferenceable(12) %786)
          to label %788 unwind label %811

788:                                              ; preds = %784
  store { <2 x float>, float } %787, ptr %53, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %51, ptr align 8 %53, i64 12, i1 false)
  %789 = load ptr, ptr %47, align 8, !tbaa !5
  %790 = getelementptr inbounds %struct.aiLight, ptr %789, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %790, ptr align 4 %51, i64 12, i1 false), !tbaa.struct !61
  call void @llvm.lifetime.end.p0(i64 36, ptr %52) #14
  call void @llvm.lifetime.end.p0(i64 12, ptr %51) #14
  call void @llvm.lifetime.start.p0(i64 12, ptr %54) #14
  call void @llvm.lifetime.start.p0(i64 36, ptr %55) #14
  %791 = load ptr, ptr %48, align 8, !tbaa !5
  %792 = getelementptr inbounds %struct.aiNode, ptr %791, i32 0, i32 1
  invoke void @_ZN12aiMatrix3x3tIfEC2ERK12aiMatrix4x4tIfE(ptr noundef nonnull align 4 dereferenceable(36) %55, ptr noundef nonnull align 4 dereferenceable(64) %792)
          to label %793 unwind label %815

793:                                              ; preds = %788
  %794 = load ptr, ptr %47, align 8, !tbaa !5
  %795 = getelementptr inbounds %struct.aiLight, ptr %794, i32 0, i32 4
  %796 = invoke { <2 x float>, float } @_ZmlIfE10aiVector3tIT_ERK12aiMatrix3x3tIS1_ERKS2_(ptr noundef nonnull align 4 dereferenceable(36) %55, ptr noundef nonnull align 4 dereferenceable(12) %795)
          to label %797 unwind label %815

797:                                              ; preds = %793
  store { <2 x float>, float } %796, ptr %56, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %54, ptr align 8 %56, i64 12, i1 false)
  %798 = load ptr, ptr %47, align 8, !tbaa !5
  %799 = getelementptr inbounds %struct.aiLight, ptr %798, i32 0, i32 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %799, ptr align 4 %54, i64 12, i1 false), !tbaa.struct !61
  call void @llvm.lifetime.end.p0(i64 36, ptr %55) #14
  call void @llvm.lifetime.end.p0(i64 12, ptr %54) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #14
  br label %800

800:                                              ; preds = %797
  %801 = load i32, ptr %46, align 4, !tbaa !13
  %802 = add i32 %801, 1
  store i32 %802, ptr %46, align 4, !tbaa !13
  br label %746, !llvm.loop !65

803:                                              ; preds = %770, %753
  %804 = landingpad { ptr, i32 }
          cleanup
  %805 = extractvalue { ptr, i32 } %804, 0
  store ptr %805, ptr %14, align 8
  %806 = extractvalue { ptr, i32 } %804, 1
  store i32 %806, ptr %15, align 4
  br label %819

807:                                              ; preds = %772
  %808 = landingpad { ptr, i32 }
          cleanup
  %809 = extractvalue { ptr, i32 } %808, 0
  store ptr %809, ptr %14, align 8
  %810 = extractvalue { ptr, i32 } %808, 1
  store i32 %810, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 12, ptr %49) #14
  br label %819

811:                                              ; preds = %784, %779
  %812 = landingpad { ptr, i32 }
          cleanup
  %813 = extractvalue { ptr, i32 } %812, 0
  store ptr %813, ptr %14, align 8
  %814 = extractvalue { ptr, i32 } %812, 1
  store i32 %814, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 36, ptr %52) #14
  call void @llvm.lifetime.end.p0(i64 12, ptr %51) #14
  br label %819

815:                                              ; preds = %793, %788
  %816 = landingpad { ptr, i32 }
          cleanup
  %817 = extractvalue { ptr, i32 } %816, 0
  store ptr %817, ptr %14, align 8
  %818 = extractvalue { ptr, i32 } %816, 1
  store i32 %818, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 36, ptr %55) #14
  call void @llvm.lifetime.end.p0(i64 12, ptr %54) #14
  br label %819

819:                                              ; preds = %815, %811, %807, %803
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #14
  br label %1273

820:                                              ; preds = %752
  %821 = getelementptr inbounds %"class.Assimp::PretransformVertices", ptr %90, i32 0, i32 1
  %822 = load i8, ptr %821, align 8, !tbaa !36, !range !22, !noundef !23
  %823 = trunc i8 %822 to i1
  br i1 %823, label %1087, label %824

824:                                              ; preds = %820
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #14
  %825 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 1144) #16
          to label %826 unwind label %876

826:                                              ; preds = %824
  invoke void @_ZN6aiNodeC1Ev(ptr noundef nonnull align 8 dereferenceable(1144) %825)
          to label %827 unwind label %880

827:                                              ; preds = %826
  store ptr %825, ptr %57, align 8, !tbaa !5
  %828 = load ptr, ptr %4, align 8, !tbaa !5
  %829 = getelementptr inbounds %struct.aiScene, ptr %828, i32 0, i32 1
  %830 = load ptr, ptr %829, align 8, !tbaa !15
  %831 = getelementptr inbounds %struct.aiNode, ptr %830, i32 0, i32 0
  %832 = load ptr, ptr %57, align 8, !tbaa !5
  %833 = getelementptr inbounds %struct.aiNode, ptr %832, i32 0, i32 0
  %834 = invoke noundef nonnull align 4 dereferenceable(1028) ptr @_ZN8aiStringaSERKS_(ptr noundef nonnull align 4 dereferenceable(1028) %833, ptr noundef nonnull align 4 dereferenceable(1028) %831)
          to label %835 unwind label %876

835:                                              ; preds = %827
  %836 = load ptr, ptr %4, align 8, !tbaa !5
  %837 = getelementptr inbounds %struct.aiScene, ptr %836, i32 0, i32 1
  %838 = load ptr, ptr %837, align 8, !tbaa !15
  %839 = icmp eq ptr %838, null
  br i1 %839, label %841, label %840

840:                                              ; preds = %835
  call void @_ZN6aiNodeD1Ev(ptr noundef nonnull align 8 dereferenceable(1144) %838) #14
  call void @_ZdlPvm(ptr noundef %838, i64 noundef 1144) #15
  br label %841

841:                                              ; preds = %840, %835
  %842 = load ptr, ptr %57, align 8, !tbaa !5
  %843 = load ptr, ptr %4, align 8, !tbaa !5
  %844 = getelementptr inbounds %struct.aiScene, ptr %843, i32 0, i32 1
  store ptr %842, ptr %844, align 8, !tbaa !15
  %845 = load ptr, ptr %4, align 8, !tbaa !5
  %846 = getelementptr inbounds %struct.aiScene, ptr %845, i32 0, i32 2
  %847 = load i32, ptr %846, align 8, !tbaa !9
  %848 = icmp eq i32 1, %847
  br i1 %848, label %849, label %884

849:                                              ; preds = %841
  %850 = load ptr, ptr %4, align 8, !tbaa !5
  %851 = getelementptr inbounds %struct.aiScene, ptr %850, i32 0, i32 10
  %852 = load i32, ptr %851, align 8, !tbaa !63
  %853 = icmp ne i32 %852, 0
  br i1 %853, label %884, label %854

854:                                              ; preds = %849
  %855 = load ptr, ptr %4, align 8, !tbaa !5
  %856 = getelementptr inbounds %struct.aiScene, ptr %855, i32 0, i32 12
  %857 = load i32, ptr %856, align 8, !tbaa !59
  %858 = icmp ne i32 %857, 0
  br i1 %858, label %884, label %859

859:                                              ; preds = %854
  %860 = load ptr, ptr %4, align 8, !tbaa !5
  %861 = getelementptr inbounds %struct.aiScene, ptr %860, i32 0, i32 1
  %862 = load ptr, ptr %861, align 8, !tbaa !15
  %863 = getelementptr inbounds %struct.aiNode, ptr %862, i32 0, i32 5
  store i32 1, ptr %863, align 8, !tbaa !66
  %864 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef 4) #16
          to label %865 unwind label %876

865:                                              ; preds = %859
  %866 = load ptr, ptr %4, align 8, !tbaa !5
  %867 = getelementptr inbounds %struct.aiScene, ptr %866, i32 0, i32 1
  %868 = load ptr, ptr %867, align 8, !tbaa !15
  %869 = getelementptr inbounds %struct.aiNode, ptr %868, i32 0, i32 6
  store ptr %864, ptr %869, align 8, !tbaa !68
  %870 = load ptr, ptr %4, align 8, !tbaa !5
  %871 = getelementptr inbounds %struct.aiScene, ptr %870, i32 0, i32 1
  %872 = load ptr, ptr %871, align 8, !tbaa !15
  %873 = getelementptr inbounds %struct.aiNode, ptr %872, i32 0, i32 6
  %874 = load ptr, ptr %873, align 8, !tbaa !68
  %875 = getelementptr inbounds i32, ptr %874, i64 0
  store i32 0, ptr %875, align 4, !tbaa !13
  br label %1085

876:                                              ; preds = %859, %827, %824
  %877 = landingpad { ptr, i32 }
          cleanup
  %878 = extractvalue { ptr, i32 } %877, 0
  store ptr %878, ptr %14, align 8
  %879 = extractvalue { ptr, i32 } %877, 1
  store i32 %879, ptr %15, align 4
  br label %1086

880:                                              ; preds = %826
  %881 = landingpad { ptr, i32 }
          cleanup
  %882 = extractvalue { ptr, i32 } %881, 0
  store ptr %882, ptr %14, align 8
  %883 = extractvalue { ptr, i32 } %881, 1
  store i32 %883, ptr %15, align 4
  call void @_ZdlPvm(ptr noundef %825, i64 noundef 1144) #15
  br label %1086

884:                                              ; preds = %854, %849, %841
  %885 = load ptr, ptr %4, align 8, !tbaa !5
  %886 = getelementptr inbounds %struct.aiScene, ptr %885, i32 0, i32 2
  %887 = load i32, ptr %886, align 8, !tbaa !9
  %888 = load ptr, ptr %4, align 8, !tbaa !5
  %889 = getelementptr inbounds %struct.aiScene, ptr %888, i32 0, i32 10
  %890 = load i32, ptr %889, align 8, !tbaa !63
  %891 = add i32 %887, %890
  %892 = load ptr, ptr %4, align 8, !tbaa !5
  %893 = getelementptr inbounds %struct.aiScene, ptr %892, i32 0, i32 12
  %894 = load i32, ptr %893, align 8, !tbaa !59
  %895 = add i32 %891, %894
  %896 = load ptr, ptr %4, align 8, !tbaa !5
  %897 = getelementptr inbounds %struct.aiScene, ptr %896, i32 0, i32 1
  %898 = load ptr, ptr %897, align 8, !tbaa !15
  %899 = getelementptr inbounds %struct.aiNode, ptr %898, i32 0, i32 3
  store i32 %895, ptr %899, align 8, !tbaa !69
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #14
  %900 = load ptr, ptr %4, align 8, !tbaa !5
  %901 = getelementptr inbounds %struct.aiScene, ptr %900, i32 0, i32 1
  %902 = load ptr, ptr %901, align 8, !tbaa !15
  %903 = getelementptr inbounds %struct.aiNode, ptr %902, i32 0, i32 3
  %904 = load i32, ptr %903, align 8, !tbaa !69
  %905 = zext i32 %904 to i64
  %906 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %905, i64 8)
  %907 = extractvalue { i64, i1 } %906, 1
  %908 = extractvalue { i64, i1 } %906, 0
  %909 = select i1 %907, i64 -1, i64 %908
  %910 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %909) #16
          to label %911 unwind label %923

911:                                              ; preds = %884
  %912 = load ptr, ptr %4, align 8, !tbaa !5
  %913 = getelementptr inbounds %struct.aiScene, ptr %912, i32 0, i32 1
  %914 = load ptr, ptr %913, align 8, !tbaa !15
  %915 = getelementptr inbounds %struct.aiNode, ptr %914, i32 0, i32 4
  store ptr %910, ptr %915, align 8, !tbaa !70
  store ptr %910, ptr %58, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #14
  store i32 0, ptr %59, align 4, !tbaa !13
  br label %916

916:                                              ; preds = %961, %911
  %917 = load i32, ptr %59, align 4, !tbaa !13
  %918 = load ptr, ptr %4, align 8, !tbaa !5
  %919 = getelementptr inbounds %struct.aiScene, ptr %918, i32 0, i32 2
  %920 = load i32, ptr %919, align 8, !tbaa !9
  %921 = icmp ult i32 %917, %920
  br i1 %921, label %927, label %922

922:                                              ; preds = %916
  store i32 39, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #14
  br label %975

923:                                              ; preds = %884
  %924 = landingpad { ptr, i32 }
          cleanup
  %925 = extractvalue { ptr, i32 } %924, 0
  store ptr %925, ptr %14, align 8
  %926 = extractvalue { ptr, i32 } %924, 1
  store i32 %926, ptr %15, align 4
  br label %1084

927:                                              ; preds = %916
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #14
  %928 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 1144) #16
          to label %929 unwind label %966

929:                                              ; preds = %927
  invoke void @_ZN6aiNodeC1Ev(ptr noundef nonnull align 8 dereferenceable(1144) %928)
          to label %930 unwind label %970

930:                                              ; preds = %929
  store ptr %928, ptr %60, align 8, !tbaa !5
  %931 = load ptr, ptr %60, align 8, !tbaa !5
  %932 = load ptr, ptr %58, align 8, !tbaa !5
  store ptr %931, ptr %932, align 8, !tbaa !5
  %933 = load ptr, ptr %4, align 8, !tbaa !5
  %934 = getelementptr inbounds %struct.aiScene, ptr %933, i32 0, i32 1
  %935 = load ptr, ptr %934, align 8, !tbaa !15
  %936 = load ptr, ptr %60, align 8, !tbaa !5
  %937 = getelementptr inbounds %struct.aiNode, ptr %936, i32 0, i32 2
  store ptr %935, ptr %937, align 8, !tbaa !71
  %938 = load ptr, ptr %4, align 8, !tbaa !5
  %939 = getelementptr inbounds %struct.aiScene, ptr %938, i32 0, i32 3
  %940 = load ptr, ptr %939, align 8, !tbaa !26
  %941 = load i32, ptr %59, align 4, !tbaa !13
  %942 = zext i32 %941 to i64
  %943 = getelementptr inbounds ptr, ptr %940, i64 %942
  %944 = load ptr, ptr %943, align 8, !tbaa !5
  %945 = getelementptr inbounds %struct.aiMesh, ptr %944, i32 0, i32 14
  %946 = load ptr, ptr %60, align 8, !tbaa !5
  %947 = getelementptr inbounds %struct.aiNode, ptr %946, i32 0, i32 0
  %948 = invoke noundef nonnull align 4 dereferenceable(1028) ptr @_ZN8aiStringaSERKS_(ptr noundef nonnull align 4 dereferenceable(1028) %947, ptr noundef nonnull align 4 dereferenceable(1028) %945)
          to label %949 unwind label %966

949:                                              ; preds = %930
  %950 = load ptr, ptr %60, align 8, !tbaa !5
  %951 = getelementptr inbounds %struct.aiNode, ptr %950, i32 0, i32 5
  store i32 1, ptr %951, align 8, !tbaa !66
  %952 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef 4) #16
          to label %953 unwind label %966

953:                                              ; preds = %949
  %954 = load ptr, ptr %60, align 8, !tbaa !5
  %955 = getelementptr inbounds %struct.aiNode, ptr %954, i32 0, i32 6
  store ptr %952, ptr %955, align 8, !tbaa !68
  %956 = load i32, ptr %59, align 4, !tbaa !13
  %957 = load ptr, ptr %60, align 8, !tbaa !5
  %958 = getelementptr inbounds %struct.aiNode, ptr %957, i32 0, i32 6
  %959 = load ptr, ptr %958, align 8, !tbaa !68
  %960 = getelementptr inbounds i32, ptr %959, i64 0
  store i32 %956, ptr %960, align 4, !tbaa !13
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #14
  br label %961

961:                                              ; preds = %953
  %962 = load i32, ptr %59, align 4, !tbaa !13
  %963 = add i32 %962, 1
  store i32 %963, ptr %59, align 4, !tbaa !13
  %964 = load ptr, ptr %58, align 8, !tbaa !5
  %965 = getelementptr inbounds ptr, ptr %964, i32 1
  store ptr %965, ptr %58, align 8, !tbaa !5
  br label %916, !llvm.loop !72

966:                                              ; preds = %949, %930, %927
  %967 = landingpad { ptr, i32 }
          cleanup
  %968 = extractvalue { ptr, i32 } %967, 0
  store ptr %968, ptr %14, align 8
  %969 = extractvalue { ptr, i32 } %967, 1
  store i32 %969, ptr %15, align 4
  br label %974

970:                                              ; preds = %929
  %971 = landingpad { ptr, i32 }
          cleanup
  %972 = extractvalue { ptr, i32 } %971, 0
  store ptr %972, ptr %14, align 8
  %973 = extractvalue { ptr, i32 } %971, 1
  store i32 %973, ptr %15, align 4
  call void @_ZdlPvm(ptr noundef %928, i64 noundef 1144) #15
  br label %974

974:                                              ; preds = %970, %966
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #14
  br label %1084

975:                                              ; preds = %922
  call void @llvm.lifetime.start.p0(i64 4, ptr %61) #14
  store i32 0, ptr %61, align 4, !tbaa !13
  br label %976

976:                                              ; preds = %1015, %975
  %977 = load i32, ptr %61, align 4, !tbaa !13
  %978 = load ptr, ptr %4, align 8, !tbaa !5
  %979 = getelementptr inbounds %struct.aiScene, ptr %978, i32 0, i32 10
  %980 = load i32, ptr %979, align 8, !tbaa !63
  %981 = icmp ult i32 %977, %980
  br i1 %981, label %983, label %982

982:                                              ; preds = %976
  store i32 42, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #14
  br label %1029

983:                                              ; preds = %976
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #14
  %984 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 1144) #16
          to label %985 unwind label %1020

985:                                              ; preds = %983
  invoke void @_ZN6aiNodeC1Ev(ptr noundef nonnull align 8 dereferenceable(1144) %984)
          to label %986 unwind label %1024

986:                                              ; preds = %985
  store ptr %984, ptr %62, align 8, !tbaa !5
  %987 = load ptr, ptr %62, align 8, !tbaa !5
  %988 = load ptr, ptr %58, align 8, !tbaa !5
  store ptr %987, ptr %988, align 8, !tbaa !5
  %989 = load ptr, ptr %4, align 8, !tbaa !5
  %990 = getelementptr inbounds %struct.aiScene, ptr %989, i32 0, i32 1
  %991 = load ptr, ptr %990, align 8, !tbaa !15
  %992 = load ptr, ptr %62, align 8, !tbaa !5
  %993 = getelementptr inbounds %struct.aiNode, ptr %992, i32 0, i32 2
  store ptr %991, ptr %993, align 8, !tbaa !71
  %994 = load ptr, ptr %62, align 8, !tbaa !5
  %995 = getelementptr inbounds %struct.aiNode, ptr %994, i32 0, i32 0
  %996 = getelementptr inbounds %struct.aiString, ptr %995, i32 0, i32 1
  %997 = getelementptr inbounds [1024 x i8], ptr %996, i64 0, i64 0
  %998 = load i32, ptr %61, align 4, !tbaa !13
  %999 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %997, i64 noundef 1024, ptr noundef @.str.11, i32 noundef %998) #14
  %1000 = load ptr, ptr %62, align 8, !tbaa !5
  %1001 = getelementptr inbounds %struct.aiNode, ptr %1000, i32 0, i32 0
  %1002 = getelementptr inbounds %struct.aiString, ptr %1001, i32 0, i32 0
  store i32 %999, ptr %1002, align 8, !tbaa !73
  %1003 = load ptr, ptr %62, align 8, !tbaa !5
  %1004 = getelementptr inbounds %struct.aiNode, ptr %1003, i32 0, i32 0
  %1005 = load ptr, ptr %4, align 8, !tbaa !5
  %1006 = getelementptr inbounds %struct.aiScene, ptr %1005, i32 0, i32 11
  %1007 = load ptr, ptr %1006, align 8, !tbaa !64
  %1008 = load i32, ptr %61, align 4, !tbaa !13
  %1009 = zext i32 %1008 to i64
  %1010 = getelementptr inbounds ptr, ptr %1007, i64 %1009
  %1011 = load ptr, ptr %1010, align 8, !tbaa !5
  %1012 = getelementptr inbounds %struct.aiLight, ptr %1011, i32 0, i32 0
  %1013 = invoke noundef nonnull align 4 dereferenceable(1028) ptr @_ZN8aiStringaSERKS_(ptr noundef nonnull align 4 dereferenceable(1028) %1012, ptr noundef nonnull align 4 dereferenceable(1028) %1004)
          to label %1014 unwind label %1020

1014:                                             ; preds = %986
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #14
  br label %1015

1015:                                             ; preds = %1014
  %1016 = load i32, ptr %61, align 4, !tbaa !13
  %1017 = add i32 %1016, 1
  store i32 %1017, ptr %61, align 4, !tbaa !13
  %1018 = load ptr, ptr %58, align 8, !tbaa !5
  %1019 = getelementptr inbounds ptr, ptr %1018, i32 1
  store ptr %1019, ptr %58, align 8, !tbaa !5
  br label %976, !llvm.loop !74

1020:                                             ; preds = %986, %983
  %1021 = landingpad { ptr, i32 }
          cleanup
  %1022 = extractvalue { ptr, i32 } %1021, 0
  store ptr %1022, ptr %14, align 8
  %1023 = extractvalue { ptr, i32 } %1021, 1
  store i32 %1023, ptr %15, align 4
  br label %1028

1024:                                             ; preds = %985
  %1025 = landingpad { ptr, i32 }
          cleanup
  %1026 = extractvalue { ptr, i32 } %1025, 0
  store ptr %1026, ptr %14, align 8
  %1027 = extractvalue { ptr, i32 } %1025, 1
  store i32 %1027, ptr %15, align 4
  call void @_ZdlPvm(ptr noundef %984, i64 noundef 1144) #15
  br label %1028

1028:                                             ; preds = %1024, %1020
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #14
  br label %1084

1029:                                             ; preds = %982
  call void @llvm.lifetime.start.p0(i64 4, ptr %63) #14
  store i32 0, ptr %63, align 4, !tbaa !13
  br label %1030

1030:                                             ; preds = %1069, %1029
  %1031 = load i32, ptr %63, align 4, !tbaa !13
  %1032 = load ptr, ptr %4, align 8, !tbaa !5
  %1033 = getelementptr inbounds %struct.aiScene, ptr %1032, i32 0, i32 12
  %1034 = load i32, ptr %1033, align 8, !tbaa !59
  %1035 = icmp ult i32 %1031, %1034
  br i1 %1035, label %1037, label %1036

1036:                                             ; preds = %1030
  store i32 45, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #14
  br label %1083

1037:                                             ; preds = %1030
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #14
  %1038 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 1144) #16
          to label %1039 unwind label %1074

1039:                                             ; preds = %1037
  invoke void @_ZN6aiNodeC1Ev(ptr noundef nonnull align 8 dereferenceable(1144) %1038)
          to label %1040 unwind label %1078

1040:                                             ; preds = %1039
  store ptr %1038, ptr %64, align 8, !tbaa !5
  %1041 = load ptr, ptr %64, align 8, !tbaa !5
  %1042 = load ptr, ptr %58, align 8, !tbaa !5
  store ptr %1041, ptr %1042, align 8, !tbaa !5
  %1043 = load ptr, ptr %4, align 8, !tbaa !5
  %1044 = getelementptr inbounds %struct.aiScene, ptr %1043, i32 0, i32 1
  %1045 = load ptr, ptr %1044, align 8, !tbaa !15
  %1046 = load ptr, ptr %64, align 8, !tbaa !5
  %1047 = getelementptr inbounds %struct.aiNode, ptr %1046, i32 0, i32 2
  store ptr %1045, ptr %1047, align 8, !tbaa !71
  %1048 = load ptr, ptr %64, align 8, !tbaa !5
  %1049 = getelementptr inbounds %struct.aiNode, ptr %1048, i32 0, i32 0
  %1050 = getelementptr inbounds %struct.aiString, ptr %1049, i32 0, i32 1
  %1051 = getelementptr inbounds [1024 x i8], ptr %1050, i64 0, i64 0
  %1052 = load i32, ptr %63, align 4, !tbaa !13
  %1053 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %1051, i64 noundef 1024, ptr noundef @.str.12, i32 noundef %1052) #14
  %1054 = load ptr, ptr %64, align 8, !tbaa !5
  %1055 = getelementptr inbounds %struct.aiNode, ptr %1054, i32 0, i32 0
  %1056 = getelementptr inbounds %struct.aiString, ptr %1055, i32 0, i32 0
  store i32 %1053, ptr %1056, align 8, !tbaa !73
  %1057 = load ptr, ptr %64, align 8, !tbaa !5
  %1058 = getelementptr inbounds %struct.aiNode, ptr %1057, i32 0, i32 0
  %1059 = load ptr, ptr %4, align 8, !tbaa !5
  %1060 = getelementptr inbounds %struct.aiScene, ptr %1059, i32 0, i32 13
  %1061 = load ptr, ptr %1060, align 8, !tbaa !60
  %1062 = load i32, ptr %63, align 4, !tbaa !13
  %1063 = zext i32 %1062 to i64
  %1064 = getelementptr inbounds ptr, ptr %1061, i64 %1063
  %1065 = load ptr, ptr %1064, align 8, !tbaa !5
  %1066 = getelementptr inbounds %struct.aiCamera, ptr %1065, i32 0, i32 0
  %1067 = invoke noundef nonnull align 4 dereferenceable(1028) ptr @_ZN8aiStringaSERKS_(ptr noundef nonnull align 4 dereferenceable(1028) %1066, ptr noundef nonnull align 4 dereferenceable(1028) %1058)
          to label %1068 unwind label %1074

1068:                                             ; preds = %1040
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #14
  br label %1069

1069:                                             ; preds = %1068
  %1070 = load i32, ptr %63, align 4, !tbaa !13
  %1071 = add i32 %1070, 1
  store i32 %1071, ptr %63, align 4, !tbaa !13
  %1072 = load ptr, ptr %58, align 8, !tbaa !5
  %1073 = getelementptr inbounds ptr, ptr %1072, i32 1
  store ptr %1073, ptr %58, align 8, !tbaa !5
  br label %1030, !llvm.loop !75

1074:                                             ; preds = %1040, %1037
  %1075 = landingpad { ptr, i32 }
          cleanup
  %1076 = extractvalue { ptr, i32 } %1075, 0
  store ptr %1076, ptr %14, align 8
  %1077 = extractvalue { ptr, i32 } %1075, 1
  store i32 %1077, ptr %15, align 4
  br label %1082

1078:                                             ; preds = %1039
  %1079 = landingpad { ptr, i32 }
          cleanup
  %1080 = extractvalue { ptr, i32 } %1079, 0
  store ptr %1080, ptr %14, align 8
  %1081 = extractvalue { ptr, i32 } %1079, 1
  store i32 %1081, ptr %15, align 4
  call void @_ZdlPvm(ptr noundef %1038, i64 noundef 1144) #15
  br label %1082

1082:                                             ; preds = %1078, %1074
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #14
  br label %1084

1083:                                             ; preds = %1036
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #14
  br label %1085

1084:                                             ; preds = %1082, %1028, %974, %923
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #14
  br label %1086

1085:                                             ; preds = %1083, %865
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #14
  br label %1092

1086:                                             ; preds = %1084, %880, %876
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #14
  br label %1273

1087:                                             ; preds = %820
  %1088 = load ptr, ptr %4, align 8, !tbaa !5
  %1089 = getelementptr inbounds %struct.aiScene, ptr %1088, i32 0, i32 1
  %1090 = load ptr, ptr %1089, align 8, !tbaa !15
  invoke void @_ZNK6Assimp20PretransformVertices21MakeIdentityTransformEP6aiNode(ptr noundef nonnull align 8 dereferenceable(93) %90, ptr noundef %1090)
          to label %1091 unwind label %197

1091:                                             ; preds = %1087
  br label %1092

1092:                                             ; preds = %1091, %1085
  %1093 = getelementptr inbounds %"class.Assimp::PretransformVertices", ptr %90, i32 0, i32 2
  %1094 = load i8, ptr %1093, align 1, !tbaa !76, !range !22, !noundef !23
  %1095 = trunc i8 %1094 to i1
  br i1 %1095, label %1096, label %1240

1096:                                             ; preds = %1092
  call void @llvm.lifetime.start.p0(i64 12, ptr %65) #14
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %65) #14
  call void @llvm.lifetime.start.p0(i64 12, ptr %66) #14
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %66) #14
  call void @llvm.lifetime.start.p0(i64 1, ptr %67) #14
  invoke void @_ZN6Assimp13MinMaxChooserI10aiVector3tIfEEclERS2_S4_(ptr noundef nonnull align 1 dereferenceable(1) %67, ptr noundef nonnull align 4 dereferenceable(12) %65, ptr noundef nonnull align 4 dereferenceable(12) %66)
          to label %1097 unwind label %1105

1097:                                             ; preds = %1096
  call void @llvm.lifetime.end.p0(i64 1, ptr %67) #14
  call void @llvm.lifetime.start.p0(i64 4, ptr %68) #14
  store i32 0, ptr %68, align 4, !tbaa !13
  br label %1098

1098:                                             ; preds = %1154, %1097
  %1099 = load i32, ptr %68, align 4, !tbaa !13
  %1100 = load ptr, ptr %4, align 8, !tbaa !5
  %1101 = getelementptr inbounds %struct.aiScene, ptr %1100, i32 0, i32 2
  %1102 = load i32, ptr %1101, align 8, !tbaa !9
  %1103 = icmp ult i32 %1099, %1102
  br i1 %1103, label %1109, label %1104

1104:                                             ; preds = %1098
  store i32 48, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #14
  br label %1157

1105:                                             ; preds = %1096
  %1106 = landingpad { ptr, i32 }
          cleanup
  %1107 = extractvalue { ptr, i32 } %1106, 0
  store ptr %1107, ptr %14, align 8
  %1108 = extractvalue { ptr, i32 } %1106, 1
  store i32 %1108, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %67) #14
  br label %1239

1109:                                             ; preds = %1098
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #14
  %1110 = load ptr, ptr %4, align 8, !tbaa !5
  %1111 = getelementptr inbounds %struct.aiScene, ptr %1110, i32 0, i32 3
  %1112 = load ptr, ptr %1111, align 8, !tbaa !26
  %1113 = load i32, ptr %68, align 4, !tbaa !13
  %1114 = zext i32 %1113 to i64
  %1115 = getelementptr inbounds ptr, ptr %1112, i64 %1114
  %1116 = load ptr, ptr %1115, align 8, !tbaa !5
  store ptr %1116, ptr %69, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %70) #14
  store i32 0, ptr %70, align 4, !tbaa !13
  br label %1117

1117:                                             ; preds = %1141, %1109
  %1118 = load i32, ptr %70, align 4, !tbaa !13
  %1119 = load ptr, ptr %69, align 8, !tbaa !5
  %1120 = getelementptr inbounds %struct.aiMesh, ptr %1119, i32 0, i32 1
  %1121 = load i32, ptr %1120, align 4, !tbaa !40
  %1122 = icmp ult i32 %1118, %1121
  br i1 %1122, label %1124, label %1123

1123:                                             ; preds = %1117
  store i32 51, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #14
  br label %1153

1124:                                             ; preds = %1117
  call void @llvm.lifetime.start.p0(i64 12, ptr %71) #14
  %1125 = load ptr, ptr %69, align 8, !tbaa !5
  %1126 = getelementptr inbounds %struct.aiMesh, ptr %1125, i32 0, i32 3
  %1127 = load ptr, ptr %1126, align 8, !tbaa !42
  %1128 = load i32, ptr %70, align 4, !tbaa !13
  %1129 = zext i32 %1128 to i64
  %1130 = getelementptr inbounds %class.aiVector3t, ptr %1127, i64 %1129
  %1131 = invoke { <2 x float>, float } @_ZSt3minIfE10aiVector3tIT_ERKS2_S4_(ptr noundef nonnull align 4 dereferenceable(12) %1130, ptr noundef nonnull align 4 dereferenceable(12) %65)
          to label %1132 unwind label %1144

1132:                                             ; preds = %1124
  store { <2 x float>, float } %1131, ptr %72, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %71, ptr align 8 %72, i64 12, i1 false)
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %65, ptr align 4 %71, i64 12, i1 false), !tbaa.struct !61
  call void @llvm.lifetime.end.p0(i64 12, ptr %71) #14
  call void @llvm.lifetime.start.p0(i64 12, ptr %73) #14
  %1133 = load ptr, ptr %69, align 8, !tbaa !5
  %1134 = getelementptr inbounds %struct.aiMesh, ptr %1133, i32 0, i32 3
  %1135 = load ptr, ptr %1134, align 8, !tbaa !42
  %1136 = load i32, ptr %70, align 4, !tbaa !13
  %1137 = zext i32 %1136 to i64
  %1138 = getelementptr inbounds %class.aiVector3t, ptr %1135, i64 %1137
  %1139 = invoke { <2 x float>, float } @_ZSt3maxIfE10aiVector3tIT_ERKS2_S4_(ptr noundef nonnull align 4 dereferenceable(12) %1138, ptr noundef nonnull align 4 dereferenceable(12) %66)
          to label %1140 unwind label %1148

1140:                                             ; preds = %1132
  store { <2 x float>, float } %1139, ptr %74, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %73, ptr align 8 %74, i64 12, i1 false)
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %66, ptr align 4 %73, i64 12, i1 false), !tbaa.struct !61
  call void @llvm.lifetime.end.p0(i64 12, ptr %73) #14
  br label %1141

1141:                                             ; preds = %1140
  %1142 = load i32, ptr %70, align 4, !tbaa !13
  %1143 = add i32 %1142, 1
  store i32 %1143, ptr %70, align 4, !tbaa !13
  br label %1117, !llvm.loop !77

1144:                                             ; preds = %1124
  %1145 = landingpad { ptr, i32 }
          cleanup
  %1146 = extractvalue { ptr, i32 } %1145, 0
  store ptr %1146, ptr %14, align 8
  %1147 = extractvalue { ptr, i32 } %1145, 1
  store i32 %1147, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 12, ptr %71) #14
  br label %1152

1148:                                             ; preds = %1132
  %1149 = landingpad { ptr, i32 }
          cleanup
  %1150 = extractvalue { ptr, i32 } %1149, 0
  store ptr %1150, ptr %14, align 8
  %1151 = extractvalue { ptr, i32 } %1149, 1
  store i32 %1151, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 12, ptr %73) #14
  br label %1152

1152:                                             ; preds = %1148, %1144
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #14
  br label %1239

1153:                                             ; preds = %1123
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #14
  br label %1154

1154:                                             ; preds = %1153
  %1155 = load i32, ptr %68, align 4, !tbaa !13
  %1156 = add i32 %1155, 1
  store i32 %1156, ptr %68, align 4, !tbaa !13
  br label %1098, !llvm.loop !78

1157:                                             ; preds = %1104
  call void @llvm.lifetime.start.p0(i64 12, ptr %75) #14
  %1158 = invoke { <2 x float>, float } @_ZmiIfE10aiVector3tIT_ERKS2_S4_(ptr noundef nonnull align 4 dereferenceable(12) %66, ptr noundef nonnull align 4 dereferenceable(12) %65)
          to label %1159 unwind label %1180

1159:                                             ; preds = %1157
  store { <2 x float>, float } %1158, ptr %76, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %75, ptr align 8 %76, i64 12, i1 false)
  call void @llvm.lifetime.start.p0(i64 4, ptr %77) #14
  %1160 = getelementptr inbounds %class.aiVector3t, ptr %75, i32 0, i32 0
  %1161 = getelementptr inbounds %class.aiVector3t, ptr %75, i32 0, i32 1
  %1162 = getelementptr inbounds %class.aiVector3t, ptr %75, i32 0, i32 2
  %1163 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %1161, ptr noundef nonnull align 4 dereferenceable(4) %1162)
          to label %1164 unwind label %1184

1164:                                             ; preds = %1159
  %1165 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %1160, ptr noundef nonnull align 4 dereferenceable(4) %1163)
          to label %1166 unwind label %1184

1166:                                             ; preds = %1164
  %1167 = load float, ptr %1165, align 4, !tbaa !25
  %1168 = fmul float %1167, 5.000000e-01
  store float %1168, ptr %77, align 4, !tbaa !25
  call void @llvm.lifetime.start.p0(i64 12, ptr %78) #14
  call void @llvm.lifetime.start.p0(i64 12, ptr %79) #14
  %1169 = invoke { <2 x float>, float } @_ZmlIfE10aiVector3tIT_ERKS2_S1_(ptr noundef nonnull align 4 dereferenceable(12) %75, float noundef 5.000000e-01)
          to label %1170 unwind label %1188

1170:                                             ; preds = %1166
  store { <2 x float>, float } %1169, ptr %80, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %79, ptr align 8 %80, i64 12, i1 false)
  %1171 = invoke { <2 x float>, float } @_ZplIfE10aiVector3tIT_ERKS2_S4_(ptr noundef nonnull align 4 dereferenceable(12) %65, ptr noundef nonnull align 4 dereferenceable(12) %79)
          to label %1172 unwind label %1188

1172:                                             ; preds = %1170
  store { <2 x float>, float } %1171, ptr %81, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %78, ptr align 8 %81, i64 12, i1 false)
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %75, ptr align 4 %78, i64 12, i1 false), !tbaa.struct !61
  call void @llvm.lifetime.end.p0(i64 12, ptr %79) #14
  call void @llvm.lifetime.end.p0(i64 12, ptr %78) #14
  call void @llvm.lifetime.start.p0(i64 4, ptr %82) #14
  store i32 0, ptr %82, align 4, !tbaa !13
  br label %1173

1173:                                             ; preds = %1233, %1172
  %1174 = load i32, ptr %82, align 4, !tbaa !13
  %1175 = load ptr, ptr %4, align 8, !tbaa !5
  %1176 = getelementptr inbounds %struct.aiScene, ptr %1175, i32 0, i32 2
  %1177 = load i32, ptr %1176, align 8, !tbaa !9
  %1178 = icmp ult i32 %1174, %1177
  br i1 %1178, label %1192, label %1179

1179:                                             ; preds = %1173
  store i32 54, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #14
  br label %1236

1180:                                             ; preds = %1157
  %1181 = landingpad { ptr, i32 }
          cleanup
  %1182 = extractvalue { ptr, i32 } %1181, 0
  store ptr %1182, ptr %14, align 8
  %1183 = extractvalue { ptr, i32 } %1181, 1
  store i32 %1183, ptr %15, align 4
  br label %1238

1184:                                             ; preds = %1164, %1159
  %1185 = landingpad { ptr, i32 }
          cleanup
  %1186 = extractvalue { ptr, i32 } %1185, 0
  store ptr %1186, ptr %14, align 8
  %1187 = extractvalue { ptr, i32 } %1185, 1
  store i32 %1187, ptr %15, align 4
  br label %1237

1188:                                             ; preds = %1170, %1166
  %1189 = landingpad { ptr, i32 }
          cleanup
  %1190 = extractvalue { ptr, i32 } %1189, 0
  store ptr %1190, ptr %14, align 8
  %1191 = extractvalue { ptr, i32 } %1189, 1
  store i32 %1191, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 12, ptr %79) #14
  call void @llvm.lifetime.end.p0(i64 12, ptr %78) #14
  br label %1237

1192:                                             ; preds = %1173
  call void @llvm.lifetime.start.p0(i64 8, ptr %83) #14
  %1193 = load ptr, ptr %4, align 8, !tbaa !5
  %1194 = getelementptr inbounds %struct.aiScene, ptr %1193, i32 0, i32 3
  %1195 = load ptr, ptr %1194, align 8, !tbaa !26
  %1196 = load i32, ptr %82, align 4, !tbaa !13
  %1197 = zext i32 %1196 to i64
  %1198 = getelementptr inbounds ptr, ptr %1195, i64 %1197
  %1199 = load ptr, ptr %1198, align 8, !tbaa !5
  store ptr %1199, ptr %83, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %84) #14
  store i32 0, ptr %84, align 4, !tbaa !13
  br label %1200

1200:                                             ; preds = %1225, %1192
  %1201 = load i32, ptr %84, align 4, !tbaa !13
  %1202 = load ptr, ptr %83, align 8, !tbaa !5
  %1203 = getelementptr inbounds %struct.aiMesh, ptr %1202, i32 0, i32 1
  %1204 = load i32, ptr %1203, align 4, !tbaa !40
  %1205 = icmp ult i32 %1201, %1204
  br i1 %1205, label %1207, label %1206

1206:                                             ; preds = %1200
  store i32 57, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %84) #14
  br label %1232

1207:                                             ; preds = %1200
  call void @llvm.lifetime.start.p0(i64 12, ptr %85) #14
  call void @llvm.lifetime.start.p0(i64 12, ptr %86) #14
  %1208 = load ptr, ptr %83, align 8, !tbaa !5
  %1209 = getelementptr inbounds %struct.aiMesh, ptr %1208, i32 0, i32 3
  %1210 = load ptr, ptr %1209, align 8, !tbaa !42
  %1211 = load i32, ptr %84, align 4, !tbaa !13
  %1212 = zext i32 %1211 to i64
  %1213 = getelementptr inbounds %class.aiVector3t, ptr %1210, i64 %1212
  %1214 = invoke { <2 x float>, float } @_ZmiIfE10aiVector3tIT_ERKS2_S4_(ptr noundef nonnull align 4 dereferenceable(12) %1213, ptr noundef nonnull align 4 dereferenceable(12) %75)
          to label %1215 unwind label %1228

1215:                                             ; preds = %1207
  store { <2 x float>, float } %1214, ptr %87, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %86, ptr align 8 %87, i64 12, i1 false)
  %1216 = load float, ptr %77, align 4, !tbaa !25
  %1217 = invoke { <2 x float>, float } @_ZdvIfE10aiVector3tIT_ERKS2_S1_(ptr noundef nonnull align 4 dereferenceable(12) %86, float noundef %1216)
          to label %1218 unwind label %1228

1218:                                             ; preds = %1215
  store { <2 x float>, float } %1217, ptr %88, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %85, ptr align 8 %88, i64 12, i1 false)
  %1219 = load ptr, ptr %83, align 8, !tbaa !5
  %1220 = getelementptr inbounds %struct.aiMesh, ptr %1219, i32 0, i32 3
  %1221 = load ptr, ptr %1220, align 8, !tbaa !42
  %1222 = load i32, ptr %84, align 4, !tbaa !13
  %1223 = zext i32 %1222 to i64
  %1224 = getelementptr inbounds %class.aiVector3t, ptr %1221, i64 %1223
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1224, ptr align 4 %85, i64 12, i1 false), !tbaa.struct !61
  call void @llvm.lifetime.end.p0(i64 12, ptr %86) #14
  call void @llvm.lifetime.end.p0(i64 12, ptr %85) #14
  br label %1225

1225:                                             ; preds = %1218
  %1226 = load i32, ptr %84, align 4, !tbaa !13
  %1227 = add i32 %1226, 1
  store i32 %1227, ptr %84, align 4, !tbaa !13
  br label %1200, !llvm.loop !79

1228:                                             ; preds = %1215, %1207
  %1229 = landingpad { ptr, i32 }
          cleanup
  %1230 = extractvalue { ptr, i32 } %1229, 0
  store ptr %1230, ptr %14, align 8
  %1231 = extractvalue { ptr, i32 } %1229, 1
  store i32 %1231, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 12, ptr %86) #14
  call void @llvm.lifetime.end.p0(i64 12, ptr %85) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %84) #14
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #14
  br label %1237

1232:                                             ; preds = %1206
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #14
  br label %1233

1233:                                             ; preds = %1232
  %1234 = load i32, ptr %82, align 4, !tbaa !13
  %1235 = add i32 %1234, 1
  store i32 %1235, ptr %82, align 4, !tbaa !13
  br label %1173, !llvm.loop !80

1236:                                             ; preds = %1179
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #14
  call void @llvm.lifetime.end.p0(i64 12, ptr %75) #14
  call void @llvm.lifetime.end.p0(i64 12, ptr %66) #14
  call void @llvm.lifetime.end.p0(i64 12, ptr %65) #14
  br label %1240

1237:                                             ; preds = %1228, %1188, %1184
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #14
  br label %1238

1238:                                             ; preds = %1237, %1180
  call void @llvm.lifetime.end.p0(i64 12, ptr %75) #14
  br label %1239

1239:                                             ; preds = %1238, %1152, %1105
  call void @llvm.lifetime.end.p0(i64 12, ptr %66) #14
  call void @llvm.lifetime.end.p0(i64 12, ptr %65) #14
  br label %1273

1240:                                             ; preds = %1236, %1092
  %1241 = invoke noundef zeroext i1 @_ZN6Assimp13DefaultLogger12isNullLoggerEv()
          to label %1242 unwind label %197

1242:                                             ; preds = %1240
  br i1 %1241, label %1271, label %1243

1243:                                             ; preds = %1242
  %1244 = invoke noundef ptr @_ZN6Assimp13DefaultLogger3getEv()
          to label %1245 unwind label %197

1245:                                             ; preds = %1243
  invoke void @_ZN6Assimp6Logger5debugEPKc(ptr noundef nonnull align 8 dereferenceable(12) %1244, ptr noundef @.str.13)
          to label %1246 unwind label %197

1246:                                             ; preds = %1245
  %1247 = invoke noundef ptr @_ZN6Assimp13DefaultLogger3getEv()
          to label %1248 unwind label %197

1248:                                             ; preds = %1246
  call void @llvm.lifetime.start.p0(i64 4, ptr %89) #14
  %1249 = load ptr, ptr %4, align 8, !tbaa !5
  %1250 = getelementptr inbounds %struct.aiScene, ptr %1249, i32 0, i32 1
  %1251 = load ptr, ptr %1250, align 8, !tbaa !15
  %1252 = invoke noundef i32 @_ZNK6Assimp20PretransformVertices10CountNodesEPK6aiNode(ptr noundef nonnull align 8 dereferenceable(93) %90, ptr noundef %1251)
          to label %1253 unwind label %1267

1253:                                             ; preds = %1248
  store i32 %1252, ptr %89, align 4, !tbaa !13
  invoke void @_ZN6Assimp6Logger4infoIJRA9_KcRKjRA12_S2_S6_RA22_S2_jRA15_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(12) %1247, ptr noundef nonnull align 1 dereferenceable(9) @.str.14, ptr noundef nonnull align 4 dereferenceable(4) %7, ptr noundef nonnull align 1 dereferenceable(12) @.str.15, ptr noundef nonnull align 4 dereferenceable(4) %6, ptr noundef nonnull align 1 dereferenceable(22) @.str.16, ptr noundef nonnull align 4 dereferenceable(4) %89, ptr noundef nonnull align 1 dereferenceable(15) @.str.17)
          to label %1254 unwind label %1267

1254:                                             ; preds = %1253
  call void @llvm.lifetime.end.p0(i64 4, ptr %89) #14
  %1255 = invoke noundef ptr @_ZN6Assimp13DefaultLogger3getEv()
          to label %1256 unwind label %197

1256:                                             ; preds = %1254
  %1257 = load ptr, ptr %4, align 8, !tbaa !5
  %1258 = getelementptr inbounds %struct.aiScene, ptr %1257, i32 0, i32 10
  %1259 = load ptr, ptr %4, align 8, !tbaa !5
  %1260 = getelementptr inbounds %struct.aiScene, ptr %1259, i32 0, i32 12
  invoke void @_ZN6Assimp6Logger4infoIJRA6_KcRjRA13_S2_S5_RA10_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(12) %1255, ptr noundef nonnull align 1 dereferenceable(6) @.str.18, ptr noundef nonnull align 4 dereferenceable(4) %1258, ptr noundef nonnull align 1 dereferenceable(13) @.str.19, ptr noundef nonnull align 4 dereferenceable(4) %1260, ptr noundef nonnull align 1 dereferenceable(10) @.str.20)
          to label %1261 unwind label %197

1261:                                             ; preds = %1256
  %1262 = invoke noundef ptr @_ZN6Assimp13DefaultLogger3getEv()
          to label %1263 unwind label %197

1263:                                             ; preds = %1261
  %1264 = load ptr, ptr %4, align 8, !tbaa !5
  %1265 = getelementptr inbounds %struct.aiScene, ptr %1264, i32 0, i32 2
  invoke void @_ZN6Assimp6Logger4infoIJRA7_KcRKjRA42_S2_RjRA2_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(12) %1262, ptr noundef nonnull align 1 dereferenceable(7) @.str.21, ptr noundef nonnull align 4 dereferenceable(4) %5, ptr noundef nonnull align 1 dereferenceable(42) @.str.22, ptr noundef nonnull align 4 dereferenceable(4) %1265, ptr noundef nonnull align 1 dereferenceable(2) @.str.23)
          to label %1266 unwind label %197

1266:                                             ; preds = %1263
  br label %1271

1267:                                             ; preds = %1253, %1248
  %1268 = landingpad { ptr, i32 }
          cleanup
  %1269 = extractvalue { ptr, i32 } %1268, 0
  store ptr %1269, ptr %14, align 8
  %1270 = extractvalue { ptr, i32 } %1268, 1
  store i32 %1270, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %89) #14
  br label %1273

1271:                                             ; preds = %1266, %1242
  call void @_ZNSt6vectorIP6aiMeshSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #14
  call void @llvm.lifetime.end.p0(i64 24, ptr %13) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #14
  br label %1272

1272:                                             ; preds = %1271, %96
  ret void

1273:                                             ; preds = %1267, %1239, %1086, %819, %744, %638, %238, %197
  call void @_ZNSt6vectorIP6aiMeshSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #14
  call void @llvm.lifetime.end.p0(i64 24, ptr %13) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #14
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #14
  br label %1274

1274:                                             ; preds = %1273
  %1275 = load ptr, ptr %14, align 8
  %1276 = load i32, ptr %15, align 4
  %1277 = insertvalue { ptr, i32 } poison, ptr %1275, 0
  %1278 = insertvalue { ptr, i32 } %1277, i32 %1276, 1
  resume { ptr, i32 } %1278

1279:                                             ; preds = %551
  unreachable
}

declare void @_ZN6Assimp6Logger5debugEPKc(ptr noundef nonnull align 8 dereferenceable(12), ptr noundef) #4

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

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

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

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

declare ptr @__cxa_allocate_exception(i64)

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

declare void @__cxa_free_exception(ptr)

; Function Attrs: nounwind
declare void @_ZNSt13runtime_errorD2Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #12

declare void @__cxa_throw(ptr, ptr, ptr)

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef ptr @_ZN6aiNode8FindNodeERK8aiString(ptr noundef nonnull align 8 dereferenceable(1144), ptr noundef nonnull align 4 dereferenceable(1028)) #9 align 2

declare void @_ZN6aiNodeC1Ev(ptr noundef nonnull align 8 dereferenceable(1144)) unnamed_addr #4

; Function Attrs: nounwind
declare void @_ZN6aiNodeD1Ev(ptr noundef nonnull align 8 dereferenceable(1144)) unnamed_addr #12

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Assimp13MinMaxChooserI10aiVector3tIfEEclERS2_S4_(ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12)) #2 align 2

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

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

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

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

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

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

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

declare noundef zeroext i1 @_ZN6Assimp13DefaultLogger12isNullLoggerEv() #4

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Assimp6Logger4infoIJRA9_KcRKjRA12_S2_S6_RA22_S2_jRA15_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(12), ptr noundef nonnull align 1 dereferenceable(9), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 1 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 1 dereferenceable(22), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 1 dereferenceable(15)) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Assimp6Logger4infoIJRA6_KcRjRA13_S2_S5_RA10_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(12), ptr noundef nonnull align 1 dereferenceable(6), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 1 dereferenceable(13), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 1 dereferenceable(10)) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Assimp6Logger4infoIJRA7_KcRKjRA42_S2_RjRA2_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(12), ptr noundef nonnull align 1 dereferenceable(7), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 1 dereferenceable(42), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 1 dereferenceable(2)) #2 align 2

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !11, i64 16}
!10 = !{!"_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, !12, i64 120, !11, i64 1148, !6, i64 1152, !6, i64 1160}
!11 = !{!"int", !7, i64 0}
!12 = !{!"_ZTS8aiString", !11, i64 0, !7, i64 4}
!13 = !{!11, !11, i64 0}
!14 = !{!10, !11, i64 48}
!15 = !{!10, !6, i64 8}
!16 = !{!17, !19, i64 26}
!17 = !{!"_ZTSN6Assimp20PretransformVerticesE", !18, i64 0, !19, i64 24, !19, i64 25, !19, i64 26, !20, i64 28, !19, i64 92}
!18 = !{!"_ZTSN6Assimp11BaseProcessE", !6, i64 8, !6, i64 16}
!19 = !{!"bool", !7, i64 0}
!20 = !{!"_ZTS12aiMatrix4x4tIfE", !21, i64 0, !21, i64 4, !21, i64 8, !21, i64 12, !21, i64 16, !21, i64 20, !21, i64 24, !21, i64 28, !21, i64 32, !21, i64 36, !21, i64 40, !21, i64 44, !21, i64 48, !21, i64 52, !21, i64 56, !21, i64 60}
!21 = !{!"float", !7, i64 0}
!22 = !{i8 0, i8 2}
!23 = !{}
!24 = !{i64 0, i64 4, !25, i64 4, i64 4, !25, i64 8, i64 4, !25, i64 12, i64 4, !25, i64 16, i64 4, !25, i64 20, i64 4, !25, i64 24, i64 4, !25, i64 28, i64 4, !25, i64 32, i64 4, !25, i64 36, i64 4, !25, i64 40, i64 4, !25, i64 44, i64 4, !25, i64 48, i64 4, !25, i64 52, i64 4, !25, i64 56, i64 4, !25, i64 60, i64 4, !25}
!25 = !{!21, !21, i64 0}
!26 = !{!10, !6, i64 24}
!27 = !{!28, !11, i64 216}
!28 = !{!"_ZTS6aiMesh", !11, i64 0, !11, i64 4, !11, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !7, i64 48, !7, i64 112, !7, i64 176, !6, i64 208, !11, i64 216, !6, i64 224, !11, i64 232, !12, i64 236, !11, i64 1264, !6, i64 1272, !29, i64 1280, !30, i64 1284, !6, i64 1312}
!29 = !{!"_ZTS16aiMorphingMethod", !7, i64 0}
!30 = !{!"_ZTS6aiAABB", !31, i64 0, !31, i64 12}
!31 = !{!"_ZTS10aiVector3tIfE", !21, i64 0, !21, i64 4, !21, i64 8}
!32 = !{!28, !6, i64 224}
!33 = distinct !{!33, !34}
!34 = !{!"llvm.loop.mustprogress"}
!35 = distinct !{!35, !34}
!36 = !{!17, !19, i64 24}
!37 = distinct !{!37, !34}
!38 = !{!10, !11, i64 32}
!39 = !{!28, !11, i64 8}
!40 = !{!28, !11, i64 4}
!41 = !{!28, !6, i64 208}
!42 = !{!28, !6, i64 16}
!43 = !{!28, !11, i64 232}
!44 = !{!28, !6, i64 24}
!45 = !{!28, !6, i64 32}
!46 = !{!28, !6, i64 40}
!47 = distinct !{!47, !34}
!48 = distinct !{!48, !34}
!49 = distinct !{!49, !34}
!50 = distinct !{!50, !34}
!51 = !{!52, !11, i64 0}
!52 = !{!"_ZTS6aiFace", !11, i64 0, !6, i64 8}
!53 = !{!52, !6, i64 8}
!54 = distinct !{!54, !34}
!55 = distinct !{!55, !34}
!56 = distinct !{!56, !34}
!57 = !{!10, !6, i64 56}
!58 = distinct !{!58, !34}
!59 = !{!10, !11, i64 96}
!60 = !{!10, !6, i64 104}
!61 = !{i64 0, i64 4, !25, i64 4, i64 4, !25, i64 8, i64 4, !25}
!62 = distinct !{!62, !34}
!63 = !{!10, !11, i64 80}
!64 = !{!10, !6, i64 88}
!65 = distinct !{!65, !34}
!66 = !{!67, !11, i64 1120}
!67 = !{!"_ZTS6aiNode", !12, i64 0, !20, i64 1028, !6, i64 1096, !11, i64 1104, !6, i64 1112, !11, i64 1120, !6, i64 1128, !6, i64 1136}
!68 = !{!67, !6, i64 1128}
!69 = !{!67, !11, i64 1104}
!70 = !{!67, !6, i64 1112}
!71 = !{!67, !6, i64 1096}
!72 = distinct !{!72, !34}
!73 = !{!67, !11, i64 0}
!74 = distinct !{!74, !34}
!75 = distinct !{!75, !34}
!76 = !{!17, !19, i64 25}
!77 = distinct !{!77, !34}
!78 = distinct !{!78, !34}
!79 = distinct !{!79, !34}
!80 = distinct !{!80, !34}


; 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.aiMatrix4x4t = type { float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<aiMesh *, std::allocator<aiMesh *>>::_Vector_impl" }
%"struct.std::_Vector_base<aiMesh *, std::allocator<aiMesh *>>::_Vector_impl" = type { %"struct.std::_Vector_base<aiMesh *, std::allocator<aiMesh *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<aiMesh *, std::allocator<aiMesh *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::__cxx11::list" = type { %"class.std::__cxx11::_List_base" }
%"class.std::__cxx11::_List_base" = type { %"struct.std::__cxx11::_List_base<unsigned int, std::allocator<unsigned int>>::_List_impl" }
%"struct.std::__cxx11::_List_base<unsigned int, std::allocator<unsigned int>>::_List_impl" = type { %"struct.std::__detail::_List_node_header" }
%"struct.std::__detail::_List_node_header" = type { %"struct.std::__detail::_List_node_base", i64 }
%"struct.std::__detail::_List_node_base" = type { ptr, ptr }
%"class.std::vector.3" = type { %"struct.std::_Vector_base.4" }
%"struct.std::_Vector_base.4" = 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.5" = type { i8 }
%"struct.std::_List_const_iterator" = type { ptr }
%"struct.std::_List_iterator" = type { ptr }
%class.aiMatrix3x3t = type { float, float, float, float, float, float, float, float, float }
%class.aiVector3t = type { float, float, float }
%"struct.Assimp::MinMaxChooser" = type { i8 }
%struct.aiFace = type { i32, ptr }
%class.aiColor4t = type { float, float, float, float }

@.str.6 = external hidden unnamed_addr constant [129 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [78 x i8], align 1
@_ZTI17DeadlyImportError = external dso_local constant { ptr, ptr, ptr }, align 8
@.str.10 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.23 = external hidden unnamed_addr constant [2 x i8], align 1

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZNK6Assimp20PretransformVertices10CountNodesEPK6aiNode(ptr noundef nonnull align 8 dereferenceable(93), ptr noundef) local_unnamed_addr #2 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK6Assimp20PretransformVertices11CollectDataEPK7aiScenePK6aiNodejjP6aiMeshPjS9_(ptr noundef nonnull align 8 dereferenceable(93), ptr noundef, ptr noundef, i32 noundef, i32 noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #3 align 2

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZNK12aiMatrix4x4tIfEmlERKS0_(ptr dead_on_unwind noalias writable sret(%class.aiMatrix4x4t) align 4, ptr noundef nonnull align 4 dereferenceable(64), ptr noundef nonnull align 4 dereferenceable(64)) local_unnamed_addr #8 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK6Assimp20PretransformVertices14ApplyTransformEP6aiMeshRK12aiMatrix4x4tIfE(ptr noundef nonnull align 8 dereferenceable(93), ptr noundef, ptr noundef nonnull align 4 dereferenceable(64)) local_unnamed_addr #3 align 2

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

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

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

declare noundef ptr @_ZN6Assimp13DefaultLogger3getEv() local_unnamed_addr #4

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN6Assimp20PretransformVertices7ExecuteEP7aiScene(ptr noundef nonnull align 8 dereferenceable(93) %0, ptr noundef %1) unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca i32, align 4
  %4 = alloca i32, align 4
  %5 = alloca i32, align 4
  %6 = alloca %class.aiMatrix4x4t, align 4
  %7 = alloca %"class.std::vector", align 8
  %8 = alloca %"class.std::__cxx11::list", align 8
  %9 = alloca %"class.std::vector.3", align 8
  %10 = alloca i32, align 4
  %11 = alloca %"class.std::allocator.5", align 1
  %12 = alloca %"struct.std::_List_const_iterator", align 8
  %13 = alloca %"struct.std::_List_iterator", align 8
  %14 = alloca %"struct.std::_List_const_iterator", align 8
  %15 = alloca %"struct.std::_List_iterator", align 8
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca ptr, align 8
  %19 = alloca [2 x i32], align 8
  %20 = alloca %class.aiMatrix3x3t, align 4
  %21 = alloca %class.aiMatrix3x3t, align 4
  %22 = alloca %class.aiMatrix3x3t, align 4
  %23 = alloca %class.aiVector3t, align 8
  %24 = alloca %class.aiVector3t, align 8
  %25 = alloca %"struct.Assimp::MinMaxChooser", align 1
  %26 = alloca %class.aiVector3t, align 8
  %27 = alloca %class.aiVector3t, align 8
  %28 = alloca %class.aiVector3t, align 8
  %29 = alloca i32, align 4
  %30 = tail call noundef ptr @_ZN6Assimp13DefaultLogger3getEv()
  tail call void @_ZN6Assimp6Logger5debugEPKc(ptr noundef nonnull align 8 dereferenceable(12) %30, ptr noundef nonnull @.str.8)
  %31 = getelementptr inbounds i8, ptr %1, i64 16
  %32 = load i32, ptr %31, align 8, !tbaa !5
  %.not = icmp eq i32 %32, 0
  br i1 %.not, label %629, label %33

33:                                               ; preds = %2
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %3) #13
  store i32 %32, ptr %3, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %4) #13
  %34 = getelementptr inbounds i8, ptr %1, i64 48
  %35 = load i32, ptr %34, align 8, !tbaa !13
  store i32 %35, ptr %4, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #13
  %36 = getelementptr inbounds i8, ptr %1, i64 8
  %37 = load ptr, ptr %36, align 8, !tbaa !14
  %38 = tail call noundef i32 @_ZNK6Assimp20PretransformVertices10CountNodesEPK6aiNode(ptr noundef nonnull align 8 dereferenceable(93) %0, ptr noundef %37)
  store i32 %38, ptr %5, align 4, !tbaa !12
  %39 = getelementptr inbounds i8, ptr %0, i64 26
  %40 = load i8, ptr %39, align 2, !tbaa !15, !range !21, !noundef !22
  %41 = trunc nuw i8 %40 to i1
  br i1 %41, label %42, label %48

42:                                               ; preds = %33
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %6) #13
  %43 = getelementptr inbounds i8, ptr %0, i64 28
  %44 = load ptr, ptr %36, align 8, !tbaa !14
  %45 = getelementptr inbounds i8, ptr %44, i64 1028
  call void @_ZNK12aiMatrix4x4tIfEmlERKS0_(ptr dead_on_unwind nonnull writable sret(%class.aiMatrix4x4t) align 4 %6, ptr noundef nonnull align 4 dereferenceable(64) %43, ptr noundef nonnull align 4 dereferenceable(64) %45)
  %46 = load ptr, ptr %36, align 8, !tbaa !14
  %47 = getelementptr inbounds i8, ptr %46, i64 1028
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(64) %47, ptr noundef nonnull align 4 dereferenceable(64) %6, i64 64, i1 false), !tbaa.struct !23
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %6) #13
  br label %48

48:                                               ; preds = %42, %33
  %49 = load ptr, ptr %36, align 8, !tbaa !14
  call void @_ZN6Assimp20PretransformVertices24ComputeAbsoluteTransformEP6aiNode(ptr noundef nonnull align 8 dereferenceable(93) %0, ptr noundef %49)
  %50 = load i32, ptr %31, align 8, !tbaa !5
  %.not458 = icmp eq i32 %50, 0
  br i1 %.not458, label %._crit_edge393, label %.lr.ph392

.lr.ph392:                                        ; preds = %48
  %51 = getelementptr inbounds i8, ptr %1, i64 24
  br label %55

._crit_edge393:                                   ; preds = %77, %48
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %7) #13
  call void @_ZNSt6vectorIP6aiMeshSaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #13
  %52 = getelementptr inbounds i8, ptr %0, i64 24
  %53 = load i8, ptr %52, align 8, !tbaa !25, !range !21, !noundef !22
  %54 = trunc nuw i8 %53 to i1
  br i1 %54, label %81, label %107

55:                                               ; preds = %.lr.ph392, %77
  %indvars.iv483 = phi i64 [ 0, %.lr.ph392 ], [ %indvars.iv.next484, %77 ]
  %56 = load ptr, ptr %51, align 8, !tbaa !26
  %57 = getelementptr inbounds ptr, ptr %56, i64 %indvars.iv483
  %58 = load ptr, ptr %57, align 8, !tbaa !27
  %59 = getelementptr inbounds i8, ptr %58, i64 216
  %60 = load i32, ptr %59, align 8, !tbaa !28
  %.not459 = icmp eq i32 %60, 0
  br i1 %.not459, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %55
  %61 = getelementptr inbounds i8, ptr %58, i64 224
  br label %65

._crit_edge:                                      ; preds = %72, %55
  %62 = getelementptr inbounds i8, ptr %58, i64 224
  %63 = load ptr, ptr %62, align 8, !tbaa !33
  %64 = icmp eq ptr %63, null
  br i1 %64, label %77, label %76

65:                                               ; preds = %.lr.ph, %72
  %66 = phi i32 [ %60, %.lr.ph ], [ %73, %72 ]
  %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %72 ]
  %67 = load ptr, ptr %61, align 8, !tbaa !33
  %68 = getelementptr inbounds ptr, ptr %67, i64 %indvars.iv
  %69 = load ptr, ptr %68, align 8, !tbaa !27
  %70 = icmp eq ptr %69, null
  br i1 %70, label %72, label %71

71:                                               ; preds = %65
  call void @_ZN6aiBoneD2Ev(ptr noundef nonnull align 8 dereferenceable(1120) %69) #13
  call void @_ZdlPvm(ptr noundef nonnull %69, i64 noundef 1120) #14
  %.pre = load i32, ptr %59, align 8, !tbaa !28
  br label %72

72:                                               ; preds = %65, %71
  %73 = phi i32 [ %66, %65 ], [ %.pre, %71 ]
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %74 = zext i32 %73 to i64
  %75 = icmp ult i64 %indvars.iv.next, %74
  br i1 %75, label %65, label %._crit_edge, !llvm.loop !34

76:                                               ; preds = %._crit_edge
  call void @_ZdaPv(ptr noundef nonnull %63) #14
  br label %77

77:                                               ; preds = %76, %._crit_edge
  store ptr null, ptr %62, align 8, !tbaa !33
  %indvars.iv.next484 = add nuw nsw i64 %indvars.iv483, 1
  %78 = load i32, ptr %31, align 8, !tbaa !5
  %79 = zext i32 %78 to i64
  %80 = icmp ult i64 %indvars.iv.next484, %79
  br i1 %80, label %55, label %._crit_edge393, !llvm.loop !36

81:                                               ; preds = %._crit_edge393
  %82 = getelementptr inbounds i8, ptr %1, i64 24
  %83 = load ptr, ptr %82, align 8, !tbaa !26
  %84 = load i32, ptr %31, align 8, !tbaa !5
  %85 = load ptr, ptr %36, align 8, !tbaa !14
  invoke void @_ZNK6Assimp20PretransformVertices14BuildWCSMeshesERSt6vectorIP6aiMeshSaIS3_EEPS3_jP6aiNode(ptr noundef nonnull align 8 dereferenceable(93) %0, ptr noundef nonnull align 8 dereferenceable(24) %7, ptr noundef %83, i32 noundef %84, ptr noundef %85)
          to label %86 unwind label %88

86:                                               ; preds = %81
  invoke void @_ZL22appendNewMeshesToSceneP7aiSceneRSt6vectorIP6aiMeshSaIS3_EE(ptr noundef nonnull %1, ptr noundef nonnull align 8 dereferenceable(24) %7)
          to label %.preheader365 unwind label %88

.preheader365:                                    ; preds = %86
  %87 = load i32, ptr %31, align 8, !tbaa !5
  %.not464 = icmp eq i32 %87, 0
  br i1 %.not464, label %.loopexit366, label %.lr.ph420.preheader

.lr.ph420.preheader:                              ; preds = %.preheader365
  %.pre531 = load ptr, ptr %82, align 8, !tbaa !26
  br label %.lr.ph420

88:                                               ; preds = %625, %623, %622, %620, %614, %613, %611, %608, %526, %107, %86, %81
  %89 = landingpad { ptr, i32 }
          cleanup
  br label %630

.lr.ph420:                                        ; preds = %.lr.ph420.preheader, %95
  %90 = phi ptr [ %.pre531, %.lr.ph420.preheader ], [ %96, %95 ]
  %indvars.iv495 = phi i64 [ 0, %.lr.ph420.preheader ], [ %indvars.iv.next496, %95 ]
  %91 = getelementptr inbounds ptr, ptr %90, i64 %indvars.iv495
  %92 = load ptr, ptr %91, align 8, !tbaa !27
  %93 = getelementptr inbounds i8, ptr %92, i64 224
  %94 = load ptr, ptr %93, align 8, !tbaa !33
  invoke void @_ZNK6Assimp20PretransformVertices14ApplyTransformEP6aiMeshRK12aiMatrix4x4tIfE(ptr noundef nonnull align 8 dereferenceable(93) %0, ptr noundef nonnull %92, ptr noundef nonnull align 4 dereferenceable(64) %94)
          to label %95 unwind label %105

95:                                               ; preds = %.lr.ph420
  %96 = load ptr, ptr %82, align 8, !tbaa !26
  %97 = getelementptr inbounds ptr, ptr %96, i64 %indvars.iv495
  %98 = load ptr, ptr %97, align 8, !tbaa !27
  %99 = getelementptr inbounds i8, ptr %98, i64 224
  store ptr null, ptr %99, align 8, !tbaa !33
  %100 = load ptr, ptr %97, align 8, !tbaa !27
  %101 = getelementptr inbounds i8, ptr %100, i64 216
  store i32 0, ptr %101, align 8, !tbaa !28
  %indvars.iv.next496 = add nuw nsw i64 %indvars.iv495, 1
  %102 = load i32, ptr %31, align 8, !tbaa !5
  %103 = zext i32 %102 to i64
  %104 = icmp ult i64 %indvars.iv.next496, %103
  br i1 %104, label %.lr.ph420, label %.loopexit366, !llvm.loop !37

105:                                              ; preds = %.lr.ph420
  %106 = landingpad { ptr, i32 }
          cleanup
  br label %630

107:                                              ; preds = %._crit_edge393
  %108 = getelementptr inbounds i8, ptr %1, i64 32
  %109 = load i32, ptr %108, align 8, !tbaa !38
  %110 = zext i32 %109 to i64
  %111 = shl nuw nsw i64 %110, 1
  invoke void @_ZNSt6vectorIP6aiMeshSaIS1_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef %111)
          to label %112 unwind label %88

112:                                              ; preds = %107
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %8) #13
  call void @_ZNSt7__cxx114listIjSaIjEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #13
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %9) #13
  %113 = load i32, ptr %31, align 8, !tbaa !5
  %114 = zext i32 %113 to i64
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #13
  store i32 0, ptr %10, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %11) #13
  call void @_ZNSaIjEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #13
  invoke void @_ZNSt6vectorIjSaIjEEC2EmRKjRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %9, i64 noundef %114, ptr noundef nonnull align 4 dereferenceable(4) %10, ptr noundef nonnull align 1 dereferenceable(1) %11)
          to label %115 unwind label %122

115:                                              ; preds = %112
  call void @_ZNSt15__new_allocatorIjED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #13
  %116 = load ptr, ptr %36, align 8, !tbaa !14
  %117 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %9, i64 noundef 0) #13
  invoke void @_ZNK6Assimp20PretransformVertices22BuildMeshRefCountArrayEPK6aiNodePj(ptr noundef nonnull align 8 dereferenceable(93) %0, ptr noundef %116, ptr noundef nonnull %117)
          to label %.preheader378 unwind label %124

.preheader378:                                    ; preds = %115
  %118 = load i32, ptr %108, align 8, !tbaa !38
  %.not460 = icmp eq i32 %118, 0
  br i1 %.not460, label %._crit_edge407, label %.lr.ph406

._crit_edge407:                                   ; preds = %._crit_edge404, %.preheader378
  %119 = call noundef zeroext i1 @_ZNKSt6vectorIP6aiMeshSaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %7) #13
  br i1 %119, label %314, label %.preheader367

.preheader367:                                    ; preds = %._crit_edge407
  %120 = load i32, ptr %31, align 8, !tbaa !5
  %.not461 = icmp eq i32 %120, 0
  br i1 %.not461, label %._crit_edge414, label %.lr.ph413

.lr.ph413:                                        ; preds = %.preheader367
  %121 = getelementptr inbounds i8, ptr %1, i64 24
  br label %322

122:                                              ; preds = %112
  %123 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIjED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %11) #13
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #13
  br label %352

124:                                              ; preds = %316, %115
  %125 = landingpad { ptr, i32 }
          cleanup
  br label %351

.lr.ph406:                                        ; preds = %.preheader378, %._crit_edge404
  %.0304405 = phi i32 [ %131, %._crit_edge404 ], [ 0, %.preheader378 ]
  call void @_ZNSt7__cxx114listIjSaIjEE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %8) #13
  invoke void @_ZN12_GLOBAL__N_114GetVFormatListEPK7aiScenejRNSt7__cxx114listIjSaIjEEE(ptr noundef nonnull %1, i32 noundef %.0304405, ptr noundef nonnull align 8 dereferenceable(24) %8)
          to label %126 unwind label %134

126:                                              ; preds = %.lr.ph406
  invoke void @_ZNSt7__cxx114listIjSaIjEE4sortEv(ptr noundef nonnull align 8 dereferenceable(24) %8)
          to label %127 unwind label %134

127:                                              ; preds = %126
  call void @_ZNSt7__cxx114listIjSaIjEE6uniqueEv(ptr noundef nonnull align 8 dereferenceable(24) %8)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #13
  %128 = call ptr @_ZNSt7__cxx114listIjSaIjEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %8) #13
  store ptr %128, ptr %13, align 8
  call void @_ZNSt20_List_const_iteratorIjEC2ERKSt14_List_iteratorIjE(ptr noundef nonnull align 8 dereferenceable(8) %12, ptr noundef nonnull align 8 dereferenceable(8) %13) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #13
  %129 = call ptr @_ZNSt7__cxx114listIjSaIjEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %8) #13
  store ptr %129, ptr %15, align 8
  call void @_ZNSt20_List_const_iteratorIjEC2ERKSt14_List_iteratorIjE(ptr noundef nonnull align 8 dereferenceable(8) %14, ptr noundef nonnull align 8 dereferenceable(8) %15) #13
  %130 = call noundef zeroext i1 @_ZStneRKSt20_List_const_iteratorIjES2_(ptr noundef nonnull align 8 dereferenceable(8) %12, ptr noundef nonnull align 8 dereferenceable(8) %14) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #13
  br i1 %130, label %.lr.ph403, label %._crit_edge404

._crit_edge404:                                   ; preds = %310, %127
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #13
  %131 = add nuw i32 %.0304405, 1
  %132 = load i32, ptr %108, align 8, !tbaa !38
  %133 = icmp ult i32 %131, %132
  br i1 %133, label %.lr.ph406, label %._crit_edge407, !llvm.loop !39

134:                                              ; preds = %126, %.lr.ph406
  %135 = landingpad { ptr, i32 }
          cleanup
  br label %351

.lr.ph403:                                        ; preds = %127, %310
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %16) #13
  store i32 0, ptr %16, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #13
  store i32 0, ptr %17, align 4, !tbaa !12
  %136 = load ptr, ptr %36, align 8, !tbaa !14
  %137 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt20_List_const_iteratorIjEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %12) #13
  %138 = load i32, ptr %137, align 4, !tbaa !12
  invoke void @_ZNK6Assimp20PretransformVertices21CountVerticesAndFacesEPK7aiScenePK6aiNodejjPjS7_(ptr noundef nonnull align 8 dereferenceable(93) %0, ptr noundef nonnull %1, ptr noundef %136, i32 noundef %.0304405, i32 noundef %138, ptr noundef nonnull %17, ptr noundef nonnull %16)
          to label %139 unwind label %199

139:                                              ; preds = %.lr.ph403
  %140 = load i32, ptr %17, align 4, !tbaa !12
  %141 = icmp ne i32 %140, 0
  %142 = load i32, ptr %16, align 4
  %143 = icmp ne i32 %142, 0
  %or.cond = select i1 %141, i1 %143, i1 false
  br i1 %or.cond, label %144, label %310

144:                                              ; preds = %139
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #13
  %145 = invoke noalias noundef nonnull dereferenceable(1320) ptr @_Znwm(i64 noundef 1320) #15
          to label %146 unwind label %201

146:                                              ; preds = %144
  call void @_ZN6aiMeshC2Ev(ptr noundef nonnull align 8 dereferenceable(1320) %145) #13
  store ptr %145, ptr %18, align 8, !tbaa !27
  invoke void @_ZNSt6vectorIP6aiMeshSaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %7, ptr noundef nonnull align 8 dereferenceable(8) %18)
          to label %147 unwind label %201

147:                                              ; preds = %146
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #13
  %148 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP6aiMeshSaIS1_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %7) #13
  %149 = load ptr, ptr %148, align 8, !tbaa !27
  %150 = load i32, ptr %17, align 4, !tbaa !12
  %151 = getelementptr inbounds i8, ptr %149, i64 8
  store i32 %150, ptr %151, align 8, !tbaa !40
  %152 = load i32, ptr %16, align 4, !tbaa !12
  %153 = getelementptr inbounds i8, ptr %149, i64 4
  store i32 %152, ptr %153, align 4, !tbaa !41
  %154 = zext i32 %150 to i64
  %155 = shl nuw nsw i64 %154, 4
  %156 = or disjoint i64 %155, 8
  %157 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %156) #15
          to label %158 unwind label %.loopexit.split-lp.loopexit.split-lp

158:                                              ; preds = %147
  store i64 %154, ptr %157, align 16
  %159 = getelementptr inbounds i8, ptr %157, i64 8
  %160 = icmp eq i32 %150, 0
  br i1 %160, label %.loopexit377, label %161

161:                                              ; preds = %158
  %162 = getelementptr inbounds %struct.aiFace, ptr %159, i64 %154
  br label %163

163:                                              ; preds = %163, %161
  %164 = phi ptr [ %159, %161 ], [ %165, %163 ]
  call void @_ZN6aiFaceC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %164) #13
  %165 = getelementptr inbounds i8, ptr %164, i64 16
  %166 = icmp eq ptr %165, %162
  br i1 %166, label %.loopexit377.loopexit, label %163

.loopexit377.loopexit:                            ; preds = %163
  %.pre528 = load i32, ptr %16, align 4, !tbaa !12
  br label %.loopexit377

.loopexit377:                                     ; preds = %.loopexit377.loopexit, %158
  %167 = phi i32 [ %.pre528, %.loopexit377.loopexit ], [ %152, %158 ]
  %168 = getelementptr inbounds i8, ptr %149, i64 208
  store ptr %159, ptr %168, align 8, !tbaa !42
  %169 = zext i32 %167 to i64
  %170 = mul nuw nsw i64 %169, 12
  %171 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %170) #15
          to label %172 unwind label %.loopexit.split-lp.loopexit.split-lp

172:                                              ; preds = %.loopexit377
  %173 = icmp eq i32 %167, 0
  br i1 %173, label %.loopexit376, label %174

174:                                              ; preds = %172
  %175 = getelementptr inbounds %class.aiVector3t, ptr %171, i64 %169
  br label %176

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

.loopexit376:                                     ; preds = %176, %172
  %180 = getelementptr inbounds i8, ptr %149, i64 16
  store ptr %171, ptr %180, align 8, !tbaa !43
  %181 = getelementptr inbounds i8, ptr %149, i64 232
  store i32 %.0304405, ptr %181, align 8, !tbaa !44
  %182 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt20_List_const_iteratorIjEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %12) #13
  %183 = load i32, ptr %182, align 4, !tbaa !12
  %184 = and i32 %183, 2
  %.not333 = icmp eq i32 %184, 0
  br i1 %.not333, label %203, label %185

185:                                              ; preds = %.loopexit376
  %186 = load i32, ptr %16, align 4, !tbaa !12
  %187 = zext i32 %186 to i64
  %188 = mul nuw nsw i64 %187, 12
  %189 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %188) #15
          to label %190 unwind label %.loopexit.split-lp.loopexit.split-lp

190:                                              ; preds = %185
  %191 = icmp eq i32 %186, 0
  br i1 %191, label %.loopexit375, label %192

192:                                              ; preds = %190
  %193 = getelementptr inbounds %class.aiVector3t, ptr %189, i64 %187
  br label %194

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

.loopexit375:                                     ; preds = %194, %190
  %198 = getelementptr inbounds i8, ptr %149, i64 24
  store ptr %189, ptr %198, align 8, !tbaa !45
  br label %203

199:                                              ; preds = %.lr.ph403
  %200 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

201:                                              ; preds = %146, %144
  %202 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #13
  br label %.loopexit.split-lp

.loopexit370:                                     ; preds = %280
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

.loopexit.split-lp.loopexit:                      ; preds = %243
  %lpad.loopexit371 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

.loopexit.split-lp.loopexit.split-lp:             ; preds = %220, %207, %185, %.loopexit377, %147
  %lpad.loopexit.split-lp372 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp

203:                                              ; preds = %.loopexit375, %.loopexit376
  %204 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt20_List_const_iteratorIjEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %12) #13
  %205 = load i32, ptr %204, align 4, !tbaa !12
  %206 = and i32 %205, 4
  %.not334 = icmp eq i32 %206, 0
  br i1 %.not334, label %235, label %207

207:                                              ; preds = %203
  %208 = load i32, ptr %16, align 4, !tbaa !12
  %209 = zext i32 %208 to i64
  %210 = mul nuw nsw i64 %209, 12
  %211 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %210) #15
          to label %212 unwind label %.loopexit.split-lp.loopexit.split-lp

212:                                              ; preds = %207
  %213 = icmp eq i32 %208, 0
  br i1 %213, label %220, label %214

214:                                              ; preds = %212
  %215 = getelementptr inbounds %class.aiVector3t, ptr %211, i64 %209
  br label %216

216:                                              ; preds = %216, %214
  %217 = phi ptr [ %211, %214 ], [ %218, %216 ]
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %217) #13
  %218 = getelementptr inbounds i8, ptr %217, i64 12
  %219 = icmp eq ptr %218, %215
  br i1 %219, label %thread-pre-split, label %216

thread-pre-split:                                 ; preds = %216
  %.pr = load i32, ptr %16, align 4, !tbaa !12
  br label %220

220:                                              ; preds = %thread-pre-split, %212
  %221 = phi i32 [ %.pr, %thread-pre-split ], [ 0, %212 ]
  %222 = getelementptr inbounds i8, ptr %149, i64 32
  store ptr %211, ptr %222, align 8, !tbaa !46
  %223 = zext i32 %221 to i64
  %224 = mul nuw nsw i64 %223, 12
  %225 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %224) #15
          to label %226 unwind label %.loopexit.split-lp.loopexit.split-lp

226:                                              ; preds = %220
  %227 = icmp eq i32 %221, 0
  br i1 %227, label %.loopexit374, label %228

228:                                              ; preds = %226
  %229 = getelementptr inbounds %class.aiVector3t, ptr %225, i64 %223
  br label %230

230:                                              ; preds = %230, %228
  %231 = phi ptr [ %225, %228 ], [ %232, %230 ]
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %231) #13
  %232 = getelementptr inbounds i8, ptr %231, i64 12
  %233 = icmp eq ptr %232, %229
  br i1 %233, label %.loopexit374, label %230

.loopexit374:                                     ; preds = %230, %226
  %234 = getelementptr inbounds i8, ptr %149, i64 40
  store ptr %225, ptr %234, align 8, !tbaa !47
  br label %235

235:                                              ; preds = %.loopexit374, %203
  store i32 0, ptr %17, align 4, !tbaa !12
  %236 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt20_List_const_iteratorIjEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %12) #13
  %237 = load i32, ptr %236, align 4, !tbaa !12
  %238 = load i32, ptr %17, align 4, !tbaa !12
  %239 = shl i32 256, %238
  %240 = and i32 %239, %237
  %.not335394 = icmp eq i32 %240, 0
  br i1 %.not335394, label %._crit_edge397, label %.lr.ph396

.lr.ph396:                                        ; preds = %235
  %241 = getelementptr inbounds i8, ptr %149, i64 112
  %242 = getelementptr inbounds i8, ptr %149, i64 176
  br label %243

243:                                              ; preds = %.lr.ph396, %.loopexit369
  %244 = phi i32 [ %238, %.lr.ph396 ], [ %271, %.loopexit369 ]
  %245 = load i32, ptr %16, align 4, !tbaa !12
  %246 = zext i32 %245 to i64
  %247 = mul nuw nsw i64 %246, 12
  %248 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %247) #15
          to label %249 unwind label %.loopexit.split-lp.loopexit

249:                                              ; preds = %243
  %250 = icmp eq i32 %245, 0
  br i1 %250, label %.loopexit369, label %251

251:                                              ; preds = %249
  %252 = getelementptr inbounds %class.aiVector3t, ptr %248, i64 %246
  br label %253

253:                                              ; preds = %253, %251
  %254 = phi ptr [ %248, %251 ], [ %255, %253 ]
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %254) #13
  %255 = getelementptr inbounds i8, ptr %254, i64 12
  %256 = icmp eq ptr %255, %252
  br i1 %256, label %.loopexit369.loopexit, label %253

.loopexit369.loopexit:                            ; preds = %253
  %.pre529 = load i32, ptr %17, align 4, !tbaa !12
  br label %.loopexit369

.loopexit369:                                     ; preds = %.loopexit369.loopexit, %249
  %257 = phi i32 [ %.pre529, %.loopexit369.loopexit ], [ %244, %249 ]
  %258 = zext i32 %257 to i64
  %259 = getelementptr inbounds [8 x ptr], ptr %241, i64 0, i64 %258
  store ptr %248, ptr %259, align 8, !tbaa !27
  %260 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt20_List_const_iteratorIjEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %12) #13
  %261 = load i32, ptr %260, align 4, !tbaa !12
  %262 = load i32, ptr %17, align 4, !tbaa !12
  %263 = shl i32 65536, %262
  %264 = and i32 %263, %261
  %.not342 = icmp eq i32 %264, 0
  %265 = zext i32 %262 to i64
  %266 = getelementptr inbounds [8 x i32], ptr %242, i64 0, i64 %265
  %. = select i1 %.not342, i32 2, i32 3
  store i32 %., ptr %266, align 4, !tbaa !12
  %267 = load i32, ptr %17, align 4, !tbaa !12
  %268 = add i32 %267, 1
  store i32 %268, ptr %17, align 4, !tbaa !12
  %269 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt20_List_const_iteratorIjEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %12) #13
  %270 = load i32, ptr %269, align 4, !tbaa !12
  %271 = load i32, ptr %17, align 4, !tbaa !12
  %272 = shl i32 256, %271
  %273 = and i32 %272, %270
  %.not335 = icmp eq i32 %273, 0
  br i1 %.not335, label %._crit_edge397, label %243, !llvm.loop !48

._crit_edge397:                                   ; preds = %.loopexit369, %235
  store i32 0, ptr %17, align 4, !tbaa !12
  %274 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt20_List_const_iteratorIjEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %12) #13
  %275 = load i32, ptr %274, align 4, !tbaa !12
  %276 = load i32, ptr %17, align 4, !tbaa !12
  %277 = shl i32 16777216, %276
  %278 = and i32 %277, %275
  %.not336398 = icmp eq i32 %278, 0
  br i1 %.not336398, label %._crit_edge401, label %.lr.ph400

.lr.ph400:                                        ; preds = %._crit_edge397
  %279 = getelementptr inbounds i8, ptr %149, i64 48
  br label %280

280:                                              ; preds = %.lr.ph400, %.loopexit368
  %281 = phi i32 [ %276, %.lr.ph400 ], [ %300, %.loopexit368 ]
  %282 = load i32, ptr %16, align 4, !tbaa !12
  %283 = zext i32 %282 to i64
  %284 = shl nuw nsw i64 %283, 4
  %285 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %284) #15
          to label %286 unwind label %.loopexit370

286:                                              ; preds = %280
  %287 = icmp eq i32 %282, 0
  br i1 %287, label %.loopexit368, label %288

288:                                              ; preds = %286
  %289 = getelementptr inbounds %class.aiColor4t, ptr %285, i64 %283
  br label %290

290:                                              ; preds = %290, %288
  %291 = phi ptr [ %285, %288 ], [ %292, %290 ]
  call void @_ZN9aiColor4tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(16) %291) #13
  %292 = getelementptr inbounds i8, ptr %291, i64 16
  %293 = icmp eq ptr %292, %289
  br i1 %293, label %.loopexit368.loopexit, label %290

.loopexit368.loopexit:                            ; preds = %290
  %.pre530 = load i32, ptr %17, align 4, !tbaa !12
  br label %.loopexit368

.loopexit368:                                     ; preds = %.loopexit368.loopexit, %286
  %294 = phi i32 [ %.pre530, %.loopexit368.loopexit ], [ %281, %286 ]
  %295 = add i32 %294, 1
  store i32 %295, ptr %17, align 4, !tbaa !12
  %296 = zext i32 %294 to i64
  %297 = getelementptr inbounds [8 x ptr], ptr %279, i64 0, i64 %296
  store ptr %285, ptr %297, align 8, !tbaa !27
  %298 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt20_List_const_iteratorIjEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %12) #13
  %299 = load i32, ptr %298, align 4, !tbaa !12
  %300 = load i32, ptr %17, align 4, !tbaa !12
  %301 = shl i32 16777216, %300
  %302 = and i32 %301, %299
  %.not336 = icmp eq i32 %302, 0
  br i1 %.not336, label %._crit_edge401, label %280, !llvm.loop !49

._crit_edge401:                                   ; preds = %.loopexit368, %._crit_edge397
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #13
  store i64 0, ptr %19, align 8
  %303 = load ptr, ptr %36, align 8, !tbaa !14
  %304 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt20_List_const_iteratorIjEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %12) #13
  %305 = load i32, ptr %304, align 4, !tbaa !12
  %306 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %9, i64 noundef 0) #13
  invoke void @_ZNK6Assimp20PretransformVertices11CollectDataEPK7aiScenePK6aiNodejjP6aiMeshPjS9_(ptr noundef nonnull align 8 dereferenceable(93) %0, ptr noundef nonnull %1, ptr noundef %303, i32 noundef %.0304405, i32 noundef %305, ptr noundef nonnull %149, ptr noundef nonnull %19, ptr noundef nonnull %306)
          to label %307 unwind label %308

307:                                              ; preds = %._crit_edge401
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #13
  br label %310

308:                                              ; preds = %._crit_edge401
  %309 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #13
  br label %.loopexit.split-lp

310:                                              ; preds = %307, %139
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #13
  %311 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt20_List_const_iteratorIjEppEv(ptr noundef nonnull align 8 dereferenceable(8) %12) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #13
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #13
  %312 = call ptr @_ZNSt7__cxx114listIjSaIjEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %8) #13
  store ptr %312, ptr %15, align 8
  call void @_ZNSt20_List_const_iteratorIjEC2ERKSt14_List_iteratorIjE(ptr noundef nonnull align 8 dereferenceable(8) %14, ptr noundef nonnull align 8 dereferenceable(8) %15) #13
  %313 = call noundef zeroext i1 @_ZStneRKSt20_List_const_iteratorIjES2_(ptr noundef nonnull align 8 dereferenceable(8) %12, ptr noundef nonnull align 8 dereferenceable(8) %14) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #13
  br i1 %313, label %.lr.ph403, label %._crit_edge404, !llvm.loop !50

.loopexit.split-lp:                               ; preds = %.loopexit370, %.loopexit.split-lp.loopexit.split-lp, %.loopexit.split-lp.loopexit, %308, %201, %199
  %.pn.pn = phi { ptr, i32 } [ %202, %201 ], [ %200, %199 ], [ %309, %308 ], [ %lpad.loopexit, %.loopexit370 ], [ %lpad.loopexit371, %.loopexit.split-lp.loopexit ], [ %lpad.loopexit.split-lp372, %.loopexit.split-lp.loopexit.split-lp ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #13
  br label %351

314:                                              ; preds = %._crit_edge407
  %315 = call ptr @__cxa_allocate_exception(i64 16) #13
  invoke void @_ZN17DeadlyImportErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %315, ptr noundef nonnull @.str.9)
          to label %316 unwind label %317

316:                                              ; preds = %314
  invoke void @__cxa_throw(ptr nonnull %315, ptr nonnull @_ZTI17DeadlyImportError, ptr nonnull @_ZNSt13runtime_errorD2Ev) #16
          to label %631 unwind label %124

317:                                              ; preds = %314
  %318 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %315) #13
  br label %351

._crit_edge414:                                   ; preds = %._crit_edge411, %.preheader367
  %319 = call noundef i64 @_ZNKSt6vectorIP6aiMeshSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %7) #13
  %320 = trunc i64 %319 to i32
  store i32 %320, ptr %31, align 8, !tbaa !5
  %.not463 = icmp eq i32 %320, 0
  br i1 %.not463, label %._crit_edge418, label %.lr.ph417

.lr.ph417:                                        ; preds = %._crit_edge414
  %321 = getelementptr inbounds i8, ptr %1, i64 24
  br label %343

322:                                              ; preds = %.lr.ph413, %._crit_edge411
  %indvars.iv489 = phi i64 [ 0, %.lr.ph413 ], [ %indvars.iv.next490, %._crit_edge411 ]
  %323 = load ptr, ptr %121, align 8, !tbaa !26
  %324 = getelementptr inbounds ptr, ptr %323, i64 %indvars.iv489
  %325 = load ptr, ptr %324, align 8, !tbaa !27
  %326 = getelementptr inbounds i8, ptr %325, i64 216
  store i32 0, ptr %326, align 8, !tbaa !28
  %327 = getelementptr inbounds i8, ptr %325, i64 224
  store ptr null, ptr %327, align 8, !tbaa !33
  %328 = getelementptr inbounds i8, ptr %325, i64 8
  %329 = load i32, ptr %328, align 8, !tbaa !40
  %.not462 = icmp eq i32 %329, 0
  br i1 %.not462, label %._crit_edge411, label %.lr.ph410

.lr.ph410:                                        ; preds = %322
  %330 = getelementptr inbounds i8, ptr %325, i64 208
  %331 = load ptr, ptr %330, align 8, !tbaa !42
  %wide.trip.count = zext i32 %329 to i64
  %xtraiter = and i64 %wide.trip.count, 1
  %332 = icmp eq i32 %329, 1
  br i1 %332, label %._crit_edge411.loopexit.unr-lcssa, label %.lr.ph410.new

.lr.ph410.new:                                    ; preds = %.lr.ph410
  %unroll_iter = and i64 %wide.trip.count, 4294967294
  br label %333

333:                                              ; preds = %333, %.lr.ph410.new
  %indvars.iv486 = phi i64 [ 0, %.lr.ph410.new ], [ %indvars.iv.next487.1, %333 ]
  %niter = phi i64 [ 0, %.lr.ph410.new ], [ %niter.next.1, %333 ]
  %334 = getelementptr inbounds %struct.aiFace, ptr %331, i64 %indvars.iv486
  store i32 0, ptr %334, align 8, !tbaa !51
  %335 = getelementptr inbounds %struct.aiFace, ptr %331, i64 %indvars.iv486, i32 1
  store ptr null, ptr %335, align 8, !tbaa !53
  %indvars.iv.next487 = or disjoint i64 %indvars.iv486, 1
  %336 = getelementptr inbounds %struct.aiFace, ptr %331, i64 %indvars.iv.next487
  store i32 0, ptr %336, align 8, !tbaa !51
  %337 = getelementptr inbounds %struct.aiFace, ptr %331, i64 %indvars.iv.next487, i32 1
  store ptr null, ptr %337, align 8, !tbaa !53
  %indvars.iv.next487.1 = add nuw nsw i64 %indvars.iv486, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %._crit_edge411.loopexit.unr-lcssa, label %333, !llvm.loop !54

._crit_edge411.loopexit.unr-lcssa:                ; preds = %333, %.lr.ph410
  %indvars.iv486.unr = phi i64 [ 0, %.lr.ph410 ], [ %indvars.iv.next487.1, %333 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge411, label %._crit_edge411.loopexit.epilog-lcssa

._crit_edge411.loopexit.epilog-lcssa:             ; preds = %._crit_edge411.loopexit.unr-lcssa
  %338 = getelementptr inbounds %struct.aiFace, ptr %331, i64 %indvars.iv486.unr
  store i32 0, ptr %338, align 8, !tbaa !51
  %339 = getelementptr inbounds %struct.aiFace, ptr %331, i64 %indvars.iv486.unr, i32 1
  store ptr null, ptr %339, align 8, !tbaa !53
  br label %._crit_edge411

._crit_edge411:                                   ; preds = %._crit_edge411.loopexit.epilog-lcssa, %._crit_edge411.loopexit.unr-lcssa, %322
  call void @_ZN6aiMeshD2Ev(ptr noundef nonnull align 8 dereferenceable(1320) %325) #13
  call void @_ZdlPvm(ptr noundef nonnull %325, i64 noundef 1320) #14
  %indvars.iv.next490 = add nuw nsw i64 %indvars.iv489, 1
  %340 = load i32, ptr %31, align 8, !tbaa !5
  %341 = zext i32 %340 to i64
  %342 = icmp ult i64 %indvars.iv.next490, %341
  br i1 %342, label %322, label %._crit_edge414, !llvm.loop !55

._crit_edge418:                                   ; preds = %343, %._crit_edge414
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #13
  call void @_ZNSt7__cxx1110_List_baseIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) #13
  br label %.loopexit366

343:                                              ; preds = %.lr.ph417, %343
  %indvars.iv492 = phi i64 [ 0, %.lr.ph417 ], [ %indvars.iv.next493, %343 ]
  %344 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP6aiMeshSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef %indvars.iv492) #13
  %345 = load ptr, ptr %344, align 8, !tbaa !27
  %346 = load ptr, ptr %321, align 8, !tbaa !26
  %347 = getelementptr inbounds ptr, ptr %346, i64 %indvars.iv492
  store ptr %345, ptr %347, align 8, !tbaa !27
  %indvars.iv.next493 = add nuw nsw i64 %indvars.iv492, 1
  %348 = load i32, ptr %31, align 8, !tbaa !5
  %349 = zext i32 %348 to i64
  %350 = icmp ult i64 %indvars.iv.next493, %349
  br i1 %350, label %343, label %._crit_edge418, !llvm.loop !56

351:                                              ; preds = %134, %.loopexit.split-lp, %317, %124
  %.pn.pn.pn.pn = phi { ptr, i32 } [ %125, %124 ], [ %318, %317 ], [ %.pn.pn, %.loopexit.split-lp ], [ %135, %134 ]
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #13
  br label %352

352:                                              ; preds = %351, %122
  %.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn, %351 ], [ %123, %122 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #13
  call void @_ZNSt7__cxx1110_List_baseIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) #13
  br label %630

.loopexit366:                                     ; preds = %95, %.preheader365, %._crit_edge418
  %353 = load i32, ptr %34, align 8, !tbaa !13
  %.not465 = icmp eq i32 %353, 0
  br i1 %.not465, label %._crit_edge424, label %.lr.ph423

.lr.ph423:                                        ; preds = %.loopexit366
  %354 = getelementptr inbounds i8, ptr %1, i64 56
  br label %358

._crit_edge424:                                   ; preds = %365, %.loopexit366
  %355 = getelementptr inbounds i8, ptr %1, i64 56
  %356 = load ptr, ptr %355, align 8, !tbaa !57
  %357 = icmp eq ptr %356, null
  br i1 %357, label %370, label %369

358:                                              ; preds = %.lr.ph423, %365
  %359 = phi i32 [ %353, %.lr.ph423 ], [ %366, %365 ]
  %indvars.iv498 = phi i64 [ 0, %.lr.ph423 ], [ %indvars.iv.next499, %365 ]
  %360 = load ptr, ptr %354, align 8, !tbaa !57
  %361 = getelementptr inbounds ptr, ptr %360, i64 %indvars.iv498
  %362 = load ptr, ptr %361, align 8, !tbaa !27
  %363 = icmp eq ptr %362, null
  br i1 %363, label %365, label %364

364:                                              ; preds = %358
  call void @_ZN11aiAnimationD2Ev(ptr noundef nonnull align 8 dereferenceable(1096) %362) #13
  call void @_ZdlPvm(ptr noundef nonnull %362, i64 noundef 1096) #14
  %.pre532 = load i32, ptr %34, align 8, !tbaa !13
  br label %365

365:                                              ; preds = %358, %364
  %366 = phi i32 [ %359, %358 ], [ %.pre532, %364 ]
  %indvars.iv.next499 = add nuw nsw i64 %indvars.iv498, 1
  %367 = zext i32 %366 to i64
  %368 = icmp ult i64 %indvars.iv.next499, %367
  br i1 %368, label %358, label %._crit_edge424, !llvm.loop !58

369:                                              ; preds = %._crit_edge424
  call void @_ZdaPv(ptr noundef nonnull %356) #14
  br label %370

370:                                              ; preds = %369, %._crit_edge424
  store ptr null, ptr %355, align 8, !tbaa !57
  store i32 0, ptr %34, align 8, !tbaa !13
  %371 = getelementptr inbounds i8, ptr %1, i64 96
  %372 = load i32, ptr %371, align 8, !tbaa !59
  %.not466 = icmp eq i32 %372, 0
  br i1 %.not466, label %.preheader364, label %.lr.ph427

.lr.ph427:                                        ; preds = %370
  %373 = getelementptr inbounds i8, ptr %1, i64 104
  br label %377

.preheader364:                                    ; preds = %385, %370
  %374 = getelementptr inbounds i8, ptr %1, i64 80
  %375 = load i32, ptr %374, align 8, !tbaa !60
  %.not467 = icmp eq i32 %375, 0
  br i1 %.not467, label %._crit_edge430, label %.lr.ph429

.lr.ph429:                                        ; preds = %.preheader364
  %376 = getelementptr inbounds i8, ptr %1, i64 88
  br label %400

377:                                              ; preds = %.lr.ph427, %385
  %indvars.iv501 = phi i64 [ 0, %.lr.ph427 ], [ %indvars.iv.next502, %385 ]
  %378 = load ptr, ptr %373, align 8, !tbaa !61
  %379 = getelementptr inbounds ptr, ptr %378, i64 %indvars.iv501
  %380 = load ptr, ptr %379, align 8, !tbaa !27
  %381 = load ptr, ptr %36, align 8, !tbaa !14
  %382 = invoke noundef ptr @_ZN6aiNode8FindNodeERK8aiString(ptr noundef nonnull align 8 dereferenceable(1144) %381, ptr noundef nonnull align 4 dereferenceable(1028) %380)
          to label %383 unwind label %396

383:                                              ; preds = %377
  %.not360 = icmp eq ptr %382, null
  br i1 %.not360, label %384, label %385

384:                                              ; preds = %383
  invoke void @_ZN6Assimp17aiAssertViolationEPKcS1_i(ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.6, i32 noundef 583)
          to label %385 unwind label %396

385:                                              ; preds = %384, %383
  %386 = getelementptr inbounds i8, ptr %382, i64 1028
  %387 = getelementptr inbounds i8, ptr %380, i64 1028
  %388 = call { <2 x float>, float } @_ZmlIfE10aiVector3tIT_ERK12aiMatrix4x4tIS1_ERKS2_(ptr noundef nonnull align 4 dereferenceable(64) %386, ptr noundef nonnull align 4 dereferenceable(12) %387)
  %.fca.0.extract131 = extractvalue { <2 x float>, float } %388, 0
  %.fca.1.extract132 = extractvalue { <2 x float>, float } %388, 1
  store <2 x float> %.fca.0.extract131, ptr %387, align 4
  %.sroa.4136.0..sroa_idx = getelementptr inbounds i8, ptr %380, i64 1036
  store float %.fca.1.extract132, ptr %.sroa.4136.0..sroa_idx, align 4, !tbaa !24
  %389 = getelementptr inbounds i8, ptr %380, i64 1052
  %390 = call { <2 x float>, float } @_ZmlIfE10aiVector3tIT_ERK12aiMatrix4x4tIS1_ERKS2_(ptr noundef nonnull align 4 dereferenceable(64) %386, ptr noundef nonnull align 4 dereferenceable(12) %389)
  %.fca.0.extract125 = extractvalue { <2 x float>, float } %390, 0
  %.fca.1.extract126 = extractvalue { <2 x float>, float } %390, 1
  store <2 x float> %.fca.0.extract125, ptr %389, align 4
  %.sroa.4130.0..sroa_idx = getelementptr inbounds i8, ptr %380, i64 1060
  store float %.fca.1.extract126, ptr %.sroa.4130.0..sroa_idx, align 4, !tbaa !24
  call void @llvm.lifetime.start.p0(i64 36, ptr nonnull %20) #13
  call void @_ZN12aiMatrix3x3tIfEC2ERK12aiMatrix4x4tIfE(ptr noundef nonnull align 4 dereferenceable(36) %20, ptr noundef nonnull align 4 dereferenceable(64) %386)
  %391 = getelementptr inbounds i8, ptr %380, i64 1040
  %392 = call { <2 x float>, float } @_ZmlIfE10aiVector3tIT_ERK12aiMatrix3x3tIS1_ERKS2_(ptr noundef nonnull align 4 dereferenceable(36) %20, ptr noundef nonnull align 4 dereferenceable(12) %391)
  %.fca.0.extract119 = extractvalue { <2 x float>, float } %392, 0
  %.fca.1.extract120 = extractvalue { <2 x float>, float } %392, 1
  store <2 x float> %.fca.0.extract119, ptr %391, align 4
  %.sroa.4124.0..sroa_idx = getelementptr inbounds i8, ptr %380, i64 1048
  store float %.fca.1.extract120, ptr %.sroa.4124.0..sroa_idx, align 4, !tbaa !24
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %20) #13
  %indvars.iv.next502 = add nuw nsw i64 %indvars.iv501, 1
  %393 = load i32, ptr %371, align 8, !tbaa !59
  %394 = zext i32 %393 to i64
  %395 = icmp ult i64 %indvars.iv.next502, %394
  br i1 %395, label %377, label %.preheader364, !llvm.loop !62

396:                                              ; preds = %384, %377
  %397 = landingpad { ptr, i32 }
          cleanup
  br label %630

._crit_edge430:                                   ; preds = %408, %.preheader364
  %398 = load i8, ptr %52, align 8, !tbaa !25, !range !21, !noundef !22
  %399 = trunc nuw i8 %398 to i1
  br i1 %399, label %526, label %421

400:                                              ; preds = %.lr.ph429, %408
  %indvars.iv504 = phi i64 [ 0, %.lr.ph429 ], [ %indvars.iv.next505, %408 ]
  %401 = load ptr, ptr %376, align 8, !tbaa !63
  %402 = getelementptr inbounds ptr, ptr %401, i64 %indvars.iv504
  %403 = load ptr, ptr %402, align 8, !tbaa !27
  %404 = load ptr, ptr %36, align 8, !tbaa !14
  %405 = invoke noundef ptr @_ZN6aiNode8FindNodeERK8aiString(ptr noundef nonnull align 8 dereferenceable(1144) %404, ptr noundef nonnull align 4 dereferenceable(1028) %403)
          to label %406 unwind label %419

406:                                              ; preds = %400
  %.not359 = icmp eq ptr %405, null
  br i1 %.not359, label %407, label %408

407:                                              ; preds = %406
  invoke void @_ZN6Assimp17aiAssertViolationEPKcS1_i(ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.6, i32 noundef 595)
          to label %408 unwind label %419

408:                                              ; preds = %407, %406
  %409 = getelementptr inbounds i8, ptr %405, i64 1028
  %410 = getelementptr inbounds i8, ptr %403, i64 1032
  %411 = call { <2 x float>, float } @_ZmlIfE10aiVector3tIT_ERK12aiMatrix4x4tIS1_ERKS2_(ptr noundef nonnull align 4 dereferenceable(64) %409, ptr noundef nonnull align 4 dereferenceable(12) %410)
  %.fca.0.extract99 = extractvalue { <2 x float>, float } %411, 0
  %.fca.1.extract100 = extractvalue { <2 x float>, float } %411, 1
  store <2 x float> %.fca.0.extract99, ptr %410, align 4
  %.sroa.4104.0..sroa_idx = getelementptr inbounds i8, ptr %403, i64 1040
  store float %.fca.1.extract100, ptr %.sroa.4104.0..sroa_idx, align 4, !tbaa !24
  call void @llvm.lifetime.start.p0(i64 36, ptr nonnull %21) #13
  call void @_ZN12aiMatrix3x3tIfEC2ERK12aiMatrix4x4tIfE(ptr noundef nonnull align 4 dereferenceable(36) %21, ptr noundef nonnull align 4 dereferenceable(64) %409)
  %412 = getelementptr inbounds i8, ptr %403, i64 1044
  %413 = call { <2 x float>, float } @_ZmlIfE10aiVector3tIT_ERK12aiMatrix3x3tIS1_ERKS2_(ptr noundef nonnull align 4 dereferenceable(36) %21, ptr noundef nonnull align 4 dereferenceable(12) %412)
  %.fca.0.extract93 = extractvalue { <2 x float>, float } %413, 0
  %.fca.1.extract94 = extractvalue { <2 x float>, float } %413, 1
  store <2 x float> %.fca.0.extract93, ptr %412, align 4
  %.sroa.498.0..sroa_idx = getelementptr inbounds i8, ptr %403, i64 1052
  store float %.fca.1.extract94, ptr %.sroa.498.0..sroa_idx, align 4, !tbaa !24
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %21) #13
  call void @llvm.lifetime.start.p0(i64 36, ptr nonnull %22) #13
  call void @_ZN12aiMatrix3x3tIfEC2ERK12aiMatrix4x4tIfE(ptr noundef nonnull align 4 dereferenceable(36) %22, ptr noundef nonnull align 4 dereferenceable(64) %409)
  %414 = getelementptr inbounds i8, ptr %403, i64 1056
  %415 = call { <2 x float>, float } @_ZmlIfE10aiVector3tIT_ERK12aiMatrix3x3tIS1_ERKS2_(ptr noundef nonnull align 4 dereferenceable(36) %22, ptr noundef nonnull align 4 dereferenceable(12) %414)
  %.fca.0.extract88 = extractvalue { <2 x float>, float } %415, 0
  %.fca.1.extract89 = extractvalue { <2 x float>, float } %415, 1
  store <2 x float> %.fca.0.extract88, ptr %414, align 4
  %.sroa.4.0..sroa_idx = getelementptr inbounds i8, ptr %403, i64 1064
  store float %.fca.1.extract89, ptr %.sroa.4.0..sroa_idx, align 4, !tbaa !24
  call void @llvm.lifetime.end.p0(i64 36, ptr nonnull %22) #13
  %indvars.iv.next505 = add nuw nsw i64 %indvars.iv504, 1
  %416 = load i32, ptr %374, align 8, !tbaa !60
  %417 = zext i32 %416 to i64
  %418 = icmp ult i64 %indvars.iv.next505, %417
  br i1 %418, label %400, label %._crit_edge430, !llvm.loop !64

419:                                              ; preds = %407, %400
  %420 = landingpad { ptr, i32 }
          cleanup
  br label %630

421:                                              ; preds = %._crit_edge430
  %422 = invoke noalias noundef nonnull dereferenceable(1144) ptr @_Znwm(i64 noundef 1144) #15
          to label %423 unwind label %439

423:                                              ; preds = %421
  invoke void @_ZN6aiNodeC1Ev(ptr noundef nonnull align 8 dereferenceable(1144) %422)
          to label %424 unwind label %441

424:                                              ; preds = %423
  %425 = load ptr, ptr %36, align 8, !tbaa !14
  %426 = call noundef nonnull align 4 dereferenceable(1028) ptr @_ZN8aiStringaSERKS_(ptr noundef nonnull align 4 dereferenceable(1028) %422, ptr noundef nonnull align 4 dereferenceable(1028) %425)
  %427 = load ptr, ptr %36, align 8, !tbaa !14
  %428 = icmp eq ptr %427, null
  br i1 %428, label %430, label %429

429:                                              ; preds = %424
  call void @_ZN6aiNodeD1Ev(ptr noundef nonnull align 8 dereferenceable(1144) %427) #13
  call void @_ZdlPvm(ptr noundef nonnull %427, i64 noundef 1144) #14
  br label %430

430:                                              ; preds = %429, %424
  store ptr %422, ptr %36, align 8, !tbaa !14
  %431 = load i32, ptr %31, align 8, !tbaa !5
  %432 = icmp eq i32 %431, 1
  %.pre533 = load i32, ptr %374, align 8, !tbaa !60
  br i1 %432, label %433, label %._crit_edge534

._crit_edge534:                                   ; preds = %430
  %.pre535 = load i32, ptr %371, align 8, !tbaa !59
  br label %443

433:                                              ; preds = %430
  %.not343 = icmp eq i32 %.pre533, 0
  %.pre536 = load i32, ptr %371, align 8, !tbaa !59
  %.not344 = icmp eq i32 %.pre536, 0
  %or.cond547 = select i1 %.not343, i1 %.not344, i1 false
  br i1 %or.cond547, label %434, label %443

434:                                              ; preds = %433
  %435 = getelementptr inbounds i8, ptr %422, i64 1120
  store i32 1, ptr %435, align 8, !tbaa !65
  %436 = invoke noalias noundef nonnull dereferenceable(4) ptr @_Znam(i64 noundef 4) #15
          to label %437 unwind label %439

437:                                              ; preds = %434
  %438 = getelementptr inbounds i8, ptr %422, i64 1128
  store ptr %436, ptr %438, align 8, !tbaa !67
  store i32 0, ptr %436, align 4, !tbaa !12
  br label %.loopexit

439:                                              ; preds = %434, %421
  %440 = landingpad { ptr, i32 }
          cleanup
  br label %630

441:                                              ; preds = %423
  %442 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %422, i64 noundef 1144) #14
  br label %630

443:                                              ; preds = %._crit_edge534, %433
  %444 = phi i32 [ %.pre535, %._crit_edge534 ], [ %.pre536, %433 ]
  %445 = add i32 %.pre533, %431
  %446 = add i32 %445, %444
  %447 = getelementptr inbounds i8, ptr %422, i64 1104
  store i32 %446, ptr %447, align 8, !tbaa !68
  %448 = zext i32 %446 to i64
  %449 = shl nuw nsw i64 %448, 3
  %450 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %449) #15
          to label %451 unwind label %456

451:                                              ; preds = %443
  %452 = getelementptr inbounds i8, ptr %422, i64 1112
  store ptr %450, ptr %452, align 8, !tbaa !69
  %.not468 = icmp eq i32 %431, 0
  br i1 %.not468, label %.preheader363, label %.lr.ph434

.lr.ph434:                                        ; preds = %451
  %453 = getelementptr inbounds i8, ptr %1, i64 24
  br label %458

.preheader363.loopexit:                           ; preds = %471
  %.pre537 = load i32, ptr %374, align 8, !tbaa !60
  br label %.preheader363

.preheader363:                                    ; preds = %.preheader363.loopexit, %451
  %454 = phi i32 [ %.pre533, %451 ], [ %.pre537, %.preheader363.loopexit ]
  %.0312.lcssa = phi ptr [ %450, %451 ], [ %474, %.preheader363.loopexit ]
  %.not469 = icmp eq i32 %454, 0
  br i1 %.not469, label %.preheader, label %.lr.ph437

.lr.ph437:                                        ; preds = %.preheader363
  %455 = getelementptr inbounds i8, ptr %1, i64 88
  br label %484

456:                                              ; preds = %443
  %457 = landingpad { ptr, i32 }
          cleanup
  br label %630

458:                                              ; preds = %.lr.ph434, %471
  %indvars.iv507 = phi i64 [ 0, %.lr.ph434 ], [ %indvars.iv.next508, %471 ]
  %.0312432 = phi ptr [ %450, %.lr.ph434 ], [ %474, %471 ]
  %459 = invoke noalias noundef nonnull dereferenceable(1144) ptr @_Znwm(i64 noundef 1144) #15
          to label %460 unwind label %478

460:                                              ; preds = %458
  invoke void @_ZN6aiNodeC1Ev(ptr noundef nonnull align 8 dereferenceable(1144) %459)
          to label %461 unwind label %480

461:                                              ; preds = %460
  store ptr %459, ptr %.0312432, align 8, !tbaa !27
  %462 = load ptr, ptr %36, align 8, !tbaa !14
  %463 = getelementptr inbounds i8, ptr %459, i64 1096
  store ptr %462, ptr %463, align 8, !tbaa !70
  %464 = load ptr, ptr %453, align 8, !tbaa !26
  %465 = getelementptr inbounds ptr, ptr %464, i64 %indvars.iv507
  %466 = load ptr, ptr %465, align 8, !tbaa !27
  %467 = getelementptr inbounds i8, ptr %466, i64 236
  %468 = call noundef nonnull align 4 dereferenceable(1028) ptr @_ZN8aiStringaSERKS_(ptr noundef nonnull align 4 dereferenceable(1028) %459, ptr noundef nonnull align 4 dereferenceable(1028) %467)
  %469 = getelementptr inbounds i8, ptr %459, i64 1120
  store i32 1, ptr %469, align 8, !tbaa !65
  %470 = invoke noalias noundef nonnull dereferenceable(4) ptr @_Znam(i64 noundef 4) #15
          to label %471 unwind label %478

471:                                              ; preds = %461
  %472 = getelementptr inbounds i8, ptr %459, i64 1128
  store ptr %470, ptr %472, align 8, !tbaa !67
  %473 = trunc nuw i64 %indvars.iv507 to i32
  store i32 %473, ptr %470, align 4, !tbaa !12
  %indvars.iv.next508 = add nuw nsw i64 %indvars.iv507, 1
  %474 = getelementptr inbounds i8, ptr %.0312432, i64 8
  %475 = load i32, ptr %31, align 8, !tbaa !5
  %476 = zext i32 %475 to i64
  %477 = icmp ult i64 %indvars.iv.next508, %476
  br i1 %477, label %458, label %.preheader363.loopexit, !llvm.loop !71

478:                                              ; preds = %461, %458
  %479 = landingpad { ptr, i32 }
          cleanup
  br label %630

480:                                              ; preds = %460
  %481 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %459, i64 noundef 1144) #14
  br label %630

.preheader:                                       ; preds = %487, %.preheader363
  %.1313.lcssa = phi ptr [ %.0312.lcssa, %.preheader363 ], [ %497, %487 ]
  %482 = load i32, ptr %371, align 8, !tbaa !59
  %.not470 = icmp eq i32 %482, 0
  br i1 %.not470, label %.loopexit, label %.lr.ph441

.lr.ph441:                                        ; preds = %.preheader
  %483 = getelementptr inbounds i8, ptr %1, i64 104
  br label %505

484:                                              ; preds = %.lr.ph437, %487
  %indvars.iv510 = phi i64 [ 0, %.lr.ph437 ], [ %indvars.iv.next511, %487 ]
  %.1313436 = phi ptr [ %.0312.lcssa, %.lr.ph437 ], [ %497, %487 ]
  %485 = invoke noalias noundef nonnull dereferenceable(1144) ptr @_Znwm(i64 noundef 1144) #15
          to label %486 unwind label %501

486:                                              ; preds = %484
  invoke void @_ZN6aiNodeC1Ev(ptr noundef nonnull align 8 dereferenceable(1144) %485)
          to label %487 unwind label %503

487:                                              ; preds = %486
  store ptr %485, ptr %.1313436, align 8, !tbaa !27
  %488 = load ptr, ptr %36, align 8, !tbaa !14
  %489 = getelementptr inbounds i8, ptr %485, i64 1096
  store ptr %488, ptr %489, align 8, !tbaa !70
  %490 = getelementptr inbounds i8, ptr %485, i64 4
  %491 = trunc nuw i64 %indvars.iv510 to i32
  %492 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %490, i64 noundef 1024, ptr noundef nonnull @.str.11, i32 noundef %491) #13
  store i32 %492, ptr %485, align 8, !tbaa !72
  %493 = load ptr, ptr %455, align 8, !tbaa !63
  %494 = getelementptr inbounds ptr, ptr %493, i64 %indvars.iv510
  %495 = load ptr, ptr %494, align 8, !tbaa !27
  %496 = call noundef nonnull align 4 dereferenceable(1028) ptr @_ZN8aiStringaSERKS_(ptr noundef nonnull align 4 dereferenceable(1028) %495, ptr noundef nonnull align 4 dereferenceable(1028) %485)
  %indvars.iv.next511 = add nuw nsw i64 %indvars.iv510, 1
  %497 = getelementptr inbounds i8, ptr %.1313436, i64 8
  %498 = load i32, ptr %374, align 8, !tbaa !60
  %499 = zext i32 %498 to i64
  %500 = icmp ult i64 %indvars.iv.next511, %499
  br i1 %500, label %484, label %.preheader, !llvm.loop !73

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

503:                                              ; preds = %486
  %504 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %485, i64 noundef 1144) #14
  br label %630

505:                                              ; preds = %.lr.ph441, %508
  %indvars.iv513 = phi i64 [ 0, %.lr.ph441 ], [ %indvars.iv.next514, %508 ]
  %.2314440 = phi ptr [ %.1313.lcssa, %.lr.ph441 ], [ %518, %508 ]
  %506 = invoke noalias noundef nonnull dereferenceable(1144) ptr @_Znwm(i64 noundef 1144) #15
          to label %507 unwind label %522

507:                                              ; preds = %505
  invoke void @_ZN6aiNodeC1Ev(ptr noundef nonnull align 8 dereferenceable(1144) %506)
          to label %508 unwind label %524

508:                                              ; preds = %507
  store ptr %506, ptr %.2314440, align 8, !tbaa !27
  %509 = load ptr, ptr %36, align 8, !tbaa !14
  %510 = getelementptr inbounds i8, ptr %506, i64 1096
  store ptr %509, ptr %510, align 8, !tbaa !70
  %511 = getelementptr inbounds i8, ptr %506, i64 4
  %512 = trunc nuw i64 %indvars.iv513 to i32
  %513 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %511, i64 noundef 1024, ptr noundef nonnull @.str.12, i32 noundef %512) #13
  store i32 %513, ptr %506, align 8, !tbaa !72
  %514 = load ptr, ptr %483, align 8, !tbaa !61
  %515 = getelementptr inbounds ptr, ptr %514, i64 %indvars.iv513
  %516 = load ptr, ptr %515, align 8, !tbaa !27
  %517 = call noundef nonnull align 4 dereferenceable(1028) ptr @_ZN8aiStringaSERKS_(ptr noundef nonnull align 4 dereferenceable(1028) %516, ptr noundef nonnull align 4 dereferenceable(1028) %506)
  %indvars.iv.next514 = add nuw nsw i64 %indvars.iv513, 1
  %518 = getelementptr inbounds i8, ptr %.2314440, i64 8
  %519 = load i32, ptr %371, align 8, !tbaa !59
  %520 = zext i32 %519 to i64
  %521 = icmp ult i64 %indvars.iv.next514, %520
  br i1 %521, label %505, label %.loopexit, !llvm.loop !74

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

524:                                              ; preds = %507
  %525 = landingpad { ptr, i32 }
          cleanup
  call void @_ZdlPvm(ptr noundef nonnull %506, i64 noundef 1144) #14
  br label %630

526:                                              ; preds = %._crit_edge430
  %527 = load ptr, ptr %36, align 8, !tbaa !14
  invoke void @_ZNK6Assimp20PretransformVertices21MakeIdentityTransformEP6aiNode(ptr noundef nonnull align 8 dereferenceable(93) %0, ptr noundef %527)
          to label %.loopexit unwind label %88

.loopexit:                                        ; preds = %508, %.preheader, %437, %526
  %528 = getelementptr inbounds i8, ptr %0, i64 25
  %529 = load i8, ptr %528, align 1, !tbaa !75, !range !21, !noundef !22
  %530 = trunc nuw i8 %529 to i1
  br i1 %530, label %531, label %608

531:                                              ; preds = %.loopexit
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %23) #13
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %23) #13
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %24) #13
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %24) #13
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %25) #13
  invoke void @_ZN6Assimp13MinMaxChooserI10aiVector3tIfEEclERS2_S4_(ptr noundef nonnull align 1 dereferenceable(1) %25, ptr noundef nonnull align 4 dereferenceable(12) %23, ptr noundef nonnull align 4 dereferenceable(12) %24)
          to label %532 unwind label %536

532:                                              ; preds = %531
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %25) #13
  %533 = load i32, ptr %31, align 8, !tbaa !5
  %.not471 = icmp eq i32 %533, 0
  br i1 %.not471, label %._crit_edge449, label %.lr.ph448

.lr.ph448:                                        ; preds = %532
  %534 = getelementptr inbounds i8, ptr %1, i64 24
  %.sroa.541.0..sroa_idx = getelementptr inbounds i8, ptr %23, i64 8
  %.sroa.535.0..sroa_idx = getelementptr inbounds i8, ptr %24, i64 8
  br label %538

._crit_edge449:                                   ; preds = %._crit_edge445, %532
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %26) #13
  %535 = invoke { <2 x float>, float } @_ZmiIfE10aiVector3tIT_ERKS2_S4_(ptr noundef nonnull align 4 dereferenceable(12) %24, ptr noundef nonnull align 4 dereferenceable(12) %23)
          to label %565 unwind label %577

536:                                              ; preds = %531
  %537 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %25) #13
  br label %607

538:                                              ; preds = %.lr.ph448, %._crit_edge445
  %539 = phi i32 [ %533, %.lr.ph448 ], [ %546, %._crit_edge445 ]
  %indvars.iv519 = phi i64 [ 0, %.lr.ph448 ], [ %indvars.iv.next520, %._crit_edge445 ]
  %540 = load ptr, ptr %534, align 8, !tbaa !26
  %541 = getelementptr inbounds ptr, ptr %540, i64 %indvars.iv519
  %542 = load ptr, ptr %541, align 8, !tbaa !27
  %543 = getelementptr inbounds i8, ptr %542, i64 4
  %544 = load i32, ptr %543, align 4, !tbaa !41
  %.not472 = icmp eq i32 %544, 0
  br i1 %.not472, label %._crit_edge445, label %.lr.ph444

.lr.ph444:                                        ; preds = %538
  %545 = getelementptr inbounds i8, ptr %542, i64 16
  br label %549

._crit_edge445.loopexit:                          ; preds = %557
  %.pre538 = load i32, ptr %31, align 8, !tbaa !5
  br label %._crit_edge445

._crit_edge445:                                   ; preds = %._crit_edge445.loopexit, %538
  %546 = phi i32 [ %.pre538, %._crit_edge445.loopexit ], [ %539, %538 ]
  %indvars.iv.next520 = add nuw nsw i64 %indvars.iv519, 1
  %547 = zext i32 %546 to i64
  %548 = icmp ult i64 %indvars.iv.next520, %547
  br i1 %548, label %538, label %._crit_edge449, !llvm.loop !76

549:                                              ; preds = %.lr.ph444, %557
  %indvars.iv516 = phi i64 [ 0, %.lr.ph444 ], [ %indvars.iv.next517, %557 ]
  %550 = load ptr, ptr %545, align 8, !tbaa !43
  %551 = getelementptr inbounds %class.aiVector3t, ptr %550, i64 %indvars.iv516
  %552 = invoke { <2 x float>, float } @_ZSt3minIfE10aiVector3tIT_ERKS2_S4_(ptr noundef nonnull align 4 dereferenceable(12) %551, ptr noundef nonnull align 4 dereferenceable(12) %23)
          to label %553 unwind label %561

553:                                              ; preds = %549
  %.fca.0.extract36 = extractvalue { <2 x float>, float } %552, 0
  %.fca.1.extract37 = extractvalue { <2 x float>, float } %552, 1
  store <2 x float> %.fca.0.extract36, ptr %23, align 8
  store float %.fca.1.extract37, ptr %.sroa.541.0..sroa_idx, align 8, !tbaa !24
  %554 = load ptr, ptr %545, align 8, !tbaa !43
  %555 = getelementptr inbounds %class.aiVector3t, ptr %554, i64 %indvars.iv516
  %556 = invoke { <2 x float>, float } @_ZSt3maxIfE10aiVector3tIT_ERKS2_S4_(ptr noundef nonnull align 4 dereferenceable(12) %555, ptr noundef nonnull align 4 dereferenceable(12) %24)
          to label %557 unwind label %563

557:                                              ; preds = %553
  %.fca.0.extract30 = extractvalue { <2 x float>, float } %556, 0
  %.fca.1.extract31 = extractvalue { <2 x float>, float } %556, 1
  store <2 x float> %.fca.0.extract30, ptr %24, align 8
  store float %.fca.1.extract31, ptr %.sroa.535.0..sroa_idx, align 8, !tbaa !24
  %indvars.iv.next517 = add nuw nsw i64 %indvars.iv516, 1
  %558 = load i32, ptr %543, align 4, !tbaa !41
  %559 = zext i32 %558 to i64
  %560 = icmp ult i64 %indvars.iv.next517, %559
  br i1 %560, label %549, label %._crit_edge445.loopexit, !llvm.loop !77

561:                                              ; preds = %549
  %562 = landingpad { ptr, i32 }
          cleanup
  br label %607

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

565:                                              ; preds = %._crit_edge449
  %.fca.0.extract26 = extractvalue { <2 x float>, float } %535, 0
  %.fca.1.extract27 = extractvalue { <2 x float>, float } %535, 1
  store <2 x float> %.fca.0.extract26, ptr %26, align 8
  %.sroa.229.0..sroa_idx = getelementptr inbounds i8, ptr %26, i64 8
  store float %.fca.1.extract27, ptr %.sroa.229.0..sroa_idx, align 8
  %566 = getelementptr inbounds i8, ptr %26, i64 4
  %567 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %566, ptr noundef nonnull align 4 dereferenceable(4) %.sroa.229.0..sroa_idx)
  %568 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZSt3maxIfERKT_S2_S2_(ptr noundef nonnull align 4 dereferenceable(4) %26, ptr noundef nonnull align 4 dereferenceable(4) %567)
  %569 = load float, ptr %568, align 4, !tbaa !24
  %570 = fmul float %569, 5.000000e-01
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %27) #13
  %571 = invoke { <2 x float>, float } @_ZmlIfE10aiVector3tIT_ERKS2_S1_(ptr noundef nonnull align 4 dereferenceable(12) %26, float noundef 5.000000e-01)
          to label %572 unwind label %579

572:                                              ; preds = %565
  %.fca.0.extract19 = extractvalue { <2 x float>, float } %571, 0
  %.fca.1.extract20 = extractvalue { <2 x float>, float } %571, 1
  store <2 x float> %.fca.0.extract19, ptr %27, align 8
  %.sroa.222.0..sroa_idx = getelementptr inbounds i8, ptr %27, i64 8
  store float %.fca.1.extract20, ptr %.sroa.222.0..sroa_idx, align 8
  %573 = invoke { <2 x float>, float } @_ZplIfE10aiVector3tIT_ERKS2_S4_(ptr noundef nonnull align 4 dereferenceable(12) %23, ptr noundef nonnull align 4 dereferenceable(12) %27)
          to label %574 unwind label %579

574:                                              ; preds = %572
  %.fca.0.extract15 = extractvalue { <2 x float>, float } %573, 0
  %.fca.1.extract16 = extractvalue { <2 x float>, float } %573, 1
  store <2 x float> %.fca.0.extract15, ptr %26, align 8
  store float %.fca.1.extract16, ptr %.sroa.229.0..sroa_idx, align 8, !tbaa !24
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %27) #13
  %575 = load i32, ptr %31, align 8, !tbaa !5
  %.not473 = icmp eq i32 %575, 0
  br i1 %.not473, label %._crit_edge457, label %.lr.ph456

.lr.ph456:                                        ; preds = %574
  %576 = getelementptr inbounds i8, ptr %1, i64 24
  %.sroa.25.0..sroa_idx = getelementptr inbounds i8, ptr %28, i64 8
  br label %581

._crit_edge457:                                   ; preds = %._crit_edge453, %574
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %26) #13
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %24) #13
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %23) #13
  br label %608

577:                                              ; preds = %._crit_edge449
  %578 = landingpad { ptr, i32 }
          cleanup
  br label %606

579:                                              ; preds = %572, %565
  %580 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %27) #13
  br label %606

581:                                              ; preds = %.lr.ph456, %._crit_edge453
  %582 = phi i32 [ %575, %.lr.ph456 ], [ %589, %._crit_edge453 ]
  %indvars.iv525 = phi i64 [ 0, %.lr.ph456 ], [ %indvars.iv.next526, %._crit_edge453 ]
  %583 = load ptr, ptr %576, align 8, !tbaa !26
  %584 = getelementptr inbounds ptr, ptr %583, i64 %indvars.iv525
  %585 = load ptr, ptr %584, align 8, !tbaa !27
  %586 = getelementptr inbounds i8, ptr %585, i64 4
  %587 = load i32, ptr %586, align 4, !tbaa !41
  %.not474 = icmp eq i32 %587, 0
  br i1 %.not474, label %._crit_edge453, label %.lr.ph452

.lr.ph452:                                        ; preds = %581
  %588 = getelementptr inbounds i8, ptr %585, i64 16
  br label %592

._crit_edge453.loopexit:                          ; preds = %598
  %.pre539 = load i32, ptr %31, align 8, !tbaa !5
  br label %._crit_edge453

._crit_edge453:                                   ; preds = %._crit_edge453.loopexit, %581
  %589 = phi i32 [ %.pre539, %._crit_edge453.loopexit ], [ %582, %581 ]
  %indvars.iv.next526 = add nuw nsw i64 %indvars.iv525, 1
  %590 = zext i32 %589 to i64
  %591 = icmp ult i64 %indvars.iv.next526, %590
  br i1 %591, label %581, label %._crit_edge457, !llvm.loop !78

592:                                              ; preds = %.lr.ph452, %598
  %indvars.iv522 = phi i64 [ 0, %.lr.ph452 ], [ %indvars.iv.next523, %598 ]
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %28) #13
  %593 = load ptr, ptr %588, align 8, !tbaa !43
  %594 = getelementptr inbounds %class.aiVector3t, ptr %593, i64 %indvars.iv522
  %595 = invoke { <2 x float>, float } @_ZmiIfE10aiVector3tIT_ERKS2_S4_(ptr noundef nonnull align 4 dereferenceable(12) %594, ptr noundef nonnull align 4 dereferenceable(12) %26)
          to label %596 unwind label %604

596:                                              ; preds = %592
  %.fca.0.extract2 = extractvalue { <2 x float>, float } %595, 0
  %.fca.1.extract3 = extractvalue { <2 x float>, float } %595, 1
  store <2 x float> %.fca.0.extract2, ptr %28, align 8
  store float %.fca.1.extract3, ptr %.sroa.25.0..sroa_idx, align 8
  %597 = invoke { <2 x float>, float } @_ZdvIfE10aiVector3tIT_ERKS2_S1_(ptr noundef nonnull align 4 dereferenceable(12) %28, float noundef %570)
          to label %598 unwind label %604

598:                                              ; preds = %596
  %.fca.0.extract = extractvalue { <2 x float>, float } %597, 0
  %.fca.1.extract = extractvalue { <2 x float>, float } %597, 1
  %599 = load ptr, ptr %588, align 8, !tbaa !43
  %600 = getelementptr inbounds %class.aiVector3t, ptr %599, i64 %indvars.iv522
  store <2 x float> %.fca.0.extract, ptr %600, align 4
  %.sroa.5.0..sroa_idx = getelementptr inbounds i8, ptr %600, i64 8
  store float %.fca.1.extract, ptr %.sroa.5.0..sroa_idx, align 4, !tbaa !24
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %28) #13
  %indvars.iv.next523 = add nuw nsw i64 %indvars.iv522, 1
  %601 = load i32, ptr %586, align 4, !tbaa !41
  %602 = zext i32 %601 to i64
  %603 = icmp ult i64 %indvars.iv.next523, %602
  br i1 %603, label %592, label %._crit_edge453.loopexit, !llvm.loop !79

604:                                              ; preds = %596, %592
  %605 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %28) #13
  br label %606

606:                                              ; preds = %579, %604, %577
  %.pn353.pn = phi { ptr, i32 } [ %578, %577 ], [ %605, %604 ], [ %580, %579 ]
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %26) #13
  br label %607

607:                                              ; preds = %561, %563, %606, %536
  %.pn356.pn = phi { ptr, i32 } [ %.pn353.pn, %606 ], [ %537, %536 ], [ %564, %563 ], [ %562, %561 ]
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %24) #13
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %23) #13
  br label %630

608:                                              ; preds = %._crit_edge457, %.loopexit
  %609 = invoke noundef zeroext i1 @_ZN6Assimp13DefaultLogger12isNullLoggerEv()
          to label %610 unwind label %88

610:                                              ; preds = %608
  br i1 %609, label %628, label %611

611:                                              ; preds = %610
  %612 = invoke noundef ptr @_ZN6Assimp13DefaultLogger3getEv()
          to label %613 unwind label %88

613:                                              ; preds = %611
  invoke void @_ZN6Assimp6Logger5debugEPKc(ptr noundef nonnull align 8 dereferenceable(12) %612, ptr noundef nonnull @.str.13)
          to label %614 unwind label %88

614:                                              ; preds = %613
  %615 = invoke noundef ptr @_ZN6Assimp13DefaultLogger3getEv()
          to label %616 unwind label %88

616:                                              ; preds = %614
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %29) #13
  %617 = load ptr, ptr %36, align 8, !tbaa !14
  %618 = invoke noundef i32 @_ZNK6Assimp20PretransformVertices10CountNodesEPK6aiNode(ptr noundef nonnull align 8 dereferenceable(93) %0, ptr noundef %617)
          to label %619 unwind label %626

619:                                              ; preds = %616
  store i32 %618, ptr %29, align 4, !tbaa !12
  invoke void @_ZN6Assimp6Logger4infoIJRA9_KcRKjRA12_S2_S6_RA22_S2_jRA15_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(12) %615, ptr noundef nonnull align 1 dereferenceable(9) @.str.14, ptr noundef nonnull align 4 dereferenceable(4) %5, ptr noundef nonnull align 1 dereferenceable(12) @.str.15, ptr noundef nonnull align 4 dereferenceable(4) %4, ptr noundef nonnull align 1 dereferenceable(22) @.str.16, ptr noundef nonnull align 4 dereferenceable(4) %29, ptr noundef nonnull align 1 dereferenceable(15) @.str.17)
          to label %620 unwind label %626

620:                                              ; preds = %619
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %29) #13
  %621 = invoke noundef ptr @_ZN6Assimp13DefaultLogger3getEv()
          to label %622 unwind label %88

622:                                              ; preds = %620
  invoke void @_ZN6Assimp6Logger4infoIJRA6_KcRjRA13_S2_S5_RA10_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(12) %621, ptr noundef nonnull align 1 dereferenceable(6) @.str.18, ptr noundef nonnull align 4 dereferenceable(4) %374, ptr noundef nonnull align 1 dereferenceable(13) @.str.19, ptr noundef nonnull align 4 dereferenceable(4) %371, ptr noundef nonnull align 1 dereferenceable(10) @.str.20)
          to label %623 unwind label %88

623:                                              ; preds = %622
  %624 = invoke noundef ptr @_ZN6Assimp13DefaultLogger3getEv()
          to label %625 unwind label %88

625:                                              ; preds = %623
  invoke void @_ZN6Assimp6Logger4infoIJRA7_KcRKjRA42_S2_RjRA2_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(12) %624, ptr noundef nonnull align 1 dereferenceable(7) @.str.21, ptr noundef nonnull align 4 dereferenceable(4) %3, ptr noundef nonnull align 1 dereferenceable(42) @.str.22, ptr noundef nonnull align 4 dereferenceable(4) %31, ptr noundef nonnull align 1 dereferenceable(2) @.str.23)
          to label %628 unwind label %88

626:                                              ; preds = %619, %616
  %627 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %29) #13
  br label %630

628:                                              ; preds = %625, %610
  call void @_ZNSt6vectorIP6aiMeshSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3) #13
  br label %629

629:                                              ; preds = %2, %628
  ret void

630:                                              ; preds = %439, %441, %522, %524, %501, %503, %478, %480, %456, %626, %607, %419, %396, %352, %105, %88
  %.pn361 = phi { ptr, i32 } [ %106, %105 ], [ %397, %396 ], [ %420, %419 ], [ %.pn356.pn, %607 ], [ %89, %88 ], [ %627, %626 ], [ %.pn.pn.pn.pn.pn, %352 ], [ %440, %439 ], [ %442, %441 ], [ %457, %456 ], [ %479, %478 ], [ %481, %480 ], [ %504, %503 ], [ %502, %501 ], [ %525, %524 ], [ %523, %522 ]
  call void @_ZNSt6vectorIP6aiMeshSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #13
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %7) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %4) #13
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3) #13
  resume { ptr, i32 } %.pn361

631:                                              ; preds = %316
  unreachable
}

declare void @_ZN6Assimp6Logger5debugEPKc(ptr noundef nonnull align 8 dereferenceable(12), ptr noundef) local_unnamed_addr #4

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

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

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

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr

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

declare void @__cxa_free_exception(ptr) local_unnamed_addr

; Function Attrs: nounwind
declare void @_ZNSt13runtime_errorD2Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #10

declare void @__cxa_throw(ptr, ptr, ptr) local_unnamed_addr

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

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

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

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

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

declare void @_ZN6aiNodeC1Ev(ptr noundef nonnull align 8 dereferenceable(1144)) unnamed_addr #4

; Function Attrs: nounwind
declare void @_ZN6aiNodeD1Ev(ptr noundef nonnull align 8 dereferenceable(1144)) unnamed_addr #10

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Assimp13MinMaxChooserI10aiVector3tIfEEclERS2_S4_(ptr noundef nonnull align 1 dereferenceable(1), ptr noundef nonnull align 4 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(12)) local_unnamed_addr #2 align 2

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

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

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

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

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

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

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

declare noundef zeroext i1 @_ZN6Assimp13DefaultLogger12isNullLoggerEv() local_unnamed_addr #4

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Assimp6Logger4infoIJRA9_KcRKjRA12_S2_S6_RA22_S2_jRA15_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(12), ptr noundef nonnull align 1 dereferenceable(9), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 1 dereferenceable(12), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 1 dereferenceable(22), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 1 dereferenceable(15)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Assimp6Logger4infoIJRA6_KcRjRA13_S2_S5_RA10_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(12), ptr noundef nonnull align 1 dereferenceable(6), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 1 dereferenceable(13), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 1 dereferenceable(10)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN6Assimp6Logger4infoIJRA7_KcRKjRA42_S2_RjRA2_S2_EEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(12), ptr noundef nonnull align 1 dereferenceable(7), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 1 dereferenceable(42), ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 1 dereferenceable(2)) local_unnamed_addr #2 align 2

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !7, i64 16}
!6 = !{!"_ZTS7aiScene", !7, i64 0, !10, i64 8, !7, i64 16, !10, i64 24, !7, i64 32, !10, i64 40, !7, i64 48, !10, i64 56, !7, i64 64, !10, i64 72, !7, i64 80, !10, i64 88, !7, i64 96, !10, i64 104, !10, i64 112, !11, i64 120, !7, i64 1148, !10, i64 1152, !10, i64 1160}
!7 = !{!"int", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"any pointer", !8, i64 0}
!11 = !{!"_ZTS8aiString", !7, i64 0, !8, i64 4}
!12 = !{!7, !7, i64 0}
!13 = !{!6, !7, i64 48}
!14 = !{!6, !10, i64 8}
!15 = !{!16, !18, i64 26}
!16 = !{!"_ZTSN6Assimp20PretransformVerticesE", !17, i64 0, !18, i64 24, !18, i64 25, !18, i64 26, !19, i64 28, !18, i64 92}
!17 = !{!"_ZTSN6Assimp11BaseProcessE", !10, i64 8, !10, i64 16}
!18 = !{!"bool", !8, i64 0}
!19 = !{!"_ZTS12aiMatrix4x4tIfE", !20, i64 0, !20, i64 4, !20, i64 8, !20, i64 12, !20, i64 16, !20, i64 20, !20, i64 24, !20, i64 28, !20, i64 32, !20, i64 36, !20, i64 40, !20, i64 44, !20, i64 48, !20, i64 52, !20, i64 56, !20, i64 60}
!20 = !{!"float", !8, i64 0}
!21 = !{i8 0, i8 2}
!22 = !{}
!23 = !{i64 0, i64 4, !24, i64 4, i64 4, !24, i64 8, i64 4, !24, i64 12, i64 4, !24, i64 16, i64 4, !24, i64 20, i64 4, !24, i64 24, i64 4, !24, i64 28, i64 4, !24, i64 32, i64 4, !24, i64 36, i64 4, !24, i64 40, i64 4, !24, i64 44, i64 4, !24, i64 48, i64 4, !24, i64 52, i64 4, !24, i64 56, i64 4, !24, i64 60, i64 4, !24}
!24 = !{!20, !20, i64 0}
!25 = !{!16, !18, i64 24}
!26 = !{!6, !10, i64 24}
!27 = !{!10, !10, i64 0}
!28 = !{!29, !7, i64 216}
!29 = !{!"_ZTS6aiMesh", !7, i64 0, !7, i64 4, !7, i64 8, !10, i64 16, !10, i64 24, !10, i64 32, !10, i64 40, !8, i64 48, !8, i64 112, !8, i64 176, !10, i64 208, !7, i64 216, !10, i64 224, !7, i64 232, !11, i64 236, !7, i64 1264, !10, i64 1272, !30, i64 1280, !31, i64 1284, !10, i64 1312}
!30 = !{!"_ZTS16aiMorphingMethod", !8, i64 0}
!31 = !{!"_ZTS6aiAABB", !32, i64 0, !32, i64 12}
!32 = !{!"_ZTS10aiVector3tIfE", !20, i64 0, !20, i64 4, !20, i64 8}
!33 = !{!29, !10, i64 224}
!34 = distinct !{!34, !35}
!35 = !{!"llvm.loop.mustprogress"}
!36 = distinct !{!36, !35}
!37 = distinct !{!37, !35}
!38 = !{!6, !7, i64 32}
!39 = distinct !{!39, !35}
!40 = !{!29, !7, i64 8}
!41 = !{!29, !7, i64 4}
!42 = !{!29, !10, i64 208}
!43 = !{!29, !10, i64 16}
!44 = !{!29, !7, i64 232}
!45 = !{!29, !10, i64 24}
!46 = !{!29, !10, i64 32}
!47 = !{!29, !10, i64 40}
!48 = distinct !{!48, !35}
!49 = distinct !{!49, !35}
!50 = distinct !{!50, !35}
!51 = !{!52, !7, i64 0}
!52 = !{!"_ZTS6aiFace", !7, i64 0, !10, i64 8}
!53 = !{!52, !10, i64 8}
!54 = distinct !{!54, !35}
!55 = distinct !{!55, !35}
!56 = distinct !{!56, !35}
!57 = !{!6, !10, i64 56}
!58 = distinct !{!58, !35}
!59 = !{!6, !7, i64 96}
!60 = !{!6, !7, i64 80}
!61 = !{!6, !10, i64 104}
!62 = distinct !{!62, !35}
!63 = !{!6, !10, i64 88}
!64 = distinct !{!64, !35}
!65 = !{!66, !7, i64 1120}
!66 = !{!"_ZTS6aiNode", !11, i64 0, !19, i64 1028, !10, i64 1096, !7, i64 1104, !10, i64 1112, !7, i64 1120, !10, i64 1128, !10, i64 1136}
!67 = !{!66, !10, i64 1128}
!68 = !{!66, !7, i64 1104}
!69 = !{!66, !10, i64 1112}
!70 = !{!66, !10, i64 1096}
!71 = distinct !{!71, !35}
!72 = !{!66, !7, i64 0}
!73 = distinct !{!73, !35}
!74 = distinct !{!74, !35}
!75 = !{!16, !18, i64 25}
!76 = distinct !{!76, !35}
!77 = distinct !{!77, !35}
!78 = distinct !{!78, !35}
!79 = distinct !{!79, !35}


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