; LLVM IR from ronan-kerviche/glip-lib :: GLIP-Lib/src/Modules (GeometryLoader)

; 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.Glip::CorePipeline::GeometryPrimitives::CustomModel" = type { %"class.Glip::CorePipeline::GeometryModel" }
%"class.Glip::CorePipeline::GeometryModel" = type { ptr, %"class.std::vector.13", %"class.std::vector.13", %"class.std::vector.13", %"class.std::vector.8", i32, i8, i8, i32, i32, i32, i32 }
%"class.std::vector.13" = type { %"struct.std::_Vector_base.14" }
%"struct.std::_Vector_base.14" = type { %"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl" }
%"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl" = type { %"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl_data" }
%"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.8" = type { %"struct.std::_Vector_base.9" }
%"struct.std::_Vector_base.9" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::basic_ifstream" = type { %"class.std::basic_istream.base", %"class.std::basic_filebuf", %"class.std::basic_ios" }
%"class.std::basic_istream.base" = type { ptr, i64 }
%"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.59 }
%union.anon.59 = 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.std::allocator" = type { i8 }
%"struct.Glip::Modules::OBJLoader::UnshapedData" = type <{ %"class.std::vector.13", %"class.std::vector.13", %"class.std::vector.13", %"class.std::vector.13", %"class.std::vector.13", %"class.std::vector.13", %"class.std::vector.13", %"class.std::vector.13", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.8", i8, i8, [6 x i8] }>

@_ZTIN4Glip9ExceptionE = external constant ptr
@.str.25 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [97 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [50 x i8], align 1

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

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

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

declare i32 @__gxx_personality_v0(...)

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

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

declare ptr @__cxa_allocate_exception(i64)

declare void @_ZN4Glip9ExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_iRKNS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(152), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, i32 noundef, ptr noundef nonnull align 4 dereferenceable(4)) unnamed_addr #3

; Function Attrs: nounwind
declare void @_ZN4Glip9ExceptionD1Ev(ptr noundef nonnull align 8 dereferenceable(152)) unnamed_addr #4

declare void @__cxa_throw(ptr, ptr, ptr)

declare void @__cxa_free_exception(ptr)

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN4Glip7Modules9OBJLoader11processLineERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERNS1_12UnshapedDataEbiS9_RSt6vectorIjSaIjEESF_SF_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(410), i1 noundef zeroext, i32 noundef, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) #1 align 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) #5

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN4Glip7Modules9OBJLoader4loadERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr dead_on_unwind noalias writable sret(%"class.Glip::CorePipeline::GeometryPrimitives::CustomModel") align 8 %0, ptr noundef nonnull align 8 dereferenceable(32) %1, i1 noundef zeroext %2) #2 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca i8, align 1
  %7 = alloca %"class.std::basic_ifstream", align 8
  %8 = alloca ptr, align 8
  %9 = alloca i32, align 4
  %10 = alloca %"class.std::__cxx11::basic_string", align 8
  %11 = alloca %"class.std::__cxx11::basic_string", align 8
  %12 = alloca %"class.std::__cxx11::basic_string", align 8
  %13 = alloca %"class.std::allocator", align 1
  %14 = alloca i32, align 4
  %15 = alloca i1, align 1
  %16 = alloca i32, align 4
  %17 = alloca %"struct.Glip::Modules::OBJLoader::UnshapedData", align 8
  %18 = alloca %"class.std::vector.8", align 8
  %19 = alloca %"class.std::vector.8", align 8
  %20 = alloca %"class.std::vector.8", align 8
  %21 = alloca i32, align 4
  %22 = alloca %"class.std::__cxx11::basic_string", align 8
  %23 = alloca %"class.std::__cxx11::basic_string", align 8
  %24 = alloca %"class.std::__cxx11::basic_string", align 8
  %25 = alloca %"class.std::__cxx11::basic_string", align 8
  %26 = alloca %"class.std::allocator", align 1
  %27 = alloca i32, align 4
  %28 = alloca i1, align 1
  %29 = alloca i1, align 1
  %30 = alloca ptr, align 8
  %31 = alloca ptr, align 8
  %32 = alloca ptr, align 8
  %33 = alloca ptr, align 8
  %34 = alloca ptr, align 8
  %35 = alloca %"class.std::__cxx11::basic_string", align 8
  %36 = alloca %"class.std::__cxx11::basic_string", align 8
  %37 = alloca %"class.std::__cxx11::basic_string", align 8
  %38 = alloca %"class.std::allocator", align 1
  %39 = alloca i32, align 4
  %40 = alloca i1, align 1
  store ptr %0, ptr %4, align 8
  store ptr %1, ptr %5, align 8, !tbaa !5
  %41 = zext i1 %2 to i8
  store i8 %41, ptr %6, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 520, ptr %7) #7
  call void @_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(256) %7)
  %42 = load ptr, ptr %5, align 8, !tbaa !5
  %43 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %42) #7
  invoke void @_ZNSt14basic_ifstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode(ptr noundef nonnull align 8 dereferenceable(256) %7, ptr noundef %43, i32 noundef 8)
          to label %44 unwind label %68

44:                                               ; preds = %3
  %45 = invoke noundef zeroext i1 @_ZNSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv(ptr noundef nonnull align 8 dereferenceable(256) %7)
          to label %46 unwind label %68

46:                                               ; preds = %44
  br i1 %45, label %47, label %61

47:                                               ; preds = %46
  %48 = load ptr, ptr %7, align 8, !tbaa !11
  %49 = getelementptr i8, ptr %48, i64 -24
  %50 = load i64, ptr %49, align 8
  %51 = getelementptr inbounds i8, ptr %7, i64 %50
  %52 = invoke noundef zeroext i1 @_ZNKSt9basic_iosIcSt11char_traitsIcEE4goodEv(ptr noundef nonnull align 8 dereferenceable(264) %51)
          to label %53 unwind label %68

53:                                               ; preds = %47
  br i1 %52, label %54, label %61

54:                                               ; preds = %53
  %55 = load ptr, ptr %7, align 8, !tbaa !11
  %56 = getelementptr i8, ptr %55, i64 -24
  %57 = load i64, ptr %56, align 8
  %58 = getelementptr inbounds i8, ptr %7, i64 %57
  %59 = invoke noundef zeroext i1 @_ZNKSt9basic_iosIcSt11char_traitsIcEE4failEv(ptr noundef nonnull align 8 dereferenceable(264) %58)
          to label %60 unwind label %68

60:                                               ; preds = %54
  br i1 %59, label %61, label %94

61:                                               ; preds = %60, %53, %46
  store i1 true, ptr %15, align 1
  %62 = call ptr @__cxa_allocate_exception(i64 152) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %10) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %11) #7
  %63 = load ptr, ptr %5, align 8, !tbaa !5
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %11, ptr noundef @.str.45, ptr noundef nonnull align 8 dereferenceable(32) %63)
          to label %64 unwind label %72

64:                                               ; preds = %61
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %10, ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef @.str.25)
          to label %65 unwind label %76

65:                                               ; preds = %64
  call void @llvm.lifetime.start.p0(i64 1, ptr %13) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef @.str.46, ptr noundef nonnull align 1 dereferenceable(1) %13)
          to label %66 unwind label %80

66:                                               ; preds = %65
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #7
  store i32 2, ptr %14, align 4, !tbaa !13
  invoke void @_ZN4Glip9ExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_iRKNS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(152) %62, ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef %12, i32 noundef 515, ptr noundef nonnull align 4 dereferenceable(4) %14)
          to label %67 unwind label %84

67:                                               ; preds = %66
  store i1 false, ptr %15, align 1
  invoke void @__cxa_throw(ptr %62, ptr @_ZTIN4Glip9ExceptionE, ptr @_ZN4Glip9ExceptionD1Ev) #8
          to label %324 unwind label %84

68:                                               ; preds = %54, %47, %44, %3
  %69 = landingpad { ptr, i32 }
          cleanup
  %70 = extractvalue { ptr, i32 } %69, 0
  store ptr %70, ptr %8, align 8
  %71 = extractvalue { ptr, i32 } %69, 1
  store i32 %71, ptr %9, align 4
  br label %318

72:                                               ; preds = %61
  %73 = landingpad { ptr, i32 }
          cleanup
  %74 = extractvalue { ptr, i32 } %73, 0
  store ptr %74, ptr %8, align 8
  %75 = extractvalue { ptr, i32 } %73, 1
  store i32 %75, ptr %9, align 4
  br label %90

76:                                               ; preds = %64
  %77 = landingpad { ptr, i32 }
          cleanup
  %78 = extractvalue { ptr, i32 } %77, 0
  store ptr %78, ptr %8, align 8
  %79 = extractvalue { ptr, i32 } %77, 1
  store i32 %79, ptr %9, align 4
  br label %89

80:                                               ; preds = %65
  %81 = landingpad { ptr, i32 }
          cleanup
  %82 = extractvalue { ptr, i32 } %81, 0
  store ptr %82, ptr %8, align 8
  %83 = extractvalue { ptr, i32 } %81, 1
  store i32 %83, ptr %9, align 4
  br label %88

