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

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

%"class.std::vector.0" = type { %"struct.std::_Vector_base.1" }
%"struct.std::_Vector_base.1" = type { %"struct.std::_Vector_base<aiMesh *, std::allocator<aiMesh *>>::_Vector_impl" }
%"struct.std::_Vector_base<aiMesh *, std::allocator<aiMesh *>>::_Vector_impl" = type { %"struct.std::_Vector_base<aiMesh *, std::allocator<aiMesh *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<aiMesh *, std::allocator<aiMesh *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = 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" = type { i8 }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%"class.std::vector.5" = type { %"struct.std::_Vector_base.6" }
%"struct.std::_Vector_base.6" = type { %"struct.std::_Vector_base<std::vector<aiVertexWeight>, std::allocator<std::vector<aiVertexWeight>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::vector<aiVertexWeight>, std::allocator<std::vector<aiVertexWeight>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::vector<aiVertexWeight>, std::allocator<std::vector<aiVertexWeight>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::vector<aiVertexWeight>, std::allocator<std::vector<aiVertexWeight>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.7" = type { i8 }
%"class.__gnu_cxx::__normal_iterator.20" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.21" = type { ptr }
%struct.aiScene = type { i32, ptr, i32, ptr, i32, ptr, i32, ptr, i32, ptr, i32, ptr, i32, ptr, ptr, %struct.aiString, i32, ptr, ptr }
%struct.aiString = type { i32, [1024 x i8] }
%struct.aiMesh = type { i32, i32, i32, ptr, ptr, ptr, ptr, [8 x ptr], [8 x ptr], [8 x i32], ptr, i32, ptr, i32, %struct.aiString, i32, ptr, i32, %struct.aiAABB, ptr }
%struct.aiAABB = type { %class.aiVector3t, %class.aiVector3t }
%class.aiVector3t = type { float, float, float }
%"class.Assimp::SortByPTypeProcess" = type <{ %"class.Assimp::BaseProcess", i32, [4 x i8] }>
%"class.Assimp::BaseProcess" = type { ptr, ptr, ptr }
%struct.aiFace = type { i32, ptr }
%class.aiColor4t = type { float, float, float, float }
%struct.aiAnimMesh = type { %struct.aiString, ptr, ptr, ptr, ptr, [8 x ptr], [8 x ptr], i32, float }
%struct.aiBone = type { %struct.aiString, i32, ptr, ptr, ptr, %class.aiMatrix4x4t }
%class.aiMatrix4x4t = type { float, float, float, float, float, float, float, float, float, float, float, float, float, float, float, float }
%"class.std::vector.15" = type { %"struct.std::_Vector_base.16" }
%"struct.std::_Vector_base.16" = type { %"struct.std::_Vector_base<std::pair<unsigned int, float>, std::allocator<std::pair<unsigned int, float>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<unsigned int, float>, std::allocator<std::pair<unsigned int, float>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<unsigned int, float>, std::allocator<std::pair<unsigned int, float>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<unsigned int, float>, std::allocator<std::pair<unsigned int, float>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.std::pair" = type { i32, float }
%struct.aiVertexWeight = type { i32, float }

@.str.1 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [35 x i8], align 1
@_ZTI17DeadlyImportError = external dso_local constant { ptr, ptr, ptr }, align 8
@.str.4 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [127 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [81 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [28 x i8], align 1

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN6Assimp18SortByPTypeProcess7ExecuteEP7aiScene(ptr noundef nonnull align 8 dereferenceable(28) %0, ptr noundef %1) unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca [4 x i32], align 16
  %6 = alloca %"class.std::vector.0", align 8
  %7 = alloca ptr, align 8
  %8 = alloca i32, align 4
  %9 = alloca i8, align 1
  %10 = alloca %"class.std::vector", align 8
  %11 = alloca i32, align 4
  %12 = alloca %"class.std::allocator", align 1
  %13 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca i1, align 1
  %19 = alloca i32, align 4
  %20 = alloca [4 x i32], align 16
  %21 = alloca ptr, align 8
  %22 = alloca ptr, align 8
  %23 = alloca i32, align 4
  %24 = alloca ptr, align 8
  %25 = alloca i32, align 4
  %26 = alloca ptr, align 8
  %27 = alloca ptr, align 8
  %28 = alloca ptr, align 8
  %29 = alloca ptr, align 8
  %30 = alloca ptr, align 8
  %31 = alloca ptr, align 8
  %32 = alloca ptr, align 8
  %33 = alloca [8 x ptr], align 16
  %34 = alloca [8 x ptr], align 16
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca ptr, align 8
  %39 = alloca ptr, align 8
  %40 = alloca i32, align 4
  %41 = alloca i32, align 4
  %42 = alloca %"class.std::vector.5", align 8
  %43 = alloca %"class.std::allocator.7", align 1
  %44 = alloca i32, align 4
  %45 = alloca i32, align 4
  %46 = alloca i32, align 4
  %47 = alloca i32, align 4
  %48 = alloca ptr, align 8
  %49 = alloca i32, align 4
  %50 = alloca i32, align 4
  %51 = alloca ptr, align 8
  %52 = alloca %"class.__gnu_cxx::__normal_iterator.20", align 8
  %53 = alloca %"class.__gnu_cxx::__normal_iterator.21", align 8
  %54 = alloca %"class.__gnu_cxx::__normal_iterator.20", align 8
  %55 = alloca %"class.__gnu_cxx::__normal_iterator.21", align 8
  %56 = alloca i32, align 4
  %57 = alloca i32, align 4
  %58 = alloca i32, align 4
  %59 = alloca ptr, align 8
  %60 = alloca ptr, align 8
  %61 = alloca i32, align 4
  %62 = alloca i32, align 4
  %63 = alloca i32, align 4
  %64 = alloca i32, align 4
  %65 = alloca i32, align 4
  %66 = alloca ptr, align 8
  %67 = alloca ptr, align 8
  %68 = alloca ptr, align 8
  %69 = alloca [1024 x i8], align 16
  store ptr %0, ptr %3, align 8, !tbaa !5
  store ptr %1, ptr %4, align 8, !tbaa !5
  %70 = load ptr, ptr %3, align 8
  %71 = load ptr, ptr %4, align 8, !tbaa !5
  %72 = getelementptr inbounds %struct.aiScene, ptr %71, i32 0, i32 2
  %73 = load i32, ptr %72, align 8, !tbaa !9
  %74 = icmp eq i32 0, %73
  br i1 %74, label %75, label %77

75:                                               ; preds = %2
  %76 = call noundef ptr @_ZN6Assimp13DefaultLogger3getEv()
  call void @_ZN6Assimp6Logger5debugEPKc(ptr noundef nonnull align 8 dereferenceable(12) %76, ptr noundef @.str.1)
  br label %1605

77:                                               ; preds = %2
  %78 = call noundef ptr @_ZN6Assimp13DefaultLogger3getEv()
  call void @_ZN6Assimp6Logger5debugEPKc(ptr noundef nonnull align 8 dereferenceable(12) %78, ptr noundef @.str.2)
  call void @llvm.lifetime.start.p0(i64 16, ptr %5) #11
  call void @llvm.memset.p0.i64(ptr align 16 %5, i8 0, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 24, ptr %6) #11
  call void @_ZNSt6vectorIP6aiMeshSaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #11
  %79 = load ptr, ptr %4, align 8, !tbaa !5
  %80 = getelementptr inbounds %struct.aiScene, ptr %79, i32 0, i32 2
  %81 = load i32, ptr %80, align 8, !tbaa !9
  %82 = zext i32 %81 to i64
  %83 = shl i64 %82, 1
  invoke void @_ZNSt6vectorIP6aiMeshSaIS1_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %6, i64 noundef %83)
          to label %84 unwind label %100

84:                                               ; preds = %77
  call void @llvm.lifetime.start.p0(i64 1, ptr %9) #11
  store i8 0, ptr %9, align 1, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 24, ptr %10) #11
  %85 = load ptr, ptr %4, align 8, !tbaa !5
  %86 = getelementptr inbounds %struct.aiScene, ptr %85, i32 0, i32 2
  %87 = load i32, ptr %86, align 8, !tbaa !9
  %88 = mul i32 %87, 4
  %89 = zext i32 %88 to i64
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #11
  store i32 -1, ptr %11, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 1, ptr %12) #11
  call void @_ZNSaIjEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #11
  invoke void @_ZNSt6vectorIjSaIjEEC2EmRKjRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef %89, ptr noundef nonnull align 4 dereferenceable(4) %11, ptr noundef nonnull align 1 dereferenceable(1) %12)
          to label %90 unwind label %104

90:                                               ; preds = %84
  call void @_ZNSt15__new_allocatorIjED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %12) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #11
  %91 = call ptr @_ZNSt6vectorIjSaIjEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %10) #11
  %92 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %13, i32 0, i32 0
  store ptr %91, ptr %92, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #11
  store i32 0, ptr %14, align 4, !tbaa !15
  br label %93

93:                                               ; preds = %1490, %90
  %94 = load i32, ptr %14, align 4, !tbaa !15
  %95 = load ptr, ptr %4, align 8, !tbaa !5
  %96 = getelementptr inbounds %struct.aiScene, ptr %95, i32 0, i32 2
  %97 = load i32, ptr %96, align 8, !tbaa !9
  %98 = icmp ult i32 %94, %97
  br i1 %98, label %108, label %99

99:                                               ; preds = %93
  store i32 2, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #11
  br label %1496

100:                                              ; preds = %77
  %101 = landingpad { ptr, i32 }
          cleanup
  %102 = extractvalue { ptr, i32 } %101, 0
  store ptr %102, ptr %7, align 8
  %103 = extractvalue { ptr, i32 } %101, 1
  store i32 %103, ptr %8, align 4
  br label %1608

104:                                              ; preds = %84
  %105 = landingpad { ptr, i32 }
          cleanup
  %106 = extractvalue { ptr, i32 } %105, 0
  store ptr %106, ptr %7, align 8
  %107 = extractvalue { ptr, i32 } %105, 1
  store i32 %107, ptr %8, align 4
  call void @_ZNSt15__new_allocatorIjED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %12) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #11
  br label %1607

108:                                              ; preds = %93
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #11
  %109 = load ptr, ptr %4, align 8, !tbaa !5
  %110 = getelementptr inbounds %struct.aiScene, ptr %109, i32 0, i32 3
  %111 = load ptr, ptr %110, align 8, !tbaa !16
  %112 = load i32, ptr %14, align 4, !tbaa !15
  %113 = zext i32 %112 to i64
  %114 = getelementptr inbounds ptr, ptr %111, i64 %113
  %115 = load ptr, ptr %114, align 8, !tbaa !5
  store ptr %115, ptr %16, align 8, !tbaa !5
  %116 = load ptr, ptr %16, align 8, !tbaa !5
  %117 = getelementptr inbounds %struct.aiMesh, ptr %116, i32 0, i32 0
  %118 = load i32, ptr %117, align 8, !tbaa !17
  %119 = icmp eq i32 %118, 0
  br i1 %119, label %120, label %134

120:                                              ; preds = %108
  store i1 true, ptr %18, align 1
  %121 = call ptr @__cxa_allocate_exception(i64 16) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #11
  %122 = load ptr, ptr %16, align 8, !tbaa !5
  %123 = getelementptr inbounds %struct.aiMesh, ptr %122, i32 0, i32 14
  %124 = invoke noundef ptr @_ZNK8aiString5C_StrEv(ptr noundef nonnull align 4 dereferenceable(1028) %123)
          to label %125 unwind label %127

125:                                              ; preds = %120
  store ptr %124, ptr %17, align 8, !tbaa !5
  invoke void @_ZN17DeadlyImportErrorC2IJRA35_KcPS1_EEEDpOT_(ptr noundef nonnull align 8 dereferenceable(16) %121, ptr noundef nonnull align 1 dereferenceable(35) @.str.3, ptr noundef nonnull align 8 dereferenceable(8) %17)
          to label %126 unwind label %127

126:                                              ; preds = %125
  store i1 false, ptr %18, align 1
  invoke void @__cxa_throw(ptr %121, ptr @_ZTI17DeadlyImportError, ptr @_ZNSt13runtime_errorD2Ev) #12
          to label %1614 unwind label %127

127:                                              ; preds = %126, %125, %120
  %128 = landingpad { ptr, i32 }
          cleanup
  %129 = extractvalue { ptr, i32 } %128, 0
  store ptr %129, ptr %7, align 8
  %130 = extractvalue { ptr, i32 } %128, 1
  store i32 %130, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #11
  %131 = load i1, ptr %18, align 1
  br i1 %131, label %132, label %133

132:                                              ; preds = %127
  call void @__cxa_free_exception(ptr %121) #11
  br label %133

133:                                              ; preds = %132, %127
  br label %1495

134:                                              ; preds = %108
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #11
  store i32 0, ptr %19, align 4, !tbaa !15
  %135 = load ptr, ptr %16, align 8, !tbaa !5
  %136 = getelementptr inbounds %struct.aiMesh, ptr %135, i32 0, i32 0
  %137 = load i32, ptr %136, align 8, !tbaa !17
  %138 = and i32 %137, 1
  %139 = icmp ne i32 %138, 0
  br i1 %139, label %140, label %146

140:                                              ; preds = %134
  %141 = getelementptr inbounds [4 x i32], ptr %5, i64 0, i64 0
  %142 = load i32, ptr %141, align 16, !tbaa !15
  %143 = add i32 %142, 1
  store i32 %143, ptr %141, align 16, !tbaa !15
  %144 = load i32, ptr %19, align 4, !tbaa !15
  %145 = add i32 %144, 1
  store i32 %145, ptr %19, align 4, !tbaa !15
  br label %146

146:                                              ; preds = %140, %134
  %147 = load ptr, ptr %16, align 8, !tbaa !5
  %148 = getelementptr inbounds %struct.aiMesh, ptr %147, i32 0, i32 0
  %149 = load i32, ptr %148, align 8, !tbaa !17
  %150 = and i32 %149, 2
  %151 = icmp ne i32 %150, 0
  br i1 %151, label %152, label %158

152:                                              ; preds = %146
  %153 = getelementptr inbounds [4 x i32], ptr %5, i64 0, i64 1
  %154 = load i32, ptr %153, align 4, !tbaa !15
  %155 = add i32 %154, 1
  store i32 %155, ptr %153, align 4, !tbaa !15
  %156 = load i32, ptr %19, align 4, !tbaa !15
  %157 = add i32 %156, 1
  store i32 %157, ptr %19, align 4, !tbaa !15
  br label %158

158:                                              ; preds = %152, %146
  %159 = load ptr, ptr %16, align 8, !tbaa !5
  %160 = getelementptr inbounds %struct.aiMesh, ptr %159, i32 0, i32 0
  %161 = load i32, ptr %160, align 8, !tbaa !17
  %162 = and i32 %161, 4
  %163 = icmp ne i32 %162, 0
  br i1 %163, label %164, label %170

164:                                              ; preds = %158
  %165 = getelementptr inbounds [4 x i32], ptr %5, i64 0, i64 2
  %166 = load i32, ptr %165, align 8, !tbaa !15
  %167 = add i32 %166, 1
  store i32 %167, ptr %165, align 8, !tbaa !15
  %168 = load i32, ptr %19, align 4, !tbaa !15
  %169 = add i32 %168, 1
  store i32 %169, ptr %19, align 4, !tbaa !15
  br label %170

170:                                              ; preds = %164, %158
  %171 = load ptr, ptr %16, align 8, !tbaa !5
  %172 = getelementptr inbounds %struct.aiMesh, ptr %171, i32 0, i32 0
  %173 = load i32, ptr %172, align 8, !tbaa !17
  %174 = and i32 %173, 8
  %175 = icmp ne i32 %174, 0
  br i1 %175, label %176, label %182

176:                                              ; preds = %170
  %177 = getelementptr inbounds [4 x i32], ptr %5, i64 0, i64 3
  %178 = load i32, ptr %177, align 4, !tbaa !15
  %179 = add i32 %178, 1
  store i32 %179, ptr %177, align 4, !tbaa !15
  %180 = load i32, ptr %19, align 4, !tbaa !15
  %181 = add i32 %180, 1
  store i32 %181, ptr %19, align 4, !tbaa !15
  br label %182

182:                                              ; preds = %176, %170
  %183 = load i32, ptr %19, align 4, !tbaa !15
  %184 = icmp eq i32 1, %183
  br i1 %184, label %185, label %216

185:                                              ; preds = %182
  %186 = getelementptr inbounds %"class.Assimp::SortByPTypeProcess", ptr %70, i32 0, i32 1
  %187 = load i32, ptr %186, align 8, !tbaa !23
  %188 = load ptr, ptr %16, align 8, !tbaa !5
  %189 = getelementptr inbounds %struct.aiMesh, ptr %188, i32 0, i32 0
  %190 = load i32, ptr %189, align 8, !tbaa !17
  %191 = and i32 %187, %190
  %192 = icmp ne i32 %191, 0
  br i1 %192, label %203, label %193

193:                                              ; preds = %185
  %194 = call noundef i64 @_ZNKSt6vectorIP6aiMeshSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #11
  %195 = trunc i64 %194 to i32
  %196 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %13) #11
  store i32 %195, ptr %196, align 4, !tbaa !15
  %197 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP6aiMeshSaIS1_EE12emplace_backIJRKS1_EEERS1_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %6, ptr noundef nonnull align 8 dereferenceable(8) %16)
          to label %198 unwind label %199

198:                                              ; preds = %193
  br label %214

199:                                              ; preds = %193
  %200 = landingpad { ptr, i32 }
          cleanup
  %201 = extractvalue { ptr, i32 } %200, 0
  store ptr %201, ptr %7, align 8
  %202 = extractvalue { ptr, i32 } %200, 1
  store i32 %202, ptr %8, align 4
  br label %1494

203:                                              ; preds = %185
  %204 = load ptr, ptr %16, align 8, !tbaa !5
  %205 = icmp eq ptr %204, null
  br i1 %205, label %207, label %206

206:                                              ; preds = %203
  call void @_ZN6aiMeshD2Ev(ptr noundef nonnull align 8 dereferenceable(1320) %204) #11
  call void @_ZdlPvm(ptr noundef %204, i64 noundef 1320) #13
  br label %207

207:                                              ; preds = %206, %203
  %208 = load ptr, ptr %4, align 8, !tbaa !5
  %209 = getelementptr inbounds %struct.aiScene, ptr %208, i32 0, i32 3
  %210 = load ptr, ptr %209, align 8, !tbaa !16
  %211 = load i32, ptr %14, align 4, !tbaa !15
  %212 = zext i32 %211 to i64
  %213 = getelementptr inbounds ptr, ptr %210, i64 %212
  store ptr null, ptr %213, align 8, !tbaa !5
  store i8 1, ptr %9, align 1, !tbaa !13
  br label %214

214:                                              ; preds = %207, %198
  %215 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEpLEl(ptr noundef nonnull align 8 dereferenceable(8) %13, i64 noundef 4) #11
  store i32 4, ptr %15, align 4
  br label %1487

216:                                              ; preds = %182
  store i8 1, ptr %9, align 1, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 16, ptr %20) #11
  call void @llvm.memset.p0.i64(ptr align 16 %20, i8 0, i64 16, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #11
  %217 = load ptr, ptr %16, align 8, !tbaa !5
  %218 = getelementptr inbounds %struct.aiMesh, ptr %217, i32 0, i32 10
  %219 = load ptr, ptr %218, align 8, !tbaa !26
  store ptr %219, ptr %21, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #11
  %220 = load ptr, ptr %21, align 8, !tbaa !5
  %221 = load ptr, ptr %16, align 8, !tbaa !5
  %222 = getelementptr inbounds %struct.aiMesh, ptr %221, i32 0, i32 2
  %223 = load i32, ptr %222, align 8, !tbaa !27
  %224 = zext i32 %223 to i64
  %225 = getelementptr inbounds %struct.aiFace, ptr %220, i64 %224
  store ptr %225, ptr %22, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #11
  store i32 0, ptr %23, align 4, !tbaa !15
  br label %226

226:                                              ; preds = %254, %216
  %227 = load ptr, ptr %21, align 8, !tbaa !5
  %228 = load ptr, ptr %22, align 8, !tbaa !5
  %229 = icmp ne ptr %227, %228
  br i1 %229, label %230, label %257

230:                                              ; preds = %226
  %231 = load ptr, ptr %21, align 8, !tbaa !5
  %232 = getelementptr inbounds %struct.aiFace, ptr %231, i32 0, i32 0
  %233 = load i32, ptr %232, align 8, !tbaa !28
  %234 = icmp ule i32 %233, 3
  br i1 %234, label %235, label %244

235:                                              ; preds = %230
  %236 = load ptr, ptr %21, align 8, !tbaa !5
  %237 = getelementptr inbounds %struct.aiFace, ptr %236, i32 0, i32 0
  %238 = load i32, ptr %237, align 8, !tbaa !28
  %239 = sub i32 %238, 1
  %240 = zext i32 %239 to i64
  %241 = getelementptr inbounds [4 x i32], ptr %20, i64 0, i64 %240
  %242 = load i32, ptr %241, align 4, !tbaa !15
  %243 = add i32 %242, 1
  store i32 %243, ptr %241, align 4, !tbaa !15
  br label %253

244:                                              ; preds = %230
  %245 = getelementptr inbounds [4 x i32], ptr %20, i64 0, i64 3
  %246 = load i32, ptr %245, align 4, !tbaa !15
  %247 = add i32 %246, 1
  store i32 %247, ptr %245, align 4, !tbaa !15
  %248 = load ptr, ptr %21, align 8, !tbaa !5
  %249 = getelementptr inbounds %struct.aiFace, ptr %248, i32 0, i32 0
  %250 = load i32, ptr %249, align 8, !tbaa !28
  %251 = load i32, ptr %23, align 4, !tbaa !15
  %252 = add i32 %251, %250
  store i32 %252, ptr %23, align 4, !tbaa !15
  br label %253

253:                                              ; preds = %244, %235
  br label %254

254:                                              ; preds = %253
  %255 = load ptr, ptr %21, align 8, !tbaa !5
  %256 = getelementptr inbounds %struct.aiFace, ptr %255, i32 1
  store ptr %256, ptr %21, align 8, !tbaa !5
  br label %226, !llvm.loop !30

257:                                              ; preds = %226
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #11
  %258 = load ptr, ptr %16, align 8, !tbaa !5
  %259 = invoke noundef ptr @_ZN6Assimp28ComputeVertexBoneWeightTableEPK6aiMesh(ptr noundef %258)
          to label %260 unwind label %265

260:                                              ; preds = %257
  store ptr %259, ptr %24, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #11
  store i32 0, ptr %25, align 4, !tbaa !15
  br label %261

261:                                              ; preds = %1450, %260
  %262 = load i32, ptr %25, align 4, !tbaa !15
  %263 = icmp ult i32 %262, 4
  br i1 %263, label %269, label %264

264:                                              ; preds = %261
  store i32 8, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #11
  br label %1461

265:                                              ; preds = %257
  %266 = landingpad { ptr, i32 }
          cleanup
  %267 = extractvalue { ptr, i32 } %266, 0
  store ptr %267, ptr %7, align 8
  %268 = extractvalue { ptr, i32 } %266, 1
  store i32 %268, ptr %8, align 4
  br label %1493

269:                                              ; preds = %261
  %270 = load i32, ptr %25, align 4, !tbaa !15
  %271 = zext i32 %270 to i64
  %272 = getelementptr inbounds [4 x i32], ptr %20, i64 0, i64 %271
  %273 = load i32, ptr %272, align 4, !tbaa !15
  %274 = icmp ne i32 %273, 0
  br i1 %274, label %275, label %282

275:                                              ; preds = %269
  %276 = getelementptr inbounds %"class.Assimp::SortByPTypeProcess", ptr %70, i32 0, i32 1
  %277 = load i32, ptr %276, align 8, !tbaa !23
  %278 = load i32, ptr %25, align 4, !tbaa !15
  %279 = shl i32 1, %278
  %280 = and i32 %277, %279
  %281 = icmp ne i32 %280, 0
  br i1 %281, label %282, label %283

282:                                              ; preds = %275, %269
  br label %1450

283:                                              ; preds = %275
  %284 = call noundef i64 @_ZNKSt6vectorIP6aiMeshSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #11
  %285 = trunc i64 %284 to i32
  %286 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %13) #11
  store i32 %285, ptr %286, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #11
  %287 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 1320) #14
          to label %288 unwind label %378

288:                                              ; preds = %283
  call void @_ZN6aiMeshC2Ev(ptr noundef nonnull align 8 dereferenceable(1320) %287) #11
  store ptr %287, ptr %26, align 8, !tbaa !5
  invoke void @_ZNSt6vectorIP6aiMeshSaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %6, ptr noundef nonnull align 8 dereferenceable(8) %26)
          to label %289 unwind label %378

289:                                              ; preds = %288
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #11
  %290 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP6aiMeshSaIS1_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #11
  %291 = load ptr, ptr %290, align 8, !tbaa !5
  store ptr %291, ptr %27, align 8, !tbaa !5
  %292 = load ptr, ptr %16, align 8, !tbaa !5
  %293 = getelementptr inbounds %struct.aiMesh, ptr %292, i32 0, i32 14
  %294 = load ptr, ptr %27, align 8, !tbaa !5
  %295 = getelementptr inbounds %struct.aiMesh, ptr %294, i32 0, i32 14
  %296 = invoke noundef nonnull align 4 dereferenceable(1028) ptr @_ZN8aiStringaSERKS_(ptr noundef nonnull align 4 dereferenceable(1028) %295, ptr noundef nonnull align 4 dereferenceable(1028) %293)
          to label %297 unwind label %382

297:                                              ; preds = %289
  %298 = load i32, ptr %25, align 4, !tbaa !15
  %299 = shl i32 1, %298
  %300 = load ptr, ptr %27, align 8, !tbaa !5
  %301 = getelementptr inbounds %struct.aiMesh, ptr %300, i32 0, i32 0
  store i32 %299, ptr %301, align 8, !tbaa !17
  %302 = load ptr, ptr %16, align 8, !tbaa !5
  %303 = getelementptr inbounds %struct.aiMesh, ptr %302, i32 0, i32 13
  %304 = load i32, ptr %303, align 8, !tbaa !32
  %305 = load ptr, ptr %27, align 8, !tbaa !5
  %306 = getelementptr inbounds %struct.aiMesh, ptr %305, i32 0, i32 13
  store i32 %304, ptr %306, align 8, !tbaa !32
  %307 = load i32, ptr %25, align 4, !tbaa !15
  %308 = zext i32 %307 to i64
  %309 = getelementptr inbounds [4 x i32], ptr %20, i64 0, i64 %308
  %310 = load i32, ptr %309, align 4, !tbaa !15
  %311 = load ptr, ptr %27, align 8, !tbaa !5
  %312 = getelementptr inbounds %struct.aiMesh, ptr %311, i32 0, i32 2
  store i32 %310, ptr %312, align 8, !tbaa !27
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #11
  %313 = load ptr, ptr %27, align 8, !tbaa !5
  %314 = getelementptr inbounds %struct.aiMesh, ptr %313, i32 0, i32 2
  %315 = load i32, ptr %314, align 8, !tbaa !27
  %316 = zext i32 %315 to i64
  %317 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %316, i64 16)
  %318 = extractvalue { i64, i1 } %317, 1
  %319 = extractvalue { i64, i1 } %317, 0
  %320 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %319, i64 8)
  %321 = extractvalue { i64, i1 } %320, 1
  %322 = or i1 %318, %321
  %323 = extractvalue { i64, i1 } %320, 0
  %324 = select i1 %322, i64 -1, i64 %323
  %325 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %324) #14
          to label %326 unwind label %386

326:                                              ; preds = %297
  store i64 %316, ptr %325, align 16
  %327 = getelementptr inbounds i8, ptr %325, i64 8
  %328 = icmp eq i64 %316, 0
  br i1 %328, label %335, label %329

329:                                              ; preds = %326
  %330 = getelementptr inbounds %struct.aiFace, ptr %327, i64 %316
  br label %331

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

335:                                              ; preds = %331, %326
  %336 = load ptr, ptr %27, align 8, !tbaa !5
  %337 = getelementptr inbounds %struct.aiMesh, ptr %336, i32 0, i32 10
  store ptr %327, ptr %337, align 8, !tbaa !26
  store ptr %327, ptr %28, align 8, !tbaa !5
  %338 = load i32, ptr %25, align 4, !tbaa !15
  %339 = icmp eq i32 3, %338
  br i1 %339, label %340, label %342

340:                                              ; preds = %335
  %341 = load i32, ptr %23, align 4, !tbaa !15
  br label %349

342:                                              ; preds = %335
  %343 = load ptr, ptr %27, align 8, !tbaa !5
  %344 = getelementptr inbounds %struct.aiMesh, ptr %343, i32 0, i32 2
  %345 = load i32, ptr %344, align 8, !tbaa !27
  %346 = load i32, ptr %25, align 4, !tbaa !15
  %347 = add i32 %346, 1
  %348 = mul i32 %345, %347
  br label %349

349:                                              ; preds = %342, %340
  %350 = phi i32 [ %341, %340 ], [ %348, %342 ]
  %351 = load ptr, ptr %27, align 8, !tbaa !5
  %352 = getelementptr inbounds %struct.aiMesh, ptr %351, i32 0, i32 1
  store i32 %350, ptr %352, align 4, !tbaa !33
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #11
  store ptr null, ptr %29, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #11
  store ptr null, ptr %30, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #11
  store ptr null, ptr %31, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #11
  store ptr null, ptr %32, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 64, ptr %33) #11
  call void @llvm.lifetime.start.p0(i64 64, ptr %34) #11
  %353 = load ptr, ptr %16, align 8, !tbaa !5
  %354 = getelementptr inbounds %struct.aiMesh, ptr %353, i32 0, i32 3
  %355 = load ptr, ptr %354, align 8, !tbaa !34
  %356 = icmp ne ptr %355, null
  br i1 %356, label %357, label %394

357:                                              ; preds = %349
  %358 = load ptr, ptr %27, align 8, !tbaa !5
  %359 = getelementptr inbounds %struct.aiMesh, ptr %358, i32 0, i32 1
  %360 = load i32, ptr %359, align 4, !tbaa !33
  %361 = zext i32 %360 to i64
  %362 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %361, i64 12)
  %363 = extractvalue { i64, i1 } %362, 1
  %364 = extractvalue { i64, i1 } %362, 0
  %365 = select i1 %363, i64 -1, i64 %364
  %366 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %365) #14
          to label %367 unwind label %390

367:                                              ; preds = %357
  %368 = icmp eq i64 %361, 0
  br i1 %368, label %375, label %369

369:                                              ; preds = %367
  %370 = getelementptr inbounds %class.aiVector3t, ptr %366, i64 %361
  br label %371

371:                                              ; preds = %371, %369
  %372 = phi ptr [ %366, %369 ], [ %373, %371 ]
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %372) #11
  %373 = getelementptr inbounds %class.aiVector3t, ptr %372, i64 1
  %374 = icmp eq ptr %373, %370
  br i1 %374, label %375, label %371

375:                                              ; preds = %371, %367
  %376 = load ptr, ptr %27, align 8, !tbaa !5
  %377 = getelementptr inbounds %struct.aiMesh, ptr %376, i32 0, i32 3
  store ptr %366, ptr %377, align 8, !tbaa !34
  store ptr %366, ptr %29, align 8, !tbaa !5
  br label %394

378:                                              ; preds = %288, %283
  %379 = landingpad { ptr, i32 }
          cleanup
  %380 = extractvalue { ptr, i32 } %379, 0
  store ptr %380, ptr %7, align 8
  %381 = extractvalue { ptr, i32 } %379, 1
  store i32 %381, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #11
  br label %1460

382:                                              ; preds = %289
  %383 = landingpad { ptr, i32 }
          cleanup
  %384 = extractvalue { ptr, i32 } %383, 0
  store ptr %384, ptr %7, align 8
  %385 = extractvalue { ptr, i32 } %383, 1
  store i32 %385, ptr %8, align 4
  br label %1459

386:                                              ; preds = %297
  %387 = landingpad { ptr, i32 }
          cleanup
  %388 = extractvalue { ptr, i32 } %387, 0
  store ptr %388, ptr %7, align 8
  %389 = extractvalue { ptr, i32 } %387, 1
  store i32 %389, ptr %8, align 4
  br label %1458

390:                                              ; preds = %589, %443, %425, %399, %357
  %391 = landingpad { ptr, i32 }
          cleanup
  %392 = extractvalue { ptr, i32 } %391, 0
  store ptr %392, ptr %7, align 8
  %393 = extractvalue { ptr, i32 } %391, 1
  store i32 %393, ptr %8, align 4
  br label %1457

394:                                              ; preds = %375, %349
  %395 = load ptr, ptr %16, align 8, !tbaa !5
  %396 = getelementptr inbounds %struct.aiMesh, ptr %395, i32 0, i32 4
  %397 = load ptr, ptr %396, align 8, !tbaa !35
  %398 = icmp ne ptr %397, null
  br i1 %398, label %399, label %420

399:                                              ; preds = %394
  %400 = load ptr, ptr %27, align 8, !tbaa !5
  %401 = getelementptr inbounds %struct.aiMesh, ptr %400, i32 0, i32 1
  %402 = load i32, ptr %401, align 4, !tbaa !33
  %403 = zext i32 %402 to i64
  %404 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %403, i64 12)
  %405 = extractvalue { i64, i1 } %404, 1
  %406 = extractvalue { i64, i1 } %404, 0
  %407 = select i1 %405, i64 -1, i64 %406
  %408 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %407) #14
          to label %409 unwind label %390

409:                                              ; preds = %399
  %410 = icmp eq i64 %403, 0
  br i1 %410, label %417, label %411

411:                                              ; preds = %409
  %412 = getelementptr inbounds %class.aiVector3t, ptr %408, i64 %403
  br label %413

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

417:                                              ; preds = %413, %409
  %418 = load ptr, ptr %27, align 8, !tbaa !5
  %419 = getelementptr inbounds %struct.aiMesh, ptr %418, i32 0, i32 4
  store ptr %408, ptr %419, align 8, !tbaa !35
  store ptr %408, ptr %30, align 8, !tbaa !5
  br label %420

420:                                              ; preds = %417, %394
  %421 = load ptr, ptr %16, align 8, !tbaa !5
  %422 = getelementptr inbounds %struct.aiMesh, ptr %421, i32 0, i32 5
  %423 = load ptr, ptr %422, align 8, !tbaa !36
  %424 = icmp ne ptr %423, null
  br i1 %424, label %425, label %466

425:                                              ; preds = %420
  %426 = load ptr, ptr %27, align 8, !tbaa !5
  %427 = getelementptr inbounds %struct.aiMesh, ptr %426, i32 0, i32 1
  %428 = load i32, ptr %427, align 4, !tbaa !33
  %429 = zext i32 %428 to i64
  %430 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %429, i64 12)
  %431 = extractvalue { i64, i1 } %430, 1
  %432 = extractvalue { i64, i1 } %430, 0
  %433 = select i1 %431, i64 -1, i64 %432
  %434 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %433) #14
          to label %435 unwind label %390

435:                                              ; preds = %425
  %436 = icmp eq i64 %429, 0
  br i1 %436, label %443, label %437

437:                                              ; preds = %435
  %438 = getelementptr inbounds %class.aiVector3t, ptr %434, i64 %429
  br label %439

439:                                              ; preds = %439, %437
  %440 = phi ptr [ %434, %437 ], [ %441, %439 ]
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %440) #11
  %441 = getelementptr inbounds %class.aiVector3t, ptr %440, i64 1
  %442 = icmp eq ptr %441, %438
  br i1 %442, label %443, label %439

443:                                              ; preds = %439, %435
  %444 = load ptr, ptr %27, align 8, !tbaa !5
  %445 = getelementptr inbounds %struct.aiMesh, ptr %444, i32 0, i32 5
  store ptr %434, ptr %445, align 8, !tbaa !36
  store ptr %434, ptr %31, align 8, !tbaa !5
  %446 = load ptr, ptr %27, align 8, !tbaa !5
  %447 = getelementptr inbounds %struct.aiMesh, ptr %446, i32 0, i32 1
  %448 = load i32, ptr %447, align 4, !tbaa !33
  %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) #14
          to label %455 unwind label %390

455:                                              ; preds = %443
  %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) #11
  %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 %27, align 8, !tbaa !5
  %465 = getelementptr inbounds %struct.aiMesh, ptr %464, i32 0, i32 6
  store ptr %454, ptr %465, align 8, !tbaa !37
  store ptr %454, ptr %32, align 8, !tbaa !5
  br label %466

466:                                              ; preds = %463, %420
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #11
  store i32 0, ptr %35, align 4, !tbaa !15
  br label %467

467:                                              ; preds = %525, %466
  %468 = load i32, ptr %35, align 4, !tbaa !15
  %469 = icmp ult i32 %468, 8
  br i1 %469, label %471, label %470

470:                                              ; preds = %467
  store i32 11, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #11
  br label %528

471:                                              ; preds = %467
  %472 = load i32, ptr %35, align 4, !tbaa !15
  %473 = zext i32 %472 to i64
  %474 = getelementptr inbounds [8 x ptr], ptr %33, i64 0, i64 %473
  store ptr null, ptr %474, align 8, !tbaa !5
  %475 = load ptr, ptr %16, align 8, !tbaa !5
  %476 = getelementptr inbounds %struct.aiMesh, ptr %475, i32 0, i32 8
  %477 = load i32, ptr %35, align 4, !tbaa !15
  %478 = zext i32 %477 to i64
  %479 = getelementptr inbounds [8 x ptr], ptr %476, i64 0, i64 %478
  %480 = load ptr, ptr %479, align 8, !tbaa !5
  %481 = icmp ne ptr %480, null
  br i1 %481, label %482, label %513

