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

; 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: nounwind
declare double @sqrt(double noundef) #1

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

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

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

; 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) #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) #3 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN14spatial_region14f_init_focusedEddddddbdddbdidddd(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, i1 noundef zeroext %7, double noundef %8, double noundef %9, double noundef %10, i1 noundef zeroext %11, double noundef %12, i32 noundef %13, double noundef %14, double noundef %15, double noundef %16, double noundef %17) #4 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 i8, align 1
  %27 = alloca double, align 8
  %28 = alloca double, align 8
  %29 = alloca double, align 8
  %30 = alloca i8, align 1
  %31 = alloca double, align 8
  %32 = alloca i32, align 4
  %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 double, align 8
  %77 = alloca double, align 8
  %78 = alloca i32, align 4
  %79 = alloca i32, align 4
  %80 = alloca i32, align 4
  %81 = alloca i32, align 4
  %82 = alloca double, align 8
  %83 = 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
  %84 = zext i1 %7 to i8
  store i8 %84, ptr %26, align 1, !tbaa !11
  store double %8, ptr %27, align 8, !tbaa !9
  store double %9, ptr %28, align 8, !tbaa !9
  store double %10, ptr %29, align 8, !tbaa !9
  %85 = zext i1 %11 to i8
  store i8 %85, ptr %30, align 1, !tbaa !11
  store double %12, ptr %31, align 8, !tbaa !9
  store i32 %13, ptr %32, align 4, !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
  %86 = load ptr, ptr %19, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #5
  %87 = load double, ptr %25, align 8, !tbaa !9
  %88 = fcmp ole double %87, 0.000000e+00
  %89 = zext i1 %88 to i32
  %90 = load double, ptr %25, align 8, !tbaa !9
  %91 = fcmp ogt double %90, 0.000000e+00
  %92 = zext i1 %91 to i32
  %93 = sub nsw i32 %89, %92
  %94 = sitofp i32 %93 to double
  store double %94, ptr %37, align 8, !tbaa !9
  %95 = load double, ptr %25, align 8, !tbaa !9
  %96 = load double, ptr %25, align 8, !tbaa !9
  %97 = load double, ptr %28, align 8, !tbaa !9
  %98 = load double, ptr %28, align 8, !tbaa !9
  %99 = fmul double %97, %98
  %100 = call double @llvm.fmuladd.f64(double %95, double %96, double %99)
  %101 = load double, ptr %29, align 8, !tbaa !9
  %102 = load double, ptr %29, align 8, !tbaa !9
  %103 = call double @llvm.fmuladd.f64(double %101, double %102, double %100)
  %104 = call double @sqrt(double noundef %103) #5
  store double %104, ptr %25, align 8, !tbaa !9
  %105 = load double, ptr %25, align 8, !tbaa !9
  %106 = fcmp oeq double %105, 0.000000e+00
  br i1 %106, label %107, label %110

107:                                              ; preds = %18
  %108 = getelementptr inbounds %class.spatial_region, ptr %86, i32 0, i32 3
  %109 = load double, ptr %108, align 8, !tbaa !15
  store double %109, ptr %25, align 8, !tbaa !9
  br label %110

110:                                              ; preds = %107, %18
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #5
  %111 = load double, ptr %33, align 8, !tbaa !9
  %112 = load double, ptr %23, align 8, !tbaa !9
  %113 = fmul double %111, %112
  %114 = load double, ptr %23, align 8, !tbaa !9
  %115 = fmul double %113, %114
  %116 = fdiv double %115, 2.000000e+00
  store double %116, ptr %38, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #5
  %117 = load double, ptr %23, align 8, !tbaa !9
  %118 = load double, ptr %25, align 8, !tbaa !9
  %119 = load double, ptr %25, align 8, !tbaa !9
  %120 = fmul double %118, %119
  %121 = load double, ptr %38, align 8, !tbaa !9
  %122 = fdiv double %120, %121
  %123 = load double, ptr %38, align 8, !tbaa !9
  %124 = fdiv double %122, %123
  %125 = fadd double 1.000000e+00, %124
  %126 = call double @sqrt(double noundef %125) #5
  %127 = fmul double %117, %126
  store double %127, ptr %39, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #5
  %128 = load double, ptr %25, align 8, !tbaa !9
  %129 = load double, ptr %25, align 8, !tbaa !9
  %130 = fmul double %128, %129
  %131 = load double, ptr %23, align 8, !tbaa !9
  %132 = load double, ptr %23, align 8, !tbaa !9
  %133 = fmul double %131, %132
  %134 = load double, ptr %23, align 8, !tbaa !9
  %135 = fmul double %133, %134
  %136 = load double, ptr %23, align 8, !tbaa !9
  %137 = fmul double %135, %136
  %138 = fdiv double %137, 4.000000e+00
  %139 = fdiv double %130, %138
  %140 = fadd double 1.000000e+00, %139
  %141 = call double @sqrt(double noundef %140) #5
  %142 = load double, ptr %25, align 8, !tbaa !9
  %143 = load double, ptr %25, align 8, !tbaa !9
  %144 = fmul double %142, %143
  %145 = load double, ptr %38, align 8, !tbaa !9
  %146 = load double, ptr %38, align 8, !tbaa !9
  %147 = fmul double %145, %146
  %148 = fdiv double %144, %147
  %149 = fadd double 1.000000e+00, %148
  %150 = call double @sqrt(double noundef %149) #5
  %151 = fdiv double %141, %150
  store double %151, ptr %40, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #5
  %152 = load double, ptr %22, align 8, !tbaa !9
  %153 = fmul double %152, 2.000000e+00
  %154 = call double @sqrt(double noundef 0x401921FB54442D18) #5
  %155 = fmul double %153, %154
  %156 = fdiv double %155, 3.000000e+00
  store double %156, ptr %41, align 8, !tbaa !9
  %157 = load i32, ptr %32, align 4, !tbaa !13
  %158 = icmp eq i32 %157, 1
  br i1 %158, label %159, label %162

159:                                              ; preds = %110
  %160 = load double, ptr %22, align 8, !tbaa !9
  %161 = fmul double 8.220000e-01, %160
  store double %161, ptr %41, align 8, !tbaa !9
  br label %162

162:                                              ; preds = %159, %110
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #5
  %163 = load double, ptr %39, align 8, !tbaa !9
  %164 = fdiv double %163, 2.000000e+00
  %165 = call double @sqrt(double noundef 0x3FB60FD09DDD38E0) #5
  %166 = fdiv double %164, %165
  store double %166, ptr %42, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #5
  %167 = load double, ptr %23, align 8, !tbaa !9
  %168 = fdiv double %167, 2.000000e+00
  %169 = call double @sqrt(double noundef 0x3FB60FD09DDD38E0) #5
  %170 = fdiv double %168, %169
  store double %170, ptr %43, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #5
  %171 = getelementptr inbounds %class.spatial_region, ptr %86, i32 0, i32 1
  %172 = load i32, ptr %171, align 4, !tbaa !131
  %173 = sitofp i32 %172 to double
  %174 = getelementptr inbounds %class.spatial_region, ptr %86, i32 0, i32 4
  %175 = load double, ptr %174, align 8, !tbaa !132
  %176 = fmul double %173, %175
  %177 = fdiv double %176, 2.000000e+00
  store double %177, ptr %44, align 8, !tbaa !9
  %178 = getelementptr inbounds %class.spatial_region, ptr %86, i32 0, i32 2
  %179 = load i32, ptr %178, align 8, !tbaa !133
  %180 = sitofp i32 %179 to double
  %181 = getelementptr inbounds %class.spatial_region, ptr %86, i32 0, i32 5
  %182 = load double, ptr %181, align 8, !tbaa !134
  %183 = fmul double %180, %182
  %184 = fdiv double %183, 2.000000e+00
  store double %184, ptr %45, align 8, !tbaa !9
  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
  %185 = load double, ptr %37, align 8, !tbaa !9
  %186 = load double, ptr %25, align 8, !tbaa !9
  %187 = load double, ptr %25, align 8, !tbaa !9
  %188 = load double, ptr %28, align 8, !tbaa !9
  %189 = load double, ptr %28, align 8, !tbaa !9
  %190 = fmul double %188, %189
  %191 = fneg double %190
  %192 = call double @llvm.fmuladd.f64(double %186, double %187, double %191)
  %193 = load double, ptr %29, align 8, !tbaa !9
  %194 = load double, ptr %29, align 8, !tbaa !9
  %195 = fneg double %193
  %196 = call double @llvm.fmuladd.f64(double %195, double %194, double %192)
  %197 = call double @sqrt(double noundef %196) #5
  %198 = fmul double %185, %197
  store double %198, ptr %46, align 8, !tbaa !9
  %199 = load double, ptr %46, align 8, !tbaa !9
  %200 = load double, ptr %25, align 8, !tbaa !9
  %201 = fdiv double %199, %200
  store double %201, ptr %46, align 8, !tbaa !9
  %202 = load double, ptr %28, align 8, !tbaa !9
  %203 = fneg double %202
  %204 = load double, ptr %25, align 8, !tbaa !9
  %205 = fdiv double %203, %204
  store double %205, ptr %47, align 8, !tbaa !9
  %206 = load double, ptr %29, align 8, !tbaa !9
  %207 = fneg double %206
  %208 = load double, ptr %25, align 8, !tbaa !9
  %209 = fdiv double %207, %208
  store double %209, ptr %48, align 8, !tbaa !9
  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
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #5
  %210 = load double, ptr %46, align 8, !tbaa !9
  %211 = load double, ptr %46, align 8, !tbaa !9
  %212 = load double, ptr %47, align 8, !tbaa !9
  %213 = load double, ptr %47, align 8, !tbaa !9
  %214 = fmul double %212, %213
  %215 = call double @llvm.fmuladd.f64(double %210, double %211, double %214)
  %216 = call double @sqrt(double noundef %215) #5
  store double %216, ptr %51, align 8, !tbaa !9
  %217 = load double, ptr %51, align 8, !tbaa !9
  %218 = fcmp une double %217, 0.000000e+00
  br i1 %218, label %219, label %227

219:                                              ; preds = %162
  %220 = load double, ptr %47, align 8, !tbaa !9
  %221 = fneg double %220
  %222 = load double, ptr %51, align 8, !tbaa !9
  %223 = fdiv double %221, %222
  store double %223, ptr %49, align 8, !tbaa !9
  %224 = load double, ptr %46, align 8, !tbaa !9
  %225 = load double, ptr %51, align 8, !tbaa !9
  %226 = fdiv double %224, %225
  store double %226, ptr %50, align 8, !tbaa !9
  store double 0.000000e+00, ptr %51, align 8, !tbaa !9
  br label %228

227:                                              ; preds = %162
  store double 0.000000e+00, ptr %49, align 8, !tbaa !9
  store double 1.000000e+00, ptr %50, align 8, !tbaa !9
  store double 0.000000e+00, ptr %51, align 8, !tbaa !9
  br label %228

228:                                              ; preds = %227, %219
  %229 = load double, ptr %47, align 8, !tbaa !9
  %230 = load double, ptr %51, align 8, !tbaa !9
  %231 = load double, ptr %48, align 8, !tbaa !9
  %232 = load double, ptr %50, align 8, !tbaa !9
  %233 = fmul double %231, %232
  %234 = fneg double %233
  %235 = call double @llvm.fmuladd.f64(double %229, double %230, double %234)
  store double %235, ptr %52, align 8, !tbaa !9
  %236 = load double, ptr %48, align 8, !tbaa !9
  %237 = load double, ptr %49, align 8, !tbaa !9
  %238 = load double, ptr %46, align 8, !tbaa !9
  %239 = load double, ptr %51, align 8, !tbaa !9
  %240 = fmul double %238, %239
  %241 = fneg double %240
  %242 = call double @llvm.fmuladd.f64(double %236, double %237, double %241)
  store double %242, ptr %53, align 8, !tbaa !9
  %243 = load double, ptr %46, align 8, !tbaa !9
  %244 = load double, ptr %50, align 8, !tbaa !9
  %245 = load double, ptr %47, align 8, !tbaa !9
  %246 = load double, ptr %49, align 8, !tbaa !9
  %247 = fmul double %245, %246
  %248 = fneg double %247
  %249 = call double @llvm.fmuladd.f64(double %243, double %244, double %248)
  store double %249, ptr %54, align 8, !tbaa !9
  %250 = load double, ptr %31, align 8, !tbaa !9
  %251 = fcmp une double %250, 0.000000e+00
  br i1 %251, label %252, label %302

252:                                              ; preds = %228
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #5
  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
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #5
  %253 = load double, ptr %31, align 8, !tbaa !9
  %254 = call double @cos(double noundef %253) #5
  store double %254, ptr %55, align 8, !tbaa !9
  %255 = load double, ptr %31, align 8, !tbaa !9
  %256 = call double @sin(double noundef %255) #5
  store double %256, ptr %56, align 8, !tbaa !9
  %257 = load double, ptr %49, align 8, !tbaa !9
  store double %257, ptr %57, align 8, !tbaa !9
  %258 = load double, ptr %50, align 8, !tbaa !9
  store double %258, ptr %58, align 8, !tbaa !9
  %259 = load double, ptr %51, align 8, !tbaa !9
  store double %259, ptr %59, align 8, !tbaa !9
  %260 = load double, ptr %52, align 8, !tbaa !9
  store double %260, ptr %60, align 8, !tbaa !9
  %261 = load double, ptr %53, align 8, !tbaa !9
  store double %261, ptr %61, align 8, !tbaa !9
  %262 = load double, ptr %54, align 8, !tbaa !9
  store double %262, ptr %62, align 8, !tbaa !9
  %263 = load double, ptr %57, align 8, !tbaa !9
  %264 = load double, ptr %55, align 8, !tbaa !9
  %265 = load double, ptr %60, align 8, !tbaa !9
  %266 = load double, ptr %56, align 8, !tbaa !9
  %267 = fmul double %265, %266
  %268 = call double @llvm.fmuladd.f64(double %263, double %264, double %267)
  store double %268, ptr %49, align 8, !tbaa !9
  %269 = load double, ptr %58, align 8, !tbaa !9
  %270 = load double, ptr %55, align 8, !tbaa !9
  %271 = load double, ptr %61, align 8, !tbaa !9
  %272 = load double, ptr %56, align 8, !tbaa !9
  %273 = fmul double %271, %272
  %274 = call double @llvm.fmuladd.f64(double %269, double %270, double %273)
  store double %274, ptr %50, align 8, !tbaa !9
  %275 = load double, ptr %59, align 8, !tbaa !9
  %276 = load double, ptr %55, align 8, !tbaa !9
  %277 = load double, ptr %62, align 8, !tbaa !9
  %278 = load double, ptr %56, align 8, !tbaa !9
  %279 = fmul double %277, %278
  %280 = call double @llvm.fmuladd.f64(double %275, double %276, double %279)
  store double %280, ptr %51, align 8, !tbaa !9
  %281 = load double, ptr %60, align 8, !tbaa !9
  %282 = load double, ptr %55, align 8, !tbaa !9
  %283 = load double, ptr %57, align 8, !tbaa !9
  %284 = load double, ptr %56, align 8, !tbaa !9
  %285 = fmul double %283, %284
  %286 = fneg double %285
  %287 = call double @llvm.fmuladd.f64(double %281, double %282, double %286)
  store double %287, ptr %52, align 8, !tbaa !9
  %288 = load double, ptr %61, align 8, !tbaa !9
  %289 = load double, ptr %55, align 8, !tbaa !9
  %290 = load double, ptr %58, align 8, !tbaa !9
  %291 = load double, ptr %56, align 8, !tbaa !9
  %292 = fmul double %290, %291
  %293 = fneg double %292
  %294 = call double @llvm.fmuladd.f64(double %288, double %289, double %293)
  store double %294, ptr %53, align 8, !tbaa !9
  %295 = load double, ptr %62, align 8, !tbaa !9
  %296 = load double, ptr %55, align 8, !tbaa !9
  %297 = load double, ptr %59, align 8, !tbaa !9
  %298 = load double, ptr %56, align 8, !tbaa !9
  %299 = fmul double %297, %298
  %300 = fneg double %299
  %301 = call double @llvm.fmuladd.f64(double %295, double %296, double %300)
  store double %301, ptr %54, align 8, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #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
  br label %302

302:                                              ; preds = %252, %228
  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
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %78) #5
  store i32 0, ptr %78, align 4, !tbaa !13
  br label %303

303:                                              ; preds = %2419, %302
  %304 = load i32, ptr %78, align 4, !tbaa !13
  %305 = getelementptr inbounds %class.spatial_region, ptr %86, i32 0, i32 0
  %306 = load i32, ptr %305, align 8, !tbaa !135
  %307 = icmp slt i32 %304, %306
  br i1 %307, label %309, label %308

308:                                              ; preds = %303
  store i32 2, ptr %79, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #5
  br label %2422

309:                                              ; preds = %303
  call void @llvm.lifetime.start.p0(i64 4, ptr %80) #5
  store i32 0, ptr %80, align 4, !tbaa !13
  br label %310

310:                                              ; preds = %2415, %309
  %311 = load i32, ptr %80, align 4, !tbaa !13
  %312 = getelementptr inbounds %class.spatial_region, ptr %86, i32 0, i32 1
  %313 = load i32, ptr %312, align 4, !tbaa !131
  %314 = icmp slt i32 %311, %313
  br i1 %314, label %316, label %315

315:                                              ; preds = %310
  store i32 5, ptr %79, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %80) #5
  br label %2418

316:                                              ; preds = %310
  call void @llvm.lifetime.start.p0(i64 4, ptr %81) #5
  store i32 0, ptr %81, align 4, !tbaa !13
  br label %317

317:                                              ; preds = %2411, %316
  %318 = load i32, ptr %81, align 4, !tbaa !13
  %319 = getelementptr inbounds %class.spatial_region, ptr %86, i32 0, i32 2
  %320 = load i32, ptr %319, align 8, !tbaa !133
  %321 = icmp slt i32 %318, %320
  br i1 %321, label %323, label %322

322:                                              ; preds = %317
  store i32 8, ptr %79, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #5
  br label %2414

323:                                              ; preds = %317
  %324 = load double, ptr %46, align 8, !tbaa !9
  %325 = load i32, ptr %78, align 4, !tbaa !13
  %326 = sitofp i32 %325 to double
  %327 = getelementptr inbounds %class.spatial_region, ptr %86, i32 0, i32 3
  %328 = load double, ptr %327, align 8, !tbaa !15
  %329 = load double, ptr %24, align 8, !tbaa !9
  %330 = fneg double %329
  %331 = call double @llvm.fmuladd.f64(double %326, double %328, double %330)
  %332 = load double, ptr %34, align 8, !tbaa !9
  %333 = fsub double %331, %332
  %334 = load double, ptr %47, align 8, !tbaa !9
  %335 = load i32, ptr %80, align 4, !tbaa !13
  %336 = sitofp i32 %335 to double
  %337 = getelementptr inbounds %class.spatial_region, ptr %86, i32 0, i32 4
  %338 = load double, ptr %337, align 8, !tbaa !132
  %339 = load double, ptr %44, align 8, !tbaa !9
  %340 = fneg double %339
  %341 = call double @llvm.fmuladd.f64(double %336, double %338, double %340)
  %342 = load double, ptr %28, align 8, !tbaa !9
  %343 = fsub double %341, %342
  %344 = load double, ptr %35, align 8, !tbaa !9
  %345 = fsub double %343, %344
  %346 = fmul double %334, %345
  %347 = call double @llvm.fmuladd.f64(double %324, double %333, double %346)
  %348 = load double, ptr %48, align 8, !tbaa !9
  %349 = load i32, ptr %81, align 4, !tbaa !13
  %350 = sitofp i32 %349 to double
  %351 = getelementptr inbounds %class.spatial_region, ptr %86, i32 0, i32 5
  %352 = load double, ptr %351, align 8, !tbaa !134
  %353 = load double, ptr %45, align 8, !tbaa !9
  %354 = fneg double %353
  %355 = call double @llvm.fmuladd.f64(double %350, double %352, double %354)
  %356 = load double, ptr %29, align 8, !tbaa !9
  %357 = fsub double %355, %356
  %358 = load double, ptr %36, align 8, !tbaa !9
  %359 = fsub double %357, %358
  %360 = call double @llvm.fmuladd.f64(double %348, double %359, double %347)
  store double %360, ptr %64, align 8, !tbaa !9
  %361 = load i32, ptr %78, align 4, !tbaa !13
  %362 = sitofp i32 %361 to double
  %363 = getelementptr inbounds %class.spatial_region, ptr %86, i32 0, i32 3
  %364 = load double, ptr %363, align 8, !tbaa !15
  %365 = load double, ptr %24, align 8, !tbaa !9
  %366 = fneg double %365
  %367 = call double @llvm.fmuladd.f64(double %362, double %364, double %366)
  %368 = load double, ptr %34, align 8, !tbaa !9
  %369 = fsub double %367, %368
  %370 = load i32, ptr %78, align 4, !tbaa !13
  %371 = sitofp i32 %370 to double
  %372 = getelementptr inbounds %class.spatial_region, ptr %86, i32 0, i32 3
  %373 = load double, ptr %372, align 8, !tbaa !15
  %374 = load double, ptr %24, align 8, !tbaa !9
  %375 = fneg double %374
  %376 = call double @llvm.fmuladd.f64(double %371, double %373, double %375)
  %377 = load double, ptr %34, align 8, !tbaa !9
  %378 = fsub double %376, %377
  %379 = load i32, ptr %80, align 4, !tbaa !13
  %380 = sitofp i32 %379 to double
  %381 = getelementptr inbounds %class.spatial_region, ptr %86, i32 0, i32 4
  %382 = load double, ptr %381, align 8, !tbaa !132
  %383 = load double, ptr %44, align 8, !tbaa !9
  %384 = fneg double %383
  %385 = call double @llvm.fmuladd.f64(double %380, double %382, double %384)
  %386 = load double, ptr %28, align 8, !tbaa !9
  %387 = fsub double %385, %386
  %388 = load double, ptr %35, align 8, !tbaa !9
  %389 = fsub double %387, %388
  %390 = load i32, ptr %80, align 4, !tbaa !13
  %391 = sitofp i32 %390 to double
  %392 = getelementptr inbounds %class.spatial_region, ptr %86, i32 0, i32 4
  %393 = load double, ptr %392, align 8, !tbaa !132
  %394 = load double, ptr %44, align 8, !tbaa !9
  %395 = fneg double %394
  %396 = call double @llvm.fmuladd.f64(double %391, double %393, double %395)
  %397 = load double, ptr %28, align 8, !tbaa !9
  %398 = fsub double %396, %397
  %399 = load double, ptr %35, align 8, !tbaa !9
  %400 = fsub double %398, %399
  %401 = fmul double %389, %400
  %402 = call double @llvm.fmuladd.f64(double %369, double %378, double %401)
  %403 = load i32, ptr %81, align 4, !tbaa !13
  %404 = sitofp i32 %403 to double
  %405 = getelementptr inbounds %class.spatial_region, ptr %86, i32 0, i32 5
  %406 = load double, ptr %405, align 8, !tbaa !134
  %407 = load double, ptr %45, align 8, !tbaa !9
  %408 = fneg double %407
  %409 = call double @llvm.fmuladd.f64(double %404, double %406, double %408)
  %410 = load double, ptr %29, align 8, !tbaa !9
  %411 = fsub double %409, %410
  %412 = load double, ptr %36, align 8, !tbaa !9
  %413 = fsub double %411, %412
  %414 = load i32, ptr %81, align 4, !tbaa !13
  %415 = sitofp i32 %414 to double
  %416 = getelementptr inbounds %class.spatial_region, ptr %86, i32 0, i32 5
  %417 = load double, ptr %416, align 8, !tbaa !134
  %418 = load double, ptr %45, align 8, !tbaa !9
  %419 = fneg double %418
  %420 = call double @llvm.fmuladd.f64(double %415, double %417, double %419)
  %421 = load double, ptr %29, align 8, !tbaa !9
  %422 = fsub double %420, %421
  %423 = load double, ptr %36, align 8, !tbaa !9
  %424 = fsub double %422, %423
  %425 = call double @llvm.fmuladd.f64(double %413, double %424, double %402)
  %426 = load double, ptr %64, align 8, !tbaa !9
  %427 = load double, ptr %64, align 8, !tbaa !9
  %428 = fneg double %426
  %429 = call double @llvm.fmuladd.f64(double %428, double %427, double %425)
  %430 = call double @sqrt(double noundef %429) #5
  store double %430, ptr %65, align 8, !tbaa !9
  %431 = load double, ptr %64, align 8, !tbaa !9
  %432 = load double, ptr %65, align 8, !tbaa !9
  %433 = load double, ptr %65, align 8, !tbaa !9
  %434 = fmul double %432, %433
  %435 = fdiv double %434, 2.000000e+00
  %436 = load double, ptr %64, align 8, !tbaa !9
  %437 = load double, ptr %25, align 8, !tbaa !9
  %438 = fsub double %436, %437
  %439 = fmul double %435, %438
  %440 = load double, ptr %64, align 8, !tbaa !9
  %441 = load double, ptr %25, align 8, !tbaa !9
  %442 = fsub double %440, %441
  %443 = load double, ptr %64, align 8, !tbaa !9
  %444 = load double, ptr %25, align 8, !tbaa !9
  %445 = fsub double %443, %444
  %446 = load double, ptr %38, align 8, !tbaa !9
  %447 = load double, ptr %38, align 8, !tbaa !9
  %448 = fmul double %446, %447
  %449 = call double @llvm.fmuladd.f64(double %442, double %445, double %448)
  %450 = fdiv double %439, %449
  %451 = fadd double %431, %450
  %452 = load double, ptr %64, align 8, !tbaa !9
  %453 = load double, ptr %25, align 8, !tbaa !9
  %454 = fsub double %452, %453
  %455 = load double, ptr %38, align 8, !tbaa !9
  %456 = fdiv double %454, %455
  %457 = call double @atan(double noundef %456) #5
  %458 = fsub double %451, %457
  %459 = load double, ptr %25, align 8, !tbaa !9
  %460 = load double, ptr %38, align 8, !tbaa !9
  %461 = fdiv double %459, %460
  %462 = call double @atan(double noundef %461) #5
  %463 = fsub double %458, %462
  store double %463, ptr %63, align 8, !tbaa !9
  %464 = load double, ptr %43, align 8, !tbaa !9
  %465 = load double, ptr %63, align 8, !tbaa !9
  %466 = load double, ptr %25, align 8, !tbaa !9
  %467 = fsub double %465, %466
  %468 = load double, ptr %25, align 8, !tbaa !9
  %469 = load double, ptr %38, align 8, !tbaa !9
  %470 = fdiv double %468, %469
  %471 = call double @atan(double noundef %470) #5
  %472 = fadd double %467, %471
  %473 = load double, ptr %63, align 8, !tbaa !9
  %474 = load double, ptr %25, align 8, !tbaa !9
  %475 = fsub double %473, %474
  %476 = load double, ptr %25, align 8, !tbaa !9
  %477 = load double, ptr %38, align 8, !tbaa !9
  %478 = fdiv double %476, %477
  %479 = call double @atan(double noundef %478) #5
  %480 = fadd double %475, %479
  %481 = fmul double %472, %480
  %482 = load double, ptr %38, align 8, !tbaa !9
  %483 = load double, ptr %38, align 8, !tbaa !9
  %484 = fmul double %482, %483
  %485 = fdiv double %481, %484
  %486 = fadd double 1.000000e+00, %485
  %487 = call double @sqrt(double noundef %486) #5
  %488 = fmul double %464, %487
  store double %488, ptr %70, align 8, !tbaa !9
  %489 = load double, ptr %42, align 8, !tbaa !9
  %490 = load double, ptr %70, align 8, !tbaa !9
  %491 = fdiv double %489, %490
  %492 = load double, ptr %40, align 8, !tbaa !9
  %493 = fmul double %491, %492
  store double %493, ptr %71, align 8, !tbaa !9
  %494 = load double, ptr %63, align 8, !tbaa !9
  %495 = load double, ptr %41, align 8, !tbaa !9
  %496 = fneg double %495
  %497 = fcmp ogt double %494, %496
  br i1 %497, label %498, label %2331

