; LLVM IR from QingyongHu/SensatUrban :: cpp_wrappers/cpp_subsampling/grid_subsampling (grid_subsampling)

; 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.PointXYZ = type { float, float, float }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<PointXYZ, std::allocator<PointXYZ>>::_Vector_impl" }
%"struct.std::_Vector_base<PointXYZ, std::allocator<PointXYZ>>::_Vector_impl" = type { %"struct.std::_Vector_base<PointXYZ, std::allocator<PointXYZ>>::_Vector_impl_data" }
%"struct.std::_Vector_base<PointXYZ, std::allocator<PointXYZ>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::unordered_map" = type { %"class.std::_Hashtable" }
%"class.std::_Hashtable" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.std::__detail::_Hash_node_base" = type { ptr }
%"struct.std::__detail::_Prime_rehash_policy" = type { float, i64 }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%class.SampledData = type { i32, %class.PointXYZ, %"class.std::vector.0", %"class.std::vector.15" }
%"class.std::vector.0" = type { %"struct.std::_Vector_base.1" }
%"struct.std::_Vector_base.1" = type { %"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl" }
%"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl" = type { %"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl_data" }
%"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.15" = type { %"struct.std::_Vector_base.16" }
%"struct.std::_Vector_base.16" = type { %"struct.std::_Vector_base<std::unordered_map<int, int>, std::allocator<std::unordered_map<int, int>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::unordered_map<int, int>, std::allocator<std::unordered_map<int, int>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::unordered_map<int, int>, std::allocator<std::unordered_map<int, int>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::unordered_map<int, int>, std::allocator<std::unordered_map<int, int>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.std::pair" = type <{ %"struct.std::__detail::_Node_iterator", i8, [7 x i8] }>
%"struct.std::__detail::_Node_iterator" = type { %"struct.std::__detail::_Node_iterator_base" }
%"struct.std::__detail::_Node_iterator_base" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.20" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.21" = type { ptr }
%"struct.std::_Setw" = type { i32 }
%class.anon = type { float }
%"class.__gnu_cxx::__normal_iterator.24" = type { ptr }
%"struct.std::__detail::_Node_iterator.25" = type { %"struct.std::__detail::_Node_iterator_base.26" }
%"struct.std::__detail::_Node_iterator_base.26" = type { ptr }
%class.anon.27 = type { i8 }
%"struct.std::pair.22" = type { i64, %class.SampledData }
%"struct.std::pair.48" = type { i32, i32 }

@_ZSt4cout = external global %"class.std::basic_ostream", align 8
@.str = external hidden unnamed_addr constant [16 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1

; Function Attrs: mustprogress uwtable
define dso_local void @_Z16grid_subsamplingRSt6vectorI8PointXYZSaIS0_EES3_RS_IfSaIfEES6_RS_IiSaIiEES9_fi(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull align 8 dereferenceable(24) %2, ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef nonnull align 8 dereferenceable(24) %5, float noundef %6, i32 noundef %7) #0 personality ptr @__gxx_personality_v0 {
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca float, align 4
  %16 = alloca i32, align 4
  %17 = alloca i64, align 8
  %18 = alloca i64, align 8
  %19 = alloca i64, align 8
  %20 = alloca %class.PointXYZ, align 4
  %21 = alloca %"class.std::vector", align 8
  %22 = alloca ptr, align 8
  %23 = alloca i32, align 4
  %24 = alloca { <2 x float>, float }, align 8
  %25 = alloca %class.PointXYZ, align 4
  %26 = alloca %"class.std::vector", align 8
  %27 = alloca { <2 x float>, float }, align 8
  %28 = alloca %class.PointXYZ, align 4
  %29 = alloca %class.PointXYZ, align 4
  %30 = alloca %class.PointXYZ, align 4
  %31 = alloca %class.PointXYZ, align 4
  %32 = alloca { <2 x float>, float }, align 4
  %33 = alloca { <2 x float>, float }, align 8
  %34 = alloca { <2 x float>, float }, align 4
  %35 = alloca { <2 x float>, float }, align 8
  %36 = alloca { <2 x float>, float }, align 4
  %37 = alloca { <2 x float>, float }, align 8
  %38 = alloca i64, align 8
  %39 = alloca i64, align 8
  %40 = alloca i8, align 1
  %41 = alloca i8, align 1
  %42 = alloca i32, align 4
  %43 = alloca i32, align 4
  %44 = alloca i64, align 8
  %45 = alloca i64, align 8
  %46 = alloca i64, align 8
  %47 = alloca i64, align 8
  %48 = alloca %"class.std::unordered_map", align 8
  %49 = alloca ptr, align 8
  %50 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %51 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %52 = alloca ptr, align 8
  %53 = alloca %class.SampledData, align 8
  %54 = alloca %"struct.std::pair", align 8
  %55 = alloca %class.PointXYZ, align 4
  %56 = alloca %"class.__gnu_cxx::__normal_iterator.20", align 8
  %57 = alloca %"class.__gnu_cxx::__normal_iterator.20", align 8
  %58 = alloca %"class.__gnu_cxx::__normal_iterator.21", align 8
  %59 = alloca %"class.__gnu_cxx::__normal_iterator.21", align 8
  %60 = alloca { <2 x float>, float }, align 4
  %61 = alloca %class.PointXYZ, align 4
  %62 = alloca %"class.__gnu_cxx::__normal_iterator.20", align 8
  %63 = alloca %"class.__gnu_cxx::__normal_iterator.20", align 8
  %64 = alloca { <2 x float>, float }, align 4
  %65 = alloca %class.PointXYZ, align 4
  %66 = alloca %"class.__gnu_cxx::__normal_iterator.21", align 8
  %67 = alloca %"class.__gnu_cxx::__normal_iterator.21", align 8
  %68 = alloca { <2 x float>, float }, align 4
  %69 = alloca %class.PointXYZ, align 4
  %70 = alloca { <2 x float>, float }, align 4
  %71 = alloca %"struct.std::_Setw", align 4
  %72 = alloca ptr, align 8
  %73 = alloca %"struct.std::__detail::_Node_iterator", align 8
  %74 = alloca %"struct.std::__detail::_Node_iterator", align 8
  %75 = alloca i32, align 4
  %76 = alloca ptr, align 8
  %77 = alloca %class.PointXYZ, align 4
  %78 = alloca %class.PointXYZ, align 4
  %79 = alloca { <2 x float>, float }, align 4
  %80 = alloca { <2 x float>, float }, align 8
  %81 = alloca float, align 4
  %82 = alloca %"class.__gnu_cxx::__normal_iterator.20", align 8
  %83 = alloca %"class.__gnu_cxx::__normal_iterator.20", align 8
  %84 = alloca %"class.__gnu_cxx::__normal_iterator.20", align 8
  %85 = alloca %class.anon, align 4
  %86 = alloca %"class.__gnu_cxx::__normal_iterator.20", align 8
  %87 = alloca %"class.__gnu_cxx::__normal_iterator.24", align 8
  %88 = alloca %"class.__gnu_cxx::__normal_iterator.20", align 8
  %89 = alloca %"class.__gnu_cxx::__normal_iterator.20", align 8
  %90 = alloca %"class.__gnu_cxx::__normal_iterator.20", align 8
  %91 = alloca %"class.__gnu_cxx::__normal_iterator.20", align 8
  %92 = alloca i32, align 4
  %93 = alloca %"struct.std::__detail::_Node_iterator.25", align 8
  %94 = alloca %"struct.std::__detail::_Node_iterator.25", align 8
  %95 = alloca %"struct.std::__detail::_Node_iterator.25", align 8
  %96 = alloca %class.anon.27, align 1
  store ptr %0, ptr %9, align 8, !tbaa !5
  store ptr %1, ptr %10, align 8, !tbaa !5
  store ptr %2, ptr %11, align 8, !tbaa !5
  store ptr %3, ptr %12, align 8, !tbaa !5
  store ptr %4, ptr %13, align 8, !tbaa !5
  store ptr %5, ptr %14, align 8, !tbaa !5
  store float %6, ptr %15, align 4, !tbaa !9
  store i32 %7, ptr %16, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #10
  %97 = load ptr, ptr %9, align 8, !tbaa !5
  %98 = call noundef i64 @_ZNKSt6vectorI8PointXYZSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %97) #10
  store i64 %98, ptr %17, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #10
  %99 = load ptr, ptr %11, align 8, !tbaa !5
  %100 = call noundef i64 @_ZNKSt6vectorIfSaIfEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %99) #10
  %101 = load i64, ptr %17, align 8, !tbaa !13
  %102 = udiv i64 %100, %101
  store i64 %102, ptr %18, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #10
  %103 = load ptr, ptr %13, align 8, !tbaa !5
  %104 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %103) #10
  %105 = load i64, ptr %17, align 8, !tbaa !13
  %106 = udiv i64 %104, %105
  store i64 %106, ptr %19, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 12, ptr %20) #10
  %107 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZNSt6vectorI8PointXYZSaIS0_EEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %21, ptr noundef nonnull align 8 dereferenceable(24) %107)
  %108 = invoke { <2 x float>, float } @_Z9min_pointSt6vectorI8PointXYZSaIS0_EE(ptr noundef %21)
          to label %109 unwind label %172

109:                                              ; preds = %8
  store { <2 x float>, float } %108, ptr %24, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %20, ptr align 8 %24, i64 12, i1 false)
  call void @_ZNSt6vectorI8PointXYZSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %21) #10
  call void @llvm.lifetime.start.p0(i64 12, ptr %25) #10
  %110 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZNSt6vectorI8PointXYZSaIS0_EEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %26, ptr noundef nonnull align 8 dereferenceable(24) %110)
  %111 = invoke { <2 x float>, float } @_Z9max_pointSt6vectorI8PointXYZSaIS0_EE(ptr noundef %26)
          to label %112 unwind label %176

