; LLVM IR from QUILL-PIC/Quill :: src/deposition.ll (ZN14spatial_region11jdepositionER8particleR8vector3d)

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

%struct.int_vector3d = type { i32, i32, i32 }
%struct.vector3d = type { double, double, double }
%struct.particle = type { double, double, double, double, double, double, double, double, double, double, i32, 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 nounwind uwtable
declare dso_local noundef i32 @_Z3maxii(i32 noundef, i32 noundef) #1

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN14spatial_region11jdepositionER8particleR8vector3d(ptr noundef nonnull align 8 dereferenceable(608) %0, ptr noundef nonnull align 8 dereferenceable(104) %1, ptr noundef nonnull align 8 dereferenceable(24) %2) #2 align 2 {
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca %struct.int_vector3d, align 4
  %14 = alloca %struct.vector3d, align 8
  %15 = alloca %struct.vector3d, align 8
  %16 = alloca double, align 8
  %17 = alloca double, align 8
  %18 = alloca double, align 8
  %19 = alloca %struct.vector3d, align 8
  store ptr %0, ptr %4, align 8, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !5
  store ptr %2, ptr %6, align 8, !tbaa !5
  %20 = load ptr, ptr %4, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #6
  call void @llvm.lifetime.start.p0(i64 12, ptr %13) #6
  call void @_ZN12int_vector3dC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %13)
  call void @llvm.lifetime.start.p0(i64 24, ptr %14) #6
  call void @_ZN8vector3dC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14)
  call void @llvm.lifetime.start.p0(i64 24, ptr %15) #6
  call void @_ZN8vector3dC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15)
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #6
  %21 = load ptr, ptr %5, align 8, !tbaa !5
  %22 = getelementptr inbounds %struct.particle, ptr %21, i32 0, i32 0
  %23 = load double, ptr %22, align 8, !tbaa !9
  %24 = call double @llvm.floor.f64(double %23)
  %25 = fptosi double %24 to i32
  store i32 %25, ptr %7, align 4, !tbaa !13
  %26 = load ptr, ptr %5, align 8, !tbaa !5
  %27 = getelementptr inbounds %struct.particle, ptr %26, i32 0, i32 1
  %28 = load double, ptr %27, align 8, !tbaa !14
  %29 = call double @llvm.floor.f64(double %28)
  %30 = fptosi double %29 to i32
  store i32 %30, ptr %9, align 4, !tbaa !13
  %31 = load ptr, ptr %5, align 8, !tbaa !5
  %32 = getelementptr inbounds %struct.particle, ptr %31, i32 0, i32 2
  %33 = load double, ptr %32, align 8, !tbaa !15
  %34 = call double @llvm.floor.f64(double %33)
  %35 = fptosi double %34 to i32
  store i32 %35, ptr %11, align 4, !tbaa !13
  %36 = load ptr, ptr %5, align 8, !tbaa !5
  %37 = getelementptr inbounds %struct.particle, ptr %36, i32 0, i32 0
  %38 = load double, ptr %37, align 8, !tbaa !9
  %39 = load ptr, ptr %6, align 8, !tbaa !5
  %40 = getelementptr inbounds %struct.vector3d, ptr %39, i32 0, i32 0
  %41 = load double, ptr %40, align 8, !tbaa !16
  %42 = fadd double %38, %41
  %43 = call double @llvm.floor.f64(double %42)
  %44 = fptosi double %43 to i32
  store i32 %44, ptr %8, align 4, !tbaa !13
  %45 = load ptr, ptr %5, align 8, !tbaa !5
  %46 = getelementptr inbounds %struct.particle, ptr %45, i32 0, i32 1
  %47 = load double, ptr %46, align 8, !tbaa !14
  %48 = load ptr, ptr %6, align 8, !tbaa !5
  %49 = getelementptr inbounds %struct.vector3d, ptr %48, i32 0, i32 1
  %50 = load double, ptr %49, align 8, !tbaa !18
  %51 = fadd double %47, %50
  %52 = call double @llvm.floor.f64(double %51)
  %53 = fptosi double %52 to i32
  store i32 %53, ptr %10, align 4, !tbaa !13
  %54 = load ptr, ptr %5, align 8, !tbaa !5
  %55 = getelementptr inbounds %struct.particle, ptr %54, i32 0, i32 2
  %56 = load double, ptr %55, align 8, !tbaa !15
  %57 = load ptr, ptr %6, align 8, !tbaa !5
  %58 = getelementptr inbounds %struct.vector3d, ptr %57, i32 0, i32 2
  %59 = load double, ptr %58, align 8, !tbaa !19
  %60 = fadd double %56, %59
  %61 = call double @llvm.floor.f64(double %60)
  %62 = fptosi double %61 to i32
  store i32 %62, ptr %12, align 4, !tbaa !13
  %63 = load i32, ptr %7, align 4, !tbaa !13
  %64 = load i32, ptr %8, align 4, !tbaa !13
  %65 = icmp eq i32 %63, %64
  br i1 %65, label %66, label %417

66:                                               ; preds = %3
  %67 = load i32, ptr %9, align 4, !tbaa !13
  %68 = load i32, ptr %10, align 4, !tbaa !13
  %69 = icmp eq i32 %67, %68
  br i1 %69, label %70, label %151

70:                                               ; preds = %66
  %71 = load i32, ptr %11, align 4, !tbaa !13
  %72 = load i32, ptr %12, align 4, !tbaa !13
  %73 = icmp eq i32 %71, %72
  br i1 %73, label %74, label %85

74:                                               ; preds = %70
  %75 = load i32, ptr %7, align 4, !tbaa !13
  %76 = getelementptr inbounds %struct.int_vector3d, ptr %13, i32 0, i32 0
  store i32 %75, ptr %76, align 4, !tbaa !20
  %77 = load i32, ptr %9, align 4, !tbaa !13
  %78 = getelementptr inbounds %struct.int_vector3d, ptr %13, i32 0, i32 1
  store i32 %77, ptr %78, align 4, !tbaa !22
  %79 = load i32, ptr %11, align 4, !tbaa !13
  %80 = getelementptr inbounds %struct.int_vector3d, ptr %13, i32 0, i32 2
  store i32 %79, ptr %80, align 4, !tbaa !23
  %81 = load ptr, ptr %5, align 8, !tbaa !5
  %82 = load ptr, ptr %6, align 8, !tbaa !5
  call void @_ZN14spatial_region11simple_jdepER8particleR8vector3dR12int_vector3d(ptr noundef nonnull align 8 dereferenceable(608) %20, ptr noundef nonnull align 8 dereferenceable(104) %81, ptr noundef nonnull align 8 dereferenceable(24) %82, ptr noundef nonnull align 4 dereferenceable(12) %13)
  %83 = load ptr, ptr %5, align 8, !tbaa !5
  %84 = load ptr, ptr %6, align 8, !tbaa !5
  call void @_ZN8particle18coordinate_advanceER8vector3d(ptr noundef nonnull align 8 dereferenceable(104) %83, ptr noundef nonnull align 8 dereferenceable(24) %84)
  br label %150

85:                                               ; preds = %70
  %86 = load i32, ptr %11, align 4, !tbaa !13
  %87 = load i32, ptr %12, align 4, !tbaa !13
  %88 = call noundef i32 @_Z3maxii(i32 noundef %86, i32 noundef %87)
  %89 = sitofp i32 %88 to double
  %90 = load ptr, ptr %5, align 8, !tbaa !5
  %91 = getelementptr inbounds %struct.particle, ptr %90, i32 0, i32 2
  %92 = load double, ptr %91, align 8, !tbaa !15
  %93 = fsub double %89, %92
  %94 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 2
  store double %93, ptr %94, align 8, !tbaa !19
  %95 = load ptr, ptr %6, align 8, !tbaa !5
  %96 = getelementptr inbounds %struct.vector3d, ptr %95, i32 0, i32 0
  %97 = load double, ptr %96, align 8, !tbaa !16
  %98 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 2
  %99 = load double, ptr %98, align 8, !tbaa !19
  %100 = fmul double %97, %99
  %101 = load ptr, ptr %6, align 8, !tbaa !5
  %102 = getelementptr inbounds %struct.vector3d, ptr %101, i32 0, i32 2
  %103 = load double, ptr %102, align 8, !tbaa !19
  %104 = fdiv double %100, %103
  %105 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 0
  store double %104, ptr %105, align 8, !tbaa !16
  %106 = load ptr, ptr %6, align 8, !tbaa !5
  %107 = getelementptr inbounds %struct.vector3d, ptr %106, i32 0, i32 1
  %108 = load double, ptr %107, align 8, !tbaa !18
  %109 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 2
  %110 = load double, ptr %109, align 8, !tbaa !19
  %111 = fmul double %108, %110
  %112 = load ptr, ptr %6, align 8, !tbaa !5
  %113 = getelementptr inbounds %struct.vector3d, ptr %112, i32 0, i32 2
  %114 = load double, ptr %113, align 8, !tbaa !19
  %115 = fdiv double %111, %114
  %116 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 1
  store double %115, ptr %116, align 8, !tbaa !18
  %117 = load i32, ptr %7, align 4, !tbaa !13
  %118 = getelementptr inbounds %struct.int_vector3d, ptr %13, i32 0, i32 0
  store i32 %117, ptr %118, align 4, !tbaa !20
  %119 = load i32, ptr %9, align 4, !tbaa !13
  %120 = getelementptr inbounds %struct.int_vector3d, ptr %13, i32 0, i32 1
  store i32 %119, ptr %120, align 4, !tbaa !22
  %121 = load i32, ptr %11, align 4, !tbaa !13
  %122 = getelementptr inbounds %struct.int_vector3d, ptr %13, i32 0, i32 2
  store i32 %121, ptr %122, align 4, !tbaa !23
  %123 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN14spatial_region11simple_jdepER8particleR8vector3dR12int_vector3d(ptr noundef nonnull align 8 dereferenceable(608) %20, ptr noundef nonnull align 8 dereferenceable(104) %123, ptr noundef nonnull align 8 dereferenceable(24) %14, ptr noundef nonnull align 4 dereferenceable(12) %13)
  %124 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN8particle18coordinate_advanceER8vector3d(ptr noundef nonnull align 8 dereferenceable(104) %124, ptr noundef nonnull align 8 dereferenceable(24) %14)
  %125 = load ptr, ptr %6, align 8, !tbaa !5
  %126 = getelementptr inbounds %struct.vector3d, ptr %125, i32 0, i32 0
  %127 = load double, ptr %126, align 8, !tbaa !16
  %128 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 0
  %129 = load double, ptr %128, align 8, !tbaa !16
  %130 = fsub double %127, %129
  %131 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 0
  store double %130, ptr %131, align 8, !tbaa !16
  %132 = load ptr, ptr %6, align 8, !tbaa !5
  %133 = getelementptr inbounds %struct.vector3d, ptr %132, i32 0, i32 1
  %134 = load double, ptr %133, align 8, !tbaa !18
  %135 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 1
  %136 = load double, ptr %135, align 8, !tbaa !18
  %137 = fsub double %134, %136
  %138 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 1
  store double %137, ptr %138, align 8, !tbaa !18
  %139 = load ptr, ptr %6, align 8, !tbaa !5
  %140 = getelementptr inbounds %struct.vector3d, ptr %139, i32 0, i32 2
  %141 = load double, ptr %140, align 8, !tbaa !19
  %142 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 2
  %143 = load double, ptr %142, align 8, !tbaa !19
  %144 = fsub double %141, %143
  %145 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 2
  store double %144, ptr %145, align 8, !tbaa !19
  %146 = load i32, ptr %12, align 4, !tbaa !13
  %147 = getelementptr inbounds %struct.int_vector3d, ptr %13, i32 0, i32 2
  store i32 %146, ptr %147, align 4, !tbaa !23
  %148 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN14spatial_region11simple_jdepER8particleR8vector3dR12int_vector3d(ptr noundef nonnull align 8 dereferenceable(608) %20, ptr noundef nonnull align 8 dereferenceable(104) %148, ptr noundef nonnull align 8 dereferenceable(24) %14, ptr noundef nonnull align 4 dereferenceable(12) %13)
  %149 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN8particle18coordinate_advanceER8vector3d(ptr noundef nonnull align 8 dereferenceable(104) %149, ptr noundef nonnull align 8 dereferenceable(24) %14)
  br label %150

150:                                              ; preds = %85, %74
  br label %416

151:                                              ; preds = %66
  %152 = load i32, ptr %11, align 4, !tbaa !13
  %153 = load i32, ptr %12, align 4, !tbaa !13
  %154 = icmp eq i32 %152, %153
  br i1 %154, label %155, label %220

155:                                              ; preds = %151
  %156 = load i32, ptr %9, align 4, !tbaa !13
  %157 = load i32, ptr %10, align 4, !tbaa !13
  %158 = call noundef i32 @_Z3maxii(i32 noundef %156, i32 noundef %157)
  %159 = sitofp i32 %158 to double
  %160 = load ptr, ptr %5, align 8, !tbaa !5
  %161 = getelementptr inbounds %struct.particle, ptr %160, i32 0, i32 1
  %162 = load double, ptr %161, align 8, !tbaa !14
  %163 = fsub double %159, %162
  %164 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 1
  store double %163, ptr %164, align 8, !tbaa !18
  %165 = load ptr, ptr %6, align 8, !tbaa !5
  %166 = getelementptr inbounds %struct.vector3d, ptr %165, i32 0, i32 0
  %167 = load double, ptr %166, align 8, !tbaa !16
  %168 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 1
  %169 = load double, ptr %168, align 8, !tbaa !18
  %170 = fmul double %167, %169
  %171 = load ptr, ptr %6, align 8, !tbaa !5
  %172 = getelementptr inbounds %struct.vector3d, ptr %171, i32 0, i32 1
  %173 = load double, ptr %172, align 8, !tbaa !18
  %174 = fdiv double %170, %173
  %175 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 0
  store double %174, ptr %175, align 8, !tbaa !16
  %176 = load ptr, ptr %6, align 8, !tbaa !5
  %177 = getelementptr inbounds %struct.vector3d, ptr %176, i32 0, i32 2
  %178 = load double, ptr %177, align 8, !tbaa !19
  %179 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 1
  %180 = load double, ptr %179, align 8, !tbaa !18
  %181 = fmul double %178, %180
  %182 = load ptr, ptr %6, align 8, !tbaa !5
  %183 = getelementptr inbounds %struct.vector3d, ptr %182, i32 0, i32 1
  %184 = load double, ptr %183, align 8, !tbaa !18
  %185 = fdiv double %181, %184
  %186 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 2
  store double %185, ptr %186, align 8, !tbaa !19
  %187 = load i32, ptr %7, align 4, !tbaa !13
  %188 = getelementptr inbounds %struct.int_vector3d, ptr %13, i32 0, i32 0
  store i32 %187, ptr %188, align 4, !tbaa !20
  %189 = load i32, ptr %9, align 4, !tbaa !13
  %190 = getelementptr inbounds %struct.int_vector3d, ptr %13, i32 0, i32 1
  store i32 %189, ptr %190, align 4, !tbaa !22
  %191 = load i32, ptr %11, align 4, !tbaa !13
  %192 = getelementptr inbounds %struct.int_vector3d, ptr %13, i32 0, i32 2
  store i32 %191, ptr %192, align 4, !tbaa !23
  %193 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN14spatial_region11simple_jdepER8particleR8vector3dR12int_vector3d(ptr noundef nonnull align 8 dereferenceable(608) %20, ptr noundef nonnull align 8 dereferenceable(104) %193, ptr noundef nonnull align 8 dereferenceable(24) %14, ptr noundef nonnull align 4 dereferenceable(12) %13)
  %194 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN8particle18coordinate_advanceER8vector3d(ptr noundef nonnull align 8 dereferenceable(104) %194, ptr noundef nonnull align 8 dereferenceable(24) %14)
  %195 = load ptr, ptr %6, align 8, !tbaa !5
  %196 = getelementptr inbounds %struct.vector3d, ptr %195, i32 0, i32 0
  %197 = load double, ptr %196, align 8, !tbaa !16
  %198 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 0
  %199 = load double, ptr %198, align 8, !tbaa !16
  %200 = fsub double %197, %199
  %201 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 0
  store double %200, ptr %201, align 8, !tbaa !16
  %202 = load ptr, ptr %6, align 8, !tbaa !5
  %203 = getelementptr inbounds %struct.vector3d, ptr %202, i32 0, i32 1
  %204 = load double, ptr %203, align 8, !tbaa !18
  %205 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 1
  %206 = load double, ptr %205, align 8, !tbaa !18
  %207 = fsub double %204, %206
  %208 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 1
  store double %207, ptr %208, align 8, !tbaa !18
  %209 = load ptr, ptr %6, align 8, !tbaa !5
  %210 = getelementptr inbounds %struct.vector3d, ptr %209, i32 0, i32 2
  %211 = load double, ptr %210, align 8, !tbaa !19
  %212 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 2
  %213 = load double, ptr %212, align 8, !tbaa !19
  %214 = fsub double %211, %213
  %215 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 2
  store double %214, ptr %215, align 8, !tbaa !19
  %216 = load i32, ptr %10, align 4, !tbaa !13
  %217 = getelementptr inbounds %struct.int_vector3d, ptr %13, i32 0, i32 1
  store i32 %216, ptr %217, align 4, !tbaa !22
  %218 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN14spatial_region11simple_jdepER8particleR8vector3dR12int_vector3d(ptr noundef nonnull align 8 dereferenceable(608) %20, ptr noundef nonnull align 8 dereferenceable(104) %218, ptr noundef nonnull align 8 dereferenceable(24) %14, ptr noundef nonnull align 4 dereferenceable(12) %13)
  %219 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN8particle18coordinate_advanceER8vector3d(ptr noundef nonnull align 8 dereferenceable(104) %219, ptr noundef nonnull align 8 dereferenceable(24) %14)
  br label %415

