; LLVM IR from AcademySoftwareFoundation/openvdb :: nanovdb/nanovdb/cmd/validate (nanovdb_validate)

; 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::basic_ostream" = type { ptr, %"class.std::basic_ios" }
%"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::locale" = type { ptr }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator" = type { i8 }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%"class.std::vector.3" = type { %"struct.std::_Vector_base.4" }
%"struct.std::_Vector_base.4" = type { %"struct.std::_Vector_base<nanovdb::io::FileGridMetaData, std::allocator<nanovdb::io::FileGridMetaData>>::_Vector_impl" }
%"struct.std::_Vector_base<nanovdb::io::FileGridMetaData, std::allocator<nanovdb::io::FileGridMetaData>>::_Vector_impl" = type { %"struct.std::_Vector_base<nanovdb::io::FileGridMetaData, std::allocator<nanovdb::io::FileGridMetaData>>::_Vector_impl_data" }
%"struct.std::_Vector_base<nanovdb::io::FileGridMetaData, std::allocator<nanovdb::io::FileGridMetaData>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.8" = type { ptr }
%"class.nanovdb::GridHandle" = type { %"class.std::vector.11", %"class.nanovdb::HostBuffer" }
%"class.std::vector.11" = type { %"struct.std::_Vector_base.12" }
%"struct.std::_Vector_base.12" = type { %"struct.std::_Vector_base<nanovdb::GridHandleMetaData, std::allocator<nanovdb::GridHandleMetaData>>::_Vector_impl" }
%"struct.std::_Vector_base<nanovdb::GridHandleMetaData, std::allocator<nanovdb::GridHandleMetaData>>::_Vector_impl" = type { %"struct.std::_Vector_base<nanovdb::GridHandleMetaData, std::allocator<nanovdb::GridHandleMetaData>>::_Vector_impl_data" }
%"struct.std::_Vector_base<nanovdb::GridHandleMetaData, std::allocator<nanovdb::GridHandleMetaData>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.nanovdb::HostBuffer" = type { %"class.std::shared_ptr", i64, ptr }
%"class.std::shared_ptr" = type { %"class.std::__shared_ptr" }
%"class.std::__shared_ptr" = type { ptr, %"class.std::__shared_count" }
%"class.std::__shared_count" = type { ptr }
%"struct.nanovdb::io::FileMetaData" = type { i64, i64, i64, i64, i32, i32, %"struct.nanovdb::math::BBox", %"struct.nanovdb::math::BBox.9", %"class.nanovdb::math::Vec3", i32, [4 x i32], [3 x i32], i16, i16, %"class.nanovdb::Version" }
%"struct.nanovdb::math::BBox" = type { %"struct.nanovdb::math::BaseBBox" }
%"struct.nanovdb::math::BaseBBox" = type { [2 x %"class.nanovdb::math::Vec3"] }
%"struct.nanovdb::math::BBox.9" = type { %"struct.nanovdb::math::BaseBBox.10" }
%"struct.nanovdb::math::BaseBBox.10" = type { [2 x %"class.nanovdb::math::Coord"] }
%"class.nanovdb::math::Coord" = type { [3 x i32] }
%"class.nanovdb::math::Vec3" = type { [3 x double] }
%"class.nanovdb::Version" = type { i32 }
%"struct.nanovdb::io::FileGridMetaData" = type { %"struct.nanovdb::io::FileMetaData", %"class.std::__cxx11::basic_string" }

@_ZSt4cerr = external global %"class.std::basic_ostream", align 8
@.str.10 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [43 x i8], align 1
@_ZTISt9exception = external constant ptr
@_ZSt4cout = external global %"class.std::basic_ostream", align 8
@.str.23 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [2 x i8], align 1

; Function Attrs: mustprogress noreturn uwtable
declare dso_local void @_Z5usageRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEi(ptr noundef nonnull align 8 dereferenceable(32), i32 noundef) #0

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

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

; Function Attrs: mustprogress noreturn uwtable
declare dso_local void @_Z7versionPKci(ptr noundef, i32 noundef) #0

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

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

; Function Attrs: mustprogress norecurse uwtable
define dso_local noundef i32 @main(i32 noundef %0, ptr noundef %1) #3 personality ptr @__gxx_personality_v0 {
  %3 = alloca i32, align 4
  %4 = alloca i32, align 4
  %5 = alloca ptr, align 8
  %6 = alloca i32, align 4
  %7 = alloca i8, align 1
  %8 = alloca i32, align 4
  %9 = alloca %"class.std::__cxx11::basic_string", align 8
  %10 = alloca %"class.std::vector", align 8
  %11 = alloca i32, align 4
  %12 = alloca %"class.std::__cxx11::basic_string", align 8
  %13 = alloca %"class.std::allocator", align 1
  %14 = alloca ptr, align 8
  %15 = alloca i32, align 4
  %16 = alloca %"class.std::__cxx11::basic_string", align 8
  %17 = alloca %"class.std::allocator", align 1
  %18 = alloca %"class.std::__cxx11::basic_string", align 8
  %19 = alloca %"class.std::allocator", align 1
  %20 = alloca %"class.std::__cxx11::basic_string", align 8
  %21 = alloca %"class.std::allocator", align 1
  %22 = alloca %"class.std::__cxx11::basic_string", align 8
  %23 = alloca %"class.std::allocator", align 1
  %24 = alloca i64, align 8
  %25 = alloca ptr, align 8
  %26 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %27 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %28 = alloca i32, align 4
  %29 = alloca ptr, align 8
  %30 = alloca %"class.std::vector.3", align 8
  %31 = alloca %"class.std::vector.3", align 8
  %32 = alloca ptr, align 8
  %33 = alloca %"class.__gnu_cxx::__normal_iterator.8", align 8
  %34 = alloca %"class.__gnu_cxx::__normal_iterator.8", align 8
  %35 = alloca ptr, align 8
  %36 = alloca ptr, align 8
  %37 = alloca %"class.__gnu_cxx::__normal_iterator.8", align 8
  %38 = alloca %"class.__gnu_cxx::__normal_iterator.8", align 8
  %39 = alloca ptr, align 8
  %40 = alloca %"class.nanovdb::GridHandle", align 8
  %41 = alloca %"class.nanovdb::HostBuffer", align 8
  %42 = alloca i8, align 1
  %43 = alloca ptr, align 8
  store i32 0, ptr %3, align 4
  store i32 %0, ptr %4, align 4, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #9
  store i32 0, ptr %6, align 4, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %7) #9
  store i8 0, ptr %7, align 1, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #9
  store i32 2, ptr %8, align 4, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 32, ptr %9) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr %10) #9
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #9
  store i32 1, ptr %11, align 4, !tbaa !5
  br label %44

44:                                               ; preds = %182, %2
  %45 = load i32, ptr %11, align 4, !tbaa !5
  %46 = load i32, ptr %4, align 4, !tbaa !5
  %47 = icmp slt i32 %45, %46
  br i1 %47, label %49, label %48

48:                                               ; preds = %44
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #9
  br label %187

49:                                               ; preds = %44
  call void @llvm.lifetime.start.p0(i64 32, ptr %12) #9
  %50 = load ptr, ptr %5, align 8, !tbaa !9
  %51 = load i32, ptr %11, align 4, !tbaa !5
  %52 = sext i32 %51 to i64
  %53 = getelementptr inbounds ptr, ptr %50, i64 %52
  %54 = load ptr, ptr %53, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %13) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef %54, ptr noundef nonnull align 1 dereferenceable(1) %13)
          to label %55 unwind label %73

55:                                               ; preds = %49
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %13) #9
  %56 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %12, i64 noundef 0)
          to label %57 unwind label %77

57:                                               ; preds = %55
  %58 = load i8, ptr %56, align 1, !tbaa !15
  %59 = sext i8 %58 to i32
  %60 = icmp eq i32 %59, 45
  br i1 %60, label %61, label %176

61:                                               ; preds = %57
  %62 = invoke noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef @.str.10)
          to label %63 unwind label %77

63:                                               ; preds = %61
  br i1 %62, label %67, label %64

64:                                               ; preds = %63
  %65 = invoke noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef @.str.11)
          to label %66 unwind label %77

66:                                               ; preds = %64
  br i1 %65, label %67, label %90

67:                                               ; preds = %66, %63
  call void @llvm.lifetime.start.p0(i64 32, ptr %16) #9
  %68 = load ptr, ptr %5, align 8, !tbaa !9
  %69 = getelementptr inbounds ptr, ptr %68, i64 0
  %70 = load ptr, ptr %69, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %17) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef %70, ptr noundef nonnull align 1 dereferenceable(1) %17)
          to label %71 unwind label %81

71:                                               ; preds = %67
  invoke void @_Z5usageRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEi(ptr noundef nonnull align 8 dereferenceable(32) %16, i32 noundef 0) #10
          to label %72 unwind label %85

72:                                               ; preds = %71
  unreachable

73:                                               ; preds = %49
  %74 = landingpad { ptr, i32 }
          cleanup
  %75 = extractvalue { ptr, i32 } %74, 0
  store ptr %75, ptr %14, align 8
  %76 = extractvalue { ptr, i32 } %74, 1
  store i32 %76, ptr %15, align 4
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %13) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %13) #9
  br label %186

