; LLVM IR from karlkurzer/path_planner :: src/smoother.ll (ZN11HybridAStar8Smoother10smoothPathERNS_14DynamicVoronoiE)

; 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::vector.5" = type { %"struct.std::_Vector_base.6" }
%"struct.std::_Vector_base.6" = type { %"struct.std::_Vector_base<HybridAStar::Node3D, std::allocator<HybridAStar::Node3D>>::_Vector_impl" }
%"struct.std::_Vector_base<HybridAStar::Node3D, std::allocator<HybridAStar::Node3D>>::_Vector_impl" = type { %"struct.std::_Vector_base<HybridAStar::Node3D, std::allocator<HybridAStar::Node3D>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HybridAStar::Node3D, std::allocator<HybridAStar::Node3D>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.HybridAStar::Vector2D" = type { float, float }
%"class.HybridAStar::Smoother" = type { float, float, float, float, float, float, float, float, %"class.HybridAStar::DynamicVoronoi", i32, i32, %"class.std::vector.5" }
%"class.HybridAStar::DynamicVoronoi" = type { %"class.HybridAStar::BucketPrioQueue", %"class.std::queue", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.3", i32, i32, ptr, ptr, i32, double, double }
%"class.HybridAStar::BucketPrioQueue" = type { i32, i32, %"class.std::vector" }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<std::queue<HybridAStar::IntPoint>, std::allocator<std::queue<HybridAStar::IntPoint>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::queue<HybridAStar::IntPoint>, std::allocator<std::queue<HybridAStar::IntPoint>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::queue<HybridAStar::IntPoint>, std::allocator<std::queue<HybridAStar::IntPoint>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::queue<HybridAStar::IntPoint>, std::allocator<std::queue<HybridAStar::IntPoint>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::queue" = type { %"class.std::deque" }
%"class.std::deque" = type { %"class.std::_Deque_base" }
%"class.std::_Deque_base" = type { %"struct.std::_Deque_base<HybridAStar::IntPoint, std::allocator<HybridAStar::IntPoint>>::_Deque_impl" }
%"struct.std::_Deque_base<HybridAStar::IntPoint, std::allocator<HybridAStar::IntPoint>>::_Deque_impl" = type { %"struct.std::_Deque_base<HybridAStar::IntPoint, std::allocator<HybridAStar::IntPoint>>::_Deque_impl_data" }
%"struct.std::_Deque_base<HybridAStar::IntPoint, std::allocator<HybridAStar::IntPoint>>::_Deque_impl_data" = type { ptr, i64, %"struct.std::_Deque_iterator", %"struct.std::_Deque_iterator" }
%"struct.std::_Deque_iterator" = type { ptr, ptr, ptr, ptr }
%"class.std::vector.3" = type { %"struct.std::_Vector_base.4" }
%"struct.std::_Vector_base.4" = type { %"struct.std::_Vector_base<HybridAStar::IntPoint, std::allocator<HybridAStar::IntPoint>>::_Vector_impl" }
%"struct.std::_Vector_base<HybridAStar::IntPoint, std::allocator<HybridAStar::IntPoint>>::_Vector_impl" = type { %"struct.std::_Vector_base<HybridAStar::IntPoint, std::allocator<HybridAStar::IntPoint>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HybridAStar::IntPoint, std::allocator<HybridAStar::IntPoint>>::_Vector_impl_data" = type { ptr, ptr, ptr }

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11HybridAStar8Smoother10smoothPathERNS_14DynamicVoronoiE(ptr noundef nonnull align 8 dereferenceable(296) %0, ptr noundef nonnull align 8 dereferenceable(232) %1) #0 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca i32, align 4
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca %"class.std::vector.5", align 8
  %9 = alloca float, align 4
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca %"class.HybridAStar::Vector2D", align 4
  %13 = alloca ptr, align 8
  %14 = alloca i32, align 4
  %15 = alloca %"class.HybridAStar::Vector2D", align 4
  %16 = alloca %"class.HybridAStar::Vector2D", align 4
  %17 = alloca %"class.HybridAStar::Vector2D", align 4
  %18 = alloca %"class.HybridAStar::Vector2D", align 4
  %19 = alloca %"class.HybridAStar::Vector2D", align 4
  %20 = alloca %"class.HybridAStar::Vector2D", align 4
  %21 = alloca %"class.HybridAStar::Vector2D", align 4
  %22 = alloca %"class.HybridAStar::Vector2D", align 4
  %23 = alloca %"class.HybridAStar::Vector2D", align 4
  %24 = alloca %"class.HybridAStar::Vector2D", align 4
  %25 = alloca %"class.HybridAStar::Vector2D", align 4
  %26 = alloca %"class.HybridAStar::Vector2D", align 4
  %27 = alloca %"class.HybridAStar::Vector2D", align 4
  %28 = alloca %"class.HybridAStar::Vector2D", align 4
  %29 = alloca %"class.HybridAStar::Vector2D", align 4
  %30 = alloca %"class.HybridAStar::Vector2D", align 4
  %31 = alloca %"class.HybridAStar::Vector2D", align 4
  %32 = alloca %"class.HybridAStar::Vector2D", align 4
  %33 = alloca %"class.HybridAStar::Vector2D", align 4
  %34 = alloca %"class.HybridAStar::Vector2D", align 4
  %35 = alloca %"class.HybridAStar::Vector2D", align 4
  %36 = alloca %"class.HybridAStar::Vector2D", align 4
  %37 = alloca %"class.HybridAStar::Vector2D", align 4
  %38 = alloca %"class.HybridAStar::Vector2D", align 4
  %39 = alloca %"class.HybridAStar::Vector2D", align 4
  %40 = alloca %"class.HybridAStar::Vector2D", align 4
  %41 = alloca %"class.HybridAStar::Vector2D", align 4
  %42 = alloca %"class.HybridAStar::Vector2D", align 4
  %43 = alloca float, align 4
  %44 = alloca float, align 4
  %45 = alloca %"class.HybridAStar::Vector2D", align 4
  %46 = alloca float, align 4
  store ptr %0, ptr %3, align 8, !tbaa !5
  store ptr %1, ptr %4, align 8, !tbaa !5
  %47 = load ptr, ptr %3, align 8
  %48 = load ptr, ptr %4, align 8, !tbaa !5
  %49 = getelementptr inbounds %"class.HybridAStar::Smoother", ptr %47, i32 0, i32 8
  %50 = call noundef nonnull align 8 dereferenceable(232) ptr @_ZN11HybridAStar14DynamicVoronoiaSERKS0_(ptr noundef nonnull align 8 dereferenceable(232) %49, ptr noundef nonnull align 8 dereferenceable(232) %48)
  %51 = load ptr, ptr %4, align 8, !tbaa !5
  %52 = call noundef i32 @_ZNK11HybridAStar14DynamicVoronoi8getSizeXEv(ptr noundef nonnull align 8 dereferenceable(232) %51)
  %53 = getelementptr inbounds %"class.HybridAStar::Smoother", ptr %47, i32 0, i32 9
  store i32 %52, ptr %53, align 8, !tbaa !9
  %54 = load ptr, ptr %4, align 8, !tbaa !5
  %55 = call noundef i32 @_ZNK11HybridAStar14DynamicVoronoi8getSizeYEv(ptr noundef nonnull align 8 dereferenceable(232) %54)
  %56 = getelementptr inbounds %"class.HybridAStar::Smoother", ptr %47, i32 0, i32 10
  store i32 %55, ptr %56, align 4, !tbaa !35
  call void @llvm.lifetime.start.p0(i64 4, ptr %5) #8
  store i32 0, ptr %5, align 4, !tbaa !36
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #8
  store i32 500, ptr %6, align 4, !tbaa !36
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #8
  store i32 0, ptr %7, align 4, !tbaa !36
  %57 = getelementptr inbounds %"class.HybridAStar::Smoother", ptr %47, i32 0, i32 11
  %58 = call noundef i64 @_ZNKSt6vectorIN11HybridAStar6Node3DESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %57) #8
  %59 = trunc i64 %58 to i32
  store i32 %59, ptr %7, align 4, !tbaa !36
  call void @llvm.lifetime.start.p0(i64 24, ptr %8) #8
  %60 = getelementptr inbounds %"class.HybridAStar::Smoother", ptr %47, i32 0, i32 11
  call void @_ZNSt6vectorIN11HybridAStar6Node3DESaIS1_EEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %8, ptr noundef nonnull align 8 dereferenceable(24) %60)
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #8
  %61 = getelementptr inbounds %"class.HybridAStar::Smoother", ptr %47, i32 0, i32 7
  %62 = load float, ptr %61, align 4, !tbaa !37
  %63 = getelementptr inbounds %"class.HybridAStar::Smoother", ptr %47, i32 0, i32 6
  %64 = load float, ptr %63, align 8, !tbaa !38
  %65 = fadd float %62, %64
  %66 = getelementptr inbounds %"class.HybridAStar::Smoother", ptr %47, i32 0, i32 5
  %67 = load float, ptr %66, align 4, !tbaa !39
  %68 = fadd float %65, %67
  %69 = getelementptr inbounds %"class.HybridAStar::Smoother", ptr %47, i32 0, i32 4
  %70 = load float, ptr %69, align 8, !tbaa !40
  %71 = fadd float %68, %70
  store float %71, ptr %9, align 4, !tbaa !41
  br label %72

72:                                               ; preds = %301, %2
  %73 = load i32, ptr %5, align 4, !tbaa !36
  %74 = load i32, ptr %6, align 4, !tbaa !36
  %75 = icmp slt i32 %73, %74
  br i1 %75, label %76, label %304

76:                                               ; preds = %72
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #8
  store i32 2, ptr %10, align 4, !tbaa !36
  br label %77

77:                                               ; preds = %271, %76
  %78 = load i32, ptr %10, align 4, !tbaa !36
  %79 = load i32, ptr %7, align 4, !tbaa !36
  %80 = sub nsw i32 %79, 2
  %81 = icmp slt i32 %78, %80
  br i1 %81, label %83, label %82

82:                                               ; preds = %77
  store i32 4, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #8
  br label %301

83:                                               ; preds = %77
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #8
  %84 = load i32, ptr %10, align 4, !tbaa !36
  %85 = sub nsw i32 %84, 2
  %86 = sext i32 %85 to i64
  %87 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorIN11HybridAStar6Node3DESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %86) #8
  %88 = invoke noundef float @_ZNK11HybridAStar6Node3D4getXEv(ptr noundef nonnull align 8 dereferenceable(40) %87)
          to label %89 unwind label %152