220:                                              ; preds = %151
  %221 = load i32, ptr %9, align 4, !tbaa !13
  %222 = load i32, ptr %10, align 4, !tbaa !13
  %223 = call noundef i32 @_Z3maxii(i32 noundef %221, i32 noundef %222)
  %224 = sitofp i32 %223 to double
  %225 = load ptr, ptr %5, align 8, !tbaa !5
  %226 = getelementptr inbounds %struct.particle, ptr %225, i32 0, i32 1
  %227 = load double, ptr %226, align 8, !tbaa !14
  %228 = fsub double %224, %227
  %229 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 1
  store double %228, ptr %229, align 8, !tbaa !18
  %230 = load i32, ptr %11, align 4, !tbaa !13
  %231 = load i32, ptr %12, align 4, !tbaa !13
  %232 = call noundef i32 @_Z3maxii(i32 noundef %230, i32 noundef %231)
  %233 = sitofp i32 %232 to double
  %234 = load ptr, ptr %5, align 8, !tbaa !5
  %235 = getelementptr inbounds %struct.particle, ptr %234, i32 0, i32 2
  %236 = load double, ptr %235, align 8, !tbaa !15
  %237 = fsub double %233, %236
  %238 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 2
  store double %237, ptr %238, align 8, !tbaa !19
  %239 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 1
  %240 = load double, ptr %239, align 8, !tbaa !18
  %241 = load ptr, ptr %6, align 8, !tbaa !5
  %242 = getelementptr inbounds %struct.vector3d, ptr %241, i32 0, i32 1
  %243 = load double, ptr %242, align 8, !tbaa !18
  %244 = fdiv double %240, %243
  store double %244, ptr %16, align 8, !tbaa !24
  %245 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 2
  %246 = load double, ptr %245, align 8, !tbaa !19
  %247 = load ptr, ptr %6, align 8, !tbaa !5
  %248 = getelementptr inbounds %struct.vector3d, ptr %247, i32 0, i32 2
  %249 = load double, ptr %248, align 8, !tbaa !19
  %250 = fdiv double %246, %249
  store double %250, ptr %17, align 8, !tbaa !24
  %251 = load double, ptr %16, align 8, !tbaa !24
  %252 = load double, ptr %17, align 8, !tbaa !24
  %253 = fcmp ogt double %251, %252
  br i1 %253, label %254, label %334

254:                                              ; preds = %220
  %255 = load ptr, ptr %6, align 8, !tbaa !5
  %256 = getelementptr inbounds %struct.vector3d, ptr %255, i32 0, i32 0
  %257 = load double, ptr %256, align 8, !tbaa !16
  %258 = load double, ptr %17, align 8, !tbaa !24
  %259 = fmul double %257, %258
  %260 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 0
  store double %259, ptr %260, align 8, !tbaa !16
  %261 = load ptr, ptr %6, align 8, !tbaa !5
  %262 = getelementptr inbounds %struct.vector3d, ptr %261, i32 0, i32 1
  %263 = load double, ptr %262, align 8, !tbaa !18
  %264 = load double, ptr %17, align 8, !tbaa !24
  %265 = fmul double %263, %264
  %266 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 1
  store double %265, ptr %266, align 8, !tbaa !18
  %267 = load ptr, ptr %6, align 8, !tbaa !5
  %268 = getelementptr inbounds %struct.vector3d, ptr %267, i32 0, i32 2
  %269 = load double, ptr %268, align 8, !tbaa !19
  %270 = load double, ptr %17, align 8, !tbaa !24
  %271 = fmul double %269, %270
  %272 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 2
  store double %271, ptr %272, align 8, !tbaa !19
  %273 = load i32, ptr %7, align 4, !tbaa !13
  %274 = getelementptr inbounds %struct.int_vector3d, ptr %13, i32 0, i32 0
  store i32 %273, ptr %274, align 4, !tbaa !20
  %275 = load i32, ptr %9, align 4, !tbaa !13
  %276 = getelementptr inbounds %struct.int_vector3d, ptr %13, i32 0, i32 1
  store i32 %275, ptr %276, align 4, !tbaa !22
  %277 = load i32, ptr %11, align 4, !tbaa !13
  %278 = getelementptr inbounds %struct.int_vector3d, ptr %13, i32 0, i32 2
  store i32 %277, ptr %278, align 4, !tbaa !23
  %279 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN14spatial_region11simple_jdepER8particleR8vector3dR12int_vector3d(ptr noundef nonnull align 8 dereferenceable(608) %20, ptr noundef nonnull align 8 dereferenceable(104) %279, ptr noundef nonnull align 8 dereferenceable(24) %14, ptr noundef nonnull align 4 dereferenceable(12) %13)
  %280 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN8particle18coordinate_advanceER8vector3d(ptr noundef nonnull align 8 dereferenceable(104) %280, ptr noundef nonnull align 8 dereferenceable(24) %14)
  %281 = load ptr, ptr %6, align 8, !tbaa !5
  %282 = getelementptr inbounds %struct.vector3d, ptr %281, i32 0, i32 0
  %283 = load double, ptr %282, align 8, !tbaa !16
  %284 = load double, ptr %16, align 8, !tbaa !24
  %285 = load double, ptr %17, align 8, !tbaa !24
  %286 = fsub double %284, %285
  %287 = fmul double %283, %286
  %288 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 0
  store double %287, ptr %288, align 8, !tbaa !16
  %289 = load ptr, ptr %6, align 8, !tbaa !5
  %290 = getelementptr inbounds %struct.vector3d, ptr %289, i32 0, i32 1
  %291 = load double, ptr %290, align 8, !tbaa !18
  %292 = load double, ptr %16, align 8, !tbaa !24
  %293 = load double, ptr %17, align 8, !tbaa !24
  %294 = fsub double %292, %293
  %295 = fmul double %291, %294
  %296 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 1
  store double %295, ptr %296, align 8, !tbaa !18
  %297 = load ptr, ptr %6, align 8, !tbaa !5
  %298 = getelementptr inbounds %struct.vector3d, ptr %297, i32 0, i32 2
  %299 = load double, ptr %298, align 8, !tbaa !19
  %300 = load double, ptr %16, align 8, !tbaa !24
  %301 = load double, ptr %17, align 8, !tbaa !24
  %302 = fsub double %300, %301
  %303 = fmul double %299, %302
  %304 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 2
  store double %303, ptr %304, align 8, !tbaa !19
  %305 = load i32, ptr %12, align 4, !tbaa !13
  %306 = getelementptr inbounds %struct.int_vector3d, ptr %13, i32 0, i32 2
  store i32 %305, ptr %306, align 4, !tbaa !23
  %307 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN14spatial_region11simple_jdepER8particleR8vector3dR12int_vector3d(ptr noundef nonnull align 8 dereferenceable(608) %20, ptr noundef nonnull align 8 dereferenceable(104) %307, ptr noundef nonnull align 8 dereferenceable(24) %14, ptr noundef nonnull align 4 dereferenceable(12) %13)
  %308 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN8particle18coordinate_advanceER8vector3d(ptr noundef nonnull align 8 dereferenceable(104) %308, ptr noundef nonnull align 8 dereferenceable(24) %14)
  %309 = load ptr, ptr %6, align 8, !tbaa !5
  %310 = getelementptr inbounds %struct.vector3d, ptr %309, i32 0, i32 0
  %311 = load double, ptr %310, align 8, !tbaa !16
  %312 = load double, ptr %16, align 8, !tbaa !24
  %313 = fsub double 1.000000e+00, %312
  %314 = fmul double %311, %313
  %315 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 0
  store double %314, ptr %315, align 8, !tbaa !16
  %316 = load ptr, ptr %6, align 8, !tbaa !5
  %317 = getelementptr inbounds %struct.vector3d, ptr %316, i32 0, i32 1
  %318 = load double, ptr %317, align 8, !tbaa !18
  %319 = load double, ptr %16, align 8, !tbaa !24
  %320 = fsub double 1.000000e+00, %319
  %321 = fmul double %318, %320
  %322 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 1
  store double %321, ptr %322, align 8, !tbaa !18
  %323 = load ptr, ptr %6, align 8, !tbaa !5
  %324 = getelementptr inbounds %struct.vector3d, ptr %323, i32 0, i32 2
  %325 = load double, ptr %324, align 8, !tbaa !19
  %326 = load double, ptr %16, align 8, !tbaa !24
  %327 = fsub double 1.000000e+00, %326
  %328 = fmul double %325, %327
  %329 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 2
  store double %328, ptr %329, align 8, !tbaa !19
  %330 = load i32, ptr %10, align 4, !tbaa !13
  %331 = getelementptr inbounds %struct.int_vector3d, ptr %13, i32 0, i32 1
  store i32 %330, ptr %331, align 4, !tbaa !22
  %332 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN14spatial_region11simple_jdepER8particleR8vector3dR12int_vector3d(ptr noundef nonnull align 8 dereferenceable(608) %20, ptr noundef nonnull align 8 dereferenceable(104) %332, ptr noundef nonnull align 8 dereferenceable(24) %14, ptr noundef nonnull align 4 dereferenceable(12) %13)
  %333 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN8particle18coordinate_advanceER8vector3d(ptr noundef nonnull align 8 dereferenceable(104) %333, ptr noundef nonnull align 8 dereferenceable(24) %14)
  br label %414

334:                                              ; preds = %220
  %335 = load ptr, ptr %6, align 8, !tbaa !5
  %336 = getelementptr inbounds %struct.vector3d, ptr %335, i32 0, i32 0
  %337 = load double, ptr %336, align 8, !tbaa !16
  %338 = load double, ptr %16, align 8, !tbaa !24
  %339 = fmul double %337, %338
  %340 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 0
  store double %339, ptr %340, align 8, !tbaa !16
  %341 = load ptr, ptr %6, align 8, !tbaa !5
  %342 = getelementptr inbounds %struct.vector3d, ptr %341, i32 0, i32 1
  %343 = load double, ptr %342, align 8, !tbaa !18
  %344 = load double, ptr %16, align 8, !tbaa !24
  %345 = fmul double %343, %344
  %346 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 1
  store double %345, ptr %346, align 8, !tbaa !18
  %347 = load ptr, ptr %6, align 8, !tbaa !5
  %348 = getelementptr inbounds %struct.vector3d, ptr %347, i32 0, i32 2
  %349 = load double, ptr %348, align 8, !tbaa !19
  %350 = load double, ptr %16, align 8, !tbaa !24
  %351 = fmul double %349, %350
  %352 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 2
  store double %351, ptr %352, align 8, !tbaa !19
  %353 = load i32, ptr %7, align 4, !tbaa !13
  %354 = getelementptr inbounds %struct.int_vector3d, ptr %13, i32 0, i32 0
  store i32 %353, ptr %354, align 4, !tbaa !20
  %355 = load i32, ptr %9, align 4, !tbaa !13
  %356 = getelementptr inbounds %struct.int_vector3d, ptr %13, i32 0, i32 1
  store i32 %355, ptr %356, align 4, !tbaa !22
  %357 = load i32, ptr %11, align 4, !tbaa !13
  %358 = getelementptr inbounds %struct.int_vector3d, ptr %13, i32 0, i32 2
  store i32 %357, ptr %358, align 4, !tbaa !23
  %359 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN14spatial_region11simple_jdepER8particleR8vector3dR12int_vector3d(ptr noundef nonnull align 8 dereferenceable(608) %20, ptr noundef nonnull align 8 dereferenceable(104) %359, ptr noundef nonnull align 8 dereferenceable(24) %14, ptr noundef nonnull align 4 dereferenceable(12) %13)
  %360 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN8particle18coordinate_advanceER8vector3d(ptr noundef nonnull align 8 dereferenceable(104) %360, ptr noundef nonnull align 8 dereferenceable(24) %14)
  %361 = load ptr, ptr %6, align 8, !tbaa !5
  %362 = getelementptr inbounds %struct.vector3d, ptr %361, i32 0, i32 0
  %363 = load double, ptr %362, align 8, !tbaa !16
  %364 = load double, ptr %17, align 8, !tbaa !24
  %365 = load double, ptr %16, align 8, !tbaa !24
  %366 = fsub double %364, %365
  %367 = fmul double %363, %366
  %368 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 0
  store double %367, ptr %368, align 8, !tbaa !16
  %369 = load ptr, ptr %6, align 8, !tbaa !5
  %370 = getelementptr inbounds %struct.vector3d, ptr %369, i32 0, i32 1
  %371 = load double, ptr %370, align 8, !tbaa !18
  %372 = load double, ptr %17, align 8, !tbaa !24
  %373 = load double, ptr %16, align 8, !tbaa !24
  %374 = fsub double %372, %373
  %375 = fmul double %371, %374
  %376 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 1
  store double %375, ptr %376, align 8, !tbaa !18
  %377 = load ptr, ptr %6, align 8, !tbaa !5
  %378 = getelementptr inbounds %struct.vector3d, ptr %377, i32 0, i32 2
  %379 = load double, ptr %378, align 8, !tbaa !19
  %380 = load double, ptr %17, align 8, !tbaa !24
  %381 = load double, ptr %16, align 8, !tbaa !24
  %382 = fsub double %380, %381
  %383 = fmul double %379, %382
  %384 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 2
  store double %383, ptr %384, align 8, !tbaa !19
  %385 = load i32, ptr %10, align 4, !tbaa !13
  %386 = getelementptr inbounds %struct.int_vector3d, ptr %13, i32 0, i32 1
  store i32 %385, ptr %386, align 4, !tbaa !22
  %387 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN14spatial_region11simple_jdepER8particleR8vector3dR12int_vector3d(ptr noundef nonnull align 8 dereferenceable(608) %20, ptr noundef nonnull align 8 dereferenceable(104) %387, ptr noundef nonnull align 8 dereferenceable(24) %14, ptr noundef nonnull align 4 dereferenceable(12) %13)
  %388 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN8particle18coordinate_advanceER8vector3d(ptr noundef nonnull align 8 dereferenceable(104) %388, ptr noundef nonnull align 8 dereferenceable(24) %14)
  %389 = load ptr, ptr %6, align 8, !tbaa !5
  %390 = getelementptr inbounds %struct.vector3d, ptr %389, i32 0, i32 0
  %391 = load double, ptr %390, align 8, !tbaa !16
  %392 = load double, ptr %17, align 8, !tbaa !24
  %393 = fsub double 1.000000e+00, %392
  %394 = fmul double %391, %393
  %395 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 0
  store double %394, ptr %395, align 8, !tbaa !16
  %396 = load ptr, ptr %6, align 8, !tbaa !5
  %397 = getelementptr inbounds %struct.vector3d, ptr %396, i32 0, i32 1
  %398 = load double, ptr %397, align 8, !tbaa !18
  %399 = load double, ptr %17, align 8, !tbaa !24
  %400 = fsub double 1.000000e+00, %399
  %401 = fmul double %398, %400
  %402 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 1
  store double %401, ptr %402, align 8, !tbaa !18
  %403 = load ptr, ptr %6, align 8, !tbaa !5
  %404 = getelementptr inbounds %struct.vector3d, ptr %403, i32 0, i32 2
  %405 = load double, ptr %404, align 8, !tbaa !19
  %406 = load double, ptr %17, align 8, !tbaa !24
  %407 = fsub double 1.000000e+00, %406
  %408 = fmul double %405, %407
  %409 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 2
  store double %408, ptr %409, align 8, !tbaa !19
  %410 = load i32, ptr %12, align 4, !tbaa !13
  %411 = getelementptr inbounds %struct.int_vector3d, ptr %13, i32 0, i32 2
  store i32 %410, ptr %411, align 4, !tbaa !23
  %412 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN14spatial_region11simple_jdepER8particleR8vector3dR12int_vector3d(ptr noundef nonnull align 8 dereferenceable(608) %20, ptr noundef nonnull align 8 dereferenceable(104) %412, ptr noundef nonnull align 8 dereferenceable(24) %14, ptr noundef nonnull align 4 dereferenceable(12) %13)
  %413 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN8particle18coordinate_advanceER8vector3d(ptr noundef nonnull align 8 dereferenceable(104) %413, ptr noundef nonnull align 8 dereferenceable(24) %14)
  br label %414

414:                                              ; preds = %334, %254
  br label %415

415:                                              ; preds = %414, %155
  br label %416

416:                                              ; preds = %415, %150
  br label %1133

417:                                              ; preds = %3
  %418 = load i32, ptr %9, align 4, !tbaa !13
  %419 = load i32, ptr %10, align 4, !tbaa !13
  %420 = icmp eq i32 %418, %419
  br i1 %420, label %421, label %686

421:                                              ; preds = %417
  %422 = load i32, ptr %11, align 4, !tbaa !13
  %423 = load i32, ptr %12, align 4, !tbaa !13
  %424 = icmp eq i32 %422, %423
  br i1 %424, label %425, label %490