482:                                              ; preds = %471
  %483 = load ptr, ptr %27, align 8, !tbaa !5
  %484 = getelementptr inbounds %struct.aiMesh, ptr %483, i32 0, i32 1
  %485 = load i32, ptr %484, align 4, !tbaa !33
  %486 = zext i32 %485 to i64
  %487 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %486, i64 12)
  %488 = extractvalue { i64, i1 } %487, 1
  %489 = extractvalue { i64, i1 } %487, 0
  %490 = select i1 %488, i64 -1, i64 %489
  %491 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %490) #14
          to label %492 unwind label %509

492:                                              ; preds = %482
  %493 = icmp eq i64 %486, 0
  br i1 %493, label %500, label %494

494:                                              ; preds = %492
  %495 = getelementptr inbounds %class.aiVector3t, ptr %491, i64 %486
  br label %496

496:                                              ; preds = %496, %494
  %497 = phi ptr [ %491, %494 ], [ %498, %496 ]
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %497) #11
  %498 = getelementptr inbounds %class.aiVector3t, ptr %497, i64 1
  %499 = icmp eq ptr %498, %495
  br i1 %499, label %500, label %496

500:                                              ; preds = %496, %492
  %501 = load ptr, ptr %27, align 8, !tbaa !5
  %502 = getelementptr inbounds %struct.aiMesh, ptr %501, i32 0, i32 8
  %503 = load i32, ptr %35, align 4, !tbaa !15
  %504 = zext i32 %503 to i64
  %505 = getelementptr inbounds [8 x ptr], ptr %502, i64 0, i64 %504
  store ptr %491, ptr %505, align 8, !tbaa !5
  %506 = load i32, ptr %35, align 4, !tbaa !15
  %507 = zext i32 %506 to i64
  %508 = getelementptr inbounds [8 x ptr], ptr %33, i64 0, i64 %507
  store ptr %491, ptr %508, align 8, !tbaa !5
  br label %513

509:                                              ; preds = %482
  %510 = landingpad { ptr, i32 }
          cleanup
  %511 = extractvalue { ptr, i32 } %510, 0
  store ptr %511, ptr %7, align 8
  %512 = extractvalue { ptr, i32 } %510, 1
  store i32 %512, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #11
  br label %1457

513:                                              ; preds = %500, %471
  %514 = load ptr, ptr %16, align 8, !tbaa !5
  %515 = getelementptr inbounds %struct.aiMesh, ptr %514, i32 0, i32 9
  %516 = load i32, ptr %35, align 4, !tbaa !15
  %517 = zext i32 %516 to i64
  %518 = getelementptr inbounds [8 x i32], ptr %515, i64 0, i64 %517
  %519 = load i32, ptr %518, align 4, !tbaa !15
  %520 = load ptr, ptr %27, align 8, !tbaa !5
  %521 = getelementptr inbounds %struct.aiMesh, ptr %520, i32 0, i32 9
  %522 = load i32, ptr %35, align 4, !tbaa !15
  %523 = zext i32 %522 to i64
  %524 = getelementptr inbounds [8 x i32], ptr %521, i64 0, i64 %523
  store i32 %519, ptr %524, align 4, !tbaa !15
  br label %525

525:                                              ; preds = %513
  %526 = load i32, ptr %35, align 4, !tbaa !15
  %527 = add i32 %526, 1
  store i32 %527, ptr %35, align 4, !tbaa !15
  br label %467, !llvm.loop !38

528:                                              ; preds = %470
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #11
  store i32 0, ptr %36, align 4, !tbaa !15
  br label %529

529:                                              ; preds = %576, %528
  %530 = load i32, ptr %36, align 4, !tbaa !15
  %531 = icmp ult i32 %530, 8
  br i1 %531, label %533, label %532

532:                                              ; preds = %529
  store i32 14, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #11
  br label %579

533:                                              ; preds = %529
  %534 = load i32, ptr %36, align 4, !tbaa !15
  %535 = zext i32 %534 to i64
  %536 = getelementptr inbounds [8 x ptr], ptr %34, i64 0, i64 %535
  store ptr null, ptr %536, align 8, !tbaa !5
  %537 = load ptr, ptr %16, align 8, !tbaa !5
  %538 = getelementptr inbounds %struct.aiMesh, ptr %537, i32 0, i32 7
  %539 = load i32, ptr %36, align 4, !tbaa !15
  %540 = zext i32 %539 to i64
  %541 = getelementptr inbounds [8 x ptr], ptr %538, i64 0, i64 %540
  %542 = load ptr, ptr %541, align 8, !tbaa !5
  %543 = icmp ne ptr %542, null
  br i1 %543, label %544, label %575

544:                                              ; preds = %533
  %545 = load ptr, ptr %27, align 8, !tbaa !5
  %546 = getelementptr inbounds %struct.aiMesh, ptr %545, i32 0, i32 1
  %547 = load i32, ptr %546, align 4, !tbaa !33
  %548 = zext i32 %547 to i64
  %549 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %548, i64 16)
  %550 = extractvalue { i64, i1 } %549, 1
  %551 = extractvalue { i64, i1 } %549, 0
  %552 = select i1 %550, i64 -1, i64 %551
  %553 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %552) #14
          to label %554 unwind label %571

554:                                              ; preds = %544
  %555 = icmp eq i64 %548, 0
  br i1 %555, label %562, label %556

556:                                              ; preds = %554
  %557 = getelementptr inbounds %class.aiColor4t, ptr %553, i64 %548
  br label %558

558:                                              ; preds = %558, %556
  %559 = phi ptr [ %553, %556 ], [ %560, %558 ]
  call void @_ZN9aiColor4tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(16) %559) #11
  %560 = getelementptr inbounds %class.aiColor4t, ptr %559, i64 1
  %561 = icmp eq ptr %560, %557
  br i1 %561, label %562, label %558

562:                                              ; preds = %558, %554
  %563 = load ptr, ptr %27, align 8, !tbaa !5
  %564 = getelementptr inbounds %struct.aiMesh, ptr %563, i32 0, i32 7
  %565 = load i32, ptr %36, align 4, !tbaa !15
  %566 = zext i32 %565 to i64
  %567 = getelementptr inbounds [8 x ptr], ptr %564, i64 0, i64 %566
  store ptr %553, ptr %567, align 8, !tbaa !5
  %568 = load i32, ptr %36, align 4, !tbaa !15
  %569 = zext i32 %568 to i64
  %570 = getelementptr inbounds [8 x ptr], ptr %34, i64 0, i64 %569
  store ptr %553, ptr %570, align 8, !tbaa !5
  br label %575

571:                                              ; preds = %544
  %572 = landingpad { ptr, i32 }
          cleanup
  %573 = extractvalue { ptr, i32 } %572, 0
  store ptr %573, ptr %7, align 8
  %574 = extractvalue { ptr, i32 } %572, 1
  store i32 %574, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #11
  br label %1457

575:                                              ; preds = %562, %533
  br label %576

576:                                              ; preds = %575
  %577 = load i32, ptr %36, align 4, !tbaa !15
  %578 = add i32 %577, 1
  store i32 %578, ptr %36, align 4, !tbaa !15
  br label %529, !llvm.loop !39

579:                                              ; preds = %532
  %580 = load ptr, ptr %16, align 8, !tbaa !5
  %581 = getelementptr inbounds %struct.aiMesh, ptr %580, i32 0, i32 15
  %582 = load i32, ptr %581, align 8, !tbaa !40
  %583 = icmp ugt i32 %582, 0
  br i1 %583, label %584, label %607

584:                                              ; preds = %579
  %585 = load ptr, ptr %16, align 8, !tbaa !5
  %586 = getelementptr inbounds %struct.aiMesh, ptr %585, i32 0, i32 16
  %587 = load ptr, ptr %586, align 8, !tbaa !41
  %588 = icmp ne ptr %587, null
  br i1 %588, label %589, label %607

589:                                              ; preds = %584
  %590 = load ptr, ptr %16, align 8, !tbaa !5
  %591 = getelementptr inbounds %struct.aiMesh, ptr %590, i32 0, i32 15
  %592 = load i32, ptr %591, align 8, !tbaa !40
  %593 = load ptr, ptr %27, align 8, !tbaa !5
  %594 = getelementptr inbounds %struct.aiMesh, ptr %593, i32 0, i32 15
  store i32 %592, ptr %594, align 8, !tbaa !40
  %595 = load ptr, ptr %27, align 8, !tbaa !5
  %596 = getelementptr inbounds %struct.aiMesh, ptr %595, i32 0, i32 15
  %597 = load i32, ptr %596, align 8, !tbaa !40
  %598 = zext i32 %597 to i64
  %599 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %598, i64 8)
  %600 = extractvalue { i64, i1 } %599, 1
  %601 = extractvalue { i64, i1 } %599, 0
  %602 = select i1 %600, i64 -1, i64 %601
  %603 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %602) #14
          to label %604 unwind label %390

604:                                              ; preds = %589
  %605 = load ptr, ptr %27, align 8, !tbaa !5
  %606 = getelementptr inbounds %struct.aiMesh, ptr %605, i32 0, i32 16
  store ptr %603, ptr %606, align 8, !tbaa !41
  br label %607

607:                                              ; preds = %604, %584, %579
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #11
  store i32 0, ptr %37, align 4, !tbaa !15
  br label %608

608:                                              ; preds = %858, %607
  %609 = load i32, ptr %37, align 4, !tbaa !15
  %610 = load ptr, ptr %16, align 8, !tbaa !5
  %611 = getelementptr inbounds %struct.aiMesh, ptr %610, i32 0, i32 15
  %612 = load i32, ptr %611, align 8, !tbaa !40
  %613 = icmp ult i32 %609, %612
  br i1 %613, label %615, label %614

614:                                              ; preds = %608
  store i32 17, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #11
  br label %862

615:                                              ; preds = %608
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #11
  %616 = load ptr, ptr %16, align 8, !tbaa !5
  %617 = getelementptr inbounds %struct.aiMesh, ptr %616, i32 0, i32 16
  %618 = load ptr, ptr %617, align 8, !tbaa !41
  %619 = load i32, ptr %37, align 4, !tbaa !15
  %620 = zext i32 %619 to i64
  %621 = getelementptr inbounds ptr, ptr %618, i64 %620
  %622 = load ptr, ptr %621, align 8, !tbaa !5
  store ptr %622, ptr %38, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #11
  %623 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 1200) #14
          to label %624 unwind label %661

624:                                              ; preds = %615
  call void @_ZN10aiAnimMeshC2Ev(ptr noundef nonnull align 8 dereferenceable(1200) %623) #11
  %625 = load ptr, ptr %27, align 8, !tbaa !5
  %626 = getelementptr inbounds %struct.aiMesh, ptr %625, i32 0, i32 16
  %627 = load ptr, ptr %626, align 8, !tbaa !41
  %628 = load i32, ptr %37, align 4, !tbaa !15
  %629 = zext i32 %628 to i64
  %630 = getelementptr inbounds ptr, ptr %627, i64 %629
  store ptr %623, ptr %630, align 8, !tbaa !5
  store ptr %623, ptr %39, align 8, !tbaa !5
  %631 = load ptr, ptr %27, align 8, !tbaa !5
  %632 = getelementptr inbounds %struct.aiMesh, ptr %631, i32 0, i32 1
  %633 = load i32, ptr %632, align 4, !tbaa !33
  %634 = load ptr, ptr %39, align 8, !tbaa !5
  %635 = getelementptr inbounds %struct.aiAnimMesh, ptr %634, i32 0, i32 7
  store i32 %633, ptr %635, align 8, !tbaa !42
  %636 = load ptr, ptr %38, align 8, !tbaa !5
  %637 = getelementptr inbounds %struct.aiAnimMesh, ptr %636, i32 0, i32 1
  %638 = load ptr, ptr %637, align 8, !tbaa !44
  %639 = icmp ne ptr %638, null
  br i1 %639, label %640, label %665

640:                                              ; preds = %624
  %641 = load ptr, ptr %27, align 8, !tbaa !5
  %642 = getelementptr inbounds %struct.aiMesh, ptr %641, i32 0, i32 1
  %643 = load i32, ptr %642, align 4, !tbaa !33
  %644 = zext i32 %643 to i64
  %645 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %644, i64 12)
  %646 = extractvalue { i64, i1 } %645, 1
  %647 = extractvalue { i64, i1 } %645, 0
  %648 = select i1 %646, i64 -1, i64 %647
  %649 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %648) #14
          to label %650 unwind label %661

650:                                              ; preds = %640
  %651 = icmp eq i64 %644, 0
  br i1 %651, label %658, label %652

652:                                              ; preds = %650
  %653 = getelementptr inbounds %class.aiVector3t, ptr %649, i64 %644
  br label %654

654:                                              ; preds = %654, %652
  %655 = phi ptr [ %649, %652 ], [ %656, %654 ]
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %655) #11
  %656 = getelementptr inbounds %class.aiVector3t, ptr %655, i64 1
  %657 = icmp eq ptr %656, %653
  br i1 %657, label %658, label %654

658:                                              ; preds = %654, %650
  %659 = load ptr, ptr %39, align 8, !tbaa !5
  %660 = getelementptr inbounds %struct.aiAnimMesh, ptr %659, i32 0, i32 1
  store ptr %649, ptr %660, align 8, !tbaa !44
  br label %668

661:                                              ; preds = %731, %702, %673, %640, %615
  %662 = landingpad { ptr, i32 }
          cleanup
  %663 = extractvalue { ptr, i32 } %662, 0
  store ptr %663, ptr %7, align 8
  %664 = extractvalue { ptr, i32 } %662, 1
  store i32 %664, ptr %8, align 4
  br label %861

665:                                              ; preds = %624
  %666 = load ptr, ptr %39, align 8, !tbaa !5
  %667 = getelementptr inbounds %struct.aiAnimMesh, ptr %666, i32 0, i32 1
  store ptr null, ptr %667, align 8, !tbaa !44
  br label %668

668:                                              ; preds = %665, %658
  %669 = load ptr, ptr %38, align 8, !tbaa !5
  %670 = getelementptr inbounds %struct.aiAnimMesh, ptr %669, i32 0, i32 2
  %671 = load ptr, ptr %670, align 8, !tbaa !45
  %672 = icmp ne ptr %671, null
  br i1 %672, label %673, label %694

673:                                              ; preds = %668
  %674 = load ptr, ptr %27, align 8, !tbaa !5
  %675 = getelementptr inbounds %struct.aiMesh, ptr %674, i32 0, i32 1
  %676 = load i32, ptr %675, align 4, !tbaa !33
  %677 = zext i32 %676 to i64
  %678 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %677, i64 12)
  %679 = extractvalue { i64, i1 } %678, 1
  %680 = extractvalue { i64, i1 } %678, 0
  %681 = select i1 %679, i64 -1, i64 %680
  %682 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %681) #14
          to label %683 unwind label %661

683:                                              ; preds = %673
  %684 = icmp eq i64 %677, 0
  br i1 %684, label %691, label %685

685:                                              ; preds = %683
  %686 = getelementptr inbounds %class.aiVector3t, ptr %682, i64 %677
  br label %687

687:                                              ; preds = %687, %685
  %688 = phi ptr [ %682, %685 ], [ %689, %687 ]
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %688) #11
  %689 = getelementptr inbounds %class.aiVector3t, ptr %688, i64 1
  %690 = icmp eq ptr %689, %686
  br i1 %690, label %691, label %687

691:                                              ; preds = %687, %683
  %692 = load ptr, ptr %39, align 8, !tbaa !5
  %693 = getelementptr inbounds %struct.aiAnimMesh, ptr %692, i32 0, i32 2
  store ptr %682, ptr %693, align 8, !tbaa !45
  br label %697

694:                                              ; preds = %668
  %695 = load ptr, ptr %39, align 8, !tbaa !5
  %696 = getelementptr inbounds %struct.aiAnimMesh, ptr %695, i32 0, i32 2
  store ptr null, ptr %696, align 8, !tbaa !45
  br label %697

697:                                              ; preds = %694, %691
  %698 = load ptr, ptr %38, align 8, !tbaa !5
  %699 = getelementptr inbounds %struct.aiAnimMesh, ptr %698, i32 0, i32 3
  %700 = load ptr, ptr %699, align 8, !tbaa !46
  %701 = icmp ne ptr %700, null
  br i1 %701, label %702, label %723

702:                                              ; preds = %697
  %703 = load ptr, ptr %27, align 8, !tbaa !5
  %704 = getelementptr inbounds %struct.aiMesh, ptr %703, i32 0, i32 1
  %705 = load i32, ptr %704, align 4, !tbaa !33
  %706 = zext i32 %705 to i64
  %707 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %706, i64 12)
  %708 = extractvalue { i64, i1 } %707, 1
  %709 = extractvalue { i64, i1 } %707, 0
  %710 = select i1 %708, i64 -1, i64 %709
  %711 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %710) #14
          to label %712 unwind label %661

712:                                              ; preds = %702
  %713 = icmp eq i64 %706, 0
  br i1 %713, label %720, label %714

714:                                              ; preds = %712
  %715 = getelementptr inbounds %class.aiVector3t, ptr %711, i64 %706
  br label %716

716:                                              ; preds = %716, %714
  %717 = phi ptr [ %711, %714 ], [ %718, %716 ]
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %717) #11
  %718 = getelementptr inbounds %class.aiVector3t, ptr %717, i64 1
  %719 = icmp eq ptr %718, %715
  br i1 %719, label %720, label %716

720:                                              ; preds = %716, %712
  %721 = load ptr, ptr %39, align 8, !tbaa !5
  %722 = getelementptr inbounds %struct.aiAnimMesh, ptr %721, i32 0, i32 3
  store ptr %711, ptr %722, align 8, !tbaa !46
  br label %726

723:                                              ; preds = %697
  %724 = load ptr, ptr %39, align 8, !tbaa !5
  %725 = getelementptr inbounds %struct.aiAnimMesh, ptr %724, i32 0, i32 3
  store ptr null, ptr %725, align 8, !tbaa !46
  br label %726

726:                                              ; preds = %723, %720
  %727 = load ptr, ptr %38, align 8, !tbaa !5
  %728 = getelementptr inbounds %struct.aiAnimMesh, ptr %727, i32 0, i32 4
  %729 = load ptr, ptr %728, align 8, !tbaa !47
  %730 = icmp ne ptr %729, null
  br i1 %730, label %731, label %752

731:                                              ; preds = %726
  %732 = load ptr, ptr %27, align 8, !tbaa !5
  %733 = getelementptr inbounds %struct.aiMesh, ptr %732, i32 0, i32 1
  %734 = load i32, ptr %733, align 4, !tbaa !33
  %735 = zext i32 %734 to i64
  %736 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %735, i64 12)
  %737 = extractvalue { i64, i1 } %736, 1
  %738 = extractvalue { i64, i1 } %736, 0
  %739 = select i1 %737, i64 -1, i64 %738
  %740 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %739) #14
          to label %741 unwind label %661

741:                                              ; preds = %731
  %742 = icmp eq i64 %735, 0
  br i1 %742, label %749, label %743

743:                                              ; preds = %741
  %744 = getelementptr inbounds %class.aiVector3t, ptr %740, i64 %735
  br label %745

745:                                              ; preds = %745, %743
  %746 = phi ptr [ %740, %743 ], [ %747, %745 ]
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %746) #11
  %747 = getelementptr inbounds %class.aiVector3t, ptr %746, i64 1
  %748 = icmp eq ptr %747, %744
  br i1 %748, label %749, label %745

749:                                              ; preds = %745, %741
  %750 = load ptr, ptr %39, align 8, !tbaa !5
  %751 = getelementptr inbounds %struct.aiAnimMesh, ptr %750, i32 0, i32 4
  store ptr %740, ptr %751, align 8, !tbaa !47
  br label %755

752:                                              ; preds = %726
  %753 = load ptr, ptr %39, align 8, !tbaa !5
  %754 = getelementptr inbounds %struct.aiAnimMesh, ptr %753, i32 0, i32 4
  store ptr null, ptr %754, align 8, !tbaa !47
  br label %755

755:                                              ; preds = %752, %749
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #11
  store i32 0, ptr %40, align 4, !tbaa !15
  br label %756

756:                                              ; preds = %803, %755
  %757 = load i32, ptr %40, align 4, !tbaa !15
  %758 = icmp slt i32 %757, 8
  br i1 %758, label %760, label %759

759:                                              ; preds = %756
  store i32 20, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #11
  br label %806

760:                                              ; preds = %756
  %761 = load ptr, ptr %38, align 8, !tbaa !5
  %762 = getelementptr inbounds %struct.aiAnimMesh, ptr %761, i32 0, i32 5
  %763 = load i32, ptr %40, align 4, !tbaa !15
  %764 = sext i32 %763 to i64
  %765 = getelementptr inbounds [8 x ptr], ptr %762, i64 0, i64 %764
  %766 = load ptr, ptr %765, align 8, !tbaa !5
  %767 = icmp ne ptr %766, null
  br i1 %767, label %768, label %796

768:                                              ; preds = %760
  %769 = load ptr, ptr %27, align 8, !tbaa !5
  %770 = getelementptr inbounds %struct.aiMesh, ptr %769, i32 0, i32 1
  %771 = load i32, ptr %770, align 4, !tbaa !33
  %772 = zext i32 %771 to i64
  %773 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %772, i64 16)
  %774 = extractvalue { i64, i1 } %773, 1
  %775 = extractvalue { i64, i1 } %773, 0
  %776 = select i1 %774, i64 -1, i64 %775
  %777 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %776) #14
          to label %778 unwind label %792

778:                                              ; preds = %768
  %779 = icmp eq i64 %772, 0
  br i1 %779, label %786, label %780

780:                                              ; preds = %778
  %781 = getelementptr inbounds %class.aiColor4t, ptr %777, i64 %772
  br label %782

782:                                              ; preds = %782, %780
  %783 = phi ptr [ %777, %780 ], [ %784, %782 ]
  call void @_ZN9aiColor4tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(16) %783) #11
  %784 = getelementptr inbounds %class.aiColor4t, ptr %783, i64 1
  %785 = icmp eq ptr %784, %781
  br i1 %785, label %786, label %782

786:                                              ; preds = %782, %778
  %787 = load ptr, ptr %39, align 8, !tbaa !5
  %788 = getelementptr inbounds %struct.aiAnimMesh, ptr %787, i32 0, i32 5
  %789 = load i32, ptr %40, align 4, !tbaa !15
  %790 = sext i32 %789 to i64
  %791 = getelementptr inbounds [8 x ptr], ptr %788, i64 0, i64 %790
  store ptr %777, ptr %791, align 8, !tbaa !5
  br label %802

792:                                              ; preds = %768
  %793 = landingpad { ptr, i32 }
          cleanup
  %794 = extractvalue { ptr, i32 } %793, 0
  store ptr %794, ptr %7, align 8
  %795 = extractvalue { ptr, i32 } %793, 1
  store i32 %795, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #11
  br label %861

796:                                              ; preds = %760
  %797 = load ptr, ptr %39, align 8, !tbaa !5
  %798 = getelementptr inbounds %struct.aiAnimMesh, ptr %797, i32 0, i32 5
  %799 = load i32, ptr %40, align 4, !tbaa !15
  %800 = sext i32 %799 to i64
  %801 = getelementptr inbounds [8 x ptr], ptr %798, i64 0, i64 %800
  store ptr null, ptr %801, align 8, !tbaa !5
  br label %802

802:                                              ; preds = %796, %786
  br label %803

803:                                              ; preds = %802
  %804 = load i32, ptr %40, align 4, !tbaa !15
  %805 = add nsw i32 %804, 1
  store i32 %805, ptr %40, align 4, !tbaa !15
  br label %756, !llvm.loop !48

806:                                              ; preds = %759
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #11
  store i32 0, ptr %41, align 4, !tbaa !15
  br label %807

807:                                              ; preds = %854, %806
  %808 = load i32, ptr %41, align 4, !tbaa !15
  %809 = icmp slt i32 %808, 8
  br i1 %809, label %811, label %810

810:                                              ; preds = %807
  store i32 23, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #11
  br label %857

811:                                              ; preds = %807
  %812 = load ptr, ptr %38, align 8, !tbaa !5
  %813 = getelementptr inbounds %struct.aiAnimMesh, ptr %812, i32 0, i32 6
  %814 = load i32, ptr %41, align 4, !tbaa !15
  %815 = sext i32 %814 to i64
  %816 = getelementptr inbounds [8 x ptr], ptr %813, i64 0, i64 %815
  %817 = load ptr, ptr %816, align 8, !tbaa !5
  %818 = icmp ne ptr %817, null
  br i1 %818, label %819, label %847

819:                                              ; preds = %811
  %820 = load ptr, ptr %27, align 8, !tbaa !5
  %821 = getelementptr inbounds %struct.aiMesh, ptr %820, i32 0, i32 1
  %822 = load i32, ptr %821, align 4, !tbaa !33
  %823 = zext i32 %822 to i64
  %824 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %823, i64 12)
  %825 = extractvalue { i64, i1 } %824, 1
  %826 = extractvalue { i64, i1 } %824, 0
  %827 = select i1 %825, i64 -1, i64 %826
  %828 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %827) #14
          to label %829 unwind label %843

829:                                              ; preds = %819
  %830 = icmp eq i64 %823, 0
  br i1 %830, label %837, label %831

831:                                              ; preds = %829
  %832 = getelementptr inbounds %class.aiVector3t, ptr %828, i64 %823
  br label %833

833:                                              ; preds = %833, %831
  %834 = phi ptr [ %828, %831 ], [ %835, %833 ]
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %834) #11
  %835 = getelementptr inbounds %class.aiVector3t, ptr %834, i64 1
  %836 = icmp eq ptr %835, %832
  br i1 %836, label %837, label %833

837:                                              ; preds = %833, %829
  %838 = load ptr, ptr %39, align 8, !tbaa !5
  %839 = getelementptr inbounds %struct.aiAnimMesh, ptr %838, i32 0, i32 6
  %840 = load i32, ptr %41, align 4, !tbaa !15
  %841 = sext i32 %840 to i64
  %842 = getelementptr inbounds [8 x ptr], ptr %839, i64 0, i64 %841
  store ptr %828, ptr %842, align 8, !tbaa !5
  br label %853

843:                                              ; preds = %819
  %844 = landingpad { ptr, i32 }
          cleanup
  %845 = extractvalue { ptr, i32 } %844, 0
  store ptr %845, ptr %7, align 8
  %846 = extractvalue { ptr, i32 } %844, 1
  store i32 %846, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #11
  br label %861

847:                                              ; preds = %811
  %848 = load ptr, ptr %39, align 8, !tbaa !5
  %849 = getelementptr inbounds %struct.aiAnimMesh, ptr %848, i32 0, i32 6
  %850 = load i32, ptr %41, align 4, !tbaa !15
  %851 = sext i32 %850 to i64
  %852 = getelementptr inbounds [8 x ptr], ptr %849, i64 0, i64 %851
  store ptr null, ptr %852, align 8, !tbaa !5
  br label %853

853:                                              ; preds = %847, %837
  br label %854

854:                                              ; preds = %853
  %855 = load i32, ptr %41, align 4, !tbaa !15
  %856 = add nsw i32 %855, 1
  store i32 %856, ptr %41, align 4, !tbaa !15
  br label %807, !llvm.loop !49

857:                                              ; preds = %810
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #11
  br label %858

858:                                              ; preds = %857
  %859 = load i32, ptr %37, align 4, !tbaa !15
  %860 = add i32 %859, 1
  store i32 %860, ptr %37, align 4, !tbaa !15
  br label %608, !llvm.loop !50

861:                                              ; preds = %843, %792, %661
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #11
  br label %1457

862:                                              ; preds = %614
  call void @llvm.lifetime.start.p0(i64 24, ptr %42) #11
  %863 = load ptr, ptr %16, align 8, !tbaa !5
  %864 = getelementptr inbounds %struct.aiMesh, ptr %863, i32 0, i32 11
  %865 = load i32, ptr %864, align 8, !tbaa !51
  %866 = zext i32 %865 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr %43) #11
  call void @_ZNSaISt6vectorI14aiVertexWeightSaIS0_EEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %43) #11
  invoke void @_ZNSt6vectorIS_I14aiVertexWeightSaIS0_EESaIS2_EEC2EmRKS3_(ptr noundef nonnull align 8 dereferenceable(24) %42, i64 noundef %866, ptr noundef nonnull align 1 dereferenceable(1) %43)
          to label %867 unwind label %875

867:                                              ; preds = %862
  call void @_ZNSt15__new_allocatorISt6vectorI14aiVertexWeightSaIS1_EEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %43) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %43) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #11
  store i32 0, ptr %44, align 4, !tbaa !15
  br label %868

868:                                              ; preds = %897, %867
  %869 = load i32, ptr %44, align 4, !tbaa !15
  %870 = load ptr, ptr %16, align 8, !tbaa !5
  %871 = getelementptr inbounds %struct.aiMesh, ptr %870, i32 0, i32 11
  %872 = load i32, ptr %871, align 8, !tbaa !51
  %873 = icmp ult i32 %869, %872
  br i1 %873, label %879, label %874

874:                                              ; preds = %868
  store i32 26, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #11
  br label %904

875:                                              ; preds = %862
  %876 = landingpad { ptr, i32 }
          cleanup
  %877 = extractvalue { ptr, i32 } %876, 0
  store ptr %877, ptr %7, align 8
  %878 = extractvalue { ptr, i32 } %876, 1
  store i32 %878, ptr %8, align 4
  call void @_ZNSt15__new_allocatorISt6vectorI14aiVertexWeightSaIS1_EEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %43) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %43) #11
  br label %1456

879:                                              ; preds = %868
  %880 = load i32, ptr %44, align 4, !tbaa !15
  %881 = zext i32 %880 to i64
  %882 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_I14aiVertexWeightSaIS0_EESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %42, i64 noundef %881) #11
  %883 = load ptr, ptr %16, align 8, !tbaa !5
  %884 = getelementptr inbounds %struct.aiMesh, ptr %883, i32 0, i32 12
  %885 = load ptr, ptr %884, align 8, !tbaa !52
  %886 = load i32, ptr %44, align 4, !tbaa !15
  %887 = zext i32 %886 to i64
  %888 = getelementptr inbounds ptr, ptr %885, i64 %887
  %889 = load ptr, ptr %888, align 8, !tbaa !5
  %890 = getelementptr inbounds %struct.aiBone, ptr %889, i32 0, i32 1
  %891 = load i32, ptr %890, align 4, !tbaa !53
  %892 = load i32, ptr %19, align 4, !tbaa !15
  %893 = sub i32 %892, 1
  %894 = udiv i32 %891, %893
  %895 = zext i32 %894 to i64
  invoke void @_ZNSt6vectorI14aiVertexWeightSaIS0_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %882, i64 noundef %895)
          to label %896 unwind label %900

896:                                              ; preds = %879
  br label %897

897:                                              ; preds = %896
  %898 = load i32, ptr %44, align 4, !tbaa !15
  %899 = add i32 %898, 1
  store i32 %899, ptr %44, align 4, !tbaa !15
  br label %868, !llvm.loop !56

900:                                              ; preds = %879
  %901 = landingpad { ptr, i32 }
          cleanup
  %902 = extractvalue { ptr, i32 } %901, 0
  store ptr %902, ptr %7, align 8
  %903 = extractvalue { ptr, i32 } %901, 1
  store i32 %903, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #11
  br label %1455

904:                                              ; preds = %874
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #11
  store i32 0, ptr %45, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #11
  store i32 0, ptr %46, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #11
  store i32 0, ptr %47, align 4, !tbaa !15
  br label %905

905:                                              ; preds = %1300, %904
  %906 = load i32, ptr %47, align 4, !tbaa !15
  %907 = load ptr, ptr %16, align 8, !tbaa !5
  %908 = getelementptr inbounds %struct.aiMesh, ptr %907, i32 0, i32 2
  %909 = load i32, ptr %908, align 8, !tbaa !27
  %910 = icmp ult i32 %906, %909
  br i1 %910, label %912, label %911

911:                                              ; preds = %905
  store i32 29, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #11
  br label %1303

912:                                              ; preds = %905
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #11
  %913 = load ptr, ptr %16, align 8, !tbaa !5
  %914 = getelementptr inbounds %struct.aiMesh, ptr %913, i32 0, i32 10
  %915 = load ptr, ptr %914, align 8, !tbaa !26
  %916 = load i32, ptr %47, align 4, !tbaa !15
  %917 = zext i32 %916 to i64
  %918 = getelementptr inbounds %struct.aiFace, ptr %915, i64 %917
  store ptr %918, ptr %48, align 8, !tbaa !5
  %919 = load i32, ptr %25, align 4, !tbaa !15
  %920 = icmp eq i32 %919, 3
  br i1 %920, label %921, label %926

921:                                              ; preds = %912
  %922 = load ptr, ptr %48, align 8, !tbaa !5
  %923 = getelementptr inbounds %struct.aiFace, ptr %922, i32 0, i32 0
  %924 = load i32, ptr %923, align 8, !tbaa !28
  %925 = icmp ule i32 %924, 3
  br i1 %925, label %936, label %926

926:                                              ; preds = %921, %912
  %927 = load i32, ptr %25, align 4, !tbaa !15
  %928 = icmp ne i32 %927, 3
  br i1 %928, label %929, label %937

929:                                              ; preds = %926
  %930 = load ptr, ptr %48, align 8, !tbaa !5
  %931 = getelementptr inbounds %struct.aiFace, ptr %930, i32 0, i32 0
  %932 = load i32, ptr %931, align 8, !tbaa !28
  %933 = load i32, ptr %25, align 4, !tbaa !15
  %934 = add i32 %933, 1
  %935 = icmp ne i32 %932, %934
  br i1 %935, label %936, label %937

936:                                              ; preds = %929, %921
  store i32 31, ptr %15, align 4
  br label %1297

937:                                              ; preds = %929, %926
  %938 = load ptr, ptr %48, align 8, !tbaa !5
  %939 = getelementptr inbounds %struct.aiFace, ptr %938, i32 0, i32 0
  %940 = load i32, ptr %939, align 8, !tbaa !28
  %941 = load ptr, ptr %28, align 8, !tbaa !5
  %942 = getelementptr inbounds %struct.aiFace, ptr %941, i32 0, i32 0
  store i32 %940, ptr %942, align 8, !tbaa !28
  %943 = load ptr, ptr %48, align 8, !tbaa !5
  %944 = getelementptr inbounds %struct.aiFace, ptr %943, i32 0, i32 1
  %945 = load ptr, ptr %944, align 8, !tbaa !57
  %946 = load ptr, ptr %28, align 8, !tbaa !5
  %947 = getelementptr inbounds %struct.aiFace, ptr %946, i32 0, i32 1
  store ptr %945, ptr %947, align 8, !tbaa !57
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #11
  store i32 0, ptr %49, align 4, !tbaa !15
  br label %948

948:                                              ; preds = %1289, %937
  %949 = load i32, ptr %49, align 4, !tbaa !15
  %950 = load ptr, ptr %48, align 8, !tbaa !5
  %951 = getelementptr inbounds %struct.aiFace, ptr %950, i32 0, i32 0
  %952 = load i32, ptr %951, align 8, !tbaa !28
  %953 = icmp ult i32 %949, %952
  br i1 %953, label %955, label %954

954:                                              ; preds = %948
  store i32 32, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #11
  br label %1292

955:                                              ; preds = %948
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #11
  %956 = load ptr, ptr %48, align 8, !tbaa !5
  %957 = getelementptr inbounds %struct.aiFace, ptr %956, i32 0, i32 1
  %958 = load ptr, ptr %957, align 8, !tbaa !57
  %959 = load i32, ptr %49, align 4, !tbaa !15
  %960 = zext i32 %959 to i64
  %961 = getelementptr inbounds i32, ptr %958, i64 %960
  %962 = load i32, ptr %961, align 4, !tbaa !15
  store i32 %962, ptr %50, align 4, !tbaa !15
  %963 = load ptr, ptr %24, align 8, !tbaa !5
  %964 = icmp ne ptr %963, null
  br i1 %964, label %965, label %996

965:                                              ; preds = %955
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #11
  %966 = load ptr, ptr %24, align 8, !tbaa !5
  %967 = load i32, ptr %50, align 4, !tbaa !15
  %968 = zext i32 %967 to i64
  %969 = getelementptr inbounds %"class.std::vector.15", ptr %966, i64 %968
  store ptr %969, ptr %51, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #11
  %970 = load ptr, ptr %51, align 8, !tbaa !5
  %971 = call ptr @_ZNSt6vectorISt4pairIjfESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %970) #11
  %972 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.21", ptr %53, i32 0, i32 0
  store ptr %971, ptr %972, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKSt4pairIjfESt6vectorIS2_SaIS2_EEEC2IPS2_vEERKNS0_IT_S7_EE(ptr noundef nonnull align 8 dereferenceable(8) %52, ptr noundef nonnull align 8 dereferenceable(8) %53) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #11
  %973 = load ptr, ptr %51, align 8, !tbaa !5
  %974 = call ptr @_ZNSt6vectorISt4pairIjfESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %973) #11
  %975 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.21", ptr %55, i32 0, i32 0
  store ptr %974, ptr %975, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKSt4pairIjfESt6vectorIS2_SaIS2_EEEC2IPS2_vEERKNS0_IT_S7_EE(ptr noundef nonnull align 8 dereferenceable(8) %54, ptr noundef nonnull align 8 dereferenceable(8) %55) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #11
  br label %976

976:                                              ; preds = %989, %965
  %977 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt4pairIjfESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %52, ptr noundef nonnull align 8 dereferenceable(8) %54) #11
  br i1 %977, label %979, label %978

978:                                              ; preds = %976
  store i32 35, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #11
  br label %995

979:                                              ; preds = %976
  %980 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKSt4pairIjfESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %52) #11
  %981 = getelementptr inbounds %"struct.std::pair", ptr %980, i32 0, i32 0
  %982 = load i32, ptr %981, align 4, !tbaa !58
  %983 = zext i32 %982 to i64
  %984 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_I14aiVertexWeightSaIS0_EESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %42, i64 noundef %983) #11
  %985 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKSt4pairIjfESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %52) #11
  %986 = getelementptr inbounds %"struct.std::pair", ptr %985, i32 0, i32 1
  %987 = invoke noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt6vectorI14aiVertexWeightSaIS0_EE12emplace_backIJRjRKfEEERS0_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %984, ptr noundef nonnull align 4 dereferenceable(4) %45, ptr noundef nonnull align 4 dereferenceable(4) %986)
          to label %988 unwind label %991