84:                                               ; preds = %67, %66
  %85 = landingpad { ptr, i32 }
          cleanup
  %86 = extractvalue { ptr, i32 } %85, 0
  store ptr %86, ptr %8, align 8
  %87 = extractvalue { ptr, i32 } %85, 1
  store i32 %87, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #7
  br label %88

88:                                               ; preds = %84, %80
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %13) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #7
  br label %89

89:                                               ; preds = %88, %76
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #7
  br label %90

90:                                               ; preds = %89, %72
  call void @llvm.lifetime.end.p0(i64 32, ptr %11) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %10) #7
  %91 = load i1, ptr %15, align 1
  br i1 %91, label %92, label %93

92:                                               ; preds = %90
  call void @__cxa_free_exception(ptr %62) #7
  br label %93

93:                                               ; preds = %92, %90
  br label %318

94:                                               ; preds = %60
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #7
  store i32 65536, ptr %16, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 416, ptr %17) #7
  call void @_ZN4Glip7Modules9OBJLoader12UnshapedDataC2Ev(ptr noundef nonnull align 8 dereferenceable(410) %17) #7
  %95 = getelementptr inbounds %"struct.Glip::Modules::OBJLoader::UnshapedData", ptr %17, i32 0, i32 17
  store i8 0, ptr %95, align 8, !tbaa !17
  %96 = getelementptr inbounds %"struct.Glip::Modules::OBJLoader::UnshapedData", ptr %17, i32 0, i32 18
  store i8 0, ptr %96, align 1, !tbaa !27
  %97 = getelementptr inbounds %"struct.Glip::Modules::OBJLoader::UnshapedData", ptr %17, i32 0, i32 0
  invoke void @_ZNSt6vectorIfSaIfEE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %97, i64 noundef 65536)
          to label %98 unwind label %153

98:                                               ; preds = %94
  %99 = getelementptr inbounds %"struct.Glip::Modules::OBJLoader::UnshapedData", ptr %17, i32 0, i32 1
  invoke void @_ZNSt6vectorIfSaIfEE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %99, i64 noundef 65536)
          to label %100 unwind label %153

100:                                              ; preds = %98
  %101 = getelementptr inbounds %"struct.Glip::Modules::OBJLoader::UnshapedData", ptr %17, i32 0, i32 2
  invoke void @_ZNSt6vectorIfSaIfEE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %101, i64 noundef 65536)
          to label %102 unwind label %153

102:                                              ; preds = %100
  %103 = getelementptr inbounds %"struct.Glip::Modules::OBJLoader::UnshapedData", ptr %17, i32 0, i32 3
  invoke void @_ZNSt6vectorIfSaIfEE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %103, i64 noundef 65536)
          to label %104 unwind label %153

104:                                              ; preds = %102
  %105 = getelementptr inbounds %"struct.Glip::Modules::OBJLoader::UnshapedData", ptr %17, i32 0, i32 4
  invoke void @_ZNSt6vectorIfSaIfEE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %105, i64 noundef 65536)
          to label %106 unwind label %153

106:                                              ; preds = %104
  %107 = getelementptr inbounds %"struct.Glip::Modules::OBJLoader::UnshapedData", ptr %17, i32 0, i32 5
  invoke void @_ZNSt6vectorIfSaIfEE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %107, i64 noundef 65536)
          to label %108 unwind label %153

108:                                              ; preds = %106
  %109 = getelementptr inbounds %"struct.Glip::Modules::OBJLoader::UnshapedData", ptr %17, i32 0, i32 6
  invoke void @_ZNSt6vectorIfSaIfEE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %109, i64 noundef 65536)
          to label %110 unwind label %153

110:                                              ; preds = %108
  %111 = getelementptr inbounds %"struct.Glip::Modules::OBJLoader::UnshapedData", ptr %17, i32 0, i32 7
  invoke void @_ZNSt6vectorIfSaIfEE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %111, i64 noundef 65536)
          to label %112 unwind label %153

112:                                              ; preds = %110
  %113 = getelementptr inbounds %"struct.Glip::Modules::OBJLoader::UnshapedData", ptr %17, i32 0, i32 8
  invoke void @_ZNSt6vectorIjSaIjEE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %113, i64 noundef 65536)
          to label %114 unwind label %153

114:                                              ; preds = %112
  %115 = getelementptr inbounds %"struct.Glip::Modules::OBJLoader::UnshapedData", ptr %17, i32 0, i32 9
  invoke void @_ZNSt6vectorIjSaIjEE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %115, i64 noundef 65536)
          to label %116 unwind label %153

116:                                              ; preds = %114
  %117 = getelementptr inbounds %"struct.Glip::Modules::OBJLoader::UnshapedData", ptr %17, i32 0, i32 10
  invoke void @_ZNSt6vectorIjSaIjEE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %117, i64 noundef 65536)
          to label %118 unwind label %153

118:                                              ; preds = %116
  %119 = getelementptr inbounds %"struct.Glip::Modules::OBJLoader::UnshapedData", ptr %17, i32 0, i32 11
  invoke void @_ZNSt6vectorIjSaIjEE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %119, i64 noundef 65536)
          to label %120 unwind label %153

120:                                              ; preds = %118
  %121 = getelementptr inbounds %"struct.Glip::Modules::OBJLoader::UnshapedData", ptr %17, i32 0, i32 12
  invoke void @_ZNSt6vectorIjSaIjEE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %121, i64 noundef 65536)
          to label %122 unwind label %153

122:                                              ; preds = %120
  %123 = getelementptr inbounds %"struct.Glip::Modules::OBJLoader::UnshapedData", ptr %17, i32 0, i32 13
  invoke void @_ZNSt6vectorIjSaIjEE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %123, i64 noundef 65536)
          to label %124 unwind label %153

124:                                              ; preds = %122
  %125 = getelementptr inbounds %"struct.Glip::Modules::OBJLoader::UnshapedData", ptr %17, i32 0, i32 14
  invoke void @_ZNSt6vectorIjSaIjEE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %125, i64 noundef 65536)
          to label %126 unwind label %153

126:                                              ; preds = %124
  %127 = getelementptr inbounds %"struct.Glip::Modules::OBJLoader::UnshapedData", ptr %17, i32 0, i32 15
  invoke void @_ZNSt6vectorIjSaIjEE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %127, i64 noundef 65536)
          to label %128 unwind label %153

128:                                              ; preds = %126
  %129 = getelementptr inbounds %"struct.Glip::Modules::OBJLoader::UnshapedData", ptr %17, i32 0, i32 16
  invoke void @_ZNSt6vectorIjSaIjEE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %129, i64 noundef 65536)
          to label %130 unwind label %153

130:                                              ; preds = %128
  call void @llvm.lifetime.start.p0(i64 24, ptr %18) #7
  call void @_ZNSt6vectorIjSaIjEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %19) #7
  call void @_ZNSt6vectorIjSaIjEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr %20) #7
  call void @_ZNSt6vectorIjSaIjEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #7
  invoke void @_ZNSt6vectorIjSaIjEE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %18, i64 noundef 8)
          to label %131 unwind label %157

131:                                              ; preds = %130
  invoke void @_ZNSt6vectorIjSaIjEE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %19, i64 noundef 8)
          to label %132 unwind label %157

132:                                              ; preds = %131
  invoke void @_ZNSt6vectorIjSaIjEE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %20, i64 noundef 8)
          to label %133 unwind label %157

133:                                              ; preds = %132
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #7
  store i32 1, ptr %21, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 32, ptr %22) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #7
  %134 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSi5seekgElSt12_Ios_Seekdir(ptr noundef nonnull align 8 dereferenceable(16) %7, i64 noundef 0, i32 noundef 0)
          to label %135 unwind label %161

135:                                              ; preds = %133
  br label %136

136:                                              ; preds = %150, %135
  %137 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZSt7getlineIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(16) %7, ptr noundef nonnull align 8 dereferenceable(32) %22)
          to label %138 unwind label %161

138:                                              ; preds = %136
  %139 = load ptr, ptr %137, align 8, !tbaa !11
  %140 = getelementptr i8, ptr %139, i64 -24
  %141 = load i64, ptr %140, align 8
  %142 = getelementptr inbounds i8, ptr %137, i64 %141
  %143 = invoke noundef zeroext i1 @_ZNKSt9basic_iosIcSt11char_traitsIcEEcvbEv(ptr noundef nonnull align 8 dereferenceable(264) %142)
          to label %144 unwind label %161

144:                                              ; preds = %138
  br i1 %143, label %145, label %165

145:                                              ; preds = %144
  %146 = load i8, ptr %6, align 1, !tbaa !9, !range !28, !noundef !29
  %147 = trunc i8 %146 to i1
  %148 = load i32, ptr %21, align 4, !tbaa !15
  %149 = load ptr, ptr %5, align 8, !tbaa !5
  invoke void @_ZN4Glip7Modules9OBJLoader11processLineERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERNS1_12UnshapedDataEbiS9_RSt6vectorIjSaIjEESF_SF_(ptr noundef nonnull align 8 dereferenceable(32) %22, ptr noundef nonnull align 8 dereferenceable(410) %17, i1 noundef zeroext %147, i32 noundef %148, ptr noundef nonnull align 8 dereferenceable(32) %149, ptr noundef nonnull align 8 dereferenceable(24) %18, ptr noundef nonnull align 8 dereferenceable(24) %19, ptr noundef nonnull align 8 dereferenceable(24) %20)
          to label %150 unwind label %161