77:                                               ; preds = %178, %154, %152, %150, %140, %123, %115, %112, %108, %105, %101, %98, %93, %90, %64, %61, %55
  %78 = landingpad { ptr, i32 }
          cleanup
  %79 = extractvalue { ptr, i32 } %78, 0
  store ptr %79, ptr %14, align 8
  %80 = extractvalue { ptr, i32 } %78, 1
  store i32 %80, ptr %15, align 4
  br label %185

81:                                               ; preds = %67
  %82 = landingpad { ptr, i32 }
          cleanup
  %83 = extractvalue { ptr, i32 } %82, 0
  store ptr %83, ptr %14, align 8
  %84 = extractvalue { ptr, i32 } %82, 1
  store i32 %84, ptr %15, align 4
  br label %89

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

89:                                               ; preds = %85, %81
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %17) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %16) #9
  br label %185

90:                                               ; preds = %66
  %91 = invoke noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef @.str.12)
          to label %92 unwind label %77

92:                                               ; preds = %90
  br i1 %91, label %93, label %98

93:                                               ; preds = %92
  %94 = load ptr, ptr %5, align 8, !tbaa !9
  %95 = getelementptr inbounds ptr, ptr %94, i64 0
  %96 = load ptr, ptr %95, align 8, !tbaa !9
  invoke void @_Z7versionPKci(ptr noundef %96, i32 noundef 0) #10
          to label %97 unwind label %77

97:                                               ; preds = %93
  unreachable

98:                                               ; preds = %92
  %99 = invoke noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef @.str.13)
          to label %100 unwind label %77

100:                                              ; preds = %98
  br i1 %99, label %104, label %101

101:                                              ; preds = %100
  %102 = invoke noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef @.str.14)
          to label %103 unwind label %77

103:                                              ; preds = %101
  br i1 %102, label %104, label %105

104:                                              ; preds = %103, %100
  store i8 1, ptr %7, align 1, !tbaa !11
  br label %173

105:                                              ; preds = %103
  %106 = invoke noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef @.str.15)
          to label %107 unwind label %77

107:                                              ; preds = %105
  br i1 %106, label %111, label %108

108:                                              ; preds = %107
  %109 = invoke noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef @.str.16)
          to label %110 unwind label %77

110:                                              ; preds = %108
  br i1 %109, label %111, label %112

111:                                              ; preds = %110, %107
  store i32 1, ptr %8, align 4, !tbaa !13
  br label %172

112:                                              ; preds = %110
  %113 = invoke noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef @.str.17)
          to label %114 unwind label %77

114:                                              ; preds = %112
  br i1 %113, label %118, label %115

115:                                              ; preds = %114
  %116 = invoke noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef @.str.18)
          to label %117 unwind label %77

117:                                              ; preds = %115
  br i1 %116, label %118, label %150

118:                                              ; preds = %117, %114
  %119 = load i32, ptr %11, align 4, !tbaa !5
  %120 = add nsw i32 %119, 1
  %121 = load i32, ptr %4, align 4, !tbaa !5
  %122 = icmp eq i32 %120, %121
  br i1 %122, label %123, label %140

123:                                              ; preds = %118
  %124 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef @.str.19)
          to label %125 unwind label %77

125:                                              ; preds = %123
  call void @llvm.lifetime.start.p0(i64 32, ptr %18) #9
  %126 = load ptr, ptr %5, align 8, !tbaa !9
  %127 = getelementptr inbounds ptr, ptr %126, i64 0
  %128 = load ptr, ptr %127, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %19) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef %128, ptr noundef nonnull align 1 dereferenceable(1) %19)
          to label %129 unwind label %131

129:                                              ; preds = %125
  invoke void @_Z5usageRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEi(ptr noundef nonnull align 8 dereferenceable(32) %18, i32 noundef 1) #10
          to label %130 unwind label %135

130:                                              ; preds = %129
  unreachable

131:                                              ; preds = %125
  %132 = landingpad { ptr, i32 }
          cleanup
  %133 = extractvalue { ptr, i32 } %132, 0
  store ptr %133, ptr %14, align 8
  %134 = extractvalue { ptr, i32 } %132, 1
  store i32 %134, ptr %15, align 4
  br label %139

135:                                              ; preds = %129
  %136 = landingpad { ptr, i32 }
          cleanup
  %137 = extractvalue { ptr, i32 } %136, 0
  store ptr %137, ptr %14, align 8
  %138 = extractvalue { ptr, i32 } %136, 1
  store i32 %138, ptr %15, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #9
  br label %139

139:                                              ; preds = %135, %131
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %18) #9
  br label %185

140:                                              ; preds = %118
  %141 = load ptr, ptr %5, align 8, !tbaa !9
  %142 = load i32, ptr %11, align 4, !tbaa !5
  %143 = add nsw i32 %142, 1
  store i32 %143, ptr %11, align 4, !tbaa !5
  %144 = sext i32 %143 to i64
  %145 = getelementptr inbounds ptr, ptr %141, i64 %144
  %146 = load ptr, ptr %145, align 8, !tbaa !9
  %147 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6assignEPKc(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef %146)
          to label %148 unwind label %77

148:                                              ; preds = %140
  br label %149

149:                                              ; preds = %148
  br label %171

150:                                              ; preds = %117
  %151 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef @.str.20)
          to label %152 unwind label %77

152:                                              ; preds = %150
  %153 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %151, ptr noundef nonnull align 8 dereferenceable(32) %12)
          to label %154 unwind label %77

154:                                              ; preds = %152
  %155 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %153, ptr noundef @.str.21)
          to label %156 unwind label %77

156:                                              ; preds = %154
  call void @llvm.lifetime.start.p0(i64 32, ptr %20) #9
  %157 = load ptr, ptr %5, align 8, !tbaa !9
  %158 = getelementptr inbounds ptr, ptr %157, i64 0
  %159 = load ptr, ptr %158, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %21) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %20, ptr noundef %159, ptr noundef nonnull align 1 dereferenceable(1) %21)
          to label %160 unwind label %162

160:                                              ; preds = %156
  invoke void @_Z5usageRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEi(ptr noundef nonnull align 8 dereferenceable(32) %20, i32 noundef 1) #10
          to label %161 unwind label %166

161:                                              ; preds = %160
  unreachable

162:                                              ; preds = %156
  %163 = landingpad { ptr, i32 }
          cleanup
  %164 = extractvalue { ptr, i32 } %163, 0
  store ptr %164, ptr %14, align 8
  %165 = extractvalue { ptr, i32 } %163, 1
  store i32 %165, ptr %15, align 4
  br label %170

166:                                              ; preds = %160
  %167 = landingpad { ptr, i32 }
          cleanup
  %168 = extractvalue { ptr, i32 } %167, 0
  store ptr %168, ptr %14, align 8
  %169 = extractvalue { ptr, i32 } %167, 1
  store i32 %169, ptr %15, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #9
  br label %170

170:                                              ; preds = %166, %162
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %20) #9
  br label %185

171:                                              ; preds = %149
  br label %172

172:                                              ; preds = %171, %111
  br label %173

173:                                              ; preds = %172, %104
  br label %174

174:                                              ; preds = %173
  br label %175

175:                                              ; preds = %174
  br label %181

176:                                              ; preds = %57
  %177 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %12) #9
  br i1 %177, label %180, label %178

178:                                              ; preds = %176
  invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backERKS5_(ptr noundef nonnull align 8 dereferenceable(24) %10, ptr noundef nonnull align 8 dereferenceable(32) %12)
          to label %179 unwind label %77

179:                                              ; preds = %178
  br label %180

180:                                              ; preds = %179, %176
  br label %181

181:                                              ; preds = %180, %175
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %12) #9
  br label %182

182:                                              ; preds = %181
  %183 = load i32, ptr %11, align 4, !tbaa !5
  %184 = add nsw i32 %183, 1
  store i32 %184, ptr %11, align 4, !tbaa !5
  br label %44, !llvm.loop !16

185:                                              ; preds = %170, %139, %89, %77
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #9
  br label %186

186:                                              ; preds = %185, %73
  call void @llvm.lifetime.end.p0(i64 32, ptr %12) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #9
  br label %431

187:                                              ; preds = %48
  %188 = call noundef i64 @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %10) #9
  %189 = icmp eq i64 %188, 0
  br i1 %189, label %190, label %211

190:                                              ; preds = %187
  %191 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef @.str.22)
          to label %192 unwind label %198

192:                                              ; preds = %190
  call void @llvm.lifetime.start.p0(i64 32, ptr %22) #9
  %193 = load ptr, ptr %5, align 8, !tbaa !9
  %194 = getelementptr inbounds ptr, ptr %193, i64 0
  %195 = load ptr, ptr %194, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %23) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %22, ptr noundef %195, ptr noundef nonnull align 1 dereferenceable(1) %23)
          to label %196 unwind label %202

196:                                              ; preds = %192
  invoke void @_Z5usageRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEi(ptr noundef nonnull align 8 dereferenceable(32) %22, i32 noundef 1) #10
          to label %197 unwind label %206

197:                                              ; preds = %196
  unreachable

198:                                              ; preds = %190
  %199 = landingpad { ptr, i32 }
          cleanup
  %200 = extractvalue { ptr, i32 } %199, 0
  store ptr %200, ptr %14, align 8
  %201 = extractvalue { ptr, i32 } %199, 1
  store i32 %201, ptr %15, align 4
  br label %431

