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

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

%"class.__gnu_cxx::__normal_iterator.32" = type { ptr }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::allocator.47" = type { 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.aiString = type { i32, [1024 x i8] }
%struct.aiAABB = type { %class.aiVector3t, %class.aiVector3t }
%class.aiVector3t = type { float, float, float }
%class.aiColor4t = type { float, float, float, float }
%struct.aiFace = type { i32, ptr }

@.str.10 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [64 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [66 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [56 x i8], align 1

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

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

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

declare noundef ptr @_ZN6Assimp13DefaultLogger3getEv() #6

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

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

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

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

declare void @_ZN6Assimp6Logger4warnEPKc(ptr noundef nonnull align 8 dereferenceable(12), ptr noundef) #6

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN6Assimp13SceneCombiner11MergeMeshesEPP6aiMeshjN9__gnu_cxx17__normal_iteratorIPKS2_St6vectorIS2_SaIS2_EEEESB_(ptr noundef %0, i32 noundef %1, ptr %2, ptr %3) #8 align 2 personality ptr @__gxx_personality_v0 {
  %5 = alloca %"class.__gnu_cxx::__normal_iterator.32", align 8
  %6 = alloca %"class.__gnu_cxx::__normal_iterator.32", align 8
  %7 = alloca ptr, align 8
  %8 = alloca i32, align 4
  %9 = alloca ptr, align 8
  %10 = alloca %"class.std::__cxx11::basic_string", align 8
  %11 = alloca %"class.__gnu_cxx::__normal_iterator.32", align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca i32, align 4
  %15 = alloca %"class.std::__cxx11::basic_string", align 8
  %16 = alloca %"class.std::allocator.47", align 1
  %17 = alloca %"class.__gnu_cxx::__normal_iterator.32", align 8
  %18 = alloca ptr, align 8
  %19 = alloca %"class.__gnu_cxx::__normal_iterator.32", align 8
  %20 = alloca %"class.__gnu_cxx::__normal_iterator.32", align 8
  %21 = alloca ptr, align 8
  %22 = alloca %"class.__gnu_cxx::__normal_iterator.32", align 8
  %23 = alloca i32, align 4
  %24 = alloca %"class.__gnu_cxx::__normal_iterator.32", align 8
  %25 = alloca ptr, align 8
  %26 = alloca %"class.__gnu_cxx::__normal_iterator.32", align 8
  %27 = alloca ptr, align 8
  %28 = alloca i32, align 4
  %29 = alloca %"class.__gnu_cxx::__normal_iterator.32", align 8
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca ptr, align 8
  %33 = alloca i32, align 4
  %34 = alloca %"class.__gnu_cxx::__normal_iterator.32", align 8
  %35 = alloca %"class.__gnu_cxx::__normal_iterator.32", align 8
  %36 = alloca %"class.__gnu_cxx::__normal_iterator.32", align 8
  %37 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.32", ptr %5, i32 0, i32 0
  store ptr %2, ptr %37, align 8
  %38 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.32", ptr %6, i32 0, i32 0
  store ptr %3, ptr %38, align 8
  store ptr %0, ptr %7, align 8, !tbaa !5
  store i32 %1, ptr %8, align 4, !tbaa !9
  %39 = load ptr, ptr %7, align 8, !tbaa !5
  %40 = icmp eq ptr null, %39
  br i1 %40, label %41, label %42

41:                                               ; preds = %4
  br label %694

42:                                               ; preds = %4
  %43 = call noundef zeroext i1 @_ZN9__gnu_cxxeqIPKP6aiMeshSt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull align 8 dereferenceable(8) %6) #9
  br i1 %43, label %44, label %46

44:                                               ; preds = %42
  %45 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr null, ptr %45, align 8, !tbaa !5
  br label %694

46:                                               ; preds = %42
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #9
  %47 = call noalias noundef nonnull ptr @_Znwm(i64 noundef 1320) #10
  call void @_ZN6aiMeshC2Ev(ptr noundef nonnull align 8 dereferenceable(1320) %47) #9
  %48 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %47, ptr %48, align 8, !tbaa !5
  store ptr %47, ptr %9, align 8, !tbaa !5
  %49 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %5) #9
  %50 = load ptr, ptr %49, align 8, !tbaa !5
  %51 = getelementptr inbounds %struct.aiMesh, ptr %50, i32 0, i32 13
  %52 = load i32, ptr %51, align 8, !tbaa !11
  %53 = load ptr, ptr %9, align 8, !tbaa !5
  %54 = getelementptr inbounds %struct.aiMesh, ptr %53, i32 0, i32 13
  store i32 %52, ptr %54, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 32, ptr %10) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #9
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %11, ptr align 8 %5, i64 8, i1 false), !tbaa.struct !18
  br label %55

55:                                               ; preds = %120, %46
  %56 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKP6aiMeshSt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull align 8 dereferenceable(8) %6) #9
  br i1 %56, label %58, label %57

57:                                               ; preds = %55
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #9
  br label %123

58:                                               ; preds = %55
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #9
  %59 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %11) #9
  %60 = load ptr, ptr %59, align 8, !tbaa !5
  %61 = getelementptr inbounds %struct.aiMesh, ptr %60, i32 0, i32 14
  %62 = invoke noundef ptr @_ZNK8aiString5C_StrEv(ptr noundef nonnull align 4 dereferenceable(1028) %61)
          to label %63 unwind label %74

63:                                               ; preds = %58
  store ptr %62, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %15) #9
  %64 = load ptr, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %16) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef %64, ptr noundef nonnull align 1 dereferenceable(1) %16)
          to label %65 unwind label %78

65:                                               ; preds = %63
  %66 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull align 8 dereferenceable(32) %15)
          to label %67 unwind label %82

67:                                               ; preds = %65
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #9
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %16) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %15) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #9
  %68 = call ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEmiEl(ptr noundef nonnull align 8 dereferenceable(8) %6, i64 noundef 1) #9
  %69 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.32", ptr %17, i32 0, i32 0
  store ptr %68, ptr %69, align 8
  %70 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKP6aiMeshSt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull align 8 dereferenceable(8) %17) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #9
  br i1 %70, label %71, label %87

71:                                               ; preds = %67
  %72 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef @.str.10)
          to label %73 unwind label %74

73:                                               ; preds = %71
  br label %87

74:                                               ; preds = %71, %58
  %75 = landingpad { ptr, i32 }
          cleanup
  %76 = extractvalue { ptr, i32 } %75, 0
  store ptr %76, ptr %13, align 8
  %77 = extractvalue { ptr, i32 } %75, 1
  store i32 %77, ptr %14, align 4
  br label %122

78:                                               ; preds = %63
  %79 = landingpad { ptr, i32 }
          cleanup
  %80 = extractvalue { ptr, i32 } %79, 0
  store ptr %80, ptr %13, align 8
  %81 = extractvalue { ptr, i32 } %79, 1
  store i32 %81, ptr %14, align 4
  br label %86

82:                                               ; preds = %65
  %83 = landingpad { ptr, i32 }
          cleanup
  %84 = extractvalue { ptr, i32 } %83, 0
  store ptr %84, ptr %13, align 8
  %85 = extractvalue { ptr, i32 } %83, 1
  store i32 %85, ptr %14, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #9
  br label %86

86:                                               ; preds = %82, %78
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %16) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %15) #9
  br label %122

87:                                               ; preds = %73, %67
  %88 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %11) #9
  %89 = load ptr, ptr %88, align 8, !tbaa !5
  %90 = getelementptr inbounds %struct.aiMesh, ptr %89, i32 0, i32 1
  %91 = load i32, ptr %90, align 4, !tbaa !19
  %92 = load ptr, ptr %9, align 8, !tbaa !5
  %93 = getelementptr inbounds %struct.aiMesh, ptr %92, i32 0, i32 1
  %94 = load i32, ptr %93, align 4, !tbaa !19
  %95 = add i32 %94, %91
  store i32 %95, ptr %93, align 4, !tbaa !19
  %96 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %11) #9
  %97 = load ptr, ptr %96, align 8, !tbaa !5
  %98 = getelementptr inbounds %struct.aiMesh, ptr %97, i32 0, i32 2
  %99 = load i32, ptr %98, align 8, !tbaa !20
  %100 = load ptr, ptr %9, align 8, !tbaa !5
  %101 = getelementptr inbounds %struct.aiMesh, ptr %100, i32 0, i32 2
  %102 = load i32, ptr %101, align 8, !tbaa !20
  %103 = add i32 %102, %99
  store i32 %103, ptr %101, align 8, !tbaa !20
  %104 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %11) #9
  %105 = load ptr, ptr %104, align 8, !tbaa !5
  %106 = getelementptr inbounds %struct.aiMesh, ptr %105, i32 0, i32 11
  %107 = load i32, ptr %106, align 8, !tbaa !21
  %108 = load ptr, ptr %9, align 8, !tbaa !5
  %109 = getelementptr inbounds %struct.aiMesh, ptr %108, i32 0, i32 11
  %110 = load i32, ptr %109, align 8, !tbaa !21
  %111 = add i32 %110, %107
  store i32 %111, ptr %109, align 8, !tbaa !21
  %112 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %11) #9
  %113 = load ptr, ptr %112, align 8, !tbaa !5
  %114 = getelementptr inbounds %struct.aiMesh, ptr %113, i32 0, i32 0
  %115 = load i32, ptr %114, align 8, !tbaa !22
  %116 = load ptr, ptr %9, align 8, !tbaa !5
  %117 = getelementptr inbounds %struct.aiMesh, ptr %116, i32 0, i32 0
  %118 = load i32, ptr %117, align 8, !tbaa !22
  %119 = or i32 %118, %115
  store i32 %119, ptr %117, align 8, !tbaa !22
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #9
  br label %120

120:                                              ; preds = %87
  %121 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %11) #9
  br label %55, !llvm.loop !23

122:                                              ; preds = %86, %74
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #9
  br label %695

123:                                              ; preds = %57
  %124 = load ptr, ptr %9, align 8, !tbaa !5
  %125 = getelementptr inbounds %struct.aiMesh, ptr %124, i32 0, i32 14
  %126 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %10) #9
  invoke void @_ZN8aiString3SetEPKc(ptr noundef nonnull align 4 dereferenceable(1028) %125, ptr noundef %126)
          to label %127 unwind label %161

127:                                              ; preds = %123
  %128 = load ptr, ptr %9, align 8, !tbaa !5
  %129 = getelementptr inbounds %struct.aiMesh, ptr %128, i32 0, i32 1
  %130 = load i32, ptr %129, align 4, !tbaa !19
  %131 = icmp ne i32 %130, 0
  br i1 %131, label %132, label %563

132:                                              ; preds = %127
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #9
  %133 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %5) #9
  %134 = load ptr, ptr %133, align 8, !tbaa !5
  %135 = invoke noundef zeroext i1 @_ZNK6aiMesh12HasPositionsEv(ptr noundef nonnull align 8 dereferenceable(1320) %134)
          to label %136 unwind label %165

136:                                              ; preds = %132
  br i1 %135, label %137, label %206

137:                                              ; preds = %136
  %138 = load ptr, ptr %9, align 8, !tbaa !5
  %139 = getelementptr inbounds %struct.aiMesh, ptr %138, i32 0, i32 1
  %140 = load i32, ptr %139, align 4, !tbaa !19
  %141 = zext i32 %140 to i64
  %142 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %141, i64 12)
  %143 = extractvalue { i64, i1 } %142, 1
  %144 = extractvalue { i64, i1 } %142, 0
  %145 = select i1 %143, i64 -1, i64 %144
  %146 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %145) #10
          to label %147 unwind label %165

147:                                              ; preds = %137
  %148 = icmp eq i64 %141, 0
  br i1 %148, label %155, label %149

149:                                              ; preds = %147
  %150 = getelementptr inbounds %class.aiVector3t, ptr %146, i64 %141
  br label %151

151:                                              ; preds = %151, %149
  %152 = phi ptr [ %146, %149 ], [ %153, %151 ]
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %152) #9
  %153 = getelementptr inbounds %class.aiVector3t, ptr %152, i64 1
  %154 = icmp eq ptr %153, %150
  br i1 %154, label %155, label %151