988:                                              ; preds = %979
  br label %989

989:                                              ; preds = %988
  %990 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKSt4pairIjfESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %52) #11
  br label %976, !llvm.loop !60

991:                                              ; preds = %979
  %992 = landingpad { ptr, i32 }
          cleanup
  %993 = extractvalue { ptr, i32 } %992, 0
  store ptr %993, ptr %7, align 8
  %994 = extractvalue { ptr, i32 } %992, 1
  store i32 %994, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #11
  br label %1454

995:                                              ; preds = %978
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #11
  br label %996

996:                                              ; preds = %995, %955
  %997 = load ptr, ptr %29, align 8, !tbaa !5
  %998 = icmp ne ptr %997, null
  br i1 %998, label %999, label %1008

999:                                              ; preds = %996
  %1000 = load ptr, ptr %16, align 8, !tbaa !5
  %1001 = getelementptr inbounds %struct.aiMesh, ptr %1000, i32 0, i32 3
  %1002 = load ptr, ptr %1001, align 8, !tbaa !34
  %1003 = load i32, ptr %50, align 4, !tbaa !15
  %1004 = zext i32 %1003 to i64
  %1005 = getelementptr inbounds %class.aiVector3t, ptr %1002, i64 %1004
  %1006 = load ptr, ptr %29, align 8, !tbaa !5
  %1007 = getelementptr inbounds %class.aiVector3t, ptr %1006, i32 1
  store ptr %1007, ptr %29, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1006, ptr align 4 %1005, i64 12, i1 false), !tbaa.struct !61
  br label %1008

1008:                                             ; preds = %999, %996
  %1009 = load ptr, ptr %30, align 8, !tbaa !5
  %1010 = icmp ne ptr %1009, null
  br i1 %1010, label %1011, label %1020

1011:                                             ; preds = %1008
  %1012 = load ptr, ptr %16, align 8, !tbaa !5
  %1013 = getelementptr inbounds %struct.aiMesh, ptr %1012, i32 0, i32 4
  %1014 = load ptr, ptr %1013, align 8, !tbaa !35
  %1015 = load i32, ptr %50, align 4, !tbaa !15
  %1016 = zext i32 %1015 to i64
  %1017 = getelementptr inbounds %class.aiVector3t, ptr %1014, i64 %1016
  %1018 = load ptr, ptr %30, align 8, !tbaa !5
  %1019 = getelementptr inbounds %class.aiVector3t, ptr %1018, i32 1
  store ptr %1019, ptr %30, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1018, ptr align 4 %1017, i64 12, i1 false), !tbaa.struct !61
  br label %1020

1020:                                             ; preds = %1011, %1008
  %1021 = load ptr, ptr %31, align 8, !tbaa !5
  %1022 = icmp ne ptr %1021, null
  br i1 %1022, label %1023, label %1040

1023:                                             ; preds = %1020
  %1024 = load ptr, ptr %16, align 8, !tbaa !5
  %1025 = getelementptr inbounds %struct.aiMesh, ptr %1024, i32 0, i32 5
  %1026 = load ptr, ptr %1025, align 8, !tbaa !36
  %1027 = load i32, ptr %50, align 4, !tbaa !15
  %1028 = zext i32 %1027 to i64
  %1029 = getelementptr inbounds %class.aiVector3t, ptr %1026, i64 %1028
  %1030 = load ptr, ptr %31, align 8, !tbaa !5
  %1031 = getelementptr inbounds %class.aiVector3t, ptr %1030, i32 1
  store ptr %1031, ptr %31, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1030, ptr align 4 %1029, i64 12, i1 false), !tbaa.struct !61
  %1032 = load ptr, ptr %16, align 8, !tbaa !5
  %1033 = getelementptr inbounds %struct.aiMesh, ptr %1032, i32 0, i32 6
  %1034 = load ptr, ptr %1033, align 8, !tbaa !37
  %1035 = load i32, ptr %50, align 4, !tbaa !15
  %1036 = zext i32 %1035 to i64
  %1037 = getelementptr inbounds %class.aiVector3t, ptr %1034, i64 %1036
  %1038 = load ptr, ptr %32, align 8, !tbaa !5
  %1039 = getelementptr inbounds %class.aiVector3t, ptr %1038, i32 1
  store ptr %1039, ptr %32, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1038, ptr align 4 %1037, i64 12, i1 false), !tbaa.struct !61
  br label %1040

1040:                                             ; preds = %1023, %1020
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #11
  store i32 0, ptr %56, align 4, !tbaa !15
  br label %1041

1041:                                             ; preds = %1067, %1040
  %1042 = load i32, ptr %56, align 4, !tbaa !15
  %1043 = icmp ult i32 %1042, 8
  br i1 %1043, label %1045, label %1044

1044:                                             ; preds = %1041
  store i32 38, ptr %15, align 4
  br label %1070

1045:                                             ; preds = %1041
  %1046 = load i32, ptr %56, align 4, !tbaa !15
  %1047 = zext i32 %1046 to i64
  %1048 = getelementptr inbounds [8 x ptr], ptr %33, i64 0, i64 %1047
  %1049 = load ptr, ptr %1048, align 8, !tbaa !5
  %1050 = icmp ne ptr %1049, null
  br i1 %1050, label %1052, label %1051

1051:                                             ; preds = %1045
  store i32 38, ptr %15, align 4
  br label %1070

1052:                                             ; preds = %1045
  %1053 = load ptr, ptr %16, align 8, !tbaa !5
  %1054 = getelementptr inbounds %struct.aiMesh, ptr %1053, i32 0, i32 8
  %1055 = load i32, ptr %56, align 4, !tbaa !15
  %1056 = zext i32 %1055 to i64
  %1057 = getelementptr inbounds [8 x ptr], ptr %1054, i64 0, i64 %1056
  %1058 = load ptr, ptr %1057, align 8, !tbaa !5
  %1059 = load i32, ptr %50, align 4, !tbaa !15
  %1060 = zext i32 %1059 to i64
  %1061 = getelementptr inbounds %class.aiVector3t, ptr %1058, i64 %1060
  %1062 = load i32, ptr %56, align 4, !tbaa !15
  %1063 = zext i32 %1062 to i64
  %1064 = getelementptr inbounds [8 x ptr], ptr %33, i64 0, i64 %1063
  %1065 = load ptr, ptr %1064, align 8, !tbaa !5
  %1066 = getelementptr inbounds %class.aiVector3t, ptr %1065, i32 1
  store ptr %1066, ptr %1064, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1065, ptr align 4 %1061, i64 12, i1 false), !tbaa.struct !61
  br label %1067

1067:                                             ; preds = %1052
  %1068 = load i32, ptr %56, align 4, !tbaa !15
  %1069 = add i32 %1068, 1
  store i32 %1069, ptr %56, align 4, !tbaa !15
  br label %1041, !llvm.loop !63

1070:                                             ; preds = %1051, %1044
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #11
  br label %1071

1071:                                             ; preds = %1070
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #11
  store i32 0, ptr %57, align 4, !tbaa !15
  br label %1072

1072:                                             ; preds = %1098, %1071
  %1073 = load i32, ptr %57, align 4, !tbaa !15
  %1074 = icmp ult i32 %1073, 8
  br i1 %1074, label %1076, label %1075

1075:                                             ; preds = %1072
  store i32 41, ptr %15, align 4
  br label %1101

1076:                                             ; preds = %1072
  %1077 = load i32, ptr %57, align 4, !tbaa !15
  %1078 = zext i32 %1077 to i64
  %1079 = getelementptr inbounds [8 x ptr], ptr %34, i64 0, i64 %1078
  %1080 = load ptr, ptr %1079, align 8, !tbaa !5
  %1081 = icmp ne ptr %1080, null
  br i1 %1081, label %1083, label %1082

1082:                                             ; preds = %1076
  store i32 41, ptr %15, align 4
  br label %1101

1083:                                             ; preds = %1076
  %1084 = load ptr, ptr %16, align 8, !tbaa !5
  %1085 = getelementptr inbounds %struct.aiMesh, ptr %1084, i32 0, i32 7
  %1086 = load i32, ptr %57, align 4, !tbaa !15
  %1087 = zext i32 %1086 to i64
  %1088 = getelementptr inbounds [8 x ptr], ptr %1085, i64 0, i64 %1087
  %1089 = load ptr, ptr %1088, align 8, !tbaa !5
  %1090 = load i32, ptr %50, align 4, !tbaa !15
  %1091 = zext i32 %1090 to i64
  %1092 = getelementptr inbounds %class.aiColor4t, ptr %1089, i64 %1091
  %1093 = load i32, ptr %57, align 4, !tbaa !15
  %1094 = zext i32 %1093 to i64
  %1095 = getelementptr inbounds [8 x ptr], ptr %34, i64 0, i64 %1094
  %1096 = load ptr, ptr %1095, align 8, !tbaa !5
  %1097 = getelementptr inbounds %class.aiColor4t, ptr %1096, i32 1
  store ptr %1097, ptr %1095, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1096, ptr align 4 %1092, i64 16, i1 false), !tbaa.struct !64
  br label %1098

1098:                                             ; preds = %1083
  %1099 = load i32, ptr %57, align 4, !tbaa !15
  %1100 = add i32 %1099, 1
  store i32 %1100, ptr %57, align 4, !tbaa !15
  br label %1072, !llvm.loop !65

1101:                                             ; preds = %1082, %1075
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #11
  br label %1102

1102:                                             ; preds = %1101
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #11
  store i32 0, ptr %58, align 4, !tbaa !15
  br label %1103

1103:                                             ; preds = %1268, %1102
  %1104 = load i32, ptr %58, align 4, !tbaa !15
  %1105 = load ptr, ptr %16, align 8, !tbaa !5
  %1106 = getelementptr inbounds %struct.aiMesh, ptr %1105, i32 0, i32 15
  %1107 = load i32, ptr %1106, align 8, !tbaa !40
  %1108 = icmp ult i32 %1104, %1107
  br i1 %1108, label %1109, label %1271

1109:                                             ; preds = %1103
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #11
  %1110 = load ptr, ptr %16, align 8, !tbaa !5
  %1111 = getelementptr inbounds %struct.aiMesh, ptr %1110, i32 0, i32 16
  %1112 = load ptr, ptr %1111, align 8, !tbaa !41
  %1113 = load i32, ptr %58, align 4, !tbaa !15
  %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 %59, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #11
  %1117 = load ptr, ptr %27, align 8, !tbaa !5
  %1118 = getelementptr inbounds %struct.aiMesh, ptr %1117, i32 0, i32 16
  %1119 = load ptr, ptr %1118, align 8, !tbaa !41
  %1120 = load i32, ptr %58, align 4, !tbaa !15
  %1121 = zext i32 %1120 to i64
  %1122 = getelementptr inbounds ptr, ptr %1119, i64 %1121
  %1123 = load ptr, ptr %1122, align 8, !tbaa !5
  store ptr %1123, ptr %60, align 8, !tbaa !5
  %1124 = load ptr, ptr %59, align 8, !tbaa !5
  %1125 = getelementptr inbounds %struct.aiAnimMesh, ptr %1124, i32 0, i32 1
  %1126 = load ptr, ptr %1125, align 8, !tbaa !44
  %1127 = icmp ne ptr %1126, null
  br i1 %1127, label %1128, label %1141

1128:                                             ; preds = %1109
  %1129 = load ptr, ptr %59, align 8, !tbaa !5
  %1130 = getelementptr inbounds %struct.aiAnimMesh, ptr %1129, i32 0, i32 1
  %1131 = load ptr, ptr %1130, align 8, !tbaa !44
  %1132 = load i32, ptr %50, align 4, !tbaa !15
  %1133 = zext i32 %1132 to i64
  %1134 = getelementptr inbounds %class.aiVector3t, ptr %1131, i64 %1133
  %1135 = load ptr, ptr %60, align 8, !tbaa !5
  %1136 = getelementptr inbounds %struct.aiAnimMesh, ptr %1135, i32 0, i32 1
  %1137 = load ptr, ptr %1136, align 8, !tbaa !44
  %1138 = load i32, ptr %46, align 4, !tbaa !15
  %1139 = zext i32 %1138 to i64
  %1140 = getelementptr inbounds %class.aiVector3t, ptr %1137, i64 %1139
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1140, ptr align 4 %1134, i64 12, i1 false), !tbaa.struct !61
  br label %1141

1141:                                             ; preds = %1128, %1109
  %1142 = load ptr, ptr %59, align 8, !tbaa !5
  %1143 = getelementptr inbounds %struct.aiAnimMesh, ptr %1142, i32 0, i32 2
  %1144 = load ptr, ptr %1143, align 8, !tbaa !45
  %1145 = icmp ne ptr %1144, null
  br i1 %1145, label %1146, label %1159

1146:                                             ; preds = %1141
  %1147 = load ptr, ptr %59, align 8, !tbaa !5
  %1148 = getelementptr inbounds %struct.aiAnimMesh, ptr %1147, i32 0, i32 2
  %1149 = load ptr, ptr %1148, align 8, !tbaa !45
  %1150 = load i32, ptr %50, align 4, !tbaa !15
  %1151 = zext i32 %1150 to i64
  %1152 = getelementptr inbounds %class.aiVector3t, ptr %1149, i64 %1151
  %1153 = load ptr, ptr %60, align 8, !tbaa !5
  %1154 = getelementptr inbounds %struct.aiAnimMesh, ptr %1153, i32 0, i32 2
  %1155 = load ptr, ptr %1154, align 8, !tbaa !45
  %1156 = load i32, ptr %46, align 4, !tbaa !15
  %1157 = zext i32 %1156 to i64
  %1158 = getelementptr inbounds %class.aiVector3t, ptr %1155, i64 %1157
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1158, ptr align 4 %1152, i64 12, i1 false), !tbaa.struct !61
  br label %1159

1159:                                             ; preds = %1146, %1141
  %1160 = load ptr, ptr %59, align 8, !tbaa !5
  %1161 = getelementptr inbounds %struct.aiAnimMesh, ptr %1160, i32 0, i32 3
  %1162 = load ptr, ptr %1161, align 8, !tbaa !46
  %1163 = icmp ne ptr %1162, null
  br i1 %1163, label %1164, label %1177

1164:                                             ; preds = %1159
  %1165 = load ptr, ptr %59, align 8, !tbaa !5
  %1166 = getelementptr inbounds %struct.aiAnimMesh, ptr %1165, i32 0, i32 3
  %1167 = load ptr, ptr %1166, align 8, !tbaa !46
  %1168 = load i32, ptr %50, align 4, !tbaa !15
  %1169 = zext i32 %1168 to i64
  %1170 = getelementptr inbounds %class.aiVector3t, ptr %1167, i64 %1169
  %1171 = load ptr, ptr %60, align 8, !tbaa !5
  %1172 = getelementptr inbounds %struct.aiAnimMesh, ptr %1171, i32 0, i32 3
  %1173 = load ptr, ptr %1172, align 8, !tbaa !46
  %1174 = load i32, ptr %46, align 4, !tbaa !15
  %1175 = zext i32 %1174 to i64
  %1176 = getelementptr inbounds %class.aiVector3t, ptr %1173, i64 %1175
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1176, ptr align 4 %1170, i64 12, i1 false), !tbaa.struct !61
  br label %1177

1177:                                             ; preds = %1164, %1159
  %1178 = load ptr, ptr %59, align 8, !tbaa !5
  %1179 = getelementptr inbounds %struct.aiAnimMesh, ptr %1178, i32 0, i32 4
  %1180 = load ptr, ptr %1179, align 8, !tbaa !47
  %1181 = icmp ne ptr %1180, null
  br i1 %1181, label %1182, label %1195

1182:                                             ; preds = %1177
  %1183 = load ptr, ptr %59, align 8, !tbaa !5
  %1184 = getelementptr inbounds %struct.aiAnimMesh, ptr %1183, i32 0, i32 4
  %1185 = load ptr, ptr %1184, align 8, !tbaa !47
  %1186 = load i32, ptr %50, align 4, !tbaa !15
  %1187 = zext i32 %1186 to i64
  %1188 = getelementptr inbounds %class.aiVector3t, ptr %1185, i64 %1187
  %1189 = load ptr, ptr %60, align 8, !tbaa !5
  %1190 = getelementptr inbounds %struct.aiAnimMesh, ptr %1189, i32 0, i32 4
  %1191 = load ptr, ptr %1190, align 8, !tbaa !47
  %1192 = load i32, ptr %46, align 4, !tbaa !15
  %1193 = zext i32 %1192 to i64
  %1194 = getelementptr inbounds %class.aiVector3t, ptr %1191, i64 %1193
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1194, ptr align 4 %1188, i64 12, i1 false), !tbaa.struct !61
  br label %1195

1195:                                             ; preds = %1182, %1177
  call void @llvm.lifetime.start.p0(i64 4, ptr %61) #11
  store i32 0, ptr %61, align 4, !tbaa !15
  br label %1196

1196:                                             ; preds = %1228, %1195
  %1197 = load i32, ptr %61, align 4, !tbaa !15
  %1198 = icmp slt i32 %1197, 8
  br i1 %1198, label %1200, label %1199

1199:                                             ; preds = %1196
  store i32 47, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #11
  br label %1231

1200:                                             ; preds = %1196
  %1201 = load ptr, ptr %59, align 8, !tbaa !5
  %1202 = getelementptr inbounds %struct.aiAnimMesh, ptr %1201, i32 0, i32 5
  %1203 = load i32, ptr %61, align 4, !tbaa !15
  %1204 = sext i32 %1203 to i64
  %1205 = getelementptr inbounds [8 x ptr], ptr %1202, i64 0, i64 %1204
  %1206 = load ptr, ptr %1205, align 8, !tbaa !5
  %1207 = icmp ne ptr %1206, null
  br i1 %1207, label %1208, label %1227

1208:                                             ; preds = %1200
  %1209 = load ptr, ptr %59, align 8, !tbaa !5
  %1210 = getelementptr inbounds %struct.aiAnimMesh, ptr %1209, i32 0, i32 5
  %1211 = load i32, ptr %61, align 4, !tbaa !15
  %1212 = sext i32 %1211 to i64
  %1213 = getelementptr inbounds [8 x ptr], ptr %1210, i64 0, i64 %1212
  %1214 = load ptr, ptr %1213, align 8, !tbaa !5
  %1215 = load i32, ptr %50, align 4, !tbaa !15
  %1216 = zext i32 %1215 to i64
  %1217 = getelementptr inbounds %class.aiColor4t, ptr %1214, i64 %1216
  %1218 = load ptr, ptr %60, align 8, !tbaa !5
  %1219 = getelementptr inbounds %struct.aiAnimMesh, ptr %1218, i32 0, i32 5
  %1220 = load i32, ptr %61, align 4, !tbaa !15
  %1221 = sext i32 %1220 to i64
  %1222 = getelementptr inbounds [8 x ptr], ptr %1219, i64 0, i64 %1221
  %1223 = load ptr, ptr %1222, align 8, !tbaa !5
  %1224 = load i32, ptr %46, align 4, !tbaa !15
  %1225 = zext i32 %1224 to i64
  %1226 = getelementptr inbounds %class.aiColor4t, ptr %1223, i64 %1225
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1226, ptr align 4 %1217, i64 16, i1 false), !tbaa.struct !64
  br label %1227

1227:                                             ; preds = %1208, %1200
  br label %1228

1228:                                             ; preds = %1227
  %1229 = load i32, ptr %61, align 4, !tbaa !15
  %1230 = add nsw i32 %1229, 1
  store i32 %1230, ptr %61, align 4, !tbaa !15
  br label %1196, !llvm.loop !66

1231:                                             ; preds = %1199
  call void @llvm.lifetime.start.p0(i64 4, ptr %62) #11
  store i32 0, ptr %62, align 4, !tbaa !15
  br label %1232

1232:                                             ; preds = %1264, %1231
  %1233 = load i32, ptr %62, align 4, !tbaa !15
  %1234 = icmp slt i32 %1233, 8
  br i1 %1234, label %1236, label %1235

1235:                                             ; preds = %1232
  store i32 50, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #11
  br label %1267

1236:                                             ; preds = %1232
  %1237 = load ptr, ptr %59, align 8, !tbaa !5
  %1238 = getelementptr inbounds %struct.aiAnimMesh, ptr %1237, i32 0, i32 6
  %1239 = load i32, ptr %62, align 4, !tbaa !15
  %1240 = sext i32 %1239 to i64
  %1241 = getelementptr inbounds [8 x ptr], ptr %1238, i64 0, i64 %1240
  %1242 = load ptr, ptr %1241, align 8, !tbaa !5
  %1243 = icmp ne ptr %1242, null
  br i1 %1243, label %1244, label %1263

1244:                                             ; preds = %1236
  %1245 = load ptr, ptr %59, align 8, !tbaa !5
  %1246 = getelementptr inbounds %struct.aiAnimMesh, ptr %1245, i32 0, i32 6
  %1247 = load i32, ptr %62, align 4, !tbaa !15
  %1248 = sext i32 %1247 to i64
  %1249 = getelementptr inbounds [8 x ptr], ptr %1246, i64 0, i64 %1248
  %1250 = load ptr, ptr %1249, align 8, !tbaa !5
  %1251 = load i32, ptr %50, align 4, !tbaa !15
  %1252 = zext i32 %1251 to i64
  %1253 = getelementptr inbounds %class.aiVector3t, ptr %1250, i64 %1252
  %1254 = load ptr, ptr %60, align 8, !tbaa !5
  %1255 = getelementptr inbounds %struct.aiAnimMesh, ptr %1254, i32 0, i32 6
  %1256 = load i32, ptr %62, align 4, !tbaa !15
  %1257 = sext i32 %1256 to i64
  %1258 = getelementptr inbounds [8 x ptr], ptr %1255, i64 0, i64 %1257
  %1259 = load ptr, ptr %1258, align 8, !tbaa !5
  %1260 = load i32, ptr %46, align 4, !tbaa !15
  %1261 = zext i32 %1260 to i64
  %1262 = getelementptr inbounds %class.aiVector3t, ptr %1259, i64 %1261
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1262, ptr align 4 %1253, i64 12, i1 false), !tbaa.struct !61
  br label %1263

1263:                                             ; preds = %1244, %1236
  br label %1264

1264:                                             ; preds = %1263
  %1265 = load i32, ptr %62, align 4, !tbaa !15
  %1266 = add nsw i32 %1265, 1
  store i32 %1266, ptr %62, align 4, !tbaa !15
  br label %1232, !llvm.loop !67

1267:                                             ; preds = %1235
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #11
  br label %1268

1268:                                             ; preds = %1267
  %1269 = load i32, ptr %58, align 4, !tbaa !15
  %1270 = add i32 %1269, 1
  store i32 %1270, ptr %58, align 4, !tbaa !15
  br label %1103, !llvm.loop !68

1271:                                             ; preds = %1103
  %1272 = load i32, ptr %58, align 4, !tbaa !15
  %1273 = load ptr, ptr %16, align 8, !tbaa !5
  %1274 = getelementptr inbounds %struct.aiMesh, ptr %1273, i32 0, i32 15
  %1275 = load i32, ptr %1274, align 8, !tbaa !40
  %1276 = icmp eq i32 %1272, %1275
  br i1 %1276, label %1277, label %1280

1277:                                             ; preds = %1271
  %1278 = load i32, ptr %46, align 4, !tbaa !15
  %1279 = add i32 %1278, 1
  store i32 %1279, ptr %46, align 4, !tbaa !15
  br label %1280

1280:                                             ; preds = %1277, %1271
  %1281 = load i32, ptr %45, align 4, !tbaa !15
  %1282 = add i32 %1281, 1
  store i32 %1282, ptr %45, align 4, !tbaa !15
  %1283 = load ptr, ptr %48, align 8, !tbaa !5
  %1284 = getelementptr inbounds %struct.aiFace, ptr %1283, i32 0, i32 1
  %1285 = load ptr, ptr %1284, align 8, !tbaa !57
  %1286 = load i32, ptr %49, align 4, !tbaa !15
  %1287 = zext i32 %1286 to i64
  %1288 = getelementptr inbounds i32, ptr %1285, i64 %1287
  store i32 %1281, ptr %1288, align 4, !tbaa !15
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #11
  br label %1289

1289:                                             ; preds = %1280
  %1290 = load i32, ptr %49, align 4, !tbaa !15
  %1291 = add i32 %1290, 1
  store i32 %1291, ptr %49, align 4, !tbaa !15
  br label %948, !llvm.loop !69

1292:                                             ; preds = %954
  %1293 = load ptr, ptr %48, align 8, !tbaa !5
  %1294 = getelementptr inbounds %struct.aiFace, ptr %1293, i32 0, i32 1
  store ptr null, ptr %1294, align 8, !tbaa !57
  %1295 = load ptr, ptr %28, align 8, !tbaa !5
  %1296 = getelementptr inbounds %struct.aiFace, ptr %1295, i32 1
  store ptr %1296, ptr %28, align 8, !tbaa !5
  store i32 0, ptr %15, align 4
  br label %1297

1297:                                             ; preds = %1292, %936
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #11
  %1298 = load i32, ptr %15, align 4
  switch i32 %1298, label %1614 [
    i32 0, label %1299
    i32 31, label %1300
  ]

1299:                                             ; preds = %1297
  br label %1300

1300:                                             ; preds = %1299, %1297
  %1301 = load i32, ptr %47, align 4, !tbaa !15
  %1302 = add i32 %1301, 1
  store i32 %1302, ptr %47, align 4, !tbaa !15
  br label %905, !llvm.loop !70

1303:                                             ; preds = %911
  %1304 = load ptr, ptr %28, align 8, !tbaa !5
  %1305 = load ptr, ptr %27, align 8, !tbaa !5
  %1306 = getelementptr inbounds %struct.aiMesh, ptr %1305, i32 0, i32 10
  %1307 = load ptr, ptr %1306, align 8, !tbaa !26
  %1308 = load ptr, ptr %27, align 8, !tbaa !5
  %1309 = getelementptr inbounds %struct.aiMesh, ptr %1308, i32 0, i32 2
  %1310 = load i32, ptr %1309, align 8, !tbaa !27
  %1311 = zext i32 %1310 to i64
  %1312 = getelementptr inbounds %struct.aiFace, ptr %1307, i64 %1311
  %1313 = icmp eq ptr %1304, %1312
  br i1 %1313, label %1316, label %1314

1314:                                             ; preds = %1303
  invoke void @_ZN6Assimp17aiAssertViolationEPKcS1_i(ptr noundef @.str.4, ptr noundef @.str.5, i32 noundef 360)
          to label %1315 unwind label %1325

1315:                                             ; preds = %1314
  br label %1316

1316:                                             ; preds = %1315, %1303
  %1317 = phi i1 [ true, %1303 ], [ false, %1315 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr %63) #11
  store i32 0, ptr %63, align 4, !tbaa !15
  br label %1318

1318:                                             ; preds = %1340, %1316
  %1319 = load i32, ptr %63, align 4, !tbaa !15
  %1320 = load ptr, ptr %16, align 8, !tbaa !5
  %1321 = getelementptr inbounds %struct.aiMesh, ptr %1320, i32 0, i32 11
  %1322 = load i32, ptr %1321, align 8, !tbaa !51
  %1323 = icmp ult i32 %1319, %1322
  br i1 %1323, label %1329, label %1324

1324:                                             ; preds = %1318
  store i32 53, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #11
  br label %1343

1325:                                             ; preds = %1348, %1314
  %1326 = landingpad { ptr, i32 }
          cleanup
  %1327 = extractvalue { ptr, i32 } %1326, 0
  store ptr %1327, ptr %7, align 8
  %1328 = extractvalue { ptr, i32 } %1326, 1
  store i32 %1328, ptr %8, align 4
  br label %1454

1329:                                             ; preds = %1318
  %1330 = load i32, ptr %63, align 4, !tbaa !15
  %1331 = zext i32 %1330 to i64
  %1332 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_I14aiVertexWeightSaIS0_EESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %42, i64 noundef %1331) #11
  %1333 = call noundef zeroext i1 @_ZNKSt6vectorI14aiVertexWeightSaIS0_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %1332) #11
  br i1 %1333, label %1339, label %1334

1334:                                             ; preds = %1329
  %1335 = load ptr, ptr %27, align 8, !tbaa !5
  %1336 = getelementptr inbounds %struct.aiMesh, ptr %1335, i32 0, i32 11
  %1337 = load i32, ptr %1336, align 8, !tbaa !51
  %1338 = add i32 %1337, 1
  store i32 %1338, ptr %1336, align 8, !tbaa !51
  br label %1339

1339:                                             ; preds = %1334, %1329
  br label %1340

1340:                                             ; preds = %1339
  %1341 = load i32, ptr %63, align 4, !tbaa !15
  %1342 = add i32 %1341, 1
  store i32 %1342, ptr %63, align 4, !tbaa !15
  br label %1318, !llvm.loop !71

1343:                                             ; preds = %1324
  %1344 = load ptr, ptr %27, align 8, !tbaa !5
  %1345 = getelementptr inbounds %struct.aiMesh, ptr %1344, i32 0, i32 11
  %1346 = load i32, ptr %1345, align 8, !tbaa !51
  %1347 = icmp ne i32 %1346, 0
  br i1 %1347, label %1348, label %1449

1348:                                             ; preds = %1343
  %1349 = load ptr, ptr %27, align 8, !tbaa !5
  %1350 = getelementptr inbounds %struct.aiMesh, ptr %1349, i32 0, i32 11
  %1351 = load i32, ptr %1350, align 8, !tbaa !51
  %1352 = zext i32 %1351 to i64
  %1353 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %1352, i64 8)
  %1354 = extractvalue { i64, i1 } %1353, 1
  %1355 = extractvalue { i64, i1 } %1353, 0
  %1356 = select i1 %1354, i64 -1, i64 %1355
  %1357 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %1356) #14
          to label %1358 unwind label %1325

1358:                                             ; preds = %1348
  %1359 = load ptr, ptr %27, align 8, !tbaa !5
  %1360 = getelementptr inbounds %struct.aiMesh, ptr %1359, i32 0, i32 12
  store ptr %1357, ptr %1360, align 8, !tbaa !52
  call void @llvm.lifetime.start.p0(i64 4, ptr %64) #11
  store i32 0, ptr %64, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 4, ptr %65) #11
  store i32 0, ptr %65, align 4, !tbaa !15
  br label %1361

1361:                                             ; preds = %1441, %1358
  %1362 = load i32, ptr %64, align 4, !tbaa !15
  %1363 = load ptr, ptr %16, align 8, !tbaa !5
  %1364 = getelementptr inbounds %struct.aiMesh, ptr %1363, i32 0, i32 11
  %1365 = load i32, ptr %1364, align 8, !tbaa !51
  %1366 = icmp ult i32 %1362, %1365
  br i1 %1366, label %1368, label %1367

1367:                                             ; preds = %1361
  store i32 56, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #11
  br label %1448

1368:                                             ; preds = %1361
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #11
  %1369 = load i32, ptr %64, align 4, !tbaa !15
  %1370 = zext i32 %1369 to i64
  %1371 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_I14aiVertexWeightSaIS0_EESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %42, i64 noundef %1370) #11
  store ptr %1371, ptr %66, align 8, !tbaa !5
  %1372 = load ptr, ptr %66, align 8, !tbaa !5
  %1373 = call noundef zeroext i1 @_ZNKSt6vectorI14aiVertexWeightSaIS0_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %1372) #11
  br i1 %1373, label %1374, label %1375

1374:                                             ; preds = %1368
  store i32 58, ptr %15, align 4
  br label %1438

1375:                                             ; preds = %1368
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #11
  %1376 = load ptr, ptr %16, align 8, !tbaa !5
  %1377 = getelementptr inbounds %struct.aiMesh, ptr %1376, i32 0, i32 12
  %1378 = load ptr, ptr %1377, align 8, !tbaa !52
  %1379 = load i32, ptr %64, align 4, !tbaa !15
  %1380 = zext i32 %1379 to i64
  %1381 = getelementptr inbounds ptr, ptr %1378, i64 %1380
  %1382 = load ptr, ptr %1381, align 8, !tbaa !5
  store ptr %1382, ptr %67, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #11
  %1383 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 1120) #14
          to label %1384 unwind label %1444

1384:                                             ; preds = %1375
  call void @_ZN6aiBoneC2Ev(ptr noundef nonnull align 8 dereferenceable(1120) %1383) #11
  %1385 = load ptr, ptr %27, align 8, !tbaa !5
  %1386 = getelementptr inbounds %struct.aiMesh, ptr %1385, i32 0, i32 12
  %1387 = load ptr, ptr %1386, align 8, !tbaa !52
  %1388 = load i32, ptr %65, align 4, !tbaa !15
  %1389 = zext i32 %1388 to i64
  %1390 = getelementptr inbounds ptr, ptr %1387, i64 %1389
  store ptr %1383, ptr %1390, align 8, !tbaa !5
  store ptr %1383, ptr %68, align 8, !tbaa !5
  %1391 = load ptr, ptr %67, align 8, !tbaa !5
  %1392 = getelementptr inbounds %struct.aiBone, ptr %1391, i32 0, i32 0
  %1393 = load ptr, ptr %68, align 8, !tbaa !5
  %1394 = getelementptr inbounds %struct.aiBone, ptr %1393, i32 0, i32 0
  %1395 = invoke noundef nonnull align 4 dereferenceable(1028) ptr @_ZN8aiStringaSERKS_(ptr noundef nonnull align 4 dereferenceable(1028) %1394, ptr noundef nonnull align 4 dereferenceable(1028) %1392)
          to label %1396 unwind label %1444

1396:                                             ; preds = %1384
  %1397 = load ptr, ptr %67, align 8, !tbaa !5
  %1398 = getelementptr inbounds %struct.aiBone, ptr %1397, i32 0, i32 5
  %1399 = load ptr, ptr %68, align 8, !tbaa !5
  %1400 = getelementptr inbounds %struct.aiBone, ptr %1399, i32 0, i32 5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1400, ptr align 8 %1398, i64 64, i1 false), !tbaa.struct !72
  %1401 = load ptr, ptr %66, align 8, !tbaa !5
  %1402 = call noundef i64 @_ZNKSt6vectorI14aiVertexWeightSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1401) #11
  %1403 = trunc i64 %1402 to i32
  %1404 = load ptr, ptr %68, align 8, !tbaa !5
  %1405 = getelementptr inbounds %struct.aiBone, ptr %1404, i32 0, i32 1
  store i32 %1403, ptr %1405, align 4, !tbaa !53
  %1406 = load ptr, ptr %68, align 8, !tbaa !5
  %1407 = getelementptr inbounds %struct.aiBone, ptr %1406, i32 0, i32 1
  %1408 = load i32, ptr %1407, align 4, !tbaa !53
  %1409 = zext i32 %1408 to i64
  %1410 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %1409, i64 8)
  %1411 = extractvalue { i64, i1 } %1410, 1
  %1412 = extractvalue { i64, i1 } %1410, 0
  %1413 = select i1 %1411, i64 -1, i64 %1412
  %1414 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %1413) #14
          to label %1415 unwind label %1444

1415:                                             ; preds = %1396
  %1416 = icmp eq i64 %1409, 0
  br i1 %1416, label %1423, label %1417

1417:                                             ; preds = %1415
  %1418 = getelementptr inbounds %struct.aiVertexWeight, ptr %1414, i64 %1409
  br label %1419

1419:                                             ; preds = %1419, %1417
  %1420 = phi ptr [ %1414, %1417 ], [ %1421, %1419 ]
  call void @_ZN14aiVertexWeightC2Ev(ptr noundef nonnull align 4 dereferenceable(8) %1420) #11
  %1421 = getelementptr inbounds %struct.aiVertexWeight, ptr %1420, i64 1
  %1422 = icmp eq ptr %1421, %1418
  br i1 %1422, label %1423, label %1419

1423:                                             ; preds = %1419, %1415
  %1424 = load ptr, ptr %68, align 8, !tbaa !5
  %1425 = getelementptr inbounds %struct.aiBone, ptr %1424, i32 0, i32 4
  store ptr %1414, ptr %1425, align 8, !tbaa !73
  %1426 = load ptr, ptr %68, align 8, !tbaa !5
  %1427 = getelementptr inbounds %struct.aiBone, ptr %1426, i32 0, i32 4
  %1428 = load ptr, ptr %1427, align 8, !tbaa !73
  %1429 = load ptr, ptr %66, align 8, !tbaa !5
  %1430 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt6vectorI14aiVertexWeightSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1429, i64 noundef 0) #11
  %1431 = load ptr, ptr %68, align 8, !tbaa !5
  %1432 = getelementptr inbounds %struct.aiBone, ptr %1431, i32 0, i32 1
  %1433 = load i32, ptr %1432, align 4, !tbaa !53
  %1434 = zext i32 %1433 to i64
  %1435 = mul i64 %1434, 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1428, ptr align 4 %1430, i64 %1435, i1 false)
  %1436 = load i32, ptr %65, align 4, !tbaa !15
  %1437 = add i32 %1436, 1
  store i32 %1437, ptr %65, align 4, !tbaa !15
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #11
  store i32 0, ptr %15, align 4
  br label %1438

1438:                                             ; preds = %1423, %1374
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #11
  %1439 = load i32, ptr %15, align 4
  switch i32 %1439, label %1614 [
    i32 0, label %1440
    i32 58, label %1441
  ]

1440:                                             ; preds = %1438
  br label %1441

1441:                                             ; preds = %1440, %1438
  %1442 = load i32, ptr %64, align 4, !tbaa !15
  %1443 = add i32 %1442, 1
  store i32 %1443, ptr %64, align 4, !tbaa !15
  br label %1361, !llvm.loop !74