425:                                              ; preds = %421
  %426 = load i32, ptr %7, align 4, !tbaa !13
  %427 = load i32, ptr %8, align 4, !tbaa !13
  %428 = call noundef i32 @_Z3maxii(i32 noundef %426, i32 noundef %427)
  %429 = sitofp i32 %428 to double
  %430 = load ptr, ptr %5, align 8, !tbaa !5
  %431 = getelementptr inbounds %struct.particle, ptr %430, i32 0, i32 0
  %432 = load double, ptr %431, align 8, !tbaa !9
  %433 = fsub double %429, %432
  %434 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 0
  store double %433, ptr %434, align 8, !tbaa !16
  %435 = load ptr, ptr %6, align 8, !tbaa !5
  %436 = getelementptr inbounds %struct.vector3d, ptr %435, i32 0, i32 1
  %437 = load double, ptr %436, align 8, !tbaa !18
  %438 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 0
  %439 = load double, ptr %438, align 8, !tbaa !16
  %440 = fmul double %437, %439
  %441 = load ptr, ptr %6, align 8, !tbaa !5
  %442 = getelementptr inbounds %struct.vector3d, ptr %441, i32 0, i32 0
  %443 = load double, ptr %442, align 8, !tbaa !16
  %444 = fdiv double %440, %443
  %445 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 1
  store double %444, ptr %445, align 8, !tbaa !18
  %446 = load ptr, ptr %6, align 8, !tbaa !5
  %447 = getelementptr inbounds %struct.vector3d, ptr %446, i32 0, i32 2
  %448 = load double, ptr %447, align 8, !tbaa !19
  %449 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 0
  %450 = load double, ptr %449, align 8, !tbaa !16
  %451 = fmul double %448, %450
  %452 = load ptr, ptr %6, align 8, !tbaa !5
  %453 = getelementptr inbounds %struct.vector3d, ptr %452, i32 0, i32 0
  %454 = load double, ptr %453, align 8, !tbaa !16
  %455 = fdiv double %451, %454
  %456 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 2
  store double %455, ptr %456, align 8, !tbaa !19
  %457 = load i32, ptr %7, align 4, !tbaa !13
  %458 = getelementptr inbounds %struct.int_vector3d, ptr %13, i32 0, i32 0
  store i32 %457, ptr %458, align 4, !tbaa !20
  %459 = load i32, ptr %9, align 4, !tbaa !13
  %460 = getelementptr inbounds %struct.int_vector3d, ptr %13, i32 0, i32 1
  store i32 %459, ptr %460, align 4, !tbaa !22
  %461 = load i32, ptr %11, align 4, !tbaa !13
  %462 = getelementptr inbounds %struct.int_vector3d, ptr %13, i32 0, i32 2
  store i32 %461, ptr %462, align 4, !tbaa !23
  %463 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN14spatial_region11simple_jdepER8particleR8vector3dR12int_vector3d(ptr noundef nonnull align 8 dereferenceable(608) %20, ptr noundef nonnull align 8 dereferenceable(104) %463, ptr noundef nonnull align 8 dereferenceable(24) %14, ptr noundef nonnull align 4 dereferenceable(12) %13)
  %464 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN8particle18coordinate_advanceER8vector3d(ptr noundef nonnull align 8 dereferenceable(104) %464, ptr noundef nonnull align 8 dereferenceable(24) %14)
  %465 = load ptr, ptr %6, align 8, !tbaa !5
  %466 = getelementptr inbounds %struct.vector3d, ptr %465, i32 0, i32 0
  %467 = load double, ptr %466, align 8, !tbaa !16
  %468 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 0
  %469 = load double, ptr %468, align 8, !tbaa !16
  %470 = fsub double %467, %469
  %471 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 0
  store double %470, ptr %471, align 8, !tbaa !16
  %472 = load ptr, ptr %6, align 8, !tbaa !5
  %473 = getelementptr inbounds %struct.vector3d, ptr %472, i32 0, i32 1
  %474 = load double, ptr %473, align 8, !tbaa !18
  %475 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 1
  %476 = load double, ptr %475, align 8, !tbaa !18
  %477 = fsub double %474, %476
  %478 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 1
  store double %477, ptr %478, align 8, !tbaa !18
  %479 = load ptr, ptr %6, align 8, !tbaa !5
  %480 = getelementptr inbounds %struct.vector3d, ptr %479, i32 0, i32 2
  %481 = load double, ptr %480, align 8, !tbaa !19
  %482 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 2
  %483 = load double, ptr %482, align 8, !tbaa !19
  %484 = fsub double %481, %483
  %485 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 2
  store double %484, ptr %485, align 8, !tbaa !19
  %486 = load i32, ptr %8, align 4, !tbaa !13
  %487 = getelementptr inbounds %struct.int_vector3d, ptr %13, i32 0, i32 0
  store i32 %486, ptr %487, align 4, !tbaa !20
  %488 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN14spatial_region11simple_jdepER8particleR8vector3dR12int_vector3d(ptr noundef nonnull align 8 dereferenceable(608) %20, ptr noundef nonnull align 8 dereferenceable(104) %488, ptr noundef nonnull align 8 dereferenceable(24) %14, ptr noundef nonnull align 4 dereferenceable(12) %13)
  %489 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN8particle18coordinate_advanceER8vector3d(ptr noundef nonnull align 8 dereferenceable(104) %489, ptr noundef nonnull align 8 dereferenceable(24) %14)
  br label %685

490:                                              ; preds = %421
  %491 = load i32, ptr %7, align 4, !tbaa !13
  %492 = load i32, ptr %8, align 4, !tbaa !13
  %493 = call noundef i32 @_Z3maxii(i32 noundef %491, i32 noundef %492)
  %494 = sitofp i32 %493 to double
  %495 = load ptr, ptr %5, align 8, !tbaa !5
  %496 = getelementptr inbounds %struct.particle, ptr %495, i32 0, i32 0
  %497 = load double, ptr %496, align 8, !tbaa !9
  %498 = fsub double %494, %497
  %499 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 0
  store double %498, ptr %499, align 8, !tbaa !16
  %500 = load i32, ptr %11, align 4, !tbaa !13
  %501 = load i32, ptr %12, align 4, !tbaa !13
  %502 = call noundef i32 @_Z3maxii(i32 noundef %500, i32 noundef %501)
  %503 = sitofp i32 %502 to double
  %504 = load ptr, ptr %5, align 8, !tbaa !5
  %505 = getelementptr inbounds %struct.particle, ptr %504, i32 0, i32 2
  %506 = load double, ptr %505, align 8, !tbaa !15
  %507 = fsub double %503, %506
  %508 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 2
  store double %507, ptr %508, align 8, !tbaa !19
  %509 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 0
  %510 = load double, ptr %509, align 8, !tbaa !16
  %511 = load ptr, ptr %6, align 8, !tbaa !5
  %512 = getelementptr inbounds %struct.vector3d, ptr %511, i32 0, i32 0
  %513 = load double, ptr %512, align 8, !tbaa !16
  %514 = fdiv double %510, %513
  store double %514, ptr %16, align 8, !tbaa !24
  %515 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 2
  %516 = load double, ptr %515, align 8, !tbaa !19
  %517 = load ptr, ptr %6, align 8, !tbaa !5
  %518 = getelementptr inbounds %struct.vector3d, ptr %517, i32 0, i32 2
  %519 = load double, ptr %518, align 8, !tbaa !19
  %520 = fdiv double %516, %519
  store double %520, ptr %17, align 8, !tbaa !24
  %521 = load double, ptr %16, align 8, !tbaa !24
  %522 = load double, ptr %17, align 8, !tbaa !24
  %523 = fcmp ogt double %521, %522
  br i1 %523, label %524, label %604

524:                                              ; preds = %490
  %525 = load ptr, ptr %6, align 8, !tbaa !5
  %526 = getelementptr inbounds %struct.vector3d, ptr %525, i32 0, i32 0
  %527 = load double, ptr %526, align 8, !tbaa !16
  %528 = load double, ptr %17, align 8, !tbaa !24
  %529 = fmul double %527, %528
  %530 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 0
  store double %529, ptr %530, align 8, !tbaa !16
  %531 = load ptr, ptr %6, align 8, !tbaa !5
  %532 = getelementptr inbounds %struct.vector3d, ptr %531, i32 0, i32 1
  %533 = load double, ptr %532, align 8, !tbaa !18
  %534 = load double, ptr %17, align 8, !tbaa !24
  %535 = fmul double %533, %534
  %536 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 1
  store double %535, ptr %536, align 8, !tbaa !18
  %537 = load ptr, ptr %6, align 8, !tbaa !5
  %538 = getelementptr inbounds %struct.vector3d, ptr %537, i32 0, i32 2
  %539 = load double, ptr %538, align 8, !tbaa !19
  %540 = load double, ptr %17, align 8, !tbaa !24
  %541 = fmul double %539, %540
  %542 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 2
  store double %541, ptr %542, align 8, !tbaa !19
  %543 = load i32, ptr %7, align 4, !tbaa !13
  %544 = getelementptr inbounds %struct.int_vector3d, ptr %13, i32 0, i32 0
  store i32 %543, ptr %544, align 4, !tbaa !20
  %545 = load i32, ptr %9, align 4, !tbaa !13
  %546 = getelementptr inbounds %struct.int_vector3d, ptr %13, i32 0, i32 1
  store i32 %545, ptr %546, align 4, !tbaa !22
  %547 = load i32, ptr %11, align 4, !tbaa !13
  %548 = getelementptr inbounds %struct.int_vector3d, ptr %13, i32 0, i32 2
  store i32 %547, ptr %548, align 4, !tbaa !23
  %549 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN14spatial_region11simple_jdepER8particleR8vector3dR12int_vector3d(ptr noundef nonnull align 8 dereferenceable(608) %20, ptr noundef nonnull align 8 dereferenceable(104) %549, ptr noundef nonnull align 8 dereferenceable(24) %14, ptr noundef nonnull align 4 dereferenceable(12) %13)
  %550 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN8particle18coordinate_advanceER8vector3d(ptr noundef nonnull align 8 dereferenceable(104) %550, ptr noundef nonnull align 8 dereferenceable(24) %14)
  %551 = load ptr, ptr %6, align 8, !tbaa !5
  %552 = getelementptr inbounds %struct.vector3d, ptr %551, i32 0, i32 0
  %553 = load double, ptr %552, align 8, !tbaa !16
  %554 = load double, ptr %16, align 8, !tbaa !24
  %555 = load double, ptr %17, align 8, !tbaa !24
  %556 = fsub double %554, %555
  %557 = fmul double %553, %556
  %558 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 0
  store double %557, ptr %558, align 8, !tbaa !16
  %559 = load ptr, ptr %6, align 8, !tbaa !5
  %560 = getelementptr inbounds %struct.vector3d, ptr %559, i32 0, i32 1
  %561 = load double, ptr %560, align 8, !tbaa !18
  %562 = load double, ptr %16, align 8, !tbaa !24
  %563 = load double, ptr %17, align 8, !tbaa !24
  %564 = fsub double %562, %563
  %565 = fmul double %561, %564
  %566 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 1
  store double %565, ptr %566, align 8, !tbaa !18
  %567 = load ptr, ptr %6, align 8, !tbaa !5
  %568 = getelementptr inbounds %struct.vector3d, ptr %567, i32 0, i32 2
  %569 = load double, ptr %568, align 8, !tbaa !19
  %570 = load double, ptr %16, align 8, !tbaa !24
  %571 = load double, ptr %17, align 8, !tbaa !24
  %572 = fsub double %570, %571
  %573 = fmul double %569, %572
  %574 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 2
  store double %573, ptr %574, align 8, !tbaa !19
  %575 = load i32, ptr %12, align 4, !tbaa !13
  %576 = getelementptr inbounds %struct.int_vector3d, ptr %13, i32 0, i32 2
  store i32 %575, ptr %576, align 4, !tbaa !23
  %577 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN14spatial_region11simple_jdepER8particleR8vector3dR12int_vector3d(ptr noundef nonnull align 8 dereferenceable(608) %20, ptr noundef nonnull align 8 dereferenceable(104) %577, ptr noundef nonnull align 8 dereferenceable(24) %14, ptr noundef nonnull align 4 dereferenceable(12) %13)
  %578 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN8particle18coordinate_advanceER8vector3d(ptr noundef nonnull align 8 dereferenceable(104) %578, ptr noundef nonnull align 8 dereferenceable(24) %14)
  %579 = load ptr, ptr %6, align 8, !tbaa !5
  %580 = getelementptr inbounds %struct.vector3d, ptr %579, i32 0, i32 0
  %581 = load double, ptr %580, align 8, !tbaa !16
  %582 = load double, ptr %16, align 8, !tbaa !24
  %583 = fsub double 1.000000e+00, %582
  %584 = fmul double %581, %583
  %585 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 0
  store double %584, ptr %585, align 8, !tbaa !16
  %586 = load ptr, ptr %6, align 8, !tbaa !5
  %587 = getelementptr inbounds %struct.vector3d, ptr %586, i32 0, i32 1
  %588 = load double, ptr %587, align 8, !tbaa !18
  %589 = load double, ptr %16, align 8, !tbaa !24
  %590 = fsub double 1.000000e+00, %589
  %591 = fmul double %588, %590
  %592 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 1
  store double %591, ptr %592, align 8, !tbaa !18
  %593 = load ptr, ptr %6, align 8, !tbaa !5
  %594 = getelementptr inbounds %struct.vector3d, ptr %593, i32 0, i32 2
  %595 = load double, ptr %594, align 8, !tbaa !19
  %596 = load double, ptr %16, align 8, !tbaa !24
  %597 = fsub double 1.000000e+00, %596
  %598 = fmul double %595, %597
  %599 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 2
  store double %598, ptr %599, align 8, !tbaa !19
  %600 = load i32, ptr %8, align 4, !tbaa !13
  %601 = getelementptr inbounds %struct.int_vector3d, ptr %13, i32 0, i32 0
  store i32 %600, ptr %601, align 4, !tbaa !20
  %602 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN14spatial_region11simple_jdepER8particleR8vector3dR12int_vector3d(ptr noundef nonnull align 8 dereferenceable(608) %20, ptr noundef nonnull align 8 dereferenceable(104) %602, ptr noundef nonnull align 8 dereferenceable(24) %14, ptr noundef nonnull align 4 dereferenceable(12) %13)
  %603 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN8particle18coordinate_advanceER8vector3d(ptr noundef nonnull align 8 dereferenceable(104) %603, ptr noundef nonnull align 8 dereferenceable(24) %14)
  br label %684