155:                                              ; preds = %151, %147
  %156 = load ptr, ptr %9, align 8, !tbaa !5
  %157 = getelementptr inbounds %struct.aiMesh, ptr %156, i32 0, i32 3
  store ptr %146, ptr %157, align 8, !tbaa !25
  store ptr %146, ptr %18, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #9
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %19, ptr align 8 %5, i64 8, i1 false), !tbaa.struct !18
  br label %158

158:                                              ; preds = %203, %155
  %159 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKP6aiMeshSt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %19, ptr noundef nonnull align 8 dereferenceable(8) %6) #9
  br i1 %159, label %169, label %160

160:                                              ; preds = %158
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #9
  br label %205

161:                                              ; preds = %674, %568, %123
  %162 = landingpad { ptr, i32 }
          cleanup
  %163 = extractvalue { ptr, i32 } %162, 0
  store ptr %163, ptr %13, align 8
  %164 = extractvalue { ptr, i32 } %162, 1
  store i32 %164, ptr %14, align 4
  br label %695

165:                                              ; preds = %277, %272, %211, %206, %137, %132
  %166 = landingpad { ptr, i32 }
          cleanup
  %167 = extractvalue { ptr, i32 } %166, 0
  store ptr %167, ptr %13, align 8
  %168 = extractvalue { ptr, i32 } %166, 1
  store i32 %168, ptr %14, align 4
  br label %562

169:                                              ; preds = %158
  %170 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %19) #9
  %171 = load ptr, ptr %170, align 8, !tbaa !5
  %172 = getelementptr inbounds %struct.aiMesh, ptr %171, i32 0, i32 3
  %173 = load ptr, ptr %172, align 8, !tbaa !25
  %174 = icmp ne ptr %173, null
  br i1 %174, label %175, label %187

175:                                              ; preds = %169
  %176 = load ptr, ptr %18, align 8, !tbaa !5
  %177 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %19) #9
  %178 = load ptr, ptr %177, align 8, !tbaa !5
  %179 = getelementptr inbounds %struct.aiMesh, ptr %178, i32 0, i32 3
  %180 = load ptr, ptr %179, align 8, !tbaa !25
  %181 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %19) #9
  %182 = load ptr, ptr %181, align 8, !tbaa !5
  %183 = getelementptr inbounds %struct.aiMesh, ptr %182, i32 0, i32 1
  %184 = load i32, ptr %183, align 4, !tbaa !19
  %185 = zext i32 %184 to i64
  %186 = mul i64 %185, 12
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %176, ptr align 4 %180, i64 %186, i1 false)
  br label %195

187:                                              ; preds = %169
  %188 = invoke noundef ptr @_ZN6Assimp13DefaultLogger3getEv()
          to label %189 unwind label %191

189:                                              ; preds = %187
  invoke void @_ZN6Assimp6Logger4warnEPKc(ptr noundef nonnull align 8 dereferenceable(12) %188, ptr noundef @.str.11)
          to label %190 unwind label %191

190:                                              ; preds = %189
  br label %195

191:                                              ; preds = %189, %187
  %192 = landingpad { ptr, i32 }
          cleanup
  %193 = extractvalue { ptr, i32 } %192, 0
  store ptr %193, ptr %13, align 8
  %194 = extractvalue { ptr, i32 } %192, 1
  store i32 %194, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #9
  br label %562

195:                                              ; preds = %190, %175
  %196 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %19) #9
  %197 = load ptr, ptr %196, align 8, !tbaa !5
  %198 = getelementptr inbounds %struct.aiMesh, ptr %197, i32 0, i32 1
  %199 = load i32, ptr %198, align 4, !tbaa !19
  %200 = load ptr, ptr %18, align 8, !tbaa !5
  %201 = zext i32 %199 to i64
  %202 = getelementptr inbounds %class.aiVector3t, ptr %200, i64 %201
  store ptr %202, ptr %18, align 8, !tbaa !5
  br label %203

203:                                              ; preds = %195
  %204 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %19) #9
  br label %158, !llvm.loop !26

205:                                              ; preds = %160
  br label %206

206:                                              ; preds = %205, %136
  %207 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %5) #9
  %208 = load ptr, ptr %207, align 8, !tbaa !5
  %209 = invoke noundef zeroext i1 @_ZNK6aiMesh10HasNormalsEv(ptr noundef nonnull align 8 dereferenceable(1320) %208)
          to label %210 unwind label %165

210:                                              ; preds = %206
  br i1 %209, label %211, label %272

211:                                              ; preds = %210
  %212 = load ptr, ptr %9, align 8, !tbaa !5
  %213 = getelementptr inbounds %struct.aiMesh, ptr %212, i32 0, i32 1
  %214 = load i32, ptr %213, align 4, !tbaa !19
  %215 = zext i32 %214 to i64
  %216 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %215, i64 12)
  %217 = extractvalue { i64, i1 } %216, 1
  %218 = extractvalue { i64, i1 } %216, 0
  %219 = select i1 %217, i64 -1, i64 %218
  %220 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %219) #10
          to label %221 unwind label %165

221:                                              ; preds = %211
  %222 = icmp eq i64 %215, 0
  br i1 %222, label %229, label %223

223:                                              ; preds = %221
  %224 = getelementptr inbounds %class.aiVector3t, ptr %220, i64 %215
  br label %225

225:                                              ; preds = %225, %223
  %226 = phi ptr [ %220, %223 ], [ %227, %225 ]
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %226) #9
  %227 = getelementptr inbounds %class.aiVector3t, ptr %226, i64 1
  %228 = icmp eq ptr %227, %224
  br i1 %228, label %229, label %225

229:                                              ; preds = %225, %221
  %230 = load ptr, ptr %9, align 8, !tbaa !5
  %231 = getelementptr inbounds %struct.aiMesh, ptr %230, i32 0, i32 4
  store ptr %220, ptr %231, align 8, !tbaa !27
  store ptr %220, ptr %18, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #9
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %20, ptr align 8 %5, i64 8, i1 false), !tbaa.struct !18
  br label %232

232:                                              ; preds = %269, %229
  %233 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKP6aiMeshSt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %20, ptr noundef nonnull align 8 dereferenceable(8) %6) #9
  br i1 %233, label %235, label %234

234:                                              ; preds = %232
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #9
  br label %271

235:                                              ; preds = %232
  %236 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %20) #9
  %237 = load ptr, ptr %236, align 8, !tbaa !5
  %238 = getelementptr inbounds %struct.aiMesh, ptr %237, i32 0, i32 4
  %239 = load ptr, ptr %238, align 8, !tbaa !27
  %240 = icmp ne ptr %239, null
  br i1 %240, label %241, label %253

241:                                              ; preds = %235
  %242 = load ptr, ptr %18, align 8, !tbaa !5
  %243 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %20) #9
  %244 = load ptr, ptr %243, align 8, !tbaa !5
  %245 = getelementptr inbounds %struct.aiMesh, ptr %244, i32 0, i32 4
  %246 = load ptr, ptr %245, align 8, !tbaa !27
  %247 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %20) #9
  %248 = load ptr, ptr %247, align 8, !tbaa !5
  %249 = getelementptr inbounds %struct.aiMesh, ptr %248, i32 0, i32 1
  %250 = load i32, ptr %249, align 4, !tbaa !19
  %251 = zext i32 %250 to i64
  %252 = mul i64 %251, 12
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %242, ptr align 4 %246, i64 %252, i1 false)
  br label %261

253:                                              ; preds = %235
  %254 = invoke noundef ptr @_ZN6Assimp13DefaultLogger3getEv()
          to label %255 unwind label %257

255:                                              ; preds = %253
  invoke void @_ZN6Assimp6Logger4warnEPKc(ptr noundef nonnull align 8 dereferenceable(12) %254, ptr noundef @.str.12)
          to label %256 unwind label %257

256:                                              ; preds = %255
  br label %261

257:                                              ; preds = %255, %253
  %258 = landingpad { ptr, i32 }
          cleanup
  %259 = extractvalue { ptr, i32 } %258, 0
  store ptr %259, ptr %13, align 8
  %260 = extractvalue { ptr, i32 } %258, 1
  store i32 %260, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #9
  br label %562

261:                                              ; preds = %256, %241
  %262 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %20) #9
  %263 = load ptr, ptr %262, align 8, !tbaa !5
  %264 = getelementptr inbounds %struct.aiMesh, ptr %263, i32 0, i32 1
  %265 = load i32, ptr %264, align 4, !tbaa !19
  %266 = load ptr, ptr %18, align 8, !tbaa !5
  %267 = zext i32 %265 to i64
  %268 = getelementptr inbounds %class.aiVector3t, ptr %266, i64 %267
  store ptr %268, ptr %18, align 8, !tbaa !5
  br label %269

269:                                              ; preds = %261
  %270 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %20) #9
  br label %232, !llvm.loop !28

271:                                              ; preds = %234
  br label %272

272:                                              ; preds = %271, %210
  %273 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %5) #9
  %274 = load ptr, ptr %273, align 8, !tbaa !5
  %275 = invoke noundef zeroext i1 @_ZNK6aiMesh24HasTangentsAndBitangentsEv(ptr noundef nonnull align 8 dereferenceable(1320) %274)
          to label %276 unwind label %165

276:                                              ; preds = %272
  br i1 %275, label %277, label %381

277:                                              ; preds = %276
  %278 = load ptr, ptr %9, align 8, !tbaa !5
  %279 = getelementptr inbounds %struct.aiMesh, ptr %278, i32 0, i32 1
  %280 = load i32, ptr %279, align 4, !tbaa !19
  %281 = zext i32 %280 to i64
  %282 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %281, i64 12)
  %283 = extractvalue { i64, i1 } %282, 1
  %284 = extractvalue { i64, i1 } %282, 0
  %285 = select i1 %283, i64 -1, i64 %284
  %286 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %285) #10
          to label %287 unwind label %165

287:                                              ; preds = %277
  %288 = icmp eq i64 %281, 0
  br i1 %288, label %295, label %289

289:                                              ; preds = %287
  %290 = getelementptr inbounds %class.aiVector3t, ptr %286, i64 %281
  br label %291

291:                                              ; preds = %291, %289
  %292 = phi ptr [ %286, %289 ], [ %293, %291 ]
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %292) #9
  %293 = getelementptr inbounds %class.aiVector3t, ptr %292, i64 1
  %294 = icmp eq ptr %293, %290
  br i1 %294, label %295, label %291

295:                                              ; preds = %291, %287
  %296 = load ptr, ptr %9, align 8, !tbaa !5
  %297 = getelementptr inbounds %struct.aiMesh, ptr %296, i32 0, i32 5
  store ptr %286, ptr %297, align 8, !tbaa !29
  store ptr %286, ptr %18, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #9
  %298 = load ptr, ptr %9, align 8, !tbaa !5
  %299 = getelementptr inbounds %struct.aiMesh, ptr %298, i32 0, i32 1
  %300 = load i32, ptr %299, align 4, !tbaa !19
  %301 = zext i32 %300 to i64
  %302 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %301, i64 12)
  %303 = extractvalue { i64, i1 } %302, 1
  %304 = extractvalue { i64, i1 } %302, 0
  %305 = select i1 %303, i64 -1, i64 %304
  %306 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %305) #10
          to label %307 unwind label %321

307:                                              ; preds = %295
  %308 = icmp eq i64 %301, 0
  br i1 %308, label %315, label %309

309:                                              ; preds = %307
  %310 = getelementptr inbounds %class.aiVector3t, ptr %306, i64 %301
  br label %311

311:                                              ; preds = %311, %309
  %312 = phi ptr [ %306, %309 ], [ %313, %311 ]
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %312) #9
  %313 = getelementptr inbounds %class.aiVector3t, ptr %312, i64 1
  %314 = icmp eq ptr %313, %310
  br i1 %314, label %315, label %311

315:                                              ; preds = %311, %307
  %316 = load ptr, ptr %9, align 8, !tbaa !5
  %317 = getelementptr inbounds %struct.aiMesh, ptr %316, i32 0, i32 6
  store ptr %306, ptr %317, align 8, !tbaa !30
  store ptr %306, ptr %21, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #9
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %22, ptr align 8 %5, i64 8, i1 false), !tbaa.struct !18
  br label %318

318:                                              ; preds = %377, %315
  %319 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKP6aiMeshSt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 8 dereferenceable(8) %6) #9
  br i1 %319, label %325, label %320