112:                                              ; preds = %109
  store { <2 x float>, float } %111, ptr %27, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %25, ptr align 8 %27, i64 12, i1 false)
  call void @_ZNSt6vectorI8PointXYZSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %26) #10
  call void @llvm.lifetime.start.p0(i64 12, ptr %28) #10
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %31, ptr align 4 %20, i64 12, i1 false), !tbaa.struct !15
  %113 = load float, ptr %15, align 4, !tbaa !9
  %114 = fdiv float 1.000000e+00, %113
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %32, ptr align 4 %31, i64 12, i1 false)
  %115 = getelementptr inbounds { <2 x float>, float }, ptr %32, i32 0, i32 0
  %116 = load <2 x float>, ptr %115, align 4
  %117 = getelementptr inbounds { <2 x float>, float }, ptr %32, i32 0, i32 1
  %118 = load float, ptr %117, align 4
  %119 = call { <2 x float>, float } @_Zml8PointXYZf(<2 x float> %116, float %118, float noundef %114)
  store { <2 x float>, float } %119, ptr %33, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %30, ptr align 8 %33, i64 12, i1 false)
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %34, ptr align 4 %30, i64 12, i1 false)
  %120 = getelementptr inbounds { <2 x float>, float }, ptr %34, i32 0, i32 0
  %121 = load <2 x float>, ptr %120, align 4
  %122 = getelementptr inbounds { <2 x float>, float }, ptr %34, i32 0, i32 1
  %123 = load float, ptr %122, align 4
  %124 = call { <2 x float>, float } @_Z5floor8PointXYZ(<2 x float> %121, float %123)
  store { <2 x float>, float } %124, ptr %35, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %29, ptr align 8 %35, i64 12, i1 false)
  %125 = load float, ptr %15, align 4, !tbaa !9
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %36, ptr align 4 %29, i64 12, i1 false)
  %126 = getelementptr inbounds { <2 x float>, float }, ptr %36, i32 0, i32 0
  %127 = load <2 x float>, ptr %126, align 4
  %128 = getelementptr inbounds { <2 x float>, float }, ptr %36, i32 0, i32 1
  %129 = load float, ptr %128, align 4
  %130 = call { <2 x float>, float } @_Zml8PointXYZf(<2 x float> %127, float %129, float noundef %125)
  store { <2 x float>, float } %130, ptr %37, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %28, ptr align 8 %37, i64 12, i1 false)
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #10
  %131 = getelementptr inbounds %class.PointXYZ, ptr %25, i32 0, i32 0
  %132 = load float, ptr %131, align 4, !tbaa !16
  %133 = getelementptr inbounds %class.PointXYZ, ptr %28, i32 0, i32 0
  %134 = load float, ptr %133, align 4, !tbaa !16
  %135 = fsub float %132, %134
  %136 = load float, ptr %15, align 4, !tbaa !9
  %137 = fdiv float %135, %136
  %138 = call noundef float @_ZSt5floorf(float noundef %137)
  %139 = fptoui float %138 to i64
  %140 = add i64 %139, 1
  store i64 %140, ptr %38, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #10
  %141 = getelementptr inbounds %class.PointXYZ, ptr %25, i32 0, i32 1
  %142 = load float, ptr %141, align 4, !tbaa !18
  %143 = getelementptr inbounds %class.PointXYZ, ptr %28, i32 0, i32 1
  %144 = load float, ptr %143, align 4, !tbaa !18
  %145 = fsub float %142, %144
  %146 = load float, ptr %15, align 4, !tbaa !9
  %147 = fdiv float %145, %146
  %148 = call noundef float @_ZSt5floorf(float noundef %147)
  %149 = fptoui float %148 to i64
  %150 = add i64 %149, 1
  store i64 %150, ptr %39, align 8, !tbaa !13
  call void @llvm.lifetime.start.p0(i64 1, ptr %40) #10
  %151 = load ptr, ptr %11, align 8, !tbaa !5
  %152 = call noundef i64 @_ZNKSt6vectorIfSaIfEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %151) #10
  %153 = icmp ugt i64 %152, 0
  %154 = zext i1 %153 to i8
  store i8 %154, ptr %40, align 1, !tbaa !19
  call void @llvm.lifetime.start.p0(i64 1, ptr %41) #10
  %155 = load ptr, ptr %13, align 8, !tbaa !5
  %156 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %155) #10
  %157 = icmp ugt i64 %156, 0
  %158 = zext i1 %157 to i8
  store i8 %158, ptr %41, align 1, !tbaa !19
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #10
  store i32 0, ptr %42, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #10
  %159 = load i64, ptr %17, align 8, !tbaa !13
  %160 = udiv i64 %159, 100
  %161 = trunc i64 %160 to i32
  store i32 %161, ptr %43, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #10
  call void @llvm.lifetime.start.p0(i64 56, ptr %48) #10
  call void @_ZNSt13unordered_mapIm11SampledDataSt4hashImESt8equal_toImESaISt4pairIKmS0_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %48) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #10
  %162 = load ptr, ptr %9, align 8, !tbaa !5
  store ptr %162, ptr %49, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #10
  %163 = load ptr, ptr %49, align 8, !tbaa !5
  %164 = call ptr @_ZNSt6vectorI8PointXYZSaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %163) #10
  %165 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %50, i32 0, i32 0
  store ptr %164, ptr %165, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #10
  %166 = load ptr, ptr %49, align 8, !tbaa !5
  %167 = call ptr @_ZNSt6vectorI8PointXYZSaIS0_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %166) #10
  %168 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %51, i32 0, i32 0
  store ptr %167, ptr %168, align 8
  br label %169

169:                                              ; preds = %386, %112
  %170 = call noundef zeroext i1 @_ZN9__gnu_cxxneIP8PointXYZSt6vectorIS1_SaIS1_EEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8) %50, ptr noundef nonnull align 8 dereferenceable(8) %51) #10
  br i1 %170, label %180, label %171

171:                                              ; preds = %169
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #10
  br label %389

172:                                              ; preds = %8
  %173 = landingpad { ptr, i32 }
          cleanup
  %174 = extractvalue { ptr, i32 } %173, 0
  store ptr %174, ptr %22, align 8
  %175 = extractvalue { ptr, i32 } %173, 1
  store i32 %175, ptr %23, align 4
  call void @_ZNSt6vectorI8PointXYZSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %21) #10
  br label %576

176:                                              ; preds = %109
  %177 = landingpad { ptr, i32 }
          cleanup
  %178 = extractvalue { ptr, i32 } %177, 0
  store ptr %178, ptr %22, align 8
  %179 = extractvalue { ptr, i32 } %177, 1
  store i32 %179, ptr %23, align 4
  call void @_ZNSt6vectorI8PointXYZSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %26) #10
  br label %575

180:                                              ; preds = %169
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #10
  %181 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP8PointXYZSt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %50) #10
  store ptr %181, ptr %52, align 8, !tbaa !5
  %182 = load ptr, ptr %52, align 8, !tbaa !5
  %183 = getelementptr inbounds %class.PointXYZ, ptr %182, i32 0, i32 0
  %184 = load float, ptr %183, align 4, !tbaa !16
  %185 = getelementptr inbounds %class.PointXYZ, ptr %28, i32 0, i32 0
  %186 = load float, ptr %185, align 4, !tbaa !16
  %187 = fsub float %184, %186
  %188 = load float, ptr %15, align 4, !tbaa !9
  %189 = fdiv float %187, %188
  %190 = invoke noundef float @_ZSt5floorf(float noundef %189)
          to label %191 unwind label %239

191:                                              ; preds = %180
  %192 = fptoui float %190 to i64
  store i64 %192, ptr %44, align 8, !tbaa !13
  %193 = load ptr, ptr %52, align 8, !tbaa !5
  %194 = getelementptr inbounds %class.PointXYZ, ptr %193, i32 0, i32 1
  %195 = load float, ptr %194, align 4, !tbaa !18
  %196 = getelementptr inbounds %class.PointXYZ, ptr %28, i32 0, i32 1
  %197 = load float, ptr %196, align 4, !tbaa !18
  %198 = fsub float %195, %197
  %199 = load float, ptr %15, align 4, !tbaa !9
  %200 = fdiv float %198, %199
  %201 = invoke noundef float @_ZSt5floorf(float noundef %200)
          to label %202 unwind label %239

202:                                              ; preds = %191
  %203 = fptoui float %201 to i64
  store i64 %203, ptr %45, align 8, !tbaa !13
  %204 = load ptr, ptr %52, align 8, !tbaa !5
  %205 = getelementptr inbounds %class.PointXYZ, ptr %204, i32 0, i32 2
  %206 = load float, ptr %205, align 4, !tbaa !21
  %207 = getelementptr inbounds %class.PointXYZ, ptr %28, i32 0, i32 2
  %208 = load float, ptr %207, align 4, !tbaa !21
  %209 = fsub float %206, %208
  %210 = load float, ptr %15, align 4, !tbaa !9
  %211 = fdiv float %209, %210
  %212 = invoke noundef float @_ZSt5floorf(float noundef %211)
          to label %213 unwind label %239

213:                                              ; preds = %202
  %214 = fptoui float %212 to i64
  store i64 %214, ptr %46, align 8, !tbaa !13
  %215 = load i64, ptr %44, align 8, !tbaa !13
  %216 = load i64, ptr %38, align 8, !tbaa !13
  %217 = load i64, ptr %45, align 8, !tbaa !13
  %218 = mul i64 %216, %217
  %219 = add i64 %215, %218
  %220 = load i64, ptr %38, align 8, !tbaa !13
  %221 = load i64, ptr %39, align 8, !tbaa !13
  %222 = mul i64 %220, %221
  %223 = load i64, ptr %46, align 8, !tbaa !13
  %224 = mul i64 %222, %223
  %225 = add i64 %219, %224
  store i64 %225, ptr %47, align 8, !tbaa !13
  %226 = invoke noundef i64 @_ZNKSt13unordered_mapIm11SampledDataSt4hashImESt8equal_toImESaISt4pairIKmS0_EEE5countERS6_(ptr noundef nonnull align 8 dereferenceable(56) %48, ptr noundef nonnull align 8 dereferenceable(8) %47)
          to label %227 unwind label %239

227:                                              ; preds = %213
  %228 = icmp ult i64 %226, 1
  br i1 %228, label %229, label %252

229:                                              ; preds = %227
  call void @llvm.lifetime.start.p0(i64 64, ptr %53) #10
  %230 = load i64, ptr %18, align 8, !tbaa !13
  %231 = load i64, ptr %19, align 8, !tbaa !13
  invoke void @_ZN11SampledDataC2Emm(ptr noundef nonnull align 8 dereferenceable(64) %53, i64 noundef %230, i64 noundef %231)
          to label %232 unwind label %243

232:                                              ; preds = %229
  %233 = invoke { ptr, i8 } @_ZNSt13unordered_mapIm11SampledDataSt4hashImESt8equal_toImESaISt4pairIKmS0_EEE7emplaceIJRmS0_EEES5_INSt8__detail14_Node_iteratorIS7_Lb0ELb0EEEbEDpOT_(ptr noundef nonnull align 8 dereferenceable(56) %48, ptr noundef nonnull align 8 dereferenceable(8) %47, ptr noundef nonnull align 8 dereferenceable(64) %53)
          to label %234 unwind label %247

234:                                              ; preds = %232
  %235 = getelementptr inbounds { ptr, i8 }, ptr %54, i32 0, i32 0
  %236 = extractvalue { ptr, i8 } %233, 0
  store ptr %236, ptr %235, align 8
  %237 = getelementptr inbounds { ptr, i8 }, ptr %54, i32 0, i32 1
  %238 = extractvalue { ptr, i8 } %233, 1
  store i8 %238, ptr %237, align 8
  call void @_ZN11SampledDataD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %53) #10
  call void @llvm.lifetime.end.p0(i64 64, ptr %53) #10
  br label %252

239:                                              ; preds = %382, %377, %372, %370, %368, %349, %347, %323, %296, %258, %213, %202, %191, %180
  %240 = landingpad { ptr, i32 }
          cleanup
  %241 = extractvalue { ptr, i32 } %240, 0
  store ptr %241, ptr %22, align 8
  %242 = extractvalue { ptr, i32 } %240, 1
  store i32 %242, ptr %23, align 4
  br label %388

243:                                              ; preds = %229
  %244 = landingpad { ptr, i32 }
          cleanup
  %245 = extractvalue { ptr, i32 } %244, 0
  store ptr %245, ptr %22, align 8
  %246 = extractvalue { ptr, i32 } %244, 1
  store i32 %246, ptr %23, align 4
  br label %251

247:                                              ; preds = %232
  %248 = landingpad { ptr, i32 }
          cleanup
  %249 = extractvalue { ptr, i32 } %248, 0
  store ptr %249, ptr %22, align 8
  %250 = extractvalue { ptr, i32 } %248, 1
  store i32 %250, ptr %23, align 4
  call void @_ZN11SampledDataD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %53) #10
  br label %251

251:                                              ; preds = %247, %243
  call void @llvm.lifetime.end.p0(i64 64, ptr %53) #10
  br label %388

