; LLVM IR from Overload-Technologies/Overload :: Dependencies/assimp/code/Common/Importer.ll (ZN6Assimp8Importer19ApplyPostProcessingEj)

; 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.Assimp::ValidateDSProcess" = type { %"class.Assimp::BaseProcess", ptr }
%"class.Assimp::BaseProcess" = type { ptr, ptr, ptr }
%"class.std::unique_ptr" = type { %"struct.std::__uniq_ptr_data" }
%"struct.std::__uniq_ptr_data" = type { %"class.std::__uniq_ptr_impl" }
%"class.std::__uniq_ptr_impl" = type { %"class.std::tuple" }
%"class.std::tuple" = type { %"struct.std::_Tuple_impl" }
%"struct.std::_Tuple_impl" = type { %"struct.std::_Head_base.59" }
%"struct.std::_Head_base.59" = 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.5" = type { i8 }
%struct.ExceptionSwallower.56 = type { i8 }
%"class.Assimp::Importer" = type { ptr }
%"class.Assimp::ImporterPimpl" = type { ptr, i8, ptr, i8, %"class.std::vector", %"class.std::vector.0", ptr, %"class.std::__cxx11::basic_string", %"class.std::__exception_ptr::exception_ptr", %"class.std::map", %"class.std::map.11", %"class.std::map.16", %"class.std::map.21", %"class.std::map.26", i8, ptr }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<Assimp::BaseImporter *, std::allocator<Assimp::BaseImporter *>>::_Vector_impl" }
%"struct.std::_Vector_base<Assimp::BaseImporter *, std::allocator<Assimp::BaseImporter *>>::_Vector_impl" = type { %"struct.std::_Vector_base<Assimp::BaseImporter *, std::allocator<Assimp::BaseImporter *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Assimp::BaseImporter *, std::allocator<Assimp::BaseImporter *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.0" = type { %"struct.std::_Vector_base.1" }
%"struct.std::_Vector_base.1" = type { %"struct.std::_Vector_base<Assimp::BaseProcess *, std::allocator<Assimp::BaseProcess *>>::_Vector_impl" }
%"struct.std::_Vector_base<Assimp::BaseProcess *, std::allocator<Assimp::BaseProcess *>>::_Vector_impl" = type { %"struct.std::_Vector_base<Assimp::BaseProcess *, std::allocator<Assimp::BaseProcess *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Assimp::BaseProcess *, std::allocator<Assimp::BaseProcess *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::__exception_ptr::exception_ptr" = type { ptr }
%"class.std::map" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<unsigned int, std::pair<const unsigned int, int>, std::_Select1st<std::pair<const unsigned int, int>>, std::less<unsigned int>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<unsigned int, std::pair<const unsigned int, int>, std::_Select1st<std::pair<const unsigned int, int>>, std::less<unsigned int>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"class.std::map.11" = type { %"class.std::_Rb_tree.12" }
%"class.std::_Rb_tree.12" = type { %"struct.std::_Rb_tree<unsigned int, std::pair<const unsigned int, float>, std::_Select1st<std::pair<const unsigned int, float>>, std::less<unsigned int>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<unsigned int, std::pair<const unsigned int, float>, std::_Select1st<std::pair<const unsigned int, float>>, std::less<unsigned int>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::map.16" = type { %"class.std::_Rb_tree.17" }
%"class.std::_Rb_tree.17" = type { %"struct.std::_Rb_tree<unsigned int, std::pair<const unsigned int, std::__cxx11::basic_string<char>>, std::_Select1st<std::pair<const unsigned int, std::__cxx11::basic_string<char>>>, std::less<unsigned int>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<unsigned int, std::pair<const unsigned int, std::__cxx11::basic_string<char>>, std::_Select1st<std::pair<const unsigned int, std::__cxx11::basic_string<char>>>, std::less<unsigned int>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::map.21" = type { %"class.std::_Rb_tree.22" }
%"class.std::_Rb_tree.22" = type { %"struct.std::_Rb_tree<unsigned int, std::pair<const unsigned int, aiMatrix4x4t<float>>, std::_Select1st<std::pair<const unsigned int, aiMatrix4x4t<float>>>, std::less<unsigned int>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<unsigned int, std::pair<const unsigned int, aiMatrix4x4t<float>>, std::_Select1st<std::pair<const unsigned int, aiMatrix4x4t<float>>>, std::less<unsigned int>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::map.26" = type { %"class.std::_Rb_tree.27" }
%"class.std::_Rb_tree.27" = type { %"struct.std::_Rb_tree<unsigned int, std::pair<const unsigned int, void *>, std::_Select1st<std::pair<const unsigned int, void *>>, std::less<unsigned int>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<unsigned int, std::pair<const unsigned int, void *>, std::_Select1st<std::pair<const unsigned int, void *>>, std::less<unsigned int>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.Assimp::ScenePrivateData" = type <{ ptr, i32, i8, [3 x i8] }>

@.str.1 = external hidden unnamed_addr constant [109 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [33 x i8], align 1

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

declare i32 @__gxx_personality_v0(...)

declare ptr @__cxa_begin_catch(ptr)

declare void @__cxa_end_catch()

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

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #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: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #2

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

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

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

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

declare noundef ptr @_ZN6Assimp13DefaultLogger3getEv() #5

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_Z14_ValidateFlagsj(i32 noundef) #6

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

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

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

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

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

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

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

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

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

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

declare void @_ZN6Assimp17ValidateDSProcessC1Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #5

declare void @_ZN6Assimp11BaseProcess14ExecuteOnSceneEPNS_8ImporterE(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef) #5

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

; Function Attrs: mustprogress uwtable
define dso_local noundef ptr @_ZN6Assimp8Importer19ApplyPostProcessingEj(ptr noundef nonnull align 8 dereferenceable(8) %0, i32 noundef %1) #6 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca i32, align 4
  %6 = alloca ptr, align 8
  %7 = alloca i32, align 4
  %8 = alloca %"class.Assimp::ValidateDSProcess", align 8
  %9 = alloca i32, align 4
  %10 = alloca %"class.std::unique_ptr", align 8
  %11 = alloca ptr, align 8
  %12 = alloca i1, align 1
  %13 = alloca i32, align 4
  %14 = alloca ptr, align 8
  %15 = alloca %"class.std::__cxx11::basic_string", align 8
  %16 = alloca %"class.std::allocator.5", align 1
  %17 = alloca %"class.std::__cxx11::basic_string", align 8
  %18 = alloca %"class.std::allocator.5", align 1
  %19 = alloca %"class.Assimp::ValidateDSProcess", align 8
  %20 = alloca %struct.ExceptionSwallower.56, align 1
  store ptr %0, ptr %4, align 8, !tbaa !5
  store i32 %1, ptr %5, align 4, !tbaa !9
  %21 = load ptr, ptr %4, align 8
  %22 = getelementptr inbounds %"class.Assimp::Importer", ptr %21, i32 0, i32 0
  %23 = load ptr, ptr %22, align 8, !tbaa !11
  %24 = icmp ne ptr null, %23
  br i1 %24, label %26, label %25

25:                                               ; preds = %2
  call void @_ZN6Assimp17aiAssertViolationEPKcS1_i(ptr noundef @.str.10, ptr noundef @.str.1, i32 noundef 790)
  br label %26

26:                                               ; preds = %25, %2
  %27 = phi i1 [ true, %2 ], [ false, %25 ]
  %28 = getelementptr inbounds %"class.Assimp::Importer", ptr %21, i32 0, i32 0
  %29 = load ptr, ptr %28, align 8, !tbaa !11
  %30 = getelementptr inbounds %"class.Assimp::ImporterPimpl", ptr %29, i32 0, i32 6
  %31 = load ptr, ptr %30, align 8, !tbaa !13
  %32 = icmp ne ptr %31, null
  br i1 %32, label %34, label %33

33:                                               ; preds = %26
  store ptr null, ptr %3, align 8
  br label %295

34:                                               ; preds = %26
  %35 = load i32, ptr %5, align 4, !tbaa !9
  %36 = icmp ne i32 %35, 0
  br i1 %36, label %42, label %37

37:                                               ; preds = %34
  %38 = getelementptr inbounds %"class.Assimp::Importer", ptr %21, i32 0, i32 0
  %39 = load ptr, ptr %38, align 8, !tbaa !11
  %40 = getelementptr inbounds %"class.Assimp::ImporterPimpl", ptr %39, i32 0, i32 6
  %41 = load ptr, ptr %40, align 8, !tbaa !13
  store ptr %41, ptr %3, align 8
  br label %295

42:                                               ; preds = %34
  %43 = load i32, ptr %5, align 4, !tbaa !9
  %44 = invoke noundef zeroext i1 @_Z14_ValidateFlagsj(i32 noundef %43)
          to label %45 unwind label %65

45:                                               ; preds = %42
  br i1 %44, label %48, label %46

46:                                               ; preds = %45
  invoke void @_ZN6Assimp17aiAssertViolationEPKcS1_i(ptr noundef @.str.47, ptr noundef @.str.1, i32 noundef 804)
          to label %47 unwind label %65

47:                                               ; preds = %46
  br label %48

48:                                               ; preds = %47, %45
  %49 = phi i1 [ true, %45 ], [ false, %47 ]
  %50 = invoke noundef ptr @_ZN6Assimp13DefaultLogger3getEv()
          to label %51 unwind label %65

51:                                               ; preds = %48
  invoke void @_ZN6Assimp6Logger4infoEPKc(ptr noundef nonnull align 8 dereferenceable(12) %50, ptr noundef @.str.48)
          to label %52 unwind label %65

52:                                               ; preds = %51
  %53 = load i32, ptr %5, align 4, !tbaa !9
  %54 = and i32 %53, 1024
  %55 = icmp ne i32 %54, 0
  br i1 %55, label %56, label %82

56:                                               ; preds = %52
  call void @llvm.lifetime.start.p0(i64 32, ptr %8) #8
  invoke void @_ZN6Assimp17ValidateDSProcessC1Ev(ptr noundef nonnull align 8 dereferenceable(32) %8)
          to label %57 unwind label %69

57:                                               ; preds = %56
  invoke void @_ZN6Assimp11BaseProcess14ExecuteOnSceneEPNS_8ImporterE(ptr noundef nonnull align 8 dereferenceable(24) %8, ptr noundef %21)
          to label %58 unwind label %73

58:                                               ; preds = %57
  %59 = getelementptr inbounds %"class.Assimp::Importer", ptr %21, i32 0, i32 0
  %60 = load ptr, ptr %59, align 8, !tbaa !11
  %61 = getelementptr inbounds %"class.Assimp::ImporterPimpl", ptr %60, i32 0, i32 6
  %62 = load ptr, ptr %61, align 8, !tbaa !13
  %63 = icmp ne ptr %62, null
  br i1 %63, label %77, label %64

64:                                               ; preds = %58
  store ptr null, ptr %3, align 8
  store i32 1, ptr %9, align 4
  br label %78

65:                                               ; preds = %51, %48, %46, %42
  %66 = landingpad { ptr, i32 }
          catch ptr null
  %67 = extractvalue { ptr, i32 } %66, 0
  store ptr %67, ptr %6, align 8
  %68 = extractvalue { ptr, i32 } %66, 1
  store i32 %68, ptr %7, align 4
  br label %280

69:                                               ; preds = %56
  %70 = landingpad { ptr, i32 }
          catch ptr null
  %71 = extractvalue { ptr, i32 } %70, 0
  store ptr %71, ptr %6, align 8
  %72 = extractvalue { ptr, i32 } %70, 1
  store i32 %72, ptr %7, align 4
  br label %81

73:                                               ; preds = %57
  %74 = landingpad { ptr, i32 }
          catch ptr null
  %75 = extractvalue { ptr, i32 } %74, 0
  store ptr %75, ptr %6, align 8
  %76 = extractvalue { ptr, i32 } %74, 1
  store i32 %76, ptr %7, align 4
  call void @_ZN6Assimp11BaseProcessD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #8
  br label %81

77:                                               ; preds = %58
  store i32 0, ptr %9, align 4
  br label %78

78:                                               ; preds = %77, %64
  call void @_ZN6Assimp11BaseProcessD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %8) #8
  %79 = load i32, ptr %9, align 4
  switch i32 %79, label %305 [
    i32 0, label %80
    i32 1, label %295
  ]

80:                                               ; preds = %78
  br label %82

81:                                               ; preds = %73, %69
  call void @llvm.lifetime.end.p0(i64 32, ptr %8) #8
  br label %280

82:                                               ; preds = %80, %52
  %83 = getelementptr inbounds %"class.Assimp::Importer", ptr %21, i32 0, i32 0
  %84 = load ptr, ptr %83, align 8, !tbaa !11
  %85 = getelementptr inbounds %"class.Assimp::ImporterPimpl", ptr %84, i32 0, i32 14
  %86 = load i8, ptr %85, align 8, !tbaa !48, !range !49, !noundef !50
  %87 = trunc i8 %86 to i1
  br i1 %87, label %88, label %91

88:                                               ; preds = %82
  %89 = load i32, ptr %5, align 4, !tbaa !9
  %90 = or i32 %89, 1024
  store i32 %90, ptr %5, align 4, !tbaa !9
  br label %91

91:                                               ; preds = %88, %82
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #8
  store i1 false, ptr %12, align 1
  %92 = invoke noundef i32 @_ZNK6Assimp8Importer18GetPropertyIntegerEPKci(ptr noundef nonnull align 8 dereferenceable(8) %21, ptr noundef @.str.33, i32 noundef 0)
          to label %93 unwind label %110

93:                                               ; preds = %91
  %94 = icmp ne i32 %92, 0
  br i1 %94, label %95, label %98

95:                                               ; preds = %93
  %96 = invoke noalias noundef nonnull ptr @_Znwm(i64 noundef 48) #9
          to label %97 unwind label %110

97:                                               ; preds = %95
  store ptr %96, ptr %11, align 8
  store i1 true, ptr %12, align 1
  call void @llvm.memset.p0.i64(ptr align 16 %96, i8 0, i64 48, i1 false)
  call void @_ZN6Assimp9Profiling8ProfilerC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %96) #8
  br label %99

98:                                               ; preds = %93
  br label %99

99:                                               ; preds = %98, %97
  %100 = phi ptr [ %96, %97 ], [ null, %98 ]
  call void @_ZNSt10unique_ptrIN6Assimp9Profiling8ProfilerESt14default_deleteIS2_EEC2IS4_vEEPS2_(ptr noundef nonnull align 8 dereferenceable(8) %10, ptr noundef %100) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #8
  store i32 0, ptr %13, align 4, !tbaa !9
  br label %101

101:                                              ; preds = %225, %99
  %102 = load i32, ptr %13, align 4, !tbaa !9
  %103 = zext i32 %102 to i64
  %104 = getelementptr inbounds %"class.Assimp::Importer", ptr %21, i32 0, i32 0
  %105 = load ptr, ptr %104, align 8, !tbaa !11
  %106 = getelementptr inbounds %"class.Assimp::ImporterPimpl", ptr %105, i32 0, i32 5
  %107 = call noundef i64 @_ZNKSt6vectorIPN6Assimp11BaseProcessESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %106) #8
  %108 = icmp ult i64 %103, %107
  br i1 %108, label %114, label %109

109:                                              ; preds = %101
  store i32 2, ptr %9, align 4
  br label %229

110:                                              ; preds = %95, %91
  %111 = landingpad { ptr, i32 }
          catch ptr null
  %112 = extractvalue { ptr, i32 } %111, 0
  store ptr %112, ptr %6, align 8
  %113 = extractvalue { ptr, i32 } %111, 1
  store i32 %113, ptr %7, align 4
  br label %279

114:                                              ; preds = %101
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #8
  %115 = getelementptr inbounds %"class.Assimp::Importer", ptr %21, i32 0, i32 0
  %116 = load ptr, ptr %115, align 8, !tbaa !11
  %117 = getelementptr inbounds %"class.Assimp::ImporterPimpl", ptr %116, i32 0, i32 5
  %118 = load i32, ptr %13, align 4, !tbaa !9
  %119 = zext i32 %118 to i64
  %120 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN6Assimp11BaseProcessESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %117, i64 noundef %119) #8
  %121 = load ptr, ptr %120, align 8, !tbaa !5
  store ptr %121, ptr %14, align 8, !tbaa !5
  %122 = getelementptr inbounds %"class.Assimp::Importer", ptr %21, i32 0, i32 0
  %123 = load ptr, ptr %122, align 8, !tbaa !11
  %124 = getelementptr inbounds %"class.Assimp::ImporterPimpl", ptr %123, i32 0, i32 2
  %125 = load ptr, ptr %124, align 8, !tbaa !51
  %126 = load i32, ptr %13, align 4, !tbaa !9
  %127 = getelementptr inbounds %"class.Assimp::Importer", ptr %21, i32 0, i32 0
  %128 = load ptr, ptr %127, align 8, !tbaa !11
  %129 = getelementptr inbounds %"class.Assimp::ImporterPimpl", ptr %128, i32 0, i32 5
  %130 = call noundef i64 @_ZNKSt6vectorIPN6Assimp11BaseProcessESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %129) #8
  %131 = trunc i64 %130 to i32
  %132 = load ptr, ptr %125, align 8, !tbaa !52
  %133 = getelementptr inbounds ptr, ptr %132, i64 4
  %134 = load ptr, ptr %133, align 8
  invoke void %134(ptr noundef nonnull align 8 dereferenceable(8) %125, i32 noundef %126, i32 noundef %131)
          to label %135 unwind label %149

135:                                              ; preds = %114
  %136 = load ptr, ptr %14, align 8, !tbaa !5
  %137 = load i32, ptr %5, align 4, !tbaa !9
  %138 = load ptr, ptr %136, align 8, !tbaa !52
  %139 = getelementptr inbounds ptr, ptr %138, i64 2
  %140 = load ptr, ptr %139, align 8
  %141 = invoke noundef zeroext i1 %140(ptr noundef nonnull align 8 dereferenceable(24) %136, i32 noundef %137)
          to label %142 unwind label %149

142:                                              ; preds = %135
  br i1 %141, label %143, label %180

143:                                              ; preds = %142
  %144 = call noundef zeroext i1 @_ZNKSt10unique_ptrIN6Assimp9Profiling8ProfilerESt14default_deleteIS2_EEcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %10) #8
  br i1 %144, label %145, label %162

145:                                              ; preds = %143
  %146 = call noundef ptr @_ZNKSt10unique_ptrIN6Assimp9Profiling8ProfilerESt14default_deleteIS2_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %10) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %15) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %16) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef @.str.49, ptr noundef nonnull align 1 dereferenceable(1) %16)
          to label %147 unwind label %153

