; LLVM IR from QUILL-PIC/Quill :: src/init.ll (ZN14spatial_region10f_init_cosEddddddibddddbdddd)

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%class.spatial_region = type { i32, i32, i32, double, double, double, double, i32, i32, i32, double, ptr, i32, i32, i32, ptr, i32, i32, i32, i32, i32, i32, i32, %"class.std::unique_ptr", %"class.std::function", double, double, double, i32, i32, i32, ptr, double, double, double, double, ptr, double, double, double, ptr, %"class.std::__cxx11::basic_string", ptr, ptr, ptr, ptr, %class.field3d, %class.field3d.26, %class.field3d.51, %class.field3d.76, %class.field3d.101, %"class.std::vector", %"class.std::vector.129" }
%"class.std::unique_ptr" = type { %"struct.std::__uniq_ptr_data" }
%"struct.std::__uniq_ptr_data" = type { %"class.std::__uniq_ptr_impl" }
%"class.std::__uniq_ptr_impl" = type { %"class.std::tuple" }
%"class.std::tuple" = type { %"struct.std::_Tuple_impl" }
%"struct.std::_Tuple_impl" = type { %"struct.std::_Head_base.1" }
%"struct.std::_Head_base.1" = type { ptr }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%class.field3d = type { i32, i32, i32, %"class.std::unique_ptr.2", %"class.std::unique_ptr.10", %"class.std::unique_ptr.18" }
%"class.std::unique_ptr.2" = type { %"struct.std::__uniq_ptr_data.3" }
%"struct.std::__uniq_ptr_data.3" = type { %"class.std::__uniq_ptr_impl.4" }
%"class.std::__uniq_ptr_impl.4" = type { %"class.std::tuple.5" }
%"class.std::tuple.5" = type { %"struct.std::_Tuple_impl.6" }
%"struct.std::_Tuple_impl.6" = type { %"struct.std::_Head_base.9" }
%"struct.std::_Head_base.9" = type { ptr }
%"class.std::unique_ptr.10" = type { %"struct.std::__uniq_ptr_data.11" }
%"struct.std::__uniq_ptr_data.11" = type { %"class.std::__uniq_ptr_impl.12" }
%"class.std::__uniq_ptr_impl.12" = type { %"class.std::tuple.13" }
%"class.std::tuple.13" = type { %"struct.std::_Tuple_impl.14" }
%"struct.std::_Tuple_impl.14" = type { %"struct.std::_Head_base.17" }
%"struct.std::_Head_base.17" = type { ptr }
%"class.std::unique_ptr.18" = type { %"struct.std::__uniq_ptr_data.19" }
%"struct.std::__uniq_ptr_data.19" = type { %"class.std::__uniq_ptr_impl.20" }
%"class.std::__uniq_ptr_impl.20" = type { %"class.std::tuple.21" }
%"class.std::tuple.21" = type { %"struct.std::_Tuple_impl.22" }
%"struct.std::_Tuple_impl.22" = type { %"struct.std::_Head_base.25" }
%"struct.std::_Head_base.25" = type { ptr }
%class.field3d.26 = type { i32, i32, i32, %"class.std::unique_ptr.27", %"class.std::unique_ptr.35", %"class.std::unique_ptr.43" }
%"class.std::unique_ptr.27" = type { %"struct.std::__uniq_ptr_data.28" }
%"struct.std::__uniq_ptr_data.28" = type { %"class.std::__uniq_ptr_impl.29" }
%"class.std::__uniq_ptr_impl.29" = type { %"class.std::tuple.30" }
%"class.std::tuple.30" = type { %"struct.std::_Tuple_impl.31" }
%"struct.std::_Tuple_impl.31" = type { %"struct.std::_Head_base.34" }
%"struct.std::_Head_base.34" = type { ptr }
%"class.std::unique_ptr.35" = type { %"struct.std::__uniq_ptr_data.36" }
%"struct.std::__uniq_ptr_data.36" = type { %"class.std::__uniq_ptr_impl.37" }
%"class.std::__uniq_ptr_impl.37" = type { %"class.std::tuple.38" }
%"class.std::tuple.38" = type { %"struct.std::_Tuple_impl.39" }
%"struct.std::_Tuple_impl.39" = type { %"struct.std::_Head_base.42" }
%"struct.std::_Head_base.42" = type { ptr }
%"class.std::unique_ptr.43" = type { %"struct.std::__uniq_ptr_data.44" }
%"struct.std::__uniq_ptr_data.44" = type { %"class.std::__uniq_ptr_impl.45" }
%"class.std::__uniq_ptr_impl.45" = type { %"class.std::tuple.46" }
%"class.std::tuple.46" = type { %"struct.std::_Tuple_impl.47" }
%"struct.std::_Tuple_impl.47" = type { %"struct.std::_Head_base.50" }
%"struct.std::_Head_base.50" = type { ptr }
%class.field3d.51 = type { i32, i32, i32, %"class.std::unique_ptr.52", %"class.std::unique_ptr.60", %"class.std::unique_ptr.68" }
%"class.std::unique_ptr.52" = type { %"struct.std::__uniq_ptr_data.53" }
%"struct.std::__uniq_ptr_data.53" = type { %"class.std::__uniq_ptr_impl.54" }
%"class.std::__uniq_ptr_impl.54" = type { %"class.std::tuple.55" }
%"class.std::tuple.55" = type { %"struct.std::_Tuple_impl.56" }
%"struct.std::_Tuple_impl.56" = type { %"struct.std::_Head_base.59" }
%"struct.std::_Head_base.59" = type { ptr }
%"class.std::unique_ptr.60" = type { %"struct.std::__uniq_ptr_data.61" }
%"struct.std::__uniq_ptr_data.61" = type { %"class.std::__uniq_ptr_impl.62" }
%"class.std::__uniq_ptr_impl.62" = type { %"class.std::tuple.63" }
%"class.std::tuple.63" = type { %"struct.std::_Tuple_impl.64" }
%"struct.std::_Tuple_impl.64" = type { %"struct.std::_Head_base.67" }
%"struct.std::_Head_base.67" = type { ptr }
%"class.std::unique_ptr.68" = type { %"struct.std::__uniq_ptr_data.69" }
%"struct.std::__uniq_ptr_data.69" = type { %"class.std::__uniq_ptr_impl.70" }
%"class.std::__uniq_ptr_impl.70" = type { %"class.std::tuple.71" }
%"class.std::tuple.71" = type { %"struct.std::_Tuple_impl.72" }
%"struct.std::_Tuple_impl.72" = type { %"struct.std::_Head_base.75" }
%"struct.std::_Head_base.75" = type { ptr }
%class.field3d.76 = type { i32, i32, i32, %"class.std::unique_ptr.77", %"class.std::unique_ptr.85", %"class.std::unique_ptr.93" }
%"class.std::unique_ptr.77" = type { %"struct.std::__uniq_ptr_data.78" }
%"struct.std::__uniq_ptr_data.78" = type { %"class.std::__uniq_ptr_impl.79" }
%"class.std::__uniq_ptr_impl.79" = type { %"class.std::tuple.80" }
%"class.std::tuple.80" = type { %"struct.std::_Tuple_impl.81" }
%"struct.std::_Tuple_impl.81" = type { %"struct.std::_Head_base.84" }
%"struct.std::_Head_base.84" = type { ptr }
%"class.std::unique_ptr.85" = type { %"struct.std::__uniq_ptr_data.86" }
%"struct.std::__uniq_ptr_data.86" = type { %"class.std::__uniq_ptr_impl.87" }
%"class.std::__uniq_ptr_impl.87" = type { %"class.std::tuple.88" }
%"class.std::tuple.88" = type { %"struct.std::_Tuple_impl.89" }
%"struct.std::_Tuple_impl.89" = type { %"struct.std::_Head_base.92" }
%"struct.std::_Head_base.92" = type { ptr }
%"class.std::unique_ptr.93" = type { %"struct.std::__uniq_ptr_data.94" }
%"struct.std::__uniq_ptr_data.94" = type { %"class.std::__uniq_ptr_impl.95" }
%"class.std::__uniq_ptr_impl.95" = type { %"class.std::tuple.96" }
%"class.std::tuple.96" = type { %"struct.std::_Tuple_impl.97" }
%"struct.std::_Tuple_impl.97" = type { %"struct.std::_Head_base.100" }
%"struct.std::_Head_base.100" = type { ptr }
%class.field3d.101 = type { i32, i32, i32, %"class.std::unique_ptr.102", %"class.std::unique_ptr.110", %"class.std::unique_ptr.118" }
%"class.std::unique_ptr.102" = type { %"struct.std::__uniq_ptr_data.103" }
%"struct.std::__uniq_ptr_data.103" = type { %"class.std::__uniq_ptr_impl.104" }
%"class.std::__uniq_ptr_impl.104" = type { %"class.std::tuple.105" }
%"class.std::tuple.105" = type { %"struct.std::_Tuple_impl.106" }
%"struct.std::_Tuple_impl.106" = type { %"struct.std::_Head_base.109" }
%"struct.std::_Head_base.109" = type { ptr }
%"class.std::unique_ptr.110" = type { %"struct.std::__uniq_ptr_data.111" }
%"struct.std::__uniq_ptr_data.111" = type { %"class.std::__uniq_ptr_impl.112" }
%"class.std::__uniq_ptr_impl.112" = type { %"class.std::tuple.113" }
%"class.std::tuple.113" = type { %"struct.std::_Tuple_impl.114" }
%"struct.std::_Tuple_impl.114" = type { %"struct.std::_Head_base.117" }
%"struct.std::_Head_base.117" = type { ptr }
%"class.std::unique_ptr.118" = type { %"struct.std::__uniq_ptr_data.119" }
%"struct.std::__uniq_ptr_data.119" = type { %"class.std::__uniq_ptr_impl.120" }
%"class.std::__uniq_ptr_impl.120" = type { %"class.std::tuple.121" }
%"class.std::tuple.121" = type { %"struct.std::_Tuple_impl.122" }
%"struct.std::_Tuple_impl.122" = type { %"struct.std::_Head_base.125" }
%"struct.std::_Head_base.125" = type { ptr }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<field3d<double>, std::allocator<field3d<double>>>::_Vector_impl" }
%"struct.std::_Vector_base<field3d<double>, std::allocator<field3d<double>>>::_Vector_impl" = type { %"struct.std::_Vector_base<field3d<double>, std::allocator<field3d<double>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<field3d<double>, std::allocator<field3d<double>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.129" = type { %"struct.std::_Vector_base.130" }
%"struct.std::_Vector_base.130" = type { %"struct.std::_Vector_base<spatial_region::deleted_particle, std::allocator<spatial_region::deleted_particle>>::_Vector_impl" }
%"struct.std::_Vector_base<spatial_region::deleted_particle, std::allocator<spatial_region::deleted_particle>>::_Vector_impl" = type { %"struct.std::_Vector_base<spatial_region::deleted_particle, std::allocator<spatial_region::deleted_particle>>::_Vector_impl_data" }
%"struct.std::_Vector_base<spatial_region::deleted_particle, std::allocator<spatial_region::deleted_particle>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.celle = type { double, double, double }
%struct.cellb = type { double, double, double }

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN14spatial_region10f_init_cosEddddddibddddbdddd(ptr noundef nonnull align 8 dereferenceable(608) %0, double noundef %1, double noundef %2, double noundef %3, double noundef %4, double noundef %5, double noundef %6, i32 noundef %7, i1 noundef zeroext %8, double noundef %9, double noundef %10, double noundef %11, double noundef %12, i1 noundef zeroext %13, double noundef %14, double noundef %15, double noundef %16, double noundef %17) #1 align 2 {
  %19 = alloca ptr, align 8
  %20 = alloca double, align 8
  %21 = alloca double, align 8
  %22 = alloca double, align 8
  %23 = alloca double, align 8
  %24 = alloca double, align 8
  %25 = alloca double, align 8
  %26 = alloca i32, align 4
  %27 = alloca i8, align 1
  %28 = alloca double, align 8
  %29 = alloca double, align 8
  %30 = alloca double, align 8
  %31 = alloca double, align 8
  %32 = alloca i8, align 1
  %33 = alloca double, align 8
  %34 = alloca double, align 8
  %35 = alloca double, align 8
  %36 = alloca double, align 8
  %37 = alloca double, align 8
  %38 = alloca double, align 8
  %39 = alloca double, align 8
  %40 = alloca double, align 8
  %41 = alloca double, align 8
  %42 = alloca double, align 8
  %43 = alloca double, align 8
  %44 = alloca double, align 8
  %45 = alloca double, align 8
  %46 = alloca double, align 8
  %47 = alloca double, align 8
  %48 = alloca double, align 8
  %49 = alloca double, align 8
  %50 = alloca double, align 8
  %51 = alloca double, align 8
  %52 = alloca double, align 8
  %53 = alloca double, align 8
  %54 = alloca double, align 8
  %55 = alloca double, align 8
  %56 = alloca double, align 8
  %57 = alloca double, align 8
  %58 = alloca double, align 8
  %59 = alloca double, align 8
  %60 = alloca double, align 8
  %61 = alloca double, align 8
  %62 = alloca double, align 8
  %63 = alloca double, align 8
  %64 = alloca double, align 8
  %65 = alloca double, align 8
  %66 = alloca double, align 8
  %67 = alloca double, align 8
  %68 = alloca double, align 8
  %69 = alloca double, align 8
  %70 = alloca double, align 8
  %71 = alloca double, align 8
  %72 = alloca double, align 8
  %73 = alloca double, align 8
  %74 = alloca double, align 8
  %75 = alloca double, align 8
  %76 = alloca i32, align 4
  %77 = alloca i32, align 4
  %78 = alloca i32, align 4
  %79 = alloca i32, align 4
  %80 = alloca double, align 8
  %81 = alloca double, align 8
  store ptr %0, ptr %19, align 8, !tbaa !5
  store double %1, ptr %20, align 8, !tbaa !9
  store double %2, ptr %21, align 8, !tbaa !9
  store double %3, ptr %22, align 8, !tbaa !9
  store double %4, ptr %23, align 8, !tbaa !9
  store double %5, ptr %24, align 8, !tbaa !9
  store double %6, ptr %25, align 8, !tbaa !9
  store i32 %7, ptr %26, align 4, !tbaa !11
  %82 = zext i1 %8 to i8
  store i8 %82, ptr %27, align 1, !tbaa !13
  store double %9, ptr %28, align 8, !tbaa !9
  store double %10, ptr %29, align 8, !tbaa !9
  store double %11, ptr %30, align 8, !tbaa !9
  store double %12, ptr %31, align 8, !tbaa !9
  %83 = zext i1 %13 to i8
  store i8 %83, ptr %32, align 1, !tbaa !13
  store double %14, ptr %33, align 8, !tbaa !9
  store double %15, ptr %34, align 8, !tbaa !9
  store double %16, ptr %35, align 8, !tbaa !9
  store double %17, ptr %36, align 8, !tbaa !9
  %84 = load ptr, ptr %19, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #5
  store double 0.000000e+00, ptr %41, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #5
  store double 0.000000e+00, ptr %42, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #5
  store double 0.000000e+00, ptr %43, align 8, !tbaa !9
  %85 = load i32, ptr %26, align 4, !tbaa !11
  %86 = icmp eq i32 %85, 0
  br i1 %86, label %87, label %103

87:                                               ; preds = %18
  %88 = load double, ptr %22, align 8, !tbaa !9
  %89 = fmul double %88, 2.000000e+00
  %90 = call double @sqrt(double noundef 0x401921FB54442D18) #5
  %91 = fmul double %89, %90
  %92 = fdiv double %91, 3.000000e+00
  store double %92, ptr %41, align 8, !tbaa !9
  %93 = load double, ptr %23, align 8, !tbaa !9
  %94 = fmul double %93, 2.000000e+00
  %95 = call double @sqrt(double noundef 0x401921FB54442D18) #5
  %96 = fmul double %94, %95
  %97 = fdiv double %96, 3.000000e+00
  store double %97, ptr %42, align 8, !tbaa !9
  %98 = load double, ptr %24, align 8, !tbaa !9
  %99 = fmul double %98, 2.000000e+00
  %100 = call double @sqrt(double noundef 0x401921FB54442D18) #5
  %101 = fmul double %99, %100
  %102 = fdiv double %101, 3.000000e+00
  store double %102, ptr %43, align 8, !tbaa !9
  br label %142

103:                                              ; preds = %18
  %104 = load i32, ptr %26, align 4, !tbaa !11
  %105 = icmp eq i32 %104, 1
  br i1 %105, label %106, label %113

106:                                              ; preds = %103
  %107 = load double, ptr %22, align 8, !tbaa !9
  %108 = fmul double 8.220000e-01, %107
  store double %108, ptr %41, align 8, !tbaa !9
  %109 = load double, ptr %23, align 8, !tbaa !9
  %110 = fmul double 8.220000e-01, %109
  store double %110, ptr %42, align 8, !tbaa !9
  %111 = load double, ptr %24, align 8, !tbaa !9
  %112 = fmul double 8.220000e-01, %111
  store double %112, ptr %43, align 8, !tbaa !9
  br label %141

113:                                              ; preds = %103
  %114 = load i32, ptr %26, align 4, !tbaa !11
  %115 = icmp eq i32 %114, 2
  br i1 %115, label %116, label %126

116:                                              ; preds = %113
  %117 = load double, ptr %22, align 8, !tbaa !9
  %118 = fmul double %117, 2.000000e+00
  %119 = call double @sqrt(double noundef 0x401921FB54442D18) #5
  %120 = fmul double %118, %119
  %121 = fdiv double %120, 3.000000e+00
  store double %121, ptr %41, align 8, !tbaa !9
  %122 = load double, ptr %23, align 8, !tbaa !9
  %123 = fmul double 1.000000e+02, %122
  store double %123, ptr %42, align 8, !tbaa !9
  %124 = load double, ptr %23, align 8, !tbaa !9
  %125 = fmul double 1.000000e+02, %124
  store double %125, ptr %43, align 8, !tbaa !9
  br label %140

126:                                              ; preds = %113
  %127 = load i32, ptr %26, align 4, !tbaa !11
  %128 = icmp eq i32 %127, 3
  br i1 %128, label %129, label %139

129:                                              ; preds = %126
  %130 = load double, ptr %22, align 8, !tbaa !9
  %131 = fmul double %130, 2.000000e+00
  %132 = call double @sqrt(double noundef 0x401921FB54442D18) #5
  %133 = fmul double %131, %132
  %134 = fdiv double %133, 3.000000e+00
  store double %134, ptr %41, align 8, !tbaa !9
  %135 = load double, ptr %23, align 8, !tbaa !9
  %136 = fmul double 8.220000e-01, %135
  store double %136, ptr %42, align 8, !tbaa !9
  %137 = load double, ptr %24, align 8, !tbaa !9
  %138 = fmul double 8.220000e-01, %137
  store double %138, ptr %43, align 8, !tbaa !9
  br label %139

139:                                              ; preds = %129, %126
  br label %140

140:                                              ; preds = %139, %116
  br label %141

141:                                              ; preds = %140, %106
  br label %142

142:                                              ; preds = %141, %87
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #5
  %143 = getelementptr inbounds %class.spatial_region, ptr %84, i32 0, i32 1
  %144 = load i32, ptr %143, align 4, !tbaa !15
  %145 = sitofp i32 %144 to double
  %146 = fmul double 5.000000e-01, %145
  %147 = getelementptr inbounds %class.spatial_region, ptr %84, i32 0, i32 4
  %148 = load double, ptr %147, align 8, !tbaa !131
  %149 = fmul double %146, %148
  store double %149, ptr %51, align 8, !tbaa !9
  %150 = getelementptr inbounds %class.spatial_region, ptr %84, i32 0, i32 2
  %151 = load i32, ptr %150, align 8, !tbaa !132
  %152 = sitofp i32 %151 to double
  %153 = fmul double 5.000000e-01, %152
  %154 = getelementptr inbounds %class.spatial_region, ptr %84, i32 0, i32 5
  %155 = load double, ptr %154, align 8, !tbaa !133
  %156 = fmul double %153, %155
  store double %156, ptr %52, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #5
  %157 = load double, ptr %28, align 8, !tbaa !9
  %158 = load double, ptr %28, align 8, !tbaa !9
  %159 = load double, ptr %30, align 8, !tbaa !9
  %160 = load double, ptr %30, align 8, !tbaa !9
  %161 = fmul double %159, %160
  %162 = call double @llvm.fmuladd.f64(double %157, double %158, double %161)
  %163 = load double, ptr %31, align 8, !tbaa !9
  %164 = load double, ptr %31, align 8, !tbaa !9
  %165 = call double @llvm.fmuladd.f64(double %163, double %164, double %162)
  %166 = call double @sqrt(double noundef %165) #5
  store double %166, ptr %53, align 8, !tbaa !9
  %167 = load double, ptr %30, align 8, !tbaa !9
  %168 = fneg double %167
  %169 = load double, ptr %53, align 8, !tbaa !9
  %170 = fdiv double %168, %169
  store double %170, ptr %54, align 8, !tbaa !9
  %171 = load double, ptr %31, align 8, !tbaa !9
  %172 = fneg double %171
  %173 = load double, ptr %53, align 8, !tbaa !9
  %174 = fdiv double %172, %173
  store double %174, ptr %55, align 8, !tbaa !9
  %175 = load double, ptr %28, align 8, !tbaa !9
  %176 = fneg double %175
  %177 = load double, ptr %53, align 8, !tbaa !9
  %178 = fdiv double %176, %177
  store double %178, ptr %53, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #5
  %179 = load double, ptr %53, align 8, !tbaa !9
  %180 = load double, ptr %53, align 8, !tbaa !9
  %181 = load double, ptr %54, align 8, !tbaa !9
  %182 = load double, ptr %54, align 8, !tbaa !9
  %183 = fmul double %181, %182
  %184 = call double @llvm.fmuladd.f64(double %179, double %180, double %183)
  %185 = call double @sqrt(double noundef %184) #5
  store double %185, ptr %58, align 8, !tbaa !9
  %186 = load double, ptr %58, align 8, !tbaa !9
  %187 = fcmp une double %186, 0.000000e+00
  br i1 %187, label %188, label %196

188:                                              ; preds = %142
  %189 = load double, ptr %54, align 8, !tbaa !9
  %190 = fneg double %189
  %191 = load double, ptr %58, align 8, !tbaa !9
  %192 = fdiv double %190, %191
  store double %192, ptr %56, align 8, !tbaa !9
  %193 = load double, ptr %53, align 8, !tbaa !9
  %194 = load double, ptr %58, align 8, !tbaa !9
  %195 = fdiv double %193, %194
  store double %195, ptr %57, align 8, !tbaa !9
  store double 0.000000e+00, ptr %58, align 8, !tbaa !9
  br label %197

196:                                              ; preds = %142
  store double 0.000000e+00, ptr %56, align 8, !tbaa !9
  store double 1.000000e+00, ptr %57, align 8, !tbaa !9
  store double 0.000000e+00, ptr %58, align 8, !tbaa !9
  br label %197

197:                                              ; preds = %196, %188
  %198 = load double, ptr %54, align 8, !tbaa !9
  %199 = load double, ptr %58, align 8, !tbaa !9
  %200 = load double, ptr %55, align 8, !tbaa !9
  %201 = load double, ptr %57, align 8, !tbaa !9
  %202 = fmul double %200, %201
  %203 = fneg double %202
  %204 = call double @llvm.fmuladd.f64(double %198, double %199, double %203)
  store double %204, ptr %59, align 8, !tbaa !9
  %205 = load double, ptr %55, align 8, !tbaa !9
  %206 = load double, ptr %56, align 8, !tbaa !9
  %207 = load double, ptr %53, align 8, !tbaa !9
  %208 = load double, ptr %58, align 8, !tbaa !9
  %209 = fmul double %207, %208
  %210 = fneg double %209
  %211 = call double @llvm.fmuladd.f64(double %205, double %206, double %210)
  store double %211, ptr %60, align 8, !tbaa !9
  %212 = load double, ptr %53, align 8, !tbaa !9
  %213 = load double, ptr %57, align 8, !tbaa !9
  %214 = load double, ptr %54, align 8, !tbaa !9
  %215 = load double, ptr %56, align 8, !tbaa !9
  %216 = fmul double %214, %215
  %217 = fneg double %216
  %218 = call double @llvm.fmuladd.f64(double %212, double %213, double %217)
  store double %218, ptr %61, align 8, !tbaa !9
  %219 = load double, ptr %33, align 8, !tbaa !9
  %220 = fcmp une double %219, 0.000000e+00
  br i1 %220, label %221, label %271

221:                                              ; preds = %197
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #5
  %222 = load double, ptr %33, align 8, !tbaa !9
  %223 = call double @cos(double noundef %222) #5
  store double %223, ptr %62, align 8, !tbaa !9
  %224 = load double, ptr %33, align 8, !tbaa !9
  %225 = call double @sin(double noundef %224) #5
  store double %225, ptr %63, align 8, !tbaa !9
  %226 = load double, ptr %56, align 8, !tbaa !9
  store double %226, ptr %64, align 8, !tbaa !9
  %227 = load double, ptr %57, align 8, !tbaa !9
  store double %227, ptr %65, align 8, !tbaa !9
  %228 = load double, ptr %58, align 8, !tbaa !9
  store double %228, ptr %66, align 8, !tbaa !9
  %229 = load double, ptr %59, align 8, !tbaa !9
  store double %229, ptr %67, align 8, !tbaa !9
  %230 = load double, ptr %60, align 8, !tbaa !9
  store double %230, ptr %68, align 8, !tbaa !9
  %231 = load double, ptr %61, align 8, !tbaa !9
  store double %231, ptr %69, align 8, !tbaa !9
  %232 = load double, ptr %64, align 8, !tbaa !9
  %233 = load double, ptr %62, align 8, !tbaa !9
  %234 = load double, ptr %67, align 8, !tbaa !9
  %235 = load double, ptr %63, align 8, !tbaa !9
  %236 = fmul double %234, %235
  %237 = call double @llvm.fmuladd.f64(double %232, double %233, double %236)
  store double %237, ptr %56, align 8, !tbaa !9
  %238 = load double, ptr %65, align 8, !tbaa !9
  %239 = load double, ptr %62, align 8, !tbaa !9
  %240 = load double, ptr %68, align 8, !tbaa !9
  %241 = load double, ptr %63, align 8, !tbaa !9
  %242 = fmul double %240, %241
  %243 = call double @llvm.fmuladd.f64(double %238, double %239, double %242)
  store double %243, ptr %57, align 8, !tbaa !9
  %244 = load double, ptr %66, align 8, !tbaa !9
  %245 = load double, ptr %62, align 8, !tbaa !9
  %246 = load double, ptr %69, align 8, !tbaa !9
  %247 = load double, ptr %63, align 8, !tbaa !9
  %248 = fmul double %246, %247
  %249 = call double @llvm.fmuladd.f64(double %244, double %245, double %248)
  store double %249, ptr %58, align 8, !tbaa !9
  %250 = load double, ptr %67, align 8, !tbaa !9
  %251 = load double, ptr %62, align 8, !tbaa !9
  %252 = load double, ptr %64, align 8, !tbaa !9
  %253 = load double, ptr %63, align 8, !tbaa !9
  %254 = fmul double %252, %253
  %255 = fneg double %254
  %256 = call double @llvm.fmuladd.f64(double %250, double %251, double %255)
  store double %256, ptr %59, align 8, !tbaa !9
  %257 = load double, ptr %68, align 8, !tbaa !9
  %258 = load double, ptr %62, align 8, !tbaa !9
  %259 = load double, ptr %65, align 8, !tbaa !9
  %260 = load double, ptr %63, align 8, !tbaa !9
  %261 = fmul double %259, %260
  %262 = fneg double %261
  %263 = call double @llvm.fmuladd.f64(double %257, double %258, double %262)
  store double %263, ptr %60, align 8, !tbaa !9
  %264 = load double, ptr %69, align 8, !tbaa !9
  %265 = load double, ptr %62, align 8, !tbaa !9
  %266 = load double, ptr %66, align 8, !tbaa !9
  %267 = load double, ptr %63, align 8, !tbaa !9
  %268 = fmul double %266, %267
  %269 = fneg double %268
  %270 = call double @llvm.fmuladd.f64(double %264, double %265, double %269)
  store double %270, ptr %61, align 8, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #5
  br label %271

271:                                              ; preds = %221, %197
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #5
  store double 0.000000e+00, ptr %70, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #5
  store double 0.000000e+00, ptr %71, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #5
  store double 0.000000e+00, ptr %72, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #5
  store double 0.000000e+00, ptr %73, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #5
  store double 0.000000e+00, ptr %74, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #5
  store double 0.000000e+00, ptr %75, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %76) #5
  store i32 0, ptr %76, align 4, !tbaa !11
  br label %272