498:                                              ; preds = %323
  %499 = load double, ptr %63, align 8, !tbaa !9
  %500 = load double, ptr %41, align 8, !tbaa !9
  %501 = fcmp olt double %499, %500
  br i1 %501, label %502, label %2331

502:                                              ; preds = %498
  %503 = load double, ptr %65, align 8, !tbaa !9
  %504 = load double, ptr %70, align 8, !tbaa !9
  %505 = fcmp olt double %503, %504
  br i1 %505, label %506, label %2331

506:                                              ; preds = %502
  %507 = load i32, ptr %32, align 4, !tbaa !13
  %508 = icmp eq i32 %507, 1
  br i1 %508, label %509, label %1338

509:                                              ; preds = %506
  %510 = load double, ptr %63, align 8, !tbaa !9
  %511 = fmul double 0x400921FB54442D18, %510
  %512 = load double, ptr %63, align 8, !tbaa !9
  %513 = fmul double %511, %512
  %514 = load double, ptr %63, align 8, !tbaa !9
  %515 = fmul double %513, %514
  %516 = load double, ptr %63, align 8, !tbaa !9
  %517 = fmul double %515, %516
  %518 = fdiv double %517, 2.000000e+00
  %519 = load double, ptr %41, align 8, !tbaa !9
  %520 = load double, ptr %41, align 8, !tbaa !9
  %521 = fmul double %519, %520
  %522 = load double, ptr %41, align 8, !tbaa !9
  %523 = fmul double %521, %522
  %524 = load double, ptr %41, align 8, !tbaa !9
  %525 = fmul double %523, %524
  %526 = fdiv double %518, %525
  %527 = call double @cos(double noundef %526) #5
  store double %527, ptr %66, align 8, !tbaa !9
  %528 = load double, ptr %65, align 8, !tbaa !9
  %529 = fmul double 0x400921FB54442D18, %528
  %530 = fdiv double %529, 2.000000e+00
  %531 = load double, ptr %70, align 8, !tbaa !9
  %532 = fdiv double %530, %531
  %533 = call double @cos(double noundef %532) #5
  store double %533, ptr %67, align 8, !tbaa !9
  %534 = load double, ptr %63, align 8, !tbaa !9
  %535 = fmul double 0x400921FB54442D18, %534
  %536 = load double, ptr %63, align 8, !tbaa !9
  %537 = fmul double %535, %536
  %538 = load double, ptr %63, align 8, !tbaa !9
  %539 = fmul double %537, %538
  %540 = load double, ptr %63, align 8, !tbaa !9
  %541 = fmul double %539, %540
  %542 = fdiv double %541, 2.000000e+00
  %543 = load double, ptr %41, align 8, !tbaa !9
  %544 = load double, ptr %41, align 8, !tbaa !9
  %545 = fmul double %543, %544
  %546 = load double, ptr %41, align 8, !tbaa !9
  %547 = fmul double %545, %546
  %548 = load double, ptr %41, align 8, !tbaa !9
  %549 = fmul double %547, %548
  %550 = fdiv double %542, %549
  %551 = call double @sin(double noundef %550) #5
  store double %551, ptr %68, align 8, !tbaa !9
  %552 = load double, ptr %65, align 8, !tbaa !9
  %553 = fmul double 0x400921FB54442D18, %552
  %554 = fdiv double %553, 2.000000e+00
  %555 = load double, ptr %70, align 8, !tbaa !9
  %556 = fdiv double %554, %555
  %557 = call double @sin(double noundef %556) #5
  store double %557, ptr %69, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %82) #5
  %558 = load double, ptr %33, align 8, !tbaa !9
  %559 = load double, ptr %63, align 8, !tbaa !9
  %560 = load double, ptr %27, align 8, !tbaa !9
  %561 = call double @llvm.fmuladd.f64(double %558, double %559, double %560)
  store double %561, ptr %82, align 8, !tbaa !9
  %562 = load double, ptr %71, align 8, !tbaa !9
  %563 = load double, ptr %20, align 8, !tbaa !9
  %564 = fmul double %562, %563
  %565 = load double, ptr %67, align 8, !tbaa !9
  %566 = fmul double %564, %565
  %567 = load double, ptr %67, align 8, !tbaa !9
  %568 = fmul double %566, %567
  %569 = load double, ptr %33, align 8, !tbaa !9
  %570 = fdiv double %568, %569
  %571 = load double, ptr %33, align 8, !tbaa !9
  %572 = load double, ptr %82, align 8, !tbaa !9
  %573 = call double @cos(double noundef %572) #5
  %574 = fmul double %571, %573
  %575 = load double, ptr %66, align 8, !tbaa !9
  %576 = fmul double %574, %575
  %577 = load double, ptr %66, align 8, !tbaa !9
  %578 = load double, ptr %63, align 8, !tbaa !9
  %579 = fmul double 0x402921FB54442D18, %578
  %580 = load double, ptr %63, align 8, !tbaa !9
  %581 = fmul double %579, %580
  %582 = load double, ptr %63, align 8, !tbaa !9
  %583 = fmul double %581, %582
  %584 = load double, ptr %41, align 8, !tbaa !9
  %585 = load double, ptr %41, align 8, !tbaa !9
  %586 = fmul double %584, %585
  %587 = load double, ptr %41, align 8, !tbaa !9
  %588 = fmul double %586, %587
  %589 = load double, ptr %41, align 8, !tbaa !9
  %590 = fmul double %588, %589
  %591 = fdiv double %583, %590
  %592 = load double, ptr %82, align 8, !tbaa !9
  %593 = call double @sin(double noundef %592) #5
  %594 = fmul double %591, %593
  %595 = load double, ptr %66, align 8, !tbaa !9
  %596 = fmul double %594, %595
  %597 = load double, ptr %68, align 8, !tbaa !9
  %598 = fmul double %596, %597
  %599 = fneg double %598
  %600 = call double @llvm.fmuladd.f64(double %576, double %577, double %599)
  %601 = fmul double %570, %600
  store double %601, ptr %73, align 8, !tbaa !9
  %602 = load double, ptr %71, align 8, !tbaa !9
  %603 = fneg double %602
  %604 = load double, ptr %21, align 8, !tbaa !9
  %605 = fmul double %603, %604
  %606 = load double, ptr %67, align 8, !tbaa !9
  %607 = fmul double %605, %606
  %608 = load double, ptr %67, align 8, !tbaa !9
  %609 = fmul double %607, %608
  %610 = load double, ptr %33, align 8, !tbaa !9
  %611 = fdiv double %609, %610
  %612 = load double, ptr %33, align 8, !tbaa !9
  %613 = load double, ptr %82, align 8, !tbaa !9
  %614 = call double @sin(double noundef %613) #5
  %615 = fmul double %612, %614
  %616 = load double, ptr %66, align 8, !tbaa !9
  %617 = fmul double %615, %616
  %618 = load double, ptr %66, align 8, !tbaa !9
  %619 = load double, ptr %63, align 8, !tbaa !9
  %620 = fmul double 0x402921FB54442D18, %619
  %621 = load double, ptr %63, align 8, !tbaa !9
  %622 = fmul double %620, %621
  %623 = load double, ptr %63, align 8, !tbaa !9
  %624 = fmul double %622, %623
  %625 = load double, ptr %41, align 8, !tbaa !9
  %626 = load double, ptr %41, align 8, !tbaa !9
  %627 = fmul double %625, %626
  %628 = load double, ptr %41, align 8, !tbaa !9
  %629 = fmul double %627, %628
  %630 = load double, ptr %41, align 8, !tbaa !9
  %631 = fmul double %629, %630
  %632 = fdiv double %624, %631
  %633 = load double, ptr %82, align 8, !tbaa !9
  %634 = call double @cos(double noundef %633) #5
  %635 = fmul double %632, %634
  %636 = load double, ptr %66, align 8, !tbaa !9
  %637 = fmul double %635, %636
  %638 = load double, ptr %68, align 8, !tbaa !9
  %639 = fmul double %637, %638
  %640 = call double @llvm.fmuladd.f64(double %617, double %618, double %639)
  %641 = fmul double %611, %640
  store double %641, ptr %74, align 8, !tbaa !9
  %642 = load double, ptr %73, align 8, !tbaa !9
  store double %642, ptr %77, align 8, !tbaa !9
  %643 = load double, ptr %74, align 8, !tbaa !9
  %644 = fneg double %643
  store double %644, ptr %76, align 8, !tbaa !9
  %645 = load double, ptr %65, align 8, !tbaa !9
  %646 = fcmp une double %645, 0.000000e+00
  br i1 %646, label %647, label %990

647:                                              ; preds = %509
  %648 = load double, ptr %71, align 8, !tbaa !9
  %649 = load double, ptr %20, align 8, !tbaa !9
  %650 = fmul double %648, %649
  %651 = load double, ptr %33, align 8, !tbaa !9
  %652 = fdiv double %650, %651
  %653 = load double, ptr %67, align 8, !tbaa !9
  %654 = load double, ptr %69, align 8, !tbaa !9
  %655 = fmul double %653, %654
  %656 = fmul double %655, 0x400921FB54442D18
  %657 = load double, ptr %70, align 8, !tbaa !9
  %658 = fdiv double %656, %657
  %659 = load i32, ptr %78, align 4, !tbaa !13
  %660 = sitofp i32 %659 to double
  %661 = getelementptr inbounds %class.spatial_region, ptr %86, i32 0, i32 3
  %662 = load double, ptr %661, align 8, !tbaa !15
  %663 = load double, ptr %24, align 8, !tbaa !9
  %664 = fneg double %663
  %665 = call double @llvm.fmuladd.f64(double %660, double %662, double %664)
  %666 = load double, ptr %34, align 8, !tbaa !9
  %667 = fsub double %665, %666
  %668 = load double, ptr %49, align 8, !tbaa !9
  %669 = load i32, ptr %80, align 4, !tbaa !13
  %670 = sitofp i32 %669 to double
  %671 = getelementptr inbounds %class.spatial_region, ptr %86, i32 0, i32 4
  %672 = load double, ptr %671, align 8, !tbaa !132
  %673 = load double, ptr %44, align 8, !tbaa !9
  %674 = fneg double %673
  %675 = call double @llvm.fmuladd.f64(double %670, double %672, double %674)
  %676 = load double, ptr %28, align 8, !tbaa !9
  %677 = fsub double %675, %676
  %678 = load double, ptr %35, align 8, !tbaa !9
  %679 = fsub double %677, %678
  %680 = load double, ptr %50, align 8, !tbaa !9
  %681 = fmul double %679, %680
  %682 = call double @llvm.fmuladd.f64(double %667, double %668, double %681)
  %683 = load i32, ptr %81, align 4, !tbaa !13
  %684 = sitofp i32 %683 to double
  %685 = getelementptr inbounds %class.spatial_region, ptr %86, i32 0, i32 5
  %686 = load double, ptr %685, align 8, !tbaa !134
  %687 = load double, ptr %45, align 8, !tbaa !9
  %688 = fneg double %687
  %689 = call double @llvm.fmuladd.f64(double %684, double %686, double %688)
  %690 = load double, ptr %29, align 8, !tbaa !9
  %691 = fsub double %689, %690
  %692 = load double, ptr %36, align 8, !tbaa !9
  %693 = fsub double %691, %692
  %694 = load double, ptr %51, align 8, !tbaa !9
  %695 = call double @llvm.fmuladd.f64(double %693, double %694, double %682)
  %696 = fmul double %658, %695
  %697 = load double, ptr %65, align 8, !tbaa !9
  %698 = fdiv double %696, %697
  %699 = load double, ptr %33, align 8, !tbaa !9
  %700 = load double, ptr %82, align 8, !tbaa !9
  %701 = call double @sin(double noundef %700) #5
  %702 = fmul double %699, %701
  %703 = load double, ptr %66, align 8, !tbaa !9
  %704 = fmul double %702, %703
  %705 = load double, ptr %66, align 8, !tbaa !9
  %706 = load double, ptr %63, align 8, !tbaa !9
  %707 = fmul double 0x402921FB54442D18, %706
  %708 = load double, ptr %63, align 8, !tbaa !9
  %709 = fmul double %707, %708
  %710 = load double, ptr %63, align 8, !tbaa !9
  %711 = fmul double %709, %710
  %712 = load double, ptr %41, align 8, !tbaa !9
  %713 = load double, ptr %41, align 8, !tbaa !9
  %714 = fmul double %712, %713
  %715 = load double, ptr %41, align 8, !tbaa !9
  %716 = fmul double %714, %715
  %717 = load double, ptr %41, align 8, !tbaa !9
  %718 = fmul double %716, %717
  %719 = fdiv double %711, %718
  %720 = load double, ptr %82, align 8, !tbaa !9
  %721 = call double @cos(double noundef %720) #5
  %722 = fmul double %719, %721
  %723 = load double, ptr %66, align 8, !tbaa !9
  %724 = fmul double %722, %723
  %725 = load double, ptr %68, align 8, !tbaa !9
  %726 = fmul double %724, %725
  %727 = call double @llvm.fmuladd.f64(double %704, double %705, double %726)
  %728 = load i32, ptr %78, align 4, !tbaa !13
  %729 = sitofp i32 %728 to double
  %730 = getelementptr inbounds %class.spatial_region, ptr %86, i32 0, i32 3
  %731 = load double, ptr %730, align 8, !tbaa !15
  %732 = load double, ptr %24, align 8, !tbaa !9
  %733 = fneg double %732
  %734 = call double @llvm.fmuladd.f64(double %729, double %731, double %733)
  %735 = load double, ptr %34, align 8, !tbaa !9
  %736 = fsub double %734, %735
  %737 = load double, ptr %49, align 8, !tbaa !9
  %738 = load i32, ptr %80, align 4, !tbaa !13
  %739 = sitofp i32 %738 to double
  %740 = getelementptr inbounds %class.spatial_region, ptr %86, i32 0, i32 4
  %741 = load double, ptr %740, align 8, !tbaa !132
  %742 = load double, ptr %44, align 8, !tbaa !9
  %743 = fneg double %742
  %744 = call double @llvm.fmuladd.f64(double %739, double %741, double %743)
  %745 = load double, ptr %28, align 8, !tbaa !9
  %746 = fsub double %744, %745
  %747 = load double, ptr %35, align 8, !tbaa !9
  %748 = fsub double %746, %747
  %749 = load double, ptr %50, align 8, !tbaa !9
  %750 = fmul double %748, %749
  %751 = call double @llvm.fmuladd.f64(double %736, double %737, double %750)
  %752 = load i32, ptr %81, align 4, !tbaa !13
  %753 = sitofp i32 %752 to double
  %754 = getelementptr inbounds %class.spatial_region, ptr %86, i32 0, i32 5
  %755 = load double, ptr %754, align 8, !tbaa !134
  %756 = load double, ptr %45, align 8, !tbaa !9
  %757 = fneg double %756
  %758 = call double @llvm.fmuladd.f64(double %753, double %755, double %757)
  %759 = load double, ptr %29, align 8, !tbaa !9
  %760 = fsub double %758, %759
  %761 = load double, ptr %36, align 8, !tbaa !9
  %762 = fsub double %760, %761
  %763 = load double, ptr %51, align 8, !tbaa !9
  %764 = call double @llvm.fmuladd.f64(double %762, double %763, double %751)
  %765 = load double, ptr %64, align 8, !tbaa !9
  %766 = load double, ptr %25, align 8, !tbaa !9
  %767 = fsub double %765, %766
  %768 = fmul double %764, %767
  %769 = load double, ptr %64, align 8, !tbaa !9
  %770 = load double, ptr %25, align 8, !tbaa !9
  %771 = fsub double %769, %770
  %772 = load double, ptr %64, align 8, !tbaa !9
  %773 = load double, ptr %25, align 8, !tbaa !9
  %774 = fsub double %772, %773
  %775 = load double, ptr %38, align 8, !tbaa !9
  %776 = load double, ptr %38, align 8, !tbaa !9
  %777 = fmul double %775, %776
  %778 = call double @llvm.fmuladd.f64(double %771, double %774, double %777)
  %779 = fdiv double %768, %778
  %780 = load double, ptr %67, align 8, !tbaa !9
  %781 = fmul double %779, %780
  %782 = load double, ptr %67, align 8, !tbaa !9
  %783 = fmul double %781, %782
  %784 = load double, ptr %66, align 8, !tbaa !9
  %785 = load double, ptr %66, align 8, !tbaa !9
  %786 = fmul double %784, %785
  %787 = load double, ptr %33, align 8, !tbaa !9
  %788 = fneg double %787
  %789 = load double, ptr %82, align 8, !tbaa !9
  %790 = call double @cos(double noundef %789) #5
  %791 = fmul double %788, %790
  %792 = load double, ptr %63, align 8, !tbaa !9
  %793 = fmul double 0x402921FB54442D18, %792
  %794 = load double, ptr %63, align 8, !tbaa !9
  %795 = fmul double %793, %794
  %796 = load double, ptr %63, align 8, !tbaa !9
  %797 = fmul double %795, %796
  %798 = load double, ptr %41, align 8, !tbaa !9
  %799 = load double, ptr %41, align 8, !tbaa !9
  %800 = fmul double %798, %799
  %801 = load double, ptr %41, align 8, !tbaa !9
  %802 = fmul double %800, %801
  %803 = load double, ptr %41, align 8, !tbaa !9
  %804 = fmul double %802, %803
  %805 = fdiv double %797, %804
  %806 = load double, ptr %66, align 8, !tbaa !9
  %807 = fmul double %805, %806
  %808 = load double, ptr %68, align 8, !tbaa !9
  %809 = fmul double %807, %808
  %810 = load double, ptr %82, align 8, !tbaa !9
  %811 = call double @sin(double noundef %810) #5
  %812 = fmul double %809, %811
  %813 = call double @llvm.fmuladd.f64(double %786, double %791, double %812)
  %814 = fmul double %783, %813
  %815 = call double @llvm.fmuladd.f64(double %698, double %727, double %814)
  %816 = load double, ptr %71, align 8, !tbaa !9
  %817 = load double, ptr %21, align 8, !tbaa !9
  %818 = fmul double %816, %817
  %819 = load double, ptr %33, align 8, !tbaa !9
  %820 = fdiv double %818, %819
  %821 = load double, ptr %67, align 8, !tbaa !9
  %822 = load double, ptr %69, align 8, !tbaa !9
  %823 = fmul double %821, %822
  %824 = fmul double %823, 0x400921FB54442D18
  %825 = load double, ptr %70, align 8, !tbaa !9
  %826 = fdiv double %824, %825
  %827 = load i32, ptr %78, align 4, !tbaa !13
  %828 = sitofp i32 %827 to double
  %829 = getelementptr inbounds %class.spatial_region, ptr %86, i32 0, i32 3
  %830 = load double, ptr %829, align 8, !tbaa !15
  %831 = load double, ptr %24, align 8, !tbaa !9
  %832 = fneg double %831
  %833 = call double @llvm.fmuladd.f64(double %828, double %830, double %832)
  %834 = load double, ptr %34, align 8, !tbaa !9
  %835 = fsub double %833, %834
  %836 = load double, ptr %52, align 8, !tbaa !9
  %837 = load i32, ptr %80, align 4, !tbaa !13
  %838 = sitofp i32 %837 to double
  %839 = getelementptr inbounds %class.spatial_region, ptr %86, i32 0, i32 4
  %840 = load double, ptr %839, align 8, !tbaa !132
  %841 = load double, ptr %44, align 8, !tbaa !9
  %842 = fneg double %841
  %843 = call double @llvm.fmuladd.f64(double %838, double %840, double %842)
  %844 = load double, ptr %28, align 8, !tbaa !9
  %845 = fsub double %843, %844
  %846 = load double, ptr %35, align 8, !tbaa !9
  %847 = fsub double %845, %846
  %848 = load double, ptr %53, align 8, !tbaa !9
  %849 = fmul double %847, %848
  %850 = call double @llvm.fmuladd.f64(double %835, double %836, double %849)
  %851 = load i32, ptr %81, align 4, !tbaa !13
  %852 = sitofp i32 %851 to double
  %853 = getelementptr inbounds %class.spatial_region, ptr %86, i32 0, i32 5
  %854 = load double, ptr %853, align 8, !tbaa !134
  %855 = load double, ptr %45, align 8, !tbaa !9
  %856 = fneg double %855
  %857 = call double @llvm.fmuladd.f64(double %852, double %854, double %856)
  %858 = load double, ptr %29, align 8, !tbaa !9
  %859 = fsub double %857, %858
  %860 = load double, ptr %36, align 8, !tbaa !9
  %861 = fsub double %859, %860
  %862 = load double, ptr %54, align 8, !tbaa !9
  %863 = call double @llvm.fmuladd.f64(double %861, double %862, double %850)
  %864 = fmul double %826, %863
  %865 = load double, ptr %65, align 8, !tbaa !9
  %866 = fdiv double %864, %865
  %867 = load double, ptr %33, align 8, !tbaa !9
  %868 = fneg double %867
  %869 = load double, ptr %82, align 8, !tbaa !9
  %870 = call double @cos(double noundef %869) #5
  %871 = fmul double %868, %870
  %872 = load double, ptr %66, align 8, !tbaa !9
  %873 = fmul double %871, %872
  %874 = load double, ptr %66, align 8, !tbaa !9
  %875 = load double, ptr %63, align 8, !tbaa !9
  %876 = fmul double 0x402921FB54442D18, %875
  %877 = load double, ptr %63, align 8, !tbaa !9
  %878 = fmul double %876, %877
  %879 = load double, ptr %63, align 8, !tbaa !9
  %880 = fmul double %878, %879
  %881 = load double, ptr %41, align 8, !tbaa !9
  %882 = load double, ptr %41, align 8, !tbaa !9
  %883 = fmul double %881, %882
  %884 = load double, ptr %41, align 8, !tbaa !9
  %885 = fmul double %883, %884
  %886 = load double, ptr %41, align 8, !tbaa !9
  %887 = fmul double %885, %886
  %888 = fdiv double %880, %887
  %889 = load double, ptr %82, align 8, !tbaa !9
  %890 = call double @sin(double noundef %889) #5
  %891 = fmul double %888, %890
  %892 = load double, ptr %66, align 8, !tbaa !9
  %893 = fmul double %891, %892
  %894 = load double, ptr %68, align 8, !tbaa !9
  %895 = fmul double %893, %894
  %896 = fneg double %895
  %897 = call double @llvm.fmuladd.f64(double %873, double %874, double %896)
  %898 = load i32, ptr %78, align 4, !tbaa !13
  %899 = sitofp i32 %898 to double
  %900 = getelementptr inbounds %class.spatial_region, ptr %86, i32 0, i32 3
  %901 = load double, ptr %900, align 8, !tbaa !15
  %902 = load double, ptr %24, align 8, !tbaa !9
  %903 = fneg double %902
  %904 = call double @llvm.fmuladd.f64(double %899, double %901, double %903)
  %905 = load double, ptr %34, align 8, !tbaa !9
  %906 = fsub double %904, %905
  %907 = load double, ptr %52, align 8, !tbaa !9
  %908 = load i32, ptr %80, align 4, !tbaa !13
  %909 = sitofp i32 %908 to double
  %910 = getelementptr inbounds %class.spatial_region, ptr %86, i32 0, i32 4
  %911 = load double, ptr %910, align 8, !tbaa !132
  %912 = load double, ptr %44, align 8, !tbaa !9
  %913 = fneg double %912
  %914 = call double @llvm.fmuladd.f64(double %909, double %911, double %913)
  %915 = load double, ptr %28, align 8, !tbaa !9
  %916 = fsub double %914, %915
  %917 = load double, ptr %35, align 8, !tbaa !9
  %918 = fsub double %916, %917
  %919 = load double, ptr %53, align 8, !tbaa !9
  %920 = fmul double %918, %919
  %921 = call double @llvm.fmuladd.f64(double %906, double %907, double %920)
  %922 = load i32, ptr %81, align 4, !tbaa !13
  %923 = sitofp i32 %922 to double
  %924 = getelementptr inbounds %class.spatial_region, ptr %86, i32 0, i32 5
  %925 = load double, ptr %924, align 8, !tbaa !134
  %926 = load double, ptr %45, align 8, !tbaa !9
  %927 = fneg double %926
  %928 = call double @llvm.fmuladd.f64(double %923, double %925, double %927)
  %929 = load double, ptr %29, align 8, !tbaa !9
  %930 = fsub double %928, %929
  %931 = load double, ptr %36, align 8, !tbaa !9
  %932 = fsub double %930, %931
  %933 = load double, ptr %54, align 8, !tbaa !9
  %934 = call double @llvm.fmuladd.f64(double %932, double %933, double %921)
  %935 = load double, ptr %64, align 8, !tbaa !9
  %936 = load double, ptr %25, align 8, !tbaa !9
  %937 = fsub double %935, %936
  %938 = fmul double %934, %937
  %939 = load double, ptr %64, align 8, !tbaa !9
  %940 = load double, ptr %25, align 8, !tbaa !9
  %941 = fsub double %939, %940
  %942 = load double, ptr %64, align 8, !tbaa !9
  %943 = load double, ptr %25, align 8, !tbaa !9
  %944 = fsub double %942, %943
  %945 = load double, ptr %38, align 8, !tbaa !9
  %946 = load double, ptr %38, align 8, !tbaa !9
  %947 = fmul double %945, %946
  %948 = call double @llvm.fmuladd.f64(double %941, double %944, double %947)
  %949 = fdiv double %938, %948
  %950 = load double, ptr %67, align 8, !tbaa !9
  %951 = fmul double %949, %950
  %952 = load double, ptr %67, align 8, !tbaa !9
  %953 = fmul double %951, %952
  %954 = load double, ptr %66, align 8, !tbaa !9
  %955 = load double, ptr %66, align 8, !tbaa !9
  %956 = fmul double %954, %955
  %957 = load double, ptr %33, align 8, !tbaa !9
  %958 = fneg double %957
  %959 = load double, ptr %82, align 8, !tbaa !9
  %960 = call double @sin(double noundef %959) #5
  %961 = fmul double %958, %960
  %962 = load double, ptr %63, align 8, !tbaa !9
  %963 = fmul double 0x402921FB54442D18, %962
  %964 = load double, ptr %63, align 8, !tbaa !9
  %965 = fmul double %963, %964
  %966 = load double, ptr %63, align 8, !tbaa !9
  %967 = fmul double %965, %966
  %968 = load double, ptr %41, align 8, !tbaa !9
  %969 = load double, ptr %41, align 8, !tbaa !9
  %970 = fmul double %968, %969
  %971 = load double, ptr %41, align 8, !tbaa !9
  %972 = fmul double %970, %971
  %973 = load double, ptr %41, align 8, !tbaa !9
  %974 = fmul double %972, %973
  %975 = fdiv double %967, %974
  %976 = load double, ptr %66, align 8, !tbaa !9
  %977 = fmul double %975, %976
  %978 = load double, ptr %68, align 8, !tbaa !9
  %979 = fmul double %977, %978
  %980 = load double, ptr %82, align 8, !tbaa !9
  %981 = call double @cos(double noundef %980) #5
  %982 = fmul double %979, %981
  %983 = fneg double %982
  %984 = call double @llvm.fmuladd.f64(double %956, double %961, double %983)
  %985 = fmul double %953, %984
  %986 = call double @llvm.fmuladd.f64(double %866, double %897, double %985)
  %987 = fmul double %820, %986
  %988 = fneg double %987
  %989 = call double @llvm.fmuladd.f64(double %652, double %815, double %988)
  store double %989, ptr %72, align 8, !tbaa !9
  br label %991