147:                                              ; preds = %145
  invoke void @_ZN6Assimp9Profiling8Profiler11BeginRegionERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(48) %146, ptr noundef nonnull align 8 dereferenceable(32) %15)
          to label %148 unwind label %157

148:                                              ; preds = %147
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %16) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %15) #8
  br label %162

149:                                              ; preds = %195, %193, %162, %135, %114
  %150 = landingpad { ptr, i32 }
          catch ptr null
  %151 = extractvalue { ptr, i32 } %150, 0
  store ptr %151, ptr %6, align 8
  %152 = extractvalue { ptr, i32 } %150, 1
  store i32 %152, ptr %7, align 4
  br label %228

153:                                              ; preds = %145
  %154 = landingpad { ptr, i32 }
          catch ptr null
  %155 = extractvalue { ptr, i32 } %154, 0
  store ptr %155, ptr %6, align 8
  %156 = extractvalue { ptr, i32 } %154, 1
  store i32 %156, ptr %7, align 4
  br label %161

157:                                              ; preds = %147
  %158 = landingpad { ptr, i32 }
          catch ptr null
  %159 = extractvalue { ptr, i32 } %158, 0
  store ptr %159, ptr %6, align 8
  %160 = extractvalue { ptr, i32 } %158, 1
  store i32 %160, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #8
  br label %161