272:                                              ; preds = %1461, %271
  %273 = load i32, ptr %76, align 4, !tbaa !11
  %274 = getelementptr inbounds %class.spatial_region, ptr %84, i32 0, i32 0
  %275 = load i32, ptr %274, align 8, !tbaa !134
  %276 = icmp slt i32 %273, %275
  br i1 %276, label %278, label %277

277:                                              ; preds = %272
  store i32 2, ptr %77, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #5
  br label %1464

278:                                              ; preds = %272
  call void @llvm.lifetime.start.p0(i64 4, ptr %78) #5
  store i32 0, ptr %78, align 4, !tbaa !11
  br label %279

279:                                              ; preds = %1457, %278
  %280 = load i32, ptr %78, align 4, !tbaa !11
  %281 = getelementptr inbounds %class.spatial_region, ptr %84, i32 0, i32 1
  %282 = load i32, ptr %281, align 4, !tbaa !15
  %283 = icmp slt i32 %280, %282
  br i1 %283, label %285, label %284

284:                                              ; preds = %279
  store i32 5, ptr %77, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #5
  br label %1460

285:                                              ; preds = %279
  call void @llvm.lifetime.start.p0(i64 4, ptr %79) #5
  store i32 0, ptr %79, align 4, !tbaa !11
  br label %286

286:                                              ; preds = %1453, %285
  %287 = load i32, ptr %79, align 4, !tbaa !11
  %288 = getelementptr inbounds %class.spatial_region, ptr %84, i32 0, i32 2
  %289 = load i32, ptr %288, align 8, !tbaa !132
  %290 = icmp slt i32 %287, %289
  br i1 %290, label %292, label %291

291:                                              ; preds = %286
  store i32 8, ptr %77, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #5
  br label %1456

292:                                              ; preds = %286
  %293 = load double, ptr %53, align 8, !tbaa !9
  %294 = load i32, ptr %76, align 4, !tbaa !11
  %295 = sitofp i32 %294 to double
  %296 = getelementptr inbounds %class.spatial_region, ptr %84, i32 0, i32 3
  %297 = load double, ptr %296, align 8, !tbaa !135
  %298 = load double, ptr %25, align 8, !tbaa !9
  %299 = fneg double %298
  %300 = call double @llvm.fmuladd.f64(double %295, double %297, double %299)
  %301 = load double, ptr %34, align 8, !tbaa !9
  %302 = fsub double %300, %301
  %303 = load double, ptr %54, align 8, !tbaa !9
  %304 = load i32, ptr %78, align 4, !tbaa !11
  %305 = sitofp i32 %304 to double
  %306 = getelementptr inbounds %class.spatial_region, ptr %84, i32 0, i32 4
  %307 = load double, ptr %306, align 8, !tbaa !131
  %308 = load double, ptr %51, align 8, !tbaa !9
  %309 = fneg double %308
  %310 = call double @llvm.fmuladd.f64(double %305, double %307, double %309)
  %311 = load double, ptr %30, align 8, !tbaa !9
  %312 = fsub double %310, %311
  %313 = load double, ptr %35, align 8, !tbaa !9
  %314 = fsub double %312, %313
  %315 = fmul double %303, %314
  %316 = call double @llvm.fmuladd.f64(double %293, double %302, double %315)
  %317 = load double, ptr %55, align 8, !tbaa !9
  %318 = load i32, ptr %79, align 4, !tbaa !11
  %319 = sitofp i32 %318 to double
  %320 = getelementptr inbounds %class.spatial_region, ptr %84, i32 0, i32 5
  %321 = load double, ptr %320, align 8, !tbaa !133
  %322 = load double, ptr %52, align 8, !tbaa !9
  %323 = fneg double %322
  %324 = call double @llvm.fmuladd.f64(double %319, double %321, double %323)
  %325 = load double, ptr %31, align 8, !tbaa !9
  %326 = fsub double %324, %325
  %327 = load double, ptr %36, align 8, !tbaa !9
  %328 = fsub double %326, %327
  %329 = call double @llvm.fmuladd.f64(double %317, double %328, double %316)
  store double %329, ptr %37, align 8, !tbaa !9
  %330 = load double, ptr %37, align 8, !tbaa !9
  %331 = load double, ptr %29, align 8, !tbaa !9
  %332 = fadd double %330, %331
  store double %332, ptr %40, align 8, !tbaa !9
  %333 = load double, ptr %56, align 8, !tbaa !9
  %334 = load i32, ptr %76, align 4, !tbaa !11
  %335 = sitofp i32 %334 to double
  %336 = getelementptr inbounds %class.spatial_region, ptr %84, i32 0, i32 3
  %337 = load double, ptr %336, align 8, !tbaa !135
  %338 = load double, ptr %25, align 8, !tbaa !9
  %339 = fneg double %338
  %340 = call double @llvm.fmuladd.f64(double %335, double %337, double %339)
  %341 = load double, ptr %34, align 8, !tbaa !9
  %342 = fsub double %340, %341
  %343 = load double, ptr %57, align 8, !tbaa !9
  %344 = load i32, ptr %78, align 4, !tbaa !11
  %345 = sitofp i32 %344 to double
  %346 = getelementptr inbounds %class.spatial_region, ptr %84, i32 0, i32 4
  %347 = load double, ptr %346, align 8, !tbaa !131
  %348 = load double, ptr %51, align 8, !tbaa !9
  %349 = fneg double %348
  %350 = call double @llvm.fmuladd.f64(double %345, double %347, double %349)
  %351 = load double, ptr %30, align 8, !tbaa !9
  %352 = fsub double %350, %351
  %353 = load double, ptr %35, align 8, !tbaa !9
  %354 = fsub double %352, %353
  %355 = fmul double %343, %354
  %356 = call double @llvm.fmuladd.f64(double %333, double %342, double %355)
  %357 = load double, ptr %58, align 8, !tbaa !9
  %358 = load i32, ptr %79, align 4, !tbaa !11
  %359 = sitofp i32 %358 to double
  %360 = getelementptr inbounds %class.spatial_region, ptr %84, i32 0, i32 5
  %361 = load double, ptr %360, align 8, !tbaa !133
  %362 = load double, ptr %52, align 8, !tbaa !9
  %363 = fneg double %362
  %364 = call double @llvm.fmuladd.f64(double %359, double %361, double %363)
  %365 = load double, ptr %31, align 8, !tbaa !9
  %366 = fsub double %364, %365
  %367 = load double, ptr %36, align 8, !tbaa !9
  %368 = fsub double %366, %367
  %369 = call double @llvm.fmuladd.f64(double %357, double %368, double %356)
  store double %369, ptr %38, align 8, !tbaa !9
  %370 = load double, ptr %59, align 8, !tbaa !9
  %371 = load i32, ptr %76, align 4, !tbaa !11
  %372 = sitofp i32 %371 to double
  %373 = getelementptr inbounds %class.spatial_region, ptr %84, i32 0, i32 3
  %374 = load double, ptr %373, align 8, !tbaa !135
  %375 = load double, ptr %25, align 8, !tbaa !9
  %376 = fneg double %375
  %377 = call double @llvm.fmuladd.f64(double %372, double %374, double %376)
  %378 = load double, ptr %34, align 8, !tbaa !9
  %379 = fsub double %377, %378
  %380 = load double, ptr %60, align 8, !tbaa !9
  %381 = load i32, ptr %78, align 4, !tbaa !11
  %382 = sitofp i32 %381 to double
  %383 = getelementptr inbounds %class.spatial_region, ptr %84, i32 0, i32 4
  %384 = load double, ptr %383, align 8, !tbaa !131
  %385 = load double, ptr %51, align 8, !tbaa !9
  %386 = fneg double %385
  %387 = call double @llvm.fmuladd.f64(double %382, double %384, double %386)
  %388 = load double, ptr %30, align 8, !tbaa !9
  %389 = fsub double %387, %388
  %390 = load double, ptr %35, align 8, !tbaa !9
  %391 = fsub double %389, %390
  %392 = fmul double %380, %391
  %393 = call double @llvm.fmuladd.f64(double %370, double %379, double %392)
  %394 = load double, ptr %61, align 8, !tbaa !9
  %395 = load i32, ptr %79, align 4, !tbaa !11
  %396 = sitofp i32 %395 to double
  %397 = getelementptr inbounds %class.spatial_region, ptr %84, i32 0, i32 5
  %398 = load double, ptr %397, align 8, !tbaa !133
  %399 = load double, ptr %52, align 8, !tbaa !9
  %400 = fneg double %399
  %401 = call double @llvm.fmuladd.f64(double %396, double %398, double %400)
  %402 = load double, ptr %31, align 8, !tbaa !9
  %403 = fsub double %401, %402
  %404 = load double, ptr %36, align 8, !tbaa !9
  %405 = fsub double %403, %404
  %406 = call double @llvm.fmuladd.f64(double %394, double %405, double %393)
  store double %406, ptr %39, align 8, !tbaa !9
  %407 = load double, ptr %37, align 8, !tbaa !9
  %408 = load double, ptr %41, align 8, !tbaa !9
  %409 = fcmp olt double %407, %408
  br i1 %409, label %410, label %1373

410:                                              ; preds = %292
  %411 = load double, ptr %37, align 8, !tbaa !9
  %412 = load double, ptr %41, align 8, !tbaa !9
  %413 = fneg double %412
  %414 = fcmp ogt double %411, %413
  br i1 %414, label %415, label %1373

415:                                              ; preds = %410
  %416 = load double, ptr %38, align 8, !tbaa !9
  %417 = load double, ptr %42, align 8, !tbaa !9
  %418 = fcmp olt double %416, %417
  br i1 %418, label %419, label %1373

419:                                              ; preds = %415
  %420 = load double, ptr %38, align 8, !tbaa !9
  %421 = load double, ptr %42, align 8, !tbaa !9
  %422 = fneg double %421
  %423 = fcmp ogt double %420, %422
  br i1 %423, label %424, label %1373

424:                                              ; preds = %419
  %425 = load double, ptr %39, align 8, !tbaa !9
  %426 = load double, ptr %43, align 8, !tbaa !9
  %427 = fcmp olt double %425, %426
  br i1 %427, label %428, label %1373

428:                                              ; preds = %424
  %429 = load double, ptr %39, align 8, !tbaa !9
  %430 = load double, ptr %43, align 8, !tbaa !9
  %431 = fneg double %430
  %432 = fcmp ogt double %429, %431
  br i1 %432, label %433, label %1373

433:                                              ; preds = %428
  %434 = load i32, ptr %26, align 4, !tbaa !11
  %435 = icmp eq i32 %434, 0
  br i1 %435, label %436, label %599

436:                                              ; preds = %433
  %437 = load double, ptr %37, align 8, !tbaa !9
  %438 = fmul double 0x400921FB54442D18, %437
  %439 = fdiv double %438, 2.000000e+00
  %440 = load double, ptr %41, align 8, !tbaa !9
  %441 = fdiv double %439, %440
  %442 = call double @cos(double noundef %441) #5
  store double %442, ptr %44, align 8, !tbaa !9
  %443 = load double, ptr %38, align 8, !tbaa !9
  %444 = fmul double 0x400921FB54442D18, %443
  %445 = fdiv double %444, 2.000000e+00
  %446 = load double, ptr %42, align 8, !tbaa !9
  %447 = fdiv double %445, %446
  %448 = call double @cos(double noundef %447) #5
  store double %448, ptr %45, align 8, !tbaa !9
  %449 = load double, ptr %39, align 8, !tbaa !9
  %450 = fmul double 0x400921FB54442D18, %449
  %451 = fdiv double %450, 2.000000e+00
  %452 = load double, ptr %43, align 8, !tbaa !9
  %453 = fdiv double %451, %452
  %454 = call double @cos(double noundef %453) #5
  store double %454, ptr %46, align 8, !tbaa !9
  %455 = load double, ptr %37, align 8, !tbaa !9
  %456 = fmul double 0x400921FB54442D18, %455
  %457 = fdiv double %456, 2.000000e+00
  %458 = load double, ptr %41, align 8, !tbaa !9
  %459 = fdiv double %457, %458
  %460 = call double @sin(double noundef %459) #5
  store double %460, ptr %47, align 8, !tbaa !9
  %461 = load double, ptr %38, align 8, !tbaa !9
  %462 = fmul double 0x400921FB54442D18, %461
  %463 = fdiv double %462, 2.000000e+00
  %464 = load double, ptr %42, align 8, !tbaa !9
  %465 = fdiv double %463, %464
  %466 = call double @sin(double noundef %465) #5
  store double %466, ptr %48, align 8, !tbaa !9
  %467 = load double, ptr %39, align 8, !tbaa !9
  %468 = fmul double 0x400921FB54442D18, %467
  %469 = fdiv double %468, 2.000000e+00
  %470 = load double, ptr %43, align 8, !tbaa !9
  %471 = fdiv double %469, %470
  %472 = call double @sin(double noundef %471) #5
  store double %472, ptr %49, align 8, !tbaa !9
  %473 = load double, ptr %45, align 8, !tbaa !9
  %474 = load double, ptr %45, align 8, !tbaa !9
  %475 = fmul double %473, %474
  %476 = load double, ptr %46, align 8, !tbaa !9
  %477 = fmul double %475, %476
  %478 = load double, ptr %46, align 8, !tbaa !9
  %479 = fmul double %477, %478
  store double %479, ptr %50, align 8, !tbaa !9
  %480 = load double, ptr %20, align 8, !tbaa !9
  %481 = load double, ptr %50, align 8, !tbaa !9
  %482 = fmul double %480, %481
  %483 = load double, ptr %40, align 8, !tbaa !9
  %484 = call double @cos(double noundef %483) #5
  %485 = load double, ptr %44, align 8, !tbaa !9
  %486 = fmul double %484, %485
  %487 = load double, ptr %44, align 8, !tbaa !9
  %488 = load double, ptr %41, align 8, !tbaa !9
  %489 = fdiv double 0x400921FB54442D18, %488
  %490 = load double, ptr %40, align 8, !tbaa !9
  %491 = call double @sin(double noundef %490) #5
  %492 = fmul double %489, %491
  %493 = load double, ptr %44, align 8, !tbaa !9
  %494 = fmul double %492, %493
  %495 = load double, ptr %47, align 8, !tbaa !9
  %496 = fmul double %494, %495
  %497 = fneg double %496
  %498 = call double @llvm.fmuladd.f64(double %486, double %487, double %497)
  %499 = fmul double %482, %498
  store double %499, ptr %71, align 8, !tbaa !9
  %500 = load double, ptr %21, align 8, !tbaa !9
  %501 = load double, ptr %50, align 8, !tbaa !9
  %502 = fmul double %500, %501
  %503 = load double, ptr %40, align 8, !tbaa !9
  %504 = call double @sin(double noundef %503) #5
  %505 = load double, ptr %44, align 8, !tbaa !9
  %506 = fmul double %504, %505
  %507 = load double, ptr %44, align 8, !tbaa !9
  %508 = load double, ptr %41, align 8, !tbaa !9
  %509 = fdiv double 0x400921FB54442D18, %508
  %510 = load double, ptr %40, align 8, !tbaa !9
  %511 = call double @cos(double noundef %510) #5
  %512 = fmul double %509, %511
  %513 = load double, ptr %44, align 8, !tbaa !9
  %514 = fmul double %512, %513
  %515 = load double, ptr %47, align 8, !tbaa !9
  %516 = fmul double %514, %515
  %517 = call double @llvm.fmuladd.f64(double %506, double %507, double %516)
  %518 = fmul double %502, %517
  store double %518, ptr %72, align 8, !tbaa !9
  %519 = load double, ptr %71, align 8, !tbaa !9
  store double %519, ptr %75, align 8, !tbaa !9
  %520 = load double, ptr %72, align 8, !tbaa !9
  %521 = fneg double %520
  store double %521, ptr %74, align 8, !tbaa !9
  %522 = load double, ptr %20, align 8, !tbaa !9
  %523 = load double, ptr %40, align 8, !tbaa !9
  %524 = call double @sin(double noundef %523) #5
  %525 = fmul double %522, %524
  %526 = load double, ptr %44, align 8, !tbaa !9
  %527 = fmul double %525, %526
  %528 = load double, ptr %44, align 8, !tbaa !9
  %529 = fmul double %527, %528
  %530 = load double, ptr %46, align 8, !tbaa !9
  %531 = fmul double %529, %530
  %532 = load double, ptr %46, align 8, !tbaa !9
  %533 = fmul double %531, %532
  %534 = fmul double %533, 0x400921FB54442D18
  %535 = load double, ptr %42, align 8, !tbaa !9
  %536 = fdiv double %534, %535
  %537 = load double, ptr %45, align 8, !tbaa !9
  %538 = fmul double %536, %537
  %539 = load double, ptr %48, align 8, !tbaa !9
  %540 = load double, ptr %21, align 8, !tbaa !9
  %541 = load double, ptr %40, align 8, !tbaa !9
  %542 = call double @cos(double noundef %541) #5
  %543 = fmul double %540, %542
  %544 = load double, ptr %44, align 8, !tbaa !9
  %545 = fmul double %543, %544
  %546 = load double, ptr %44, align 8, !tbaa !9
  %547 = fmul double %545, %546
  %548 = load double, ptr %45, align 8, !tbaa !9
  %549 = fmul double %547, %548
  %550 = load double, ptr %45, align 8, !tbaa !9
  %551 = fmul double %549, %550
  %552 = fmul double %551, 0x400921FB54442D18
  %553 = load double, ptr %43, align 8, !tbaa !9
  %554 = fdiv double %552, %553
  %555 = load double, ptr %46, align 8, !tbaa !9
  %556 = fmul double %554, %555
  %557 = load double, ptr %49, align 8, !tbaa !9
  %558 = fmul double %556, %557
  %559 = fneg double %558
  %560 = call double @llvm.fmuladd.f64(double %538, double %539, double %559)
  store double %560, ptr %70, align 8, !tbaa !9
  %561 = load double, ptr %21, align 8, !tbaa !9
  %562 = load double, ptr %40, align 8, !tbaa !9
  %563 = call double @cos(double noundef %562) #5
  %564 = fmul double %561, %563
  %565 = load double, ptr %44, align 8, !tbaa !9
  %566 = fmul double %564, %565
  %567 = load double, ptr %44, align 8, !tbaa !9
  %568 = fmul double %566, %567
  %569 = fmul double %568, 0x400921FB54442D18
  %570 = load double, ptr %42, align 8, !tbaa !9
  %571 = fdiv double %569, %570
  %572 = load double, ptr %46, align 8, !tbaa !9
  %573 = fmul double %571, %572
  %574 = load double, ptr %46, align 8, !tbaa !9
  %575 = fmul double %573, %574
  %576 = load double, ptr %45, align 8, !tbaa !9
  %577 = fmul double %575, %576
  %578 = load double, ptr %48, align 8, !tbaa !9
  %579 = load double, ptr %20, align 8, !tbaa !9
  %580 = load double, ptr %40, align 8, !tbaa !9
  %581 = call double @sin(double noundef %580) #5
  %582 = fmul double %579, %581
  %583 = load double, ptr %44, align 8, !tbaa !9
  %584 = fmul double %582, %583
  %585 = load double, ptr %44, align 8, !tbaa !9
  %586 = fmul double %584, %585
  %587 = load double, ptr %45, align 8, !tbaa !9
  %588 = fmul double %586, %587
  %589 = load double, ptr %45, align 8, !tbaa !9
  %590 = fmul double %588, %589
  %591 = fmul double %590, 0x400921FB54442D18
  %592 = load double, ptr %43, align 8, !tbaa !9
  %593 = fdiv double %591, %592
  %594 = load double, ptr %46, align 8, !tbaa !9
  %595 = fmul double %593, %594
  %596 = load double, ptr %49, align 8, !tbaa !9
  %597 = fmul double %595, %596
  %598 = call double @llvm.fmuladd.f64(double %577, double %578, double %597)
  store double %598, ptr %73, align 8, !tbaa !9
  br label %1089