89:                                               ; preds = %83
  %90 = load i32, ptr %10, align 4, !tbaa !36
  %91 = sub nsw i32 %90, 2
  %92 = sext i32 %91 to i64
  %93 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorIN11HybridAStar6Node3DESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %92) #8
  %94 = invoke noundef float @_ZNK11HybridAStar6Node3D4getYEv(ptr noundef nonnull align 8 dereferenceable(40) %93)
          to label %95 unwind label %152

95:                                               ; preds = %89
  invoke void @_ZN11HybridAStar8Vector2DC2Eff(ptr noundef nonnull align 4 dereferenceable(8) %12, float noundef %88, float noundef %94)
          to label %96 unwind label %152

96:                                               ; preds = %95
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #8
  %97 = load i32, ptr %10, align 4, !tbaa !36
  %98 = sub nsw i32 %97, 1
  %99 = sext i32 %98 to i64
  %100 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorIN11HybridAStar6Node3DESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %99) #8
  %101 = invoke noundef float @_ZNK11HybridAStar6Node3D4getXEv(ptr noundef nonnull align 8 dereferenceable(40) %100)
          to label %102 unwind label %156

102:                                              ; preds = %96
  %103 = load i32, ptr %10, align 4, !tbaa !36
  %104 = sub nsw i32 %103, 1
  %105 = sext i32 %104 to i64
  %106 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorIN11HybridAStar6Node3DESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %105) #8
  %107 = invoke noundef float @_ZNK11HybridAStar6Node3D4getYEv(ptr noundef nonnull align 8 dereferenceable(40) %106)
          to label %108 unwind label %156

108:                                              ; preds = %102
  invoke void @_ZN11HybridAStar8Vector2DC2Eff(ptr noundef nonnull align 4 dereferenceable(8) %15, float noundef %101, float noundef %107)
          to label %109 unwind label %156

109:                                              ; preds = %108
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #8
  %110 = load i32, ptr %10, align 4, !tbaa !36
  %111 = sext i32 %110 to i64
  %112 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorIN11HybridAStar6Node3DESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %111) #8
  %113 = invoke noundef float @_ZNK11HybridAStar6Node3D4getXEv(ptr noundef nonnull align 8 dereferenceable(40) %112)
          to label %114 unwind label %160

114:                                              ; preds = %109
  %115 = load i32, ptr %10, align 4, !tbaa !36
  %116 = sext i32 %115 to i64
  %117 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorIN11HybridAStar6Node3DESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %116) #8
  %118 = invoke noundef float @_ZNK11HybridAStar6Node3D4getYEv(ptr noundef nonnull align 8 dereferenceable(40) %117)
          to label %119 unwind label %160

119:                                              ; preds = %114
  invoke void @_ZN11HybridAStar8Vector2DC2Eff(ptr noundef nonnull align 4 dereferenceable(8) %16, float noundef %113, float noundef %118)
          to label %120 unwind label %160

120:                                              ; preds = %119
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #8
  %121 = load i32, ptr %10, align 4, !tbaa !36
  %122 = add nsw i32 %121, 1
  %123 = sext i32 %122 to i64
  %124 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorIN11HybridAStar6Node3DESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %123) #8
  %125 = invoke noundef float @_ZNK11HybridAStar6Node3D4getXEv(ptr noundef nonnull align 8 dereferenceable(40) %124)
          to label %126 unwind label %164

126:                                              ; preds = %120
  %127 = load i32, ptr %10, align 4, !tbaa !36
  %128 = add nsw i32 %127, 1
  %129 = sext i32 %128 to i64
  %130 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorIN11HybridAStar6Node3DESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %129) #8
  %131 = invoke noundef float @_ZNK11HybridAStar6Node3D4getYEv(ptr noundef nonnull align 8 dereferenceable(40) %130)
          to label %132 unwind label %164

132:                                              ; preds = %126
  invoke void @_ZN11HybridAStar8Vector2DC2Eff(ptr noundef nonnull align 4 dereferenceable(8) %17, float noundef %125, float noundef %131)
          to label %133 unwind label %164

133:                                              ; preds = %132
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #8
  %134 = load i32, ptr %10, align 4, !tbaa !36
  %135 = add nsw i32 %134, 2
  %136 = sext i32 %135 to i64
  %137 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorIN11HybridAStar6Node3DESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %136) #8
  %138 = invoke noundef float @_ZNK11HybridAStar6Node3D4getXEv(ptr noundef nonnull align 8 dereferenceable(40) %137)
          to label %139 unwind label %168

139:                                              ; preds = %133
  %140 = load i32, ptr %10, align 4, !tbaa !36
  %141 = add nsw i32 %140, 2
  %142 = sext i32 %141 to i64
  %143 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorIN11HybridAStar6Node3DESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %142) #8
  %144 = invoke noundef float @_ZNK11HybridAStar6Node3D4getYEv(ptr noundef nonnull align 8 dereferenceable(40) %143)
          to label %145 unwind label %168

145:                                              ; preds = %139
  invoke void @_ZN11HybridAStar8Vector2DC2Eff(ptr noundef nonnull align 4 dereferenceable(8) %18, float noundef %138, float noundef %144)
          to label %146 unwind label %168

146:                                              ; preds = %145
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #8
  invoke void @_ZN11HybridAStar8Vector2DC2Eff(ptr noundef nonnull align 4 dereferenceable(8) %19, float noundef 0.000000e+00, float noundef 0.000000e+00)
          to label %147 unwind label %172

147:                                              ; preds = %146
  %148 = load i32, ptr %10, align 4, !tbaa !36
  %149 = invoke noundef zeroext i1 @_Z6isCuspRKSt6vectorIN11HybridAStar6Node3DESaIS1_EEi(ptr noundef nonnull align 8 dereferenceable(24) %8, i32 noundef %148)
          to label %150 unwind label %172

150:                                              ; preds = %147
  br i1 %149, label %151, label %176

151:                                              ; preds = %150
  store i32 6, ptr %11, align 4
  br label %268