604:                                              ; preds = %490
  %605 = load ptr, ptr %6, align 8, !tbaa !5
  %606 = getelementptr inbounds %struct.vector3d, ptr %605, i32 0, i32 0
  %607 = load double, ptr %606, align 8, !tbaa !16
  %608 = load double, ptr %16, align 8, !tbaa !24
  %609 = fmul double %607, %608
  %610 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 0
  store double %609, ptr %610, align 8, !tbaa !16
  %611 = load ptr, ptr %6, align 8, !tbaa !5
  %612 = getelementptr inbounds %struct.vector3d, ptr %611, i32 0, i32 1
  %613 = load double, ptr %612, align 8, !tbaa !18
  %614 = load double, ptr %16, align 8, !tbaa !24
  %615 = fmul double %613, %614
  %616 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 1
  store double %615, ptr %616, align 8, !tbaa !18
  %617 = load ptr, ptr %6, align 8, !tbaa !5
  %618 = getelementptr inbounds %struct.vector3d, ptr %617, i32 0, i32 2
  %619 = load double, ptr %618, align 8, !tbaa !19
  %620 = load double, ptr %16, align 8, !tbaa !24
  %621 = fmul double %619, %620
  %622 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 2
  store double %621, ptr %622, align 8, !tbaa !19
  %623 = load i32, ptr %7, align 4, !tbaa !13
  %624 = getelementptr inbounds %struct.int_vector3d, ptr %13, i32 0, i32 0
  store i32 %623, ptr %624, align 4, !tbaa !20
  %625 = load i32, ptr %9, align 4, !tbaa !13
  %626 = getelementptr inbounds %struct.int_vector3d, ptr %13, i32 0, i32 1
  store i32 %625, ptr %626, align 4, !tbaa !22
  %627 = load i32, ptr %11, align 4, !tbaa !13
  %628 = getelementptr inbounds %struct.int_vector3d, ptr %13, i32 0, i32 2
  store i32 %627, ptr %628, align 4, !tbaa !23
  %629 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN14spatial_region11simple_jdepER8particleR8vector3dR12int_vector3d(ptr noundef nonnull align 8 dereferenceable(608) %20, ptr noundef nonnull align 8 dereferenceable(104) %629, ptr noundef nonnull align 8 dereferenceable(24) %14, ptr noundef nonnull align 4 dereferenceable(12) %13)
  %630 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN8particle18coordinate_advanceER8vector3d(ptr noundef nonnull align 8 dereferenceable(104) %630, ptr noundef nonnull align 8 dereferenceable(24) %14)
  %631 = load ptr, ptr %6, align 8, !tbaa !5
  %632 = getelementptr inbounds %struct.vector3d, ptr %631, i32 0, i32 0
  %633 = load double, ptr %632, align 8, !tbaa !16
  %634 = load double, ptr %17, align 8, !tbaa !24
  %635 = load double, ptr %16, align 8, !tbaa !24
  %636 = fsub double %634, %635
  %637 = fmul double %633, %636
  %638 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 0
  store double %637, ptr %638, align 8, !tbaa !16
  %639 = load ptr, ptr %6, align 8, !tbaa !5
  %640 = getelementptr inbounds %struct.vector3d, ptr %639, i32 0, i32 1
  %641 = load double, ptr %640, align 8, !tbaa !18
  %642 = load double, ptr %17, align 8, !tbaa !24
  %643 = load double, ptr %16, align 8, !tbaa !24
  %644 = fsub double %642, %643
  %645 = fmul double %641, %644
  %646 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 1
  store double %645, ptr %646, align 8, !tbaa !18
  %647 = load ptr, ptr %6, align 8, !tbaa !5
  %648 = getelementptr inbounds %struct.vector3d, ptr %647, i32 0, i32 2
  %649 = load double, ptr %648, align 8, !tbaa !19
  %650 = load double, ptr %17, align 8, !tbaa !24
  %651 = load double, ptr %16, align 8, !tbaa !24
  %652 = fsub double %650, %651
  %653 = fmul double %649, %652
  %654 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 2
  store double %653, ptr %654, align 8, !tbaa !19
  %655 = load i32, ptr %8, align 4, !tbaa !13
  %656 = getelementptr inbounds %struct.int_vector3d, ptr %13, i32 0, i32 0
  store i32 %655, ptr %656, align 4, !tbaa !20
  %657 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN14spatial_region11simple_jdepER8particleR8vector3dR12int_vector3d(ptr noundef nonnull align 8 dereferenceable(608) %20, ptr noundef nonnull align 8 dereferenceable(104) %657, ptr noundef nonnull align 8 dereferenceable(24) %14, ptr noundef nonnull align 4 dereferenceable(12) %13)
  %658 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN8particle18coordinate_advanceER8vector3d(ptr noundef nonnull align 8 dereferenceable(104) %658, ptr noundef nonnull align 8 dereferenceable(24) %14)
  %659 = load ptr, ptr %6, align 8, !tbaa !5
  %660 = getelementptr inbounds %struct.vector3d, ptr %659, i32 0, i32 0
  %661 = load double, ptr %660, align 8, !tbaa !16
  %662 = load double, ptr %17, align 8, !tbaa !24
  %663 = fsub double 1.000000e+00, %662
  %664 = fmul double %661, %663
  %665 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 0
  store double %664, ptr %665, align 8, !tbaa !16
  %666 = load ptr, ptr %6, align 8, !tbaa !5
  %667 = getelementptr inbounds %struct.vector3d, ptr %666, i32 0, i32 1
  %668 = load double, ptr %667, align 8, !tbaa !18
  %669 = load double, ptr %17, align 8, !tbaa !24
  %670 = fsub double 1.000000e+00, %669
  %671 = fmul double %668, %670
  %672 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 1
  store double %671, ptr %672, align 8, !tbaa !18
  %673 = load ptr, ptr %6, align 8, !tbaa !5
  %674 = getelementptr inbounds %struct.vector3d, ptr %673, i32 0, i32 2
  %675 = load double, ptr %674, align 8, !tbaa !19
  %676 = load double, ptr %17, align 8, !tbaa !24
  %677 = fsub double 1.000000e+00, %676
  %678 = fmul double %675, %677
  %679 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 2
  store double %678, ptr %679, align 8, !tbaa !19
  %680 = load i32, ptr %12, align 4, !tbaa !13
  %681 = getelementptr inbounds %struct.int_vector3d, ptr %13, i32 0, i32 2
  store i32 %680, ptr %681, align 4, !tbaa !23
  %682 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN14spatial_region11simple_jdepER8particleR8vector3dR12int_vector3d(ptr noundef nonnull align 8 dereferenceable(608) %20, ptr noundef nonnull align 8 dereferenceable(104) %682, ptr noundef nonnull align 8 dereferenceable(24) %14, ptr noundef nonnull align 4 dereferenceable(12) %13)
  %683 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN8particle18coordinate_advanceER8vector3d(ptr noundef nonnull align 8 dereferenceable(104) %683, ptr noundef nonnull align 8 dereferenceable(24) %14)
  br label %684

684:                                              ; preds = %604, %524
  br label %685

685:                                              ; preds = %684, %425
  br label %1132

686:                                              ; preds = %417
  %687 = load i32, ptr %11, align 4, !tbaa !13
  %688 = load i32, ptr %12, align 4, !tbaa !13
  %689 = icmp eq i32 %687, %688
  br i1 %689, label %690, label %885

690:                                              ; preds = %686
  %691 = load i32, ptr %9, align 4, !tbaa !13
  %692 = load i32, ptr %10, align 4, !tbaa !13
  %693 = call noundef i32 @_Z3maxii(i32 noundef %691, i32 noundef %692)
  %694 = sitofp i32 %693 to double
  %695 = load ptr, ptr %5, align 8, !tbaa !5
  %696 = getelementptr inbounds %struct.particle, ptr %695, i32 0, i32 1
  %697 = load double, ptr %696, align 8, !tbaa !14
  %698 = fsub double %694, %697
  %699 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 1
  store double %698, ptr %699, align 8, !tbaa !18
  %700 = load i32, ptr %7, align 4, !tbaa !13
  %701 = load i32, ptr %8, align 4, !tbaa !13
  %702 = call noundef i32 @_Z3maxii(i32 noundef %700, i32 noundef %701)
  %703 = sitofp i32 %702 to double
  %704 = load ptr, ptr %5, align 8, !tbaa !5
  %705 = getelementptr inbounds %struct.particle, ptr %704, i32 0, i32 0
  %706 = load double, ptr %705, align 8, !tbaa !9
  %707 = fsub double %703, %706
  %708 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 0
  store double %707, ptr %708, align 8, !tbaa !16
  %709 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 1
  %710 = load double, ptr %709, align 8, !tbaa !18
  %711 = load ptr, ptr %6, align 8, !tbaa !5
  %712 = getelementptr inbounds %struct.vector3d, ptr %711, i32 0, i32 1
  %713 = load double, ptr %712, align 8, !tbaa !18
  %714 = fdiv double %710, %713
  store double %714, ptr %16, align 8, !tbaa !24
  %715 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 0
  %716 = load double, ptr %715, align 8, !tbaa !16
  %717 = load ptr, ptr %6, align 8, !tbaa !5
  %718 = getelementptr inbounds %struct.vector3d, ptr %717, i32 0, i32 0
  %719 = load double, ptr %718, align 8, !tbaa !16
  %720 = fdiv double %716, %719
  store double %720, ptr %17, align 8, !tbaa !24
  %721 = load double, ptr %16, align 8, !tbaa !24
  %722 = load double, ptr %17, align 8, !tbaa !24
  %723 = fcmp ogt double %721, %722
  br i1 %723, label %724, label %804

724:                                              ; preds = %690
  %725 = load ptr, ptr %6, align 8, !tbaa !5
  %726 = getelementptr inbounds %struct.vector3d, ptr %725, i32 0, i32 0
  %727 = load double, ptr %726, align 8, !tbaa !16
  %728 = load double, ptr %17, align 8, !tbaa !24
  %729 = fmul double %727, %728
  %730 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 0
  store double %729, ptr %730, align 8, !tbaa !16
  %731 = load ptr, ptr %6, align 8, !tbaa !5
  %732 = getelementptr inbounds %struct.vector3d, ptr %731, i32 0, i32 1
  %733 = load double, ptr %732, align 8, !tbaa !18
  %734 = load double, ptr %17, align 8, !tbaa !24
  %735 = fmul double %733, %734
  %736 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 1
  store double %735, ptr %736, align 8, !tbaa !18
  %737 = load ptr, ptr %6, align 8, !tbaa !5
  %738 = getelementptr inbounds %struct.vector3d, ptr %737, i32 0, i32 2
  %739 = load double, ptr %738, align 8, !tbaa !19
  %740 = load double, ptr %17, align 8, !tbaa !24
  %741 = fmul double %739, %740
  %742 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 2
  store double %741, ptr %742, align 8, !tbaa !19
  %743 = load i32, ptr %7, align 4, !tbaa !13
  %744 = getelementptr inbounds %struct.int_vector3d, ptr %13, i32 0, i32 0
  store i32 %743, ptr %744, align 4, !tbaa !20
  %745 = load i32, ptr %9, align 4, !tbaa !13
  %746 = getelementptr inbounds %struct.int_vector3d, ptr %13, i32 0, i32 1
  store i32 %745, ptr %746, align 4, !tbaa !22
  %747 = load i32, ptr %11, align 4, !tbaa !13
  %748 = getelementptr inbounds %struct.int_vector3d, ptr %13, i32 0, i32 2
  store i32 %747, ptr %748, align 4, !tbaa !23
  %749 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN14spatial_region11simple_jdepER8particleR8vector3dR12int_vector3d(ptr noundef nonnull align 8 dereferenceable(608) %20, ptr noundef nonnull align 8 dereferenceable(104) %749, ptr noundef nonnull align 8 dereferenceable(24) %14, ptr noundef nonnull align 4 dereferenceable(12) %13)
  %750 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN8particle18coordinate_advanceER8vector3d(ptr noundef nonnull align 8 dereferenceable(104) %750, ptr noundef nonnull align 8 dereferenceable(24) %14)
  %751 = load ptr, ptr %6, align 8, !tbaa !5
  %752 = getelementptr inbounds %struct.vector3d, ptr %751, i32 0, i32 0
  %753 = load double, ptr %752, align 8, !tbaa !16
  %754 = load double, ptr %16, align 8, !tbaa !24
  %755 = load double, ptr %17, align 8, !tbaa !24
  %756 = fsub double %754, %755
  %757 = fmul double %753, %756
  %758 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 0
  store double %757, ptr %758, align 8, !tbaa !16
  %759 = load ptr, ptr %6, align 8, !tbaa !5
  %760 = getelementptr inbounds %struct.vector3d, ptr %759, i32 0, i32 1
  %761 = load double, ptr %760, align 8, !tbaa !18
  %762 = load double, ptr %16, align 8, !tbaa !24
  %763 = load double, ptr %17, align 8, !tbaa !24
  %764 = fsub double %762, %763
  %765 = fmul double %761, %764
  %766 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 1
  store double %765, ptr %766, align 8, !tbaa !18
  %767 = load ptr, ptr %6, align 8, !tbaa !5
  %768 = getelementptr inbounds %struct.vector3d, ptr %767, i32 0, i32 2
  %769 = load double, ptr %768, align 8, !tbaa !19
  %770 = load double, ptr %16, align 8, !tbaa !24
  %771 = load double, ptr %17, align 8, !tbaa !24
  %772 = fsub double %770, %771
  %773 = fmul double %769, %772
  %774 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 2
  store double %773, ptr %774, align 8, !tbaa !19
  %775 = load i32, ptr %8, align 4, !tbaa !13
  %776 = getelementptr inbounds %struct.int_vector3d, ptr %13, i32 0, i32 0
  store i32 %775, ptr %776, align 4, !tbaa !20
  %777 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN14spatial_region11simple_jdepER8particleR8vector3dR12int_vector3d(ptr noundef nonnull align 8 dereferenceable(608) %20, ptr noundef nonnull align 8 dereferenceable(104) %777, ptr noundef nonnull align 8 dereferenceable(24) %14, ptr noundef nonnull align 4 dereferenceable(12) %13)
  %778 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN8particle18coordinate_advanceER8vector3d(ptr noundef nonnull align 8 dereferenceable(104) %778, ptr noundef nonnull align 8 dereferenceable(24) %14)
  %779 = load ptr, ptr %6, align 8, !tbaa !5
  %780 = getelementptr inbounds %struct.vector3d, ptr %779, i32 0, i32 0
  %781 = load double, ptr %780, align 8, !tbaa !16
  %782 = load double, ptr %16, align 8, !tbaa !24
  %783 = fsub double 1.000000e+00, %782
  %784 = fmul double %781, %783
  %785 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 0
  store double %784, ptr %785, align 8, !tbaa !16
  %786 = load ptr, ptr %6, align 8, !tbaa !5
  %787 = getelementptr inbounds %struct.vector3d, ptr %786, i32 0, i32 1
  %788 = load double, ptr %787, align 8, !tbaa !18
  %789 = load double, ptr %16, align 8, !tbaa !24
  %790 = fsub double 1.000000e+00, %789
  %791 = fmul double %788, %790
  %792 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 1
  store double %791, ptr %792, align 8, !tbaa !18
  %793 = load ptr, ptr %6, align 8, !tbaa !5
  %794 = getelementptr inbounds %struct.vector3d, ptr %793, i32 0, i32 2
  %795 = load double, ptr %794, align 8, !tbaa !19
  %796 = load double, ptr %16, align 8, !tbaa !24
  %797 = fsub double 1.000000e+00, %796
  %798 = fmul double %795, %797
  %799 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 2
  store double %798, ptr %799, align 8, !tbaa !19
  %800 = load i32, ptr %10, align 4, !tbaa !13
  %801 = getelementptr inbounds %struct.int_vector3d, ptr %13, i32 0, i32 1
  store i32 %800, ptr %801, align 4, !tbaa !22
  %802 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN14spatial_region11simple_jdepER8particleR8vector3dR12int_vector3d(ptr noundef nonnull align 8 dereferenceable(608) %20, ptr noundef nonnull align 8 dereferenceable(104) %802, ptr noundef nonnull align 8 dereferenceable(24) %14, ptr noundef nonnull align 4 dereferenceable(12) %13)
  %803 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN8particle18coordinate_advanceER8vector3d(ptr noundef nonnull align 8 dereferenceable(104) %803, ptr noundef nonnull align 8 dereferenceable(24) %14)
  br label %884

804:                                              ; preds = %690
  %805 = load ptr, ptr %6, align 8, !tbaa !5
  %806 = getelementptr inbounds %struct.vector3d, ptr %805, i32 0, i32 0
  %807 = load double, ptr %806, align 8, !tbaa !16
  %808 = load double, ptr %16, align 8, !tbaa !24
  %809 = fmul double %807, %808
  %810 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 0
  store double %809, ptr %810, align 8, !tbaa !16
  %811 = load ptr, ptr %6, align 8, !tbaa !5
  %812 = getelementptr inbounds %struct.vector3d, ptr %811, i32 0, i32 1
  %813 = load double, ptr %812, align 8, !tbaa !18
  %814 = load double, ptr %16, align 8, !tbaa !24
  %815 = fmul double %813, %814
  %816 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 1
  store double %815, ptr %816, align 8, !tbaa !18
  %817 = load ptr, ptr %6, align 8, !tbaa !5
  %818 = getelementptr inbounds %struct.vector3d, ptr %817, i32 0, i32 2
  %819 = load double, ptr %818, align 8, !tbaa !19
  %820 = load double, ptr %16, align 8, !tbaa !24
  %821 = fmul double %819, %820
  %822 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 2
  store double %821, ptr %822, align 8, !tbaa !19
  %823 = load i32, ptr %7, align 4, !tbaa !13
  %824 = getelementptr inbounds %struct.int_vector3d, ptr %13, i32 0, i32 0
  store i32 %823, ptr %824, align 4, !tbaa !20
  %825 = load i32, ptr %9, align 4, !tbaa !13
  %826 = getelementptr inbounds %struct.int_vector3d, ptr %13, i32 0, i32 1
  store i32 %825, ptr %826, align 4, !tbaa !22
  %827 = load i32, ptr %11, align 4, !tbaa !13
  %828 = getelementptr inbounds %struct.int_vector3d, ptr %13, i32 0, i32 2
  store i32 %827, ptr %828, align 4, !tbaa !23
  %829 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN14spatial_region11simple_jdepER8particleR8vector3dR12int_vector3d(ptr noundef nonnull align 8 dereferenceable(608) %20, ptr noundef nonnull align 8 dereferenceable(104) %829, ptr noundef nonnull align 8 dereferenceable(24) %14, ptr noundef nonnull align 4 dereferenceable(12) %13)
  %830 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN8particle18coordinate_advanceER8vector3d(ptr noundef nonnull align 8 dereferenceable(104) %830, ptr noundef nonnull align 8 dereferenceable(24) %14)
  %831 = load ptr, ptr %6, align 8, !tbaa !5
  %832 = getelementptr inbounds %struct.vector3d, ptr %831, i32 0, i32 0
  %833 = load double, ptr %832, align 8, !tbaa !16
  %834 = load double, ptr %17, align 8, !tbaa !24
  %835 = load double, ptr %16, align 8, !tbaa !24
  %836 = fsub double %834, %835
  %837 = fmul double %833, %836
  %838 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 0
  store double %837, ptr %838, align 8, !tbaa !16
  %839 = load ptr, ptr %6, align 8, !tbaa !5
  %840 = getelementptr inbounds %struct.vector3d, ptr %839, i32 0, i32 1
  %841 = load double, ptr %840, align 8, !tbaa !18
  %842 = load double, ptr %17, align 8, !tbaa !24
  %843 = load double, ptr %16, align 8, !tbaa !24
  %844 = fsub double %842, %843
  %845 = fmul double %841, %844
  %846 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 1
  store double %845, ptr %846, align 8, !tbaa !18
  %847 = load ptr, ptr %6, align 8, !tbaa !5
  %848 = getelementptr inbounds %struct.vector3d, ptr %847, i32 0, i32 2
  %849 = load double, ptr %848, align 8, !tbaa !19
  %850 = load double, ptr %17, align 8, !tbaa !24
  %851 = load double, ptr %16, align 8, !tbaa !24
  %852 = fsub double %850, %851
  %853 = fmul double %849, %852
  %854 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 2
  store double %853, ptr %854, align 8, !tbaa !19
  %855 = load i32, ptr %10, align 4, !tbaa !13
  %856 = getelementptr inbounds %struct.int_vector3d, ptr %13, i32 0, i32 1
  store i32 %855, ptr %856, align 4, !tbaa !22
  %857 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN14spatial_region11simple_jdepER8particleR8vector3dR12int_vector3d(ptr noundef nonnull align 8 dereferenceable(608) %20, ptr noundef nonnull align 8 dereferenceable(104) %857, ptr noundef nonnull align 8 dereferenceable(24) %14, ptr noundef nonnull align 4 dereferenceable(12) %13)
  %858 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN8particle18coordinate_advanceER8vector3d(ptr noundef nonnull align 8 dereferenceable(104) %858, ptr noundef nonnull align 8 dereferenceable(24) %14)
  %859 = load ptr, ptr %6, align 8, !tbaa !5
  %860 = getelementptr inbounds %struct.vector3d, ptr %859, i32 0, i32 0
  %861 = load double, ptr %860, align 8, !tbaa !16
  %862 = load double, ptr %17, align 8, !tbaa !24
  %863 = fsub double 1.000000e+00, %862
  %864 = fmul double %861, %863
  %865 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 0
  store double %864, ptr %865, align 8, !tbaa !16
  %866 = load ptr, ptr %6, align 8, !tbaa !5
  %867 = getelementptr inbounds %struct.vector3d, ptr %866, i32 0, i32 1
  %868 = load double, ptr %867, align 8, !tbaa !18
  %869 = load double, ptr %17, align 8, !tbaa !24
  %870 = fsub double 1.000000e+00, %869
  %871 = fmul double %868, %870
  %872 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 1
  store double %871, ptr %872, align 8, !tbaa !18
  %873 = load ptr, ptr %6, align 8, !tbaa !5
  %874 = getelementptr inbounds %struct.vector3d, ptr %873, i32 0, i32 2
  %875 = load double, ptr %874, align 8, !tbaa !19
  %876 = load double, ptr %17, align 8, !tbaa !24
  %877 = fsub double 1.000000e+00, %876
  %878 = fmul double %875, %877
  %879 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 2
  store double %878, ptr %879, align 8, !tbaa !19
  %880 = load i32, ptr %8, align 4, !tbaa !13
  %881 = getelementptr inbounds %struct.int_vector3d, ptr %13, i32 0, i32 0
  store i32 %880, ptr %881, align 4, !tbaa !20
  %882 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN14spatial_region11simple_jdepER8particleR8vector3dR12int_vector3d(ptr noundef nonnull align 8 dereferenceable(608) %20, ptr noundef nonnull align 8 dereferenceable(104) %882, ptr noundef nonnull align 8 dereferenceable(24) %14, ptr noundef nonnull align 4 dereferenceable(12) %13)
  %883 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN8particle18coordinate_advanceER8vector3d(ptr noundef nonnull align 8 dereferenceable(104) %883, ptr noundef nonnull align 8 dereferenceable(24) %14)
  br label %884