150:                                              ; preds = %145
  %151 = load i32, ptr %21, align 4, !tbaa !15
  %152 = add nsw i32 %151, 1
  store i32 %152, ptr %21, align 4, !tbaa !15
  br label %136, !llvm.loop !30

153:                                              ; preds = %128, %126, %124, %122, %120, %118, %116, %114, %112, %110, %108, %106, %104, %102, %100, %98, %94
  %154 = landingpad { ptr, i32 }
          cleanup
  %155 = extractvalue { ptr, i32 } %154, 0
  store ptr %155, ptr %8, align 8
  %156 = extractvalue { ptr, i32 } %154, 1
  store i32 %156, ptr %9, align 4
  br label %317

157:                                              ; preds = %132, %131, %130
  %158 = landingpad { ptr, i32 }
          cleanup
  %159 = extractvalue { ptr, i32 } %158, 0
  store ptr %159, ptr %8, align 8
  %160 = extractvalue { ptr, i32 } %158, 1
  store i32 %160, ptr %9, align 4
  br label %316

161:                                              ; preds = %199, %198, %166, %165, %145, %138, %136, %133
  %162 = landingpad { ptr, i32 }
          cleanup
  %163 = extractvalue { ptr, i32 } %162, 0
  store ptr %163, ptr %8, align 8
  %164 = extractvalue { ptr, i32 } %162, 1
  store i32 %164, ptr %9, align 4
  br label %315

165:                                              ; preds = %144
  invoke void @_ZNSt14basic_ifstreamIcSt11char_traitsIcEE5closeEv(ptr noundef nonnull align 8 dereferenceable(256) %7)
          to label %166 unwind label %161

166:                                              ; preds = %165
  call void @_ZN4Glip7Modules9OBJLoader17completeModelDataERNS1_12UnshapedDataE(ptr noundef nonnull align 8 dereferenceable(410) %17)
  %167 = invoke noundef zeroext i1 @_ZN4Glip7Modules9OBJLoader11testIndicesERKNS1_12UnshapedDataE(ptr noundef nonnull align 8 dereferenceable(410) %17)
          to label %168 unwind label %161

168:                                              ; preds = %166
  br i1 %167, label %198, label %169

169:                                              ; preds = %168
  store i1 true, ptr %28, align 1
  %170 = call ptr @__cxa_allocate_exception(i64 152) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %23) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %24) #7
  %171 = load ptr, ptr %5, align 8, !tbaa !5
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %24, ptr noundef @.str.47, ptr noundef nonnull align 8 dereferenceable(32) %171)
          to label %172 unwind label %176

172:                                              ; preds = %169
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %23, ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef @.str.25)
          to label %173 unwind label %180

173:                                              ; preds = %172
  call void @llvm.lifetime.start.p0(i64 1, ptr %26) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef @.str.46, ptr noundef nonnull align 1 dereferenceable(1) %26)
          to label %174 unwind label %184

174:                                              ; preds = %173
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #7
  store i32 2, ptr %27, align 4, !tbaa !13
  invoke void @_ZN4Glip9ExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_iRKNS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(152) %170, ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef %25, i32 noundef 563, ptr noundef nonnull align 4 dereferenceable(4) %27)
          to label %175 unwind label %188

175:                                              ; preds = %174
  store i1 false, ptr %28, align 1
  invoke void @__cxa_throw(ptr %170, ptr @_ZTIN4Glip9ExceptionE, ptr @_ZN4Glip9ExceptionD1Ev) #8
          to label %324 unwind label %188

176:                                              ; preds = %169
  %177 = landingpad { ptr, i32 }
          cleanup
  %178 = extractvalue { ptr, i32 } %177, 0
  store ptr %178, ptr %8, align 8
  %179 = extractvalue { ptr, i32 } %177, 1
  store i32 %179, ptr %9, align 4
  br label %194

180:                                              ; preds = %172
  %181 = landingpad { ptr, i32 }
          cleanup
  %182 = extractvalue { ptr, i32 } %181, 0
  store ptr %182, ptr %8, align 8
  %183 = extractvalue { ptr, i32 } %181, 1
  store i32 %183, ptr %9, align 4
  br label %193

184:                                              ; preds = %173
  %185 = landingpad { ptr, i32 }
          cleanup
  %186 = extractvalue { ptr, i32 } %185, 0
  store ptr %186, ptr %8, align 8
  %187 = extractvalue { ptr, i32 } %185, 1
  store i32 %187, ptr %9, align 4
  br label %192

188:                                              ; preds = %175, %174
  %189 = landingpad { ptr, i32 }
          cleanup
  %190 = extractvalue { ptr, i32 } %189, 0
  store ptr %190, ptr %8, align 8
  %191 = extractvalue { ptr, i32 } %189, 1
  store i32 %191, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #7
  br label %192

192:                                              ; preds = %188, %184
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %26) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #7
  br label %193

193:                                              ; preds = %192, %180
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #7
  br label %194

194:                                              ; preds = %193, %176
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %23) #7
  %195 = load i1, ptr %28, align 1
  br i1 %195, label %196, label %197

196:                                              ; preds = %194
  call void @__cxa_free_exception(ptr %170) #7
  br label %197

197:                                              ; preds = %196, %194
  br label %315

198:                                              ; preds = %168
  invoke void @_ZN4Glip7Modules9OBJLoader11reorderDataERNS1_12UnshapedDataE(ptr noundef nonnull align 8 dereferenceable(410) %17)
          to label %199 unwind label %161

199:                                              ; preds = %198
  store i1 false, ptr %29, align 1
  %200 = getelementptr inbounds %"struct.Glip::Modules::OBJLoader::UnshapedData", ptr %17, i32 0, i32 17
  %201 = load i8, ptr %200, align 8, !tbaa !17, !range !28, !noundef !29
  %202 = trunc i8 %201 to i1
  %203 = getelementptr inbounds %"struct.Glip::Modules::OBJLoader::UnshapedData", ptr %17, i32 0, i32 18
  %204 = load i8, ptr %203, align 1, !tbaa !27, !range !28, !noundef !29
  %205 = trunc i8 %204 to i1
  invoke void @_ZN4Glip12CorePipeline18GeometryPrimitives11CustomModelC1Eijbb(ptr noundef nonnull align 8 dereferenceable(128) %0, i32 noundef 3, i32 noundef 4, i1 noundef zeroext %202, i1 noundef zeroext %205)
          to label %206 unwind label %161

206:                                              ; preds = %199
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #7
  %207 = getelementptr inbounds %"struct.Glip::Modules::OBJLoader::UnshapedData", ptr %17, i32 0, i32 17
  %208 = load i8, ptr %207, align 8, !tbaa !17, !range !28, !noundef !29
  %209 = trunc i8 %208 to i1
  br i1 %209, label %210, label %213

210:                                              ; preds = %206
  %211 = getelementptr inbounds %"struct.Glip::Modules::OBJLoader::UnshapedData", ptr %17, i32 0, i32 3
  %212 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEE5frontEv(ptr noundef nonnull align 8 dereferenceable(24) %211) #7
  br label %214

213:                                              ; preds = %206
  br label %214

214:                                              ; preds = %213, %210
  %215 = phi ptr [ %212, %210 ], [ null, %213 ]
  store ptr %215, ptr %30, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #7
  %216 = getelementptr inbounds %"struct.Glip::Modules::OBJLoader::UnshapedData", ptr %17, i32 0, i32 17
  %217 = load i8, ptr %216, align 8, !tbaa !17, !range !28, !noundef !29
  %218 = trunc i8 %217 to i1
  br i1 %218, label %219, label %222

219:                                              ; preds = %214
  %220 = getelementptr inbounds %"struct.Glip::Modules::OBJLoader::UnshapedData", ptr %17, i32 0, i32 4
  %221 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEE5frontEv(ptr noundef nonnull align 8 dereferenceable(24) %220) #7
  br label %223

222:                                              ; preds = %214
  br label %223

223:                                              ; preds = %222, %219
  %224 = phi ptr [ %221, %219 ], [ null, %222 ]
  store ptr %224, ptr %31, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #7
  %225 = getelementptr inbounds %"struct.Glip::Modules::OBJLoader::UnshapedData", ptr %17, i32 0, i32 17
  %226 = load i8, ptr %225, align 8, !tbaa !17, !range !28, !noundef !29
  %227 = trunc i8 %226 to i1
  br i1 %227, label %228, label %231

228:                                              ; preds = %223
  %229 = getelementptr inbounds %"struct.Glip::Modules::OBJLoader::UnshapedData", ptr %17, i32 0, i32 5
  %230 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEE5frontEv(ptr noundef nonnull align 8 dereferenceable(24) %229) #7
  br label %232

231:                                              ; preds = %223
  br label %232

232:                                              ; preds = %231, %228
  %233 = phi ptr [ %230, %228 ], [ null, %231 ]
  store ptr %233, ptr %32, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #7
  %234 = getelementptr inbounds %"struct.Glip::Modules::OBJLoader::UnshapedData", ptr %17, i32 0, i32 18
  %235 = load i8, ptr %234, align 1, !tbaa !27, !range !28, !noundef !29
  %236 = trunc i8 %235 to i1
  br i1 %236, label %237, label %240