152:                                              ; preds = %95, %89, %83
  %153 = landingpad { ptr, i32 }
          cleanup
  %154 = extractvalue { ptr, i32 } %153, 0
  store ptr %154, ptr %13, align 8
  %155 = extractvalue { ptr, i32 } %153, 1
  store i32 %155, ptr %14, align 4
  br label %300

156:                                              ; preds = %108, %102, %96
  %157 = landingpad { ptr, i32 }
          cleanup
  %158 = extractvalue { ptr, i32 } %157, 0
  store ptr %158, ptr %13, align 8
  %159 = extractvalue { ptr, i32 } %157, 1
  store i32 %159, ptr %14, align 4
  br label %299

160:                                              ; preds = %119, %114, %109
  %161 = landingpad { ptr, i32 }
          cleanup
  %162 = extractvalue { ptr, i32 } %161, 0
  store ptr %162, ptr %13, align 8
  %163 = extractvalue { ptr, i32 } %161, 1
  store i32 %163, ptr %14, align 4
  br label %298

164:                                              ; preds = %132, %126, %120
  %165 = landingpad { ptr, i32 }
          cleanup
  %166 = extractvalue { ptr, i32 } %165, 0
  store ptr %166, ptr %13, align 8
  %167 = extractvalue { ptr, i32 } %165, 1
  store i32 %167, ptr %14, align 4
  br label %297

168:                                              ; preds = %145, %139, %133
  %169 = landingpad { ptr, i32 }
          cleanup
  %170 = extractvalue { ptr, i32 } %169, 0
  store ptr %170, ptr %13, align 8
  %171 = extractvalue { ptr, i32 } %169, 1
  store i32 %171, ptr %14, align 4
  br label %296

172:                                              ; preds = %223, %221, %203, %201, %183, %181, %147, %146
  %173 = landingpad { ptr, i32 }
          cleanup
  %174 = extractvalue { ptr, i32 } %173, 0
  store ptr %174, ptr %13, align 8
  %175 = extractvalue { ptr, i32 } %173, 1
  store i32 %175, ptr %14, align 4
  br label %295

176:                                              ; preds = %150
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %22, ptr align 4 %16, i64 8, i1 false), !tbaa.struct !42
  %177 = load <2 x float>, ptr %22, align 4
  %178 = invoke <2 x float> @_ZN11HybridAStar8Smoother12obstacleTermENS_8Vector2DE(ptr noundef nonnull align 8 dereferenceable(296) %47, <2 x float> %177)
          to label %179 unwind label %188

179:                                              ; preds = %176
  store <2 x float> %178, ptr %21, align 4
  %180 = invoke <2 x float> @_ZNK11HybridAStar8Vector2DmiERKS0_(ptr noundef nonnull align 4 dereferenceable(8) %19, ptr noundef nonnull align 4 dereferenceable(8) %21)
          to label %181 unwind label %188

181:                                              ; preds = %179
  store <2 x float> %180, ptr %20, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %19, ptr align 4 %20, i64 8, i1 false), !tbaa.struct !42
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #8
  %182 = invoke <2 x float> @_ZNK11HybridAStar8Vector2DplERKS0_(ptr noundef nonnull align 4 dereferenceable(8) %16, ptr noundef nonnull align 4 dereferenceable(8) %19)
          to label %183 unwind label %172

183:                                              ; preds = %181
  store <2 x float> %182, ptr %23, align 4
  %184 = load <2 x float>, ptr %23, align 4
  %185 = invoke noundef zeroext i1 @_ZN11HybridAStar8Smoother8isOnGridENS_8Vector2DE(ptr noundef nonnull align 8 dereferenceable(296) %47, <2 x float> %184)
          to label %186 unwind label %172

186:                                              ; preds = %183
  br i1 %185, label %192, label %187

187:                                              ; preds = %186
  store i32 6, ptr %11, align 4
  br label %268

188:                                              ; preds = %179, %176
  %189 = landingpad { ptr, i32 }
          cleanup
  %190 = extractvalue { ptr, i32 } %189, 0
  store ptr %190, ptr %13, align 8
  %191 = extractvalue { ptr, i32 } %189, 1
  store i32 %191, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #8
  br label %295

192:                                              ; preds = %186
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %26, ptr align 4 %12, i64 8, i1 false), !tbaa.struct !42
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %27, ptr align 4 %15, i64 8, i1 false), !tbaa.struct !42
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %28, ptr align 4 %16, i64 8, i1 false), !tbaa.struct !42
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %29, ptr align 4 %17, i64 8, i1 false), !tbaa.struct !42
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %30, ptr align 4 %18, i64 8, i1 false), !tbaa.struct !42
  %193 = load <2 x float>, ptr %26, align 4
  %194 = load <2 x float>, ptr %27, align 4
  %195 = load <2 x float>, ptr %28, align 4
  %196 = load <2 x float>, ptr %29, align 4
  %197 = load <2 x float>, ptr %30, align 4
  %198 = invoke <2 x float> @_ZN11HybridAStar8Smoother14smoothnessTermENS_8Vector2DES1_S1_S1_S1_(ptr noundef nonnull align 8 dereferenceable(296) %47, <2 x float> %193, <2 x float> %194, <2 x float> %195, <2 x float> %196, <2 x float> %197)
          to label %199 unwind label %208

199:                                              ; preds = %192
  store <2 x float> %198, ptr %25, align 4
  %200 = invoke <2 x float> @_ZNK11HybridAStar8Vector2DmiERKS0_(ptr noundef nonnull align 4 dereferenceable(8) %19, ptr noundef nonnull align 4 dereferenceable(8) %25)
          to label %201 unwind label %208

201:                                              ; preds = %199
  store <2 x float> %200, ptr %24, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %19, ptr align 4 %24, i64 8, i1 false), !tbaa.struct !42
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #8
  %202 = invoke <2 x float> @_ZNK11HybridAStar8Vector2DplERKS0_(ptr noundef nonnull align 4 dereferenceable(8) %16, ptr noundef nonnull align 4 dereferenceable(8) %19)
          to label %203 unwind label %172

203:                                              ; preds = %201
  store <2 x float> %202, ptr %31, align 4
  %204 = load <2 x float>, ptr %31, align 4
  %205 = invoke noundef zeroext i1 @_ZN11HybridAStar8Smoother8isOnGridENS_8Vector2DE(ptr noundef nonnull align 8 dereferenceable(296) %47, <2 x float> %204)
          to label %206 unwind label %172

206:                                              ; preds = %203
  br i1 %205, label %212, label %207

207:                                              ; preds = %206
  store i32 6, ptr %11, align 4
  br label %268

208:                                              ; preds = %199, %192
  %209 = landingpad { ptr, i32 }
          cleanup
  %210 = extractvalue { ptr, i32 } %209, 0
  store ptr %210, ptr %13, align 8
  %211 = extractvalue { ptr, i32 } %209, 1
  store i32 %211, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #8
  br label %295

212:                                              ; preds = %206
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %34, ptr align 4 %12, i64 8, i1 false), !tbaa.struct !42
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %35, ptr align 4 %15, i64 8, i1 false), !tbaa.struct !42
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %36, ptr align 4 %16, i64 8, i1 false), !tbaa.struct !42
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %37, ptr align 4 %17, i64 8, i1 false), !tbaa.struct !42
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %38, ptr align 4 %18, i64 8, i1 false), !tbaa.struct !42
  %213 = load <2 x float>, ptr %34, align 4
  %214 = load <2 x float>, ptr %35, align 4
  %215 = load <2 x float>, ptr %36, align 4
  %216 = load <2 x float>, ptr %37, align 4
  %217 = load <2 x float>, ptr %38, align 4
  %218 = invoke <2 x float> @_ZN11HybridAStar8Smoother13curvatureTermENS_8Vector2DES1_S1_S1_S1_(ptr noundef nonnull align 8 dereferenceable(296) %47, <2 x float> %213, <2 x float> %214, <2 x float> %215, <2 x float> %216, <2 x float> %217)
          to label %219 unwind label %228

219:                                              ; preds = %212
  store <2 x float> %218, ptr %33, align 4
  %220 = invoke <2 x float> @_ZNK11HybridAStar8Vector2DmiERKS0_(ptr noundef nonnull align 4 dereferenceable(8) %19, ptr noundef nonnull align 4 dereferenceable(8) %33)
          to label %221 unwind label %228