1444:                                             ; preds = %1396, %1384, %1375
  %1445 = landingpad { ptr, i32 }
          cleanup
  %1446 = extractvalue { ptr, i32 } %1445, 0
  store ptr %1446, ptr %7, align 8
  %1447 = extractvalue { ptr, i32 } %1445, 1
  store i32 %1447, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #11
  br label %1454

1448:                                             ; preds = %1367
  br label %1449

1449:                                             ; preds = %1448, %1343
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #11
  call void @_ZNSt6vectorIS_I14aiVertexWeightSaIS0_EESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %42) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %42) #11
  call void @llvm.lifetime.end.p0(i64 64, ptr %34) #11
  call void @llvm.lifetime.end.p0(i64 64, ptr %33) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #11
  br label %1450

1450:                                             ; preds = %1449, %282
  %1451 = load i32, ptr %25, align 4, !tbaa !15
  %1452 = add i32 %1451, 1
  store i32 %1452, ptr %25, align 4, !tbaa !15
  %1453 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %13) #11
  br label %261, !llvm.loop !75

1454:                                             ; preds = %1444, %1325, %991
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #11
  br label %1455

1455:                                             ; preds = %1454, %900
  call void @_ZNSt6vectorIS_I14aiVertexWeightSaIS0_EESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %42) #11
  br label %1456

1456:                                             ; preds = %1455, %875
  call void @llvm.lifetime.end.p0(i64 24, ptr %42) #11
  br label %1457

1457:                                             ; preds = %1456, %861, %571, %509, %390
  call void @llvm.lifetime.end.p0(i64 64, ptr %34) #11
  call void @llvm.lifetime.end.p0(i64 64, ptr %33) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #11
  br label %1458

1458:                                             ; preds = %1457, %386
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #11
  br label %1459

1459:                                             ; preds = %1458, %382
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #11
  br label %1460

1460:                                             ; preds = %1459, %378
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #11
  br label %1493

1461:                                             ; preds = %264
  %1462 = load ptr, ptr %24, align 8, !tbaa !5
  %1463 = icmp eq ptr %1462, null
  br i1 %1463, label %1476, label %1464

1464:                                             ; preds = %1461
  %1465 = getelementptr inbounds i8, ptr %1462, i64 -8
  %1466 = load i64, ptr %1465, align 8
  %1467 = getelementptr inbounds %"class.std::vector.15", ptr %1462, i64 %1466
  %1468 = icmp eq ptr %1462, %1467
  br i1 %1468, label %1473, label %1469

1469:                                             ; preds = %1469, %1464
  %1470 = phi ptr [ %1467, %1464 ], [ %1471, %1469 ]
  %1471 = getelementptr inbounds %"class.std::vector.15", ptr %1470, i64 -1
  call void @_ZNSt6vectorISt4pairIjfESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %1471) #11
  %1472 = icmp eq ptr %1471, %1462
  br i1 %1472, label %1473, label %1469

1473:                                             ; preds = %1469, %1464
  %1474 = mul i64 24, %1466
  %1475 = add i64 %1474, 8
  call void @_ZdaPvm(ptr noundef %1465, i64 noundef %1475) #13
  br label %1476

1476:                                             ; preds = %1473, %1461
  %1477 = load ptr, ptr %16, align 8, !tbaa !5
  %1478 = icmp eq ptr %1477, null
  br i1 %1478, label %1480, label %1479

1479:                                             ; preds = %1476
  call void @_ZN6aiMeshD2Ev(ptr noundef nonnull align 8 dereferenceable(1320) %1477) #11
  call void @_ZdlPvm(ptr noundef %1477, i64 noundef 1320) #13
  br label %1480

1480:                                             ; preds = %1479, %1476
  %1481 = load ptr, ptr %4, align 8, !tbaa !5
  %1482 = getelementptr inbounds %struct.aiScene, ptr %1481, i32 0, i32 3
  %1483 = load ptr, ptr %1482, align 8, !tbaa !16
  %1484 = load i32, ptr %14, align 4, !tbaa !15
  %1485 = zext i32 %1484 to i64
  %1486 = getelementptr inbounds ptr, ptr %1483, i64 %1485
  store ptr null, ptr %1486, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %20) #11
  store i32 0, ptr %15, align 4
  br label %1487

1487:                                             ; preds = %1480, %214
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #11
  %1488 = load i32, ptr %15, align 4
  switch i32 %1488, label %1614 [
    i32 0, label %1489
    i32 4, label %1490
  ]

1489:                                             ; preds = %1487
  br label %1490

1490:                                             ; preds = %1489, %1487
  %1491 = load i32, ptr %14, align 4, !tbaa !15
  %1492 = add i32 %1491, 1
  store i32 %1492, ptr %14, align 4, !tbaa !15
  br label %93, !llvm.loop !76

1493:                                             ; preds = %1460, %265
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %20) #11
  br label %1494

1494:                                             ; preds = %1493, %199
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #11
  br label %1495

1495:                                             ; preds = %1494, %133
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #11
  br label %1606

1496:                                             ; preds = %99
  %1497 = call noundef zeroext i1 @_ZNKSt6vectorIP6aiMeshSaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #11
  br i1 %1497, label %1498, label %1509

1498:                                             ; preds = %1496
  %1499 = call ptr @__cxa_allocate_exception(i64 16) #11
  invoke void @_ZN17DeadlyImportErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1499, ptr noundef @.str.6)
          to label %1500 unwind label %1501

1500:                                             ; preds = %1498
  invoke void @__cxa_throw(ptr %1499, ptr @_ZTI17DeadlyImportError, ptr @_ZNSt13runtime_errorD2Ev) #12
          to label %1614 unwind label %1505

1501:                                             ; preds = %1498
  %1502 = landingpad { ptr, i32 }
          cleanup
  %1503 = extractvalue { ptr, i32 } %1502, 0
  store ptr %1503, ptr %7, align 8
  %1504 = extractvalue { ptr, i32 } %1502, 1
  store i32 %1504, ptr %8, align 4
  call void @__cxa_free_exception(ptr %1499) #11
  br label %1606

1505:                                             ; preds = %1547, %1530, %1512, %1500
  %1506 = landingpad { ptr, i32 }
          cleanup
  %1507 = extractvalue { ptr, i32 } %1506, 0
  store ptr %1507, ptr %7, align 8
  %1508 = extractvalue { ptr, i32 } %1506, 1
  store i32 %1508, ptr %8, align 4
  br label %1606

1509:                                             ; preds = %1496
  %1510 = load i8, ptr %9, align 1, !tbaa !13, !range !77, !noundef !78
  %1511 = trunc i8 %1510 to i1
  br i1 %1511, label %1512, label %1517

1512:                                             ; preds = %1509
  %1513 = load ptr, ptr %4, align 8, !tbaa !5
  %1514 = getelementptr inbounds %struct.aiScene, ptr %1513, i32 0, i32 1
  %1515 = load ptr, ptr %1514, align 8, !tbaa !79
  invoke void @_Z11UpdateNodesRKSt6vectorIjSaIjEEP6aiNode(ptr noundef nonnull align 8 dereferenceable(24) %10, ptr noundef %1515)
          to label %1516 unwind label %1505

1516:                                             ; preds = %1512
  br label %1517

1517:                                             ; preds = %1516, %1509
  %1518 = call noundef i64 @_ZNKSt6vectorIP6aiMeshSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #11
  %1519 = load ptr, ptr %4, align 8, !tbaa !5
  %1520 = getelementptr inbounds %struct.aiScene, ptr %1519, i32 0, i32 2
  %1521 = load i32, ptr %1520, align 8, !tbaa !9
  %1522 = zext i32 %1521 to i64
  %1523 = icmp ne i64 %1518, %1522
  br i1 %1523, label %1524, label %1547

1524:                                             ; preds = %1517
  %1525 = load ptr, ptr %4, align 8, !tbaa !5
  %1526 = getelementptr inbounds %struct.aiScene, ptr %1525, i32 0, i32 3
  %1527 = load ptr, ptr %1526, align 8, !tbaa !16
  %1528 = icmp eq ptr %1527, null
  br i1 %1528, label %1530, label %1529

1529:                                             ; preds = %1524
  call void @_ZdaPv(ptr noundef %1527) #13
  br label %1530

1530:                                             ; preds = %1529, %1524
  %1531 = call noundef i64 @_ZNKSt6vectorIP6aiMeshSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #11
  %1532 = trunc i64 %1531 to i32
  %1533 = load ptr, ptr %4, align 8, !tbaa !5
  %1534 = getelementptr inbounds %struct.aiScene, ptr %1533, i32 0, i32 2
  store i32 %1532, ptr %1534, align 8, !tbaa !9
  %1535 = load ptr, ptr %4, align 8, !tbaa !5
  %1536 = getelementptr inbounds %struct.aiScene, ptr %1535, i32 0, i32 2
  %1537 = load i32, ptr %1536, align 8, !tbaa !9
  %1538 = zext i32 %1537 to i64
  %1539 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %1538, i64 8)
  %1540 = extractvalue { i64, i1 } %1539, 1
  %1541 = extractvalue { i64, i1 } %1539, 0
  %1542 = select i1 %1540, i64 -1, i64 %1541
  %1543 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %1542) #14
          to label %1544 unwind label %1505

1544:                                             ; preds = %1530
  %1545 = load ptr, ptr %4, align 8, !tbaa !5
  %1546 = getelementptr inbounds %struct.aiScene, ptr %1545, i32 0, i32 3
  store ptr %1543, ptr %1546, align 8, !tbaa !16
  br label %1547

1547:                                             ; preds = %1544, %1517
  %1548 = load ptr, ptr %4, align 8, !tbaa !5
  %1549 = getelementptr inbounds %struct.aiScene, ptr %1548, i32 0, i32 3
  %1550 = load ptr, ptr %1549, align 8, !tbaa !16
  %1551 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP6aiMeshSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %6, i64 noundef 0) #11
  %1552 = load ptr, ptr %4, align 8, !tbaa !5
  %1553 = getelementptr inbounds %struct.aiScene, ptr %1552, i32 0, i32 2
  %1554 = load i32, ptr %1553, align 8, !tbaa !9
  %1555 = zext i32 %1554 to i64
  %1556 = mul i64 %1555, 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1550, ptr align 8 %1551, i64 %1556, i1 false)
  %1557 = invoke noundef zeroext i1 @_ZN6Assimp13DefaultLogger12isNullLoggerEv()
          to label %1558 unwind label %1505

1558:                                             ; preds = %1547
  br i1 %1557, label %1604, label %1559

1559:                                             ; preds = %1558
  call void @llvm.lifetime.start.p0(i64 1024, ptr %69) #11
  %1560 = getelementptr inbounds [1024 x i8], ptr %69, i64 0, i64 0
  %1561 = getelementptr inbounds [4 x i32], ptr %5, i64 0, i64 0
  %1562 = load i32, ptr %1561, align 16, !tbaa !15
  %1563 = getelementptr inbounds %"class.Assimp::SortByPTypeProcess", ptr %70, i32 0, i32 1
  %1564 = load i32, ptr %1563, align 8, !tbaa !23
  %1565 = and i32 %1564, 1
  %1566 = icmp ne i32 %1565, 0
  %1567 = zext i1 %1566 to i64
  %1568 = select i1 %1566, ptr @.str.8, ptr @.str.9
  %1569 = getelementptr inbounds [4 x i32], ptr %5, i64 0, i64 1
  %1570 = load i32, ptr %1569, align 4, !tbaa !15
  %1571 = getelementptr inbounds %"class.Assimp::SortByPTypeProcess", ptr %70, i32 0, i32 1
  %1572 = load i32, ptr %1571, align 8, !tbaa !23
  %1573 = and i32 %1572, 2
  %1574 = icmp ne i32 %1573, 0
  %1575 = zext i1 %1574 to i64
  %1576 = select i1 %1574, ptr @.str.8, ptr @.str.9
  %1577 = getelementptr inbounds [4 x i32], ptr %5, i64 0, i64 2
  %1578 = load i32, ptr %1577, align 8, !tbaa !15
  %1579 = getelementptr inbounds %"class.Assimp::SortByPTypeProcess", ptr %70, i32 0, i32 1
  %1580 = load i32, ptr %1579, align 8, !tbaa !23
  %1581 = and i32 %1580, 4
  %1582 = icmp ne i32 %1581, 0
  %1583 = zext i1 %1582 to i64
  %1584 = select i1 %1582, ptr @.str.8, ptr @.str.9
  %1585 = getelementptr inbounds [4 x i32], ptr %5, i64 0, i64 3
  %1586 = load i32, ptr %1585, align 4, !tbaa !15
  %1587 = getelementptr inbounds %"class.Assimp::SortByPTypeProcess", ptr %70, i32 0, i32 1
  %1588 = load i32, ptr %1587, align 8, !tbaa !23
  %1589 = and i32 %1588, 8
  %1590 = icmp ne i32 %1589, 0
  %1591 = zext i1 %1590 to i64
  %1592 = select i1 %1590, ptr @.str.8, ptr @.str.9
  %1593 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef %1560, i64 noundef 1024, ptr noundef @.str.7, i32 noundef %1562, ptr noundef %1568, i32 noundef %1570, ptr noundef %1576, i32 noundef %1578, ptr noundef %1584, i32 noundef %1586, ptr noundef %1592) #11
  %1594 = invoke noundef ptr @_ZN6Assimp13DefaultLogger3getEv()
          to label %1595 unwind label %1600

1595:                                             ; preds = %1559
  invoke void @_ZN6Assimp6Logger4infoIJRA1024_cEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(12) %1594, ptr noundef nonnull align 1 dereferenceable(1024) %69)
          to label %1596 unwind label %1600

1596:                                             ; preds = %1595
  %1597 = invoke noundef ptr @_ZN6Assimp13DefaultLogger3getEv()
          to label %1598 unwind label %1600

1598:                                             ; preds = %1596
  invoke void @_ZN6Assimp6Logger5debugEPKc(ptr noundef nonnull align 8 dereferenceable(12) %1597, ptr noundef @.str.10)
          to label %1599 unwind label %1600

1599:                                             ; preds = %1598
  call void @llvm.lifetime.end.p0(i64 1024, ptr %69) #11
  br label %1604

1600:                                             ; preds = %1598, %1596, %1595, %1559
  %1601 = landingpad { ptr, i32 }
          cleanup
  %1602 = extractvalue { ptr, i32 } %1601, 0
  store ptr %1602, ptr %7, align 8
  %1603 = extractvalue { ptr, i32 } %1601, 1
  store i32 %1603, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 1024, ptr %69) #11
  br label %1606

1604:                                             ; preds = %1599, %1558
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #11
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %10) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %9) #11
  call void @_ZNSt6vectorIP6aiMeshSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %6) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %5) #11
  br label %1605

1605:                                             ; preds = %1604, %75
  ret void

1606:                                             ; preds = %1600, %1505, %1501, %1495
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #11
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #11
  br label %1607

1607:                                             ; preds = %1606, %104
  call void @llvm.lifetime.end.p0(i64 24, ptr %10) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %9) #11
  br label %1608

1608:                                             ; preds = %1607, %100
  call void @_ZNSt6vectorIP6aiMeshSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr %6) #11
  call void @llvm.lifetime.end.p0(i64 16, ptr %5) #11
  br label %1609

1609:                                             ; preds = %1608
  %1610 = load ptr, ptr %7, align 8
  %1611 = load i32, ptr %8, align 4
  %1612 = insertvalue { ptr, i32 } poison, ptr %1610, 0
  %1613 = insertvalue { ptr, i32 } %1612, i32 %1611, 1
  resume { ptr, i32 } %1613

1614:                                             ; preds = %1500, %1487, %1438, %1297, %126
  unreachable
}

declare noundef ptr @_ZN6Assimp13DefaultLogger3getEv() #5

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

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

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

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

declare i32 @__gxx_personality_v0(...)

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

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

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

declare ptr @__cxa_allocate_exception(i64)

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

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

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

declare void @__cxa_throw(ptr, ptr, ptr)

declare void @__cxa_free_exception(ptr)

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

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

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

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

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

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

declare noundef ptr @_ZN6Assimp28ComputeVertexBoneWeightTableEPK6aiMesh(ptr noundef) #5

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

declare noundef zeroext i1 @_ZN6Assimp13DefaultLogger12isNullLoggerEv() #5

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

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

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

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

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

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

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

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

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


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

%"class.std::vector.0" = type { %"struct.std::_Vector_base.1" }
%"struct.std::_Vector_base.1" = type { %"struct.std::_Vector_base<aiMesh *, std::allocator<aiMesh *>>::_Vector_impl" }
%"struct.std::_Vector_base<aiMesh *, std::allocator<aiMesh *>>::_Vector_impl" = type { %"struct.std::_Vector_base<aiMesh *, std::allocator<aiMesh *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<aiMesh *, std::allocator<aiMesh *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = 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" = type { i8 }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%"class.std::vector.5" = type { %"struct.std::_Vector_base.6" }
%"struct.std::_Vector_base.6" = type { %"struct.std::_Vector_base<std::vector<aiVertexWeight>, std::allocator<std::vector<aiVertexWeight>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::vector<aiVertexWeight>, std::allocator<std::vector<aiVertexWeight>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::vector<aiVertexWeight>, std::allocator<std::vector<aiVertexWeight>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::vector<aiVertexWeight>, std::allocator<std::vector<aiVertexWeight>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator.7" = type { i8 }
%"class.__gnu_cxx::__normal_iterator.20" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.21" = type { ptr }
%struct.aiFace = type { i32, ptr }
%class.aiVector3t = type { float, float, float }
%class.aiColor4t = type { float, float, float, float }
%"class.std::vector.15" = type { %"struct.std::_Vector_base.16" }
%"struct.std::_Vector_base.16" = type { %"struct.std::_Vector_base<std::pair<unsigned int, float>, std::allocator<std::pair<unsigned int, float>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<unsigned int, float>, std::allocator<std::pair<unsigned int, float>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<unsigned int, float>, std::allocator<std::pair<unsigned int, float>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<unsigned int, float>, std::allocator<std::pair<unsigned int, float>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.aiVertexWeight = type { i32, float }

@.str.1 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [35 x i8], align 1
@_ZTI17DeadlyImportError = external dso_local constant { ptr, ptr, ptr }, align 8
@.str.4 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [127 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [81 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [1 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [28 x i8], align 1

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN6Assimp18SortByPTypeProcess7ExecuteEP7aiScene(ptr nocapture noundef nonnull readonly align 8 dereferenceable(28) %0, ptr nocapture noundef %1) unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca %"class.std::vector.0", align 8
  %4 = alloca %"class.std::vector", align 8
  %5 = alloca i32, align 4
  %6 = alloca %"class.std::allocator", align 1
  %7 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca [4 x i32], align 16
  %11 = alloca ptr, align 8
  %12 = alloca %"class.std::vector.5", align 8
  %13 = alloca %"class.std::allocator.7", align 1
  %14 = alloca i32, align 4
  %15 = alloca %"class.__gnu_cxx::__normal_iterator.20", align 8
  %16 = alloca %"class.__gnu_cxx::__normal_iterator.21", align 8
  %17 = alloca %"class.__gnu_cxx::__normal_iterator.20", align 8
  %18 = alloca %"class.__gnu_cxx::__normal_iterator.21", align 8
  %19 = alloca [1024 x i8], align 16
  %20 = getelementptr inbounds i8, ptr %1, i64 16
  %21 = load i32, ptr %20, align 8, !tbaa !5
  %22 = icmp eq i32 %21, 0
  %23 = tail call noundef ptr @_ZN6Assimp13DefaultLogger3getEv()
  br i1 %22, label %24, label %25

24:                                               ; preds = %2
  tail call void @_ZN6Assimp6Logger5debugEPKc(ptr noundef nonnull align 8 dereferenceable(12) %23, ptr noundef nonnull @.str.1)
  br label %1429

25:                                               ; preds = %2
  tail call void @_ZN6Assimp6Logger5debugEPKc(ptr noundef nonnull align 8 dereferenceable(12) %23, ptr noundef nonnull @.str.2)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %3) #11
  call void @_ZNSt6vectorIP6aiMeshSaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #11
  %26 = load i32, ptr %20, align 8, !tbaa !5
  %27 = zext i32 %26 to i64
  %28 = shl nuw nsw i64 %27, 1
  invoke void @_ZNSt6vectorIP6aiMeshSaIS1_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %28)
          to label %29 unwind label %41

29:                                               ; preds = %25
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4) #11
  %30 = load i32, ptr %20, align 8, !tbaa !5
  %31 = shl i32 %30, 2
  %32 = zext i32 %31 to i64
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #11
  store i32 -1, ptr %5, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %6) #11
  call void @_ZNSaIjEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #11
  invoke void @_ZNSt6vectorIjSaIjEEC2EmRKjRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %4, i64 noundef %32, ptr noundef nonnull align 4 dereferenceable(4) %5, ptr noundef nonnull align 1 dereferenceable(1) %6)
          to label %33 unwind label %43

33:                                               ; preds = %29
  call void @_ZNSt15__new_allocatorIjED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #11
  %34 = call ptr @_ZNSt6vectorIjSaIjEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %4) #11
  store ptr %34, ptr %7, align 8
  %35 = load i32, ptr %20, align 8, !tbaa !5
  %.not611 = icmp eq i32 %35, 0
  br i1 %.not611, label %._crit_edge605.thread, label %.lr.ph604

.lr.ph604:                                        ; preds = %33
  %36 = getelementptr inbounds i8, ptr %1, i64 24
  %37 = getelementptr inbounds i8, ptr %10, i64 12
  %38 = getelementptr inbounds i8, ptr %0, i64 24
  br label %45

._crit_edge605:                                   ; preds = %1371
  %39 = call noundef zeroext i1 @_ZNKSt6vectorIP6aiMeshSaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %3) #11
  br i1 %39, label %1377, label %1384

._crit_edge605.thread:                            ; preds = %33
  %40 = call noundef zeroext i1 @_ZNKSt6vectorIP6aiMeshSaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %3) #11
  br i1 %40, label %1377, label %.thread788

41:                                               ; preds = %25
  %42 = landingpad { ptr, i32 }
          cleanup
  br label %1432

43:                                               ; preds = %29
  %44 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIjED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #11
  br label %1431

45:                                               ; preds = %.lr.ph604, %1371
  %.sroa.0.0602 = phi i32 [ 0, %.lr.ph604 ], [ %spec.select422, %1371 ]
  %.sroa.7.0601 = phi i32 [ 0, %.lr.ph604 ], [ %.sroa.7.1, %1371 ]
  %.sroa.10.0600 = phi i32 [ 0, %.lr.ph604 ], [ %.sroa.10.1, %1371 ]
  %.sroa.13.0599 = phi i32 [ 0, %.lr.ph604 ], [ %.sroa.13.1, %1371 ]
  %.0285598 = phi i1 [ false, %.lr.ph604 ], [ %.2287, %1371 ]
  %.0289597 = phi i32 [ 0, %.lr.ph604 ], [ %1372, %1371 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #11
  %46 = load ptr, ptr %36, align 8, !tbaa !13
  %47 = zext i32 %.0289597 to i64
  %48 = getelementptr inbounds ptr, ptr %46, i64 %47
  %49 = load ptr, ptr %48, align 8, !tbaa !14
  store ptr %49, ptr %8, align 8, !tbaa !14
  %50 = load i32, ptr %49, align 8, !tbaa !15
  %51 = icmp eq i32 %50, 0
  br i1 %51, label %52, label %62

52:                                               ; preds = %45
  %53 = call ptr @__cxa_allocate_exception(i64 16) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #11
  %54 = load ptr, ptr %8, align 8, !tbaa !14
  %55 = getelementptr inbounds i8, ptr %54, i64 236
  %56 = call noundef ptr @_ZNK8aiString5C_StrEv(ptr noundef nonnull align 4 dereferenceable(1028) %55)
  store ptr %56, ptr %9, align 8, !tbaa !14
  invoke void @_ZN17DeadlyImportErrorC2IJRA35_KcPS1_EEEDpOT_(ptr noundef nonnull align 8 dereferenceable(16) %53, ptr noundef nonnull align 1 dereferenceable(35) @.str.3, ptr noundef nonnull align 8 dereferenceable(8) %9)
          to label %57 unwind label %60

57:                                               ; preds = %52
  invoke void @__cxa_throw(ptr nonnull %53, ptr nonnull @_ZTI17DeadlyImportError, ptr nonnull @_ZNSt13runtime_errorD2Ev) #12
          to label %1433 unwind label %58

58:                                               ; preds = %57
  %59 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #11
  br label %1376

60:                                               ; preds = %52
  %61 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #11
  call void @__cxa_free_exception(ptr %53) #11
  br label %1376

62:                                               ; preds = %45
  %63 = and i32 %50, 1
  %spec.select422 = add i32 %63, %.sroa.0.0602
  %64 = lshr i32 %50, 1
  %65 = and i32 %64, 1
  %.1325 = add nuw nsw i32 %65, %63
  %.sroa.7.1 = add i32 %65, %.sroa.7.0601
  %66 = lshr i32 %50, 2
  %67 = and i32 %66, 1
  %.2326 = add nuw nsw i32 %.1325, %67
  %.sroa.10.1 = add i32 %67, %.sroa.10.0600
  %68 = lshr i32 %50, 3
  %69 = and i32 %68, 1
  %.3327 = add nuw nsw i32 %.2326, %69
  %.sroa.13.1 = add i32 %69, %.sroa.13.0599
  %70 = icmp eq i32 %.3327, 1
  br i1 %70, label %71, label %86

71:                                               ; preds = %62
  %72 = load i32, ptr %38, align 8, !tbaa !21
  %73 = and i32 %72, %50
  %.not414 = icmp eq i32 %73, 0
  br i1 %.not414, label %74, label %81

74:                                               ; preds = %71
  %75 = call noundef i64 @_ZNKSt6vectorIP6aiMeshSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %3) #11
  %76 = trunc i64 %75 to i32
  %77 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %7) #11
  store i32 %76, ptr %77, align 4, !tbaa !12
  %78 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP6aiMeshSaIS1_EE12emplace_backIJRKS1_EEERS1_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 dereferenceable(8) %8)
          to label %84 unwind label %79

79:                                               ; preds = %74
  %80 = landingpad { ptr, i32 }
          cleanup
  br label %1376

81:                                               ; preds = %71
  call void @_ZN6aiMeshD2Ev(ptr noundef nonnull align 8 dereferenceable(1320) %49) #11
  call void @_ZdlPvm(ptr noundef nonnull %49, i64 noundef 1320) #13
  %82 = load ptr, ptr %36, align 8, !tbaa !13
  %83 = getelementptr inbounds ptr, ptr %82, i64 %47
  store ptr null, ptr %83, align 8, !tbaa !14
  br label %84

84:                                               ; preds = %74, %81
  %.1286 = phi i1 [ true, %81 ], [ %.0285598, %74 ]
  %85 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEpLEl(ptr noundef nonnull align 8 dereferenceable(8) %7, i64 noundef 4) #11
  br label %1371

86:                                               ; preds = %62
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %10) #11
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) %10, i8 0, i64 16, i1 false)
  %87 = getelementptr inbounds i8, ptr %49, i64 208
  %88 = load ptr, ptr %87, align 8, !tbaa !24
  %89 = getelementptr inbounds i8, ptr %49, i64 8
  %90 = load i32, ptr %89, align 8, !tbaa !25
  %91 = zext i32 %90 to i64
  %92 = getelementptr inbounds %struct.aiFace, ptr %88, i64 %91
  %.not372534 = icmp eq i32 %90, 0
  br i1 %.not372534, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %86, %105
  %.0329536 = phi ptr [ %106, %105 ], [ %88, %86 ]
  %.0330535 = phi i32 [ %.1331, %105 ], [ 0, %86 ]
  %93 = load i32, ptr %.0329536, align 8, !tbaa !26
  %94 = icmp ult i32 %93, 4
  br i1 %94, label %95, label %101

95:                                               ; preds = %.lr.ph
  %96 = add nsw i32 %93, -1
  %97 = zext i32 %96 to i64
  %98 = getelementptr inbounds [4 x i32], ptr %10, i64 0, i64 %97
  %99 = load i32, ptr %98, align 4, !tbaa !12
  %100 = add i32 %99, 1
  store i32 %100, ptr %98, align 4, !tbaa !12
  br label %105

101:                                              ; preds = %.lr.ph
  %102 = load i32, ptr %37, align 4, !tbaa !12
  %103 = add i32 %102, 1
  store i32 %103, ptr %37, align 4, !tbaa !12
  %104 = add i32 %93, %.0330535
  br label %105

105:                                              ; preds = %95, %101
  %.1331 = phi i32 [ %.0330535, %95 ], [ %104, %101 ]
  %106 = getelementptr inbounds i8, ptr %.0329536, i64 16
  %.not372 = icmp eq ptr %106, %92
  br i1 %.not372, label %._crit_edge, label %.lr.ph, !llvm.loop !28

._crit_edge:                                      ; preds = %105, %86
  %.0330.lcssa = phi i32 [ 0, %86 ], [ %.1331, %105 ]
  %107 = invoke noundef ptr @_ZN6Assimp28ComputeVertexBoneWeightTableEPK6aiMesh(ptr noundef nonnull %49)
          to label %.preheader443 unwind label %110

.preheader443:                                    ; preds = %._crit_edge
  %108 = add nsw i32 %.3327, -1
  %.not383 = icmp eq ptr %107, null
  br label %112

109:                                              ; preds = %1349
  br i1 %.not383, label %1364, label %1354

110:                                              ; preds = %._crit_edge
  %111 = landingpad { ptr, i32 }
          cleanup
  br label %1375

112:                                              ; preds = %.preheader443, %1349
  %indvars.iv717 = phi i64 [ 0, %.preheader443 ], [ %indvars.iv.next718, %1349 ]
  %113 = getelementptr inbounds [4 x i32], ptr %10, i64 0, i64 %indvars.iv717
  %114 = load i32, ptr %113, align 4, !tbaa !12
  %.not373 = icmp eq i32 %114, 0
  br i1 %.not373, label %1349, label %115

115:                                              ; preds = %112
  %116 = load i32, ptr %38, align 8, !tbaa !21
  %117 = trunc nuw nsw i64 %indvars.iv717 to i32
  %118 = shl nuw nsw i32 1, %117
  %119 = and i32 %116, %118
  %.not374 = icmp eq i32 %119, 0
  br i1 %.not374, label %120, label %1349

120:                                              ; preds = %115
  %121 = call noundef i64 @_ZNKSt6vectorIP6aiMeshSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %3) #11
  %122 = trunc i64 %121 to i32
  %123 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %7) #11
  store i32 %122, ptr %123, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #11
  %124 = invoke noalias noundef nonnull dereferenceable(1320) ptr @_Znwm(i64 noundef 1320) #14
          to label %125 unwind label %176

125:                                              ; preds = %120
  call void @_ZN6aiMeshC2Ev(ptr noundef nonnull align 8 dereferenceable(1320) %124) #11
  store ptr %124, ptr %11, align 8, !tbaa !14
  invoke void @_ZNSt6vectorIP6aiMeshSaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 dereferenceable(8) %11)
          to label %126 unwind label %176

126:                                              ; preds = %125
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #11
  %127 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP6aiMeshSaIS1_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %3) #11
  %128 = load ptr, ptr %127, align 8, !tbaa !14
  %129 = load ptr, ptr %8, align 8, !tbaa !14
  %130 = getelementptr inbounds i8, ptr %129, i64 236
  %131 = getelementptr inbounds i8, ptr %128, i64 236
  %132 = call noundef nonnull align 4 dereferenceable(1028) ptr @_ZN8aiStringaSERKS_(ptr noundef nonnull align 4 dereferenceable(1028) %131, ptr noundef nonnull align 4 dereferenceable(1028) %130)
  store i32 %118, ptr %128, align 8, !tbaa !15
  %133 = load ptr, ptr %8, align 8, !tbaa !14
  %134 = getelementptr inbounds i8, ptr %133, i64 232
  %135 = load i32, ptr %134, align 8, !tbaa !30
  %136 = getelementptr inbounds i8, ptr %128, i64 232
  store i32 %135, ptr %136, align 8, !tbaa !30
  %137 = getelementptr inbounds i8, ptr %128, i64 8
  store i32 %114, ptr %137, align 8, !tbaa !25
  %138 = zext i32 %114 to i64
  %139 = shl nuw nsw i64 %138, 4
  %140 = or disjoint i64 %139, 8
  %141 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %140) #14
          to label %142 unwind label %178

142:                                              ; preds = %126
  store i64 %138, ptr %141, align 16
  %143 = getelementptr inbounds i8, ptr %141, i64 8
  %144 = getelementptr inbounds %struct.aiFace, ptr %143, i64 %138
  br label %145

145:                                              ; preds = %145, %142
  %146 = phi ptr [ %143, %142 ], [ %147, %145 ]
  call void @_ZN6aiFaceC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %146) #11
  %147 = getelementptr inbounds i8, ptr %146, i64 16
  %148 = icmp eq ptr %147, %144
  br i1 %148, label %149, label %145

149:                                              ; preds = %145
  %150 = getelementptr inbounds i8, ptr %128, i64 208
  store ptr %143, ptr %150, align 8, !tbaa !24
  %151 = icmp eq i64 %indvars.iv717, 3
  br i1 %151, label %157, label %152

152:                                              ; preds = %149
  %153 = load i32, ptr %137, align 8, !tbaa !25
  %154 = trunc i64 %indvars.iv717 to i32
  %155 = add i32 %154, 1
  %156 = mul i32 %153, %155
  br label %157

157:                                              ; preds = %149, %152
  %158 = phi i32 [ %156, %152 ], [ %.0330.lcssa, %149 ]
  %159 = getelementptr inbounds i8, ptr %128, i64 4
  store i32 %158, ptr %159, align 4, !tbaa !31
  %160 = load ptr, ptr %8, align 8, !tbaa !14
  %161 = getelementptr inbounds i8, ptr %160, i64 16
  %162 = load ptr, ptr %161, align 8, !tbaa !32
  %.not375 = icmp eq ptr %162, null
  br i1 %.not375, label %182, label %163

163:                                              ; preds = %157
  %164 = zext i32 %158 to i64
  %165 = mul nuw nsw i64 %164, 12
  %166 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %165) #14
          to label %167 unwind label %180

167:                                              ; preds = %163
  %168 = icmp eq i32 %158, 0
  br i1 %168, label %.loopexit440, label %169

169:                                              ; preds = %167
  %170 = getelementptr inbounds %class.aiVector3t, ptr %166, i64 %164
  br label %171

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

.loopexit440.loopexit:                            ; preds = %171
  %.pre.pre = load ptr, ptr %8, align 8, !tbaa !14
  br label %.loopexit440

.loopexit440:                                     ; preds = %.loopexit440.loopexit, %167
  %.pre = phi ptr [ %.pre.pre, %.loopexit440.loopexit ], [ %160, %167 ]
  %175 = getelementptr inbounds i8, ptr %128, i64 16
  store ptr %166, ptr %175, align 8, !tbaa !32
  br label %182

176:                                              ; preds = %125, %120
  %177 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #11
  br label %1375

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

180:                                              ; preds = %553, %.loopexit438, %204, %186, %163
  %181 = landingpad { ptr, i32 }
          cleanup
  br label %1375

182:                                              ; preds = %.loopexit440, %157
  %183 = phi ptr [ %.pre, %.loopexit440 ], [ %160, %157 ]
  %.0317 = phi ptr [ %166, %.loopexit440 ], [ null, %157 ]
  %184 = getelementptr inbounds i8, ptr %183, i64 24
  %185 = load ptr, ptr %184, align 8, !tbaa !33
  %.not376 = icmp eq ptr %185, null
  br i1 %.not376, label %200, label %186

186:                                              ; preds = %182
  %187 = load i32, ptr %159, align 4, !tbaa !31
  %188 = zext i32 %187 to i64
  %189 = mul nuw nsw i64 %188, 12
  %190 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %189) #14
          to label %191 unwind label %180

191:                                              ; preds = %186
  %192 = icmp eq i32 %187, 0
  br i1 %192, label %.loopexit439, label %193

193:                                              ; preds = %191
  %194 = getelementptr inbounds %class.aiVector3t, ptr %190, i64 %188
  br label %195

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

.loopexit439.loopexit:                            ; preds = %195
  %.pre729.pre = load ptr, ptr %8, align 8, !tbaa !14
  br label %.loopexit439

.loopexit439:                                     ; preds = %.loopexit439.loopexit, %191
  %.pre729 = phi ptr [ %.pre729.pre, %.loopexit439.loopexit ], [ %183, %191 ]
  %199 = getelementptr inbounds i8, ptr %128, i64 24
  store ptr %190, ptr %199, align 8, !tbaa !33
  br label %200

200:                                              ; preds = %.loopexit439, %182
  %201 = phi ptr [ %.pre729, %.loopexit439 ], [ %183, %182 ]
  %.0312 = phi ptr [ %190, %.loopexit439 ], [ null, %182 ]
  %202 = getelementptr inbounds i8, ptr %201, i64 32
  %203 = load ptr, ptr %202, align 8, !tbaa !34
  %.not377 = icmp eq ptr %203, null
  br i1 %.not377, label %231, label %204

204:                                              ; preds = %200
  %205 = load i32, ptr %159, align 4, !tbaa !31
  %206 = zext i32 %205 to i64
  %207 = mul nuw nsw i64 %206, 12
  %208 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %207) #14
          to label %209 unwind label %180

209:                                              ; preds = %204
  %210 = icmp eq i32 %205, 0
  br i1 %210, label %.loopexit438, label %211

211:                                              ; preds = %209
  %212 = getelementptr inbounds %class.aiVector3t, ptr %208, i64 %206
  br label %213

213:                                              ; preds = %213, %211
  %214 = phi ptr [ %208, %211 ], [ %215, %213 ]
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %214) #11
  %215 = getelementptr inbounds i8, ptr %214, i64 12
  %216 = icmp eq ptr %215, %212
  br i1 %216, label %.loopexit438, label %213