990:                                              ; preds = %509
  store double 0.000000e+00, ptr %72, align 8, !tbaa !9
  br label %991

991:                                              ; preds = %990, %647
  %992 = load double, ptr %65, align 8, !tbaa !9
  %993 = fcmp une double %992, 0.000000e+00
  br i1 %993, label %994, label %1336

994:                                              ; preds = %991
  %995 = load double, ptr %71, align 8, !tbaa !9
  %996 = load double, ptr %20, align 8, !tbaa !9
  %997 = fmul double %995, %996
  %998 = load double, ptr %33, align 8, !tbaa !9
  %999 = fdiv double %997, %998
  %1000 = load double, ptr %67, align 8, !tbaa !9
  %1001 = load double, ptr %69, align 8, !tbaa !9
  %1002 = fmul double %1000, %1001
  %1003 = fmul double %1002, 0x400921FB54442D18
  %1004 = load double, ptr %70, align 8, !tbaa !9
  %1005 = fdiv double %1003, %1004
  %1006 = load i32, ptr %78, align 4, !tbaa !13
  %1007 = sitofp i32 %1006 to double
  %1008 = getelementptr inbounds %class.spatial_region, ptr %86, i32 0, i32 3
  %1009 = load double, ptr %1008, align 8, !tbaa !15
  %1010 = load double, ptr %24, align 8, !tbaa !9
  %1011 = fneg double %1010
  %1012 = call double @llvm.fmuladd.f64(double %1007, double %1009, double %1011)
  %1013 = load double, ptr %34, align 8, !tbaa !9
  %1014 = fsub double %1012, %1013
  %1015 = load double, ptr %52, align 8, !tbaa !9
  %1016 = load i32, ptr %80, align 4, !tbaa !13
  %1017 = sitofp i32 %1016 to double
  %1018 = getelementptr inbounds %class.spatial_region, ptr %86, i32 0, i32 4
  %1019 = load double, ptr %1018, align 8, !tbaa !132
  %1020 = load double, ptr %44, align 8, !tbaa !9
  %1021 = fneg double %1020
  %1022 = call double @llvm.fmuladd.f64(double %1017, double %1019, double %1021)
  %1023 = load double, ptr %28, align 8, !tbaa !9
  %1024 = fsub double %1022, %1023
  %1025 = load double, ptr %35, align 8, !tbaa !9
  %1026 = fsub double %1024, %1025
  %1027 = load double, ptr %53, align 8, !tbaa !9
  %1028 = fmul double %1026, %1027
  %1029 = call double @llvm.fmuladd.f64(double %1014, double %1015, double %1028)
  %1030 = load i32, ptr %81, align 4, !tbaa !13
  %1031 = sitofp i32 %1030 to double
  %1032 = getelementptr inbounds %class.spatial_region, ptr %86, i32 0, i32 5
  %1033 = load double, ptr %1032, align 8, !tbaa !134
  %1034 = load double, ptr %45, align 8, !tbaa !9
  %1035 = fneg double %1034
  %1036 = call double @llvm.fmuladd.f64(double %1031, double %1033, double %1035)
  %1037 = load double, ptr %29, align 8, !tbaa !9
  %1038 = fsub double %1036, %1037
  %1039 = load double, ptr %36, align 8, !tbaa !9
  %1040 = fsub double %1038, %1039
  %1041 = load double, ptr %54, align 8, !tbaa !9
  %1042 = call double @llvm.fmuladd.f64(double %1040, double %1041, double %1029)
  %1043 = fmul double %1005, %1042
  %1044 = load double, ptr %65, align 8, !tbaa !9
  %1045 = fdiv double %1043, %1044
  %1046 = load double, ptr %33, align 8, !tbaa !9
  %1047 = load double, ptr %82, align 8, !tbaa !9
  %1048 = call double @sin(double noundef %1047) #5
  %1049 = fmul double %1046, %1048
  %1050 = load double, ptr %66, align 8, !tbaa !9
  %1051 = fmul double %1049, %1050
  %1052 = load double, ptr %66, align 8, !tbaa !9
  %1053 = load double, ptr %63, align 8, !tbaa !9
  %1054 = fmul double 0x402921FB54442D18, %1053
  %1055 = load double, ptr %63, align 8, !tbaa !9
  %1056 = fmul double %1054, %1055
  %1057 = load double, ptr %63, align 8, !tbaa !9
  %1058 = fmul double %1056, %1057
  %1059 = load double, ptr %41, align 8, !tbaa !9
  %1060 = load double, ptr %41, align 8, !tbaa !9
  %1061 = fmul double %1059, %1060
  %1062 = load double, ptr %41, align 8, !tbaa !9
  %1063 = fmul double %1061, %1062
  %1064 = load double, ptr %41, align 8, !tbaa !9
  %1065 = fmul double %1063, %1064
  %1066 = fdiv double %1058, %1065
  %1067 = load double, ptr %82, align 8, !tbaa !9
  %1068 = call double @cos(double noundef %1067) #5
  %1069 = fmul double %1066, %1068
  %1070 = load double, ptr %66, align 8, !tbaa !9
  %1071 = fmul double %1069, %1070
  %1072 = load double, ptr %68, align 8, !tbaa !9
  %1073 = fmul double %1071, %1072
  %1074 = call double @llvm.fmuladd.f64(double %1051, double %1052, double %1073)
  %1075 = load i32, ptr %78, align 4, !tbaa !13
  %1076 = sitofp i32 %1075 to double
  %1077 = getelementptr inbounds %class.spatial_region, ptr %86, i32 0, i32 3
  %1078 = load double, ptr %1077, align 8, !tbaa !15
  %1079 = load double, ptr %24, align 8, !tbaa !9
  %1080 = fneg double %1079
  %1081 = call double @llvm.fmuladd.f64(double %1076, double %1078, double %1080)
  %1082 = load double, ptr %34, align 8, !tbaa !9
  %1083 = fsub double %1081, %1082
  %1084 = load double, ptr %52, align 8, !tbaa !9
  %1085 = load i32, ptr %80, align 4, !tbaa !13
  %1086 = sitofp i32 %1085 to double
  %1087 = getelementptr inbounds %class.spatial_region, ptr %86, i32 0, i32 4
  %1088 = load double, ptr %1087, align 8, !tbaa !132
  %1089 = load double, ptr %44, align 8, !tbaa !9
  %1090 = fneg double %1089
  %1091 = call double @llvm.fmuladd.f64(double %1086, double %1088, double %1090)
  %1092 = load double, ptr %28, align 8, !tbaa !9
  %1093 = fsub double %1091, %1092
  %1094 = load double, ptr %35, align 8, !tbaa !9
  %1095 = fsub double %1093, %1094
  %1096 = load double, ptr %53, align 8, !tbaa !9
  %1097 = fmul double %1095, %1096
  %1098 = call double @llvm.fmuladd.f64(double %1083, double %1084, double %1097)
  %1099 = load i32, ptr %81, align 4, !tbaa !13
  %1100 = sitofp i32 %1099 to double
  %1101 = getelementptr inbounds %class.spatial_region, ptr %86, i32 0, i32 5
  %1102 = load double, ptr %1101, align 8, !tbaa !134
  %1103 = load double, ptr %45, align 8, !tbaa !9
  %1104 = fneg double %1103
  %1105 = call double @llvm.fmuladd.f64(double %1100, double %1102, double %1104)
  %1106 = load double, ptr %29, align 8, !tbaa !9
  %1107 = fsub double %1105, %1106
  %1108 = load double, ptr %36, align 8, !tbaa !9
  %1109 = fsub double %1107, %1108
  %1110 = load double, ptr %54, align 8, !tbaa !9
  %1111 = call double @llvm.fmuladd.f64(double %1109, double %1110, double %1098)
  %1112 = load double, ptr %64, align 8, !tbaa !9
  %1113 = load double, ptr %25, align 8, !tbaa !9
  %1114 = fsub double %1112, %1113
  %1115 = fmul double %1111, %1114
  %1116 = load double, ptr %64, align 8, !tbaa !9
  %1117 = load double, ptr %25, align 8, !tbaa !9
  %1118 = fsub double %1116, %1117
  %1119 = load double, ptr %64, align 8, !tbaa !9
  %1120 = load double, ptr %25, align 8, !tbaa !9
  %1121 = fsub double %1119, %1120
  %1122 = load double, ptr %38, align 8, !tbaa !9
  %1123 = load double, ptr %38, align 8, !tbaa !9
  %1124 = fmul double %1122, %1123
  %1125 = call double @llvm.fmuladd.f64(double %1118, double %1121, double %1124)
  %1126 = fdiv double %1115, %1125
  %1127 = load double, ptr %67, align 8, !tbaa !9
  %1128 = fmul double %1126, %1127
  %1129 = load double, ptr %67, align 8, !tbaa !9
  %1130 = fmul double %1128, %1129
  %1131 = load double, ptr %66, align 8, !tbaa !9
  %1132 = load double, ptr %66, align 8, !tbaa !9
  %1133 = fmul double %1131, %1132
  %1134 = load double, ptr %33, align 8, !tbaa !9
  %1135 = fneg double %1134
  %1136 = load double, ptr %82, align 8, !tbaa !9
  %1137 = call double @cos(double noundef %1136) #5
  %1138 = fmul double %1135, %1137
  %1139 = load double, ptr %63, align 8, !tbaa !9
  %1140 = fmul double 0x402921FB54442D18, %1139
  %1141 = load double, ptr %63, align 8, !tbaa !9
  %1142 = fmul double %1140, %1141
  %1143 = load double, ptr %63, align 8, !tbaa !9
  %1144 = fmul double %1142, %1143
  %1145 = load double, ptr %41, align 8, !tbaa !9
  %1146 = load double, ptr %41, align 8, !tbaa !9
  %1147 = fmul double %1145, %1146
  %1148 = load double, ptr %41, align 8, !tbaa !9
  %1149 = fmul double %1147, %1148
  %1150 = load double, ptr %41, align 8, !tbaa !9
  %1151 = fmul double %1149, %1150
  %1152 = fdiv double %1144, %1151
  %1153 = load double, ptr %66, align 8, !tbaa !9
  %1154 = fmul double %1152, %1153
  %1155 = load double, ptr %68, align 8, !tbaa !9
  %1156 = fmul double %1154, %1155
  %1157 = load double, ptr %82, align 8, !tbaa !9
  %1158 = call double @sin(double noundef %1157) #5
  %1159 = fmul double %1156, %1158
  %1160 = call double @llvm.fmuladd.f64(double %1133, double %1138, double %1159)
  %1161 = fmul double %1130, %1160
  %1162 = call double @llvm.fmuladd.f64(double %1045, double %1074, double %1161)
  %1163 = load double, ptr %71, align 8, !tbaa !9
  %1164 = load double, ptr %21, align 8, !tbaa !9
  %1165 = fmul double %1163, %1164
  %1166 = load double, ptr %33, align 8, !tbaa !9
  %1167 = fdiv double %1165, %1166
  %1168 = load double, ptr %67, align 8, !tbaa !9
  %1169 = load double, ptr %69, align 8, !tbaa !9
  %1170 = fmul double %1168, %1169
  %1171 = fmul double %1170, 0x400921FB54442D18
  %1172 = load double, ptr %70, align 8, !tbaa !9
  %1173 = fdiv double %1171, %1172
  %1174 = load i32, ptr %78, align 4, !tbaa !13
  %1175 = sitofp i32 %1174 to double
  %1176 = getelementptr inbounds %class.spatial_region, ptr %86, i32 0, i32 3
  %1177 = load double, ptr %1176, align 8, !tbaa !15
  %1178 = load double, ptr %24, align 8, !tbaa !9
  %1179 = fneg double %1178
  %1180 = call double @llvm.fmuladd.f64(double %1175, double %1177, double %1179)
  %1181 = load double, ptr %34, align 8, !tbaa !9
  %1182 = fsub double %1180, %1181
  %1183 = load double, ptr %49, align 8, !tbaa !9
  %1184 = load i32, ptr %80, align 4, !tbaa !13
  %1185 = sitofp i32 %1184 to double
  %1186 = getelementptr inbounds %class.spatial_region, ptr %86, i32 0, i32 4
  %1187 = load double, ptr %1186, align 8, !tbaa !132
  %1188 = load double, ptr %44, align 8, !tbaa !9
  %1189 = fneg double %1188
  %1190 = call double @llvm.fmuladd.f64(double %1185, double %1187, double %1189)
  %1191 = load double, ptr %28, align 8, !tbaa !9
  %1192 = fsub double %1190, %1191
  %1193 = load double, ptr %35, align 8, !tbaa !9
  %1194 = fsub double %1192, %1193
  %1195 = load double, ptr %50, align 8, !tbaa !9
  %1196 = fmul double %1194, %1195
  %1197 = call double @llvm.fmuladd.f64(double %1182, double %1183, double %1196)
  %1198 = load i32, ptr %81, align 4, !tbaa !13
  %1199 = sitofp i32 %1198 to double
  %1200 = getelementptr inbounds %class.spatial_region, ptr %86, i32 0, i32 5
  %1201 = load double, ptr %1200, align 8, !tbaa !134
  %1202 = load double, ptr %45, align 8, !tbaa !9
  %1203 = fneg double %1202
  %1204 = call double @llvm.fmuladd.f64(double %1199, double %1201, double %1203)
  %1205 = load double, ptr %29, align 8, !tbaa !9
  %1206 = fsub double %1204, %1205
  %1207 = load double, ptr %36, align 8, !tbaa !9
  %1208 = fsub double %1206, %1207
  %1209 = load double, ptr %51, align 8, !tbaa !9
  %1210 = call double @llvm.fmuladd.f64(double %1208, double %1209, double %1197)
  %1211 = fmul double %1173, %1210
  %1212 = load double, ptr %65, align 8, !tbaa !9
  %1213 = fdiv double %1211, %1212
  %1214 = load double, ptr %33, align 8, !tbaa !9
  %1215 = fneg double %1214
  %1216 = load double, ptr %82, align 8, !tbaa !9
  %1217 = call double @cos(double noundef %1216) #5
  %1218 = fmul double %1215, %1217
  %1219 = load double, ptr %66, align 8, !tbaa !9
  %1220 = fmul double %1218, %1219
  %1221 = load double, ptr %66, align 8, !tbaa !9
  %1222 = load double, ptr %63, align 8, !tbaa !9
  %1223 = fmul double 0x402921FB54442D18, %1222
  %1224 = load double, ptr %63, align 8, !tbaa !9
  %1225 = fmul double %1223, %1224
  %1226 = load double, ptr %63, align 8, !tbaa !9
  %1227 = fmul double %1225, %1226
  %1228 = load double, ptr %41, align 8, !tbaa !9
  %1229 = load double, ptr %41, align 8, !tbaa !9
  %1230 = fmul double %1228, %1229
  %1231 = load double, ptr %41, align 8, !tbaa !9
  %1232 = fmul double %1230, %1231
  %1233 = load double, ptr %41, align 8, !tbaa !9
  %1234 = fmul double %1232, %1233
  %1235 = fdiv double %1227, %1234
  %1236 = load double, ptr %82, align 8, !tbaa !9
  %1237 = call double @sin(double noundef %1236) #5
  %1238 = fmul double %1235, %1237
  %1239 = load double, ptr %66, align 8, !tbaa !9
  %1240 = fmul double %1238, %1239
  %1241 = load double, ptr %68, align 8, !tbaa !9
  %1242 = fmul double %1240, %1241
  %1243 = fneg double %1242
  %1244 = call double @llvm.fmuladd.f64(double %1220, double %1221, double %1243)
  %1245 = load i32, ptr %78, align 4, !tbaa !13
  %1246 = sitofp i32 %1245 to double
  %1247 = getelementptr inbounds %class.spatial_region, ptr %86, i32 0, i32 3
  %1248 = load double, ptr %1247, align 8, !tbaa !15
  %1249 = load double, ptr %24, align 8, !tbaa !9
  %1250 = fneg double %1249
  %1251 = call double @llvm.fmuladd.f64(double %1246, double %1248, double %1250)
  %1252 = load double, ptr %34, align 8, !tbaa !9
  %1253 = fsub double %1251, %1252
  %1254 = load double, ptr %49, align 8, !tbaa !9
  %1255 = load i32, ptr %80, align 4, !tbaa !13
  %1256 = sitofp i32 %1255 to double
  %1257 = getelementptr inbounds %class.spatial_region, ptr %86, i32 0, i32 4
  %1258 = load double, ptr %1257, align 8, !tbaa !132
  %1259 = load double, ptr %44, align 8, !tbaa !9
  %1260 = fneg double %1259
  %1261 = call double @llvm.fmuladd.f64(double %1256, double %1258, double %1260)
  %1262 = load double, ptr %28, align 8, !tbaa !9
  %1263 = fsub double %1261, %1262
  %1264 = load double, ptr %35, align 8, !tbaa !9
  %1265 = fsub double %1263, %1264
  %1266 = load double, ptr %50, align 8, !tbaa !9
  %1267 = fmul double %1265, %1266
  %1268 = call double @llvm.fmuladd.f64(double %1253, double %1254, double %1267)
  %1269 = load i32, ptr %81, align 4, !tbaa !13
  %1270 = sitofp i32 %1269 to double
  %1271 = getelementptr inbounds %class.spatial_region, ptr %86, i32 0, i32 5
  %1272 = load double, ptr %1271, align 8, !tbaa !134
  %1273 = load double, ptr %45, align 8, !tbaa !9
  %1274 = fneg double %1273
  %1275 = call double @llvm.fmuladd.f64(double %1270, double %1272, double %1274)
  %1276 = load double, ptr %29, align 8, !tbaa !9
  %1277 = fsub double %1275, %1276
  %1278 = load double, ptr %36, align 8, !tbaa !9
  %1279 = fsub double %1277, %1278
  %1280 = load double, ptr %51, align 8, !tbaa !9
  %1281 = call double @llvm.fmuladd.f64(double %1279, double %1280, double %1268)
  %1282 = load double, ptr %64, align 8, !tbaa !9
  %1283 = load double, ptr %25, align 8, !tbaa !9
  %1284 = fsub double %1282, %1283
  %1285 = fmul double %1281, %1284
  %1286 = load double, ptr %64, align 8, !tbaa !9
  %1287 = load double, ptr %25, align 8, !tbaa !9
  %1288 = fsub double %1286, %1287
  %1289 = load double, ptr %64, align 8, !tbaa !9
  %1290 = load double, ptr %25, align 8, !tbaa !9
  %1291 = fsub double %1289, %1290
  %1292 = load double, ptr %38, align 8, !tbaa !9
  %1293 = load double, ptr %38, align 8, !tbaa !9
  %1294 = fmul double %1292, %1293
  %1295 = call double @llvm.fmuladd.f64(double %1288, double %1291, double %1294)
  %1296 = fdiv double %1285, %1295
  %1297 = load double, ptr %67, align 8, !tbaa !9
  %1298 = fmul double %1296, %1297
  %1299 = load double, ptr %67, align 8, !tbaa !9
  %1300 = fmul double %1298, %1299
  %1301 = load double, ptr %66, align 8, !tbaa !9
  %1302 = load double, ptr %66, align 8, !tbaa !9
  %1303 = fmul double %1301, %1302
  %1304 = load double, ptr %33, align 8, !tbaa !9
  %1305 = fneg double %1304
  %1306 = load double, ptr %82, align 8, !tbaa !9
  %1307 = call double @sin(double noundef %1306) #5
  %1308 = fmul double %1305, %1307
  %1309 = load double, ptr %63, align 8, !tbaa !9
  %1310 = fmul double 0x402921FB54442D18, %1309
  %1311 = load double, ptr %63, align 8, !tbaa !9
  %1312 = fmul double %1310, %1311
  %1313 = load double, ptr %63, align 8, !tbaa !9
  %1314 = fmul double %1312, %1313
  %1315 = load double, ptr %41, align 8, !tbaa !9
  %1316 = load double, ptr %41, align 8, !tbaa !9
  %1317 = fmul double %1315, %1316
  %1318 = load double, ptr %41, align 8, !tbaa !9
  %1319 = fmul double %1317, %1318
  %1320 = load double, ptr %41, align 8, !tbaa !9
  %1321 = fmul double %1319, %1320
  %1322 = fdiv double %1314, %1321
  %1323 = load double, ptr %66, align 8, !tbaa !9
  %1324 = fmul double %1322, %1323
  %1325 = load double, ptr %68, align 8, !tbaa !9
  %1326 = fmul double %1324, %1325
  %1327 = load double, ptr %82, align 8, !tbaa !9
  %1328 = call double @cos(double noundef %1327) #5
  %1329 = fmul double %1326, %1328
  %1330 = fneg double %1329
  %1331 = call double @llvm.fmuladd.f64(double %1303, double %1308, double %1330)
  %1332 = fmul double %1300, %1331
  %1333 = call double @llvm.fmuladd.f64(double %1213, double %1244, double %1332)
  %1334 = fmul double %1167, %1333
  %1335 = call double @llvm.fmuladd.f64(double %999, double %1162, double %1334)
  store double %1335, ptr %75, align 8, !tbaa !9
  br label %1337

1336:                                             ; preds = %991
  store double 0.000000e+00, ptr %75, align 8, !tbaa !9
  br label %1337