599:                                              ; preds = %433
  %600 = load i32, ptr %26, align 4, !tbaa !11
  %601 = icmp eq i32 %600, 1
  br i1 %601, label %602, label %913

602:                                              ; preds = %599
  %603 = load double, ptr %37, align 8, !tbaa !9
  %604 = fmul double 0x400921FB54442D18, %603
  %605 = load double, ptr %37, align 8, !tbaa !9
  %606 = fmul double %604, %605
  %607 = load double, ptr %37, align 8, !tbaa !9
  %608 = fmul double %606, %607
  %609 = load double, ptr %37, align 8, !tbaa !9
  %610 = fmul double %608, %609
  %611 = fdiv double %610, 2.000000e+00
  %612 = load double, ptr %41, align 8, !tbaa !9
  %613 = load double, ptr %41, align 8, !tbaa !9
  %614 = fmul double %612, %613
  %615 = load double, ptr %41, align 8, !tbaa !9
  %616 = fmul double %614, %615
  %617 = load double, ptr %41, align 8, !tbaa !9
  %618 = fmul double %616, %617
  %619 = fdiv double %611, %618
  %620 = call double @cos(double noundef %619) #5
  store double %620, ptr %44, align 8, !tbaa !9
  %621 = load double, ptr %38, align 8, !tbaa !9
  %622 = fmul double 0x400921FB54442D18, %621
  %623 = load double, ptr %38, align 8, !tbaa !9
  %624 = fmul double %622, %623
  %625 = load double, ptr %38, align 8, !tbaa !9
  %626 = fmul double %624, %625
  %627 = load double, ptr %38, align 8, !tbaa !9
  %628 = fmul double %626, %627
  %629 = fdiv double %628, 2.000000e+00
  %630 = load double, ptr %42, align 8, !tbaa !9
  %631 = load double, ptr %42, align 8, !tbaa !9
  %632 = fmul double %630, %631
  %633 = load double, ptr %42, align 8, !tbaa !9
  %634 = fmul double %632, %633
  %635 = load double, ptr %42, align 8, !tbaa !9
  %636 = fmul double %634, %635
  %637 = fdiv double %629, %636
  %638 = call double @cos(double noundef %637) #5
  store double %638, ptr %45, align 8, !tbaa !9
  %639 = load double, ptr %39, align 8, !tbaa !9
  %640 = fmul double 0x400921FB54442D18, %639
  %641 = load double, ptr %39, align 8, !tbaa !9
  %642 = fmul double %640, %641
  %643 = load double, ptr %39, align 8, !tbaa !9
  %644 = fmul double %642, %643
  %645 = load double, ptr %39, align 8, !tbaa !9
  %646 = fmul double %644, %645
  %647 = fdiv double %646, 2.000000e+00
  %648 = load double, ptr %43, align 8, !tbaa !9
  %649 = load double, ptr %43, align 8, !tbaa !9
  %650 = fmul double %648, %649
  %651 = load double, ptr %43, align 8, !tbaa !9
  %652 = fmul double %650, %651
  %653 = load double, ptr %43, align 8, !tbaa !9
  %654 = fmul double %652, %653
  %655 = fdiv double %647, %654
  %656 = call double @cos(double noundef %655) #5
  store double %656, ptr %46, align 8, !tbaa !9
  %657 = load double, ptr %37, align 8, !tbaa !9
  %658 = fmul double 0x400921FB54442D18, %657
  %659 = load double, ptr %37, align 8, !tbaa !9
  %660 = fmul double %658, %659
  %661 = load double, ptr %37, align 8, !tbaa !9
  %662 = fmul double %660, %661
  %663 = load double, ptr %37, align 8, !tbaa !9
  %664 = fmul double %662, %663
  %665 = fdiv double %664, 2.000000e+00
  %666 = load double, ptr %41, align 8, !tbaa !9
  %667 = load double, ptr %41, align 8, !tbaa !9
  %668 = fmul double %666, %667
  %669 = load double, ptr %41, align 8, !tbaa !9
  %670 = fmul double %668, %669
  %671 = load double, ptr %41, align 8, !tbaa !9
  %672 = fmul double %670, %671
  %673 = fdiv double %665, %672
  %674 = call double @sin(double noundef %673) #5
  store double %674, ptr %47, align 8, !tbaa !9
  %675 = load double, ptr %38, align 8, !tbaa !9
  %676 = fmul double 0x400921FB54442D18, %675
  %677 = load double, ptr %38, align 8, !tbaa !9
  %678 = fmul double %676, %677
  %679 = load double, ptr %38, align 8, !tbaa !9
  %680 = fmul double %678, %679
  %681 = load double, ptr %38, align 8, !tbaa !9
  %682 = fmul double %680, %681
  %683 = fdiv double %682, 2.000000e+00
  %684 = load double, ptr %42, align 8, !tbaa !9
  %685 = load double, ptr %42, align 8, !tbaa !9
  %686 = fmul double %684, %685
  %687 = load double, ptr %42, align 8, !tbaa !9
  %688 = fmul double %686, %687
  %689 = load double, ptr %42, align 8, !tbaa !9
  %690 = fmul double %688, %689
  %691 = fdiv double %683, %690
  %692 = call double @sin(double noundef %691) #5
  store double %692, ptr %48, align 8, !tbaa !9
  %693 = load double, ptr %39, align 8, !tbaa !9
  %694 = fmul double 0x400921FB54442D18, %693
  %695 = load double, ptr %39, align 8, !tbaa !9
  %696 = fmul double %694, %695
  %697 = load double, ptr %39, align 8, !tbaa !9
  %698 = fmul double %696, %697
  %699 = load double, ptr %39, align 8, !tbaa !9
  %700 = fmul double %698, %699
  %701 = fdiv double %700, 2.000000e+00
  %702 = load double, ptr %43, align 8, !tbaa !9
  %703 = load double, ptr %43, align 8, !tbaa !9
  %704 = fmul double %702, %703
  %705 = load double, ptr %43, align 8, !tbaa !9
  %706 = fmul double %704, %705
  %707 = load double, ptr %43, align 8, !tbaa !9
  %708 = fmul double %706, %707
  %709 = fdiv double %701, %708
  %710 = call double @sin(double noundef %709) #5
  store double %710, ptr %49, align 8, !tbaa !9
  %711 = load double, ptr %45, align 8, !tbaa !9
  %712 = load double, ptr %45, align 8, !tbaa !9
  %713 = fmul double %711, %712
  %714 = load double, ptr %46, align 8, !tbaa !9
  %715 = fmul double %713, %714
  %716 = load double, ptr %46, align 8, !tbaa !9
  %717 = fmul double %715, %716
  store double %717, ptr %50, align 8, !tbaa !9
  %718 = load double, ptr %20, align 8, !tbaa !9
  %719 = load double, ptr %50, align 8, !tbaa !9
  %720 = fmul double %718, %719
  %721 = load double, ptr %40, align 8, !tbaa !9
  %722 = call double @cos(double noundef %721) #5
  %723 = load double, ptr %44, align 8, !tbaa !9
  %724 = fmul double %722, %723
  %725 = load double, ptr %44, align 8, !tbaa !9
  %726 = load double, ptr %37, align 8, !tbaa !9
  %727 = fmul double 0x402921FB54442D18, %726
  %728 = load double, ptr %37, align 8, !tbaa !9
  %729 = fmul double %727, %728
  %730 = load double, ptr %37, align 8, !tbaa !9
  %731 = fmul double %729, %730
  %732 = load double, ptr %41, align 8, !tbaa !9
  %733 = load double, ptr %41, align 8, !tbaa !9
  %734 = fmul double %732, %733
  %735 = load double, ptr %41, align 8, !tbaa !9
  %736 = fmul double %734, %735
  %737 = load double, ptr %41, align 8, !tbaa !9
  %738 = fmul double %736, %737
  %739 = fdiv double %731, %738
  %740 = load double, ptr %40, align 8, !tbaa !9
  %741 = call double @sin(double noundef %740) #5
  %742 = fmul double %739, %741
  %743 = load double, ptr %44, align 8, !tbaa !9
  %744 = fmul double %742, %743
  %745 = load double, ptr %47, align 8, !tbaa !9
  %746 = fmul double %744, %745
  %747 = fneg double %746
  %748 = call double @llvm.fmuladd.f64(double %724, double %725, double %747)
  %749 = fmul double %720, %748
  store double %749, ptr %71, align 8, !tbaa !9
  %750 = load double, ptr %21, align 8, !tbaa !9
  %751 = load double, ptr %50, align 8, !tbaa !9
  %752 = fmul double %750, %751
  %753 = load double, ptr %40, align 8, !tbaa !9
  %754 = call double @sin(double noundef %753) #5
  %755 = load double, ptr %44, align 8, !tbaa !9
  %756 = fmul double %754, %755
  %757 = load double, ptr %44, align 8, !tbaa !9
  %758 = load double, ptr %37, align 8, !tbaa !9
  %759 = fmul double 0x402921FB54442D18, %758
  %760 = load double, ptr %37, align 8, !tbaa !9
  %761 = fmul double %759, %760
  %762 = load double, ptr %37, align 8, !tbaa !9
  %763 = fmul double %761, %762
  %764 = load double, ptr %41, align 8, !tbaa !9
  %765 = load double, ptr %41, align 8, !tbaa !9
  %766 = fmul double %764, %765
  %767 = load double, ptr %41, align 8, !tbaa !9
  %768 = fmul double %766, %767
  %769 = load double, ptr %41, align 8, !tbaa !9
  %770 = fmul double %768, %769
  %771 = fdiv double %763, %770
  %772 = load double, ptr %40, align 8, !tbaa !9
  %773 = call double @cos(double noundef %772) #5
  %774 = fmul double %771, %773
  %775 = load double, ptr %44, align 8, !tbaa !9
  %776 = fmul double %774, %775
  %777 = load double, ptr %47, align 8, !tbaa !9
  %778 = fmul double %776, %777
  %779 = call double @llvm.fmuladd.f64(double %756, double %757, double %778)
  %780 = fmul double %752, %779
  store double %780, ptr %72, align 8, !tbaa !9
  %781 = load double, ptr %71, align 8, !tbaa !9
  store double %781, ptr %75, align 8, !tbaa !9
  %782 = load double, ptr %72, align 8, !tbaa !9
  %783 = fneg double %782
  store double %783, ptr %74, align 8, !tbaa !9
  %784 = load double, ptr %20, align 8, !tbaa !9
  %785 = load double, ptr %40, align 8, !tbaa !9
  %786 = call double @sin(double noundef %785) #5
  %787 = fmul double %784, %786
  %788 = fmul double %787, 4.000000e+00
  %789 = fmul double %788, 0x400921FB54442D18
  %790 = load double, ptr %38, align 8, !tbaa !9
  %791 = fmul double %789, %790
  %792 = load double, ptr %38, align 8, !tbaa !9
  %793 = fmul double %791, %792
  %794 = load double, ptr %38, align 8, !tbaa !9
  %795 = fmul double %793, %794
  %796 = load double, ptr %42, align 8, !tbaa !9
  %797 = load double, ptr %42, align 8, !tbaa !9
  %798 = fmul double %796, %797
  %799 = load double, ptr %42, align 8, !tbaa !9
  %800 = fmul double %798, %799
  %801 = load double, ptr %42, align 8, !tbaa !9
  %802 = fmul double %800, %801
  %803 = fdiv double %795, %802
  %804 = load double, ptr %44, align 8, !tbaa !9
  %805 = fmul double %803, %804
  %806 = load double, ptr %44, align 8, !tbaa !9
  %807 = fmul double %805, %806
  %808 = load double, ptr %46, align 8, !tbaa !9
  %809 = fmul double %807, %808
  %810 = load double, ptr %46, align 8, !tbaa !9
  %811 = fmul double %809, %810
  %812 = load double, ptr %45, align 8, !tbaa !9
  %813 = fmul double %811, %812
  %814 = load double, ptr %48, align 8, !tbaa !9
  %815 = load double, ptr %21, align 8, !tbaa !9
  %816 = load double, ptr %40, align 8, !tbaa !9
  %817 = call double @cos(double noundef %816) #5
  %818 = fmul double %815, %817
  %819 = fmul double %818, 4.000000e+00
  %820 = fmul double %819, 0x400921FB54442D18
  %821 = load double, ptr %39, align 8, !tbaa !9
  %822 = fmul double %820, %821
  %823 = load double, ptr %39, align 8, !tbaa !9
  %824 = fmul double %822, %823
  %825 = load double, ptr %39, align 8, !tbaa !9
  %826 = fmul double %824, %825
  %827 = load double, ptr %43, align 8, !tbaa !9
  %828 = load double, ptr %43, align 8, !tbaa !9
  %829 = fmul double %827, %828
  %830 = load double, ptr %43, align 8, !tbaa !9
  %831 = fmul double %829, %830
  %832 = load double, ptr %43, align 8, !tbaa !9
  %833 = fmul double %831, %832
  %834 = fdiv double %826, %833
  %835 = load double, ptr %44, align 8, !tbaa !9
  %836 = fmul double %834, %835
  %837 = load double, ptr %44, align 8, !tbaa !9
  %838 = fmul double %836, %837
  %839 = load double, ptr %45, align 8, !tbaa !9
  %840 = fmul double %838, %839
  %841 = load double, ptr %45, align 8, !tbaa !9
  %842 = fmul double %840, %841
  %843 = load double, ptr %46, align 8, !tbaa !9
  %844 = fmul double %842, %843
  %845 = load double, ptr %49, align 8, !tbaa !9
  %846 = fmul double %844, %845
  %847 = fneg double %846
  %848 = call double @llvm.fmuladd.f64(double %813, double %814, double %847)
  store double %848, ptr %70, align 8, !tbaa !9
  %849 = load double, ptr %21, align 8, !tbaa !9
  %850 = load double, ptr %40, align 8, !tbaa !9
  %851 = call double @cos(double noundef %850) #5
  %852 = fmul double %849, %851
  %853 = fmul double %852, 4.000000e+00
  %854 = fmul double %853, 0x400921FB54442D18
  %855 = load double, ptr %38, align 8, !tbaa !9
  %856 = fmul double %854, %855
  %857 = load double, ptr %38, align 8, !tbaa !9
  %858 = fmul double %856, %857
  %859 = load double, ptr %38, align 8, !tbaa !9
  %860 = fmul double %858, %859
  %861 = load double, ptr %42, align 8, !tbaa !9
  %862 = load double, ptr %42, align 8, !tbaa !9
  %863 = fmul double %861, %862
  %864 = load double, ptr %42, align 8, !tbaa !9
  %865 = fmul double %863, %864
  %866 = load double, ptr %42, align 8, !tbaa !9
  %867 = fmul double %865, %866
  %868 = fdiv double %860, %867
  %869 = load double, ptr %44, align 8, !tbaa !9
  %870 = fmul double %868, %869
  %871 = load double, ptr %44, align 8, !tbaa !9
  %872 = fmul double %870, %871
  %873 = load double, ptr %46, align 8, !tbaa !9
  %874 = fmul double %872, %873
  %875 = load double, ptr %46, align 8, !tbaa !9
  %876 = fmul double %874, %875
  %877 = load double, ptr %45, align 8, !tbaa !9
  %878 = fmul double %876, %877
  %879 = load double, ptr %48, align 8, !tbaa !9
  %880 = load double, ptr %20, align 8, !tbaa !9
  %881 = load double, ptr %40, align 8, !tbaa !9
  %882 = call double @sin(double noundef %881) #5
  %883 = fmul double %880, %882
  %884 = fmul double %883, 4.000000e+00
  %885 = fmul double %884, 0x400921FB54442D18
  %886 = load double, ptr %39, align 8, !tbaa !9
  %887 = fmul double %885, %886
  %888 = load double, ptr %39, align 8, !tbaa !9
  %889 = fmul double %887, %888
  %890 = load double, ptr %39, align 8, !tbaa !9
  %891 = fmul double %889, %890
  %892 = load double, ptr %43, align 8, !tbaa !9
  %893 = load double, ptr %43, align 8, !tbaa !9
  %894 = fmul double %892, %893
  %895 = load double, ptr %43, align 8, !tbaa !9
  %896 = fmul double %894, %895
  %897 = load double, ptr %43, align 8, !tbaa !9
  %898 = fmul double %896, %897
  %899 = fdiv double %891, %898
  %900 = load double, ptr %44, align 8, !tbaa !9
  %901 = fmul double %899, %900
  %902 = load double, ptr %44, align 8, !tbaa !9
  %903 = fmul double %901, %902
  %904 = load double, ptr %45, align 8, !tbaa !9
  %905 = fmul double %903, %904
  %906 = load double, ptr %45, align 8, !tbaa !9
  %907 = fmul double %905, %906
  %908 = load double, ptr %46, align 8, !tbaa !9
  %909 = fmul double %907, %908
  %910 = load double, ptr %49, align 8, !tbaa !9
  %911 = fmul double %909, %910
  %912 = call double @llvm.fmuladd.f64(double %878, double %879, double %911)
  store double %912, ptr %73, align 8, !tbaa !9
  br label %1088

913:                                              ; preds = %599
  %914 = load i32, ptr %26, align 4, !tbaa !11
  %915 = icmp eq i32 %914, 2
  br i1 %915, label %916, label %993

916:                                              ; preds = %913
  %917 = load double, ptr %37, align 8, !tbaa !9
  %918 = fmul double 0x400921FB54442D18, %917
  %919 = fdiv double %918, 2.000000e+00
  %920 = load double, ptr %41, align 8, !tbaa !9
  %921 = fdiv double %919, %920
  %922 = call double @cos(double noundef %921) #5
  store double %922, ptr %44, align 8, !tbaa !9
  %923 = load double, ptr %37, align 8, !tbaa !9
  %924 = fmul double 0x400921FB54442D18, %923
  %925 = fdiv double %924, 2.000000e+00
  %926 = load double, ptr %41, align 8, !tbaa !9
  %927 = fdiv double %925, %926
  %928 = call double @sin(double noundef %927) #5
  store double %928, ptr %47, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %80) #5
  %929 = load double, ptr %38, align 8, !tbaa !9
  %930 = load double, ptr %38, align 8, !tbaa !9
  %931 = load double, ptr %39, align 8, !tbaa !9
  %932 = load double, ptr %39, align 8, !tbaa !9
  %933 = fmul double %931, %932
  %934 = call double @llvm.fmuladd.f64(double %929, double %930, double %933)
  %935 = call double @sqrt(double noundef %934) #5
  store double %935, ptr %80, align 8, !tbaa !9
  %936 = load double, ptr %80, align 8, !tbaa !9
  %937 = fcmp une double %936, 0.000000e+00
  br i1 %937, label %938, label %949

938:                                              ; preds = %916
  %939 = load double, ptr %80, align 8, !tbaa !9
  %940 = fmul double 0x400921FB54442D18, %939
  %941 = load double, ptr %23, align 8, !tbaa !9
  %942 = fdiv double %940, %941
  %943 = call double @sin(double noundef %942) #5
  %944 = load double, ptr %80, align 8, !tbaa !9
  %945 = fmul double 0x400921FB54442D18, %944
  %946 = load double, ptr %23, align 8, !tbaa !9
  %947 = fdiv double %945, %946
  %948 = fdiv double %943, %947
  store double %948, ptr %48, align 8, !tbaa !9
  br label %950

949:                                              ; preds = %916
  store double 1.000000e+00, ptr %48, align 8, !tbaa !9
  br label %950

950:                                              ; preds = %949, %938
  %951 = load double, ptr %20, align 8, !tbaa !9
  %952 = load double, ptr %48, align 8, !tbaa !9
  %953 = fmul double %951, %952
  %954 = load double, ptr %40, align 8, !tbaa !9
  %955 = call double @cos(double noundef %954) #5
  %956 = load double, ptr %44, align 8, !tbaa !9
  %957 = fmul double %955, %956
  %958 = load double, ptr %44, align 8, !tbaa !9
  %959 = load double, ptr %41, align 8, !tbaa !9
  %960 = fdiv double 0x400921FB54442D18, %959
  %961 = load double, ptr %40, align 8, !tbaa !9
  %962 = call double @sin(double noundef %961) #5
  %963 = fmul double %960, %962
  %964 = load double, ptr %44, align 8, !tbaa !9
  %965 = fmul double %963, %964
  %966 = load double, ptr %47, align 8, !tbaa !9
  %967 = fmul double %965, %966
  %968 = fneg double %967
  %969 = call double @llvm.fmuladd.f64(double %957, double %958, double %968)
  %970 = fmul double %953, %969
  store double %970, ptr %71, align 8, !tbaa !9
  %971 = load double, ptr %21, align 8, !tbaa !9
  %972 = load double, ptr %48, align 8, !tbaa !9
  %973 = fmul double %971, %972
  %974 = load double, ptr %40, align 8, !tbaa !9
  %975 = call double @sin(double noundef %974) #5
  %976 = load double, ptr %44, align 8, !tbaa !9
  %977 = fmul double %975, %976
  %978 = load double, ptr %44, align 8, !tbaa !9
  %979 = load double, ptr %41, align 8, !tbaa !9
  %980 = fdiv double 0x400921FB54442D18, %979
  %981 = load double, ptr %40, align 8, !tbaa !9
  %982 = call double @cos(double noundef %981) #5
  %983 = fmul double %980, %982
  %984 = load double, ptr %44, align 8, !tbaa !9
  %985 = fmul double %983, %984
  %986 = load double, ptr %47, align 8, !tbaa !9
  %987 = fmul double %985, %986
  %988 = call double @llvm.fmuladd.f64(double %977, double %978, double %987)
  %989 = fmul double %973, %988
  store double %989, ptr %72, align 8, !tbaa !9
  %990 = load double, ptr %71, align 8, !tbaa !9
  store double %990, ptr %75, align 8, !tbaa !9
  %991 = load double, ptr %72, align 8, !tbaa !9
  %992 = fneg double %991
  store double %992, ptr %74, align 8, !tbaa !9
  store double 0.000000e+00, ptr %70, align 8, !tbaa !9
  store double 0.000000e+00, ptr %73, align 8, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #5
  br label %1087