884:                                              ; preds = %804, %724
  br label %1131

885:                                              ; preds = %686
  %886 = load i32, ptr %7, align 4, !tbaa !13
  %887 = load i32, ptr %8, align 4, !tbaa !13
  %888 = call noundef i32 @_Z3maxii(i32 noundef %886, i32 noundef %887)
  %889 = sitofp i32 %888 to double
  %890 = load ptr, ptr %5, align 8, !tbaa !5
  %891 = getelementptr inbounds %struct.particle, ptr %890, i32 0, i32 0
  %892 = load double, ptr %891, align 8, !tbaa !9
  %893 = fsub double %889, %892
  %894 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 0
  store double %893, ptr %894, align 8, !tbaa !16
  %895 = load i32, ptr %9, align 4, !tbaa !13
  %896 = load i32, ptr %10, align 4, !tbaa !13
  %897 = call noundef i32 @_Z3maxii(i32 noundef %895, i32 noundef %896)
  %898 = sitofp i32 %897 to double
  %899 = load ptr, ptr %5, align 8, !tbaa !5
  %900 = getelementptr inbounds %struct.particle, ptr %899, i32 0, i32 1
  %901 = load double, ptr %900, align 8, !tbaa !14
  %902 = fsub double %898, %901
  %903 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 1
  store double %902, ptr %903, align 8, !tbaa !18
  %904 = load i32, ptr %11, align 4, !tbaa !13
  %905 = load i32, ptr %12, align 4, !tbaa !13
  %906 = call noundef i32 @_Z3maxii(i32 noundef %904, i32 noundef %905)
  %907 = sitofp i32 %906 to double
  %908 = load ptr, ptr %5, align 8, !tbaa !5
  %909 = getelementptr inbounds %struct.particle, ptr %908, i32 0, i32 2
  %910 = load double, ptr %909, align 8, !tbaa !15
  %911 = fsub double %907, %910
  %912 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 2
  store double %911, ptr %912, align 8, !tbaa !19
  %913 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 0
  %914 = load double, ptr %913, align 8, !tbaa !16
  %915 = load ptr, ptr %6, align 8, !tbaa !5
  %916 = getelementptr inbounds %struct.vector3d, ptr %915, i32 0, i32 0
  %917 = load double, ptr %916, align 8, !tbaa !16
  %918 = fdiv double %914, %917
  store double %918, ptr %16, align 8, !tbaa !24
  %919 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 1
  %920 = load double, ptr %919, align 8, !tbaa !18
  %921 = load ptr, ptr %6, align 8, !tbaa !5
  %922 = getelementptr inbounds %struct.vector3d, ptr %921, i32 0, i32 1
  %923 = load double, ptr %922, align 8, !tbaa !18
  %924 = fdiv double %920, %923
  store double %924, ptr %17, align 8, !tbaa !24
  %925 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 2
  %926 = load double, ptr %925, align 8, !tbaa !19
  %927 = load ptr, ptr %6, align 8, !tbaa !5
  %928 = getelementptr inbounds %struct.vector3d, ptr %927, i32 0, i32 2
  %929 = load double, ptr %928, align 8, !tbaa !19
  %930 = fdiv double %926, %929
  store double %930, ptr %18, align 8, !tbaa !24
  call void @llvm.lifetime.start.p0(i64 24, ptr %19) #6
  call void @_Z8regulateRdS_S_(ptr dead_on_unwind writable sret(%struct.vector3d) align 8 %19, ptr noundef nonnull align 8 dereferenceable(8) %16, ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef nonnull align 8 dereferenceable(8) %18)
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %15, ptr align 8 %19, i64 24, i1 false), !tbaa.struct !25
  call void @llvm.lifetime.end.p0(i64 24, ptr %19) #6
  %931 = load ptr, ptr %6, align 8, !tbaa !5
  %932 = getelementptr inbounds %struct.vector3d, ptr %931, i32 0, i32 0
  %933 = load double, ptr %932, align 8, !tbaa !16
  %934 = getelementptr inbounds %struct.vector3d, ptr %15, i32 0, i32 2
  %935 = load double, ptr %934, align 8, !tbaa !19
  %936 = fmul double %933, %935
  %937 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 0
  store double %936, ptr %937, align 8, !tbaa !16
  %938 = load ptr, ptr %6, align 8, !tbaa !5
  %939 = getelementptr inbounds %struct.vector3d, ptr %938, i32 0, i32 1
  %940 = load double, ptr %939, align 8, !tbaa !18
  %941 = getelementptr inbounds %struct.vector3d, ptr %15, i32 0, i32 2
  %942 = load double, ptr %941, align 8, !tbaa !19
  %943 = fmul double %940, %942
  %944 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 1
  store double %943, ptr %944, align 8, !tbaa !18
  %945 = load ptr, ptr %6, align 8, !tbaa !5
  %946 = getelementptr inbounds %struct.vector3d, ptr %945, i32 0, i32 2
  %947 = load double, ptr %946, align 8, !tbaa !19
  %948 = getelementptr inbounds %struct.vector3d, ptr %15, i32 0, i32 2
  %949 = load double, ptr %948, align 8, !tbaa !19
  %950 = fmul double %947, %949
  %951 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 2
  store double %950, ptr %951, align 8, !tbaa !19
  %952 = load i32, ptr %7, align 4, !tbaa !13
  %953 = getelementptr inbounds %struct.int_vector3d, ptr %13, i32 0, i32 0
  store i32 %952, ptr %953, align 4, !tbaa !20
  %954 = load i32, ptr %9, align 4, !tbaa !13
  %955 = getelementptr inbounds %struct.int_vector3d, ptr %13, i32 0, i32 1
  store i32 %954, ptr %955, align 4, !tbaa !22
  %956 = load i32, ptr %11, align 4, !tbaa !13
  %957 = getelementptr inbounds %struct.int_vector3d, ptr %13, i32 0, i32 2
  store i32 %956, ptr %957, align 4, !tbaa !23
  %958 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN14spatial_region11simple_jdepER8particleR8vector3dR12int_vector3d(ptr noundef nonnull align 8 dereferenceable(608) %20, ptr noundef nonnull align 8 dereferenceable(104) %958, ptr noundef nonnull align 8 dereferenceable(24) %14, ptr noundef nonnull align 4 dereferenceable(12) %13)
  %959 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN8particle18coordinate_advanceER8vector3d(ptr noundef nonnull align 8 dereferenceable(104) %959, ptr noundef nonnull align 8 dereferenceable(24) %14)
  %960 = load ptr, ptr %6, align 8, !tbaa !5
  %961 = getelementptr inbounds %struct.vector3d, ptr %960, i32 0, i32 0
  %962 = load double, ptr %961, align 8, !tbaa !16
  %963 = getelementptr inbounds %struct.vector3d, ptr %15, i32 0, i32 1
  %964 = load double, ptr %963, align 8, !tbaa !18
  %965 = getelementptr inbounds %struct.vector3d, ptr %15, i32 0, i32 2
  %966 = load double, ptr %965, align 8, !tbaa !19
  %967 = fsub double %964, %966
  %968 = fmul double %962, %967
  %969 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 0
  store double %968, ptr %969, align 8, !tbaa !16
  %970 = load ptr, ptr %6, align 8, !tbaa !5
  %971 = getelementptr inbounds %struct.vector3d, ptr %970, i32 0, i32 1
  %972 = load double, ptr %971, align 8, !tbaa !18
  %973 = getelementptr inbounds %struct.vector3d, ptr %15, i32 0, i32 1
  %974 = load double, ptr %973, align 8, !tbaa !18
  %975 = getelementptr inbounds %struct.vector3d, ptr %15, i32 0, i32 2
  %976 = load double, ptr %975, align 8, !tbaa !19
  %977 = fsub double %974, %976
  %978 = fmul double %972, %977
  %979 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 1
  store double %978, ptr %979, align 8, !tbaa !18
  %980 = load ptr, ptr %6, align 8, !tbaa !5
  %981 = getelementptr inbounds %struct.vector3d, ptr %980, i32 0, i32 2
  %982 = load double, ptr %981, align 8, !tbaa !19
  %983 = getelementptr inbounds %struct.vector3d, ptr %15, i32 0, i32 1
  %984 = load double, ptr %983, align 8, !tbaa !18
  %985 = getelementptr inbounds %struct.vector3d, ptr %15, i32 0, i32 2
  %986 = load double, ptr %985, align 8, !tbaa !19
  %987 = fsub double %984, %986
  %988 = fmul double %982, %987
  %989 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 2
  store double %988, ptr %989, align 8, !tbaa !19
  %990 = load ptr, ptr %5, align 8, !tbaa !5
  %991 = getelementptr inbounds %struct.particle, ptr %990, i32 0, i32 0
  %992 = load double, ptr %991, align 8, !tbaa !9
  %993 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 0
  %994 = load double, ptr %993, align 8, !tbaa !16
  %995 = call double @llvm.fmuladd.f64(double 5.000000e-01, double %994, double %992)
  %996 = call double @llvm.floor.f64(double %995)
  %997 = fptosi double %996 to i32
  %998 = getelementptr inbounds %struct.int_vector3d, ptr %13, i32 0, i32 0
  store i32 %997, ptr %998, align 4, !tbaa !20
  %999 = load ptr, ptr %5, align 8, !tbaa !5
  %1000 = getelementptr inbounds %struct.particle, ptr %999, i32 0, i32 1
  %1001 = load double, ptr %1000, align 8, !tbaa !14
  %1002 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 1
  %1003 = load double, ptr %1002, align 8, !tbaa !18
  %1004 = call double @llvm.fmuladd.f64(double 5.000000e-01, double %1003, double %1001)
  %1005 = call double @llvm.floor.f64(double %1004)
  %1006 = fptosi double %1005 to i32
  %1007 = getelementptr inbounds %struct.int_vector3d, ptr %13, i32 0, i32 1
  store i32 %1006, ptr %1007, align 4, !tbaa !22
  %1008 = load ptr, ptr %5, align 8, !tbaa !5
  %1009 = getelementptr inbounds %struct.particle, ptr %1008, i32 0, i32 2
  %1010 = load double, ptr %1009, align 8, !tbaa !15
  %1011 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 2
  %1012 = load double, ptr %1011, align 8, !tbaa !19
  %1013 = call double @llvm.fmuladd.f64(double 5.000000e-01, double %1012, double %1010)
  %1014 = call double @llvm.floor.f64(double %1013)
  %1015 = fptosi double %1014 to i32
  %1016 = getelementptr inbounds %struct.int_vector3d, ptr %13, i32 0, i32 2
  store i32 %1015, ptr %1016, align 4, !tbaa !23
  %1017 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN14spatial_region11simple_jdepER8particleR8vector3dR12int_vector3d(ptr noundef nonnull align 8 dereferenceable(608) %20, ptr noundef nonnull align 8 dereferenceable(104) %1017, ptr noundef nonnull align 8 dereferenceable(24) %14, ptr noundef nonnull align 4 dereferenceable(12) %13)
  %1018 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN8particle18coordinate_advanceER8vector3d(ptr noundef nonnull align 8 dereferenceable(104) %1018, ptr noundef nonnull align 8 dereferenceable(24) %14)
  %1019 = load ptr, ptr %6, align 8, !tbaa !5
  %1020 = getelementptr inbounds %struct.vector3d, ptr %1019, i32 0, i32 0
  %1021 = load double, ptr %1020, align 8, !tbaa !16
  %1022 = getelementptr inbounds %struct.vector3d, ptr %15, i32 0, i32 0
  %1023 = load double, ptr %1022, align 8, !tbaa !16
  %1024 = getelementptr inbounds %struct.vector3d, ptr %15, i32 0, i32 1
  %1025 = load double, ptr %1024, align 8, !tbaa !18
  %1026 = fsub double %1023, %1025
  %1027 = fmul double %1021, %1026
  %1028 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 0
  store double %1027, ptr %1028, align 8, !tbaa !16
  %1029 = load ptr, ptr %6, align 8, !tbaa !5
  %1030 = getelementptr inbounds %struct.vector3d, ptr %1029, i32 0, i32 1
  %1031 = load double, ptr %1030, align 8, !tbaa !18
  %1032 = getelementptr inbounds %struct.vector3d, ptr %15, i32 0, i32 0
  %1033 = load double, ptr %1032, align 8, !tbaa !16
  %1034 = getelementptr inbounds %struct.vector3d, ptr %15, i32 0, i32 1
  %1035 = load double, ptr %1034, align 8, !tbaa !18
  %1036 = fsub double %1033, %1035
  %1037 = fmul double %1031, %1036
  %1038 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 1
  store double %1037, ptr %1038, align 8, !tbaa !18
  %1039 = load ptr, ptr %6, align 8, !tbaa !5
  %1040 = getelementptr inbounds %struct.vector3d, ptr %1039, i32 0, i32 2
  %1041 = load double, ptr %1040, align 8, !tbaa !19
  %1042 = getelementptr inbounds %struct.vector3d, ptr %15, i32 0, i32 0
  %1043 = load double, ptr %1042, align 8, !tbaa !16
  %1044 = getelementptr inbounds %struct.vector3d, ptr %15, i32 0, i32 1
  %1045 = load double, ptr %1044, align 8, !tbaa !18
  %1046 = fsub double %1043, %1045
  %1047 = fmul double %1041, %1046
  %1048 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 2
  store double %1047, ptr %1048, align 8, !tbaa !19
  %1049 = load ptr, ptr %5, align 8, !tbaa !5
  %1050 = getelementptr inbounds %struct.particle, ptr %1049, i32 0, i32 0
  %1051 = load double, ptr %1050, align 8, !tbaa !9
  %1052 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 0
  %1053 = load double, ptr %1052, align 8, !tbaa !16
  %1054 = call double @llvm.fmuladd.f64(double 5.000000e-01, double %1053, double %1051)
  %1055 = call double @llvm.floor.f64(double %1054)
  %1056 = fptosi double %1055 to i32
  %1057 = getelementptr inbounds %struct.int_vector3d, ptr %13, i32 0, i32 0
  store i32 %1056, ptr %1057, align 4, !tbaa !20
  %1058 = load ptr, ptr %5, align 8, !tbaa !5
  %1059 = getelementptr inbounds %struct.particle, ptr %1058, i32 0, i32 1
  %1060 = load double, ptr %1059, align 8, !tbaa !14
  %1061 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 1
  %1062 = load double, ptr %1061, align 8, !tbaa !18
  %1063 = call double @llvm.fmuladd.f64(double 5.000000e-01, double %1062, double %1060)
  %1064 = call double @llvm.floor.f64(double %1063)
  %1065 = fptosi double %1064 to i32
  %1066 = getelementptr inbounds %struct.int_vector3d, ptr %13, i32 0, i32 1
  store i32 %1065, ptr %1066, align 4, !tbaa !22
  %1067 = load ptr, ptr %5, align 8, !tbaa !5
  %1068 = getelementptr inbounds %struct.particle, ptr %1067, i32 0, i32 2
  %1069 = load double, ptr %1068, align 8, !tbaa !15
  %1070 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 2
  %1071 = load double, ptr %1070, align 8, !tbaa !19
  %1072 = call double @llvm.fmuladd.f64(double 5.000000e-01, double %1071, double %1069)
  %1073 = call double @llvm.floor.f64(double %1072)
  %1074 = fptosi double %1073 to i32
  %1075 = getelementptr inbounds %struct.int_vector3d, ptr %13, i32 0, i32 2
  store i32 %1074, ptr %1075, align 4, !tbaa !23
  %1076 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN14spatial_region11simple_jdepER8particleR8vector3dR12int_vector3d(ptr noundef nonnull align 8 dereferenceable(608) %20, ptr noundef nonnull align 8 dereferenceable(104) %1076, ptr noundef nonnull align 8 dereferenceable(24) %14, ptr noundef nonnull align 4 dereferenceable(12) %13)
  %1077 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN8particle18coordinate_advanceER8vector3d(ptr noundef nonnull align 8 dereferenceable(104) %1077, ptr noundef nonnull align 8 dereferenceable(24) %14)
  %1078 = load ptr, ptr %6, align 8, !tbaa !5
  %1079 = getelementptr inbounds %struct.vector3d, ptr %1078, i32 0, i32 0
  %1080 = load double, ptr %1079, align 8, !tbaa !16
  %1081 = getelementptr inbounds %struct.vector3d, ptr %15, i32 0, i32 0
  %1082 = load double, ptr %1081, align 8, !tbaa !16
  %1083 = fsub double 1.000000e+00, %1082
  %1084 = fmul double %1080, %1083
  %1085 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 0
  store double %1084, ptr %1085, align 8, !tbaa !16
  %1086 = load ptr, ptr %6, align 8, !tbaa !5
  %1087 = getelementptr inbounds %struct.vector3d, ptr %1086, i32 0, i32 1
  %1088 = load double, ptr %1087, align 8, !tbaa !18
  %1089 = getelementptr inbounds %struct.vector3d, ptr %15, i32 0, i32 0
  %1090 = load double, ptr %1089, align 8, !tbaa !16
  %1091 = fsub double 1.000000e+00, %1090
  %1092 = fmul double %1088, %1091
  %1093 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 1
  store double %1092, ptr %1093, align 8, !tbaa !18
  %1094 = load ptr, ptr %6, align 8, !tbaa !5
  %1095 = getelementptr inbounds %struct.vector3d, ptr %1094, i32 0, i32 2
  %1096 = load double, ptr %1095, align 8, !tbaa !19
  %1097 = getelementptr inbounds %struct.vector3d, ptr %15, i32 0, i32 0
  %1098 = load double, ptr %1097, align 8, !tbaa !16
  %1099 = fsub double 1.000000e+00, %1098
  %1100 = fmul double %1096, %1099
  %1101 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 2
  store double %1100, ptr %1101, align 8, !tbaa !19
  %1102 = load ptr, ptr %5, align 8, !tbaa !5
  %1103 = getelementptr inbounds %struct.particle, ptr %1102, i32 0, i32 0
  %1104 = load double, ptr %1103, align 8, !tbaa !9
  %1105 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 0
  %1106 = load double, ptr %1105, align 8, !tbaa !16
  %1107 = call double @llvm.fmuladd.f64(double 5.000000e-01, double %1106, double %1104)
  %1108 = call double @llvm.floor.f64(double %1107)
  %1109 = fptosi double %1108 to i32
  %1110 = getelementptr inbounds %struct.int_vector3d, ptr %13, i32 0, i32 0
  store i32 %1109, ptr %1110, align 4, !tbaa !20
  %1111 = load ptr, ptr %5, align 8, !tbaa !5
  %1112 = getelementptr inbounds %struct.particle, ptr %1111, i32 0, i32 1
  %1113 = load double, ptr %1112, align 8, !tbaa !14
  %1114 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 1
  %1115 = load double, ptr %1114, align 8, !tbaa !18
  %1116 = call double @llvm.fmuladd.f64(double 5.000000e-01, double %1115, double %1113)
  %1117 = call double @llvm.floor.f64(double %1116)
  %1118 = fptosi double %1117 to i32
  %1119 = getelementptr inbounds %struct.int_vector3d, ptr %13, i32 0, i32 1
  store i32 %1118, ptr %1119, align 4, !tbaa !22
  %1120 = load ptr, ptr %5, align 8, !tbaa !5
  %1121 = getelementptr inbounds %struct.particle, ptr %1120, i32 0, i32 2
  %1122 = load double, ptr %1121, align 8, !tbaa !15
  %1123 = getelementptr inbounds %struct.vector3d, ptr %14, i32 0, i32 2
  %1124 = load double, ptr %1123, align 8, !tbaa !19
  %1125 = call double @llvm.fmuladd.f64(double 5.000000e-01, double %1124, double %1122)
  %1126 = call double @llvm.floor.f64(double %1125)
  %1127 = fptosi double %1126 to i32
  %1128 = getelementptr inbounds %struct.int_vector3d, ptr %13, i32 0, i32 2
  store i32 %1127, ptr %1128, align 4, !tbaa !23
  %1129 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN14spatial_region11simple_jdepER8particleR8vector3dR12int_vector3d(ptr noundef nonnull align 8 dereferenceable(608) %20, ptr noundef nonnull align 8 dereferenceable(104) %1129, ptr noundef nonnull align 8 dereferenceable(24) %14, ptr noundef nonnull align 4 dereferenceable(12) %13)
  %1130 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN8particle18coordinate_advanceER8vector3d(ptr noundef nonnull align 8 dereferenceable(104) %1130, ptr noundef nonnull align 8 dereferenceable(24) %14)
  br label %1131