221:                                              ; preds = %219
  store <2 x float> %220, ptr %32, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %19, ptr align 4 %32, i64 8, i1 false), !tbaa.struct !42
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #8
  %222 = invoke <2 x float> @_ZNK11HybridAStar8Vector2DplERKS0_(ptr noundef nonnull align 4 dereferenceable(8) %16, ptr noundef nonnull align 4 dereferenceable(8) %19)
          to label %223 unwind label %172

223:                                              ; preds = %221
  store <2 x float> %222, ptr %39, align 4
  %224 = load <2 x float>, ptr %39, align 4
  %225 = invoke noundef zeroext i1 @_ZN11HybridAStar8Smoother8isOnGridENS_8Vector2DE(ptr noundef nonnull align 8 dereferenceable(296) %47, <2 x float> %224)
          to label %226 unwind label %172

226:                                              ; preds = %223
  br i1 %225, label %232, label %227

227:                                              ; preds = %226
  store i32 6, ptr %11, align 4
  br label %268

228:                                              ; preds = %219, %212
  %229 = landingpad { ptr, i32 }
          cleanup
  %230 = extractvalue { ptr, i32 } %229, 0
  store ptr %230, ptr %13, align 8
  %231 = extractvalue { ptr, i32 } %229, 1
  store i32 %231, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #8
  br label %295

232:                                              ; preds = %226
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #8
  %233 = getelementptr inbounds %"class.HybridAStar::Smoother", ptr %47, i32 0, i32 3
  %234 = load float, ptr %233, align 4, !tbaa !43
  %235 = fpext float %234 to double
  %236 = invoke <2 x float> @_ZN11HybridAStarmlEdRKNS_8Vector2DE(double noundef %235, ptr noundef nonnull align 4 dereferenceable(8) %19)
          to label %237 unwind label %274

237:                                              ; preds = %232
  store <2 x float> %236, ptr %42, align 4
  %238 = load float, ptr %9, align 4, !tbaa !41
  %239 = invoke <2 x float> @_ZNK11HybridAStar8Vector2DdvEf(ptr noundef nonnull align 4 dereferenceable(8) %42, float noundef %238)
          to label %240 unwind label %274

240:                                              ; preds = %237
  store <2 x float> %239, ptr %41, align 4
  %241 = invoke <2 x float> @_ZNK11HybridAStar8Vector2DplERKS0_(ptr noundef nonnull align 4 dereferenceable(8) %16, ptr noundef nonnull align 4 dereferenceable(8) %41)
          to label %242 unwind label %274

242:                                              ; preds = %240
  store <2 x float> %241, ptr %40, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %16, ptr align 4 %40, i64 8, i1 false), !tbaa.struct !42
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #8
  %243 = load i32, ptr %10, align 4, !tbaa !36
  %244 = sext i32 %243 to i64
  %245 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorIN11HybridAStar6Node3DESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %244) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #8
  %246 = invoke noundef float @_ZN11HybridAStar8Vector2D4getXEv(ptr noundef nonnull align 4 dereferenceable(8) %16)
          to label %247 unwind label %278

247:                                              ; preds = %242
  store float %246, ptr %43, align 4, !tbaa !41
  invoke void @_ZN11HybridAStar6Node3D4setXERKf(ptr noundef nonnull align 8 dereferenceable(40) %245, ptr noundef nonnull align 4 dereferenceable(4) %43)
          to label %248 unwind label %278

248:                                              ; preds = %247
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #8
  %249 = load i32, ptr %10, align 4, !tbaa !36
  %250 = sext i32 %249 to i64
  %251 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorIN11HybridAStar6Node3DESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %250) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #8
  %252 = invoke noundef float @_ZN11HybridAStar8Vector2D4getYEv(ptr noundef nonnull align 4 dereferenceable(8) %16)
          to label %253 unwind label %282

253:                                              ; preds = %248
  store float %252, ptr %44, align 4, !tbaa !41
  invoke void @_ZN11HybridAStar6Node3D4setYERKf(ptr noundef nonnull align 8 dereferenceable(40) %251, ptr noundef nonnull align 4 dereferenceable(4) %44)
          to label %254 unwind label %282

254:                                              ; preds = %253
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #8
  %255 = invoke <2 x float> @_ZNK11HybridAStar8Vector2DmiERKS0_(ptr noundef nonnull align 4 dereferenceable(8) %16, ptr noundef nonnull align 4 dereferenceable(8) %15)
          to label %256 unwind label %286

256:                                              ; preds = %254
  store <2 x float> %255, ptr %45, align 4
  %257 = load i32, ptr %10, align 4, !tbaa !36
  %258 = sub nsw i32 %257, 1
  %259 = sext i32 %258 to i64
  %260 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorIN11HybridAStar6Node3DESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %259) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #8
  %261 = invoke noundef float @_ZN11HybridAStar8Vector2D4getYEv(ptr noundef nonnull align 4 dereferenceable(8) %45)
          to label %262 unwind label %290

262:                                              ; preds = %256
  %263 = invoke noundef float @_ZN11HybridAStar8Vector2D4getXEv(ptr noundef nonnull align 4 dereferenceable(8) %45)
          to label %264 unwind label %290

264:                                              ; preds = %262
  %265 = invoke noundef float @_ZSt5atan2ff(float noundef %261, float noundef %263)
          to label %266 unwind label %290

266:                                              ; preds = %264
  store float %265, ptr %46, align 4, !tbaa !41
  invoke void @_ZN11HybridAStar6Node3D4setTERKf(ptr noundef nonnull align 8 dereferenceable(40) %260, ptr noundef nonnull align 4 dereferenceable(4) %46)
          to label %267 unwind label %290

267:                                              ; preds = %266
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #8
  store i32 0, ptr %11, align 4
  br label %268

268:                                              ; preds = %267, %227, %207, %187, %151
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #8
  %269 = load i32, ptr %11, align 4
  switch i32 %269, label %318 [
    i32 0, label %270
    i32 6, label %271
  ]

270:                                              ; preds = %268
  br label %271

271:                                              ; preds = %270, %268
  %272 = load i32, ptr %10, align 4, !tbaa !36
  %273 = add nsw i32 %272, 1
  store i32 %273, ptr %10, align 4, !tbaa !36
  br label %77, !llvm.loop !44

274:                                              ; preds = %240, %237, %232
  %275 = landingpad { ptr, i32 }
          cleanup
  %276 = extractvalue { ptr, i32 } %275, 0
  store ptr %276, ptr %13, align 8
  %277 = extractvalue { ptr, i32 } %275, 1
  store i32 %277, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #8
  br label %295

278:                                              ; preds = %247, %242
  %279 = landingpad { ptr, i32 }
          cleanup
  %280 = extractvalue { ptr, i32 } %279, 0
  store ptr %280, ptr %13, align 8
  %281 = extractvalue { ptr, i32 } %279, 1
  store i32 %281, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #8
  br label %295

282:                                              ; preds = %253, %248
  %283 = landingpad { ptr, i32 }
          cleanup
  %284 = extractvalue { ptr, i32 } %283, 0
  store ptr %284, ptr %13, align 8
  %285 = extractvalue { ptr, i32 } %283, 1
  store i32 %285, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #8
  br label %295

286:                                              ; preds = %254
  %287 = landingpad { ptr, i32 }
          cleanup
  %288 = extractvalue { ptr, i32 } %287, 0
  store ptr %288, ptr %13, align 8
  %289 = extractvalue { ptr, i32 } %287, 1
  store i32 %289, ptr %14, align 4
  br label %294

290:                                              ; preds = %266, %264, %262, %256
  %291 = landingpad { ptr, i32 }
          cleanup
  %292 = extractvalue { ptr, i32 } %291, 0
  store ptr %292, ptr %13, align 8
  %293 = extractvalue { ptr, i32 } %291, 1
  store i32 %293, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #8
  br label %294

294:                                              ; preds = %290, %286
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #8
  br label %295

295:                                              ; preds = %294, %282, %278, %274, %228, %208, %188, %172
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #8
  br label %296

296:                                              ; preds = %295, %168
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #8
  br label %297

297:                                              ; preds = %296, %164
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #8
  br label %298