252:                                              ; preds = %234, %227
  %253 = load i8, ptr %40, align 1, !tbaa !19, !range !22, !noundef !23
  %254 = trunc i8 %253 to i1
  br i1 %254, label %255, label %293

255:                                              ; preds = %252
  %256 = load i8, ptr %41, align 1, !tbaa !19, !range !22, !noundef !23
  %257 = trunc i8 %256 to i1
  br i1 %257, label %258, label %293

258:                                              ; preds = %255
  %259 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZNSt13unordered_mapIm11SampledDataSt4hashImESt8equal_toImESaISt4pairIKmS0_EEEixERS6_(ptr noundef nonnull align 8 dereferenceable(56) %48, ptr noundef nonnull align 8 dereferenceable(8) %47)
          to label %260 unwind label %239

260:                                              ; preds = %258
  %261 = load ptr, ptr %52, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %55, ptr align 4 %261, i64 12, i1 false), !tbaa.struct !15
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #10
  %262 = load ptr, ptr %11, align 8, !tbaa !5
  %263 = call ptr @_ZNSt6vectorIfSaIfEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %262) #10
  %264 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.20", ptr %57, i32 0, i32 0
  store ptr %263, ptr %264, align 8
  %265 = load i32, ptr %42, align 4, !tbaa !11
  %266 = sext i32 %265 to i64
  %267 = load i64, ptr %18, align 8, !tbaa !13
  %268 = mul i64 %266, %267
  %269 = call ptr @_ZNK9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEplEl(ptr noundef nonnull align 8 dereferenceable(8) %57, i64 noundef %268) #10
  %270 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.20", ptr %56, i32 0, i32 0
  store ptr %269, ptr %270, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #10
  %271 = load ptr, ptr %13, align 8, !tbaa !5
  %272 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %271) #10
  %273 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.21", ptr %59, i32 0, i32 0
  store ptr %272, ptr %273, align 8
  %274 = load i32, ptr %42, align 4, !tbaa !11
  %275 = sext i32 %274 to i64
  %276 = load i64, ptr %19, align 8, !tbaa !13
  %277 = mul i64 %275, %276
  %278 = call ptr @_ZNK9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEplEl(ptr noundef nonnull align 8 dereferenceable(8) %59, i64 noundef %277) #10
  %279 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.21", ptr %58, i32 0, i32 0
  store ptr %278, ptr %279, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %60, ptr align 4 %55, i64 12, i1 false)
  %280 = getelementptr inbounds { <2 x float>, float }, ptr %60, i32 0, i32 0
  %281 = load <2 x float>, ptr %280, align 4
  %282 = getelementptr inbounds { <2 x float>, float }, ptr %60, i32 0, i32 1
  %283 = load float, ptr %282, align 4
  %284 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.20", ptr %56, i32 0, i32 0
  %285 = load ptr, ptr %284, align 8
  %286 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.21", ptr %58, i32 0, i32 0
  %287 = load ptr, ptr %286, align 8
  invoke void @_ZN11SampledData10update_allE8PointXYZN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEENS2_IPiS4_IiSaIiEEEE(ptr noundef nonnull align 8 dereferenceable(64) %259, <2 x float> %281, float %283, ptr %285, ptr %287)
          to label %288 unwind label %289

288:                                              ; preds = %260
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #10
  br label %358

289:                                              ; preds = %260
  %290 = landingpad { ptr, i32 }
          cleanup
  %291 = extractvalue { ptr, i32 } %290, 0
  store ptr %291, ptr %22, align 8
  %292 = extractvalue { ptr, i32 } %290, 1
  store i32 %292, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #10
  br label %388

293:                                              ; preds = %255, %252
  %294 = load i8, ptr %40, align 1, !tbaa !19, !range !22, !noundef !23
  %295 = trunc i8 %294 to i1
  br i1 %295, label %296, label %320

296:                                              ; preds = %293
  %297 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZNSt13unordered_mapIm11SampledDataSt4hashImESt8equal_toImESaISt4pairIKmS0_EEEixERS6_(ptr noundef nonnull align 8 dereferenceable(56) %48, ptr noundef nonnull align 8 dereferenceable(8) %47)
          to label %298 unwind label %239

298:                                              ; preds = %296
  %299 = load ptr, ptr %52, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %61, ptr align 4 %299, i64 12, i1 false), !tbaa.struct !15
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #10
  %300 = load ptr, ptr %11, align 8, !tbaa !5
  %301 = call ptr @_ZNSt6vectorIfSaIfEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %300) #10
  %302 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.20", ptr %63, i32 0, i32 0
  store ptr %301, ptr %302, align 8
  %303 = load i32, ptr %42, align 4, !tbaa !11
  %304 = sext i32 %303 to i64
  %305 = load i64, ptr %18, align 8, !tbaa !13
  %306 = mul i64 %304, %305
  %307 = call ptr @_ZNK9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEplEl(ptr noundef nonnull align 8 dereferenceable(8) %63, i64 noundef %306) #10
  %308 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.20", ptr %62, i32 0, i32 0
  store ptr %307, ptr %308, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %64, ptr align 4 %61, i64 12, i1 false)
  %309 = getelementptr inbounds { <2 x float>, float }, ptr %64, i32 0, i32 0
  %310 = load <2 x float>, ptr %309, align 4
  %311 = getelementptr inbounds { <2 x float>, float }, ptr %64, i32 0, i32 1
  %312 = load float, ptr %311, align 4
  %313 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.20", ptr %62, i32 0, i32 0
  %314 = load ptr, ptr %313, align 8
  invoke void @_ZN11SampledData15update_featuresE8PointXYZN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEE(ptr noundef nonnull align 8 dereferenceable(64) %297, <2 x float> %310, float %312, ptr %314)
          to label %315 unwind label %316

315:                                              ; preds = %298
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #10
  br label %357

316:                                              ; preds = %298
  %317 = landingpad { ptr, i32 }
          cleanup
  %318 = extractvalue { ptr, i32 } %317, 0
  store ptr %318, ptr %22, align 8
  %319 = extractvalue { ptr, i32 } %317, 1
  store i32 %319, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #10
  br label %388

320:                                              ; preds = %293
  %321 = load i8, ptr %41, align 1, !tbaa !19, !range !22, !noundef !23
  %322 = trunc i8 %321 to i1
  br i1 %322, label %323, label %347

323:                                              ; preds = %320
  %324 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZNSt13unordered_mapIm11SampledDataSt4hashImESt8equal_toImESaISt4pairIKmS0_EEEixERS6_(ptr noundef nonnull align 8 dereferenceable(56) %48, ptr noundef nonnull align 8 dereferenceable(8) %47)
          to label %325 unwind label %239

325:                                              ; preds = %323
  %326 = load ptr, ptr %52, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %65, ptr align 4 %326, i64 12, i1 false), !tbaa.struct !15
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #10
  %327 = load ptr, ptr %13, align 8, !tbaa !5
  %328 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %327) #10
  %329 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.21", ptr %67, i32 0, i32 0
  store ptr %328, ptr %329, align 8
  %330 = load i32, ptr %42, align 4, !tbaa !11
  %331 = sext i32 %330 to i64
  %332 = load i64, ptr %19, align 8, !tbaa !13
  %333 = mul i64 %331, %332
  %334 = call ptr @_ZNK9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEplEl(ptr noundef nonnull align 8 dereferenceable(8) %67, i64 noundef %333) #10
  %335 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.21", ptr %66, i32 0, i32 0
  store ptr %334, ptr %335, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %68, ptr align 4 %65, i64 12, i1 false)
  %336 = getelementptr inbounds { <2 x float>, float }, ptr %68, i32 0, i32 0
  %337 = load <2 x float>, ptr %336, align 4
  %338 = getelementptr inbounds { <2 x float>, float }, ptr %68, i32 0, i32 1
  %339 = load float, ptr %338, align 4
  %340 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.21", ptr %66, i32 0, i32 0
  %341 = load ptr, ptr %340, align 8
  invoke void @_ZN11SampledData14update_classesE8PointXYZN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEE(ptr noundef nonnull align 8 dereferenceable(64) %324, <2 x float> %337, float %339, ptr %341)
          to label %342 unwind label %343

342:                                              ; preds = %325
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #10
  br label %356

343:                                              ; preds = %325
  %344 = landingpad { ptr, i32 }
          cleanup
  %345 = extractvalue { ptr, i32 } %344, 0
  store ptr %345, ptr %22, align 8
  %346 = extractvalue { ptr, i32 } %344, 1
  store i32 %346, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #10
  br label %388

347:                                              ; preds = %320
  %348 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZNSt13unordered_mapIm11SampledDataSt4hashImESt8equal_toImESaISt4pairIKmS0_EEEixERS6_(ptr noundef nonnull align 8 dereferenceable(56) %48, ptr noundef nonnull align 8 dereferenceable(8) %47)
          to label %349 unwind label %239

349:                                              ; preds = %347
  %350 = load ptr, ptr %52, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %69, ptr align 4 %350, i64 12, i1 false), !tbaa.struct !15
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %70, ptr align 4 %69, i64 12, i1 false)
  %351 = getelementptr inbounds { <2 x float>, float }, ptr %70, i32 0, i32 0
  %352 = load <2 x float>, ptr %351, align 4
  %353 = getelementptr inbounds { <2 x float>, float }, ptr %70, i32 0, i32 1
  %354 = load float, ptr %353, align 4
  invoke void @_ZN11SampledData13update_pointsE8PointXYZ(ptr noundef nonnull align 8 dereferenceable(64) %348, <2 x float> %352, float %354)
          to label %355 unwind label %239

355:                                              ; preds = %349
  br label %356

356:                                              ; preds = %355, %342
  br label %357

357:                                              ; preds = %356, %315
  br label %358

358:                                              ; preds = %357, %288
  %359 = load i32, ptr %42, align 4, !tbaa !11
  %360 = add nsw i32 %359, 1
  store i32 %360, ptr %42, align 4, !tbaa !11
  %361 = load i32, ptr %16, align 4, !tbaa !11
  %362 = icmp sgt i32 %361, 1
  br i1 %362, label %363, label %385

363:                                              ; preds = %358
  %364 = load i32, ptr %42, align 4, !tbaa !11
  %365 = load i32, ptr %43, align 4, !tbaa !11
  %366 = srem i32 %364, %365
  %367 = icmp eq i32 %366, 0
  br i1 %367, label %368, label %385

368:                                              ; preds = %363
  %369 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str)
          to label %370 unwind label %239

370:                                              ; preds = %368
  %371 = invoke i32 @_ZSt4setwi(i32 noundef 3)
          to label %372 unwind label %239

372:                                              ; preds = %370
  %373 = getelementptr inbounds %"struct.std::_Setw", ptr %71, i32 0, i32 0
  store i32 %371, ptr %373, align 4
  %374 = getelementptr inbounds %"struct.std::_Setw", ptr %71, i32 0, i32 0
  %375 = load i32, ptr %374, align 4
  %376 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St5_Setw(ptr noundef nonnull align 8 dereferenceable(8) %369, i32 %375)
          to label %377 unwind label %239

377:                                              ; preds = %372
  %378 = load i32, ptr %42, align 4, !tbaa !11
  %379 = load i32, ptr %43, align 4, !tbaa !11
  %380 = sdiv i32 %378, %379
  %381 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %376, i32 noundef %380)
          to label %382 unwind label %239

382:                                              ; preds = %377
  %383 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %381, ptr noundef @.str.1)
          to label %384 unwind label %239

384:                                              ; preds = %382
  br label %385

385:                                              ; preds = %384, %363, %358
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #10
  br label %386