1337:                                             ; preds = %1336, %994
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #5
  br label %2047

1338:                                             ; preds = %506
  %1339 = load double, ptr %43, align 8, !tbaa !9
  %1340 = fmul double -2.000000e+00, %1339
  %1341 = load double, ptr %25, align 8, !tbaa !9
  %1342 = load double, ptr %64, align 8, !tbaa !9
  %1343 = fsub double %1341, %1342
  %1344 = fmul double %1340, %1343
  %1345 = load double, ptr %38, align 8, !tbaa !9
  %1346 = fdiv double %1344, %1345
  %1347 = load double, ptr %65, align 8, !tbaa !9
  %1348 = fcmp ole double %1346, %1347
  br i1 %1348, label %1349, label %2045

1349:                                             ; preds = %1338
  %1350 = load double, ptr %65, align 8, !tbaa !9
  %1351 = load double, ptr %43, align 8, !tbaa !9
  %1352 = fmul double 2.000000e+00, %1351
  %1353 = load double, ptr %25, align 8, !tbaa !9
  %1354 = load double, ptr %64, align 8, !tbaa !9
  %1355 = fsub double %1353, %1354
  %1356 = fmul double %1352, %1355
  %1357 = load double, ptr %38, align 8, !tbaa !9
  %1358 = fdiv double %1356, %1357
  %1359 = fcmp ole double %1350, %1358
  br i1 %1359, label %1360, label %2045

1360:                                             ; preds = %1349
  %1361 = load double, ptr %63, align 8, !tbaa !9
  %1362 = fmul double 0x400921FB54442D18, %1361
  %1363 = fdiv double %1362, 2.000000e+00
  %1364 = load double, ptr %41, align 8, !tbaa !9
  %1365 = fdiv double %1363, %1364
  %1366 = call double @cos(double noundef %1365) #5
  store double %1366, ptr %66, align 8, !tbaa !9
  %1367 = load double, ptr %65, align 8, !tbaa !9
  %1368 = fmul double 0x400921FB54442D18, %1367
  %1369 = fdiv double %1368, 2.000000e+00
  %1370 = load double, ptr %70, align 8, !tbaa !9
  %1371 = fdiv double %1369, %1370
  %1372 = call double @cos(double noundef %1371) #5
  store double %1372, ptr %67, align 8, !tbaa !9
  %1373 = load double, ptr %63, align 8, !tbaa !9
  %1374 = fmul double 0x400921FB54442D18, %1373
  %1375 = fdiv double %1374, 2.000000e+00
  %1376 = load double, ptr %41, align 8, !tbaa !9
  %1377 = fdiv double %1375, %1376
  %1378 = call double @sin(double noundef %1377) #5
  store double %1378, ptr %68, align 8, !tbaa !9
  %1379 = load double, ptr %65, align 8, !tbaa !9
  %1380 = fmul double 0x400921FB54442D18, %1379
  %1381 = fdiv double %1380, 2.000000e+00
  %1382 = load double, ptr %70, align 8, !tbaa !9
  %1383 = fdiv double %1381, %1382
  %1384 = call double @sin(double noundef %1383) #5
  store double %1384, ptr %69, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %83) #5
  %1385 = load double, ptr %33, align 8, !tbaa !9
  %1386 = load double, ptr %63, align 8, !tbaa !9
  %1387 = load double, ptr %27, align 8, !tbaa !9
  %1388 = call double @llvm.fmuladd.f64(double %1385, double %1386, double %1387)
  store double %1388, ptr %83, align 8, !tbaa !9
  %1389 = load double, ptr %71, align 8, !tbaa !9
  %1390 = load double, ptr %20, align 8, !tbaa !9
  %1391 = fmul double %1389, %1390
  %1392 = load double, ptr %67, align 8, !tbaa !9
  %1393 = fmul double %1391, %1392
  %1394 = load double, ptr %67, align 8, !tbaa !9
  %1395 = fmul double %1393, %1394
  %1396 = load double, ptr %33, align 8, !tbaa !9
  %1397 = fdiv double %1395, %1396
  %1398 = load double, ptr %33, align 8, !tbaa !9
  %1399 = load double, ptr %83, align 8, !tbaa !9
  %1400 = call double @cos(double noundef %1399) #5
  %1401 = fmul double %1398, %1400
  %1402 = load double, ptr %66, align 8, !tbaa !9
  %1403 = fmul double %1401, %1402
  %1404 = load double, ptr %66, align 8, !tbaa !9
  %1405 = load double, ptr %41, align 8, !tbaa !9
  %1406 = fdiv double 0x400921FB54442D18, %1405
  %1407 = load double, ptr %83, align 8, !tbaa !9
  %1408 = call double @sin(double noundef %1407) #5
  %1409 = fmul double %1406, %1408
  %1410 = load double, ptr %66, align 8, !tbaa !9
  %1411 = fmul double %1409, %1410
  %1412 = load double, ptr %68, align 8, !tbaa !9
  %1413 = fmul double %1411, %1412
  %1414 = fneg double %1413
  %1415 = call double @llvm.fmuladd.f64(double %1403, double %1404, double %1414)
  %1416 = fmul double %1397, %1415
  store double %1416, ptr %73, align 8, !tbaa !9
  %1417 = load double, ptr %71, align 8, !tbaa !9
  %1418 = fneg double %1417
  %1419 = load double, ptr %21, align 8, !tbaa !9
  %1420 = fmul double %1418, %1419
  %1421 = load double, ptr %67, align 8, !tbaa !9
  %1422 = fmul double %1420, %1421
  %1423 = load double, ptr %67, align 8, !tbaa !9
  %1424 = fmul double %1422, %1423
  %1425 = load double, ptr %33, align 8, !tbaa !9
  %1426 = fdiv double %1424, %1425
  %1427 = load double, ptr %33, align 8, !tbaa !9
  %1428 = load double, ptr %83, align 8, !tbaa !9
  %1429 = call double @sin(double noundef %1428) #5
  %1430 = fmul double %1427, %1429
  %1431 = load double, ptr %66, align 8, !tbaa !9
  %1432 = fmul double %1430, %1431
  %1433 = load double, ptr %66, align 8, !tbaa !9
  %1434 = load double, ptr %41, align 8, !tbaa !9
  %1435 = fdiv double 0x400921FB54442D18, %1434
  %1436 = load double, ptr %83, align 8, !tbaa !9
  %1437 = call double @cos(double noundef %1436) #5
  %1438 = fmul double %1435, %1437
  %1439 = load double, ptr %66, align 8, !tbaa !9
  %1440 = fmul double %1438, %1439
  %1441 = load double, ptr %68, align 8, !tbaa !9
  %1442 = fmul double %1440, %1441
  %1443 = call double @llvm.fmuladd.f64(double %1432, double %1433, double %1442)
  %1444 = fmul double %1426, %1443
  store double %1444, ptr %74, align 8, !tbaa !9
  %1445 = load double, ptr %73, align 8, !tbaa !9
  store double %1445, ptr %77, align 8, !tbaa !9
  %1446 = load double, ptr %74, align 8, !tbaa !9
  %1447 = fneg double %1446
  store double %1447, ptr %76, align 8, !tbaa !9
  %1448 = load double, ptr %65, align 8, !tbaa !9
  %1449 = fcmp une double %1448, 0.000000e+00
  br i1 %1449, label %1450, label %1745

1450:                                             ; preds = %1360
  %1451 = load double, ptr %71, align 8, !tbaa !9
  %1452 = load double, ptr %20, align 8, !tbaa !9
  %1453 = fmul double %1451, %1452
  %1454 = load double, ptr %33, align 8, !tbaa !9
  %1455 = fdiv double %1453, %1454
  %1456 = load double, ptr %67, align 8, !tbaa !9
  %1457 = load double, ptr %69, align 8, !tbaa !9
  %1458 = fmul double %1456, %1457
  %1459 = fmul double %1458, 0x400921FB54442D18
  %1460 = load double, ptr %70, align 8, !tbaa !9
  %1461 = fdiv double %1459, %1460
  %1462 = load i32, ptr %78, align 4, !tbaa !13
  %1463 = sitofp i32 %1462 to double
  %1464 = getelementptr inbounds %class.spatial_region, ptr %86, i32 0, i32 3
  %1465 = load double, ptr %1464, align 8, !tbaa !15
  %1466 = load double, ptr %24, align 8, !tbaa !9
  %1467 = fneg double %1466
  %1468 = call double @llvm.fmuladd.f64(double %1463, double %1465, double %1467)
  %1469 = load double, ptr %34, align 8, !tbaa !9
  %1470 = fsub double %1468, %1469
  %1471 = load double, ptr %49, align 8, !tbaa !9
  %1472 = load i32, ptr %80, align 4, !tbaa !13
  %1473 = sitofp i32 %1472 to double
  %1474 = getelementptr inbounds %class.spatial_region, ptr %86, i32 0, i32 4
  %1475 = load double, ptr %1474, align 8, !tbaa !132
  %1476 = load double, ptr %44, align 8, !tbaa !9
  %1477 = fneg double %1476
  %1478 = call double @llvm.fmuladd.f64(double %1473, double %1475, double %1477)
  %1479 = load double, ptr %28, align 8, !tbaa !9
  %1480 = fsub double %1478, %1479
  %1481 = load double, ptr %35, align 8, !tbaa !9
  %1482 = fsub double %1480, %1481
  %1483 = load double, ptr %50, align 8, !tbaa !9
  %1484 = fmul double %1482, %1483
  %1485 = call double @llvm.fmuladd.f64(double %1470, double %1471, double %1484)
  %1486 = load i32, ptr %81, align 4, !tbaa !13
  %1487 = sitofp i32 %1486 to double
  %1488 = getelementptr inbounds %class.spatial_region, ptr %86, i32 0, i32 5
  %1489 = load double, ptr %1488, align 8, !tbaa !134
  %1490 = load double, ptr %45, align 8, !tbaa !9
  %1491 = fneg double %1490
  %1492 = call double @llvm.fmuladd.f64(double %1487, double %1489, double %1491)
  %1493 = load double, ptr %29, align 8, !tbaa !9
  %1494 = fsub double %1492, %1493
  %1495 = load double, ptr %36, align 8, !tbaa !9
  %1496 = fsub double %1494, %1495
  %1497 = load double, ptr %51, align 8, !tbaa !9
  %1498 = call double @llvm.fmuladd.f64(double %1496, double %1497, double %1485)
  %1499 = fmul double %1461, %1498
  %1500 = load double, ptr %65, align 8, !tbaa !9
  %1501 = fdiv double %1499, %1500
  %1502 = load double, ptr %33, align 8, !tbaa !9
  %1503 = load double, ptr %83, align 8, !tbaa !9
  %1504 = call double @sin(double noundef %1503) #5
  %1505 = fmul double %1502, %1504
  %1506 = load double, ptr %66, align 8, !tbaa !9
  %1507 = fmul double %1505, %1506
  %1508 = load double, ptr %66, align 8, !tbaa !9
  %1509 = load double, ptr %41, align 8, !tbaa !9
  %1510 = fdiv double 0x400921FB54442D18, %1509
  %1511 = load double, ptr %83, align 8, !tbaa !9
  %1512 = call double @cos(double noundef %1511) #5
  %1513 = fmul double %1510, %1512
  %1514 = load double, ptr %66, align 8, !tbaa !9
  %1515 = fmul double %1513, %1514
  %1516 = load double, ptr %68, align 8, !tbaa !9
  %1517 = fmul double %1515, %1516
  %1518 = call double @llvm.fmuladd.f64(double %1507, double %1508, double %1517)
  %1519 = load i32, ptr %78, align 4, !tbaa !13
  %1520 = sitofp i32 %1519 to double
  %1521 = getelementptr inbounds %class.spatial_region, ptr %86, i32 0, i32 3
  %1522 = load double, ptr %1521, align 8, !tbaa !15
  %1523 = load double, ptr %24, align 8, !tbaa !9
  %1524 = fneg double %1523
  %1525 = call double @llvm.fmuladd.f64(double %1520, double %1522, double %1524)
  %1526 = load double, ptr %34, align 8, !tbaa !9
  %1527 = fsub double %1525, %1526
  %1528 = load double, ptr %49, align 8, !tbaa !9
  %1529 = load i32, ptr %80, align 4, !tbaa !13
  %1530 = sitofp i32 %1529 to double
  %1531 = getelementptr inbounds %class.spatial_region, ptr %86, i32 0, i32 4
  %1532 = load double, ptr %1531, align 8, !tbaa !132
  %1533 = load double, ptr %44, align 8, !tbaa !9
  %1534 = fneg double %1533
  %1535 = call double @llvm.fmuladd.f64(double %1530, double %1532, double %1534)
  %1536 = load double, ptr %28, align 8, !tbaa !9
  %1537 = fsub double %1535, %1536
  %1538 = load double, ptr %35, align 8, !tbaa !9
  %1539 = fsub double %1537, %1538
  %1540 = load double, ptr %50, align 8, !tbaa !9
  %1541 = fmul double %1539, %1540
  %1542 = call double @llvm.fmuladd.f64(double %1527, double %1528, double %1541)
  %1543 = load i32, ptr %81, align 4, !tbaa !13
  %1544 = sitofp i32 %1543 to double
  %1545 = getelementptr inbounds %class.spatial_region, ptr %86, i32 0, i32 5
  %1546 = load double, ptr %1545, align 8, !tbaa !134
  %1547 = load double, ptr %45, align 8, !tbaa !9
  %1548 = fneg double %1547
  %1549 = call double @llvm.fmuladd.f64(double %1544, double %1546, double %1548)
  %1550 = load double, ptr %29, align 8, !tbaa !9
  %1551 = fsub double %1549, %1550
  %1552 = load double, ptr %36, align 8, !tbaa !9
  %1553 = fsub double %1551, %1552
  %1554 = load double, ptr %51, align 8, !tbaa !9
  %1555 = call double @llvm.fmuladd.f64(double %1553, double %1554, double %1542)
  %1556 = load double, ptr %64, align 8, !tbaa !9
  %1557 = load double, ptr %25, align 8, !tbaa !9
  %1558 = fsub double %1556, %1557
  %1559 = fmul double %1555, %1558
  %1560 = load double, ptr %64, align 8, !tbaa !9
  %1561 = load double, ptr %25, align 8, !tbaa !9
  %1562 = fsub double %1560, %1561
  %1563 = load double, ptr %64, align 8, !tbaa !9
  %1564 = load double, ptr %25, align 8, !tbaa !9
  %1565 = fsub double %1563, %1564
  %1566 = load double, ptr %38, align 8, !tbaa !9
  %1567 = load double, ptr %38, align 8, !tbaa !9
  %1568 = fmul double %1566, %1567
  %1569 = call double @llvm.fmuladd.f64(double %1562, double %1565, double %1568)
  %1570 = fdiv double %1559, %1569
  %1571 = load double, ptr %67, align 8, !tbaa !9
  %1572 = fmul double %1570, %1571
  %1573 = load double, ptr %67, align 8, !tbaa !9
  %1574 = fmul double %1572, %1573
  %1575 = load double, ptr %66, align 8, !tbaa !9
  %1576 = load double, ptr %66, align 8, !tbaa !9
  %1577 = fmul double %1575, %1576
  %1578 = load double, ptr %33, align 8, !tbaa !9
  %1579 = fneg double %1578
  %1580 = load double, ptr %83, align 8, !tbaa !9
  %1581 = call double @cos(double noundef %1580) #5
  %1582 = fmul double %1579, %1581
  %1583 = load double, ptr %41, align 8, !tbaa !9
  %1584 = fdiv double 0x400921FB54442D18, %1583
  %1585 = load double, ptr %66, align 8, !tbaa !9
  %1586 = fmul double %1584, %1585
  %1587 = load double, ptr %68, align 8, !tbaa !9
  %1588 = fmul double %1586, %1587
  %1589 = load double, ptr %83, align 8, !tbaa !9
  %1590 = call double @sin(double noundef %1589) #5
  %1591 = fmul double %1588, %1590
  %1592 = call double @llvm.fmuladd.f64(double %1577, double %1582, double %1591)
  %1593 = fmul double %1574, %1592
  %1594 = call double @llvm.fmuladd.f64(double %1501, double %1518, double %1593)
  %1595 = load double, ptr %71, align 8, !tbaa !9
  %1596 = load double, ptr %21, align 8, !tbaa !9
  %1597 = fmul double %1595, %1596
  %1598 = load double, ptr %33, align 8, !tbaa !9
  %1599 = fdiv double %1597, %1598
  %1600 = load double, ptr %67, align 8, !tbaa !9
  %1601 = load double, ptr %69, align 8, !tbaa !9
  %1602 = fmul double %1600, %1601
  %1603 = fmul double %1602, 0x400921FB54442D18
  %1604 = load double, ptr %70, align 8, !tbaa !9
  %1605 = fdiv double %1603, %1604
  %1606 = load i32, ptr %78, align 4, !tbaa !13
  %1607 = sitofp i32 %1606 to double
  %1608 = getelementptr inbounds %class.spatial_region, ptr %86, i32 0, i32 3
  %1609 = load double, ptr %1608, align 8, !tbaa !15
  %1610 = load double, ptr %24, align 8, !tbaa !9
  %1611 = fneg double %1610
  %1612 = call double @llvm.fmuladd.f64(double %1607, double %1609, double %1611)
  %1613 = load double, ptr %34, align 8, !tbaa !9
  %1614 = fsub double %1612, %1613
  %1615 = load double, ptr %52, align 8, !tbaa !9
  %1616 = load i32, ptr %80, align 4, !tbaa !13
  %1617 = sitofp i32 %1616 to double
  %1618 = getelementptr inbounds %class.spatial_region, ptr %86, i32 0, i32 4
  %1619 = load double, ptr %1618, align 8, !tbaa !132
  %1620 = load double, ptr %44, align 8, !tbaa !9
  %1621 = fneg double %1620
  %1622 = call double @llvm.fmuladd.f64(double %1617, double %1619, double %1621)
  %1623 = load double, ptr %28, align 8, !tbaa !9
  %1624 = fsub double %1622, %1623
  %1625 = load double, ptr %35, align 8, !tbaa !9
  %1626 = fsub double %1624, %1625
  %1627 = load double, ptr %53, align 8, !tbaa !9
  %1628 = fmul double %1626, %1627
  %1629 = call double @llvm.fmuladd.f64(double %1614, double %1615, double %1628)
  %1630 = load i32, ptr %81, align 4, !tbaa !13
  %1631 = sitofp i32 %1630 to double
  %1632 = getelementptr inbounds %class.spatial_region, ptr %86, i32 0, i32 5
  %1633 = load double, ptr %1632, align 8, !tbaa !134
  %1634 = load double, ptr %45, align 8, !tbaa !9
  %1635 = fneg double %1634
  %1636 = call double @llvm.fmuladd.f64(double %1631, double %1633, double %1635)
  %1637 = load double, ptr %29, align 8, !tbaa !9
  %1638 = fsub double %1636, %1637
  %1639 = load double, ptr %36, align 8, !tbaa !9
  %1640 = fsub double %1638, %1639
  %1641 = load double, ptr %54, align 8, !tbaa !9
  %1642 = call double @llvm.fmuladd.f64(double %1640, double %1641, double %1629)
  %1643 = fmul double %1605, %1642
  %1644 = load double, ptr %65, align 8, !tbaa !9
  %1645 = fdiv double %1643, %1644
  %1646 = load double, ptr %33, align 8, !tbaa !9
  %1647 = fneg double %1646
  %1648 = load double, ptr %83, align 8, !tbaa !9
  %1649 = call double @cos(double noundef %1648) #5
  %1650 = fmul double %1647, %1649
  %1651 = load double, ptr %66, align 8, !tbaa !9
  %1652 = fmul double %1650, %1651
  %1653 = load double, ptr %66, align 8, !tbaa !9
  %1654 = load double, ptr %41, align 8, !tbaa !9
  %1655 = fdiv double 0x400921FB54442D18, %1654
  %1656 = load double, ptr %83, align 8, !tbaa !9
  %1657 = call double @sin(double noundef %1656) #5
  %1658 = fmul double %1655, %1657
  %1659 = load double, ptr %66, align 8, !tbaa !9
  %1660 = fmul double %1658, %1659
  %1661 = load double, ptr %68, align 8, !tbaa !9
  %1662 = fmul double %1660, %1661
  %1663 = fneg double %1662
  %1664 = call double @llvm.fmuladd.f64(double %1652, double %1653, double %1663)
  %1665 = load i32, ptr %78, align 4, !tbaa !13
  %1666 = sitofp i32 %1665 to double
  %1667 = getelementptr inbounds %class.spatial_region, ptr %86, i32 0, i32 3
  %1668 = load double, ptr %1667, align 8, !tbaa !15
  %1669 = load double, ptr %24, align 8, !tbaa !9
  %1670 = fneg double %1669
  %1671 = call double @llvm.fmuladd.f64(double %1666, double %1668, double %1670)
  %1672 = load double, ptr %34, align 8, !tbaa !9
  %1673 = fsub double %1671, %1672
  %1674 = load double, ptr %52, align 8, !tbaa !9
  %1675 = load i32, ptr %80, align 4, !tbaa !13
  %1676 = sitofp i32 %1675 to double
  %1677 = getelementptr inbounds %class.spatial_region, ptr %86, i32 0, i32 4
  %1678 = load double, ptr %1677, align 8, !tbaa !132
  %1679 = load double, ptr %44, align 8, !tbaa !9
  %1680 = fneg double %1679
  %1681 = call double @llvm.fmuladd.f64(double %1676, double %1678, double %1680)
  %1682 = load double, ptr %28, align 8, !tbaa !9
  %1683 = fsub double %1681, %1682
  %1684 = load double, ptr %35, align 8, !tbaa !9
  %1685 = fsub double %1683, %1684
  %1686 = load double, ptr %53, align 8, !tbaa !9
  %1687 = fmul double %1685, %1686
  %1688 = call double @llvm.fmuladd.f64(double %1673, double %1674, double %1687)
  %1689 = load i32, ptr %81, align 4, !tbaa !13
  %1690 = sitofp i32 %1689 to double
  %1691 = getelementptr inbounds %class.spatial_region, ptr %86, i32 0, i32 5
  %1692 = load double, ptr %1691, align 8, !tbaa !134
  %1693 = load double, ptr %45, align 8, !tbaa !9
  %1694 = fneg double %1693
  %1695 = call double @llvm.fmuladd.f64(double %1690, double %1692, double %1694)
  %1696 = load double, ptr %29, align 8, !tbaa !9
  %1697 = fsub double %1695, %1696
  %1698 = load double, ptr %36, align 8, !tbaa !9
  %1699 = fsub double %1697, %1698
  %1700 = load double, ptr %54, align 8, !tbaa !9
  %1701 = call double @llvm.fmuladd.f64(double %1699, double %1700, double %1688)
  %1702 = load double, ptr %64, align 8, !tbaa !9
  %1703 = load double, ptr %25, align 8, !tbaa !9
  %1704 = fsub double %1702, %1703
  %1705 = fmul double %1701, %1704
  %1706 = load double, ptr %64, align 8, !tbaa !9
  %1707 = load double, ptr %25, align 8, !tbaa !9
  %1708 = fsub double %1706, %1707
  %1709 = load double, ptr %64, align 8, !tbaa !9
  %1710 = load double, ptr %25, align 8, !tbaa !9
  %1711 = fsub double %1709, %1710
  %1712 = load double, ptr %38, align 8, !tbaa !9
  %1713 = load double, ptr %38, align 8, !tbaa !9
  %1714 = fmul double %1712, %1713
  %1715 = call double @llvm.fmuladd.f64(double %1708, double %1711, double %1714)
  %1716 = fdiv double %1705, %1715
  %1717 = load double, ptr %67, align 8, !tbaa !9
  %1718 = fmul double %1716, %1717
  %1719 = load double, ptr %67, align 8, !tbaa !9
  %1720 = fmul double %1718, %1719
  %1721 = load double, ptr %66, align 8, !tbaa !9
  %1722 = load double, ptr %66, align 8, !tbaa !9
  %1723 = fmul double %1721, %1722
  %1724 = load double, ptr %33, align 8, !tbaa !9
  %1725 = fneg double %1724
  %1726 = load double, ptr %83, align 8, !tbaa !9
  %1727 = call double @sin(double noundef %1726) #5
  %1728 = fmul double %1725, %1727
  %1729 = load double, ptr %41, align 8, !tbaa !9
  %1730 = fdiv double 0x400921FB54442D18, %1729
  %1731 = load double, ptr %66, align 8, !tbaa !9
  %1732 = fmul double %1730, %1731
  %1733 = load double, ptr %68, align 8, !tbaa !9
  %1734 = fmul double %1732, %1733
  %1735 = load double, ptr %83, align 8, !tbaa !9
  %1736 = call double @cos(double noundef %1735) #5
  %1737 = fmul double %1734, %1736
  %1738 = fneg double %1737
  %1739 = call double @llvm.fmuladd.f64(double %1723, double %1728, double %1738)
  %1740 = fmul double %1720, %1739
  %1741 = call double @llvm.fmuladd.f64(double %1645, double %1664, double %1740)
  %1742 = fmul double %1599, %1741
  %1743 = fneg double %1742
  %1744 = call double @llvm.fmuladd.f64(double %1455, double %1594, double %1743)
  store double %1744, ptr %72, align 8, !tbaa !9
  br label %1746

1745:                                             ; preds = %1360
  store double 0.000000e+00, ptr %72, align 8, !tbaa !9
  br label %1746

1746:                                             ; preds = %1745, %1450
  %1747 = load double, ptr %65, align 8, !tbaa !9
  %1748 = fcmp une double %1747, 0.000000e+00
  br i1 %1748, label %1749, label %2043