202:                                              ; preds = %192
  %203 = landingpad { ptr, i32 }
          cleanup
  %204 = extractvalue { ptr, i32 } %203, 0
  store ptr %204, ptr %14, align 8
  %205 = extractvalue { ptr, i32 } %203, 1
  store i32 %205, ptr %15, align 4
  br label %210

206:                                              ; preds = %196
  %207 = landingpad { ptr, i32 }
          cleanup
  %208 = extractvalue { ptr, i32 } %207, 0
  store ptr %208, ptr %14, align 8
  %209 = extractvalue { ptr, i32 } %207, 1
  store i32 %209, ptr %15, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #9
  br label %210

210:                                              ; preds = %206, %202
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %23) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %22) #9
  br label %431

211:                                              ; preds = %187
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #9
  %212 = invoke noundef i64 @_ZN7nanovdb2io10stringHashERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %9)
          to label %213 unwind label %223

213:                                              ; preds = %211
  store i64 %212, ptr %24, align 8, !tbaa !18
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #9
  store ptr %10, ptr %25, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #9
  %214 = load ptr, ptr %25, align 8, !tbaa !9
  %215 = call ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %214) #9
  %216 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %26, i32 0, i32 0
  store ptr %215, ptr %216, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #9
  %217 = load ptr, ptr %25, align 8, !tbaa !9
  %218 = call ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %217) #9
  %219 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %27, i32 0, i32 0
  store ptr %218, ptr %219, align 8
  br label %220

220:                                              ; preds = %378, %213
  %221 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8) %26, ptr noundef nonnull align 8 dereferenceable(8) %27) #9
  br i1 %221, label %227, label %222

222:                                              ; preds = %220
  store i32 5, ptr %28, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #9
  br label %414

223:                                              ; preds = %412, %211
  %224 = landingpad { ptr, i32 }
          cleanup
  %225 = extractvalue { ptr, i32 } %224, 0
  store ptr %225, ptr %14, align 8
  %226 = extractvalue { ptr, i32 } %224, 1
  store i32 %226, ptr %15, align 4
  br label %430

227:                                              ; preds = %220
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #9
  %228 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS6_SaIS6_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %26) #9
  store ptr %228, ptr %29, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 24, ptr %30) #9
  %229 = load ptr, ptr %29, align 8, !tbaa !9
  invoke void @_ZN7nanovdb2io16readGridMetaDataERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%"class.std::vector.3") align 8 %30, ptr noundef nonnull align 8 dereferenceable(32) %229)
          to label %230 unwind label %242

230:                                              ; preds = %227
  %231 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %9) #9
  br i1 %231, label %270, label %232

232:                                              ; preds = %230
  call void @llvm.lifetime.start.p0(i64 24, ptr %31) #9
  call void @_ZNSt6vectorIN7nanovdb2io16FileGridMetaDataESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %31) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #9
  store ptr %30, ptr %32, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #9
  %233 = load ptr, ptr %32, align 8, !tbaa !9
  %234 = call ptr @_ZNSt6vectorIN7nanovdb2io16FileGridMetaDataESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %233) #9
  %235 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.8", ptr %33, i32 0, i32 0
  store ptr %234, ptr %235, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #9
  %236 = load ptr, ptr %32, align 8, !tbaa !9
  %237 = call ptr @_ZNSt6vectorIN7nanovdb2io16FileGridMetaDataESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %236) #9
  %238 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.8", ptr %34, i32 0, i32 0
  store ptr %237, ptr %238, align 8
  br label %239

239:                                              ; preds = %266, %232
  %240 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN7nanovdb2io16FileGridMetaDataESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %33, ptr noundef nonnull align 8 dereferenceable(8) %34) #9
  br i1 %240, label %246, label %241

241:                                              ; preds = %239
  store i32 7, ptr %28, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #9
  br label %268

242:                                              ; preds = %227
  %243 = landingpad { ptr, i32 }
          catch ptr @_ZTISt9exception
          catch ptr null
  %244 = extractvalue { ptr, i32 } %243, 0
  store ptr %244, ptr %14, align 8
  %245 = extractvalue { ptr, i32 } %243, 1
  store i32 %245, ptr %15, align 4
  br label %381

246:                                              ; preds = %239
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #9
  %247 = call noundef nonnull align 8 dereferenceable(208) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN7nanovdb2io16FileGridMetaDataESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %33) #9
  store ptr %247, ptr %35, align 8, !tbaa !9
  %248 = load i64, ptr %24, align 8, !tbaa !18
  %249 = load ptr, ptr %35, align 8, !tbaa !9
  %250 = getelementptr inbounds %"struct.nanovdb::io::FileMetaData", ptr %249, i32 0, i32 2
  %251 = load i64, ptr %250, align 8, !tbaa !20
  %252 = icmp eq i64 %248, %251
  br i1 %252, label %253, label %265

253:                                              ; preds = %246
  %254 = load ptr, ptr %35, align 8, !tbaa !9
  %255 = getelementptr inbounds %"struct.nanovdb::io::FileGridMetaData", ptr %254, i32 0, i32 1
  %256 = call noundef zeroext i1 @_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull align 8 dereferenceable(32) %255) #9
  br i1 %256, label %257, label %265

257:                                              ; preds = %253
  %258 = load ptr, ptr %35, align 8, !tbaa !9
  %259 = invoke noundef nonnull align 8 dereferenceable(208) ptr @_ZNSt6vectorIN7nanovdb2io16FileGridMetaDataESaIS2_EE12emplace_backIJRS2_EEES6_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %31, ptr noundef nonnull align 8 dereferenceable(208) %258)
          to label %260 unwind label %261

260:                                              ; preds = %257
  br label %265

261:                                              ; preds = %257
  %262 = landingpad { ptr, i32 }
          catch ptr @_ZTISt9exception
          catch ptr null
  %263 = extractvalue { ptr, i32 } %262, 0
  store ptr %263, ptr %14, align 8
  %264 = extractvalue { ptr, i32 } %262, 1
  store i32 %264, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #9
  call void @_ZNSt6vectorIN7nanovdb2io16FileGridMetaDataESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %31) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %31) #9
  br label %380

265:                                              ; preds = %260, %253, %246
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #9
  br label %266

266:                                              ; preds = %265
  %267 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN7nanovdb2io16FileGridMetaDataESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %33) #9
  br label %239

268:                                              ; preds = %241
  %269 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN7nanovdb2io16FileGridMetaDataESaIS2_EEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(24) %30, ptr noundef nonnull align 8 dereferenceable(24) %31) #9
  call void @_ZNSt6vectorIN7nanovdb2io16FileGridMetaDataESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %31) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %31) #9
  br label %270

270:                                              ; preds = %268, %230
  %271 = call noundef i64 @_ZNKSt6vectorIN7nanovdb2io16FileGridMetaDataESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %30) #9
  %272 = icmp eq i64 %271, 0
  br i1 %272, label %273, label %274

273:                                              ; preds = %270
  store i32 6, ptr %28, align 4
  br label %372

274:                                              ; preds = %270
  %275 = load i8, ptr %7, align 1, !tbaa !11, !range !32, !noundef !33
  %276 = trunc i8 %275 to i1
  br i1 %276, label %277, label %294

277:                                              ; preds = %274
  %278 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.23)
          to label %279 unwind label %290

279:                                              ; preds = %277
  %280 = load ptr, ptr %29, align 8, !tbaa !9
  %281 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %278, ptr noundef nonnull align 8 dereferenceable(32) %280)
          to label %282 unwind label %290

282:                                              ; preds = %279
  %283 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %281, ptr noundef @.str.24)
          to label %284 unwind label %290

284:                                              ; preds = %282
  %285 = call noundef i64 @_ZNKSt6vectorIN7nanovdb2io16FileGridMetaDataESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %30) #9
  %286 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %283, i64 noundef %285)
          to label %287 unwind label %290

287:                                              ; preds = %284
  %288 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %286, ptr noundef @.str.25)
          to label %289 unwind label %290

289:                                              ; preds = %287
  br label %294

290:                                              ; preds = %287, %284, %282, %279, %277
  %291 = landingpad { ptr, i32 }
          catch ptr @_ZTISt9exception
          catch ptr null
  %292 = extractvalue { ptr, i32 } %291, 0
  store ptr %292, ptr %14, align 8
  %293 = extractvalue { ptr, i32 } %291, 1
  store i32 %293, ptr %15, align 4
  br label %380

294:                                              ; preds = %289, %274
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #9
  store ptr %30, ptr %36, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #9
  %295 = load ptr, ptr %36, align 8, !tbaa !9
  %296 = call ptr @_ZNSt6vectorIN7nanovdb2io16FileGridMetaDataESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %295) #9
  %297 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.8", ptr %37, i32 0, i32 0
  store ptr %296, ptr %297, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #9
  %298 = load ptr, ptr %36, align 8, !tbaa !9
  %299 = call ptr @_ZNSt6vectorIN7nanovdb2io16FileGridMetaDataESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %298) #9
  %300 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.8", ptr %38, i32 0, i32 0
  store ptr %299, ptr %300, align 8
  br label %301

301:                                              ; preds = %368, %294
  %302 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN7nanovdb2io16FileGridMetaDataESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %37, ptr noundef nonnull align 8 dereferenceable(8) %38) #9
  br i1 %302, label %304, label %303