386:                                              ; preds = %385
  %387 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIP8PointXYZSt6vectorIS1_SaIS1_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %50) #10
  br label %169

388:                                              ; preds = %343, %316, %289, %251, %239
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #10
  br label %574

389:                                              ; preds = %171
  %390 = load ptr, ptr %10, align 8, !tbaa !5
  %391 = call noundef i64 @_ZNKSt13unordered_mapIm11SampledDataSt4hashImESt8equal_toImESaISt4pairIKmS0_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(56) %48) #10
  invoke void @_ZNSt6vectorI8PointXYZSaIS0_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %390, i64 noundef %391)
          to label %392 unwind label %401

392:                                              ; preds = %389
  %393 = load i8, ptr %40, align 1, !tbaa !19, !range !22, !noundef !23
  %394 = trunc i8 %393 to i1
  br i1 %394, label %395, label %405

395:                                              ; preds = %392
  %396 = load ptr, ptr %12, align 8, !tbaa !5
  %397 = call noundef i64 @_ZNKSt13unordered_mapIm11SampledDataSt4hashImESt8equal_toImESaISt4pairIKmS0_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(56) %48) #10
  %398 = load i64, ptr %18, align 8, !tbaa !13
  %399 = mul i64 %397, %398
  invoke void @_ZNSt6vectorIfSaIfEE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %396, i64 noundef %399)
          to label %400 unwind label %401

400:                                              ; preds = %395
  br label %405

401:                                              ; preds = %408, %395, %389
  %402 = landingpad { ptr, i32 }
          cleanup
  %403 = extractvalue { ptr, i32 } %402, 0
  store ptr %403, ptr %22, align 8
  %404 = extractvalue { ptr, i32 } %402, 1
  store i32 %404, ptr %23, align 4
  br label %574

405:                                              ; preds = %400, %392
  %406 = load i8, ptr %41, align 1, !tbaa !19, !range !22, !noundef !23
  %407 = trunc i8 %406 to i1
  br i1 %407, label %408, label %414

408:                                              ; preds = %405
  %409 = load ptr, ptr %14, align 8, !tbaa !5
  %410 = call noundef i64 @_ZNKSt13unordered_mapIm11SampledDataSt4hashImESt8equal_toImESaISt4pairIKmS0_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(56) %48) #10
  %411 = load i64, ptr %19, align 8, !tbaa !13
  %412 = mul i64 %410, %411
  invoke void @_ZNSt6vectorIiSaIiEE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %409, i64 noundef %412)
          to label %413 unwind label %401

413:                                              ; preds = %408
  br label %414

414:                                              ; preds = %413, %405
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #10
  store ptr %48, ptr %72, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #10
  %415 = load ptr, ptr %72, align 8, !tbaa !5
  %416 = call ptr @_ZNSt13unordered_mapIm11SampledDataSt4hashImESt8equal_toImESaISt4pairIKmS0_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(56) %415) #10
  %417 = getelementptr inbounds %"struct.std::__detail::_Node_iterator", ptr %73, i32 0, i32 0
  %418 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %417, i32 0, i32 0
  store ptr %416, ptr %418, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #10
  %419 = load ptr, ptr %72, align 8, !tbaa !5
  %420 = call ptr @_ZNSt13unordered_mapIm11SampledDataSt4hashImESt8equal_toImESaISt4pairIKmS0_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %419) #10
  %421 = getelementptr inbounds %"struct.std::__detail::_Node_iterator", ptr %74, i32 0, i32 0
  %422 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %421, i32 0, i32 0
  store ptr %420, ptr %422, align 8
  br label %423

423:                                              ; preds = %570, %414
  %424 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseISt4pairIKm11SampledDataELb0EEES7_(ptr noundef nonnull align 8 dereferenceable(8) %73, ptr noundef nonnull align 8 dereferenceable(8) %74) #10
  br i1 %424, label %426, label %425

425:                                              ; preds = %423
  store i32 4, ptr %75, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #10
  br label %573

426:                                              ; preds = %423
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #10
  %427 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKm11SampledDataELb0ELb0EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %73) #10
  store ptr %427, ptr %76, align 8, !tbaa !5
  %428 = load ptr, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 12, ptr %77) #10
  %429 = load ptr, ptr %76, align 8, !tbaa !5
  %430 = getelementptr inbounds %"struct.std::pair.22", ptr %429, i32 0, i32 1
  %431 = getelementptr inbounds %class.SampledData, ptr %430, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %78, ptr align 4 %431, i64 12, i1 false), !tbaa.struct !15
  %432 = load ptr, ptr %76, align 8, !tbaa !5
  %433 = getelementptr inbounds %"struct.std::pair.22", ptr %432, i32 0, i32 1
  %434 = getelementptr inbounds %class.SampledData, ptr %433, i32 0, i32 0
  %435 = load i32, ptr %434, align 8, !tbaa !24
  %436 = sitofp i32 %435 to double
  %437 = fdiv double 1.000000e+00, %436
  %438 = fptrunc double %437 to float
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %79, ptr align 4 %78, i64 12, i1 false)
  %439 = getelementptr inbounds { <2 x float>, float }, ptr %79, i32 0, i32 0
  %440 = load <2 x float>, ptr %439, align 4
  %441 = getelementptr inbounds { <2 x float>, float }, ptr %79, i32 0, i32 1
  %442 = load float, ptr %441, align 4
  %443 = invoke { <2 x float>, float } @_Zml8PointXYZf(<2 x float> %440, float %442, float noundef %438)
          to label %444 unwind label %505

444:                                              ; preds = %426
  store { <2 x float>, float } %443, ptr %80, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %77, ptr align 8 %80, i64 12, i1 false)
  invoke void @_ZNSt6vectorI8PointXYZSaIS0_EE9push_backEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %428, ptr noundef nonnull align 4 dereferenceable(12) %77)
          to label %445 unwind label %505

445:                                              ; preds = %444
  call void @llvm.lifetime.end.p0(i64 12, ptr %77) #10
  %446 = load i8, ptr %40, align 1, !tbaa !19, !range !22, !noundef !23
  %447 = trunc i8 %446 to i1
  br i1 %447, label %448, label %518

448:                                              ; preds = %445
  call void @llvm.lifetime.start.p0(i64 4, ptr %81) #10
  %449 = load ptr, ptr %76, align 8, !tbaa !5
  %450 = getelementptr inbounds %"struct.std::pair.22", ptr %449, i32 0, i32 1
  %451 = getelementptr inbounds %class.SampledData, ptr %450, i32 0, i32 0
  %452 = load i32, ptr %451, align 8, !tbaa !24
  %453 = sitofp i32 %452 to float
  store float %453, ptr %81, align 4, !tbaa !9
  %454 = load ptr, ptr %76, align 8, !tbaa !5
  %455 = getelementptr inbounds %"struct.std::pair.22", ptr %454, i32 0, i32 1
  %456 = getelementptr inbounds %class.SampledData, ptr %455, i32 0, i32 2
  %457 = call ptr @_ZNSt6vectorIfSaIfEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %456) #10
  %458 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.20", ptr %82, i32 0, i32 0
  store ptr %457, ptr %458, align 8
  %459 = load ptr, ptr %76, align 8, !tbaa !5
  %460 = getelementptr inbounds %"struct.std::pair.22", ptr %459, i32 0, i32 1
  %461 = getelementptr inbounds %class.SampledData, ptr %460, i32 0, i32 2
  %462 = call ptr @_ZNSt6vectorIfSaIfEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %461) #10
  %463 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.20", ptr %83, i32 0, i32 0
  store ptr %462, ptr %463, align 8
  %464 = load ptr, ptr %76, align 8, !tbaa !5
  %465 = getelementptr inbounds %"struct.std::pair.22", ptr %464, i32 0, i32 1
  %466 = getelementptr inbounds %class.SampledData, ptr %465, i32 0, i32 2
  %467 = call ptr @_ZNSt6vectorIfSaIfEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %466) #10
  %468 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.20", ptr %84, i32 0, i32 0
  store ptr %467, ptr %468, align 8
  %469 = getelementptr inbounds %class.anon, ptr %85, i32 0, i32 0
  %470 = load float, ptr %81, align 4, !tbaa !9
  store float %470, ptr %469, align 4, !tbaa !35
  %471 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.20", ptr %82, i32 0, i32 0
  %472 = load ptr, ptr %471, align 8
  %473 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.20", ptr %83, i32 0, i32 0
  %474 = load ptr, ptr %473, align 8
  %475 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.20", ptr %84, i32 0, i32 0
  %476 = load ptr, ptr %475, align 8
  %477 = getelementptr inbounds %class.anon, ptr %85, i32 0, i32 0
  %478 = load float, ptr %477, align 4
  %479 = invoke ptr @"_ZSt9transformIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEES6_Z16grid_subsamplingRS3_I8PointXYZSaIS7_EESA_RS5_SB_RS3_IiSaIiEESE_fiE3$_1ET0_T_SH_SG_T1_"(ptr %472, ptr %474, ptr %476, float %478)
          to label %480 unwind label %509

480:                                              ; preds = %448
  %481 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.20", ptr %86, i32 0, i32 0
  store ptr %479, ptr %481, align 8
  %482 = load ptr, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %88) #10
  %483 = load ptr, ptr %12, align 8, !tbaa !5
  %484 = call ptr @_ZNSt6vectorIfSaIfEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %483) #10
  %485 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.20", ptr %88, i32 0, i32 0
  store ptr %484, ptr %485, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKfSt6vectorIfSaIfEEEC2IPfvEERKNS0_IT_S5_EE(ptr noundef nonnull align 8 dereferenceable(8) %87, ptr noundef nonnull align 8 dereferenceable(8) %88) #10
  %486 = load ptr, ptr %76, align 8, !tbaa !5
  %487 = getelementptr inbounds %"struct.std::pair.22", ptr %486, i32 0, i32 1
  %488 = getelementptr inbounds %class.SampledData, ptr %487, i32 0, i32 2
  %489 = call ptr @_ZNSt6vectorIfSaIfEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %488) #10
  %490 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.20", ptr %89, i32 0, i32 0
  store ptr %489, ptr %490, align 8
  %491 = load ptr, ptr %76, align 8, !tbaa !5
  %492 = getelementptr inbounds %"struct.std::pair.22", ptr %491, i32 0, i32 1
  %493 = getelementptr inbounds %class.SampledData, ptr %492, i32 0, i32 2
  %494 = call ptr @_ZNSt6vectorIfSaIfEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %493) #10
  %495 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.20", ptr %90, i32 0, i32 0
  store ptr %494, ptr %495, align 8
  %496 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.24", ptr %87, i32 0, i32 0
  %497 = load ptr, ptr %496, align 8
  %498 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.20", ptr %89, i32 0, i32 0
  %499 = load ptr, ptr %498, align 8
  %500 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.20", ptr %90, i32 0, i32 0
  %501 = load ptr, ptr %500, align 8
  %502 = invoke ptr @_ZNSt6vectorIfSaIfEE6insertIN9__gnu_cxx17__normal_iteratorIPfS1_EEvEES6_NS4_IPKfS1_EET_SA_(ptr noundef nonnull align 8 dereferenceable(24) %482, ptr %497, ptr %499, ptr %501)
          to label %503 unwind label %513

503:                                              ; preds = %480
  %504 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.20", ptr %91, i32 0, i32 0
  store ptr %502, ptr %504, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #10
  br label %518