1749:                                             ; preds = %1746
  %1750 = load double, ptr %71, align 8, !tbaa !9
  %1751 = load double, ptr %20, align 8, !tbaa !9
  %1752 = fmul double %1750, %1751
  %1753 = load double, ptr %33, align 8, !tbaa !9
  %1754 = fdiv double %1752, %1753
  %1755 = load double, ptr %67, align 8, !tbaa !9
  %1756 = load double, ptr %69, align 8, !tbaa !9
  %1757 = fmul double %1755, %1756
  %1758 = fmul double %1757, 0x400921FB54442D18
  %1759 = load double, ptr %70, align 8, !tbaa !9
  %1760 = fdiv double %1758, %1759
  %1761 = load i32, ptr %78, align 4, !tbaa !13
  %1762 = sitofp i32 %1761 to double
  %1763 = getelementptr inbounds %class.spatial_region, ptr %86, i32 0, i32 3
  %1764 = load double, ptr %1763, align 8, !tbaa !15
  %1765 = load double, ptr %24, align 8, !tbaa !9
  %1766 = fneg double %1765
  %1767 = call double @llvm.fmuladd.f64(double %1762, double %1764, double %1766)
  %1768 = load double, ptr %34, align 8, !tbaa !9
  %1769 = fsub double %1767, %1768
  %1770 = load double, ptr %52, align 8, !tbaa !9
  %1771 = load i32, ptr %80, align 4, !tbaa !13
  %1772 = sitofp i32 %1771 to double
  %1773 = getelementptr inbounds %class.spatial_region, ptr %86, i32 0, i32 4
  %1774 = load double, ptr %1773, align 8, !tbaa !132
  %1775 = load double, ptr %44, align 8, !tbaa !9
  %1776 = fneg double %1775
  %1777 = call double @llvm.fmuladd.f64(double %1772, double %1774, double %1776)
  %1778 = load double, ptr %28, align 8, !tbaa !9
  %1779 = fsub double %1777, %1778
  %1780 = load double, ptr %35, align 8, !tbaa !9
  %1781 = fsub double %1779, %1780
  %1782 = load double, ptr %53, align 8, !tbaa !9
  %1783 = fmul double %1781, %1782
  %1784 = call double @llvm.fmuladd.f64(double %1769, double %1770, double %1783)
  %1785 = load i32, ptr %81, align 4, !tbaa !13
  %1786 = sitofp i32 %1785 to double
  %1787 = getelementptr inbounds %class.spatial_region, ptr %86, i32 0, i32 5
  %1788 = load double, ptr %1787, align 8, !tbaa !134
  %1789 = load double, ptr %45, align 8, !tbaa !9
  %1790 = fneg double %1789
  %1791 = call double @llvm.fmuladd.f64(double %1786, double %1788, double %1790)
  %1792 = load double, ptr %29, align 8, !tbaa !9
  %1793 = fsub double %1791, %1792
  %1794 = load double, ptr %36, align 8, !tbaa !9
  %1795 = fsub double %1793, %1794
  %1796 = load double, ptr %54, align 8, !tbaa !9
  %1797 = call double @llvm.fmuladd.f64(double %1795, double %1796, double %1784)
  %1798 = fmul double %1760, %1797
  %1799 = load double, ptr %65, align 8, !tbaa !9
  %1800 = fdiv double %1798, %1799
  %1801 = load double, ptr %33, align 8, !tbaa !9
  %1802 = load double, ptr %83, align 8, !tbaa !9
  %1803 = call double @sin(double noundef %1802) #5
  %1804 = fmul double %1801, %1803
  %1805 = load double, ptr %66, align 8, !tbaa !9
  %1806 = fmul double %1804, %1805
  %1807 = load double, ptr %66, align 8, !tbaa !9
  %1808 = load double, ptr %41, align 8, !tbaa !9
  %1809 = fdiv double 0x400921FB54442D18, %1808
  %1810 = load double, ptr %83, align 8, !tbaa !9
  %1811 = call double @cos(double noundef %1810) #5
  %1812 = fmul double %1809, %1811
  %1813 = load double, ptr %66, align 8, !tbaa !9
  %1814 = fmul double %1812, %1813
  %1815 = load double, ptr %68, align 8, !tbaa !9
  %1816 = fmul double %1814, %1815
  %1817 = call double @llvm.fmuladd.f64(double %1806, double %1807, double %1816)
  %1818 = load i32, ptr %78, align 4, !tbaa !13
  %1819 = sitofp i32 %1818 to double
  %1820 = getelementptr inbounds %class.spatial_region, ptr %86, i32 0, i32 3
  %1821 = load double, ptr %1820, align 8, !tbaa !15
  %1822 = load double, ptr %24, align 8, !tbaa !9
  %1823 = fneg double %1822
  %1824 = call double @llvm.fmuladd.f64(double %1819, double %1821, double %1823)
  %1825 = load double, ptr %34, align 8, !tbaa !9
  %1826 = fsub double %1824, %1825
  %1827 = load double, ptr %52, align 8, !tbaa !9
  %1828 = load i32, ptr %80, align 4, !tbaa !13
  %1829 = sitofp i32 %1828 to double
  %1830 = getelementptr inbounds %class.spatial_region, ptr %86, i32 0, i32 4
  %1831 = load double, ptr %1830, align 8, !tbaa !132
  %1832 = load double, ptr %44, align 8, !tbaa !9
  %1833 = fneg double %1832
  %1834 = call double @llvm.fmuladd.f64(double %1829, double %1831, double %1833)
  %1835 = load double, ptr %28, align 8, !tbaa !9
  %1836 = fsub double %1834, %1835
  %1837 = load double, ptr %35, align 8, !tbaa !9
  %1838 = fsub double %1836, %1837
  %1839 = load double, ptr %53, align 8, !tbaa !9
  %1840 = fmul double %1838, %1839
  %1841 = call double @llvm.fmuladd.f64(double %1826, double %1827, double %1840)
  %1842 = load i32, ptr %81, align 4, !tbaa !13
  %1843 = sitofp i32 %1842 to double
  %1844 = getelementptr inbounds %class.spatial_region, ptr %86, i32 0, i32 5
  %1845 = load double, ptr %1844, align 8, !tbaa !134
  %1846 = load double, ptr %45, align 8, !tbaa !9
  %1847 = fneg double %1846
  %1848 = call double @llvm.fmuladd.f64(double %1843, double %1845, double %1847)
  %1849 = load double, ptr %29, align 8, !tbaa !9
  %1850 = fsub double %1848, %1849
  %1851 = load double, ptr %36, align 8, !tbaa !9
  %1852 = fsub double %1850, %1851
  %1853 = load double, ptr %54, align 8, !tbaa !9
  %1854 = call double @llvm.fmuladd.f64(double %1852, double %1853, double %1841)
  %1855 = load double, ptr %64, align 8, !tbaa !9
  %1856 = load double, ptr %25, align 8, !tbaa !9
  %1857 = fsub double %1855, %1856
  %1858 = fmul double %1854, %1857
  %1859 = load double, ptr %64, align 8, !tbaa !9
  %1860 = load double, ptr %25, align 8, !tbaa !9
  %1861 = fsub double %1859, %1860
  %1862 = load double, ptr %64, align 8, !tbaa !9
  %1863 = load double, ptr %25, align 8, !tbaa !9
  %1864 = fsub double %1862, %1863
  %1865 = load double, ptr %38, align 8, !tbaa !9
  %1866 = load double, ptr %38, align 8, !tbaa !9
  %1867 = fmul double %1865, %1866
  %1868 = call double @llvm.fmuladd.f64(double %1861, double %1864, double %1867)
  %1869 = fdiv double %1858, %1868
  %1870 = load double, ptr %67, align 8, !tbaa !9
  %1871 = fmul double %1869, %1870
  %1872 = load double, ptr %67, align 8, !tbaa !9
  %1873 = fmul double %1871, %1872
  %1874 = load double, ptr %66, align 8, !tbaa !9
  %1875 = load double, ptr %66, align 8, !tbaa !9
  %1876 = fmul double %1874, %1875
  %1877 = load double, ptr %33, align 8, !tbaa !9
  %1878 = fneg double %1877
  %1879 = load double, ptr %83, align 8, !tbaa !9
  %1880 = call double @cos(double noundef %1879) #5
  %1881 = fmul double %1878, %1880
  %1882 = load double, ptr %41, align 8, !tbaa !9
  %1883 = fdiv double 0x400921FB54442D18, %1882
  %1884 = load double, ptr %66, align 8, !tbaa !9
  %1885 = fmul double %1883, %1884
  %1886 = load double, ptr %68, align 8, !tbaa !9
  %1887 = fmul double %1885, %1886
  %1888 = load double, ptr %83, align 8, !tbaa !9
  %1889 = call double @sin(double noundef %1888) #5
  %1890 = fmul double %1887, %1889
  %1891 = call double @llvm.fmuladd.f64(double %1876, double %1881, double %1890)
  %1892 = fmul double %1873, %1891
  %1893 = call double @llvm.fmuladd.f64(double %1800, double %1817, double %1892)
  %1894 = load double, ptr %71, align 8, !tbaa !9
  %1895 = load double, ptr %21, align 8, !tbaa !9
  %1896 = fmul double %1894, %1895
  %1897 = load double, ptr %33, align 8, !tbaa !9
  %1898 = fdiv double %1896, %1897
  %1899 = load double, ptr %67, align 8, !tbaa !9
  %1900 = load double, ptr %69, align 8, !tbaa !9
  %1901 = fmul double %1899, %1900
  %1902 = fmul double %1901, 0x400921FB54442D18
  %1903 = load double, ptr %70, align 8, !tbaa !9
  %1904 = fdiv double %1902, %1903
  %1905 = load i32, ptr %78, align 4, !tbaa !13
  %1906 = sitofp i32 %1905 to double
  %1907 = getelementptr inbounds %class.spatial_region, ptr %86, i32 0, i32 3
  %1908 = load double, ptr %1907, align 8, !tbaa !15
  %1909 = load double, ptr %24, align 8, !tbaa !9
  %1910 = fneg double %1909
  %1911 = call double @llvm.fmuladd.f64(double %1906, double %1908, double %1910)
  %1912 = load double, ptr %34, align 8, !tbaa !9
  %1913 = fsub double %1911, %1912
  %1914 = load double, ptr %49, align 8, !tbaa !9
  %1915 = load i32, ptr %80, align 4, !tbaa !13
  %1916 = sitofp i32 %1915 to double
  %1917 = getelementptr inbounds %class.spatial_region, ptr %86, i32 0, i32 4
  %1918 = load double, ptr %1917, align 8, !tbaa !132
  %1919 = load double, ptr %44, align 8, !tbaa !9
  %1920 = fneg double %1919
  %1921 = call double @llvm.fmuladd.f64(double %1916, double %1918, double %1920)
  %1922 = load double, ptr %28, align 8, !tbaa !9
  %1923 = fsub double %1921, %1922
  %1924 = load double, ptr %35, align 8, !tbaa !9
  %1925 = fsub double %1923, %1924
  %1926 = load double, ptr %50, align 8, !tbaa !9
  %1927 = fmul double %1925, %1926
  %1928 = call double @llvm.fmuladd.f64(double %1913, double %1914, double %1927)
  %1929 = load i32, ptr %81, align 4, !tbaa !13
  %1930 = sitofp i32 %1929 to double
  %1931 = getelementptr inbounds %class.spatial_region, ptr %86, i32 0, i32 5
  %1932 = load double, ptr %1931, align 8, !tbaa !134
  %1933 = load double, ptr %45, align 8, !tbaa !9
  %1934 = fneg double %1933
  %1935 = call double @llvm.fmuladd.f64(double %1930, double %1932, double %1934)
  %1936 = load double, ptr %29, align 8, !tbaa !9
  %1937 = fsub double %1935, %1936
  %1938 = load double, ptr %36, align 8, !tbaa !9
  %1939 = fsub double %1937, %1938
  %1940 = load double, ptr %51, align 8, !tbaa !9
  %1941 = call double @llvm.fmuladd.f64(double %1939, double %1940, double %1928)
  %1942 = fmul double %1904, %1941
  %1943 = load double, ptr %65, align 8, !tbaa !9
  %1944 = fdiv double %1942, %1943
  %1945 = load double, ptr %33, align 8, !tbaa !9
  %1946 = fneg double %1945
  %1947 = load double, ptr %83, align 8, !tbaa !9
  %1948 = call double @cos(double noundef %1947) #5
  %1949 = fmul double %1946, %1948
  %1950 = load double, ptr %66, align 8, !tbaa !9
  %1951 = fmul double %1949, %1950
  %1952 = load double, ptr %66, align 8, !tbaa !9
  %1953 = load double, ptr %41, align 8, !tbaa !9
  %1954 = fdiv double 0x400921FB54442D18, %1953
  %1955 = load double, ptr %83, align 8, !tbaa !9
  %1956 = call double @sin(double noundef %1955) #5
  %1957 = fmul double %1954, %1956
  %1958 = load double, ptr %66, align 8, !tbaa !9
  %1959 = fmul double %1957, %1958
  %1960 = load double, ptr %68, align 8, !tbaa !9
  %1961 = fmul double %1959, %1960
  %1962 = fneg double %1961
  %1963 = call double @llvm.fmuladd.f64(double %1951, double %1952, double %1962)
  %1964 = load i32, ptr %78, align 4, !tbaa !13
  %1965 = sitofp i32 %1964 to double
  %1966 = getelementptr inbounds %class.spatial_region, ptr %86, i32 0, i32 3
  %1967 = load double, ptr %1966, align 8, !tbaa !15
  %1968 = load double, ptr %24, align 8, !tbaa !9
  %1969 = fneg double %1968
  %1970 = call double @llvm.fmuladd.f64(double %1965, double %1967, double %1969)
  %1971 = load double, ptr %34, align 8, !tbaa !9
  %1972 = fsub double %1970, %1971
  %1973 = load double, ptr %49, align 8, !tbaa !9
  %1974 = load i32, ptr %80, align 4, !tbaa !13
  %1975 = sitofp i32 %1974 to double
  %1976 = getelementptr inbounds %class.spatial_region, ptr %86, i32 0, i32 4
  %1977 = load double, ptr %1976, align 8, !tbaa !132
  %1978 = load double, ptr %44, align 8, !tbaa !9
  %1979 = fneg double %1978
  %1980 = call double @llvm.fmuladd.f64(double %1975, double %1977, double %1979)
  %1981 = load double, ptr %28, align 8, !tbaa !9
  %1982 = fsub double %1980, %1981
  %1983 = load double, ptr %35, align 8, !tbaa !9
  %1984 = fsub double %1982, %1983
  %1985 = load double, ptr %50, align 8, !tbaa !9
  %1986 = fmul double %1984, %1985
  %1987 = call double @llvm.fmuladd.f64(double %1972, double %1973, double %1986)
  %1988 = load i32, ptr %81, align 4, !tbaa !13
  %1989 = sitofp i32 %1988 to double
  %1990 = getelementptr inbounds %class.spatial_region, ptr %86, i32 0, i32 5
  %1991 = load double, ptr %1990, align 8, !tbaa !134
  %1992 = load double, ptr %45, align 8, !tbaa !9
  %1993 = fneg double %1992
  %1994 = call double @llvm.fmuladd.f64(double %1989, double %1991, double %1993)
  %1995 = load double, ptr %29, align 8, !tbaa !9
  %1996 = fsub double %1994, %1995
  %1997 = load double, ptr %36, align 8, !tbaa !9
  %1998 = fsub double %1996, %1997
  %1999 = load double, ptr %51, align 8, !tbaa !9
  %2000 = call double @llvm.fmuladd.f64(double %1998, double %1999, double %1987)
  %2001 = load double, ptr %64, align 8, !tbaa !9
  %2002 = load double, ptr %25, align 8, !tbaa !9
  %2003 = fsub double %2001, %2002
  %2004 = fmul double %2000, %2003
  %2005 = load double, ptr %64, align 8, !tbaa !9
  %2006 = load double, ptr %25, align 8, !tbaa !9
  %2007 = fsub double %2005, %2006
  %2008 = load double, ptr %64, align 8, !tbaa !9
  %2009 = load double, ptr %25, align 8, !tbaa !9
  %2010 = fsub double %2008, %2009
  %2011 = load double, ptr %38, align 8, !tbaa !9
  %2012 = load double, ptr %38, align 8, !tbaa !9
  %2013 = fmul double %2011, %2012
  %2014 = call double @llvm.fmuladd.f64(double %2007, double %2010, double %2013)
  %2015 = fdiv double %2004, %2014
  %2016 = load double, ptr %67, align 8, !tbaa !9
  %2017 = fmul double %2015, %2016
  %2018 = load double, ptr %67, align 8, !tbaa !9
  %2019 = fmul double %2017, %2018
  %2020 = load double, ptr %66, align 8, !tbaa !9
  %2021 = load double, ptr %66, align 8, !tbaa !9
  %2022 = fmul double %2020, %2021
  %2023 = load double, ptr %33, align 8, !tbaa !9
  %2024 = fneg double %2023
  %2025 = load double, ptr %83, align 8, !tbaa !9
  %2026 = call double @sin(double noundef %2025) #5
  %2027 = fmul double %2024, %2026
  %2028 = load double, ptr %41, align 8, !tbaa !9
  %2029 = fdiv double 0x400921FB54442D18, %2028
  %2030 = load double, ptr %66, align 8, !tbaa !9
  %2031 = fmul double %2029, %2030
  %2032 = load double, ptr %68, align 8, !tbaa !9
  %2033 = fmul double %2031, %2032
  %2034 = load double, ptr %83, align 8, !tbaa !9
  %2035 = call double @cos(double noundef %2034) #5
  %2036 = fmul double %2033, %2035
  %2037 = fneg double %2036
  %2038 = call double @llvm.fmuladd.f64(double %2022, double %2027, double %2037)
  %2039 = fmul double %2019, %2038
  %2040 = call double @llvm.fmuladd.f64(double %1944, double %1963, double %2039)
  %2041 = fmul double %1898, %2040
  %2042 = call double @llvm.fmuladd.f64(double %1754, double %1893, double %2041)
  store double %2042, ptr %75, align 8, !tbaa !9
  br label %2044

2043:                                             ; preds = %1746
  store double 0.000000e+00, ptr %75, align 8, !tbaa !9
  br label %2044

2044:                                             ; preds = %2043, %1749
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #5
  br label %2046

2045:                                             ; preds = %1349, %1338
  store double 0.000000e+00, ptr %72, align 8, !tbaa !9
  store double 0.000000e+00, ptr %73, align 8, !tbaa !9
  store double 0.000000e+00, ptr %74, align 8, !tbaa !9
  store double 0.000000e+00, ptr %75, align 8, !tbaa !9
  store double 0.000000e+00, ptr %76, align 8, !tbaa !9
  store double 0.000000e+00, ptr %77, align 8, !tbaa !9
  br label %2046

2046:                                             ; preds = %2045, %2044
  br label %2047

2047:                                             ; preds = %2046, %1337
  %2048 = load i8, ptr %26, align 1, !tbaa !11, !range !136, !noundef !137
  %2049 = trunc i8 %2048 to i1
  %2050 = zext i1 %2049 to i32
  %2051 = icmp eq i32 %2050, 0
  br i1 %2051, label %2052, label %2059

2052:                                             ; preds = %2047
  %2053 = load double, ptr %75, align 8, !tbaa !9
  %2054 = fneg double %2053
  store double %2054, ptr %75, align 8, !tbaa !9
  %2055 = load double, ptr %76, align 8, !tbaa !9
  %2056 = fneg double %2055
  store double %2056, ptr %76, align 8, !tbaa !9
  %2057 = load double, ptr %77, align 8, !tbaa !9
  %2058 = fneg double %2057
  store double %2058, ptr %77, align 8, !tbaa !9
  br label %2059

2059:                                             ; preds = %2052, %2047
  %2060 = load i8, ptr %30, align 1, !tbaa !11, !range !136, !noundef !137
  %2061 = trunc i8 %2060 to i1
  %2062 = zext i1 %2061 to i32
  %2063 = icmp eq i32 %2062, 0
  br i1 %2063, label %2064, label %2191

2064:                                             ; preds = %2059
  %2065 = load double, ptr %72, align 8, !tbaa !9
  %2066 = load double, ptr %46, align 8, !tbaa !9
  %2067 = load double, ptr %73, align 8, !tbaa !9
  %2068 = load double, ptr %49, align 8, !tbaa !9
  %2069 = fmul double %2067, %2068
  %2070 = call double @llvm.fmuladd.f64(double %2065, double %2066, double %2069)
  %2071 = load double, ptr %74, align 8, !tbaa !9
  %2072 = load double, ptr %52, align 8, !tbaa !9
  %2073 = call double @llvm.fmuladd.f64(double %2071, double %2072, double %2070)
  %2074 = getelementptr inbounds %class.spatial_region, ptr %86, i32 0, i32 46
  %2075 = load i32, ptr %78, align 4, !tbaa !13
  %2076 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %2074, i32 noundef %2075)
  %2077 = load ptr, ptr %2076, align 8, !tbaa !5
  %2078 = load i32, ptr %80, align 4, !tbaa !13
  %2079 = sext i32 %2078 to i64
  %2080 = getelementptr inbounds ptr, ptr %2077, i64 %2079
  %2081 = load ptr, ptr %2080, align 8, !tbaa !5
  %2082 = load i32, ptr %81, align 4, !tbaa !13
  %2083 = sext i32 %2082 to i64
  %2084 = getelementptr inbounds %struct.celle, ptr %2081, i64 %2083
  %2085 = getelementptr inbounds %struct.celle, ptr %2084, i32 0, i32 0
  store double %2073, ptr %2085, align 8, !tbaa !138
  %2086 = load double, ptr %72, align 8, !tbaa !9
  %2087 = load double, ptr %47, align 8, !tbaa !9
  %2088 = load double, ptr %73, align 8, !tbaa !9
  %2089 = load double, ptr %50, align 8, !tbaa !9
  %2090 = fmul double %2088, %2089
  %2091 = call double @llvm.fmuladd.f64(double %2086, double %2087, double %2090)
  %2092 = load double, ptr %74, align 8, !tbaa !9
  %2093 = load double, ptr %53, align 8, !tbaa !9
  %2094 = call double @llvm.fmuladd.f64(double %2092, double %2093, double %2091)
  %2095 = getelementptr inbounds %class.spatial_region, ptr %86, i32 0, i32 46
  %2096 = load i32, ptr %78, align 4, !tbaa !13
  %2097 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %2095, i32 noundef %2096)
  %2098 = load ptr, ptr %2097, align 8, !tbaa !5
  %2099 = load i32, ptr %80, align 4, !tbaa !13
  %2100 = sext i32 %2099 to i64
  %2101 = getelementptr inbounds ptr, ptr %2098, i64 %2100
  %2102 = load ptr, ptr %2101, align 8, !tbaa !5
  %2103 = load i32, ptr %81, align 4, !tbaa !13
  %2104 = sext i32 %2103 to i64
  %2105 = getelementptr inbounds %struct.celle, ptr %2102, i64 %2104
  %2106 = getelementptr inbounds %struct.celle, ptr %2105, i32 0, i32 1
  store double %2094, ptr %2106, align 8, !tbaa !140
  %2107 = load double, ptr %72, align 8, !tbaa !9
  %2108 = load double, ptr %48, align 8, !tbaa !9
  %2109 = load double, ptr %73, align 8, !tbaa !9
  %2110 = load double, ptr %51, align 8, !tbaa !9
  %2111 = fmul double %2109, %2110
  %2112 = call double @llvm.fmuladd.f64(double %2107, double %2108, double %2111)
  %2113 = load double, ptr %74, align 8, !tbaa !9
  %2114 = load double, ptr %54, align 8, !tbaa !9
  %2115 = call double @llvm.fmuladd.f64(double %2113, double %2114, double %2112)
  %2116 = getelementptr inbounds %class.spatial_region, ptr %86, i32 0, i32 46
  %2117 = load i32, ptr %78, align 4, !tbaa !13
  %2118 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %2116, i32 noundef %2117)
  %2119 = load ptr, ptr %2118, align 8, !tbaa !5
  %2120 = load i32, ptr %80, align 4, !tbaa !13
  %2121 = sext i32 %2120 to i64
  %2122 = getelementptr inbounds ptr, ptr %2119, i64 %2121
  %2123 = load ptr, ptr %2122, align 8, !tbaa !5
  %2124 = load i32, ptr %81, align 4, !tbaa !13
  %2125 = sext i32 %2124 to i64
  %2126 = getelementptr inbounds %struct.celle, ptr %2123, i64 %2125
  %2127 = getelementptr inbounds %struct.celle, ptr %2126, i32 0, i32 2
  store double %2115, ptr %2127, align 8, !tbaa !141
  %2128 = load double, ptr %75, align 8, !tbaa !9
  %2129 = load double, ptr %46, align 8, !tbaa !9
  %2130 = load double, ptr %76, align 8, !tbaa !9
  %2131 = load double, ptr %49, align 8, !tbaa !9
  %2132 = fmul double %2130, %2131
  %2133 = call double @llvm.fmuladd.f64(double %2128, double %2129, double %2132)
  %2134 = load double, ptr %77, align 8, !tbaa !9
  %2135 = load double, ptr %52, align 8, !tbaa !9
  %2136 = call double @llvm.fmuladd.f64(double %2134, double %2135, double %2133)
  %2137 = getelementptr inbounds %class.spatial_region, ptr %86, i32 0, i32 47
  %2138 = load i32, ptr %78, align 4, !tbaa !13
  %2139 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5cellbEixEi(ptr noundef nonnull align 8 dereferenceable(40) %2137, i32 noundef %2138)
  %2140 = load ptr, ptr %2139, align 8, !tbaa !5
  %2141 = load i32, ptr %80, align 4, !tbaa !13
  %2142 = sext i32 %2141 to i64
  %2143 = getelementptr inbounds ptr, ptr %2140, i64 %2142
  %2144 = load ptr, ptr %2143, align 8, !tbaa !5
  %2145 = load i32, ptr %81, align 4, !tbaa !13
  %2146 = sext i32 %2145 to i64
  %2147 = getelementptr inbounds %struct.cellb, ptr %2144, i64 %2146
  %2148 = getelementptr inbounds %struct.cellb, ptr %2147, i32 0, i32 0
  store double %2136, ptr %2148, align 8, !tbaa !142
  %2149 = load double, ptr %75, align 8, !tbaa !9
  %2150 = load double, ptr %47, align 8, !tbaa !9
  %2151 = load double, ptr %76, align 8, !tbaa !9
  %2152 = load double, ptr %50, align 8, !tbaa !9
  %2153 = fmul double %2151, %2152
  %2154 = call double @llvm.fmuladd.f64(double %2149, double %2150, double %2153)
  %2155 = load double, ptr %77, align 8, !tbaa !9
  %2156 = load double, ptr %53, align 8, !tbaa !9
  %2157 = call double @llvm.fmuladd.f64(double %2155, double %2156, double %2154)
  %2158 = getelementptr inbounds %class.spatial_region, ptr %86, i32 0, i32 47
  %2159 = load i32, ptr %78, align 4, !tbaa !13
  %2160 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5cellbEixEi(ptr noundef nonnull align 8 dereferenceable(40) %2158, i32 noundef %2159)
  %2161 = load ptr, ptr %2160, align 8, !tbaa !5
  %2162 = load i32, ptr %80, align 4, !tbaa !13
  %2163 = sext i32 %2162 to i64
  %2164 = getelementptr inbounds ptr, ptr %2161, i64 %2163
  %2165 = load ptr, ptr %2164, align 8, !tbaa !5
  %2166 = load i32, ptr %81, align 4, !tbaa !13
  %2167 = sext i32 %2166 to i64
  %2168 = getelementptr inbounds %struct.cellb, ptr %2165, i64 %2167
  %2169 = getelementptr inbounds %struct.cellb, ptr %2168, i32 0, i32 1
  store double %2157, ptr %2169, align 8, !tbaa !144
  %2170 = load double, ptr %75, align 8, !tbaa !9
  %2171 = load double, ptr %48, align 8, !tbaa !9
  %2172 = load double, ptr %76, align 8, !tbaa !9
  %2173 = load double, ptr %51, align 8, !tbaa !9
  %2174 = fmul double %2172, %2173
  %2175 = call double @llvm.fmuladd.f64(double %2170, double %2171, double %2174)
  %2176 = load double, ptr %77, align 8, !tbaa !9
  %2177 = load double, ptr %54, align 8, !tbaa !9
  %2178 = call double @llvm.fmuladd.f64(double %2176, double %2177, double %2175)
  %2179 = getelementptr inbounds %class.spatial_region, ptr %86, i32 0, i32 47
  %2180 = load i32, ptr %78, align 4, !tbaa !13
  %2181 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5cellbEixEi(ptr noundef nonnull align 8 dereferenceable(40) %2179, i32 noundef %2180)
  %2182 = load ptr, ptr %2181, align 8, !tbaa !5
  %2183 = load i32, ptr %80, align 4, !tbaa !13
  %2184 = sext i32 %2183 to i64
  %2185 = getelementptr inbounds ptr, ptr %2182, i64 %2184
  %2186 = load ptr, ptr %2185, align 8, !tbaa !5
  %2187 = load i32, ptr %81, align 4, !tbaa !13
  %2188 = sext i32 %2187 to i64
  %2189 = getelementptr inbounds %struct.cellb, ptr %2186, i64 %2188
  %2190 = getelementptr inbounds %struct.cellb, ptr %2189, i32 0, i32 2
  store double %2178, ptr %2190, align 8, !tbaa !145
  br label %2330