303:                                              ; preds = %301
  store i32 9, ptr %28, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #9
  br label %371

304:                                              ; preds = %301
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #9
  %305 = call noundef nonnull align 8 dereferenceable(208) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN7nanovdb2io16FileGridMetaDataESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %37) #9
  store ptr %305, ptr %39, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 56, ptr %40) #9
  %306 = load ptr, ptr %29, align 8, !tbaa !9
  %307 = load ptr, ptr %39, align 8, !tbaa !9
  %308 = getelementptr inbounds %"struct.nanovdb::io::FileGridMetaData", ptr %307, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %41) #9
  invoke void @_ZN7nanovdb10HostBufferC2Em(ptr noundef nonnull align 8 dereferenceable(32) %41, i64 noundef 0)
          to label %309 unwind label %339

309:                                              ; preds = %304
  invoke void @_ZN7nanovdb2io8readGridINS_10HostBufferEEENS_10GridHandleIT_EERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESD_iRKS4_(ptr dead_on_unwind writable sret(%"class.nanovdb::GridHandle") align 8 %40, ptr noundef nonnull align 8 dereferenceable(32) %306, ptr noundef nonnull align 8 dereferenceable(32) %308, i32 noundef 0, ptr noundef nonnull align 8 dereferenceable(32) %41)
          to label %310 unwind label %343

310:                                              ; preds = %309
  call void @_ZN7nanovdb10HostBufferD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %41) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %42) #9
  %311 = load i32, ptr %8, align 4, !tbaa !13
  %312 = load i8, ptr %7, align 1, !tbaa !11, !range !32, !noundef !33
  %313 = trunc i8 %312 to i1
  %314 = invoke noundef zeroext i1 @_ZN7nanovdb5tools13validateGridsINS_10GridHandleINS_10HostBufferEEEEEbRKT_NS_9CheckModeEb(ptr noundef nonnull align 8 dereferenceable(56) %40, i32 noundef %311, i1 noundef zeroext %313)
          to label %315 unwind label %348

315:                                              ; preds = %310
  %316 = zext i1 %314 to i8
  store i8 %316, ptr %42, align 1, !tbaa !11
  %317 = load i8, ptr %7, align 1, !tbaa !11, !range !32, !noundef !33
  %318 = trunc i8 %317 to i1
  br i1 %318, label %319, label %352

319:                                              ; preds = %315
  %320 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.26)
          to label %321 unwind label %348

321:                                              ; preds = %319
  %322 = load ptr, ptr %39, align 8, !tbaa !9
  %323 = getelementptr inbounds %"struct.nanovdb::io::FileGridMetaData", ptr %322, i32 0, i32 1
  %324 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %320, ptr noundef nonnull align 8 dereferenceable(32) %323)
          to label %325 unwind label %348

325:                                              ; preds = %321
  %326 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %324, ptr noundef @.str.27)
          to label %327 unwind label %348

327:                                              ; preds = %325
  %328 = load i8, ptr %42, align 1, !tbaa !11, !range !32, !noundef !33
  %329 = trunc i8 %328 to i1
  br i1 %329, label %330, label %331

330:                                              ; preds = %327
  br label %332

331:                                              ; preds = %327
  br label %332

332:                                              ; preds = %331, %330
  %333 = phi ptr [ @.str.28, %330 ], [ @.str.29, %331 ]
  %334 = getelementptr inbounds [7 x i8], ptr %333, i64 0, i64 0
  %335 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %326, ptr noundef %334)
          to label %336 unwind label %348

336:                                              ; preds = %332
  %337 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %335, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %338 unwind label %348

338:                                              ; preds = %336
  br label %367

339:                                              ; preds = %304
  %340 = landingpad { ptr, i32 }
          catch ptr @_ZTISt9exception
          catch ptr null
  %341 = extractvalue { ptr, i32 } %340, 0
  store ptr %341, ptr %14, align 8
  %342 = extractvalue { ptr, i32 } %340, 1
  store i32 %342, ptr %15, align 4
  br label %347

343:                                              ; preds = %309
  %344 = landingpad { ptr, i32 }
          catch ptr @_ZTISt9exception
          catch ptr null
  %345 = extractvalue { ptr, i32 } %344, 0
  store ptr %345, ptr %14, align 8
  %346 = extractvalue { ptr, i32 } %344, 1
  store i32 %346, ptr %15, align 4
  call void @_ZN7nanovdb10HostBufferD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #9
  br label %347

347:                                              ; preds = %343, %339
  call void @llvm.lifetime.end.p0(i64 32, ptr %41) #9
  br label %370

348:                                              ; preds = %363, %361, %357, %355, %336, %332, %325, %321, %319, %310
  %349 = landingpad { ptr, i32 }
          catch ptr @_ZTISt9exception
          catch ptr null
  %350 = extractvalue { ptr, i32 } %349, 0
  store ptr %350, ptr %14, align 8
  %351 = extractvalue { ptr, i32 } %349, 1
  store i32 %351, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %42) #9
  call void @_ZN7nanovdb10GridHandleINS_10HostBufferEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %40) #9
  br label %370

352:                                              ; preds = %315
  %353 = load i8, ptr %42, align 1, !tbaa !11, !range !32, !noundef !33
  %354 = trunc i8 %353 to i1
  br i1 %354, label %366, label %355

355:                                              ; preds = %352
  %356 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.26)
          to label %357 unwind label %348

357:                                              ; preds = %355
  %358 = load ptr, ptr %39, align 8, !tbaa !9
  %359 = getelementptr inbounds %"struct.nanovdb::io::FileGridMetaData", ptr %358, i32 0, i32 1
  %360 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %356, ptr noundef nonnull align 8 dereferenceable(32) %359)
          to label %361 unwind label %348

361:                                              ; preds = %357
  %362 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %360, ptr noundef @.str.30)
          to label %363 unwind label %348

363:                                              ; preds = %361
  %364 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %362, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %365 unwind label %348

365:                                              ; preds = %363
  br label %366

366:                                              ; preds = %365, %352
  br label %367

367:                                              ; preds = %366, %338
  call void @llvm.lifetime.end.p0(i64 1, ptr %42) #9
  call void @_ZN7nanovdb10GridHandleINS_10HostBufferEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %40) #9
  call void @llvm.lifetime.end.p0(i64 56, ptr %40) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #9
  br label %368

368:                                              ; preds = %367
  %369 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN7nanovdb2io16FileGridMetaDataESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %37) #9
  br label %301

370:                                              ; preds = %348, %347
  call void @llvm.lifetime.end.p0(i64 56, ptr %40) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #9
  br label %380

371:                                              ; preds = %303
  store i32 0, ptr %28, align 4
  br label %372

372:                                              ; preds = %371, %273
  call void @_ZNSt6vectorIN7nanovdb2io16FileGridMetaDataESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %30) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %30) #9
  %373 = load i32, ptr %28, align 4
  switch i32 %373, label %375 [
    i32 0, label %374
  ]

374:                                              ; preds = %372
  store i32 0, ptr %28, align 4
  br label %375

375:                                              ; preds = %374, %372
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #9
  %376 = load i32, ptr %28, align 4
  switch i32 %376, label %440 [
    i32 0, label %377
    i32 6, label %378
  ]

377:                                              ; preds = %375
  br label %378

378:                                              ; preds = %377, %375
  %379 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS6_SaIS6_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %26) #9
  br label %220

380:                                              ; preds = %370, %290, %261
  call void @_ZNSt6vectorIN7nanovdb2io16FileGridMetaDataESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %30) #9
  br label %381

381:                                              ; preds = %380, %242
  call void @llvm.lifetime.end.p0(i64 24, ptr %30) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #9
  br label %382

382:                                              ; preds = %381
  %383 = load i32, ptr %15, align 4
  %384 = call i32 @llvm.eh.typeid.for.p0(ptr @_ZTISt9exception) #9
  %385 = icmp eq i32 %383, %384
  br i1 %385, label %386, label %406

386:                                              ; preds = %382
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #9
  %387 = load ptr, ptr %14, align 8
  %388 = call ptr @__cxa_begin_catch(ptr %387) #9
  store ptr %388, ptr %43, align 8
  %389 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef @.str.32)
          to label %390 unwind label %420

390:                                              ; preds = %386
  %391 = load ptr, ptr %43, align 8, !tbaa !9
  %392 = load ptr, ptr %391, align 8, !tbaa !34
  %393 = getelementptr inbounds ptr, ptr %392, i64 2
  %394 = load ptr, ptr %393, align 8
  %395 = call noundef ptr %394(ptr noundef nonnull align 8 dereferenceable(8) %391) #9
  %396 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %389, ptr noundef %395)
          to label %397 unwind label %420

397:                                              ; preds = %390
  %398 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %396, ptr noundef @.str.33)
          to label %399 unwind label %420

399:                                              ; preds = %397
  %400 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %398, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %401 unwind label %420

401:                                              ; preds = %399
  store i32 1, ptr %6, align 4, !tbaa !5
  invoke void @__cxa_end_catch()
          to label %402 unwind label %424

402:                                              ; preds = %401
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #9
  br label %403

403:                                              ; preds = %414, %413, %402
  %404 = load i32, ptr %6, align 4, !tbaa !5
  store i32 %404, ptr %3, align 4
  store i32 1, ptr %28, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #9
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %10) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %9) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %7) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #9
  %405 = load i32, ptr %3, align 4
  ret i32 %405