993:                                              ; preds = %913
  %994 = load i32, ptr %26, align 4, !tbaa !11
  %995 = icmp eq i32 %994, 3
  br i1 %995, label %996, label %1086

996:                                              ; preds = %993
  %997 = load double, ptr %37, align 8, !tbaa !9
  %998 = fmul double 0x400921FB54442D18, %997
  %999 = fdiv double %998, 2.000000e+00
  %1000 = load double, ptr %41, align 8, !tbaa !9
  %1001 = fdiv double %999, %1000
  %1002 = call double @cos(double noundef %1001) #5
  store double %1002, ptr %44, align 8, !tbaa !9
  %1003 = load double, ptr %37, align 8, !tbaa !9
  %1004 = fmul double 0x400921FB54442D18, %1003
  %1005 = fdiv double %1004, 2.000000e+00
  %1006 = load double, ptr %41, align 8, !tbaa !9
  %1007 = fdiv double %1005, %1006
  %1008 = call double @sin(double noundef %1007) #5
  store double %1008, ptr %47, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %81) #5
  %1009 = load double, ptr %38, align 8, !tbaa !9
  %1010 = load double, ptr %38, align 8, !tbaa !9
  %1011 = load double, ptr %39, align 8, !tbaa !9
  %1012 = load double, ptr %39, align 8, !tbaa !9
  %1013 = fmul double %1011, %1012
  %1014 = call double @llvm.fmuladd.f64(double %1009, double %1010, double %1013)
  %1015 = call double @sqrt(double noundef %1014) #5
  store double %1015, ptr %81, align 8, !tbaa !9
  %1016 = load double, ptr %81, align 8, !tbaa !9
  %1017 = load double, ptr %42, align 8, !tbaa !9
  %1018 = fcmp ole double %1016, %1017
  br i1 %1018, label %1019, label %1038

1019:                                             ; preds = %996
  %1020 = load double, ptr %81, align 8, !tbaa !9
  %1021 = fmul double 0x400921FB54442D18, %1020
  %1022 = load double, ptr %81, align 8, !tbaa !9
  %1023 = fmul double %1021, %1022
  %1024 = load double, ptr %81, align 8, !tbaa !9
  %1025 = fmul double %1023, %1024
  %1026 = load double, ptr %81, align 8, !tbaa !9
  %1027 = fmul double %1025, %1026
  %1028 = fdiv double %1027, 2.000000e+00
  %1029 = load double, ptr %42, align 8, !tbaa !9
  %1030 = load double, ptr %42, align 8, !tbaa !9
  %1031 = fmul double %1029, %1030
  %1032 = load double, ptr %42, align 8, !tbaa !9
  %1033 = fmul double %1031, %1032
  %1034 = load double, ptr %42, align 8, !tbaa !9
  %1035 = fmul double %1033, %1034
  %1036 = fdiv double %1028, %1035
  %1037 = call double @cos(double noundef %1036) #5
  store double %1037, ptr %45, align 8, !tbaa !9
  br label %1039

1038:                                             ; preds = %996
  store double 0.000000e+00, ptr %45, align 8, !tbaa !9
  br label %1039

1039:                                             ; preds = %1038, %1019
  %1040 = load double, ptr %20, align 8, !tbaa !9
  %1041 = load double, ptr %45, align 8, !tbaa !9
  %1042 = fmul double %1040, %1041
  %1043 = load double, ptr %45, align 8, !tbaa !9
  %1044 = fmul double %1042, %1043
  %1045 = load double, ptr %40, align 8, !tbaa !9
  %1046 = call double @cos(double noundef %1045) #5
  %1047 = load double, ptr %44, align 8, !tbaa !9
  %1048 = fmul double %1046, %1047
  %1049 = load double, ptr %44, align 8, !tbaa !9
  %1050 = load double, ptr %41, align 8, !tbaa !9
  %1051 = fdiv double 0x400921FB54442D18, %1050
  %1052 = load double, ptr %40, align 8, !tbaa !9
  %1053 = call double @sin(double noundef %1052) #5
  %1054 = fmul double %1051, %1053
  %1055 = load double, ptr %44, align 8, !tbaa !9
  %1056 = fmul double %1054, %1055
  %1057 = load double, ptr %47, align 8, !tbaa !9
  %1058 = fmul double %1056, %1057
  %1059 = fneg double %1058
  %1060 = call double @llvm.fmuladd.f64(double %1048, double %1049, double %1059)
  %1061 = fmul double %1044, %1060
  store double %1061, ptr %71, align 8, !tbaa !9
  %1062 = load double, ptr %21, align 8, !tbaa !9
  %1063 = load double, ptr %45, align 8, !tbaa !9
  %1064 = fmul double %1062, %1063
  %1065 = load double, ptr %45, align 8, !tbaa !9
  %1066 = fmul double %1064, %1065
  %1067 = load double, ptr %40, align 8, !tbaa !9
  %1068 = call double @sin(double noundef %1067) #5
  %1069 = load double, ptr %44, align 8, !tbaa !9
  %1070 = fmul double %1068, %1069
  %1071 = load double, ptr %44, align 8, !tbaa !9
  %1072 = load double, ptr %41, align 8, !tbaa !9
  %1073 = fdiv double 0x400921FB54442D18, %1072
  %1074 = load double, ptr %40, align 8, !tbaa !9
  %1075 = call double @cos(double noundef %1074) #5
  %1076 = fmul double %1073, %1075
  %1077 = load double, ptr %44, align 8, !tbaa !9
  %1078 = fmul double %1076, %1077
  %1079 = load double, ptr %47, align 8, !tbaa !9
  %1080 = fmul double %1078, %1079
  %1081 = call double @llvm.fmuladd.f64(double %1070, double %1071, double %1080)
  %1082 = fmul double %1066, %1081
  store double %1082, ptr %72, align 8, !tbaa !9
  %1083 = load double, ptr %71, align 8, !tbaa !9
  store double %1083, ptr %75, align 8, !tbaa !9
  %1084 = load double, ptr %72, align 8, !tbaa !9
  %1085 = fneg double %1084
  store double %1085, ptr %74, align 8, !tbaa !9
  store double 0.000000e+00, ptr %70, align 8, !tbaa !9
  store double 0.000000e+00, ptr %73, align 8, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #5
  br label %1086

1086:                                             ; preds = %1039, %993
  br label %1087

1087:                                             ; preds = %1086, %950
  br label %1088

1088:                                             ; preds = %1087, %602
  br label %1089

1089:                                             ; preds = %1088, %436
  %1090 = load i8, ptr %27, align 1, !tbaa !13, !range !136, !noundef !137
  %1091 = trunc i8 %1090 to i1
  %1092 = zext i1 %1091 to i32
  %1093 = icmp eq i32 %1092, 0
  br i1 %1093, label %1094, label %1101

1094:                                             ; preds = %1089
  %1095 = load double, ptr %73, align 8, !tbaa !9
  %1096 = fneg double %1095
  store double %1096, ptr %73, align 8, !tbaa !9
  %1097 = load double, ptr %74, align 8, !tbaa !9
  %1098 = fneg double %1097
  store double %1098, ptr %74, align 8, !tbaa !9
  %1099 = load double, ptr %75, align 8, !tbaa !9
  %1100 = fneg double %1099
  store double %1100, ptr %75, align 8, !tbaa !9
  br label %1101

1101:                                             ; preds = %1094, %1089
  %1102 = load i8, ptr %32, align 1, !tbaa !13, !range !136, !noundef !137
  %1103 = trunc i8 %1102 to i1
  %1104 = zext i1 %1103 to i32
  %1105 = icmp eq i32 %1104, 0
  br i1 %1105, label %1106, label %1233

1106:                                             ; preds = %1101
  %1107 = load double, ptr %70, align 8, !tbaa !9
  %1108 = load double, ptr %53, align 8, !tbaa !9
  %1109 = load double, ptr %71, align 8, !tbaa !9
  %1110 = load double, ptr %56, align 8, !tbaa !9
  %1111 = fmul double %1109, %1110
  %1112 = call double @llvm.fmuladd.f64(double %1107, double %1108, double %1111)
  %1113 = load double, ptr %72, align 8, !tbaa !9
  %1114 = load double, ptr %59, align 8, !tbaa !9
  %1115 = call double @llvm.fmuladd.f64(double %1113, double %1114, double %1112)
  %1116 = getelementptr inbounds %class.spatial_region, ptr %84, i32 0, i32 46
  %1117 = load i32, ptr %76, align 4, !tbaa !11
  %1118 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1116, i32 noundef %1117)
  %1119 = load ptr, ptr %1118, align 8, !tbaa !5
  %1120 = load i32, ptr %78, align 4, !tbaa !11
  %1121 = sext i32 %1120 to i64
  %1122 = getelementptr inbounds ptr, ptr %1119, i64 %1121
  %1123 = load ptr, ptr %1122, align 8, !tbaa !5
  %1124 = load i32, ptr %79, align 4, !tbaa !11
  %1125 = sext i32 %1124 to i64
  %1126 = getelementptr inbounds %struct.celle, ptr %1123, i64 %1125
  %1127 = getelementptr inbounds %struct.celle, ptr %1126, i32 0, i32 0
  store double %1115, ptr %1127, align 8, !tbaa !138
  %1128 = load double, ptr %70, align 8, !tbaa !9
  %1129 = load double, ptr %54, align 8, !tbaa !9
  %1130 = load double, ptr %71, align 8, !tbaa !9
  %1131 = load double, ptr %57, align 8, !tbaa !9
  %1132 = fmul double %1130, %1131
  %1133 = call double @llvm.fmuladd.f64(double %1128, double %1129, double %1132)
  %1134 = load double, ptr %72, align 8, !tbaa !9
  %1135 = load double, ptr %60, align 8, !tbaa !9
  %1136 = call double @llvm.fmuladd.f64(double %1134, double %1135, double %1133)
  %1137 = getelementptr inbounds %class.spatial_region, ptr %84, i32 0, i32 46
  %1138 = load i32, ptr %76, align 4, !tbaa !11
  %1139 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1137, i32 noundef %1138)
  %1140 = load ptr, ptr %1139, align 8, !tbaa !5
  %1141 = load i32, ptr %78, align 4, !tbaa !11
  %1142 = sext i32 %1141 to i64
  %1143 = getelementptr inbounds ptr, ptr %1140, i64 %1142
  %1144 = load ptr, ptr %1143, align 8, !tbaa !5
  %1145 = load i32, ptr %79, align 4, !tbaa !11
  %1146 = sext i32 %1145 to i64
  %1147 = getelementptr inbounds %struct.celle, ptr %1144, i64 %1146
  %1148 = getelementptr inbounds %struct.celle, ptr %1147, i32 0, i32 1
  store double %1136, ptr %1148, align 8, !tbaa !140
  %1149 = load double, ptr %70, align 8, !tbaa !9
  %1150 = load double, ptr %55, align 8, !tbaa !9
  %1151 = load double, ptr %71, align 8, !tbaa !9
  %1152 = load double, ptr %58, align 8, !tbaa !9
  %1153 = fmul double %1151, %1152
  %1154 = call double @llvm.fmuladd.f64(double %1149, double %1150, double %1153)
  %1155 = load double, ptr %72, align 8, !tbaa !9
  %1156 = load double, ptr %61, align 8, !tbaa !9
  %1157 = call double @llvm.fmuladd.f64(double %1155, double %1156, double %1154)
  %1158 = getelementptr inbounds %class.spatial_region, ptr %84, i32 0, i32 46
  %1159 = load i32, ptr %76, align 4, !tbaa !11
  %1160 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1158, i32 noundef %1159)
  %1161 = load ptr, ptr %1160, align 8, !tbaa !5
  %1162 = load i32, ptr %78, align 4, !tbaa !11
  %1163 = sext i32 %1162 to i64
  %1164 = getelementptr inbounds ptr, ptr %1161, i64 %1163
  %1165 = load ptr, ptr %1164, align 8, !tbaa !5
  %1166 = load i32, ptr %79, align 4, !tbaa !11
  %1167 = sext i32 %1166 to i64
  %1168 = getelementptr inbounds %struct.celle, ptr %1165, i64 %1167
  %1169 = getelementptr inbounds %struct.celle, ptr %1168, i32 0, i32 2
  store double %1157, ptr %1169, align 8, !tbaa !141
  %1170 = load double, ptr %73, align 8, !tbaa !9
  %1171 = load double, ptr %53, align 8, !tbaa !9
  %1172 = load double, ptr %74, align 8, !tbaa !9
  %1173 = load double, ptr %56, align 8, !tbaa !9
  %1174 = fmul double %1172, %1173
  %1175 = call double @llvm.fmuladd.f64(double %1170, double %1171, double %1174)
  %1176 = load double, ptr %75, align 8, !tbaa !9
  %1177 = load double, ptr %59, align 8, !tbaa !9
  %1178 = call double @llvm.fmuladd.f64(double %1176, double %1177, double %1175)
  %1179 = getelementptr inbounds %class.spatial_region, ptr %84, i32 0, i32 47
  %1180 = load i32, ptr %76, align 4, !tbaa !11
  %1181 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5cellbEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1179, i32 noundef %1180)
  %1182 = load ptr, ptr %1181, align 8, !tbaa !5
  %1183 = load i32, ptr %78, align 4, !tbaa !11
  %1184 = sext i32 %1183 to i64
  %1185 = getelementptr inbounds ptr, ptr %1182, i64 %1184
  %1186 = load ptr, ptr %1185, align 8, !tbaa !5
  %1187 = load i32, ptr %79, align 4, !tbaa !11
  %1188 = sext i32 %1187 to i64
  %1189 = getelementptr inbounds %struct.cellb, ptr %1186, i64 %1188
  %1190 = getelementptr inbounds %struct.cellb, ptr %1189, i32 0, i32 0
  store double %1178, ptr %1190, align 8, !tbaa !142
  %1191 = load double, ptr %73, align 8, !tbaa !9
  %1192 = load double, ptr %54, align 8, !tbaa !9
  %1193 = load double, ptr %74, align 8, !tbaa !9
  %1194 = load double, ptr %57, align 8, !tbaa !9
  %1195 = fmul double %1193, %1194
  %1196 = call double @llvm.fmuladd.f64(double %1191, double %1192, double %1195)
  %1197 = load double, ptr %75, align 8, !tbaa !9
  %1198 = load double, ptr %60, align 8, !tbaa !9
  %1199 = call double @llvm.fmuladd.f64(double %1197, double %1198, double %1196)
  %1200 = getelementptr inbounds %class.spatial_region, ptr %84, i32 0, i32 47
  %1201 = load i32, ptr %76, align 4, !tbaa !11
  %1202 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5cellbEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1200, i32 noundef %1201)
  %1203 = load ptr, ptr %1202, align 8, !tbaa !5
  %1204 = load i32, ptr %78, align 4, !tbaa !11
  %1205 = sext i32 %1204 to i64
  %1206 = getelementptr inbounds ptr, ptr %1203, i64 %1205
  %1207 = load ptr, ptr %1206, align 8, !tbaa !5
  %1208 = load i32, ptr %79, align 4, !tbaa !11
  %1209 = sext i32 %1208 to i64
  %1210 = getelementptr inbounds %struct.cellb, ptr %1207, i64 %1209
  %1211 = getelementptr inbounds %struct.cellb, ptr %1210, i32 0, i32 1
  store double %1199, ptr %1211, align 8, !tbaa !144
  %1212 = load double, ptr %73, align 8, !tbaa !9
  %1213 = load double, ptr %55, align 8, !tbaa !9
  %1214 = load double, ptr %74, align 8, !tbaa !9
  %1215 = load double, ptr %58, align 8, !tbaa !9
  %1216 = fmul double %1214, %1215
  %1217 = call double @llvm.fmuladd.f64(double %1212, double %1213, double %1216)
  %1218 = load double, ptr %75, align 8, !tbaa !9
  %1219 = load double, ptr %61, align 8, !tbaa !9
  %1220 = call double @llvm.fmuladd.f64(double %1218, double %1219, double %1217)
  %1221 = getelementptr inbounds %class.spatial_region, ptr %84, i32 0, i32 47
  %1222 = load i32, ptr %76, align 4, !tbaa !11
  %1223 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5cellbEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1221, i32 noundef %1222)
  %1224 = load ptr, ptr %1223, align 8, !tbaa !5
  %1225 = load i32, ptr %78, align 4, !tbaa !11
  %1226 = sext i32 %1225 to i64
  %1227 = getelementptr inbounds ptr, ptr %1224, i64 %1226
  %1228 = load ptr, ptr %1227, align 8, !tbaa !5
  %1229 = load i32, ptr %79, align 4, !tbaa !11
  %1230 = sext i32 %1229 to i64
  %1231 = getelementptr inbounds %struct.cellb, ptr %1228, i64 %1230
  %1232 = getelementptr inbounds %struct.cellb, ptr %1231, i32 0, i32 2
  store double %1220, ptr %1232, align 8, !tbaa !145
  br label %1372

1233:                                             ; preds = %1101
  %1234 = load double, ptr %70, align 8, !tbaa !9
  %1235 = load double, ptr %53, align 8, !tbaa !9
  %1236 = load double, ptr %71, align 8, !tbaa !9
  %1237 = load double, ptr %56, align 8, !tbaa !9
  %1238 = fmul double %1236, %1237
  %1239 = call double @llvm.fmuladd.f64(double %1234, double %1235, double %1238)
  %1240 = load double, ptr %72, align 8, !tbaa !9
  %1241 = load double, ptr %59, align 8, !tbaa !9
  %1242 = call double @llvm.fmuladd.f64(double %1240, double %1241, double %1239)
  %1243 = getelementptr inbounds %class.spatial_region, ptr %84, i32 0, i32 46
  %1244 = load i32, ptr %76, align 4, !tbaa !11
  %1245 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1243, i32 noundef %1244)
  %1246 = load ptr, ptr %1245, align 8, !tbaa !5
  %1247 = load i32, ptr %78, align 4, !tbaa !11
  %1248 = sext i32 %1247 to i64
  %1249 = getelementptr inbounds ptr, ptr %1246, i64 %1248
  %1250 = load ptr, ptr %1249, align 8, !tbaa !5
  %1251 = load i32, ptr %79, align 4, !tbaa !11
  %1252 = sext i32 %1251 to i64
  %1253 = getelementptr inbounds %struct.celle, ptr %1250, i64 %1252
  %1254 = getelementptr inbounds %struct.celle, ptr %1253, i32 0, i32 0
  %1255 = load double, ptr %1254, align 8, !tbaa !138
  %1256 = fadd double %1255, %1242
  store double %1256, ptr %1254, align 8, !tbaa !138
  %1257 = load double, ptr %70, align 8, !tbaa !9
  %1258 = load double, ptr %54, align 8, !tbaa !9
  %1259 = load double, ptr %71, align 8, !tbaa !9
  %1260 = load double, ptr %57, align 8, !tbaa !9
  %1261 = fmul double %1259, %1260
  %1262 = call double @llvm.fmuladd.f64(double %1257, double %1258, double %1261)
  %1263 = load double, ptr %72, align 8, !tbaa !9
  %1264 = load double, ptr %60, align 8, !tbaa !9
  %1265 = call double @llvm.fmuladd.f64(double %1263, double %1264, double %1262)
  %1266 = getelementptr inbounds %class.spatial_region, ptr %84, i32 0, i32 46
  %1267 = load i32, ptr %76, align 4, !tbaa !11
  %1268 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1266, i32 noundef %1267)
  %1269 = load ptr, ptr %1268, align 8, !tbaa !5
  %1270 = load i32, ptr %78, align 4, !tbaa !11
  %1271 = sext i32 %1270 to i64
  %1272 = getelementptr inbounds ptr, ptr %1269, i64 %1271
  %1273 = load ptr, ptr %1272, align 8, !tbaa !5
  %1274 = load i32, ptr %79, align 4, !tbaa !11
  %1275 = sext i32 %1274 to i64
  %1276 = getelementptr inbounds %struct.celle, ptr %1273, i64 %1275
  %1277 = getelementptr inbounds %struct.celle, ptr %1276, i32 0, i32 1
  %1278 = load double, ptr %1277, align 8, !tbaa !140
  %1279 = fadd double %1278, %1265
  store double %1279, ptr %1277, align 8, !tbaa !140
  %1280 = load double, ptr %70, align 8, !tbaa !9
  %1281 = load double, ptr %55, align 8, !tbaa !9
  %1282 = load double, ptr %71, align 8, !tbaa !9
  %1283 = load double, ptr %58, align 8, !tbaa !9
  %1284 = fmul double %1282, %1283
  %1285 = call double @llvm.fmuladd.f64(double %1280, double %1281, double %1284)
  %1286 = load double, ptr %72, align 8, !tbaa !9
  %1287 = load double, ptr %61, align 8, !tbaa !9
  %1288 = call double @llvm.fmuladd.f64(double %1286, double %1287, double %1285)
  %1289 = getelementptr inbounds %class.spatial_region, ptr %84, i32 0, i32 46
  %1290 = load i32, ptr %76, align 4, !tbaa !11
  %1291 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1289, i32 noundef %1290)
  %1292 = load ptr, ptr %1291, align 8, !tbaa !5
  %1293 = load i32, ptr %78, align 4, !tbaa !11
  %1294 = sext i32 %1293 to i64
  %1295 = getelementptr inbounds ptr, ptr %1292, i64 %1294
  %1296 = load ptr, ptr %1295, align 8, !tbaa !5
  %1297 = load i32, ptr %79, align 4, !tbaa !11
  %1298 = sext i32 %1297 to i64
  %1299 = getelementptr inbounds %struct.celle, ptr %1296, i64 %1298
  %1300 = getelementptr inbounds %struct.celle, ptr %1299, i32 0, i32 2
  %1301 = load double, ptr %1300, align 8, !tbaa !141
  %1302 = fadd double %1301, %1288
  store double %1302, ptr %1300, align 8, !tbaa !141
  %1303 = load double, ptr %73, align 8, !tbaa !9
  %1304 = load double, ptr %53, align 8, !tbaa !9
  %1305 = load double, ptr %74, align 8, !tbaa !9
  %1306 = load double, ptr %56, align 8, !tbaa !9
  %1307 = fmul double %1305, %1306
  %1308 = call double @llvm.fmuladd.f64(double %1303, double %1304, double %1307)
  %1309 = load double, ptr %75, align 8, !tbaa !9
  %1310 = load double, ptr %59, align 8, !tbaa !9
  %1311 = call double @llvm.fmuladd.f64(double %1309, double %1310, double %1308)
  %1312 = getelementptr inbounds %class.spatial_region, ptr %84, i32 0, i32 47
  %1313 = load i32, ptr %76, align 4, !tbaa !11
  %1314 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5cellbEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1312, i32 noundef %1313)
  %1315 = load ptr, ptr %1314, align 8, !tbaa !5
  %1316 = load i32, ptr %78, align 4, !tbaa !11
  %1317 = sext i32 %1316 to i64
  %1318 = getelementptr inbounds ptr, ptr %1315, i64 %1317
  %1319 = load ptr, ptr %1318, align 8, !tbaa !5
  %1320 = load i32, ptr %79, align 4, !tbaa !11
  %1321 = sext i32 %1320 to i64
  %1322 = getelementptr inbounds %struct.cellb, ptr %1319, i64 %1321
  %1323 = getelementptr inbounds %struct.cellb, ptr %1322, i32 0, i32 0
  %1324 = load double, ptr %1323, align 8, !tbaa !142
  %1325 = fadd double %1324, %1311
  store double %1325, ptr %1323, align 8, !tbaa !142
  %1326 = load double, ptr %73, align 8, !tbaa !9
  %1327 = load double, ptr %54, align 8, !tbaa !9
  %1328 = load double, ptr %74, align 8, !tbaa !9
  %1329 = load double, ptr %57, align 8, !tbaa !9
  %1330 = fmul double %1328, %1329
  %1331 = call double @llvm.fmuladd.f64(double %1326, double %1327, double %1330)
  %1332 = load double, ptr %75, align 8, !tbaa !9
  %1333 = load double, ptr %60, align 8, !tbaa !9
  %1334 = call double @llvm.fmuladd.f64(double %1332, double %1333, double %1331)
  %1335 = getelementptr inbounds %class.spatial_region, ptr %84, i32 0, i32 47
  %1336 = load i32, ptr %76, align 4, !tbaa !11
  %1337 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5cellbEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1335, i32 noundef %1336)
  %1338 = load ptr, ptr %1337, align 8, !tbaa !5
  %1339 = load i32, ptr %78, align 4, !tbaa !11
  %1340 = sext i32 %1339 to i64
  %1341 = getelementptr inbounds ptr, ptr %1338, i64 %1340
  %1342 = load ptr, ptr %1341, align 8, !tbaa !5
  %1343 = load i32, ptr %79, align 4, !tbaa !11
  %1344 = sext i32 %1343 to i64
  %1345 = getelementptr inbounds %struct.cellb, ptr %1342, i64 %1344
  %1346 = getelementptr inbounds %struct.cellb, ptr %1345, i32 0, i32 1
  %1347 = load double, ptr %1346, align 8, !tbaa !144
  %1348 = fadd double %1347, %1334
  store double %1348, ptr %1346, align 8, !tbaa !144
  %1349 = load double, ptr %73, align 8, !tbaa !9
  %1350 = load double, ptr %55, align 8, !tbaa !9
  %1351 = load double, ptr %74, align 8, !tbaa !9
  %1352 = load double, ptr %58, align 8, !tbaa !9
  %1353 = fmul double %1351, %1352
  %1354 = call double @llvm.fmuladd.f64(double %1349, double %1350, double %1353)
  %1355 = load double, ptr %75, align 8, !tbaa !9
  %1356 = load double, ptr %61, align 8, !tbaa !9
  %1357 = call double @llvm.fmuladd.f64(double %1355, double %1356, double %1354)
  %1358 = getelementptr inbounds %class.spatial_region, ptr %84, i32 0, i32 47
  %1359 = load i32, ptr %76, align 4, !tbaa !11
  %1360 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5cellbEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1358, i32 noundef %1359)
  %1361 = load ptr, ptr %1360, align 8, !tbaa !5
  %1362 = load i32, ptr %78, align 4, !tbaa !11
  %1363 = sext i32 %1362 to i64
  %1364 = getelementptr inbounds ptr, ptr %1361, i64 %1363
  %1365 = load ptr, ptr %1364, align 8, !tbaa !5
  %1366 = load i32, ptr %79, align 4, !tbaa !11
  %1367 = sext i32 %1366 to i64
  %1368 = getelementptr inbounds %struct.cellb, ptr %1365, i64 %1367
  %1369 = getelementptr inbounds %struct.cellb, ptr %1368, i32 0, i32 2
  %1370 = load double, ptr %1369, align 8, !tbaa !145
  %1371 = fadd double %1370, %1357
  store double %1371, ptr %1369, align 8, !tbaa !145
  br label %1372