298:                                              ; preds = %297, %160
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #8
  br label %299

299:                                              ; preds = %298, %156
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #8
  br label %300

300:                                              ; preds = %299, %152
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #8
  br label %312

301:                                              ; preds = %82
  %302 = load i32, ptr %5, align 4, !tbaa !36
  %303 = add nsw i32 %302, 1
  store i32 %303, ptr %5, align 4, !tbaa !36
  br label %72, !llvm.loop !46

304:                                              ; preds = %72
  %305 = getelementptr inbounds %"class.HybridAStar::Smoother", ptr %47, i32 0, i32 11
  %306 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN11HybridAStar6Node3DESaIS1_EEaSERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %305, ptr noundef nonnull align 8 dereferenceable(24) %8)
          to label %307 unwind label %308

307:                                              ; preds = %304
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #8
  call void @_ZNSt6vectorIN11HybridAStar6Node3DESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %8) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #8
  ret void

308:                                              ; preds = %304
  %309 = landingpad { ptr, i32 }
          cleanup
  %310 = extractvalue { ptr, i32 } %309, 0
  store ptr %310, ptr %13, align 8
  %311 = extractvalue { ptr, i32 } %309, 1
  store i32 %311, ptr %14, align 4
  br label %312

312:                                              ; preds = %308, %300
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #8
  call void @_ZNSt6vectorIN11HybridAStar6Node3DESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %8) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #8
  br label %313

313:                                              ; preds = %312
  %314 = load ptr, ptr %13, align 8
  %315 = load i32, ptr %14, align 4
  %316 = insertvalue { ptr, i32 } poison, ptr %314, 0
  %317 = insertvalue { ptr, i32 } %316, i32 %315, 1
  resume { ptr, i32 } %317

318:                                              ; preds = %268
  unreachable
}

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

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

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

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

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

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

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

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

