; LLVM IR from Razakhel/RaZ :: src/RaZ/Data (ObjSave)

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

%"class.std::__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::basic_ofstream" = type { %"class.std::basic_ostream.base", %"class.std::basic_filebuf", %"class.std::basic_ios" }
%"class.std::basic_ostream.base" = type { ptr }
%"class.std::basic_filebuf" = type { %"class.std::basic_streambuf", %union.pthread_mutex_t, %"class.std::__basic_file", i32, %struct.__mbstate_t, %struct.__mbstate_t, %struct.__mbstate_t, ptr, i64, i8, i8, i8, i8, ptr, ptr, i8, ptr, ptr, i64, ptr, ptr }
%"class.std::basic_streambuf" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, %"class.std::locale" }
%"class.std::locale" = type { ptr }
%union.pthread_mutex_t = type { %struct.__pthread_mutex_s }
%struct.__pthread_mutex_s = type { i32, i32, i32, i32, i32, i16, i16, %struct.__pthread_internal_list }
%struct.__pthread_internal_list = type { ptr, ptr }
%"class.std::__basic_file" = type <{ ptr, i8, [7 x i8] }>
%struct.__mbstate_t = type { i32, %union.anon.0 }
%union.anon.0 = type { i32 }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.Raz::FilePath" = type { %"class.std::__cxx11::basic_string" }
%"class.std::map" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<Raz::Vector<float, 3>, std::pair<const Raz::Vector<float, 3>, unsigned long>, std::_Select1st<std::pair<const Raz::Vector<float, 3>, unsigned long>>, std::less<Raz::Vector<float, 3>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<Raz::Vector<float, 3>, std::pair<const Raz::Vector<float, 3>, unsigned long>, std::_Select1st<std::pair<const Raz::Vector<float, 3>, unsigned long>>, std::less<Raz::Vector<float, 3>>>::_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.13" = type { %"class.std::_Rb_tree.14" }
%"class.std::_Rb_tree.14" = type { %"struct.std::_Rb_tree<Raz::Vector<float, 2>, std::pair<const Raz::Vector<float, 2>, unsigned long>, std::_Select1st<std::pair<const Raz::Vector<float, 2>, unsigned long>>, std::less<Raz::Vector<float, 2>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<Raz::Vector<float, 2>, std::pair<const Raz::Vector<float, 2>, unsigned long>, std::_Select1st<std::pair<const Raz::Vector<float, 2>, unsigned long>>, std::less<Raz::Vector<float, 2>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.34" = type { ptr }
%"struct.std::_Rb_tree_const_iterator" = type { ptr }
%"struct.std::_Rb_tree_iterator" = type { ptr }
%"struct.std::pair" = type <{ %"struct.std::_Rb_tree_iterator", i8, [7 x i8] }>
%"struct.std::_Rb_tree_const_iterator.37" = type { ptr }
%"struct.std::_Rb_tree_iterator.38" = type { ptr }
%"struct.std::pair.39" = type <{ %"struct.std::_Rb_tree_iterator.38", i8, [7 x i8] }>
%"struct.Raz::Vertex" = type { %"class.Raz::Vector", %"class.Raz::Vector.35", %"class.Raz::Vector", %"class.Raz::Vector" }
%"class.Raz::Vector.35" = type { %"struct.std::array.36" }
%"struct.std::array.36" = type { [2 x float] }
%"class.Raz::Vector" = type { %"struct.std::array" }
%"struct.std::array" = type { [3 x float] }
%"struct.std::pair.45" = type { %"class.Raz::Vector", i64 }
%"struct.std::pair.47" = type { %"class.Raz::Vector.35", i64 }

@.str = external hidden unnamed_addr constant [29 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [27 x i8], align 1
@_ZTISt16invalid_argument = external constant ptr
@.str.4 = external hidden unnamed_addr constant [64 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [25 x i8], align 1

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN3Raz9ObjFormat4saveERKNS_8FilePathERKNS_4MeshEPKNS_12MeshRendererE(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(64) %1, ptr noundef %2) #0 personality ptr @__gxx_personality_v0 {
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca %"class.std::__cxx11::basic_string", align 8
  %8 = alloca %"class.std::__cxx11::basic_string", align 8
  %9 = alloca ptr, align 8
  %10 = alloca i32, align 4
  %11 = alloca %"class.std::basic_ofstream", align 8
  %12 = alloca %"class.std::__cxx11::basic_string", align 8
  %13 = alloca %"class.std::__cxx11::basic_string", align 8
  %14 = alloca i1, align 1
  %15 = alloca %"class.std::__cxx11::basic_string", align 8
  %16 = alloca %"class.Raz::FilePath", align 8
  %17 = alloca %"class.Raz::FilePath", align 8
  %18 = alloca %"class.std::__cxx11::basic_string", align 8
  %19 = alloca %"class.Raz::FilePath", align 8
  %20 = alloca %"class.std::map", align 8
  %21 = alloca %"class.std::map.13", align 8
  %22 = alloca %"class.std::map", align 8
  %23 = alloca ptr, align 8
  %24 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %25 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %26 = alloca i32, align 4
  %27 = alloca ptr, align 8
  %28 = alloca ptr, align 8
  %29 = alloca %"class.__gnu_cxx::__normal_iterator.34", align 8
  %30 = alloca %"class.__gnu_cxx::__normal_iterator.34", align 8
  %31 = alloca ptr, align 8
  %32 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %33 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %34 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %35 = alloca i64, align 8
  %36 = alloca %"struct.std::pair", align 8
  %37 = alloca %"struct.std::_Rb_tree_const_iterator.37", align 8
  %38 = alloca %"struct.std::_Rb_tree_iterator.38", align 8
  %39 = alloca %"struct.std::_Rb_tree_const_iterator.37", align 8
  %40 = alloca i64, align 8
  %41 = alloca %"struct.std::pair.39", align 8
  %42 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %43 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %44 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %45 = alloca i64, align 8
  %46 = alloca %"struct.std::pair", align 8
  %47 = alloca %"class.std::__cxx11::basic_string", align 8
  %48 = alloca %"class.Raz::FilePath", align 8
  %49 = alloca i64, align 8
  %50 = alloca ptr, align 8
  %51 = alloca i64, align 8
  %52 = alloca %"struct.Raz::Vertex", align 4
  %53 = alloca i64, align 8
  %54 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %55 = alloca i64, align 8
  %56 = alloca %"struct.std::_Rb_tree_iterator.38", align 8
  %57 = alloca i64, align 8
  %58 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %59 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %60 = alloca %"struct.std::_Rb_tree_iterator.38", align 8
  %61 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %62 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %63 = alloca %"struct.std::_Rb_tree_iterator.38", align 8
  %64 = alloca %"struct.std::_Rb_tree_iterator", align 8
  store ptr %0, ptr %4, align 8, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !5
  store ptr %2, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %7) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %8) #8
  %65 = load ptr, ptr %4, align 8, !tbaa !5
  call void @_ZN3RazplB5cxx11EPKcRKNS_8FilePathE(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %8, ptr noundef @.str, ptr noundef nonnull align 8 dereferenceable(32) %65)
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %7, ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef @.str.1)
          to label %66 unwind label %82

66:                                               ; preds = %3
  invoke void @_ZN3Raz6Logger5debugERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %7)
          to label %67 unwind label %86

67:                                               ; preds = %66
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %8) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %7) #8
  call void @llvm.lifetime.start.p0(i64 512, ptr %11) #8
  %68 = load ptr, ptr %4, align 8, !tbaa !5
  %69 = call noundef ptr @_ZNK3Raz8FilePathcvPKcEv(ptr noundef nonnull align 8 dereferenceable(32) %68) #8
  call void @_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode(ptr noundef nonnull align 8 dereferenceable(248) %11, ptr noundef %69, i32 noundef 4)
  %70 = load ptr, ptr %11, align 8, !tbaa !9
  %71 = getelementptr i8, ptr %70, i64 -24
  %72 = load i64, ptr %71, align 8
  %73 = getelementptr inbounds i8, ptr %11, i64 %72
  %74 = invoke noundef zeroext i1 @_ZNKSt9basic_iosIcSt11char_traitsIcEEntEv(ptr noundef nonnull align 8 dereferenceable(264) %73)
          to label %75 unwind label %91

75:                                               ; preds = %67
  br i1 %74, label %76, label %112

76:                                               ; preds = %75
  store i1 true, ptr %14, align 1
  %77 = call ptr @__cxa_allocate_exception(i64 16) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %12) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %13) #8
  %78 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZN3RazplB5cxx11EPKcRKNS_8FilePathE(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %13, ptr noundef @.str.2, ptr noundef nonnull align 8 dereferenceable(32) %78)
          to label %79 unwind label %95

79:                                               ; preds = %76
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %12, ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef @.str.3)
          to label %80 unwind label %99

80:                                               ; preds = %79
  invoke void @_ZNSt16invalid_argumentC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(16) %77, ptr noundef nonnull align 8 dereferenceable(32) %12)
          to label %81 unwind label %103

81:                                               ; preds = %80
  store i1 false, ptr %14, align 1
  invoke void @__cxa_throw(ptr %77, ptr @_ZTISt16invalid_argument, ptr @_ZNSt16invalid_argumentD1Ev) #9
          to label %676 unwind label %103

82:                                               ; preds = %3
  %83 = landingpad { ptr, i32 }
          cleanup
  %84 = extractvalue { ptr, i32 } %83, 0
  store ptr %84, ptr %9, align 8
  %85 = extractvalue { ptr, i32 } %83, 1
  store i32 %85, ptr %10, align 4
  br label %90

86:                                               ; preds = %66
  %87 = landingpad { ptr, i32 }
          cleanup
  %88 = extractvalue { ptr, i32 } %87, 0
  store ptr %88, ptr %9, align 8
  %89 = extractvalue { ptr, i32 } %87, 1
  store i32 %89, ptr %10, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #8
  br label %90

90:                                               ; preds = %86, %82
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %8) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %7) #8
  br label %671

91:                                               ; preds = %117, %112, %67
  %92 = landingpad { ptr, i32 }
          cleanup
  %93 = extractvalue { ptr, i32 } %92, 0
  store ptr %93, ptr %9, align 8
  %94 = extractvalue { ptr, i32 } %92, 1
  store i32 %94, ptr %10, align 4
  br label %670

95:                                               ; preds = %76
  %96 = landingpad { ptr, i32 }
          cleanup
  %97 = extractvalue { ptr, i32 } %96, 0
  store ptr %97, ptr %9, align 8
  %98 = extractvalue { ptr, i32 } %96, 1
  store i32 %98, ptr %10, align 4
  br label %108

99:                                               ; preds = %79
  %100 = landingpad { ptr, i32 }
          cleanup
  %101 = extractvalue { ptr, i32 } %100, 0
  store ptr %101, ptr %9, align 8
  %102 = extractvalue { ptr, i32 } %100, 1
  store i32 %102, ptr %10, align 4
  br label %107

103:                                              ; preds = %81, %80
  %104 = landingpad { ptr, i32 }
          cleanup
  %105 = extractvalue { ptr, i32 } %104, 0
  store ptr %105, ptr %9, align 8
  %106 = extractvalue { ptr, i32 } %104, 1
  store i32 %106, ptr %10, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #8
  br label %107

107:                                              ; preds = %103, %99
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #8
  br label %108

108:                                              ; preds = %107, %95
  call void @llvm.lifetime.end.p0(i64 32, ptr %13) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %12) #8
  %109 = load i1, ptr %14, align 1
  br i1 %109, label %110, label %111

110:                                              ; preds = %108
  call void @__cxa_free_exception(ptr %77) #8
  br label %111

111:                                              ; preds = %110, %108
  br label %670

112:                                              ; preds = %75
  %113 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef @.str.4)
          to label %114 unwind label %91

114:                                              ; preds = %112
  %115 = load ptr, ptr %6, align 8, !tbaa !5
  %116 = icmp ne ptr %115, null
  br i1 %116, label %117, label %169

117:                                              ; preds = %114
  %118 = load ptr, ptr %6, align 8, !tbaa !5
  %119 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3Raz12MeshRenderer12getMaterialsEv(ptr noundef nonnull align 8 dereferenceable(64) %118)
          to label %120 unwind label %91

120:                                              ; preds = %117
  %121 = call noundef zeroext i1 @_ZNKSt6vectorIN3Raz8MaterialESaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %119) #8
  br i1 %121, label %169, label %122

122:                                              ; preds = %120
  call void @llvm.lifetime.start.p0(i64 32, ptr %15) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %16) #8
  %123 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZNK3Raz8FilePath15recoverFileNameEb(ptr dead_on_unwind writable sret(%"class.Raz::FilePath") align 8 %16, ptr noundef nonnull align 8 dereferenceable(32) %123, i1 noundef zeroext false)
          to label %124 unwind label %140

124:                                              ; preds = %122
  invoke void @_ZNK3Raz8FilePathplB5cxx11EPKc(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %15, ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef @.str.5)
          to label %125 unwind label %144

125:                                              ; preds = %124
  call void @_ZN3Raz8FilePathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %16) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %17) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %18) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %19) #8
  %126 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZNK3Raz8FilePath17recoverPathToFileEv(ptr dead_on_unwind writable sret(%"class.Raz::FilePath") align 8 %19, ptr noundef nonnull align 8 dereferenceable(32) %126)
          to label %127 unwind label %149

127:                                              ; preds = %125
  invoke void @_ZNK3Raz8FilePathplERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %18, ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef nonnull align 8 dereferenceable(32) %15)
          to label %128 unwind label %153

128:                                              ; preds = %127
  invoke void @_ZN3Raz8FilePathC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %17, ptr noundef nonnull align 8 dereferenceable(32) %18)
          to label %129 unwind label %157

129:                                              ; preds = %128
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #8
  call void @_ZN3Raz8FilePathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %19) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %18) #8
  %130 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef @.str.6)
          to label %131 unwind label %163

131:                                              ; preds = %129
  %132 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3RazlsERSoRKNS_8FilePathE(ptr noundef nonnull align 8 dereferenceable(8) %130, ptr noundef nonnull align 8 dereferenceable(32) %17)
          to label %133 unwind label %163

133:                                              ; preds = %131
  %134 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %132, ptr noundef @.str.7)
          to label %135 unwind label %163

135:                                              ; preds = %133
  %136 = load ptr, ptr %6, align 8, !tbaa !5
  %137 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3Raz12MeshRenderer12getMaterialsEv(ptr noundef nonnull align 8 dereferenceable(64) %136)
          to label %138 unwind label %163

138:                                              ; preds = %135
  invoke void @_ZN3Raz9ObjFormat12_GLOBAL__N_17saveMtlERKNS_8FilePathERKSt6vectorINS_8MaterialESaIS6_EE(ptr noundef nonnull align 8 dereferenceable(32) %17, ptr noundef nonnull align 8 dereferenceable(24) %137)
          to label %139 unwind label %163

139:                                              ; preds = %138
  call void @_ZN3Raz8FilePathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %17) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %15) #8
  br label %169

140:                                              ; preds = %122
  %141 = landingpad { ptr, i32 }
          cleanup
  %142 = extractvalue { ptr, i32 } %141, 0
  store ptr %142, ptr %9, align 8
  %143 = extractvalue { ptr, i32 } %141, 1
  store i32 %143, ptr %10, align 4
  br label %148