1131:                                             ; preds = %885, %884
  br label %1132

1132:                                             ; preds = %1131, %685
  br label %1133

1133:                                             ; preds = %1132, %416
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %15) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %14) #6
  call void @llvm.lifetime.end.p0(i64 12, ptr %13) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #6
  ret void
}

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

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

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

declare void @_ZN8particle18coordinate_advanceER8vector3d(ptr noundef nonnull align 8 dereferenceable(104), ptr noundef nonnull align 8 dereferenceable(24)) #4

declare void @_Z8regulateRdS_S_(ptr dead_on_unwind writable sret(%struct.vector3d) align 8, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #4

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

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #4 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #6 = { 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, !11, i64 0}
!10 = !{!"_ZTS8particle", !11, i64 0, !11, i64 8, !11, i64 16, !11, i64 24, !11, i64 32, !11, i64 40, !11, i64 48, !11, i64 56, !11, i64 64, !11, i64 72, !12, i64 80, !6, i64 88, !6, i64 96}
!11 = !{!"double", !7, i64 0}
!12 = !{!"int", !7, i64 0}
!13 = !{!12, !12, i64 0}
!14 = !{!10, !11, i64 8}
!15 = !{!10, !11, i64 16}
!16 = !{!17, !11, i64 0}
!17 = !{!"_ZTS8vector3d", !11, i64 0, !11, i64 8, !11, i64 16}
!18 = !{!17, !11, i64 8}
!19 = !{!17, !11, i64 16}
!20 = !{!21, !12, i64 0}
!21 = !{!"_ZTS12int_vector3d", !12, i64 0, !12, i64 4, !12, i64 8}
!22 = !{!21, !12, i64 4}
!23 = !{!21, !12, i64 8}
!24 = !{!11, !11, i64 0}
!25 = !{i64 0, i64 8, !24, i64 8, i64 8, !24, i64 16, i64 8, !24}


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

%struct.int_vector3d = type { i32, i32, i32 }
%struct.vector3d = type { double, double, double }

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_Z3maxii(i32 noundef, i32 noundef) local_unnamed_addr #1

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN14spatial_region11simple_jdepER8particleR8vector3dR12int_vector3d(ptr noundef nonnull align 8 dereferenceable(608), ptr noundef nonnull align 8 dereferenceable(104), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 4 dereferenceable(12)) 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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN14spatial_region11jdepositionER8particleR8vector3d(ptr noundef nonnull align 8 dereferenceable(608) %0, ptr noundef nonnull align 8 dereferenceable(104) %1, ptr noundef nonnull align 8 dereferenceable(24) %2) local_unnamed_addr #2 align 2 {
  %4 = alloca %struct.int_vector3d, align 8
  %5 = alloca %struct.vector3d, align 16
  %6 = alloca %struct.vector3d, align 8
  %7 = alloca double, align 8
  %8 = alloca double, align 8
  %9 = alloca double, align 8
  %10 = alloca %struct.vector3d, align 8
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %4) #7
  call void @_ZN12int_vector3dC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %4)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %5) #7
  call void @_ZN8vector3dC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %6) #7
  call void @_ZN8vector3dC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #7
  %11 = getelementptr inbounds i8, ptr %1, i64 8
  %12 = getelementptr inbounds i8, ptr %1, i64 16
  %13 = load double, ptr %12, align 8, !tbaa !5
  %14 = call double @llvm.floor.f64(double %13)
  %15 = fptosi double %14 to i32
  %16 = getelementptr inbounds i8, ptr %2, i64 8
  %17 = getelementptr inbounds i8, ptr %2, i64 16
  %18 = load double, ptr %17, align 8, !tbaa !12
  %19 = fadd double %13, %18
  %20 = call double @llvm.floor.f64(double %19)
  %21 = fptosi double %20 to i32
  %22 = load <2 x double>, ptr %1, align 8, !tbaa !14
  %23 = call <2 x double> @llvm.floor.v2f64(<2 x double> %22)
  %24 = fptosi <2 x double> %23 to <2 x i32>
  %25 = load <2 x double>, ptr %2, align 8, !tbaa !14
  %26 = fadd <2 x double> %22, %25
  %27 = call <2 x double> @llvm.floor.v2f64(<2 x double> %26)
  %28 = fptosi <2 x double> %27 to <2 x i32>
  %29 = icmp eq <2 x i32> %24, %28
  %30 = icmp eq i32 %15, %21
  %31 = extractelement <2 x i1> %29, i64 0
  br i1 %31, label %32, label %145

32:                                               ; preds = %3
  %33 = extractelement <2 x i1> %29, i64 1
  br i1 %33, label %34, label %64

34:                                               ; preds = %32
  br i1 %30, label %35, label %40

35:                                               ; preds = %34
  %36 = extractelement <2 x i32> %24, i64 0
  store i32 %36, ptr %4, align 8, !tbaa !15
  %37 = getelementptr inbounds i8, ptr %4, i64 4
  %38 = extractelement <2 x i32> %24, i64 1
  store i32 %38, ptr %37, align 4, !tbaa !17
  %39 = getelementptr inbounds i8, ptr %4, i64 8
  store i32 %15, ptr %39, align 8, !tbaa !18
  br label %384

40:                                               ; preds = %34
  %41 = call noundef i32 @_Z3maxii(i32 noundef %15, i32 noundef %21)
  %42 = sitofp i32 %41 to double
  %43 = load double, ptr %12, align 8, !tbaa !5
  %44 = fsub double %42, %43
  %45 = getelementptr inbounds i8, ptr %5, i64 16
  store double %44, ptr %45, align 16, !tbaa !12
  %46 = load double, ptr %17, align 8, !tbaa !12
  %47 = load <2 x double>, ptr %2, align 8, !tbaa !14
  %48 = insertelement <2 x double> poison, double %44, i64 0
  %49 = shufflevector <2 x double> %48, <2 x double> poison, <2 x i32> zeroinitializer
  %50 = fmul <2 x double> %49, %47
  %51 = insertelement <2 x double> poison, double %46, i64 0
  %52 = shufflevector <2 x double> %51, <2 x double> poison, <2 x i32> zeroinitializer
  %53 = fdiv <2 x double> %50, %52
  store <2 x double> %53, ptr %5, align 16, !tbaa !14
  %54 = extractelement <2 x i32> %24, i64 0
  store i32 %54, ptr %4, align 8, !tbaa !15
  %55 = getelementptr inbounds i8, ptr %4, i64 4
  %56 = extractelement <2 x i32> %24, i64 1
  store i32 %56, ptr %55, align 4, !tbaa !17
  %57 = getelementptr inbounds i8, ptr %4, i64 8
  store i32 %15, ptr %57, align 8, !tbaa !18
  call void @_ZN14spatial_region11simple_jdepER8particleR8vector3dR12int_vector3d(ptr noundef nonnull align 8 dereferenceable(608) %0, ptr noundef nonnull align 8 dereferenceable(104) %1, ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull align 4 dereferenceable(12) %4)
  call void @_ZN8particle18coordinate_advanceER8vector3d(ptr noundef nonnull align 8 dereferenceable(104) %1, ptr noundef nonnull align 8 dereferenceable(24) %5)
  %58 = load <2 x double>, ptr %2, align 8, !tbaa !14
  %59 = load <2 x double>, ptr %5, align 16, !tbaa !14
  %60 = fsub <2 x double> %58, %59
  store <2 x double> %60, ptr %5, align 16, !tbaa !14
  %61 = load double, ptr %17, align 8, !tbaa !12
  %62 = load double, ptr %45, align 16, !tbaa !12
  %63 = fsub double %61, %62
  store double %63, ptr %45, align 16, !tbaa !12
  store i32 %21, ptr %57, align 8, !tbaa !18
  br label %384

64:                                               ; preds = %32
  %65 = extractelement <2 x i32> %24, i64 1
  %66 = extractelement <2 x i32> %28, i64 1
  %67 = call noundef i32 @_Z3maxii(i32 noundef %65, i32 noundef %66)
  %68 = sitofp i32 %67 to double
  %69 = load double, ptr %11, align 8, !tbaa !19
  %70 = fsub double %68, %69
  %71 = getelementptr inbounds i8, ptr %5, i64 8
  store double %70, ptr %71, align 8, !tbaa !20
  %72 = getelementptr inbounds i8, ptr %4, i64 8
  br i1 %30, label %73, label %90

73:                                               ; preds = %64
  %74 = load double, ptr %2, align 8, !tbaa !21
  %75 = fmul double %70, %74
  %76 = load double, ptr %16, align 8, !tbaa !20
  %77 = fdiv double %75, %76
  store double %77, ptr %5, align 16, !tbaa !21
  %78 = load double, ptr %17, align 8, !tbaa !12
  %79 = fmul double %70, %78
  %80 = fdiv double %79, %76
  %81 = getelementptr inbounds i8, ptr %5, i64 16
  store double %80, ptr %81, align 16, !tbaa !12
  %82 = extractelement <2 x i32> %24, i64 0
  store i32 %82, ptr %4, align 8, !tbaa !15
  %83 = getelementptr inbounds i8, ptr %4, i64 4
  store i32 %65, ptr %83, align 4, !tbaa !17
  store i32 %15, ptr %72, align 8, !tbaa !18
  call void @_ZN14spatial_region11simple_jdepER8particleR8vector3dR12int_vector3d(ptr noundef nonnull align 8 dereferenceable(608) %0, ptr noundef nonnull align 8 dereferenceable(104) %1, ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull align 4 dereferenceable(12) %4)
  call void @_ZN8particle18coordinate_advanceER8vector3d(ptr noundef nonnull align 8 dereferenceable(104) %1, ptr noundef nonnull align 8 dereferenceable(24) %5)
  %84 = load <2 x double>, ptr %2, align 8, !tbaa !14
  %85 = load <2 x double>, ptr %5, align 16, !tbaa !14
  %86 = fsub <2 x double> %84, %85
  store <2 x double> %86, ptr %5, align 16, !tbaa !14
  %87 = load double, ptr %17, align 8, !tbaa !12
  %88 = load double, ptr %81, align 16, !tbaa !12
  %89 = fsub double %87, %88
  store double %89, ptr %81, align 16, !tbaa !12
  store i32 %66, ptr %83, align 4, !tbaa !17
  br label %384

90:                                               ; preds = %64
  %91 = call noundef i32 @_Z3maxii(i32 noundef %15, i32 noundef %21)
  %92 = sitofp i32 %91 to double
  %93 = load double, ptr %12, align 8, !tbaa !5
  %94 = fsub double %92, %93
  %95 = getelementptr inbounds i8, ptr %5, i64 16
  %96 = load <2 x double>, ptr %71, align 8
  %97 = load double, ptr %17, align 8, !tbaa !12
  %98 = load <2 x double>, ptr %2, align 8, !tbaa !14
  %99 = insertelement <2 x double> %96, double %94, i64 1
  %100 = shufflevector <2 x double> %98, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %101 = insertelement <2 x double> %100, double %97, i64 1
  %102 = fdiv <2 x double> %99, %101
  %103 = extractelement <2 x double> %102, i64 0
  %104 = extractelement <2 x double> %102, i64 1
  %105 = fcmp ogt double %103, %104
  %106 = getelementptr inbounds i8, ptr %4, i64 4
  br i1 %105, label %107, label %126