declare i32 @__gxx_personality_v0(...)

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef zeroext i1 @_Z6isCuspRKSt6vectorIN11HybridAStar6Node3DESaIS1_EEi(ptr noundef nonnull align 8 dereferenceable(24), i32 noundef) #1

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local <2 x float> @_ZNK11HybridAStar8Vector2DmiERKS0_(ptr noundef nonnull align 4 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(8)) #6 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN11HybridAStar8Smoother8isOnGridENS_8Vector2DE(ptr noundef nonnull align 8 dereferenceable(296), <2 x float>) #0 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local <2 x float> @_ZNK11HybridAStar8Vector2DplERKS0_(ptr noundef nonnull align 4 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(8)) #6 align 2

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local <2 x float> @_ZN11HybridAStarmlEdRKNS_8Vector2DE(double noundef, ptr noundef nonnull align 4 dereferenceable(8)) #6

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local <2 x float> @_ZNK11HybridAStar8Vector2DdvEf(ptr noundef nonnull align 4 dereferenceable(8), float noundef) #6 align 2

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

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef float @_ZSt5atan2ff(float noundef, float noundef) #5

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIN11HybridAStar6Node3DESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #2 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 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { mustprogress 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 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
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 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 #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 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #8 = { 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, !14, i64 264}
!10 = !{!"_ZTSN11HybridAStar8SmootherE", !11, i64 0, !11, i64 4, !11, i64 8, !11, i64 12, !11, i64 16, !11, i64 20, !11, i64 24, !11, i64 28, !12, i64 32, !14, i64 264, !14, i64 268, !31, i64 272}
!11 = !{!"float", !7, i64 0}
!12 = !{!"_ZTSN11HybridAStar14DynamicVoronoiE", !13, i64 0, !19, i64 32, !26, i64 112, !26, i64 136, !26, i64 160, !14, i64 184, !14, i64 188, !6, i64 192, !6, i64 200, !14, i64 208, !30, i64 216, !30, i64 224}
!13 = !{!"_ZTSN11HybridAStar15BucketPrioQueueE", !14, i64 0, !14, i64 4, !15, i64 8}
!14 = !{!"int", !7, i64 0}
!15 = !{!"_ZTSSt6vectorISt5queueIN11HybridAStar8IntPointESt5dequeIS2_SaIS2_EEESaIS6_EE", !16, i64 0}
!16 = !{!"_ZTSSt12_Vector_baseISt5queueIN11HybridAStar8IntPointESt5dequeIS2_SaIS2_EEESaIS6_EE", !17, i64 0}
!17 = !{!"_ZTSNSt12_Vector_baseISt5queueIN11HybridAStar8IntPointESt5dequeIS2_SaIS2_EEESaIS6_EE12_Vector_implE", !18, i64 0}
!18 = !{!"_ZTSNSt12_Vector_baseISt5queueIN11HybridAStar8IntPointESt5dequeIS2_SaIS2_EEESaIS6_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!19 = !{!"_ZTSSt5queueIN11HybridAStar8IntPointESt5dequeIS1_SaIS1_EEE", !20, i64 0}
!20 = !{!"_ZTSSt5dequeIN11HybridAStar8IntPointESaIS1_EE", !21, i64 0}
!21 = !{!"_ZTSSt11_Deque_baseIN11HybridAStar8IntPointESaIS1_EE", !22, i64 0}
!22 = !{!"_ZTSNSt11_Deque_baseIN11HybridAStar8IntPointESaIS1_EE11_Deque_implE", !23, i64 0}
!23 = !{!"_ZTSNSt11_Deque_baseIN11HybridAStar8IntPointESaIS1_EE16_Deque_impl_dataE", !6, i64 0, !24, i64 8, !25, i64 16, !25, i64 48}
!24 = !{!"long", !7, i64 0}
!25 = !{!"_ZTSSt15_Deque_iteratorIN11HybridAStar8IntPointERS1_PS1_E", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!26 = !{!"_ZTSSt6vectorIN11HybridAStar8IntPointESaIS1_EE", !27, i64 0}
!27 = !{!"_ZTSSt12_Vector_baseIN11HybridAStar8IntPointESaIS1_EE", !28, i64 0}
!28 = !{!"_ZTSNSt12_Vector_baseIN11HybridAStar8IntPointESaIS1_EE12_Vector_implE", !29, i64 0}
!29 = !{!"_ZTSNSt12_Vector_baseIN11HybridAStar8IntPointESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!30 = !{!"double", !7, i64 0}
!31 = !{!"_ZTSSt6vectorIN11HybridAStar6Node3DESaIS1_EE", !32, i64 0}
!32 = !{!"_ZTSSt12_Vector_baseIN11HybridAStar6Node3DESaIS1_EE", !33, i64 0}
!33 = !{!"_ZTSNSt12_Vector_baseIN11HybridAStar6Node3DESaIS1_EE12_Vector_implE", !34, i64 0}
!34 = !{!"_ZTSNSt12_Vector_baseIN11HybridAStar6Node3DESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!35 = !{!10, !14, i64 268}
!36 = !{!14, !14, i64 0}
!37 = !{!10, !11, i64 28}
!38 = !{!10, !11, i64 24}
!39 = !{!10, !11, i64 20}
!40 = !{!10, !11, i64 16}
!41 = !{!11, !11, i64 0}
!42 = !{i64 0, i64 4, !41, i64 4, i64 4, !41}
!43 = !{!10, !11, i64 12}
!44 = distinct !{!44, !45}
!45 = !{!"llvm.loop.mustprogress"}
!46 = distinct !{!46, !45}


; 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::vector.5" = type { %"struct.std::_Vector_base.6" }
%"struct.std::_Vector_base.6" = type { %"struct.std::_Vector_base<HybridAStar::Node3D, std::allocator<HybridAStar::Node3D>>::_Vector_impl" }
%"struct.std::_Vector_base<HybridAStar::Node3D, std::allocator<HybridAStar::Node3D>>::_Vector_impl" = type { %"struct.std::_Vector_base<HybridAStar::Node3D, std::allocator<HybridAStar::Node3D>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HybridAStar::Node3D, std::allocator<HybridAStar::Node3D>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.HybridAStar::Vector2D" = type { float, float }

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11HybridAStar8Smoother10smoothPathERNS_14DynamicVoronoiE(ptr noundef nonnull align 8 dereferenceable(296) %0, ptr noundef nonnull align 8 dereferenceable(232) %1) local_unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca %"class.std::vector.5", align 8
  %4 = alloca %"class.HybridAStar::Vector2D", align 8
  %5 = alloca %"class.HybridAStar::Vector2D", align 8
  %6 = alloca %"class.HybridAStar::Vector2D", align 8
  %7 = alloca %"class.HybridAStar::Vector2D", align 8
  %8 = alloca %"class.HybridAStar::Vector2D", align 8
  %9 = alloca %"class.HybridAStar::Vector2D", align 8
  %10 = alloca %"class.HybridAStar::Vector2D", align 8
  %11 = alloca %"class.HybridAStar::Vector2D", align 8
  %12 = alloca %"class.HybridAStar::Vector2D", align 8
  %13 = alloca %"class.HybridAStar::Vector2D", align 8
  %14 = alloca %"class.HybridAStar::Vector2D", align 8
  %15 = alloca float, align 4
  %16 = alloca float, align 4
  %17 = alloca %"class.HybridAStar::Vector2D", align 8
  %18 = alloca float, align 4
  %19 = getelementptr inbounds i8, ptr %0, i64 32
  %20 = tail call noundef nonnull align 8 dereferenceable(232) ptr @_ZN11HybridAStar14DynamicVoronoiaSERKS0_(ptr noundef nonnull align 8 dereferenceable(232) %19, ptr noundef nonnull align 8 dereferenceable(232) %1)
  %21 = tail call noundef i32 @_ZNK11HybridAStar14DynamicVoronoi8getSizeXEv(ptr noundef nonnull align 8 dereferenceable(232) %1)
  %22 = getelementptr inbounds i8, ptr %0, i64 264
  store i32 %21, ptr %22, align 8, !tbaa !5
  %23 = tail call noundef i32 @_ZNK11HybridAStar14DynamicVoronoi8getSizeYEv(ptr noundef nonnull align 8 dereferenceable(232) %1)
  %24 = getelementptr inbounds i8, ptr %0, i64 268
  store i32 %23, ptr %24, align 4, !tbaa !34
  %25 = getelementptr inbounds i8, ptr %0, i64 272
  %26 = tail call noundef i64 @_ZNKSt6vectorIN11HybridAStar6Node3DESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %25) #7
  %27 = trunc i64 %26 to i32
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %3) #7
  call void @_ZNSt6vectorIN11HybridAStar6Node3DESaIS1_EEC2ERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 dereferenceable(24) %25)
  %28 = getelementptr inbounds i8, ptr %0, i64 28
  %29 = load float, ptr %28, align 4, !tbaa !35
  %30 = getelementptr inbounds i8, ptr %0, i64 24
  %31 = load float, ptr %30, align 8, !tbaa !36
  %32 = fadd float %29, %31
  %33 = getelementptr inbounds i8, ptr %0, i64 20
  %34 = load float, ptr %33, align 4, !tbaa !37
  %35 = fadd float %32, %34
  %36 = getelementptr inbounds i8, ptr %0, i64 16
  %37 = load float, ptr %36, align 8, !tbaa !38
  %38 = fadd float %35, %37
  %39 = icmp sgt i32 %27, 4
  %40 = getelementptr inbounds i8, ptr %0, i64 12
  br i1 %39, label %.preheader.us.preheader, label %.split52.us

.preheader.us.preheader:                          ; preds = %2
  %41 = add i64 %26, 4294967294
  %wide.trip.count = and i64 %41, 4294967295
  br label %.preheader.us

.preheader.us:                                    ; preds = %.preheader.us.preheader, %._crit_edge.us
  %.050.us = phi i32 [ %116, %._crit_edge.us ], [ 0, %.preheader.us.preheader ]
  br label %42

42:                                               ; preds = %.preheader.us, %115
  %indvars.iv = phi i64 [ 2, %.preheader.us ], [ %indvars.iv.next, %115 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #7
  %43 = add nsw i64 %indvars.iv, -2
  %44 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorIN11HybridAStar6Node3DESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %43) #7
  %45 = call noundef float @_ZNK11HybridAStar6Node3D4getXEv(ptr noundef nonnull align 8 dereferenceable(40) %44)
  %46 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorIN11HybridAStar6Node3DESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %43) #7
  %47 = call noundef float @_ZNK11HybridAStar6Node3D4getYEv(ptr noundef nonnull align 8 dereferenceable(40) %46)
  call void @_ZN11HybridAStar8Vector2DC2Eff(ptr noundef nonnull align 4 dereferenceable(8) %4, float noundef %45, float noundef %47)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #7
  %48 = add nsw i64 %indvars.iv, -1
  %49 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorIN11HybridAStar6Node3DESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %48) #7
  %50 = call noundef float @_ZNK11HybridAStar6Node3D4getXEv(ptr noundef nonnull align 8 dereferenceable(40) %49)
  %51 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorIN11HybridAStar6Node3DESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %48) #7
  %52 = call noundef float @_ZNK11HybridAStar6Node3D4getYEv(ptr noundef nonnull align 8 dereferenceable(40) %51)
  call void @_ZN11HybridAStar8Vector2DC2Eff(ptr noundef nonnull align 4 dereferenceable(8) %5, float noundef %50, float noundef %52)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #7
  %53 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorIN11HybridAStar6Node3DESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %indvars.iv) #7
  %54 = call noundef float @_ZNK11HybridAStar6Node3D4getXEv(ptr noundef nonnull align 8 dereferenceable(40) %53)
  %55 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorIN11HybridAStar6Node3DESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %indvars.iv) #7
  %56 = call noundef float @_ZNK11HybridAStar6Node3D4getYEv(ptr noundef nonnull align 8 dereferenceable(40) %55)
  call void @_ZN11HybridAStar8Vector2DC2Eff(ptr noundef nonnull align 4 dereferenceable(8) %6, float noundef %54, float noundef %56)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #7
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %57 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorIN11HybridAStar6Node3DESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %indvars.iv.next) #7
  %58 = call noundef float @_ZNK11HybridAStar6Node3D4getXEv(ptr noundef nonnull align 8 dereferenceable(40) %57)
  %59 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorIN11HybridAStar6Node3DESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %indvars.iv.next) #7
  %60 = call noundef float @_ZNK11HybridAStar6Node3D4getYEv(ptr noundef nonnull align 8 dereferenceable(40) %59)
  call void @_ZN11HybridAStar8Vector2DC2Eff(ptr noundef nonnull align 4 dereferenceable(8) %7, float noundef %58, float noundef %60)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #7
  %61 = add nuw nsw i64 %indvars.iv, 2
  %62 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorIN11HybridAStar6Node3DESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %61) #7
  %63 = call noundef float @_ZNK11HybridAStar6Node3D4getXEv(ptr noundef nonnull align 8 dereferenceable(40) %62)
  %64 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorIN11HybridAStar6Node3DESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %61) #7
  %65 = call noundef float @_ZNK11HybridAStar6Node3D4getYEv(ptr noundef nonnull align 8 dereferenceable(40) %64)
  call void @_ZN11HybridAStar8Vector2DC2Eff(ptr noundef nonnull align 4 dereferenceable(8) %8, float noundef %63, float noundef %65)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #7
  call void @_ZN11HybridAStar8Vector2DC2Eff(ptr noundef nonnull align 4 dereferenceable(8) %9, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %66 = trunc nuw nsw i64 %indvars.iv to i32
  %67 = invoke noundef zeroext i1 @_Z6isCuspRKSt6vectorIN11HybridAStar6Node3DESaIS1_EEi(ptr noundef nonnull align 8 dereferenceable(24) %3, i32 noundef %66)
          to label %68 unwind label %.split54.us

68:                                               ; preds = %42
  br i1 %67, label %115, label %69

69:                                               ; preds = %68
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #7
  %.sroa.016.0.copyload.us = load <2 x float>, ptr %6, align 8
  %70 = invoke <2 x float> @_ZN11HybridAStar8Smoother12obstacleTermENS_8Vector2DE(ptr noundef nonnull align 8 dereferenceable(296) %0, <2 x float> %.sroa.016.0.copyload.us)
          to label %71 unwind label %.split56.us

71:                                               ; preds = %69
  store <2 x float> %70, ptr %10, align 8
  %72 = invoke <2 x float> @_ZNK11HybridAStar8Vector2DmiERKS0_(ptr noundef nonnull align 4 dereferenceable(8) %9, ptr noundef nonnull align 4 dereferenceable(8) %10)
          to label %73 unwind label %.split56.us

73:                                               ; preds = %71
  store <2 x float> %72, ptr %9, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #7
  %74 = invoke <2 x float> @_ZNK11HybridAStar8Vector2DplERKS0_(ptr noundef nonnull align 4 dereferenceable(8) %6, ptr noundef nonnull align 4 dereferenceable(8) %9)
          to label %75 unwind label %.split54.us

75:                                               ; preds = %73
  %76 = invoke noundef zeroext i1 @_ZN11HybridAStar8Smoother8isOnGridENS_8Vector2DE(ptr noundef nonnull align 8 dereferenceable(296) %0, <2 x float> %74)
          to label %77 unwind label %.split54.us

77:                                               ; preds = %75
  br i1 %76, label %78, label %115

78:                                               ; preds = %77
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #7
  %.sroa.013.0.copyload.us = load <2 x float>, ptr %4, align 8
  %.sroa.012.0.copyload.us = load <2 x float>, ptr %5, align 8
  %.sroa.011.0.copyload.us = load <2 x float>, ptr %6, align 8
  %.sroa.010.0.copyload.us = load <2 x float>, ptr %7, align 8
  %.sroa.09.0.copyload.us = load <2 x float>, ptr %8, align 8
  %79 = invoke <2 x float> @_ZN11HybridAStar8Smoother14smoothnessTermENS_8Vector2DES1_S1_S1_S1_(ptr noundef nonnull align 8 dereferenceable(296) %0, <2 x float> %.sroa.013.0.copyload.us, <2 x float> %.sroa.012.0.copyload.us, <2 x float> %.sroa.011.0.copyload.us, <2 x float> %.sroa.010.0.copyload.us, <2 x float> %.sroa.09.0.copyload.us)
          to label %80 unwind label %.split59.us

80:                                               ; preds = %78
  store <2 x float> %79, ptr %11, align 8
  %81 = invoke <2 x float> @_ZNK11HybridAStar8Vector2DmiERKS0_(ptr noundef nonnull align 4 dereferenceable(8) %9, ptr noundef nonnull align 4 dereferenceable(8) %11)
          to label %82 unwind label %.split59.us

82:                                               ; preds = %80
  store <2 x float> %81, ptr %9, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #7
  %83 = invoke <2 x float> @_ZNK11HybridAStar8Vector2DplERKS0_(ptr noundef nonnull align 4 dereferenceable(8) %6, ptr noundef nonnull align 4 dereferenceable(8) %9)
          to label %84 unwind label %.split54.us

84:                                               ; preds = %82
  %85 = invoke noundef zeroext i1 @_ZN11HybridAStar8Smoother8isOnGridENS_8Vector2DE(ptr noundef nonnull align 8 dereferenceable(296) %0, <2 x float> %83)
          to label %86 unwind label %.split54.us

86:                                               ; preds = %84
  br i1 %85, label %87, label %115

87:                                               ; preds = %86
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #7
  %.sroa.06.0.copyload.us = load <2 x float>, ptr %4, align 8
  %.sroa.05.0.copyload.us = load <2 x float>, ptr %5, align 8
  %.sroa.04.0.copyload.us = load <2 x float>, ptr %6, align 8
  %.sroa.03.0.copyload.us = load <2 x float>, ptr %7, align 8
  %.sroa.02.0.copyload.us = load <2 x float>, ptr %8, align 8
  %88 = invoke <2 x float> @_ZN11HybridAStar8Smoother13curvatureTermENS_8Vector2DES1_S1_S1_S1_(ptr noundef nonnull align 8 dereferenceable(296) %0, <2 x float> %.sroa.06.0.copyload.us, <2 x float> %.sroa.05.0.copyload.us, <2 x float> %.sroa.04.0.copyload.us, <2 x float> %.sroa.03.0.copyload.us, <2 x float> %.sroa.02.0.copyload.us)
          to label %89 unwind label %.split62.us

89:                                               ; preds = %87
  store <2 x float> %88, ptr %12, align 8
  %90 = invoke <2 x float> @_ZNK11HybridAStar8Vector2DmiERKS0_(ptr noundef nonnull align 4 dereferenceable(8) %9, ptr noundef nonnull align 4 dereferenceable(8) %12)
          to label %91 unwind label %.split62.us

91:                                               ; preds = %89
  store <2 x float> %90, ptr %9, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #7
  %92 = invoke <2 x float> @_ZNK11HybridAStar8Vector2DplERKS0_(ptr noundef nonnull align 4 dereferenceable(8) %6, ptr noundef nonnull align 4 dereferenceable(8) %9)
          to label %93 unwind label %.split54.us

93:                                               ; preds = %91
  %94 = invoke noundef zeroext i1 @_ZN11HybridAStar8Smoother8isOnGridENS_8Vector2DE(ptr noundef nonnull align 8 dereferenceable(296) %0, <2 x float> %92)
          to label %95 unwind label %.split54.us

95:                                               ; preds = %93
  br i1 %94, label %96, label %115

96:                                               ; preds = %95
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #7
  %97 = load float, ptr %40, align 4, !tbaa !39
  %98 = fpext float %97 to double
  %99 = invoke <2 x float> @_ZN11HybridAStarmlEdRKNS_8Vector2DE(double noundef %98, ptr noundef nonnull align 4 dereferenceable(8) %9)
          to label %100 unwind label %.split65.us

100:                                              ; preds = %96
  store <2 x float> %99, ptr %14, align 8
  %101 = invoke <2 x float> @_ZNK11HybridAStar8Vector2DdvEf(ptr noundef nonnull align 4 dereferenceable(8) %14, float noundef %38)
          to label %102 unwind label %.split65.us

102:                                              ; preds = %100
  store <2 x float> %101, ptr %13, align 8
  %103 = invoke <2 x float> @_ZNK11HybridAStar8Vector2DplERKS0_(ptr noundef nonnull align 4 dereferenceable(8) %6, ptr noundef nonnull align 4 dereferenceable(8) %13)
          to label %104 unwind label %.split65.us

104:                                              ; preds = %102
  store <2 x float> %103, ptr %6, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #7
  %105 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorIN11HybridAStar6Node3DESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %indvars.iv) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %15) #7
  %106 = call noundef float @_ZN11HybridAStar8Vector2D4getXEv(ptr noundef nonnull align 4 dereferenceable(8) %6)
  store float %106, ptr %15, align 4, !tbaa !40
  call void @_ZN11HybridAStar6Node3D4setXERKf(ptr noundef nonnull align 8 dereferenceable(40) %105, ptr noundef nonnull align 4 dereferenceable(4) %15)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #7
  %107 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorIN11HybridAStar6Node3DESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %indvars.iv) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %16) #7
  %108 = call noundef float @_ZN11HybridAStar8Vector2D4getYEv(ptr noundef nonnull align 4 dereferenceable(8) %6)
  store float %108, ptr %16, align 4, !tbaa !40
  call void @_ZN11HybridAStar6Node3D4setYERKf(ptr noundef nonnull align 8 dereferenceable(40) %107, ptr noundef nonnull align 4 dereferenceable(4) %16)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #7
  %109 = invoke <2 x float> @_ZNK11HybridAStar8Vector2DmiERKS0_(ptr noundef nonnull align 4 dereferenceable(8) %6, ptr noundef nonnull align 4 dereferenceable(8) %5)
          to label %110 unwind label %.split68.us