406:                                              ; preds = %382
  %407 = load ptr, ptr %14, align 8
  %408 = call ptr @__cxa_begin_catch(ptr %407) #9
  %409 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef @.str.31)
          to label %410 unwind label %415

410:                                              ; preds = %406
  %411 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %409, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %412 unwind label %415

412:                                              ; preds = %410
  store i32 1, ptr %6, align 4, !tbaa !5
  invoke void @__cxa_end_catch()
          to label %413 unwind label %223

413:                                              ; preds = %412
  br label %403

414:                                              ; preds = %222
  br label %403

415:                                              ; preds = %410, %406
  %416 = landingpad { ptr, i32 }
          cleanup
  %417 = extractvalue { ptr, i32 } %416, 0
  store ptr %417, ptr %14, align 8
  %418 = extractvalue { ptr, i32 } %416, 1
  store i32 %418, ptr %15, align 4
  invoke void @__cxa_end_catch()
          to label %419 unwind label %437

419:                                              ; preds = %415
  br label %430

420:                                              ; preds = %399, %397, %390, %386
  %421 = landingpad { ptr, i32 }
          cleanup
  %422 = extractvalue { ptr, i32 } %421, 0
  store ptr %422, ptr %14, align 8
  %423 = extractvalue { ptr, i32 } %421, 1
  store i32 %423, ptr %15, align 4
  invoke void @__cxa_end_catch()
          to label %428 unwind label %437

424:                                              ; preds = %401
  %425 = landingpad { ptr, i32 }
          cleanup
  %426 = extractvalue { ptr, i32 } %425, 0
  store ptr %426, ptr %14, align 8
  %427 = extractvalue { ptr, i32 } %425, 1
  store i32 %427, ptr %15, align 4
  br label %429

428:                                              ; preds = %420
  br label %429

429:                                              ; preds = %428, %424
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #9
  br label %430

430:                                              ; preds = %429, %419, %223
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #9
  br label %431

431:                                              ; preds = %430, %210, %198, %186
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %10) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %9) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %7) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #9
  br label %432

432:                                              ; preds = %431
  %433 = load ptr, ptr %14, align 8
  %434 = load i32, ptr %15, align 4
  %435 = insertvalue { ptr, i32 } poison, ptr %433, 0
  %436 = insertvalue { ptr, i32 } %435, i32 %434, 1
  resume { ptr, i32 } %436

437:                                              ; preds = %420, %415
  %438 = landingpad { ptr, i32 }
          catch ptr null
  %439 = extractvalue { ptr, i32 } %438, 0
  call void @__clang_call_terminate(ptr %439) #11
  unreachable

440:                                              ; preds = %375
  unreachable
}

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

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

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

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i64 @_ZN7nanovdb2io10stringHashERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32)) #1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7nanovdb2io8readGridINS_10HostBufferEEENS_10GridHandleIT_EERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESD_iRKS4_(ptr dead_on_unwind noalias writable sret(%"class.nanovdb::GridHandle") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32), i32 noundef, ptr noundef nonnull align 8 dereferenceable(32)) #5

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN7nanovdb5tools13validateGridsINS_10GridHandleINS_10HostBufferEEEEEbRKT_NS_9CheckModeEb(ptr noundef nonnull align 8 dereferenceable(56), i32 noundef, i1 noundef zeroext) #5

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

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_(ptr noundef nonnull align 8 dereferenceable(8)) #1

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

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

; Function Attrs: nounwind memory(none)
declare i32 @llvm.eh.typeid.for.p0(ptr) #7

declare ptr @__cxa_begin_catch(ptr)

declare void @__cxa_end_catch()

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"bool", !7, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"_ZTSN7nanovdb9CheckModeE", !7, i64 0}
!15 = !{!7, !7, i64 0}
!16 = distinct !{!16, !17}
!17 = !{!"llvm.loop.mustprogress"}
!18 = !{!19, !19, i64 0}
!19 = !{!"long", !7, i64 0}
!20 = !{!21, !19, i64 16}
!21 = !{!"_ZTSN7nanovdb2io12FileMetaDataE", !19, i64 0, !19, i64 8, !19, i64 16, !19, i64 24, !22, i64 32, !23, i64 36, !24, i64 40, !26, i64 88, !28, i64 112, !6, i64 136, !7, i64 140, !7, i64 156, !29, i64 168, !30, i64 170, !31, i64 172}
!22 = !{!"_ZTSN7nanovdb8GridTypeE", !7, i64 0}
!23 = !{!"_ZTSN7nanovdb9GridClassE", !7, i64 0}
!24 = !{!"_ZTSN7nanovdb4math4BBoxINS0_4Vec3IdEELb1EEE", !25, i64 0}
!25 = !{!"_ZTSN7nanovdb4math8BaseBBoxINS0_4Vec3IdEEEE", !7, i64 0}
!26 = !{!"_ZTSN7nanovdb4math4BBoxINS0_5CoordELb0EEE", !27, i64 0}
!27 = !{!"_ZTSN7nanovdb4math8BaseBBoxINS0_5CoordEEE", !7, i64 0}
!28 = !{!"_ZTSN7nanovdb4math4Vec3IdEE", !7, i64 0}
!29 = !{!"_ZTSN7nanovdb2io5CodecE", !7, i64 0}
!30 = !{!"short", !7, i64 0}
!31 = !{!"_ZTSN7nanovdb7VersionE", !6, i64 0}
!32 = !{i8 0, i8 2}
!33 = !{}
!34 = !{!35, !35, i64 0}
!35 = !{!"vtable pointer", !8, i64 0}


; 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::basic_ostream" = type { ptr, %"class.std::basic_ios" }
%"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::locale" = type { ptr }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::allocator" = type { i8 }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%"class.std::vector.3" = type { %"struct.std::_Vector_base.4" }
%"struct.std::_Vector_base.4" = type { %"struct.std::_Vector_base<nanovdb::io::FileGridMetaData, std::allocator<nanovdb::io::FileGridMetaData>>::_Vector_impl" }
%"struct.std::_Vector_base<nanovdb::io::FileGridMetaData, std::allocator<nanovdb::io::FileGridMetaData>>::_Vector_impl" = type { %"struct.std::_Vector_base<nanovdb::io::FileGridMetaData, std::allocator<nanovdb::io::FileGridMetaData>>::_Vector_impl_data" }
%"struct.std::_Vector_base<nanovdb::io::FileGridMetaData, std::allocator<nanovdb::io::FileGridMetaData>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.8" = type { ptr }
%"class.nanovdb::GridHandle" = type { %"class.std::vector.11", %"class.nanovdb::HostBuffer" }
%"class.std::vector.11" = type { %"struct.std::_Vector_base.12" }
%"struct.std::_Vector_base.12" = type { %"struct.std::_Vector_base<nanovdb::GridHandleMetaData, std::allocator<nanovdb::GridHandleMetaData>>::_Vector_impl" }
%"struct.std::_Vector_base<nanovdb::GridHandleMetaData, std::allocator<nanovdb::GridHandleMetaData>>::_Vector_impl" = type { %"struct.std::_Vector_base<nanovdb::GridHandleMetaData, std::allocator<nanovdb::GridHandleMetaData>>::_Vector_impl_data" }
%"struct.std::_Vector_base<nanovdb::GridHandleMetaData, std::allocator<nanovdb::GridHandleMetaData>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.nanovdb::HostBuffer" = type { %"class.std::shared_ptr", i64, ptr }
%"class.std::shared_ptr" = type { %"class.std::__shared_ptr" }
%"class.std::__shared_ptr" = type { ptr, %"class.std::__shared_count" }
%"class.std::__shared_count" = type { ptr }

@_ZSt4cerr = external global %"class.std::basic_ostream", align 8
@.str.10 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.22 = external hidden unnamed_addr constant [43 x i8], align 1
@_ZTISt9exception = external constant ptr
@_ZSt4cout = external global %"class.std::basic_ostream", align 8
@.str.23 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.24 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.26 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.27 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [2 x i8], align 1

; Function Attrs: mustprogress noreturn uwtable
declare dso_local void @_Z5usageRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEi(ptr noundef nonnull align 8 dereferenceable(32), i32 noundef) local_unnamed_addr #0

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

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

; Function Attrs: mustprogress noreturn uwtable
declare dso_local void @_Z7versionPKci(ptr noundef, i32 noundef) local_unnamed_addr #0

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

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