1372:                                             ; preds = %1233, %1106
  br label %1452

1373:                                             ; preds = %428, %424, %419, %415, %410, %292
  %1374 = load i8, ptr %32, align 1, !tbaa !13, !range !136, !noundef !137
  %1375 = trunc i8 %1374 to i1
  %1376 = zext i1 %1375 to i32
  %1377 = icmp eq i32 %1376, 0
  br i1 %1377, label %1378, label %1451

1378:                                             ; preds = %1373
  %1379 = getelementptr inbounds %class.spatial_region, ptr %84, i32 0, i32 46
  %1380 = load i32, ptr %76, align 4, !tbaa !11
  %1381 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1379, i32 noundef %1380)
  %1382 = load ptr, ptr %1381, align 8, !tbaa !5
  %1383 = load i32, ptr %78, align 4, !tbaa !11
  %1384 = sext i32 %1383 to i64
  %1385 = getelementptr inbounds ptr, ptr %1382, i64 %1384
  %1386 = load ptr, ptr %1385, align 8, !tbaa !5
  %1387 = load i32, ptr %79, align 4, !tbaa !11
  %1388 = sext i32 %1387 to i64
  %1389 = getelementptr inbounds %struct.celle, ptr %1386, i64 %1388
  %1390 = getelementptr inbounds %struct.celle, ptr %1389, i32 0, i32 0
  store double 0.000000e+00, ptr %1390, align 8, !tbaa !138
  %1391 = getelementptr inbounds %class.spatial_region, ptr %84, i32 0, i32 46
  %1392 = load i32, ptr %76, align 4, !tbaa !11
  %1393 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1391, i32 noundef %1392)
  %1394 = load ptr, ptr %1393, align 8, !tbaa !5
  %1395 = load i32, ptr %78, align 4, !tbaa !11
  %1396 = sext i32 %1395 to i64
  %1397 = getelementptr inbounds ptr, ptr %1394, i64 %1396
  %1398 = load ptr, ptr %1397, align 8, !tbaa !5
  %1399 = load i32, ptr %79, align 4, !tbaa !11
  %1400 = sext i32 %1399 to i64
  %1401 = getelementptr inbounds %struct.celle, ptr %1398, i64 %1400
  %1402 = getelementptr inbounds %struct.celle, ptr %1401, i32 0, i32 1
  store double 0.000000e+00, ptr %1402, align 8, !tbaa !140
  %1403 = getelementptr inbounds %class.spatial_region, ptr %84, i32 0, i32 46
  %1404 = load i32, ptr %76, align 4, !tbaa !11
  %1405 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1403, i32 noundef %1404)
  %1406 = load ptr, ptr %1405, align 8, !tbaa !5
  %1407 = load i32, ptr %78, align 4, !tbaa !11
  %1408 = sext i32 %1407 to i64
  %1409 = getelementptr inbounds ptr, ptr %1406, i64 %1408
  %1410 = load ptr, ptr %1409, align 8, !tbaa !5
  %1411 = load i32, ptr %79, align 4, !tbaa !11
  %1412 = sext i32 %1411 to i64
  %1413 = getelementptr inbounds %struct.celle, ptr %1410, i64 %1412
  %1414 = getelementptr inbounds %struct.celle, ptr %1413, i32 0, i32 2
  store double 0.000000e+00, ptr %1414, align 8, !tbaa !141
  %1415 = getelementptr inbounds %class.spatial_region, ptr %84, i32 0, i32 47
  %1416 = load i32, ptr %76, align 4, !tbaa !11
  %1417 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5cellbEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1415, i32 noundef %1416)
  %1418 = load ptr, ptr %1417, align 8, !tbaa !5
  %1419 = load i32, ptr %78, align 4, !tbaa !11
  %1420 = sext i32 %1419 to i64
  %1421 = getelementptr inbounds ptr, ptr %1418, i64 %1420
  %1422 = load ptr, ptr %1421, align 8, !tbaa !5
  %1423 = load i32, ptr %79, align 4, !tbaa !11
  %1424 = sext i32 %1423 to i64
  %1425 = getelementptr inbounds %struct.cellb, ptr %1422, i64 %1424
  %1426 = getelementptr inbounds %struct.cellb, ptr %1425, i32 0, i32 0
  store double 0.000000e+00, ptr %1426, align 8, !tbaa !142
  %1427 = getelementptr inbounds %class.spatial_region, ptr %84, i32 0, i32 47
  %1428 = load i32, ptr %76, align 4, !tbaa !11
  %1429 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5cellbEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1427, i32 noundef %1428)
  %1430 = load ptr, ptr %1429, align 8, !tbaa !5
  %1431 = load i32, ptr %78, align 4, !tbaa !11
  %1432 = sext i32 %1431 to i64
  %1433 = getelementptr inbounds ptr, ptr %1430, i64 %1432
  %1434 = load ptr, ptr %1433, align 8, !tbaa !5
  %1435 = load i32, ptr %79, align 4, !tbaa !11
  %1436 = sext i32 %1435 to i64
  %1437 = getelementptr inbounds %struct.cellb, ptr %1434, i64 %1436
  %1438 = getelementptr inbounds %struct.cellb, ptr %1437, i32 0, i32 1
  store double 0.000000e+00, ptr %1438, align 8, !tbaa !144
  %1439 = getelementptr inbounds %class.spatial_region, ptr %84, i32 0, i32 47
  %1440 = load i32, ptr %76, align 4, !tbaa !11
  %1441 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5cellbEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1439, i32 noundef %1440)
  %1442 = load ptr, ptr %1441, align 8, !tbaa !5
  %1443 = load i32, ptr %78, align 4, !tbaa !11
  %1444 = sext i32 %1443 to i64
  %1445 = getelementptr inbounds ptr, ptr %1442, i64 %1444
  %1446 = load ptr, ptr %1445, align 8, !tbaa !5
  %1447 = load i32, ptr %79, align 4, !tbaa !11
  %1448 = sext i32 %1447 to i64
  %1449 = getelementptr inbounds %struct.cellb, ptr %1446, i64 %1448
  %1450 = getelementptr inbounds %struct.cellb, ptr %1449, i32 0, i32 2
  store double 0.000000e+00, ptr %1450, align 8, !tbaa !145
  br label %1451

1451:                                             ; preds = %1378, %1373
  br label %1452

1452:                                             ; preds = %1451, %1372
  br label %1453

1453:                                             ; preds = %1452
  %1454 = load i32, ptr %79, align 4, !tbaa !11
  %1455 = add nsw i32 %1454, 1
  store i32 %1455, ptr %79, align 4, !tbaa !11
  br label %286, !llvm.loop !146

1456:                                             ; preds = %291
  br label %1457

1457:                                             ; preds = %1456
  %1458 = load i32, ptr %78, align 4, !tbaa !11
  %1459 = add nsw i32 %1458, 1
  store i32 %1459, ptr %78, align 4, !tbaa !11
  br label %279, !llvm.loop !148

1460:                                             ; preds = %284
  br label %1461

1461:                                             ; preds = %1460
  %1462 = load i32, ptr %76, align 4, !tbaa !11
  %1463 = add nsw i32 %1462, 1
  store i32 %1463, ptr %76, align 4, !tbaa !11
  br label %272, !llvm.loop !149

1464:                                             ; preds = %277
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #5
  ret void
}

; Function Attrs: nounwind
declare double @sqrt(double noundef) #2

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

; Function Attrs: nounwind
declare double @cos(double noundef) #2

; Function Attrs: nounwind
declare double @sin(double noundef) #2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40), i32 noundef) #4 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5cellbEixEi(ptr noundef nonnull align 8 dereferenceable(40), i32 noundef) #4 align 2

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"double", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"int", !7, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"bool", !7, i64 0}
!15 = !{!16, !12, i64 4}
!16 = !{!"_ZTS14spatial_region", !12, i64 0, !12, i64 4, !12, i64 8, !10, i64 16, !10, i64 24, !10, i64 32, !10, i64 40, !12, i64 48, !12, i64 52, !12, i64 56, !10, i64 64, !6, i64 72, !12, i64 80, !12, i64 84, !12, i64 88, !6, i64 96, !12, i64 104, !12, i64 108, !12, i64 112, !12, i64 116, !12, i64 120, !12, i64 124, !12, i64 128, !17, i64 136, !23, i64 144, !10, i64 176, !10, i64 184, !10, i64 192, !12, i64 200, !12, i64 204, !12, i64 208, !6, i64 216, !10, i64 224, !10, i64 232, !10, i64 240, !10, i64 248, !6, i64 256, !10, i64 264, !10, i64 272, !10, i64 280, !6, i64 288, !25, i64 296, !6, i64 328, !6, i64 336, !6, i64 344, !6, i64 352, !28, i64 360, !47, i64 400, !66, i64 440, !85, i64 480, !104, i64 520, !123, i64 560, !127, i64 584}
!17 = !{!"_ZTSSt10unique_ptrI14maxwell_solverSt14default_deleteIS0_EE", !18, i64 0}
!18 = !{!"_ZTSSt15__uniq_ptr_dataI14maxwell_solverSt14default_deleteIS0_ELb1ELb1EE", !19, i64 0}
!19 = !{!"_ZTSSt15__uniq_ptr_implI14maxwell_solverSt14default_deleteIS0_EE", !20, i64 0}
!20 = !{!"_ZTSSt5tupleIJP14maxwell_solverSt14default_deleteIS0_EEE", !21, i64 0}
!21 = !{!"_ZTSSt11_Tuple_implILm0EJP14maxwell_solverSt14default_deleteIS0_EEE", !22, i64 0}
!22 = !{!"_ZTSSt10_Head_baseILm0EP14maxwell_solverLb0EE", !6, i64 0}
!23 = !{!"_ZTSSt8functionIFvR8particleR8vector3dS3_RdEE", !24, i64 0, !6, i64 24}
!24 = !{!"_ZTSSt14_Function_base", !7, i64 0, !6, i64 16}
!25 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !26, i64 0, !27, i64 8, !7, i64 16}
!26 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!27 = !{!"long", !7, i64 0}
!28 = !{!"_ZTS7field3dI5celleE", !12, i64 0, !12, i64 4, !12, i64 8, !29, i64 16, !35, i64 24, !41, i64 32}
!29 = !{!"_ZTSSt10unique_ptrIA_PP5celleSt14default_deleteIS3_EE", !30, i64 0}
!30 = !{!"_ZTSSt15__uniq_ptr_dataIPP5celleSt14default_deleteIA_S2_ELb1ELb1EE", !31, i64 0}
!31 = !{!"_ZTSSt15__uniq_ptr_implIPP5celleSt14default_deleteIA_S2_EE", !32, i64 0}
!32 = !{!"_ZTSSt5tupleIJPPP5celleSt14default_deleteIA_S2_EEE", !33, i64 0}
!33 = !{!"_ZTSSt11_Tuple_implILm0EJPPP5celleSt14default_deleteIA_S2_EEE", !34, i64 0}
!34 = !{!"_ZTSSt10_Head_baseILm0EPPP5celleLb0EE", !6, i64 0}
!35 = !{!"_ZTSSt10unique_ptrIA_P5celleSt14default_deleteIS2_EE", !36, i64 0}
!36 = !{!"_ZTSSt15__uniq_ptr_dataIP5celleSt14default_deleteIA_S1_ELb1ELb1EE", !37, i64 0}
!37 = !{!"_ZTSSt15__uniq_ptr_implIP5celleSt14default_deleteIA_S1_EE", !38, i64 0}
!38 = !{!"_ZTSSt5tupleIJPP5celleSt14default_deleteIA_S1_EEE", !39, i64 0}
!39 = !{!"_ZTSSt11_Tuple_implILm0EJPP5celleSt14default_deleteIA_S1_EEE", !40, i64 0}
!40 = !{!"_ZTSSt10_Head_baseILm0EPP5celleLb0EE", !6, i64 0}
!41 = !{!"_ZTSSt10unique_ptrIA_5celleSt14default_deleteIS1_EE", !42, i64 0}
!42 = !{!"_ZTSSt15__uniq_ptr_dataI5celleSt14default_deleteIA_S0_ELb1ELb1EE", !43, i64 0}
!43 = !{!"_ZTSSt15__uniq_ptr_implI5celleSt14default_deleteIA_S0_EE", !44, i64 0}
!44 = !{!"_ZTSSt5tupleIJP5celleSt14default_deleteIA_S0_EEE", !45, i64 0}
!45 = !{!"_ZTSSt11_Tuple_implILm0EJP5celleSt14default_deleteIA_S0_EEE", !46, i64 0}
!46 = !{!"_ZTSSt10_Head_baseILm0EP5celleLb0EE", !6, i64 0}
!47 = !{!"_ZTS7field3dI5cellbE", !12, i64 0, !12, i64 4, !12, i64 8, !48, i64 16, !54, i64 24, !60, i64 32}
!48 = !{!"_ZTSSt10unique_ptrIA_PP5cellbSt14default_deleteIS3_EE", !49, i64 0}
!49 = !{!"_ZTSSt15__uniq_ptr_dataIPP5cellbSt14default_deleteIA_S2_ELb1ELb1EE", !50, i64 0}
!50 = !{!"_ZTSSt15__uniq_ptr_implIPP5cellbSt14default_deleteIA_S2_EE", !51, i64 0}
!51 = !{!"_ZTSSt5tupleIJPPP5cellbSt14default_deleteIA_S2_EEE", !52, i64 0}
!52 = !{!"_ZTSSt11_Tuple_implILm0EJPPP5cellbSt14default_deleteIA_S2_EEE", !53, i64 0}
!53 = !{!"_ZTSSt10_Head_baseILm0EPPP5cellbLb0EE", !6, i64 0}
!54 = !{!"_ZTSSt10unique_ptrIA_P5cellbSt14default_deleteIS2_EE", !55, i64 0}
!55 = !{!"_ZTSSt15__uniq_ptr_dataIP5cellbSt14default_deleteIA_S1_ELb1ELb1EE", !56, i64 0}
!56 = !{!"_ZTSSt15__uniq_ptr_implIP5cellbSt14default_deleteIA_S1_EE", !57, i64 0}
!57 = !{!"_ZTSSt5tupleIJPP5cellbSt14default_deleteIA_S1_EEE", !58, i64 0}
!58 = !{!"_ZTSSt11_Tuple_implILm0EJPP5cellbSt14default_deleteIA_S1_EEE", !59, i64 0}
!59 = !{!"_ZTSSt10_Head_baseILm0EPP5cellbLb0EE", !6, i64 0}
!60 = !{!"_ZTSSt10unique_ptrIA_5cellbSt14default_deleteIS1_EE", !61, i64 0}
!61 = !{!"_ZTSSt15__uniq_ptr_dataI5cellbSt14default_deleteIA_S0_ELb1ELb1EE", !62, i64 0}
!62 = !{!"_ZTSSt15__uniq_ptr_implI5cellbSt14default_deleteIA_S0_EE", !63, i64 0}
!63 = !{!"_ZTSSt5tupleIJP5cellbSt14default_deleteIA_S0_EEE", !64, i64 0}
!64 = !{!"_ZTSSt11_Tuple_implILm0EJP5cellbSt14default_deleteIA_S0_EEE", !65, i64 0}
!65 = !{!"_ZTSSt10_Head_baseILm0EP5cellbLb0EE", !6, i64 0}
!66 = !{!"_ZTS7field3dI5celljE", !12, i64 0, !12, i64 4, !12, i64 8, !67, i64 16, !73, i64 24, !79, i64 32}
!67 = !{!"_ZTSSt10unique_ptrIA_PP5celljSt14default_deleteIS3_EE", !68, i64 0}
!68 = !{!"_ZTSSt15__uniq_ptr_dataIPP5celljSt14default_deleteIA_S2_ELb1ELb1EE", !69, i64 0}
!69 = !{!"_ZTSSt15__uniq_ptr_implIPP5celljSt14default_deleteIA_S2_EE", !70, i64 0}
!70 = !{!"_ZTSSt5tupleIJPPP5celljSt14default_deleteIA_S2_EEE", !71, i64 0}
!71 = !{!"_ZTSSt11_Tuple_implILm0EJPPP5celljSt14default_deleteIA_S2_EEE", !72, i64 0}
!72 = !{!"_ZTSSt10_Head_baseILm0EPPP5celljLb0EE", !6, i64 0}
!73 = !{!"_ZTSSt10unique_ptrIA_P5celljSt14default_deleteIS2_EE", !74, i64 0}
!74 = !{!"_ZTSSt15__uniq_ptr_dataIP5celljSt14default_deleteIA_S1_ELb1ELb1EE", !75, i64 0}
!75 = !{!"_ZTSSt15__uniq_ptr_implIP5celljSt14default_deleteIA_S1_EE", !76, i64 0}
!76 = !{!"_ZTSSt5tupleIJPP5celljSt14default_deleteIA_S1_EEE", !77, i64 0}
!77 = !{!"_ZTSSt11_Tuple_implILm0EJPP5celljSt14default_deleteIA_S1_EEE", !78, i64 0}
!78 = !{!"_ZTSSt10_Head_baseILm0EPP5celljLb0EE", !6, i64 0}
!79 = !{!"_ZTSSt10unique_ptrIA_5celljSt14default_deleteIS1_EE", !80, i64 0}
!80 = !{!"_ZTSSt15__uniq_ptr_dataI5celljSt14default_deleteIA_S0_ELb1ELb1EE", !81, i64 0}
!81 = !{!"_ZTSSt15__uniq_ptr_implI5celljSt14default_deleteIA_S0_EE", !82, i64 0}
!82 = !{!"_ZTSSt5tupleIJP5celljSt14default_deleteIA_S0_EEE", !83, i64 0}
!83 = !{!"_ZTSSt11_Tuple_implILm0EJP5celljSt14default_deleteIA_S0_EEE", !84, i64 0}
!84 = !{!"_ZTSSt10_Head_baseILm0EP5celljLb0EE", !6, i64 0}
!85 = !{!"_ZTS7field3dI6cellbeE", !12, i64 0, !12, i64 4, !12, i64 8, !86, i64 16, !92, i64 24, !98, i64 32}
!86 = !{!"_ZTSSt10unique_ptrIA_PP6cellbeSt14default_deleteIS3_EE", !87, i64 0}
!87 = !{!"_ZTSSt15__uniq_ptr_dataIPP6cellbeSt14default_deleteIA_S2_ELb1ELb1EE", !88, i64 0}
!88 = !{!"_ZTSSt15__uniq_ptr_implIPP6cellbeSt14default_deleteIA_S2_EE", !89, i64 0}
!89 = !{!"_ZTSSt5tupleIJPPP6cellbeSt14default_deleteIA_S2_EEE", !90, i64 0}
!90 = !{!"_ZTSSt11_Tuple_implILm0EJPPP6cellbeSt14default_deleteIA_S2_EEE", !91, i64 0}
!91 = !{!"_ZTSSt10_Head_baseILm0EPPP6cellbeLb0EE", !6, i64 0}
!92 = !{!"_ZTSSt10unique_ptrIA_P6cellbeSt14default_deleteIS2_EE", !93, i64 0}
!93 = !{!"_ZTSSt15__uniq_ptr_dataIP6cellbeSt14default_deleteIA_S1_ELb1ELb1EE", !94, i64 0}
!94 = !{!"_ZTSSt15__uniq_ptr_implIP6cellbeSt14default_deleteIA_S1_EE", !95, i64 0}
!95 = !{!"_ZTSSt5tupleIJPP6cellbeSt14default_deleteIA_S1_EEE", !96, i64 0}
!96 = !{!"_ZTSSt11_Tuple_implILm0EJPP6cellbeSt14default_deleteIA_S1_EEE", !97, i64 0}
!97 = !{!"_ZTSSt10_Head_baseILm0EPP6cellbeLb0EE", !6, i64 0}
!98 = !{!"_ZTSSt10unique_ptrIA_6cellbeSt14default_deleteIS1_EE", !99, i64 0}
!99 = !{!"_ZTSSt15__uniq_ptr_dataI6cellbeSt14default_deleteIA_S0_ELb1ELb1EE", !100, i64 0}
!100 = !{!"_ZTSSt15__uniq_ptr_implI6cellbeSt14default_deleteIA_S0_EE", !101, i64 0}
!101 = !{!"_ZTSSt5tupleIJP6cellbeSt14default_deleteIA_S0_EEE", !102, i64 0}
!102 = !{!"_ZTSSt11_Tuple_implILm0EJP6cellbeSt14default_deleteIA_S0_EEE", !103, i64 0}
!103 = !{!"_ZTSSt10_Head_baseILm0EP6cellbeLb0EE", !6, i64 0}
!104 = !{!"_ZTS7field3dI5cellpE", !12, i64 0, !12, i64 4, !12, i64 8, !105, i64 16, !111, i64 24, !117, i64 32}
!105 = !{!"_ZTSSt10unique_ptrIA_PP5cellpSt14default_deleteIS3_EE", !106, i64 0}
!106 = !{!"_ZTSSt15__uniq_ptr_dataIPP5cellpSt14default_deleteIA_S2_ELb1ELb1EE", !107, i64 0}
!107 = !{!"_ZTSSt15__uniq_ptr_implIPP5cellpSt14default_deleteIA_S2_EE", !108, i64 0}
!108 = !{!"_ZTSSt5tupleIJPPP5cellpSt14default_deleteIA_S2_EEE", !109, i64 0}
!109 = !{!"_ZTSSt11_Tuple_implILm0EJPPP5cellpSt14default_deleteIA_S2_EEE", !110, i64 0}
!110 = !{!"_ZTSSt10_Head_baseILm0EPPP5cellpLb0EE", !6, i64 0}
!111 = !{!"_ZTSSt10unique_ptrIA_P5cellpSt14default_deleteIS2_EE", !112, i64 0}
!112 = !{!"_ZTSSt15__uniq_ptr_dataIP5cellpSt14default_deleteIA_S1_ELb1ELb1EE", !113, i64 0}
!113 = !{!"_ZTSSt15__uniq_ptr_implIP5cellpSt14default_deleteIA_S1_EE", !114, i64 0}
!114 = !{!"_ZTSSt5tupleIJPP5cellpSt14default_deleteIA_S1_EEE", !115, i64 0}
!115 = !{!"_ZTSSt11_Tuple_implILm0EJPP5cellpSt14default_deleteIA_S1_EEE", !116, i64 0}
!116 = !{!"_ZTSSt10_Head_baseILm0EPP5cellpLb0EE", !6, i64 0}
!117 = !{!"_ZTSSt10unique_ptrIA_5cellpSt14default_deleteIS1_EE", !118, i64 0}
!118 = !{!"_ZTSSt15__uniq_ptr_dataI5cellpSt14default_deleteIA_S0_ELb1ELb1EE", !119, i64 0}
!119 = !{!"_ZTSSt15__uniq_ptr_implI5cellpSt14default_deleteIA_S0_EE", !120, i64 0}
!120 = !{!"_ZTSSt5tupleIJP5cellpSt14default_deleteIA_S0_EEE", !121, i64 0}
!121 = !{!"_ZTSSt11_Tuple_implILm0EJP5cellpSt14default_deleteIA_S0_EEE", !122, i64 0}
!122 = !{!"_ZTSSt10_Head_baseILm0EP5cellpLb0EE", !6, i64 0}
!123 = !{!"_ZTSSt6vectorI7field3dIdESaIS1_EE", !124, i64 0}
!124 = !{!"_ZTSSt12_Vector_baseI7field3dIdESaIS1_EE", !125, i64 0}
!125 = !{!"_ZTSNSt12_Vector_baseI7field3dIdESaIS1_EE12_Vector_implE", !126, i64 0}
!126 = !{!"_ZTSNSt12_Vector_baseI7field3dIdESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!127 = !{!"_ZTSSt6vectorIN14spatial_region16deleted_particleESaIS1_EE", !128, i64 0}
!128 = !{!"_ZTSSt12_Vector_baseIN14spatial_region16deleted_particleESaIS1_EE", !129, i64 0}
!129 = !{!"_ZTSNSt12_Vector_baseIN14spatial_region16deleted_particleESaIS1_EE12_Vector_implE", !130, i64 0}
!130 = !{!"_ZTSNSt12_Vector_baseIN14spatial_region16deleted_particleESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!131 = !{!16, !10, i64 24}
!132 = !{!16, !12, i64 8}
!133 = !{!16, !10, i64 32}
!134 = !{!16, !12, i64 0}
!135 = !{!16, !10, i64 16}
!136 = !{i8 0, i8 2}
!137 = !{}
!138 = !{!139, !10, i64 0}
!139 = !{!"_ZTS5celle", !10, i64 0, !10, i64 8, !10, i64 16}
!140 = !{!139, !10, i64 8}
!141 = !{!139, !10, i64 16}
!142 = !{!143, !10, i64 0}
!143 = !{!"_ZTS5cellb", !10, i64 0, !10, i64 8, !10, i64 16}
!144 = !{!143, !10, i64 8}
!145 = !{!143, !10, i64 16}
!146 = distinct !{!146, !147}
!147 = !{!"llvm.loop.mustprogress"}
!148 = distinct !{!148, !147}
!149 = distinct !{!149, !147}


; 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.celle = type { double, double, double }
%struct.cellb = type { double, double, double }

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN14spatial_region10f_init_cosEddddddibddddbdddd(ptr noundef nonnull align 8 dereferenceable(608) %0, double noundef %1, double noundef %2, double noundef %3, double noundef %4, double noundef %5, double noundef %6, i32 noundef %7, i1 noundef zeroext %8, double noundef %9, double noundef %10, double noundef %11, double noundef %12, i1 noundef zeroext %13, double noundef %14, double noundef %15, double noundef %16, double noundef %17) local_unnamed_addr #0 align 2 {
  %19 = icmp eq i32 %7, 0
  br i1 %19, label %20, label %29

20:                                               ; preds = %18
  %21 = fmul double %3, 2.000000e+00
  %22 = fmul double %21, 0x40040D931FF62705
  %23 = fdiv double %22, 3.000000e+00
  %24 = insertelement <2 x double> poison, double %5, i64 0
  %25 = insertelement <2 x double> %24, double %4, i64 1
  %26 = fmul <2 x double> %25, <double 2.000000e+00, double 2.000000e+00>
  %27 = fmul <2 x double> %26, <double 0x40040D931FF62705, double 0x40040D931FF62705>
  %28 = fdiv <2 x double> %27, <double 3.000000e+00, double 3.000000e+00>
  br label %49

29:                                               ; preds = %18
  switch i32 %7, label %49 [
    i32 1, label %30
    i32 2, label %35
    i32 3, label %42
  ]

30:                                               ; preds = %29
  %31 = fmul double %3, 8.220000e-01
  %32 = insertelement <2 x double> poison, double %5, i64 0
  %33 = insertelement <2 x double> %32, double %4, i64 1
  %34 = fmul <2 x double> %33, <double 8.220000e-01, double 8.220000e-01>
  br label %49

35:                                               ; preds = %29
  %36 = fmul double %3, 2.000000e+00
  %37 = fmul double %36, 0x40040D931FF62705
  %38 = fdiv double %37, 3.000000e+00
  %39 = fmul double %4, 1.000000e+02
  %40 = insertelement <2 x double> poison, double %39, i64 0
  %41 = shufflevector <2 x double> %40, <2 x double> poison, <2 x i32> zeroinitializer
  br label %49

42:                                               ; preds = %29
  %43 = fmul double %3, 2.000000e+00
  %44 = fmul double %43, 0x40040D931FF62705
  %45 = fdiv double %44, 3.000000e+00
  %46 = insertelement <2 x double> poison, double %5, i64 0
  %47 = insertelement <2 x double> %46, double %4, i64 1
  %48 = fmul <2 x double> %47, <double 8.220000e-01, double 8.220000e-01>
  br label %49

49:                                               ; preds = %29, %30, %42, %35, %20
  %.0 = phi double [ %23, %20 ], [ %31, %30 ], [ %38, %35 ], [ %45, %42 ], [ 0.000000e+00, %29 ]
  %50 = phi <2 x double> [ %28, %20 ], [ %34, %30 ], [ %41, %35 ], [ %48, %42 ], [ zeroinitializer, %29 ]
  %51 = getelementptr inbounds i8, ptr %0, i64 4
  %52 = load i32, ptr %51, align 4, !tbaa !5
  %53 = sitofp i32 %52 to double
  %54 = getelementptr inbounds i8, ptr %0, i64 24
  %55 = load double, ptr %54, align 8, !tbaa !126
  %56 = getelementptr inbounds i8, ptr %0, i64 8
  %57 = load i32, ptr %56, align 8, !tbaa !127
  %58 = sitofp i32 %57 to double
  %59 = getelementptr inbounds i8, ptr %0, i64 32
  %60 = load double, ptr %59, align 8, !tbaa !128
  %61 = fmul double %11, %11
  %62 = tail call double @llvm.fmuladd.f64(double %9, double %9, double %61)
  %63 = tail call double @llvm.fmuladd.f64(double %12, double %12, double %62)
  %sqrt629 = tail call double @llvm.sqrt.f64(double %63)
  %64 = fneg double %11
  %65 = fdiv double %64, %sqrt629
  %66 = fneg double %12
  %67 = fdiv double %66, %sqrt629
  %68 = fneg double %9
  %69 = fdiv double %68, %sqrt629
  %70 = fmul double %65, %65
  %71 = tail call double @llvm.fmuladd.f64(double %69, double %69, double %70)
  %sqrt = tail call double @llvm.sqrt.f64(double %71)
  %72 = fcmp une double %sqrt, 0.000000e+00
  %73 = fneg double %65
  %74 = fdiv double %73, %sqrt
  %75 = fdiv double %69, %sqrt
  %.0611 = select i1 %72, double %74, double 0.000000e+00
  %.0609 = select i1 %72, double %75, double 1.000000e+00
  %76 = fneg double %67
  %77 = fmul double %.0609, %76
  %78 = tail call double @llvm.fmuladd.f64(double %65, double 0.000000e+00, double %77)
  %79 = fmul double %69, -0.000000e+00
  %80 = tail call double @llvm.fmuladd.f64(double %67, double %.0611, double %79)
  %81 = fmul double %.0611, %73
  %82 = tail call double @llvm.fmuladd.f64(double %69, double %.0609, double %81)
  %83 = fcmp une double %14, 0.000000e+00
  %84 = insertelement <2 x double> <double poison, double 0.000000e+00>, double %82, i64 0
  %85 = insertelement <2 x double> poison, double %78, i64 0
  %86 = insertelement <2 x double> %85, double %.0611, i64 1
  %87 = insertelement <2 x double> poison, double %80, i64 0
  %88 = insertelement <2 x double> %87, double %.0609, i64 1
  br i1 %83, label %89, label %109

89:                                               ; preds = %49
  %90 = tail call double @cos(double noundef %14) #5
  %91 = tail call double @sin(double noundef %14) #5
  %92 = fneg double %.0611
  %93 = fneg double %.0609
  %94 = insertelement <2 x double> poison, double %91, i64 0
  %95 = shufflevector <2 x double> %94, <2 x double> poison, <2 x i32> zeroinitializer
  %96 = insertelement <2 x double> poison, double %92, i64 0
  %97 = insertelement <2 x double> %96, double %78, i64 1
  %98 = fmul <2 x double> %95, %97
  %99 = insertelement <2 x double> poison, double %93, i64 0
  %100 = insertelement <2 x double> %99, double %80, i64 1
  %101 = fmul <2 x double> %95, %100
  %102 = insertelement <2 x double> <double -0.000000e+00, double poison>, double %82, i64 1
  %103 = fmul <2 x double> %102, %95
  %104 = insertelement <2 x double> poison, double %90, i64 0
  %105 = shufflevector <2 x double> %104, <2 x double> poison, <2 x i32> zeroinitializer
  %106 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %86, <2 x double> %105, <2 x double> %98)
  %107 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %88, <2 x double> %105, <2 x double> %101)
  %108 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %84, <2 x double> %105, <2 x double> %103)
  br label %109