110:                                              ; preds = %104
  store <2 x float> %109, ptr %17, align 8
  %111 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNSt6vectorIN11HybridAStar6Node3DESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %48) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %18) #7
  %112 = call noundef float @_ZN11HybridAStar8Vector2D4getYEv(ptr noundef nonnull align 4 dereferenceable(8) %17)
  %113 = call noundef float @_ZN11HybridAStar8Vector2D4getXEv(ptr noundef nonnull align 4 dereferenceable(8) %17)
  %114 = call noundef float @_ZSt5atan2ff(float noundef %112, float noundef %113)
  store float %114, ptr %18, align 4, !tbaa !40
  call void @_ZN11HybridAStar6Node3D4setTERKf(ptr noundef nonnull align 8 dereferenceable(40) %111, ptr noundef nonnull align 4 dereferenceable(4) %18)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #7
  br label %115

115:                                              ; preds = %110, %95, %86, %77, %68
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #7
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %._crit_edge.us, label %42, !llvm.loop !41

._crit_edge.us:                                   ; preds = %115
  %116 = add nuw nsw i32 %.050.us, 1
  %exitcond72.not = icmp eq i32 %116, 500
  br i1 %exitcond72.not, label %.split52.us, label %.preheader.us, !llvm.loop !43

.split54.us:                                      ; preds = %93, %91, %84, %82, %75, %73, %42
  %117 = landingpad { ptr, i32 }
          cleanup
  br label %123