237:                                              ; preds = %232
  %238 = getelementptr inbounds %"struct.Glip::Modules::OBJLoader::UnshapedData", ptr %17, i32 0, i32 6
  %239 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEE5frontEv(ptr noundef nonnull align 8 dereferenceable(24) %238) #7
  br label %241

240:                                              ; preds = %232
  br label %241

241:                                              ; preds = %240, %237
  %242 = phi ptr [ %239, %237 ], [ null, %240 ]
  store ptr %242, ptr %33, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #7
  %243 = getelementptr inbounds %"struct.Glip::Modules::OBJLoader::UnshapedData", ptr %17, i32 0, i32 18
  %244 = load i8, ptr %243, align 1, !tbaa !27, !range !28, !noundef !29
  %245 = trunc i8 %244 to i1
  br i1 %245, label %246, label %249

246:                                              ; preds = %241
  %247 = getelementptr inbounds %"struct.Glip::Modules::OBJLoader::UnshapedData", ptr %17, i32 0, i32 7
  %248 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEE5frontEv(ptr noundef nonnull align 8 dereferenceable(24) %247) #7
  br label %250

249:                                              ; preds = %241
  br label %250

250:                                              ; preds = %249, %246
  %251 = phi ptr [ %248, %246 ], [ null, %249 ]
  store ptr %251, ptr %34, align 8, !tbaa !5
  %252 = getelementptr inbounds %"struct.Glip::Modules::OBJLoader::UnshapedData", ptr %17, i32 0, i32 0
  %253 = call noundef i64 @_ZNKSt6vectorIfSaIfEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %252) #7
  %254 = getelementptr inbounds %"struct.Glip::Modules::OBJLoader::UnshapedData", ptr %17, i32 0, i32 0
  %255 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEE5frontEv(ptr noundef nonnull align 8 dereferenceable(24) %254) #7
  %256 = getelementptr inbounds %"struct.Glip::Modules::OBJLoader::UnshapedData", ptr %17, i32 0, i32 1
  %257 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEE5frontEv(ptr noundef nonnull align 8 dereferenceable(24) %256) #7
  %258 = getelementptr inbounds %"struct.Glip::Modules::OBJLoader::UnshapedData", ptr %17, i32 0, i32 2
  %259 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEE5frontEv(ptr noundef nonnull align 8 dereferenceable(24) %258) #7
  %260 = load ptr, ptr %30, align 8, !tbaa !5
  %261 = load ptr, ptr %31, align 8, !tbaa !5
  %262 = load ptr, ptr %32, align 8, !tbaa !5
  %263 = load ptr, ptr %33, align 8, !tbaa !5
  %264 = load ptr, ptr %34, align 8, !tbaa !5
  invoke void @_ZN4Glip12CorePipeline18GeometryPrimitives11CustomModel13newVertices3DEmPKfS4_S4_S4_S4_S4_S4_S4_(ptr noundef nonnull align 8 dereferenceable(128) %0, i64 noundef %253, ptr noundef %255, ptr noundef %257, ptr noundef %259, ptr noundef %260, ptr noundef %261, ptr noundef %262, ptr noundef %263, ptr noundef %264)
          to label %265 unwind label %284

265:                                              ; preds = %250
  %266 = getelementptr inbounds %"struct.Glip::Modules::OBJLoader::UnshapedData", ptr %17, i32 0, i32 8
  %267 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %266) #7
  %268 = getelementptr inbounds %"struct.Glip::Modules::OBJLoader::UnshapedData", ptr %17, i32 0, i32 8
  %269 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEE5frontEv(ptr noundef nonnull align 8 dereferenceable(24) %268) #7
  %270 = getelementptr inbounds %"struct.Glip::Modules::OBJLoader::UnshapedData", ptr %17, i32 0, i32 11
  %271 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEE5frontEv(ptr noundef nonnull align 8 dereferenceable(24) %270) #7
  %272 = getelementptr inbounds %"struct.Glip::Modules::OBJLoader::UnshapedData", ptr %17, i32 0, i32 14
  %273 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEE5frontEv(ptr noundef nonnull align 8 dereferenceable(24) %272) #7
  invoke void @_ZN4Glip12CorePipeline18GeometryPrimitives11CustomModel11newElementsEmPjS3_S3_S3_(ptr noundef nonnull align 8 dereferenceable(128) %0, i64 noundef %267, ptr noundef %269, ptr noundef %271, ptr noundef %273, ptr noundef null)
          to label %274 unwind label %284

274:                                              ; preds = %265
  %275 = invoke noundef zeroext i1 @_ZNK4Glip12CorePipeline13GeometryModel11testIndicesEv(ptr noundef nonnull align 8 dereferenceable(128) %0)
          to label %276 unwind label %284

276:                                              ; preds = %274
  br i1 %275, label %310, label %277

277:                                              ; preds = %276
  store i1 true, ptr %40, align 1
  %278 = call ptr @__cxa_allocate_exception(i64 152) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %35) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %36) #7
  %279 = load ptr, ptr %5, align 8, !tbaa !5
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %36, ptr noundef @.str.48, ptr noundef nonnull align 8 dereferenceable(32) %279)
          to label %280 unwind label %288

280:                                              ; preds = %277
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %35, ptr noundef nonnull align 8 dereferenceable(32) %36, ptr noundef @.str.25)
          to label %281 unwind label %292

281:                                              ; preds = %280
  call void @llvm.lifetime.start.p0(i64 1, ptr %38) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %38) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %37, ptr noundef @.str.46, ptr noundef nonnull align 1 dereferenceable(1) %38)
          to label %282 unwind label %296

282:                                              ; preds = %281
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #7
  store i32 2, ptr %39, align 4, !tbaa !13
  invoke void @_ZN4Glip9ExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_iRKNS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(152) %278, ptr noundef nonnull align 8 dereferenceable(32) %35, ptr noundef %37, i32 noundef 580, ptr noundef nonnull align 4 dereferenceable(4) %39)
          to label %283 unwind label %300

283:                                              ; preds = %282
  store i1 false, ptr %40, align 1
  invoke void @__cxa_throw(ptr %278, ptr @_ZTIN4Glip9ExceptionE, ptr @_ZN4Glip9ExceptionD1Ev) #8
          to label %324 unwind label %300

284:                                              ; preds = %274, %265, %250
  %285 = landingpad { ptr, i32 }
          cleanup
  %286 = extractvalue { ptr, i32 } %285, 0
  store ptr %286, ptr %8, align 8
  %287 = extractvalue { ptr, i32 } %285, 1
  store i32 %287, ptr %9, align 4
  br label %312

288:                                              ; preds = %277
  %289 = landingpad { ptr, i32 }
          cleanup
  %290 = extractvalue { ptr, i32 } %289, 0
  store ptr %290, ptr %8, align 8
  %291 = extractvalue { ptr, i32 } %289, 1
  store i32 %291, ptr %9, align 4
  br label %306

292:                                              ; preds = %280
  %293 = landingpad { ptr, i32 }
          cleanup
  %294 = extractvalue { ptr, i32 } %293, 0
  store ptr %294, ptr %8, align 8
  %295 = extractvalue { ptr, i32 } %293, 1
  store i32 %295, ptr %9, align 4
  br label %305

296:                                              ; preds = %281
  %297 = landingpad { ptr, i32 }
          cleanup
  %298 = extractvalue { ptr, i32 } %297, 0
  store ptr %298, ptr %8, align 8
  %299 = extractvalue { ptr, i32 } %297, 1
  store i32 %299, ptr %9, align 4
  br label %304

300:                                              ; preds = %283, %282
  %301 = landingpad { ptr, i32 }
          cleanup
  %302 = extractvalue { ptr, i32 } %301, 0
  store ptr %302, ptr %8, align 8
  %303 = extractvalue { ptr, i32 } %301, 1
  store i32 %303, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #7
  br label %304

304:                                              ; preds = %300, %296
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %38) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %38) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #7
  br label %305

305:                                              ; preds = %304, %292
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #7
  br label %306

306:                                              ; preds = %305, %288
  call void @llvm.lifetime.end.p0(i64 32, ptr %36) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %35) #7
  %307 = load i1, ptr %40, align 1
  br i1 %307, label %308, label %309

308:                                              ; preds = %306
  call void @__cxa_free_exception(ptr %278) #7
  br label %309

309:                                              ; preds = %308, %306
  br label %312

310:                                              ; preds = %276
  store i1 true, ptr %29, align 1
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #7
  %311 = load i1, ptr %29, align 1
  br i1 %311, label %314, label %313

312:                                              ; preds = %309, %284
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #7
  call void @_ZN4Glip12CorePipeline13GeometryModelD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %0) #7
  br label %315

313:                                              ; preds = %310
  call void @_ZN4Glip12CorePipeline13GeometryModelD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %0) #7
  br label %314

314:                                              ; preds = %313, %310
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %22) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #7
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %20) #7
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %19) #7
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %18) #7
  call void @_ZN4Glip7Modules9OBJLoader12UnshapedDataD2Ev(ptr noundef nonnull align 8 dereferenceable(410) %17) #7
  call void @llvm.lifetime.end.p0(i64 416, ptr %17) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #7
  call void @_ZNSt14basic_ifstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(256) %7) #7
  call void @llvm.lifetime.end.p0(i64 520, ptr %7) #7
  ret void