109:                                              ; preds = %89, %49
  %110 = phi <2 x double> [ %108, %89 ], [ %84, %49 ]
  %111 = phi <2 x double> [ %106, %89 ], [ %86, %49 ]
  %112 = phi <2 x double> [ %107, %89 ], [ %88, %49 ]
  %113 = load i32, ptr %0, align 8, !tbaa !129
  %114 = icmp sgt i32 %113, 0
  br i1 %114, label %.preheader632.lr.ph, label %._crit_edge672

.preheader632.lr.ph:                              ; preds = %109
  %115 = getelementptr inbounds i8, ptr %0, i64 16
  %116 = fneg double %6
  %117 = fmul double %53, -5.000000e-01
  %118 = fmul double %55, %117
  %119 = fmul double %58, -5.000000e-01
  %120 = fmul double %60, %119
  %121 = fneg double %.0
  %122 = extractelement <2 x double> %50, i64 1
  %123 = fneg double %122
  %124 = extractelement <2 x double> %50, i64 0
  %125 = fneg double %124
  %126 = getelementptr inbounds i8, ptr %0, i64 360
  %127 = getelementptr inbounds i8, ptr %0, i64 400
  %128 = fmul double %122, %122
  %129 = fmul double %122, %128
  %130 = fmul double %122, %129
  %131 = fdiv double 0x400921FB54442D18, %.0
  %132 = fneg double %131
  %133 = fmul double %.0, %.0
  %134 = fmul double %.0, %133
  %135 = fmul double %.0, %134
  %136 = fmul <2 x double> %50, %50
  %137 = fmul <2 x double> %50, %136
  %138 = fmul <2 x double> %50, %137
  %139 = extractelement <2 x double> %138, i64 0
  %140 = load i32, ptr %51, align 4, !tbaa !5
  %141 = icmp sgt i32 %140, 0
  br i1 %141, label %.preheader632.preheader, label %._crit_edge672

.preheader632.preheader:                          ; preds = %.preheader632.lr.ph
  %142 = insertelement <2 x double> poison, double %1, i64 0
  %143 = insertelement <2 x double> %142, double %2, i64 1
  %144 = insertelement <2 x double> poison, double %131, i64 1
  %145 = insertelement <2 x double> poison, double %132, i64 0
  %146 = extractelement <2 x double> %110, i64 0
  %147 = extractelement <2 x double> %110, i64 1
  %148 = extractelement <2 x double> %111, i64 0
  %149 = extractelement <2 x double> %111, i64 1
  %150 = extractelement <2 x double> %112, i64 0
  %151 = extractelement <2 x double> %112, i64 1
  br label %.preheader632

.preheader632:                                    ; preds = %.preheader632.preheader, %._crit_edge652
  %152 = phi i32 [ %166, %._crit_edge652 ], [ %113, %.preheader632.preheader ]
  %153 = phi i32 [ %167, %._crit_edge652 ], [ %140, %.preheader632.preheader ]
  %154 = phi i32 [ %168, %._crit_edge652 ], [ %140, %.preheader632.preheader ]
  %.0572670 = phi i32 [ %170, %._crit_edge652 ], [ 0, %.preheader632.preheader ]
  %.0573669 = phi double [ %.1.lcssa, %._crit_edge652 ], [ 0.000000e+00, %.preheader632.preheader ]
  %.0574668 = phi double [ %.1575.lcssa, %._crit_edge652 ], [ 0.000000e+00, %.preheader632.preheader ]
  %.0580667 = phi double [ %.1581.lcssa, %._crit_edge652 ], [ 0.000000e+00, %.preheader632.preheader ]
  %.0596664 = phi double [ %.1597.lcssa, %._crit_edge652 ], [ 0.000000e+00, %.preheader632.preheader ]
  %155 = phi <2 x double> [ %169, %._crit_edge652 ], [ zeroinitializer, %.preheader632.preheader ]
  %156 = icmp sgt i32 %154, 0
  br i1 %156, label %.preheader.lr.ph, label %._crit_edge652

.preheader.lr.ph:                                 ; preds = %.preheader632
  %157 = uitofp nneg i32 %.0572670 to double
  %158 = load i32, ptr %56, align 8, !tbaa !127
  %159 = icmp sgt i32 %158, 0
  br i1 %159, label %.preheader, label %._crit_edge652

._crit_edge672:                                   ; preds = %._crit_edge652, %.preheader632.lr.ph, %109
  ret void

.preheader:                                       ; preds = %.preheader.lr.ph, %._crit_edge
  %160 = phi i32 [ %172, %._crit_edge ], [ %153, %.preheader.lr.ph ]
  %161 = phi i32 [ %173, %._crit_edge ], [ %158, %.preheader.lr.ph ]
  %indvars.iv676 = phi i64 [ %indvars.iv.next677, %._crit_edge ], [ 0, %.preheader.lr.ph ]
  %.1650 = phi double [ %.2.lcssa, %._crit_edge ], [ %.0573669, %.preheader.lr.ph ]
  %.1575649 = phi double [ %.2576.lcssa, %._crit_edge ], [ %.0574668, %.preheader.lr.ph ]
  %.1581648 = phi double [ %.2582.lcssa, %._crit_edge ], [ %.0580667, %.preheader.lr.ph ]
  %.1597645 = phi double [ %.2598.lcssa, %._crit_edge ], [ %.0596664, %.preheader.lr.ph ]
  %162 = phi <2 x double> [ %174, %._crit_edge ], [ %155, %.preheader.lr.ph ]
  %163 = icmp sgt i32 %161, 0
  br i1 %163, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %.preheader
  %164 = trunc nuw nsw i64 %indvars.iv676 to i32
  %165 = uitofp nneg i32 %164 to double
  br label %177

._crit_edge652.loopexit:                          ; preds = %._crit_edge
  %.pre679 = load i32, ptr %0, align 8, !tbaa !129
  br label %._crit_edge652

._crit_edge652:                                   ; preds = %.preheader.lr.ph, %._crit_edge652.loopexit, %.preheader632
  %166 = phi i32 [ %152, %.preheader632 ], [ %.pre679, %._crit_edge652.loopexit ], [ %152, %.preheader.lr.ph ]
  %167 = phi i32 [ %153, %.preheader632 ], [ %172, %._crit_edge652.loopexit ], [ %153, %.preheader.lr.ph ]
  %168 = phi i32 [ %154, %.preheader632 ], [ %172, %._crit_edge652.loopexit ], [ %154, %.preheader.lr.ph ]
  %.1597.lcssa = phi double [ %.0596664, %.preheader632 ], [ %.2598.lcssa, %._crit_edge652.loopexit ], [ %.0596664, %.preheader.lr.ph ]
  %.1581.lcssa = phi double [ %.0580667, %.preheader632 ], [ %.2582.lcssa, %._crit_edge652.loopexit ], [ %.0580667, %.preheader.lr.ph ]
  %.1575.lcssa = phi double [ %.0574668, %.preheader632 ], [ %.2576.lcssa, %._crit_edge652.loopexit ], [ %.0574668, %.preheader.lr.ph ]
  %.1.lcssa = phi double [ %.0573669, %.preheader632 ], [ %.2.lcssa, %._crit_edge652.loopexit ], [ %.0573669, %.preheader.lr.ph ]
  %169 = phi <2 x double> [ %155, %.preheader632 ], [ %174, %._crit_edge652.loopexit ], [ %155, %.preheader.lr.ph ]
  %170 = add nuw nsw i32 %.0572670, 1
  %171 = icmp slt i32 %170, %166
  br i1 %171, label %.preheader632, label %._crit_edge672, !llvm.loop !130

._crit_edge.loopexit:                             ; preds = %641
  %.pre = load i32, ptr %51, align 4, !tbaa !5
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %.preheader
  %172 = phi i32 [ %160, %.preheader ], [ %.pre, %._crit_edge.loopexit ]
  %173 = phi i32 [ %161, %.preheader ], [ %643, %._crit_edge.loopexit ]
  %.2598.lcssa = phi double [ %.1597645, %.preheader ], [ %.4600, %._crit_edge.loopexit ]
  %.2582.lcssa = phi double [ %.1581648, %.preheader ], [ %.5585, %._crit_edge.loopexit ]
  %.2576.lcssa = phi double [ %.1575649, %.preheader ], [ %.5579, %._crit_edge.loopexit ]
  %.2.lcssa = phi double [ %.1650, %.preheader ], [ %.5, %._crit_edge.loopexit ]
  %174 = phi <2 x double> [ %162, %.preheader ], [ %642, %._crit_edge.loopexit ]
  %indvars.iv.next677 = add nuw nsw i64 %indvars.iv676, 1
  %175 = sext i32 %172 to i64
  %176 = icmp slt i64 %indvars.iv.next677, %175
  br i1 %176, label %.preheader, label %._crit_edge652.loopexit, !llvm.loop !133

177:                                              ; preds = %.lr.ph, %641
  %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %641 ]
  %.2638 = phi double [ %.1650, %.lr.ph ], [ %.5, %641 ]
  %.2576637 = phi double [ %.1575649, %.lr.ph ], [ %.5579, %641 ]
  %.2582636 = phi double [ %.1581648, %.lr.ph ], [ %.5585, %641 ]
  %.2598633 = phi double [ %.1597645, %.lr.ph ], [ %.4600, %641 ]
  %178 = phi <2 x double> [ %162, %.lr.ph ], [ %642, %641 ]
  %179 = load double, ptr %115, align 8, !tbaa !134
  %180 = tail call double @llvm.fmuladd.f64(double %157, double %179, double %116)
  %181 = fsub double %180, %15
  %182 = load double, ptr %54, align 8, !tbaa !126
  %183 = tail call double @llvm.fmuladd.f64(double %165, double %182, double %118)
  %184 = fsub double %183, %11
  %185 = fsub double %184, %16
  %186 = fmul double %65, %185
  %187 = tail call double @llvm.fmuladd.f64(double %69, double %181, double %186)
  %188 = trunc nuw nsw i64 %indvars.iv to i32
  %189 = uitofp nneg i32 %188 to double
  %190 = load double, ptr %59, align 8, !tbaa !128
  %191 = tail call double @llvm.fmuladd.f64(double %189, double %190, double %120)
  %192 = fsub double %191, %12
  %193 = fsub double %192, %17
  %194 = tail call double @llvm.fmuladd.f64(double %67, double %193, double %187)
  %195 = fadd double %194, %10
  %196 = fcmp olt double %194, %.0
  %197 = fcmp ogt double %194, %121
  %or.cond = and i1 %196, %197
  %198 = insertelement <2 x double> poison, double %185, i64 0
  %199 = shufflevector <2 x double> %198, <2 x double> poison, <2 x i32> zeroinitializer
  %200 = fmul <2 x double> %112, %199
  %201 = insertelement <2 x double> poison, double %181, i64 0
  %202 = shufflevector <2 x double> %201, <2 x double> poison, <2 x i32> zeroinitializer
  %203 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %111, <2 x double> %202, <2 x double> %200)
  %204 = insertelement <2 x double> poison, double %193, i64 0
  %205 = shufflevector <2 x double> %204, <2 x double> poison, <2 x i32> zeroinitializer
  %206 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %110, <2 x double> %205, <2 x double> %203)
  %207 = extractelement <2 x double> %206, i64 1
  %208 = fcmp ogt double %207, %123
  %209 = fcmp olt <2 x double> %206, %50
  %210 = extractelement <2 x i1> %209, i64 1
  %211 = and i1 %210, %208
  %or.cond625 = select i1 %or.cond, i1 %211, i1 false
  %212 = extractelement <2 x double> %206, i64 0
  %213 = fcmp ogt double %212, %125
  %214 = extractelement <2 x i1> %209, i64 0
  %215 = and i1 %214, %213
  %or.cond628 = select i1 %or.cond625, i1 %215, i1 false
  br i1 %or.cond628, label %216, label %609

216:                                              ; preds = %177
  br i1 %19, label %217, label %300