320:                                              ; preds = %318
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #9
  br label %379

321:                                              ; preds = %295
  %322 = landingpad { ptr, i32 }
          cleanup
  %323 = extractvalue { ptr, i32 } %322, 0
  store ptr %323, ptr %13, align 8
  %324 = extractvalue { ptr, i32 } %322, 1
  store i32 %324, ptr %14, align 4
  br label %380

325:                                              ; preds = %318
  %326 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %22) #9
  %327 = load ptr, ptr %326, align 8, !tbaa !5
  %328 = getelementptr inbounds %struct.aiMesh, ptr %327, i32 0, i32 5
  %329 = load ptr, ptr %328, align 8, !tbaa !29
  %330 = icmp ne ptr %329, null
  br i1 %330, label %331, label %354

331:                                              ; preds = %325
  %332 = load ptr, ptr %18, align 8, !tbaa !5
  %333 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %22) #9
  %334 = load ptr, ptr %333, align 8, !tbaa !5
  %335 = getelementptr inbounds %struct.aiMesh, ptr %334, i32 0, i32 5
  %336 = load ptr, ptr %335, align 8, !tbaa !29
  %337 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %22) #9
  %338 = load ptr, ptr %337, align 8, !tbaa !5
  %339 = getelementptr inbounds %struct.aiMesh, ptr %338, i32 0, i32 1
  %340 = load i32, ptr %339, align 4, !tbaa !19
  %341 = zext i32 %340 to i64
  %342 = mul i64 %341, 12
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %332, ptr align 4 %336, i64 %342, i1 false)
  %343 = load ptr, ptr %21, align 8, !tbaa !5
  %344 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %22) #9
  %345 = load ptr, ptr %344, align 8, !tbaa !5
  %346 = getelementptr inbounds %struct.aiMesh, ptr %345, i32 0, i32 6
  %347 = load ptr, ptr %346, align 8, !tbaa !30
  %348 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %22) #9
  %349 = load ptr, ptr %348, align 8, !tbaa !5
  %350 = getelementptr inbounds %struct.aiMesh, ptr %349, i32 0, i32 1
  %351 = load i32, ptr %350, align 4, !tbaa !19
  %352 = zext i32 %351 to i64
  %353 = mul i64 %352, 12
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %343, ptr align 4 %347, i64 %353, i1 false)
  br label %362

354:                                              ; preds = %325
  %355 = invoke noundef ptr @_ZN6Assimp13DefaultLogger3getEv()
          to label %356 unwind label %358

356:                                              ; preds = %354
  invoke void @_ZN6Assimp6Logger4warnEPKc(ptr noundef nonnull align 8 dereferenceable(12) %355, ptr noundef @.str.13)
          to label %357 unwind label %358

357:                                              ; preds = %356
  br label %362

358:                                              ; preds = %356, %354
  %359 = landingpad { ptr, i32 }
          cleanup
  %360 = extractvalue { ptr, i32 } %359, 0
  store ptr %360, ptr %13, align 8
  %361 = extractvalue { ptr, i32 } %359, 1
  store i32 %361, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #9
  br label %380

362:                                              ; preds = %357, %331
  %363 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %22) #9
  %364 = load ptr, ptr %363, align 8, !tbaa !5
  %365 = getelementptr inbounds %struct.aiMesh, ptr %364, i32 0, i32 1
  %366 = load i32, ptr %365, align 4, !tbaa !19
  %367 = load ptr, ptr %18, align 8, !tbaa !5
  %368 = zext i32 %366 to i64
  %369 = getelementptr inbounds %class.aiVector3t, ptr %367, i64 %368
  store ptr %369, ptr %18, align 8, !tbaa !5
  %370 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %22) #9
  %371 = load ptr, ptr %370, align 8, !tbaa !5
  %372 = getelementptr inbounds %struct.aiMesh, ptr %371, i32 0, i32 1
  %373 = load i32, ptr %372, align 4, !tbaa !19
  %374 = load ptr, ptr %21, align 8, !tbaa !5
  %375 = zext i32 %373 to i64
  %376 = getelementptr inbounds %class.aiVector3t, ptr %374, i64 %375
  store ptr %376, ptr %21, align 8, !tbaa !5
  br label %377

377:                                              ; preds = %362
  %378 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %22) #9
  br label %318, !llvm.loop !31

379:                                              ; preds = %320
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #9
  br label %381

380:                                              ; preds = %358, %321
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #9
  br label %562

381:                                              ; preds = %379, %276
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #9
  store i32 0, ptr %23, align 4, !tbaa !9
  br label %382

382:                                              ; preds = %473, %381
  %383 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %5) #9
  %384 = load ptr, ptr %383, align 8, !tbaa !5
  %385 = load i32, ptr %23, align 4, !tbaa !9
  %386 = invoke noundef zeroext i1 @_ZNK6aiMesh16HasTextureCoordsEj(ptr noundef nonnull align 8 dereferenceable(1320) %384, i32 noundef %385)
          to label %387 unwind label %427

387:                                              ; preds = %382
  br i1 %386, label %388, label %476

388:                                              ; preds = %387
  %389 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %5) #9
  %390 = load ptr, ptr %389, align 8, !tbaa !5
  %391 = getelementptr inbounds %struct.aiMesh, ptr %390, i32 0, i32 9
  %392 = load i32, ptr %23, align 4, !tbaa !9
  %393 = zext i32 %392 to i64
  %394 = getelementptr inbounds [8 x i32], ptr %391, i64 0, i64 %393
  %395 = load i32, ptr %394, align 4, !tbaa !9
  %396 = load ptr, ptr %9, align 8, !tbaa !5
  %397 = getelementptr inbounds %struct.aiMesh, ptr %396, i32 0, i32 9
  %398 = load i32, ptr %23, align 4, !tbaa !9
  %399 = zext i32 %398 to i64
  %400 = getelementptr inbounds [8 x i32], ptr %397, i64 0, i64 %399
  store i32 %395, ptr %400, align 4, !tbaa !9
  %401 = load ptr, ptr %9, align 8, !tbaa !5
  %402 = getelementptr inbounds %struct.aiMesh, ptr %401, i32 0, i32 1
  %403 = load i32, ptr %402, align 4, !tbaa !19
  %404 = zext i32 %403 to i64
  %405 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %404, i64 12)
  %406 = extractvalue { i64, i1 } %405, 1
  %407 = extractvalue { i64, i1 } %405, 0
  %408 = select i1 %406, i64 -1, i64 %407
  %409 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %408) #10
          to label %410 unwind label %427

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

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

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

418:                                              ; preds = %414, %410
  %419 = load ptr, ptr %9, align 8, !tbaa !5
  %420 = getelementptr inbounds %struct.aiMesh, ptr %419, i32 0, i32 8
  %421 = load i32, ptr %23, align 4, !tbaa !9
  %422 = zext i32 %421 to i64
  %423 = getelementptr inbounds [8 x ptr], ptr %420, i64 0, i64 %422
  store ptr %409, ptr %423, align 8, !tbaa !5
  store ptr %409, ptr %18, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #9
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %24, ptr align 8 %5, i64 8, i1 false), !tbaa.struct !18
  br label %424

424:                                              ; preds = %471, %418
  %425 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKP6aiMeshSt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull align 8 dereferenceable(8) %6) #9
  br i1 %425, label %431, label %426

426:                                              ; preds = %424
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #9
  br label %473

427:                                              ; preds = %477, %388, %382
  %428 = landingpad { ptr, i32 }
          cleanup
  %429 = extractvalue { ptr, i32 } %428, 0
  store ptr %429, ptr %13, align 8
  %430 = extractvalue { ptr, i32 } %428, 1
  store i32 %430, ptr %14, align 4
  br label %561

431:                                              ; preds = %424
  %432 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %24) #9
  %433 = load ptr, ptr %432, align 8, !tbaa !5
  %434 = getelementptr inbounds %struct.aiMesh, ptr %433, i32 0, i32 8
  %435 = load i32, ptr %23, align 4, !tbaa !9
  %436 = zext i32 %435 to i64
  %437 = getelementptr inbounds [8 x ptr], ptr %434, i64 0, i64 %436
  %438 = load ptr, ptr %437, align 8, !tbaa !5
  %439 = icmp ne ptr %438, null
  br i1 %439, label %440, label %455

440:                                              ; preds = %431
  %441 = load ptr, ptr %18, align 8, !tbaa !5
  %442 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %24) #9
  %443 = load ptr, ptr %442, align 8, !tbaa !5
  %444 = getelementptr inbounds %struct.aiMesh, ptr %443, i32 0, i32 8
  %445 = load i32, ptr %23, align 4, !tbaa !9
  %446 = zext i32 %445 to i64
  %447 = getelementptr inbounds [8 x ptr], ptr %444, i64 0, i64 %446
  %448 = load ptr, ptr %447, align 8, !tbaa !5
  %449 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %24) #9
  %450 = load ptr, ptr %449, align 8, !tbaa !5
  %451 = getelementptr inbounds %struct.aiMesh, ptr %450, i32 0, i32 1
  %452 = load i32, ptr %451, align 4, !tbaa !19
  %453 = zext i32 %452 to i64
  %454 = mul i64 %453, 12
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %441, ptr align 4 %448, i64 %454, i1 false)
  br label %463

455:                                              ; preds = %431
  %456 = invoke noundef ptr @_ZN6Assimp13DefaultLogger3getEv()
          to label %457 unwind label %459

457:                                              ; preds = %455
  invoke void @_ZN6Assimp6Logger4warnEPKc(ptr noundef nonnull align 8 dereferenceable(12) %456, ptr noundef @.str.14)
          to label %458 unwind label %459

458:                                              ; preds = %457
  br label %463

459:                                              ; preds = %457, %455
  %460 = landingpad { ptr, i32 }
          cleanup
  %461 = extractvalue { ptr, i32 } %460, 0
  store ptr %461, ptr %13, align 8
  %462 = extractvalue { ptr, i32 } %460, 1
  store i32 %462, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #9
  br label %561

463:                                              ; preds = %458, %440
  %464 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %24) #9
  %465 = load ptr, ptr %464, align 8, !tbaa !5
  %466 = getelementptr inbounds %struct.aiMesh, ptr %465, i32 0, i32 1
  %467 = load i32, ptr %466, align 4, !tbaa !19
  %468 = load ptr, ptr %18, align 8, !tbaa !5
  %469 = zext i32 %467 to i64
  %470 = getelementptr inbounds %class.aiVector3t, ptr %468, i64 %469
  store ptr %470, ptr %18, align 8, !tbaa !5
  br label %471

471:                                              ; preds = %463
  %472 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %24) #9
  br label %424, !llvm.loop !32

473:                                              ; preds = %426
  %474 = load i32, ptr %23, align 4, !tbaa !9
  %475 = add i32 %474, 1
  store i32 %475, ptr %23, align 4, !tbaa !9
  br label %382, !llvm.loop !33

476:                                              ; preds = %387
  store i32 0, ptr %23, align 4, !tbaa !9
  br label %477

477:                                              ; preds = %556, %476
  %478 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %5) #9
  %479 = load ptr, ptr %478, align 8, !tbaa !5
  %480 = load i32, ptr %23, align 4, !tbaa !9
  %481 = invoke noundef zeroext i1 @_ZNK6aiMesh15HasVertexColorsEj(ptr noundef nonnull align 8 dereferenceable(1320) %479, i32 noundef %480)
          to label %482 unwind label %427

482:                                              ; preds = %477
  br i1 %481, label %483, label %560

483:                                              ; preds = %482
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #9
  %484 = load ptr, ptr %9, align 8, !tbaa !5
  %485 = getelementptr inbounds %struct.aiMesh, ptr %484, i32 0, i32 1
  %486 = load i32, ptr %485, align 4, !tbaa !19
  %487 = zext i32 %486 to i64
  %488 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %487, i64 16)
  %489 = extractvalue { i64, i1 } %488, 1
  %490 = extractvalue { i64, i1 } %488, 0
  %491 = select i1 %489, i64 -1, i64 %490
  %492 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %491) #10
          to label %493 unwind label %510

493:                                              ; preds = %483
  %494 = icmp eq i64 %487, 0
  br i1 %494, label %501, label %495