161:                                              ; preds = %157, %153
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %16) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %16) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %15) #8
  br label %228

162:                                              ; preds = %148, %143
  %163 = load ptr, ptr %14, align 8, !tbaa !5
  invoke void @_ZN6Assimp11BaseProcess14ExecuteOnSceneEPNS_8ImporterE(ptr noundef nonnull align 8 dereferenceable(24) %163, ptr noundef %21)
          to label %164 unwind label %149

164:                                              ; preds = %162
  %165 = call noundef zeroext i1 @_ZNKSt10unique_ptrIN6Assimp9Profiling8ProfilerESt14default_deleteIS2_EEcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %10) #8
  br i1 %165, label %166, label %179

166:                                              ; preds = %164
  %167 = call noundef ptr @_ZNKSt10unique_ptrIN6Assimp9Profiling8ProfilerESt14default_deleteIS2_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %10) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %17) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %18) #8
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #8
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %17, ptr noundef @.str.49, ptr noundef nonnull align 1 dereferenceable(1) %18)
          to label %168 unwind label %170

168:                                              ; preds = %166
  invoke void @_ZN6Assimp9Profiling8Profiler9EndRegionERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(48) %167, ptr noundef nonnull align 8 dereferenceable(32) %17)
          to label %169 unwind label %174

169:                                              ; preds = %168
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #8
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %18) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %17) #8
  br label %179

170:                                              ; preds = %166
  %171 = landingpad { ptr, i32 }
          catch ptr null
  %172 = extractvalue { ptr, i32 } %171, 0
  store ptr %172, ptr %6, align 8
  %173 = extractvalue { ptr, i32 } %171, 1
  store i32 %173, ptr %7, align 4
  br label %178

174:                                              ; preds = %168
  %175 = landingpad { ptr, i32 }
          catch ptr null
  %176 = extractvalue { ptr, i32 } %175, 0
  store ptr %176, ptr %6, align 8
  %177 = extractvalue { ptr, i32 } %175, 1
  store i32 %177, ptr %7, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #8
  br label %178

178:                                              ; preds = %174, %170
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %18) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %17) #8
  br label %228

179:                                              ; preds = %169, %164
  br label %180

180:                                              ; preds = %179, %142
  %181 = getelementptr inbounds %"class.Assimp::Importer", ptr %21, i32 0, i32 0
  %182 = load ptr, ptr %181, align 8, !tbaa !11
  %183 = getelementptr inbounds %"class.Assimp::ImporterPimpl", ptr %182, i32 0, i32 6
  %184 = load ptr, ptr %183, align 8, !tbaa !13
  %185 = icmp ne ptr %184, null
  br i1 %185, label %187, label %186

186:                                              ; preds = %180
  store i32 2, ptr %9, align 4
  br label %222

187:                                              ; preds = %180
  %188 = getelementptr inbounds %"class.Assimp::Importer", ptr %21, i32 0, i32 0
  %189 = load ptr, ptr %188, align 8, !tbaa !11
  %190 = getelementptr inbounds %"class.Assimp::ImporterPimpl", ptr %189, i32 0, i32 14
  %191 = load i8, ptr %190, align 8, !tbaa !48, !range !49, !noundef !50
  %192 = trunc i8 %191 to i1
  br i1 %192, label %193, label %221

193:                                              ; preds = %187
  %194 = invoke noundef ptr @_ZN6Assimp13DefaultLogger3getEv()
          to label %195 unwind label %149

195:                                              ; preds = %193
  invoke void @_ZN6Assimp6Logger5debugEPKc(ptr noundef nonnull align 8 dereferenceable(12) %194, ptr noundef @.str.50)
          to label %196 unwind label %149

196:                                              ; preds = %195
  call void @llvm.lifetime.start.p0(i64 32, ptr %19) #8
  invoke void @_ZN6Assimp17ValidateDSProcessC1Ev(ptr noundef nonnull align 8 dereferenceable(32) %19)
          to label %197 unwind label %208

197:                                              ; preds = %196
  invoke void @_ZN6Assimp11BaseProcess14ExecuteOnSceneEPNS_8ImporterE(ptr noundef nonnull align 8 dereferenceable(24) %19, ptr noundef %21)
          to label %198 unwind label %212

198:                                              ; preds = %197
  %199 = getelementptr inbounds %"class.Assimp::Importer", ptr %21, i32 0, i32 0
  %200 = load ptr, ptr %199, align 8, !tbaa !11
  %201 = getelementptr inbounds %"class.Assimp::ImporterPimpl", ptr %200, i32 0, i32 6
  %202 = load ptr, ptr %201, align 8, !tbaa !13
  %203 = icmp ne ptr %202, null
  br i1 %203, label %216, label %204

204:                                              ; preds = %198
  %205 = invoke noundef ptr @_ZN6Assimp13DefaultLogger3getEv()
          to label %206 unwind label %212

206:                                              ; preds = %204
  invoke void @_ZN6Assimp6Logger5errorEPKc(ptr noundef nonnull align 8 dereferenceable(12) %205, ptr noundef @.str.51)
          to label %207 unwind label %212