505:                                              ; preds = %444, %426
  %506 = landingpad { ptr, i32 }
          cleanup
  %507 = extractvalue { ptr, i32 } %506, 0
  store ptr %507, ptr %22, align 8
  %508 = extractvalue { ptr, i32 } %506, 1
  store i32 %508, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 12, ptr %77) #10
  br label %572

509:                                              ; preds = %448
  %510 = landingpad { ptr, i32 }
          cleanup
  %511 = extractvalue { ptr, i32 } %510, 0
  store ptr %511, ptr %22, align 8
  %512 = extractvalue { ptr, i32 } %510, 1
  store i32 %512, ptr %23, align 4
  br label %517

513:                                              ; preds = %480
  %514 = landingpad { ptr, i32 }
          cleanup
  %515 = extractvalue { ptr, i32 } %514, 0
  store ptr %515, ptr %22, align 8
  %516 = extractvalue { ptr, i32 } %514, 1
  store i32 %516, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #10
  br label %517

517:                                              ; preds = %513, %509
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #10
  br label %572

518:                                              ; preds = %503, %445
  %519 = load i8, ptr %41, align 1, !tbaa !19, !range !22, !noundef !23
  %520 = trunc i8 %519 to i1
  br i1 %520, label %521, label %569

521:                                              ; preds = %518
  call void @llvm.lifetime.start.p0(i64 4, ptr %92) #10
  store i32 0, ptr %92, align 4, !tbaa !11
  br label %522

522:                                              ; preds = %561, %521
  %523 = load i32, ptr %92, align 4, !tbaa !11
  %524 = sext i32 %523 to i64
  %525 = load i64, ptr %19, align 8, !tbaa !13
  %526 = icmp ult i64 %524, %525
  br i1 %526, label %528, label %527

527:                                              ; preds = %522
  store i32 6, ptr %75, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %92) #10
  br label %568

528:                                              ; preds = %522
  %529 = load ptr, ptr %14, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %93) #10
  %530 = load ptr, ptr %76, align 8, !tbaa !5
  %531 = getelementptr inbounds %"struct.std::pair.22", ptr %530, i32 0, i32 1
  %532 = getelementptr inbounds %class.SampledData, ptr %531, i32 0, i32 3
  %533 = load i32, ptr %92, align 4, !tbaa !11
  %534 = sext i32 %533 to i64
  %535 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNSt6vectorISt13unordered_mapIiiSt4hashIiESt8equal_toIiESaISt4pairIKiiEEESaIS9_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %532, i64 noundef %534) #10
  %536 = call ptr @_ZNSt13unordered_mapIiiSt4hashIiESt8equal_toIiESaISt4pairIKiiEEE5beginEv(ptr noundef nonnull align 8 dereferenceable(56) %535) #10
  %537 = getelementptr inbounds %"struct.std::__detail::_Node_iterator.25", ptr %94, i32 0, i32 0
  %538 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base.26", ptr %537, i32 0, i32 0
  store ptr %536, ptr %538, align 8
  %539 = load ptr, ptr %76, align 8, !tbaa !5
  %540 = getelementptr inbounds %"struct.std::pair.22", ptr %539, i32 0, i32 1
  %541 = getelementptr inbounds %class.SampledData, ptr %540, i32 0, i32 3
  %542 = load i32, ptr %92, align 4, !tbaa !11
  %543 = sext i32 %542 to i64
  %544 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNSt6vectorISt13unordered_mapIiiSt4hashIiESt8equal_toIiESaISt4pairIKiiEEESaIS9_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %541, i64 noundef %543) #10
  %545 = call ptr @_ZNSt13unordered_mapIiiSt4hashIiESt8equal_toIiESaISt4pairIKiiEEE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %544) #10
  %546 = getelementptr inbounds %"struct.std::__detail::_Node_iterator.25", ptr %95, i32 0, i32 0
  %547 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base.26", ptr %546, i32 0, i32 0
  store ptr %545, ptr %547, align 8
  %548 = getelementptr inbounds %"struct.std::__detail::_Node_iterator.25", ptr %94, i32 0, i32 0
  %549 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base.26", ptr %548, i32 0, i32 0
  %550 = load ptr, ptr %549, align 8
  %551 = getelementptr inbounds %"struct.std::__detail::_Node_iterator.25", ptr %95, i32 0, i32 0
  %552 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base.26", ptr %551, i32 0, i32 0
  %553 = load ptr, ptr %552, align 8
  %554 = invoke ptr @"_ZSt11max_elementINSt8__detail14_Node_iteratorISt4pairIKiiELb0ELb0EEEZ16grid_subsamplingRSt6vectorI8PointXYZSaIS7_EESA_RS6_IfSaIfEESD_RS6_IiSaIiEESG_fiE3$_0ET_SI_SI_T0_"(ptr %550, ptr %553)
          to label %555 unwind label %564

555:                                              ; preds = %528
  %556 = getelementptr inbounds %"struct.std::__detail::_Node_iterator.25", ptr %93, i32 0, i32 0
  %557 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base.26", ptr %556, i32 0, i32 0
  store ptr %554, ptr %557, align 8
  %558 = call noundef ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKiiELb0ELb0EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %93) #10
  %559 = getelementptr inbounds %"struct.std::pair.48", ptr %558, i32 0, i32 0
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %529, ptr noundef nonnull align 4 dereferenceable(4) %559)
          to label %560 unwind label %564

560:                                              ; preds = %555
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #10
  br label %561

561:                                              ; preds = %560
  %562 = load i32, ptr %92, align 4, !tbaa !11
  %563 = add nsw i32 %562, 1
  store i32 %563, ptr %92, align 4, !tbaa !11
  br label %522, !llvm.loop !37

564:                                              ; preds = %555, %528
  %565 = landingpad { ptr, i32 }
          cleanup
  %566 = extractvalue { ptr, i32 } %565, 0
  store ptr %566, ptr %22, align 8
  %567 = extractvalue { ptr, i32 } %565, 1
  store i32 %567, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %92) #10
  br label %572

568:                                              ; preds = %527
  br label %569

569:                                              ; preds = %568, %518
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #10
  br label %570

570:                                              ; preds = %569
  %571 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8__detail14_Node_iteratorISt4pairIKm11SampledDataELb0ELb0EEppEv(ptr noundef nonnull align 8 dereferenceable(8) %73) #10
  br label %423

572:                                              ; preds = %564, %517, %505
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #10
  br label %574

573:                                              ; preds = %425
  store i32 1, ptr %75, align 4
  call void @_ZNSt13unordered_mapIm11SampledDataSt4hashImESt8equal_toImESaISt4pairIKmS0_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %48) #10
  call void @llvm.lifetime.end.p0(i64 56, ptr %48) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %41) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %40) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #10
  call void @llvm.lifetime.end.p0(i64 12, ptr %28) #10
  call void @llvm.lifetime.end.p0(i64 12, ptr %25) #10
  call void @llvm.lifetime.end.p0(i64 12, ptr %20) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #10
  ret void

574:                                              ; preds = %572, %401, %388
  call void @_ZNSt13unordered_mapIm11SampledDataSt4hashImESt8equal_toImESaISt4pairIKmS0_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %48) #10
  call void @llvm.lifetime.end.p0(i64 56, ptr %48) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %41) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %40) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #10
  call void @llvm.lifetime.end.p0(i64 12, ptr %28) #10
  br label %575

575:                                              ; preds = %574, %176
  call void @llvm.lifetime.end.p0(i64 12, ptr %25) #10
  br label %576

576:                                              ; preds = %575, %172
  call void @llvm.lifetime.end.p0(i64 12, ptr %20) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #10
  br label %577

577:                                              ; preds = %576
  %578 = load ptr, ptr %22, align 8
  %579 = load i32, ptr %23, align 4
  %580 = insertvalue { ptr, i32 } poison, ptr %578, 0
  %581 = insertvalue { ptr, i32 } %580, i32 %579, 1
  resume { ptr, i32 } %581
}

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

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

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

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

declare { <2 x float>, float } @_Z9min_pointSt6vectorI8PointXYZSaIS0_EE(ptr noundef) #3

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

declare i32 @__gxx_personality_v0(...)

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

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

declare { <2 x float>, float } @_Z9max_pointSt6vectorI8PointXYZSaIS0_EE(ptr noundef) #3

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { <2 x float>, float } @_Zml8PointXYZf(<2 x float>, float, float noundef) #6

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { <2 x float>, float } @_Z5floor8PointXYZ(<2 x float>, float) #6

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef float @_ZSt5floorf(float noundef) #7

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(64) ptr @_ZNSt13unordered_mapIm11SampledDataSt4hashImESt8equal_toImESaISt4pairIKmS0_EEEixERS6_(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(8)) #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11SampledData10update_allE8PointXYZN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEENS2_IPiS4_IiSaIiEEEE(ptr noundef nonnull align 8 dereferenceable(64), <2 x float>, float, ptr, ptr) #0 align 2

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11SampledData15update_featuresE8PointXYZN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEE(ptr noundef nonnull align 8 dereferenceable(64), <2 x float>, float, ptr) #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11SampledData14update_classesE8PointXYZN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEE(ptr noundef nonnull align 8 dereferenceable(64), <2 x float>, float, ptr) #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN11SampledData13update_pointsE8PointXYZ(ptr noundef nonnull align 8 dereferenceable(64), <2 x float>, float) #8 align 2