495:                                              ; preds = %493
  %496 = getelementptr inbounds %class.aiColor4t, ptr %492, i64 %487
  br label %497

497:                                              ; preds = %497, %495
  %498 = phi ptr [ %492, %495 ], [ %499, %497 ]
  call void @_ZN9aiColor4tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(16) %498) #9
  %499 = getelementptr inbounds %class.aiColor4t, ptr %498, i64 1
  %500 = icmp eq ptr %499, %496
  br i1 %500, label %501, label %497

501:                                              ; preds = %497, %493
  %502 = load ptr, ptr %9, align 8, !tbaa !5
  %503 = getelementptr inbounds %struct.aiMesh, ptr %502, i32 0, i32 7
  %504 = load i32, ptr %23, align 4, !tbaa !9
  %505 = zext i32 %504 to i64
  %506 = getelementptr inbounds [8 x ptr], ptr %503, i64 0, i64 %505
  store ptr %492, ptr %506, align 8, !tbaa !5
  store ptr %492, ptr %25, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #9
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %26, ptr align 8 %5, i64 8, i1 false), !tbaa.struct !18
  br label %507

507:                                              ; preds = %554, %501
  %508 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKP6aiMeshSt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %26, ptr noundef nonnull align 8 dereferenceable(8) %6) #9
  br i1 %508, label %514, label %509

509:                                              ; preds = %507
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #9
  br label %556

510:                                              ; preds = %483
  %511 = landingpad { ptr, i32 }
          cleanup
  %512 = extractvalue { ptr, i32 } %511, 0
  store ptr %512, ptr %13, align 8
  %513 = extractvalue { ptr, i32 } %511, 1
  store i32 %513, ptr %14, align 4
  br label %559

514:                                              ; preds = %507
  %515 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %26) #9
  %516 = load ptr, ptr %515, align 8, !tbaa !5
  %517 = getelementptr inbounds %struct.aiMesh, ptr %516, i32 0, i32 7
  %518 = load i32, ptr %23, align 4, !tbaa !9
  %519 = zext i32 %518 to i64
  %520 = getelementptr inbounds [8 x ptr], ptr %517, i64 0, i64 %519
  %521 = load ptr, ptr %520, align 8, !tbaa !5
  %522 = icmp ne ptr %521, null
  br i1 %522, label %523, label %538

523:                                              ; preds = %514
  %524 = load ptr, ptr %25, align 8, !tbaa !5
  %525 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %26) #9
  %526 = load ptr, ptr %525, align 8, !tbaa !5
  %527 = getelementptr inbounds %struct.aiMesh, ptr %526, i32 0, i32 7
  %528 = load i32, ptr %23, align 4, !tbaa !9
  %529 = zext i32 %528 to i64
  %530 = getelementptr inbounds [8 x ptr], ptr %527, i64 0, i64 %529
  %531 = load ptr, ptr %530, align 8, !tbaa !5
  %532 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %26) #9
  %533 = load ptr, ptr %532, align 8, !tbaa !5
  %534 = getelementptr inbounds %struct.aiMesh, ptr %533, i32 0, i32 1
  %535 = load i32, ptr %534, align 4, !tbaa !19
  %536 = zext i32 %535 to i64
  %537 = mul i64 %536, 16
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %524, ptr align 4 %531, i64 %537, i1 false)
  br label %546

538:                                              ; preds = %514
  %539 = invoke noundef ptr @_ZN6Assimp13DefaultLogger3getEv()
          to label %540 unwind label %542

540:                                              ; preds = %538
  invoke void @_ZN6Assimp6Logger4warnEPKc(ptr noundef nonnull align 8 dereferenceable(12) %539, ptr noundef @.str.15)
          to label %541 unwind label %542

541:                                              ; preds = %540
  br label %546

542:                                              ; preds = %540, %538
  %543 = landingpad { ptr, i32 }
          cleanup
  %544 = extractvalue { ptr, i32 } %543, 0
  store ptr %544, ptr %13, align 8
  %545 = extractvalue { ptr, i32 } %543, 1
  store i32 %545, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #9
  br label %559

546:                                              ; preds = %541, %523
  %547 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %26) #9
  %548 = load ptr, ptr %547, align 8, !tbaa !5
  %549 = getelementptr inbounds %struct.aiMesh, ptr %548, i32 0, i32 1
  %550 = load i32, ptr %549, align 4, !tbaa !19
  %551 = load ptr, ptr %25, align 8, !tbaa !5
  %552 = zext i32 %550 to i64
  %553 = getelementptr inbounds %class.aiColor4t, ptr %551, i64 %552
  store ptr %553, ptr %25, align 8, !tbaa !5
  br label %554

554:                                              ; preds = %546
  %555 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %26) #9
  br label %507, !llvm.loop !34

556:                                              ; preds = %509
  %557 = load i32, ptr %23, align 4, !tbaa !9
  %558 = add i32 %557, 1
  store i32 %558, ptr %23, align 4, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #9
  br label %477, !llvm.loop !35

559:                                              ; preds = %542, %510
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #9
  br label %561

560:                                              ; preds = %482
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #9
  br label %563

561:                                              ; preds = %559, %459, %427
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #9
  br label %562

562:                                              ; preds = %561, %380, %257, %191, %165
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #9
  br label %695

563:                                              ; preds = %560, %127
  %564 = load ptr, ptr %9, align 8, !tbaa !5
  %565 = getelementptr inbounds %struct.aiMesh, ptr %564, i32 0, i32 2
  %566 = load i32, ptr %565, align 8, !tbaa !20
  %567 = icmp ne i32 %566, 0
  br i1 %567, label %568, label %669

568:                                              ; preds = %563
  %569 = load ptr, ptr %9, align 8, !tbaa !5
  %570 = getelementptr inbounds %struct.aiMesh, ptr %569, i32 0, i32 2
  %571 = load i32, ptr %570, align 8, !tbaa !20
  %572 = zext i32 %571 to i64
  %573 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %572, i64 16)
  %574 = extractvalue { i64, i1 } %573, 1
  %575 = extractvalue { i64, i1 } %573, 0
  %576 = call { i64, i1 } @llvm.uadd.with.overflow.i64(i64 %575, i64 8)
  %577 = extractvalue { i64, i1 } %576, 1
  %578 = or i1 %574, %577
  %579 = extractvalue { i64, i1 } %576, 0
  %580 = select i1 %578, i64 -1, i64 %579
  %581 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %580) #10
          to label %582 unwind label %161

582:                                              ; preds = %568
  store i64 %572, ptr %581, align 16
  %583 = getelementptr inbounds i8, ptr %581, i64 8
  %584 = icmp eq i64 %572, 0
  br i1 %584, label %591, label %585

585:                                              ; preds = %582
  %586 = getelementptr inbounds %struct.aiFace, ptr %583, i64 %572
  br label %587

587:                                              ; preds = %587, %585
  %588 = phi ptr [ %583, %585 ], [ %589, %587 ]
  call void @_ZN6aiFaceC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %588) #9
  %589 = getelementptr inbounds %struct.aiFace, ptr %588, i64 1
  %590 = icmp eq ptr %589, %586
  br i1 %590, label %591, label %587

591:                                              ; preds = %587, %582
  %592 = load ptr, ptr %9, align 8, !tbaa !5
  %593 = getelementptr inbounds %struct.aiMesh, ptr %592, i32 0, i32 10
  store ptr %583, ptr %593, align 8, !tbaa !36
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #9
  %594 = load ptr, ptr %9, align 8, !tbaa !5
  %595 = getelementptr inbounds %struct.aiMesh, ptr %594, i32 0, i32 10
  %596 = load ptr, ptr %595, align 8, !tbaa !36
  store ptr %596, ptr %27, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #9
  store i32 0, ptr %28, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #9
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %29, ptr align 8 %5, i64 8, i1 false), !tbaa.struct !18
  br label %597

597:                                              ; preds = %666, %591
  %598 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKP6aiMeshSt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %29, ptr noundef nonnull align 8 dereferenceable(8) %6) #9
  br i1 %598, label %600, label %599

599:                                              ; preds = %597
  store i32 24, ptr %30, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #9
  br label %668

600:                                              ; preds = %597
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #9
  store i32 0, ptr %31, align 4, !tbaa !9
  br label %601

601:                                              ; preds = %654, %600
  %602 = load i32, ptr %31, align 4, !tbaa !9
  %603 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %29) #9
  %604 = load ptr, ptr %603, align 8, !tbaa !5
  %605 = getelementptr inbounds %struct.aiMesh, ptr %604, i32 0, i32 2
  %606 = load i32, ptr %605, align 8, !tbaa !20
  %607 = icmp ult i32 %602, %606
  br i1 %607, label %609, label %608

608:                                              ; preds = %601
  store i32 27, ptr %30, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #9
  br label %659

609:                                              ; preds = %601
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #9
  %610 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %29) #9
  %611 = load ptr, ptr %610, align 8, !tbaa !5
  %612 = getelementptr inbounds %struct.aiMesh, ptr %611, i32 0, i32 10
  %613 = load ptr, ptr %612, align 8, !tbaa !36
  %614 = load i32, ptr %31, align 4, !tbaa !9
  %615 = zext i32 %614 to i64
  %616 = getelementptr inbounds %struct.aiFace, ptr %613, i64 %615
  store ptr %616, ptr %32, align 8, !tbaa !5
  %617 = load ptr, ptr %32, align 8, !tbaa !5
  %618 = getelementptr inbounds %struct.aiFace, ptr %617, i32 0, i32 0
  %619 = load i32, ptr %618, align 8, !tbaa !37
  %620 = load ptr, ptr %27, align 8, !tbaa !5
  %621 = getelementptr inbounds %struct.aiFace, ptr %620, i32 0, i32 0
  store i32 %619, ptr %621, align 8, !tbaa !37
  %622 = load ptr, ptr %32, align 8, !tbaa !5
  %623 = getelementptr inbounds %struct.aiFace, ptr %622, i32 0, i32 1
  %624 = load ptr, ptr %623, align 8, !tbaa !39
  %625 = load ptr, ptr %27, align 8, !tbaa !5
  %626 = getelementptr inbounds %struct.aiFace, ptr %625, i32 0, i32 1
  store ptr %624, ptr %626, align 8, !tbaa !39
  %627 = load i32, ptr %28, align 4, !tbaa !9
  %628 = icmp ne i32 %627, 0
  br i1 %628, label %629, label %651

629:                                              ; preds = %609
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #9
  store i32 0, ptr %33, align 4, !tbaa !9
  br label %630

630:                                              ; preds = %647, %629
  %631 = load i32, ptr %33, align 4, !tbaa !9
  %632 = load ptr, ptr %32, align 8, !tbaa !5
  %633 = getelementptr inbounds %struct.aiFace, ptr %632, i32 0, i32 0
  %634 = load i32, ptr %633, align 8, !tbaa !37
  %635 = icmp ult i32 %631, %634
  br i1 %635, label %637, label %636

636:                                              ; preds = %630
  store i32 30, ptr %30, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #9
  br label %650

637:                                              ; preds = %630
  %638 = load i32, ptr %28, align 4, !tbaa !9
  %639 = load ptr, ptr %32, align 8, !tbaa !5
  %640 = getelementptr inbounds %struct.aiFace, ptr %639, i32 0, i32 1
  %641 = load ptr, ptr %640, align 8, !tbaa !39
  %642 = load i32, ptr %33, align 4, !tbaa !9
  %643 = zext i32 %642 to i64
  %644 = getelementptr inbounds i32, ptr %641, i64 %643
  %645 = load i32, ptr %644, align 4, !tbaa !9
  %646 = add i32 %645, %638
  store i32 %646, ptr %644, align 4, !tbaa !9
  br label %647

647:                                              ; preds = %637
  %648 = load i32, ptr %33, align 4, !tbaa !9
  %649 = add i32 %648, 1
  store i32 %649, ptr %33, align 4, !tbaa !9
  br label %630, !llvm.loop !40

650:                                              ; preds = %636
  br label %651

651:                                              ; preds = %650, %609
  %652 = load ptr, ptr %32, align 8, !tbaa !5
  %653 = getelementptr inbounds %struct.aiFace, ptr %652, i32 0, i32 1
  store ptr null, ptr %653, align 8, !tbaa !39
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #9
  br label %654