.loopexit438:                                     ; preds = %213, %209
  %217 = getelementptr inbounds i8, ptr %128, i64 32
  store ptr %208, ptr %217, align 8, !tbaa !34
  %218 = load i32, ptr %159, align 4, !tbaa !31
  %219 = zext i32 %218 to i64
  %220 = mul nuw nsw i64 %219, 12
  %221 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %220) #14
          to label %222 unwind label %180

222:                                              ; preds = %.loopexit438
  %223 = icmp eq i32 %218, 0
  br i1 %223, label %.loopexit437, label %224

224:                                              ; preds = %222
  %225 = getelementptr inbounds %class.aiVector3t, ptr %221, i64 %219
  br label %226

226:                                              ; preds = %226, %224
  %227 = phi ptr [ %221, %224 ], [ %228, %226 ]
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %227) #11
  %228 = getelementptr inbounds i8, ptr %227, i64 12
  %229 = icmp eq ptr %228, %225
  br i1 %229, label %.loopexit437, label %226

.loopexit437:                                     ; preds = %226, %222
  %230 = getelementptr inbounds i8, ptr %128, i64 40
  store ptr %221, ptr %230, align 8, !tbaa !35
  %.pre730 = load ptr, ptr %8, align 8, !tbaa !14
  br label %231

231:                                              ; preds = %.loopexit437, %200
  %232 = phi ptr [ %.pre730, %.loopexit437 ], [ %201, %200 ]
  %.0307 = phi ptr [ %208, %.loopexit437 ], [ null, %200 ]
  %.0302 = phi ptr [ %221, %.loopexit437 ], [ null, %200 ]
  %233 = getelementptr inbounds i8, ptr %128, i64 112
  %234 = getelementptr inbounds i8, ptr %128, i64 176
  %235 = getelementptr inbounds i8, ptr %232, i64 112
  %236 = load ptr, ptr %235, align 8, !tbaa !14
  %.not408 = icmp eq ptr %236, null
  br i1 %.not408, label %252, label %237

237:                                              ; preds = %231
  %238 = load i32, ptr %159, align 4, !tbaa !31
  %239 = zext i32 %238 to i64
  %240 = mul nuw nsw i64 %239, 12
  %241 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %240) #14
          to label %242 unwind label %250

242:                                              ; preds = %237
  %243 = icmp eq i32 %238, 0
  br i1 %243, label %.loopexit434, label %244

244:                                              ; preds = %242
  %245 = getelementptr inbounds %class.aiVector3t, ptr %241, i64 %239
  br label %246

246:                                              ; preds = %246, %244
  %247 = phi ptr [ %241, %244 ], [ %248, %246 ]
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %247) #11
  %248 = getelementptr inbounds i8, ptr %247, i64 12
  %249 = icmp eq ptr %248, %245
  br i1 %249, label %.loopexit434.loopexit, label %246

.loopexit434.loopexit:                            ; preds = %246
  %.pre731.pre = load ptr, ptr %8, align 8, !tbaa !14
  br label %.loopexit434

.loopexit434:                                     ; preds = %.loopexit434.loopexit, %242
  %.pre731 = phi ptr [ %.pre731.pre, %.loopexit434.loopexit ], [ %232, %242 ]
  store ptr %241, ptr %233, align 8, !tbaa !14
  br label %252

250:                                              ; preds = %384, %363, %342, %321, %300, %279, %258, %237
  %251 = landingpad { ptr, i32 }
          cleanup
  br label %1375

252:                                              ; preds = %.loopexit434, %231
  %253 = phi ptr [ %232, %231 ], [ %.pre731, %.loopexit434 ]
  %.sroa.0720.0 = phi ptr [ null, %231 ], [ %241, %.loopexit434 ]
  %254 = getelementptr inbounds i8, ptr %253, i64 176
  %255 = load i32, ptr %254, align 4, !tbaa !12
  store i32 %255, ptr %234, align 4, !tbaa !12
  %256 = getelementptr inbounds i8, ptr %253, i64 120
  %257 = load ptr, ptr %256, align 8, !tbaa !14
  %.not408.1 = icmp eq ptr %257, null
  br i1 %.not408.1, label %272, label %258

258:                                              ; preds = %252
  %259 = load i32, ptr %159, align 4, !tbaa !31
  %260 = zext i32 %259 to i64
  %261 = mul nuw nsw i64 %260, 12
  %262 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %261) #14
          to label %263 unwind label %250

263:                                              ; preds = %258
  %264 = icmp eq i32 %259, 0
  br i1 %264, label %.loopexit434.1, label %265

265:                                              ; preds = %263
  %266 = getelementptr inbounds %class.aiVector3t, ptr %262, i64 %260
  br label %267

267:                                              ; preds = %267, %265
  %268 = phi ptr [ %262, %265 ], [ %269, %267 ]
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %268) #11
  %269 = getelementptr inbounds i8, ptr %268, i64 12
  %270 = icmp eq ptr %269, %266
  br i1 %270, label %.loopexit434.loopexit.1, label %267

.loopexit434.loopexit.1:                          ; preds = %267
  %.pre732.pre = load ptr, ptr %8, align 8, !tbaa !14
  br label %.loopexit434.1

.loopexit434.1:                                   ; preds = %.loopexit434.loopexit.1, %263
  %.pre732 = phi ptr [ %.pre732.pre, %.loopexit434.loopexit.1 ], [ %253, %263 ]
  %271 = getelementptr inbounds i8, ptr %128, i64 120
  store ptr %262, ptr %271, align 8, !tbaa !14
  br label %272

272:                                              ; preds = %.loopexit434.1, %252
  %273 = phi ptr [ %253, %252 ], [ %.pre732, %.loopexit434.1 ]
  %.sroa.7721.0 = phi ptr [ null, %252 ], [ %262, %.loopexit434.1 ]
  %274 = getelementptr inbounds i8, ptr %273, i64 180
  %275 = load i32, ptr %274, align 4, !tbaa !12
  %276 = getelementptr inbounds i8, ptr %128, i64 180
  store i32 %275, ptr %276, align 4, !tbaa !12
  %277 = getelementptr inbounds i8, ptr %273, i64 128
  %278 = load ptr, ptr %277, align 8, !tbaa !14
  %.not408.2 = icmp eq ptr %278, null
  br i1 %.not408.2, label %293, label %279

279:                                              ; preds = %272
  %280 = load i32, ptr %159, align 4, !tbaa !31
  %281 = zext i32 %280 to i64
  %282 = mul nuw nsw i64 %281, 12
  %283 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %282) #14
          to label %284 unwind label %250

284:                                              ; preds = %279
  %285 = icmp eq i32 %280, 0
  br i1 %285, label %.loopexit434.2, label %286

286:                                              ; preds = %284
  %287 = getelementptr inbounds %class.aiVector3t, ptr %283, i64 %281
  br label %288

288:                                              ; preds = %288, %286
  %289 = phi ptr [ %283, %286 ], [ %290, %288 ]
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %289) #11
  %290 = getelementptr inbounds i8, ptr %289, i64 12
  %291 = icmp eq ptr %290, %287
  br i1 %291, label %.loopexit434.loopexit.2, label %288

.loopexit434.loopexit.2:                          ; preds = %288
  %.pre733.pre = load ptr, ptr %8, align 8, !tbaa !14
  br label %.loopexit434.2

.loopexit434.2:                                   ; preds = %.loopexit434.loopexit.2, %284
  %.pre733 = phi ptr [ %.pre733.pre, %.loopexit434.loopexit.2 ], [ %273, %284 ]
  %292 = getelementptr inbounds i8, ptr %128, i64 128
  store ptr %283, ptr %292, align 8, !tbaa !14
  br label %293

293:                                              ; preds = %.loopexit434.2, %272
  %294 = phi ptr [ %273, %272 ], [ %.pre733, %.loopexit434.2 ]
  %.sroa.11722.0 = phi ptr [ null, %272 ], [ %283, %.loopexit434.2 ]
  %295 = getelementptr inbounds i8, ptr %294, i64 184
  %296 = load i32, ptr %295, align 4, !tbaa !12
  %297 = getelementptr inbounds i8, ptr %128, i64 184
  store i32 %296, ptr %297, align 4, !tbaa !12
  %298 = getelementptr inbounds i8, ptr %294, i64 136
  %299 = load ptr, ptr %298, align 8, !tbaa !14
  %.not408.3 = icmp eq ptr %299, null
  br i1 %.not408.3, label %314, label %300

300:                                              ; preds = %293
  %301 = load i32, ptr %159, align 4, !tbaa !31
  %302 = zext i32 %301 to i64
  %303 = mul nuw nsw i64 %302, 12
  %304 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %303) #14
          to label %305 unwind label %250

305:                                              ; preds = %300
  %306 = icmp eq i32 %301, 0
  br i1 %306, label %.loopexit434.3, label %307

307:                                              ; preds = %305
  %308 = getelementptr inbounds %class.aiVector3t, ptr %304, i64 %302
  br label %309

309:                                              ; preds = %309, %307
  %310 = phi ptr [ %304, %307 ], [ %311, %309 ]
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %310) #11
  %311 = getelementptr inbounds i8, ptr %310, i64 12
  %312 = icmp eq ptr %311, %308
  br i1 %312, label %.loopexit434.loopexit.3, label %309

.loopexit434.loopexit.3:                          ; preds = %309
  %.pre734.pre = load ptr, ptr %8, align 8, !tbaa !14
  br label %.loopexit434.3

.loopexit434.3:                                   ; preds = %.loopexit434.loopexit.3, %305
  %.pre734 = phi ptr [ %.pre734.pre, %.loopexit434.loopexit.3 ], [ %294, %305 ]
  %313 = getelementptr inbounds i8, ptr %128, i64 136
  store ptr %304, ptr %313, align 8, !tbaa !14
  br label %314

314:                                              ; preds = %.loopexit434.3, %293
  %315 = phi ptr [ %294, %293 ], [ %.pre734, %.loopexit434.3 ]
  %.sroa.15723.0 = phi ptr [ null, %293 ], [ %304, %.loopexit434.3 ]
  %316 = getelementptr inbounds i8, ptr %315, i64 188
  %317 = load i32, ptr %316, align 4, !tbaa !12
  %318 = getelementptr inbounds i8, ptr %128, i64 188
  store i32 %317, ptr %318, align 4, !tbaa !12
  %319 = getelementptr inbounds i8, ptr %315, i64 144
  %320 = load ptr, ptr %319, align 8, !tbaa !14
  %.not408.4 = icmp eq ptr %320, null
  br i1 %.not408.4, label %335, label %321

321:                                              ; preds = %314
  %322 = load i32, ptr %159, align 4, !tbaa !31
  %323 = zext i32 %322 to i64
  %324 = mul nuw nsw i64 %323, 12
  %325 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %324) #14
          to label %326 unwind label %250

326:                                              ; preds = %321
  %327 = icmp eq i32 %322, 0
  br i1 %327, label %.loopexit434.4, label %328

328:                                              ; preds = %326
  %329 = getelementptr inbounds %class.aiVector3t, ptr %325, i64 %323
  br label %330

330:                                              ; preds = %330, %328
  %331 = phi ptr [ %325, %328 ], [ %332, %330 ]
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %331) #11
  %332 = getelementptr inbounds i8, ptr %331, i64 12
  %333 = icmp eq ptr %332, %329
  br i1 %333, label %.loopexit434.loopexit.4, label %330

.loopexit434.loopexit.4:                          ; preds = %330
  %.pre735.pre = load ptr, ptr %8, align 8, !tbaa !14
  br label %.loopexit434.4

.loopexit434.4:                                   ; preds = %.loopexit434.loopexit.4, %326
  %.pre735 = phi ptr [ %.pre735.pre, %.loopexit434.loopexit.4 ], [ %315, %326 ]
  %334 = getelementptr inbounds i8, ptr %128, i64 144
  store ptr %325, ptr %334, align 8, !tbaa !14
  br label %335

335:                                              ; preds = %.loopexit434.4, %314
  %336 = phi ptr [ %315, %314 ], [ %.pre735, %.loopexit434.4 ]
  %.sroa.19724.0 = phi ptr [ null, %314 ], [ %325, %.loopexit434.4 ]
  %337 = getelementptr inbounds i8, ptr %336, i64 192
  %338 = load i32, ptr %337, align 4, !tbaa !12
  %339 = getelementptr inbounds i8, ptr %128, i64 192
  store i32 %338, ptr %339, align 4, !tbaa !12
  %340 = getelementptr inbounds i8, ptr %336, i64 152
  %341 = load ptr, ptr %340, align 8, !tbaa !14
  %.not408.5 = icmp eq ptr %341, null
  br i1 %.not408.5, label %356, label %342

342:                                              ; preds = %335
  %343 = load i32, ptr %159, align 4, !tbaa !31
  %344 = zext i32 %343 to i64
  %345 = mul nuw nsw i64 %344, 12
  %346 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %345) #14
          to label %347 unwind label %250

347:                                              ; preds = %342
  %348 = icmp eq i32 %343, 0
  br i1 %348, label %.loopexit434.5, label %349

349:                                              ; preds = %347
  %350 = getelementptr inbounds %class.aiVector3t, ptr %346, i64 %344
  br label %351

351:                                              ; preds = %351, %349
  %352 = phi ptr [ %346, %349 ], [ %353, %351 ]
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %352) #11
  %353 = getelementptr inbounds i8, ptr %352, i64 12
  %354 = icmp eq ptr %353, %350
  br i1 %354, label %.loopexit434.loopexit.5, label %351

.loopexit434.loopexit.5:                          ; preds = %351
  %.pre736.pre = load ptr, ptr %8, align 8, !tbaa !14
  br label %.loopexit434.5

.loopexit434.5:                                   ; preds = %.loopexit434.loopexit.5, %347
  %.pre736 = phi ptr [ %.pre736.pre, %.loopexit434.loopexit.5 ], [ %336, %347 ]
  %355 = getelementptr inbounds i8, ptr %128, i64 152
  store ptr %346, ptr %355, align 8, !tbaa !14
  br label %356

356:                                              ; preds = %.loopexit434.5, %335
  %357 = phi ptr [ %336, %335 ], [ %.pre736, %.loopexit434.5 ]
  %.sroa.23725.0 = phi ptr [ null, %335 ], [ %346, %.loopexit434.5 ]
  %358 = getelementptr inbounds i8, ptr %357, i64 196
  %359 = load i32, ptr %358, align 4, !tbaa !12
  %360 = getelementptr inbounds i8, ptr %128, i64 196
  store i32 %359, ptr %360, align 4, !tbaa !12
  %361 = getelementptr inbounds i8, ptr %357, i64 160
  %362 = load ptr, ptr %361, align 8, !tbaa !14
  %.not408.6 = icmp eq ptr %362, null
  br i1 %.not408.6, label %377, label %363

363:                                              ; preds = %356
  %364 = load i32, ptr %159, align 4, !tbaa !31
  %365 = zext i32 %364 to i64
  %366 = mul nuw nsw i64 %365, 12
  %367 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %366) #14
          to label %368 unwind label %250

368:                                              ; preds = %363
  %369 = icmp eq i32 %364, 0
  br i1 %369, label %.loopexit434.6, label %370

370:                                              ; preds = %368
  %371 = getelementptr inbounds %class.aiVector3t, ptr %367, i64 %365
  br label %372

372:                                              ; preds = %372, %370
  %373 = phi ptr [ %367, %370 ], [ %374, %372 ]
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %373) #11
  %374 = getelementptr inbounds i8, ptr %373, i64 12
  %375 = icmp eq ptr %374, %371
  br i1 %375, label %.loopexit434.loopexit.6, label %372

.loopexit434.loopexit.6:                          ; preds = %372
  %.pre737.pre = load ptr, ptr %8, align 8, !tbaa !14
  br label %.loopexit434.6

.loopexit434.6:                                   ; preds = %.loopexit434.loopexit.6, %368
  %.pre737 = phi ptr [ %.pre737.pre, %.loopexit434.loopexit.6 ], [ %357, %368 ]
  %376 = getelementptr inbounds i8, ptr %128, i64 160
  store ptr %367, ptr %376, align 8, !tbaa !14
  br label %377

377:                                              ; preds = %.loopexit434.6, %356
  %378 = phi ptr [ %357, %356 ], [ %.pre737, %.loopexit434.6 ]
  %.sroa.27726.0 = phi ptr [ null, %356 ], [ %367, %.loopexit434.6 ]
  %379 = getelementptr inbounds i8, ptr %378, i64 200
  %380 = load i32, ptr %379, align 4, !tbaa !12
  %381 = getelementptr inbounds i8, ptr %128, i64 200
  store i32 %380, ptr %381, align 4, !tbaa !12
  %382 = getelementptr inbounds i8, ptr %378, i64 168
  %383 = load ptr, ptr %382, align 8, !tbaa !14
  %.not408.7 = icmp eq ptr %383, null
  br i1 %.not408.7, label %.preheader436, label %384

384:                                              ; preds = %377
  %385 = load i32, ptr %159, align 4, !tbaa !31
  %386 = zext i32 %385 to i64
  %387 = mul nuw nsw i64 %386, 12
  %388 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %387) #14
          to label %389 unwind label %250

389:                                              ; preds = %384
  %390 = icmp eq i32 %385, 0
  br i1 %390, label %.loopexit434.7, label %391

391:                                              ; preds = %389
  %392 = getelementptr inbounds %class.aiVector3t, ptr %388, i64 %386
  br label %393

393:                                              ; preds = %393, %391
  %394 = phi ptr [ %388, %391 ], [ %395, %393 ]
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %394) #11
  %395 = getelementptr inbounds i8, ptr %394, i64 12
  %396 = icmp eq ptr %395, %392
  br i1 %396, label %.loopexit434.loopexit.7, label %393

.loopexit434.loopexit.7:                          ; preds = %393
  %.pre738.pre = load ptr, ptr %8, align 8, !tbaa !14
  br label %.loopexit434.7

.loopexit434.7:                                   ; preds = %.loopexit434.loopexit.7, %389
  %.pre738 = phi ptr [ %.pre738.pre, %.loopexit434.loopexit.7 ], [ %378, %389 ]
  %397 = getelementptr inbounds i8, ptr %128, i64 168
  store ptr %388, ptr %397, align 8, !tbaa !14
  br label %.preheader436

.preheader436:                                    ; preds = %.loopexit434.7, %377
  %398 = phi ptr [ %378, %377 ], [ %.pre738, %.loopexit434.7 ]
  %.sroa.31727.0 = phi ptr [ null, %377 ], [ %388, %.loopexit434.7 ]
  %399 = getelementptr inbounds i8, ptr %398, i64 204
  %400 = load i32, ptr %399, align 4, !tbaa !12
  %401 = getelementptr inbounds i8, ptr %128, i64 204
  store i32 %400, ptr %401, align 4, !tbaa !12
  %402 = getelementptr inbounds i8, ptr %128, i64 48
  %403 = getelementptr inbounds i8, ptr %398, i64 48
  %404 = load ptr, ptr %403, align 8, !tbaa !14
  %.not407 = icmp eq ptr %404, null
  br i1 %.not407, label %420, label %405

405:                                              ; preds = %.preheader436
  %406 = load i32, ptr %159, align 4, !tbaa !31
  %407 = zext i32 %406 to i64
  %408 = shl nuw nsw i64 %407, 4
  %409 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %408) #14
          to label %410 unwind label %418

410:                                              ; preds = %405
  %411 = icmp eq i32 %406, 0
  br i1 %411, label %.loopexit433, label %412

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

414:                                              ; preds = %414, %412
  %415 = phi ptr [ %409, %412 ], [ %416, %414 ]
  call void @_ZN9aiColor4tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(16) %415) #11
  %416 = getelementptr inbounds i8, ptr %415, i64 16
  %417 = icmp eq ptr %416, %413
  br i1 %417, label %.loopexit433.loopexit, label %414

.loopexit433.loopexit:                            ; preds = %414
  %.pre739.pre = load ptr, ptr %8, align 8, !tbaa !14
  br label %.loopexit433

.loopexit433:                                     ; preds = %.loopexit433.loopexit, %410
  %.pre739 = phi ptr [ %.pre739.pre, %.loopexit433.loopexit ], [ %398, %410 ]
  store ptr %409, ptr %402, align 8, !tbaa !14
  br label %420

418:                                              ; preds = %532, %514, %496, %478, %460, %442, %424, %405
  %419 = landingpad { ptr, i32 }
          cleanup
  br label %1375

420:                                              ; preds = %.preheader436, %.loopexit433
  %421 = phi ptr [ %398, %.preheader436 ], [ %.pre739, %.loopexit433 ]
  %.sroa.0.0 = phi ptr [ null, %.preheader436 ], [ %409, %.loopexit433 ]
  %422 = getelementptr inbounds i8, ptr %421, i64 56
  %423 = load ptr, ptr %422, align 8, !tbaa !14
  %.not407.1 = icmp eq ptr %423, null
  br i1 %.not407.1, label %438, label %424

424:                                              ; preds = %420
  %425 = load i32, ptr %159, align 4, !tbaa !31
  %426 = zext i32 %425 to i64
  %427 = shl nuw nsw i64 %426, 4
  %428 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %427) #14
          to label %429 unwind label %418

429:                                              ; preds = %424
  %430 = icmp eq i32 %425, 0
  br i1 %430, label %.loopexit433.1, label %431

431:                                              ; preds = %429
  %432 = getelementptr inbounds %class.aiColor4t, ptr %428, i64 %426
  br label %433

433:                                              ; preds = %433, %431
  %434 = phi ptr [ %428, %431 ], [ %435, %433 ]
  call void @_ZN9aiColor4tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(16) %434) #11
  %435 = getelementptr inbounds i8, ptr %434, i64 16
  %436 = icmp eq ptr %435, %432
  br i1 %436, label %.loopexit433.loopexit.1, label %433

.loopexit433.loopexit.1:                          ; preds = %433
  %.pre740.pre = load ptr, ptr %8, align 8, !tbaa !14
  br label %.loopexit433.1

.loopexit433.1:                                   ; preds = %.loopexit433.loopexit.1, %429
  %.pre740 = phi ptr [ %.pre740.pre, %.loopexit433.loopexit.1 ], [ %421, %429 ]
  %437 = getelementptr inbounds i8, ptr %128, i64 56
  store ptr %428, ptr %437, align 8, !tbaa !14
  br label %438

438:                                              ; preds = %.loopexit433.1, %420
  %439 = phi ptr [ %421, %420 ], [ %.pre740, %.loopexit433.1 ]
  %.sroa.7.0 = phi ptr [ null, %420 ], [ %428, %.loopexit433.1 ]
  %440 = getelementptr inbounds i8, ptr %439, i64 64
  %441 = load ptr, ptr %440, align 8, !tbaa !14
  %.not407.2 = icmp eq ptr %441, null
  br i1 %.not407.2, label %456, label %442

442:                                              ; preds = %438
  %443 = load i32, ptr %159, align 4, !tbaa !31
  %444 = zext i32 %443 to i64
  %445 = shl nuw nsw i64 %444, 4
  %446 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %445) #14
          to label %447 unwind label %418

447:                                              ; preds = %442
  %448 = icmp eq i32 %443, 0
  br i1 %448, label %.loopexit433.2, label %449

449:                                              ; preds = %447
  %450 = getelementptr inbounds %class.aiColor4t, ptr %446, i64 %444
  br label %451

451:                                              ; preds = %451, %449
  %452 = phi ptr [ %446, %449 ], [ %453, %451 ]
  call void @_ZN9aiColor4tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(16) %452) #11
  %453 = getelementptr inbounds i8, ptr %452, i64 16
  %454 = icmp eq ptr %453, %450
  br i1 %454, label %.loopexit433.loopexit.2, label %451

.loopexit433.loopexit.2:                          ; preds = %451
  %.pre741.pre = load ptr, ptr %8, align 8, !tbaa !14
  br label %.loopexit433.2

.loopexit433.2:                                   ; preds = %.loopexit433.loopexit.2, %447
  %.pre741 = phi ptr [ %.pre741.pre, %.loopexit433.loopexit.2 ], [ %439, %447 ]
  %455 = getelementptr inbounds i8, ptr %128, i64 64
  store ptr %446, ptr %455, align 8, !tbaa !14
  br label %456

456:                                              ; preds = %.loopexit433.2, %438
  %457 = phi ptr [ %439, %438 ], [ %.pre741, %.loopexit433.2 ]
  %.sroa.11.0 = phi ptr [ null, %438 ], [ %446, %.loopexit433.2 ]
  %458 = getelementptr inbounds i8, ptr %457, i64 72
  %459 = load ptr, ptr %458, align 8, !tbaa !14
  %.not407.3 = icmp eq ptr %459, null
  br i1 %.not407.3, label %474, label %460

460:                                              ; preds = %456
  %461 = load i32, ptr %159, align 4, !tbaa !31
  %462 = zext i32 %461 to i64
  %463 = shl nuw nsw i64 %462, 4
  %464 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %463) #14
          to label %465 unwind label %418

465:                                              ; preds = %460
  %466 = icmp eq i32 %461, 0
  br i1 %466, label %.loopexit433.3, label %467

467:                                              ; preds = %465
  %468 = getelementptr inbounds %class.aiColor4t, ptr %464, i64 %462
  br label %469

469:                                              ; preds = %469, %467
  %470 = phi ptr [ %464, %467 ], [ %471, %469 ]
  call void @_ZN9aiColor4tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(16) %470) #11
  %471 = getelementptr inbounds i8, ptr %470, i64 16
  %472 = icmp eq ptr %471, %468
  br i1 %472, label %.loopexit433.loopexit.3, label %469

.loopexit433.loopexit.3:                          ; preds = %469
  %.pre742.pre = load ptr, ptr %8, align 8, !tbaa !14
  br label %.loopexit433.3

.loopexit433.3:                                   ; preds = %.loopexit433.loopexit.3, %465
  %.pre742 = phi ptr [ %.pre742.pre, %.loopexit433.loopexit.3 ], [ %457, %465 ]
  %473 = getelementptr inbounds i8, ptr %128, i64 72
  store ptr %464, ptr %473, align 8, !tbaa !14
  br label %474

474:                                              ; preds = %.loopexit433.3, %456
  %475 = phi ptr [ %457, %456 ], [ %.pre742, %.loopexit433.3 ]
  %.sroa.15.0 = phi ptr [ null, %456 ], [ %464, %.loopexit433.3 ]
  %476 = getelementptr inbounds i8, ptr %475, i64 80
  %477 = load ptr, ptr %476, align 8, !tbaa !14
  %.not407.4 = icmp eq ptr %477, null
  br i1 %.not407.4, label %492, label %478

478:                                              ; preds = %474
  %479 = load i32, ptr %159, align 4, !tbaa !31
  %480 = zext i32 %479 to i64
  %481 = shl nuw nsw i64 %480, 4
  %482 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %481) #14
          to label %483 unwind label %418

483:                                              ; preds = %478
  %484 = icmp eq i32 %479, 0
  br i1 %484, label %.loopexit433.4, label %485

485:                                              ; preds = %483
  %486 = getelementptr inbounds %class.aiColor4t, ptr %482, i64 %480
  br label %487

487:                                              ; preds = %487, %485
  %488 = phi ptr [ %482, %485 ], [ %489, %487 ]
  call void @_ZN9aiColor4tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(16) %488) #11
  %489 = getelementptr inbounds i8, ptr %488, i64 16
  %490 = icmp eq ptr %489, %486
  br i1 %490, label %.loopexit433.loopexit.4, label %487

.loopexit433.loopexit.4:                          ; preds = %487
  %.pre743.pre = load ptr, ptr %8, align 8, !tbaa !14
  br label %.loopexit433.4

.loopexit433.4:                                   ; preds = %.loopexit433.loopexit.4, %483
  %.pre743 = phi ptr [ %.pre743.pre, %.loopexit433.loopexit.4 ], [ %475, %483 ]
  %491 = getelementptr inbounds i8, ptr %128, i64 80
  store ptr %482, ptr %491, align 8, !tbaa !14
  br label %492

492:                                              ; preds = %.loopexit433.4, %474
  %493 = phi ptr [ %475, %474 ], [ %.pre743, %.loopexit433.4 ]
  %.sroa.19.0 = phi ptr [ null, %474 ], [ %482, %.loopexit433.4 ]
  %494 = getelementptr inbounds i8, ptr %493, i64 88
  %495 = load ptr, ptr %494, align 8, !tbaa !14
  %.not407.5 = icmp eq ptr %495, null
  br i1 %.not407.5, label %510, label %496

496:                                              ; preds = %492
  %497 = load i32, ptr %159, align 4, !tbaa !31
  %498 = zext i32 %497 to i64
  %499 = shl nuw nsw i64 %498, 4
  %500 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %499) #14
          to label %501 unwind label %418

501:                                              ; preds = %496
  %502 = icmp eq i32 %497, 0
  br i1 %502, label %.loopexit433.5, label %503

503:                                              ; preds = %501
  %504 = getelementptr inbounds %class.aiColor4t, ptr %500, i64 %498
  br label %505

505:                                              ; preds = %505, %503
  %506 = phi ptr [ %500, %503 ], [ %507, %505 ]
  call void @_ZN9aiColor4tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(16) %506) #11
  %507 = getelementptr inbounds i8, ptr %506, i64 16
  %508 = icmp eq ptr %507, %504
  br i1 %508, label %.loopexit433.loopexit.5, label %505

.loopexit433.loopexit.5:                          ; preds = %505
  %.pre744.pre = load ptr, ptr %8, align 8, !tbaa !14
  br label %.loopexit433.5

.loopexit433.5:                                   ; preds = %.loopexit433.loopexit.5, %501
  %.pre744 = phi ptr [ %.pre744.pre, %.loopexit433.loopexit.5 ], [ %493, %501 ]
  %509 = getelementptr inbounds i8, ptr %128, i64 88
  store ptr %500, ptr %509, align 8, !tbaa !14
  br label %510

510:                                              ; preds = %.loopexit433.5, %492
  %511 = phi ptr [ %493, %492 ], [ %.pre744, %.loopexit433.5 ]
  %.sroa.23.0 = phi ptr [ null, %492 ], [ %500, %.loopexit433.5 ]
  %512 = getelementptr inbounds i8, ptr %511, i64 96
  %513 = load ptr, ptr %512, align 8, !tbaa !14
  %.not407.6 = icmp eq ptr %513, null
  br i1 %.not407.6, label %528, label %514

514:                                              ; preds = %510
  %515 = load i32, ptr %159, align 4, !tbaa !31
  %516 = zext i32 %515 to i64
  %517 = shl nuw nsw i64 %516, 4
  %518 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %517) #14
          to label %519 unwind label %418

519:                                              ; preds = %514
  %520 = icmp eq i32 %515, 0
  br i1 %520, label %.loopexit433.6, label %521

521:                                              ; preds = %519
  %522 = getelementptr inbounds %class.aiColor4t, ptr %518, i64 %516
  br label %523

523:                                              ; preds = %523, %521
  %524 = phi ptr [ %518, %521 ], [ %525, %523 ]
  call void @_ZN9aiColor4tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(16) %524) #11
  %525 = getelementptr inbounds i8, ptr %524, i64 16
  %526 = icmp eq ptr %525, %522
  br i1 %526, label %.loopexit433.loopexit.6, label %523

.loopexit433.loopexit.6:                          ; preds = %523
  %.pre745.pre = load ptr, ptr %8, align 8, !tbaa !14
  br label %.loopexit433.6

.loopexit433.6:                                   ; preds = %.loopexit433.loopexit.6, %519
  %.pre745 = phi ptr [ %.pre745.pre, %.loopexit433.loopexit.6 ], [ %511, %519 ]
  %527 = getelementptr inbounds i8, ptr %128, i64 96
  store ptr %518, ptr %527, align 8, !tbaa !14
  br label %528

528:                                              ; preds = %.loopexit433.6, %510
  %529 = phi ptr [ %511, %510 ], [ %.pre745, %.loopexit433.6 ]
  %.sroa.27.0 = phi ptr [ null, %510 ], [ %518, %.loopexit433.6 ]
  %530 = getelementptr inbounds i8, ptr %529, i64 104
  %531 = load ptr, ptr %530, align 8, !tbaa !14
  %.not407.7 = icmp eq ptr %531, null
  br i1 %.not407.7, label %546, label %532

532:                                              ; preds = %528
  %533 = load i32, ptr %159, align 4, !tbaa !31
  %534 = zext i32 %533 to i64
  %535 = shl nuw nsw i64 %534, 4
  %536 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %535) #14
          to label %537 unwind label %418

537:                                              ; preds = %532
  %538 = icmp eq i32 %533, 0
  br i1 %538, label %.loopexit433.7, label %539

539:                                              ; preds = %537
  %540 = getelementptr inbounds %class.aiColor4t, ptr %536, i64 %534
  br label %541

541:                                              ; preds = %541, %539
  %542 = phi ptr [ %536, %539 ], [ %543, %541 ]
  call void @_ZN9aiColor4tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(16) %542) #11
  %543 = getelementptr inbounds i8, ptr %542, i64 16
  %544 = icmp eq ptr %543, %540
  br i1 %544, label %.loopexit433.loopexit.7, label %541

.loopexit433.loopexit.7:                          ; preds = %541
  %.pre746.pre = load ptr, ptr %8, align 8, !tbaa !14
  br label %.loopexit433.7

.loopexit433.7:                                   ; preds = %.loopexit433.loopexit.7, %537
  %.pre746 = phi ptr [ %.pre746.pre, %.loopexit433.loopexit.7 ], [ %529, %537 ]
  %545 = getelementptr inbounds i8, ptr %128, i64 104
  store ptr %536, ptr %545, align 8, !tbaa !14
  br label %546

546:                                              ; preds = %.loopexit433.7, %528
  %547 = phi ptr [ %529, %528 ], [ %.pre746, %.loopexit433.7 ]
  %.sroa.31.0 = phi ptr [ null, %528 ], [ %536, %.loopexit433.7 ]
  %548 = getelementptr inbounds i8, ptr %547, i64 1264
  %549 = load i32, ptr %548, align 8, !tbaa !36
  %.not378 = icmp eq i32 %549, 0
  br i1 %.not378, label %._crit_edge544, label %550

550:                                              ; preds = %546
  %551 = getelementptr inbounds i8, ptr %547, i64 1272
  %552 = load ptr, ptr %551, align 8, !tbaa !37
  %.not379 = icmp eq ptr %552, null
  br i1 %.not379, label %.lr.ph543, label %553

553:                                              ; preds = %550
  %554 = getelementptr inbounds i8, ptr %128, i64 1264
  store i32 %549, ptr %554, align 8, !tbaa !36
  %555 = zext i32 %549 to i64
  %556 = shl nuw nsw i64 %555, 3
  %557 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %556) #14
          to label %558 unwind label %180

558:                                              ; preds = %553
  %559 = getelementptr inbounds i8, ptr %128, i64 1272
  store ptr %557, ptr %559, align 8, !tbaa !37
  %.pre747 = load i32, ptr %548, align 8, !tbaa !36
  %.not612 = icmp eq i32 %.pre747, 0
  br i1 %.not612, label %._crit_edge544, label %.lr.ph543

.lr.ph543:                                        ; preds = %550, %558
  %560 = getelementptr inbounds i8, ptr %128, i64 1272
  br label %564

._crit_edge544:                                   ; preds = %.loopexit.7, %546, %558
  %.lcssa = phi ptr [ %547, %558 ], [ %547, %546 ], [ %901, %.loopexit.7 ]
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %12) #11
  %561 = getelementptr inbounds i8, ptr %.lcssa, i64 216
  %562 = load i32, ptr %561, align 8, !tbaa !38
  %563 = zext i32 %562 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %13) #11
  call void @_ZNSaISt6vectorI14aiVertexWeightSaIS0_EEEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #11
  invoke void @_ZNSt6vectorIS_I14aiVertexWeightSaIS0_EESaIS2_EEC2EmRKS3_(ptr noundef nonnull align 8 dereferenceable(24) %12, i64 noundef %563, ptr noundef nonnull align 1 dereferenceable(1) %13)
          to label %906 unwind label %915

564:                                              ; preds = %.lr.ph543, %.loopexit.7
  %indvars.iv = phi i64 [ 0, %.lr.ph543 ], [ %indvars.iv.next, %.loopexit.7 ]
  %565 = phi ptr [ %547, %.lr.ph543 ], [ %901, %.loopexit.7 ]
  %566 = getelementptr inbounds i8, ptr %565, i64 1272
  %567 = load ptr, ptr %566, align 8, !tbaa !37
  %568 = getelementptr inbounds ptr, ptr %567, i64 %indvars.iv
  %569 = load ptr, ptr %568, align 8, !tbaa !14
  %570 = invoke noalias noundef nonnull dereferenceable(1200) ptr @_Znwm(i64 noundef 1200) #14
          to label %571 unwind label %590

571:                                              ; preds = %564
  call void @_ZN10aiAnimMeshC2Ev(ptr noundef nonnull align 8 dereferenceable(1200) %570) #11
  %572 = load ptr, ptr %560, align 8, !tbaa !37
  %573 = getelementptr inbounds ptr, ptr %572, i64 %indvars.iv
  store ptr %570, ptr %573, align 8, !tbaa !14
  %574 = load i32, ptr %159, align 4, !tbaa !31
  %575 = getelementptr inbounds i8, ptr %570, i64 1192
  store i32 %574, ptr %575, align 8, !tbaa !39
  %576 = getelementptr inbounds i8, ptr %569, i64 1032
  %577 = load ptr, ptr %576, align 8, !tbaa !41
  %.not399 = icmp eq ptr %577, null
  br i1 %.not399, label %.loopexit432, label %578

578:                                              ; preds = %571
  %579 = zext i32 %574 to i64
  %580 = mul nuw nsw i64 %579, 12
  %581 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %580) #14
          to label %582 unwind label %590

582:                                              ; preds = %578
  %583 = icmp eq i32 %574, 0
  br i1 %583, label %.loopexit432, label %584

584:                                              ; preds = %582
  %585 = getelementptr inbounds %class.aiVector3t, ptr %581, i64 %579
  br label %586

586:                                              ; preds = %586, %584
  %587 = phi ptr [ %581, %584 ], [ %588, %586 ]
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %587) #11
  %588 = getelementptr inbounds i8, ptr %587, i64 12
  %589 = icmp eq ptr %588, %585
  br i1 %589, label %.loopexit432, label %586