; 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) #9

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St5_Setw(ptr noundef nonnull align 8 dereferenceable(8), i32) #9

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local i32 @_ZSt4setwi(i32 noundef) #7

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef) #3

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden ptr @"_ZSt9transformIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEES6_Z16grid_subsamplingRS3_I8PointXYZSaIS7_EESA_RS5_SB_RS3_IiSaIiEESE_fiE3$_1ET0_T_SH_SG_T1_"(ptr, ptr, ptr, float) #4

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden ptr @"_ZSt11max_elementINSt8__detail14_Node_iteratorISt4pairIKiiELb0ELb0EEEZ16grid_subsamplingRSt6vectorI8PointXYZSaIS7_EESA_RS6_IfSaIfEESD_RS6_IiSaIiEESG_fiE3$_0ET_SI_SI_T0_"(ptr, ptr) #9

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

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"float", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"int", !7, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"long", !7, i64 0}
!15 = !{i64 0, i64 4, !9, i64 4, i64 4, !9, i64 8, i64 4, !9}
!16 = !{!17, !10, i64 0}
!17 = !{!"_ZTS8PointXYZ", !10, i64 0, !10, i64 4, !10, i64 8}
!18 = !{!17, !10, i64 4}
!19 = !{!20, !20, i64 0}
!20 = !{!"bool", !7, i64 0}
!21 = !{!17, !10, i64 8}
!22 = !{i8 0, i8 2}
!23 = !{}
!24 = !{!25, !12, i64 8}
!25 = !{!"_ZTSSt4pairIKm11SampledDataE", !14, i64 0, !26, i64 8}
!26 = !{!"_ZTS11SampledData", !12, i64 0, !17, i64 4, !27, i64 16, !31, i64 40}
!27 = !{!"_ZTSSt6vectorIfSaIfEE", !28, i64 0}
!28 = !{!"_ZTSSt12_Vector_baseIfSaIfEE", !29, i64 0}
!29 = !{!"_ZTSNSt12_Vector_baseIfSaIfEE12_Vector_implE", !30, i64 0}
!30 = !{!"_ZTSNSt12_Vector_baseIfSaIfEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!31 = !{!"_ZTSSt6vectorISt13unordered_mapIiiSt4hashIiESt8equal_toIiESaISt4pairIKiiEEESaIS9_EE", !32, i64 0}
!32 = !{!"_ZTSSt12_Vector_baseISt13unordered_mapIiiSt4hashIiESt8equal_toIiESaISt4pairIKiiEEESaIS9_EE", !33, i64 0}
!33 = !{!"_ZTSNSt12_Vector_baseISt13unordered_mapIiiSt4hashIiESt8equal_toIiESaISt4pairIKiiEEESaIS9_EE12_Vector_implE", !34, i64 0}
!34 = !{!"_ZTSNSt12_Vector_baseISt13unordered_mapIiiSt4hashIiESt8equal_toIiESaISt4pairIKiiEEESaIS9_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!35 = !{!36, !10, i64 0}
!36 = !{!"_ZTSZ16grid_subsamplingRSt6vectorI8PointXYZSaIS0_EES3_RS_IfSaIfEES6_RS_IiSaIiEES9_fiE3$_1", !10, i64 0}
!37 = distinct !{!37, !38}
!38 = !{!"llvm.loop.mustprogress"}


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

%"class.std::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::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<PointXYZ, std::allocator<PointXYZ>>::_Vector_impl" }
%"struct.std::_Vector_base<PointXYZ, std::allocator<PointXYZ>>::_Vector_impl" = type { %"struct.std::_Vector_base<PointXYZ, std::allocator<PointXYZ>>::_Vector_impl_data" }
%"struct.std::_Vector_base<PointXYZ, std::allocator<PointXYZ>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::unordered_map" = type { %"class.std::_Hashtable" }
%"class.std::_Hashtable" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.std::__detail::_Hash_node_base" = type { ptr }
%"struct.std::__detail::_Prime_rehash_policy" = type { float, i64 }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%class.SampledData = type { i32, %class.PointXYZ, %"class.std::vector.0", %"class.std::vector.15" }
%class.PointXYZ = type { float, float, float }
%"class.std::vector.0" = type { %"struct.std::_Vector_base.1" }
%"struct.std::_Vector_base.1" = type { %"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl" }
%"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl" = type { %"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl_data" }
%"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.15" = type { %"struct.std::_Vector_base.16" }
%"struct.std::_Vector_base.16" = type { %"struct.std::_Vector_base<std::unordered_map<int, int>, std::allocator<std::unordered_map<int, int>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::unordered_map<int, int>, std::allocator<std::unordered_map<int, int>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::unordered_map<int, int>, std::allocator<std::unordered_map<int, int>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::unordered_map<int, int>, std::allocator<std::unordered_map<int, int>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.20" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.21" = type { ptr }
%"struct.std::__detail::_Node_iterator" = type { %"struct.std::__detail::_Node_iterator_base" }
%"struct.std::__detail::_Node_iterator_base" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.24" = type { ptr }
%"struct.std::__detail::_Node_iterator.25" = type { %"struct.std::__detail::_Node_iterator_base.26" }
%"struct.std::__detail::_Node_iterator_base.26" = type { ptr }

@_ZSt4cout = external global %"class.std::basic_ostream", align 8
@.str = external hidden unnamed_addr constant [16 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1

; Function Attrs: mustprogress uwtable
define dso_local void @_Z16grid_subsamplingRSt6vectorI8PointXYZSaIS0_EES3_RS_IfSaIfEES6_RS_IiSaIiEES9_fi(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull align 8 dereferenceable(24) %2, ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 dereferenceable(24) %4, ptr noundef nonnull align 8 dereferenceable(24) %5, float noundef %6, i32 noundef %7) local_unnamed_addr #0 personality ptr @__gxx_personality_v0 {
  %9 = alloca %"class.std::vector", align 8
  %10 = alloca %"class.std::vector", align 8
  %11 = alloca i64, align 8
  %12 = alloca %"class.std::unordered_map", align 8
  %13 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %14 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %15 = alloca %class.SampledData, align 8
  %16 = alloca %"class.__gnu_cxx::__normal_iterator.20", align 8
  %17 = alloca %"class.__gnu_cxx::__normal_iterator.21", align 8
  %18 = alloca %"class.__gnu_cxx::__normal_iterator.20", align 8
  %19 = alloca %"class.__gnu_cxx::__normal_iterator.21", align 8
  %20 = alloca %"struct.std::__detail::_Node_iterator", align 8
  %21 = alloca %"struct.std::__detail::_Node_iterator", align 8
  %22 = alloca %class.PointXYZ, align 8
  %23 = alloca %"class.__gnu_cxx::__normal_iterator.24", align 8
  %24 = alloca %"class.__gnu_cxx::__normal_iterator.20", align 8
  %25 = alloca %"struct.std::__detail::_Node_iterator.25", align 8
  %26 = tail call noundef i64 @_ZNKSt6vectorI8PointXYZSaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %0) #9
  %27 = tail call noundef i64 @_ZNKSt6vectorIfSaIfEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %2) #9
  %28 = udiv i64 %27, %26
  %29 = tail call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %4) #9
  %30 = udiv i64 %29, %26
  call void @_ZNSt6vectorI8PointXYZSaIS0_EEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %9, ptr noundef nonnull align 8 dereferenceable(24) %0)
  %31 = invoke { <2 x float>, float } @_Z9min_pointSt6vectorI8PointXYZSaIS0_EE(ptr noundef nonnull %9)
          to label %32 unwind label %60

32:                                               ; preds = %8
  call void @_ZNSt6vectorI8PointXYZSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #9
  call void @_ZNSt6vectorI8PointXYZSaIS0_EEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(24) %10, ptr noundef nonnull align 8 dereferenceable(24) %0)
  %33 = invoke { <2 x float>, float } @_Z9max_pointSt6vectorI8PointXYZSaIS0_EE(ptr noundef nonnull %10)
          to label %34 unwind label %62

34:                                               ; preds = %32
  %.fca.1.extract119 = extractvalue { <2 x float>, float } %31, 1
  %.fca.0.extract118 = extractvalue { <2 x float>, float } %31, 0
  %.fca.0.extract113 = extractvalue { <2 x float>, float } %33, 0
  call void @_ZNSt6vectorI8PointXYZSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #9
  %35 = fdiv float 1.000000e+00, %6
  %36 = call { <2 x float>, float } @_Zml8PointXYZf(<2 x float> %.fca.0.extract118, float %.fca.1.extract119, float noundef %35)
  %.fca.0.extract96 = extractvalue { <2 x float>, float } %36, 0
  %.fca.1.extract97 = extractvalue { <2 x float>, float } %36, 1
  %37 = call { <2 x float>, float } @_Z5floor8PointXYZ(<2 x float> %.fca.0.extract96, float %.fca.1.extract97)
  %.fca.0.extract90 = extractvalue { <2 x float>, float } %37, 0
  %.fca.1.extract91 = extractvalue { <2 x float>, float } %37, 1
  %38 = call { <2 x float>, float } @_Zml8PointXYZf(<2 x float> %.fca.0.extract90, float %.fca.1.extract91, float noundef %6)
  %.fca.0.extract84 = extractvalue { <2 x float>, float } %38, 0
  %.fca.1.extract85 = extractvalue { <2 x float>, float } %38, 1
  %.sroa.0108.0.vec.extract = extractelement <2 x float> %.fca.0.extract84, i64 0
  %39 = fsub <2 x float> %.fca.0.extract113, %.fca.0.extract84
  %40 = extractelement <2 x float> %39, i64 0
  %41 = fdiv float %40, %6
  %42 = call noundef float @_ZSt5floorf(float noundef %41)
  %43 = fptoui float %42 to i64
  %44 = add i64 %43, 1
  %.sroa.0108.4.vec.extract = extractelement <2 x float> %.fca.0.extract84, i64 1
  %45 = fsub <2 x float> %.fca.0.extract113, %.fca.0.extract84
  %46 = extractelement <2 x float> %45, i64 1
  %47 = fdiv float %46, %6
  %48 = call noundef float @_ZSt5floorf(float noundef %47)
  %49 = fptoui float %48 to i64
  %50 = add i64 %49, 1
  %51 = call noundef i64 @_ZNKSt6vectorIfSaIfEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %2) #9
  %.not = icmp eq i64 %51, 0
  %52 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %4) #9
  %.not174 = icmp eq i64 %52, 0
  %53 = udiv i64 %26, 100
  %54 = trunc i64 %53 to i32
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #9
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %12) #9
  call void @_ZNSt13unordered_mapIm11SampledDataSt4hashImESt8equal_toImESaISt4pairIKmS0_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(56) %12) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #9
  %55 = call ptr @_ZNSt6vectorI8PointXYZSaIS0_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %0) #9
  store ptr %55, ptr %13, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #9
  %56 = call ptr @_ZNSt6vectorI8PointXYZSaIS0_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %0) #9
  store ptr %56, ptr %14, align 8
  %57 = call noundef zeroext i1 @_ZN9__gnu_cxxneIP8PointXYZSt6vectorIS1_SaIS1_EEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8) %13, ptr noundef nonnull align 8 dereferenceable(8) %14) #9
  br i1 %57, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %34
  %brmerge = or i1 %.not, %.not174
  %58 = icmp sgt i32 %7, 1
  br label %64

._crit_edge:                                      ; preds = %150, %34
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #9
  %59 = call noundef i64 @_ZNKSt13unordered_mapIm11SampledDataSt4hashImESt8equal_toImESaISt4pairIKmS0_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(56) %12) #9
  invoke void @_ZNSt6vectorI8PointXYZSaIS0_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %1, i64 noundef %59)
          to label %154 unwind label %158

60:                                               ; preds = %8
  %61 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorI8PointXYZSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %9) #9
  br label %218

62:                                               ; preds = %32
  %63 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorI8PointXYZSaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %10) #9
  br label %218

64:                                               ; preds = %.lr.ph, %150
  %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %150 ]
  %65 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNK9__gnu_cxx17__normal_iteratorIP8PointXYZSt6vectorIS1_SaIS1_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %13) #9
  %66 = load float, ptr %65, align 4, !tbaa !5
  %67 = fsub float %66, %.sroa.0108.0.vec.extract
  %68 = fdiv float %67, %6
  %69 = call noundef float @_ZSt5floorf(float noundef %68)
  %70 = fptoui float %69 to i64
  %71 = getelementptr inbounds i8, ptr %65, i64 4
  %72 = load float, ptr %71, align 4, !tbaa !10
  %73 = fsub float %72, %.sroa.0108.4.vec.extract
  %74 = fdiv float %73, %6
  %75 = call noundef float @_ZSt5floorf(float noundef %74)
  %76 = fptoui float %75 to i64
  %77 = getelementptr inbounds i8, ptr %65, i64 8
  %78 = load float, ptr %77, align 4, !tbaa !11
  %79 = fsub float %78, %.fca.1.extract85
  %80 = fdiv float %79, %6
  %81 = call noundef float @_ZSt5floorf(float noundef %80)
  %82 = fptoui float %81 to i64
  %83 = mul i64 %50, %82
  %reass.add = add i64 %83, %76
  %reass.mul = mul i64 %reass.add, %44
  %84 = add i64 %reass.mul, %70
  store i64 %84, ptr %11, align 8, !tbaa !12
  %85 = invoke noundef i64 @_ZNKSt13unordered_mapIm11SampledDataSt4hashImESt8equal_toImESaISt4pairIKmS0_EEE5countERS6_(ptr noundef nonnull align 8 dereferenceable(56) %12, ptr noundef nonnull align 8 dereferenceable(8) %11)
          to label %86 unwind label %92

86:                                               ; preds = %64
  %87 = icmp eq i64 %85, 0
  br i1 %87, label %88, label %99