654:                                              ; preds = %651
  %655 = load i32, ptr %31, align 4, !tbaa !9
  %656 = add i32 %655, 1
  store i32 %656, ptr %31, align 4, !tbaa !9
  %657 = load ptr, ptr %27, align 8, !tbaa !5
  %658 = getelementptr inbounds %struct.aiFace, ptr %657, i32 1
  store ptr %658, ptr %27, align 8, !tbaa !5
  br label %601, !llvm.loop !41

659:                                              ; preds = %608
  %660 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %29) #9
  %661 = load ptr, ptr %660, align 8, !tbaa !5
  %662 = getelementptr inbounds %struct.aiMesh, ptr %661, i32 0, i32 1
  %663 = load i32, ptr %662, align 4, !tbaa !19
  %664 = load i32, ptr %28, align 4, !tbaa !9
  %665 = add i32 %664, %663
  store i32 %665, ptr %28, align 4, !tbaa !9
  br label %666

666:                                              ; preds = %659
  %667 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %29) #9
  br label %597, !llvm.loop !42

668:                                              ; preds = %599
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #9
  br label %669

669:                                              ; preds = %668, %563
  %670 = load ptr, ptr %9, align 8, !tbaa !5
  %671 = getelementptr inbounds %struct.aiMesh, ptr %670, i32 0, i32 11
  %672 = load i32, ptr %671, align 8, !tbaa !21
  %673 = icmp ne i32 %672, 0
  br i1 %673, label %674, label %681

674:                                              ; preds = %669
  %675 = load ptr, ptr %9, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %34, ptr align 8 %5, i64 8, i1 false), !tbaa.struct !18
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %35, ptr align 8 %6, i64 8, i1 false), !tbaa.struct !18
  %676 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.32", ptr %34, i32 0, i32 0
  %677 = load ptr, ptr %676, align 8
  %678 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.32", ptr %35, i32 0, i32 0
  %679 = load ptr, ptr %678, align 8
  invoke void @_ZN6Assimp13SceneCombiner10MergeBonesEP6aiMeshN9__gnu_cxx17__normal_iteratorIPKS2_St6vectorIS2_SaIS2_EEEESA_(ptr noundef %675, ptr %677, ptr %679)
          to label %680 unwind label %161

680:                                              ; preds = %674
  br label %681

681:                                              ; preds = %680, %669
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #9
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %36, ptr align 8 %5, i64 8, i1 false), !tbaa.struct !18
  br label %682

682:                                              ; preds = %691, %681
  %683 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKP6aiMeshSt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %36, ptr noundef nonnull align 8 dereferenceable(8) %6) #9
  br i1 %683, label %685, label %684

684:                                              ; preds = %682
  store i32 33, ptr %30, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #9
  br label %693

685:                                              ; preds = %682
  %686 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %36) #9
  %687 = load ptr, ptr %686, align 8, !tbaa !5
  %688 = icmp eq ptr %687, null
  br i1 %688, label %690, label %689

689:                                              ; preds = %685
  call void @_ZN6aiMeshD2Ev(ptr noundef nonnull align 8 dereferenceable(1320) %687) #9
  call void @_ZdlPvm(ptr noundef %687, i64 noundef 1320) #11
  br label %690

690:                                              ; preds = %689, %685
  br label %691

691:                                              ; preds = %690
  %692 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %36) #9
  br label %682, !llvm.loop !43

693:                                              ; preds = %684
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %10) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #9
  br label %694

694:                                              ; preds = %693, %44, %41
  ret void

695:                                              ; preds = %562, %161, %122
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %10) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #9
  br label %696

696:                                              ; preds = %695
  %697 = load ptr, ptr %13, align 8
  %698 = load i32, ptr %14, align 4
  %699 = insertvalue { ptr, i32 } poison, ptr %697, 0
  %700 = insertvalue { ptr, i32 } %699, i32 %698, 1
  resume { ptr, i32 } %700
}

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) #8 align 2

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

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

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) #8 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


; 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.__gnu_cxx::__normal_iterator.32" = type { ptr }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::allocator.47" = type { i8 }
%class.aiVector3t = type { float, float, float }
%class.aiColor4t = type { float, float, float, float }
%struct.aiFace = type { i32, ptr }

@.str.10 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [68 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [64 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [66 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [56 x i8], align 1

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

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

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

declare noundef ptr @_ZN6Assimp13DefaultLogger3getEv() local_unnamed_addr #5

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN6Assimp13SceneCombiner11MergeMeshesEPP6aiMeshjN9__gnu_cxx17__normal_iteratorIPKS2_St6vectorIS2_SaIS2_EEEESB_(ptr noundef writeonly %0, i32 noundef %1, ptr %2, ptr %3) local_unnamed_addr #7 align 2 personality ptr @__gxx_personality_v0 {
  %5 = alloca %"class.__gnu_cxx::__normal_iterator.32", align 8
  %6 = alloca %"class.__gnu_cxx::__normal_iterator.32", align 8
  %7 = alloca %"class.std::__cxx11::basic_string", align 8
  %8 = alloca %"class.__gnu_cxx::__normal_iterator.32", align 8
  %9 = alloca %"class.std::__cxx11::basic_string", align 8
  %10 = alloca %"class.std::allocator.47", align 1
  %11 = alloca %"class.__gnu_cxx::__normal_iterator.32", align 8
  %12 = alloca %"class.__gnu_cxx::__normal_iterator.32", align 8
  %13 = alloca %"class.__gnu_cxx::__normal_iterator.32", align 8
  %14 = alloca %"class.__gnu_cxx::__normal_iterator.32", align 8
  %15 = alloca %"class.__gnu_cxx::__normal_iterator.32", align 8
  %16 = alloca %"class.__gnu_cxx::__normal_iterator.32", align 8
  %17 = alloca %"class.__gnu_cxx::__normal_iterator.32", align 8
  %18 = alloca %"class.__gnu_cxx::__normal_iterator.32", align 8
  store ptr %2, ptr %5, align 8
  store ptr %3, ptr %6, align 8
  %19 = icmp eq ptr %0, null
  br i1 %19, label %473, label %20

20:                                               ; preds = %4
  %21 = call noundef zeroext i1 @_ZN9__gnu_cxxeqIPKP6aiMeshSt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull align 8 dereferenceable(8) %6) #8
  br i1 %21, label %22, label %23

22:                                               ; preds = %20
  store ptr null, ptr %0, align 8, !tbaa !5
  br label %473

23:                                               ; preds = %20
  %24 = call noalias noundef nonnull dereferenceable(1320) ptr @_Znwm(i64 noundef 1320) #9
  call void @_ZN6aiMeshC2Ev(ptr noundef nonnull align 8 dereferenceable(1320) %24) #8
  store ptr %24, ptr %0, align 8, !tbaa !5
  %25 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %5) #8
  %26 = load ptr, ptr %25, align 8, !tbaa !5
  %27 = getelementptr inbounds i8, ptr %26, i64 232
  %28 = load i32, ptr %27, align 8, !tbaa !9
  %29 = getelementptr inbounds i8, ptr %24, i64 232
  store i32 %28, ptr %29, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #8
  %30 = load i64, ptr %5, align 8, !tbaa !5
  store i64 %30, ptr %8, align 8, !tbaa !5
  %31 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKP6aiMeshSt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull align 8 dereferenceable(8) %6) #8
  br i1 %31, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %23
  %32 = getelementptr inbounds i8, ptr %24, i64 4
  %33 = getelementptr inbounds i8, ptr %24, i64 8
  %34 = getelementptr inbounds i8, ptr %24, i64 216
  br label %39

._crit_edge:                                      ; preds = %58, %23
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #8
  %35 = getelementptr inbounds i8, ptr %24, i64 236
  %36 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %7) #8
  call void @_ZN8aiString3SetEPKc(ptr noundef nonnull align 4 dereferenceable(1028) %35, ptr noundef %36)
  %37 = getelementptr inbounds i8, ptr %24, i64 4
  %38 = load i32, ptr %37, align 4, !tbaa !17
  %.not = icmp eq i32 %38, 0
  br i1 %.not, label %.loopexit125, label %85

39:                                               ; preds = %.lr.ph, %58
  %40 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %8) #8
  %41 = load ptr, ptr %40, align 8, !tbaa !5
  %42 = getelementptr inbounds i8, ptr %41, i64 236
  %43 = call noundef ptr @_ZNK8aiString5C_StrEv(ptr noundef nonnull align 4 dereferenceable(1028) %42)
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %9) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %10) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef %43, ptr noundef nonnull align 1 dereferenceable(1) %10)
          to label %44 unwind label %53

44:                                               ; preds = %39
  %45 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull align 8 dereferenceable(32) %9)
          to label %46 unwind label %55

46:                                               ; preds = %44
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #8
  %47 = call ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEmiEl(ptr noundef nonnull align 8 dereferenceable(8) %6, i64 noundef 1) #8
  store ptr %47, ptr %11, align 8
  %48 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKP6aiMeshSt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull align 8 dereferenceable(8) %11) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #8
  br i1 %48, label %49, label %58

49:                                               ; preds = %46
  %50 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull @.str.10)
          to label %58 unwind label %51

51:                                               ; preds = %49
  %52 = landingpad { ptr, i32 }
          cleanup
  br label %84

53:                                               ; preds = %39
  %54 = landingpad { ptr, i32 }
          cleanup
  br label %57

55:                                               ; preds = %44
  %56 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #8
  br label %57

57:                                               ; preds = %55, %53
  %.pn117 = phi { ptr, i32 } [ %56, %55 ], [ %54, %53 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #8
  br label %84

58:                                               ; preds = %49, %46
  %59 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %8) #8
  %60 = load ptr, ptr %59, align 8, !tbaa !5
  %61 = getelementptr inbounds i8, ptr %60, i64 4
  %62 = load i32, ptr %61, align 4, !tbaa !17
  %63 = load i32, ptr %32, align 4, !tbaa !17
  %64 = add i32 %63, %62
  store i32 %64, ptr %32, align 4, !tbaa !17
  %65 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %8) #8
  %66 = load ptr, ptr %65, align 8, !tbaa !5
  %67 = getelementptr inbounds i8, ptr %66, i64 8
  %68 = load i32, ptr %67, align 8, !tbaa !18
  %69 = load i32, ptr %33, align 8, !tbaa !18
  %70 = add i32 %69, %68
  store i32 %70, ptr %33, align 8, !tbaa !18
  %71 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %8) #8
  %72 = load ptr, ptr %71, align 8, !tbaa !5
  %73 = getelementptr inbounds i8, ptr %72, i64 216
  %74 = load i32, ptr %73, align 8, !tbaa !19
  %75 = load i32, ptr %34, align 8, !tbaa !19
  %76 = add i32 %75, %74
  store i32 %76, ptr %34, align 8, !tbaa !19
  %77 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %8) #8
  %78 = load ptr, ptr %77, align 8, !tbaa !5
  %79 = load i32, ptr %78, align 8, !tbaa !20
  %80 = load i32, ptr %24, align 8, !tbaa !20
  %81 = or i32 %80, %79
  store i32 %81, ptr %24, align 8, !tbaa !20
  %82 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %8) #8
  %83 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKP6aiMeshSt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull align 8 dereferenceable(8) %6) #8
  br i1 %83, label %39, label %._crit_edge, !llvm.loop !21

84:                                               ; preds = %57, %51
  %.pn119 = phi { ptr, i32 } [ %52, %51 ], [ %.pn117, %57 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #8
  br label %474

85:                                               ; preds = %._crit_edge
  %86 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %5) #8
  %87 = load ptr, ptr %86, align 8, !tbaa !5
  %88 = call noundef zeroext i1 @_ZNK6aiMesh12HasPositionsEv(ptr noundef nonnull align 8 dereferenceable(1320) %87)
  br i1 %88, label %89, label %138

89:                                               ; preds = %85
  %90 = load i32, ptr %37, align 4, !tbaa !17
  %91 = zext i32 %90 to i64
  %92 = mul nuw nsw i64 %91, 12
  %93 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %92) #9
          to label %94 unwind label %107

94:                                               ; preds = %89
  %95 = icmp eq i32 %90, 0
  br i1 %95, label %.loopexit129, label %96

96:                                               ; preds = %94
  %97 = getelementptr inbounds %class.aiVector3t, ptr %93, i64 %91
  br label %98