217:                                              ; preds = %216
  %218 = fmul double %194, 0x400921FB54442D18
  %219 = fmul double %218, 5.000000e-01
  %220 = fdiv double %219, %.0
  %221 = tail call double @cos(double noundef %220) #5
  %222 = fmul double %207, 0x400921FB54442D18
  %223 = fmul double %222, 5.000000e-01
  %224 = fdiv double %223, %122
  %225 = tail call double @cos(double noundef %224) #5
  %226 = fmul double %212, 0x400921FB54442D18
  %227 = fmul double %226, 5.000000e-01
  %228 = fdiv double %227, %124
  %229 = tail call double @cos(double noundef %228) #5
  %230 = tail call double @sin(double noundef %220) #5
  %231 = tail call double @sin(double noundef %224) #5
  %232 = tail call double @sin(double noundef %228) #5
  %233 = fmul double %225, %225
  %234 = fmul double %233, %229
  %235 = fmul double %229, %234
  %236 = tail call double @cos(double noundef %195) #5
  %237 = tail call double @sin(double noundef %195) #5
  %238 = tail call double @sin(double noundef %195) #5
  %239 = tail call double @cos(double noundef %195) #5
  %240 = insertelement <2 x double> poison, double %235, i64 0
  %241 = shufflevector <2 x double> %240, <2 x double> poison, <2 x i32> zeroinitializer
  %242 = fmul <2 x double> %241, %143
  %243 = insertelement <2 x double> poison, double %221, i64 0
  %244 = shufflevector <2 x double> %243, <2 x double> poison, <2 x i32> zeroinitializer
  %245 = insertelement <2 x double> poison, double %236, i64 0
  %246 = insertelement <2 x double> %245, double %238, i64 1
  %247 = fmul <2 x double> %244, %246
  %248 = insertelement <2 x double> %144, double %237, i64 0
  %249 = insertelement <2 x double> %145, double %239, i64 1
  %250 = fmul <2 x double> %248, %249
  %251 = fmul <2 x double> %244, %250
  %252 = insertelement <2 x double> poison, double %230, i64 0
  %253 = shufflevector <2 x double> %252, <2 x double> poison, <2 x i32> zeroinitializer
  %254 = fmul <2 x double> %253, %251
  %255 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %247, <2 x double> %244, <2 x double> %254)
  %256 = fmul <2 x double> %242, %255
  %257 = extractelement <2 x double> %256, i64 1
  %258 = fneg double %257
  %259 = tail call double @sin(double noundef %195) #5
  %260 = fmul double %259, %1
  %261 = fmul double %221, %260
  %262 = fmul double %221, %261
  %263 = fmul double %229, %262
  %264 = fmul double %229, %263
  %265 = fmul double %264, 0x400921FB54442D18
  %266 = fdiv double %265, %122
  %267 = fmul double %225, %266
  %268 = tail call double @cos(double noundef %195) #5
  %269 = fmul double %268, %2
  %270 = fmul double %221, %269
  %271 = fmul double %221, %270
  %272 = fmul double %225, %271
  %273 = fmul double %225, %272
  %274 = fmul double %273, 0xC00921FB54442D18
  %275 = fdiv double %274, %124
  %276 = fmul double %229, %275
  %277 = fmul double %232, %276
  %278 = tail call double @llvm.fmuladd.f64(double %267, double %231, double %277)
  %279 = tail call double @cos(double noundef %195) #5
  %280 = fmul double %279, %2
  %281 = fmul double %221, %280
  %282 = fmul double %221, %281
  %283 = fmul double %282, 0x400921FB54442D18
  %284 = fdiv double %283, %122
  %285 = fmul double %229, %284
  %286 = fmul double %229, %285
  %287 = fmul double %225, %286
  %288 = tail call double @sin(double noundef %195) #5
  %289 = fmul double %288, %1
  %290 = fmul double %221, %289
  %291 = fmul double %221, %290
  %292 = fmul double %225, %291
  %293 = fmul double %225, %292
  %294 = fmul double %293, 0x400921FB54442D18
  %295 = fdiv double %294, %124
  %296 = fmul double %229, %295
  %297 = fmul double %232, %296
  %298 = tail call double @llvm.fmuladd.f64(double %287, double %231, double %297)
  %299 = extractelement <2 x double> %256, i64 0
  br label %500

300:                                              ; preds = %216
  switch i32 %7, label %500 [
    i32 1, label %301
    i32 2, label %416
    i32 3, label %456
  ]

301:                                              ; preds = %300
  %302 = fmul double %194, 0x400921FB54442D18
  %303 = fmul double %194, %302
  %304 = fmul double %194, %303
  %305 = fmul double %194, %304
  %306 = fmul double %305, 5.000000e-01
  %307 = fdiv double %306, %135
  %308 = tail call double @cos(double noundef %307) #5
  %309 = fmul double %207, 0x400921FB54442D18
  %310 = fmul double %207, %309
  %311 = fmul double %207, %310
  %312 = fmul double %207, %311
  %313 = fmul double %312, 5.000000e-01
  %314 = fdiv double %313, %130
  %315 = tail call double @cos(double noundef %314) #5
  %316 = fmul double %212, 0x400921FB54442D18
  %317 = fmul double %212, %316
  %318 = fmul double %212, %317
  %319 = fmul double %212, %318
  %320 = fmul double %319, 5.000000e-01
  %321 = fdiv double %320, %139
  %322 = tail call double @cos(double noundef %321) #5
  %323 = tail call double @sin(double noundef %307) #5
  %324 = tail call double @sin(double noundef %314) #5
  %325 = tail call double @sin(double noundef %321) #5
  %326 = fmul double %315, %315
  %327 = fmul double %326, %322
  %328 = fmul double %322, %327
  %329 = tail call double @cos(double noundef %195) #5
  %330 = fmul double %194, 0x402921FB54442D18
  %331 = fmul double %194, %330
  %332 = fmul double %194, %331
  %333 = fdiv double %332, %135
  %334 = tail call double @sin(double noundef %195) #5
  %335 = fneg double %333
  %336 = tail call double @sin(double noundef %195) #5
  %337 = tail call double @cos(double noundef %195) #5
  %338 = insertelement <2 x double> poison, double %328, i64 0
  %339 = shufflevector <2 x double> %338, <2 x double> poison, <2 x i32> zeroinitializer
  %340 = fmul <2 x double> %339, %143
  %341 = insertelement <2 x double> poison, double %308, i64 0
  %342 = shufflevector <2 x double> %341, <2 x double> poison, <2 x i32> zeroinitializer
  %343 = insertelement <2 x double> poison, double %329, i64 0
  %344 = insertelement <2 x double> %343, double %336, i64 1
  %345 = fmul <2 x double> %342, %344
  %346 = insertelement <2 x double> poison, double %334, i64 0
  %347 = insertelement <2 x double> %346, double %333, i64 1
  %348 = insertelement <2 x double> poison, double %335, i64 0
  %349 = insertelement <2 x double> %348, double %337, i64 1
  %350 = fmul <2 x double> %347, %349
  %351 = fmul <2 x double> %342, %350
  %352 = insertelement <2 x double> poison, double %323, i64 0
  %353 = shufflevector <2 x double> %352, <2 x double> poison, <2 x i32> zeroinitializer
  %354 = fmul <2 x double> %353, %351
  %355 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %345, <2 x double> %342, <2 x double> %354)
  %356 = fmul <2 x double> %340, %355
  %357 = extractelement <2 x double> %356, i64 1
  %358 = fneg double %357
  %359 = tail call double @sin(double noundef %195) #5
  %360 = fmul double %359, %1
  %361 = fmul double %360, 4.000000e+00
  %362 = fmul double %361, 0x400921FB54442D18
  %363 = fmul double %207, %362
  %364 = fmul double %207, %363
  %365 = fmul double %207, %364
  %366 = fdiv double %365, %130
  %367 = fmul double %308, %366
  %368 = fmul double %308, %367
  %369 = fmul double %322, %368
  %370 = fmul double %322, %369
  %371 = fmul double %315, %370
  %372 = tail call double @cos(double noundef %195) #5
  %373 = fmul double %372, %2
  %374 = fmul double %373, 4.000000e+00
  %375 = fmul double %374, 0xC00921FB54442D18
  %376 = fmul double %212, %375
  %377 = fmul double %212, %376
  %378 = fmul double %212, %377
  %379 = fdiv double %378, %139
  %380 = fmul double %308, %379
  %381 = fmul double %308, %380
  %382 = fmul double %315, %381
  %383 = fmul double %315, %382
  %384 = fmul double %322, %383
  %385 = fmul double %325, %384
  %386 = tail call double @llvm.fmuladd.f64(double %371, double %324, double %385)
  %387 = tail call double @cos(double noundef %195) #5
  %388 = fmul double %387, %2
  %389 = fmul double %388, 4.000000e+00
  %390 = fmul double %389, 0x400921FB54442D18
  %391 = fmul double %207, %390
  %392 = fmul double %207, %391
  %393 = fmul double %207, %392
  %394 = fdiv double %393, %130
  %395 = fmul double %308, %394
  %396 = fmul double %308, %395
  %397 = fmul double %322, %396
  %398 = fmul double %322, %397
  %399 = fmul double %315, %398
  %400 = tail call double @sin(double noundef %195) #5
  %401 = fmul double %400, %1
  %402 = fmul double %401, 4.000000e+00
  %403 = fmul double %402, 0x400921FB54442D18
  %404 = fmul double %212, %403
  %405 = fmul double %212, %404
  %406 = fmul double %212, %405
  %407 = fdiv double %406, %139
  %408 = fmul double %308, %407
  %409 = fmul double %308, %408
  %410 = fmul double %315, %409
  %411 = fmul double %315, %410
  %412 = fmul double %322, %411
  %413 = fmul double %325, %412
  %414 = tail call double @llvm.fmuladd.f64(double %399, double %324, double %413)
  %415 = extractelement <2 x double> %356, i64 0
  br label %500

416:                                              ; preds = %300
  %417 = fmul double %194, 0x400921FB54442D18
  %418 = fmul double %417, 5.000000e-01
  %419 = fdiv double %418, %.0
  %420 = tail call double @cos(double noundef %419) #5
  %421 = tail call double @sin(double noundef %419) #5
  %422 = fmul <2 x double> %206, %206
  %423 = extractelement <2 x double> %422, i64 0
  %424 = tail call double @llvm.fmuladd.f64(double %207, double %207, double %423)
  %sqrt630 = tail call double @llvm.sqrt.f64(double %424)
  %425 = fcmp une double %sqrt630, 0.000000e+00
  br i1 %425, label %426, label %431

426:                                              ; preds = %416
  %427 = fmul double %sqrt630, 0x400921FB54442D18
  %428 = fdiv double %427, %4
  %429 = tail call double @sin(double noundef %428) #5
  %430 = fdiv double %429, %428
  br label %431

431:                                              ; preds = %416, %426
  %.0603 = phi double [ %430, %426 ], [ 1.000000e+00, %416 ]
  %432 = insertelement <2 x double> poison, double %.0603, i64 0
  %433 = shufflevector <2 x double> %432, <2 x double> poison, <2 x i32> zeroinitializer
  %434 = fmul <2 x double> %433, %143
  %435 = tail call double @cos(double noundef %195) #5
  %436 = tail call double @sin(double noundef %195) #5
  %437 = tail call double @sin(double noundef %195) #5
  %438 = tail call double @cos(double noundef %195) #5
  %439 = insertelement <2 x double> poison, double %420, i64 0
  %440 = shufflevector <2 x double> %439, <2 x double> poison, <2 x i32> zeroinitializer
  %441 = insertelement <2 x double> poison, double %435, i64 0
  %442 = insertelement <2 x double> %441, double %437, i64 1
  %443 = fmul <2 x double> %440, %442
  %444 = insertelement <2 x double> %144, double %436, i64 0
  %445 = insertelement <2 x double> %145, double %438, i64 1
  %446 = fmul <2 x double> %444, %445
  %447 = fmul <2 x double> %440, %446
  %448 = insertelement <2 x double> poison, double %421, i64 0
  %449 = shufflevector <2 x double> %448, <2 x double> poison, <2 x i32> zeroinitializer
  %450 = fmul <2 x double> %449, %447
  %451 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %443, <2 x double> %440, <2 x double> %450)
  %452 = fmul <2 x double> %434, %451
  %453 = extractelement <2 x double> %452, i64 1
  %454 = fneg double %453
  %455 = extractelement <2 x double> %452, i64 0
  br label %500

456:                                              ; preds = %300
  %457 = fmul double %194, 0x400921FB54442D18
  %458 = fmul double %457, 5.000000e-01
  %459 = fdiv double %458, %.0
  %460 = tail call double @cos(double noundef %459) #5
  %461 = tail call double @sin(double noundef %459) #5
  %462 = fmul <2 x double> %206, %206
  %463 = extractelement <2 x double> %462, i64 0
  %464 = tail call double @llvm.fmuladd.f64(double %207, double %207, double %463)
  %sqrt631 = tail call double @llvm.sqrt.f64(double %464)
  %465 = fcmp ugt double %sqrt631, %122
  br i1 %465, label %474, label %466

466:                                              ; preds = %456
  %467 = fmul double %sqrt631, 0x400921FB54442D18
  %468 = fmul double %sqrt631, %467
  %469 = fmul double %sqrt631, %468
  %470 = fmul double %sqrt631, %469
  %471 = fmul double %470, 5.000000e-01
  %472 = fdiv double %471, %130
  %473 = tail call double @cos(double noundef %472) #5
  br label %474

474:                                              ; preds = %456, %466
  %.0602 = phi double [ %473, %466 ], [ 0.000000e+00, %456 ]
  %475 = insertelement <2 x double> poison, double %.0602, i64 0
  %476 = shufflevector <2 x double> %475, <2 x double> poison, <2 x i32> zeroinitializer
  %477 = fmul <2 x double> %476, %143
  %478 = tail call double @cos(double noundef %195) #5
  %479 = tail call double @sin(double noundef %195) #5
  %480 = tail call double @sin(double noundef %195) #5
  %481 = tail call double @cos(double noundef %195) #5
  %482 = fmul <2 x double> %476, %477
  %483 = insertelement <2 x double> poison, double %460, i64 0
  %484 = shufflevector <2 x double> %483, <2 x double> poison, <2 x i32> zeroinitializer
  %485 = insertelement <2 x double> poison, double %478, i64 0
  %486 = insertelement <2 x double> %485, double %480, i64 1
  %487 = fmul <2 x double> %484, %486
  %488 = insertelement <2 x double> %144, double %479, i64 0
  %489 = insertelement <2 x double> %145, double %481, i64 1
  %490 = fmul <2 x double> %488, %489
  %491 = fmul <2 x double> %484, %490
  %492 = insertelement <2 x double> poison, double %461, i64 0
  %493 = shufflevector <2 x double> %492, <2 x double> poison, <2 x i32> zeroinitializer
  %494 = fmul <2 x double> %493, %491
  %495 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %487, <2 x double> %484, <2 x double> %494)
  %496 = fmul <2 x double> %482, %495
  %497 = extractelement <2 x double> %496, i64 1
  %498 = fneg double %497
  %499 = extractelement <2 x double> %496, i64 0
  br label %500

500:                                              ; preds = %300, %301, %474, %431, %217
  %.3599 = phi double [ %278, %217 ], [ %386, %301 ], [ 0.000000e+00, %431 ], [ 0.000000e+00, %474 ], [ %.2598633, %300 ]
  %.3583 = phi double [ %298, %217 ], [ %414, %301 ], [ 0.000000e+00, %431 ], [ 0.000000e+00, %474 ], [ %.2582636, %300 ]
  %.3577 = phi double [ %258, %217 ], [ %358, %301 ], [ %454, %431 ], [ %498, %474 ], [ %.2576637, %300 ]
  %.3 = phi double [ %299, %217 ], [ %415, %301 ], [ %455, %431 ], [ %499, %474 ], [ %.2638, %300 ]
  %501 = phi <2 x double> [ %256, %217 ], [ %356, %301 ], [ %452, %431 ], [ %496, %474 ], [ %178, %300 ]
  %502 = fneg double %.3583
  %503 = fneg double %.3577
  %504 = fneg double %.3
  %.4584 = select i1 %8, double %.3583, double %502
  %.4578 = select i1 %8, double %.3577, double %503
  %.4 = select i1 %8, double %.3, double %504
  %505 = extractelement <2 x double> %501, i64 0
  %506 = fmul double %149, %505
  %507 = tail call double @llvm.fmuladd.f64(double %.3599, double %69, double %506)
  %508 = extractelement <2 x double> %501, i64 1
  %509 = tail call double @llvm.fmuladd.f64(double %508, double %148, double %507)
  %510 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %126, i32 noundef %.0572670)
  %511 = load ptr, ptr %510, align 8, !tbaa !135
  %512 = getelementptr inbounds ptr, ptr %511, i64 %indvars.iv676
  %513 = load ptr, ptr %512, align 8, !tbaa !135
  %514 = getelementptr inbounds %struct.celle, ptr %513, i64 %indvars.iv
  br i1 %13, label %556, label %515

515:                                              ; preds = %500
  store double %509, ptr %514, align 8, !tbaa !136
  %516 = fmul double %151, %505
  %517 = tail call double @llvm.fmuladd.f64(double %.3599, double %65, double %516)
  %518 = tail call double @llvm.fmuladd.f64(double %508, double %150, double %517)
  %519 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %126, i32 noundef %.0572670)
  %520 = load ptr, ptr %519, align 8, !tbaa !135
  %521 = getelementptr inbounds ptr, ptr %520, i64 %indvars.iv676
  %522 = load ptr, ptr %521, align 8, !tbaa !135
  %523 = getelementptr inbounds %struct.celle, ptr %522, i64 %indvars.iv, i32 1
  store double %518, ptr %523, align 8, !tbaa !138
  %524 = fmul double %147, %505
  %525 = tail call double @llvm.fmuladd.f64(double %.3599, double %67, double %524)
  %526 = tail call double @llvm.fmuladd.f64(double %508, double %146, double %525)
  %527 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %126, i32 noundef %.0572670)
  %528 = load ptr, ptr %527, align 8, !tbaa !135
  %529 = getelementptr inbounds ptr, ptr %528, i64 %indvars.iv676
  %530 = load ptr, ptr %529, align 8, !tbaa !135
  %531 = getelementptr inbounds %struct.celle, ptr %530, i64 %indvars.iv, i32 2
  store double %526, ptr %531, align 8, !tbaa !139
  %532 = fmul double %149, %.4578
  %533 = tail call double @llvm.fmuladd.f64(double %.4584, double %69, double %532)
  %534 = tail call double @llvm.fmuladd.f64(double %.4, double %148, double %533)
  %535 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5cellbEixEi(ptr noundef nonnull align 8 dereferenceable(40) %127, i32 noundef %.0572670)
  %536 = load ptr, ptr %535, align 8, !tbaa !135
  %537 = getelementptr inbounds ptr, ptr %536, i64 %indvars.iv676
  %538 = load ptr, ptr %537, align 8, !tbaa !135
  %539 = getelementptr inbounds %struct.cellb, ptr %538, i64 %indvars.iv
  store double %534, ptr %539, align 8, !tbaa !140
  %540 = fmul double %151, %.4578
  %541 = tail call double @llvm.fmuladd.f64(double %.4584, double %65, double %540)
  %542 = tail call double @llvm.fmuladd.f64(double %.4, double %150, double %541)
  %543 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5cellbEixEi(ptr noundef nonnull align 8 dereferenceable(40) %127, i32 noundef %.0572670)
  %544 = load ptr, ptr %543, align 8, !tbaa !135
  %545 = getelementptr inbounds ptr, ptr %544, i64 %indvars.iv676
  %546 = load ptr, ptr %545, align 8, !tbaa !135
  %547 = getelementptr inbounds %struct.cellb, ptr %546, i64 %indvars.iv, i32 1
  store double %542, ptr %547, align 8, !tbaa !142
  %548 = fmul double %147, %.4578
  %549 = tail call double @llvm.fmuladd.f64(double %.4584, double %67, double %548)
  %550 = tail call double @llvm.fmuladd.f64(double %.4, double %146, double %549)
  %551 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5cellbEixEi(ptr noundef nonnull align 8 dereferenceable(40) %127, i32 noundef %.0572670)
  %552 = load ptr, ptr %551, align 8, !tbaa !135
  %553 = getelementptr inbounds ptr, ptr %552, i64 %indvars.iv676
  %554 = load ptr, ptr %553, align 8, !tbaa !135
  %555 = getelementptr inbounds %struct.cellb, ptr %554, i64 %indvars.iv, i32 2
  store double %550, ptr %555, align 8, !tbaa !143
  br label %641

556:                                              ; preds = %500
  %557 = load double, ptr %514, align 8, !tbaa !136
  %558 = fadd double %509, %557
  store double %558, ptr %514, align 8, !tbaa !136
  %559 = fmul double %151, %505
  %560 = tail call double @llvm.fmuladd.f64(double %.3599, double %65, double %559)
  %561 = tail call double @llvm.fmuladd.f64(double %508, double %150, double %560)
  %562 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %126, i32 noundef %.0572670)
  %563 = load ptr, ptr %562, align 8, !tbaa !135
  %564 = getelementptr inbounds ptr, ptr %563, i64 %indvars.iv676
  %565 = load ptr, ptr %564, align 8, !tbaa !135
  %566 = getelementptr inbounds %struct.celle, ptr %565, i64 %indvars.iv, i32 1
  %567 = load double, ptr %566, align 8, !tbaa !138
  %568 = fadd double %561, %567
  store double %568, ptr %566, align 8, !tbaa !138
  %569 = fmul double %147, %505
  %570 = tail call double @llvm.fmuladd.f64(double %.3599, double %67, double %569)
  %571 = tail call double @llvm.fmuladd.f64(double %508, double %146, double %570)
  %572 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %126, i32 noundef %.0572670)
  %573 = load ptr, ptr %572, align 8, !tbaa !135
  %574 = getelementptr inbounds ptr, ptr %573, i64 %indvars.iv676
  %575 = load ptr, ptr %574, align 8, !tbaa !135
  %576 = getelementptr inbounds %struct.celle, ptr %575, i64 %indvars.iv, i32 2
  %577 = load double, ptr %576, align 8, !tbaa !139
  %578 = fadd double %571, %577
  store double %578, ptr %576, align 8, !tbaa !139
  %579 = fmul double %149, %.4578
  %580 = tail call double @llvm.fmuladd.f64(double %.4584, double %69, double %579)
  %581 = tail call double @llvm.fmuladd.f64(double %.4, double %148, double %580)
  %582 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5cellbEixEi(ptr noundef nonnull align 8 dereferenceable(40) %127, i32 noundef %.0572670)
  %583 = load ptr, ptr %582, align 8, !tbaa !135
  %584 = getelementptr inbounds ptr, ptr %583, i64 %indvars.iv676
  %585 = load ptr, ptr %584, align 8, !tbaa !135
  %586 = getelementptr inbounds %struct.cellb, ptr %585, i64 %indvars.iv
  %587 = load double, ptr %586, align 8, !tbaa !140
  %588 = fadd double %581, %587
  store double %588, ptr %586, align 8, !tbaa !140
  %589 = fmul double %151, %.4578
  %590 = tail call double @llvm.fmuladd.f64(double %.4584, double %65, double %589)
  %591 = tail call double @llvm.fmuladd.f64(double %.4, double %150, double %590)
  %592 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5cellbEixEi(ptr noundef nonnull align 8 dereferenceable(40) %127, i32 noundef %.0572670)
  %593 = load ptr, ptr %592, align 8, !tbaa !135
  %594 = getelementptr inbounds ptr, ptr %593, i64 %indvars.iv676
  %595 = load ptr, ptr %594, align 8, !tbaa !135
  %596 = getelementptr inbounds %struct.cellb, ptr %595, i64 %indvars.iv, i32 1
  %597 = load double, ptr %596, align 8, !tbaa !142
  %598 = fadd double %591, %597
  store double %598, ptr %596, align 8, !tbaa !142
  %599 = fmul double %147, %.4578
  %600 = tail call double @llvm.fmuladd.f64(double %.4584, double %67, double %599)
  %601 = tail call double @llvm.fmuladd.f64(double %.4, double %146, double %600)
  %602 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5cellbEixEi(ptr noundef nonnull align 8 dereferenceable(40) %127, i32 noundef %.0572670)
  %603 = load ptr, ptr %602, align 8, !tbaa !135
  %604 = getelementptr inbounds ptr, ptr %603, i64 %indvars.iv676
  %605 = load ptr, ptr %604, align 8, !tbaa !135
  %606 = getelementptr inbounds %struct.cellb, ptr %605, i64 %indvars.iv, i32 2
  %607 = load double, ptr %606, align 8, !tbaa !143
  %608 = fadd double %601, %607
  store double %608, ptr %606, align 8, !tbaa !143
  br label %641