144:                                              ; preds = %124
  %145 = landingpad { ptr, i32 }
          cleanup
  %146 = extractvalue { ptr, i32 } %145, 0
  store ptr %146, ptr %9, align 8
  %147 = extractvalue { ptr, i32 } %145, 1
  store i32 %147, ptr %10, align 4
  call void @_ZN3Raz8FilePathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #8
  br label %148

148:                                              ; preds = %144, %140
  call void @llvm.lifetime.end.p0(i64 32, ptr %16) #8
  br label %168

149:                                              ; preds = %125
  %150 = landingpad { ptr, i32 }
          cleanup
  %151 = extractvalue { ptr, i32 } %150, 0
  store ptr %151, ptr %9, align 8
  %152 = extractvalue { ptr, i32 } %150, 1
  store i32 %152, ptr %10, align 4
  br label %162

153:                                              ; preds = %127
  %154 = landingpad { ptr, i32 }
          cleanup
  %155 = extractvalue { ptr, i32 } %154, 0
  store ptr %155, ptr %9, align 8
  %156 = extractvalue { ptr, i32 } %154, 1
  store i32 %156, ptr %10, align 4
  br label %161

157:                                              ; preds = %128
  %158 = landingpad { ptr, i32 }
          cleanup
  %159 = extractvalue { ptr, i32 } %158, 0
  store ptr %159, ptr %9, align 8
  %160 = extractvalue { ptr, i32 } %158, 1
  store i32 %160, ptr %10, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #8
  br label %161

161:                                              ; preds = %157, %153
  call void @_ZN3Raz8FilePathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #8
  br label %162

162:                                              ; preds = %161, %149
  call void @llvm.lifetime.end.p0(i64 32, ptr %19) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %18) #8
  br label %167

163:                                              ; preds = %138, %135, %133, %131, %129
  %164 = landingpad { ptr, i32 }
          cleanup
  %165 = extractvalue { ptr, i32 } %164, 0
  store ptr %165, ptr %9, align 8
  %166 = extractvalue { ptr, i32 } %164, 1
  store i32 %166, ptr %10, align 4
  call void @_ZN3Raz8FilePathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #8
  br label %167

167:                                              ; preds = %163, %162
  call void @llvm.lifetime.end.p0(i64 32, ptr %17) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #8
  br label %168

168:                                              ; preds = %167, %148
  call void @llvm.lifetime.end.p0(i64 32, ptr %15) #8
  br label %670

169:                                              ; preds = %139, %120, %114
  call void @llvm.lifetime.start.p0(i64 48, ptr %20) #8
  call void @_ZNSt3mapIN3Raz6VectorIfLm3EEEmSt4lessIS2_ESaISt4pairIKS2_mEEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %20) #8
  call void @llvm.lifetime.start.p0(i64 48, ptr %21) #8
  call void @_ZNSt3mapIN3Raz6VectorIfLm2EEEmSt4lessIS2_ESaISt4pairIKS2_mEEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %21) #8
  call void @llvm.lifetime.start.p0(i64 48, ptr %22) #8
  call void @_ZNSt3mapIN3Raz6VectorIfLm3EEEmSt4lessIS2_ESaISt4pairIKS2_mEEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %22) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #8
  %170 = load ptr, ptr %5, align 8, !tbaa !5
  %171 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3Raz4Mesh12getSubmeshesEv(ptr noundef nonnull align 8 dereferenceable(64) %170)
          to label %172 unwind label %182

172:                                              ; preds = %169
  store ptr %171, ptr %23, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #8
  %173 = load ptr, ptr %23, align 8, !tbaa !5
  %174 = call ptr @_ZNKSt6vectorIN3Raz7SubmeshESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %173) #8
  %175 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %24, i32 0, i32 0
  store ptr %174, ptr %175, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #8
  %176 = load ptr, ptr %23, align 8, !tbaa !5
  %177 = call ptr @_ZNKSt6vectorIN3Raz7SubmeshESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %176) #8
  %178 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %25, i32 0, i32 0
  store ptr %177, ptr %178, align 8
  br label %179

179:                                              ; preds = %369, %172
  %180 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3Raz7SubmeshESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull align 8 dereferenceable(8) %25) #8
  br i1 %180, label %186, label %181

181:                                              ; preds = %179
  store i32 2, ptr %26, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #8
  br label %372

182:                                              ; preds = %169
  %183 = landingpad { ptr, i32 }
          cleanup
  %184 = extractvalue { ptr, i32 } %183, 0
  store ptr %184, ptr %9, align 8
  %185 = extractvalue { ptr, i32 } %183, 1
  store i32 %185, ptr %10, align 4
  br label %371

186:                                              ; preds = %179
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #8
  %187 = call noundef nonnull align 8 dereferenceable(104) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3Raz7SubmeshESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %24) #8
  store ptr %187, ptr %27, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #8
  %188 = load ptr, ptr %27, align 8, !tbaa !5
  %189 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3Raz7Submesh11getVerticesEv(ptr noundef nonnull align 8 dereferenceable(104) %188)
          to label %190 unwind label %200

190:                                              ; preds = %186
  store ptr %189, ptr %28, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #8
  %191 = load ptr, ptr %28, align 8, !tbaa !5
  %192 = call ptr @_ZNKSt6vectorIN3Raz6VertexESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %191) #8
  %193 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.34", ptr %29, i32 0, i32 0
  store ptr %192, ptr %193, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #8
  %194 = load ptr, ptr %28, align 8, !tbaa !5
  %195 = call ptr @_ZNKSt6vectorIN3Raz6VertexESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %194) #8
  %196 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.34", ptr %30, i32 0, i32 0
  store ptr %195, ptr %196, align 8
  br label %197

197:                                              ; preds = %364, %190
  %198 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3Raz6VertexESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %29, ptr noundef nonnull align 8 dereferenceable(8) %30) #8
  br i1 %198, label %204, label %199

199:                                              ; preds = %197
  store i32 4, ptr %26, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #8
  br label %368

200:                                              ; preds = %186
  %201 = landingpad { ptr, i32 }
          cleanup
  %202 = extractvalue { ptr, i32 } %201, 0
  store ptr %202, ptr %9, align 8
  %203 = extractvalue { ptr, i32 } %201, 1
  store i32 %203, ptr %10, align 4
  br label %367

204:                                              ; preds = %197
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #8
  %205 = call noundef nonnull align 4 dereferenceable(44) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3Raz6VertexESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %29) #8
  store ptr %205, ptr %31, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #8
  %206 = load ptr, ptr %31, align 8, !tbaa !5
  %207 = getelementptr inbounds %"struct.Raz::Vertex", ptr %206, i32 0, i32 0
  %208 = invoke ptr @_ZNSt3mapIN3Raz6VectorIfLm3EEEmSt4lessIS2_ESaISt4pairIKS2_mEEE4findERS6_(ptr noundef nonnull align 8 dereferenceable(48) %20, ptr noundef nonnull align 4 dereferenceable(12) %207)
          to label %209 unwind label %251

209:                                              ; preds = %204
  %210 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %33, i32 0, i32 0
  store ptr %208, ptr %210, align 8
  call void @_ZNSt23_Rb_tree_const_iteratorISt4pairIKN3Raz6VectorIfLm3EEEmEEC2ERKSt17_Rb_tree_iteratorIS5_E(ptr noundef nonnull align 8 dereferenceable(8) %32, ptr noundef nonnull align 8 dereferenceable(8) %33) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #8
  %211 = call ptr @_ZNKSt3mapIN3Raz6VectorIfLm3EEEmSt4lessIS2_ESaISt4pairIKS2_mEEE4cendEv(ptr noundef nonnull align 8 dereferenceable(48) %20) #8
  %212 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %34, i32 0, i32 0
  store ptr %211, ptr %212, align 8
  %213 = call noundef zeroext i1 @_ZSteqRKSt23_Rb_tree_const_iteratorISt4pairIKN3Raz6VectorIfLm3EEEmEES8_(ptr noundef nonnull align 8 dereferenceable(8) %32, ptr noundef nonnull align 8 dereferenceable(8) %34) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #8
  br i1 %213, label %214, label %263

214:                                              ; preds = %209
  %215 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef @.str.8)
          to label %216 unwind label %255

216:                                              ; preds = %214
  %217 = load ptr, ptr %31, align 8, !tbaa !5
  %218 = getelementptr inbounds %"struct.Raz::Vertex", ptr %217, i32 0, i32 0
  %219 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3Raz6VectorIfLm3EE1xEv(ptr noundef nonnull align 4 dereferenceable(12) %218) #8
  %220 = load float, ptr %219, align 4, !tbaa !11
  %221 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEf(ptr noundef nonnull align 8 dereferenceable(8) %215, float noundef %220)
          to label %222 unwind label %255

222:                                              ; preds = %216
  %223 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %221, i8 noundef signext 32)
          to label %224 unwind label %255

224:                                              ; preds = %222
  %225 = load ptr, ptr %31, align 8, !tbaa !5
  %226 = getelementptr inbounds %"struct.Raz::Vertex", ptr %225, i32 0, i32 0
  %227 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3Raz6VectorIfLm3EE1yEv(ptr noundef nonnull align 4 dereferenceable(12) %226) #8
  %228 = load float, ptr %227, align 4, !tbaa !11
  %229 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEf(ptr noundef nonnull align 8 dereferenceable(8) %223, float noundef %228)
          to label %230 unwind label %255

230:                                              ; preds = %224
  %231 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %229, i8 noundef signext 32)
          to label %232 unwind label %255

232:                                              ; preds = %230
  %233 = load ptr, ptr %31, align 8, !tbaa !5
  %234 = getelementptr inbounds %"struct.Raz::Vertex", ptr %233, i32 0, i32 0
  %235 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3Raz6VectorIfLm3EE1zEv(ptr noundef nonnull align 4 dereferenceable(12) %234) #8
  %236 = load float, ptr %235, align 4, !tbaa !11
  %237 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEf(ptr noundef nonnull align 8 dereferenceable(8) %231, float noundef %236)
          to label %238 unwind label %255

238:                                              ; preds = %232
  %239 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %237, i8 noundef signext 10)
          to label %240 unwind label %255

240:                                              ; preds = %238
  %241 = load ptr, ptr %31, align 8, !tbaa !5
  %242 = getelementptr inbounds %"struct.Raz::Vertex", ptr %241, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #8
  %243 = call noundef i64 @_ZNKSt3mapIN3Raz6VectorIfLm3EEEmSt4lessIS2_ESaISt4pairIKS2_mEEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(48) %20) #8
  %244 = add i64 %243, 1
  store i64 %244, ptr %35, align 8, !tbaa !13
  %245 = invoke { ptr, i8 } @_ZNSt3mapIN3Raz6VectorIfLm3EEEmSt4lessIS2_ESaISt4pairIKS2_mEEE7emplaceIJRS6_mEEES5_ISt17_Rb_tree_iteratorIS7_EbEDpOT_(ptr noundef nonnull align 8 dereferenceable(48) %20, ptr noundef nonnull align 4 dereferenceable(12) %242, ptr noundef nonnull align 8 dereferenceable(8) %35)
          to label %246 unwind label %259

246:                                              ; preds = %240
  %247 = getelementptr inbounds { ptr, i8 }, ptr %36, i32 0, i32 0
  %248 = extractvalue { ptr, i8 } %245, 0
  store ptr %248, ptr %247, align 8
  %249 = getelementptr inbounds { ptr, i8 }, ptr %36, i32 0, i32 1
  %250 = extractvalue { ptr, i8 } %245, 1
  store i8 %250, ptr %249, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #8
  br label %263

251:                                              ; preds = %204
  %252 = landingpad { ptr, i32 }
          cleanup
  %253 = extractvalue { ptr, i32 } %252, 0
  store ptr %253, ptr %9, align 8
  %254 = extractvalue { ptr, i32 } %252, 1
  store i32 %254, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #8
  br label %366

255:                                              ; preds = %342, %336, %334, %328, %326, %320, %318, %288, %282, %280, %274, %272, %238, %232, %230, %224, %222, %216, %214
  %256 = landingpad { ptr, i32 }
          cleanup
  %257 = extractvalue { ptr, i32 } %256, 0
  store ptr %257, ptr %9, align 8
  %258 = extractvalue { ptr, i32 } %256, 1
  store i32 %258, ptr %10, align 4
  br label %366

259:                                              ; preds = %240
  %260 = landingpad { ptr, i32 }
          cleanup
  %261 = extractvalue { ptr, i32 } %260, 0
  store ptr %261, ptr %9, align 8
  %262 = extractvalue { ptr, i32 } %260, 1
  store i32 %262, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #8
  br label %366

263:                                              ; preds = %246, %209
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #8
  %264 = load ptr, ptr %31, align 8, !tbaa !5
  %265 = getelementptr inbounds %"struct.Raz::Vertex", ptr %264, i32 0, i32 1
  %266 = invoke ptr @_ZNSt3mapIN3Raz6VectorIfLm2EEEmSt4lessIS2_ESaISt4pairIKS2_mEEE4findERS6_(ptr noundef nonnull align 8 dereferenceable(48) %21, ptr noundef nonnull align 4 dereferenceable(8) %265)
          to label %267 unwind label %301

267:                                              ; preds = %263
  %268 = getelementptr inbounds %"struct.std::_Rb_tree_iterator.38", ptr %38, i32 0, i32 0
  store ptr %266, ptr %268, align 8
  call void @_ZNSt23_Rb_tree_const_iteratorISt4pairIKN3Raz6VectorIfLm2EEEmEEC2ERKSt17_Rb_tree_iteratorIS5_E(ptr noundef nonnull align 8 dereferenceable(8) %37, ptr noundef nonnull align 8 dereferenceable(8) %38) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #8
  %269 = call ptr @_ZNKSt3mapIN3Raz6VectorIfLm2EEEmSt4lessIS2_ESaISt4pairIKS2_mEEE4cendEv(ptr noundef nonnull align 8 dereferenceable(48) %21) #8
  %270 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator.37", ptr %39, i32 0, i32 0
  store ptr %269, ptr %270, align 8
  %271 = call noundef zeroext i1 @_ZSteqRKSt23_Rb_tree_const_iteratorISt4pairIKN3Raz6VectorIfLm2EEEmEES8_(ptr noundef nonnull align 8 dereferenceable(8) %37, ptr noundef nonnull align 8 dereferenceable(8) %39) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #8
  br i1 %271, label %272, label %309

272:                                              ; preds = %267
  %273 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef @.str.9)
          to label %274 unwind label %255

274:                                              ; preds = %272
  %275 = load ptr, ptr %31, align 8, !tbaa !5
  %276 = getelementptr inbounds %"struct.Raz::Vertex", ptr %275, i32 0, i32 1
  %277 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3Raz6VectorIfLm2EE1xEv(ptr noundef nonnull align 4 dereferenceable(8) %276) #8
  %278 = load float, ptr %277, align 4, !tbaa !11
  %279 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEf(ptr noundef nonnull align 8 dereferenceable(8) %273, float noundef %278)
          to label %280 unwind label %255

280:                                              ; preds = %274
  %281 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %279, i8 noundef signext 32)
          to label %282 unwind label %255