98:                                               ; preds = %98, %96
  %99 = phi ptr [ %93, %96 ], [ %100, %98 ]
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %99) #8
  %100 = getelementptr inbounds i8, ptr %99, i64 12
  %101 = icmp eq ptr %100, %97
  br i1 %101, label %.loopexit129, label %98

.loopexit129:                                     ; preds = %98, %94
  %102 = getelementptr inbounds i8, ptr %24, i64 16
  store ptr %93, ptr %102, align 8, !tbaa !23
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #8
  %103 = load i64, ptr %5, align 8, !tbaa !5
  store i64 %103, ptr %12, align 8, !tbaa !5
  %104 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKP6aiMeshSt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %12, ptr noundef nonnull align 8 dereferenceable(8) %6) #8
  br i1 %104, label %.lr.ph132, label %._crit_edge133

._crit_edge133:                                   ; preds = %129, %.loopexit129
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #8
  br label %138

105:                                              ; preds = %462, %394
  %106 = landingpad { ptr, i32 }
          cleanup
  br label %474

107:                                              ; preds = %191, %142, %89
  %108 = landingpad { ptr, i32 }
          cleanup
  br label %474

.lr.ph132:                                        ; preds = %.loopexit129, %129
  %.081130 = phi ptr [ %135, %129 ], [ %93, %.loopexit129 ]
  %109 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %12) #8
  %110 = load ptr, ptr %109, align 8, !tbaa !5
  %111 = getelementptr inbounds i8, ptr %110, i64 16
  %112 = load ptr, ptr %111, align 8, !tbaa !23
  %.not114 = icmp eq ptr %112, null
  br i1 %.not114, label %124, label %113

113:                                              ; preds = %.lr.ph132
  %114 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %12) #8
  %115 = load ptr, ptr %114, align 8, !tbaa !5
  %116 = getelementptr inbounds i8, ptr %115, i64 16
  %117 = load ptr, ptr %116, align 8, !tbaa !23
  %118 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %12) #8
  %119 = load ptr, ptr %118, align 8, !tbaa !5
  %120 = getelementptr inbounds i8, ptr %119, i64 4
  %121 = load i32, ptr %120, align 4, !tbaa !17
  %122 = zext i32 %121 to i64
  %123 = mul nuw nsw i64 %122, 12
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %.081130, ptr align 4 %117, i64 %123, i1 false)
  br label %129

124:                                              ; preds = %.lr.ph132
  %125 = invoke noundef ptr @_ZN6Assimp13DefaultLogger3getEv()
          to label %126 unwind label %127

126:                                              ; preds = %124
  invoke void @_ZN6Assimp6Logger4warnEPKc(ptr noundef nonnull align 8 dereferenceable(12) %125, ptr noundef nonnull @.str.11)
          to label %129 unwind label %127

127:                                              ; preds = %126, %124
  %128 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #8
  br label %474

129:                                              ; preds = %126, %113
  %130 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %12) #8
  %131 = load ptr, ptr %130, align 8, !tbaa !5
  %132 = getelementptr inbounds i8, ptr %131, i64 4
  %133 = load i32, ptr %132, align 4, !tbaa !17
  %134 = zext i32 %133 to i64
  %135 = getelementptr inbounds %class.aiVector3t, ptr %.081130, i64 %134
  %136 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %12) #8
  %137 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKP6aiMeshSt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %12, ptr noundef nonnull align 8 dereferenceable(8) %6) #8
  br i1 %137, label %.lr.ph132, label %._crit_edge133, !llvm.loop !24

138:                                              ; preds = %._crit_edge133, %85
  %139 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %5) #8
  %140 = load ptr, ptr %139, align 8, !tbaa !5
  %141 = call noundef zeroext i1 @_ZNK6aiMesh10HasNormalsEv(ptr noundef nonnull align 8 dereferenceable(1320) %140)
  br i1 %141, label %142, label %187

142:                                              ; preds = %138
  %143 = load i32, ptr %37, align 4, !tbaa !17
  %144 = zext i32 %143 to i64
  %145 = mul nuw nsw i64 %144, 12
  %146 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %145) #9
          to label %147 unwind label %107

147:                                              ; preds = %142
  %148 = icmp eq i32 %143, 0
  br i1 %148, label %.loopexit128, label %149

149:                                              ; preds = %147
  %150 = getelementptr inbounds %class.aiVector3t, ptr %146, i64 %144
  br label %151

151:                                              ; preds = %151, %149
  %152 = phi ptr [ %146, %149 ], [ %153, %151 ]
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %152) #8
  %153 = getelementptr inbounds i8, ptr %152, i64 12
  %154 = icmp eq ptr %153, %150
  br i1 %154, label %.loopexit128, label %151

.loopexit128:                                     ; preds = %151, %147
  %155 = getelementptr inbounds i8, ptr %24, i64 24
  store ptr %146, ptr %155, align 8, !tbaa !25
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #8
  %156 = load i64, ptr %5, align 8, !tbaa !5
  store i64 %156, ptr %13, align 8, !tbaa !5
  %157 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKP6aiMeshSt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %13, ptr noundef nonnull align 8 dereferenceable(8) %6) #8
  br i1 %157, label %.lr.ph136, label %._crit_edge137

._crit_edge137:                                   ; preds = %178, %.loopexit128
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #8
  br label %187

.lr.ph136:                                        ; preds = %.loopexit128, %178
  %.182134 = phi ptr [ %184, %178 ], [ %146, %.loopexit128 ]
  %158 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %13) #8
  %159 = load ptr, ptr %158, align 8, !tbaa !5
  %160 = getelementptr inbounds i8, ptr %159, i64 24
  %161 = load ptr, ptr %160, align 8, !tbaa !25
  %.not113 = icmp eq ptr %161, null
  br i1 %.not113, label %173, label %162

162:                                              ; preds = %.lr.ph136
  %163 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %13) #8
  %164 = load ptr, ptr %163, align 8, !tbaa !5
  %165 = getelementptr inbounds i8, ptr %164, i64 24
  %166 = load ptr, ptr %165, align 8, !tbaa !25
  %167 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %13) #8
  %168 = load ptr, ptr %167, align 8, !tbaa !5
  %169 = getelementptr inbounds i8, ptr %168, i64 4
  %170 = load i32, ptr %169, align 4, !tbaa !17
  %171 = zext i32 %170 to i64
  %172 = mul nuw nsw i64 %171, 12
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %.182134, ptr align 4 %166, i64 %172, i1 false)
  br label %178

173:                                              ; preds = %.lr.ph136
  %174 = invoke noundef ptr @_ZN6Assimp13DefaultLogger3getEv()
          to label %175 unwind label %176

175:                                              ; preds = %173
  invoke void @_ZN6Assimp6Logger4warnEPKc(ptr noundef nonnull align 8 dereferenceable(12) %174, ptr noundef nonnull @.str.12)
          to label %178 unwind label %176

176:                                              ; preds = %175, %173
  %177 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #8
  br label %474

178:                                              ; preds = %175, %162
  %179 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %13) #8
  %180 = load ptr, ptr %179, align 8, !tbaa !5
  %181 = getelementptr inbounds i8, ptr %180, i64 4
  %182 = load i32, ptr %181, align 4, !tbaa !17
  %183 = zext i32 %182 to i64
  %184 = getelementptr inbounds %class.aiVector3t, ptr %.182134, i64 %183
  %185 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %13) #8
  %186 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKP6aiMeshSt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %13, ptr noundef nonnull align 8 dereferenceable(8) %6) #8
  br i1 %186, label %.lr.ph136, label %._crit_edge137, !llvm.loop !26

187:                                              ; preds = %._crit_edge137, %138
  %188 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %5) #8
  %189 = load ptr, ptr %188, align 8, !tbaa !5
  %190 = call noundef zeroext i1 @_ZNK6aiMesh24HasTangentsAndBitangentsEv(ptr noundef nonnull align 8 dereferenceable(1320) %189)
  br i1 %190, label %191, label %268

191:                                              ; preds = %187
  %192 = load i32, ptr %37, align 4, !tbaa !17
  %193 = zext i32 %192 to i64
  %194 = mul nuw nsw i64 %193, 12
  %195 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %194) #9
          to label %196 unwind label %107

196:                                              ; preds = %191
  %197 = icmp eq i32 %192, 0
  br i1 %197, label %204, label %198

198:                                              ; preds = %196
  %199 = getelementptr inbounds %class.aiVector3t, ptr %195, i64 %193
  br label %200

200:                                              ; preds = %200, %198
  %201 = phi ptr [ %195, %198 ], [ %202, %200 ]
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %201) #8
  %202 = getelementptr inbounds i8, ptr %201, i64 12
  %203 = icmp eq ptr %202, %199
  br i1 %203, label %thread-pre-split, label %200

thread-pre-split:                                 ; preds = %200
  %.pr = load i32, ptr %37, align 4, !tbaa !17
  br label %204

204:                                              ; preds = %thread-pre-split, %196
  %205 = phi i32 [ %.pr, %thread-pre-split ], [ 0, %196 ]
  %206 = getelementptr inbounds i8, ptr %24, i64 32
  store ptr %195, ptr %206, align 8, !tbaa !27
  %207 = zext i32 %205 to i64
  %208 = mul nuw nsw i64 %207, 12
  %209 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %208) #9
          to label %210 unwind label %221

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

212:                                              ; preds = %210
  %213 = getelementptr inbounds %class.aiVector3t, ptr %209, i64 %207
  br label %214

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

.loopexit127:                                     ; preds = %214, %210
  %218 = getelementptr inbounds i8, ptr %24, i64 40
  store ptr %209, ptr %218, align 8, !tbaa !28
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #8
  %219 = load i64, ptr %5, align 8, !tbaa !5
  store i64 %219, ptr %14, align 8, !tbaa !5
  %220 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKP6aiMeshSt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %14, ptr noundef nonnull align 8 dereferenceable(8) %6) #8
  br i1 %220, label %.lr.ph141, label %._crit_edge142

._crit_edge142:                                   ; preds = %253, %.loopexit127
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #8
  br label %268

221:                                              ; preds = %204
  %222 = landingpad { ptr, i32 }
          cleanup
  br label %474

.lr.ph141:                                        ; preds = %.loopexit127, %253
  %.283139 = phi ptr [ %259, %253 ], [ %195, %.loopexit127 ]
  %.092138 = phi ptr [ %265, %253 ], [ %209, %.loopexit127 ]
  %223 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %14) #8
  %224 = load ptr, ptr %223, align 8, !tbaa !5
  %225 = getelementptr inbounds i8, ptr %224, i64 32
  %226 = load ptr, ptr %225, align 8, !tbaa !27
  %.not110 = icmp eq ptr %226, null
  br i1 %.not110, label %248, label %227

227:                                              ; preds = %.lr.ph141
  %228 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %14) #8
  %229 = load ptr, ptr %228, align 8, !tbaa !5
  %230 = getelementptr inbounds i8, ptr %229, i64 32
  %231 = load ptr, ptr %230, align 8, !tbaa !27
  %232 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %14) #8
  %233 = load ptr, ptr %232, align 8, !tbaa !5
  %234 = getelementptr inbounds i8, ptr %233, i64 4
  %235 = load i32, ptr %234, align 4, !tbaa !17
  %236 = zext i32 %235 to i64
  %237 = mul nuw nsw i64 %236, 12
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %.283139, ptr align 4 %231, i64 %237, i1 false)
  %238 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %14) #8
  %239 = load ptr, ptr %238, align 8, !tbaa !5
  %240 = getelementptr inbounds i8, ptr %239, i64 40
  %241 = load ptr, ptr %240, align 8, !tbaa !28
  %242 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %14) #8
  %243 = load ptr, ptr %242, align 8, !tbaa !5
  %244 = getelementptr inbounds i8, ptr %243, i64 4
  %245 = load i32, ptr %244, align 4, !tbaa !17
  %246 = zext i32 %245 to i64
  %247 = mul nuw nsw i64 %246, 12
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %.092138, ptr align 4 %241, i64 %247, i1 false)
  br label %253

248:                                              ; preds = %.lr.ph141
  %249 = invoke noundef ptr @_ZN6Assimp13DefaultLogger3getEv()
          to label %250 unwind label %251