207:                                              ; preds = %206
  store i32 2, ptr %9, align 4
  br label %217

208:                                              ; preds = %196
  %209 = landingpad { ptr, i32 }
          catch ptr null
  %210 = extractvalue { ptr, i32 } %209, 0
  store ptr %210, ptr %6, align 8
  %211 = extractvalue { ptr, i32 } %209, 1
  store i32 %211, ptr %7, align 4
  br label %220

212:                                              ; preds = %206, %204, %197
  %213 = landingpad { ptr, i32 }
          catch ptr null
  %214 = extractvalue { ptr, i32 } %213, 0
  store ptr %214, ptr %6, align 8
  %215 = extractvalue { ptr, i32 } %213, 1
  store i32 %215, ptr %7, align 4
  call void @_ZN6Assimp11BaseProcessD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #8
  br label %220

216:                                              ; preds = %198
  store i32 0, ptr %9, align 4
  br label %217

217:                                              ; preds = %216, %207
  call void @_ZN6Assimp11BaseProcessD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %19) #8
  %218 = load i32, ptr %9, align 4
  switch i32 %218, label %222 [
    i32 0, label %219
  ]

219:                                              ; preds = %217
  br label %221

220:                                              ; preds = %212, %208
  call void @llvm.lifetime.end.p0(i64 32, ptr %19) #8
  br label %228

221:                                              ; preds = %219, %187
  store i32 0, ptr %9, align 4
  br label %222

222:                                              ; preds = %221, %217, %186
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #8
  %223 = load i32, ptr %9, align 4
  switch i32 %223, label %229 [
    i32 0, label %224
  ]

224:                                              ; preds = %222
  br label %225

225:                                              ; preds = %224
  %226 = load i32, ptr %13, align 4, !tbaa !9
  %227 = add i32 %226, 1
  store i32 %227, ptr %13, align 4, !tbaa !9
  br label %101, !llvm.loop !54

228:                                              ; preds = %220, %178, %161, %149
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #8
  br label %278

229:                                              ; preds = %222, %109
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #8
  br label %230

230:                                              ; preds = %229
  %231 = getelementptr inbounds %"class.Assimp::Importer", ptr %21, i32 0, i32 0
  %232 = load ptr, ptr %231, align 8, !tbaa !11
  %233 = getelementptr inbounds %"class.Assimp::ImporterPimpl", ptr %232, i32 0, i32 2
  %234 = load ptr, ptr %233, align 8, !tbaa !51
  %235 = getelementptr inbounds %"class.Assimp::Importer", ptr %21, i32 0, i32 0
  %236 = load ptr, ptr %235, align 8, !tbaa !11
  %237 = getelementptr inbounds %"class.Assimp::ImporterPimpl", ptr %236, i32 0, i32 5
  %238 = call noundef i64 @_ZNKSt6vectorIPN6Assimp11BaseProcessESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %237) #8
  %239 = trunc i64 %238 to i32
  %240 = getelementptr inbounds %"class.Assimp::Importer", ptr %21, i32 0, i32 0
  %241 = load ptr, ptr %240, align 8, !tbaa !11
  %242 = getelementptr inbounds %"class.Assimp::ImporterPimpl", ptr %241, i32 0, i32 5
  %243 = call noundef i64 @_ZNKSt6vectorIPN6Assimp11BaseProcessESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %242) #8
  %244 = trunc i64 %243 to i32
  %245 = load ptr, ptr %234, align 8, !tbaa !52
  %246 = getelementptr inbounds ptr, ptr %245, i64 4
  %247 = load ptr, ptr %246, align 8
  invoke void %247(ptr noundef nonnull align 8 dereferenceable(8) %234, i32 noundef %239, i32 noundef %244)
          to label %248 unwind label %265

248:                                              ; preds = %230
  %249 = getelementptr inbounds %"class.Assimp::Importer", ptr %21, i32 0, i32 0
  %250 = load ptr, ptr %249, align 8, !tbaa !11
  %251 = getelementptr inbounds %"class.Assimp::ImporterPimpl", ptr %250, i32 0, i32 6
  %252 = load ptr, ptr %251, align 8, !tbaa !13
  %253 = icmp ne ptr %252, null
  br i1 %253, label %254, label %269

254:                                              ; preds = %248
  %255 = load i32, ptr %5, align 4, !tbaa !9
  %256 = getelementptr inbounds %"class.Assimp::Importer", ptr %21, i32 0, i32 0
  %257 = load ptr, ptr %256, align 8, !tbaa !11
  %258 = getelementptr inbounds %"class.Assimp::ImporterPimpl", ptr %257, i32 0, i32 6
  %259 = load ptr, ptr %258, align 8, !tbaa !13
  %260 = invoke noundef ptr @_ZN6Assimp9ScenePrivEP7aiScene(ptr noundef %259)
          to label %261 unwind label %265

261:                                              ; preds = %254
  %262 = getelementptr inbounds %"struct.Assimp::ScenePrivateData", ptr %260, i32 0, i32 1
  %263 = load i32, ptr %262, align 8, !tbaa !56
  %264 = or i32 %263, %255
  store i32 %264, ptr %262, align 8, !tbaa !56
  br label %269

265:                                              ; preds = %276, %274, %269, %254, %230
  %266 = landingpad { ptr, i32 }
          catch ptr null
  %267 = extractvalue { ptr, i32 } %266, 0
  store ptr %267, ptr %6, align 8
  %268 = extractvalue { ptr, i32 } %266, 1
  store i32 %268, ptr %7, align 4
  br label %278

269:                                              ; preds = %261, %248
  %270 = getelementptr inbounds %"class.Assimp::Importer", ptr %21, i32 0, i32 0
  %271 = load ptr, ptr %270, align 8, !tbaa !11
  %272 = getelementptr inbounds %"class.Assimp::ImporterPimpl", ptr %271, i32 0, i32 15
  %273 = load ptr, ptr %272, align 8, !tbaa !58
  invoke void @_ZN6Assimp21SharedPostProcessInfo5CleanEv(ptr noundef nonnull align 8 dereferenceable(48) %273)
          to label %274 unwind label %265

274:                                              ; preds = %269
  %275 = invoke noundef ptr @_ZN6Assimp13DefaultLogger3getEv()
          to label %276 unwind label %265

276:                                              ; preds = %274
  invoke void @_ZN6Assimp6Logger4infoEPKc(ptr noundef nonnull align 8 dereferenceable(12) %275, ptr noundef @.str.52)
          to label %277 unwind label %265

277:                                              ; preds = %276
  call void @_ZNSt10unique_ptrIN6Assimp9Profiling8ProfilerESt14default_deleteIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %10) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #8
  br label %290

278:                                              ; preds = %265, %228
  call void @_ZNSt10unique_ptrIN6Assimp9Profiling8ProfilerESt14default_deleteIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %10) #8
  br label %279

279:                                              ; preds = %278, %110
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #8
  br label %280

280:                                              ; preds = %279, %81, %65
  %281 = load ptr, ptr %6, align 8
  %282 = call ptr @__cxa_begin_catch(ptr %281) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr %20) #8
  %283 = invoke noundef ptr @_ZNK18ExceptionSwallowerIPK7aiSceneEclEv(ptr noundef nonnull align 1 dereferenceable(1) %20)
          to label %284 unwind label %285

284:                                              ; preds = %280
  store ptr %283, ptr %3, align 8
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #8
  store i32 1, ptr %9, align 4
  call void @__cxa_end_catch()
  br label %295

285:                                              ; preds = %280
  %286 = landingpad { ptr, i32 }
          cleanup
  %287 = extractvalue { ptr, i32 } %286, 0
  store ptr %287, ptr %6, align 8
  %288 = extractvalue { ptr, i32 } %286, 1
  store i32 %288, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #8
  invoke void @__cxa_end_catch()
          to label %289 unwind label %302

289:                                              ; preds = %285
  br label %297

290:                                              ; preds = %277
  %291 = getelementptr inbounds %"class.Assimp::Importer", ptr %21, i32 0, i32 0
  %292 = load ptr, ptr %291, align 8, !tbaa !11
  %293 = getelementptr inbounds %"class.Assimp::ImporterPimpl", ptr %292, i32 0, i32 6
  %294 = load ptr, ptr %293, align 8, !tbaa !13
  store ptr %294, ptr %3, align 8
  br label %295