2191:                                             ; preds = %2059
  %2192 = load double, ptr %72, align 8, !tbaa !9
  %2193 = load double, ptr %46, align 8, !tbaa !9
  %2194 = load double, ptr %73, align 8, !tbaa !9
  %2195 = load double, ptr %49, align 8, !tbaa !9
  %2196 = fmul double %2194, %2195
  %2197 = call double @llvm.fmuladd.f64(double %2192, double %2193, double %2196)
  %2198 = load double, ptr %74, align 8, !tbaa !9
  %2199 = load double, ptr %52, align 8, !tbaa !9
  %2200 = call double @llvm.fmuladd.f64(double %2198, double %2199, double %2197)
  %2201 = getelementptr inbounds %class.spatial_region, ptr %86, i32 0, i32 46
  %2202 = load i32, ptr %78, align 4, !tbaa !13
  %2203 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %2201, i32 noundef %2202)
  %2204 = load ptr, ptr %2203, align 8, !tbaa !5
  %2205 = load i32, ptr %80, align 4, !tbaa !13
  %2206 = sext i32 %2205 to i64
  %2207 = getelementptr inbounds ptr, ptr %2204, i64 %2206
  %2208 = load ptr, ptr %2207, align 8, !tbaa !5
  %2209 = load i32, ptr %81, align 4, !tbaa !13
  %2210 = sext i32 %2209 to i64
  %2211 = getelementptr inbounds %struct.celle, ptr %2208, i64 %2210
  %2212 = getelementptr inbounds %struct.celle, ptr %2211, i32 0, i32 0
  %2213 = load double, ptr %2212, align 8, !tbaa !138
  %2214 = fadd double %2213, %2200
  store double %2214, ptr %2212, align 8, !tbaa !138
  %2215 = load double, ptr %72, align 8, !tbaa !9
  %2216 = load double, ptr %47, align 8, !tbaa !9
  %2217 = load double, ptr %73, align 8, !tbaa !9
  %2218 = load double, ptr %50, align 8, !tbaa !9
  %2219 = fmul double %2217, %2218
  %2220 = call double @llvm.fmuladd.f64(double %2215, double %2216, double %2219)
  %2221 = load double, ptr %74, align 8, !tbaa !9
  %2222 = load double, ptr %53, align 8, !tbaa !9
  %2223 = call double @llvm.fmuladd.f64(double %2221, double %2222, double %2220)
  %2224 = getelementptr inbounds %class.spatial_region, ptr %86, i32 0, i32 46
  %2225 = load i32, ptr %78, align 4, !tbaa !13
  %2226 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %2224, i32 noundef %2225)
  %2227 = load ptr, ptr %2226, align 8, !tbaa !5
  %2228 = load i32, ptr %80, align 4, !tbaa !13
  %2229 = sext i32 %2228 to i64
  %2230 = getelementptr inbounds ptr, ptr %2227, i64 %2229
  %2231 = load ptr, ptr %2230, align 8, !tbaa !5
  %2232 = load i32, ptr %81, align 4, !tbaa !13
  %2233 = sext i32 %2232 to i64
  %2234 = getelementptr inbounds %struct.celle, ptr %2231, i64 %2233
  %2235 = getelementptr inbounds %struct.celle, ptr %2234, i32 0, i32 1
  %2236 = load double, ptr %2235, align 8, !tbaa !140
  %2237 = fadd double %2236, %2223
  store double %2237, ptr %2235, align 8, !tbaa !140
  %2238 = load double, ptr %72, align 8, !tbaa !9
  %2239 = load double, ptr %48, align 8, !tbaa !9
  %2240 = load double, ptr %73, align 8, !tbaa !9
  %2241 = load double, ptr %51, align 8, !tbaa !9
  %2242 = fmul double %2240, %2241
  %2243 = call double @llvm.fmuladd.f64(double %2238, double %2239, double %2242)
  %2244 = load double, ptr %74, align 8, !tbaa !9
  %2245 = load double, ptr %54, align 8, !tbaa !9
  %2246 = call double @llvm.fmuladd.f64(double %2244, double %2245, double %2243)
  %2247 = getelementptr inbounds %class.spatial_region, ptr %86, i32 0, i32 46
  %2248 = load i32, ptr %78, align 4, !tbaa !13
  %2249 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %2247, i32 noundef %2248)
  %2250 = load ptr, ptr %2249, align 8, !tbaa !5
  %2251 = load i32, ptr %80, align 4, !tbaa !13
  %2252 = sext i32 %2251 to i64
  %2253 = getelementptr inbounds ptr, ptr %2250, i64 %2252
  %2254 = load ptr, ptr %2253, align 8, !tbaa !5
  %2255 = load i32, ptr %81, align 4, !tbaa !13
  %2256 = sext i32 %2255 to i64
  %2257 = getelementptr inbounds %struct.celle, ptr %2254, i64 %2256
  %2258 = getelementptr inbounds %struct.celle, ptr %2257, i32 0, i32 2
  %2259 = load double, ptr %2258, align 8, !tbaa !141
  %2260 = fadd double %2259, %2246
  store double %2260, ptr %2258, align 8, !tbaa !141
  %2261 = load double, ptr %75, align 8, !tbaa !9
  %2262 = load double, ptr %46, align 8, !tbaa !9
  %2263 = load double, ptr %76, align 8, !tbaa !9
  %2264 = load double, ptr %49, align 8, !tbaa !9
  %2265 = fmul double %2263, %2264
  %2266 = call double @llvm.fmuladd.f64(double %2261, double %2262, double %2265)
  %2267 = load double, ptr %77, align 8, !tbaa !9
  %2268 = load double, ptr %52, align 8, !tbaa !9
  %2269 = call double @llvm.fmuladd.f64(double %2267, double %2268, double %2266)
  %2270 = getelementptr inbounds %class.spatial_region, ptr %86, i32 0, i32 47
  %2271 = load i32, ptr %78, align 4, !tbaa !13
  %2272 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5cellbEixEi(ptr noundef nonnull align 8 dereferenceable(40) %2270, i32 noundef %2271)
  %2273 = load ptr, ptr %2272, align 8, !tbaa !5
  %2274 = load i32, ptr %80, align 4, !tbaa !13
  %2275 = sext i32 %2274 to i64
  %2276 = getelementptr inbounds ptr, ptr %2273, i64 %2275
  %2277 = load ptr, ptr %2276, align 8, !tbaa !5
  %2278 = load i32, ptr %81, align 4, !tbaa !13
  %2279 = sext i32 %2278 to i64
  %2280 = getelementptr inbounds %struct.cellb, ptr %2277, i64 %2279
  %2281 = getelementptr inbounds %struct.cellb, ptr %2280, i32 0, i32 0
  %2282 = load double, ptr %2281, align 8, !tbaa !142
  %2283 = fadd double %2282, %2269
  store double %2283, ptr %2281, align 8, !tbaa !142
  %2284 = load double, ptr %75, align 8, !tbaa !9
  %2285 = load double, ptr %47, align 8, !tbaa !9
  %2286 = load double, ptr %76, align 8, !tbaa !9
  %2287 = load double, ptr %50, align 8, !tbaa !9
  %2288 = fmul double %2286, %2287
  %2289 = call double @llvm.fmuladd.f64(double %2284, double %2285, double %2288)
  %2290 = load double, ptr %77, align 8, !tbaa !9
  %2291 = load double, ptr %53, align 8, !tbaa !9
  %2292 = call double @llvm.fmuladd.f64(double %2290, double %2291, double %2289)
  %2293 = getelementptr inbounds %class.spatial_region, ptr %86, i32 0, i32 47
  %2294 = load i32, ptr %78, align 4, !tbaa !13
  %2295 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5cellbEixEi(ptr noundef nonnull align 8 dereferenceable(40) %2293, i32 noundef %2294)
  %2296 = load ptr, ptr %2295, align 8, !tbaa !5
  %2297 = load i32, ptr %80, align 4, !tbaa !13
  %2298 = sext i32 %2297 to i64
  %2299 = getelementptr inbounds ptr, ptr %2296, i64 %2298
  %2300 = load ptr, ptr %2299, align 8, !tbaa !5
  %2301 = load i32, ptr %81, align 4, !tbaa !13
  %2302 = sext i32 %2301 to i64
  %2303 = getelementptr inbounds %struct.cellb, ptr %2300, i64 %2302
  %2304 = getelementptr inbounds %struct.cellb, ptr %2303, i32 0, i32 1
  %2305 = load double, ptr %2304, align 8, !tbaa !144
  %2306 = fadd double %2305, %2292
  store double %2306, ptr %2304, align 8, !tbaa !144
  %2307 = load double, ptr %75, align 8, !tbaa !9
  %2308 = load double, ptr %48, align 8, !tbaa !9
  %2309 = load double, ptr %76, align 8, !tbaa !9
  %2310 = load double, ptr %51, align 8, !tbaa !9
  %2311 = fmul double %2309, %2310
  %2312 = call double @llvm.fmuladd.f64(double %2307, double %2308, double %2311)
  %2313 = load double, ptr %77, align 8, !tbaa !9
  %2314 = load double, ptr %54, align 8, !tbaa !9
  %2315 = call double @llvm.fmuladd.f64(double %2313, double %2314, double %2312)
  %2316 = getelementptr inbounds %class.spatial_region, ptr %86, i32 0, i32 47
  %2317 = load i32, ptr %78, align 4, !tbaa !13
  %2318 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5cellbEixEi(ptr noundef nonnull align 8 dereferenceable(40) %2316, i32 noundef %2317)
  %2319 = load ptr, ptr %2318, align 8, !tbaa !5
  %2320 = load i32, ptr %80, align 4, !tbaa !13
  %2321 = sext i32 %2320 to i64
  %2322 = getelementptr inbounds ptr, ptr %2319, i64 %2321
  %2323 = load ptr, ptr %2322, align 8, !tbaa !5
  %2324 = load i32, ptr %81, align 4, !tbaa !13
  %2325 = sext i32 %2324 to i64
  %2326 = getelementptr inbounds %struct.cellb, ptr %2323, i64 %2325
  %2327 = getelementptr inbounds %struct.cellb, ptr %2326, i32 0, i32 2
  %2328 = load double, ptr %2327, align 8, !tbaa !145
  %2329 = fadd double %2328, %2315
  store double %2329, ptr %2327, align 8, !tbaa !145
  br label %2330

2330:                                             ; preds = %2191, %2064
  br label %2410

2331:                                             ; preds = %502, %498, %323
  %2332 = load i8, ptr %30, align 1, !tbaa !11, !range !136, !noundef !137
  %2333 = trunc i8 %2332 to i1
  %2334 = zext i1 %2333 to i32
  %2335 = icmp eq i32 %2334, 0
  br i1 %2335, label %2336, label %2409

2336:                                             ; preds = %2331
  %2337 = getelementptr inbounds %class.spatial_region, ptr %86, i32 0, i32 46
  %2338 = load i32, ptr %78, align 4, !tbaa !13
  %2339 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %2337, i32 noundef %2338)
  %2340 = load ptr, ptr %2339, align 8, !tbaa !5
  %2341 = load i32, ptr %80, align 4, !tbaa !13
  %2342 = sext i32 %2341 to i64
  %2343 = getelementptr inbounds ptr, ptr %2340, i64 %2342
  %2344 = load ptr, ptr %2343, align 8, !tbaa !5
  %2345 = load i32, ptr %81, align 4, !tbaa !13
  %2346 = sext i32 %2345 to i64
  %2347 = getelementptr inbounds %struct.celle, ptr %2344, i64 %2346
  %2348 = getelementptr inbounds %struct.celle, ptr %2347, i32 0, i32 0
  store double 0.000000e+00, ptr %2348, align 8, !tbaa !138
  %2349 = getelementptr inbounds %class.spatial_region, ptr %86, i32 0, i32 46
  %2350 = load i32, ptr %78, align 4, !tbaa !13
  %2351 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %2349, i32 noundef %2350)
  %2352 = load ptr, ptr %2351, align 8, !tbaa !5
  %2353 = load i32, ptr %80, align 4, !tbaa !13
  %2354 = sext i32 %2353 to i64
  %2355 = getelementptr inbounds ptr, ptr %2352, i64 %2354
  %2356 = load ptr, ptr %2355, align 8, !tbaa !5
  %2357 = load i32, ptr %81, align 4, !tbaa !13
  %2358 = sext i32 %2357 to i64
  %2359 = getelementptr inbounds %struct.celle, ptr %2356, i64 %2358
  %2360 = getelementptr inbounds %struct.celle, ptr %2359, i32 0, i32 1
  store double 0.000000e+00, ptr %2360, align 8, !tbaa !140
  %2361 = getelementptr inbounds %class.spatial_region, ptr %86, i32 0, i32 46
  %2362 = load i32, ptr %78, align 4, !tbaa !13
  %2363 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %2361, i32 noundef %2362)
  %2364 = load ptr, ptr %2363, align 8, !tbaa !5
  %2365 = load i32, ptr %80, align 4, !tbaa !13
  %2366 = sext i32 %2365 to i64
  %2367 = getelementptr inbounds ptr, ptr %2364, i64 %2366
  %2368 = load ptr, ptr %2367, align 8, !tbaa !5
  %2369 = load i32, ptr %81, align 4, !tbaa !13
  %2370 = sext i32 %2369 to i64
  %2371 = getelementptr inbounds %struct.celle, ptr %2368, i64 %2370
  %2372 = getelementptr inbounds %struct.celle, ptr %2371, i32 0, i32 2
  store double 0.000000e+00, ptr %2372, align 8, !tbaa !141
  %2373 = getelementptr inbounds %class.spatial_region, ptr %86, i32 0, i32 47
  %2374 = load i32, ptr %78, align 4, !tbaa !13
  %2375 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5cellbEixEi(ptr noundef nonnull align 8 dereferenceable(40) %2373, i32 noundef %2374)
  %2376 = load ptr, ptr %2375, align 8, !tbaa !5
  %2377 = load i32, ptr %80, align 4, !tbaa !13
  %2378 = sext i32 %2377 to i64
  %2379 = getelementptr inbounds ptr, ptr %2376, i64 %2378
  %2380 = load ptr, ptr %2379, align 8, !tbaa !5
  %2381 = load i32, ptr %81, align 4, !tbaa !13
  %2382 = sext i32 %2381 to i64
  %2383 = getelementptr inbounds %struct.cellb, ptr %2380, i64 %2382
  %2384 = getelementptr inbounds %struct.cellb, ptr %2383, i32 0, i32 0
  store double 0.000000e+00, ptr %2384, align 8, !tbaa !142
  %2385 = getelementptr inbounds %class.spatial_region, ptr %86, i32 0, i32 47
  %2386 = load i32, ptr %78, align 4, !tbaa !13
  %2387 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5cellbEixEi(ptr noundef nonnull align 8 dereferenceable(40) %2385, i32 noundef %2386)
  %2388 = load ptr, ptr %2387, align 8, !tbaa !5
  %2389 = load i32, ptr %80, align 4, !tbaa !13
  %2390 = sext i32 %2389 to i64
  %2391 = getelementptr inbounds ptr, ptr %2388, i64 %2390
  %2392 = load ptr, ptr %2391, align 8, !tbaa !5
  %2393 = load i32, ptr %81, align 4, !tbaa !13
  %2394 = sext i32 %2393 to i64
  %2395 = getelementptr inbounds %struct.cellb, ptr %2392, i64 %2394
  %2396 = getelementptr inbounds %struct.cellb, ptr %2395, i32 0, i32 1
  store double 0.000000e+00, ptr %2396, align 8, !tbaa !144
  %2397 = getelementptr inbounds %class.spatial_region, ptr %86, i32 0, i32 47
  %2398 = load i32, ptr %78, align 4, !tbaa !13
  %2399 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5cellbEixEi(ptr noundef nonnull align 8 dereferenceable(40) %2397, i32 noundef %2398)
  %2400 = load ptr, ptr %2399, align 8, !tbaa !5
  %2401 = load i32, ptr %80, align 4, !tbaa !13
  %2402 = sext i32 %2401 to i64
  %2403 = getelementptr inbounds ptr, ptr %2400, i64 %2402
  %2404 = load ptr, ptr %2403, align 8, !tbaa !5
  %2405 = load i32, ptr %81, align 4, !tbaa !13
  %2406 = sext i32 %2405 to i64
  %2407 = getelementptr inbounds %struct.cellb, ptr %2404, i64 %2406
  %2408 = getelementptr inbounds %struct.cellb, ptr %2407, i32 0, i32 2
  store double 0.000000e+00, ptr %2408, align 8, !tbaa !145
  br label %2409

2409:                                             ; preds = %2336, %2331
  br label %2410

2410:                                             ; preds = %2409, %2330
  br label %2411

2411:                                             ; preds = %2410
  %2412 = load i32, ptr %81, align 4, !tbaa !13
  %2413 = add nsw i32 %2412, 1
  store i32 %2413, ptr %81, align 4, !tbaa !13
  br label %317, !llvm.loop !146

2414:                                             ; preds = %322
  br label %2415

2415:                                             ; preds = %2414
  %2416 = load i32, ptr %80, align 4, !tbaa !13
  %2417 = add nsw i32 %2416, 1
  store i32 %2417, ptr %80, align 4, !tbaa !13
  br label %310, !llvm.loop !148

2418:                                             ; preds = %315
  br label %2419

2419:                                             ; preds = %2418
  %2420 = load i32, ptr %78, align 4, !tbaa !13
  %2421 = add nsw i32 %2420, 1
  store i32 %2421, ptr %78, align 4, !tbaa !13
  br label %303, !llvm.loop !149