107:                                              ; preds = %90
  %108 = shufflevector <2 x double> %102, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %109 = fmul <2 x double> %108, %98
  store <2 x double> %109, ptr %5, align 16, !tbaa !14
  %110 = fmul double %97, %104
  store double %110, ptr %95, align 16, !tbaa !12
  %111 = extractelement <2 x i32> %24, i64 0
  store i32 %111, ptr %4, align 8, !tbaa !15
  store i32 %65, ptr %106, align 4, !tbaa !17
  store i32 %15, ptr %72, align 8, !tbaa !18
  call void @_ZN14spatial_region11simple_jdepER8particleR8vector3dR12int_vector3d(ptr noundef nonnull align 8 dereferenceable(608) %0, ptr noundef nonnull align 8 dereferenceable(104) %1, ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull align 4 dereferenceable(12) %4)
  call void @_ZN8particle18coordinate_advanceER8vector3d(ptr noundef nonnull align 8 dereferenceable(104) %1, ptr noundef nonnull align 8 dereferenceable(24) %5)
  %112 = fsub double %103, %104
  %113 = load <2 x double>, ptr %2, align 8, !tbaa !14
  %114 = insertelement <2 x double> poison, double %112, i64 0
  %115 = shufflevector <2 x double> %114, <2 x double> poison, <2 x i32> zeroinitializer
  %116 = fmul <2 x double> %113, %115
  store <2 x double> %116, ptr %5, align 16, !tbaa !14
  %117 = load double, ptr %17, align 8, !tbaa !12
  %118 = fmul double %112, %117
  store double %118, ptr %95, align 16, !tbaa !12
  store i32 %21, ptr %72, align 8, !tbaa !18
  call void @_ZN14spatial_region11simple_jdepER8particleR8vector3dR12int_vector3d(ptr noundef nonnull align 8 dereferenceable(608) %0, ptr noundef nonnull align 8 dereferenceable(104) %1, ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull align 4 dereferenceable(12) %4)
  call void @_ZN8particle18coordinate_advanceER8vector3d(ptr noundef nonnull align 8 dereferenceable(104) %1, ptr noundef nonnull align 8 dereferenceable(24) %5)
  %119 = fsub double 1.000000e+00, %103
  %120 = load <2 x double>, ptr %2, align 8, !tbaa !14
  %121 = insertelement <2 x double> poison, double %119, i64 0
  %122 = shufflevector <2 x double> %121, <2 x double> poison, <2 x i32> zeroinitializer
  %123 = fmul <2 x double> %120, %122
  store <2 x double> %123, ptr %5, align 16, !tbaa !14
  %124 = load double, ptr %17, align 8, !tbaa !12
  %125 = fmul double %119, %124
  store double %125, ptr %95, align 16, !tbaa !12
  store i32 %66, ptr %106, align 4, !tbaa !17
  br label %384

126:                                              ; preds = %90
  %127 = shufflevector <2 x double> %102, <2 x double> poison, <2 x i32> zeroinitializer
  %128 = fmul <2 x double> %127, %98
  store <2 x double> %128, ptr %5, align 16, !tbaa !14
  %129 = fmul double %103, %97
  store double %129, ptr %95, align 16, !tbaa !12
  %130 = extractelement <2 x i32> %24, i64 0
  store i32 %130, ptr %4, align 8, !tbaa !15
  store i32 %65, ptr %106, align 4, !tbaa !17
  store i32 %15, ptr %72, align 8, !tbaa !18
  call void @_ZN14spatial_region11simple_jdepER8particleR8vector3dR12int_vector3d(ptr noundef nonnull align 8 dereferenceable(608) %0, ptr noundef nonnull align 8 dereferenceable(104) %1, ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull align 4 dereferenceable(12) %4)
  call void @_ZN8particle18coordinate_advanceER8vector3d(ptr noundef nonnull align 8 dereferenceable(104) %1, ptr noundef nonnull align 8 dereferenceable(24) %5)
  %131 = fsub double %104, %103
  %132 = load <2 x double>, ptr %2, align 8, !tbaa !14
  %133 = insertelement <2 x double> poison, double %131, i64 0
  %134 = shufflevector <2 x double> %133, <2 x double> poison, <2 x i32> zeroinitializer
  %135 = fmul <2 x double> %132, %134
  store <2 x double> %135, ptr %5, align 16, !tbaa !14
  %136 = load double, ptr %17, align 8, !tbaa !12
  %137 = fmul double %131, %136
  store double %137, ptr %95, align 16, !tbaa !12
  store i32 %66, ptr %106, align 4, !tbaa !17
  call void @_ZN14spatial_region11simple_jdepER8particleR8vector3dR12int_vector3d(ptr noundef nonnull align 8 dereferenceable(608) %0, ptr noundef nonnull align 8 dereferenceable(104) %1, ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull align 4 dereferenceable(12) %4)
  call void @_ZN8particle18coordinate_advanceER8vector3d(ptr noundef nonnull align 8 dereferenceable(104) %1, ptr noundef nonnull align 8 dereferenceable(24) %5)
  %138 = fsub double 1.000000e+00, %104
  %139 = load <2 x double>, ptr %2, align 8, !tbaa !14
  %140 = insertelement <2 x double> poison, double %138, i64 0
  %141 = shufflevector <2 x double> %140, <2 x double> poison, <2 x i32> zeroinitializer
  %142 = fmul <2 x double> %139, %141
  store <2 x double> %142, ptr %5, align 16, !tbaa !14
  %143 = load double, ptr %17, align 8, !tbaa !12
  %144 = fmul double %138, %143
  store double %144, ptr %95, align 16, !tbaa !12
  store i32 %21, ptr %72, align 8, !tbaa !18
  br label %384

145:                                              ; preds = %3
  %146 = extractelement <2 x i1> %29, i64 1
  br i1 %146, label %147, label %232

147:                                              ; preds = %145
  %148 = extractelement <2 x i32> %24, i64 0
  %149 = extractelement <2 x i32> %28, i64 0
  %150 = call noundef i32 @_Z3maxii(i32 noundef %148, i32 noundef %149)
  %151 = sitofp i32 %150 to double
  %152 = load double, ptr %1, align 8, !tbaa !22
  %153 = fsub double %151, %152
  store double %153, ptr %5, align 16, !tbaa !21
  %154 = getelementptr inbounds i8, ptr %4, i64 4
  br i1 %30, label %155, label %173

155:                                              ; preds = %147
  %156 = load <2 x double>, ptr %2, align 8
  %157 = getelementptr inbounds i8, ptr %5, i64 8
  %158 = getelementptr inbounds i8, ptr %5, i64 16
  %159 = load <2 x double>, ptr %16, align 8, !tbaa !14
  %160 = insertelement <2 x double> poison, double %153, i64 0
  %161 = shufflevector <2 x double> %160, <2 x double> poison, <2 x i32> zeroinitializer
  %162 = fmul <2 x double> %161, %159
  %163 = shufflevector <2 x double> %156, <2 x double> poison, <2 x i32> zeroinitializer
  %164 = fdiv <2 x double> %162, %163
  store <2 x double> %164, ptr %157, align 8, !tbaa !14
  store i32 %148, ptr %4, align 8, !tbaa !15
  %165 = extractelement <2 x i32> %24, i64 1
  store i32 %165, ptr %154, align 4, !tbaa !17
  %166 = getelementptr inbounds i8, ptr %4, i64 8
  store i32 %15, ptr %166, align 8, !tbaa !18
  call void @_ZN14spatial_region11simple_jdepER8particleR8vector3dR12int_vector3d(ptr noundef nonnull align 8 dereferenceable(608) %0, ptr noundef nonnull align 8 dereferenceable(104) %1, ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull align 4 dereferenceable(12) %4)
  call void @_ZN8particle18coordinate_advanceER8vector3d(ptr noundef nonnull align 8 dereferenceable(104) %1, ptr noundef nonnull align 8 dereferenceable(24) %5)
  %167 = load <2 x double>, ptr %2, align 8, !tbaa !14
  %168 = load <2 x double>, ptr %5, align 16, !tbaa !14
  %169 = fsub <2 x double> %167, %168
  store <2 x double> %169, ptr %5, align 16, !tbaa !14
  %170 = load double, ptr %17, align 8, !tbaa !12
  %171 = load double, ptr %158, align 16, !tbaa !12
  %172 = fsub double %170, %171
  store double %172, ptr %158, align 16, !tbaa !12
  store i32 %149, ptr %4, align 8, !tbaa !15
  br label %384

173:                                              ; preds = %147
  %174 = call noundef i32 @_Z3maxii(i32 noundef %15, i32 noundef %21)
  %175 = sitofp i32 %174 to double
  %176 = load double, ptr %12, align 8, !tbaa !5
  %177 = fsub double %175, %176
  %178 = getelementptr inbounds i8, ptr %5, i64 16
  %179 = load <2 x double>, ptr %5, align 16
  %180 = load <2 x double>, ptr %2, align 8
  %181 = shufflevector <2 x double> %180, <2 x double> poison, <2 x i32> <i32 0, i32 poison>
  %182 = load double, ptr %17, align 8, !tbaa !12
  %183 = insertelement <2 x double> %179, double %177, i64 1
  %184 = insertelement <2 x double> %181, double %182, i64 1
  %185 = fdiv <2 x double> %183, %184
  %186 = extractelement <2 x double> %185, i64 0
  %187 = extractelement <2 x double> %185, i64 1
  %188 = fcmp ogt double %186, %187
  %189 = getelementptr inbounds i8, ptr %4, i64 8
  br i1 %188, label %190, label %211

190:                                              ; preds = %173
  %191 = load double, ptr %16, align 8, !tbaa !20
  %192 = insertelement <2 x double> %181, double %191, i64 1
  %193 = shufflevector <2 x double> %185, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %194 = fmul <2 x double> %192, %193
  store <2 x double> %194, ptr %5, align 16, !tbaa !14
  %195 = fmul double %182, %187
  store double %195, ptr %178, align 16, !tbaa !12
  store i32 %148, ptr %4, align 8, !tbaa !15
  %196 = extractelement <2 x i32> %24, i64 1
  store i32 %196, ptr %154, align 4, !tbaa !17
  store i32 %15, ptr %189, align 8, !tbaa !18
  call void @_ZN14spatial_region11simple_jdepER8particleR8vector3dR12int_vector3d(ptr noundef nonnull align 8 dereferenceable(608) %0, ptr noundef nonnull align 8 dereferenceable(104) %1, ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull align 4 dereferenceable(12) %4)
  call void @_ZN8particle18coordinate_advanceER8vector3d(ptr noundef nonnull align 8 dereferenceable(104) %1, ptr noundef nonnull align 8 dereferenceable(24) %5)
  %197 = fsub double %186, %187
  %198 = load <2 x double>, ptr %2, align 8, !tbaa !14
  %199 = insertelement <2 x double> poison, double %197, i64 0
  %200 = shufflevector <2 x double> %199, <2 x double> poison, <2 x i32> zeroinitializer
  %201 = fmul <2 x double> %198, %200
  store <2 x double> %201, ptr %5, align 16, !tbaa !14
  %202 = load double, ptr %17, align 8, !tbaa !12
  %203 = fmul double %197, %202
  store double %203, ptr %178, align 16, !tbaa !12
  store i32 %21, ptr %189, align 8, !tbaa !18
  call void @_ZN14spatial_region11simple_jdepER8particleR8vector3dR12int_vector3d(ptr noundef nonnull align 8 dereferenceable(608) %0, ptr noundef nonnull align 8 dereferenceable(104) %1, ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull align 4 dereferenceable(12) %4)
  call void @_ZN8particle18coordinate_advanceER8vector3d(ptr noundef nonnull align 8 dereferenceable(104) %1, ptr noundef nonnull align 8 dereferenceable(24) %5)
  %204 = fsub double 1.000000e+00, %186
  %205 = load <2 x double>, ptr %2, align 8, !tbaa !14
  %206 = insertelement <2 x double> poison, double %204, i64 0
  %207 = shufflevector <2 x double> %206, <2 x double> poison, <2 x i32> zeroinitializer
  %208 = fmul <2 x double> %205, %207
  store <2 x double> %208, ptr %5, align 16, !tbaa !14
  %209 = load double, ptr %17, align 8, !tbaa !12
  %210 = fmul double %204, %209
  store double %210, ptr %178, align 16, !tbaa !12
  store i32 %149, ptr %4, align 8, !tbaa !15
  br label %384

211:                                              ; preds = %173
  %212 = load double, ptr %16, align 8, !tbaa !20
  %213 = insertelement <2 x double> %181, double %212, i64 1
  %214 = shufflevector <2 x double> %185, <2 x double> poison, <2 x i32> zeroinitializer
  %215 = fmul <2 x double> %213, %214
  store <2 x double> %215, ptr %5, align 16, !tbaa !14
  %216 = fmul double %186, %182
  store double %216, ptr %178, align 16, !tbaa !12
  store i32 %148, ptr %4, align 8, !tbaa !15
  %217 = extractelement <2 x i32> %24, i64 1
  store i32 %217, ptr %154, align 4, !tbaa !17
  store i32 %15, ptr %189, align 8, !tbaa !18
  call void @_ZN14spatial_region11simple_jdepER8particleR8vector3dR12int_vector3d(ptr noundef nonnull align 8 dereferenceable(608) %0, ptr noundef nonnull align 8 dereferenceable(104) %1, ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull align 4 dereferenceable(12) %4)
  call void @_ZN8particle18coordinate_advanceER8vector3d(ptr noundef nonnull align 8 dereferenceable(104) %1, ptr noundef nonnull align 8 dereferenceable(24) %5)
  %218 = fsub double %187, %186
  %219 = load <2 x double>, ptr %2, align 8, !tbaa !14
  %220 = insertelement <2 x double> poison, double %218, i64 0
  %221 = shufflevector <2 x double> %220, <2 x double> poison, <2 x i32> zeroinitializer
  %222 = fmul <2 x double> %219, %221
  store <2 x double> %222, ptr %5, align 16, !tbaa !14
  %223 = load double, ptr %17, align 8, !tbaa !12
  %224 = fmul double %218, %223
  store double %224, ptr %178, align 16, !tbaa !12
  store i32 %149, ptr %4, align 8, !tbaa !15
  call void @_ZN14spatial_region11simple_jdepER8particleR8vector3dR12int_vector3d(ptr noundef nonnull align 8 dereferenceable(608) %0, ptr noundef nonnull align 8 dereferenceable(104) %1, ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull align 4 dereferenceable(12) %4)
  call void @_ZN8particle18coordinate_advanceER8vector3d(ptr noundef nonnull align 8 dereferenceable(104) %1, ptr noundef nonnull align 8 dereferenceable(24) %5)
  %225 = fsub double 1.000000e+00, %187
  %226 = load <2 x double>, ptr %2, align 8, !tbaa !14
  %227 = insertelement <2 x double> poison, double %225, i64 0
  %228 = shufflevector <2 x double> %227, <2 x double> poison, <2 x i32> zeroinitializer
  %229 = fmul <2 x double> %226, %228
  store <2 x double> %229, ptr %5, align 16, !tbaa !14
  %230 = load double, ptr %17, align 8, !tbaa !12
  %231 = fmul double %225, %230
  store double %231, ptr %178, align 16, !tbaa !12
  store i32 %21, ptr %189, align 8, !tbaa !18
  br label %384

232:                                              ; preds = %145
  br i1 %30, label %233, label %296

233:                                              ; preds = %232
  %234 = extractelement <2 x i32> %24, i64 1
  %235 = extractelement <2 x i32> %28, i64 1
  %236 = call noundef i32 @_Z3maxii(i32 noundef %234, i32 noundef %235)
  %237 = sitofp i32 %236 to double
  %238 = load double, ptr %11, align 8, !tbaa !19
  %239 = fsub double %237, %238
  %240 = getelementptr inbounds i8, ptr %5, i64 8
  store double %239, ptr %240, align 8, !tbaa !20
  %241 = extractelement <2 x i32> %24, i64 0
  %242 = extractelement <2 x i32> %28, i64 0
  %243 = call noundef i32 @_Z3maxii(i32 noundef %241, i32 noundef %242)
  %244 = sitofp i32 %243 to double
  %245 = load double, ptr %1, align 8, !tbaa !22
  %246 = fsub double %244, %245
  %247 = load double, ptr %240, align 8, !tbaa !20
  %248 = load <2 x double>, ptr %2, align 8, !tbaa !14
  %249 = insertelement <2 x double> poison, double %246, i64 0
  %250 = insertelement <2 x double> %249, double %247, i64 1
  %251 = fdiv <2 x double> %250, %248
  %252 = extractelement <2 x double> %251, i64 0
  %253 = extractelement <2 x double> %251, i64 1
  %254 = fcmp ogt double %253, %252
  %255 = getelementptr inbounds i8, ptr %5, i64 16
  %256 = getelementptr inbounds i8, ptr %4, i64 4
  %257 = getelementptr inbounds i8, ptr %4, i64 8
  br i1 %254, label %258, label %277