295:                                              ; preds = %290, %284, %78, %37, %33
  %296 = load ptr, ptr %3, align 8
  ret ptr %296

297:                                              ; preds = %289
  %298 = load ptr, ptr %6, align 8
  %299 = load i32, ptr %7, align 4
  %300 = insertvalue { ptr, i32 } poison, ptr %298, 0
  %301 = insertvalue { ptr, i32 } %300, i32 %299, 1
  resume { ptr, i32 } %301

302:                                              ; preds = %285
  %303 = landingpad { ptr, i32 }
          catch ptr null
  %304 = extractvalue { ptr, i32 } %303, 0
  call void @__clang_call_terminate(ptr %304) #10
  unreachable

305:                                              ; preds = %78
  unreachable
}

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef ptr @_ZN6Assimp9ScenePrivEP7aiScene(ptr noundef) #7

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !6, i64 0}
!12 = !{!"_ZTSN6Assimp8ImporterE", !6, i64 0}
!13 = !{!14, !6, i64 80}
!14 = !{!"_ZTSN6Assimp13ImporterPimplE", !6, i64 0, !15, i64 8, !6, i64 16, !15, i64 24, !16, i64 32, !20, i64 56, !6, i64 80, !24, i64 88, !27, i64 120, !28, i64 128, !36, i64 176, !39, i64 224, !42, i64 272, !45, i64 320, !15, i64 368, !6, i64 376}
!15 = !{!"bool", !7, i64 0}
!16 = !{!"_ZTSSt6vectorIPN6Assimp12BaseImporterESaIS2_EE", !17, i64 0}
!17 = !{!"_ZTSSt12_Vector_baseIPN6Assimp12BaseImporterESaIS2_EE", !18, i64 0}
!18 = !{!"_ZTSNSt12_Vector_baseIPN6Assimp12BaseImporterESaIS2_EE12_Vector_implE", !19, i64 0}
!19 = !{!"_ZTSNSt12_Vector_baseIPN6Assimp12BaseImporterESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!20 = !{!"_ZTSSt6vectorIPN6Assimp11BaseProcessESaIS2_EE", !21, i64 0}
!21 = !{!"_ZTSSt12_Vector_baseIPN6Assimp11BaseProcessESaIS2_EE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseIPN6Assimp11BaseProcessESaIS2_EE12_Vector_implE", !23, i64 0}
!23 = !{!"_ZTSNSt12_Vector_baseIPN6Assimp11BaseProcessESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!24 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !25, i64 0, !26, i64 8, !7, i64 16}
!25 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!26 = !{!"long", !7, i64 0}
!27 = !{!"_ZTSNSt15__exception_ptr13exception_ptrE", !6, i64 0}
!28 = !{!"_ZTSSt3mapIjiSt4lessIjESaISt4pairIKjiEEE", !29, i64 0}
!29 = !{!"_ZTSSt8_Rb_treeIjSt4pairIKjiESt10_Select1stIS2_ESt4lessIjESaIS2_EE", !30, i64 0}
!30 = !{!"_ZTSNSt8_Rb_treeIjSt4pairIKjiESt10_Select1stIS2_ESt4lessIjESaIS2_EE13_Rb_tree_implIS6_Lb1EEE", !31, i64 0, !33, i64 8}
!31 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIjEE", !32, i64 0}
!32 = !{!"_ZTSSt4lessIjE"}
!33 = !{!"_ZTSSt15_Rb_tree_header", !34, i64 0, !26, i64 32}
!34 = !{!"_ZTSSt18_Rb_tree_node_base", !35, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!35 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!36 = !{!"_ZTSSt3mapIjfSt4lessIjESaISt4pairIKjfEEE", !37, i64 0}
!37 = !{!"_ZTSSt8_Rb_treeIjSt4pairIKjfESt10_Select1stIS2_ESt4lessIjESaIS2_EE", !38, i64 0}
!38 = !{!"_ZTSNSt8_Rb_treeIjSt4pairIKjfESt10_Select1stIS2_ESt4lessIjESaIS2_EE13_Rb_tree_implIS6_Lb1EEE", !31, i64 0, !33, i64 8}
!39 = !{!"_ZTSSt3mapIjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIjESaISt4pairIKjS5_EEE", !40, i64 0}
!40 = !{!"_ZTSSt8_Rb_treeIjSt4pairIKjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEESt10_Select1stIS8_ESt4lessIjESaIS8_EE", !41, i64 0}
!41 = !{!"_ZTSNSt8_Rb_treeIjSt4pairIKjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEESt10_Select1stIS8_ESt4lessIjESaIS8_EE13_Rb_tree_implISC_Lb1EEE", !31, i64 0, !33, i64 8}
!42 = !{!"_ZTSSt3mapIj12aiMatrix4x4tIfESt4lessIjESaISt4pairIKjS1_EEE", !43, i64 0}
!43 = !{!"_ZTSSt8_Rb_treeIjSt4pairIKj12aiMatrix4x4tIfEESt10_Select1stIS4_ESt4lessIjESaIS4_EE", !44, i64 0}
!44 = !{!"_ZTSNSt8_Rb_treeIjSt4pairIKj12aiMatrix4x4tIfEESt10_Select1stIS4_ESt4lessIjESaIS4_EE13_Rb_tree_implIS8_Lb1EEE", !31, i64 0, !33, i64 8}
!45 = !{!"_ZTSSt3mapIjPvSt4lessIjESaISt4pairIKjS0_EEE", !46, i64 0}
!46 = !{!"_ZTSSt8_Rb_treeIjSt4pairIKjPvESt10_Select1stIS3_ESt4lessIjESaIS3_EE", !47, i64 0}
!47 = !{!"_ZTSNSt8_Rb_treeIjSt4pairIKjPvESt10_Select1stIS3_ESt4lessIjESaIS3_EE13_Rb_tree_implIS7_Lb1EEE", !31, i64 0, !33, i64 8}
!48 = !{!14, !15, i64 368}
!49 = !{i8 0, i8 2}
!50 = !{}
!51 = !{!14, !6, i64 16}
!52 = !{!53, !53, i64 0}
!53 = !{!"vtable pointer", !8, i64 0}
!54 = distinct !{!54, !55}
!55 = !{!"llvm.loop.mustprogress"}
!56 = !{!57, !10, i64 8}
!57 = !{!"_ZTSN6Assimp16ScenePrivateDataE", !6, i64 0, !10, i64 8, !15, i64 12}
!58 = !{!14, !6, i64 376}


; 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.Assimp::ValidateDSProcess" = type { %"class.Assimp::BaseProcess", ptr }
%"class.Assimp::BaseProcess" = type { ptr, ptr, ptr }
%"class.std::unique_ptr" = type { %"struct.std::__uniq_ptr_data" }
%"struct.std::__uniq_ptr_data" = type { %"class.std::__uniq_ptr_impl" }
%"class.std::__uniq_ptr_impl" = type { %"class.std::tuple" }
%"class.std::tuple" = type { %"struct.std::_Tuple_impl" }
%"struct.std::_Tuple_impl" = type { %"struct.std::_Head_base.59" }
%"struct.std::_Head_base.59" = 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.5" = type { i8 }
%struct.ExceptionSwallower.56 = type { i8 }

@.str.1 = external hidden unnamed_addr constant [109 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [33 x i8], align 1

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

declare i32 @__gxx_personality_v0(...)

declare ptr @__cxa_begin_catch(ptr) local_unnamed_addr

declare void @__cxa_end_catch() local_unnamed_addr

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

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

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

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

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

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

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

declare noundef ptr @_ZN6Assimp13DefaultLogger3getEv() local_unnamed_addr #4

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_Z14_ValidateFlagsj(i32 noundef) local_unnamed_addr #5

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

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

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

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

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

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

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

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

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

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

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

declare void @_ZN6Assimp17ValidateDSProcessC1Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #4

declare void @_ZN6Assimp11BaseProcess14ExecuteOnSceneEPNS_8ImporterE(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef) local_unnamed_addr #4

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

; Function Attrs: mustprogress uwtable
define dso_local noundef ptr @_ZN6Assimp8Importer19ApplyPostProcessingEj(ptr noundef nonnull align 8 dereferenceable(8) %0, i32 noundef %1) local_unnamed_addr #5 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca %"class.Assimp::ValidateDSProcess", align 8
  %4 = alloca %"class.std::unique_ptr", align 8
  %5 = alloca %"class.std::__cxx11::basic_string", align 8
  %6 = alloca %"class.std::allocator.5", align 1
  %7 = alloca %"class.std::__cxx11::basic_string", align 8
  %8 = alloca %"class.std::allocator.5", align 1
  %9 = alloca %"class.Assimp::ValidateDSProcess", align 8
  %10 = alloca %struct.ExceptionSwallower.56, align 1
  %11 = load ptr, ptr %0, align 8, !tbaa !5
  %.not = icmp eq ptr %11, null
  br i1 %.not, label %12, label %13

12:                                               ; preds = %2
  tail call void @_ZN6Assimp17aiAssertViolationEPKcS1_i(ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.1, i32 noundef 790)
  %.pre = load ptr, ptr %0, align 8, !tbaa !5
  br label %13

13:                                               ; preds = %12, %2
  %14 = phi ptr [ %.pre, %12 ], [ %11, %2 ]
  %15 = getelementptr inbounds i8, ptr %14, i64 80
  %16 = load ptr, ptr %15, align 8, !tbaa !10
  %.not28 = icmp eq ptr %16, null
  br i1 %.not28, label %175, label %17

17:                                               ; preds = %13
  %.not29 = icmp eq i32 %1, 0
  br i1 %.not29, label %175, label %18

18:                                               ; preds = %17
  %19 = invoke noundef zeroext i1 @_Z14_ValidateFlagsj(i32 noundef %1)
          to label %20 unwind label %33

20:                                               ; preds = %18
  br i1 %19, label %22, label %21

21:                                               ; preds = %20
  invoke void @_ZN6Assimp17aiAssertViolationEPKcS1_i(ptr noundef nonnull @.str.47, ptr noundef nonnull @.str.1, i32 noundef 804)
          to label %22 unwind label %33

22:                                               ; preds = %21, %20
  %23 = invoke noundef ptr @_ZN6Assimp13DefaultLogger3getEv()
          to label %24 unwind label %33

24:                                               ; preds = %22
  invoke void @_ZN6Assimp6Logger4infoEPKc(ptr noundef nonnull align 8 dereferenceable(12) %23, ptr noundef nonnull @.str.48)
          to label %25 unwind label %33

25:                                               ; preds = %24
  %26 = and i32 %1, 1024
  %.not30 = icmp eq i32 %26, 0
  br i1 %.not30, label %40, label %27

27:                                               ; preds = %25
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3) #7
  invoke void @_ZN6Assimp17ValidateDSProcessC1Ev(ptr noundef nonnull align 8 dereferenceable(32) %3)
          to label %28 unwind label %35

28:                                               ; preds = %27
  invoke void @_ZN6Assimp11BaseProcess14ExecuteOnSceneEPNS_8ImporterE(ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull %0)
          to label %29 unwind label %37

29:                                               ; preds = %28
  %30 = load ptr, ptr %0, align 8, !tbaa !5
  %31 = getelementptr inbounds i8, ptr %30, i64 80
  %32 = load ptr, ptr %31, align 8, !tbaa !10
  %.not31.not = icmp eq ptr %32, null
  call void @_ZN6Assimp11BaseProcessD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #7
  br i1 %.not31.not, label %175, label %40

33:                                               ; preds = %24, %22, %21, %18
  %34 = landingpad { ptr, i32 }
          catch ptr null
  br label %172

35:                                               ; preds = %27
  %36 = landingpad { ptr, i32 }
          catch ptr null
  br label %39

37:                                               ; preds = %28
  %38 = landingpad { ptr, i32 }
          catch ptr null
  call void @_ZN6Assimp11BaseProcessD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #7
  br label %39

39:                                               ; preds = %37, %35
  %.pn = phi { ptr, i32 } [ %38, %37 ], [ %36, %35 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #7
  br label %172

40:                                               ; preds = %29, %25
  %41 = load ptr, ptr %0, align 8, !tbaa !5
  %42 = getelementptr inbounds i8, ptr %41, i64 368
  %43 = load i8, ptr %42, align 8, !tbaa !45, !range !46, !noundef !47
  %44 = trunc nuw i8 %43 to i1
  %45 = or i32 %1, 1024
  %spec.select = select i1 %44, i32 %45, i32 %1
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #7
  %46 = invoke noundef i32 @_ZNK6Assimp8Importer18GetPropertyIntegerEPKci(ptr noundef nonnull align 8 dereferenceable(8) %0, ptr noundef nonnull @.str.33, i32 noundef 0)
          to label %47 unwind label %56

47:                                               ; preds = %40
  %.not32 = icmp eq i32 %46, 0
  br i1 %.not32, label %51, label %48

48:                                               ; preds = %47
  %49 = invoke noalias noundef nonnull dereferenceable(48) ptr @_Znwm(i64 noundef 48) #8
          to label %50 unwind label %56

50:                                               ; preds = %48
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(48) %49, i8 0, i64 48, i1 false)
  call void @_ZN6Assimp9Profiling8ProfilerC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %49) #7
  br label %51

51:                                               ; preds = %47, %50
  %52 = phi ptr [ %49, %50 ], [ null, %47 ]
  call void @_ZNSt10unique_ptrIN6Assimp9Profiling8ProfilerESt14default_deleteIS2_EEC2IS4_vEEPS2_(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef %52) #7
  %53 = load ptr, ptr %0, align 8, !tbaa !5
  %54 = getelementptr inbounds i8, ptr %53, i64 56
  %55 = call noundef i64 @_ZNKSt6vectorIPN6Assimp11BaseProcessESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %54) #7
  %.not47 = icmp eq i64 %55, 0
  br i1 %.not47, label %.loopexit, label %.lr.ph

56:                                               ; preds = %48, %40
  %57 = landingpad { ptr, i32 }
          catch ptr null
  br label %171

.lr.ph:                                           ; preds = %51, %128
  %58 = phi i64 [ %131, %128 ], [ 0, %51 ]
  %.01845 = phi i32 [ %130, %128 ], [ 0, %51 ]
  %59 = load ptr, ptr %0, align 8, !tbaa !5
  %60 = getelementptr inbounds i8, ptr %59, i64 56
  %61 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPN6Assimp11BaseProcessESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %60, i64 noundef %58) #7
  %62 = load ptr, ptr %61, align 8, !tbaa !48
  %63 = load ptr, ptr %0, align 8, !tbaa !5
  %64 = getelementptr inbounds i8, ptr %63, i64 16
  %65 = load ptr, ptr %64, align 8, !tbaa !49
  %66 = getelementptr inbounds i8, ptr %63, i64 56
  %67 = call noundef i64 @_ZNKSt6vectorIPN6Assimp11BaseProcessESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %66) #7
  %68 = trunc i64 %67 to i32
  %69 = load ptr, ptr %65, align 8, !tbaa !50
  %70 = getelementptr inbounds i8, ptr %69, i64 32
  %71 = load ptr, ptr %70, align 8
  invoke void %71(ptr noundef nonnull align 8 dereferenceable(8) %65, i32 noundef %.01845, i32 noundef %68)
          to label %72 unwind label %84

