; LLVM IR from VeloxChem/VeloxChem :: src/dft_func (DensityGridCubic)

; 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.CDensityGridCubic = type { i32, i32, %class.CDensityGridData2D }
%class.CDensityGridData2D = type <{ %"class.std::vector", %"class.std::vector.0", %"class.std::vector.0", %"class.std::vector.0", i32, [4 x i8] }>
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.0" = type { %"struct.std::_Vector_base.1" }
%"struct.std::_Vector_base.1" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" = type { ptr, ptr, ptr }

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZNK17CDensityGridCubic21getNumberOfGridPointsEv(ptr noundef nonnull align 8 dereferenceable(112)) #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN17CDensityGridCubic2piEi(ptr noundef nonnull align 8 dereferenceable(112), i32 noundef) #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN17CDensityGridCubic3gamEi(ptr noundef nonnull align 8 dereferenceable(112), i32 noundef) #1 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN17CDensityGridCubic4gam2Ei(ptr noundef nonnull align 8 dereferenceable(112), i32 noundef) #1 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN17CDensityGridCubic21DensityProdForLDA_3PAERK12CDensityGridS2_i(ptr noundef nonnull align 8 dereferenceable(112) %0, ptr noundef nonnull align 8 dereferenceable(112) %1, ptr noundef nonnull align 8 dereferenceable(112) %2, i32 noundef %3) #1 align 2 {
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca ptr, align 8
  %28 = alloca ptr, align 8
  %29 = alloca ptr, align 8
  %30 = alloca ptr, align 8
  %31 = alloca ptr, align 8
  %32 = alloca ptr, align 8
  %33 = alloca ptr, align 8
  %34 = alloca ptr, align 8
  %35 = alloca ptr, align 8
  %36 = alloca ptr, align 8
  %37 = alloca ptr, align 8
  %38 = alloca ptr, align 8
  %39 = alloca ptr, align 8
  %40 = alloca ptr, align 8
  %41 = alloca ptr, align 8
  %42 = alloca ptr, align 8
  %43 = alloca ptr, align 8
  %44 = alloca ptr, align 8
  %45 = alloca ptr, align 8
  %46 = alloca i32, align 4
  store ptr %0, ptr %5, align 8, !tbaa !5
  store ptr %1, ptr %6, align 8, !tbaa !5
  store ptr %2, ptr %7, align 8, !tbaa !5
  store i32 %3, ptr %8, align 4, !tbaa !9
  %47 = load ptr, ptr %5, align 8
  %48 = getelementptr inbounds %class.CDensityGridCubic, ptr %47, i32 0, i32 0
  %49 = load i32, ptr %48, align 8, !tbaa !11
  %50 = icmp ne i32 %49, 0
  br i1 %50, label %51, label %52

51:                                               ; preds = %4
  br label %903

52:                                               ; preds = %4
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #5
  %53 = call noundef i32 @_ZNK17CDensityGridCubic21getNumberOfGridPointsEv(ptr noundef nonnull align 8 dereferenceable(112) %47)
  store i32 %53, ptr %9, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #5
  store i32 0, ptr %10, align 4, !tbaa !9
  br label %54

54:                                               ; preds = %899, %52
  %55 = load i32, ptr %10, align 4, !tbaa !9
  %56 = load i32, ptr %8, align 4, !tbaa !9
  %57 = sdiv i32 %56, 9
  %58 = icmp slt i32 %55, %57
  br i1 %58, label %60, label %59

59:                                               ; preds = %54
  store i32 2, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #5
  br label %902

60:                                               ; preds = %54
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #5
  %61 = load i32, ptr %10, align 4, !tbaa !9
  %62 = mul nsw i32 9, %61
  %63 = call noundef ptr @_ZN17CDensityGridCubic4gam2Ei(ptr noundef nonnull align 8 dereferenceable(112) %47, i32 noundef %62)
  store ptr %63, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #5
  %64 = load i32, ptr %10, align 4, !tbaa !9
  %65 = mul nsw i32 9, %64
  %66 = add nsw i32 %65, 1
  %67 = call noundef ptr @_ZN17CDensityGridCubic4gam2Ei(ptr noundef nonnull align 8 dereferenceable(112) %47, i32 noundef %66)
  store ptr %67, ptr %13, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #5
  %68 = load i32, ptr %10, align 4, !tbaa !9
  %69 = mul nsw i32 9, %68
  %70 = add nsw i32 %69, 2
  %71 = call noundef ptr @_ZN17CDensityGridCubic4gam2Ei(ptr noundef nonnull align 8 dereferenceable(112) %47, i32 noundef %70)
  store ptr %71, ptr %14, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #5
  %72 = load i32, ptr %10, align 4, !tbaa !9
  %73 = mul nsw i32 9, %72
  %74 = add nsw i32 %73, 3
  %75 = call noundef ptr @_ZN17CDensityGridCubic4gam2Ei(ptr noundef nonnull align 8 dereferenceable(112) %47, i32 noundef %74)
  store ptr %75, ptr %15, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #5
  %76 = load i32, ptr %10, align 4, !tbaa !9
  %77 = mul nsw i32 9, %76
  %78 = add nsw i32 %77, 4
  %79 = call noundef ptr @_ZN17CDensityGridCubic4gam2Ei(ptr noundef nonnull align 8 dereferenceable(112) %47, i32 noundef %78)
  store ptr %79, ptr %16, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #5
  %80 = load i32, ptr %10, align 4, !tbaa !9
  %81 = mul nsw i32 9, %80
  %82 = add nsw i32 %81, 5
  %83 = call noundef ptr @_ZN17CDensityGridCubic4gam2Ei(ptr noundef nonnull align 8 dereferenceable(112) %47, i32 noundef %82)
  store ptr %83, ptr %17, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #5
  %84 = load i32, ptr %10, align 4, !tbaa !9
  %85 = mul nsw i32 9, %84
  %86 = add nsw i32 %85, 6
  %87 = call noundef ptr @_ZN17CDensityGridCubic4gam2Ei(ptr noundef nonnull align 8 dereferenceable(112) %47, i32 noundef %86)
  store ptr %87, ptr %18, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #5
  %88 = load i32, ptr %10, align 4, !tbaa !9
  %89 = mul nsw i32 9, %88
  %90 = add nsw i32 %89, 7
  %91 = call noundef ptr @_ZN17CDensityGridCubic4gam2Ei(ptr noundef nonnull align 8 dereferenceable(112) %47, i32 noundef %90)
  store ptr %91, ptr %19, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #5
  %92 = load i32, ptr %10, align 4, !tbaa !9
  %93 = mul nsw i32 9, %92
  %94 = add nsw i32 %93, 8
  %95 = call noundef ptr @_ZN17CDensityGridCubic4gam2Ei(ptr noundef nonnull align 8 dereferenceable(112) %47, i32 noundef %94)
  store ptr %95, ptr %20, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #5
  %96 = load i32, ptr %10, align 4, !tbaa !9
  %97 = mul nsw i32 6, %96
  %98 = call noundef ptr @_ZN17CDensityGridCubic3gamEi(ptr noundef nonnull align 8 dereferenceable(112) %47, i32 noundef %97)
  store ptr %98, ptr %21, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #5
  %99 = load i32, ptr %10, align 4, !tbaa !9
  %100 = mul nsw i32 6, %99
  %101 = add nsw i32 %100, 1
  %102 = call noundef ptr @_ZN17CDensityGridCubic3gamEi(ptr noundef nonnull align 8 dereferenceable(112) %47, i32 noundef %101)
  store ptr %102, ptr %22, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #5
  %103 = load i32, ptr %10, align 4, !tbaa !9
  %104 = mul nsw i32 6, %103
  %105 = add nsw i32 %104, 2
  %106 = call noundef ptr @_ZN17CDensityGridCubic3gamEi(ptr noundef nonnull align 8 dereferenceable(112) %47, i32 noundef %105)
  store ptr %106, ptr %23, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #5
  %107 = load i32, ptr %10, align 4, !tbaa !9
  %108 = mul nsw i32 6, %107
  %109 = add nsw i32 %108, 3
  %110 = call noundef ptr @_ZN17CDensityGridCubic3gamEi(ptr noundef nonnull align 8 dereferenceable(112) %47, i32 noundef %109)
  store ptr %110, ptr %24, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #5
  %111 = load i32, ptr %10, align 4, !tbaa !9
  %112 = mul nsw i32 6, %111
  %113 = add nsw i32 %112, 4
  %114 = call noundef ptr @_ZN17CDensityGridCubic3gamEi(ptr noundef nonnull align 8 dereferenceable(112) %47, i32 noundef %113)
  store ptr %114, ptr %25, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #5
  %115 = load i32, ptr %10, align 4, !tbaa !9
  %116 = mul nsw i32 6, %115
  %117 = add nsw i32 %116, 5
  %118 = call noundef ptr @_ZN17CDensityGridCubic3gamEi(ptr noundef nonnull align 8 dereferenceable(112) %47, i32 noundef %117)
  store ptr %118, ptr %26, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #5
  %119 = load i32, ptr %10, align 4, !tbaa !9
  %120 = mul nsw i32 6, %119
  %121 = call noundef ptr @_ZN17CDensityGridCubic2piEi(ptr noundef nonnull align 8 dereferenceable(112) %47, i32 noundef %120)
  store ptr %121, ptr %27, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #5
  %122 = load i32, ptr %10, align 4, !tbaa !9
  %123 = mul nsw i32 6, %122
  %124 = add nsw i32 %123, 1
  %125 = call noundef ptr @_ZN17CDensityGridCubic2piEi(ptr noundef nonnull align 8 dereferenceable(112) %47, i32 noundef %124)
  store ptr %125, ptr %28, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #5
  %126 = load i32, ptr %10, align 4, !tbaa !9
  %127 = mul nsw i32 6, %126
  %128 = add nsw i32 %127, 2
  %129 = call noundef ptr @_ZN17CDensityGridCubic2piEi(ptr noundef nonnull align 8 dereferenceable(112) %47, i32 noundef %128)
  store ptr %129, ptr %29, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #5
  %130 = load i32, ptr %10, align 4, !tbaa !9
  %131 = mul nsw i32 6, %130
  %132 = add nsw i32 %131, 3
  %133 = call noundef ptr @_ZN17CDensityGridCubic2piEi(ptr noundef nonnull align 8 dereferenceable(112) %47, i32 noundef %132)
  store ptr %133, ptr %30, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #5
  %134 = load i32, ptr %10, align 4, !tbaa !9
  %135 = mul nsw i32 6, %134
  %136 = add nsw i32 %135, 4
  %137 = call noundef ptr @_ZN17CDensityGridCubic2piEi(ptr noundef nonnull align 8 dereferenceable(112) %47, i32 noundef %136)
  store ptr %137, ptr %31, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #5
  %138 = load i32, ptr %10, align 4, !tbaa !9
  %139 = mul nsw i32 6, %138
  %140 = add nsw i32 %139, 5
  %141 = call noundef ptr @_ZN17CDensityGridCubic2piEi(ptr noundef nonnull align 8 dereferenceable(112) %47, i32 noundef %140)
  store ptr %141, ptr %32, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #5
  %142 = load ptr, ptr %6, align 8, !tbaa !5
  %143 = load i32, ptr %10, align 4, !tbaa !9
  %144 = mul nsw i32 4, %143
  %145 = call noundef ptr @_ZNK12CDensityGrid12alphaDensityEi(ptr noundef nonnull align 8 dereferenceable(112) %142, i32 noundef %144)
  store ptr %145, ptr %33, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #5
  %146 = load ptr, ptr %6, align 8, !tbaa !5
  %147 = load i32, ptr %10, align 4, !tbaa !9
  %148 = mul nsw i32 4, %147
  %149 = add nsw i32 %148, 1
  %150 = call noundef ptr @_ZNK12CDensityGrid12alphaDensityEi(ptr noundef nonnull align 8 dereferenceable(112) %146, i32 noundef %149)
  store ptr %150, ptr %34, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #5
  %151 = load ptr, ptr %6, align 8, !tbaa !5
  %152 = load i32, ptr %10, align 4, !tbaa !9
  %153 = mul nsw i32 4, %152
  %154 = add nsw i32 %153, 2
  %155 = call noundef ptr @_ZNK12CDensityGrid12alphaDensityEi(ptr noundef nonnull align 8 dereferenceable(112) %151, i32 noundef %154)
  store ptr %155, ptr %35, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #5
  %156 = load ptr, ptr %6, align 8, !tbaa !5
  %157 = load i32, ptr %10, align 4, !tbaa !9
  %158 = mul nsw i32 4, %157
  %159 = add nsw i32 %158, 3
  %160 = call noundef ptr @_ZNK12CDensityGrid12alphaDensityEi(ptr noundef nonnull align 8 dereferenceable(112) %156, i32 noundef %159)
  store ptr %160, ptr %36, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #5
  %161 = load ptr, ptr %7, align 8, !tbaa !5
  %162 = load i32, ptr %10, align 4, !tbaa !9
  %163 = mul nsw i32 9, %162
  %164 = call noundef ptr @_ZNK12CDensityGrid12alphaDensityEi(ptr noundef nonnull align 8 dereferenceable(112) %161, i32 noundef %163)
  store ptr %164, ptr %37, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #5
  %165 = load ptr, ptr %7, align 8, !tbaa !5
  %166 = load i32, ptr %10, align 4, !tbaa !9
  %167 = mul nsw i32 9, %166
  %168 = add nsw i32 %167, 1
  %169 = call noundef ptr @_ZNK12CDensityGrid12alphaDensityEi(ptr noundef nonnull align 8 dereferenceable(112) %165, i32 noundef %168)
  store ptr %169, ptr %38, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #5
  %170 = load ptr, ptr %7, align 8, !tbaa !5
  %171 = load i32, ptr %10, align 4, !tbaa !9
  %172 = mul nsw i32 9, %171
  %173 = add nsw i32 %172, 2
  %174 = call noundef ptr @_ZNK12CDensityGrid12alphaDensityEi(ptr noundef nonnull align 8 dereferenceable(112) %170, i32 noundef %173)
  store ptr %174, ptr %39, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #5
  %175 = load ptr, ptr %7, align 8, !tbaa !5
  %176 = load i32, ptr %10, align 4, !tbaa !9
  %177 = mul nsw i32 9, %176
  %178 = add nsw i32 %177, 3
  %179 = call noundef ptr @_ZNK12CDensityGrid12alphaDensityEi(ptr noundef nonnull align 8 dereferenceable(112) %175, i32 noundef %178)
  store ptr %179, ptr %40, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #5
  %180 = load ptr, ptr %7, align 8, !tbaa !5
  %181 = load i32, ptr %10, align 4, !tbaa !9
  %182 = mul nsw i32 9, %181
  %183 = add nsw i32 %182, 4
  %184 = call noundef ptr @_ZNK12CDensityGrid12alphaDensityEi(ptr noundef nonnull align 8 dereferenceable(112) %180, i32 noundef %183)
  store ptr %184, ptr %41, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #5
  %185 = load ptr, ptr %7, align 8, !tbaa !5
  %186 = load i32, ptr %10, align 4, !tbaa !9
  %187 = mul nsw i32 9, %186
  %188 = add nsw i32 %187, 5
  %189 = call noundef ptr @_ZNK12CDensityGrid12alphaDensityEi(ptr noundef nonnull align 8 dereferenceable(112) %185, i32 noundef %188)
  store ptr %189, ptr %42, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #5
  %190 = load ptr, ptr %7, align 8, !tbaa !5
  %191 = load i32, ptr %10, align 4, !tbaa !9
  %192 = mul nsw i32 9, %191
  %193 = add nsw i32 %192, 6
  %194 = call noundef ptr @_ZNK12CDensityGrid12alphaDensityEi(ptr noundef nonnull align 8 dereferenceable(112) %190, i32 noundef %193)
  store ptr %194, ptr %43, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #5
  %195 = load ptr, ptr %7, align 8, !tbaa !5
  %196 = load i32, ptr %10, align 4, !tbaa !9
  %197 = mul nsw i32 9, %196
  %198 = add nsw i32 %197, 7
  %199 = call noundef ptr @_ZNK12CDensityGrid12alphaDensityEi(ptr noundef nonnull align 8 dereferenceable(112) %195, i32 noundef %198)
  store ptr %199, ptr %44, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #5
  %200 = load ptr, ptr %7, align 8, !tbaa !5
  %201 = load i32, ptr %10, align 4, !tbaa !9
  %202 = mul nsw i32 9, %201
  %203 = add nsw i32 %202, 8
  %204 = call noundef ptr @_ZNK12CDensityGrid12alphaDensityEi(ptr noundef nonnull align 8 dereferenceable(112) %200, i32 noundef %203)
  store ptr %204, ptr %45, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #5
  store i32 0, ptr %46, align 4, !tbaa !9
  br label %205