2422:                                             ; preds = %308
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #5
  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 %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 %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 @atan(double noundef) #1

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 #2 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
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 = { 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 = !{!"bool", !7, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"int", !7, i64 0}
!15 = !{!16, !10, i64 16}
!16 = !{!"_ZTS14spatial_region", !14, i64 0, !14, i64 4, !14, i64 8, !10, i64 16, !10, i64 24, !10, i64 32, !10, i64 40, !14, i64 48, !14, i64 52, !14, i64 56, !10, i64 64, !6, i64 72, !14, i64 80, !14, i64 84, !14, i64 88, !6, i64 96, !14, i64 104, !14, i64 108, !14, i64 112, !14, i64 116, !14, i64 120, !14, i64 124, !14, i64 128, !17, i64 136, !23, i64 144, !10, i64 176, !10, i64 184, !10, i64 192, !14, i64 200, !14, i64 204, !14, 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", !14, i64 0, !14, i64 4, !14, 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", !14, i64 0, !14, i64 4, !14, 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", !14, i64 0, !14, i64 4, !14, 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", !14, i64 0, !14, i64 4, !14, 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", !14, i64 0, !14, i64 4, !14, 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, !14, i64 4}
!132 = !{!16, !10, i64 24}
!133 = !{!16, !14, i64 8}
!134 = !{!16, !10, i64 32}
!135 = !{!16, !14, i64 0}
!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 nofree nounwind willreturn memory(write)
declare double @sqrt(double noundef) local_unnamed_addr #0

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

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

; 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 #2 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 #2 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN14spatial_region14f_init_focusedEddddddbdddbdidddd(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, i1 noundef zeroext %7, double noundef %8, double noundef %9, double noundef %10, i1 noundef zeroext %11, double noundef %12, i32 noundef %13, double noundef %14, double noundef %15, double noundef %16, double noundef %17) local_unnamed_addr #3 align 2 {
  %19 = fcmp ole double %6, 0.000000e+00
  %20 = zext i1 %19 to i32
  %21 = fcmp ogt double %6, 0.000000e+00
  %.neg = sext i1 %21 to i32
  %22 = add nsw i32 %.neg, %20
  %23 = sitofp i32 %22 to double
  %24 = fmul double %9, %9
  %25 = tail call double @llvm.fmuladd.f64(double %6, double %6, double %24)
  %26 = tail call double @llvm.fmuladd.f64(double %10, double %10, double %25)
  %sqrt1000 = tail call double @llvm.sqrt.f64(double %26)
  %27 = fcmp oeq double %sqrt1000, 0.000000e+00
  %28 = getelementptr inbounds i8, ptr %0, i64 16
  %29 = load double, ptr %28, align 8
  %.0 = select i1 %27, double %29, double %sqrt1000
  %30 = fmul double %4, %14
  %31 = fmul double %30, %4
  %32 = fmul double %31, 5.000000e-01
  %33 = fmul double %.0, %.0
  %34 = fdiv double %33, %32
  %35 = fdiv double %34, %32
  %36 = fadd double %35, 1.000000e+00
  %37 = tail call double @sqrt(double noundef %36) #5
  %38 = fmul double %37, %4
  %39 = fmul double %4, %4
  %40 = fmul double %39, %4
  %41 = fmul double %40, %4
  %42 = fmul double %41, 2.500000e-01
  %43 = fdiv double %33, %42
  %44 = fadd double %43, 1.000000e+00
  %45 = tail call double @sqrt(double noundef %44) #5
  %46 = fmul double %32, %32
  %47 = fdiv double %33, %46
  %48 = fadd double %47, 1.000000e+00
  %sqrt999 = tail call double @llvm.sqrt.f64(double %48)
  %49 = fdiv double %45, %sqrt999
  %50 = fmul double %3, 2.000000e+00
  %51 = fmul double %50, 0x40040D931FF62705
  %52 = fdiv double %51, 3.000000e+00
  %53 = icmp eq i32 %13, 1
  %54 = fmul double %3, 8.220000e-01
  %.0964 = select i1 %53, double %54, double %52
  %55 = fmul double %38, 5.000000e-01
  %56 = fdiv double %55, 0x3FD2C9B9798476AE
  %57 = fmul double %4, 5.000000e-01
  %58 = fdiv double %57, 0x3FD2C9B9798476AE
  %59 = getelementptr inbounds i8, ptr %0, i64 4
  %60 = load i32, ptr %59, align 4, !tbaa !5
  %61 = sitofp i32 %60 to double
  %62 = getelementptr inbounds i8, ptr %0, i64 24
  %63 = load double, ptr %62, align 8, !tbaa !126
  %64 = fmul double %63, %61
  %65 = getelementptr inbounds i8, ptr %0, i64 8
  %66 = load i32, ptr %65, align 8, !tbaa !127
  %67 = sitofp i32 %66 to double
  %68 = getelementptr inbounds i8, ptr %0, i64 32
  %69 = load double, ptr %68, align 8, !tbaa !128
  %70 = fmul double %69, %67
  %71 = fneg double %24
  %72 = tail call double @llvm.fmuladd.f64(double %.0, double %.0, double %71)
  %73 = fneg double %10
  %74 = tail call double @llvm.fmuladd.f64(double %73, double %10, double %72)
  %75 = tail call double @sqrt(double noundef %74) #5
  %76 = fmul double %75, %23
  %77 = fneg double %9
  %78 = fdiv double %77, %.0
  %79 = fmul double %78, %78
  %80 = fneg double %78
  %81 = insertelement <2 x double> poison, double %76, i64 0
  %82 = insertelement <2 x double> %81, double %73, i64 1
  %83 = insertelement <2 x double> poison, double %.0, i64 0
  %84 = shufflevector <2 x double> %83, <2 x double> poison, <2 x i32> zeroinitializer
  %85 = fdiv <2 x double> %82, %84
  %86 = extractelement <2 x double> %85, i64 0
  %87 = tail call double @llvm.fmuladd.f64(double %86, double %86, double %79)
  %sqrt = tail call double @llvm.sqrt.f64(double %87)
  %88 = fcmp une double %sqrt, 0.000000e+00
  %89 = insertelement <2 x double> %85, double %80, i64 1
  %90 = insertelement <2 x double> poison, double %sqrt, i64 0
  %91 = shufflevector <2 x double> %90, <2 x double> poison, <2 x i32> zeroinitializer
  %92 = fdiv <2 x double> %89, %91
  %93 = insertelement <2 x i1> poison, i1 %88, i64 0
  %94 = shufflevector <2 x i1> %93, <2 x i1> poison, <2 x i32> zeroinitializer
  %95 = select <2 x i1> %94, <2 x double> %92, <2 x double> <double 1.000000e+00, double 0.000000e+00>
  %96 = extractelement <2 x double> %85, i64 1
  %97 = fneg double %96
  %98 = extractelement <2 x double> %95, i64 0
  %99 = fmul double %98, %97
  %100 = tail call double @llvm.fmuladd.f64(double %78, double 0.000000e+00, double %99)
  %101 = shufflevector <2 x double> %95, <2 x double> %85, <2 x i32> <i32 1, i32 2>
  %102 = insertelement <2 x double> <double poison, double -0.000000e+00>, double %80, i64 0
  %103 = fmul <2 x double> %101, %102
  %104 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %85, <2 x double> %95, <2 x double> %103)
  %105 = fcmp une double %12, 0.000000e+00
  br i1 %105, label %106, label %128

106:                                              ; preds = %18
  %107 = tail call double @cos(double noundef %12) #5
  %108 = tail call double @sin(double noundef %12) #5
  %109 = shufflevector <2 x double> %104, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %110 = insertelement <2 x double> %109, double %100, i64 1
  %111 = insertelement <2 x double> poison, double %108, i64 0
  %112 = shufflevector <2 x double> %111, <2 x double> poison, <2 x i32> zeroinitializer
  %113 = fmul <2 x double> %110, %112
  %114 = insertelement <2 x double> poison, double %107, i64 0
  %115 = shufflevector <2 x double> %114, <2 x double> poison, <2 x i32> zeroinitializer
  %116 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %95, <2 x double> %115, <2 x double> %113)
  %117 = extractelement <2 x double> %104, i64 0
  %118 = fmul double %117, %108
  %119 = tail call double @llvm.fmuladd.f64(double %107, double 0.000000e+00, double %118)
  %120 = extractelement <2 x double> %95, i64 1
  %121 = fneg double %120
  %122 = fmul double %108, %121
  %123 = tail call double @llvm.fmuladd.f64(double %100, double %107, double %122)
  %124 = fneg double %98
  %125 = insertelement <2 x double> <double -0.000000e+00, double poison>, double %124, i64 1
  %126 = fmul <2 x double> %112, %125
  %127 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %104, <2 x double> %115, <2 x double> %126)
  br label %128

128:                                              ; preds = %106, %18
  %.0984 = phi double [ %123, %106 ], [ %100, %18 ]
  %.1983 = phi double [ %119, %106 ], [ 0.000000e+00, %18 ]
  %129 = phi <2 x double> [ %127, %106 ], [ %104, %18 ]
  %130 = phi <2 x double> [ %116, %106 ], [ %95, %18 ]
  %131 = load i32, ptr %0, align 8, !tbaa !129
  %132 = icmp sgt i32 %131, 0
  br i1 %132, label %.preheader1001.lr.ph, label %._crit_edge1007

.preheader1001.lr.ph:                             ; preds = %128
  %133 = fneg double %5
  %134 = fmul double %64, -5.000000e-01
  %135 = fmul double %70, -5.000000e-01
  %136 = fdiv double %.0, %32
  %137 = fneg double %.0964
  %138 = getelementptr inbounds i8, ptr %0, i64 360
  %139 = getelementptr inbounds i8, ptr %0, i64 400
  %140 = fmul double %58, -2.000000e+00
  %141 = fmul double %58, 2.000000e+00
  %142 = fdiv double 0x400921FB54442D18, %52
  %143 = fneg double %142
  %144 = fneg double %14
  %145 = fmul double %54, %54
  %146 = fmul double %54, %145
  %147 = fmul double %54, %146
  %148 = load i32, ptr %59, align 4, !tbaa !5
  %149 = icmp sgt i32 %148, 0
  br i1 %149, label %.preheader1001.preheader, label %._crit_edge1007

.preheader1001.preheader:                         ; preds = %.preheader1001.lr.ph
  %150 = insertelement <2 x double> poison, double %2, i64 0
  %151 = insertelement <2 x double> %150, double %1, i64 1
  %152 = insertelement <2 x double> poison, double %14, i64 0
  %153 = shufflevector <2 x double> %152, <2 x double> poison, <2 x i32> zeroinitializer
  %154 = insertelement <2 x double> poison, double %142, i64 0
  %155 = extractelement <2 x double> %129, i64 0
  %156 = extractelement <2 x double> %129, i64 1
  %157 = extractelement <2 x double> %130, i64 0
  %158 = extractelement <2 x double> %130, i64 1
  br label %.preheader1001

.preheader1001:                                   ; preds = %.preheader1001.preheader, %._crit_edge1004
  %159 = phi i32 [ %171, %._crit_edge1004 ], [ %131, %.preheader1001.preheader ]
  %160 = phi i32 [ %172, %._crit_edge1004 ], [ %148, %.preheader1001.preheader ]
  %161 = phi i32 [ %173, %._crit_edge1004 ], [ %148, %.preheader1001.preheader ]
  %.09671005 = phi i32 [ %174, %._crit_edge1004 ], [ 0, %.preheader1001.preheader ]
  %162 = icmp sgt i32 %161, 0
  br i1 %162, label %.preheader.lr.ph, label %._crit_edge1004

.preheader.lr.ph:                                 ; preds = %.preheader1001
  %163 = uitofp nneg i32 %.09671005 to double
  %164 = load i32, ptr %65, align 8, !tbaa !127
  %165 = icmp sgt i32 %164, 0
  br i1 %165, label %.preheader, label %._crit_edge1004

._crit_edge1007:                                  ; preds = %._crit_edge1004, %.preheader1001.lr.ph, %128
  ret void

.preheader:                                       ; preds = %.preheader.lr.ph, %._crit_edge
  %166 = phi i32 [ %176, %._crit_edge ], [ %160, %.preheader.lr.ph ]
  %167 = phi i32 [ %177, %._crit_edge ], [ %164, %.preheader.lr.ph ]
  %indvars.iv1011 = phi i64 [ %indvars.iv.next1012, %._crit_edge ], [ 0, %.preheader.lr.ph ]
  %168 = icmp sgt i32 %167, 0
  br i1 %168, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %.preheader
  %169 = trunc nuw nsw i64 %indvars.iv1011 to i32
  %170 = uitofp nneg i32 %169 to double
  br label %180

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

._crit_edge1004:                                  ; preds = %.preheader.lr.ph, %._crit_edge1004.loopexit, %.preheader1001
  %171 = phi i32 [ %.pre1014, %._crit_edge1004.loopexit ], [ %159, %.preheader1001 ], [ %159, %.preheader.lr.ph ]
  %172 = phi i32 [ %176, %._crit_edge1004.loopexit ], [ %160, %.preheader1001 ], [ %160, %.preheader.lr.ph ]
  %173 = phi i32 [ %176, %._crit_edge1004.loopexit ], [ %161, %.preheader1001 ], [ %161, %.preheader.lr.ph ]
  %174 = add nuw nsw i32 %.09671005, 1
  %175 = icmp slt i32 %174, %171
  br i1 %175, label %.preheader1001, label %._crit_edge1007, !llvm.loop !130

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

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %.preheader
  %176 = phi i32 [ %.pre, %._crit_edge.loopexit ], [ %166, %.preheader ]
  %177 = phi i32 [ %806, %._crit_edge.loopexit ], [ %167, %.preheader ]
  %indvars.iv.next1012 = add nuw nsw i64 %indvars.iv1011, 1
  %178 = sext i32 %176 to i64
  %179 = icmp slt i64 %indvars.iv.next1012, %178
  br i1 %179, label %.preheader, label %._crit_edge1004.loopexit, !llvm.loop !133

180:                                              ; preds = %.lr.ph, %805
  %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %805 ]
  %181 = load double, ptr %28, align 8, !tbaa !134
  %182 = tail call double @llvm.fmuladd.f64(double %163, double %181, double %133)
  %183 = fsub double %182, %15
  %184 = load double, ptr %62, align 8, !tbaa !126
  %185 = tail call double @llvm.fmuladd.f64(double %170, double %184, double %134)
  %186 = fsub double %185, %9
  %187 = fsub double %186, %16
  %188 = fmul double %78, %187
  %189 = tail call double @llvm.fmuladd.f64(double %86, double %183, double %188)
  %190 = trunc nuw nsw i64 %indvars.iv to i32
  %191 = uitofp nneg i32 %190 to double
  %192 = load double, ptr %68, align 8, !tbaa !128
  %193 = tail call double @llvm.fmuladd.f64(double %191, double %192, double %135)
  %194 = fsub double %193, %10
  %195 = fsub double %194, %17
  %196 = tail call double @llvm.fmuladd.f64(double %96, double %195, double %189)
  %197 = fmul double %187, %187
  %198 = tail call double @llvm.fmuladd.f64(double %183, double %183, double %197)
  %199 = tail call double @llvm.fmuladd.f64(double %195, double %195, double %198)
  %200 = fneg double %196
  %201 = tail call double @llvm.fmuladd.f64(double %200, double %196, double %199)
  %202 = tail call double @sqrt(double noundef %201) #5
  %203 = fmul double %202, %202
  %204 = fmul double %203, 5.000000e-01
  %205 = fsub double %196, %.0
  %206 = fmul double %204, %205
  %207 = tail call double @llvm.fmuladd.f64(double %205, double %205, double %46)
  %208 = fdiv double %206, %207
  %209 = fadd double %196, %208
  %210 = fdiv double %205, %32
  %211 = tail call double @atan(double noundef %210) #5
  %212 = fsub double %209, %211
  %213 = tail call double @atan(double noundef %136) #5
  %214 = fsub double %212, %213
  %215 = fsub double %214, %.0
  %216 = tail call double @atan(double noundef %136) #5
  %217 = fadd double %216, %215
  %218 = tail call double @atan(double noundef %136) #5
  %219 = fadd double %218, %215
  %220 = fmul double %217, %219
  %221 = fdiv double %220, %46
  %222 = fadd double %221, 1.000000e+00
  %223 = tail call double @sqrt(double noundef %222) #5
  %224 = fmul double %58, %223
  %225 = fdiv double %56, %224
  %226 = fmul double %49, %225
  %227 = fcmp ogt double %214, %137
  %228 = fcmp olt double %214, %.0964
  %or.cond = and i1 %227, %228
  %229 = fcmp olt double %202, %224
  %or.cond993 = select i1 %or.cond, i1 %229, i1 false
  br i1 %or.cond993, label %230, label %773

230:                                              ; preds = %180
  br i1 %53, label %231, label %396

231:                                              ; preds = %230
  %232 = fmul double %214, 0x400921FB54442D18
  %233 = fmul double %214, %232
  %234 = fmul double %214, %233
  %235 = fmul double %214, %234
  %236 = fmul double %235, 5.000000e-01
  %237 = fdiv double %236, %147
  %238 = tail call double @cos(double noundef %237) #5
  %239 = fmul double %202, 0x400921FB54442D18
  %240 = fmul double %239, 5.000000e-01
  %241 = fdiv double %240, %224
  %242 = tail call double @cos(double noundef %241) #5
  %243 = tail call double @sin(double noundef %237) #5
  %244 = tail call double @sin(double noundef %241) #5
  %245 = tail call double @llvm.fmuladd.f64(double %14, double %214, double %8)
  %246 = tail call double @cos(double noundef %245) #5
  %247 = fmul double %214, 0x402921FB54442D18
  %248 = fmul double %214, %247
  %249 = fmul double %214, %248
  %250 = fdiv double %249, %147
  %251 = tail call double @sin(double noundef %245) #5
  %252 = fneg double %250
  %253 = fneg double %226
  %254 = tail call double @sin(double noundef %245) #5
  %255 = tail call double @cos(double noundef %245) #5
  %256 = insertelement <2 x double> poison, double %253, i64 0
  %257 = insertelement <2 x double> %256, double %226, i64 1
  %258 = fmul <2 x double> %257, %151
  %259 = insertelement <2 x double> poison, double %242, i64 0
  %260 = shufflevector <2 x double> %259, <2 x double> poison, <2 x i32> zeroinitializer
  %261 = fmul <2 x double> %258, %260
  %262 = fmul <2 x double> %260, %261
  %263 = fdiv <2 x double> %262, %153
  %264 = insertelement <2 x double> poison, double %254, i64 0
  %265 = insertelement <2 x double> %264, double %246, i64 1
  %266 = fmul <2 x double> %265, %153
  %267 = insertelement <2 x double> poison, double %238, i64 0
  %268 = shufflevector <2 x double> %267, <2 x double> poison, <2 x i32> zeroinitializer
  %269 = fmul <2 x double> %268, %266
  %270 = insertelement <2 x double> poison, double %250, i64 0
  %271 = insertelement <2 x double> %270, double %251, i64 1
  %272 = insertelement <2 x double> poison, double %255, i64 0
  %273 = insertelement <2 x double> %272, double %252, i64 1
  %274 = fmul <2 x double> %271, %273
  %275 = fmul <2 x double> %268, %274
  %276 = insertelement <2 x double> poison, double %243, i64 0
  %277 = shufflevector <2 x double> %276, <2 x double> poison, <2 x i32> zeroinitializer
  %278 = fmul <2 x double> %277, %275
  %279 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %269, <2 x double> %268, <2 x double> %278)
  %280 = fmul <2 x double> %263, %279
  %281 = extractelement <2 x double> %280, i64 0
  %282 = fneg double %281
  %283 = fcmp une double %202, 0.000000e+00
  br i1 %283, label %284, label %664

284:                                              ; preds = %231
  %285 = extractelement <2 x double> %258, i64 1
  %286 = fdiv double %285, %14
  %287 = fmul double %242, %244
  %288 = fmul double %287, 0x400921FB54442D18
  %289 = fdiv double %288, %224
  %290 = load double, ptr %28, align 8, !tbaa !134
  %291 = tail call double @llvm.fmuladd.f64(double %163, double %290, double %133)
  %292 = fsub double %291, %15
  %293 = load double, ptr %62, align 8, !tbaa !126
  %294 = tail call double @llvm.fmuladd.f64(double %170, double %293, double %134)
  %295 = fsub double %294, %9
  %296 = fsub double %295, %16
  %297 = fmul double %157, %296
  %298 = tail call double @llvm.fmuladd.f64(double %292, double %158, double %297)
  %299 = load double, ptr %68, align 8, !tbaa !128
  %300 = tail call double @llvm.fmuladd.f64(double %191, double %299, double %135)
  %301 = fsub double %300, %10
  %302 = fsub double %301, %17
  %303 = tail call double @llvm.fmuladd.f64(double %302, double %.1983, double %298)
  %304 = fmul double %289, %303
  %305 = fdiv double %304, %202
  %306 = tail call double @sin(double noundef %245) #5
  %307 = fmul double %306, %14
  %308 = fmul double %238, %307
  %309 = tail call double @cos(double noundef %245) #5
  %310 = fmul double %250, %309
  %311 = fmul double %238, %310
  %312 = fmul double %243, %311
  %313 = tail call double @llvm.fmuladd.f64(double %308, double %238, double %312)
  %314 = load double, ptr %28, align 8, !tbaa !134
  %315 = tail call double @llvm.fmuladd.f64(double %163, double %314, double %133)
  %316 = fsub double %315, %15
  %317 = load double, ptr %62, align 8, !tbaa !126
  %318 = tail call double @llvm.fmuladd.f64(double %170, double %317, double %134)
  %319 = fsub double %318, %9
  %320 = fsub double %319, %16
  %321 = fmul double %157, %320
  %322 = tail call double @llvm.fmuladd.f64(double %316, double %158, double %321)
  %323 = load double, ptr %68, align 8, !tbaa !128
  %324 = tail call double @llvm.fmuladd.f64(double %191, double %323, double %135)
  %325 = fsub double %324, %10
  %326 = fsub double %325, %17
  %327 = tail call double @llvm.fmuladd.f64(double %326, double %.1983, double %322)
  %328 = fmul double %205, %327
  %329 = fdiv double %328, %207
  %330 = fmul double %242, %329
  %331 = fmul double %242, %330
  %332 = fmul double %238, %238
  %333 = tail call double @cos(double noundef %245) #5
  %334 = fmul double %333, %144
  %335 = fmul double %250, %238
  %336 = fmul double %335, %243
  %337 = tail call double @sin(double noundef %245) #5
  %338 = fmul double %336, %337
  %339 = tail call double @llvm.fmuladd.f64(double %332, double %334, double %338)
  %340 = fmul double %339, %331
  %341 = tail call double @llvm.fmuladd.f64(double %305, double %313, double %340)
  %342 = load double, ptr %28, align 8, !tbaa !134
  %343 = tail call double @llvm.fmuladd.f64(double %163, double %342, double %133)
  %344 = fsub double %343, %15
  %345 = load double, ptr %62, align 8, !tbaa !126
  %346 = tail call double @llvm.fmuladd.f64(double %170, double %345, double %134)
  %347 = fsub double %346, %9
  %348 = fsub double %347, %16
  %349 = fmul double %156, %348
  %350 = tail call double @llvm.fmuladd.f64(double %344, double %.0984, double %349)
  %351 = load double, ptr %68, align 8, !tbaa !128
  %352 = tail call double @llvm.fmuladd.f64(double %191, double %351, double %135)
  %353 = fsub double %352, %10
  %354 = fsub double %353, %17
  %355 = tail call double @llvm.fmuladd.f64(double %354, double %155, double %350)
  %356 = fmul double %289, %355
  %357 = fdiv double %356, %202
  %358 = tail call double @cos(double noundef %245) #5
  %359 = fmul double %358, %144
  %360 = fmul double %238, %359
  %361 = tail call double @sin(double noundef %245) #5
  %362 = fmul double %361, %252
  %363 = fmul double %238, %362
  %364 = fmul double %243, %363
  %365 = tail call double @llvm.fmuladd.f64(double %360, double %238, double %364)
  %366 = load double, ptr %28, align 8, !tbaa !134
  %367 = tail call double @llvm.fmuladd.f64(double %163, double %366, double %133)
  %368 = fsub double %367, %15
  %369 = load double, ptr %62, align 8, !tbaa !126
  %370 = tail call double @llvm.fmuladd.f64(double %170, double %369, double %134)
  %371 = fsub double %370, %9
  %372 = fsub double %371, %16
  %373 = fmul double %156, %372
  %374 = tail call double @llvm.fmuladd.f64(double %368, double %.0984, double %373)
  %375 = load double, ptr %68, align 8, !tbaa !128
  %376 = tail call double @llvm.fmuladd.f64(double %191, double %375, double %135)
  %377 = fsub double %376, %10
  %378 = fsub double %377, %17
  %379 = tail call double @llvm.fmuladd.f64(double %378, double %155, double %374)
  %380 = fmul double %205, %379
  %381 = fdiv double %380, %207
  %382 = fmul double %242, %381
  %383 = fmul double %242, %382
  %384 = tail call double @sin(double noundef %245) #5
  %385 = fmul double %384, %144
  %386 = tail call double @cos(double noundef %245) #5
  %387 = fneg double %336
  %388 = fmul double %386, %387
  %389 = tail call double @llvm.fmuladd.f64(double %332, double %385, double %388)
  %390 = fmul double %389, %383
  %391 = tail call double @llvm.fmuladd.f64(double %357, double %365, double %390)
  %392 = extractelement <2 x double> %258, i64 0
  %393 = fdiv double %392, %14
  %394 = fmul double %393, %391
  %395 = tail call double @llvm.fmuladd.f64(double %286, double %341, double %394)
  br label %.sink.split

396:                                              ; preds = %230
  %397 = fsub double %.0, %196
  %398 = fmul double %140, %397
  %399 = fdiv double %398, %32
  %400 = fcmp ugt double %399, %202
  br i1 %400, label %664, label %401

401:                                              ; preds = %396
  %402 = fmul double %141, %397
  %403 = fdiv double %402, %32
  %404 = fcmp ugt double %202, %403
  br i1 %404, label %664, label %405

405:                                              ; preds = %401
  %406 = fmul double %214, 0x400921FB54442D18
  %407 = fmul double %406, 5.000000e-01
  %408 = fdiv double %407, %52
  %409 = tail call double @cos(double noundef %408) #5
  %410 = fmul double %202, 0x400921FB54442D18
  %411 = fmul double %410, 5.000000e-01
  %412 = fdiv double %411, %224
  %413 = tail call double @cos(double noundef %412) #5
  %414 = tail call double @sin(double noundef %408) #5
  %415 = tail call double @sin(double noundef %412) #5
  %416 = tail call double @llvm.fmuladd.f64(double %14, double %214, double %8)
  %417 = tail call double @cos(double noundef %416) #5
  %418 = tail call double @sin(double noundef %416) #5
  %419 = fneg double %226
  %420 = tail call double @sin(double noundef %416) #5
  %421 = tail call double @cos(double noundef %416) #5
  %422 = insertelement <2 x double> poison, double %419, i64 0
  %423 = insertelement <2 x double> %422, double %226, i64 1
  %424 = fmul <2 x double> %423, %151
  %425 = insertelement <2 x double> poison, double %413, i64 0
  %426 = shufflevector <2 x double> %425, <2 x double> poison, <2 x i32> zeroinitializer
  %427 = fmul <2 x double> %424, %426
  %428 = fmul <2 x double> %426, %427
  %429 = fdiv <2 x double> %428, %153
  %430 = insertelement <2 x double> poison, double %420, i64 0
  %431 = insertelement <2 x double> %430, double %417, i64 1
  %432 = fmul <2 x double> %431, %153
  %433 = insertelement <2 x double> poison, double %409, i64 0
  %434 = shufflevector <2 x double> %433, <2 x double> poison, <2 x i32> zeroinitializer
  %435 = fmul <2 x double> %434, %432
  %436 = insertelement <2 x double> %154, double %418, i64 1
  %437 = insertelement <2 x double> poison, double %421, i64 0
  %438 = insertelement <2 x double> %437, double %143, i64 1
  %439 = fmul <2 x double> %436, %438
  %440 = fmul <2 x double> %434, %439
  %441 = insertelement <2 x double> poison, double %414, i64 0
  %442 = shufflevector <2 x double> %441, <2 x double> poison, <2 x i32> zeroinitializer
  %443 = fmul <2 x double> %442, %440
  %444 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %435, <2 x double> %434, <2 x double> %443)
  %445 = fmul <2 x double> %429, %444
  %446 = extractelement <2 x double> %445, i64 0
  %447 = fneg double %446
  %448 = fcmp une double %202, 0.000000e+00
  br i1 %448, label %449, label %664