72:                                               ; preds = %.lr.ph
  %73 = load ptr, ptr %62, align 8, !tbaa !50
  %74 = getelementptr inbounds i8, ptr %73, i64 16
  %75 = load ptr, ptr %74, align 8
  %76 = invoke noundef zeroext i1 %75(ptr noundef nonnull align 8 dereferenceable(24) %62, i32 noundef %spec.select)
          to label %77 unwind label %84

77:                                               ; preds = %72
  br i1 %76, label %78, label %103

78:                                               ; preds = %77
  %79 = call noundef zeroext i1 @_ZNKSt10unique_ptrIN6Assimp9Profiling8ProfilerESt14default_deleteIS2_EEcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %4) #7
  br i1 %79, label %80, label %91

80:                                               ; preds = %78
  %81 = call noundef ptr @_ZNKSt10unique_ptrIN6Assimp9Profiling8ProfilerESt14default_deleteIS2_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %4) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %6) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull @.str.49, ptr noundef nonnull align 1 dereferenceable(1) %6)
          to label %82 unwind label %86

82:                                               ; preds = %80
  invoke void @_ZN6Assimp9Profiling8Profiler11BeginRegionERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(48) %81, ptr noundef nonnull align 8 dereferenceable(32) %5)
          to label %83 unwind label %88

83:                                               ; preds = %82
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #7
  br label %91

84:                                               ; preds = %113, %111, %91, %72, %.lr.ph
  %85 = landingpad { ptr, i32 }
          catch ptr null
  br label %170