590:                                              ; preds = %627, %611, %595, %578, %564
  %591 = landingpad { ptr, i32 }
          cleanup
  br label %1375

.loopexit432:                                     ; preds = %586, %571, %582
  %.sink = phi ptr [ %581, %582 ], [ null, %571 ], [ %581, %586 ]
  %592 = getelementptr inbounds i8, ptr %570, i64 1032
  store ptr %.sink, ptr %592, align 8, !tbaa !41
  %593 = getelementptr inbounds i8, ptr %569, i64 1040
  %594 = load ptr, ptr %593, align 8, !tbaa !42
  %.not400 = icmp eq ptr %594, null
  br i1 %.not400, label %.loopexit431, label %595

595:                                              ; preds = %.loopexit432
  %596 = load i32, ptr %159, align 4, !tbaa !31
  %597 = zext i32 %596 to i64
  %598 = mul nuw nsw i64 %597, 12
  %599 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %598) #14
          to label %600 unwind label %590

600:                                              ; preds = %595
  %601 = icmp eq i32 %596, 0
  br i1 %601, label %.loopexit431, label %602

602:                                              ; preds = %600
  %603 = getelementptr inbounds %class.aiVector3t, ptr %599, i64 %597
  br label %604

604:                                              ; preds = %604, %602
  %605 = phi ptr [ %599, %602 ], [ %606, %604 ]
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %605) #11
  %606 = getelementptr inbounds i8, ptr %605, i64 12
  %607 = icmp eq ptr %606, %603
  br i1 %607, label %.loopexit431, label %604

.loopexit431:                                     ; preds = %604, %.loopexit432, %600
  %.sink864 = phi ptr [ %599, %600 ], [ null, %.loopexit432 ], [ %599, %604 ]
  %608 = getelementptr inbounds i8, ptr %570, i64 1040
  store ptr %.sink864, ptr %608, align 8, !tbaa !42
  %609 = getelementptr inbounds i8, ptr %569, i64 1048
  %610 = load ptr, ptr %609, align 8, !tbaa !43
  %.not401 = icmp eq ptr %610, null
  br i1 %.not401, label %.loopexit430, label %611

611:                                              ; preds = %.loopexit431
  %612 = load i32, ptr %159, align 4, !tbaa !31
  %613 = zext i32 %612 to i64
  %614 = mul nuw nsw i64 %613, 12
  %615 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %614) #14
          to label %616 unwind label %590

616:                                              ; preds = %611
  %617 = icmp eq i32 %612, 0
  br i1 %617, label %.loopexit430, label %618

618:                                              ; preds = %616
  %619 = getelementptr inbounds %class.aiVector3t, ptr %615, i64 %613
  br label %620

620:                                              ; preds = %620, %618
  %621 = phi ptr [ %615, %618 ], [ %622, %620 ]
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %621) #11
  %622 = getelementptr inbounds i8, ptr %621, i64 12
  %623 = icmp eq ptr %622, %619
  br i1 %623, label %.loopexit430, label %620

.loopexit430:                                     ; preds = %620, %.loopexit431, %616
  %.sink866 = phi ptr [ %615, %616 ], [ null, %.loopexit431 ], [ %615, %620 ]
  %624 = getelementptr inbounds i8, ptr %570, i64 1048
  store ptr %.sink866, ptr %624, align 8, !tbaa !43
  %625 = getelementptr inbounds i8, ptr %569, i64 1056
  %626 = load ptr, ptr %625, align 8, !tbaa !44
  %.not402 = icmp eq ptr %626, null
  br i1 %.not402, label %.loopexit429, label %627

627:                                              ; preds = %.loopexit430
  %628 = load i32, ptr %159, align 4, !tbaa !31
  %629 = zext i32 %628 to i64
  %630 = mul nuw nsw i64 %629, 12
  %631 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %630) #14
          to label %632 unwind label %590

632:                                              ; preds = %627
  %633 = icmp eq i32 %628, 0
  br i1 %633, label %.loopexit429, label %634

634:                                              ; preds = %632
  %635 = getelementptr inbounds %class.aiVector3t, ptr %631, i64 %629
  br label %636

636:                                              ; preds = %636, %634
  %637 = phi ptr [ %631, %634 ], [ %638, %636 ]
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %637) #11
  %638 = getelementptr inbounds i8, ptr %637, i64 12
  %639 = icmp eq ptr %638, %635
  br i1 %639, label %.loopexit429, label %636

.loopexit429:                                     ; preds = %636, %.loopexit430, %632
  %.sink868 = phi ptr [ %631, %632 ], [ null, %.loopexit430 ], [ %631, %636 ]
  %640 = getelementptr inbounds i8, ptr %570, i64 1056
  store ptr %.sink868, ptr %640, align 8, !tbaa !44
  %641 = getelementptr inbounds i8, ptr %569, i64 1064
  %642 = getelementptr inbounds i8, ptr %570, i64 1064
  %643 = load ptr, ptr %641, align 8, !tbaa !14
  %.not404 = icmp eq ptr %643, null
  br i1 %.not404, label %.loopexit426, label %644

644:                                              ; preds = %.loopexit429
  %645 = load i32, ptr %159, align 4, !tbaa !31
  %646 = zext i32 %645 to i64
  %647 = shl nuw nsw i64 %646, 4
  %648 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %647) #14
          to label %649 unwind label %657

649:                                              ; preds = %644
  %650 = icmp eq i32 %645, 0
  br i1 %650, label %.loopexit426, label %651

651:                                              ; preds = %649
  %652 = getelementptr inbounds %class.aiColor4t, ptr %648, i64 %646
  br label %653

653:                                              ; preds = %653, %651
  %654 = phi ptr [ %648, %651 ], [ %655, %653 ]
  call void @_ZN9aiColor4tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(16) %654) #11
  %655 = getelementptr inbounds i8, ptr %654, i64 16
  %656 = icmp eq ptr %655, %652
  br i1 %656, label %.loopexit426, label %653

657:                                              ; preds = %757, %741, %725, %709, %693, %677, %661, %644
  %658 = landingpad { ptr, i32 }
          cleanup
  br label %1375

.loopexit426:                                     ; preds = %653, %.loopexit429, %649
  %storemerge = phi ptr [ %648, %649 ], [ null, %.loopexit429 ], [ %648, %653 ]
  store ptr %storemerge, ptr %642, align 8, !tbaa !14
  %659 = getelementptr inbounds i8, ptr %569, i64 1072
  %660 = load ptr, ptr %659, align 8, !tbaa !14
  %.not404.1 = icmp eq ptr %660, null
  br i1 %.not404.1, label %.loopexit426.1, label %661

661:                                              ; preds = %.loopexit426
  %662 = load i32, ptr %159, align 4, !tbaa !31
  %663 = zext i32 %662 to i64
  %664 = shl nuw nsw i64 %663, 4
  %665 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %664) #14
          to label %666 unwind label %657

666:                                              ; preds = %661
  %667 = icmp eq i32 %662, 0
  br i1 %667, label %.loopexit426.1, label %668

668:                                              ; preds = %666
  %669 = getelementptr inbounds %class.aiColor4t, ptr %665, i64 %663
  br label %670

670:                                              ; preds = %670, %668
  %671 = phi ptr [ %665, %668 ], [ %672, %670 ]
  call void @_ZN9aiColor4tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(16) %671) #11
  %672 = getelementptr inbounds i8, ptr %671, i64 16
  %673 = icmp eq ptr %672, %669
  br i1 %673, label %.loopexit426.1, label %670

.loopexit426.1:                                   ; preds = %670, %.loopexit426, %666
  %.sink870 = phi ptr [ %665, %666 ], [ null, %.loopexit426 ], [ %665, %670 ]
  %674 = getelementptr inbounds i8, ptr %570, i64 1072
  store ptr %.sink870, ptr %674, align 8, !tbaa !14
  %675 = getelementptr inbounds i8, ptr %569, i64 1080
  %676 = load ptr, ptr %675, align 8, !tbaa !14
  %.not404.2 = icmp eq ptr %676, null
  br i1 %.not404.2, label %.loopexit426.2, label %677

677:                                              ; preds = %.loopexit426.1
  %678 = load i32, ptr %159, align 4, !tbaa !31
  %679 = zext i32 %678 to i64
  %680 = shl nuw nsw i64 %679, 4
  %681 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %680) #14
          to label %682 unwind label %657

682:                                              ; preds = %677
  %683 = icmp eq i32 %678, 0
  br i1 %683, label %.loopexit426.2, label %684

684:                                              ; preds = %682
  %685 = getelementptr inbounds %class.aiColor4t, ptr %681, i64 %679
  br label %686

686:                                              ; preds = %686, %684
  %687 = phi ptr [ %681, %684 ], [ %688, %686 ]
  call void @_ZN9aiColor4tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(16) %687) #11
  %688 = getelementptr inbounds i8, ptr %687, i64 16
  %689 = icmp eq ptr %688, %685
  br i1 %689, label %.loopexit426.2, label %686

.loopexit426.2:                                   ; preds = %686, %.loopexit426.1, %682
  %.sink872 = phi ptr [ %681, %682 ], [ null, %.loopexit426.1 ], [ %681, %686 ]
  %690 = getelementptr inbounds i8, ptr %570, i64 1080
  store ptr %.sink872, ptr %690, align 8, !tbaa !14
  %691 = getelementptr inbounds i8, ptr %569, i64 1088
  %692 = load ptr, ptr %691, align 8, !tbaa !14
  %.not404.3 = icmp eq ptr %692, null
  br i1 %.not404.3, label %.loopexit426.3, label %693

693:                                              ; preds = %.loopexit426.2
  %694 = load i32, ptr %159, align 4, !tbaa !31
  %695 = zext i32 %694 to i64
  %696 = shl nuw nsw i64 %695, 4
  %697 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %696) #14
          to label %698 unwind label %657

698:                                              ; preds = %693
  %699 = icmp eq i32 %694, 0
  br i1 %699, label %.loopexit426.3, label %700

700:                                              ; preds = %698
  %701 = getelementptr inbounds %class.aiColor4t, ptr %697, i64 %695
  br label %702

702:                                              ; preds = %702, %700
  %703 = phi ptr [ %697, %700 ], [ %704, %702 ]
  call void @_ZN9aiColor4tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(16) %703) #11
  %704 = getelementptr inbounds i8, ptr %703, i64 16
  %705 = icmp eq ptr %704, %701
  br i1 %705, label %.loopexit426.3, label %702

.loopexit426.3:                                   ; preds = %702, %.loopexit426.2, %698
  %.sink874 = phi ptr [ %697, %698 ], [ null, %.loopexit426.2 ], [ %697, %702 ]
  %706 = getelementptr inbounds i8, ptr %570, i64 1088
  store ptr %.sink874, ptr %706, align 8, !tbaa !14
  %707 = getelementptr inbounds i8, ptr %569, i64 1096
  %708 = load ptr, ptr %707, align 8, !tbaa !14
  %.not404.4 = icmp eq ptr %708, null
  br i1 %.not404.4, label %.loopexit426.4, label %709

709:                                              ; preds = %.loopexit426.3
  %710 = load i32, ptr %159, align 4, !tbaa !31
  %711 = zext i32 %710 to i64
  %712 = shl nuw nsw i64 %711, 4
  %713 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %712) #14
          to label %714 unwind label %657

714:                                              ; preds = %709
  %715 = icmp eq i32 %710, 0
  br i1 %715, label %.loopexit426.4, label %716

716:                                              ; preds = %714
  %717 = getelementptr inbounds %class.aiColor4t, ptr %713, i64 %711
  br label %718

718:                                              ; preds = %718, %716
  %719 = phi ptr [ %713, %716 ], [ %720, %718 ]
  call void @_ZN9aiColor4tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(16) %719) #11
  %720 = getelementptr inbounds i8, ptr %719, i64 16
  %721 = icmp eq ptr %720, %717
  br i1 %721, label %.loopexit426.4, label %718

.loopexit426.4:                                   ; preds = %718, %.loopexit426.3, %714
  %.sink876 = phi ptr [ %713, %714 ], [ null, %.loopexit426.3 ], [ %713, %718 ]
  %722 = getelementptr inbounds i8, ptr %570, i64 1096
  store ptr %.sink876, ptr %722, align 8, !tbaa !14
  %723 = getelementptr inbounds i8, ptr %569, i64 1104
  %724 = load ptr, ptr %723, align 8, !tbaa !14
  %.not404.5 = icmp eq ptr %724, null
  br i1 %.not404.5, label %.loopexit426.5, label %725

725:                                              ; preds = %.loopexit426.4
  %726 = load i32, ptr %159, align 4, !tbaa !31
  %727 = zext i32 %726 to i64
  %728 = shl nuw nsw i64 %727, 4
  %729 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %728) #14
          to label %730 unwind label %657

730:                                              ; preds = %725
  %731 = icmp eq i32 %726, 0
  br i1 %731, label %.loopexit426.5, label %732

732:                                              ; preds = %730
  %733 = getelementptr inbounds %class.aiColor4t, ptr %729, i64 %727
  br label %734

734:                                              ; preds = %734, %732
  %735 = phi ptr [ %729, %732 ], [ %736, %734 ]
  call void @_ZN9aiColor4tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(16) %735) #11
  %736 = getelementptr inbounds i8, ptr %735, i64 16
  %737 = icmp eq ptr %736, %733
  br i1 %737, label %.loopexit426.5, label %734

.loopexit426.5:                                   ; preds = %734, %.loopexit426.4, %730
  %.sink878 = phi ptr [ %729, %730 ], [ null, %.loopexit426.4 ], [ %729, %734 ]
  %738 = getelementptr inbounds i8, ptr %570, i64 1104
  store ptr %.sink878, ptr %738, align 8, !tbaa !14
  %739 = getelementptr inbounds i8, ptr %569, i64 1112
  %740 = load ptr, ptr %739, align 8, !tbaa !14
  %.not404.6 = icmp eq ptr %740, null
  br i1 %.not404.6, label %.loopexit426.6, label %741

741:                                              ; preds = %.loopexit426.5
  %742 = load i32, ptr %159, align 4, !tbaa !31
  %743 = zext i32 %742 to i64
  %744 = shl nuw nsw i64 %743, 4
  %745 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %744) #14
          to label %746 unwind label %657

746:                                              ; preds = %741
  %747 = icmp eq i32 %742, 0
  br i1 %747, label %.loopexit426.6, label %748

748:                                              ; preds = %746
  %749 = getelementptr inbounds %class.aiColor4t, ptr %745, i64 %743
  br label %750

750:                                              ; preds = %750, %748
  %751 = phi ptr [ %745, %748 ], [ %752, %750 ]
  call void @_ZN9aiColor4tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(16) %751) #11
  %752 = getelementptr inbounds i8, ptr %751, i64 16
  %753 = icmp eq ptr %752, %749
  br i1 %753, label %.loopexit426.6, label %750

.loopexit426.6:                                   ; preds = %750, %.loopexit426.5, %746
  %.sink880 = phi ptr [ %745, %746 ], [ null, %.loopexit426.5 ], [ %745, %750 ]
  %754 = getelementptr inbounds i8, ptr %570, i64 1112
  store ptr %.sink880, ptr %754, align 8, !tbaa !14
  %755 = getelementptr inbounds i8, ptr %569, i64 1120
  %756 = load ptr, ptr %755, align 8, !tbaa !14
  %.not404.7 = icmp eq ptr %756, null
  br i1 %.not404.7, label %.preheader428, label %757

757:                                              ; preds = %.loopexit426.6
  %758 = load i32, ptr %159, align 4, !tbaa !31
  %759 = zext i32 %758 to i64
  %760 = shl nuw nsw i64 %759, 4
  %761 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %760) #14
          to label %762 unwind label %657

762:                                              ; preds = %757
  %763 = icmp eq i32 %758, 0
  br i1 %763, label %.preheader428, label %764

764:                                              ; preds = %762
  %765 = getelementptr inbounds %class.aiColor4t, ptr %761, i64 %759
  br label %766

766:                                              ; preds = %766, %764
  %767 = phi ptr [ %761, %764 ], [ %768, %766 ]
  call void @_ZN9aiColor4tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(16) %767) #11
  %768 = getelementptr inbounds i8, ptr %767, i64 16
  %769 = icmp eq ptr %768, %765
  br i1 %769, label %.preheader428, label %766

.preheader428:                                    ; preds = %766, %.loopexit426.6, %762
  %.sink882 = phi ptr [ %761, %762 ], [ null, %.loopexit426.6 ], [ %761, %766 ]
  %770 = getelementptr inbounds i8, ptr %570, i64 1120
  store ptr %.sink882, ptr %770, align 8, !tbaa !14
  %771 = getelementptr inbounds i8, ptr %569, i64 1128
  %772 = getelementptr inbounds i8, ptr %570, i64 1128
  %773 = load ptr, ptr %771, align 8, !tbaa !14
  %.not403 = icmp eq ptr %773, null
  br i1 %.not403, label %.loopexit, label %774

774:                                              ; preds = %.preheader428
  %775 = load i32, ptr %159, align 4, !tbaa !31
  %776 = zext i32 %775 to i64
  %777 = mul nuw nsw i64 %776, 12
  %778 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %777) #14
          to label %779 unwind label %787

779:                                              ; preds = %774
  %780 = icmp eq i32 %775, 0
  br i1 %780, label %.loopexit, label %781

781:                                              ; preds = %779
  %782 = getelementptr inbounds %class.aiVector3t, ptr %778, i64 %776
  br label %783

783:                                              ; preds = %783, %781
  %784 = phi ptr [ %778, %781 ], [ %785, %783 ]
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %784) #11
  %785 = getelementptr inbounds i8, ptr %784, i64 12
  %786 = icmp eq ptr %785, %782
  br i1 %786, label %.loopexit, label %783

787:                                              ; preds = %887, %871, %855, %839, %823, %807, %791, %774
  %788 = landingpad { ptr, i32 }
          cleanup
  br label %1375

.loopexit:                                        ; preds = %783, %.preheader428, %779
  %storemerge774 = phi ptr [ %778, %779 ], [ null, %.preheader428 ], [ %778, %783 ]
  store ptr %storemerge774, ptr %772, align 8, !tbaa !14
  %789 = getelementptr inbounds i8, ptr %569, i64 1136
  %790 = load ptr, ptr %789, align 8, !tbaa !14
  %.not403.1 = icmp eq ptr %790, null
  br i1 %.not403.1, label %.loopexit.1, label %791

791:                                              ; preds = %.loopexit
  %792 = load i32, ptr %159, align 4, !tbaa !31
  %793 = zext i32 %792 to i64
  %794 = mul nuw nsw i64 %793, 12
  %795 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %794) #14
          to label %796 unwind label %787

796:                                              ; preds = %791
  %797 = icmp eq i32 %792, 0
  br i1 %797, label %.loopexit.1, label %798

798:                                              ; preds = %796
  %799 = getelementptr inbounds %class.aiVector3t, ptr %795, i64 %793
  br label %800

800:                                              ; preds = %800, %798
  %801 = phi ptr [ %795, %798 ], [ %802, %800 ]
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %801) #11
  %802 = getelementptr inbounds i8, ptr %801, i64 12
  %803 = icmp eq ptr %802, %799
  br i1 %803, label %.loopexit.1, label %800

.loopexit.1:                                      ; preds = %800, %.loopexit, %796
  %.sink884 = phi ptr [ %795, %796 ], [ null, %.loopexit ], [ %795, %800 ]
  %804 = getelementptr inbounds i8, ptr %570, i64 1136
  store ptr %.sink884, ptr %804, align 8, !tbaa !14
  %805 = getelementptr inbounds i8, ptr %569, i64 1144
  %806 = load ptr, ptr %805, align 8, !tbaa !14
  %.not403.2 = icmp eq ptr %806, null
  br i1 %.not403.2, label %.loopexit.2, label %807

807:                                              ; preds = %.loopexit.1
  %808 = load i32, ptr %159, align 4, !tbaa !31
  %809 = zext i32 %808 to i64
  %810 = mul nuw nsw i64 %809, 12
  %811 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %810) #14
          to label %812 unwind label %787

812:                                              ; preds = %807
  %813 = icmp eq i32 %808, 0
  br i1 %813, label %.loopexit.2, label %814

814:                                              ; preds = %812
  %815 = getelementptr inbounds %class.aiVector3t, ptr %811, i64 %809
  br label %816

816:                                              ; preds = %816, %814
  %817 = phi ptr [ %811, %814 ], [ %818, %816 ]
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %817) #11
  %818 = getelementptr inbounds i8, ptr %817, i64 12
  %819 = icmp eq ptr %818, %815
  br i1 %819, label %.loopexit.2, label %816

.loopexit.2:                                      ; preds = %816, %.loopexit.1, %812
  %.sink886 = phi ptr [ %811, %812 ], [ null, %.loopexit.1 ], [ %811, %816 ]
  %820 = getelementptr inbounds i8, ptr %570, i64 1144
  store ptr %.sink886, ptr %820, align 8, !tbaa !14
  %821 = getelementptr inbounds i8, ptr %569, i64 1152
  %822 = load ptr, ptr %821, align 8, !tbaa !14
  %.not403.3 = icmp eq ptr %822, null
  br i1 %.not403.3, label %.loopexit.3, label %823

823:                                              ; preds = %.loopexit.2
  %824 = load i32, ptr %159, align 4, !tbaa !31
  %825 = zext i32 %824 to i64
  %826 = mul nuw nsw i64 %825, 12
  %827 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %826) #14
          to label %828 unwind label %787

828:                                              ; preds = %823
  %829 = icmp eq i32 %824, 0
  br i1 %829, label %.loopexit.3, label %830

830:                                              ; preds = %828
  %831 = getelementptr inbounds %class.aiVector3t, ptr %827, i64 %825
  br label %832

832:                                              ; preds = %832, %830
  %833 = phi ptr [ %827, %830 ], [ %834, %832 ]
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %833) #11
  %834 = getelementptr inbounds i8, ptr %833, i64 12
  %835 = icmp eq ptr %834, %831
  br i1 %835, label %.loopexit.3, label %832

.loopexit.3:                                      ; preds = %832, %.loopexit.2, %828
  %.sink888 = phi ptr [ %827, %828 ], [ null, %.loopexit.2 ], [ %827, %832 ]
  %836 = getelementptr inbounds i8, ptr %570, i64 1152
  store ptr %.sink888, ptr %836, align 8, !tbaa !14
  %837 = getelementptr inbounds i8, ptr %569, i64 1160
  %838 = load ptr, ptr %837, align 8, !tbaa !14
  %.not403.4 = icmp eq ptr %838, null
  br i1 %.not403.4, label %.loopexit.4, label %839

839:                                              ; preds = %.loopexit.3
  %840 = load i32, ptr %159, align 4, !tbaa !31
  %841 = zext i32 %840 to i64
  %842 = mul nuw nsw i64 %841, 12
  %843 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %842) #14
          to label %844 unwind label %787

844:                                              ; preds = %839
  %845 = icmp eq i32 %840, 0
  br i1 %845, label %.loopexit.4, label %846

846:                                              ; preds = %844
  %847 = getelementptr inbounds %class.aiVector3t, ptr %843, i64 %841
  br label %848

848:                                              ; preds = %848, %846
  %849 = phi ptr [ %843, %846 ], [ %850, %848 ]
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %849) #11
  %850 = getelementptr inbounds i8, ptr %849, i64 12
  %851 = icmp eq ptr %850, %847
  br i1 %851, label %.loopexit.4, label %848

.loopexit.4:                                      ; preds = %848, %.loopexit.3, %844
  %.sink890 = phi ptr [ %843, %844 ], [ null, %.loopexit.3 ], [ %843, %848 ]
  %852 = getelementptr inbounds i8, ptr %570, i64 1160
  store ptr %.sink890, ptr %852, align 8, !tbaa !14
  %853 = getelementptr inbounds i8, ptr %569, i64 1168
  %854 = load ptr, ptr %853, align 8, !tbaa !14
  %.not403.5 = icmp eq ptr %854, null
  br i1 %.not403.5, label %.loopexit.5, label %855

855:                                              ; preds = %.loopexit.4
  %856 = load i32, ptr %159, align 4, !tbaa !31
  %857 = zext i32 %856 to i64
  %858 = mul nuw nsw i64 %857, 12
  %859 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %858) #14
          to label %860 unwind label %787

860:                                              ; preds = %855
  %861 = icmp eq i32 %856, 0
  br i1 %861, label %.loopexit.5, label %862

862:                                              ; preds = %860
  %863 = getelementptr inbounds %class.aiVector3t, ptr %859, i64 %857
  br label %864

864:                                              ; preds = %864, %862
  %865 = phi ptr [ %859, %862 ], [ %866, %864 ]
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %865) #11
  %866 = getelementptr inbounds i8, ptr %865, i64 12
  %867 = icmp eq ptr %866, %863
  br i1 %867, label %.loopexit.5, label %864

.loopexit.5:                                      ; preds = %864, %.loopexit.4, %860
  %.sink892 = phi ptr [ %859, %860 ], [ null, %.loopexit.4 ], [ %859, %864 ]
  %868 = getelementptr inbounds i8, ptr %570, i64 1168
  store ptr %.sink892, ptr %868, align 8, !tbaa !14
  %869 = getelementptr inbounds i8, ptr %569, i64 1176
  %870 = load ptr, ptr %869, align 8, !tbaa !14
  %.not403.6 = icmp eq ptr %870, null
  br i1 %.not403.6, label %.loopexit.6, label %871

871:                                              ; preds = %.loopexit.5
  %872 = load i32, ptr %159, align 4, !tbaa !31
  %873 = zext i32 %872 to i64
  %874 = mul nuw nsw i64 %873, 12
  %875 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %874) #14
          to label %876 unwind label %787

876:                                              ; preds = %871
  %877 = icmp eq i32 %872, 0
  br i1 %877, label %.loopexit.6, label %878

878:                                              ; preds = %876
  %879 = getelementptr inbounds %class.aiVector3t, ptr %875, i64 %873
  br label %880

880:                                              ; preds = %880, %878
  %881 = phi ptr [ %875, %878 ], [ %882, %880 ]
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %881) #11
  %882 = getelementptr inbounds i8, ptr %881, i64 12
  %883 = icmp eq ptr %882, %879
  br i1 %883, label %.loopexit.6, label %880

.loopexit.6:                                      ; preds = %880, %.loopexit.5, %876
  %.sink894 = phi ptr [ %875, %876 ], [ null, %.loopexit.5 ], [ %875, %880 ]
  %884 = getelementptr inbounds i8, ptr %570, i64 1176
  store ptr %.sink894, ptr %884, align 8, !tbaa !14
  %885 = getelementptr inbounds i8, ptr %569, i64 1184
  %886 = load ptr, ptr %885, align 8, !tbaa !14
  %.not403.7 = icmp eq ptr %886, null
  br i1 %.not403.7, label %.loopexit.7, label %887

887:                                              ; preds = %.loopexit.6
  %888 = load i32, ptr %159, align 4, !tbaa !31
  %889 = zext i32 %888 to i64
  %890 = mul nuw nsw i64 %889, 12
  %891 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %890) #14
          to label %892 unwind label %787

892:                                              ; preds = %887
  %893 = icmp eq i32 %888, 0
  br i1 %893, label %.loopexit.7, label %894

894:                                              ; preds = %892
  %895 = getelementptr inbounds %class.aiVector3t, ptr %891, i64 %889
  br label %896

896:                                              ; preds = %896, %894
  %897 = phi ptr [ %891, %894 ], [ %898, %896 ]
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %897) #11
  %898 = getelementptr inbounds i8, ptr %897, i64 12
  %899 = icmp eq ptr %898, %895
  br i1 %899, label %.loopexit.7, label %896

.loopexit.7:                                      ; preds = %896, %.loopexit.6, %892
  %.sink896 = phi ptr [ %891, %892 ], [ null, %.loopexit.6 ], [ %891, %896 ]
  %900 = getelementptr inbounds i8, ptr %570, i64 1184
  store ptr %.sink896, ptr %900, align 8, !tbaa !14
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %901 = load ptr, ptr %8, align 8, !tbaa !14
  %902 = getelementptr inbounds i8, ptr %901, i64 1264
  %903 = load i32, ptr %902, align 8, !tbaa !36
  %904 = zext i32 %903 to i64
  %905 = icmp ult i64 %indvars.iv.next, %904
  br i1 %905, label %564, label %._crit_edge544, !llvm.loop !45

906:                                              ; preds = %._crit_edge544
  call void @_ZNSt15__new_allocatorISt6vectorI14aiVertexWeightSaIS1_EEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %13) #11
  %907 = load ptr, ptr %8, align 8, !tbaa !14
  %908 = getelementptr inbounds i8, ptr %907, i64 216
  %909 = load i32, ptr %908, align 8, !tbaa !38
  %.not613 = icmp eq i32 %909, 0
  br i1 %.not613, label %._crit_edge549, label %.lr.ph548

._crit_edge549:                                   ; preds = %927, %906
  %910 = phi ptr [ %907, %906 ], [ %928, %927 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %14) #11
  store i32 0, ptr %14, align 4, !tbaa !12
  %911 = getelementptr inbounds i8, ptr %910, i64 8
  %912 = load i32, ptr %911, align 8, !tbaa !25
  %.not614 = icmp eq i32 %912, 0
  br i1 %.not614, label %._crit_edge585, label %.lr.ph584

.lr.ph584:                                        ; preds = %._crit_edge549
  %913 = add nuw nsw i64 %indvars.iv717, 1
  %914 = getelementptr inbounds i8, ptr %128, i64 1272
  br label %941

915:                                              ; preds = %._crit_edge544
  %916 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorISt6vectorI14aiVertexWeightSaIS1_EEED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %13) #11
  br label %1353

.lr.ph548:                                        ; preds = %906, %927
  %indvars.iv687 = phi i64 [ %indvars.iv.next688, %927 ], [ 0, %906 ]
  %917 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_I14aiVertexWeightSaIS0_EESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %12, i64 noundef %indvars.iv687) #11
  %918 = load ptr, ptr %8, align 8, !tbaa !14
  %919 = getelementptr inbounds i8, ptr %918, i64 224
  %920 = load ptr, ptr %919, align 8, !tbaa !46
  %921 = getelementptr inbounds ptr, ptr %920, i64 %indvars.iv687
  %922 = load ptr, ptr %921, align 8, !tbaa !14
  %923 = getelementptr inbounds i8, ptr %922, i64 1028
  %924 = load i32, ptr %923, align 4, !tbaa !47
  %925 = udiv i32 %924, %108
  %926 = zext i32 %925 to i64
  invoke void @_ZNSt6vectorI14aiVertexWeightSaIS0_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %917, i64 noundef %926)
          to label %927 unwind label %933

927:                                              ; preds = %.lr.ph548
  %indvars.iv.next688 = add nuw nsw i64 %indvars.iv687, 1
  %928 = load ptr, ptr %8, align 8, !tbaa !14
  %929 = getelementptr inbounds i8, ptr %928, i64 216
  %930 = load i32, ptr %929, align 8, !tbaa !38
  %931 = zext i32 %930 to i64
  %932 = icmp ult i64 %indvars.iv.next688, %931
  br i1 %932, label %.lr.ph548, label %._crit_edge549, !llvm.loop !50

933:                                              ; preds = %.lr.ph548
  %934 = landingpad { ptr, i32 }
          cleanup
  br label %1352

._crit_edge585:                                   ; preds = %1268, %._crit_edge549
  %935 = phi ptr [ %910, %._crit_edge549 ], [ %1269, %1268 ]
  %.0322.lcssa = phi ptr [ %143, %._crit_edge549 ], [ %.1323, %1268 ]
  %936 = load ptr, ptr %150, align 8, !tbaa !24
  %937 = load i32, ptr %137, align 8, !tbaa !25
  %938 = zext i32 %937 to i64
  %939 = getelementptr inbounds %struct.aiFace, ptr %936, i64 %938
  %940 = icmp eq ptr %.0322.lcssa, %939
  br i1 %940, label %1275, label %1274

941:                                              ; preds = %.lr.ph584, %1268
  %942 = phi ptr [ %910, %.lr.ph584 ], [ %1269, %1268 ]
  %.sroa.31727.1 = phi ptr [ %.sroa.31727.0, %.lr.ph584 ], [ %.sroa.31727.5, %1268 ]
  %.sroa.27726.1 = phi ptr [ %.sroa.27726.0, %.lr.ph584 ], [ %.sroa.27726.5, %1268 ]
  %.sroa.23725.1 = phi ptr [ %.sroa.23725.0, %.lr.ph584 ], [ %.sroa.23725.5, %1268 ]
  %.sroa.19724.1 = phi ptr [ %.sroa.19724.0, %.lr.ph584 ], [ %.sroa.19724.5, %1268 ]
  %.sroa.15723.1 = phi ptr [ %.sroa.15723.0, %.lr.ph584 ], [ %.sroa.15723.5, %1268 ]
  %.sroa.11722.1 = phi ptr [ %.sroa.11722.0, %.lr.ph584 ], [ %.sroa.11722.5, %1268 ]
  %.sroa.7721.1 = phi ptr [ %.sroa.7721.0, %.lr.ph584 ], [ %.sroa.7721.5, %1268 ]
  %.sroa.0720.1 = phi ptr [ %.sroa.0720.0, %.lr.ph584 ], [ %.sroa.0720.5, %1268 ]
  %.sroa.31.1 = phi ptr [ %.sroa.31.0, %.lr.ph584 ], [ %.sroa.31.5, %1268 ]
  %.sroa.27.1 = phi ptr [ %.sroa.27.0, %.lr.ph584 ], [ %.sroa.27.5, %1268 ]
  %.sroa.23.1 = phi ptr [ %.sroa.23.0, %.lr.ph584 ], [ %.sroa.23.5, %1268 ]
  %.sroa.19.1 = phi ptr [ %.sroa.19.0, %.lr.ph584 ], [ %.sroa.19.5, %1268 ]
  %.sroa.15.1 = phi ptr [ %.sroa.15.0, %.lr.ph584 ], [ %.sroa.15.5, %1268 ]
  %.sroa.11.1 = phi ptr [ %.sroa.11.0, %.lr.ph584 ], [ %.sroa.11.5, %1268 ]
  %.sroa.7.1728 = phi ptr [ %.sroa.7.0, %.lr.ph584 ], [ %.sroa.7.5, %1268 ]
  %.sroa.0.1 = phi ptr [ %.sroa.0.0, %.lr.ph584 ], [ %.sroa.0.5, %1268 ]
  %indvars.iv708 = phi i64 [ 0, %.lr.ph584 ], [ %indvars.iv.next709, %1268 ]
  %.0291581 = phi i32 [ 0, %.lr.ph584 ], [ %.3294, %1268 ]
  %.1303580 = phi ptr [ %.0302, %.lr.ph584 ], [ %.4306, %1268 ]
  %.1308579 = phi ptr [ %.0307, %.lr.ph584 ], [ %.4311, %1268 ]
  %.1313578 = phi ptr [ %.0312, %.lr.ph584 ], [ %.4316, %1268 ]
  %.1318577 = phi ptr [ %.0317, %.lr.ph584 ], [ %.4321, %1268 ]
  %.0322576 = phi ptr [ %143, %.lr.ph584 ], [ %.1323, %1268 ]
  %943 = getelementptr inbounds i8, ptr %942, i64 208
  %944 = load ptr, ptr %943, align 8, !tbaa !24
  %945 = getelementptr inbounds %struct.aiFace, ptr %944, i64 %indvars.iv708
  %946 = load i32, ptr %945, align 8, !tbaa !26
  br i1 %151, label %947, label %949

947:                                              ; preds = %941
  %948 = icmp ult i32 %946, 4
  br i1 %948, label %1268, label %.thread425

949:                                              ; preds = %941
  %950 = zext i32 %946 to i64
  %.not382 = icmp eq i64 %913, %950
  br i1 %.not382, label %.thread425, label %1268

.thread425:                                       ; preds = %947, %949
  store i32 %946, ptr %.0322576, align 8, !tbaa !26
  %951 = getelementptr inbounds i8, ptr %945, i64 8
  %952 = load ptr, ptr %951, align 8, !tbaa !51
  %953 = getelementptr inbounds i8, ptr %.0322576, i64 8
  store ptr %952, ptr %953, align 8, !tbaa !51
  %954 = load i32, ptr %945, align 8, !tbaa !26
  %.not615 = icmp eq i32 %954, 0
  br i1 %.not615, label %._crit_edge570, label %.lr.ph569