315:                                              ; preds = %312, %197, %161
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %22) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #7
  br label %316

316:                                              ; preds = %315, %157
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %20) #7
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %19) #7
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %18) #7
  br label %317

317:                                              ; preds = %316, %153
  call void @_ZN4Glip7Modules9OBJLoader12UnshapedDataD2Ev(ptr noundef nonnull align 8 dereferenceable(410) %17) #7
  call void @llvm.lifetime.end.p0(i64 416, ptr %17) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #7
  br label %318

318:                                              ; preds = %317, %93, %68
  call void @_ZNSt14basic_ifstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(256) %7) #7
  call void @llvm.lifetime.end.p0(i64 520, ptr %7) #7
  br label %319

319:                                              ; preds = %318
  %320 = load ptr, ptr %8, align 8
  %321 = load i32, ptr %9, align 4
  %322 = insertvalue { ptr, i32 } poison, ptr %320, 0
  %323 = insertvalue { ptr, i32 } %322, i32 %321, 1
  resume { ptr, i32 } %323

324:                                              ; preds = %283, %175, %67
  unreachable
}

; Function Attrs: nounwind
declare void @_ZN4Glip12CorePipeline13GeometryModelD2Ev(ptr noundef nonnull align 8 dereferenceable(128)) unnamed_addr #4

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare noundef zeroext i1 @_ZNSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv(ptr noundef nonnull align 8 dereferenceable(256)) #1 align 2

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

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

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

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

declare noundef nonnull align 8 dereferenceable(16) ptr @_ZNSi5seekgElSt12_Ios_Seekdir(ptr noundef nonnull align 8 dereferenceable(16), i64 noundef, i32 noundef) #3

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

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

; Function Attrs: mustprogress uwtable
declare void @_ZNSt14basic_ifstreamIcSt11char_traitsIcEE5closeEv(ptr noundef nonnull align 8 dereferenceable(256)) #2 align 2

declare void @_ZN4Glip12CorePipeline18GeometryPrimitives11CustomModelC1Eijbb(ptr noundef nonnull align 8 dereferenceable(128), i32 noundef, i32 noundef, i1 noundef zeroext, i1 noundef zeroext) unnamed_addr #3

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

declare void @_ZN4Glip12CorePipeline18GeometryPrimitives11CustomModel13newVertices3DEmPKfS4_S4_S4_S4_S4_S4_S4_(ptr noundef nonnull align 8 dereferenceable(128), i64 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #3

declare void @_ZN4Glip12CorePipeline18GeometryPrimitives11CustomModel11newElementsEmPjS3_S3_S3_(ptr noundef nonnull align 8 dereferenceable(128), i64 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #3

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

declare noundef zeroext i1 @_ZNK4Glip12CorePipeline13GeometryModel11testIndicesEv(ptr noundef nonnull align 8 dereferenceable(128)) #3

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

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

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

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 #2 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { "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 = { 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 #5 = { 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 #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 = { nounwind }
attributes #8 = { 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 = !{!"bool", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"vtable pointer", !8, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"_ZTSN4Glip9Exception4TypeE", !7, i64 0}
!15 = !{!16, !16, i64 0}
!16 = !{!"int", !7, i64 0}
!17 = !{!18, !10, i64 408}
!18 = !{!"_ZTSN4Glip7Modules9OBJLoader12UnshapedDataE", !19, i64 0, !19, i64 24, !19, i64 48, !19, i64 72, !19, i64 96, !19, i64 120, !19, i64 144, !19, i64 168, !23, i64 192, !23, i64 216, !23, i64 240, !23, i64 264, !23, i64 288, !23, i64 312, !23, i64 336, !23, i64 360, !23, i64 384, !10, i64 408, !10, i64 409}
!19 = !{!"_ZTSSt6vectorIfSaIfEE", !20, i64 0}
!20 = !{!"_ZTSSt12_Vector_baseIfSaIfEE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseIfSaIfEE12_Vector_implE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseIfSaIfEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!23 = !{!"_ZTSSt6vectorIjSaIjEE", !24, i64 0}
!24 = !{!"_ZTSSt12_Vector_baseIjSaIjEE", !25, i64 0}
!25 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE12_Vector_implE", !26, i64 0}
!26 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!27 = !{!18, !10, i64 409}
!28 = !{i8 0, i8 2}
!29 = !{}
!30 = distinct !{!30, !31}
!31 = !{!"llvm.loop.mustprogress"}


; 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.Glip::CorePipeline::GeometryPrimitives::CustomModel" = type { %"class.Glip::CorePipeline::GeometryModel" }
%"class.Glip::CorePipeline::GeometryModel" = type { ptr, %"class.std::vector.13", %"class.std::vector.13", %"class.std::vector.13", %"class.std::vector.8", i32, i8, i8, i32, i32, i32, i32 }
%"class.std::vector.13" = type { %"struct.std::_Vector_base.14" }
%"struct.std::_Vector_base.14" = type { %"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl" }
%"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl" = type { %"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl_data" }
%"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.8" = type { %"struct.std::_Vector_base.9" }
%"struct.std::_Vector_base.9" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::basic_ifstream" = type { %"class.std::basic_istream.base", %"class.std::basic_filebuf", %"class.std::basic_ios" }
%"class.std::basic_istream.base" = type { ptr, i64 }
%"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.59 }
%union.anon.59 = 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.std::allocator" = type { i8 }
%"struct.Glip::Modules::OBJLoader::UnshapedData" = type <{ %"class.std::vector.13", %"class.std::vector.13", %"class.std::vector.13", %"class.std::vector.13", %"class.std::vector.13", %"class.std::vector.13", %"class.std::vector.13", %"class.std::vector.13", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.8", i8, i8, [6 x i8] }>

@_ZTIN4Glip9ExceptionE = external constant ptr
@.str.25 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [97 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [63 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [50 x i8], align 1

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

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

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

declare i32 @__gxx_personality_v0(...)

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

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

declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr

declare void @_ZN4Glip9ExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_iRKNS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(152), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, i32 noundef, ptr noundef nonnull align 4 dereferenceable(4)) unnamed_addr #3

; Function Attrs: nounwind
declare void @_ZN4Glip9ExceptionD1Ev(ptr noundef nonnull align 8 dereferenceable(152)) unnamed_addr #4

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

declare void @__cxa_free_exception(ptr) local_unnamed_addr

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN4Glip7Modules9OBJLoader11processLineERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERNS1_12UnshapedDataEbiS9_RSt6vectorIjSaIjEESF_SF_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(410), i1 noundef zeroext, i32 noundef, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #1 align 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 #5

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_(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 #2

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN4Glip7Modules9OBJLoader4loadERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEb(ptr dead_on_unwind noalias writable sret(%"class.Glip::CorePipeline::GeometryPrimitives::CustomModel") align 8 %0, ptr noundef nonnull align 8 dereferenceable(32) %1, i1 noundef zeroext %2) local_unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca %"class.std::basic_ifstream", align 8
  %5 = alloca %"class.std::__cxx11::basic_string", align 8
  %6 = alloca %"class.std::__cxx11::basic_string", align 8
  %7 = alloca %"class.std::__cxx11::basic_string", align 8
  %8 = alloca %"class.std::allocator", align 1
  %9 = alloca i32, align 4
  %10 = alloca %"struct.Glip::Modules::OBJLoader::UnshapedData", align 8
  %11 = alloca %"class.std::vector.8", align 8
  %12 = alloca %"class.std::vector.8", align 8
  %13 = alloca %"class.std::vector.8", align 8
  %14 = alloca %"class.std::__cxx11::basic_string", align 8
  %15 = alloca %"class.std::__cxx11::basic_string", align 8
  %16 = alloca %"class.std::__cxx11::basic_string", align 8
  %17 = alloca %"class.std::__cxx11::basic_string", align 8
  %18 = alloca %"class.std::allocator", align 1
  %19 = alloca i32, align 4
  %20 = alloca %"class.std::__cxx11::basic_string", align 8
  %21 = alloca %"class.std::__cxx11::basic_string", align 8
  %22 = alloca %"class.std::__cxx11::basic_string", align 8
  %23 = alloca %"class.std::allocator", align 1
  %24 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 520, ptr nonnull %4) #7
  call void @_ZNSt14basic_ifstreamIcSt11char_traitsIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(256) %4)
  %25 = call noundef ptr @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5c_strEv(ptr noundef nonnull align 8 dereferenceable(32) %1) #7
  invoke void @_ZNSt14basic_ifstreamIcSt11char_traitsIcEE4openEPKcSt13_Ios_Openmode(ptr noundef nonnull align 8 dereferenceable(256) %4, ptr noundef %25, i32 noundef 8)
          to label %26 unwind label %47

26:                                               ; preds = %3
  %27 = call noundef zeroext i1 @_ZNSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv(ptr noundef nonnull align 8 dereferenceable(256) %4)
  br i1 %27, label %28, label %41

28:                                               ; preds = %26
  %29 = load ptr, ptr %4, align 8, !tbaa !5
  %30 = getelementptr i8, ptr %29, i64 -24
  %31 = load i64, ptr %30, align 8
  %32 = getelementptr inbounds i8, ptr %4, i64 %31
  %33 = call noundef zeroext i1 @_ZNKSt9basic_iosIcSt11char_traitsIcEE4goodEv(ptr noundef nonnull align 8 dereferenceable(264) %32)
  br i1 %33, label %34, label %41

34:                                               ; preds = %28
  %35 = load ptr, ptr %4, align 8, !tbaa !5
  %36 = getelementptr i8, ptr %35, i64 -24
  %37 = load i64, ptr %36, align 8
  %38 = getelementptr inbounds i8, ptr %4, i64 %37
  %39 = invoke noundef zeroext i1 @_ZNKSt9basic_iosIcSt11char_traitsIcEE4failEv(ptr noundef nonnull align 8 dereferenceable(264) %38)
          to label %40 unwind label %47

40:                                               ; preds = %34
  br i1 %39, label %41, label %57

41:                                               ; preds = %40, %28, %26
  %42 = call ptr @__cxa_allocate_exception(i64 152) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) #7
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %6, ptr noundef nonnull @.str.45, ptr noundef nonnull align 8 dereferenceable(32) %1)
          to label %43 unwind label %.thread

43:                                               ; preds = %41
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %5, ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull @.str.25)
          to label %44 unwind label %.thread65

44:                                               ; preds = %43
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %8) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull @.str.46, ptr noundef nonnull align 1 dereferenceable(1) %8)
          to label %45 unwind label %51