; Function Attrs: mustprogress norecurse uwtable
define dso_local noundef range(i32 0, 2) i32 @main(i32 noundef %0, ptr nocapture noundef readonly %1) local_unnamed_addr #3 personality ptr @__gxx_personality_v0 {
  %3 = alloca %"class.std::__cxx11::basic_string", align 8
  %4 = alloca %"class.std::vector", align 8
  %5 = alloca %"class.std::__cxx11::basic_string", align 8
  %6 = alloca %"class.std::allocator", align 1
  %7 = alloca %"class.std::__cxx11::basic_string", align 8
  %8 = alloca %"class.std::allocator", align 1
  %9 = alloca %"class.std::__cxx11::basic_string", align 8
  %10 = alloca %"class.std::allocator", align 1
  %11 = alloca %"class.std::__cxx11::basic_string", align 8
  %12 = alloca %"class.std::allocator", align 1
  %13 = alloca %"class.std::__cxx11::basic_string", align 8
  %14 = alloca %"class.std::allocator", align 1
  %15 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %16 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %17 = alloca %"class.std::vector.3", align 8
  %18 = alloca %"class.std::vector.3", align 8
  %19 = alloca %"class.__gnu_cxx::__normal_iterator.8", align 8
  %20 = alloca %"class.__gnu_cxx::__normal_iterator.8", align 8
  %21 = alloca %"class.__gnu_cxx::__normal_iterator.8", align 8
  %22 = alloca %"class.__gnu_cxx::__normal_iterator.8", align 8
  %23 = alloca %"class.nanovdb::GridHandle", align 8
  %24 = alloca %"class.nanovdb::HostBuffer", align 8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4) #9
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %4) #9
  %25 = icmp sgt i32 %0, 1
  br i1 %25, label %.lr.ph, label %._crit_edge

._crit_edge:                                      ; preds = %104, %2
  %.045.lcssa = phi i32 [ 2, %2 ], [ %.146, %104 ]
  %.044.lcssa = phi i1 [ false, %2 ], [ %.1, %104 ]
  %26 = call noundef i64 @_ZNKSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %4) #9
  %27 = icmp eq i64 %26, 0
  br i1 %27, label %109, label %122

.lr.ph:                                           ; preds = %2, %104
  %.044100 = phi i1 [ %.1, %104 ], [ false, %2 ]
  %.04599 = phi i32 [ %.146, %104 ], [ 2, %2 ]
  %.04798 = phi i32 [ %105, %104 ], [ 1, %2 ]
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) #9
  %28 = sext i32 %.04798 to i64
  %29 = getelementptr inbounds ptr, ptr %1, i64 %28
  %30 = load ptr, ptr %29, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %6) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef %30, ptr noundef nonnull align 1 dereferenceable(1) %6)
          to label %31 unwind label %43

31:                                               ; preds = %.lr.ph
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) #9
  %32 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEixEm(ptr noundef nonnull align 8 dereferenceable(32) %5, i64 noundef 0)
  %33 = load i8, ptr %32, align 1, !tbaa !9
  %34 = icmp eq i8 %33, 45
  br i1 %34, label %35, label %101

35:                                               ; preds = %31
  %36 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull @.str.10)
  br i1 %36, label %39, label %37

37:                                               ; preds = %35
  %38 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull @.str.11)
  br i1 %38, label %39, label %50

39:                                               ; preds = %37, %35
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %7) #9
  %40 = load ptr, ptr %1, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %8) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef %40, ptr noundef nonnull align 1 dereferenceable(1) %8)
          to label %41 unwind label %45

41:                                               ; preds = %39
  invoke void @_Z5usageRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEi(ptr noundef nonnull align 8 dereferenceable(32) %7, i32 noundef 0) #10
          to label %42 unwind label %47

42:                                               ; preds = %41
  unreachable

43:                                               ; preds = %.lr.ph
  %44 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %6) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %6) #9
  br label %108

.loopexit:                                        ; preds = %81, %103
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %107

.loopexit.split-lp:                               ; preds = %52, %70, %86, %88, %90
  %lpad.loopexit.split-lp = landingpad { ptr, i32 }
          cleanup
  br label %107

45:                                               ; preds = %39
  %46 = landingpad { ptr, i32 }
          cleanup
  br label %49

47:                                               ; preds = %41
  %48 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #9
  br label %49

49:                                               ; preds = %47, %45
  %.pn81 = phi { ptr, i32 } [ %48, %47 ], [ %46, %45 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %8) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #9
  br label %107

50:                                               ; preds = %37
  %51 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull @.str.12)
  br i1 %51, label %52, label %55

52:                                               ; preds = %50
  %53 = load ptr, ptr %1, align 8, !tbaa !5
  invoke void @_Z7versionPKci(ptr noundef %53, i32 noundef 0) #10
          to label %54 unwind label %.loopexit.split-lp

54:                                               ; preds = %52
  unreachable

55:                                               ; preds = %50
  %56 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull @.str.13)
  br i1 %56, label %104, label %57

57:                                               ; preds = %55
  %58 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull @.str.14)
  br i1 %58, label %104, label %59

59:                                               ; preds = %57
  %60 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull @.str.15)
  br i1 %60, label %104, label %61

61:                                               ; preds = %59
  %62 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull @.str.16)
  br i1 %62, label %104, label %63

63:                                               ; preds = %61
  %64 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull @.str.17)
  br i1 %64, label %67, label %65

65:                                               ; preds = %63
  %66 = call noundef zeroext i1 @_ZSteqIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EEPKS5_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull @.str.18)
  br i1 %66, label %67, label %86

67:                                               ; preds = %65, %63
  %68 = add nsw i32 %.04798, 1
  %69 = icmp eq i32 %68, %0
  br i1 %69, label %70, label %81

70:                                               ; preds = %67
  %71 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef nonnull @.str.19)
          to label %72 unwind label %.loopexit.split-lp

72:                                               ; preds = %70
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %9) #9
  %73 = load ptr, ptr %1, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %10) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef %73, ptr noundef nonnull align 1 dereferenceable(1) %10)
          to label %74 unwind label %76

74:                                               ; preds = %72
  invoke void @_Z5usageRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEi(ptr noundef nonnull align 8 dereferenceable(32) %9, i32 noundef 1) #10
          to label %75 unwind label %78

75:                                               ; preds = %74
  unreachable

76:                                               ; preds = %72
  %77 = landingpad { ptr, i32 }
          cleanup
  br label %80

78:                                               ; preds = %74
  %79 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #9
  br label %80

80:                                               ; preds = %78, %76
  %.pn79 = phi { ptr, i32 } [ %79, %78 ], [ %77, %76 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %10) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #9
  br label %107

81:                                               ; preds = %67
  %82 = sext i32 %68 to i64
  %83 = getelementptr inbounds ptr, ptr %1, i64 %82
  %84 = load ptr, ptr %83, align 8, !tbaa !5
  %85 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE6assignEPKc(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef %84)
          to label %104 unwind label %.loopexit

86:                                               ; preds = %65
  %87 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef nonnull @.str.20)
          to label %88 unwind label %.loopexit.split-lp

88:                                               ; preds = %86
  %89 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %87, ptr noundef nonnull align 8 dereferenceable(32) %5)
          to label %90 unwind label %.loopexit.split-lp

90:                                               ; preds = %88
  %91 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %89, ptr noundef nonnull @.str.21)
          to label %92 unwind label %.loopexit.split-lp

92:                                               ; preds = %90
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %11) #9
  %93 = load ptr, ptr %1, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %12) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef %93, ptr noundef nonnull align 1 dereferenceable(1) %12)
          to label %94 unwind label %96

94:                                               ; preds = %92
  invoke void @_Z5usageRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEi(ptr noundef nonnull align 8 dereferenceable(32) %11, i32 noundef 1) #10
          to label %95 unwind label %98

95:                                               ; preds = %94
  unreachable

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

98:                                               ; preds = %94
  %99 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #9
  br label %100

100:                                              ; preds = %98, %96
  %.pn77 = phi { ptr, i32 } [ %99, %98 ], [ %97, %96 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %12) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %12) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #9
  br label %107

101:                                              ; preds = %31
  %102 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %5) #9
  br i1 %102, label %104, label %103

103:                                              ; preds = %101
  invoke void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE9push_backERKS5_(ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef nonnull align 8 dereferenceable(32) %5)
          to label %104 unwind label %.loopexit

104:                                              ; preds = %59, %61, %55, %57, %101, %103, %81
  %.148 = phi i32 [ %68, %81 ], [ %.04798, %101 ], [ %.04798, %103 ], [ %.04798, %57 ], [ %.04798, %55 ], [ %.04798, %61 ], [ %.04798, %59 ]
  %.146 = phi i32 [ %.04599, %81 ], [ %.04599, %101 ], [ %.04599, %103 ], [ %.04599, %57 ], [ %.04599, %55 ], [ 1, %61 ], [ 1, %59 ]
  %.1 = phi i1 [ %.044100, %81 ], [ %.044100, %101 ], [ %.044100, %103 ], [ true, %57 ], [ true, %55 ], [ %.044100, %61 ], [ %.044100, %59 ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #9
  %105 = add nsw i32 %.148, 1
  %106 = icmp slt i32 %105, %0
  br i1 %106, label %.lr.ph, label %._crit_edge, !llvm.loop !10

107:                                              ; preds = %.loopexit, %.loopexit.split-lp, %100, %80, %49
  %.pn81.pn = phi { ptr, i32 } [ %.pn81, %49 ], [ %.pn79, %80 ], [ %.pn77, %100 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ]
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #9
  br label %108

108:                                              ; preds = %107, %43
  %.pn81.pn.pn = phi { ptr, i32 } [ %.pn81.pn, %107 ], [ %44, %43 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #9
  br label %241

109:                                              ; preds = %._crit_edge
  %110 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef nonnull @.str.22)
          to label %111 unwind label %115

111:                                              ; preds = %109
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %13) #9
  %112 = load ptr, ptr %1, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %14) #9
  call void @_ZNSaIcEC2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #9
  invoke void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEC2IS3_EEPKcRKS3_(ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef %112, ptr noundef nonnull align 1 dereferenceable(1) %14)
          to label %113 unwind label %117