449:                                              ; preds = %405
  %450 = extractelement <2 x double> %424, i64 1
  %451 = fdiv double %450, %14
  %452 = fmul double %413, %415
  %453 = fmul double %452, 0x400921FB54442D18
  %454 = fdiv double %453, %224
  %455 = load double, ptr %28, align 8, !tbaa !134
  %456 = tail call double @llvm.fmuladd.f64(double %163, double %455, double %133)
  %457 = fsub double %456, %15
  %458 = load double, ptr %62, align 8, !tbaa !126
  %459 = tail call double @llvm.fmuladd.f64(double %170, double %458, double %134)
  %460 = fsub double %459, %9
  %461 = fsub double %460, %16
  %462 = fmul double %157, %461
  %463 = tail call double @llvm.fmuladd.f64(double %457, double %158, double %462)
  %464 = load double, ptr %68, align 8, !tbaa !128
  %465 = tail call double @llvm.fmuladd.f64(double %191, double %464, double %135)
  %466 = fsub double %465, %10
  %467 = fsub double %466, %17
  %468 = tail call double @llvm.fmuladd.f64(double %467, double %.1983, double %463)
  %469 = fmul double %454, %468
  %470 = fdiv double %469, %202
  %471 = tail call double @sin(double noundef %416) #5
  %472 = fmul double %471, %14
  %473 = fmul double %409, %472
  %474 = tail call double @cos(double noundef %416) #5
  %475 = fmul double %142, %474
  %476 = fmul double %409, %475
  %477 = fmul double %414, %476
  %478 = tail call double @llvm.fmuladd.f64(double %473, double %409, double %477)
  %479 = load double, ptr %28, align 8, !tbaa !134
  %480 = tail call double @llvm.fmuladd.f64(double %163, double %479, double %133)
  %481 = fsub double %480, %15
  %482 = load double, ptr %62, align 8, !tbaa !126
  %483 = tail call double @llvm.fmuladd.f64(double %170, double %482, double %134)
  %484 = fsub double %483, %9
  %485 = fsub double %484, %16
  %486 = fmul double %157, %485
  %487 = tail call double @llvm.fmuladd.f64(double %481, double %158, double %486)
  %488 = load double, ptr %68, align 8, !tbaa !128
  %489 = tail call double @llvm.fmuladd.f64(double %191, double %488, double %135)
  %490 = fsub double %489, %10
  %491 = fsub double %490, %17
  %492 = tail call double @llvm.fmuladd.f64(double %491, double %.1983, double %487)
  %493 = fmul double %205, %492
  %494 = fdiv double %493, %207
  %495 = fmul double %413, %494
  %496 = fmul double %413, %495
  %497 = fmul double %409, %409
  %498 = tail call double @cos(double noundef %416) #5
  %499 = fmul double %498, %144
  %500 = fmul double %142, %409
  %501 = fmul double %500, %414
  %502 = tail call double @sin(double noundef %416) #5
  %503 = fmul double %501, %502
  %504 = tail call double @llvm.fmuladd.f64(double %497, double %499, double %503)
  %505 = fmul double %504, %496
  %506 = tail call double @llvm.fmuladd.f64(double %470, double %478, double %505)
  %507 = load double, ptr %28, align 8, !tbaa !134
  %508 = tail call double @llvm.fmuladd.f64(double %163, double %507, double %133)
  %509 = fsub double %508, %15
  %510 = load double, ptr %62, align 8, !tbaa !126
  %511 = tail call double @llvm.fmuladd.f64(double %170, double %510, double %134)
  %512 = fsub double %511, %9
  %513 = fsub double %512, %16
  %514 = fmul double %156, %513
  %515 = tail call double @llvm.fmuladd.f64(double %509, double %.0984, double %514)
  %516 = load double, ptr %68, align 8, !tbaa !128
  %517 = tail call double @llvm.fmuladd.f64(double %191, double %516, double %135)
  %518 = fsub double %517, %10
  %519 = fsub double %518, %17
  %520 = tail call double @llvm.fmuladd.f64(double %519, double %155, double %515)
  %521 = fmul double %454, %520
  %522 = fdiv double %521, %202
  %523 = tail call double @cos(double noundef %416) #5
  %524 = fmul double %523, %144
  %525 = fmul double %409, %524
  %526 = tail call double @sin(double noundef %416) #5
  %527 = fmul double %526, %143
  %528 = fmul double %409, %527
  %529 = fmul double %414, %528
  %530 = tail call double @llvm.fmuladd.f64(double %525, double %409, double %529)
  %531 = load double, ptr %28, align 8, !tbaa !134
  %532 = tail call double @llvm.fmuladd.f64(double %163, double %531, double %133)
  %533 = fsub double %532, %15
  %534 = load double, ptr %62, align 8, !tbaa !126
  %535 = tail call double @llvm.fmuladd.f64(double %170, double %534, double %134)
  %536 = fsub double %535, %9
  %537 = fsub double %536, %16
  %538 = fmul double %156, %537
  %539 = tail call double @llvm.fmuladd.f64(double %533, double %.0984, double %538)
  %540 = load double, ptr %68, align 8, !tbaa !128
  %541 = tail call double @llvm.fmuladd.f64(double %191, double %540, double %135)
  %542 = fsub double %541, %10
  %543 = fsub double %542, %17
  %544 = tail call double @llvm.fmuladd.f64(double %543, double %155, double %539)
  %545 = fmul double %205, %544
  %546 = fdiv double %545, %207
  %547 = fmul double %413, %546
  %548 = fmul double %413, %547
  %549 = tail call double @sin(double noundef %416) #5
  %550 = fmul double %549, %144
  %551 = tail call double @cos(double noundef %416) #5
  %552 = fneg double %501
  %553 = fmul double %551, %552
  %554 = tail call double @llvm.fmuladd.f64(double %497, double %550, double %553)
  %555 = fmul double %554, %548
  %556 = tail call double @llvm.fmuladd.f64(double %522, double %530, double %555)
  %557 = extractelement <2 x double> %424, i64 0
  %558 = fdiv double %557, %14
  %559 = fmul double %558, %556
  %560 = tail call double @llvm.fmuladd.f64(double %451, double %506, double %559)
  br label %.sink.split

.sink.split:                                      ; preds = %284, %449
  %.sink1130 = phi double [ %454, %449 ], [ %289, %284 ]
  %.sink1128 = phi double [ %416, %449 ], [ %245, %284 ]
  %.sink1125 = phi double [ %409, %449 ], [ %238, %284 ]
  %.sink1122 = phi double [ %142, %449 ], [ %250, %284 ]
  %.sink1118 = phi double [ %414, %449 ], [ %243, %284 ]
  %.sink1098 = phi double [ %413, %449 ], [ %242, %284 ]
  %.sink1091 = phi double [ %501, %449 ], [ %336, %284 ]
  %.sink1088 = phi double [ %497, %449 ], [ %332, %284 ]
  %.sink1060 = phi double [ %143, %449 ], [ %252, %284 ]
  %.sink1029 = phi double [ %552, %449 ], [ %387, %284 ]
  %.sink = phi double [ %451, %449 ], [ %286, %284 ]
  %.2977.ph = phi double [ %560, %449 ], [ %395, %284 ]
  %.0969.ph = phi double [ %447, %449 ], [ %282, %284 ]
  %561 = phi <2 x double> [ %445, %449 ], [ %280, %284 ]
  %562 = load double, ptr %28, align 8, !tbaa !134
  %563 = tail call double @llvm.fmuladd.f64(double %163, double %562, double %133)
  %564 = fsub double %563, %15
  %565 = load double, ptr %62, align 8, !tbaa !126
  %566 = tail call double @llvm.fmuladd.f64(double %170, double %565, double %134)
  %567 = fsub double %566, %9
  %568 = fsub double %567, %16
  %569 = fmul double %156, %568
  %570 = tail call double @llvm.fmuladd.f64(double %564, double %.0984, double %569)
  %571 = load double, ptr %68, align 8, !tbaa !128
  %572 = tail call double @llvm.fmuladd.f64(double %191, double %571, double %135)
  %573 = fsub double %572, %10
  %574 = fsub double %573, %17
  %575 = tail call double @llvm.fmuladd.f64(double %574, double %155, double %570)
  %576 = fmul double %.sink1130, %575
  %577 = fdiv double %576, %202
  %578 = tail call double @sin(double noundef %.sink1128) #5
  %579 = fmul double %578, %14
  %580 = fmul double %.sink1125, %579
  %581 = tail call double @cos(double noundef %.sink1128) #5
  %582 = fmul double %.sink1122, %581
  %583 = fmul double %.sink1125, %582
  %584 = fmul double %.sink1118, %583
  %585 = tail call double @llvm.fmuladd.f64(double %580, double %.sink1125, double %584)
  %586 = load double, ptr %28, align 8, !tbaa !134
  %587 = tail call double @llvm.fmuladd.f64(double %163, double %586, double %133)
  %588 = fsub double %587, %15
  %589 = load double, ptr %62, align 8, !tbaa !126
  %590 = tail call double @llvm.fmuladd.f64(double %170, double %589, double %134)
  %591 = fsub double %590, %9
  %592 = fsub double %591, %16
  %593 = fmul double %156, %592
  %594 = tail call double @llvm.fmuladd.f64(double %588, double %.0984, double %593)
  %595 = load double, ptr %68, align 8, !tbaa !128
  %596 = tail call double @llvm.fmuladd.f64(double %191, double %595, double %135)
  %597 = fsub double %596, %10
  %598 = fsub double %597, %17
  %599 = tail call double @llvm.fmuladd.f64(double %598, double %155, double %594)
  %600 = fmul double %205, %599
  %601 = fdiv double %600, %207
  %602 = fmul double %.sink1098, %601
  %603 = fmul double %.sink1098, %602
  %604 = tail call double @cos(double noundef %.sink1128) #5
  %605 = fmul double %604, %144
  %606 = tail call double @sin(double noundef %.sink1128) #5
  %607 = fmul double %.sink1091, %606
  %608 = tail call double @llvm.fmuladd.f64(double %.sink1088, double %605, double %607)
  %609 = fmul double %608, %603
  %610 = tail call double @llvm.fmuladd.f64(double %577, double %585, double %609)
  %611 = fmul double %226, %2
  %612 = fdiv double %611, %14
  %613 = load double, ptr %28, align 8, !tbaa !134
  %614 = tail call double @llvm.fmuladd.f64(double %163, double %613, double %133)
  %615 = fsub double %614, %15
  %616 = load double, ptr %62, align 8, !tbaa !126
  %617 = tail call double @llvm.fmuladd.f64(double %170, double %616, double %134)
  %618 = fsub double %617, %9
  %619 = fsub double %618, %16
  %620 = fmul double %157, %619
  %621 = tail call double @llvm.fmuladd.f64(double %615, double %158, double %620)
  %622 = load double, ptr %68, align 8, !tbaa !128
  %623 = tail call double @llvm.fmuladd.f64(double %191, double %622, double %135)
  %624 = fsub double %623, %10
  %625 = fsub double %624, %17
  %626 = tail call double @llvm.fmuladd.f64(double %625, double %.1983, double %621)
  %627 = fmul double %.sink1130, %626
  %628 = fdiv double %627, %202
  %629 = tail call double @cos(double noundef %.sink1128) #5
  %630 = fmul double %629, %144
  %631 = fmul double %.sink1125, %630
  %632 = tail call double @sin(double noundef %.sink1128) #5
  %633 = fmul double %632, %.sink1060
  %634 = fmul double %.sink1125, %633
  %635 = fmul double %.sink1118, %634
  %636 = tail call double @llvm.fmuladd.f64(double %631, double %.sink1125, double %635)
  %637 = load double, ptr %28, align 8, !tbaa !134
  %638 = tail call double @llvm.fmuladd.f64(double %163, double %637, double %133)
  %639 = fsub double %638, %15
  %640 = load double, ptr %62, align 8, !tbaa !126
  %641 = tail call double @llvm.fmuladd.f64(double %170, double %640, double %134)
  %642 = fsub double %641, %9
  %643 = fsub double %642, %16
  %644 = fmul double %157, %643
  %645 = tail call double @llvm.fmuladd.f64(double %639, double %158, double %644)
  %646 = load double, ptr %68, align 8, !tbaa !128
  %647 = tail call double @llvm.fmuladd.f64(double %191, double %646, double %135)
  %648 = fsub double %647, %10
  %649 = fsub double %648, %17
  %650 = tail call double @llvm.fmuladd.f64(double %649, double %.1983, double %645)
  %651 = fmul double %205, %650
  %652 = fdiv double %651, %207
  %653 = fmul double %.sink1098, %652
  %654 = fmul double %.sink1098, %653
  %655 = tail call double @sin(double noundef %.sink1128) #5
  %656 = fmul double %655, %144
  %657 = tail call double @cos(double noundef %.sink1128) #5
  %658 = fmul double %657, %.sink1029
  %659 = tail call double @llvm.fmuladd.f64(double %.sink1088, double %656, double %658)
  %660 = fmul double %659, %654
  %661 = tail call double @llvm.fmuladd.f64(double %628, double %636, double %660)
  %662 = fmul double %612, %661
  %663 = tail call double @llvm.fmuladd.f64(double %.sink, double %610, double %662)
  br label %664

664:                                              ; preds = %.sink.split, %405, %231, %396, %401
  %.2977 = phi double [ 0.000000e+00, %401 ], [ 0.000000e+00, %396 ], [ 0.000000e+00, %231 ], [ 0.000000e+00, %405 ], [ %.2977.ph, %.sink.split ]
  %.2 = phi double [ 0.000000e+00, %401 ], [ 0.000000e+00, %396 ], [ 0.000000e+00, %231 ], [ 0.000000e+00, %405 ], [ %663, %.sink.split ]
  %.0969 = phi double [ 0.000000e+00, %401 ], [ 0.000000e+00, %396 ], [ %282, %231 ], [ %447, %405 ], [ %.0969.ph, %.sink.split ]
  %665 = phi <2 x double> [ zeroinitializer, %401 ], [ zeroinitializer, %396 ], [ %280, %231 ], [ %445, %405 ], [ %561, %.sink.split ]
  %666 = fneg double %.2
  %667 = fneg double %.0969
  %668 = extractelement <2 x double> %665, i64 1
  %669 = fneg double %668
  %.3 = select i1 %7, double %.2, double %666
  %.1970 = select i1 %7, double %.0969, double %667
  %.1 = select i1 %7, double %668, double %669
  %670 = fmul double %158, %668
  %671 = tail call double @llvm.fmuladd.f64(double %.2977, double %86, double %670)
  %672 = extractelement <2 x double> %665, i64 0
  %673 = tail call double @llvm.fmuladd.f64(double %672, double %.0984, double %671)
  %674 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %138, i32 noundef %.09671005)
  %675 = load ptr, ptr %674, align 8, !tbaa !135
  %676 = getelementptr inbounds ptr, ptr %675, i64 %indvars.iv1011
  %677 = load ptr, ptr %676, align 8, !tbaa !135
  %678 = getelementptr inbounds %struct.celle, ptr %677, i64 %indvars.iv
  br i1 %11, label %720, label %679

679:                                              ; preds = %664
  store double %673, ptr %678, align 8, !tbaa !136
  %680 = fmul double %157, %668
  %681 = tail call double @llvm.fmuladd.f64(double %.2977, double %78, double %680)
  %682 = tail call double @llvm.fmuladd.f64(double %672, double %156, double %681)
  %683 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %138, i32 noundef %.09671005)
  %684 = load ptr, ptr %683, align 8, !tbaa !135
  %685 = getelementptr inbounds ptr, ptr %684, i64 %indvars.iv1011
  %686 = load ptr, ptr %685, align 8, !tbaa !135
  %687 = getelementptr inbounds %struct.celle, ptr %686, i64 %indvars.iv, i32 1
  store double %682, ptr %687, align 8, !tbaa !138
  %688 = fmul double %.1983, %668
  %689 = tail call double @llvm.fmuladd.f64(double %.2977, double %96, double %688)
  %690 = tail call double @llvm.fmuladd.f64(double %672, double %155, double %689)
  %691 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %138, i32 noundef %.09671005)
  %692 = load ptr, ptr %691, align 8, !tbaa !135
  %693 = getelementptr inbounds ptr, ptr %692, i64 %indvars.iv1011
  %694 = load ptr, ptr %693, align 8, !tbaa !135
  %695 = getelementptr inbounds %struct.celle, ptr %694, i64 %indvars.iv, i32 2
  store double %690, ptr %695, align 8, !tbaa !139
  %696 = fmul double %158, %.1970
  %697 = tail call double @llvm.fmuladd.f64(double %.3, double %86, double %696)
  %698 = tail call double @llvm.fmuladd.f64(double %.1, double %.0984, double %697)
  %699 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5cellbEixEi(ptr noundef nonnull align 8 dereferenceable(40) %139, i32 noundef %.09671005)
  %700 = load ptr, ptr %699, align 8, !tbaa !135
  %701 = getelementptr inbounds ptr, ptr %700, i64 %indvars.iv1011
  %702 = load ptr, ptr %701, align 8, !tbaa !135
  %703 = getelementptr inbounds %struct.cellb, ptr %702, i64 %indvars.iv
  store double %698, ptr %703, align 8, !tbaa !140
  %704 = fmul double %157, %.1970
  %705 = tail call double @llvm.fmuladd.f64(double %.3, double %78, double %704)
  %706 = tail call double @llvm.fmuladd.f64(double %.1, double %156, double %705)
  %707 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5cellbEixEi(ptr noundef nonnull align 8 dereferenceable(40) %139, i32 noundef %.09671005)
  %708 = load ptr, ptr %707, align 8, !tbaa !135
  %709 = getelementptr inbounds ptr, ptr %708, i64 %indvars.iv1011
  %710 = load ptr, ptr %709, align 8, !tbaa !135
  %711 = getelementptr inbounds %struct.cellb, ptr %710, i64 %indvars.iv, i32 1
  store double %706, ptr %711, align 8, !tbaa !142
  %712 = fmul double %.1983, %.1970
  %713 = tail call double @llvm.fmuladd.f64(double %.3, double %96, double %712)
  %714 = tail call double @llvm.fmuladd.f64(double %.1, double %155, double %713)
  %715 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5cellbEixEi(ptr noundef nonnull align 8 dereferenceable(40) %139, i32 noundef %.09671005)
  %716 = load ptr, ptr %715, align 8, !tbaa !135
  %717 = getelementptr inbounds ptr, ptr %716, i64 %indvars.iv1011
  %718 = load ptr, ptr %717, align 8, !tbaa !135
  %719 = getelementptr inbounds %struct.cellb, ptr %718, i64 %indvars.iv, i32 2
  store double %714, ptr %719, align 8, !tbaa !143
  br label %805

720:                                              ; preds = %664
  %721 = load double, ptr %678, align 8, !tbaa !136
  %722 = fadd double %673, %721
  store double %722, ptr %678, align 8, !tbaa !136
  %723 = fmul double %157, %668
  %724 = tail call double @llvm.fmuladd.f64(double %.2977, double %78, double %723)
  %725 = tail call double @llvm.fmuladd.f64(double %672, double %156, double %724)
  %726 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %138, i32 noundef %.09671005)
  %727 = load ptr, ptr %726, align 8, !tbaa !135
  %728 = getelementptr inbounds ptr, ptr %727, i64 %indvars.iv1011
  %729 = load ptr, ptr %728, align 8, !tbaa !135
  %730 = getelementptr inbounds %struct.celle, ptr %729, i64 %indvars.iv, i32 1
  %731 = load double, ptr %730, align 8, !tbaa !138
  %732 = fadd double %725, %731
  store double %732, ptr %730, align 8, !tbaa !138
  %733 = fmul double %.1983, %668
  %734 = tail call double @llvm.fmuladd.f64(double %.2977, double %96, double %733)
  %735 = tail call double @llvm.fmuladd.f64(double %672, double %155, double %734)
  %736 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %138, i32 noundef %.09671005)
  %737 = load ptr, ptr %736, align 8, !tbaa !135
  %738 = getelementptr inbounds ptr, ptr %737, i64 %indvars.iv1011
  %739 = load ptr, ptr %738, align 8, !tbaa !135
  %740 = getelementptr inbounds %struct.celle, ptr %739, i64 %indvars.iv, i32 2
  %741 = load double, ptr %740, align 8, !tbaa !139
  %742 = fadd double %735, %741
  store double %742, ptr %740, align 8, !tbaa !139
  %743 = fmul double %158, %.1970
  %744 = tail call double @llvm.fmuladd.f64(double %.3, double %86, double %743)
  %745 = tail call double @llvm.fmuladd.f64(double %.1, double %.0984, double %744)
  %746 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5cellbEixEi(ptr noundef nonnull align 8 dereferenceable(40) %139, i32 noundef %.09671005)
  %747 = load ptr, ptr %746, align 8, !tbaa !135
  %748 = getelementptr inbounds ptr, ptr %747, i64 %indvars.iv1011
  %749 = load ptr, ptr %748, align 8, !tbaa !135
  %750 = getelementptr inbounds %struct.cellb, ptr %749, i64 %indvars.iv
  %751 = load double, ptr %750, align 8, !tbaa !140
  %752 = fadd double %745, %751
  store double %752, ptr %750, align 8, !tbaa !140
  %753 = fmul double %157, %.1970
  %754 = tail call double @llvm.fmuladd.f64(double %.3, double %78, double %753)
  %755 = tail call double @llvm.fmuladd.f64(double %.1, double %156, double %754)
  %756 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5cellbEixEi(ptr noundef nonnull align 8 dereferenceable(40) %139, i32 noundef %.09671005)
  %757 = load ptr, ptr %756, align 8, !tbaa !135
  %758 = getelementptr inbounds ptr, ptr %757, i64 %indvars.iv1011
  %759 = load ptr, ptr %758, align 8, !tbaa !135
  %760 = getelementptr inbounds %struct.cellb, ptr %759, i64 %indvars.iv, i32 1
  %761 = load double, ptr %760, align 8, !tbaa !142
  %762 = fadd double %755, %761
  store double %762, ptr %760, align 8, !tbaa !142
  %763 = fmul double %.1983, %.1970
  %764 = tail call double @llvm.fmuladd.f64(double %.3, double %96, double %763)
  %765 = tail call double @llvm.fmuladd.f64(double %.1, double %155, double %764)
  %766 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5cellbEixEi(ptr noundef nonnull align 8 dereferenceable(40) %139, i32 noundef %.09671005)
  %767 = load ptr, ptr %766, align 8, !tbaa !135
  %768 = getelementptr inbounds ptr, ptr %767, i64 %indvars.iv1011
  %769 = load ptr, ptr %768, align 8, !tbaa !135
  %770 = getelementptr inbounds %struct.cellb, ptr %769, i64 %indvars.iv, i32 2
  %771 = load double, ptr %770, align 8, !tbaa !143
  %772 = fadd double %765, %771
  store double %772, ptr %770, align 8, !tbaa !143
  br label %805

773:                                              ; preds = %180
  br i1 %11, label %805, label %774

774:                                              ; preds = %773
  %775 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %138, i32 noundef %.09671005)
  %776 = load ptr, ptr %775, align 8, !tbaa !135
  %777 = getelementptr inbounds ptr, ptr %776, i64 %indvars.iv1011
  %778 = load ptr, ptr %777, align 8, !tbaa !135
  %779 = getelementptr inbounds %struct.celle, ptr %778, i64 %indvars.iv
  store double 0.000000e+00, ptr %779, align 8, !tbaa !136
  %780 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %138, i32 noundef %.09671005)
  %781 = load ptr, ptr %780, align 8, !tbaa !135
  %782 = getelementptr inbounds ptr, ptr %781, i64 %indvars.iv1011
  %783 = load ptr, ptr %782, align 8, !tbaa !135
  %784 = getelementptr inbounds %struct.celle, ptr %783, i64 %indvars.iv, i32 1
  store double 0.000000e+00, ptr %784, align 8, !tbaa !138
  %785 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %138, i32 noundef %.09671005)
  %786 = load ptr, ptr %785, align 8, !tbaa !135
  %787 = getelementptr inbounds ptr, ptr %786, i64 %indvars.iv1011
  %788 = load ptr, ptr %787, align 8, !tbaa !135
  %789 = getelementptr inbounds %struct.celle, ptr %788, i64 %indvars.iv, i32 2
  store double 0.000000e+00, ptr %789, align 8, !tbaa !139
  %790 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5cellbEixEi(ptr noundef nonnull align 8 dereferenceable(40) %139, i32 noundef %.09671005)
  %791 = load ptr, ptr %790, align 8, !tbaa !135
  %792 = getelementptr inbounds ptr, ptr %791, i64 %indvars.iv1011
  %793 = load ptr, ptr %792, align 8, !tbaa !135
  %794 = getelementptr inbounds %struct.cellb, ptr %793, i64 %indvars.iv
  store double 0.000000e+00, ptr %794, align 8, !tbaa !140
  %795 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5cellbEixEi(ptr noundef nonnull align 8 dereferenceable(40) %139, i32 noundef %.09671005)
  %796 = load ptr, ptr %795, align 8, !tbaa !135
  %797 = getelementptr inbounds ptr, ptr %796, i64 %indvars.iv1011
  %798 = load ptr, ptr %797, align 8, !tbaa !135
  %799 = getelementptr inbounds %struct.cellb, ptr %798, i64 %indvars.iv, i32 1
  store double 0.000000e+00, ptr %799, align 8, !tbaa !142
  %800 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5cellbEixEi(ptr noundef nonnull align 8 dereferenceable(40) %139, i32 noundef %.09671005)
  %801 = load ptr, ptr %800, align 8, !tbaa !135
  %802 = getelementptr inbounds ptr, ptr %801, i64 %indvars.iv1011
  %803 = load ptr, ptr %802, align 8, !tbaa !135
  %804 = getelementptr inbounds %struct.cellb, ptr %803, i64 %indvars.iv, i32 2
  store double 0.000000e+00, ptr %804, align 8, !tbaa !143
  br label %805

805:                                              ; preds = %720, %679, %774, %773
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %806 = load i32, ptr %65, align 8, !tbaa !127
  %807 = sext i32 %806 to i64
  %808 = icmp slt i64 %indvars.iv.next, %807
  br i1 %808, label %180, label %._crit_edge.loopexit, !llvm.loop !144
}

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

; 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 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 #1 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #2 = { 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 #3 = { 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,CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopInstSimplifyPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,ReassociatePass,SLPVectorizerPass,SROAPass,SimpleLoopUnswitchPass,SimplifyCFGPass,TailCallElimPass