250:                                              ; preds = %248
  invoke void @_ZN6Assimp6Logger4warnEPKc(ptr noundef nonnull align 8 dereferenceable(12) %249, ptr noundef nonnull @.str.13)
          to label %253 unwind label %251

251:                                              ; preds = %250, %248
  %252 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #8
  br label %474

253:                                              ; preds = %250, %227
  %254 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %14) #8
  %255 = load ptr, ptr %254, align 8, !tbaa !5
  %256 = getelementptr inbounds i8, ptr %255, i64 4
  %257 = load i32, ptr %256, align 4, !tbaa !17
  %258 = zext i32 %257 to i64
  %259 = getelementptr inbounds %class.aiVector3t, ptr %.283139, i64 %258
  %260 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %14) #8
  %261 = load ptr, ptr %260, align 8, !tbaa !5
  %262 = getelementptr inbounds i8, ptr %261, i64 4
  %263 = load i32, ptr %262, align 4, !tbaa !17
  %264 = zext i32 %263 to i64
  %265 = getelementptr inbounds %class.aiVector3t, ptr %.092138, i64 %264
  %266 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %14) #8
  %267 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKP6aiMeshSt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %14, ptr noundef nonnull align 8 dereferenceable(8) %6) #8
  br i1 %267, label %.lr.ph141, label %._crit_edge142, !llvm.loop !29

268:                                              ; preds = %._crit_edge142, %187
  %269 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %5) #8
  %270 = load ptr, ptr %269, align 8, !tbaa !5
  %271 = call noundef zeroext i1 @_ZNK6aiMesh16HasTextureCoordsEj(ptr noundef nonnull align 8 dereferenceable(1320) %270, i32 noundef 0)
  br i1 %271, label %.lr.ph149, label %.preheader124

.lr.ph149:                                        ; preds = %268
  %272 = getelementptr inbounds i8, ptr %24, i64 176
  %273 = getelementptr inbounds i8, ptr %24, i64 112
  br label %278

.preheader124:                                    ; preds = %._crit_edge146, %268
  %274 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %5) #8
  %275 = load ptr, ptr %274, align 8, !tbaa !5
  %276 = call noundef zeroext i1 @_ZNK6aiMesh15HasVertexColorsEj(ptr noundef nonnull align 8 dereferenceable(1320) %275, i32 noundef 0)
  br i1 %276, label %.lr.ph155, label %.loopexit125

.lr.ph155:                                        ; preds = %.preheader124
  %277 = getelementptr inbounds i8, ptr %24, i64 48
  br label %338

278:                                              ; preds = %.lr.ph149, %._crit_edge146
  %.090147 = phi i32 [ 0, %.lr.ph149 ], [ %301, %._crit_edge146 ]
  %279 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %5) #8
  %280 = load ptr, ptr %279, align 8, !tbaa !5
  %281 = getelementptr inbounds i8, ptr %280, i64 176
  %282 = zext i32 %.090147 to i64
  %283 = getelementptr inbounds [8 x i32], ptr %281, i64 0, i64 %282
  %284 = load i32, ptr %283, align 4, !tbaa !30
  %285 = getelementptr inbounds [8 x i32], ptr %272, i64 0, i64 %282
  store i32 %284, ptr %285, align 4, !tbaa !30
  %286 = load i32, ptr %37, align 4, !tbaa !17
  %287 = zext i32 %286 to i64
  %288 = mul nuw nsw i64 %287, 12
  %289 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %288) #9
          to label %290 unwind label %305

290:                                              ; preds = %278
  %291 = icmp eq i32 %286, 0
  br i1 %291, label %.loopexit126, label %292

292:                                              ; preds = %290
  %293 = getelementptr inbounds %class.aiVector3t, ptr %289, i64 %287
  br label %294

294:                                              ; preds = %294, %292
  %295 = phi ptr [ %289, %292 ], [ %296, %294 ]
  call void @_ZN10aiVector3tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %295) #8
  %296 = getelementptr inbounds i8, ptr %295, i64 12
  %297 = icmp eq ptr %296, %293
  br i1 %297, label %.loopexit126, label %294

.loopexit126:                                     ; preds = %294, %290
  %298 = getelementptr inbounds [8 x ptr], ptr %273, i64 0, i64 %282
  store ptr %289, ptr %298, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #8
  %299 = load i64, ptr %5, align 8, !tbaa !5
  store i64 %299, ptr %15, align 8, !tbaa !5
  %300 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKP6aiMeshSt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %15, ptr noundef nonnull align 8 dereferenceable(8) %6) #8
  br i1 %300, label %.lr.ph145, label %._crit_edge146

._crit_edge146:                                   ; preds = %329, %.loopexit126
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #8
  %301 = add i32 %.090147, 1
  %302 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %5) #8
  %303 = load ptr, ptr %302, align 8, !tbaa !5
  %304 = call noundef zeroext i1 @_ZNK6aiMesh16HasTextureCoordsEj(ptr noundef nonnull align 8 dereferenceable(1320) %303, i32 noundef %301)
  br i1 %304, label %278, label %.preheader124, !llvm.loop !31

305:                                              ; preds = %278
  %306 = landingpad { ptr, i32 }
          cleanup
  br label %474

.lr.ph145:                                        ; preds = %.loopexit126, %329
  %.384143 = phi ptr [ %335, %329 ], [ %289, %.loopexit126 ]
  %307 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %15) #8
  %308 = load ptr, ptr %307, align 8, !tbaa !5
  %309 = getelementptr inbounds i8, ptr %308, i64 112
  %310 = getelementptr inbounds [8 x ptr], ptr %309, i64 0, i64 %282
  %311 = load ptr, ptr %310, align 8, !tbaa !5
  %.not107 = icmp eq ptr %311, null
  br i1 %.not107, label %324, label %312

312:                                              ; preds = %.lr.ph145
  %313 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %15) #8
  %314 = load ptr, ptr %313, align 8, !tbaa !5
  %315 = getelementptr inbounds i8, ptr %314, i64 112
  %316 = getelementptr inbounds [8 x ptr], ptr %315, i64 0, i64 %282
  %317 = load ptr, ptr %316, align 8, !tbaa !5
  %318 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %15) #8
  %319 = load ptr, ptr %318, align 8, !tbaa !5
  %320 = getelementptr inbounds i8, ptr %319, i64 4
  %321 = load i32, ptr %320, align 4, !tbaa !17
  %322 = zext i32 %321 to i64
  %323 = mul nuw nsw i64 %322, 12
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %.384143, ptr align 4 %317, i64 %323, i1 false)
  br label %329

324:                                              ; preds = %.lr.ph145
  %325 = invoke noundef ptr @_ZN6Assimp13DefaultLogger3getEv()
          to label %326 unwind label %327

326:                                              ; preds = %324
  invoke void @_ZN6Assimp6Logger4warnEPKc(ptr noundef nonnull align 8 dereferenceable(12) %325, ptr noundef nonnull @.str.14)
          to label %329 unwind label %327

327:                                              ; preds = %326, %324
  %328 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #8
  br label %474

329:                                              ; preds = %326, %312
  %330 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %15) #8
  %331 = load ptr, ptr %330, align 8, !tbaa !5
  %332 = getelementptr inbounds i8, ptr %331, i64 4
  %333 = load i32, ptr %332, align 4, !tbaa !17
  %334 = zext i32 %333 to i64
  %335 = getelementptr inbounds %class.aiVector3t, ptr %.384143, i64 %334
  %336 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %15) #8
  %337 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKP6aiMeshSt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %15, ptr noundef nonnull align 8 dereferenceable(8) %6) #8
  br i1 %337, label %.lr.ph145, label %._crit_edge146, !llvm.loop !32

338:                                              ; preds = %.lr.ph155, %._crit_edge153
  %.191154 = phi i32 [ 0, %.lr.ph155 ], [ %355, %._crit_edge153 ]
  %339 = load i32, ptr %37, align 4, !tbaa !17
  %340 = zext i32 %339 to i64
  %341 = shl nuw nsw i64 %340, 4
  %342 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %341) #9
          to label %343 unwind label %359

343:                                              ; preds = %338
  %344 = icmp eq i32 %339, 0
  br i1 %344, label %.loopexit123, label %345

345:                                              ; preds = %343
  %346 = getelementptr inbounds %class.aiColor4t, ptr %342, i64 %340
  br label %347

347:                                              ; preds = %347, %345
  %348 = phi ptr [ %342, %345 ], [ %349, %347 ]
  call void @_ZN9aiColor4tIfEC2Ev(ptr noundef nonnull align 4 dereferenceable(16) %348) #8
  %349 = getelementptr inbounds i8, ptr %348, i64 16
  %350 = icmp eq ptr %349, %346
  br i1 %350, label %.loopexit123, label %347

.loopexit123:                                     ; preds = %347, %343
  %351 = zext i32 %.191154 to i64
  %352 = getelementptr inbounds [8 x ptr], ptr %277, i64 0, i64 %351
  store ptr %342, ptr %352, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #8
  %353 = load i64, ptr %5, align 8, !tbaa !5
  store i64 %353, ptr %16, align 8, !tbaa !5
  %354 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKP6aiMeshSt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %16, ptr noundef nonnull align 8 dereferenceable(8) %6) #8
  br i1 %354, label %.lr.ph152, label %._crit_edge153

._crit_edge153:                                   ; preds = %383, %.loopexit123
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #8
  %355 = add i32 %.191154, 1
  %356 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %5) #8
  %357 = load ptr, ptr %356, align 8, !tbaa !5
  %358 = call noundef zeroext i1 @_ZNK6aiMesh15HasVertexColorsEj(ptr noundef nonnull align 8 dereferenceable(1320) %357, i32 noundef %355)
  br i1 %358, label %338, label %.loopexit125, !llvm.loop !33

359:                                              ; preds = %338
  %360 = landingpad { ptr, i32 }
          cleanup
  br label %474

.lr.ph152:                                        ; preds = %.loopexit123, %383
  %.089150 = phi ptr [ %389, %383 ], [ %342, %.loopexit123 ]
  %361 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %16) #8
  %362 = load ptr, ptr %361, align 8, !tbaa !5
  %363 = getelementptr inbounds i8, ptr %362, i64 48
  %364 = getelementptr inbounds [8 x ptr], ptr %363, i64 0, i64 %351
  %365 = load ptr, ptr %364, align 8, !tbaa !5
  %.not105 = icmp eq ptr %365, null
  br i1 %.not105, label %378, label %366

366:                                              ; preds = %.lr.ph152
  %367 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %16) #8
  %368 = load ptr, ptr %367, align 8, !tbaa !5
  %369 = getelementptr inbounds i8, ptr %368, i64 48
  %370 = getelementptr inbounds [8 x ptr], ptr %369, i64 0, i64 %351
  %371 = load ptr, ptr %370, align 8, !tbaa !5
  %372 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %16) #8
  %373 = load ptr, ptr %372, align 8, !tbaa !5
  %374 = getelementptr inbounds i8, ptr %373, i64 4
  %375 = load i32, ptr %374, align 4, !tbaa !17
  %376 = zext i32 %375 to i64
  %377 = shl nuw nsw i64 %376, 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %.089150, ptr align 4 %371, i64 %377, i1 false)
  br label %383

378:                                              ; preds = %.lr.ph152
  %379 = invoke noundef ptr @_ZN6Assimp13DefaultLogger3getEv()
          to label %380 unwind label %381

380:                                              ; preds = %378
  invoke void @_ZN6Assimp6Logger4warnEPKc(ptr noundef nonnull align 8 dereferenceable(12) %379, ptr noundef nonnull @.str.15)
          to label %383 unwind label %381

381:                                              ; preds = %380, %378
  %382 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #8
  br label %474

383:                                              ; preds = %380, %366
  %384 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %16) #8
  %385 = load ptr, ptr %384, align 8, !tbaa !5
  %386 = getelementptr inbounds i8, ptr %385, i64 4
  %387 = load i32, ptr %386, align 4, !tbaa !17
  %388 = zext i32 %387 to i64
  %389 = getelementptr inbounds %class.aiColor4t, ptr %.089150, i64 %388
  %390 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %16) #8
  %391 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKP6aiMeshSt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %16, ptr noundef nonnull align 8 dereferenceable(8) %6) #8
  br i1 %391, label %.lr.ph152, label %._crit_edge153, !llvm.loop !34