282:                                              ; preds = %280
  %283 = load ptr, ptr %31, align 8, !tbaa !5
  %284 = getelementptr inbounds %"struct.Raz::Vertex", ptr %283, i32 0, i32 1
  %285 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3Raz6VectorIfLm2EE1yEv(ptr noundef nonnull align 4 dereferenceable(8) %284) #8
  %286 = load float, ptr %285, align 4, !tbaa !11
  %287 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEf(ptr noundef nonnull align 8 dereferenceable(8) %281, float noundef %286)
          to label %288 unwind label %255

288:                                              ; preds = %282
  %289 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %287, i8 noundef signext 10)
          to label %290 unwind label %255

290:                                              ; preds = %288
  %291 = load ptr, ptr %31, align 8, !tbaa !5
  %292 = getelementptr inbounds %"struct.Raz::Vertex", ptr %291, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #8
  %293 = call noundef i64 @_ZNKSt3mapIN3Raz6VectorIfLm2EEEmSt4lessIS2_ESaISt4pairIKS2_mEEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(48) %21) #8
  %294 = add i64 %293, 1
  store i64 %294, ptr %40, align 8, !tbaa !13
  %295 = invoke { ptr, i8 } @_ZNSt3mapIN3Raz6VectorIfLm2EEEmSt4lessIS2_ESaISt4pairIKS2_mEEE7emplaceIJRS6_mEEES5_ISt17_Rb_tree_iteratorIS7_EbEDpOT_(ptr noundef nonnull align 8 dereferenceable(48) %21, ptr noundef nonnull align 4 dereferenceable(8) %292, ptr noundef nonnull align 8 dereferenceable(8) %40)
          to label %296 unwind label %305

296:                                              ; preds = %290
  %297 = getelementptr inbounds { ptr, i8 }, ptr %41, i32 0, i32 0
  %298 = extractvalue { ptr, i8 } %295, 0
  store ptr %298, ptr %297, align 8
  %299 = getelementptr inbounds { ptr, i8 }, ptr %41, i32 0, i32 1
  %300 = extractvalue { ptr, i8 } %295, 1
  store i8 %300, ptr %299, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #8
  br label %309

301:                                              ; preds = %263
  %302 = landingpad { ptr, i32 }
          cleanup
  %303 = extractvalue { ptr, i32 } %302, 0
  store ptr %303, ptr %9, align 8
  %304 = extractvalue { ptr, i32 } %302, 1
  store i32 %304, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #8
  br label %366

305:                                              ; preds = %290
  %306 = landingpad { ptr, i32 }
          cleanup
  %307 = extractvalue { ptr, i32 } %306, 0
  store ptr %307, ptr %9, align 8
  %308 = extractvalue { ptr, i32 } %306, 1
  store i32 %308, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #8
  br label %366

309:                                              ; preds = %296, %267
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #8
  %310 = load ptr, ptr %31, align 8, !tbaa !5
  %311 = getelementptr inbounds %"struct.Raz::Vertex", ptr %310, i32 0, i32 2
  %312 = invoke ptr @_ZNSt3mapIN3Raz6VectorIfLm3EEEmSt4lessIS2_ESaISt4pairIKS2_mEEE4findERS6_(ptr noundef nonnull align 8 dereferenceable(48) %22, ptr noundef nonnull align 4 dereferenceable(12) %311)
          to label %313 unwind label %355

313:                                              ; preds = %309
  %314 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %43, i32 0, i32 0
  store ptr %312, ptr %314, align 8
  call void @_ZNSt23_Rb_tree_const_iteratorISt4pairIKN3Raz6VectorIfLm3EEEmEEC2ERKSt17_Rb_tree_iteratorIS5_E(ptr noundef nonnull align 8 dereferenceable(8) %42, ptr noundef nonnull align 8 dereferenceable(8) %43) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #8
  %315 = call ptr @_ZNKSt3mapIN3Raz6VectorIfLm3EEEmSt4lessIS2_ESaISt4pairIKS2_mEEE4cendEv(ptr noundef nonnull align 8 dereferenceable(48) %22) #8
  %316 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %44, i32 0, i32 0
  store ptr %315, ptr %316, align 8
  %317 = call noundef zeroext i1 @_ZSteqRKSt23_Rb_tree_const_iteratorISt4pairIKN3Raz6VectorIfLm3EEEmEES8_(ptr noundef nonnull align 8 dereferenceable(8) %42, ptr noundef nonnull align 8 dereferenceable(8) %44) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #8
  br i1 %317, label %318, label %363

318:                                              ; preds = %313
  %319 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef @.str.10)
          to label %320 unwind label %255

320:                                              ; preds = %318
  %321 = load ptr, ptr %31, align 8, !tbaa !5
  %322 = getelementptr inbounds %"struct.Raz::Vertex", ptr %321, i32 0, i32 2
  %323 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3Raz6VectorIfLm3EE1xEv(ptr noundef nonnull align 4 dereferenceable(12) %322) #8
  %324 = load float, ptr %323, align 4, !tbaa !11
  %325 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEf(ptr noundef nonnull align 8 dereferenceable(8) %319, float noundef %324)
          to label %326 unwind label %255

326:                                              ; preds = %320
  %327 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %325, i8 noundef signext 32)
          to label %328 unwind label %255

328:                                              ; preds = %326
  %329 = load ptr, ptr %31, align 8, !tbaa !5
  %330 = getelementptr inbounds %"struct.Raz::Vertex", ptr %329, i32 0, i32 2
  %331 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3Raz6VectorIfLm3EE1yEv(ptr noundef nonnull align 4 dereferenceable(12) %330) #8
  %332 = load float, ptr %331, align 4, !tbaa !11
  %333 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEf(ptr noundef nonnull align 8 dereferenceable(8) %327, float noundef %332)
          to label %334 unwind label %255

334:                                              ; preds = %328
  %335 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %333, i8 noundef signext 32)
          to label %336 unwind label %255

336:                                              ; preds = %334
  %337 = load ptr, ptr %31, align 8, !tbaa !5
  %338 = getelementptr inbounds %"struct.Raz::Vertex", ptr %337, i32 0, i32 2
  %339 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3Raz6VectorIfLm3EE1zEv(ptr noundef nonnull align 4 dereferenceable(12) %338) #8
  %340 = load float, ptr %339, align 4, !tbaa !11
  %341 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEf(ptr noundef nonnull align 8 dereferenceable(8) %335, float noundef %340)
          to label %342 unwind label %255

342:                                              ; preds = %336
  %343 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %341, i8 noundef signext 10)
          to label %344 unwind label %255

344:                                              ; preds = %342
  %345 = load ptr, ptr %31, align 8, !tbaa !5
  %346 = getelementptr inbounds %"struct.Raz::Vertex", ptr %345, i32 0, i32 2
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #8
  %347 = call noundef i64 @_ZNKSt3mapIN3Raz6VectorIfLm3EEEmSt4lessIS2_ESaISt4pairIKS2_mEEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(48) %22) #8
  %348 = add i64 %347, 1
  store i64 %348, ptr %45, align 8, !tbaa !13
  %349 = invoke { ptr, i8 } @_ZNSt3mapIN3Raz6VectorIfLm3EEEmSt4lessIS2_ESaISt4pairIKS2_mEEE7emplaceIJRS6_mEEES5_ISt17_Rb_tree_iteratorIS7_EbEDpOT_(ptr noundef nonnull align 8 dereferenceable(48) %22, ptr noundef nonnull align 4 dereferenceable(12) %346, ptr noundef nonnull align 8 dereferenceable(8) %45)
          to label %350 unwind label %359

350:                                              ; preds = %344
  %351 = getelementptr inbounds { ptr, i8 }, ptr %46, i32 0, i32 0
  %352 = extractvalue { ptr, i8 } %349, 0
  store ptr %352, ptr %351, align 8
  %353 = getelementptr inbounds { ptr, i8 }, ptr %46, i32 0, i32 1
  %354 = extractvalue { ptr, i8 } %349, 1
  store i8 %354, ptr %353, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #8
  br label %363

355:                                              ; preds = %309
  %356 = landingpad { ptr, i32 }
          cleanup
  %357 = extractvalue { ptr, i32 } %356, 0
  store ptr %357, ptr %9, align 8
  %358 = extractvalue { ptr, i32 } %356, 1
  store i32 %358, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #8
  br label %366

359:                                              ; preds = %344
  %360 = landingpad { ptr, i32 }
          cleanup
  %361 = extractvalue { ptr, i32 } %360, 0
  store ptr %361, ptr %9, align 8
  %362 = extractvalue { ptr, i32 } %360, 1
  store i32 %362, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #8
  br label %366

363:                                              ; preds = %350, %313
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #8
  br label %364

364:                                              ; preds = %363
  %365 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3Raz6VertexESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %29) #8
  br label %197

366:                                              ; preds = %359, %355, %305, %301, %259, %255, %251
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #8
  br label %367

367:                                              ; preds = %366, %200
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #8
  br label %371

368:                                              ; preds = %199
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #8
  br label %369

369:                                              ; preds = %368
  %370 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3Raz7SubmeshESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %24) #8
  br label %179

371:                                              ; preds = %367, %182
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #8
  br label %669

372:                                              ; preds = %181
  call void @llvm.lifetime.start.p0(i64 32, ptr %47) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %48) #8
  %373 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZNK3Raz8FilePath15recoverFileNameEb(ptr dead_on_unwind writable sret(%"class.Raz::FilePath") align 8 %48, ptr noundef nonnull align 8 dereferenceable(32) %373, i1 noundef zeroext false)
          to label %374 unwind label %386

374:                                              ; preds = %372
  %375 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3Raz8FilePath6toUtf8B5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(32) %48)
          to label %376 unwind label %390

376:                                              ; preds = %374
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %47, ptr noundef nonnull align 8 dereferenceable(32) %375)
          to label %377 unwind label %390

377:                                              ; preds = %376
  call void @_ZN3Raz8FilePathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %48) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #8
  store i64 0, ptr %49, align 8, !tbaa !13
  br label %378

378:                                              ; preds = %656, %377
  %379 = load i64, ptr %49, align 8, !tbaa !13
  %380 = load ptr, ptr %5, align 8, !tbaa !5
  %381 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3Raz4Mesh12getSubmeshesEv(ptr noundef nonnull align 8 dereferenceable(64) %380)
          to label %382 unwind label %395

382:                                              ; preds = %378
  %383 = call noundef i64 @_ZNKSt6vectorIN3Raz7SubmeshESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %381) #8
  %384 = icmp ult i64 %379, %383
  br i1 %384, label %399, label %385

385:                                              ; preds = %382
  store i32 6, ptr %26, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #8
  br label %661

386:                                              ; preds = %372
  %387 = landingpad { ptr, i32 }
          cleanup
  %388 = extractvalue { ptr, i32 } %387, 0
  store ptr %388, ptr %9, align 8
  %389 = extractvalue { ptr, i32 } %387, 1
  store i32 %389, ptr %10, align 4
  br label %394

390:                                              ; preds = %376, %374
  %391 = landingpad { ptr, i32 }
          cleanup
  %392 = extractvalue { ptr, i32 } %391, 0
  store ptr %392, ptr %9, align 8
  %393 = extractvalue { ptr, i32 } %391, 1
  store i32 %393, ptr %10, align 4
  call void @_ZN3Raz8FilePathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #8
  br label %394

394:                                              ; preds = %390, %386
  call void @llvm.lifetime.end.p0(i64 32, ptr %48) #8
  br label %668

395:                                              ; preds = %378
  %396 = landingpad { ptr, i32 }
          cleanup
  %397 = extractvalue { ptr, i32 } %396, 0
  store ptr %397, ptr %9, align 8
  %398 = extractvalue { ptr, i32 } %396, 1
  store i32 %398, ptr %10, align 4
  br label %660

399:                                              ; preds = %382
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #8
  %400 = load ptr, ptr %5, align 8, !tbaa !5
  %401 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3Raz4Mesh12getSubmeshesEv(ptr noundef nonnull align 8 dereferenceable(64) %400)
          to label %402 unwind label %441

402:                                              ; preds = %399
  %403 = load i64, ptr %49, align 8, !tbaa !13
  %404 = call noundef nonnull align 8 dereferenceable(104) ptr @_ZNKSt6vectorIN3Raz7SubmeshESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %401, i64 noundef %403) #8
  store ptr %404, ptr %50, align 8, !tbaa !5
  %405 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef @.str.11)
          to label %406 unwind label %441

406:                                              ; preds = %402
  %407 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %405, ptr noundef nonnull align 8 dereferenceable(32) %47)
          to label %408 unwind label %441

408:                                              ; preds = %406
  %409 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %407, i8 noundef signext 95)
          to label %410 unwind label %441

410:                                              ; preds = %408
  %411 = load i64, ptr %49, align 8, !tbaa !13
  %412 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %409, i64 noundef %411)
          to label %413 unwind label %441

413:                                              ; preds = %410
  %414 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %412, i8 noundef signext 10)
          to label %415 unwind label %441

415:                                              ; preds = %413
  %416 = load ptr, ptr %6, align 8, !tbaa !5
  %417 = icmp ne ptr %416, null
  br i1 %417, label %418, label %445

418:                                              ; preds = %415
  %419 = load ptr, ptr %6, align 8, !tbaa !5
  %420 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3Raz12MeshRenderer12getMaterialsEv(ptr noundef nonnull align 8 dereferenceable(64) %419)
          to label %421 unwind label %441

421:                                              ; preds = %418
  %422 = call noundef zeroext i1 @_ZNKSt6vectorIN3Raz8MaterialESaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %420) #8
  br i1 %422, label %445, label %423

423:                                              ; preds = %421
  %424 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef @.str.12)
          to label %425 unwind label %441

425:                                              ; preds = %423
  %426 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %424, ptr noundef nonnull align 8 dereferenceable(32) %47)
          to label %427 unwind label %441

427:                                              ; preds = %425
  %428 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %426, i8 noundef signext 95)
          to label %429 unwind label %441

429:                                              ; preds = %427
  %430 = load ptr, ptr %6, align 8, !tbaa !5
  %431 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3Raz12MeshRenderer19getSubmeshRenderersEv(ptr noundef nonnull align 8 dereferenceable(64) %430)
          to label %432 unwind label %441

432:                                              ; preds = %429
  %433 = load i64, ptr %49, align 8, !tbaa !13
  %434 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZNKSt6vectorIN3Raz15SubmeshRendererESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %431, i64 noundef %433) #8
  %435 = invoke noundef i64 @_ZNK3Raz15SubmeshRenderer16getMaterialIndexEv(ptr noundef nonnull align 8 dereferenceable(72) %434)
          to label %436 unwind label %441

436:                                              ; preds = %432
  %437 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %428, i64 noundef %435)
          to label %438 unwind label %441

438:                                              ; preds = %436
  %439 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %437, i8 noundef signext 10)
          to label %440 unwind label %441

440:                                              ; preds = %438
  br label %445

441:                                              ; preds = %438, %436, %432, %429, %427, %425, %423, %418, %413, %410, %408, %406, %402, %399
  %442 = landingpad { ptr, i32 }
          cleanup
  %443 = extractvalue { ptr, i32 } %442, 0
  store ptr %443, ptr %9, align 8
  %444 = extractvalue { ptr, i32 } %442, 1
  store i32 %444, ptr %10, align 4
  br label %659

445:                                              ; preds = %440, %421, %415
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #8
  store i64 0, ptr %51, align 8, !tbaa !13
  br label %446