86:                                               ; preds = %80
  %87 = landingpad { ptr, i32 }
          catch ptr null
  br label %90

88:                                               ; preds = %82
  %89 = landingpad { ptr, i32 }
          catch ptr null
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #7
  br label %90

90:                                               ; preds = %88, %86
  %.pn33 = phi { ptr, i32 } [ %89, %88 ], [ %87, %86 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #7
  br label %170

91:                                               ; preds = %83, %78
  invoke void @_ZN6Assimp11BaseProcess14ExecuteOnSceneEPNS_8ImporterE(ptr noundef nonnull align 8 dereferenceable(24) %62, ptr noundef nonnull %0)
          to label %92 unwind label %84

92:                                               ; preds = %91
  %93 = call noundef zeroext i1 @_ZNKSt10unique_ptrIN6Assimp9Profiling8ProfilerESt14default_deleteIS2_EEcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %4) #7
  br i1 %93, label %94, label %103

94:                                               ; preds = %92
  %95 = call noundef ptr @_ZNKSt10unique_ptrIN6Assimp9Profiling8ProfilerESt14default_deleteIS2_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %4) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %8) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull @.str.49, ptr noundef nonnull align 1 dereferenceable(1) %8)
          to label %96 unwind label %98

96:                                               ; preds = %94
  invoke void @_ZN6Assimp9Profiling8Profiler9EndRegionERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(48) %95, ptr noundef nonnull align 8 dereferenceable(32) %7)
          to label %97 unwind label %100

97:                                               ; preds = %96
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #7
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #7
  br label %103

98:                                               ; preds = %94
  %99 = landingpad { ptr, i32 }
          catch ptr null
  br label %102

100:                                              ; preds = %96
  %101 = landingpad { ptr, i32 }
          catch ptr null
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #7
  br label %102

102:                                              ; preds = %100, %98
  %.pn34 = phi { ptr, i32 } [ %101, %100 ], [ %99, %98 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #7
  br label %170

103:                                              ; preds = %92, %97, %77
  %104 = load ptr, ptr %0, align 8, !tbaa !5
  %105 = getelementptr inbounds i8, ptr %104, i64 80
  %106 = load ptr, ptr %105, align 8, !tbaa !10
  %.not35 = icmp eq ptr %106, null
  br i1 %.not35, label %.loopexit, label %107

107:                                              ; preds = %103
  %108 = getelementptr inbounds i8, ptr %104, i64 368
  %109 = load i8, ptr %108, align 8, !tbaa !45, !range !46, !noundef !47
  %110 = trunc nuw i8 %109 to i1
  br i1 %110, label %111, label %128

111:                                              ; preds = %107
  %112 = invoke noundef ptr @_ZN6Assimp13DefaultLogger3getEv()
          to label %113 unwind label %84

113:                                              ; preds = %111
  invoke void @_ZN6Assimp6Logger5debugEPKc(ptr noundef nonnull align 8 dereferenceable(12) %112, ptr noundef nonnull @.str.50)
          to label %114 unwind label %84

114:                                              ; preds = %113
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %9) #7
  invoke void @_ZN6Assimp17ValidateDSProcessC1Ev(ptr noundef nonnull align 8 dereferenceable(32) %9)
          to label %115 unwind label %123

115:                                              ; preds = %114
  invoke void @_ZN6Assimp11BaseProcess14ExecuteOnSceneEPNS_8ImporterE(ptr noundef nonnull align 8 dereferenceable(24) %9, ptr noundef nonnull %0)
          to label %116 unwind label %.loopexit44

116:                                              ; preds = %115
  %117 = load ptr, ptr %0, align 8, !tbaa !5
  %118 = getelementptr inbounds i8, ptr %117, i64 80
  %119 = load ptr, ptr %118, align 8, !tbaa !10
  %.not36.not = icmp eq ptr %119, null
  br i1 %.not36.not, label %120, label %126

120:                                              ; preds = %116
  %121 = invoke noundef ptr @_ZN6Assimp13DefaultLogger3getEv()
          to label %122 unwind label %.loopexit.split-lp

122:                                              ; preds = %120
  invoke void @_ZN6Assimp6Logger5errorEPKc(ptr noundef nonnull align 8 dereferenceable(12) %121, ptr noundef nonnull @.str.51)
          to label %.thread unwind label %.loopexit.split-lp

.thread:                                          ; preds = %122
  call void @_ZN6Assimp11BaseProcessD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #7
  br label %.loopexit

123:                                              ; preds = %114
  %124 = landingpad { ptr, i32 }
          catch ptr null
  br label %127

.loopexit44:                                      ; preds = %115
  %lpad.loopexit = landingpad { ptr, i32 }
          catch ptr null
  br label %125

.loopexit.split-lp:                               ; preds = %120, %122
  %lpad.loopexit.split-lp = landingpad { ptr, i32 }
          catch ptr null
  br label %125

125:                                              ; preds = %.loopexit.split-lp, %.loopexit44
  %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit, %.loopexit44 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ]
  call void @_ZN6Assimp11BaseProcessD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #7
  br label %127

126:                                              ; preds = %116
  call void @_ZN6Assimp11BaseProcessD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #7
  %.pre48 = load ptr, ptr %0, align 8, !tbaa !5
  br label %128

127:                                              ; preds = %125, %123
  %.pn37 = phi { ptr, i32 } [ %lpad.phi, %125 ], [ %124, %123 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #7
  br label %170

128:                                              ; preds = %126, %107
  %129 = phi ptr [ %.pre48, %126 ], [ %104, %107 ]
  %130 = add i32 %.01845, 1
  %131 = zext i32 %130 to i64
  %132 = getelementptr inbounds i8, ptr %129, i64 56
  %133 = call noundef i64 @_ZNKSt6vectorIPN6Assimp11BaseProcessESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %132) #7
  %134 = icmp ugt i64 %133, %131
  br i1 %134, label %.lr.ph, label %.loopexit, !llvm.loop !52

.loopexit:                                        ; preds = %128, %103, %51, %.thread
  %135 = load ptr, ptr %0, align 8, !tbaa !5
  %136 = getelementptr inbounds i8, ptr %135, i64 16
  %137 = load ptr, ptr %136, align 8, !tbaa !49
  %138 = getelementptr inbounds i8, ptr %135, i64 56
  %139 = call noundef i64 @_ZNKSt6vectorIPN6Assimp11BaseProcessESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %138) #7
  %140 = trunc i64 %139 to i32
  %141 = load ptr, ptr %0, align 8, !tbaa !5
  %142 = getelementptr inbounds i8, ptr %141, i64 56
  %143 = call noundef i64 @_ZNKSt6vectorIPN6Assimp11BaseProcessESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %142) #7
  %144 = trunc i64 %143 to i32
  %145 = load ptr, ptr %137, align 8, !tbaa !50
  %146 = getelementptr inbounds i8, ptr %145, i64 32
  %147 = load ptr, ptr %146, align 8
  invoke void %147(ptr noundef nonnull align 8 dereferenceable(8) %137, i32 noundef %140, i32 noundef %144)
          to label %148 unwind label %158

148:                                              ; preds = %.loopexit
  %149 = load ptr, ptr %0, align 8, !tbaa !5
  %150 = getelementptr inbounds i8, ptr %149, i64 80
  %151 = load ptr, ptr %150, align 8, !tbaa !10
  %.not38 = icmp eq ptr %151, null
  br i1 %.not38, label %160, label %152

152:                                              ; preds = %148
  %153 = invoke noundef ptr @_ZN6Assimp9ScenePrivEP7aiScene(ptr noundef nonnull %151)
          to label %154 unwind label %158

154:                                              ; preds = %152
  %155 = getelementptr inbounds i8, ptr %153, i64 8
  %156 = load i32, ptr %155, align 8, !tbaa !54
  %157 = or i32 %156, %spec.select
  store i32 %157, ptr %155, align 8, !tbaa !54
  %.pre49 = load ptr, ptr %0, align 8, !tbaa !5
  br label %160

158:                                              ; preds = %165, %160, %152, %.loopexit
  %159 = landingpad { ptr, i32 }
          catch ptr null
  br label %170