._crit_edge570:                                   ; preds = %._crit_edge560, %.thread425
  %.sroa.31727.2 = phi ptr [ %.sroa.31727.1, %.thread425 ], [ %.sroa.31727.4, %._crit_edge560 ]
  %.sroa.27726.2 = phi ptr [ %.sroa.27726.1, %.thread425 ], [ %.sroa.27726.4, %._crit_edge560 ]
  %.sroa.23725.2 = phi ptr [ %.sroa.23725.1, %.thread425 ], [ %.sroa.23725.4, %._crit_edge560 ]
  %.sroa.19724.2 = phi ptr [ %.sroa.19724.1, %.thread425 ], [ %.sroa.19724.4, %._crit_edge560 ]
  %.sroa.15723.2 = phi ptr [ %.sroa.15723.1, %.thread425 ], [ %.sroa.15723.4, %._crit_edge560 ]
  %.sroa.11722.2 = phi ptr [ %.sroa.11722.1, %.thread425 ], [ %.sroa.11722.4, %._crit_edge560 ]
  %.sroa.7721.2 = phi ptr [ %.sroa.7721.1, %.thread425 ], [ %.sroa.7721.4, %._crit_edge560 ]
  %.sroa.0720.2 = phi ptr [ %.sroa.0720.1, %.thread425 ], [ %.sroa.0720.4, %._crit_edge560 ]
  %.sroa.31.2 = phi ptr [ %.sroa.31.1, %.thread425 ], [ %.sroa.31.4, %._crit_edge560 ]
  %.sroa.27.2 = phi ptr [ %.sroa.27.1, %.thread425 ], [ %.sroa.27.4, %._crit_edge560 ]
  %.sroa.23.2 = phi ptr [ %.sroa.23.1, %.thread425 ], [ %.sroa.23.4, %._crit_edge560 ]
  %.sroa.19.2 = phi ptr [ %.sroa.19.1, %.thread425 ], [ %.sroa.19.4, %._crit_edge560 ]
  %.sroa.15.2 = phi ptr [ %.sroa.15.1, %.thread425 ], [ %.sroa.15.4, %._crit_edge560 ]
  %.sroa.11.2 = phi ptr [ %.sroa.11.1, %.thread425 ], [ %.sroa.11.4, %._crit_edge560 ]
  %.sroa.7.2 = phi ptr [ %.sroa.7.1728, %.thread425 ], [ %.sroa.7.4, %._crit_edge560 ]
  %.sroa.0.2 = phi ptr [ %.sroa.0.1, %.thread425 ], [ %.sroa.0.4, %._crit_edge560 ]
  %.2319.lcssa = phi ptr [ %.1318577, %.thread425 ], [ %.3320, %._crit_edge560 ]
  %.2314.lcssa = phi ptr [ %.1313578, %.thread425 ], [ %.3315, %._crit_edge560 ]
  %.2309.lcssa = phi ptr [ %.1308579, %.thread425 ], [ %.3310, %._crit_edge560 ]
  %.2304.lcssa = phi ptr [ %.1303580, %.thread425 ], [ %.3305, %._crit_edge560 ]
  %.1292.lcssa = phi i32 [ %.0291581, %.thread425 ], [ %spec.select423, %._crit_edge560 ]
  store ptr null, ptr %951, align 8, !tbaa !51
  %955 = getelementptr inbounds i8, ptr %.0322576, i64 16
  %.pre749 = load ptr, ptr %8, align 8, !tbaa !14
  br label %1268

.lr.ph569:                                        ; preds = %.thread425, %._crit_edge560
  %956 = phi ptr [ %1263, %._crit_edge560 ], [ %952, %.thread425 ]
  %.sroa.31727.3 = phi ptr [ %.sroa.31727.4, %._crit_edge560 ], [ %.sroa.31727.1, %.thread425 ]
  %.sroa.27726.3 = phi ptr [ %.sroa.27726.4, %._crit_edge560 ], [ %.sroa.27726.1, %.thread425 ]
  %.sroa.23725.3 = phi ptr [ %.sroa.23725.4, %._crit_edge560 ], [ %.sroa.23725.1, %.thread425 ]
  %.sroa.19724.3 = phi ptr [ %.sroa.19724.4, %._crit_edge560 ], [ %.sroa.19724.1, %.thread425 ]
  %.sroa.15723.3 = phi ptr [ %.sroa.15723.4, %._crit_edge560 ], [ %.sroa.15723.1, %.thread425 ]
  %.sroa.11722.3 = phi ptr [ %.sroa.11722.4, %._crit_edge560 ], [ %.sroa.11722.1, %.thread425 ]
  %.sroa.7721.3 = phi ptr [ %.sroa.7721.4, %._crit_edge560 ], [ %.sroa.7721.1, %.thread425 ]
  %.sroa.0720.3 = phi ptr [ %.sroa.0720.4, %._crit_edge560 ], [ %.sroa.0720.1, %.thread425 ]
  %.sroa.31.3 = phi ptr [ %.sroa.31.4, %._crit_edge560 ], [ %.sroa.31.1, %.thread425 ]
  %.sroa.27.3 = phi ptr [ %.sroa.27.4, %._crit_edge560 ], [ %.sroa.27.1, %.thread425 ]
  %.sroa.23.3 = phi ptr [ %.sroa.23.4, %._crit_edge560 ], [ %.sroa.23.1, %.thread425 ]
  %.sroa.19.3 = phi ptr [ %.sroa.19.4, %._crit_edge560 ], [ %.sroa.19.1, %.thread425 ]
  %.sroa.15.3 = phi ptr [ %.sroa.15.4, %._crit_edge560 ], [ %.sroa.15.1, %.thread425 ]
  %.sroa.11.3 = phi ptr [ %.sroa.11.4, %._crit_edge560 ], [ %.sroa.11.1, %.thread425 ]
  %.sroa.7.3 = phi ptr [ %.sroa.7.4, %._crit_edge560 ], [ %.sroa.7.1728, %.thread425 ]
  %.sroa.0.3 = phi ptr [ %.sroa.0.4, %._crit_edge560 ], [ %.sroa.0.1, %.thread425 ]
  %indvars.iv705 = phi i64 [ %indvars.iv.next706, %._crit_edge560 ], [ 0, %.thread425 ]
  %.1292567 = phi i32 [ %spec.select423, %._crit_edge560 ], [ %.0291581, %.thread425 ]
  %.2304566 = phi ptr [ %.3305, %._crit_edge560 ], [ %.1303580, %.thread425 ]
  %.2309565 = phi ptr [ %.3310, %._crit_edge560 ], [ %.1308579, %.thread425 ]
  %.2314564 = phi ptr [ %.3315, %._crit_edge560 ], [ %.1313578, %.thread425 ]
  %.2319563 = phi ptr [ %.3320, %._crit_edge560 ], [ %.1318577, %.thread425 ]
  %957 = getelementptr inbounds i32, ptr %956, i64 %indvars.iv705
  %958 = load i32, ptr %957, align 4, !tbaa !12
  br i1 %.not383, label %977, label %959

959:                                              ; preds = %.lr.ph569
  %960 = zext i32 %958 to i64
  %961 = getelementptr inbounds %"class.std::vector.15", ptr %107, i64 %960
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #11
  %962 = call ptr @_ZNSt6vectorISt4pairIjfESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %961) #11
  store ptr %962, ptr %16, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKSt4pairIjfESt6vectorIS2_SaIS2_EEEC2IPS2_vEERKNS0_IT_S7_EE(ptr noundef nonnull align 8 dereferenceable(8) %15, ptr noundef nonnull align 8 dereferenceable(8) %16) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #11
  %963 = call ptr @_ZNSt6vectorISt4pairIjfESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %961) #11
  store ptr %963, ptr %18, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKSt4pairIjfESt6vectorIS2_SaIS2_EEEC2IPS2_vEERKNS0_IT_S7_EE(ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef nonnull align 8 dereferenceable(8) %18) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #11
  %964 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt4pairIjfESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %15, ptr noundef nonnull align 8 dereferenceable(8) %17) #11
  br i1 %964, label %.lr.ph551, label %._crit_edge552

._crit_edge552:                                   ; preds = %972, %959
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #11
  br label %977

.lr.ph551:                                        ; preds = %959, %972
  %965 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKSt4pairIjfESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %15) #11
  %966 = load i32, ptr %965, align 4, !tbaa !52
  %967 = zext i32 %966 to i64
  %968 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_I14aiVertexWeightSaIS0_EESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %12, i64 noundef %967) #11
  %969 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKSt4pairIjfESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %15) #11
  %970 = getelementptr inbounds i8, ptr %969, i64 4
  %971 = invoke noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt6vectorI14aiVertexWeightSaIS0_EE12emplace_backIJRjRKfEEERS0_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %968, ptr noundef nonnull align 4 dereferenceable(4) %14, ptr noundef nonnull align 4 dereferenceable(4) %970)
          to label %972 unwind label %975

972:                                              ; preds = %.lr.ph551
  %973 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKSt4pairIjfESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %15) #11
  %974 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt4pairIjfESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %15, ptr noundef nonnull align 8 dereferenceable(8) %17) #11
  br i1 %974, label %.lr.ph551, label %._crit_edge552, !llvm.loop !54

975:                                              ; preds = %.lr.ph551
  %976 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #11
  br label %1351

977:                                              ; preds = %._crit_edge552, %.lr.ph569
  %.not384 = icmp eq ptr %.2319563, null
  %.pre748.pre.pre = load ptr, ptr %8, align 8
  br i1 %.not384, label %984, label %978

978:                                              ; preds = %977
  %979 = getelementptr inbounds i8, ptr %.pre748.pre.pre, i64 16
  %980 = load ptr, ptr %979, align 8, !tbaa !32
  %981 = zext i32 %958 to i64
  %982 = getelementptr inbounds %class.aiVector3t, ptr %980, i64 %981
  %983 = getelementptr inbounds i8, ptr %.2319563, i64 12
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %.2319563, ptr noundef nonnull align 4 dereferenceable(12) %982, i64 12, i1 false), !tbaa.struct !55
  br label %984

984:                                              ; preds = %978, %977
  %.3320 = phi ptr [ %983, %978 ], [ null, %977 ]
  %.not385 = icmp eq ptr %.2314564, null
  br i1 %.not385, label %991, label %985

985:                                              ; preds = %984
  %986 = getelementptr inbounds i8, ptr %.pre748.pre.pre, i64 24
  %987 = load ptr, ptr %986, align 8, !tbaa !33
  %988 = zext i32 %958 to i64
  %989 = getelementptr inbounds %class.aiVector3t, ptr %987, i64 %988
  %990 = getelementptr inbounds i8, ptr %.2314564, i64 12
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %.2314564, ptr noundef nonnull align 4 dereferenceable(12) %989, i64 12, i1 false), !tbaa.struct !55
  br label %991

991:                                              ; preds = %985, %984
  %.3315 = phi ptr [ %990, %985 ], [ null, %984 ]
  %.not386 = icmp eq ptr %.2309565, null
  br i1 %.not386, label %._crit_edge772, label %992

._crit_edge772:                                   ; preds = %991
  %.pre773 = zext i32 %958 to i64
  br label %1002

992:                                              ; preds = %991
  %993 = getelementptr inbounds i8, ptr %.pre748.pre.pre, i64 32
  %994 = load ptr, ptr %993, align 8, !tbaa !34
  %995 = zext i32 %958 to i64
  %996 = getelementptr inbounds %class.aiVector3t, ptr %994, i64 %995
  %997 = getelementptr inbounds i8, ptr %.2309565, i64 12
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %.2309565, ptr noundef nonnull align 4 dereferenceable(12) %996, i64 12, i1 false), !tbaa.struct !55
  %998 = getelementptr inbounds i8, ptr %.pre748.pre.pre, i64 40
  %999 = load ptr, ptr %998, align 8, !tbaa !35
  %1000 = getelementptr inbounds %class.aiVector3t, ptr %999, i64 %995
  %1001 = getelementptr inbounds i8, ptr %.2304566, i64 12
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %.2304566, ptr noundef nonnull align 4 dereferenceable(12) %1000, i64 12, i1 false), !tbaa.struct !55
  br label %1002

1002:                                             ; preds = %._crit_edge772, %992
  %.pre-phi = phi i64 [ %.pre773, %._crit_edge772 ], [ %995, %992 ]
  %.3310 = phi ptr [ null, %._crit_edge772 ], [ %997, %992 ]
  %.3305 = phi ptr [ %.2304566, %._crit_edge772 ], [ %1001, %992 ]
  %.not387 = icmp eq ptr %.sroa.0720.3, null
  br i1 %.not387, label %1043, label %1003

1003:                                             ; preds = %1002
  %1004 = getelementptr inbounds i8, ptr %.pre748.pre.pre, i64 112
  %1005 = load ptr, ptr %1004, align 8, !tbaa !14
  %1006 = getelementptr inbounds %class.aiVector3t, ptr %1005, i64 %.pre-phi
  %1007 = getelementptr inbounds i8, ptr %.sroa.0720.3, i64 12
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %.sroa.0720.3, ptr noundef nonnull align 4 dereferenceable(12) %1006, i64 12, i1 false), !tbaa.struct !55
  %.not387.1 = icmp eq ptr %.sroa.7721.3, null
  br i1 %.not387.1, label %1043, label %1008

1008:                                             ; preds = %1003
  %1009 = getelementptr inbounds i8, ptr %.pre748.pre.pre, i64 120
  %1010 = load ptr, ptr %1009, align 8, !tbaa !14
  %1011 = getelementptr inbounds %class.aiVector3t, ptr %1010, i64 %.pre-phi
  %1012 = getelementptr inbounds i8, ptr %.sroa.7721.3, i64 12
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %.sroa.7721.3, ptr noundef nonnull align 4 dereferenceable(12) %1011, i64 12, i1 false), !tbaa.struct !55
  %.not387.2 = icmp eq ptr %.sroa.11722.3, null
  br i1 %.not387.2, label %1043, label %1013

1013:                                             ; preds = %1008
  %1014 = getelementptr inbounds i8, ptr %.pre748.pre.pre, i64 128
  %1015 = load ptr, ptr %1014, align 8, !tbaa !14
  %1016 = getelementptr inbounds %class.aiVector3t, ptr %1015, i64 %.pre-phi
  %1017 = getelementptr inbounds i8, ptr %.sroa.11722.3, i64 12
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %.sroa.11722.3, ptr noundef nonnull align 4 dereferenceable(12) %1016, i64 12, i1 false), !tbaa.struct !55
  %.not387.3 = icmp eq ptr %.sroa.15723.3, null
  br i1 %.not387.3, label %1043, label %1018

1018:                                             ; preds = %1013
  %1019 = getelementptr inbounds i8, ptr %.pre748.pre.pre, i64 136
  %1020 = load ptr, ptr %1019, align 8, !tbaa !14
  %1021 = getelementptr inbounds %class.aiVector3t, ptr %1020, i64 %.pre-phi
  %1022 = getelementptr inbounds i8, ptr %.sroa.15723.3, i64 12
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %.sroa.15723.3, ptr noundef nonnull align 4 dereferenceable(12) %1021, i64 12, i1 false), !tbaa.struct !55
  %.not387.4 = icmp eq ptr %.sroa.19724.3, null
  br i1 %.not387.4, label %1043, label %1023

1023:                                             ; preds = %1018
  %1024 = getelementptr inbounds i8, ptr %.pre748.pre.pre, i64 144
  %1025 = load ptr, ptr %1024, align 8, !tbaa !14
  %1026 = getelementptr inbounds %class.aiVector3t, ptr %1025, i64 %.pre-phi
  %1027 = getelementptr inbounds i8, ptr %.sroa.19724.3, i64 12
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %.sroa.19724.3, ptr noundef nonnull align 4 dereferenceable(12) %1026, i64 12, i1 false), !tbaa.struct !55
  %.not387.5 = icmp eq ptr %.sroa.23725.3, null
  br i1 %.not387.5, label %1043, label %1028

1028:                                             ; preds = %1023
  %1029 = getelementptr inbounds i8, ptr %.pre748.pre.pre, i64 152
  %1030 = load ptr, ptr %1029, align 8, !tbaa !14
  %1031 = getelementptr inbounds %class.aiVector3t, ptr %1030, i64 %.pre-phi
  %1032 = getelementptr inbounds i8, ptr %.sroa.23725.3, i64 12
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %.sroa.23725.3, ptr noundef nonnull align 4 dereferenceable(12) %1031, i64 12, i1 false), !tbaa.struct !55
  %.not387.6 = icmp eq ptr %.sroa.27726.3, null
  br i1 %.not387.6, label %1043, label %1033

1033:                                             ; preds = %1028
  %1034 = getelementptr inbounds i8, ptr %.pre748.pre.pre, i64 160
  %1035 = load ptr, ptr %1034, align 8, !tbaa !14
  %1036 = getelementptr inbounds %class.aiVector3t, ptr %1035, i64 %.pre-phi
  %1037 = getelementptr inbounds i8, ptr %.sroa.27726.3, i64 12
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %.sroa.27726.3, ptr noundef nonnull align 4 dereferenceable(12) %1036, i64 12, i1 false), !tbaa.struct !55
  %.not387.7 = icmp eq ptr %.sroa.31727.3, null
  br i1 %.not387.7, label %1043, label %1038

1038:                                             ; preds = %1033
  %1039 = getelementptr inbounds i8, ptr %.pre748.pre.pre, i64 168
  %1040 = load ptr, ptr %1039, align 8, !tbaa !14
  %1041 = getelementptr inbounds %class.aiVector3t, ptr %1040, i64 %.pre-phi
  %1042 = getelementptr inbounds i8, ptr %.sroa.31727.3, i64 12
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %.sroa.31727.3, ptr noundef nonnull align 4 dereferenceable(12) %1041, i64 12, i1 false), !tbaa.struct !55
  br label %1043

1043:                                             ; preds = %1038, %1033, %1028, %1023, %1018, %1013, %1008, %1003, %1002
  %.sroa.31727.4 = phi ptr [ %.sroa.31727.3, %1002 ], [ %.sroa.31727.3, %1003 ], [ %.sroa.31727.3, %1008 ], [ %.sroa.31727.3, %1013 ], [ %.sroa.31727.3, %1018 ], [ %.sroa.31727.3, %1023 ], [ %.sroa.31727.3, %1028 ], [ null, %1033 ], [ %1042, %1038 ]
  %.sroa.27726.4 = phi ptr [ %.sroa.27726.3, %1002 ], [ %.sroa.27726.3, %1003 ], [ %.sroa.27726.3, %1008 ], [ %.sroa.27726.3, %1013 ], [ %.sroa.27726.3, %1018 ], [ %.sroa.27726.3, %1023 ], [ null, %1028 ], [ %1037, %1033 ], [ %1037, %1038 ]
  %.sroa.23725.4 = phi ptr [ %.sroa.23725.3, %1002 ], [ %.sroa.23725.3, %1003 ], [ %.sroa.23725.3, %1008 ], [ %.sroa.23725.3, %1013 ], [ %.sroa.23725.3, %1018 ], [ null, %1023 ], [ %1032, %1028 ], [ %1032, %1033 ], [ %1032, %1038 ]
  %.sroa.19724.4 = phi ptr [ %.sroa.19724.3, %1002 ], [ %.sroa.19724.3, %1003 ], [ %.sroa.19724.3, %1008 ], [ %.sroa.19724.3, %1013 ], [ null, %1018 ], [ %1027, %1023 ], [ %1027, %1028 ], [ %1027, %1033 ], [ %1027, %1038 ]
  %.sroa.15723.4 = phi ptr [ %.sroa.15723.3, %1002 ], [ %.sroa.15723.3, %1003 ], [ %.sroa.15723.3, %1008 ], [ null, %1013 ], [ %1022, %1018 ], [ %1022, %1023 ], [ %1022, %1028 ], [ %1022, %1033 ], [ %1022, %1038 ]
  %.sroa.11722.4 = phi ptr [ %.sroa.11722.3, %1002 ], [ %.sroa.11722.3, %1003 ], [ null, %1008 ], [ %1017, %1013 ], [ %1017, %1018 ], [ %1017, %1023 ], [ %1017, %1028 ], [ %1017, %1033 ], [ %1017, %1038 ]
  %.sroa.7721.4 = phi ptr [ %.sroa.7721.3, %1002 ], [ null, %1003 ], [ %1012, %1008 ], [ %1012, %1013 ], [ %1012, %1018 ], [ %1012, %1023 ], [ %1012, %1028 ], [ %1012, %1033 ], [ %1012, %1038 ]
  %.sroa.0720.4 = phi ptr [ null, %1002 ], [ %1007, %1003 ], [ %1007, %1008 ], [ %1007, %1013 ], [ %1007, %1018 ], [ %1007, %1023 ], [ %1007, %1028 ], [ %1007, %1033 ], [ %1007, %1038 ]
  %.not388 = icmp eq ptr %.sroa.0.3, null
  br i1 %.not388, label %1084, label %1044

1044:                                             ; preds = %1043
  %1045 = getelementptr inbounds i8, ptr %.pre748.pre.pre, i64 48
  %1046 = load ptr, ptr %1045, align 8, !tbaa !14
  %1047 = getelementptr inbounds %class.aiColor4t, ptr %1046, i64 %.pre-phi
  %1048 = getelementptr inbounds i8, ptr %.sroa.0.3, i64 16
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %.sroa.0.3, ptr noundef nonnull align 4 dereferenceable(16) %1047, i64 16, i1 false), !tbaa.struct !57
  %.not388.1 = icmp eq ptr %.sroa.7.3, null
  br i1 %.not388.1, label %1084, label %1049

1049:                                             ; preds = %1044
  %1050 = getelementptr inbounds i8, ptr %.pre748.pre.pre, i64 56
  %1051 = load ptr, ptr %1050, align 8, !tbaa !14
  %1052 = getelementptr inbounds %class.aiColor4t, ptr %1051, i64 %.pre-phi
  %1053 = getelementptr inbounds i8, ptr %.sroa.7.3, i64 16
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %.sroa.7.3, ptr noundef nonnull align 4 dereferenceable(16) %1052, i64 16, i1 false), !tbaa.struct !57
  %.not388.2 = icmp eq ptr %.sroa.11.3, null
  br i1 %.not388.2, label %1084, label %1054

1054:                                             ; preds = %1049
  %1055 = getelementptr inbounds i8, ptr %.pre748.pre.pre, i64 64
  %1056 = load ptr, ptr %1055, align 8, !tbaa !14
  %1057 = getelementptr inbounds %class.aiColor4t, ptr %1056, i64 %.pre-phi
  %1058 = getelementptr inbounds i8, ptr %.sroa.11.3, i64 16
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %.sroa.11.3, ptr noundef nonnull align 4 dereferenceable(16) %1057, i64 16, i1 false), !tbaa.struct !57
  %.not388.3 = icmp eq ptr %.sroa.15.3, null
  br i1 %.not388.3, label %1084, label %1059

1059:                                             ; preds = %1054
  %1060 = getelementptr inbounds i8, ptr %.pre748.pre.pre, i64 72
  %1061 = load ptr, ptr %1060, align 8, !tbaa !14
  %1062 = getelementptr inbounds %class.aiColor4t, ptr %1061, i64 %.pre-phi
  %1063 = getelementptr inbounds i8, ptr %.sroa.15.3, i64 16
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %.sroa.15.3, ptr noundef nonnull align 4 dereferenceable(16) %1062, i64 16, i1 false), !tbaa.struct !57
  %.not388.4 = icmp eq ptr %.sroa.19.3, null
  br i1 %.not388.4, label %1084, label %1064

1064:                                             ; preds = %1059
  %1065 = getelementptr inbounds i8, ptr %.pre748.pre.pre, i64 80
  %1066 = load ptr, ptr %1065, align 8, !tbaa !14
  %1067 = getelementptr inbounds %class.aiColor4t, ptr %1066, i64 %.pre-phi
  %1068 = getelementptr inbounds i8, ptr %.sroa.19.3, i64 16
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %.sroa.19.3, ptr noundef nonnull align 4 dereferenceable(16) %1067, i64 16, i1 false), !tbaa.struct !57
  %.not388.5 = icmp eq ptr %.sroa.23.3, null
  br i1 %.not388.5, label %1084, label %1069

1069:                                             ; preds = %1064
  %1070 = getelementptr inbounds i8, ptr %.pre748.pre.pre, i64 88
  %1071 = load ptr, ptr %1070, align 8, !tbaa !14
  %1072 = getelementptr inbounds %class.aiColor4t, ptr %1071, i64 %.pre-phi
  %1073 = getelementptr inbounds i8, ptr %.sroa.23.3, i64 16
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %.sroa.23.3, ptr noundef nonnull align 4 dereferenceable(16) %1072, i64 16, i1 false), !tbaa.struct !57
  %.not388.6 = icmp eq ptr %.sroa.27.3, null
  br i1 %.not388.6, label %1084, label %1074

1074:                                             ; preds = %1069
  %1075 = getelementptr inbounds i8, ptr %.pre748.pre.pre, i64 96
  %1076 = load ptr, ptr %1075, align 8, !tbaa !14
  %1077 = getelementptr inbounds %class.aiColor4t, ptr %1076, i64 %.pre-phi
  %1078 = getelementptr inbounds i8, ptr %.sroa.27.3, i64 16
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %.sroa.27.3, ptr noundef nonnull align 4 dereferenceable(16) %1077, i64 16, i1 false), !tbaa.struct !57
  %.not388.7 = icmp eq ptr %.sroa.31.3, null
  br i1 %.not388.7, label %1084, label %1079

1079:                                             ; preds = %1074
  %1080 = getelementptr inbounds i8, ptr %.pre748.pre.pre, i64 104
  %1081 = load ptr, ptr %1080, align 8, !tbaa !14
  %1082 = getelementptr inbounds %class.aiColor4t, ptr %1081, i64 %.pre-phi
  %1083 = getelementptr inbounds i8, ptr %.sroa.31.3, i64 16
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %.sroa.31.3, ptr noundef nonnull align 4 dereferenceable(16) %1082, i64 16, i1 false), !tbaa.struct !57
  br label %1084

1084:                                             ; preds = %1079, %1074, %1069, %1064, %1059, %1054, %1049, %1044, %1043
  %.sroa.31.4 = phi ptr [ %.sroa.31.3, %1043 ], [ %.sroa.31.3, %1044 ], [ %.sroa.31.3, %1049 ], [ %.sroa.31.3, %1054 ], [ %.sroa.31.3, %1059 ], [ %.sroa.31.3, %1064 ], [ %.sroa.31.3, %1069 ], [ null, %1074 ], [ %1083, %1079 ]
  %.sroa.27.4 = phi ptr [ %.sroa.27.3, %1043 ], [ %.sroa.27.3, %1044 ], [ %.sroa.27.3, %1049 ], [ %.sroa.27.3, %1054 ], [ %.sroa.27.3, %1059 ], [ %.sroa.27.3, %1064 ], [ null, %1069 ], [ %1078, %1074 ], [ %1078, %1079 ]
  %.sroa.23.4 = phi ptr [ %.sroa.23.3, %1043 ], [ %.sroa.23.3, %1044 ], [ %.sroa.23.3, %1049 ], [ %.sroa.23.3, %1054 ], [ %.sroa.23.3, %1059 ], [ null, %1064 ], [ %1073, %1069 ], [ %1073, %1074 ], [ %1073, %1079 ]
  %.sroa.19.4 = phi ptr [ %.sroa.19.3, %1043 ], [ %.sroa.19.3, %1044 ], [ %.sroa.19.3, %1049 ], [ %.sroa.19.3, %1054 ], [ null, %1059 ], [ %1068, %1064 ], [ %1068, %1069 ], [ %1068, %1074 ], [ %1068, %1079 ]
  %.sroa.15.4 = phi ptr [ %.sroa.15.3, %1043 ], [ %.sroa.15.3, %1044 ], [ %.sroa.15.3, %1049 ], [ null, %1054 ], [ %1063, %1059 ], [ %1063, %1064 ], [ %1063, %1069 ], [ %1063, %1074 ], [ %1063, %1079 ]
  %.sroa.11.4 = phi ptr [ %.sroa.11.3, %1043 ], [ %.sroa.11.3, %1044 ], [ null, %1049 ], [ %1058, %1054 ], [ %1058, %1059 ], [ %1058, %1064 ], [ %1058, %1069 ], [ %1058, %1074 ], [ %1058, %1079 ]
  %.sroa.7.4 = phi ptr [ %.sroa.7.3, %1043 ], [ null, %1044 ], [ %1053, %1049 ], [ %1053, %1054 ], [ %1053, %1059 ], [ %1053, %1064 ], [ %1053, %1069 ], [ %1053, %1074 ], [ %1053, %1079 ]
  %.sroa.0.4 = phi ptr [ null, %1043 ], [ %1048, %1044 ], [ %1048, %1049 ], [ %1048, %1054 ], [ %1048, %1059 ], [ %1048, %1064 ], [ %1048, %1069 ], [ %1048, %1074 ], [ %1048, %1079 ]
  %1085 = getelementptr inbounds i8, ptr %.pre748.pre.pre, i64 1264
  %1086 = load i32, ptr %1085, align 8, !tbaa !36
  %.not616 = icmp eq i32 %1086, 0
  br i1 %.not616, label %._crit_edge560, label %.lr.ph559

.lr.ph559:                                        ; preds = %1084
  %1087 = getelementptr inbounds i8, ptr %.pre748.pre.pre, i64 1272
  %1088 = zext i32 %.1292567 to i64
  br label %1089

1089:                                             ; preds = %.lr.ph559, %1254
  %indvars.iv702 = phi i64 [ 0, %.lr.ph559 ], [ %indvars.iv.next703, %1254 ]
  %1090 = load ptr, ptr %1087, align 8, !tbaa !37
  %1091 = getelementptr inbounds ptr, ptr %1090, i64 %indvars.iv702
  %1092 = load ptr, ptr %1091, align 8, !tbaa !14
  %1093 = load ptr, ptr %914, align 8, !tbaa !37
  %1094 = getelementptr inbounds ptr, ptr %1093, i64 %indvars.iv702
  %1095 = load ptr, ptr %1094, align 8, !tbaa !14
  %1096 = getelementptr inbounds i8, ptr %1092, i64 1032
  %1097 = load ptr, ptr %1096, align 8, !tbaa !41
  %.not389 = icmp eq ptr %1097, null
  br i1 %.not389, label %1103, label %1098

1098:                                             ; preds = %1089
  %1099 = getelementptr inbounds %class.aiVector3t, ptr %1097, i64 %.pre-phi
  %1100 = getelementptr inbounds i8, ptr %1095, i64 1032
  %1101 = load ptr, ptr %1100, align 8, !tbaa !41
  %1102 = getelementptr inbounds %class.aiVector3t, ptr %1101, i64 %1088
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %1102, ptr noundef nonnull align 4 dereferenceable(12) %1099, i64 12, i1 false), !tbaa.struct !55
  br label %1103

1103:                                             ; preds = %1098, %1089
  %1104 = getelementptr inbounds i8, ptr %1092, i64 1040
  %1105 = load ptr, ptr %1104, align 8, !tbaa !42
  %.not390 = icmp eq ptr %1105, null
  br i1 %.not390, label %1111, label %1106

1106:                                             ; preds = %1103
  %1107 = getelementptr inbounds %class.aiVector3t, ptr %1105, i64 %.pre-phi
  %1108 = getelementptr inbounds i8, ptr %1095, i64 1040
  %1109 = load ptr, ptr %1108, align 8, !tbaa !42
  %1110 = getelementptr inbounds %class.aiVector3t, ptr %1109, i64 %1088
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %1110, ptr noundef nonnull align 4 dereferenceable(12) %1107, i64 12, i1 false), !tbaa.struct !55
  br label %1111

1111:                                             ; preds = %1106, %1103
  %1112 = getelementptr inbounds i8, ptr %1092, i64 1048
  %1113 = load ptr, ptr %1112, align 8, !tbaa !43
  %.not391 = icmp eq ptr %1113, null
  br i1 %.not391, label %1119, label %1114

1114:                                             ; preds = %1111
  %1115 = getelementptr inbounds %class.aiVector3t, ptr %1113, i64 %.pre-phi
  %1116 = getelementptr inbounds i8, ptr %1095, i64 1048
  %1117 = load ptr, ptr %1116, align 8, !tbaa !43
  %1118 = getelementptr inbounds %class.aiVector3t, ptr %1117, i64 %1088
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %1118, ptr noundef nonnull align 4 dereferenceable(12) %1115, i64 12, i1 false), !tbaa.struct !55
  br label %1119

1119:                                             ; preds = %1114, %1111
  %1120 = getelementptr inbounds i8, ptr %1092, i64 1056
  %1121 = load ptr, ptr %1120, align 8, !tbaa !44
  %.not392 = icmp eq ptr %1121, null
  br i1 %.not392, label %1127, label %1122

1122:                                             ; preds = %1119
  %1123 = getelementptr inbounds %class.aiVector3t, ptr %1121, i64 %.pre-phi
  %1124 = getelementptr inbounds i8, ptr %1095, i64 1056
  %1125 = load ptr, ptr %1124, align 8, !tbaa !44
  %1126 = getelementptr inbounds %class.aiVector3t, ptr %1125, i64 %1088
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %1126, ptr noundef nonnull align 4 dereferenceable(12) %1123, i64 12, i1 false), !tbaa.struct !55
  br label %1127

1127:                                             ; preds = %1122, %1119
  %1128 = getelementptr inbounds i8, ptr %1092, i64 1064
  %1129 = load ptr, ptr %1128, align 8, !tbaa !14
  %.not394 = icmp eq ptr %1129, null
  br i1 %.not394, label %1135, label %1130

1130:                                             ; preds = %1127
  %1131 = getelementptr inbounds i8, ptr %1095, i64 1064
  %1132 = getelementptr inbounds %class.aiColor4t, ptr %1129, i64 %.pre-phi
  %1133 = load ptr, ptr %1131, align 8, !tbaa !14
  %1134 = getelementptr inbounds %class.aiColor4t, ptr %1133, i64 %1088
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %1134, ptr noundef nonnull align 4 dereferenceable(16) %1132, i64 16, i1 false), !tbaa.struct !57
  br label %1135

1135:                                             ; preds = %1127, %1130
  %1136 = getelementptr inbounds i8, ptr %1092, i64 1072
  %1137 = load ptr, ptr %1136, align 8, !tbaa !14
  %.not394.1 = icmp eq ptr %1137, null
  br i1 %.not394.1, label %1143, label %1138

1138:                                             ; preds = %1135
  %1139 = getelementptr inbounds %class.aiColor4t, ptr %1137, i64 %.pre-phi
  %1140 = getelementptr inbounds i8, ptr %1095, i64 1072
  %1141 = load ptr, ptr %1140, align 8, !tbaa !14
  %1142 = getelementptr inbounds %class.aiColor4t, ptr %1141, i64 %1088
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %1142, ptr noundef nonnull align 4 dereferenceable(16) %1139, i64 16, i1 false), !tbaa.struct !57
  br label %1143

1143:                                             ; preds = %1138, %1135
  %1144 = getelementptr inbounds i8, ptr %1092, i64 1080
  %1145 = load ptr, ptr %1144, align 8, !tbaa !14
  %.not394.2 = icmp eq ptr %1145, null
  br i1 %.not394.2, label %1151, label %1146

1146:                                             ; preds = %1143
  %1147 = getelementptr inbounds %class.aiColor4t, ptr %1145, i64 %.pre-phi
  %1148 = getelementptr inbounds i8, ptr %1095, i64 1080
  %1149 = load ptr, ptr %1148, align 8, !tbaa !14
  %1150 = getelementptr inbounds %class.aiColor4t, ptr %1149, i64 %1088
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %1150, ptr noundef nonnull align 4 dereferenceable(16) %1147, i64 16, i1 false), !tbaa.struct !57
  br label %1151

1151:                                             ; preds = %1146, %1143
  %1152 = getelementptr inbounds i8, ptr %1092, i64 1088
  %1153 = load ptr, ptr %1152, align 8, !tbaa !14
  %.not394.3 = icmp eq ptr %1153, null
  br i1 %.not394.3, label %1159, label %1154

1154:                                             ; preds = %1151
  %1155 = getelementptr inbounds %class.aiColor4t, ptr %1153, i64 %.pre-phi
  %1156 = getelementptr inbounds i8, ptr %1095, i64 1088
  %1157 = load ptr, ptr %1156, align 8, !tbaa !14
  %1158 = getelementptr inbounds %class.aiColor4t, ptr %1157, i64 %1088
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %1158, ptr noundef nonnull align 4 dereferenceable(16) %1155, i64 16, i1 false), !tbaa.struct !57
  br label %1159

1159:                                             ; preds = %1154, %1151
  %1160 = getelementptr inbounds i8, ptr %1092, i64 1096
  %1161 = load ptr, ptr %1160, align 8, !tbaa !14
  %.not394.4 = icmp eq ptr %1161, null
  br i1 %.not394.4, label %1167, label %1162

1162:                                             ; preds = %1159
  %1163 = getelementptr inbounds %class.aiColor4t, ptr %1161, i64 %.pre-phi
  %1164 = getelementptr inbounds i8, ptr %1095, i64 1096
  %1165 = load ptr, ptr %1164, align 8, !tbaa !14
  %1166 = getelementptr inbounds %class.aiColor4t, ptr %1165, i64 %1088
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %1166, ptr noundef nonnull align 4 dereferenceable(16) %1163, i64 16, i1 false), !tbaa.struct !57
  br label %1167

1167:                                             ; preds = %1162, %1159
  %1168 = getelementptr inbounds i8, ptr %1092, i64 1104
  %1169 = load ptr, ptr %1168, align 8, !tbaa !14
  %.not394.5 = icmp eq ptr %1169, null
  br i1 %.not394.5, label %1175, label %1170

1170:                                             ; preds = %1167
  %1171 = getelementptr inbounds %class.aiColor4t, ptr %1169, i64 %.pre-phi
  %1172 = getelementptr inbounds i8, ptr %1095, i64 1104
  %1173 = load ptr, ptr %1172, align 8, !tbaa !14
  %1174 = getelementptr inbounds %class.aiColor4t, ptr %1173, i64 %1088
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %1174, ptr noundef nonnull align 4 dereferenceable(16) %1171, i64 16, i1 false), !tbaa.struct !57
  br label %1175

1175:                                             ; preds = %1170, %1167
  %1176 = getelementptr inbounds i8, ptr %1092, i64 1112
  %1177 = load ptr, ptr %1176, align 8, !tbaa !14
  %.not394.6 = icmp eq ptr %1177, null
  br i1 %.not394.6, label %1183, label %1178

1178:                                             ; preds = %1175
  %1179 = getelementptr inbounds %class.aiColor4t, ptr %1177, i64 %.pre-phi
  %1180 = getelementptr inbounds i8, ptr %1095, i64 1112
  %1181 = load ptr, ptr %1180, align 8, !tbaa !14
  %1182 = getelementptr inbounds %class.aiColor4t, ptr %1181, i64 %1088
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %1182, ptr noundef nonnull align 4 dereferenceable(16) %1179, i64 16, i1 false), !tbaa.struct !57
  br label %1183

1183:                                             ; preds = %1178, %1175
  %1184 = getelementptr inbounds i8, ptr %1092, i64 1120
  %1185 = load ptr, ptr %1184, align 8, !tbaa !14
  %.not394.7 = icmp eq ptr %1185, null
  br i1 %.not394.7, label %.preheader, label %1186