446:                                              ; preds = %603, %445
  %447 = load i64, ptr %51, align 8, !tbaa !13
  %448 = load ptr, ptr %50, align 8, !tbaa !5
  %449 = invoke noundef i64 @_ZNK3Raz7Submesh21getTriangleIndexCountEv(ptr noundef nonnull align 8 dereferenceable(104) %448)
          to label %450 unwind label %453

450:                                              ; preds = %446
  %451 = icmp ult i64 %447, %449
  br i1 %451, label %457, label %452

452:                                              ; preds = %450
  store i32 9, ptr %26, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #8
  br label %655

453:                                              ; preds = %457, %446
  %454 = landingpad { ptr, i32 }
          cleanup
  %455 = extractvalue { ptr, i32 } %454, 0
  store ptr %455, ptr %9, align 8
  %456 = extractvalue { ptr, i32 } %454, 1
  store i32 %456, ptr %10, align 4
  br label %654

457:                                              ; preds = %450
  %458 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef @.str.13)
          to label %459 unwind label %453

459:                                              ; preds = %457
  call void @llvm.lifetime.start.p0(i64 44, ptr %52) #8
  %460 = load ptr, ptr %50, align 8, !tbaa !5
  %461 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3Raz7Submesh11getVerticesEv(ptr noundef nonnull align 8 dereferenceable(104) %460)
          to label %462 unwind label %606

462:                                              ; preds = %459
  %463 = load ptr, ptr %50, align 8, !tbaa !5
  %464 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3Raz7Submesh18getTriangleIndicesEv(ptr noundef nonnull align 8 dereferenceable(104) %463)
          to label %465 unwind label %606

465:                                              ; preds = %462
  %466 = load i64, ptr %51, align 8, !tbaa !13
  %467 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %464, i64 noundef %466) #8
  %468 = load i32, ptr %467, align 4, !tbaa !15
  %469 = zext i32 %468 to i64
  %470 = call noundef nonnull align 4 dereferenceable(44) ptr @_ZNKSt6vectorIN3Raz6VertexESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %461, i64 noundef %469) #8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %52, ptr align 4 %470, i64 44, i1 false), !tbaa.struct !17
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #8
  %471 = getelementptr inbounds %"struct.Raz::Vertex", ptr %52, i32 0, i32 0
  %472 = invoke ptr @_ZNSt3mapIN3Raz6VectorIfLm3EEEmSt4lessIS2_ESaISt4pairIKS2_mEEE4findERS6_(ptr noundef nonnull align 8 dereferenceable(48) %20, ptr noundef nonnull align 4 dereferenceable(12) %471)
          to label %473 unwind label %610

473:                                              ; preds = %465
  %474 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %54, i32 0, i32 0
  store ptr %472, ptr %474, align 8
  %475 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKN3Raz6VectorIfLm3EEEmEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %54) #8
  %476 = getelementptr inbounds %"struct.std::pair.45", ptr %475, i32 0, i32 1
  %477 = load i64, ptr %476, align 8, !tbaa !19
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #8
  store i64 %477, ptr %53, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #8
  %478 = getelementptr inbounds %"struct.Raz::Vertex", ptr %52, i32 0, i32 1
  %479 = invoke ptr @_ZNSt3mapIN3Raz6VectorIfLm2EEEmSt4lessIS2_ESaISt4pairIKS2_mEEE4findERS6_(ptr noundef nonnull align 8 dereferenceable(48) %21, ptr noundef nonnull align 4 dereferenceable(8) %478)
          to label %480 unwind label %614

480:                                              ; preds = %473
  %481 = getelementptr inbounds %"struct.std::_Rb_tree_iterator.38", ptr %56, i32 0, i32 0
  store ptr %479, ptr %481, align 8
  %482 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKN3Raz6VectorIfLm2EEEmEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %56) #8
  %483 = getelementptr inbounds %"struct.std::pair.47", ptr %482, i32 0, i32 1
  %484 = load i64, ptr %483, align 8, !tbaa !23
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #8
  store i64 %484, ptr %55, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #8
  %485 = getelementptr inbounds %"struct.Raz::Vertex", ptr %52, i32 0, i32 2
  %486 = invoke ptr @_ZNSt3mapIN3Raz6VectorIfLm3EEEmSt4lessIS2_ESaISt4pairIKS2_mEEE4findERS6_(ptr noundef nonnull align 8 dereferenceable(48) %22, ptr noundef nonnull align 4 dereferenceable(12) %485)
          to label %487 unwind label %618

487:                                              ; preds = %480
  %488 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %58, i32 0, i32 0
  store ptr %486, ptr %488, align 8
  %489 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKN3Raz6VectorIfLm3EEEmEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %58) #8
  %490 = getelementptr inbounds %"struct.std::pair.45", ptr %489, i32 0, i32 1
  %491 = load i64, ptr %490, align 8, !tbaa !19
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #8
  store i64 %491, ptr %57, align 8, !tbaa !13
  %492 = load i64, ptr %53, align 8, !tbaa !13
  %493 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %11, i64 noundef %492)
          to label %494 unwind label %622

494:                                              ; preds = %487
  %495 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %493, i8 noundef signext 47)
          to label %496 unwind label %622

496:                                              ; preds = %494
  %497 = load i64, ptr %55, align 8, !tbaa !13
  %498 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %495, i64 noundef %497)
          to label %499 unwind label %622

499:                                              ; preds = %496
  %500 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %498, i8 noundef signext 47)
          to label %501 unwind label %622

501:                                              ; preds = %499
  %502 = load i64, ptr %57, align 8, !tbaa !13
  %503 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %500, i64 noundef %502)
          to label %504 unwind label %622

504:                                              ; preds = %501
  %505 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %503, i8 noundef signext 32)
          to label %506 unwind label %622

506:                                              ; preds = %504
  %507 = load ptr, ptr %50, align 8, !tbaa !5
  %508 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3Raz7Submesh11getVerticesEv(ptr noundef nonnull align 8 dereferenceable(104) %507)
          to label %509 unwind label %622

509:                                              ; preds = %506
  %510 = load ptr, ptr %50, align 8, !tbaa !5
  %511 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3Raz7Submesh18getTriangleIndicesEv(ptr noundef nonnull align 8 dereferenceable(104) %510)
          to label %512 unwind label %622

512:                                              ; preds = %509
  %513 = load i64, ptr %51, align 8, !tbaa !13
  %514 = add i64 %513, 1
  %515 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %511, i64 noundef %514) #8
  %516 = load i32, ptr %515, align 4, !tbaa !15
  %517 = zext i32 %516 to i64
  %518 = call noundef nonnull align 4 dereferenceable(44) ptr @_ZNKSt6vectorIN3Raz6VertexESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %508, i64 noundef %517) #8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %52, ptr align 4 %518, i64 44, i1 false), !tbaa.struct !17
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #8
  %519 = getelementptr inbounds %"struct.Raz::Vertex", ptr %52, i32 0, i32 0
  %520 = invoke ptr @_ZNSt3mapIN3Raz6VectorIfLm3EEEmSt4lessIS2_ESaISt4pairIKS2_mEEE4findERS6_(ptr noundef nonnull align 8 dereferenceable(48) %20, ptr noundef nonnull align 4 dereferenceable(12) %519)
          to label %521 unwind label %626

521:                                              ; preds = %512
  %522 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %59, i32 0, i32 0
  store ptr %520, ptr %522, align 8
  %523 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKN3Raz6VectorIfLm3EEEmEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %59) #8
  %524 = getelementptr inbounds %"struct.std::pair.45", ptr %523, i32 0, i32 1
  %525 = load i64, ptr %524, align 8, !tbaa !19
  store i64 %525, ptr %53, align 8, !tbaa !13
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #8
  %526 = getelementptr inbounds %"struct.Raz::Vertex", ptr %52, i32 0, i32 1
  %527 = invoke ptr @_ZNSt3mapIN3Raz6VectorIfLm2EEEmSt4lessIS2_ESaISt4pairIKS2_mEEE4findERS6_(ptr noundef nonnull align 8 dereferenceable(48) %21, ptr noundef nonnull align 4 dereferenceable(8) %526)
          to label %528 unwind label %630

528:                                              ; preds = %521
  %529 = getelementptr inbounds %"struct.std::_Rb_tree_iterator.38", ptr %60, i32 0, i32 0
  store ptr %527, ptr %529, align 8
  %530 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKN3Raz6VectorIfLm2EEEmEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %60) #8
  %531 = getelementptr inbounds %"struct.std::pair.47", ptr %530, i32 0, i32 1
  %532 = load i64, ptr %531, align 8, !tbaa !23
  store i64 %532, ptr %55, align 8, !tbaa !13
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #8
  %533 = getelementptr inbounds %"struct.Raz::Vertex", ptr %52, i32 0, i32 2
  %534 = invoke ptr @_ZNSt3mapIN3Raz6VectorIfLm3EEEmSt4lessIS2_ESaISt4pairIKS2_mEEE4findERS6_(ptr noundef nonnull align 8 dereferenceable(48) %22, ptr noundef nonnull align 4 dereferenceable(12) %533)
          to label %535 unwind label %634

535:                                              ; preds = %528
  %536 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %61, i32 0, i32 0
  store ptr %534, ptr %536, align 8
  %537 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKN3Raz6VectorIfLm3EEEmEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %61) #8
  %538 = getelementptr inbounds %"struct.std::pair.45", ptr %537, i32 0, i32 1
  %539 = load i64, ptr %538, align 8, !tbaa !19
  store i64 %539, ptr %57, align 8, !tbaa !13
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #8
  %540 = load i64, ptr %53, align 8, !tbaa !13
  %541 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %11, i64 noundef %540)
          to label %542 unwind label %622

542:                                              ; preds = %535
  %543 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %541, i8 noundef signext 47)
          to label %544 unwind label %622

544:                                              ; preds = %542
  %545 = load i64, ptr %55, align 8, !tbaa !13
  %546 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %543, i64 noundef %545)
          to label %547 unwind label %622

547:                                              ; preds = %544
  %548 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %546, i8 noundef signext 47)
          to label %549 unwind label %622

549:                                              ; preds = %547
  %550 = load i64, ptr %57, align 8, !tbaa !13
  %551 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %548, i64 noundef %550)
          to label %552 unwind label %622

552:                                              ; preds = %549
  %553 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %551, i8 noundef signext 32)
          to label %554 unwind label %622

554:                                              ; preds = %552
  %555 = load ptr, ptr %50, align 8, !tbaa !5
  %556 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3Raz7Submesh11getVerticesEv(ptr noundef nonnull align 8 dereferenceable(104) %555)
          to label %557 unwind label %622

557:                                              ; preds = %554
  %558 = load ptr, ptr %50, align 8, !tbaa !5
  %559 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3Raz7Submesh18getTriangleIndicesEv(ptr noundef nonnull align 8 dereferenceable(104) %558)
          to label %560 unwind label %622

560:                                              ; preds = %557
  %561 = load i64, ptr %51, align 8, !tbaa !13
  %562 = add i64 %561, 2
  %563 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %559, i64 noundef %562) #8
  %564 = load i32, ptr %563, align 4, !tbaa !15
  %565 = zext i32 %564 to i64
  %566 = call noundef nonnull align 4 dereferenceable(44) ptr @_ZNKSt6vectorIN3Raz6VertexESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %556, i64 noundef %565) #8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %52, ptr align 4 %566, i64 44, i1 false), !tbaa.struct !17
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #8
  %567 = getelementptr inbounds %"struct.Raz::Vertex", ptr %52, i32 0, i32 0
  %568 = invoke ptr @_ZNSt3mapIN3Raz6VectorIfLm3EEEmSt4lessIS2_ESaISt4pairIKS2_mEEE4findERS6_(ptr noundef nonnull align 8 dereferenceable(48) %20, ptr noundef nonnull align 4 dereferenceable(12) %567)
          to label %569 unwind label %638

569:                                              ; preds = %560
  %570 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %62, i32 0, i32 0
  store ptr %568, ptr %570, align 8
  %571 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKN3Raz6VectorIfLm3EEEmEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %62) #8
  %572 = getelementptr inbounds %"struct.std::pair.45", ptr %571, i32 0, i32 1
  %573 = load i64, ptr %572, align 8, !tbaa !19
  store i64 %573, ptr %53, align 8, !tbaa !13
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #8
  %574 = getelementptr inbounds %"struct.Raz::Vertex", ptr %52, i32 0, i32 1
  %575 = invoke ptr @_ZNSt3mapIN3Raz6VectorIfLm2EEEmSt4lessIS2_ESaISt4pairIKS2_mEEE4findERS6_(ptr noundef nonnull align 8 dereferenceable(48) %21, ptr noundef nonnull align 4 dereferenceable(8) %574)
          to label %576 unwind label %642

576:                                              ; preds = %569
  %577 = getelementptr inbounds %"struct.std::_Rb_tree_iterator.38", ptr %63, i32 0, i32 0
  store ptr %575, ptr %577, align 8
  %578 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKN3Raz6VectorIfLm2EEEmEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %63) #8
  %579 = getelementptr inbounds %"struct.std::pair.47", ptr %578, i32 0, i32 1
  %580 = load i64, ptr %579, align 8, !tbaa !23
  store i64 %580, ptr %55, align 8, !tbaa !13
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #8
  %581 = getelementptr inbounds %"struct.Raz::Vertex", ptr %52, i32 0, i32 2
  %582 = invoke ptr @_ZNSt3mapIN3Raz6VectorIfLm3EEEmSt4lessIS2_ESaISt4pairIKS2_mEEE4findERS6_(ptr noundef nonnull align 8 dereferenceable(48) %22, ptr noundef nonnull align 4 dereferenceable(12) %581)
          to label %583 unwind label %646

583:                                              ; preds = %576
  %584 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %64, i32 0, i32 0
  store ptr %582, ptr %584, align 8
  %585 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKN3Raz6VectorIfLm3EEEmEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %64) #8
  %586 = getelementptr inbounds %"struct.std::pair.45", ptr %585, i32 0, i32 1
  %587 = load i64, ptr %586, align 8, !tbaa !19
  store i64 %587, ptr %57, align 8, !tbaa !13
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #8
  %588 = load i64, ptr %53, align 8, !tbaa !13
  %589 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %11, i64 noundef %588)
          to label %590 unwind label %622

590:                                              ; preds = %583
  %591 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %589, i8 noundef signext 47)
          to label %592 unwind label %622

592:                                              ; preds = %590
  %593 = load i64, ptr %55, align 8, !tbaa !13
  %594 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %591, i64 noundef %593)
          to label %595 unwind label %622

595:                                              ; preds = %592
  %596 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %594, i8 noundef signext 47)
          to label %597 unwind label %622

597:                                              ; preds = %595
  %598 = load i64, ptr %57, align 8, !tbaa !13
  %599 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %596, i64 noundef %598)
          to label %600 unwind label %622

600:                                              ; preds = %597
  %601 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %599, i8 noundef signext 10)
          to label %602 unwind label %622

602:                                              ; preds = %600
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #8
  call void @llvm.lifetime.end.p0(i64 44, ptr %52) #8
  br label %603

603:                                              ; preds = %602
  %604 = load i64, ptr %51, align 8, !tbaa !13
  %605 = add i64 %604, 3
  store i64 %605, ptr %51, align 8, !tbaa !13
  br label %446, !llvm.loop !27