113:                                              ; preds = %111
  invoke void @_Z5usageRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEi(ptr noundef nonnull align 8 dereferenceable(32) %13, i32 noundef 1) #10
          to label %114 unwind label %119

114:                                              ; preds = %113
  unreachable

115:                                              ; preds = %109
  %116 = landingpad { ptr, i32 }
          cleanup
  br label %241

117:                                              ; preds = %111
  %118 = landingpad { ptr, i32 }
          cleanup
  br label %121

119:                                              ; preds = %113
  %120 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #9
  br label %121

121:                                              ; preds = %119, %117
  %.pn75 = phi { ptr, i32 } [ %120, %119 ], [ %118, %117 ]
  call void @_ZNSt15__new_allocatorIcED2Ev(ptr noundef nonnull align 1 dereferenceable(1) %14) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %14) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #9
  br label %241

122:                                              ; preds = %._crit_edge
  %123 = invoke noundef i64 @_ZN7nanovdb2io10stringHashERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32) %3)
          to label %124 unwind label %128

124:                                              ; preds = %122
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #9
  %125 = call ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %4) #9
  store ptr %125, ptr %15, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #9
  %126 = call ptr @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %4) #9
  store ptr %126, ptr %16, align 8
  %127 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8) %15, ptr noundef nonnull align 8 dereferenceable(8) %16) #9
  br i1 %127, label %.lr.ph109, label %._crit_edge110

._crit_edge110:                                   ; preds = %208, %124
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #9
  br label %229

128:                                              ; preds = %234, %122
  %129 = landingpad { ptr, i32 }
          cleanup
  br label %241

.lr.ph109:                                        ; preds = %124, %208
  %130 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS6_SaIS6_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %15) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %17) #9
  invoke void @_ZN7nanovdb2io16readGridMetaDataERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%"class.std::vector.3") align 8 %17, ptr noundef nonnull align 8 dereferenceable(32) %130)
          to label %131 unwind label %138

131:                                              ; preds = %.lr.ph109
  %132 = call noundef zeroext i1 @_ZNKSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(32) %3) #9
  br i1 %132, label %154, label %133

133:                                              ; preds = %131
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %18) #9
  call void @_ZNSt6vectorIN7nanovdb2io16FileGridMetaDataESaIS2_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #9
  %134 = call ptr @_ZNSt6vectorIN7nanovdb2io16FileGridMetaDataESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %17) #9
  store ptr %134, ptr %19, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #9
  %135 = call ptr @_ZNSt6vectorIN7nanovdb2io16FileGridMetaDataESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %17) #9
  store ptr %135, ptr %20, align 8
  %136 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN7nanovdb2io16FileGridMetaDataESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %19, ptr noundef nonnull align 8 dereferenceable(8) %20) #9
  br i1 %136, label %.lr.ph103, label %._crit_edge104

._crit_edge104:                                   ; preds = %151, %133
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #9
  %137 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN7nanovdb2io16FileGridMetaDataESaIS2_EEaSEOS4_(ptr noundef nonnull align 8 dereferenceable(24) %17, ptr noundef nonnull align 8 dereferenceable(24) %18) #9
  call void @_ZNSt6vectorIN7nanovdb2io16FileGridMetaDataESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %18) #9
  br label %154

138:                                              ; preds = %.lr.ph109
  %139 = landingpad { ptr, i32 }
          catch ptr @_ZTISt9exception
          catch ptr null
  br label %212

.lr.ph103:                                        ; preds = %133, %151
  %140 = call noundef nonnull align 8 dereferenceable(208) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN7nanovdb2io16FileGridMetaDataESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %19) #9
  %141 = getelementptr inbounds i8, ptr %140, i64 16
  %142 = load i64, ptr %141, align 8, !tbaa !12
  %143 = icmp eq i64 %123, %142
  br i1 %143, label %144, label %151

144:                                              ; preds = %.lr.ph103
  %145 = getelementptr inbounds i8, ptr %140, i64 176
  %146 = call noundef zeroext i1 @_ZSteqIcEN9__gnu_cxx11__enable_ifIXsr9__is_charIT_EE7__valueEbE6__typeERKNSt7__cxx1112basic_stringIS2_St11char_traitsIS2_ESaIS2_EEESC_(ptr noundef nonnull align 8 dereferenceable(32) %3, ptr noundef nonnull align 8 dereferenceable(32) %145) #9
  br i1 %146, label %147, label %151

147:                                              ; preds = %144
  %148 = invoke noundef nonnull align 8 dereferenceable(208) ptr @_ZNSt6vectorIN7nanovdb2io16FileGridMetaDataESaIS2_EE12emplace_backIJRS2_EEES6_DpOT_(ptr noundef nonnull align 8 dereferenceable(24) %18, ptr noundef nonnull align 8 dereferenceable(208) %140)
          to label %151 unwind label %149

149:                                              ; preds = %147
  %150 = landingpad { ptr, i32 }
          catch ptr @_ZTISt9exception
          catch ptr null
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #9
  call void @_ZNSt6vectorIN7nanovdb2io16FileGridMetaDataESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %18) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %18) #9
  br label %211

151:                                              ; preds = %147, %144, %.lr.ph103
  %152 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN7nanovdb2io16FileGridMetaDataESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %19) #9
  %153 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN7nanovdb2io16FileGridMetaDataESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %19, ptr noundef nonnull align 8 dereferenceable(8) %20) #9
  br i1 %153, label %.lr.ph103, label %._crit_edge104

154:                                              ; preds = %._crit_edge104, %131
  %155 = call noundef i64 @_ZNKSt6vectorIN7nanovdb2io16FileGridMetaDataESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %17) #9
  %156 = icmp eq i64 %155, 0
  br i1 %156, label %208, label %157

157:                                              ; preds = %154
  br i1 %.044.lcssa, label %158, label %171

158:                                              ; preds = %157
  %159 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.23)
          to label %160 unwind label %169

160:                                              ; preds = %158
  %161 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %159, ptr noundef nonnull align 8 dereferenceable(32) %130)
          to label %162 unwind label %169

162:                                              ; preds = %160
  %163 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %161, ptr noundef nonnull @.str.24)
          to label %164 unwind label %169

164:                                              ; preds = %162
  %165 = call noundef i64 @_ZNKSt6vectorIN7nanovdb2io16FileGridMetaDataESaIS2_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %17) #9
  %166 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %163, i64 noundef %165)
          to label %167 unwind label %169

167:                                              ; preds = %164
  %168 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %166, ptr noundef nonnull @.str.25)
          to label %171 unwind label %169

169:                                              ; preds = %167, %164, %162, %160, %158
  %170 = landingpad { ptr, i32 }
          catch ptr @_ZTISt9exception
          catch ptr null
  br label %211

171:                                              ; preds = %167, %157
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #9
  %172 = call ptr @_ZNSt6vectorIN7nanovdb2io16FileGridMetaDataESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %17) #9
  store ptr %172, ptr %21, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #9
  %173 = call ptr @_ZNSt6vectorIN7nanovdb2io16FileGridMetaDataESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %17) #9
  store ptr %173, ptr %22, align 8
  %174 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN7nanovdb2io16FileGridMetaDataESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %21, ptr noundef nonnull align 8 dereferenceable(8) %22) #9
  br i1 %174, label %.lr.ph106, label %._crit_edge107

._crit_edge107:                                   ; preds = %204, %171
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #9
  br label %208

.lr.ph106:                                        ; preds = %171, %204
  %175 = call noundef nonnull align 8 dereferenceable(208) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN7nanovdb2io16FileGridMetaDataESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %21) #9
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %23) #9
  %176 = getelementptr inbounds i8, ptr %175, i64 176
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %24) #9
  invoke void @_ZN7nanovdb10HostBufferC2Em(ptr noundef nonnull align 8 dereferenceable(32) %24, i64 noundef 0)
          to label %177 unwind label %188

177:                                              ; preds = %.lr.ph106
  invoke void @_ZN7nanovdb2io8readGridINS_10HostBufferEEENS_10GridHandleIT_EERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESD_iRKS4_(ptr dead_on_unwind nonnull writable sret(%"class.nanovdb::GridHandle") align 8 %23, ptr noundef nonnull align 8 dereferenceable(32) %130, ptr noundef nonnull align 8 dereferenceable(32) %176, i32 noundef 0, ptr noundef nonnull align 8 dereferenceable(32) %24)
          to label %178 unwind label %190

178:                                              ; preds = %177
  call void @_ZN7nanovdb10HostBufferD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #9
  %179 = invoke noundef zeroext i1 @_ZN7nanovdb5tools13validateGridsINS_10GridHandleINS_10HostBufferEEEEEbRKT_NS_9CheckModeEb(ptr noundef nonnull align 8 dereferenceable(56) %23, i32 noundef %.045.lcssa, i1 noundef zeroext %.044.lcssa)
          to label %180 unwind label %193

180:                                              ; preds = %178
  br i1 %.044.lcssa, label %181, label %195

181:                                              ; preds = %180
  %182 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.26)
          to label %183 unwind label %193

183:                                              ; preds = %181
  %184 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %182, ptr noundef nonnull align 8 dereferenceable(32) %176)
          to label %185 unwind label %193

185:                                              ; preds = %183
  %186 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %184, ptr noundef nonnull @.str.27)
          to label %187 unwind label %193