160:                                              ; preds = %154, %148
  %161 = phi ptr [ %.pre49, %154 ], [ %149, %148 ]
  %162 = getelementptr inbounds i8, ptr %161, i64 376
  %163 = load ptr, ptr %162, align 8, !tbaa !57
  call void @_ZN6Assimp21SharedPostProcessInfo5CleanEv(ptr noundef nonnull align 8 dereferenceable(48) %163)
  %164 = invoke noundef ptr @_ZN6Assimp13DefaultLogger3getEv()
          to label %165 unwind label %158

165:                                              ; preds = %160
  invoke void @_ZN6Assimp6Logger4infoEPKc(ptr noundef nonnull align 8 dereferenceable(12) %164, ptr noundef nonnull @.str.52)
          to label %166 unwind label %158

166:                                              ; preds = %165
  call void @_ZNSt10unique_ptrIN6Assimp9Profiling8ProfilerESt14default_deleteIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %4) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #7
  %167 = load ptr, ptr %0, align 8, !tbaa !5
  %168 = getelementptr inbounds i8, ptr %167, i64 80
  %169 = load ptr, ptr %168, align 8, !tbaa !10
  br label %175

170:                                              ; preds = %84, %90, %102, %127, %158
  %.pn39 = phi { ptr, i32 } [ %159, %158 ], [ %.pn37, %127 ], [ %85, %84 ], [ %.pn34, %102 ], [ %.pn33, %90 ]
  call void @_ZNSt10unique_ptrIN6Assimp9Profiling8ProfilerESt14default_deleteIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %4) #7
  br label %171

171:                                              ; preds = %170, %56
  %.pn39.pn = phi { ptr, i32 } [ %.pn39, %170 ], [ %57, %56 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #7
  br label %172

172:                                              ; preds = %171, %39, %33
  %.pn39.pn.pn = phi { ptr, i32 } [ %.pn39.pn, %171 ], [ %.pn, %39 ], [ %34, %33 ]
  %.7 = extractvalue { ptr, i32 } %.pn39.pn.pn, 0
  %173 = call ptr @__cxa_begin_catch(ptr %.7) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %10) #7
  %174 = call noundef ptr @_ZNK18ExceptionSwallowerIPK7aiSceneEclEv(ptr noundef nonnull align 1 dereferenceable(1) %10)
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #7
  call void @__cxa_end_catch()
  br label %175

175:                                              ; preds = %29, %17, %13, %166, %172
  %.1 = phi ptr [ null, %29 ], [ %169, %166 ], [ %174, %172 ], [ null, %13 ], [ %16, %17 ]
  ret ptr %.1
}

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef ptr @_ZN6Assimp9ScenePrivEP7aiScene(ptr noundef) local_unnamed_addr #6

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !7, i64 0}
!6 = !{!"_ZTSN6Assimp8ImporterE", !7, i64 0}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!11, !7, i64 80}
!11 = !{!"_ZTSN6Assimp13ImporterPimplE", !7, i64 0, !12, i64 8, !7, i64 16, !12, i64 24, !13, i64 32, !17, i64 56, !7, i64 80, !21, i64 88, !24, i64 120, !25, i64 128, !33, i64 176, !36, i64 224, !39, i64 272, !42, i64 320, !12, i64 368, !7, i64 376}
!12 = !{!"bool", !8, i64 0}
!13 = !{!"_ZTSSt6vectorIPN6Assimp12BaseImporterESaIS2_EE", !14, i64 0}
!14 = !{!"_ZTSSt12_Vector_baseIPN6Assimp12BaseImporterESaIS2_EE", !15, i64 0}
!15 = !{!"_ZTSNSt12_Vector_baseIPN6Assimp12BaseImporterESaIS2_EE12_Vector_implE", !16, i64 0}
!16 = !{!"_ZTSNSt12_Vector_baseIPN6Assimp12BaseImporterESaIS2_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!17 = !{!"_ZTSSt6vectorIPN6Assimp11BaseProcessESaIS2_EE", !18, i64 0}
!18 = !{!"_ZTSSt12_Vector_baseIPN6Assimp11BaseProcessESaIS2_EE", !19, i64 0}
!19 = !{!"_ZTSNSt12_Vector_baseIPN6Assimp11BaseProcessESaIS2_EE12_Vector_implE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseIPN6Assimp11BaseProcessESaIS2_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!21 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !22, i64 0, !23, i64 8, !8, i64 16}
!22 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !7, i64 0}
!23 = !{!"long", !8, i64 0}
!24 = !{!"_ZTSNSt15__exception_ptr13exception_ptrE", !7, i64 0}
!25 = !{!"_ZTSSt3mapIjiSt4lessIjESaISt4pairIKjiEEE", !26, i64 0}
!26 = !{!"_ZTSSt8_Rb_treeIjSt4pairIKjiESt10_Select1stIS2_ESt4lessIjESaIS2_EE", !27, i64 0}
!27 = !{!"_ZTSNSt8_Rb_treeIjSt4pairIKjiESt10_Select1stIS2_ESt4lessIjESaIS2_EE13_Rb_tree_implIS6_Lb1EEE", !28, i64 0, !30, i64 8}
!28 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIjEE", !29, i64 0}
!29 = !{!"_ZTSSt4lessIjE"}
!30 = !{!"_ZTSSt15_Rb_tree_header", !31, i64 0, !23, i64 32}
!31 = !{!"_ZTSSt18_Rb_tree_node_base", !32, i64 0, !7, i64 8, !7, i64 16, !7, i64 24}
!32 = !{!"_ZTSSt14_Rb_tree_color", !8, i64 0}
!33 = !{!"_ZTSSt3mapIjfSt4lessIjESaISt4pairIKjfEEE", !34, i64 0}
!34 = !{!"_ZTSSt8_Rb_treeIjSt4pairIKjfESt10_Select1stIS2_ESt4lessIjESaIS2_EE", !35, i64 0}
!35 = !{!"_ZTSNSt8_Rb_treeIjSt4pairIKjfESt10_Select1stIS2_ESt4lessIjESaIS2_EE13_Rb_tree_implIS6_Lb1EEE", !28, i64 0, !30, i64 8}
!36 = !{!"_ZTSSt3mapIjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4lessIjESaISt4pairIKjS5_EEE", !37, i64 0}
!37 = !{!"_ZTSSt8_Rb_treeIjSt4pairIKjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEESt10_Select1stIS8_ESt4lessIjESaIS8_EE", !38, i64 0}
!38 = !{!"_ZTSNSt8_Rb_treeIjSt4pairIKjNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEESt10_Select1stIS8_ESt4lessIjESaIS8_EE13_Rb_tree_implISC_Lb1EEE", !28, i64 0, !30, i64 8}
!39 = !{!"_ZTSSt3mapIj12aiMatrix4x4tIfESt4lessIjESaISt4pairIKjS1_EEE", !40, i64 0}
!40 = !{!"_ZTSSt8_Rb_treeIjSt4pairIKj12aiMatrix4x4tIfEESt10_Select1stIS4_ESt4lessIjESaIS4_EE", !41, i64 0}
!41 = !{!"_ZTSNSt8_Rb_treeIjSt4pairIKj12aiMatrix4x4tIfEESt10_Select1stIS4_ESt4lessIjESaIS4_EE13_Rb_tree_implIS8_Lb1EEE", !28, i64 0, !30, i64 8}
!42 = !{!"_ZTSSt3mapIjPvSt4lessIjESaISt4pairIKjS0_EEE", !43, i64 0}
!43 = !{!"_ZTSSt8_Rb_treeIjSt4pairIKjPvESt10_Select1stIS3_ESt4lessIjESaIS3_EE", !44, i64 0}
!44 = !{!"_ZTSNSt8_Rb_treeIjSt4pairIKjPvESt10_Select1stIS3_ESt4lessIjESaIS3_EE13_Rb_tree_implIS7_Lb1EEE", !28, i64 0, !30, i64 8}
!45 = !{!11, !12, i64 368}
!46 = !{i8 0, i8 2}
!47 = !{}
!48 = !{!7, !7, i64 0}
!49 = !{!11, !7, i64 16}
!50 = !{!51, !51, i64 0}
!51 = !{!"vtable pointer", !9, i64 0}
!52 = distinct !{!52, !53}
!53 = !{!"llvm.loop.mustprogress"}
!54 = !{!55, !56, i64 8}
!55 = !{!"_ZTSN6Assimp16ScenePrivateDataE", !7, i64 0, !56, i64 8, !12, i64 12}
!56 = !{!"int", !8, i64 0}
!57 = !{!11, !7, i64 376}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,SROAPass,SimplifyCFGPass,TailCallElimPass