205:                                              ; preds = %895, %60
  %206 = load i32, ptr %46, align 4, !tbaa !9
  %207 = load i32, ptr %9, align 4, !tbaa !9
  %208 = icmp slt i32 %206, %207
  br i1 %208, label %210, label %209

209:                                              ; preds = %205
  store i32 5, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #5
  br label %898

210:                                              ; preds = %205
  %211 = load ptr, ptr %33, align 8, !tbaa !5
  %212 = load i32, ptr %46, align 4, !tbaa !9
  %213 = sext i32 %212 to i64
  %214 = getelementptr inbounds double, ptr %211, i64 %213
  %215 = load double, ptr %214, align 8, !tbaa !23
  %216 = load ptr, ptr %36, align 8, !tbaa !5
  %217 = load i32, ptr %46, align 4, !tbaa !9
  %218 = sext i32 %217 to i64
  %219 = getelementptr inbounds double, ptr %216, i64 %218
  %220 = load double, ptr %219, align 8, !tbaa !23
  %221 = call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %47, double noundef %215, double noundef 0.000000e+00, double noundef %220, double noundef 0.000000e+00)
  %222 = fmul double 2.000000e+00, %221
  %223 = load ptr, ptr %12, align 8, !tbaa !5
  %224 = load i32, ptr %46, align 4, !tbaa !9
  %225 = sext i32 %224 to i64
  %226 = getelementptr inbounds double, ptr %223, i64 %225
  store double %222, ptr %226, align 8, !tbaa !23
  %227 = load ptr, ptr %34, align 8, !tbaa !5
  %228 = load i32, ptr %46, align 4, !tbaa !9
  %229 = sext i32 %228 to i64
  %230 = getelementptr inbounds double, ptr %227, i64 %229
  %231 = load double, ptr %230, align 8, !tbaa !23
  %232 = load ptr, ptr %36, align 8, !tbaa !5
  %233 = load i32, ptr %46, align 4, !tbaa !9
  %234 = sext i32 %233 to i64
  %235 = getelementptr inbounds double, ptr %232, i64 %234
  %236 = load double, ptr %235, align 8, !tbaa !23
  %237 = call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %47, double noundef %231, double noundef 0.000000e+00, double noundef %236, double noundef 0.000000e+00)
  %238 = fmul double 2.000000e+00, %237
  %239 = load ptr, ptr %13, align 8, !tbaa !5
  %240 = load i32, ptr %46, align 4, !tbaa !9
  %241 = sext i32 %240 to i64
  %242 = getelementptr inbounds double, ptr %239, i64 %241
  store double %238, ptr %242, align 8, !tbaa !23
  %243 = load ptr, ptr %35, align 8, !tbaa !5
  %244 = load i32, ptr %46, align 4, !tbaa !9
  %245 = sext i32 %244 to i64
  %246 = getelementptr inbounds double, ptr %243, i64 %245
  %247 = load double, ptr %246, align 8, !tbaa !23
  %248 = load ptr, ptr %36, align 8, !tbaa !5
  %249 = load i32, ptr %46, align 4, !tbaa !9
  %250 = sext i32 %249 to i64
  %251 = getelementptr inbounds double, ptr %248, i64 %250
  %252 = load double, ptr %251, align 8, !tbaa !23
  %253 = call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %47, double noundef %247, double noundef 0.000000e+00, double noundef %252, double noundef 0.000000e+00)
  %254 = fmul double 2.000000e+00, %253
  %255 = load ptr, ptr %14, align 8, !tbaa !5
  %256 = load i32, ptr %46, align 4, !tbaa !9
  %257 = sext i32 %256 to i64
  %258 = getelementptr inbounds double, ptr %255, i64 %257
  store double %254, ptr %258, align 8, !tbaa !23
  %259 = load ptr, ptr %33, align 8, !tbaa !5
  %260 = load i32, ptr %46, align 4, !tbaa !9
  %261 = sext i32 %260 to i64
  %262 = getelementptr inbounds double, ptr %259, i64 %261
  %263 = load double, ptr %262, align 8, !tbaa !23
  %264 = load ptr, ptr %33, align 8, !tbaa !5
  %265 = load i32, ptr %46, align 4, !tbaa !9
  %266 = sext i32 %265 to i64
  %267 = getelementptr inbounds double, ptr %264, i64 %266
  %268 = load double, ptr %267, align 8, !tbaa !23
  %269 = call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %47, double noundef %263, double noundef 0.000000e+00, double noundef %268, double noundef 0.000000e+00)
  %270 = fmul double 2.000000e+00, %269
  %271 = load ptr, ptr %15, align 8, !tbaa !5
  %272 = load i32, ptr %46, align 4, !tbaa !9
  %273 = sext i32 %272 to i64
  %274 = getelementptr inbounds double, ptr %271, i64 %273
  store double %270, ptr %274, align 8, !tbaa !23
  %275 = load ptr, ptr %34, align 8, !tbaa !5
  %276 = load i32, ptr %46, align 4, !tbaa !9
  %277 = sext i32 %276 to i64
  %278 = getelementptr inbounds double, ptr %275, i64 %277
  %279 = load double, ptr %278, align 8, !tbaa !23
  %280 = load ptr, ptr %34, align 8, !tbaa !5
  %281 = load i32, ptr %46, align 4, !tbaa !9
  %282 = sext i32 %281 to i64
  %283 = getelementptr inbounds double, ptr %280, i64 %282
  %284 = load double, ptr %283, align 8, !tbaa !23
  %285 = call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %47, double noundef %279, double noundef 0.000000e+00, double noundef %284, double noundef 0.000000e+00)
  %286 = fmul double 2.000000e+00, %285
  %287 = load ptr, ptr %16, align 8, !tbaa !5
  %288 = load i32, ptr %46, align 4, !tbaa !9
  %289 = sext i32 %288 to i64
  %290 = getelementptr inbounds double, ptr %287, i64 %289
  store double %286, ptr %290, align 8, !tbaa !23
  %291 = load ptr, ptr %35, align 8, !tbaa !5
  %292 = load i32, ptr %46, align 4, !tbaa !9
  %293 = sext i32 %292 to i64
  %294 = getelementptr inbounds double, ptr %291, i64 %293
  %295 = load double, ptr %294, align 8, !tbaa !23
  %296 = load ptr, ptr %35, align 8, !tbaa !5
  %297 = load i32, ptr %46, align 4, !tbaa !9
  %298 = sext i32 %297 to i64
  %299 = getelementptr inbounds double, ptr %296, i64 %298
  %300 = load double, ptr %299, align 8, !tbaa !23
  %301 = call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %47, double noundef %295, double noundef 0.000000e+00, double noundef %300, double noundef 0.000000e+00)
  %302 = fmul double 2.000000e+00, %301
  %303 = load ptr, ptr %17, align 8, !tbaa !5
  %304 = load i32, ptr %46, align 4, !tbaa !9
  %305 = sext i32 %304 to i64
  %306 = getelementptr inbounds double, ptr %303, i64 %305
  store double %302, ptr %306, align 8, !tbaa !23
  %307 = load ptr, ptr %33, align 8, !tbaa !5
  %308 = load i32, ptr %46, align 4, !tbaa !9
  %309 = sext i32 %308 to i64
  %310 = getelementptr inbounds double, ptr %307, i64 %309
  %311 = load double, ptr %310, align 8, !tbaa !23
  %312 = load ptr, ptr %34, align 8, !tbaa !5
  %313 = load i32, ptr %46, align 4, !tbaa !9
  %314 = sext i32 %313 to i64
  %315 = getelementptr inbounds double, ptr %312, i64 %314
  %316 = load double, ptr %315, align 8, !tbaa !23
  %317 = call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %47, double noundef %311, double noundef 0.000000e+00, double noundef %316, double noundef 0.000000e+00)
  %318 = fmul double 2.000000e+00, %317
  %319 = load ptr, ptr %18, align 8, !tbaa !5
  %320 = load i32, ptr %46, align 4, !tbaa !9
  %321 = sext i32 %320 to i64
  %322 = getelementptr inbounds double, ptr %319, i64 %321
  store double %318, ptr %322, align 8, !tbaa !23
  %323 = load ptr, ptr %33, align 8, !tbaa !5
  %324 = load i32, ptr %46, align 4, !tbaa !9
  %325 = sext i32 %324 to i64
  %326 = getelementptr inbounds double, ptr %323, i64 %325
  %327 = load double, ptr %326, align 8, !tbaa !23
  %328 = load ptr, ptr %35, align 8, !tbaa !5
  %329 = load i32, ptr %46, align 4, !tbaa !9
  %330 = sext i32 %329 to i64
  %331 = getelementptr inbounds double, ptr %328, i64 %330
  %332 = load double, ptr %331, align 8, !tbaa !23
  %333 = call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %47, double noundef %327, double noundef 0.000000e+00, double noundef %332, double noundef 0.000000e+00)
  %334 = fmul double 2.000000e+00, %333
  %335 = load ptr, ptr %19, align 8, !tbaa !5
  %336 = load i32, ptr %46, align 4, !tbaa !9
  %337 = sext i32 %336 to i64
  %338 = getelementptr inbounds double, ptr %335, i64 %337
  store double %334, ptr %338, align 8, !tbaa !23
  %339 = load ptr, ptr %34, align 8, !tbaa !5
  %340 = load i32, ptr %46, align 4, !tbaa !9
  %341 = sext i32 %340 to i64
  %342 = getelementptr inbounds double, ptr %339, i64 %341
  %343 = load double, ptr %342, align 8, !tbaa !23
  %344 = load ptr, ptr %35, align 8, !tbaa !5
  %345 = load i32, ptr %46, align 4, !tbaa !9
  %346 = sext i32 %345 to i64
  %347 = getelementptr inbounds double, ptr %344, i64 %346
  %348 = load double, ptr %347, align 8, !tbaa !23
  %349 = call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %47, double noundef %343, double noundef 0.000000e+00, double noundef %348, double noundef 0.000000e+00)
  %350 = fmul double 2.000000e+00, %349
  %351 = load ptr, ptr %20, align 8, !tbaa !5
  %352 = load i32, ptr %46, align 4, !tbaa !9
  %353 = sext i32 %352 to i64
  %354 = getelementptr inbounds double, ptr %351, i64 %353
  store double %350, ptr %354, align 8, !tbaa !23
  %355 = load ptr, ptr %36, align 8, !tbaa !5
  %356 = load i32, ptr %46, align 4, !tbaa !9
  %357 = sext i32 %356 to i64
  %358 = getelementptr inbounds double, ptr %355, i64 %357
  %359 = load double, ptr %358, align 8, !tbaa !23
  %360 = load ptr, ptr %40, align 8, !tbaa !5
  %361 = load i32, ptr %46, align 4, !tbaa !9
  %362 = sext i32 %361 to i64
  %363 = getelementptr inbounds double, ptr %360, i64 %362
  %364 = load double, ptr %363, align 8, !tbaa !23
  %365 = call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %47, double noundef %359, double noundef 0.000000e+00, double noundef %364, double noundef 0.000000e+00)
  %366 = load ptr, ptr %21, align 8, !tbaa !5
  %367 = load i32, ptr %46, align 4, !tbaa !9
  %368 = sext i32 %367 to i64
  %369 = getelementptr inbounds double, ptr %366, i64 %368
  %370 = load double, ptr %369, align 8, !tbaa !23
  %371 = call double @llvm.fmuladd.f64(double 3.000000e+00, double %365, double %370)
  store double %371, ptr %369, align 8, !tbaa !23
  %372 = load ptr, ptr %33, align 8, !tbaa !5
  %373 = load i32, ptr %46, align 4, !tbaa !9
  %374 = sext i32 %373 to i64
  %375 = getelementptr inbounds double, ptr %372, i64 %374
  %376 = load double, ptr %375, align 8, !tbaa !23
  %377 = load ptr, ptr %37, align 8, !tbaa !5
  %378 = load i32, ptr %46, align 4, !tbaa !9
  %379 = sext i32 %378 to i64
  %380 = getelementptr inbounds double, ptr %377, i64 %379
  %381 = load double, ptr %380, align 8, !tbaa !23
  %382 = call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %47, double noundef %376, double noundef 0.000000e+00, double noundef %381, double noundef 0.000000e+00)
  %383 = load ptr, ptr %21, align 8, !tbaa !5
  %384 = load i32, ptr %46, align 4, !tbaa !9
  %385 = sext i32 %384 to i64
  %386 = getelementptr inbounds double, ptr %383, i64 %385
  %387 = load double, ptr %386, align 8, !tbaa !23
  %388 = call double @llvm.fmuladd.f64(double 3.000000e+00, double %382, double %387)
  store double %388, ptr %386, align 8, !tbaa !23
  %389 = load ptr, ptr %33, align 8, !tbaa !5
  %390 = load i32, ptr %46, align 4, !tbaa !9
  %391 = sext i32 %390 to i64
  %392 = getelementptr inbounds double, ptr %389, i64 %391
  %393 = load double, ptr %392, align 8, !tbaa !23
  %394 = load ptr, ptr %37, align 8, !tbaa !5
  %395 = load i32, ptr %46, align 4, !tbaa !9
  %396 = sext i32 %395 to i64
  %397 = getelementptr inbounds double, ptr %394, i64 %396
  %398 = load double, ptr %397, align 8, !tbaa !23
  %399 = call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %47, double noundef %393, double noundef 0.000000e+00, double noundef %398, double noundef 0.000000e+00)
  %400 = load ptr, ptr %21, align 8, !tbaa !5
  %401 = load i32, ptr %46, align 4, !tbaa !9
  %402 = sext i32 %401 to i64
  %403 = getelementptr inbounds double, ptr %400, i64 %402
  %404 = load double, ptr %403, align 8, !tbaa !23
  %405 = call double @llvm.fmuladd.f64(double 3.000000e+00, double %399, double %404)
  store double %405, ptr %403, align 8, !tbaa !23
  %406 = load ptr, ptr %36, align 8, !tbaa !5
  %407 = load i32, ptr %46, align 4, !tbaa !9
  %408 = sext i32 %407 to i64
  %409 = getelementptr inbounds double, ptr %406, i64 %408
  %410 = load double, ptr %409, align 8, !tbaa !23
  %411 = load ptr, ptr %41, align 8, !tbaa !5
  %412 = load i32, ptr %46, align 4, !tbaa !9
  %413 = sext i32 %412 to i64
  %414 = getelementptr inbounds double, ptr %411, i64 %413
  %415 = load double, ptr %414, align 8, !tbaa !23
  %416 = call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %47, double noundef %410, double noundef 0.000000e+00, double noundef %415, double noundef 0.000000e+00)
  %417 = load ptr, ptr %22, align 8, !tbaa !5
  %418 = load i32, ptr %46, align 4, !tbaa !9
  %419 = sext i32 %418 to i64
  %420 = getelementptr inbounds double, ptr %417, i64 %419
  %421 = load double, ptr %420, align 8, !tbaa !23
  %422 = call double @llvm.fmuladd.f64(double 3.000000e+00, double %416, double %421)
  store double %422, ptr %420, align 8, !tbaa !23
  %423 = load ptr, ptr %34, align 8, !tbaa !5
  %424 = load i32, ptr %46, align 4, !tbaa !9
  %425 = sext i32 %424 to i64
  %426 = getelementptr inbounds double, ptr %423, i64 %425
  %427 = load double, ptr %426, align 8, !tbaa !23
  %428 = load ptr, ptr %38, align 8, !tbaa !5
  %429 = load i32, ptr %46, align 4, !tbaa !9
  %430 = sext i32 %429 to i64
  %431 = getelementptr inbounds double, ptr %428, i64 %430
  %432 = load double, ptr %431, align 8, !tbaa !23
  %433 = call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %47, double noundef %427, double noundef 0.000000e+00, double noundef %432, double noundef 0.000000e+00)
  %434 = load ptr, ptr %22, align 8, !tbaa !5
  %435 = load i32, ptr %46, align 4, !tbaa !9
  %436 = sext i32 %435 to i64
  %437 = getelementptr inbounds double, ptr %434, i64 %436
  %438 = load double, ptr %437, align 8, !tbaa !23
  %439 = call double @llvm.fmuladd.f64(double 3.000000e+00, double %433, double %438)
  store double %439, ptr %437, align 8, !tbaa !23
  %440 = load ptr, ptr %34, align 8, !tbaa !5
  %441 = load i32, ptr %46, align 4, !tbaa !9
  %442 = sext i32 %441 to i64
  %443 = getelementptr inbounds double, ptr %440, i64 %442
  %444 = load double, ptr %443, align 8, !tbaa !23
  %445 = load ptr, ptr %38, align 8, !tbaa !5
  %446 = load i32, ptr %46, align 4, !tbaa !9
  %447 = sext i32 %446 to i64
  %448 = getelementptr inbounds double, ptr %445, i64 %447
  %449 = load double, ptr %448, align 8, !tbaa !23
  %450 = call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %47, double noundef %444, double noundef 0.000000e+00, double noundef %449, double noundef 0.000000e+00)
  %451 = load ptr, ptr %22, align 8, !tbaa !5
  %452 = load i32, ptr %46, align 4, !tbaa !9
  %453 = sext i32 %452 to i64
  %454 = getelementptr inbounds double, ptr %451, i64 %453
  %455 = load double, ptr %454, align 8, !tbaa !23
  %456 = call double @llvm.fmuladd.f64(double 3.000000e+00, double %450, double %455)
  store double %456, ptr %454, align 8, !tbaa !23
  %457 = load ptr, ptr %36, align 8, !tbaa !5
  %458 = load i32, ptr %46, align 4, !tbaa !9
  %459 = sext i32 %458 to i64
  %460 = getelementptr inbounds double, ptr %457, i64 %459
  %461 = load double, ptr %460, align 8, !tbaa !23
  %462 = load ptr, ptr %42, align 8, !tbaa !5
  %463 = load i32, ptr %46, align 4, !tbaa !9
  %464 = sext i32 %463 to i64
  %465 = getelementptr inbounds double, ptr %462, i64 %464
  %466 = load double, ptr %465, align 8, !tbaa !23
  %467 = call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %47, double noundef %461, double noundef 0.000000e+00, double noundef %466, double noundef 0.000000e+00)
  %468 = load ptr, ptr %23, align 8, !tbaa !5
  %469 = load i32, ptr %46, align 4, !tbaa !9
  %470 = sext i32 %469 to i64
  %471 = getelementptr inbounds double, ptr %468, i64 %470
  %472 = load double, ptr %471, align 8, !tbaa !23
  %473 = call double @llvm.fmuladd.f64(double 3.000000e+00, double %467, double %472)
  store double %473, ptr %471, align 8, !tbaa !23
  %474 = load ptr, ptr %35, align 8, !tbaa !5
  %475 = load i32, ptr %46, align 4, !tbaa !9
  %476 = sext i32 %475 to i64
  %477 = getelementptr inbounds double, ptr %474, i64 %476
  %478 = load double, ptr %477, align 8, !tbaa !23
  %479 = load ptr, ptr %39, align 8, !tbaa !5
  %480 = load i32, ptr %46, align 4, !tbaa !9
  %481 = sext i32 %480 to i64
  %482 = getelementptr inbounds double, ptr %479, i64 %481
  %483 = load double, ptr %482, align 8, !tbaa !23
  %484 = call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %47, double noundef %478, double noundef 0.000000e+00, double noundef %483, double noundef 0.000000e+00)
  %485 = load ptr, ptr %23, align 8, !tbaa !5
  %486 = load i32, ptr %46, align 4, !tbaa !9
  %487 = sext i32 %486 to i64
  %488 = getelementptr inbounds double, ptr %485, i64 %487
  %489 = load double, ptr %488, align 8, !tbaa !23
  %490 = call double @llvm.fmuladd.f64(double 3.000000e+00, double %484, double %489)
  store double %490, ptr %488, align 8, !tbaa !23
  %491 = load ptr, ptr %35, align 8, !tbaa !5
  %492 = load i32, ptr %46, align 4, !tbaa !9
  %493 = sext i32 %492 to i64
  %494 = getelementptr inbounds double, ptr %491, i64 %493
  %495 = load double, ptr %494, align 8, !tbaa !23
  %496 = load ptr, ptr %39, align 8, !tbaa !5
  %497 = load i32, ptr %46, align 4, !tbaa !9
  %498 = sext i32 %497 to i64
  %499 = getelementptr inbounds double, ptr %496, i64 %498
  %500 = load double, ptr %499, align 8, !tbaa !23
  %501 = call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %47, double noundef %495, double noundef 0.000000e+00, double noundef %500, double noundef 0.000000e+00)
  %502 = load ptr, ptr %23, align 8, !tbaa !5
  %503 = load i32, ptr %46, align 4, !tbaa !9
  %504 = sext i32 %503 to i64
  %505 = getelementptr inbounds double, ptr %502, i64 %504
  %506 = load double, ptr %505, align 8, !tbaa !23
  %507 = call double @llvm.fmuladd.f64(double 3.000000e+00, double %501, double %506)
  store double %507, ptr %505, align 8, !tbaa !23
  %508 = load ptr, ptr %36, align 8, !tbaa !5
  %509 = load i32, ptr %46, align 4, !tbaa !9
  %510 = sext i32 %509 to i64
  %511 = getelementptr inbounds double, ptr %508, i64 %510
  %512 = load double, ptr %511, align 8, !tbaa !23
  %513 = load ptr, ptr %43, align 8, !tbaa !5
  %514 = load i32, ptr %46, align 4, !tbaa !9
  %515 = sext i32 %514 to i64
  %516 = getelementptr inbounds double, ptr %513, i64 %515
  %517 = load double, ptr %516, align 8, !tbaa !23
  %518 = call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %47, double noundef %512, double noundef 0.000000e+00, double noundef %517, double noundef 0.000000e+00)
  %519 = load ptr, ptr %24, align 8, !tbaa !5
  %520 = load i32, ptr %46, align 4, !tbaa !9
  %521 = sext i32 %520 to i64
  %522 = getelementptr inbounds double, ptr %519, i64 %521
  %523 = load double, ptr %522, align 8, !tbaa !23
  %524 = call double @llvm.fmuladd.f64(double 3.000000e+00, double %518, double %523)
  store double %524, ptr %522, align 8, !tbaa !23
  %525 = load ptr, ptr %33, align 8, !tbaa !5
  %526 = load i32, ptr %46, align 4, !tbaa !9
  %527 = sext i32 %526 to i64
  %528 = getelementptr inbounds double, ptr %525, i64 %527
  %529 = load double, ptr %528, align 8, !tbaa !23
  %530 = load ptr, ptr %38, align 8, !tbaa !5
  %531 = load i32, ptr %46, align 4, !tbaa !9
  %532 = sext i32 %531 to i64
  %533 = getelementptr inbounds double, ptr %530, i64 %532
  %534 = load double, ptr %533, align 8, !tbaa !23
  %535 = call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %47, double noundef %529, double noundef 0.000000e+00, double noundef %534, double noundef 0.000000e+00)
  %536 = load ptr, ptr %24, align 8, !tbaa !5
  %537 = load i32, ptr %46, align 4, !tbaa !9
  %538 = sext i32 %537 to i64
  %539 = getelementptr inbounds double, ptr %536, i64 %538
  %540 = load double, ptr %539, align 8, !tbaa !23
  %541 = call double @llvm.fmuladd.f64(double 3.000000e+00, double %535, double %540)
  store double %541, ptr %539, align 8, !tbaa !23
  %542 = load ptr, ptr %34, align 8, !tbaa !5
  %543 = load i32, ptr %46, align 4, !tbaa !9
  %544 = sext i32 %543 to i64
  %545 = getelementptr inbounds double, ptr %542, i64 %544
  %546 = load double, ptr %545, align 8, !tbaa !23
  %547 = load ptr, ptr %37, align 8, !tbaa !5
  %548 = load i32, ptr %46, align 4, !tbaa !9
  %549 = sext i32 %548 to i64
  %550 = getelementptr inbounds double, ptr %547, i64 %549
  %551 = load double, ptr %550, align 8, !tbaa !23
  %552 = call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %47, double noundef %546, double noundef 0.000000e+00, double noundef %551, double noundef 0.000000e+00)
  %553 = load ptr, ptr %24, align 8, !tbaa !5
  %554 = load i32, ptr %46, align 4, !tbaa !9
  %555 = sext i32 %554 to i64
  %556 = getelementptr inbounds double, ptr %553, i64 %555
  %557 = load double, ptr %556, align 8, !tbaa !23
  %558 = call double @llvm.fmuladd.f64(double 3.000000e+00, double %552, double %557)
  store double %558, ptr %556, align 8, !tbaa !23
  %559 = load ptr, ptr %36, align 8, !tbaa !5
  %560 = load i32, ptr %46, align 4, !tbaa !9
  %561 = sext i32 %560 to i64
  %562 = getelementptr inbounds double, ptr %559, i64 %561
  %563 = load double, ptr %562, align 8, !tbaa !23
  %564 = load ptr, ptr %44, align 8, !tbaa !5
  %565 = load i32, ptr %46, align 4, !tbaa !9
  %566 = sext i32 %565 to i64
  %567 = getelementptr inbounds double, ptr %564, i64 %566
  %568 = load double, ptr %567, align 8, !tbaa !23
  %569 = call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %47, double noundef %563, double noundef 0.000000e+00, double noundef %568, double noundef 0.000000e+00)
  %570 = load ptr, ptr %25, align 8, !tbaa !5
  %571 = load i32, ptr %46, align 4, !tbaa !9
  %572 = sext i32 %571 to i64
  %573 = getelementptr inbounds double, ptr %570, i64 %572
  %574 = load double, ptr %573, align 8, !tbaa !23
  %575 = call double @llvm.fmuladd.f64(double 3.000000e+00, double %569, double %574)
  store double %575, ptr %573, align 8, !tbaa !23
  %576 = load ptr, ptr %33, align 8, !tbaa !5
  %577 = load i32, ptr %46, align 4, !tbaa !9
  %578 = sext i32 %577 to i64
  %579 = getelementptr inbounds double, ptr %576, i64 %578
  %580 = load double, ptr %579, align 8, !tbaa !23
  %581 = load ptr, ptr %39, align 8, !tbaa !5
  %582 = load i32, ptr %46, align 4, !tbaa !9
  %583 = sext i32 %582 to i64
  %584 = getelementptr inbounds double, ptr %581, i64 %583
  %585 = load double, ptr %584, align 8, !tbaa !23
  %586 = call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %47, double noundef %580, double noundef 0.000000e+00, double noundef %585, double noundef 0.000000e+00)
  %587 = load ptr, ptr %25, align 8, !tbaa !5
  %588 = load i32, ptr %46, align 4, !tbaa !9
  %589 = sext i32 %588 to i64
  %590 = getelementptr inbounds double, ptr %587, i64 %589
  %591 = load double, ptr %590, align 8, !tbaa !23
  %592 = call double @llvm.fmuladd.f64(double 3.000000e+00, double %586, double %591)
  store double %592, ptr %590, align 8, !tbaa !23
  %593 = load ptr, ptr %35, align 8, !tbaa !5
  %594 = load i32, ptr %46, align 4, !tbaa !9
  %595 = sext i32 %594 to i64
  %596 = getelementptr inbounds double, ptr %593, i64 %595
  %597 = load double, ptr %596, align 8, !tbaa !23
  %598 = load ptr, ptr %37, align 8, !tbaa !5
  %599 = load i32, ptr %46, align 4, !tbaa !9
  %600 = sext i32 %599 to i64
  %601 = getelementptr inbounds double, ptr %598, i64 %600
  %602 = load double, ptr %601, align 8, !tbaa !23
  %603 = call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %47, double noundef %597, double noundef 0.000000e+00, double noundef %602, double noundef 0.000000e+00)
  %604 = load ptr, ptr %25, align 8, !tbaa !5
  %605 = load i32, ptr %46, align 4, !tbaa !9
  %606 = sext i32 %605 to i64
  %607 = getelementptr inbounds double, ptr %604, i64 %606
  %608 = load double, ptr %607, align 8, !tbaa !23
  %609 = call double @llvm.fmuladd.f64(double 3.000000e+00, double %603, double %608)
  store double %609, ptr %607, align 8, !tbaa !23
  %610 = load ptr, ptr %36, align 8, !tbaa !5
  %611 = load i32, ptr %46, align 4, !tbaa !9
  %612 = sext i32 %611 to i64
  %613 = getelementptr inbounds double, ptr %610, i64 %612
  %614 = load double, ptr %613, align 8, !tbaa !23
  %615 = load ptr, ptr %45, align 8, !tbaa !5
  %616 = load i32, ptr %46, align 4, !tbaa !9
  %617 = sext i32 %616 to i64
  %618 = getelementptr inbounds double, ptr %615, i64 %617
  %619 = load double, ptr %618, align 8, !tbaa !23
  %620 = call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %47, double noundef %614, double noundef 0.000000e+00, double noundef %619, double noundef 0.000000e+00)
  %621 = load ptr, ptr %26, align 8, !tbaa !5
  %622 = load i32, ptr %46, align 4, !tbaa !9
  %623 = sext i32 %622 to i64
  %624 = getelementptr inbounds double, ptr %621, i64 %623
  %625 = load double, ptr %624, align 8, !tbaa !23
  %626 = call double @llvm.fmuladd.f64(double 3.000000e+00, double %620, double %625)
  store double %626, ptr %624, align 8, !tbaa !23
  %627 = load ptr, ptr %34, align 8, !tbaa !5
  %628 = load i32, ptr %46, align 4, !tbaa !9
  %629 = sext i32 %628 to i64
  %630 = getelementptr inbounds double, ptr %627, i64 %629
  %631 = load double, ptr %630, align 8, !tbaa !23
  %632 = load ptr, ptr %39, align 8, !tbaa !5
  %633 = load i32, ptr %46, align 4, !tbaa !9
  %634 = sext i32 %633 to i64
  %635 = getelementptr inbounds double, ptr %632, i64 %634
  %636 = load double, ptr %635, align 8, !tbaa !23
  %637 = call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %47, double noundef %631, double noundef 0.000000e+00, double noundef %636, double noundef 0.000000e+00)
  %638 = load ptr, ptr %26, align 8, !tbaa !5
  %639 = load i32, ptr %46, align 4, !tbaa !9
  %640 = sext i32 %639 to i64
  %641 = getelementptr inbounds double, ptr %638, i64 %640
  %642 = load double, ptr %641, align 8, !tbaa !23
  %643 = call double @llvm.fmuladd.f64(double 3.000000e+00, double %637, double %642)
  store double %643, ptr %641, align 8, !tbaa !23
  %644 = load ptr, ptr %35, align 8, !tbaa !5
  %645 = load i32, ptr %46, align 4, !tbaa !9
  %646 = sext i32 %645 to i64
  %647 = getelementptr inbounds double, ptr %644, i64 %646
  %648 = load double, ptr %647, align 8, !tbaa !23
  %649 = load ptr, ptr %38, align 8, !tbaa !5
  %650 = load i32, ptr %46, align 4, !tbaa !9
  %651 = sext i32 %650 to i64
  %652 = getelementptr inbounds double, ptr %649, i64 %651
  %653 = load double, ptr %652, align 8, !tbaa !23
  %654 = call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %47, double noundef %648, double noundef 0.000000e+00, double noundef %653, double noundef 0.000000e+00)
  %655 = load ptr, ptr %26, align 8, !tbaa !5
  %656 = load i32, ptr %46, align 4, !tbaa !9
  %657 = sext i32 %656 to i64
  %658 = getelementptr inbounds double, ptr %655, i64 %657
  %659 = load double, ptr %658, align 8, !tbaa !23
  %660 = call double @llvm.fmuladd.f64(double 3.000000e+00, double %654, double %659)
  store double %660, ptr %658, align 8, !tbaa !23
  %661 = load ptr, ptr %33, align 8, !tbaa !5
  %662 = load i32, ptr %46, align 4, !tbaa !9
  %663 = sext i32 %662 to i64
  %664 = getelementptr inbounds double, ptr %661, i64 %663
  %665 = load double, ptr %664, align 8, !tbaa !23
  %666 = load ptr, ptr %12, align 8, !tbaa !5
  %667 = load i32, ptr %46, align 4, !tbaa !9
  %668 = sext i32 %667 to i64
  %669 = getelementptr inbounds double, ptr %666, i64 %668
  %670 = load double, ptr %669, align 8, !tbaa !23
  %671 = call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %47, double noundef %665, double noundef 0.000000e+00, double noundef %670, double noundef 0.000000e+00)
  %672 = load ptr, ptr %33, align 8, !tbaa !5
  %673 = load i32, ptr %46, align 4, !tbaa !9
  %674 = sext i32 %673 to i64
  %675 = getelementptr inbounds double, ptr %672, i64 %674
  %676 = load double, ptr %675, align 8, !tbaa !23
  %677 = load ptr, ptr %12, align 8, !tbaa !5
  %678 = load i32, ptr %46, align 4, !tbaa !9
  %679 = sext i32 %678 to i64
  %680 = getelementptr inbounds double, ptr %677, i64 %679
  %681 = load double, ptr %680, align 8, !tbaa !23
  %682 = call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %47, double noundef %676, double noundef 0.000000e+00, double noundef %681, double noundef 0.000000e+00)
  %683 = fadd double %671, %682
  %684 = load ptr, ptr %36, align 8, !tbaa !5
  %685 = load i32, ptr %46, align 4, !tbaa !9
  %686 = sext i32 %685 to i64
  %687 = getelementptr inbounds double, ptr %684, i64 %686
  %688 = load double, ptr %687, align 8, !tbaa !23
  %689 = load ptr, ptr %15, align 8, !tbaa !5
  %690 = load i32, ptr %46, align 4, !tbaa !9
  %691 = sext i32 %690 to i64
  %692 = getelementptr inbounds double, ptr %689, i64 %691
  %693 = load double, ptr %692, align 8, !tbaa !23
  %694 = call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %47, double noundef %688, double noundef 0.000000e+00, double noundef %693, double noundef 0.000000e+00)
  %695 = fadd double %683, %694
  %696 = load ptr, ptr %27, align 8, !tbaa !5
  %697 = load i32, ptr %46, align 4, !tbaa !9
  %698 = sext i32 %697 to i64
  %699 = getelementptr inbounds double, ptr %696, i64 %698
  store double %695, ptr %699, align 8, !tbaa !23
  %700 = load ptr, ptr %34, align 8, !tbaa !5
  %701 = load i32, ptr %46, align 4, !tbaa !9
  %702 = sext i32 %701 to i64
  %703 = getelementptr inbounds double, ptr %700, i64 %702
  %704 = load double, ptr %703, align 8, !tbaa !23
  %705 = load ptr, ptr %13, align 8, !tbaa !5
  %706 = load i32, ptr %46, align 4, !tbaa !9
  %707 = sext i32 %706 to i64
  %708 = getelementptr inbounds double, ptr %705, i64 %707
  %709 = load double, ptr %708, align 8, !tbaa !23
  %710 = call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %47, double noundef %704, double noundef 0.000000e+00, double noundef %709, double noundef 0.000000e+00)
  %711 = load ptr, ptr %34, align 8, !tbaa !5
  %712 = load i32, ptr %46, align 4, !tbaa !9
  %713 = sext i32 %712 to i64
  %714 = getelementptr inbounds double, ptr %711, i64 %713
  %715 = load double, ptr %714, align 8, !tbaa !23
  %716 = load ptr, ptr %13, align 8, !tbaa !5
  %717 = load i32, ptr %46, align 4, !tbaa !9
  %718 = sext i32 %717 to i64
  %719 = getelementptr inbounds double, ptr %716, i64 %718
  %720 = load double, ptr %719, align 8, !tbaa !23
  %721 = call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %47, double noundef %715, double noundef 0.000000e+00, double noundef %720, double noundef 0.000000e+00)
  %722 = fadd double %710, %721
  %723 = load ptr, ptr %36, align 8, !tbaa !5
  %724 = load i32, ptr %46, align 4, !tbaa !9
  %725 = sext i32 %724 to i64
  %726 = getelementptr inbounds double, ptr %723, i64 %725
  %727 = load double, ptr %726, align 8, !tbaa !23
  %728 = load ptr, ptr %16, align 8, !tbaa !5
  %729 = load i32, ptr %46, align 4, !tbaa !9
  %730 = sext i32 %729 to i64
  %731 = getelementptr inbounds double, ptr %728, i64 %730
  %732 = load double, ptr %731, align 8, !tbaa !23
  %733 = call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %47, double noundef %727, double noundef 0.000000e+00, double noundef %732, double noundef 0.000000e+00)
  %734 = fadd double %722, %733
  %735 = load ptr, ptr %28, align 8, !tbaa !5
  %736 = load i32, ptr %46, align 4, !tbaa !9
  %737 = sext i32 %736 to i64
  %738 = getelementptr inbounds double, ptr %735, i64 %737
  store double %734, ptr %738, align 8, !tbaa !23
  %739 = load ptr, ptr %35, align 8, !tbaa !5
  %740 = load i32, ptr %46, align 4, !tbaa !9
  %741 = sext i32 %740 to i64
  %742 = getelementptr inbounds double, ptr %739, i64 %741
  %743 = load double, ptr %742, align 8, !tbaa !23
  %744 = load ptr, ptr %14, align 8, !tbaa !5
  %745 = load i32, ptr %46, align 4, !tbaa !9
  %746 = sext i32 %745 to i64
  %747 = getelementptr inbounds double, ptr %744, i64 %746
  %748 = load double, ptr %747, align 8, !tbaa !23
  %749 = call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %47, double noundef %743, double noundef 0.000000e+00, double noundef %748, double noundef 0.000000e+00)
  %750 = load ptr, ptr %35, align 8, !tbaa !5
  %751 = load i32, ptr %46, align 4, !tbaa !9
  %752 = sext i32 %751 to i64
  %753 = getelementptr inbounds double, ptr %750, i64 %752
  %754 = load double, ptr %753, align 8, !tbaa !23
  %755 = load ptr, ptr %14, align 8, !tbaa !5
  %756 = load i32, ptr %46, align 4, !tbaa !9
  %757 = sext i32 %756 to i64
  %758 = getelementptr inbounds double, ptr %755, i64 %757
  %759 = load double, ptr %758, align 8, !tbaa !23
  %760 = call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %47, double noundef %754, double noundef 0.000000e+00, double noundef %759, double noundef 0.000000e+00)
  %761 = fadd double %749, %760
  %762 = load ptr, ptr %36, align 8, !tbaa !5
  %763 = load i32, ptr %46, align 4, !tbaa !9
  %764 = sext i32 %763 to i64
  %765 = getelementptr inbounds double, ptr %762, i64 %764
  %766 = load double, ptr %765, align 8, !tbaa !23
  %767 = load ptr, ptr %17, align 8, !tbaa !5
  %768 = load i32, ptr %46, align 4, !tbaa !9
  %769 = sext i32 %768 to i64
  %770 = getelementptr inbounds double, ptr %767, i64 %769
  %771 = load double, ptr %770, align 8, !tbaa !23
  %772 = call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %47, double noundef %766, double noundef 0.000000e+00, double noundef %771, double noundef 0.000000e+00)
  %773 = fadd double %761, %772
  %774 = load ptr, ptr %29, align 8, !tbaa !5
  %775 = load i32, ptr %46, align 4, !tbaa !9
  %776 = sext i32 %775 to i64
  %777 = getelementptr inbounds double, ptr %774, i64 %776
  store double %773, ptr %777, align 8, !tbaa !23
  %778 = load ptr, ptr %33, align 8, !tbaa !5
  %779 = load i32, ptr %46, align 4, !tbaa !9
  %780 = sext i32 %779 to i64
  %781 = getelementptr inbounds double, ptr %778, i64 %780
  %782 = load double, ptr %781, align 8, !tbaa !23
  %783 = load ptr, ptr %13, align 8, !tbaa !5
  %784 = load i32, ptr %46, align 4, !tbaa !9
  %785 = sext i32 %784 to i64
  %786 = getelementptr inbounds double, ptr %783, i64 %785
  %787 = load double, ptr %786, align 8, !tbaa !23
  %788 = call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %47, double noundef %782, double noundef 0.000000e+00, double noundef %787, double noundef 0.000000e+00)
  %789 = load ptr, ptr %34, align 8, !tbaa !5
  %790 = load i32, ptr %46, align 4, !tbaa !9
  %791 = sext i32 %790 to i64
  %792 = getelementptr inbounds double, ptr %789, i64 %791
  %793 = load double, ptr %792, align 8, !tbaa !23
  %794 = load ptr, ptr %12, align 8, !tbaa !5
  %795 = load i32, ptr %46, align 4, !tbaa !9
  %796 = sext i32 %795 to i64
  %797 = getelementptr inbounds double, ptr %794, i64 %796
  %798 = load double, ptr %797, align 8, !tbaa !23
  %799 = call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %47, double noundef %793, double noundef 0.000000e+00, double noundef %798, double noundef 0.000000e+00)
  %800 = fadd double %788, %799
  %801 = load ptr, ptr %36, align 8, !tbaa !5
  %802 = load i32, ptr %46, align 4, !tbaa !9
  %803 = sext i32 %802 to i64
  %804 = getelementptr inbounds double, ptr %801, i64 %803
  %805 = load double, ptr %804, align 8, !tbaa !23
  %806 = load ptr, ptr %18, align 8, !tbaa !5
  %807 = load i32, ptr %46, align 4, !tbaa !9
  %808 = sext i32 %807 to i64
  %809 = getelementptr inbounds double, ptr %806, i64 %808
  %810 = load double, ptr %809, align 8, !tbaa !23
  %811 = call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %47, double noundef %805, double noundef 0.000000e+00, double noundef %810, double noundef 0.000000e+00)
  %812 = fadd double %800, %811
  %813 = load ptr, ptr %30, align 8, !tbaa !5
  %814 = load i32, ptr %46, align 4, !tbaa !9
  %815 = sext i32 %814 to i64
  %816 = getelementptr inbounds double, ptr %813, i64 %815
  store double %812, ptr %816, align 8, !tbaa !23
  %817 = load ptr, ptr %33, align 8, !tbaa !5
  %818 = load i32, ptr %46, align 4, !tbaa !9
  %819 = sext i32 %818 to i64
  %820 = getelementptr inbounds double, ptr %817, i64 %819
  %821 = load double, ptr %820, align 8, !tbaa !23
  %822 = load ptr, ptr %14, align 8, !tbaa !5
  %823 = load i32, ptr %46, align 4, !tbaa !9
  %824 = sext i32 %823 to i64
  %825 = getelementptr inbounds double, ptr %822, i64 %824
  %826 = load double, ptr %825, align 8, !tbaa !23
  %827 = call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %47, double noundef %821, double noundef 0.000000e+00, double noundef %826, double noundef 0.000000e+00)
  %828 = load ptr, ptr %35, align 8, !tbaa !5
  %829 = load i32, ptr %46, align 4, !tbaa !9
  %830 = sext i32 %829 to i64
  %831 = getelementptr inbounds double, ptr %828, i64 %830
  %832 = load double, ptr %831, align 8, !tbaa !23
  %833 = load ptr, ptr %12, align 8, !tbaa !5
  %834 = load i32, ptr %46, align 4, !tbaa !9
  %835 = sext i32 %834 to i64
  %836 = getelementptr inbounds double, ptr %833, i64 %835
  %837 = load double, ptr %836, align 8, !tbaa !23
  %838 = call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %47, double noundef %832, double noundef 0.000000e+00, double noundef %837, double noundef 0.000000e+00)
  %839 = fadd double %827, %838
  %840 = load ptr, ptr %36, align 8, !tbaa !5
  %841 = load i32, ptr %46, align 4, !tbaa !9
  %842 = sext i32 %841 to i64
  %843 = getelementptr inbounds double, ptr %840, i64 %842
  %844 = load double, ptr %843, align 8, !tbaa !23
  %845 = load ptr, ptr %19, align 8, !tbaa !5
  %846 = load i32, ptr %46, align 4, !tbaa !9
  %847 = sext i32 %846 to i64
  %848 = getelementptr inbounds double, ptr %845, i64 %847
  %849 = load double, ptr %848, align 8, !tbaa !23
  %850 = call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %47, double noundef %844, double noundef 0.000000e+00, double noundef %849, double noundef 0.000000e+00)
  %851 = fadd double %839, %850
  %852 = load ptr, ptr %31, align 8, !tbaa !5
  %853 = load i32, ptr %46, align 4, !tbaa !9
  %854 = sext i32 %853 to i64
  %855 = getelementptr inbounds double, ptr %852, i64 %854
  store double %851, ptr %855, align 8, !tbaa !23
  %856 = load ptr, ptr %34, align 8, !tbaa !5
  %857 = load i32, ptr %46, align 4, !tbaa !9
  %858 = sext i32 %857 to i64
  %859 = getelementptr inbounds double, ptr %856, i64 %858
  %860 = load double, ptr %859, align 8, !tbaa !23
  %861 = load ptr, ptr %14, align 8, !tbaa !5
  %862 = load i32, ptr %46, align 4, !tbaa !9
  %863 = sext i32 %862 to i64
  %864 = getelementptr inbounds double, ptr %861, i64 %863
  %865 = load double, ptr %864, align 8, !tbaa !23
  %866 = call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %47, double noundef %860, double noundef 0.000000e+00, double noundef %865, double noundef 0.000000e+00)
  %867 = load ptr, ptr %35, align 8, !tbaa !5
  %868 = load i32, ptr %46, align 4, !tbaa !9
  %869 = sext i32 %868 to i64
  %870 = getelementptr inbounds double, ptr %867, i64 %869
  %871 = load double, ptr %870, align 8, !tbaa !23
  %872 = load ptr, ptr %13, align 8, !tbaa !5
  %873 = load i32, ptr %46, align 4, !tbaa !9
  %874 = sext i32 %873 to i64
  %875 = getelementptr inbounds double, ptr %872, i64 %874
  %876 = load double, ptr %875, align 8, !tbaa !23
  %877 = call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %47, double noundef %871, double noundef 0.000000e+00, double noundef %876, double noundef 0.000000e+00)
  %878 = fadd double %866, %877
  %879 = load ptr, ptr %36, align 8, !tbaa !5
  %880 = load i32, ptr %46, align 4, !tbaa !9
  %881 = sext i32 %880 to i64
  %882 = getelementptr inbounds double, ptr %879, i64 %881
  %883 = load double, ptr %882, align 8, !tbaa !23
  %884 = load ptr, ptr %20, align 8, !tbaa !5
  %885 = load i32, ptr %46, align 4, !tbaa !9
  %886 = sext i32 %885 to i64
  %887 = getelementptr inbounds double, ptr %884, i64 %886
  %888 = load double, ptr %887, align 8, !tbaa !23
  %889 = call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %47, double noundef %883, double noundef 0.000000e+00, double noundef %888, double noundef 0.000000e+00)
  %890 = fadd double %878, %889
  %891 = load ptr, ptr %32, align 8, !tbaa !5
  %892 = load i32, ptr %46, align 4, !tbaa !9
  %893 = sext i32 %892 to i64
  %894 = getelementptr inbounds double, ptr %891, i64 %893
  store double %890, ptr %894, align 8, !tbaa !23
  br label %895