606:                                              ; preds = %462, %459
  %607 = landingpad { ptr, i32 }
          cleanup
  %608 = extractvalue { ptr, i32 } %607, 0
  store ptr %608, ptr %9, align 8
  %609 = extractvalue { ptr, i32 } %607, 1
  store i32 %609, ptr %10, align 4
  br label %653

610:                                              ; preds = %465
  %611 = landingpad { ptr, i32 }
          cleanup
  %612 = extractvalue { ptr, i32 } %611, 0
  store ptr %612, ptr %9, align 8
  %613 = extractvalue { ptr, i32 } %611, 1
  store i32 %613, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #8
  br label %652

614:                                              ; preds = %473
  %615 = landingpad { ptr, i32 }
          cleanup
  %616 = extractvalue { ptr, i32 } %615, 0
  store ptr %616, ptr %9, align 8
  %617 = extractvalue { ptr, i32 } %615, 1
  store i32 %617, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #8
  br label %651

618:                                              ; preds = %480
  %619 = landingpad { ptr, i32 }
          cleanup
  %620 = extractvalue { ptr, i32 } %619, 0
  store ptr %620, ptr %9, align 8
  %621 = extractvalue { ptr, i32 } %619, 1
  store i32 %621, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #8
  br label %650

622:                                              ; preds = %600, %597, %595, %592, %590, %583, %557, %554, %552, %549, %547, %544, %542, %535, %509, %506, %504, %501, %499, %496, %494, %487
  %623 = landingpad { ptr, i32 }
          cleanup
  %624 = extractvalue { ptr, i32 } %623, 0
  store ptr %624, ptr %9, align 8
  %625 = extractvalue { ptr, i32 } %623, 1
  store i32 %625, ptr %10, align 4
  br label %650

626:                                              ; preds = %512
  %627 = landingpad { ptr, i32 }
          cleanup
  %628 = extractvalue { ptr, i32 } %627, 0
  store ptr %628, ptr %9, align 8
  %629 = extractvalue { ptr, i32 } %627, 1
  store i32 %629, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #8
  br label %650

630:                                              ; preds = %521
  %631 = landingpad { ptr, i32 }
          cleanup
  %632 = extractvalue { ptr, i32 } %631, 0
  store ptr %632, ptr %9, align 8
  %633 = extractvalue { ptr, i32 } %631, 1
  store i32 %633, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #8
  br label %650

634:                                              ; preds = %528
  %635 = landingpad { ptr, i32 }
          cleanup
  %636 = extractvalue { ptr, i32 } %635, 0
  store ptr %636, ptr %9, align 8
  %637 = extractvalue { ptr, i32 } %635, 1
  store i32 %637, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #8
  br label %650

638:                                              ; preds = %560
  %639 = landingpad { ptr, i32 }
          cleanup
  %640 = extractvalue { ptr, i32 } %639, 0
  store ptr %640, ptr %9, align 8
  %641 = extractvalue { ptr, i32 } %639, 1
  store i32 %641, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #8
  br label %650

642:                                              ; preds = %569
  %643 = landingpad { ptr, i32 }
          cleanup
  %644 = extractvalue { ptr, i32 } %643, 0
  store ptr %644, ptr %9, align 8
  %645 = extractvalue { ptr, i32 } %643, 1
  store i32 %645, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #8
  br label %650

646:                                              ; preds = %576
  %647 = landingpad { ptr, i32 }
          cleanup
  %648 = extractvalue { ptr, i32 } %647, 0
  store ptr %648, ptr %9, align 8
  %649 = extractvalue { ptr, i32 } %647, 1
  store i32 %649, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #8
  br label %650

650:                                              ; preds = %646, %642, %638, %634, %630, %626, %622, %618
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #8
  br label %651

651:                                              ; preds = %650, %614
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #8
  br label %652

652:                                              ; preds = %651, %610
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #8
  br label %653

653:                                              ; preds = %652, %606
  call void @llvm.lifetime.end.p0(i64 44, ptr %52) #8
  br label %654

654:                                              ; preds = %653, %453
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #8
  br label %659

655:                                              ; preds = %452
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #8
  br label %656

656:                                              ; preds = %655
  %657 = load i64, ptr %49, align 8, !tbaa !13
  %658 = add i64 %657, 1
  store i64 %658, ptr %49, align 8, !tbaa !13
  br label %378, !llvm.loop !29

659:                                              ; preds = %654, %441
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #8
  br label %660

660:                                              ; preds = %659, %395
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #8
  br label %667

661:                                              ; preds = %385
  invoke void @_ZN3Raz6Logger5debugEPKc(ptr noundef @.str.14)
          to label %662 unwind label %663

662:                                              ; preds = %661
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %47) #8
  call void @_ZNSt3mapIN3Raz6VectorIfLm3EEEmSt4lessIS2_ESaISt4pairIKS2_mEEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %22) #8
  call void @llvm.lifetime.end.p0(i64 48, ptr %22) #8
  call void @_ZNSt3mapIN3Raz6VectorIfLm2EEEmSt4lessIS2_ESaISt4pairIKS2_mEEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %21) #8
  call void @llvm.lifetime.end.p0(i64 48, ptr %21) #8
  call void @_ZNSt3mapIN3Raz6VectorIfLm3EEEmSt4lessIS2_ESaISt4pairIKS2_mEEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %20) #8
  call void @llvm.lifetime.end.p0(i64 48, ptr %20) #8
  call void @_ZNSt14basic_ofstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(248) %11) #8
  call void @llvm.lifetime.end.p0(i64 512, ptr %11) #8
  ret void

663:                                              ; preds = %661
  %664 = landingpad { ptr, i32 }
          cleanup
  %665 = extractvalue { ptr, i32 } %664, 0
  store ptr %665, ptr %9, align 8
  %666 = extractvalue { ptr, i32 } %664, 1
  store i32 %666, ptr %10, align 4
  br label %667

667:                                              ; preds = %663, %660
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #8
  br label %668

668:                                              ; preds = %667, %394
  call void @llvm.lifetime.end.p0(i64 32, ptr %47) #8
  br label %669

669:                                              ; preds = %668, %371
  call void @_ZNSt3mapIN3Raz6VectorIfLm3EEEmSt4lessIS2_ESaISt4pairIKS2_mEEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %22) #8
  call void @llvm.lifetime.end.p0(i64 48, ptr %22) #8
  call void @_ZNSt3mapIN3Raz6VectorIfLm2EEEmSt4lessIS2_ESaISt4pairIKS2_mEEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %21) #8
  call void @llvm.lifetime.end.p0(i64 48, ptr %21) #8
  call void @_ZNSt3mapIN3Raz6VectorIfLm3EEEmSt4lessIS2_ESaISt4pairIKS2_mEEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %20) #8
  call void @llvm.lifetime.end.p0(i64 48, ptr %20) #8
  br label %670

670:                                              ; preds = %669, %168, %111, %91
  call void @_ZNSt14basic_ofstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(248) %11) #8
  call void @llvm.lifetime.end.p0(i64 512, ptr %11) #8
  br label %671

671:                                              ; preds = %670, %90
  %672 = load ptr, ptr %9, align 8
  %673 = load i32, ptr %10, align 4
  %674 = insertvalue { ptr, i32 } poison, ptr %672, 0
  %675 = insertvalue { ptr, i32 } %674, i32 %673, 1
  resume { ptr, i32 } %675

676:                                              ; preds = %81
  unreachable
}

declare void @_ZN3Raz6Logger5debugERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32)) #1

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) #3

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @_ZN3RazplB5cxx11EPKcRKNS_8FilePathE(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef, ptr noundef nonnull align 8 dereferenceable(32)) #3

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: mustprogress uwtable
declare void @_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode(ptr noundef nonnull align 8 dereferenceable(248), ptr noundef, i32 noundef) unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare noundef zeroext i1 @_ZNKSt9basic_iosIcSt11char_traitsIcEEntEv(ptr noundef nonnull align 8 dereferenceable(264)) #0 align 2

declare ptr @__cxa_allocate_exception(i64)

declare void @_ZNSt16invalid_argumentC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #1

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

declare void @__cxa_throw(ptr, ptr, ptr)

declare void @__cxa_free_exception(ptr)

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #3

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK3Raz8FilePath15recoverFileNameEb(ptr dead_on_unwind noalias writable sret(%"class.Raz::FilePath") align 8, ptr noundef nonnull align 8 dereferenceable(32), i1 noundef zeroext) #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK3Raz8FilePathplB5cxx11EPKc(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) #0 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK3Raz8FilePath17recoverPathToFileEv(ptr dead_on_unwind noalias writable sret(%"class.Raz::FilePath") align 8, ptr noundef nonnull align 8 dereferenceable(32)) #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK3Raz8FilePathplERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) #0 align 2

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN3RazlsERSoRKNS_8FilePathE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32)) #1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8), i8 noundef signext) #3

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32)) #3

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"vtable pointer", !8, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"float", !7, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"long", !7, i64 0}
!15 = !{!16, !16, i64 0}
!16 = !{!"int", !7, i64 0}
!17 = !{i64 0, i64 12, !18, i64 12, i64 8, !18, i64 20, i64 12, !18, i64 32, i64 12, !18}
!18 = !{!7, !7, i64 0}
!19 = !{!20, !14, i64 16}
!20 = !{!"_ZTSSt4pairIKN3Raz6VectorIfLm3EEEmE", !21, i64 0, !14, i64 16}
!21 = !{!"_ZTSN3Raz6VectorIfLm3EEE", !22, i64 0}
!22 = !{!"_ZTSSt5arrayIfLm3EE", !7, i64 0}
!23 = !{!24, !14, i64 8}
!24 = !{!"_ZTSSt4pairIKN3Raz6VectorIfLm2EEEmE", !25, i64 0, !14, i64 8}
!25 = !{!"_ZTSN3Raz6VectorIfLm2EEE", !26, i64 0}
!26 = !{!"_ZTSSt5arrayIfLm2EE", !7, i64 0}
!27 = distinct !{!27, !28}
!28 = !{!"llvm.loop.mustprogress"}
!29 = distinct !{!29, !28}


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

%"class.std::__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::basic_ofstream" = type { %"class.std::basic_ostream.base", %"class.std::basic_filebuf", %"class.std::basic_ios" }
%"class.std::basic_ostream.base" = type { ptr }
%"class.std::basic_filebuf" = type { %"class.std::basic_streambuf", %union.pthread_mutex_t, %"class.std::__basic_file", i32, %struct.__mbstate_t, %struct.__mbstate_t, %struct.__mbstate_t, ptr, i64, i8, i8, i8, i8, ptr, ptr, i8, ptr, ptr, i64, ptr, ptr }
%"class.std::basic_streambuf" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, %"class.std::locale" }
%"class.std::locale" = type { ptr }
%union.pthread_mutex_t = type { %struct.__pthread_mutex_s }
%struct.__pthread_mutex_s = type { i32, i32, i32, i32, i32, i16, i16, %struct.__pthread_internal_list }
%struct.__pthread_internal_list = type { ptr, ptr }
%"class.std::__basic_file" = type <{ ptr, i8, [7 x i8] }>
%struct.__mbstate_t = type { i32, %union.anon.0 }
%union.anon.0 = type { i32 }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.Raz::FilePath" = type { %"class.std::__cxx11::basic_string" }
%"class.std::map" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<Raz::Vector<float, 3>, std::pair<const Raz::Vector<float, 3>, unsigned long>, std::_Select1st<std::pair<const Raz::Vector<float, 3>, unsigned long>>, std::less<Raz::Vector<float, 3>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<Raz::Vector<float, 3>, std::pair<const Raz::Vector<float, 3>, unsigned long>, std::_Select1st<std::pair<const Raz::Vector<float, 3>, unsigned long>>, std::less<Raz::Vector<float, 3>>>::_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.13" = type { %"class.std::_Rb_tree.14" }
%"class.std::_Rb_tree.14" = type { %"struct.std::_Rb_tree<Raz::Vector<float, 2>, std::pair<const Raz::Vector<float, 2>, unsigned long>, std::_Select1st<std::pair<const Raz::Vector<float, 2>, unsigned long>>, std::less<Raz::Vector<float, 2>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<Raz::Vector<float, 2>, std::pair<const Raz::Vector<float, 2>, unsigned long>, std::_Select1st<std::pair<const Raz::Vector<float, 2>, unsigned long>>, std::less<Raz::Vector<float, 2>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.34" = type { ptr }
%"struct.std::_Rb_tree_const_iterator" = type { ptr }
%"struct.std::_Rb_tree_iterator" = type { ptr }
%"struct.std::_Rb_tree_const_iterator.37" = type { ptr }
%"struct.std::_Rb_tree_iterator.38" = type { ptr }
%"struct.Raz::Vertex" = type { %"class.Raz::Vector", %"class.Raz::Vector.35", %"class.Raz::Vector", %"class.Raz::Vector" }
%"class.Raz::Vector.35" = type { %"struct.std::array.36" }
%"struct.std::array.36" = type { [2 x float] }
%"class.Raz::Vector" = type { %"struct.std::array" }
%"struct.std::array" = type { [3 x float] }

@.str = external hidden unnamed_addr constant [29 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [27 x i8], align 1
@_ZTISt16invalid_argument = external constant ptr
@.str.4 = external hidden unnamed_addr constant [64 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [25 x i8], align 1

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN3Raz9ObjFormat4saveERKNS_8FilePathERKNS_4MeshEPKNS_12MeshRendererE(ptr noundef nonnull align 8 dereferenceable(32) %0, ptr noundef nonnull align 8 dereferenceable(64) %1, ptr noundef %2) local_unnamed_addr #0 personality ptr @__gxx_personality_v0 {
  %4 = alloca %"class.std::__cxx11::basic_string", align 8
  %5 = alloca %"class.std::__cxx11::basic_string", align 8
  %6 = alloca %"class.std::basic_ofstream", align 8
  %7 = alloca %"class.std::__cxx11::basic_string", align 8
  %8 = alloca %"class.std::__cxx11::basic_string", align 8
  %9 = alloca %"class.std::__cxx11::basic_string", align 8
  %10 = alloca %"class.Raz::FilePath", align 8
  %11 = alloca %"class.Raz::FilePath", align 8
  %12 = alloca %"class.std::__cxx11::basic_string", align 8
  %13 = alloca %"class.Raz::FilePath", align 8
  %14 = alloca %"class.std::map", align 8
  %15 = alloca %"class.std::map.13", align 8
  %16 = alloca %"class.std::map", align 8
  %17 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %18 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %19 = alloca %"class.__gnu_cxx::__normal_iterator.34", align 8
  %20 = alloca %"class.__gnu_cxx::__normal_iterator.34", align 8
  %21 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %22 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %23 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %24 = alloca i64, align 8
  %25 = alloca %"struct.std::_Rb_tree_const_iterator.37", align 8
  %26 = alloca %"struct.std::_Rb_tree_iterator.38", align 8
  %27 = alloca %"struct.std::_Rb_tree_const_iterator.37", align 8
  %28 = alloca i64, align 8
  %29 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %30 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %31 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %32 = alloca i64, align 8
  %33 = alloca %"class.std::__cxx11::basic_string", align 8
  %34 = alloca %"class.Raz::FilePath", align 8
  %35 = alloca %"struct.Raz::Vertex", align 4
  %36 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %37 = alloca %"struct.std::_Rb_tree_iterator.38", align 8
  %38 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %39 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %40 = alloca %"struct.std::_Rb_tree_iterator.38", align 8
  %41 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %42 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %43 = alloca %"struct.std::_Rb_tree_iterator.38", align 8
  %44 = alloca %"struct.std::_Rb_tree_iterator", align 8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %4) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) #8
  call void @_ZN3RazplB5cxx11EPKcRKNS_8FilePathE(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %5, ptr noundef nonnull @.str, ptr noundef nonnull align 8 dereferenceable(32) %0)
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %4, ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull @.str.1)
          to label %45 unwind label %59