187:                                              ; preds = %185
  %.str.28..str.29 = select i1 %179, ptr @.str.28, ptr @.str.29
  br label %.invoke111

188:                                              ; preds = %.lr.ph106
  %189 = landingpad { ptr, i32 }
          catch ptr @_ZTISt9exception
          catch ptr null
  br label %192

190:                                              ; preds = %177
  %191 = landingpad { ptr, i32 }
          catch ptr @_ZTISt9exception
          catch ptr null
  call void @_ZN7nanovdb10HostBufferD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #9
  br label %192

192:                                              ; preds = %190, %188
  %.pn = phi { ptr, i32 } [ %191, %190 ], [ %189, %188 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %24) #9
  br label %207

193:                                              ; preds = %.invoke111, %.invoke, %198, %196, %185, %183, %181, %178
  %194 = landingpad { ptr, i32 }
          catch ptr @_ZTISt9exception
          catch ptr null
  call void @_ZN7nanovdb10GridHandleINS_10HostBufferEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %23) #9
  br label %207

195:                                              ; preds = %180
  br i1 %179, label %204, label %196

196:                                              ; preds = %195
  %197 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.26)
          to label %198 unwind label %193

198:                                              ; preds = %196
  %199 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcESaIcEERSt13basic_ostreamIT_T0_ES7_RKNSt7__cxx1112basic_stringIS4_S5_T1_EE(ptr noundef nonnull align 8 dereferenceable(8) %197, ptr noundef nonnull align 8 dereferenceable(32) %176)
          to label %.invoke111 unwind label %193

.invoke111:                                       ; preds = %198, %187
  %200 = phi ptr [ %186, %187 ], [ %199, %198 ]
  %201 = phi ptr [ %.str.28..str.29, %187 ], [ @.str.30, %198 ]
  %202 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %200, ptr noundef nonnull %201)
          to label %.invoke unwind label %193

.invoke:                                          ; preds = %.invoke111
  %203 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %202, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %204 unwind label %193

204:                                              ; preds = %.invoke, %195
  call void @_ZN7nanovdb10GridHandleINS_10HostBufferEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %23) #9
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %23) #9
  %205 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN7nanovdb2io16FileGridMetaDataESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %21) #9
  %206 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN7nanovdb2io16FileGridMetaDataESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %21, ptr noundef nonnull align 8 dereferenceable(8) %22) #9
  br i1 %206, label %.lr.ph106, label %._crit_edge107

207:                                              ; preds = %193, %192
  %.pn68 = phi { ptr, i32 } [ %194, %193 ], [ %.pn, %192 ]
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %23) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #9
  br label %211

208:                                              ; preds = %154, %._crit_edge107
  call void @_ZNSt6vectorIN7nanovdb2io16FileGridMetaDataESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %17) #9
  %209 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS6_SaIS6_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %15) #9
  %210 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8) %15, ptr noundef nonnull align 8 dereferenceable(8) %16) #9
  br i1 %210, label %.lr.ph109, label %._crit_edge110

211:                                              ; preds = %207, %169, %149
  %.pn68.pn = phi { ptr, i32 } [ %.pn68, %207 ], [ %170, %169 ], [ %150, %149 ]
  call void @_ZNSt6vectorIN7nanovdb2io16FileGridMetaDataESaIS2_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %17) #9
  br label %212

212:                                              ; preds = %211, %138
  %.pn68.pn.pn = phi { ptr, i32 } [ %.pn68.pn, %211 ], [ %139, %138 ]
  %.9 = extractvalue { ptr, i32 } %.pn68.pn.pn, 0
  %.960 = extractvalue { ptr, i32 } %.pn68.pn.pn, 1
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %17) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #9
  %213 = call i32 @llvm.eh.typeid.for.p0(ptr nonnull @_ZTISt9exception) #9
  %214 = icmp eq i32 %.960, %213
  %215 = call ptr @__cxa_begin_catch(ptr %.9) #9
  br i1 %214, label %216, label %230

216:                                              ; preds = %212
  %217 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef nonnull @.str.32)
          to label %218 unwind label %237

218:                                              ; preds = %216
  %219 = load ptr, ptr %215, align 8, !tbaa !26
  %220 = getelementptr inbounds i8, ptr %219, i64 16
  %221 = load ptr, ptr %220, align 8
  %222 = call noundef ptr %221(ptr noundef nonnull align 8 dereferenceable(8) %215) #9
  %223 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %217, ptr noundef %222)
          to label %224 unwind label %237

224:                                              ; preds = %218
  %225 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %223, ptr noundef nonnull @.str.33)
          to label %226 unwind label %237

226:                                              ; preds = %224
  %227 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %225, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %228 unwind label %237

228:                                              ; preds = %226
  invoke void @__cxa_end_catch()
          to label %229 unwind label %239

229:                                              ; preds = %228, %234, %._crit_edge110
  %.0 = phi i32 [ 1, %234 ], [ 0, %._crit_edge110 ], [ 1, %228 ]
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %4) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #9
  ret i32 %.0

230:                                              ; preds = %212
  %231 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cerr, ptr noundef nonnull @.str.31)
          to label %232 unwind label %235

232:                                              ; preds = %230
  %233 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %231, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %234 unwind label %235

234:                                              ; preds = %232
  invoke void @__cxa_end_catch()
          to label %229 unwind label %128

235:                                              ; preds = %232, %230
  %236 = landingpad { ptr, i32 }
          cleanup
  invoke void @__cxa_end_catch()
          to label %241 unwind label %242

237:                                              ; preds = %226, %224, %218, %216
  %238 = landingpad { ptr, i32 }
          cleanup
  invoke void @__cxa_end_catch()
          to label %241 unwind label %242

239:                                              ; preds = %228
  %240 = landingpad { ptr, i32 }
          cleanup
  br label %241

241:                                              ; preds = %128, %235, %237, %239, %121, %115, %108
  %.pn81.pn.pn.pn = phi { ptr, i32 } [ %.pn81.pn.pn, %108 ], [ %.pn75, %121 ], [ %116, %115 ], [ %129, %128 ], [ %236, %235 ], [ %240, %239 ], [ %238, %237 ]
  call void @_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %4) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %3) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #9
  resume { ptr, i32 } %.pn81.pn.pn.pn

242:                                              ; preds = %237, %235
  %243 = landingpad { ptr, i32 }
          catch ptr null
  %244 = extractvalue { ptr, i32 } %243, 0
  call void @__clang_call_terminate(ptr %244) #11
  unreachable
}

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

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

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

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i64 @_ZN7nanovdb2io10stringHashERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN7nanovdb2io8readGridINS_10HostBufferEEENS_10GridHandleIT_EERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESD_iRKS4_(ptr dead_on_unwind noalias writable sret(%"class.nanovdb::GridHandle") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32), i32 noundef, ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #5

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN7nanovdb5tools13validateGridsINS_10GridHandleINS_10HostBufferEEEEEbRKT_NS_9CheckModeEb(ptr noundef nonnull align 8 dereferenceable(56), i32 noundef, i1 noundef zeroext) local_unnamed_addr #5

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

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_(ptr noundef nonnull align 8 dereferenceable(8)) #1

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

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

; Function Attrs: nofree nosync nounwind memory(none)
declare i32 @llvm.eh.typeid.for.p0(ptr) #7

declare ptr @__cxa_begin_catch(ptr) local_unnamed_addr

declare void @__cxa_end_catch() local_unnamed_addr

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!7, !7, i64 0}
!10 = distinct !{!10, !11}
!11 = !{!"llvm.loop.mustprogress"}
!12 = !{!13, !14, i64 16}
!13 = !{!"_ZTSN7nanovdb2io12FileMetaDataE", !14, i64 0, !14, i64 8, !14, i64 16, !14, i64 24, !15, i64 32, !16, i64 36, !17, i64 40, !19, i64 88, !21, i64 112, !22, i64 136, !7, i64 140, !7, i64 156, !23, i64 168, !24, i64 170, !25, i64 172}
!14 = !{!"long", !7, i64 0}
!15 = !{!"_ZTSN7nanovdb8GridTypeE", !7, i64 0}
!16 = !{!"_ZTSN7nanovdb9GridClassE", !7, i64 0}
!17 = !{!"_ZTSN7nanovdb4math4BBoxINS0_4Vec3IdEELb1EEE", !18, i64 0}
!18 = !{!"_ZTSN7nanovdb4math8BaseBBoxINS0_4Vec3IdEEEE", !7, i64 0}
!19 = !{!"_ZTSN7nanovdb4math4BBoxINS0_5CoordELb0EEE", !20, i64 0}
!20 = !{!"_ZTSN7nanovdb4math8BaseBBoxINS0_5CoordEEE", !7, i64 0}
!21 = !{!"_ZTSN7nanovdb4math4Vec3IdEE", !7, i64 0}
!22 = !{!"int", !7, i64 0}
!23 = !{!"_ZTSN7nanovdb2io5CodecE", !7, i64 0}
!24 = !{!"short", !7, i64 0}
!25 = !{!"_ZTSN7nanovdb7VersionE", !22, i64 0}
!26 = !{!27, !27, i64 0}
!27 = !{!"vtable pointer", !8, i64 0}


; Effective O3 passes: AggressiveInstCombinePass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,SROAPass,SimplifyCFGPass