1186:                                             ; preds = %1183
  %1187 = getelementptr inbounds %class.aiColor4t, ptr %1185, i64 %.pre-phi
  %1188 = getelementptr inbounds i8, ptr %1095, i64 1120
  %1189 = load ptr, ptr %1188, align 8, !tbaa !14
  %1190 = getelementptr inbounds %class.aiColor4t, ptr %1189, i64 %1088
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(16) %1190, ptr noundef nonnull align 4 dereferenceable(16) %1187, i64 16, i1 false), !tbaa.struct !57
  br label %.preheader

.preheader:                                       ; preds = %1186, %1183
  %1191 = getelementptr inbounds i8, ptr %1092, i64 1128
  %1192 = load ptr, ptr %1191, align 8, !tbaa !14
  %.not393 = icmp eq ptr %1192, null
  br i1 %.not393, label %1198, label %1193

1193:                                             ; preds = %.preheader
  %1194 = getelementptr inbounds i8, ptr %1095, i64 1128
  %1195 = getelementptr inbounds %class.aiVector3t, ptr %1192, i64 %.pre-phi
  %1196 = load ptr, ptr %1194, align 8, !tbaa !14
  %1197 = getelementptr inbounds %class.aiVector3t, ptr %1196, i64 %1088
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %1197, ptr noundef nonnull align 4 dereferenceable(12) %1195, i64 12, i1 false), !tbaa.struct !55
  br label %1198

1198:                                             ; preds = %.preheader, %1193
  %1199 = getelementptr inbounds i8, ptr %1092, i64 1136
  %1200 = load ptr, ptr %1199, align 8, !tbaa !14
  %.not393.1 = icmp eq ptr %1200, null
  br i1 %.not393.1, label %1206, label %1201

1201:                                             ; preds = %1198
  %1202 = getelementptr inbounds %class.aiVector3t, ptr %1200, i64 %.pre-phi
  %1203 = getelementptr inbounds i8, ptr %1095, i64 1136
  %1204 = load ptr, ptr %1203, align 8, !tbaa !14
  %1205 = getelementptr inbounds %class.aiVector3t, ptr %1204, i64 %1088
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %1205, ptr noundef nonnull align 4 dereferenceable(12) %1202, i64 12, i1 false), !tbaa.struct !55
  br label %1206

1206:                                             ; preds = %1201, %1198
  %1207 = getelementptr inbounds i8, ptr %1092, i64 1144
  %1208 = load ptr, ptr %1207, align 8, !tbaa !14
  %.not393.2 = icmp eq ptr %1208, null
  br i1 %.not393.2, label %1214, label %1209

1209:                                             ; preds = %1206
  %1210 = getelementptr inbounds %class.aiVector3t, ptr %1208, i64 %.pre-phi
  %1211 = getelementptr inbounds i8, ptr %1095, i64 1144
  %1212 = load ptr, ptr %1211, align 8, !tbaa !14
  %1213 = getelementptr inbounds %class.aiVector3t, ptr %1212, i64 %1088
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %1213, ptr noundef nonnull align 4 dereferenceable(12) %1210, i64 12, i1 false), !tbaa.struct !55
  br label %1214

1214:                                             ; preds = %1209, %1206
  %1215 = getelementptr inbounds i8, ptr %1092, i64 1152
  %1216 = load ptr, ptr %1215, align 8, !tbaa !14
  %.not393.3 = icmp eq ptr %1216, null
  br i1 %.not393.3, label %1222, label %1217

1217:                                             ; preds = %1214
  %1218 = getelementptr inbounds %class.aiVector3t, ptr %1216, i64 %.pre-phi
  %1219 = getelementptr inbounds i8, ptr %1095, i64 1152
  %1220 = load ptr, ptr %1219, align 8, !tbaa !14
  %1221 = getelementptr inbounds %class.aiVector3t, ptr %1220, i64 %1088
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %1221, ptr noundef nonnull align 4 dereferenceable(12) %1218, i64 12, i1 false), !tbaa.struct !55
  br label %1222

1222:                                             ; preds = %1217, %1214
  %1223 = getelementptr inbounds i8, ptr %1092, i64 1160
  %1224 = load ptr, ptr %1223, align 8, !tbaa !14
  %.not393.4 = icmp eq ptr %1224, null
  br i1 %.not393.4, label %1230, label %1225

1225:                                             ; preds = %1222
  %1226 = getelementptr inbounds %class.aiVector3t, ptr %1224, i64 %.pre-phi
  %1227 = getelementptr inbounds i8, ptr %1095, i64 1160
  %1228 = load ptr, ptr %1227, align 8, !tbaa !14
  %1229 = getelementptr inbounds %class.aiVector3t, ptr %1228, i64 %1088
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %1229, ptr noundef nonnull align 4 dereferenceable(12) %1226, i64 12, i1 false), !tbaa.struct !55
  br label %1230

1230:                                             ; preds = %1225, %1222
  %1231 = getelementptr inbounds i8, ptr %1092, i64 1168
  %1232 = load ptr, ptr %1231, align 8, !tbaa !14
  %.not393.5 = icmp eq ptr %1232, null
  br i1 %.not393.5, label %1238, label %1233

1233:                                             ; preds = %1230
  %1234 = getelementptr inbounds %class.aiVector3t, ptr %1232, i64 %.pre-phi
  %1235 = getelementptr inbounds i8, ptr %1095, i64 1168
  %1236 = load ptr, ptr %1235, align 8, !tbaa !14
  %1237 = getelementptr inbounds %class.aiVector3t, ptr %1236, i64 %1088
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %1237, ptr noundef nonnull align 4 dereferenceable(12) %1234, i64 12, i1 false), !tbaa.struct !55
  br label %1238

1238:                                             ; preds = %1233, %1230
  %1239 = getelementptr inbounds i8, ptr %1092, i64 1176
  %1240 = load ptr, ptr %1239, align 8, !tbaa !14
  %.not393.6 = icmp eq ptr %1240, null
  br i1 %.not393.6, label %1246, label %1241

1241:                                             ; preds = %1238
  %1242 = getelementptr inbounds %class.aiVector3t, ptr %1240, i64 %.pre-phi
  %1243 = getelementptr inbounds i8, ptr %1095, i64 1176
  %1244 = load ptr, ptr %1243, align 8, !tbaa !14
  %1245 = getelementptr inbounds %class.aiVector3t, ptr %1244, i64 %1088
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %1245, ptr noundef nonnull align 4 dereferenceable(12) %1242, i64 12, i1 false), !tbaa.struct !55
  br label %1246

1246:                                             ; preds = %1241, %1238
  %1247 = getelementptr inbounds i8, ptr %1092, i64 1184
  %1248 = load ptr, ptr %1247, align 8, !tbaa !14
  %.not393.7 = icmp eq ptr %1248, null
  br i1 %.not393.7, label %1254, label %1249

1249:                                             ; preds = %1246
  %1250 = getelementptr inbounds %class.aiVector3t, ptr %1248, i64 %.pre-phi
  %1251 = getelementptr inbounds i8, ptr %1095, i64 1184
  %1252 = load ptr, ptr %1251, align 8, !tbaa !14
  %1253 = getelementptr inbounds %class.aiVector3t, ptr %1252, i64 %1088
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %1253, ptr noundef nonnull align 4 dereferenceable(12) %1250, i64 12, i1 false), !tbaa.struct !55
  br label %1254

1254:                                             ; preds = %1249, %1246
  %indvars.iv.next703 = add nuw nsw i64 %indvars.iv702, 1
  %1255 = load i32, ptr %1085, align 8, !tbaa !36
  %1256 = zext i32 %1255 to i64
  %1257 = icmp ult i64 %indvars.iv.next703, %1256
  br i1 %1257, label %1089, label %._crit_edge560.loopexit, !llvm.loop !58

._crit_edge560.loopexit:                          ; preds = %1254
  %1258 = trunc nuw i64 %indvars.iv.next703 to i32
  br label %._crit_edge560

._crit_edge560:                                   ; preds = %._crit_edge560.loopexit, %1084
  %.0269.lcssa = phi i32 [ 0, %1084 ], [ %1258, %._crit_edge560.loopexit ]
  %.lcssa447 = phi i32 [ 0, %1084 ], [ %1255, %._crit_edge560.loopexit ]
  %1259 = icmp eq i32 %.0269.lcssa, %.lcssa447
  %1260 = zext i1 %1259 to i32
  %spec.select423 = add i32 %.1292567, %1260
  %1261 = load i32, ptr %14, align 4, !tbaa !12
  %1262 = add i32 %1261, 1
  store i32 %1262, ptr %14, align 4, !tbaa !12
  %1263 = load ptr, ptr %951, align 8, !tbaa !51
  %1264 = getelementptr inbounds i32, ptr %1263, i64 %indvars.iv705
  store i32 %1261, ptr %1264, align 4, !tbaa !12
  %indvars.iv.next706 = add nuw nsw i64 %indvars.iv705, 1
  %1265 = load i32, ptr %945, align 8, !tbaa !26
  %1266 = zext i32 %1265 to i64
  %1267 = icmp ult i64 %indvars.iv.next706, %1266
  br i1 %1267, label %.lr.ph569, label %._crit_edge570, !llvm.loop !59

1268:                                             ; preds = %947, %949, %._crit_edge570
  %1269 = phi ptr [ %942, %947 ], [ %.pre749, %._crit_edge570 ], [ %942, %949 ]
  %.sroa.31727.5 = phi ptr [ %.sroa.31727.1, %947 ], [ %.sroa.31727.2, %._crit_edge570 ], [ %.sroa.31727.1, %949 ]
  %.sroa.27726.5 = phi ptr [ %.sroa.27726.1, %947 ], [ %.sroa.27726.2, %._crit_edge570 ], [ %.sroa.27726.1, %949 ]
  %.sroa.23725.5 = phi ptr [ %.sroa.23725.1, %947 ], [ %.sroa.23725.2, %._crit_edge570 ], [ %.sroa.23725.1, %949 ]
  %.sroa.19724.5 = phi ptr [ %.sroa.19724.1, %947 ], [ %.sroa.19724.2, %._crit_edge570 ], [ %.sroa.19724.1, %949 ]
  %.sroa.15723.5 = phi ptr [ %.sroa.15723.1, %947 ], [ %.sroa.15723.2, %._crit_edge570 ], [ %.sroa.15723.1, %949 ]
  %.sroa.11722.5 = phi ptr [ %.sroa.11722.1, %947 ], [ %.sroa.11722.2, %._crit_edge570 ], [ %.sroa.11722.1, %949 ]
  %.sroa.7721.5 = phi ptr [ %.sroa.7721.1, %947 ], [ %.sroa.7721.2, %._crit_edge570 ], [ %.sroa.7721.1, %949 ]
  %.sroa.0720.5 = phi ptr [ %.sroa.0720.1, %947 ], [ %.sroa.0720.2, %._crit_edge570 ], [ %.sroa.0720.1, %949 ]
  %.sroa.31.5 = phi ptr [ %.sroa.31.1, %947 ], [ %.sroa.31.2, %._crit_edge570 ], [ %.sroa.31.1, %949 ]
  %.sroa.27.5 = phi ptr [ %.sroa.27.1, %947 ], [ %.sroa.27.2, %._crit_edge570 ], [ %.sroa.27.1, %949 ]
  %.sroa.23.5 = phi ptr [ %.sroa.23.1, %947 ], [ %.sroa.23.2, %._crit_edge570 ], [ %.sroa.23.1, %949 ]
  %.sroa.19.5 = phi ptr [ %.sroa.19.1, %947 ], [ %.sroa.19.2, %._crit_edge570 ], [ %.sroa.19.1, %949 ]
  %.sroa.15.5 = phi ptr [ %.sroa.15.1, %947 ], [ %.sroa.15.2, %._crit_edge570 ], [ %.sroa.15.1, %949 ]
  %.sroa.11.5 = phi ptr [ %.sroa.11.1, %947 ], [ %.sroa.11.2, %._crit_edge570 ], [ %.sroa.11.1, %949 ]
  %.sroa.7.5 = phi ptr [ %.sroa.7.1728, %947 ], [ %.sroa.7.2, %._crit_edge570 ], [ %.sroa.7.1728, %949 ]
  %.sroa.0.5 = phi ptr [ %.sroa.0.1, %947 ], [ %.sroa.0.2, %._crit_edge570 ], [ %.sroa.0.1, %949 ]
  %.1323 = phi ptr [ %.0322576, %947 ], [ %955, %._crit_edge570 ], [ %.0322576, %949 ]
  %.4321 = phi ptr [ %.1318577, %947 ], [ %.2319.lcssa, %._crit_edge570 ], [ %.1318577, %949 ]
  %.4316 = phi ptr [ %.1313578, %947 ], [ %.2314.lcssa, %._crit_edge570 ], [ %.1313578, %949 ]
  %.4311 = phi ptr [ %.1308579, %947 ], [ %.2309.lcssa, %._crit_edge570 ], [ %.1308579, %949 ]
  %.4306 = phi ptr [ %.1303580, %947 ], [ %.2304.lcssa, %._crit_edge570 ], [ %.1303580, %949 ]
  %.3294 = phi i32 [ %.0291581, %947 ], [ %.1292.lcssa, %._crit_edge570 ], [ %.0291581, %949 ]
  %indvars.iv.next709 = add nuw nsw i64 %indvars.iv708, 1
  %1270 = getelementptr inbounds i8, ptr %1269, i64 8
  %1271 = load i32, ptr %1270, align 8, !tbaa !25
  %1272 = zext i32 %1271 to i64
  %1273 = icmp ult i64 %indvars.iv.next709, %1272
  br i1 %1273, label %941, label %._crit_edge585, !llvm.loop !60

1274:                                             ; preds = %._crit_edge585
  invoke void @_ZN6Assimp17aiAssertViolationEPKcS1_i(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.5, i32 noundef 360)
          to label %._crit_edge750 unwind label %1283

._crit_edge750:                                   ; preds = %1274
  %.pre751 = load ptr, ptr %8, align 8, !tbaa !14
  br label %1275

1275:                                             ; preds = %._crit_edge750, %._crit_edge585
  %1276 = phi ptr [ %.pre751, %._crit_edge750 ], [ %935, %._crit_edge585 ]
  %1277 = getelementptr inbounds i8, ptr %1276, i64 216
  %1278 = load i32, ptr %1277, align 8, !tbaa !38
  %.not617 = icmp eq i32 %1278, 0
  br i1 %.not617, label %._crit_edge590, label %.lr.ph589

.lr.ph589:                                        ; preds = %1275
  %1279 = getelementptr inbounds i8, ptr %128, i64 216
  br label %1285

._crit_edge590:                                   ; preds = %1291, %1275
  %1280 = phi ptr [ %1276, %1275 ], [ %1292, %1291 ]
  %1281 = getelementptr inbounds i8, ptr %128, i64 216
  %1282 = load i32, ptr %1281, align 8, !tbaa !38
  %.not380 = icmp eq i32 %1282, 0
  br i1 %.not380, label %.loopexit435, label %1297

1283:                                             ; preds = %1297, %1274
  %1284 = landingpad { ptr, i32 }
          cleanup
  br label %1351

1285:                                             ; preds = %.lr.ph589, %1291
  %indvars.iv711 = phi i64 [ 0, %.lr.ph589 ], [ %indvars.iv.next712, %1291 ]
  %1286 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_I14aiVertexWeightSaIS0_EESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %12, i64 noundef %indvars.iv711) #11
  %1287 = call noundef zeroext i1 @_ZNKSt6vectorI14aiVertexWeightSaIS0_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %1286) #11
  br i1 %1287, label %1291, label %1288

1288:                                             ; preds = %1285
  %1289 = load i32, ptr %1279, align 8, !tbaa !38
  %1290 = add i32 %1289, 1
  store i32 %1290, ptr %1279, align 8, !tbaa !38
  br label %1291

1291:                                             ; preds = %1285, %1288
  %indvars.iv.next712 = add nuw nsw i64 %indvars.iv711, 1
  %1292 = load ptr, ptr %8, align 8, !tbaa !14
  %1293 = getelementptr inbounds i8, ptr %1292, i64 216
  %1294 = load i32, ptr %1293, align 8, !tbaa !38
  %1295 = zext i32 %1294 to i64
  %1296 = icmp ult i64 %indvars.iv.next712, %1295
  br i1 %1296, label %1285, label %._crit_edge590, !llvm.loop !61

1297:                                             ; preds = %._crit_edge590
  %1298 = zext i32 %1282 to i64
  %1299 = shl nuw nsw i64 %1298, 3
  %1300 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %1299) #14
          to label %1301 unwind label %1283

1301:                                             ; preds = %1297
  %1302 = getelementptr inbounds i8, ptr %128, i64 224
  store ptr %1300, ptr %1302, align 8, !tbaa !46
  %1303 = getelementptr inbounds i8, ptr %1280, i64 216
  %1304 = load i32, ptr %1303, align 8, !tbaa !38
  %.not618 = icmp eq i32 %1304, 0
  br i1 %.not618, label %.loopexit435, label %.lr.ph594

.lr.ph594:                                        ; preds = %1301, %1341
  %indvars.iv714 = phi i64 [ %indvars.iv.next715, %1341 ], [ 0, %1301 ]
  %.0592 = phi i32 [ %.1, %1341 ], [ 0, %1301 ]
  %1305 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIS_I14aiVertexWeightSaIS0_EESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %12, i64 noundef %indvars.iv714) #11
  %1306 = call noundef zeroext i1 @_ZNKSt6vectorI14aiVertexWeightSaIS0_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %1305) #11
  br i1 %1306, label %1341, label %1307

1307:                                             ; preds = %.lr.ph594
  %1308 = load ptr, ptr %8, align 8, !tbaa !14
  %1309 = getelementptr inbounds i8, ptr %1308, i64 224
  %1310 = load ptr, ptr %1309, align 8, !tbaa !46
  %1311 = getelementptr inbounds ptr, ptr %1310, i64 %indvars.iv714
  %1312 = load ptr, ptr %1311, align 8, !tbaa !14
  %1313 = invoke noalias noundef nonnull dereferenceable(1120) ptr @_Znwm(i64 noundef 1120) #14
          to label %1314 unwind label %1347

1314:                                             ; preds = %1307
  call void @_ZN6aiBoneC2Ev(ptr noundef nonnull align 8 dereferenceable(1120) %1313) #11
  %1315 = load ptr, ptr %1302, align 8, !tbaa !46
  %1316 = zext i32 %.0592 to i64
  %1317 = getelementptr inbounds ptr, ptr %1315, i64 %1316
  store ptr %1313, ptr %1317, align 8, !tbaa !14
  %1318 = call noundef nonnull align 4 dereferenceable(1028) ptr @_ZN8aiStringaSERKS_(ptr noundef nonnull align 4 dereferenceable(1028) %1313, ptr noundef nonnull align 4 dereferenceable(1028) %1312)
  %1319 = getelementptr inbounds i8, ptr %1312, i64 1056
  %1320 = getelementptr inbounds i8, ptr %1313, i64 1056
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) %1320, ptr noundef nonnull align 8 dereferenceable(64) %1319, i64 64, i1 false), !tbaa.struct !62
  %1321 = call noundef i64 @_ZNKSt6vectorI14aiVertexWeightSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1305) #11
  %1322 = trunc i64 %1321 to i32
  %1323 = getelementptr inbounds i8, ptr %1313, i64 1028
  store i32 %1322, ptr %1323, align 4, !tbaa !47
  %1324 = and i64 %1321, 4294967295
  %1325 = shl nuw nsw i64 %1324, 3
  %1326 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %1325) #14
          to label %1327 unwind label %1347

1327:                                             ; preds = %1314
  %1328 = icmp eq i64 %1324, 0
  br i1 %1328, label %.loopexit427, label %1329

1329:                                             ; preds = %1327
  %1330 = getelementptr inbounds %struct.aiVertexWeight, ptr %1326, i64 %1324
  br label %1331

1331:                                             ; preds = %1331, %1329
  %1332 = phi ptr [ %1326, %1329 ], [ %1333, %1331 ]
  call void @_ZN14aiVertexWeightC2Ev(ptr noundef nonnull align 4 dereferenceable(8) %1332) #11
  %1333 = getelementptr inbounds i8, ptr %1332, i64 8
  %1334 = icmp eq ptr %1333, %1330
  br i1 %1334, label %.loopexit427, label %1331

.loopexit427:                                     ; preds = %1331, %1327
  %1335 = getelementptr inbounds i8, ptr %1313, i64 1048
  store ptr %1326, ptr %1335, align 8, !tbaa !63
  %1336 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNSt6vectorI14aiVertexWeightSaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1305, i64 noundef 0) #11
  %1337 = load i32, ptr %1323, align 4, !tbaa !47
  %1338 = zext i32 %1337 to i64
  %1339 = shl nuw nsw i64 %1338, 3
  call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %1326, ptr nonnull align 4 %1336, i64 %1339, i1 false)
  %1340 = add i32 %.0592, 1
  br label %1341

1341:                                             ; preds = %.lr.ph594, %.loopexit427
  %.1 = phi i32 [ %1340, %.loopexit427 ], [ %.0592, %.lr.ph594 ]
  %indvars.iv.next715 = add nuw nsw i64 %indvars.iv714, 1
  %1342 = load ptr, ptr %8, align 8, !tbaa !14
  %1343 = getelementptr inbounds i8, ptr %1342, i64 216
  %1344 = load i32, ptr %1343, align 8, !tbaa !38
  %1345 = zext i32 %1344 to i64
  %1346 = icmp ult i64 %indvars.iv.next715, %1345
  br i1 %1346, label %.lr.ph594, label %.loopexit435, !llvm.loop !64

1347:                                             ; preds = %1314, %1307
  %1348 = landingpad { ptr, i32 }
          cleanup
  br label %1351

.loopexit435:                                     ; preds = %1341, %1301, %._crit_edge590
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #11
  call void @_ZNSt6vectorIS_I14aiVertexWeightSaIS0_EESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %12) #11
  br label %1349

1349:                                             ; preds = %112, %115, %.loopexit435
  %indvars.iv.next718 = add nuw nsw i64 %indvars.iv717, 1
  %1350 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPjSt6vectorIjSaIjEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %7) #11
  %exitcond.not = icmp eq i64 %indvars.iv.next718, 4
  br i1 %exitcond.not, label %109, label %112, !llvm.loop !65

1351:                                             ; preds = %1347, %1283, %975
  %.pn = phi { ptr, i32 } [ %976, %975 ], [ %1348, %1347 ], [ %1284, %1283 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #11
  br label %1352

1352:                                             ; preds = %1351, %933
  %.pn396 = phi { ptr, i32 } [ %934, %933 ], [ %.pn, %1351 ]
  call void @_ZNSt6vectorIS_I14aiVertexWeightSaIS0_EESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #11
  br label %1353

1353:                                             ; preds = %1352, %915
  %.pn396.pn = phi { ptr, i32 } [ %.pn396, %1352 ], [ %916, %915 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %12) #11
  br label %1375

1354:                                             ; preds = %109
  %1355 = getelementptr inbounds i8, ptr %107, i64 -8
  %1356 = load i64, ptr %1355, align 8
  %1357 = icmp eq i64 %1356, 0
  br i1 %1357, label %.loopexit442, label %.preheader441.preheader

.preheader441.preheader:                          ; preds = %1354
  %1358 = getelementptr inbounds %"class.std::vector.15", ptr %107, i64 %1356
  br label %.preheader441

.preheader441:                                    ; preds = %.preheader441.preheader, %.preheader441
  %1359 = phi ptr [ %1360, %.preheader441 ], [ %1358, %.preheader441.preheader ]
  %1360 = getelementptr inbounds i8, ptr %1359, i64 -24
  call void @_ZNSt6vectorISt4pairIjfESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %1360) #11
  %1361 = icmp eq ptr %1360, %107
  br i1 %1361, label %.loopexit442, label %.preheader441

.loopexit442:                                     ; preds = %.preheader441, %1354
  %1362 = mul i64 %1356, 24
  %1363 = add i64 %1362, 8
  call void @_ZdaPvm(ptr noundef nonnull %1355, i64 noundef %1363) #13
  br label %1364

1364:                                             ; preds = %.loopexit442, %109
  %1365 = load ptr, ptr %8, align 8, !tbaa !14
  %1366 = icmp eq ptr %1365, null
  br i1 %1366, label %1368, label %1367

1367:                                             ; preds = %1364
  call void @_ZN6aiMeshD2Ev(ptr noundef nonnull align 8 dereferenceable(1320) %1365) #11
  call void @_ZdlPvm(ptr noundef nonnull %1365, i64 noundef 1320) #13
  br label %1368

1368:                                             ; preds = %1367, %1364
  %1369 = load ptr, ptr %36, align 8, !tbaa !13
  %1370 = getelementptr inbounds ptr, ptr %1369, i64 %47
  store ptr null, ptr %1370, align 8, !tbaa !14
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #11
  br label %1371

1371:                                             ; preds = %1368, %84
  %.2287 = phi i1 [ %.1286, %84 ], [ true, %1368 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #11
  %1372 = add nuw i32 %.0289597, 1
  %1373 = load i32, ptr %20, align 8, !tbaa !5
  %1374 = icmp ult i32 %1372, %1373
  br i1 %1374, label %45, label %._crit_edge605, !llvm.loop !66

1375:                                             ; preds = %180, %250, %418, %1353, %787, %657, %590, %176, %178, %110
  %.pn409.pn.pn.pn = phi { ptr, i32 } [ %111, %110 ], [ %177, %176 ], [ %179, %178 ], [ %251, %250 ], [ %419, %418 ], [ %.pn396.pn, %1353 ], [ %181, %180 ], [ %658, %657 ], [ %788, %787 ], [ %591, %590 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #11
  br label %1376

1376:                                             ; preds = %58, %79, %1375, %60
  %.pn417 = phi { ptr, i32 } [ %61, %60 ], [ %59, %58 ], [ %80, %79 ], [ %.pn409.pn.pn.pn, %1375 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #11
  br label %1430

1377:                                             ; preds = %._crit_edge605.thread, %._crit_edge605
  %1378 = call ptr @__cxa_allocate_exception(i64 16) #11
  invoke void @_ZN17DeadlyImportErrorC2EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1378, ptr noundef nonnull @.str.6)
          to label %1379 unwind label %1380

1379:                                             ; preds = %1377
  invoke void @__cxa_throw(ptr nonnull %1378, ptr nonnull @_ZTI17DeadlyImportError, ptr nonnull @_ZNSt13runtime_errorD2Ev) #12
          to label %1433 unwind label %1382

1380:                                             ; preds = %1377
  %1381 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %1378) #11
  br label %1430

1382:                                             ; preds = %._crit_edge752, %1394, %1385, %1379
  %1383 = landingpad { ptr, i32 }
          cleanup
  br label %1430

1384:                                             ; preds = %._crit_edge605
  br i1 %.2287, label %1385, label %.thread788

1385:                                             ; preds = %1384
  %1386 = getelementptr inbounds i8, ptr %1, i64 8
  %1387 = load ptr, ptr %1386, align 8, !tbaa !67
  invoke void @_Z11UpdateNodesRKSt6vectorIjSaIjEEP6aiNode(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef %1387)
          to label %.thread788 unwind label %1382

.thread788:                                       ; preds = %._crit_edge605.thread, %1385, %1384
  %.sroa.13.0.lcssa784797 = phi i32 [ %.sroa.13.1, %1385 ], [ %.sroa.13.1, %1384 ], [ 0, %._crit_edge605.thread ]
  %.sroa.10.0.lcssa785796 = phi i32 [ %.sroa.10.1, %1385 ], [ %.sroa.10.1, %1384 ], [ 0, %._crit_edge605.thread ]
  %.sroa.7.0.lcssa786795 = phi i32 [ %.sroa.7.1, %1385 ], [ %.sroa.7.1, %1384 ], [ 0, %._crit_edge605.thread ]
  %.sroa.0.0.lcssa787794 = phi i32 [ %spec.select422, %1385 ], [ %spec.select422, %1384 ], [ 0, %._crit_edge605.thread ]
  %1388 = call noundef i64 @_ZNKSt6vectorIP6aiMeshSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %3) #11
  %1389 = load i32, ptr %20, align 8, !tbaa !5
  %1390 = zext i32 %1389 to i64
  %.not = icmp eq i64 %1388, %1390
  %.phi.trans.insert = getelementptr inbounds i8, ptr %1, i64 24
  %.pre753 = load ptr, ptr %.phi.trans.insert, align 8, !tbaa !13
  br i1 %.not, label %._crit_edge752, label %1391

1391:                                             ; preds = %.thread788
  %1392 = icmp eq ptr %.pre753, null
  br i1 %1392, label %1394, label %1393

1393:                                             ; preds = %1391
  call void @_ZdaPv(ptr noundef nonnull %.pre753) #13
  br label %1394

1394:                                             ; preds = %1393, %1391
  %1395 = call noundef i64 @_ZNKSt6vectorIP6aiMeshSaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %3) #11
  %1396 = trunc i64 %1395 to i32
  store i32 %1396, ptr %20, align 8, !tbaa !5
  %1397 = shl i64 %1395, 3
  %1398 = and i64 %1397, 34359738360
  %1399 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %1398) #14
          to label %1400 unwind label %1382

1400:                                             ; preds = %1394
  store ptr %1399, ptr %.phi.trans.insert, align 8, !tbaa !13
  br label %._crit_edge752

._crit_edge752:                                   ; preds = %.thread788, %1400
  %1401 = phi ptr [ %1399, %1400 ], [ %.pre753, %.thread788 ]
  %1402 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIP6aiMeshSaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef 0) #11
  %1403 = load i32, ptr %20, align 8, !tbaa !5
  %1404 = zext i32 %1403 to i64
  %1405 = shl nuw nsw i64 %1404, 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %1401, ptr nonnull align 8 %1402, i64 %1405, i1 false)
  %1406 = invoke noundef zeroext i1 @_ZN6Assimp13DefaultLogger12isNullLoggerEv()
          to label %1407 unwind label %1382

1407:                                             ; preds = %._crit_edge752
  br i1 %1406, label %1428, label %1408

1408:                                             ; preds = %1407
  call void @llvm.lifetime.start.p0(i64 1024, ptr nonnull %19) #11
  %1409 = getelementptr inbounds i8, ptr %0, i64 24
  %1410 = load i32, ptr %1409, align 8, !tbaa !21
  %1411 = and i32 %1410, 1
  %.not364 = icmp eq i32 %1411, 0
  %1412 = select i1 %.not364, ptr @.str.9, ptr @.str.8
  %1413 = and i32 %1410, 2
  %.not365 = icmp eq i32 %1413, 0
  %1414 = select i1 %.not365, ptr @.str.9, ptr @.str.8
  %1415 = and i32 %1410, 4
  %.not366 = icmp eq i32 %1415, 0
  %1416 = select i1 %.not366, ptr @.str.9, ptr @.str.8
  %1417 = and i32 %1410, 8
  %.not367 = icmp eq i32 %1417, 0
  %1418 = select i1 %.not367, ptr @.str.9, ptr @.str.8
  %1419 = call i32 (ptr, i64, ptr, ...) @snprintf(ptr noundef nonnull dereferenceable(1) %19, i64 noundef 1024, ptr noundef nonnull @.str.7, i32 noundef %.sroa.0.0.lcssa787794, ptr noundef nonnull %1412, i32 noundef %.sroa.7.0.lcssa786795, ptr noundef nonnull %1414, i32 noundef %.sroa.10.0.lcssa785796, ptr noundef nonnull %1416, i32 noundef %.sroa.13.0.lcssa784797, ptr noundef nonnull %1418) #11
  %1420 = invoke noundef ptr @_ZN6Assimp13DefaultLogger3getEv()
          to label %1421 unwind label %1426

1421:                                             ; preds = %1408
  invoke void @_ZN6Assimp6Logger4infoIJRA1024_cEEEvDpOT_(ptr noundef nonnull align 8 dereferenceable(12) %1420, ptr noundef nonnull align 1 dereferenceable(1024) %19)
          to label %1422 unwind label %1426

1422:                                             ; preds = %1421
  %1423 = invoke noundef ptr @_ZN6Assimp13DefaultLogger3getEv()
          to label %1424 unwind label %1426

1424:                                             ; preds = %1422
  invoke void @_ZN6Assimp6Logger5debugEPKc(ptr noundef nonnull align 8 dereferenceable(12) %1423, ptr noundef nonnull @.str.10)
          to label %1425 unwind label %1426

1425:                                             ; preds = %1424
  call void @llvm.lifetime.end.p0(i64 1024, ptr nonnull %19) #11
  br label %1428

1426:                                             ; preds = %1424, %1422, %1421, %1408
  %1427 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 1024, ptr nonnull %19) #11
  br label %1430

1428:                                             ; preds = %1425, %1407
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #11
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %4) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) #11
  call void @_ZNSt6vectorIP6aiMeshSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) #11
  br label %1429

1429:                                             ; preds = %1428, %24
  ret void

1430:                                             ; preds = %1426, %1382, %1380, %1376
  %.pn417.pn = phi { ptr, i32 } [ %.pn417, %1376 ], [ %1383, %1382 ], [ %1381, %1380 ], [ %1427, %1426 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #11
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %4) #11
  br label %1431

1431:                                             ; preds = %1430, %43
  %.pn417.pn.pn = phi { ptr, i32 } [ %.pn417.pn, %1430 ], [ %44, %43 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) #11
  br label %1432

1432:                                             ; preds = %1431, %41
  %.pn417.pn.pn.pn = phi { ptr, i32 } [ %.pn417.pn.pn, %1431 ], [ %42, %41 ]
  call void @_ZNSt6vectorIP6aiMeshSaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #11
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) #11
  resume { ptr, i32 } %.pn417.pn.pn.pn

1433:                                             ; preds = %1379, %57
  unreachable
}

declare noundef ptr @_ZN6Assimp13DefaultLogger3getEv() local_unnamed_addr #4

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

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

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

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

declare i32 @__gxx_personality_v0(...)

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

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

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

declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr

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

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

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

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

declare void @__cxa_free_exception(ptr) local_unnamed_addr

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

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

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

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

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

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

declare noundef ptr @_ZN6Assimp28ComputeVertexBoneWeightTableEPK6aiMesh(ptr noundef) local_unnamed_addr #4

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

declare noundef zeroext i1 @_ZN6Assimp13DefaultLogger12isNullLoggerEv() local_unnamed_addr #4

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

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !7, i64 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, !10, i64 24}
!14 = !{!10, !10, i64 0}
!15 = !{!16, !7, i64 0}
!16 = !{!"_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, !17, i64 1280, !18, i64 1284, !10, i64 1312}
!17 = !{!"_ZTS16aiMorphingMethod", !8, i64 0}
!18 = !{!"_ZTS6aiAABB", !19, i64 0, !19, i64 12}
!19 = !{!"_ZTS10aiVector3tIfE", !20, i64 0, !20, i64 4, !20, i64 8}
!20 = !{!"float", !8, i64 0}
!21 = !{!22, !7, i64 24}
!22 = !{!"_ZTSN6Assimp18SortByPTypeProcessE", !23, i64 0, !7, i64 24}
!23 = !{!"_ZTSN6Assimp11BaseProcessE", !10, i64 8, !10, i64 16}
!24 = !{!16, !10, i64 208}
!25 = !{!16, !7, i64 8}
!26 = !{!27, !7, i64 0}
!27 = !{!"_ZTS6aiFace", !7, i64 0, !10, i64 8}
!28 = distinct !{!28, !29}
!29 = !{!"llvm.loop.mustprogress"}
!30 = !{!16, !7, i64 232}
!31 = !{!16, !7, i64 4}
!32 = !{!16, !10, i64 16}
!33 = !{!16, !10, i64 24}
!34 = !{!16, !10, i64 32}
!35 = !{!16, !10, i64 40}
!36 = !{!16, !7, i64 1264}
!37 = !{!16, !10, i64 1272}
!38 = !{!16, !7, i64 216}
!39 = !{!40, !7, i64 1192}
!40 = !{!"_ZTS10aiAnimMesh", !11, i64 0, !10, i64 1032, !10, i64 1040, !10, i64 1048, !10, i64 1056, !8, i64 1064, !8, i64 1128, !7, i64 1192, !20, i64 1196}
!41 = !{!40, !10, i64 1032}
!42 = !{!40, !10, i64 1040}
!43 = !{!40, !10, i64 1048}
!44 = !{!40, !10, i64 1056}
!45 = distinct !{!45, !29}
!46 = !{!16, !10, i64 224}
!47 = !{!48, !7, i64 1028}
!48 = !{!"_ZTS6aiBone", !11, i64 0, !7, i64 1028, !10, i64 1032, !10, i64 1040, !10, i64 1048, !49, i64 1056}
!49 = !{!"_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}
!50 = distinct !{!50, !29}
!51 = !{!27, !10, i64 8}
!52 = !{!53, !7, i64 0}
!53 = !{!"_ZTSSt4pairIjfE", !7, i64 0, !20, i64 4}
!54 = distinct !{!54, !29}
!55 = !{i64 0, i64 4, !56, i64 4, i64 4, !56, i64 8, i64 4, !56}
!56 = !{!20, !20, i64 0}
!57 = !{i64 0, i64 4, !56, i64 4, i64 4, !56, i64 8, i64 4, !56, i64 12, i64 4, !56}
!58 = distinct !{!58, !29}
!59 = distinct !{!59, !29}
!60 = distinct !{!60, !29}
!61 = distinct !{!61, !29}
!62 = !{i64 0, i64 4, !56, i64 4, i64 4, !56, i64 8, i64 4, !56, i64 12, i64 4, !56, i64 16, i64 4, !56, i64 20, i64 4, !56, i64 24, i64 4, !56, i64 28, i64 4, !56, i64 32, i64 4, !56, i64 36, i64 4, !56, i64 40, i64 4, !56, i64 44, i64 4, !56, i64 48, i64 4, !56, i64 52, i64 4, !56, i64 56, i64 4, !56, i64 60, i64 4, !56}
!63 = !{!48, !10, i64 1048}
!64 = distinct !{!64, !29}
!65 = distinct !{!65, !29}
!66 = distinct !{!66, !29}
!67 = !{!6, !10, i64 8}


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