45:                                               ; preds = %3
  invoke void @_ZN3Raz6Logger5debugERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %4)
          to label %46 unwind label %61

46:                                               ; preds = %45
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #8
  call void @llvm.lifetime.start.p0(i64 512, ptr nonnull %6) #8
  %47 = call noundef ptr @_ZNK3Raz8FilePathcvPKcEv(ptr noundef nonnull align 8 dereferenceable(32) %0) #8
  call void @_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode(ptr noundef nonnull align 8 dereferenceable(248) %6, ptr noundef %47, i32 noundef 4)
  %48 = load ptr, ptr %6, align 8, !tbaa !5
  %49 = getelementptr i8, ptr %48, i64 -24
  %50 = load i64, ptr %49, align 8
  %51 = getelementptr inbounds i8, ptr %6, i64 %50
  %52 = invoke noundef zeroext i1 @_ZNKSt9basic_iosIcSt11char_traitsIcEEntEv(ptr noundef nonnull align 8 dereferenceable(264) %51)
          to label %53 unwind label %64

53:                                               ; preds = %46
  br i1 %52, label %54, label %71

54:                                               ; preds = %53
  %55 = call ptr @__cxa_allocate_exception(i64 16) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %8) #8
  invoke void @_ZN3RazplB5cxx11EPKcRKNS_8FilePathE(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %8, ptr noundef nonnull @.str.2, ptr noundef nonnull align 8 dereferenceable(32) %0)
          to label %56 unwind label %.thread

56:                                               ; preds = %54
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %7, ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull @.str.3)
          to label %57 unwind label %.thread123

57:                                               ; preds = %56
  invoke void @_ZNSt16invalid_argumentC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(16) %55, ptr noundef nonnull align 8 dereferenceable(32) %7)
          to label %58 unwind label %68

58:                                               ; preds = %57
  invoke void @__cxa_throw(ptr nonnull %55, ptr nonnull @_ZTISt16invalid_argument, ptr nonnull @_ZNSt16invalid_argumentD1Ev) #9
          to label %410 unwind label %68

59:                                               ; preds = %3
  %60 = landingpad { ptr, i32 }
          cleanup
  br label %63

61:                                               ; preds = %45
  %62 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %4) #8
  br label %63

63:                                               ; preds = %61, %59
  %.pn = phi { ptr, i32 } [ %62, %61 ], [ %60, %59 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %4) #8
  br label %409

64:                                               ; preds = %71, %46
  %65 = landingpad { ptr, i32 }
          cleanup
  br label %408

.thread:                                          ; preds = %54
  %66 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #8
  br label %70

.thread123:                                       ; preds = %56
  %67 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #8
  br label %70

68:                                               ; preds = %57, %58
  %.088 = phi i1 [ false, %58 ], [ true, %57 ]
  %69 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #8
  br i1 %.088, label %70, label %408

70:                                               ; preds = %.thread123, %.thread, %68
  %.pn115.pn122 = phi { ptr, i32 } [ %66, %.thread ], [ %69, %68 ], [ %67, %.thread123 ]
  call void @__cxa_free_exception(ptr %55) #8
  br label %408

71:                                               ; preds = %53
  %72 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull @.str.4)
          to label %73 unwind label %64

73:                                               ; preds = %71
  %.not = icmp eq ptr %2, null
  br i1 %.not, label %108, label %74

74:                                               ; preds = %73
  %75 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3Raz12MeshRenderer12getMaterialsEv(ptr noundef nonnull align 8 dereferenceable(64) %2)
  %76 = call noundef zeroext i1 @_ZNKSt6vectorIN3Raz8MaterialESaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %75) #8
  br i1 %76, label %108, label %77

77:                                               ; preds = %74
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %9) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %10) #8
  invoke void @_ZNK3Raz8FilePath15recoverFileNameEb(ptr dead_on_unwind nonnull writable sret(%"class.Raz::FilePath") align 8 %10, ptr noundef nonnull align 8 dereferenceable(32) %0, i1 noundef zeroext false)
          to label %78 unwind label %91

78:                                               ; preds = %77
  invoke void @_ZNK3Raz8FilePathplB5cxx11EPKc(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %9, ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull @.str.5)
          to label %79 unwind label %93

79:                                               ; preds = %78
  call void @_ZN3Raz8FilePathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %11) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %12) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %13) #8
  invoke void @_ZNK3Raz8FilePath17recoverPathToFileEv(ptr dead_on_unwind nonnull writable sret(%"class.Raz::FilePath") align 8 %13, ptr noundef nonnull align 8 dereferenceable(32) %0)
          to label %80 unwind label %96

80:                                               ; preds = %79
  invoke void @_ZNK3Raz8FilePathplERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %12, ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull align 8 dereferenceable(32) %9)
          to label %81 unwind label %98

81:                                               ; preds = %80
  invoke void @_ZN3Raz8FilePathC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull align 8 dereferenceable(32) %12)
          to label %82 unwind label %100

82:                                               ; preds = %81
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #8
  call void @_ZN3Raz8FilePathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #8
  %83 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull @.str.6)
          to label %84 unwind label %104

84:                                               ; preds = %82
  %85 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3RazlsERSoRKNS_8FilePathE(ptr noundef nonnull align 8 dereferenceable(8) %83, ptr noundef nonnull align 8 dereferenceable(32) %11)
          to label %86 unwind label %104

86:                                               ; preds = %84
  %87 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %85, ptr noundef nonnull @.str.7)
          to label %88 unwind label %104

88:                                               ; preds = %86
  %89 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3Raz12MeshRenderer12getMaterialsEv(ptr noundef nonnull align 8 dereferenceable(64) %2)
  invoke void @_ZN3Raz9ObjFormat12_GLOBAL__N_17saveMtlERKNS_8FilePathERKSt6vectorINS_8MaterialESaIS6_EE(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull align 8 dereferenceable(24) %89)
          to label %90 unwind label %104

90:                                               ; preds = %88
  call void @_ZN3Raz8FilePathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #8
  br label %108

91:                                               ; preds = %77
  %92 = landingpad { ptr, i32 }
          cleanup
  br label %95

93:                                               ; preds = %78
  %94 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3Raz8FilePathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #8
  br label %95

95:                                               ; preds = %93, %91
  %.pn94 = phi { ptr, i32 } [ %94, %93 ], [ %92, %91 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #8
  br label %107

96:                                               ; preds = %79
  %97 = landingpad { ptr, i32 }
          cleanup
  br label %103

98:                                               ; preds = %80
  %99 = landingpad { ptr, i32 }
          cleanup
  br label %102

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

102:                                              ; preds = %100, %98
  %.pn96 = phi { ptr, i32 } [ %101, %100 ], [ %99, %98 ]
  call void @_ZN3Raz8FilePathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #8
  br label %103

103:                                              ; preds = %102, %96
  %.pn96.pn = phi { ptr, i32 } [ %.pn96, %102 ], [ %97, %96 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #8
  br label %106

104:                                              ; preds = %88, %86, %84, %82
  %105 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3Raz8FilePathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #8
  br label %106

106:                                              ; preds = %104, %103
  %.pn99 = phi { ptr, i32 } [ %105, %104 ], [ %.pn96.pn, %103 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #8
  br label %107

107:                                              ; preds = %106, %95
  %.pn99.pn = phi { ptr, i32 } [ %.pn99, %106 ], [ %.pn94, %95 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #8
  br label %408

108:                                              ; preds = %90, %74, %73
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %14) #8
  call void @_ZNSt3mapIN3Raz6VectorIfLm3EEEmSt4lessIS2_ESaISt4pairIKS2_mEEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %14) #8
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %15) #8
  call void @_ZNSt3mapIN3Raz6VectorIfLm2EEEmSt4lessIS2_ESaISt4pairIKS2_mEEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %15) #8
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %16) #8
  call void @_ZNSt3mapIN3Raz6VectorIfLm3EEEmSt4lessIS2_ESaISt4pairIKS2_mEEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %16) #8
  %109 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3Raz4Mesh12getSubmeshesEv(ptr noundef nonnull align 8 dereferenceable(64) %1)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #8
  %110 = call ptr @_ZNKSt6vectorIN3Raz7SubmeshESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %109) #8
  store ptr %110, ptr %17, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #8
  %111 = call ptr @_ZNKSt6vectorIN3Raz7SubmeshESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %109) #8
  store ptr %111, ptr %18, align 8
  %112 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3Raz7SubmeshESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef nonnull align 8 dereferenceable(8) %18) #8
  br i1 %112, label %.lr.ph127, label %._crit_edge128

._crit_edge128:                                   ; preds = %._crit_edge, %108
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %33) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %34) #8
  invoke void @_ZNK3Raz8FilePath15recoverFileNameEb(ptr dead_on_unwind nonnull writable sret(%"class.Raz::FilePath") align 8 %34, ptr noundef nonnull align 8 dereferenceable(32) %0, i1 noundef zeroext false)
          to label %224 unwind label %231

.lr.ph127:                                        ; preds = %108, %._crit_edge
  %113 = call noundef nonnull align 8 dereferenceable(104) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3Raz7SubmeshESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %17) #8
  %114 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3Raz7Submesh11getVerticesEv(ptr noundef nonnull align 8 dereferenceable(104) %113)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #8
  %115 = call ptr @_ZNKSt6vectorIN3Raz6VertexESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %114) #8
  store ptr %115, ptr %19, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #8
  %116 = call ptr @_ZNKSt6vectorIN3Raz6VertexESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %114) #8
  store ptr %116, ptr %20, align 8
  %117 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3Raz6VertexESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %19, ptr noundef nonnull align 8 dereferenceable(8) %20) #8
  br i1 %117, label %.lr.ph, label %._crit_edge

._crit_edge:                                      ; preds = %220, %.lr.ph127
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #8
  %118 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3Raz7SubmeshESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %17) #8
  %119 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3Raz7SubmeshESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef nonnull align 8 dereferenceable(8) %18) #8
  br i1 %119, label %.lr.ph127, label %._crit_edge128

.lr.ph:                                           ; preds = %.lr.ph127, %220
  %120 = call noundef nonnull align 4 dereferenceable(44) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3Raz6VertexESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %19) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #8
  %121 = invoke ptr @_ZNSt3mapIN3Raz6VectorIfLm3EEEmSt4lessIS2_ESaISt4pairIKS2_mEEE4findERS6_(ptr noundef nonnull align 8 dereferenceable(48) %14, ptr noundef nonnull align 4 dereferenceable(12) %120)
          to label %122 unwind label %150

122:                                              ; preds = %.lr.ph
  store ptr %121, ptr %22, align 8
  call void @_ZNSt23_Rb_tree_const_iteratorISt4pairIKN3Raz6VectorIfLm3EEEmEEC2ERKSt17_Rb_tree_iteratorIS5_E(ptr noundef nonnull align 8 dereferenceable(8) %21, ptr noundef nonnull align 8 dereferenceable(8) %22) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #8
  %123 = call ptr @_ZNKSt3mapIN3Raz6VectorIfLm3EEEmSt4lessIS2_ESaISt4pairIKS2_mEEE4cendEv(ptr noundef nonnull align 8 dereferenceable(48) %14) #8
  store ptr %123, ptr %23, align 8
  %124 = call noundef zeroext i1 @_ZSteqRKSt23_Rb_tree_const_iteratorISt4pairIKN3Raz6VectorIfLm3EEEmEES8_(ptr noundef nonnull align 8 dereferenceable(8) %21, ptr noundef nonnull align 8 dereferenceable(8) %23) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #8
  br i1 %124, label %125, label %156

125:                                              ; preds = %122
  %126 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull @.str.8)
          to label %127 unwind label %152

127:                                              ; preds = %125
  %128 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3Raz6VectorIfLm3EE1xEv(ptr noundef nonnull align 4 dereferenceable(12) %120) #8
  %129 = load float, ptr %128, align 4, !tbaa !8
  %130 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEf(ptr noundef nonnull align 8 dereferenceable(8) %126, float noundef %129)
          to label %131 unwind label %152

131:                                              ; preds = %127
  %132 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %130, i8 noundef signext 32)
          to label %133 unwind label %152

133:                                              ; preds = %131
  %134 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3Raz6VectorIfLm3EE1yEv(ptr noundef nonnull align 4 dereferenceable(12) %120) #8
  %135 = load float, ptr %134, align 4, !tbaa !8
  %136 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEf(ptr noundef nonnull align 8 dereferenceable(8) %132, float noundef %135)
          to label %137 unwind label %152

137:                                              ; preds = %133
  %138 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %136, i8 noundef signext 32)
          to label %139 unwind label %152

139:                                              ; preds = %137
  %140 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3Raz6VectorIfLm3EE1zEv(ptr noundef nonnull align 4 dereferenceable(12) %120) #8
  %141 = load float, ptr %140, align 4, !tbaa !8
  %142 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEf(ptr noundef nonnull align 8 dereferenceable(8) %138, float noundef %141)
          to label %143 unwind label %152

143:                                              ; preds = %139
  %144 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %142, i8 noundef signext 10)
          to label %145 unwind label %152

145:                                              ; preds = %143
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #8
  %146 = call noundef i64 @_ZNKSt3mapIN3Raz6VectorIfLm3EEEmSt4lessIS2_ESaISt4pairIKS2_mEEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(48) %14) #8
  %147 = add i64 %146, 1
  store i64 %147, ptr %24, align 8, !tbaa !11
  %148 = invoke { ptr, i8 } @_ZNSt3mapIN3Raz6VectorIfLm3EEEmSt4lessIS2_ESaISt4pairIKS2_mEEE7emplaceIJRS6_mEEES5_ISt17_Rb_tree_iteratorIS7_EbEDpOT_(ptr noundef nonnull align 8 dereferenceable(48) %14, ptr noundef nonnull align 4 dereferenceable(12) %120, ptr noundef nonnull align 8 dereferenceable(8) %24)
          to label %149 unwind label %154

149:                                              ; preds = %145
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #8
  br label %156

150:                                              ; preds = %.lr.ph
  %151 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #8
  br label %223

152:                                              ; preds = %209, %205, %203, %199, %197, %193, %191, %174, %170, %168, %164, %162, %143, %139, %137, %133, %131, %127, %125
  %153 = landingpad { ptr, i32 }
          cleanup
  br label %223

154:                                              ; preds = %145
  %155 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #8
  br label %223

156:                                              ; preds = %149, %122
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #8
  %157 = getelementptr inbounds i8, ptr %120, i64 12
  %158 = invoke ptr @_ZNSt3mapIN3Raz6VectorIfLm2EEEmSt4lessIS2_ESaISt4pairIKS2_mEEE4findERS6_(ptr noundef nonnull align 8 dereferenceable(48) %15, ptr noundef nonnull align 4 dereferenceable(8) %157)
          to label %159 unwind label %181