.split56.us:                                      ; preds = %71, %69
  %118 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #7
  br label %123

.split59.us:                                      ; preds = %80, %78
  %119 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #7
  br label %123

.split62.us:                                      ; preds = %89, %87
  %120 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #7
  br label %123

.split65.us:                                      ; preds = %102, %100, %96
  %121 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #7
  br label %123

.split68.us:                                      ; preds = %104
  %122 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #7
  br label %123

123:                                              ; preds = %.split68.us, %.split65.us, %.split62.us, %.split59.us, %.split56.us, %.split54.us
  %.pn = phi { ptr, i32 } [ %122, %.split68.us ], [ %121, %.split65.us ], [ %117, %.split54.us ], [ %120, %.split62.us ], [ %119, %.split59.us ], [ %118, %.split56.us ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #7
  br label %128

.split52.us:                                      ; preds = %._crit_edge.us, %2
  %124 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNSt6vectorIN11HybridAStar6Node3DESaIS1_EEaSERKS3_(ptr noundef nonnull align 8 dereferenceable(24) %25, ptr noundef nonnull align 8 dereferenceable(24) %3)
          to label %125 unwind label %126

125:                                              ; preds = %.split52.us
  call void @_ZNSt6vectorIN11HybridAStar6Node3DESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) #7
  ret void

126:                                              ; preds = %.split52.us
  %127 = landingpad { ptr, i32 }
          cleanup
  br label %128

128:                                              ; preds = %126, %123
  %.pn.pn = phi { ptr, i32 } [ %.pn, %123 ], [ %127, %126 ]
  call void @_ZNSt6vectorIN11HybridAStar6Node3DESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) #7
  resume { ptr, i32 } %.pn.pn
}

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

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

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

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

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

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

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

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

declare i32 @__gxx_personality_v0(...)

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef zeroext i1 @_Z6isCuspRKSt6vectorIN11HybridAStar6Node3DESaIS1_EEi(ptr noundef nonnull align 8 dereferenceable(24), i32 noundef) local_unnamed_addr #1

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local <2 x float> @_ZNK11HybridAStar8Vector2DmiERKS0_(ptr noundef nonnull align 4 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(8)) local_unnamed_addr #6 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZN11HybridAStar8Smoother8isOnGridENS_8Vector2DE(ptr noundef nonnull align 8 dereferenceable(296), <2 x float>) local_unnamed_addr #0 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local <2 x float> @_ZNK11HybridAStar8Vector2DplERKS0_(ptr noundef nonnull align 4 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(8)) local_unnamed_addr #6 align 2

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local <2 x float> @_ZN11HybridAStarmlEdRKNS_8Vector2DE(double noundef, ptr noundef nonnull align 4 dereferenceable(8)) local_unnamed_addr #6

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local <2 x float> @_ZNK11HybridAStar8Vector2DdvEf(ptr noundef nonnull align 4 dereferenceable(8), float noundef) local_unnamed_addr #6 align 2

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

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef float @_ZSt5atan2ff(float noundef, float noundef) local_unnamed_addr #5

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIN11HybridAStar6Node3DESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #2 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 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
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 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 #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 = { 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, !12, i64 264}
!6 = !{!"_ZTSN11HybridAStar8SmootherE", !7, i64 0, !7, i64 4, !7, i64 8, !7, i64 12, !7, i64 16, !7, i64 20, !7, i64 24, !7, i64 28, !10, i64 32, !12, i64 264, !12, i64 268, !30, i64 272}
!7 = !{!"float", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"_ZTSN11HybridAStar14DynamicVoronoiE", !11, i64 0, !18, i64 32, !25, i64 112, !25, i64 136, !25, i64 160, !12, i64 184, !12, i64 188, !17, i64 192, !17, i64 200, !12, i64 208, !29, i64 216, !29, i64 224}
!11 = !{!"_ZTSN11HybridAStar15BucketPrioQueueE", !12, i64 0, !12, i64 4, !13, i64 8}
!12 = !{!"int", !8, i64 0}
!13 = !{!"_ZTSSt6vectorISt5queueIN11HybridAStar8IntPointESt5dequeIS2_SaIS2_EEESaIS6_EE", !14, i64 0}
!14 = !{!"_ZTSSt12_Vector_baseISt5queueIN11HybridAStar8IntPointESt5dequeIS2_SaIS2_EEESaIS6_EE", !15, i64 0}
!15 = !{!"_ZTSNSt12_Vector_baseISt5queueIN11HybridAStar8IntPointESt5dequeIS2_SaIS2_EEESaIS6_EE12_Vector_implE", !16, i64 0}
!16 = !{!"_ZTSNSt12_Vector_baseISt5queueIN11HybridAStar8IntPointESt5dequeIS2_SaIS2_EEESaIS6_EE17_Vector_impl_dataE", !17, i64 0, !17, i64 8, !17, i64 16}
!17 = !{!"any pointer", !8, i64 0}
!18 = !{!"_ZTSSt5queueIN11HybridAStar8IntPointESt5dequeIS1_SaIS1_EEE", !19, i64 0}
!19 = !{!"_ZTSSt5dequeIN11HybridAStar8IntPointESaIS1_EE", !20, i64 0}
!20 = !{!"_ZTSSt11_Deque_baseIN11HybridAStar8IntPointESaIS1_EE", !21, i64 0}
!21 = !{!"_ZTSNSt11_Deque_baseIN11HybridAStar8IntPointESaIS1_EE11_Deque_implE", !22, i64 0}
!22 = !{!"_ZTSNSt11_Deque_baseIN11HybridAStar8IntPointESaIS1_EE16_Deque_impl_dataE", !17, i64 0, !23, i64 8, !24, i64 16, !24, i64 48}
!23 = !{!"long", !8, i64 0}
!24 = !{!"_ZTSSt15_Deque_iteratorIN11HybridAStar8IntPointERS1_PS1_E", !17, i64 0, !17, i64 8, !17, i64 16, !17, i64 24}
!25 = !{!"_ZTSSt6vectorIN11HybridAStar8IntPointESaIS1_EE", !26, i64 0}
!26 = !{!"_ZTSSt12_Vector_baseIN11HybridAStar8IntPointESaIS1_EE", !27, i64 0}
!27 = !{!"_ZTSNSt12_Vector_baseIN11HybridAStar8IntPointESaIS1_EE12_Vector_implE", !28, i64 0}
!28 = !{!"_ZTSNSt12_Vector_baseIN11HybridAStar8IntPointESaIS1_EE17_Vector_impl_dataE", !17, i64 0, !17, i64 8, !17, i64 16}
!29 = !{!"double", !8, i64 0}
!30 = !{!"_ZTSSt6vectorIN11HybridAStar6Node3DESaIS1_EE", !31, i64 0}
!31 = !{!"_ZTSSt12_Vector_baseIN11HybridAStar6Node3DESaIS1_EE", !32, i64 0}
!32 = !{!"_ZTSNSt12_Vector_baseIN11HybridAStar6Node3DESaIS1_EE12_Vector_implE", !33, i64 0}
!33 = !{!"_ZTSNSt12_Vector_baseIN11HybridAStar6Node3DESaIS1_EE17_Vector_impl_dataE", !17, i64 0, !17, i64 8, !17, i64 16}
!34 = !{!6, !12, i64 268}
!35 = !{!6, !7, i64 28}
!36 = !{!6, !7, i64 24}
!37 = !{!6, !7, i64 20}
!38 = !{!6, !7, i64 16}
!39 = !{!6, !7, i64 12}
!40 = !{!7, !7, i64 0}
!41 = distinct !{!41, !42}
!42 = !{!"llvm.loop.mustprogress"}
!43 = distinct !{!43, !42}


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