45:                                               ; preds = %44
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #7
  store i32 2, ptr %9, align 4, !tbaa !8
  invoke void @_ZN4Glip9ExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_iRKNS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(152) %42, ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull %7, i32 noundef 515, ptr noundef nonnull align 4 dereferenceable(4) %9)
          to label %46 unwind label %53

46:                                               ; preds = %45
  invoke void @__cxa_throw(ptr nonnull %42, ptr nonnull @_ZTIN4Glip9ExceptionE, ptr nonnull @_ZN4Glip9ExceptionD1Ev) #8
          to label %201 unwind label %53

47:                                               ; preds = %34, %3
  %48 = landingpad { ptr, i32 }
          cleanup
  br label %200

.thread:                                          ; preds = %41
  %49 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #7
  br label %56

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

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

53:                                               ; preds = %46, %45
  %.036 = phi i1 [ false, %46 ], [ true, %45 ]
  %54 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #7
  br label %55

55:                                               ; preds = %51, %53
  %.137 = phi i1 [ %.036, %53 ], [ true, %51 ]
  %.pn57 = phi { ptr, i32 } [ %54, %53 ], [ %52, %51 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #7
  br i1 %.137, label %56, label %200

56:                                               ; preds = %.thread65, %.thread, %55
  %.pn57.pn.pn64 = phi { ptr, i32 } [ %49, %.thread ], [ %.pn57, %55 ], [ %50, %.thread65 ]
  call void @__cxa_free_exception(ptr %42) #7
  br label %200

57:                                               ; preds = %40
  call void @llvm.lifetime.start.p0(i64 416, ptr nonnull %10) #7
  call void @_ZN4Glip7Modules9OBJLoader12UnshapedDataC2Ev(ptr noundef nonnull align 8 dereferenceable(410) %10) #7
  %58 = getelementptr inbounds i8, ptr %10, i64 408
  store i8 0, ptr %58, align 8, !tbaa !11
  %59 = getelementptr inbounds i8, ptr %10, i64 409
  store i8 0, ptr %59, align 1, !tbaa !23
  invoke void @_ZNSt6vectorIfSaIfEE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %10, i64 noundef 65536)
          to label %60 unwind label %108

60:                                               ; preds = %57
  %61 = getelementptr inbounds i8, ptr %10, i64 24
  invoke void @_ZNSt6vectorIfSaIfEE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %61, i64 noundef 65536)
          to label %62 unwind label %108

62:                                               ; preds = %60
  %63 = getelementptr inbounds i8, ptr %10, i64 48
  invoke void @_ZNSt6vectorIfSaIfEE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %63, i64 noundef 65536)
          to label %64 unwind label %108

64:                                               ; preds = %62
  %65 = getelementptr inbounds i8, ptr %10, i64 72
  invoke void @_ZNSt6vectorIfSaIfEE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %65, i64 noundef 65536)
          to label %66 unwind label %108

66:                                               ; preds = %64
  %67 = getelementptr inbounds i8, ptr %10, i64 96
  invoke void @_ZNSt6vectorIfSaIfEE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %67, i64 noundef 65536)
          to label %68 unwind label %108

68:                                               ; preds = %66
  %69 = getelementptr inbounds i8, ptr %10, i64 120
  invoke void @_ZNSt6vectorIfSaIfEE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %69, i64 noundef 65536)
          to label %70 unwind label %108

70:                                               ; preds = %68
  %71 = getelementptr inbounds i8, ptr %10, i64 144
  invoke void @_ZNSt6vectorIfSaIfEE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %71, i64 noundef 65536)
          to label %72 unwind label %108

72:                                               ; preds = %70
  %73 = getelementptr inbounds i8, ptr %10, i64 168
  invoke void @_ZNSt6vectorIfSaIfEE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %73, i64 noundef 65536)
          to label %74 unwind label %108

74:                                               ; preds = %72
  %75 = getelementptr inbounds i8, ptr %10, i64 192
  invoke void @_ZNSt6vectorIjSaIjEE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %75, i64 noundef 65536)
          to label %76 unwind label %108

76:                                               ; preds = %74
  %77 = getelementptr inbounds i8, ptr %10, i64 216
  invoke void @_ZNSt6vectorIjSaIjEE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %77, i64 noundef 65536)
          to label %78 unwind label %108

78:                                               ; preds = %76
  %79 = getelementptr inbounds i8, ptr %10, i64 240
  invoke void @_ZNSt6vectorIjSaIjEE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %79, i64 noundef 65536)
          to label %80 unwind label %108

80:                                               ; preds = %78
  %81 = getelementptr inbounds i8, ptr %10, i64 264
  invoke void @_ZNSt6vectorIjSaIjEE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %81, i64 noundef 65536)
          to label %82 unwind label %108

82:                                               ; preds = %80
  %83 = getelementptr inbounds i8, ptr %10, i64 288
  invoke void @_ZNSt6vectorIjSaIjEE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %83, i64 noundef 65536)
          to label %84 unwind label %108

84:                                               ; preds = %82
  %85 = getelementptr inbounds i8, ptr %10, i64 312
  invoke void @_ZNSt6vectorIjSaIjEE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %85, i64 noundef 65536)
          to label %86 unwind label %108

86:                                               ; preds = %84
  %87 = getelementptr inbounds i8, ptr %10, i64 336
  invoke void @_ZNSt6vectorIjSaIjEE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %87, i64 noundef 65536)
          to label %88 unwind label %108

88:                                               ; preds = %86
  %89 = getelementptr inbounds i8, ptr %10, i64 360
  invoke void @_ZNSt6vectorIjSaIjEE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %89, i64 noundef 65536)
          to label %90 unwind label %108

90:                                               ; preds = %88
  %91 = getelementptr inbounds i8, ptr %10, i64 384
  invoke void @_ZNSt6vectorIjSaIjEE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %91, i64 noundef 65536)
          to label %92 unwind label %108

92:                                               ; preds = %90
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %11) #7
  call void @_ZNSt6vectorIjSaIjEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %12) #7
  call void @_ZNSt6vectorIjSaIjEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #7
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %13) #7
  call void @_ZNSt6vectorIjSaIjEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #7
  invoke void @_ZNSt6vectorIjSaIjEE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %11, i64 noundef 8)
          to label %93 unwind label %110

93:                                               ; preds = %92
  invoke void @_ZNSt6vectorIjSaIjEE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %12, i64 noundef 8)
          to label %94 unwind label %110

94:                                               ; preds = %93
  invoke void @_ZNSt6vectorIjSaIjEE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef 8)
          to label %95 unwind label %110

95:                                               ; preds = %94
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %14) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #7
  %96 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNSi5seekgElSt12_Ios_Seekdir(ptr noundef nonnull align 8 dereferenceable(16) %4, i64 noundef 0, i32 noundef 0)
          to label %.preheader unwind label %.loopexit.split-lp

.preheader:                                       ; preds = %95, %106
  %.040 = phi i32 [ %107, %106 ], [ 1, %95 ]
  %97 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZSt7getlineIcSt11char_traitsIcESaIcEERSt13basic_istreamIT_T0_ES7_RNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(16) %4, ptr noundef nonnull align 8 dereferenceable(32) %14)
          to label %98 unwind label %.loopexit

98:                                               ; preds = %.preheader
  %99 = load ptr, ptr %97, align 8, !tbaa !5
  %100 = getelementptr i8, ptr %99, i64 -24
  %101 = load i64, ptr %100, align 8
  %102 = getelementptr inbounds i8, ptr %97, i64 %101
  %103 = invoke noundef zeroext i1 @_ZNKSt9basic_iosIcSt11char_traitsIcEEcvbEv(ptr noundef nonnull align 8 dereferenceable(264) %102)
          to label %104 unwind label %.loopexit