159:                                              ; preds = %156
  store ptr %158, ptr %26, align 8
  call void @_ZNSt23_Rb_tree_const_iteratorISt4pairIKN3Raz6VectorIfLm2EEEmEEC2ERKSt17_Rb_tree_iteratorIS5_E(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 8 dereferenceable(8) %26) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #8
  %160 = call ptr @_ZNKSt3mapIN3Raz6VectorIfLm2EEEmSt4lessIS2_ESaISt4pairIKS2_mEEE4cendEv(ptr noundef nonnull align 8 dereferenceable(48) %15) #8
  store ptr %160, ptr %27, align 8
  %161 = call noundef zeroext i1 @_ZSteqRKSt23_Rb_tree_const_iteratorISt4pairIKN3Raz6VectorIfLm2EEEmEES8_(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 8 dereferenceable(8) %27) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #8
  br i1 %161, label %162, label %185

162:                                              ; preds = %159
  %163 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull @.str.9)
          to label %164 unwind label %152

164:                                              ; preds = %162
  %165 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3Raz6VectorIfLm2EE1xEv(ptr noundef nonnull align 4 dereferenceable(8) %157) #8
  %166 = load float, ptr %165, align 4, !tbaa !8
  %167 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEf(ptr noundef nonnull align 8 dereferenceable(8) %163, float noundef %166)
          to label %168 unwind label %152

168:                                              ; preds = %164
  %169 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %167, i8 noundef signext 32)
          to label %170 unwind label %152

170:                                              ; preds = %168
  %171 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3Raz6VectorIfLm2EE1yEv(ptr noundef nonnull align 4 dereferenceable(8) %157) #8
  %172 = load float, ptr %171, align 4, !tbaa !8
  %173 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEf(ptr noundef nonnull align 8 dereferenceable(8) %169, float noundef %172)
          to label %174 unwind label %152

174:                                              ; preds = %170
  %175 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %173, i8 noundef signext 10)
          to label %176 unwind label %152

176:                                              ; preds = %174
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #8
  %177 = call noundef i64 @_ZNKSt3mapIN3Raz6VectorIfLm2EEEmSt4lessIS2_ESaISt4pairIKS2_mEEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(48) %15) #8
  %178 = add i64 %177, 1
  store i64 %178, ptr %28, align 8, !tbaa !11
  %179 = invoke { ptr, i8 } @_ZNSt3mapIN3Raz6VectorIfLm2EEEmSt4lessIS2_ESaISt4pairIKS2_mEEE7emplaceIJRS6_mEEES5_ISt17_Rb_tree_iteratorIS7_EbEDpOT_(ptr noundef nonnull align 8 dereferenceable(48) %15, ptr noundef nonnull align 4 dereferenceable(8) %157, ptr noundef nonnull align 8 dereferenceable(8) %28)
          to label %180 unwind label %183

180:                                              ; preds = %176
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #8
  br label %185

181:                                              ; preds = %156
  %182 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #8
  br label %223

183:                                              ; preds = %176
  %184 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #8
  br label %223

185:                                              ; preds = %180, %159
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #8
  %186 = getelementptr inbounds i8, ptr %120, i64 20
  %187 = invoke ptr @_ZNSt3mapIN3Raz6VectorIfLm3EEEmSt4lessIS2_ESaISt4pairIKS2_mEEE4findERS6_(ptr noundef nonnull align 8 dereferenceable(48) %16, ptr noundef nonnull align 4 dereferenceable(12) %186)
          to label %188 unwind label %216

188:                                              ; preds = %185
  store ptr %187, ptr %30, align 8
  call void @_ZNSt23_Rb_tree_const_iteratorISt4pairIKN3Raz6VectorIfLm3EEEmEEC2ERKSt17_Rb_tree_iteratorIS5_E(ptr noundef nonnull align 8 dereferenceable(8) %29, ptr noundef nonnull align 8 dereferenceable(8) %30) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #8
  %189 = call ptr @_ZNKSt3mapIN3Raz6VectorIfLm3EEEmSt4lessIS2_ESaISt4pairIKS2_mEEE4cendEv(ptr noundef nonnull align 8 dereferenceable(48) %16) #8
  store ptr %189, ptr %31, align 8
  %190 = call noundef zeroext i1 @_ZSteqRKSt23_Rb_tree_const_iteratorISt4pairIKN3Raz6VectorIfLm3EEEmEES8_(ptr noundef nonnull align 8 dereferenceable(8) %29, ptr noundef nonnull align 8 dereferenceable(8) %31) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #8
  br i1 %190, label %191, label %220

191:                                              ; preds = %188
  %192 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull @.str.10)
          to label %193 unwind label %152

193:                                              ; preds = %191
  %194 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3Raz6VectorIfLm3EE1xEv(ptr noundef nonnull align 4 dereferenceable(12) %186) #8
  %195 = load float, ptr %194, align 4, !tbaa !8
  %196 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEf(ptr noundef nonnull align 8 dereferenceable(8) %192, float noundef %195)
          to label %197 unwind label %152

197:                                              ; preds = %193
  %198 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %196, i8 noundef signext 32)
          to label %199 unwind label %152

199:                                              ; preds = %197
  %200 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3Raz6VectorIfLm3EE1yEv(ptr noundef nonnull align 4 dereferenceable(12) %186) #8
  %201 = load float, ptr %200, align 4, !tbaa !8
  %202 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEf(ptr noundef nonnull align 8 dereferenceable(8) %198, float noundef %201)
          to label %203 unwind label %152

203:                                              ; preds = %199
  %204 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %202, i8 noundef signext 32)
          to label %205 unwind label %152

205:                                              ; preds = %203
  %206 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3Raz6VectorIfLm3EE1zEv(ptr noundef nonnull align 4 dereferenceable(12) %186) #8
  %207 = load float, ptr %206, align 4, !tbaa !8
  %208 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEf(ptr noundef nonnull align 8 dereferenceable(8) %204, float noundef %207)
          to label %209 unwind label %152

209:                                              ; preds = %205
  %210 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %208, i8 noundef signext 10)
          to label %211 unwind label %152

211:                                              ; preds = %209
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #8
  %212 = call noundef i64 @_ZNKSt3mapIN3Raz6VectorIfLm3EEEmSt4lessIS2_ESaISt4pairIKS2_mEEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(48) %16) #8
  %213 = add i64 %212, 1
  store i64 %213, ptr %32, align 8, !tbaa !11
  %214 = invoke { ptr, i8 } @_ZNSt3mapIN3Raz6VectorIfLm3EEEmSt4lessIS2_ESaISt4pairIKS2_mEEE7emplaceIJRS6_mEEES5_ISt17_Rb_tree_iteratorIS7_EbEDpOT_(ptr noundef nonnull align 8 dereferenceable(48) %16, ptr noundef nonnull align 4 dereferenceable(12) %186, ptr noundef nonnull align 8 dereferenceable(8) %32)
          to label %215 unwind label %218

215:                                              ; preds = %211
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #8
  br label %220

216:                                              ; preds = %185
  %217 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #8
  br label %223

218:                                              ; preds = %211
  %219 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #8
  br label %223

220:                                              ; preds = %215, %188
  %221 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3Raz6VertexESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %19) #8
  %222 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3Raz6VertexESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %19, ptr noundef nonnull align 8 dereferenceable(8) %20) #8
  br i1 %222, label %.lr.ph, label %._crit_edge

223:                                              ; preds = %218, %216, %183, %181, %154, %152, %150
  %.pn112 = phi { ptr, i32 } [ %219, %218 ], [ %153, %152 ], [ %217, %216 ], [ %184, %183 ], [ %182, %181 ], [ %155, %154 ], [ %151, %150 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #8
  br label %407

224:                                              ; preds = %._crit_edge128
  %225 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3Raz8FilePath6toUtf8B5cxx11Ev(ptr noundef nonnull align 8 dereferenceable(32) %34)
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %33, ptr noundef nonnull align 8 dereferenceable(32) %225)
          to label %226 unwind label %233

226:                                              ; preds = %224
  call void @_ZN3Raz8FilePathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %34) #8
  %227 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3Raz4Mesh12getSubmeshesEv(ptr noundef nonnull align 8 dereferenceable(64) %1)
  %228 = call noundef i64 @_ZNKSt6vectorIN3Raz7SubmeshESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %227) #8
  %.not137 = icmp eq i64 %228, 0
  br i1 %.not137, label %._crit_edge136, label %.lr.ph135

.lr.ph135:                                        ; preds = %226
  %229 = getelementptr inbounds i8, ptr %35, i64 12
  %230 = getelementptr inbounds i8, ptr %35, i64 20
  br label %236

._crit_edge136:                                   ; preds = %._crit_edge132, %226
  invoke void @_ZN3Raz6Logger5debugEPKc(ptr noundef nonnull @.str.14)
          to label %402 unwind label %403

231:                                              ; preds = %._crit_edge128
  %232 = landingpad { ptr, i32 }
          cleanup
  br label %235

233:                                              ; preds = %224
  %234 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3Raz8FilePathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #8
  br label %235

235:                                              ; preds = %233, %231
  %.pn102 = phi { ptr, i32 } [ %234, %233 ], [ %232, %231 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %34) #8
  br label %406

236:                                              ; preds = %.lr.ph135, %._crit_edge132
  %.067133 = phi i64 [ 0, %.lr.ph135 ], [ %269, %._crit_edge132 ]
  %237 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3Raz4Mesh12getSubmeshesEv(ptr noundef nonnull align 8 dereferenceable(64) %1)
  %238 = call noundef nonnull align 8 dereferenceable(104) ptr @_ZNKSt6vectorIN3Raz7SubmeshESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %237, i64 noundef %.067133) #8
  %239 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull @.str.11)
          to label %240 unwind label %265

240:                                              ; preds = %236
  %241 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %239, ptr noundef nonnull align 8 dereferenceable(32) %33)
          to label %242 unwind label %265

242:                                              ; preds = %240
  %243 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %241, i8 noundef signext 95)
          to label %244 unwind label %265

244:                                              ; preds = %242
  %245 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %243, i64 noundef %.067133)
          to label %246 unwind label %265

246:                                              ; preds = %244
  %247 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %245, i8 noundef signext 10)
          to label %248 unwind label %265

248:                                              ; preds = %246
  br i1 %.not, label %267, label %249

249:                                              ; preds = %248
  %250 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3Raz12MeshRenderer12getMaterialsEv(ptr noundef nonnull align 8 dereferenceable(64) %2)
  %251 = call noundef zeroext i1 @_ZNKSt6vectorIN3Raz8MaterialESaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %250) #8
  br i1 %251, label %267, label %252

252:                                              ; preds = %249
  %253 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull @.str.12)
          to label %254 unwind label %265

254:                                              ; preds = %252
  %255 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %253, ptr noundef nonnull align 8 dereferenceable(32) %33)
          to label %256 unwind label %265

256:                                              ; preds = %254
  %257 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %255, i8 noundef signext 95)
          to label %258 unwind label %265

258:                                              ; preds = %256
  %259 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3Raz12MeshRenderer19getSubmeshRenderersEv(ptr noundef nonnull align 8 dereferenceable(64) %2)
  %260 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZNKSt6vectorIN3Raz15SubmeshRendererESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %259, i64 noundef %.067133) #8
  %261 = call noundef i64 @_ZNK3Raz15SubmeshRenderer16getMaterialIndexEv(ptr noundef nonnull align 8 dereferenceable(72) %260)
  %262 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %257, i64 noundef %261)
          to label %263 unwind label %265

263:                                              ; preds = %258
  %264 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %262, i8 noundef signext 10)
          to label %267 unwind label %265

265:                                              ; preds = %263, %258, %256, %254, %252, %246, %244, %242, %240, %236
  %266 = landingpad { ptr, i32 }
          cleanup
  br label %405

267:                                              ; preds = %263, %249, %248
  %268 = call noundef i64 @_ZNK3Raz7Submesh21getTriangleIndexCountEv(ptr noundef nonnull align 8 dereferenceable(104) %238)
  %.not138 = icmp eq i64 %268, 0
  br i1 %.not138, label %._crit_edge132, label %.lr.ph131

._crit_edge132:                                   ; preds = %377, %267
  %269 = add nuw i64 %.067133, 1
  %270 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3Raz4Mesh12getSubmeshesEv(ptr noundef nonnull align 8 dereferenceable(64) %1)
  %271 = call noundef i64 @_ZNKSt6vectorIN3Raz7SubmeshESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %270) #8
  %272 = icmp ult i64 %269, %271
  br i1 %272, label %236, label %._crit_edge136, !llvm.loop !13

273:                                              ; preds = %.lr.ph131
  %274 = landingpad { ptr, i32 }
          cleanup
  br label %405

.lr.ph131:                                        ; preds = %267, %377
  %.0129 = phi i64 [ %378, %377 ], [ 0, %267 ]
  %275 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull @.str.13)
          to label %276 unwind label %273

276:                                              ; preds = %.lr.ph131
  call void @llvm.lifetime.start.p0(i64 44, ptr nonnull %35) #8
  %277 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3Raz7Submesh11getVerticesEv(ptr noundef nonnull align 8 dereferenceable(104) %238)
  %278 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3Raz7Submesh18getTriangleIndicesEv(ptr noundef nonnull align 8 dereferenceable(104) %238)
  %279 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %278, i64 noundef %.0129) #8
  %280 = load i32, ptr %279, align 4, !tbaa !15
  %281 = zext i32 %280 to i64
  %282 = call noundef nonnull align 4 dereferenceable(44) ptr @_ZNKSt6vectorIN3Raz6VertexESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %277, i64 noundef %281) #8
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(44) %35, ptr noundef nonnull align 4 dereferenceable(44) %282, i64 44, i1 false), !tbaa.struct !17
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %36) #8
  %283 = invoke ptr @_ZNSt3mapIN3Raz6VectorIfLm3EEEmSt4lessIS2_ESaISt4pairIKS2_mEEE4findERS6_(ptr noundef nonnull align 8 dereferenceable(48) %14, ptr noundef nonnull align 4 dereferenceable(12) %35)
          to label %284 unwind label %381

284:                                              ; preds = %276
  store ptr %283, ptr %36, align 8
  %285 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKN3Raz6VectorIfLm3EEEmEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %36) #8
  %286 = getelementptr inbounds i8, ptr %285, i64 16
  %287 = load i64, ptr %286, align 8, !tbaa !19
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %37) #8
  %288 = invoke ptr @_ZNSt3mapIN3Raz6VectorIfLm2EEEmSt4lessIS2_ESaISt4pairIKS2_mEEE4findERS6_(ptr noundef nonnull align 8 dereferenceable(48) %15, ptr noundef nonnull align 4 dereferenceable(8) %229)
          to label %289 unwind label %383

289:                                              ; preds = %284
  store ptr %288, ptr %37, align 8
  %290 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKN3Raz6VectorIfLm2EEEmEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %37) #8
  %291 = getelementptr inbounds i8, ptr %290, i64 8
  %292 = load i64, ptr %291, align 8, !tbaa !23
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %38) #8
  %293 = invoke ptr @_ZNSt3mapIN3Raz6VectorIfLm3EEEmSt4lessIS2_ESaISt4pairIKS2_mEEE4findERS6_(ptr noundef nonnull align 8 dereferenceable(48) %16, ptr noundef nonnull align 4 dereferenceable(12) %230)
          to label %294 unwind label %385