.loopexit125:                                     ; preds = %._crit_edge153, %.preheader124, %._crit_edge
  %392 = getelementptr inbounds i8, ptr %24, i64 8
  %393 = load i32, ptr %392, align 8, !tbaa !18
  %.not102 = icmp eq i32 %393, 0
  br i1 %.not102, label %459, label %394

394:                                              ; preds = %.loopexit125
  %395 = zext i32 %393 to i64
  %396 = shl nuw nsw i64 %395, 4
  %397 = or disjoint i64 %396, 8
  %398 = invoke noalias noundef nonnull ptr @_Znam(i64 noundef %397) #9
          to label %399 unwind label %105

399:                                              ; preds = %394
  store i64 %395, ptr %398, align 16
  %400 = getelementptr inbounds i8, ptr %398, i64 8
  %401 = getelementptr inbounds %struct.aiFace, ptr %400, i64 %395
  br label %402

402:                                              ; preds = %402, %399
  %403 = phi ptr [ %400, %399 ], [ %404, %402 ]
  call void @_ZN6aiFaceC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %403) #8
  %404 = getelementptr inbounds i8, ptr %403, i64 16
  %405 = icmp eq ptr %404, %401
  br i1 %405, label %406, label %402

406:                                              ; preds = %402
  %407 = getelementptr inbounds i8, ptr %24, i64 208
  store ptr %400, ptr %407, align 8, !tbaa !35
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #8
  %408 = load i64, ptr %5, align 8, !tbaa !5
  store i64 %408, ptr %17, align 8, !tbaa !5
  %409 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKP6aiMeshSt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef nonnull align 8 dereferenceable(8) %6) #8
  br i1 %409, label %.preheader122, label %._crit_edge165

.preheader122:                                    ; preds = %406, %._crit_edge161
  %.086163 = phi i32 [ %434, %._crit_edge161 ], [ 0, %406 ]
  %.087162 = phi ptr [ %.188.lcssa, %._crit_edge161 ], [ %400, %406 ]
  %.086163.fr = freeze i32 %.086163
  %410 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %17) #8
  %411 = load ptr, ptr %410, align 8, !tbaa !5
  %412 = getelementptr inbounds i8, ptr %411, i64 8
  %413 = load i32, ptr %412, align 8, !tbaa !18
  %.not169 = icmp eq i32 %413, 0
  br i1 %.not169, label %._crit_edge161, label %.lr.ph160

.lr.ph160:                                        ; preds = %.preheader122
  %.not104 = icmp eq i32 %.086163.fr, 0
  br i1 %.not104, label %.lr.ph160.split.us, label %.preheader

.lr.ph160.split.us:                               ; preds = %.lr.ph160, %.lr.ph160.split.us
  %indvars.iv177 = phi i64 [ %indvars.iv.next178, %.lr.ph160.split.us ], [ 0, %.lr.ph160 ]
  %.188158.us = phi ptr [ %423, %.lr.ph160.split.us ], [ %.087162, %.lr.ph160 ]
  %414 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %17) #8
  %415 = load ptr, ptr %414, align 8, !tbaa !5
  %416 = getelementptr inbounds i8, ptr %415, i64 208
  %417 = load ptr, ptr %416, align 8, !tbaa !35
  %418 = getelementptr inbounds %struct.aiFace, ptr %417, i64 %indvars.iv177
  %419 = load i32, ptr %418, align 8, !tbaa !36
  store i32 %419, ptr %.188158.us, align 8, !tbaa !36
  %420 = getelementptr inbounds i8, ptr %418, i64 8
  %421 = load ptr, ptr %420, align 8, !tbaa !38
  %422 = getelementptr inbounds i8, ptr %.188158.us, i64 8
  store ptr %421, ptr %422, align 8, !tbaa !38
  store ptr null, ptr %420, align 8, !tbaa !38
  %indvars.iv.next178 = add nuw nsw i64 %indvars.iv177, 1
  %423 = getelementptr inbounds i8, ptr %.188158.us, i64 16
  %424 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %17) #8
  %425 = load ptr, ptr %424, align 8, !tbaa !5
  %426 = getelementptr inbounds i8, ptr %425, i64 8
  %427 = load i32, ptr %426, align 8, !tbaa !18
  %428 = zext i32 %427 to i64
  %429 = icmp ult i64 %indvars.iv.next178, %428
  br i1 %429, label %.lr.ph160.split.us, label %._crit_edge161, !llvm.loop !39

._crit_edge165:                                   ; preds = %._crit_edge161, %406
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #8
  br label %459

._crit_edge161:                                   ; preds = %.loopexit, %.lr.ph160.split.us, %.preheader122
  %.188.lcssa = phi ptr [ %.087162, %.preheader122 ], [ %423, %.lr.ph160.split.us ], [ %452, %.loopexit ]
  %430 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %17) #8
  %431 = load ptr, ptr %430, align 8, !tbaa !5
  %432 = getelementptr inbounds i8, ptr %431, i64 4
  %433 = load i32, ptr %432, align 4, !tbaa !17
  %434 = add i32 %433, %.086163.fr
  %435 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %17) #8
  %436 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKP6aiMeshSt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef nonnull align 8 dereferenceable(8) %6) #8
  br i1 %436, label %.preheader122, label %._crit_edge165, !llvm.loop !40

.preheader:                                       ; preds = %.lr.ph160, %.loopexit
  %indvars.iv174 = phi i64 [ %indvars.iv.next175, %.loopexit ], [ 0, %.lr.ph160 ]
  %.188158 = phi ptr [ %452, %.loopexit ], [ %.087162, %.lr.ph160 ]
  %437 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %17) #8
  %438 = load ptr, ptr %437, align 8, !tbaa !5
  %439 = getelementptr inbounds i8, ptr %438, i64 208
  %440 = load ptr, ptr %439, align 8, !tbaa !35
  %441 = getelementptr inbounds %struct.aiFace, ptr %440, i64 %indvars.iv174
  %442 = load i32, ptr %441, align 8, !tbaa !36
  store i32 %442, ptr %.188158, align 8, !tbaa !36
  %443 = getelementptr inbounds i8, ptr %441, i64 8
  %444 = load ptr, ptr %443, align 8, !tbaa !38
  %445 = getelementptr inbounds i8, ptr %.188158, i64 8
  store ptr %444, ptr %445, align 8, !tbaa !38
  %.not170 = icmp eq i32 %442, 0
  br i1 %.not170, label %.loopexit, label %.lr.ph157

.lr.ph157:                                        ; preds = %.preheader, %.lr.ph157
  %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph157 ], [ 0, %.preheader ]
  %446 = getelementptr inbounds i32, ptr %444, i64 %indvars.iv
  %447 = load i32, ptr %446, align 4, !tbaa !30
  %448 = add i32 %447, %.086163.fr
  store i32 %448, ptr %446, align 4, !tbaa !30
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %449 = load i32, ptr %441, align 8, !tbaa !36
  %450 = zext i32 %449 to i64
  %451 = icmp ult i64 %indvars.iv.next, %450
  br i1 %451, label %.lr.ph157, label %.loopexit, !llvm.loop !41

.loopexit:                                        ; preds = %.lr.ph157, %.preheader
  store ptr null, ptr %443, align 8, !tbaa !38
  %indvars.iv.next175 = add nuw nsw i64 %indvars.iv174, 1
  %452 = getelementptr inbounds i8, ptr %.188158, i64 16
  %453 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %17) #8
  %454 = load ptr, ptr %453, align 8, !tbaa !5
  %455 = getelementptr inbounds i8, ptr %454, i64 8
  %456 = load i32, ptr %455, align 8, !tbaa !18
  %457 = zext i32 %456 to i64
  %458 = icmp ult i64 %indvars.iv.next175, %457
  br i1 %458, label %.preheader, label %._crit_edge161, !llvm.loop !39

459:                                              ; preds = %._crit_edge165, %.loopexit125
  %460 = getelementptr inbounds i8, ptr %24, i64 216
  %461 = load i32, ptr %460, align 8, !tbaa !19
  %.not103 = icmp eq i32 %461, 0
  br i1 %.not103, label %463, label %462

462:                                              ; preds = %459
  %.sroa.01.0.copyload = load ptr, ptr %5, align 8, !tbaa !5
  %.sroa.0.0.copyload = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZN6Assimp13SceneCombiner10MergeBonesEP6aiMeshN9__gnu_cxx17__normal_iteratorIPKS2_St6vectorIS2_SaIS2_EEEESA_(ptr noundef nonnull %24, ptr %.sroa.01.0.copyload, ptr %.sroa.0.0.copyload)
          to label %463 unwind label %105

463:                                              ; preds = %462, %459
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #8
  %464 = load i64, ptr %5, align 8, !tbaa !5
  store i64 %464, ptr %18, align 8, !tbaa !5
  %465 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKP6aiMeshSt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef nonnull align 8 dereferenceable(8) %6) #8
  br i1 %465, label %.lr.ph167, label %._crit_edge168

._crit_edge168:                                   ; preds = %470, %463
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #8
  br label %473

.lr.ph167:                                        ; preds = %463, %470
  %466 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %18) #8
  %467 = load ptr, ptr %466, align 8, !tbaa !5
  %468 = icmp eq ptr %467, null
  br i1 %468, label %470, label %469

469:                                              ; preds = %.lr.ph167
  call void @_ZN6aiMeshD2Ev(ptr noundef nonnull align 8 dereferenceable(1320) %467) #8
  call void @_ZdlPvm(ptr noundef nonnull %467, i64 noundef 1320) #10
  br label %470

470:                                              ; preds = %.lr.ph167, %469
  %471 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKP6aiMeshSt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %18) #8
  %472 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKP6aiMeshSt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef nonnull align 8 dereferenceable(8) %6) #8
  br i1 %472, label %.lr.ph167, label %._crit_edge168, !llvm.loop !42

473:                                              ; preds = %4, %._crit_edge168, %22
  ret void

474:                                              ; preds = %107, %127, %176, %251, %221, %359, %381, %327, %305, %105, %84
  %.pn119.pn = phi { ptr, i32 } [ %.pn119, %84 ], [ %106, %105 ], [ %128, %127 ], [ %177, %176 ], [ %108, %107 ], [ %252, %251 ], [ %222, %221 ], [ %328, %327 ], [ %306, %305 ], [ %382, %381 ], [ %360, %359 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #8
  resume { ptr, i32 } %.pn119.pn
}

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLERKS4_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #7 align 2

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

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

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEpLEPKc(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) local_unnamed_addr #7 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !11, i64 232}
!10 = !{!"_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, !13, i64 1280, !14, i64 1284, !6, i64 1312}
!11 = !{!"int", !7, i64 0}
!12 = !{!"_ZTS8aiString", !11, i64 0, !7, i64 4}
!13 = !{!"_ZTS16aiMorphingMethod", !7, i64 0}
!14 = !{!"_ZTS6aiAABB", !15, i64 0, !15, i64 12}
!15 = !{!"_ZTS10aiVector3tIfE", !16, i64 0, !16, i64 4, !16, i64 8}
!16 = !{!"float", !7, i64 0}
!17 = !{!10, !11, i64 4}
!18 = !{!10, !11, i64 8}
!19 = !{!10, !11, i64 216}
!20 = !{!10, !11, i64 0}
!21 = distinct !{!21, !22}
!22 = !{!"llvm.loop.mustprogress"}
!23 = !{!10, !6, i64 16}
!24 = distinct !{!24, !22}
!25 = !{!10, !6, i64 24}
!26 = distinct !{!26, !22}
!27 = !{!10, !6, i64 32}
!28 = !{!10, !6, i64 40}
!29 = distinct !{!29, !22}
!30 = !{!11, !11, i64 0}
!31 = distinct !{!31, !22}
!32 = distinct !{!32, !22}
!33 = distinct !{!33, !22}
!34 = distinct !{!34, !22}
!35 = !{!10, !6, i64 208}
!36 = !{!37, !11, i64 0}
!37 = !{!"_ZTS6aiFace", !11, i64 0, !6, i64 8}
!38 = !{!37, !6, i64 8}
!39 = distinct !{!39, !22}
!40 = distinct !{!40, !22}
!41 = distinct !{!41, !22}
!42 = distinct !{!42, !22}


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