104:                                              ; preds = %98
  br i1 %103, label %105, label %112

105:                                              ; preds = %104
  invoke void @_ZN4Glip7Modules9OBJLoader11processLineERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERNS1_12UnshapedDataEbiS9_RSt6vectorIjSaIjEESF_SF_(ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef nonnull align 8 dereferenceable(410) %10, i1 noundef zeroext %2, i32 noundef %.040, ptr noundef nonnull align 8 dereferenceable(32) %1, ptr noundef nonnull align 8 dereferenceable(24) %11, ptr noundef nonnull align 8 dereferenceable(24) %12, ptr noundef nonnull align 8 dereferenceable(24) %13)
          to label %106 unwind label %.loopexit

106:                                              ; preds = %105
  %107 = add nuw nsw i32 %.040, 1
  br label %.preheader, !llvm.loop !24

108:                                              ; preds = %90, %88, %86, %84, %82, %80, %78, %76, %74, %72, %70, %68, %66, %64, %62, %60, %57
  %109 = landingpad { ptr, i32 }
          cleanup
  br label %199

110:                                              ; preds = %94, %93, %92
  %111 = landingpad { ptr, i32 }
          cleanup
  br label %198

.loopexit:                                        ; preds = %.preheader, %98, %105
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %197

.loopexit.split-lp:                               ; preds = %95, %112, %113, %130, %131
  %lpad.loopexit.split-lp = landingpad { ptr, i32 }
          cleanup
  br label %197

112:                                              ; preds = %104
  invoke void @_ZNSt14basic_ifstreamIcSt11char_traitsIcEE5closeEv(ptr noundef nonnull align 8 dereferenceable(256) %4)
          to label %113 unwind label %.loopexit.split-lp

113:                                              ; preds = %112
  call void @_ZN4Glip7Modules9OBJLoader17completeModelDataERNS1_12UnshapedDataE(ptr noundef nonnull align 8 dereferenceable(410) %10)
  %114 = invoke noundef zeroext i1 @_ZN4Glip7Modules9OBJLoader11testIndicesERKNS1_12UnshapedDataE(ptr noundef nonnull align 8 dereferenceable(410) %10)
          to label %115 unwind label %.loopexit.split-lp

115:                                              ; preds = %113
  br i1 %114, label %130, label %116

116:                                              ; preds = %115
  %117 = call ptr @__cxa_allocate_exception(i64 152) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %15) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %16) #7
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %16, ptr noundef nonnull @.str.47, ptr noundef nonnull align 8 dereferenceable(32) %1)
          to label %118 unwind label %.thread68

118:                                              ; preds = %116
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %15, ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef nonnull @.str.25)
          to label %119 unwind label %.thread72

119:                                              ; preds = %118
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %18) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %17, ptr noundef nonnull @.str.46, ptr noundef nonnull align 1 dereferenceable(1) %18)
          to label %120 unwind label %124

120:                                              ; preds = %119
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %19) #7
  store i32 2, ptr %19, align 4, !tbaa !8
  invoke void @_ZN4Glip9ExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_iRKNS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(152) %117, ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef nonnull %17, i32 noundef 563, ptr noundef nonnull align 4 dereferenceable(4) %19)
          to label %121 unwind label %126

121:                                              ; preds = %120
  invoke void @__cxa_throw(ptr nonnull %117, ptr nonnull @_ZTIN4Glip9ExceptionE, ptr nonnull @_ZN4Glip9ExceptionD1Ev) #8
          to label %201 unwind label %126

.thread68:                                        ; preds = %116
  %122 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #7
  br label %129

.thread72:                                        ; preds = %118
  %123 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #7
  br label %129

124:                                              ; preds = %119
  %125 = landingpad { ptr, i32 }
          cleanup
  br label %128

126:                                              ; preds = %121, %120
  %.041 = phi i1 [ false, %121 ], [ true, %120 ]
  %127 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #7
  br label %128

128:                                              ; preds = %124, %126
  %.142 = phi i1 [ %.041, %126 ], [ true, %124 ]
  %.pn = phi { ptr, i32 } [ %127, %126 ], [ %125, %124 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %18) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %18) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %16) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %15) #7
  br i1 %.142, label %129, label %197

129:                                              ; preds = %.thread72, %.thread68, %128
  %.pn.pn.pn71 = phi { ptr, i32 } [ %122, %.thread68 ], [ %.pn, %128 ], [ %123, %.thread72 ]
  call void @__cxa_free_exception(ptr %117) #7
  br label %197

130:                                              ; preds = %115
  invoke void @_ZN4Glip7Modules9OBJLoader11reorderDataERNS1_12UnshapedDataE(ptr noundef nonnull align 8 dereferenceable(410) %10)
          to label %131 unwind label %.loopexit.split-lp

131:                                              ; preds = %130
  %132 = load i8, ptr %58, align 8, !tbaa !11, !range !26, !noundef !27
  %133 = trunc nuw i8 %132 to i1
  %134 = load i8, ptr %59, align 1, !tbaa !23, !range !26, !noundef !27
  %135 = trunc nuw i8 %134 to i1
  invoke void @_ZN4Glip12CorePipeline18GeometryPrimitives11CustomModelC1Eijbb(ptr noundef nonnull align 8 dereferenceable(128) %0, i32 noundef 3, i32 noundef 4, i1 noundef zeroext %133, i1 noundef zeroext %135)
          to label %136 unwind label %.loopexit.split-lp

136:                                              ; preds = %131
  %137 = load i8, ptr %58, align 8, !tbaa !11, !range !26, !noundef !27
  %138 = trunc nuw i8 %137 to i1
  br i1 %138, label %139, label %141

139:                                              ; preds = %136
  %140 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEE5frontEv(ptr noundef nonnull align 8 dereferenceable(24) %65) #7
  %.pre = load i8, ptr %58, align 8, !tbaa !11, !range !26
  br label %141

141:                                              ; preds = %136, %139
  %142 = phi i8 [ %.pre, %139 ], [ %137, %136 ]
  %143 = phi ptr [ %140, %139 ], [ null, %136 ]
  %144 = trunc nuw i8 %142 to i1
  br i1 %144, label %145, label %147

145:                                              ; preds = %141
  %146 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEE5frontEv(ptr noundef nonnull align 8 dereferenceable(24) %67) #7
  %.pre82 = load i8, ptr %58, align 8, !tbaa !11, !range !26
  br label %147

147:                                              ; preds = %141, %145
  %148 = phi i8 [ %.pre82, %145 ], [ %142, %141 ]
  %149 = phi ptr [ %146, %145 ], [ null, %141 ]
  %150 = trunc nuw i8 %148 to i1
  br i1 %150, label %151, label %153

151:                                              ; preds = %147
  %152 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEE5frontEv(ptr noundef nonnull align 8 dereferenceable(24) %69) #7
  br label %153

153:                                              ; preds = %147, %151
  %154 = phi ptr [ %152, %151 ], [ null, %147 ]
  %155 = load i8, ptr %59, align 1, !tbaa !23, !range !26, !noundef !27
  %156 = trunc nuw i8 %155 to i1
  br i1 %156, label %157, label %159

157:                                              ; preds = %153
  %158 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEE5frontEv(ptr noundef nonnull align 8 dereferenceable(24) %71) #7
  %.pre83 = load i8, ptr %59, align 1, !tbaa !23, !range !26
  br label %159

159:                                              ; preds = %153, %157
  %160 = phi i8 [ %.pre83, %157 ], [ %155, %153 ]
  %161 = phi ptr [ %158, %157 ], [ null, %153 ]
  %162 = trunc nuw i8 %160 to i1
  br i1 %162, label %163, label %165

163:                                              ; preds = %159
  %164 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEE5frontEv(ptr noundef nonnull align 8 dereferenceable(24) %73) #7
  br label %165

165:                                              ; preds = %159, %163
  %166 = phi ptr [ %164, %163 ], [ null, %159 ]
  %167 = call noundef i64 @_ZNKSt6vectorIfSaIfEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %10) #7
  %168 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEE5frontEv(ptr noundef nonnull align 8 dereferenceable(24) %10) #7
  %169 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEE5frontEv(ptr noundef nonnull align 8 dereferenceable(24) %61) #7
  %170 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIfSaIfEE5frontEv(ptr noundef nonnull align 8 dereferenceable(24) %63) #7
  invoke void @_ZN4Glip12CorePipeline18GeometryPrimitives11CustomModel13newVertices3DEmPKfS4_S4_S4_S4_S4_S4_S4_(ptr noundef nonnull align 8 dereferenceable(128) %0, i64 noundef %167, ptr noundef nonnull %168, ptr noundef nonnull %169, ptr noundef nonnull %170, ptr noundef %143, ptr noundef %149, ptr noundef %154, ptr noundef %161, ptr noundef %166)
          to label %171 unwind label %185