294:                                              ; preds = %289
  store ptr %293, ptr %38, align 8
  %295 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKN3Raz6VectorIfLm3EEEmEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %38) #8
  %296 = getelementptr inbounds i8, ptr %295, i64 16
  %297 = load i64, ptr %296, align 8, !tbaa !19
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #8
  %298 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %6, i64 noundef %287)
          to label %299 unwind label %387

299:                                              ; preds = %294
  %300 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %298, i8 noundef signext 47)
          to label %301 unwind label %387

301:                                              ; preds = %299
  %302 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %300, i64 noundef %292)
          to label %303 unwind label %387

303:                                              ; preds = %301
  %304 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %302, i8 noundef signext 47)
          to label %305 unwind label %387

305:                                              ; preds = %303
  %306 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %304, i64 noundef %297)
          to label %307 unwind label %387

307:                                              ; preds = %305
  %308 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %306, i8 noundef signext 32)
          to label %309 unwind label %387

309:                                              ; preds = %307
  %310 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3Raz7Submesh11getVerticesEv(ptr noundef nonnull align 8 dereferenceable(104) %238)
  %311 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3Raz7Submesh18getTriangleIndicesEv(ptr noundef nonnull align 8 dereferenceable(104) %238)
  %312 = add nuw i64 %.0129, 1
  %313 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %311, i64 noundef %312) #8
  %314 = load i32, ptr %313, align 4, !tbaa !15
  %315 = zext i32 %314 to i64
  %316 = call noundef nonnull align 4 dereferenceable(44) ptr @_ZNKSt6vectorIN3Raz6VertexESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %310, i64 noundef %315) #8
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(44) %35, ptr noundef nonnull align 4 dereferenceable(44) %316, i64 44, i1 false), !tbaa.struct !17
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %39) #8
  %317 = invoke ptr @_ZNSt3mapIN3Raz6VectorIfLm3EEEmSt4lessIS2_ESaISt4pairIKS2_mEEE4findERS6_(ptr noundef nonnull align 8 dereferenceable(48) %14, ptr noundef nonnull align 4 dereferenceable(12) %35)
          to label %318 unwind label %389

318:                                              ; preds = %309
  store ptr %317, ptr %39, align 8
  %319 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKN3Raz6VectorIfLm3EEEmEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %39) #8
  %320 = getelementptr inbounds i8, ptr %319, i64 16
  %321 = load i64, ptr %320, align 8, !tbaa !19
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %40) #8
  %322 = invoke ptr @_ZNSt3mapIN3Raz6VectorIfLm2EEEmSt4lessIS2_ESaISt4pairIKS2_mEEE4findERS6_(ptr noundef nonnull align 8 dereferenceable(48) %15, ptr noundef nonnull align 4 dereferenceable(8) %229)
          to label %323 unwind label %391

323:                                              ; preds = %318
  store ptr %322, ptr %40, align 8
  %324 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKN3Raz6VectorIfLm2EEEmEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %40) #8
  %325 = getelementptr inbounds i8, ptr %324, i64 8
  %326 = load i64, ptr %325, align 8, !tbaa !23
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %41) #8
  %327 = invoke ptr @_ZNSt3mapIN3Raz6VectorIfLm3EEEmSt4lessIS2_ESaISt4pairIKS2_mEEE4findERS6_(ptr noundef nonnull align 8 dereferenceable(48) %16, ptr noundef nonnull align 4 dereferenceable(12) %230)
          to label %328 unwind label %393

328:                                              ; preds = %323
  store ptr %327, ptr %41, align 8
  %329 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKN3Raz6VectorIfLm3EEEmEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %41) #8
  %330 = getelementptr inbounds i8, ptr %329, i64 16
  %331 = load i64, ptr %330, align 8, !tbaa !19
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #8
  %332 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %6, i64 noundef %321)
          to label %333 unwind label %387

333:                                              ; preds = %328
  %334 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %332, i8 noundef signext 47)
          to label %335 unwind label %387

335:                                              ; preds = %333
  %336 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %334, i64 noundef %326)
          to label %337 unwind label %387

337:                                              ; preds = %335
  %338 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %336, i8 noundef signext 47)
          to label %339 unwind label %387

339:                                              ; preds = %337
  %340 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %338, i64 noundef %331)
          to label %341 unwind label %387

341:                                              ; preds = %339
  %342 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %340, i8 noundef signext 32)
          to label %343 unwind label %387

343:                                              ; preds = %341
  %344 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3Raz7Submesh11getVerticesEv(ptr noundef nonnull align 8 dereferenceable(104) %238)
  %345 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3Raz7Submesh18getTriangleIndicesEv(ptr noundef nonnull align 8 dereferenceable(104) %238)
  %346 = add i64 %.0129, 2
  %347 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNKSt6vectorIjSaIjEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %345, i64 noundef %346) #8
  %348 = load i32, ptr %347, align 4, !tbaa !15
  %349 = zext i32 %348 to i64
  %350 = call noundef nonnull align 4 dereferenceable(44) ptr @_ZNKSt6vectorIN3Raz6VertexESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %344, i64 noundef %349) #8
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(44) %35, ptr noundef nonnull align 4 dereferenceable(44) %350, i64 44, i1 false), !tbaa.struct !17
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %42) #8
  %351 = invoke ptr @_ZNSt3mapIN3Raz6VectorIfLm3EEEmSt4lessIS2_ESaISt4pairIKS2_mEEE4findERS6_(ptr noundef nonnull align 8 dereferenceable(48) %14, ptr noundef nonnull align 4 dereferenceable(12) %35)
          to label %352 unwind label %395

352:                                              ; preds = %343
  store ptr %351, ptr %42, align 8
  %353 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKN3Raz6VectorIfLm3EEEmEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %42) #8
  %354 = getelementptr inbounds i8, ptr %353, i64 16
  %355 = load i64, ptr %354, align 8, !tbaa !19
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %43) #8
  %356 = invoke ptr @_ZNSt3mapIN3Raz6VectorIfLm2EEEmSt4lessIS2_ESaISt4pairIKS2_mEEE4findERS6_(ptr noundef nonnull align 8 dereferenceable(48) %15, ptr noundef nonnull align 4 dereferenceable(8) %229)
          to label %357 unwind label %397

357:                                              ; preds = %352
  store ptr %356, ptr %43, align 8
  %358 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKN3Raz6VectorIfLm2EEEmEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %43) #8
  %359 = getelementptr inbounds i8, ptr %358, i64 8
  %360 = load i64, ptr %359, align 8, !tbaa !23
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %44) #8
  %361 = invoke ptr @_ZNSt3mapIN3Raz6VectorIfLm3EEEmSt4lessIS2_ESaISt4pairIKS2_mEEE4findERS6_(ptr noundef nonnull align 8 dereferenceable(48) %16, ptr noundef nonnull align 4 dereferenceable(12) %230)
          to label %362 unwind label %399

362:                                              ; preds = %357
  store ptr %361, ptr %44, align 8
  %363 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKN3Raz6VectorIfLm3EEEmEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %44) #8
  %364 = getelementptr inbounds i8, ptr %363, i64 16
  %365 = load i64, ptr %364, align 8, !tbaa !19
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %44) #8
  %366 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %6, i64 noundef %355)
          to label %367 unwind label %387

367:                                              ; preds = %362
  %368 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %366, i8 noundef signext 47)
          to label %369 unwind label %387

369:                                              ; preds = %367
  %370 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %368, i64 noundef %360)
          to label %371 unwind label %387

371:                                              ; preds = %369
  %372 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %370, i8 noundef signext 47)
          to label %373 unwind label %387

373:                                              ; preds = %371
  %374 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %372, i64 noundef %365)
          to label %375 unwind label %387

375:                                              ; preds = %373
  %376 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %374, i8 noundef signext 10)
          to label %377 unwind label %387

377:                                              ; preds = %375
  call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %35) #8
  %378 = add i64 %.0129, 3
  %379 = call noundef i64 @_ZNK3Raz7Submesh21getTriangleIndexCountEv(ptr noundef nonnull align 8 dereferenceable(104) %238)
  %380 = icmp ult i64 %378, %379
  br i1 %380, label %.lr.ph131, label %._crit_edge132, !llvm.loop !27

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

383:                                              ; preds = %284
  %384 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #8
  br label %401

385:                                              ; preds = %289
  %386 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #8
  br label %401

387:                                              ; preds = %375, %373, %371, %369, %367, %362, %341, %339, %337, %335, %333, %328, %307, %305, %303, %301, %299, %294
  %388 = landingpad { ptr, i32 }
          cleanup
  br label %401

389:                                              ; preds = %309
  %390 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #8
  br label %401

391:                                              ; preds = %318
  %392 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #8
  br label %401

393:                                              ; preds = %323
  %394 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #8
  br label %401

395:                                              ; preds = %343
  %396 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #8
  br label %401

397:                                              ; preds = %352
  %398 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #8
  br label %401

399:                                              ; preds = %357
  %400 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %44) #8
  br label %401

401:                                              ; preds = %383, %399, %397, %395, %393, %391, %389, %387, %385, %381
  %.pn104.pn.pn = phi { ptr, i32 } [ %382, %381 ], [ %384, %383 ], [ %388, %387 ], [ %400, %399 ], [ %398, %397 ], [ %396, %395 ], [ %394, %393 ], [ %392, %391 ], [ %390, %389 ], [ %386, %385 ]
  call void @llvm.lifetime.end.p0(i64 44, ptr nonnull %35) #8
  br label %405

402:                                              ; preds = %._crit_edge136
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %33) #8
  call void @_ZNSt3mapIN3Raz6VectorIfLm3EEEmSt4lessIS2_ESaISt4pairIKS2_mEEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %16) #8
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %16) #8
  call void @_ZNSt3mapIN3Raz6VectorIfLm2EEEmSt4lessIS2_ESaISt4pairIKS2_mEEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %15) #8
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %15) #8
  call void @_ZNSt3mapIN3Raz6VectorIfLm3EEEmSt4lessIS2_ESaISt4pairIKS2_mEEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %14) #8
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %14) #8
  call void @_ZNSt14basic_ofstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(248) %6) #8
  call void @llvm.lifetime.end.p0(i64 512, ptr nonnull %6) #8
  ret void

403:                                              ; preds = %._crit_edge136
  %404 = landingpad { ptr, i32 }
          cleanup
  br label %405

405:                                              ; preds = %265, %401, %273, %403
  %.pn104.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %404, %403 ], [ %266, %265 ], [ %.pn104.pn.pn, %401 ], [ %274, %273 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #8
  br label %406

406:                                              ; preds = %405, %235
  %.pn104.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn104.pn.pn.pn.pn.pn, %405 ], [ %.pn102, %235 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %33) #8
  br label %407

407:                                              ; preds = %406, %223
  %.pn112.pn = phi { ptr, i32 } [ %.pn112, %223 ], [ %.pn104.pn.pn.pn.pn.pn.pn, %406 ]
  call void @_ZNSt3mapIN3Raz6VectorIfLm3EEEmSt4lessIS2_ESaISt4pairIKS2_mEEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %16) #8
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %16) #8
  call void @_ZNSt3mapIN3Raz6VectorIfLm2EEEmSt4lessIS2_ESaISt4pairIKS2_mEEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %15) #8
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %15) #8
  call void @_ZNSt3mapIN3Raz6VectorIfLm3EEEmSt4lessIS2_ESaISt4pairIKS2_mEEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %14) #8
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %14) #8
  br label %408

408:                                              ; preds = %68, %70, %407, %107, %64
  %.pn115.pn.pn = phi { ptr, i32 } [ %.pn115.pn122, %70 ], [ %69, %68 ], [ %.pn112.pn, %407 ], [ %.pn99.pn, %107 ], [ %65, %64 ]
  call void @_ZNSt14basic_ofstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(248) %6) #8
  call void @llvm.lifetime.end.p0(i64 512, ptr nonnull %6) #8
  br label %409

409:                                              ; preds = %408, %63
  %.pn115.pn.pn.pn = phi { ptr, i32 } [ %.pn115.pn.pn, %408 ], [ %.pn, %63 ]
  resume { ptr, i32 } %.pn115.pn.pn.pn

410:                                              ; preds = %58
  unreachable
}

declare void @_ZN3Raz6Logger5debugERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #1

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) local_unnamed_addr #3

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @_ZN3RazplB5cxx11EPKcRKNS_8FilePathE(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef, ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #3

declare i32 @__gxx_personality_v0(...)

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

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

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

; Function Attrs: mustprogress uwtable
declare void @_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1EPKcSt13_Ios_Openmode(ptr noundef nonnull align 8 dereferenceable(248), ptr noundef, i32 noundef) unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare noundef zeroext i1 @_ZNKSt9basic_iosIcSt11char_traitsIcEEntEv(ptr noundef nonnull align 8 dereferenceable(264)) local_unnamed_addr #0 align 2

declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr

declare void @_ZNSt16invalid_argumentC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #1

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

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

declare void @__cxa_free_exception(ptr) local_unnamed_addr

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) local_unnamed_addr #3

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK3Raz8FilePath15recoverFileNameEb(ptr dead_on_unwind noalias writable sret(%"class.Raz::FilePath") align 8, ptr noundef nonnull align 8 dereferenceable(32), i1 noundef zeroext) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK3Raz8FilePathplB5cxx11EPKc(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef) local_unnamed_addr #0 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK3Raz8FilePath17recoverPathToFileEv(ptr dead_on_unwind noalias writable sret(%"class.Raz::FilePath") align 8, ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK3Raz8FilePathplERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #0 align 2

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN3RazlsERSoRKNS_8FilePathE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #1

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3Raz7SubmeshESt6vectorIS2_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(104) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3Raz7SubmeshESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #4 align 2

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3Raz6VertexESt6vectorIS2_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 4 dereferenceable(44) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3Raz6VertexESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #4 align 2

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8), i8 noundef signext) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEf(ptr noundef nonnull align 8 dereferenceable(8), float noundef) local_unnamed_addr #0 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #3

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"vtable pointer", !7, i64 0}
!7 = !{!"Simple C++ TBAA"}
!8 = !{!9, !9, i64 0}
!9 = !{!"float", !10, i64 0}
!10 = !{!"omnipotent char", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"long", !10, i64 0}
!13 = distinct !{!13, !14}
!14 = !{!"llvm.loop.mustprogress"}
!15 = !{!16, !16, i64 0}
!16 = !{!"int", !10, i64 0}
!17 = !{i64 0, i64 12, !18, i64 12, i64 8, !18, i64 20, i64 12, !18, i64 32, i64 12, !18}
!18 = !{!10, !10, i64 0}
!19 = !{!20, !12, i64 16}
!20 = !{!"_ZTSSt4pairIKN3Raz6VectorIfLm3EEEmE", !21, i64 0, !12, i64 16}
!21 = !{!"_ZTSN3Raz6VectorIfLm3EEE", !22, i64 0}
!22 = !{!"_ZTSSt5arrayIfLm3EE", !10, i64 0}
!23 = !{!24, !12, i64 8}
!24 = !{!"_ZTSSt4pairIKN3Raz6VectorIfLm2EEEmE", !25, i64 0, !12, i64 8}
!25 = !{!"_ZTSN3Raz6VectorIfLm2EEE", !26, i64 0}
!26 = !{!"_ZTSSt5arrayIfLm2EE", !10, i64 0}
!27 = distinct !{!27, !14}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GlobalOptPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,SROAPass,SimplifyCFGPass