258:                                              ; preds = %233
  %259 = shufflevector <2 x double> %251, <2 x double> poison, <2 x i32> zeroinitializer
  %260 = fmul <2 x double> %248, %259
  store <2 x double> %260, ptr %5, align 16, !tbaa !14
  %261 = load double, ptr %17, align 8, !tbaa !12
  %262 = fmul double %252, %261
  store double %262, ptr %255, align 16, !tbaa !12
  store i32 %241, ptr %4, align 8, !tbaa !15
  store i32 %234, ptr %256, align 4, !tbaa !17
  store i32 %15, ptr %257, align 8, !tbaa !18
  call void @_ZN14spatial_region11simple_jdepER8particleR8vector3dR12int_vector3d(ptr noundef nonnull align 8 dereferenceable(608) %0, ptr noundef nonnull align 8 dereferenceable(104) %1, ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull align 4 dereferenceable(12) %4)
  call void @_ZN8particle18coordinate_advanceER8vector3d(ptr noundef nonnull align 8 dereferenceable(104) %1, ptr noundef nonnull align 8 dereferenceable(24) %5)
  %263 = fsub double %253, %252
  %264 = load <2 x double>, ptr %2, align 8, !tbaa !14
  %265 = insertelement <2 x double> poison, double %263, i64 0
  %266 = shufflevector <2 x double> %265, <2 x double> poison, <2 x i32> zeroinitializer
  %267 = fmul <2 x double> %264, %266
  store <2 x double> %267, ptr %5, align 16, !tbaa !14
  %268 = load double, ptr %17, align 8, !tbaa !12
  %269 = fmul double %263, %268
  store double %269, ptr %255, align 16, !tbaa !12
  store i32 %242, ptr %4, align 8, !tbaa !15
  call void @_ZN14spatial_region11simple_jdepER8particleR8vector3dR12int_vector3d(ptr noundef nonnull align 8 dereferenceable(608) %0, ptr noundef nonnull align 8 dereferenceable(104) %1, ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull align 4 dereferenceable(12) %4)
  call void @_ZN8particle18coordinate_advanceER8vector3d(ptr noundef nonnull align 8 dereferenceable(104) %1, ptr noundef nonnull align 8 dereferenceable(24) %5)
  %270 = fsub double 1.000000e+00, %253
  %271 = load <2 x double>, ptr %2, align 8, !tbaa !14
  %272 = insertelement <2 x double> poison, double %270, i64 0
  %273 = shufflevector <2 x double> %272, <2 x double> poison, <2 x i32> zeroinitializer
  %274 = fmul <2 x double> %271, %273
  store <2 x double> %274, ptr %5, align 16, !tbaa !14
  %275 = load double, ptr %17, align 8, !tbaa !12
  %276 = fmul double %270, %275
  store double %276, ptr %255, align 16, !tbaa !12
  store i32 %235, ptr %256, align 4, !tbaa !17
  br label %384

277:                                              ; preds = %233
  %278 = shufflevector <2 x double> %251, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  %279 = fmul <2 x double> %278, %248
  store <2 x double> %279, ptr %5, align 16, !tbaa !14
  %280 = load double, ptr %17, align 8, !tbaa !12
  %281 = fmul double %253, %280
  store double %281, ptr %255, align 16, !tbaa !12
  store i32 %241, ptr %4, align 8, !tbaa !15
  store i32 %234, ptr %256, align 4, !tbaa !17
  store i32 %15, ptr %257, align 8, !tbaa !18
  call void @_ZN14spatial_region11simple_jdepER8particleR8vector3dR12int_vector3d(ptr noundef nonnull align 8 dereferenceable(608) %0, ptr noundef nonnull align 8 dereferenceable(104) %1, ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull align 4 dereferenceable(12) %4)
  call void @_ZN8particle18coordinate_advanceER8vector3d(ptr noundef nonnull align 8 dereferenceable(104) %1, ptr noundef nonnull align 8 dereferenceable(24) %5)
  %282 = fsub double %252, %253
  %283 = load <2 x double>, ptr %2, align 8, !tbaa !14
  %284 = insertelement <2 x double> poison, double %282, i64 0
  %285 = shufflevector <2 x double> %284, <2 x double> poison, <2 x i32> zeroinitializer
  %286 = fmul <2 x double> %283, %285
  store <2 x double> %286, ptr %5, align 16, !tbaa !14
  %287 = load double, ptr %17, align 8, !tbaa !12
  %288 = fmul double %282, %287
  store double %288, ptr %255, align 16, !tbaa !12
  store i32 %235, ptr %256, align 4, !tbaa !17
  call void @_ZN14spatial_region11simple_jdepER8particleR8vector3dR12int_vector3d(ptr noundef nonnull align 8 dereferenceable(608) %0, ptr noundef nonnull align 8 dereferenceable(104) %1, ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull align 4 dereferenceable(12) %4)
  call void @_ZN8particle18coordinate_advanceER8vector3d(ptr noundef nonnull align 8 dereferenceable(104) %1, ptr noundef nonnull align 8 dereferenceable(24) %5)
  %289 = fsub double 1.000000e+00, %252
  %290 = load <2 x double>, ptr %2, align 8, !tbaa !14
  %291 = insertelement <2 x double> poison, double %289, i64 0
  %292 = shufflevector <2 x double> %291, <2 x double> poison, <2 x i32> zeroinitializer
  %293 = fmul <2 x double> %290, %292
  store <2 x double> %293, ptr %5, align 16, !tbaa !14
  %294 = load double, ptr %17, align 8, !tbaa !12
  %295 = fmul double %289, %294
  store double %295, ptr %255, align 16, !tbaa !12
  store i32 %242, ptr %4, align 8, !tbaa !15
  br label %384

296:                                              ; preds = %232
  %297 = extractelement <2 x i32> %24, i64 0
  %298 = extractelement <2 x i32> %28, i64 0
  %299 = call noundef i32 @_Z3maxii(i32 noundef %297, i32 noundef %298)
  %300 = sitofp i32 %299 to double
  %301 = load double, ptr %1, align 8, !tbaa !22
  %302 = fsub double %300, %301
  store double %302, ptr %5, align 16, !tbaa !21
  %303 = extractelement <2 x i32> %24, i64 1
  %304 = extractelement <2 x i32> %28, i64 1
  %305 = call noundef i32 @_Z3maxii(i32 noundef %303, i32 noundef %304)
  %306 = sitofp i32 %305 to double
  %307 = load double, ptr %11, align 8, !tbaa !19
  %308 = fsub double %306, %307
  %309 = getelementptr inbounds i8, ptr %5, i64 8
  store double %308, ptr %309, align 8, !tbaa !20
  %310 = call noundef i32 @_Z3maxii(i32 noundef %15, i32 noundef %21)
  %311 = sitofp i32 %310 to double
  %312 = load double, ptr %12, align 8, !tbaa !5
  %313 = fsub double %311, %312
  %314 = getelementptr inbounds i8, ptr %5, i64 16
  store double %313, ptr %314, align 16, !tbaa !12
  %315 = load double, ptr %5, align 16, !tbaa !21
  %316 = load double, ptr %2, align 8, !tbaa !21
  %317 = fdiv double %315, %316
  store double %317, ptr %7, align 8, !tbaa !14
  %318 = load double, ptr %309, align 8, !tbaa !20
  %319 = load double, ptr %16, align 8, !tbaa !20
  %320 = fdiv double %318, %319
  store double %320, ptr %8, align 8, !tbaa !14
  %321 = load double, ptr %17, align 8, !tbaa !12
  %322 = fdiv double %313, %321
  store double %322, ptr %9, align 8, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %10) #7
  call void @_Z8regulateRdS_S_(ptr dead_on_unwind nonnull writable sret(%struct.vector3d) align 8 %10, ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull align 8 dereferenceable(8) %9)
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %6, ptr noundef nonnull align 8 dereferenceable(24) %10, i64 24, i1 false), !tbaa.struct !23
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) #7
  %323 = getelementptr inbounds i8, ptr %6, i64 16
  %324 = load double, ptr %323, align 8, !tbaa !12
  %325 = load <2 x double>, ptr %2, align 8, !tbaa !14
  %326 = insertelement <2 x double> poison, double %324, i64 0
  %327 = shufflevector <2 x double> %326, <2 x double> poison, <2 x i32> zeroinitializer
  %328 = fmul <2 x double> %327, %325
  store <2 x double> %328, ptr %5, align 16, !tbaa !14
  %329 = load double, ptr %17, align 8, !tbaa !12
  %330 = fmul double %324, %329
  store double %330, ptr %314, align 16, !tbaa !12
  store i32 %297, ptr %4, align 8, !tbaa !15
  %331 = getelementptr inbounds i8, ptr %4, i64 4
  store i32 %303, ptr %331, align 4, !tbaa !17
  %332 = getelementptr inbounds i8, ptr %4, i64 8
  store i32 %15, ptr %332, align 8, !tbaa !18
  call void @_ZN14spatial_region11simple_jdepER8particleR8vector3dR12int_vector3d(ptr noundef nonnull align 8 dereferenceable(608) %0, ptr noundef nonnull align 8 dereferenceable(104) %1, ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull align 4 dereferenceable(12) %4)
  call void @_ZN8particle18coordinate_advanceER8vector3d(ptr noundef nonnull align 8 dereferenceable(104) %1, ptr noundef nonnull align 8 dereferenceable(24) %5)
  %333 = getelementptr inbounds i8, ptr %6, i64 8
  %334 = load double, ptr %333, align 8, !tbaa !20
  %335 = load double, ptr %323, align 8, !tbaa !12
  %336 = fsub double %334, %335
  %337 = load <2 x double>, ptr %2, align 8, !tbaa !14
  %338 = insertelement <2 x double> poison, double %336, i64 0
  %339 = shufflevector <2 x double> %338, <2 x double> poison, <2 x i32> zeroinitializer
  %340 = fmul <2 x double> %337, %339
  store <2 x double> %340, ptr %5, align 16, !tbaa !14
  %341 = load double, ptr %17, align 8, !tbaa !12
  %342 = fmul double %336, %341
  store double %342, ptr %314, align 16, !tbaa !12
  %343 = load <2 x double>, ptr %1, align 8, !tbaa !14
  %344 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %340, <2 x double> <double 5.000000e-01, double 5.000000e-01>, <2 x double> %343)
  %345 = call <2 x double> @llvm.floor.v2f64(<2 x double> %344)
  %346 = fptosi <2 x double> %345 to <2 x i32>
  store <2 x i32> %346, ptr %4, align 8, !tbaa !24
  %347 = load double, ptr %12, align 8, !tbaa !5
  %348 = call double @llvm.fmuladd.f64(double %342, double 5.000000e-01, double %347)
  %349 = call double @llvm.floor.f64(double %348)
  %350 = fptosi double %349 to i32
  store i32 %350, ptr %332, align 8, !tbaa !18
  call void @_ZN14spatial_region11simple_jdepER8particleR8vector3dR12int_vector3d(ptr noundef nonnull align 8 dereferenceable(608) %0, ptr noundef nonnull align 8 dereferenceable(104) %1, ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull align 4 dereferenceable(12) %4)
  call void @_ZN8particle18coordinate_advanceER8vector3d(ptr noundef nonnull align 8 dereferenceable(104) %1, ptr noundef nonnull align 8 dereferenceable(24) %5)
  %351 = load double, ptr %6, align 8, !tbaa !21
  %352 = load double, ptr %333, align 8, !tbaa !20
  %353 = fsub double %351, %352
  %354 = load <2 x double>, ptr %2, align 8, !tbaa !14
  %355 = insertelement <2 x double> poison, double %353, i64 0
  %356 = shufflevector <2 x double> %355, <2 x double> poison, <2 x i32> zeroinitializer
  %357 = fmul <2 x double> %354, %356
  store <2 x double> %357, ptr %5, align 16, !tbaa !14
  %358 = load double, ptr %17, align 8, !tbaa !12
  %359 = fmul double %353, %358
  store double %359, ptr %314, align 16, !tbaa !12
  %360 = load <2 x double>, ptr %1, align 8, !tbaa !14
  %361 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %357, <2 x double> <double 5.000000e-01, double 5.000000e-01>, <2 x double> %360)
  %362 = call <2 x double> @llvm.floor.v2f64(<2 x double> %361)
  %363 = fptosi <2 x double> %362 to <2 x i32>
  store <2 x i32> %363, ptr %4, align 8, !tbaa !24
  %364 = load double, ptr %12, align 8, !tbaa !5
  %365 = call double @llvm.fmuladd.f64(double %359, double 5.000000e-01, double %364)
  %366 = call double @llvm.floor.f64(double %365)
  %367 = fptosi double %366 to i32
  store i32 %367, ptr %332, align 8, !tbaa !18
  call void @_ZN14spatial_region11simple_jdepER8particleR8vector3dR12int_vector3d(ptr noundef nonnull align 8 dereferenceable(608) %0, ptr noundef nonnull align 8 dereferenceable(104) %1, ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull align 4 dereferenceable(12) %4)
  call void @_ZN8particle18coordinate_advanceER8vector3d(ptr noundef nonnull align 8 dereferenceable(104) %1, ptr noundef nonnull align 8 dereferenceable(24) %5)
  %368 = load double, ptr %6, align 8, !tbaa !21
  %369 = fsub double 1.000000e+00, %368
  %370 = load <2 x double>, ptr %2, align 8, !tbaa !14
  %371 = insertelement <2 x double> poison, double %369, i64 0
  %372 = shufflevector <2 x double> %371, <2 x double> poison, <2 x i32> zeroinitializer
  %373 = fmul <2 x double> %370, %372
  store <2 x double> %373, ptr %5, align 16, !tbaa !14
  %374 = load double, ptr %17, align 8, !tbaa !12
  %375 = fmul double %369, %374
  store double %375, ptr %314, align 16, !tbaa !12
  %376 = load <2 x double>, ptr %1, align 8, !tbaa !14
  %377 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %373, <2 x double> <double 5.000000e-01, double 5.000000e-01>, <2 x double> %376)
  %378 = call <2 x double> @llvm.floor.v2f64(<2 x double> %377)
  %379 = fptosi <2 x double> %378 to <2 x i32>
  store <2 x i32> %379, ptr %4, align 8, !tbaa !24
  %380 = load double, ptr %12, align 8, !tbaa !5
  %381 = call double @llvm.fmuladd.f64(double %375, double 5.000000e-01, double %380)
  %382 = call double @llvm.floor.f64(double %381)
  %383 = fptosi double %382 to i32
  store i32 %383, ptr %332, align 8, !tbaa !18
  br label %384

384:                                              ; preds = %190, %211, %155, %258, %277, %296, %40, %35, %107, %126, %73
  %.sink291 = phi ptr [ %5, %190 ], [ %5, %211 ], [ %5, %155 ], [ %5, %258 ], [ %5, %277 ], [ %5, %296 ], [ %5, %40 ], [ %2, %35 ], [ %5, %107 ], [ %5, %126 ], [ %5, %73 ]
  call void @_ZN14spatial_region11simple_jdepER8particleR8vector3dR12int_vector3d(ptr noundef nonnull align 8 dereferenceable(608) %0, ptr noundef nonnull align 8 dereferenceable(104) %1, ptr noundef nonnull align 8 dereferenceable(24) %.sink291, ptr noundef nonnull align 4 dereferenceable(12) %4)
  call void @_ZN8particle18coordinate_advanceER8vector3d(ptr noundef nonnull align 8 dereferenceable(104) %1, ptr noundef nonnull align 8 dereferenceable(24) %.sink291)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %6) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) #7
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %4) #7
  ret void
}

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

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

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

declare void @_ZN8particle18coordinate_advanceER8vector3d(ptr noundef nonnull align 8 dereferenceable(104), ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #4

declare void @_Z8regulateRdS_S_(ptr dead_on_unwind writable sret(%struct.vector3d) align 8, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #4

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare <2 x double> @llvm.fmuladd.v2f64(<2 x double>, <2 x double>, <2 x double>) #6

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare <2 x double> @llvm.floor.v2f64(<2 x double>) #6

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !7, i64 16}
!6 = !{!"_ZTS8particle", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24, !7, i64 32, !7, i64 40, !7, i64 48, !7, i64 56, !7, i64 64, !7, i64 72, !10, i64 80, !11, i64 88, !11, i64 96}
!7 = !{!"double", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"int", !8, i64 0}
!11 = !{!"any pointer", !8, i64 0}
!12 = !{!13, !7, i64 16}
!13 = !{!"_ZTS8vector3d", !7, i64 0, !7, i64 8, !7, i64 16}
!14 = !{!7, !7, i64 0}
!15 = !{!16, !10, i64 0}
!16 = !{!"_ZTS12int_vector3d", !10, i64 0, !10, i64 4, !10, i64 8}
!17 = !{!16, !10, i64 4}
!18 = !{!16, !10, i64 8}
!19 = !{!6, !7, i64 8}
!20 = !{!13, !7, i64 8}
!21 = !{!13, !7, i64 0}
!22 = !{!6, !7, i64 0}
!23 = !{i64 0, i64 8, !14, i64 8, i64 8, !14, i64 16, i64 8, !14}
!24 = !{!10, !10, i64 0}


; Effective O3 passes: DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,ReassociatePass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,VectorCombinePass