895:                                              ; preds = %210
  %896 = load i32, ptr %46, align 4, !tbaa !9
  %897 = add nsw i32 %896, 1
  store i32 %897, ptr %46, align 4, !tbaa !9
  br label %205, !llvm.loop !25

898:                                              ; preds = %209
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #5
  br label %899

899:                                              ; preds = %898
  %900 = load i32, ptr %10, align 4, !tbaa !9
  %901 = add nsw i32 %900, 1
  store i32 %901, ptr %10, align 4, !tbaa !9
  br label %54, !llvm.loop !27

902:                                              ; preds = %59
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #5
  br label %903

903:                                              ; preds = %902, %51
  ret void
}

declare noundef ptr @_ZNK12CDensityGrid12alphaDensityEi(ptr noundef nonnull align 8 dereferenceable(112), i32 noundef) #2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112), double noundef, double noundef, double noundef, double noundef) #3 align 2

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, double) #4

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 = { "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 = { 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 #4 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { 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 = !{!"int", !7, i64 0}
!11 = !{!12, !13, i64 0}
!12 = !{!"_ZTS17CDensityGridCubic", !13, i64 0, !10, i64 4, !14, i64 8}
!13 = !{!"_ZTS7dengrid", !7, i64 0}
!14 = !{!"_ZTS18CDensityGridData2D", !15, i64 0, !19, i64 24, !19, i64 48, !19, i64 72, !10, i64 96}
!15 = !{!"_ZTSSt6vectorIdSaIdEE", !16, i64 0}
!16 = !{!"_ZTSSt12_Vector_baseIdSaIdEE", !17, i64 0}
!17 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE12_Vector_implE", !18, i64 0}
!18 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!19 = !{!"_ZTSSt6vectorIiSaIiEE", !20, i64 0}
!20 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!23 = !{!24, !24, i64 0}
!24 = !{!"double", !7, i64 0}
!25 = distinct !{!25, !26}
!26 = !{!"llvm.loop.mustprogress"}
!27 = distinct !{!27, !26}


; 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"

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZNK17CDensityGridCubic21getNumberOfGridPointsEv(ptr noundef nonnull align 8 dereferenceable(112)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN17CDensityGridCubic2piEi(ptr noundef nonnull align 8 dereferenceable(112), i32 noundef) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN17CDensityGridCubic3gamEi(ptr noundef nonnull align 8 dereferenceable(112), i32 noundef) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN17CDensityGridCubic4gam2Ei(ptr noundef nonnull align 8 dereferenceable(112), i32 noundef) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN17CDensityGridCubic21DensityProdForLDA_3PAERK12CDensityGridS2_i(ptr noundef nonnull align 8 dereferenceable(112) %0, ptr noundef nonnull align 8 dereferenceable(112) %1, ptr noundef nonnull align 8 dereferenceable(112) %2, i32 noundef %3) local_unnamed_addr #0 align 2 {
  %5 = load i32, ptr %0, align 8, !tbaa !5
  %.not = icmp eq i32 %5, 0
  br i1 %.not, label %6, label %.loopexit

6:                                                ; preds = %4
  %7 = tail call noundef i32 @_ZNK17CDensityGridCubic21getNumberOfGridPointsEv(ptr noundef nonnull align 8 dereferenceable(112) %0)
  %8 = sdiv i32 %3, 9
  %9 = icmp sgt i32 %3, 8
  br i1 %9, label %.lr.ph303, label %.loopexit

.lr.ph303:                                        ; preds = %6
  %10 = icmp sgt i32 %7, 0
  %wide.trip.count = zext nneg i32 %7 to i64
  br label %11

11:                                               ; preds = %.lr.ph303, %._crit_edge
  %.0299301 = phi i32 [ 0, %.lr.ph303 ], [ %65, %._crit_edge ]
  %12 = mul nuw nsw i32 %.0299301, 9
  %13 = tail call noundef ptr @_ZN17CDensityGridCubic4gam2Ei(ptr noundef nonnull align 8 dereferenceable(112) %0, i32 noundef %12)
  %14 = add nuw nsw i32 %12, 1
  %15 = tail call noundef ptr @_ZN17CDensityGridCubic4gam2Ei(ptr noundef nonnull align 8 dereferenceable(112) %0, i32 noundef %14)
  %16 = add nuw nsw i32 %12, 2
  %17 = tail call noundef ptr @_ZN17CDensityGridCubic4gam2Ei(ptr noundef nonnull align 8 dereferenceable(112) %0, i32 noundef %16)
  %18 = add nuw nsw i32 %12, 3
  %19 = tail call noundef ptr @_ZN17CDensityGridCubic4gam2Ei(ptr noundef nonnull align 8 dereferenceable(112) %0, i32 noundef %18)
  %20 = add nuw nsw i32 %12, 4
  %21 = tail call noundef ptr @_ZN17CDensityGridCubic4gam2Ei(ptr noundef nonnull align 8 dereferenceable(112) %0, i32 noundef %20)
  %22 = add nuw nsw i32 %12, 5
  %23 = tail call noundef ptr @_ZN17CDensityGridCubic4gam2Ei(ptr noundef nonnull align 8 dereferenceable(112) %0, i32 noundef %22)
  %24 = add nuw nsw i32 %12, 6
  %25 = tail call noundef ptr @_ZN17CDensityGridCubic4gam2Ei(ptr noundef nonnull align 8 dereferenceable(112) %0, i32 noundef %24)
  %26 = add nuw nsw i32 %12, 7
  %27 = tail call noundef ptr @_ZN17CDensityGridCubic4gam2Ei(ptr noundef nonnull align 8 dereferenceable(112) %0, i32 noundef %26)
  %28 = add nuw nsw i32 %12, 8
  %29 = tail call noundef ptr @_ZN17CDensityGridCubic4gam2Ei(ptr noundef nonnull align 8 dereferenceable(112) %0, i32 noundef %28)
  %30 = mul nuw nsw i32 %.0299301, 6
  %31 = tail call noundef ptr @_ZN17CDensityGridCubic3gamEi(ptr noundef nonnull align 8 dereferenceable(112) %0, i32 noundef %30)
  %32 = or disjoint i32 %30, 1
  %33 = tail call noundef ptr @_ZN17CDensityGridCubic3gamEi(ptr noundef nonnull align 8 dereferenceable(112) %0, i32 noundef %32)
  %34 = add nuw nsw i32 %30, 2
  %35 = tail call noundef ptr @_ZN17CDensityGridCubic3gamEi(ptr noundef nonnull align 8 dereferenceable(112) %0, i32 noundef %34)
  %36 = add nuw nsw i32 %30, 3
  %37 = tail call noundef ptr @_ZN17CDensityGridCubic3gamEi(ptr noundef nonnull align 8 dereferenceable(112) %0, i32 noundef %36)
  %38 = add nuw nsw i32 %30, 4
  %39 = tail call noundef ptr @_ZN17CDensityGridCubic3gamEi(ptr noundef nonnull align 8 dereferenceable(112) %0, i32 noundef %38)
  %40 = add nuw nsw i32 %30, 5
  %41 = tail call noundef ptr @_ZN17CDensityGridCubic3gamEi(ptr noundef nonnull align 8 dereferenceable(112) %0, i32 noundef %40)
  %42 = tail call noundef ptr @_ZN17CDensityGridCubic2piEi(ptr noundef nonnull align 8 dereferenceable(112) %0, i32 noundef %30)
  %43 = tail call noundef ptr @_ZN17CDensityGridCubic2piEi(ptr noundef nonnull align 8 dereferenceable(112) %0, i32 noundef %32)
  %44 = tail call noundef ptr @_ZN17CDensityGridCubic2piEi(ptr noundef nonnull align 8 dereferenceable(112) %0, i32 noundef %34)
  %45 = tail call noundef ptr @_ZN17CDensityGridCubic2piEi(ptr noundef nonnull align 8 dereferenceable(112) %0, i32 noundef %36)
  %46 = tail call noundef ptr @_ZN17CDensityGridCubic2piEi(ptr noundef nonnull align 8 dereferenceable(112) %0, i32 noundef %38)
  %47 = tail call noundef ptr @_ZN17CDensityGridCubic2piEi(ptr noundef nonnull align 8 dereferenceable(112) %0, i32 noundef %40)
  %48 = shl nsw i32 %.0299301, 2
  %49 = tail call noundef ptr @_ZNK12CDensityGrid12alphaDensityEi(ptr noundef nonnull align 8 dereferenceable(112) %1, i32 noundef %48)
  %50 = or disjoint i32 %48, 1
  %51 = tail call noundef ptr @_ZNK12CDensityGrid12alphaDensityEi(ptr noundef nonnull align 8 dereferenceable(112) %1, i32 noundef %50)
  %52 = or disjoint i32 %48, 2
  %53 = tail call noundef ptr @_ZNK12CDensityGrid12alphaDensityEi(ptr noundef nonnull align 8 dereferenceable(112) %1, i32 noundef %52)
  %54 = or disjoint i32 %48, 3
  %55 = tail call noundef ptr @_ZNK12CDensityGrid12alphaDensityEi(ptr noundef nonnull align 8 dereferenceable(112) %1, i32 noundef %54)
  %56 = tail call noundef ptr @_ZNK12CDensityGrid12alphaDensityEi(ptr noundef nonnull align 8 dereferenceable(112) %2, i32 noundef %12)
  %57 = tail call noundef ptr @_ZNK12CDensityGrid12alphaDensityEi(ptr noundef nonnull align 8 dereferenceable(112) %2, i32 noundef %14)
  %58 = tail call noundef ptr @_ZNK12CDensityGrid12alphaDensityEi(ptr noundef nonnull align 8 dereferenceable(112) %2, i32 noundef %16)
  %59 = tail call noundef ptr @_ZNK12CDensityGrid12alphaDensityEi(ptr noundef nonnull align 8 dereferenceable(112) %2, i32 noundef %18)
  %60 = tail call noundef ptr @_ZNK12CDensityGrid12alphaDensityEi(ptr noundef nonnull align 8 dereferenceable(112) %2, i32 noundef %20)
  %61 = tail call noundef ptr @_ZNK12CDensityGrid12alphaDensityEi(ptr noundef nonnull align 8 dereferenceable(112) %2, i32 noundef %22)
  %62 = tail call noundef ptr @_ZNK12CDensityGrid12alphaDensityEi(ptr noundef nonnull align 8 dereferenceable(112) %2, i32 noundef %24)
  %63 = tail call noundef ptr @_ZNK12CDensityGrid12alphaDensityEi(ptr noundef nonnull align 8 dereferenceable(112) %2, i32 noundef %26)
  %64 = tail call noundef ptr @_ZNK12CDensityGrid12alphaDensityEi(ptr noundef nonnull align 8 dereferenceable(112) %2, i32 noundef %28)
  br i1 %10, label %.lr.ph, label %._crit_edge

._crit_edge:                                      ; preds = %.lr.ph, %11
  %65 = add nuw nsw i32 %.0299301, 1
  %exitcond305.not = icmp eq i32 %65, %8
  br i1 %exitcond305.not, label %.loopexit, label %11, !llvm.loop !21

.lr.ph:                                           ; preds = %11, %.lr.ph
  %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph ], [ 0, %11 ]
  %66 = getelementptr inbounds double, ptr %49, i64 %indvars.iv
  %67 = load double, ptr %66, align 8, !tbaa !23
  %68 = getelementptr inbounds double, ptr %55, i64 %indvars.iv
  %69 = load double, ptr %68, align 8, !tbaa !23
  %70 = tail call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %0, double noundef %67, double noundef 0.000000e+00, double noundef %69, double noundef 0.000000e+00)
  %71 = fmul double %70, 2.000000e+00
  %72 = getelementptr inbounds double, ptr %13, i64 %indvars.iv
  store double %71, ptr %72, align 8, !tbaa !23
  %73 = getelementptr inbounds double, ptr %51, i64 %indvars.iv
  %74 = load double, ptr %73, align 8, !tbaa !23
  %75 = load double, ptr %68, align 8, !tbaa !23
  %76 = tail call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %0, double noundef %74, double noundef 0.000000e+00, double noundef %75, double noundef 0.000000e+00)
  %77 = fmul double %76, 2.000000e+00
  %78 = getelementptr inbounds double, ptr %15, i64 %indvars.iv
  store double %77, ptr %78, align 8, !tbaa !23
  %79 = getelementptr inbounds double, ptr %53, i64 %indvars.iv
  %80 = load double, ptr %79, align 8, !tbaa !23
  %81 = load double, ptr %68, align 8, !tbaa !23
  %82 = tail call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %0, double noundef %80, double noundef 0.000000e+00, double noundef %81, double noundef 0.000000e+00)
  %83 = fmul double %82, 2.000000e+00
  %84 = getelementptr inbounds double, ptr %17, i64 %indvars.iv
  store double %83, ptr %84, align 8, !tbaa !23
  %85 = load double, ptr %66, align 8, !tbaa !23
  %86 = tail call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %0, double noundef %85, double noundef 0.000000e+00, double noundef %85, double noundef 0.000000e+00)
  %87 = fmul double %86, 2.000000e+00
  %88 = getelementptr inbounds double, ptr %19, i64 %indvars.iv
  store double %87, ptr %88, align 8, !tbaa !23
  %89 = load double, ptr %73, align 8, !tbaa !23
  %90 = tail call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %0, double noundef %89, double noundef 0.000000e+00, double noundef %89, double noundef 0.000000e+00)
  %91 = fmul double %90, 2.000000e+00
  %92 = getelementptr inbounds double, ptr %21, i64 %indvars.iv
  store double %91, ptr %92, align 8, !tbaa !23
  %93 = load double, ptr %79, align 8, !tbaa !23
  %94 = tail call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %0, double noundef %93, double noundef 0.000000e+00, double noundef %93, double noundef 0.000000e+00)
  %95 = fmul double %94, 2.000000e+00
  %96 = getelementptr inbounds double, ptr %23, i64 %indvars.iv
  store double %95, ptr %96, align 8, !tbaa !23
  %97 = load double, ptr %66, align 8, !tbaa !23
  %98 = load double, ptr %73, align 8, !tbaa !23
  %99 = tail call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %0, double noundef %97, double noundef 0.000000e+00, double noundef %98, double noundef 0.000000e+00)
  %100 = fmul double %99, 2.000000e+00
  %101 = getelementptr inbounds double, ptr %25, i64 %indvars.iv
  store double %100, ptr %101, align 8, !tbaa !23
  %102 = load double, ptr %66, align 8, !tbaa !23
  %103 = load double, ptr %79, align 8, !tbaa !23
  %104 = tail call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %0, double noundef %102, double noundef 0.000000e+00, double noundef %103, double noundef 0.000000e+00)
  %105 = fmul double %104, 2.000000e+00
  %106 = getelementptr inbounds double, ptr %27, i64 %indvars.iv
  store double %105, ptr %106, align 8, !tbaa !23
  %107 = load double, ptr %73, align 8, !tbaa !23
  %108 = load double, ptr %79, align 8, !tbaa !23
  %109 = tail call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %0, double noundef %107, double noundef 0.000000e+00, double noundef %108, double noundef 0.000000e+00)
  %110 = fmul double %109, 2.000000e+00
  %111 = getelementptr inbounds double, ptr %29, i64 %indvars.iv
  store double %110, ptr %111, align 8, !tbaa !23
  %112 = load double, ptr %68, align 8, !tbaa !23
  %113 = getelementptr inbounds double, ptr %59, i64 %indvars.iv
  %114 = load double, ptr %113, align 8, !tbaa !23
  %115 = tail call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %0, double noundef %112, double noundef 0.000000e+00, double noundef %114, double noundef 0.000000e+00)
  %116 = getelementptr inbounds double, ptr %31, i64 %indvars.iv
  %117 = load double, ptr %116, align 8, !tbaa !23
  %118 = tail call double @llvm.fmuladd.f64(double %115, double 3.000000e+00, double %117)
  store double %118, ptr %116, align 8, !tbaa !23
  %119 = load double, ptr %66, align 8, !tbaa !23
  %120 = getelementptr inbounds double, ptr %56, i64 %indvars.iv
  %121 = load double, ptr %120, align 8, !tbaa !23
  %122 = tail call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %0, double noundef %119, double noundef 0.000000e+00, double noundef %121, double noundef 0.000000e+00)
  %123 = load double, ptr %116, align 8, !tbaa !23
  %124 = tail call double @llvm.fmuladd.f64(double %122, double 3.000000e+00, double %123)
  store double %124, ptr %116, align 8, !tbaa !23
  %125 = load double, ptr %66, align 8, !tbaa !23
  %126 = load double, ptr %120, align 8, !tbaa !23
  %127 = tail call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %0, double noundef %125, double noundef 0.000000e+00, double noundef %126, double noundef 0.000000e+00)
  %128 = load double, ptr %116, align 8, !tbaa !23
  %129 = tail call double @llvm.fmuladd.f64(double %127, double 3.000000e+00, double %128)
  store double %129, ptr %116, align 8, !tbaa !23
  %130 = load double, ptr %68, align 8, !tbaa !23
  %131 = getelementptr inbounds double, ptr %60, i64 %indvars.iv
  %132 = load double, ptr %131, align 8, !tbaa !23
  %133 = tail call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %0, double noundef %130, double noundef 0.000000e+00, double noundef %132, double noundef 0.000000e+00)
  %134 = getelementptr inbounds double, ptr %33, i64 %indvars.iv
  %135 = load double, ptr %134, align 8, !tbaa !23
  %136 = tail call double @llvm.fmuladd.f64(double %133, double 3.000000e+00, double %135)
  store double %136, ptr %134, align 8, !tbaa !23
  %137 = load double, ptr %73, align 8, !tbaa !23
  %138 = getelementptr inbounds double, ptr %57, i64 %indvars.iv
  %139 = load double, ptr %138, align 8, !tbaa !23
  %140 = tail call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %0, double noundef %137, double noundef 0.000000e+00, double noundef %139, double noundef 0.000000e+00)
  %141 = load double, ptr %134, align 8, !tbaa !23
  %142 = tail call double @llvm.fmuladd.f64(double %140, double 3.000000e+00, double %141)
  store double %142, ptr %134, align 8, !tbaa !23
  %143 = load double, ptr %73, align 8, !tbaa !23
  %144 = load double, ptr %138, align 8, !tbaa !23
  %145 = tail call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %0, double noundef %143, double noundef 0.000000e+00, double noundef %144, double noundef 0.000000e+00)
  %146 = load double, ptr %134, align 8, !tbaa !23
  %147 = tail call double @llvm.fmuladd.f64(double %145, double 3.000000e+00, double %146)
  store double %147, ptr %134, align 8, !tbaa !23
  %148 = load double, ptr %68, align 8, !tbaa !23
  %149 = getelementptr inbounds double, ptr %61, i64 %indvars.iv
  %150 = load double, ptr %149, align 8, !tbaa !23
  %151 = tail call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %0, double noundef %148, double noundef 0.000000e+00, double noundef %150, double noundef 0.000000e+00)
  %152 = getelementptr inbounds double, ptr %35, i64 %indvars.iv
  %153 = load double, ptr %152, align 8, !tbaa !23
  %154 = tail call double @llvm.fmuladd.f64(double %151, double 3.000000e+00, double %153)
  store double %154, ptr %152, align 8, !tbaa !23
  %155 = load double, ptr %79, align 8, !tbaa !23
  %156 = getelementptr inbounds double, ptr %58, i64 %indvars.iv
  %157 = load double, ptr %156, align 8, !tbaa !23
  %158 = tail call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %0, double noundef %155, double noundef 0.000000e+00, double noundef %157, double noundef 0.000000e+00)
  %159 = load double, ptr %152, align 8, !tbaa !23
  %160 = tail call double @llvm.fmuladd.f64(double %158, double 3.000000e+00, double %159)
  store double %160, ptr %152, align 8, !tbaa !23
  %161 = load double, ptr %79, align 8, !tbaa !23
  %162 = load double, ptr %156, align 8, !tbaa !23
  %163 = tail call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %0, double noundef %161, double noundef 0.000000e+00, double noundef %162, double noundef 0.000000e+00)
  %164 = load double, ptr %152, align 8, !tbaa !23
  %165 = tail call double @llvm.fmuladd.f64(double %163, double 3.000000e+00, double %164)
  store double %165, ptr %152, align 8, !tbaa !23
  %166 = load double, ptr %68, align 8, !tbaa !23
  %167 = getelementptr inbounds double, ptr %62, i64 %indvars.iv
  %168 = load double, ptr %167, align 8, !tbaa !23
  %169 = tail call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %0, double noundef %166, double noundef 0.000000e+00, double noundef %168, double noundef 0.000000e+00)
  %170 = getelementptr inbounds double, ptr %37, i64 %indvars.iv
  %171 = load double, ptr %170, align 8, !tbaa !23
  %172 = tail call double @llvm.fmuladd.f64(double %169, double 3.000000e+00, double %171)
  store double %172, ptr %170, align 8, !tbaa !23
  %173 = load double, ptr %66, align 8, !tbaa !23
  %174 = load double, ptr %138, align 8, !tbaa !23
  %175 = tail call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %0, double noundef %173, double noundef 0.000000e+00, double noundef %174, double noundef 0.000000e+00)
  %176 = load double, ptr %170, align 8, !tbaa !23
  %177 = tail call double @llvm.fmuladd.f64(double %175, double 3.000000e+00, double %176)
  store double %177, ptr %170, align 8, !tbaa !23
  %178 = load double, ptr %73, align 8, !tbaa !23
  %179 = load double, ptr %120, align 8, !tbaa !23
  %180 = tail call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %0, double noundef %178, double noundef 0.000000e+00, double noundef %179, double noundef 0.000000e+00)
  %181 = load double, ptr %170, align 8, !tbaa !23
  %182 = tail call double @llvm.fmuladd.f64(double %180, double 3.000000e+00, double %181)
  store double %182, ptr %170, align 8, !tbaa !23
  %183 = load double, ptr %68, align 8, !tbaa !23
  %184 = getelementptr inbounds double, ptr %63, i64 %indvars.iv
  %185 = load double, ptr %184, align 8, !tbaa !23
  %186 = tail call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %0, double noundef %183, double noundef 0.000000e+00, double noundef %185, double noundef 0.000000e+00)
  %187 = getelementptr inbounds double, ptr %39, i64 %indvars.iv
  %188 = load double, ptr %187, align 8, !tbaa !23
  %189 = tail call double @llvm.fmuladd.f64(double %186, double 3.000000e+00, double %188)
  store double %189, ptr %187, align 8, !tbaa !23
  %190 = load double, ptr %66, align 8, !tbaa !23
  %191 = load double, ptr %156, align 8, !tbaa !23
  %192 = tail call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %0, double noundef %190, double noundef 0.000000e+00, double noundef %191, double noundef 0.000000e+00)
  %193 = load double, ptr %187, align 8, !tbaa !23
  %194 = tail call double @llvm.fmuladd.f64(double %192, double 3.000000e+00, double %193)
  store double %194, ptr %187, align 8, !tbaa !23
  %195 = load double, ptr %79, align 8, !tbaa !23
  %196 = load double, ptr %120, align 8, !tbaa !23
  %197 = tail call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %0, double noundef %195, double noundef 0.000000e+00, double noundef %196, double noundef 0.000000e+00)
  %198 = load double, ptr %187, align 8, !tbaa !23
  %199 = tail call double @llvm.fmuladd.f64(double %197, double 3.000000e+00, double %198)
  store double %199, ptr %187, align 8, !tbaa !23
  %200 = load double, ptr %68, align 8, !tbaa !23
  %201 = getelementptr inbounds double, ptr %64, i64 %indvars.iv
  %202 = load double, ptr %201, align 8, !tbaa !23
  %203 = tail call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %0, double noundef %200, double noundef 0.000000e+00, double noundef %202, double noundef 0.000000e+00)
  %204 = getelementptr inbounds double, ptr %41, i64 %indvars.iv
  %205 = load double, ptr %204, align 8, !tbaa !23
  %206 = tail call double @llvm.fmuladd.f64(double %203, double 3.000000e+00, double %205)
  store double %206, ptr %204, align 8, !tbaa !23
  %207 = load double, ptr %73, align 8, !tbaa !23
  %208 = load double, ptr %156, align 8, !tbaa !23
  %209 = tail call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %0, double noundef %207, double noundef 0.000000e+00, double noundef %208, double noundef 0.000000e+00)
  %210 = load double, ptr %204, align 8, !tbaa !23
  %211 = tail call double @llvm.fmuladd.f64(double %209, double 3.000000e+00, double %210)
  store double %211, ptr %204, align 8, !tbaa !23
  %212 = load double, ptr %79, align 8, !tbaa !23
  %213 = load double, ptr %138, align 8, !tbaa !23
  %214 = tail call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %0, double noundef %212, double noundef 0.000000e+00, double noundef %213, double noundef 0.000000e+00)
  %215 = load double, ptr %204, align 8, !tbaa !23
  %216 = tail call double @llvm.fmuladd.f64(double %214, double 3.000000e+00, double %215)
  store double %216, ptr %204, align 8, !tbaa !23
  %217 = load double, ptr %66, align 8, !tbaa !23
  %218 = load double, ptr %72, align 8, !tbaa !23
  %219 = tail call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %0, double noundef %217, double noundef 0.000000e+00, double noundef %218, double noundef 0.000000e+00)
  %220 = load double, ptr %66, align 8, !tbaa !23
  %221 = load double, ptr %72, align 8, !tbaa !23
  %222 = tail call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %0, double noundef %220, double noundef 0.000000e+00, double noundef %221, double noundef 0.000000e+00)
  %223 = fadd double %219, %222
  %224 = load double, ptr %68, align 8, !tbaa !23
  %225 = load double, ptr %88, align 8, !tbaa !23
  %226 = tail call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %0, double noundef %224, double noundef 0.000000e+00, double noundef %225, double noundef 0.000000e+00)
  %227 = fadd double %223, %226
  %228 = getelementptr inbounds double, ptr %42, i64 %indvars.iv
  store double %227, ptr %228, align 8, !tbaa !23
  %229 = load double, ptr %73, align 8, !tbaa !23
  %230 = load double, ptr %78, align 8, !tbaa !23
  %231 = tail call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %0, double noundef %229, double noundef 0.000000e+00, double noundef %230, double noundef 0.000000e+00)
  %232 = load double, ptr %73, align 8, !tbaa !23
  %233 = load double, ptr %78, align 8, !tbaa !23
  %234 = tail call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %0, double noundef %232, double noundef 0.000000e+00, double noundef %233, double noundef 0.000000e+00)
  %235 = fadd double %231, %234
  %236 = load double, ptr %68, align 8, !tbaa !23
  %237 = load double, ptr %92, align 8, !tbaa !23
  %238 = tail call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %0, double noundef %236, double noundef 0.000000e+00, double noundef %237, double noundef 0.000000e+00)
  %239 = fadd double %235, %238
  %240 = getelementptr inbounds double, ptr %43, i64 %indvars.iv
  store double %239, ptr %240, align 8, !tbaa !23
  %241 = load double, ptr %79, align 8, !tbaa !23
  %242 = load double, ptr %84, align 8, !tbaa !23
  %243 = tail call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %0, double noundef %241, double noundef 0.000000e+00, double noundef %242, double noundef 0.000000e+00)
  %244 = load double, ptr %79, align 8, !tbaa !23
  %245 = load double, ptr %84, align 8, !tbaa !23
  %246 = tail call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %0, double noundef %244, double noundef 0.000000e+00, double noundef %245, double noundef 0.000000e+00)
  %247 = fadd double %243, %246
  %248 = load double, ptr %68, align 8, !tbaa !23
  %249 = load double, ptr %96, align 8, !tbaa !23
  %250 = tail call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %0, double noundef %248, double noundef 0.000000e+00, double noundef %249, double noundef 0.000000e+00)
  %251 = fadd double %247, %250
  %252 = getelementptr inbounds double, ptr %44, i64 %indvars.iv
  store double %251, ptr %252, align 8, !tbaa !23
  %253 = load double, ptr %66, align 8, !tbaa !23
  %254 = load double, ptr %78, align 8, !tbaa !23
  %255 = tail call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %0, double noundef %253, double noundef 0.000000e+00, double noundef %254, double noundef 0.000000e+00)
  %256 = load double, ptr %73, align 8, !tbaa !23
  %257 = load double, ptr %72, align 8, !tbaa !23
  %258 = tail call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %0, double noundef %256, double noundef 0.000000e+00, double noundef %257, double noundef 0.000000e+00)
  %259 = fadd double %255, %258
  %260 = load double, ptr %68, align 8, !tbaa !23
  %261 = load double, ptr %101, align 8, !tbaa !23
  %262 = tail call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %0, double noundef %260, double noundef 0.000000e+00, double noundef %261, double noundef 0.000000e+00)
  %263 = fadd double %259, %262
  %264 = getelementptr inbounds double, ptr %45, i64 %indvars.iv
  store double %263, ptr %264, align 8, !tbaa !23
  %265 = load double, ptr %66, align 8, !tbaa !23
  %266 = load double, ptr %84, align 8, !tbaa !23
  %267 = tail call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %0, double noundef %265, double noundef 0.000000e+00, double noundef %266, double noundef 0.000000e+00)
  %268 = load double, ptr %79, align 8, !tbaa !23
  %269 = load double, ptr %72, align 8, !tbaa !23
  %270 = tail call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %0, double noundef %268, double noundef 0.000000e+00, double noundef %269, double noundef 0.000000e+00)
  %271 = fadd double %267, %270
  %272 = load double, ptr %68, align 8, !tbaa !23
  %273 = load double, ptr %106, align 8, !tbaa !23
  %274 = tail call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %0, double noundef %272, double noundef 0.000000e+00, double noundef %273, double noundef 0.000000e+00)
  %275 = fadd double %271, %274
  %276 = getelementptr inbounds double, ptr %46, i64 %indvars.iv
  store double %275, ptr %276, align 8, !tbaa !23
  %277 = load double, ptr %73, align 8, !tbaa !23
  %278 = load double, ptr %84, align 8, !tbaa !23
  %279 = tail call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %0, double noundef %277, double noundef 0.000000e+00, double noundef %278, double noundef 0.000000e+00)
  %280 = load double, ptr %79, align 8, !tbaa !23
  %281 = load double, ptr %78, align 8, !tbaa !23
  %282 = tail call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %0, double noundef %280, double noundef 0.000000e+00, double noundef %281, double noundef 0.000000e+00)
  %283 = fadd double %279, %282
  %284 = load double, ptr %68, align 8, !tbaa !23
  %285 = load double, ptr %111, align 8, !tbaa !23
  %286 = tail call noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112) %0, double noundef %284, double noundef 0.000000e+00, double noundef %285, double noundef 0.000000e+00)
  %287 = fadd double %283, %286
  %288 = getelementptr inbounds double, ptr %47, i64 %indvars.iv
  store double %287, ptr %288, align 8, !tbaa !23
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !25