88:                                               ; preds = %86
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %15) #9
  invoke void @_ZN11SampledDataC2Emm(ptr noundef nonnull align 8 dereferenceable(64) %15, i64 noundef %28, i64 noundef %30)
          to label %89 unwind label %94

89:                                               ; preds = %88
  %90 = invoke { ptr, i8 } @_ZNSt13unordered_mapIm11SampledDataSt4hashImESt8equal_toImESaISt4pairIKmS0_EEE7emplaceIJRmS0_EEES5_INSt8__detail14_Node_iteratorIS7_Lb0ELb0EEEbEDpOT_(ptr noundef nonnull align 8 dereferenceable(56) %12, ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull align 8 dereferenceable(64) %15)
          to label %91 unwind label %96

91:                                               ; preds = %89
  call void @_ZN11SampledDataD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %15) #9
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %15) #9
  br label %99

92:                                               ; preds = %148, %146, %143, %141, %132, %123, %113, %100, %64
  %93 = landingpad { ptr, i32 }
          cleanup
  br label %153

94:                                               ; preds = %88
  %95 = landingpad { ptr, i32 }
          cleanup
  br label %98

96:                                               ; preds = %89
  %97 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN11SampledDataD2Ev(ptr noundef nonnull align 8 dereferenceable(64) %15) #9
  br label %98

98:                                               ; preds = %96, %94
  %.pn178 = phi { ptr, i32 } [ %97, %96 ], [ %95, %94 ]
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %15) #9
  br label %153

99:                                               ; preds = %91, %86
  br i1 %brmerge, label %112, label %100

100:                                              ; preds = %99
  %101 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZNSt13unordered_mapIm11SampledDataSt4hashImESt8equal_toImESaISt4pairIKmS0_EEEixERS6_(ptr noundef nonnull align 8 dereferenceable(56) %12, ptr noundef nonnull align 8 dereferenceable(8) %11)
          to label %102 unwind label %92

102:                                              ; preds = %100
  %.sroa.049.0.copyload = load <2 x float>, ptr %65, align 4
  %.sroa.250.0.copyload = load float, ptr %77, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #9
  %103 = call ptr @_ZNSt6vectorIfSaIfEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %2) #9
  store ptr %103, ptr %16, align 8
  %104 = mul i64 %28, %indvars.iv
  %105 = call ptr @_ZNK9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEplEl(ptr noundef nonnull align 8 dereferenceable(8) %16, i64 noundef %104) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #9
  %106 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %4) #9
  store ptr %106, ptr %17, align 8
  %107 = mul i64 %30, %indvars.iv
  %108 = call ptr @_ZNK9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEplEl(ptr noundef nonnull align 8 dereferenceable(8) %17, i64 noundef %107) #9
  invoke void @_ZN11SampledData10update_allE8PointXYZN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEENS2_IPiS4_IiSaIiEEEE(ptr noundef nonnull align 8 dereferenceable(64) %101, <2 x float> %.sroa.049.0.copyload, float %.sroa.250.0.copyload, ptr %105, ptr %108)
          to label %109 unwind label %110

109:                                              ; preds = %102
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #9
  br label %135

110:                                              ; preds = %102
  %111 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #9
  br label %153

112:                                              ; preds = %99
  br i1 %.not, label %122, label %113

113:                                              ; preds = %112
  %114 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZNSt13unordered_mapIm11SampledDataSt4hashImESt8equal_toImESaISt4pairIKmS0_EEEixERS6_(ptr noundef nonnull align 8 dereferenceable(56) %12, ptr noundef nonnull align 8 dereferenceable(8) %11)
          to label %115 unwind label %92

115:                                              ; preds = %113
  %.sroa.043.0.copyload = load <2 x float>, ptr %65, align 4
  %.sroa.244.0.copyload = load float, ptr %77, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #9
  %116 = call ptr @_ZNSt6vectorIfSaIfEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %2) #9
  store ptr %116, ptr %18, align 8
  %117 = mul i64 %28, %indvars.iv
  %118 = call ptr @_ZNK9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEplEl(ptr noundef nonnull align 8 dereferenceable(8) %18, i64 noundef %117) #9
  invoke void @_ZN11SampledData15update_featuresE8PointXYZN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEE(ptr noundef nonnull align 8 dereferenceable(64) %114, <2 x float> %.sroa.043.0.copyload, float %.sroa.244.0.copyload, ptr %118)
          to label %119 unwind label %120

119:                                              ; preds = %115
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #9
  br label %135

120:                                              ; preds = %115
  %121 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #9
  br label %153

122:                                              ; preds = %112
  br i1 %.not174, label %132, label %123

123:                                              ; preds = %122
  %124 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZNSt13unordered_mapIm11SampledDataSt4hashImESt8equal_toImESaISt4pairIKmS0_EEEixERS6_(ptr noundef nonnull align 8 dereferenceable(56) %12, ptr noundef nonnull align 8 dereferenceable(8) %11)
          to label %125 unwind label %92

125:                                              ; preds = %123
  %.sroa.038.0.copyload = load <2 x float>, ptr %65, align 4
  %.sroa.239.0.copyload = load float, ptr %77, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #9
  %126 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %4) #9
  store ptr %126, ptr %19, align 8
  %127 = mul i64 %30, %indvars.iv
  %128 = call ptr @_ZNK9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEplEl(ptr noundef nonnull align 8 dereferenceable(8) %19, i64 noundef %127) #9
  invoke void @_ZN11SampledData14update_classesE8PointXYZN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEE(ptr noundef nonnull align 8 dereferenceable(64) %124, <2 x float> %.sroa.038.0.copyload, float %.sroa.239.0.copyload, ptr %128)
          to label %129 unwind label %130

129:                                              ; preds = %125
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #9
  br label %135

130:                                              ; preds = %125
  %131 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #9
  br label %153

132:                                              ; preds = %122
  %133 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZNSt13unordered_mapIm11SampledDataSt4hashImESt8equal_toImESaISt4pairIKmS0_EEEixERS6_(ptr noundef nonnull align 8 dereferenceable(56) %12, ptr noundef nonnull align 8 dereferenceable(8) %11)
          to label %134 unwind label %92

134:                                              ; preds = %132
  %.sroa.033.0.copyload = load <2 x float>, ptr %65, align 4
  %.sroa.234.0.copyload = load float, ptr %77, align 4, !tbaa !14
  call void @_ZN11SampledData13update_pointsE8PointXYZ(ptr noundef nonnull align 8 dereferenceable(64) %133, <2 x float> %.sroa.033.0.copyload, float %.sroa.234.0.copyload)
  br label %135

135:                                              ; preds = %119, %134, %129, %109
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  br i1 %58, label %136, label %150

136:                                              ; preds = %135
  %137 = trunc nuw i64 %indvars.iv.next to i32
  %138 = srem i32 %137, %54
  %139 = sdiv i32 %137, %54
  %140 = icmp eq i32 %138, 0
  br i1 %140, label %141, label %150

141:                                              ; preds = %136
  %142 = 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)
          to label %143 unwind label %92

143:                                              ; preds = %141
  %144 = call i32 @_ZSt4setwi(i32 noundef 3)
  %145 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_St5_Setw(ptr noundef nonnull align 8 dereferenceable(8) %142, i32 %144)
          to label %146 unwind label %92

146:                                              ; preds = %143
  %147 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %145, i32 noundef %139)
          to label %148 unwind label %92

148:                                              ; preds = %146
  %149 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %147, ptr noundef nonnull @.str.1)
          to label %150 unwind label %92

150:                                              ; preds = %148, %136, %135
  %151 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIP8PointXYZSt6vectorIS1_SaIS1_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %13) #9
  %152 = call noundef zeroext i1 @_ZN9__gnu_cxxneIP8PointXYZSt6vectorIS1_SaIS1_EEEEbRKNS_17__normal_iteratorIT_T0_EESB_(ptr noundef nonnull align 8 dereferenceable(8) %13, ptr noundef nonnull align 8 dereferenceable(8) %14) #9
  br i1 %152, label %64, label %._crit_edge

153:                                              ; preds = %130, %120, %110, %98, %92
  %.pn180 = phi { ptr, i32 } [ %93, %92 ], [ %111, %110 ], [ %121, %120 ], [ %131, %130 ], [ %.pn178, %98 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #9
  br label %217

154:                                              ; preds = %._crit_edge
  br i1 %.not, label %160, label %155

155:                                              ; preds = %154
  %156 = call noundef i64 @_ZNKSt13unordered_mapIm11SampledDataSt4hashImESt8equal_toImESaISt4pairIKmS0_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(56) %12) #9
  %157 = mul i64 %156, %28
  invoke void @_ZNSt6vectorIfSaIfEE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %157)
          to label %160 unwind label %158

158:                                              ; preds = %161, %155, %._crit_edge
  %159 = landingpad { ptr, i32 }
          cleanup
  br label %217

160:                                              ; preds = %155, %154
  br i1 %.not174, label %164, label %161

161:                                              ; preds = %160
  %162 = call noundef i64 @_ZNKSt13unordered_mapIm11SampledDataSt4hashImESt8equal_toImESaISt4pairIKmS0_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(56) %12) #9
  %163 = mul i64 %162, %30
  invoke void @_ZNSt6vectorIiSaIiEE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %163)
          to label %164 unwind label %158

164:                                              ; preds = %161, %160
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #9
  %165 = call ptr @_ZNSt13unordered_mapIm11SampledDataSt4hashImESt8equal_toImESaISt4pairIKmS0_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(56) %12) #9
  store ptr %165, ptr %20, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #9
  %166 = call ptr @_ZNSt13unordered_mapIm11SampledDataSt4hashImESt8equal_toImESaISt4pairIKmS0_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %12) #9
  store ptr %166, ptr %21, align 8
  %167 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseISt4pairIKm11SampledDataELb0EEES7_(ptr noundef nonnull align 8 dereferenceable(8) %20, ptr noundef nonnull align 8 dereferenceable(8) %21) #9
  br i1 %167, label %.lr.ph189, label %._crit_edge190

.lr.ph189:                                        ; preds = %164
  %.sroa.2.0..sroa_idx = getelementptr inbounds i8, ptr %22, i64 8
  %.not193 = icmp ugt i64 %26, %29
  %brmerge192 = or i1 %.not174, %.not193
  br label %168

._crit_edge190:                                   ; preds = %.loopexit, %164
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #9
  call void @_ZNSt13unordered_mapIm11SampledDataSt4hashImESt8equal_toImESaISt4pairIKmS0_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %12) #9
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %12) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #9
  ret void

168:                                              ; preds = %.lr.ph189, %.loopexit
  %169 = call noundef nonnull align 8 dereferenceable(72) ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKm11SampledDataELb0ELb0EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %20) #9
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %22) #9
  %170 = getelementptr inbounds i8, ptr %169, i64 8
  %171 = getelementptr inbounds i8, ptr %169, i64 12
  %.sroa.016.0.copyload = load <2 x float>, ptr %171, align 4
  %.sroa.217.0..sroa_idx = getelementptr inbounds i8, ptr %169, i64 20
  %.sroa.217.0.copyload = load float, ptr %.sroa.217.0..sroa_idx, align 4, !tbaa !14
  %172 = load i32, ptr %170, align 8, !tbaa !15
  %173 = sitofp i32 %172 to double
  %174 = fdiv double 1.000000e+00, %173
  %175 = fptrunc double %174 to float
  %176 = invoke { <2 x float>, float } @_Zml8PointXYZf(<2 x float> %.sroa.016.0.copyload, float %.sroa.217.0.copyload, float noundef %175)
          to label %177 unwind label %194