171:                                              ; preds = %165
  %172 = call noundef i64 @_ZNKSt6vectorIjSaIjEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %75) #7
  %173 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEE5frontEv(ptr noundef nonnull align 8 dereferenceable(24) %75) #7
  %174 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEE5frontEv(ptr noundef nonnull align 8 dereferenceable(24) %81) #7
  %175 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIjSaIjEE5frontEv(ptr noundef nonnull align 8 dereferenceable(24) %87) #7
  invoke void @_ZN4Glip12CorePipeline18GeometryPrimitives11CustomModel11newElementsEmPjS3_S3_S3_(ptr noundef nonnull align 8 dereferenceable(128) %0, i64 noundef %172, ptr noundef nonnull %173, ptr noundef nonnull %174, ptr noundef nonnull %175, ptr noundef null)
          to label %176 unwind label %185

176:                                              ; preds = %171
  %177 = invoke noundef zeroext i1 @_ZNK4Glip12CorePipeline13GeometryModel11testIndicesEv(ptr noundef nonnull align 8 dereferenceable(128) %0)
          to label %178 unwind label %185

178:                                              ; preds = %176
  br i1 %177, label %196, label %179

179:                                              ; preds = %178
  %180 = call ptr @__cxa_allocate_exception(i64 152) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %20) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %21) #7
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_RKS8_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %21, ptr noundef nonnull @.str.48, ptr noundef nonnull align 8 dereferenceable(32) %1)
          to label %181 unwind label %.thread75

181:                                              ; preds = %179
  invoke void @_ZStplIcSt11char_traitsIcESaIcEENSt7__cxx1112basic_stringIT_T0_T1_EEOS8_PKS5_(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %20, ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef nonnull @.str.25)
          to label %182 unwind label %.thread79

182:                                              ; preds = %181
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %23) #7
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #7
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %22, ptr noundef nonnull @.str.46, ptr noundef nonnull align 1 dereferenceable(1) %23)
          to label %183 unwind label %189

183:                                              ; preds = %182
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %24) #7
  store i32 2, ptr %24, align 4, !tbaa !8
  invoke void @_ZN4Glip9ExceptionC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_iRKNS0_4TypeE(ptr noundef nonnull align 8 dereferenceable(152) %180, ptr noundef nonnull align 8 dereferenceable(32) %20, ptr noundef nonnull %22, i32 noundef 580, ptr noundef nonnull align 4 dereferenceable(4) %24)
          to label %184 unwind label %191

184:                                              ; preds = %183
  invoke void @__cxa_throw(ptr nonnull %180, ptr nonnull @_ZTIN4Glip9ExceptionE, ptr nonnull @_ZN4Glip9ExceptionD1Ev) #8
          to label %201 unwind label %191

185:                                              ; preds = %176, %171, %165
  %186 = landingpad { ptr, i32 }
          cleanup
  br label %195

.thread75:                                        ; preds = %179
  %187 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #7
  br label %194

.thread79:                                        ; preds = %181
  %188 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #7
  br label %194

189:                                              ; preds = %182
  %190 = landingpad { ptr, i32 }
          cleanup
  br label %193

191:                                              ; preds = %184, %183
  %.0 = phi i1 [ false, %184 ], [ true, %183 ]
  %192 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #7
  br label %193

193:                                              ; preds = %189, %191
  %.pn48 = phi { ptr, i32 } [ %192, %191 ], [ %190, %189 ]
  %.1 = phi i1 [ %.0, %191 ], [ true, %189 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %23) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #7
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #7
  br i1 %.1, label %194, label %195

194:                                              ; preds = %.thread79, %.thread75, %193
  %.pn48.pn.pn78 = phi { ptr, i32 } [ %187, %.thread75 ], [ %.pn48, %193 ], [ %188, %.thread79 ]
  call void @__cxa_free_exception(ptr %180) #7
  br label %195

195:                                              ; preds = %193, %194, %185
  %.pn48.pn.pn.pn = phi { ptr, i32 } [ %.pn48.pn.pn78, %194 ], [ %.pn48, %193 ], [ %186, %185 ]
  call void @_ZN4Glip12CorePipeline13GeometryModelD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %0) #7
  br label %197

196:                                              ; preds = %178
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #7
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %13) #7
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %12) #7
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11) #7
  call void @_ZN4Glip7Modules9OBJLoader12UnshapedDataD2Ev(ptr noundef nonnull align 8 dereferenceable(410) %10) #7
  call void @llvm.lifetime.end.p0(i64 416, ptr nonnull %10) #7
  call void @_ZNSt14basic_ifstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(256) %4) #7
  call void @llvm.lifetime.end.p0(i64 520, ptr nonnull %4) #7
  ret void

197:                                              ; preds = %.loopexit, %.loopexit.split-lp, %128, %129, %195
  %.pn53 = phi { ptr, i32 } [ %.pn48.pn.pn.pn, %195 ], [ %.pn.pn.pn71, %129 ], [ %.pn, %128 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #7
  br label %198

198:                                              ; preds = %197, %110
  %.pn53.pn = phi { ptr, i32 } [ %.pn53, %197 ], [ %111, %110 ]
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %13) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %13) #7
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %12) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %12) #7
  call void @_ZNSt6vectorIjSaIjEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11) #7
  br label %199

199:                                              ; preds = %198, %108
  %.pn53.pn.pn = phi { ptr, i32 } [ %.pn53.pn, %198 ], [ %109, %108 ]
  call void @_ZN4Glip7Modules9OBJLoader12UnshapedDataD2Ev(ptr noundef nonnull align 8 dereferenceable(410) %10) #7
  call void @llvm.lifetime.end.p0(i64 416, ptr nonnull %10) #7
  br label %200

200:                                              ; preds = %55, %56, %199, %47
  %.pn57.pn.pn.pn = phi { ptr, i32 } [ %.pn57.pn.pn64, %56 ], [ %.pn57, %55 ], [ %.pn53.pn.pn, %199 ], [ %48, %47 ]
  call void @_ZNSt14basic_ifstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(256) %4) #7
  call void @llvm.lifetime.end.p0(i64 520, ptr nonnull %4) #7
  resume { ptr, i32 } %.pn57.pn.pn.pn

201:                                              ; preds = %184, %121, %46
  unreachable
}

; Function Attrs: nounwind
declare void @_ZN4Glip12CorePipeline13GeometryModelD2Ev(ptr noundef nonnull align 8 dereferenceable(128)) unnamed_addr #4

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

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

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

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

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

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

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

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

declare noundef nonnull align 8 dereferenceable(16) ptr @_ZNSi5seekgElSt12_Ios_Seekdir(ptr noundef nonnull align 8 dereferenceable(16), i64 noundef, i32 noundef) local_unnamed_addr #3

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

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

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

declare void @_ZN4Glip12CorePipeline18GeometryPrimitives11CustomModelC1Eijbb(ptr noundef nonnull align 8 dereferenceable(128), i32 noundef, i32 noundef, i1 noundef zeroext, i1 noundef zeroext) unnamed_addr #3

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

declare void @_ZN4Glip12CorePipeline18GeometryPrimitives11CustomModel13newVertices3DEmPKfS4_S4_S4_S4_S4_S4_S4_(ptr noundef nonnull align 8 dereferenceable(128), i64 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

declare void @_ZN4Glip12CorePipeline18GeometryPrimitives11CustomModel11newElementsEmPjS3_S3_S3_(ptr noundef nonnull align 8 dereferenceable(128), i64 noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

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

declare noundef zeroext i1 @_ZNK4Glip12CorePipeline13GeometryModel11testIndicesEv(ptr noundef nonnull align 8 dereferenceable(128)) local_unnamed_addr #3

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

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

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

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 #2 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { "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 = { 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 #5 = { 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 #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 = { nounwind }
attributes #8 = { 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 = !{!"_ZTSN4Glip9Exception4TypeE", !10, i64 0}
!10 = !{!"omnipotent char", !7, i64 0}
!11 = !{!12, !22, i64 408}
!12 = !{!"_ZTSN4Glip7Modules9OBJLoader12UnshapedDataE", !13, i64 0, !13, i64 24, !13, i64 48, !13, i64 72, !13, i64 96, !13, i64 120, !13, i64 144, !13, i64 168, !18, i64 192, !18, i64 216, !18, i64 240, !18, i64 264, !18, i64 288, !18, i64 312, !18, i64 336, !18, i64 360, !18, i64 384, !22, i64 408, !22, i64 409}
!13 = !{!"_ZTSSt6vectorIfSaIfEE", !14, i64 0}
!14 = !{!"_ZTSSt12_Vector_baseIfSaIfEE", !15, i64 0}
!15 = !{!"_ZTSNSt12_Vector_baseIfSaIfEE12_Vector_implE", !16, i64 0}
!16 = !{!"_ZTSNSt12_Vector_baseIfSaIfEE17_Vector_impl_dataE", !17, i64 0, !17, i64 8, !17, i64 16}
!17 = !{!"any pointer", !10, i64 0}
!18 = !{!"_ZTSSt6vectorIjSaIjEE", !19, i64 0}
!19 = !{!"_ZTSSt12_Vector_baseIjSaIjEE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE12_Vector_implE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE17_Vector_impl_dataE", !17, i64 0, !17, i64 8, !17, i64 16}
!22 = !{!"bool", !10, i64 0}
!23 = !{!12, !22, i64 409}
!24 = distinct !{!24, !25}
!25 = !{!"llvm.loop.mustprogress"}
!26 = !{i8 0, i8 2}
!27 = !{}


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