.loopexit:                                        ; preds = %._crit_edge, %6, %4
  ret void
}

declare noundef ptr @_ZNK12CDensityGrid12alphaDensityEi(ptr noundef nonnull align 8 dereferenceable(112), i32 noundef) local_unnamed_addr #1

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZN17CDensityGridCubic7prod2_rEdddd(ptr noundef nonnull align 8 dereferenceable(112), double noundef, double noundef, double noundef, double noundef) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, double) #3

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

!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 = !{!"_ZTS17CDensityGridCubic", !7, i64 0, !10, i64 4, !11, i64 8}
!7 = !{!"_ZTS7dengrid", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"int", !8, i64 0}
!11 = !{!"_ZTS18CDensityGridData2D", !12, i64 0, !17, i64 24, !17, i64 48, !17, i64 72, !10, i64 96}
!12 = !{!"_ZTSSt6vectorIdSaIdEE", !13, i64 0}
!13 = !{!"_ZTSSt12_Vector_baseIdSaIdEE", !14, i64 0}
!14 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE12_Vector_implE", !15, i64 0}
!15 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE17_Vector_impl_dataE", !16, i64 0, !16, i64 8, !16, i64 16}
!16 = !{!"any pointer", !8, i64 0}
!17 = !{!"_ZTSSt6vectorIiSaIiEE", !18, i64 0}
!18 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !19, i64 0}
!19 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !16, i64 0, !16, i64 8, !16, i64 16}
!21 = distinct !{!21, !22}
!22 = !{!"llvm.loop.mustprogress"}
!23 = !{!24, !24, i64 0}
!24 = !{!"double", !8, i64 0}
!25 = distinct !{!25, !22}


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