177:                                              ; preds = %168
  %.fca.0.extract = extractvalue { <2 x float>, float } %176, 0
  %.fca.1.extract = extractvalue { <2 x float>, float } %176, 1
  store <2 x float> %.fca.0.extract, ptr %22, align 8
  store float %.fca.1.extract, ptr %.sroa.2.0..sroa_idx, align 8
  invoke void @_ZNSt6vectorI8PointXYZSaIS0_EE9push_backEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %1, ptr noundef nonnull align 4 dereferenceable(12) %22)
          to label %178 unwind label %194

178:                                              ; preds = %177
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %22) #9
  br i1 %.not, label %200, label %179

179:                                              ; preds = %178
  %180 = load i32, ptr %170, align 8, !tbaa !15
  %181 = sitofp i32 %180 to float
  %182 = getelementptr inbounds i8, ptr %169, i64 24
  %183 = call ptr @_ZNSt6vectorIfSaIfEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %182) #9
  %184 = call ptr @_ZNSt6vectorIfSaIfEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %182) #9
  %185 = call ptr @_ZNSt6vectorIfSaIfEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %182) #9
  %186 = invoke ptr @"_ZSt9transformIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEES6_Z16grid_subsamplingRS3_I8PointXYZSaIS7_EESA_RS5_SB_RS3_IiSaIiEESE_fiE3$_1ET0_T_SH_SG_T1_"(ptr %183, ptr %184, ptr %185, float %181)
          to label %187 unwind label %196

187:                                              ; preds = %179
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #9
  %188 = call ptr @_ZNSt6vectorIfSaIfEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %3) #9
  store ptr %188, ptr %24, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKfSt6vectorIfSaIfEEEC2IPfvEERKNS0_IT_S5_EE(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 8 dereferenceable(8) %24) #9
  %189 = call ptr @_ZNSt6vectorIfSaIfEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %182) #9
  %190 = call ptr @_ZNSt6vectorIfSaIfEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %182) #9
  %191 = load ptr, ptr %23, align 8
  %192 = invoke ptr @_ZNSt6vectorIfSaIfEE6insertIN9__gnu_cxx17__normal_iteratorIPfS1_EEvEES6_NS4_IPKfS1_EET_SA_(ptr noundef nonnull align 8 dereferenceable(24) %3, ptr %191, ptr %189, ptr %190)
          to label %193 unwind label %198

193:                                              ; preds = %187
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #9
  br label %200

194:                                              ; preds = %177, %168
  %195 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %22) #9
  br label %216

196:                                              ; preds = %179
  %197 = landingpad { ptr, i32 }
          cleanup
  br label %216

198:                                              ; preds = %187
  %199 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #9
  br label %216

200:                                              ; preds = %193, %178
  br i1 %brmerge192, label %.loopexit, label %.lr.ph187

.lr.ph187:                                        ; preds = %200
  %201 = getelementptr inbounds i8, ptr %169, i64 48
  br label %202

202:                                              ; preds = %.lr.ph187, %210
  %indvars.iv195 = phi i64 [ 0, %.lr.ph187 ], [ %indvars.iv.next196, %210 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #9
  %203 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNSt6vectorISt13unordered_mapIiiSt4hashIiESt8equal_toIiESaISt4pairIKiiEEESaIS9_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %201, i64 noundef %indvars.iv195) #9
  %204 = call ptr @_ZNSt13unordered_mapIiiSt4hashIiESt8equal_toIiESaISt4pairIKiiEEE5beginEv(ptr noundef nonnull align 8 dereferenceable(56) %203) #9
  %205 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZNSt6vectorISt13unordered_mapIiiSt4hashIiESt8equal_toIiESaISt4pairIKiiEEESaIS9_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %201, i64 noundef %indvars.iv195) #9
  %206 = call ptr @_ZNSt13unordered_mapIiiSt4hashIiESt8equal_toIiESaISt4pairIKiiEEE3endEv(ptr noundef nonnull align 8 dereferenceable(56) %205) #9
  %207 = invoke ptr @"_ZSt11max_elementINSt8__detail14_Node_iteratorISt4pairIKiiELb0ELb0EEEZ16grid_subsamplingRSt6vectorI8PointXYZSaIS7_EESA_RS6_IfSaIfEESD_RS6_IiSaIiEESG_fiE3$_0ET_SI_SI_T0_"(ptr %204, ptr %206)
          to label %208 unwind label %212

208:                                              ; preds = %202
  store ptr %207, ptr %25, align 8
  %209 = call noundef ptr @_ZNKSt8__detail14_Node_iteratorISt4pairIKiiELb0ELb0EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %25) #9
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull align 4 dereferenceable(4) %209)
          to label %210 unwind label %212

210:                                              ; preds = %208
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #9
  %indvars.iv.next196 = add nuw nsw i64 %indvars.iv195, 1
  %211 = icmp ugt i64 %30, %indvars.iv.next196
  br i1 %211, label %202, label %.loopexit, !llvm.loop !28

212:                                              ; preds = %208, %202
  %213 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #9
  br label %216

.loopexit:                                        ; preds = %210, %200
  %214 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt8__detail14_Node_iteratorISt4pairIKm11SampledDataELb0ELb0EEppEv(ptr noundef nonnull align 8 dereferenceable(8) %20) #9
  %215 = call noundef zeroext i1 @_ZNSt8__detailneERKNS_19_Node_iterator_baseISt4pairIKm11SampledDataELb0EEES7_(ptr noundef nonnull align 8 dereferenceable(8) %20, ptr noundef nonnull align 8 dereferenceable(8) %21) #9
  br i1 %215, label %168, label %._crit_edge190

216:                                              ; preds = %196, %198, %212, %194
  %.pn176 = phi { ptr, i32 } [ %213, %212 ], [ %195, %194 ], [ %199, %198 ], [ %197, %196 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #9
  br label %217

217:                                              ; preds = %216, %158, %153
  %.pn180.pn = phi { ptr, i32 } [ %.pn180, %153 ], [ %.pn176, %216 ], [ %159, %158 ]
  call void @_ZNSt13unordered_mapIm11SampledDataSt4hashImESt8equal_toImESaISt4pairIKmS0_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(56) %12) #9
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %12) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #9
  br label %218

218:                                              ; preds = %62, %217, %60
  %.pn180.pn.pn.pn = phi { ptr, i32 } [ %61, %60 ], [ %.pn180.pn, %217 ], [ %63, %62 ]
  resume { ptr, i32 } %.pn180.pn.pn.pn
}

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

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

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

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

declare { <2 x float>, float } @_Z9min_pointSt6vectorI8PointXYZSaIS0_EE(ptr noundef) local_unnamed_addr #3

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

declare i32 @__gxx_personality_v0(...)

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

declare { <2 x float>, float } @_Z9max_pointSt6vectorI8PointXYZSaIS0_EE(ptr noundef) local_unnamed_addr #3

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { <2 x float>, float } @_Zml8PointXYZf(<2 x float>, float, float noundef) local_unnamed_addr #5

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { <2 x float>, float } @_Z5floor8PointXYZ(<2 x float>, float) local_unnamed_addr #5

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef float @_ZSt5floorf(float noundef) local_unnamed_addr #6

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(64) ptr @_ZNSt13unordered_mapIm11SampledDataSt4hashImESt8equal_toImESaISt4pairIKmS0_EEEixERS6_(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11SampledData10update_allE8PointXYZN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEENS2_IPiS4_IiSaIiEEEE(ptr noundef nonnull align 8 dereferenceable(64), <2 x float>, float, ptr, ptr) local_unnamed_addr #0 align 2

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11SampledData15update_featuresE8PointXYZN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEE(ptr noundef nonnull align 8 dereferenceable(64), <2 x float>, float, ptr) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN11SampledData14update_classesE8PointXYZN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEE(ptr noundef nonnull align 8 dereferenceable(64), <2 x float>, float, ptr) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN11SampledData13update_pointsE8PointXYZ(ptr noundef nonnull align 8 dereferenceable(64), <2 x float>, float) local_unnamed_addr #7 align 2

; 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 #8

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local i32 @_ZSt4setwi(i32 noundef) local_unnamed_addr #6

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef) local_unnamed_addr #3

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden ptr @"_ZSt9transformIN9__gnu_cxx17__normal_iteratorIPfSt6vectorIfSaIfEEEES6_Z16grid_subsamplingRS3_I8PointXYZSaIS7_EESA_RS5_SB_RS3_IiSaIiEESE_fiE3$_1ET0_T_SH_SG_T1_"(ptr, ptr, ptr, float) local_unnamed_addr #4

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden ptr @"_ZSt11max_elementINSt8__detail14_Node_iteratorISt4pairIKiiELb0ELb0EEEZ16grid_subsamplingRSt6vectorI8PointXYZSaIS7_EESA_RS6_IfSaIfEESD_RS6_IiSaIiEESG_fiE3$_0ET_SI_SI_T0_"(ptr, ptr) local_unnamed_addr #8

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

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

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

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

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

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

attributes #0 = { mustprogress uwtable "min-legal-vector-width"="64" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { "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 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 = { inlinehint mustprogress uwtable "min-legal-vector-width"="64" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { mustprogress nounwind uwtable "min-legal-vector-width"="64" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { 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 #9 = { 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, !7, i64 0}
!6 = !{!"_ZTS8PointXYZ", !7, i64 0, !7, i64 4, !7, i64 8}
!7 = !{!"float", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!6, !7, i64 4}
!11 = !{!6, !7, i64 8}
!12 = !{!13, !13, i64 0}
!13 = !{!"long", !8, i64 0}
!14 = !{!7, !7, i64 0}
!15 = !{!16, !18, i64 8}
!16 = !{!"_ZTSSt4pairIKm11SampledDataE", !13, i64 0, !17, i64 8}
!17 = !{!"_ZTS11SampledData", !18, i64 0, !6, i64 4, !19, i64 16, !24, i64 40}
!18 = !{!"int", !8, i64 0}
!19 = !{!"_ZTSSt6vectorIfSaIfEE", !20, i64 0}
!20 = !{!"_ZTSSt12_Vector_baseIfSaIfEE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseIfSaIfEE12_Vector_implE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseIfSaIfEE17_Vector_impl_dataE", !23, i64 0, !23, i64 8, !23, i64 16}
!23 = !{!"any pointer", !8, i64 0}
!24 = !{!"_ZTSSt6vectorISt13unordered_mapIiiSt4hashIiESt8equal_toIiESaISt4pairIKiiEEESaIS9_EE", !25, i64 0}
!25 = !{!"_ZTSSt12_Vector_baseISt13unordered_mapIiiSt4hashIiESt8equal_toIiESaISt4pairIKiiEEESaIS9_EE", !26, i64 0}
!26 = !{!"_ZTSNSt12_Vector_baseISt13unordered_mapIiiSt4hashIiESt8equal_toIiESaISt4pairIKiiEEESaIS9_EE12_Vector_implE", !27, i64 0}
!27 = !{!"_ZTSNSt12_Vector_baseISt13unordered_mapIiiSt4hashIiESt8equal_toIiESaISt4pairIKiiEEESaIS9_EE17_Vector_impl_dataE", !23, i64 0, !23, i64 8, !23, i64 16}
!28 = distinct !{!28, !29}
!29 = !{!"llvm.loop.mustprogress"}


; Effective O3 passes: DivRemPairsPass,EarlyCSEPass,GVNPass,GlobalOptPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass,VectorCombinePass