609:                                              ; preds = %177
  br i1 %13, label %641, label %610

610:                                              ; preds = %609
  %611 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %126, i32 noundef %.0572670)
  %612 = load ptr, ptr %611, align 8, !tbaa !135
  %613 = getelementptr inbounds ptr, ptr %612, i64 %indvars.iv676
  %614 = load ptr, ptr %613, align 8, !tbaa !135
  %615 = getelementptr inbounds %struct.celle, ptr %614, i64 %indvars.iv
  store double 0.000000e+00, ptr %615, align 8, !tbaa !136
  %616 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %126, i32 noundef %.0572670)
  %617 = load ptr, ptr %616, align 8, !tbaa !135
  %618 = getelementptr inbounds ptr, ptr %617, i64 %indvars.iv676
  %619 = load ptr, ptr %618, align 8, !tbaa !135
  %620 = getelementptr inbounds %struct.celle, ptr %619, i64 %indvars.iv, i32 1
  store double 0.000000e+00, ptr %620, align 8, !tbaa !138
  %621 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %126, i32 noundef %.0572670)
  %622 = load ptr, ptr %621, align 8, !tbaa !135
  %623 = getelementptr inbounds ptr, ptr %622, i64 %indvars.iv676
  %624 = load ptr, ptr %623, align 8, !tbaa !135
  %625 = getelementptr inbounds %struct.celle, ptr %624, i64 %indvars.iv, i32 2
  store double 0.000000e+00, ptr %625, align 8, !tbaa !139
  %626 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5cellbEixEi(ptr noundef nonnull align 8 dereferenceable(40) %127, i32 noundef %.0572670)
  %627 = load ptr, ptr %626, align 8, !tbaa !135
  %628 = getelementptr inbounds ptr, ptr %627, i64 %indvars.iv676
  %629 = load ptr, ptr %628, align 8, !tbaa !135
  %630 = getelementptr inbounds %struct.cellb, ptr %629, i64 %indvars.iv
  store double 0.000000e+00, ptr %630, align 8, !tbaa !140
  %631 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5cellbEixEi(ptr noundef nonnull align 8 dereferenceable(40) %127, i32 noundef %.0572670)
  %632 = load ptr, ptr %631, align 8, !tbaa !135
  %633 = getelementptr inbounds ptr, ptr %632, i64 %indvars.iv676
  %634 = load ptr, ptr %633, align 8, !tbaa !135
  %635 = getelementptr inbounds %struct.cellb, ptr %634, i64 %indvars.iv, i32 1
  store double 0.000000e+00, ptr %635, align 8, !tbaa !142
  %636 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5cellbEixEi(ptr noundef nonnull align 8 dereferenceable(40) %127, i32 noundef %.0572670)
  %637 = load ptr, ptr %636, align 8, !tbaa !135
  %638 = getelementptr inbounds ptr, ptr %637, i64 %indvars.iv676
  %639 = load ptr, ptr %638, align 8, !tbaa !135
  %640 = getelementptr inbounds %struct.cellb, ptr %639, i64 %indvars.iv, i32 2
  store double 0.000000e+00, ptr %640, align 8, !tbaa !143
  br label %641

641:                                              ; preds = %556, %515, %610, %609
  %.4600 = phi double [ %.3599, %515 ], [ %.3599, %556 ], [ %.2598633, %610 ], [ %.2598633, %609 ]
  %.5585 = phi double [ %.4584, %515 ], [ %.4584, %556 ], [ %.2582636, %610 ], [ %.2582636, %609 ]
  %.5579 = phi double [ %.4578, %515 ], [ %.4578, %556 ], [ %.2576637, %610 ], [ %.2576637, %609 ]
  %.5 = phi double [ %.4, %515 ], [ %.4, %556 ], [ %.2638, %610 ], [ %.2638, %609 ]
  %642 = phi <2 x double> [ %501, %515 ], [ %501, %556 ], [ %178, %610 ], [ %178, %609 ]
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %643 = load i32, ptr %56, align 8, !tbaa !127
  %644 = sext i32 %643 to i64
  %645 = icmp slt i64 %indvars.iv.next, %644
  br i1 %645, label %177, label %._crit_edge.loopexit, !llvm.loop !144
}

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

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare double @cos(double noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare double @sin(double noundef) local_unnamed_addr #2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40), i32 noundef) local_unnamed_addr #3 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5cellbEixEi(ptr noundef nonnull align 8 dereferenceable(40), i32 noundef) local_unnamed_addr #3 align 2

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !7, i64 4}
!6 = !{!"_ZTS14spatial_region", !7, i64 0, !7, i64 4, !7, i64 8, !10, i64 16, !10, i64 24, !10, i64 32, !10, i64 40, !7, i64 48, !7, i64 52, !7, i64 56, !10, i64 64, !11, i64 72, !7, i64 80, !7, i64 84, !7, i64 88, !11, i64 96, !7, i64 104, !7, i64 108, !7, i64 112, !7, i64 116, !7, i64 120, !7, i64 124, !7, i64 128, !12, i64 136, !18, i64 144, !10, i64 176, !10, i64 184, !10, i64 192, !7, i64 200, !7, i64 204, !7, i64 208, !11, i64 216, !10, i64 224, !10, i64 232, !10, i64 240, !10, i64 248, !11, i64 256, !10, i64 264, !10, i64 272, !10, i64 280, !11, i64 288, !20, i64 296, !11, i64 328, !11, i64 336, !11, i64 344, !11, i64 352, !23, i64 360, !42, i64 400, !61, i64 440, !80, i64 480, !99, i64 520, !118, i64 560, !122, i64 584}
!7 = !{!"int", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"double", !8, i64 0}
!11 = !{!"any pointer", !8, i64 0}
!12 = !{!"_ZTSSt10unique_ptrI14maxwell_solverSt14default_deleteIS0_EE", !13, i64 0}
!13 = !{!"_ZTSSt15__uniq_ptr_dataI14maxwell_solverSt14default_deleteIS0_ELb1ELb1EE", !14, i64 0}
!14 = !{!"_ZTSSt15__uniq_ptr_implI14maxwell_solverSt14default_deleteIS0_EE", !15, i64 0}
!15 = !{!"_ZTSSt5tupleIJP14maxwell_solverSt14default_deleteIS0_EEE", !16, i64 0}
!16 = !{!"_ZTSSt11_Tuple_implILm0EJP14maxwell_solverSt14default_deleteIS0_EEE", !17, i64 0}
!17 = !{!"_ZTSSt10_Head_baseILm0EP14maxwell_solverLb0EE", !11, i64 0}
!18 = !{!"_ZTSSt8functionIFvR8particleR8vector3dS3_RdEE", !19, i64 0, !11, i64 24}
!19 = !{!"_ZTSSt14_Function_base", !8, i64 0, !11, i64 16}
!20 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !21, i64 0, !22, i64 8, !8, i64 16}
!21 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !11, i64 0}
!22 = !{!"long", !8, i64 0}
!23 = !{!"_ZTS7field3dI5celleE", !7, i64 0, !7, i64 4, !7, i64 8, !24, i64 16, !30, i64 24, !36, i64 32}
!24 = !{!"_ZTSSt10unique_ptrIA_PP5celleSt14default_deleteIS3_EE", !25, i64 0}
!25 = !{!"_ZTSSt15__uniq_ptr_dataIPP5celleSt14default_deleteIA_S2_ELb1ELb1EE", !26, i64 0}
!26 = !{!"_ZTSSt15__uniq_ptr_implIPP5celleSt14default_deleteIA_S2_EE", !27, i64 0}
!27 = !{!"_ZTSSt5tupleIJPPP5celleSt14default_deleteIA_S2_EEE", !28, i64 0}
!28 = !{!"_ZTSSt11_Tuple_implILm0EJPPP5celleSt14default_deleteIA_S2_EEE", !29, i64 0}
!29 = !{!"_ZTSSt10_Head_baseILm0EPPP5celleLb0EE", !11, i64 0}
!30 = !{!"_ZTSSt10unique_ptrIA_P5celleSt14default_deleteIS2_EE", !31, i64 0}
!31 = !{!"_ZTSSt15__uniq_ptr_dataIP5celleSt14default_deleteIA_S1_ELb1ELb1EE", !32, i64 0}
!32 = !{!"_ZTSSt15__uniq_ptr_implIP5celleSt14default_deleteIA_S1_EE", !33, i64 0}
!33 = !{!"_ZTSSt5tupleIJPP5celleSt14default_deleteIA_S1_EEE", !34, i64 0}
!34 = !{!"_ZTSSt11_Tuple_implILm0EJPP5celleSt14default_deleteIA_S1_EEE", !35, i64 0}
!35 = !{!"_ZTSSt10_Head_baseILm0EPP5celleLb0EE", !11, i64 0}
!36 = !{!"_ZTSSt10unique_ptrIA_5celleSt14default_deleteIS1_EE", !37, i64 0}
!37 = !{!"_ZTSSt15__uniq_ptr_dataI5celleSt14default_deleteIA_S0_ELb1ELb1EE", !38, i64 0}
!38 = !{!"_ZTSSt15__uniq_ptr_implI5celleSt14default_deleteIA_S0_EE", !39, i64 0}
!39 = !{!"_ZTSSt5tupleIJP5celleSt14default_deleteIA_S0_EEE", !40, i64 0}
!40 = !{!"_ZTSSt11_Tuple_implILm0EJP5celleSt14default_deleteIA_S0_EEE", !41, i64 0}
!41 = !{!"_ZTSSt10_Head_baseILm0EP5celleLb0EE", !11, i64 0}
!42 = !{!"_ZTS7field3dI5cellbE", !7, i64 0, !7, i64 4, !7, i64 8, !43, i64 16, !49, i64 24, !55, i64 32}
!43 = !{!"_ZTSSt10unique_ptrIA_PP5cellbSt14default_deleteIS3_EE", !44, i64 0}
!44 = !{!"_ZTSSt15__uniq_ptr_dataIPP5cellbSt14default_deleteIA_S2_ELb1ELb1EE", !45, i64 0}
!45 = !{!"_ZTSSt15__uniq_ptr_implIPP5cellbSt14default_deleteIA_S2_EE", !46, i64 0}
!46 = !{!"_ZTSSt5tupleIJPPP5cellbSt14default_deleteIA_S2_EEE", !47, i64 0}
!47 = !{!"_ZTSSt11_Tuple_implILm0EJPPP5cellbSt14default_deleteIA_S2_EEE", !48, i64 0}
!48 = !{!"_ZTSSt10_Head_baseILm0EPPP5cellbLb0EE", !11, i64 0}
!49 = !{!"_ZTSSt10unique_ptrIA_P5cellbSt14default_deleteIS2_EE", !50, i64 0}
!50 = !{!"_ZTSSt15__uniq_ptr_dataIP5cellbSt14default_deleteIA_S1_ELb1ELb1EE", !51, i64 0}
!51 = !{!"_ZTSSt15__uniq_ptr_implIP5cellbSt14default_deleteIA_S1_EE", !52, i64 0}
!52 = !{!"_ZTSSt5tupleIJPP5cellbSt14default_deleteIA_S1_EEE", !53, i64 0}
!53 = !{!"_ZTSSt11_Tuple_implILm0EJPP5cellbSt14default_deleteIA_S1_EEE", !54, i64 0}
!54 = !{!"_ZTSSt10_Head_baseILm0EPP5cellbLb0EE", !11, i64 0}
!55 = !{!"_ZTSSt10unique_ptrIA_5cellbSt14default_deleteIS1_EE", !56, i64 0}
!56 = !{!"_ZTSSt15__uniq_ptr_dataI5cellbSt14default_deleteIA_S0_ELb1ELb1EE", !57, i64 0}
!57 = !{!"_ZTSSt15__uniq_ptr_implI5cellbSt14default_deleteIA_S0_EE", !58, i64 0}
!58 = !{!"_ZTSSt5tupleIJP5cellbSt14default_deleteIA_S0_EEE", !59, i64 0}
!59 = !{!"_ZTSSt11_Tuple_implILm0EJP5cellbSt14default_deleteIA_S0_EEE", !60, i64 0}
!60 = !{!"_ZTSSt10_Head_baseILm0EP5cellbLb0EE", !11, i64 0}
!61 = !{!"_ZTS7field3dI5celljE", !7, i64 0, !7, i64 4, !7, i64 8, !62, i64 16, !68, i64 24, !74, i64 32}
!62 = !{!"_ZTSSt10unique_ptrIA_PP5celljSt14default_deleteIS3_EE", !63, i64 0}
!63 = !{!"_ZTSSt15__uniq_ptr_dataIPP5celljSt14default_deleteIA_S2_ELb1ELb1EE", !64, i64 0}
!64 = !{!"_ZTSSt15__uniq_ptr_implIPP5celljSt14default_deleteIA_S2_EE", !65, i64 0}
!65 = !{!"_ZTSSt5tupleIJPPP5celljSt14default_deleteIA_S2_EEE", !66, i64 0}
!66 = !{!"_ZTSSt11_Tuple_implILm0EJPPP5celljSt14default_deleteIA_S2_EEE", !67, i64 0}
!67 = !{!"_ZTSSt10_Head_baseILm0EPPP5celljLb0EE", !11, i64 0}
!68 = !{!"_ZTSSt10unique_ptrIA_P5celljSt14default_deleteIS2_EE", !69, i64 0}
!69 = !{!"_ZTSSt15__uniq_ptr_dataIP5celljSt14default_deleteIA_S1_ELb1ELb1EE", !70, i64 0}
!70 = !{!"_ZTSSt15__uniq_ptr_implIP5celljSt14default_deleteIA_S1_EE", !71, i64 0}
!71 = !{!"_ZTSSt5tupleIJPP5celljSt14default_deleteIA_S1_EEE", !72, i64 0}
!72 = !{!"_ZTSSt11_Tuple_implILm0EJPP5celljSt14default_deleteIA_S1_EEE", !73, i64 0}
!73 = !{!"_ZTSSt10_Head_baseILm0EPP5celljLb0EE", !11, i64 0}
!74 = !{!"_ZTSSt10unique_ptrIA_5celljSt14default_deleteIS1_EE", !75, i64 0}
!75 = !{!"_ZTSSt15__uniq_ptr_dataI5celljSt14default_deleteIA_S0_ELb1ELb1EE", !76, i64 0}
!76 = !{!"_ZTSSt15__uniq_ptr_implI5celljSt14default_deleteIA_S0_EE", !77, i64 0}
!77 = !{!"_ZTSSt5tupleIJP5celljSt14default_deleteIA_S0_EEE", !78, i64 0}
!78 = !{!"_ZTSSt11_Tuple_implILm0EJP5celljSt14default_deleteIA_S0_EEE", !79, i64 0}
!79 = !{!"_ZTSSt10_Head_baseILm0EP5celljLb0EE", !11, i64 0}
!80 = !{!"_ZTS7field3dI6cellbeE", !7, i64 0, !7, i64 4, !7, i64 8, !81, i64 16, !87, i64 24, !93, i64 32}
!81 = !{!"_ZTSSt10unique_ptrIA_PP6cellbeSt14default_deleteIS3_EE", !82, i64 0}
!82 = !{!"_ZTSSt15__uniq_ptr_dataIPP6cellbeSt14default_deleteIA_S2_ELb1ELb1EE", !83, i64 0}
!83 = !{!"_ZTSSt15__uniq_ptr_implIPP6cellbeSt14default_deleteIA_S2_EE", !84, i64 0}
!84 = !{!"_ZTSSt5tupleIJPPP6cellbeSt14default_deleteIA_S2_EEE", !85, i64 0}
!85 = !{!"_ZTSSt11_Tuple_implILm0EJPPP6cellbeSt14default_deleteIA_S2_EEE", !86, i64 0}
!86 = !{!"_ZTSSt10_Head_baseILm0EPPP6cellbeLb0EE", !11, i64 0}
!87 = !{!"_ZTSSt10unique_ptrIA_P6cellbeSt14default_deleteIS2_EE", !88, i64 0}
!88 = !{!"_ZTSSt15__uniq_ptr_dataIP6cellbeSt14default_deleteIA_S1_ELb1ELb1EE", !89, i64 0}
!89 = !{!"_ZTSSt15__uniq_ptr_implIP6cellbeSt14default_deleteIA_S1_EE", !90, i64 0}
!90 = !{!"_ZTSSt5tupleIJPP6cellbeSt14default_deleteIA_S1_EEE", !91, i64 0}
!91 = !{!"_ZTSSt11_Tuple_implILm0EJPP6cellbeSt14default_deleteIA_S1_EEE", !92, i64 0}
!92 = !{!"_ZTSSt10_Head_baseILm0EPP6cellbeLb0EE", !11, i64 0}
!93 = !{!"_ZTSSt10unique_ptrIA_6cellbeSt14default_deleteIS1_EE", !94, i64 0}
!94 = !{!"_ZTSSt15__uniq_ptr_dataI6cellbeSt14default_deleteIA_S0_ELb1ELb1EE", !95, i64 0}
!95 = !{!"_ZTSSt15__uniq_ptr_implI6cellbeSt14default_deleteIA_S0_EE", !96, i64 0}
!96 = !{!"_ZTSSt5tupleIJP6cellbeSt14default_deleteIA_S0_EEE", !97, i64 0}
!97 = !{!"_ZTSSt11_Tuple_implILm0EJP6cellbeSt14default_deleteIA_S0_EEE", !98, i64 0}
!98 = !{!"_ZTSSt10_Head_baseILm0EP6cellbeLb0EE", !11, i64 0}
!99 = !{!"_ZTS7field3dI5cellpE", !7, i64 0, !7, i64 4, !7, i64 8, !100, i64 16, !106, i64 24, !112, i64 32}
!100 = !{!"_ZTSSt10unique_ptrIA_PP5cellpSt14default_deleteIS3_EE", !101, i64 0}
!101 = !{!"_ZTSSt15__uniq_ptr_dataIPP5cellpSt14default_deleteIA_S2_ELb1ELb1EE", !102, i64 0}
!102 = !{!"_ZTSSt15__uniq_ptr_implIPP5cellpSt14default_deleteIA_S2_EE", !103, i64 0}
!103 = !{!"_ZTSSt5tupleIJPPP5cellpSt14default_deleteIA_S2_EEE", !104, i64 0}
!104 = !{!"_ZTSSt11_Tuple_implILm0EJPPP5cellpSt14default_deleteIA_S2_EEE", !105, i64 0}
!105 = !{!"_ZTSSt10_Head_baseILm0EPPP5cellpLb0EE", !11, i64 0}
!106 = !{!"_ZTSSt10unique_ptrIA_P5cellpSt14default_deleteIS2_EE", !107, i64 0}
!107 = !{!"_ZTSSt15__uniq_ptr_dataIP5cellpSt14default_deleteIA_S1_ELb1ELb1EE", !108, i64 0}
!108 = !{!"_ZTSSt15__uniq_ptr_implIP5cellpSt14default_deleteIA_S1_EE", !109, i64 0}
!109 = !{!"_ZTSSt5tupleIJPP5cellpSt14default_deleteIA_S1_EEE", !110, i64 0}
!110 = !{!"_ZTSSt11_Tuple_implILm0EJPP5cellpSt14default_deleteIA_S1_EEE", !111, i64 0}
!111 = !{!"_ZTSSt10_Head_baseILm0EPP5cellpLb0EE", !11, i64 0}
!112 = !{!"_ZTSSt10unique_ptrIA_5cellpSt14default_deleteIS1_EE", !113, i64 0}
!113 = !{!"_ZTSSt15__uniq_ptr_dataI5cellpSt14default_deleteIA_S0_ELb1ELb1EE", !114, i64 0}
!114 = !{!"_ZTSSt15__uniq_ptr_implI5cellpSt14default_deleteIA_S0_EE", !115, i64 0}
!115 = !{!"_ZTSSt5tupleIJP5cellpSt14default_deleteIA_S0_EEE", !116, i64 0}
!116 = !{!"_ZTSSt11_Tuple_implILm0EJP5cellpSt14default_deleteIA_S0_EEE", !117, i64 0}
!117 = !{!"_ZTSSt10_Head_baseILm0EP5cellpLb0EE", !11, i64 0}
!118 = !{!"_ZTSSt6vectorI7field3dIdESaIS1_EE", !119, i64 0}
!119 = !{!"_ZTSSt12_Vector_baseI7field3dIdESaIS1_EE", !120, i64 0}
!120 = !{!"_ZTSNSt12_Vector_baseI7field3dIdESaIS1_EE12_Vector_implE", !121, i64 0}
!121 = !{!"_ZTSNSt12_Vector_baseI7field3dIdESaIS1_EE17_Vector_impl_dataE", !11, i64 0, !11, i64 8, !11, i64 16}
!122 = !{!"_ZTSSt6vectorIN14spatial_region16deleted_particleESaIS1_EE", !123, i64 0}
!123 = !{!"_ZTSSt12_Vector_baseIN14spatial_region16deleted_particleESaIS1_EE", !124, i64 0}
!124 = !{!"_ZTSNSt12_Vector_baseIN14spatial_region16deleted_particleESaIS1_EE12_Vector_implE", !125, i64 0}
!125 = !{!"_ZTSNSt12_Vector_baseIN14spatial_region16deleted_particleESaIS1_EE17_Vector_impl_dataE", !11, i64 0, !11, i64 8, !11, i64 16}
!126 = !{!6, !10, i64 24}
!127 = !{!6, !7, i64 8}
!128 = !{!6, !10, i64 32}
!129 = !{!6, !7, i64 0}
!130 = distinct !{!130, !131, !132}
!131 = !{!"llvm.loop.mustprogress"}
!132 = !{!"llvm.loop.unswitch.partial.disable"}
!133 = distinct !{!133, !131, !132}
!134 = !{!6, !10, i64 16}
!135 = !{!11, !11, i64 0}
!136 = !{!137, !10, i64 0}
!137 = !{!"_ZTS5celle", !10, i64 0, !10, i64 8, !10, i64 16}
!138 = !{!137, !10, i64 8}
!139 = !{!137, !10, i64 16}
!140 = !{!141, !10, i64 0}
!141 = !{!"_ZTS5cellb", !10, i64 0, !10, i64 8, !10, i64 16}
!142 = !{!141, !10, i64 8}
!143 = !{!141, !10, i64 16}
!144 = distinct !{!144, !131}


; Effective O3 passes: AggressiveInstCombinePass,EarlyCSEPass,GVNPass,GlobalOptPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopInstSimplifyPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,ReassociatePass,SLPVectorizerPass,SROAPass,SimpleLoopUnswitchPass,SimplifyCFGPass,TailCallElimPass,VectorCombinePass