; LLVM IR from QUILL-PIC/Quill :: src/maxwell.ll (ZN17five_point_solver9advance_bEv)

; 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.maxwell_solver = type { ptr, ptr, ptr, ptr, double, double, double, double, double, double }
%class.five_point_solver = type { %class.maxwell_solver, double, double, double, double, double, double }
%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 speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, double) #1

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN17five_point_solver9advance_bEv(ptr noundef nonnull align 8 dereferenceable(128) %0) unnamed_addr #2 align 2 {
  %2 = alloca ptr, align 8
  %3 = alloca i32, align 4
  %4 = alloca i32, align 4
  %5 = alloca i32, align 4
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  store ptr %0, ptr %2, align 8, !tbaa !5
  %19 = load ptr, ptr %2, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr %3) #5
  %20 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 2
  %21 = load ptr, ptr %20, align 8, !tbaa !9
  %22 = call noundef i32 @_ZN7field3dI5cellbE6get_nxEv(ptr noundef nonnull align 8 dereferenceable(40) %21)
  store i32 %22, ptr %3, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 4, ptr %4) #5
  %23 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 2
  %24 = load ptr, ptr %23, align 8, !tbaa !9
  %25 = call noundef i32 @_ZN7field3dI5cellbE6get_nyEv(ptr noundef nonnull align 8 dereferenceable(40) %24)
  store i32 %25, ptr %4, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 4, ptr %5) #5
  %26 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 2
  %27 = load ptr, ptr %26, align 8, !tbaa !9
  %28 = call noundef i32 @_ZN7field3dI5cellbE6get_nzEv(ptr noundef nonnull align 8 dereferenceable(40) %27)
  store i32 %28, ptr %5, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #5
  store i32 1, ptr %6, align 4, !tbaa !12
  br label %29

29:                                               ; preds = %712, %1
  %30 = load i32, ptr %6, align 4, !tbaa !12
  %31 = load i32, ptr %3, align 4, !tbaa !12
  %32 = sub nsw i32 %31, 2
  %33 = icmp slt i32 %30, %32
  br i1 %33, label %35, label %34

34:                                               ; preds = %29
  store i32 2, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %6) #5
  br label %715

35:                                               ; preds = %29
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #5
  store i32 1, ptr %8, align 4, !tbaa !12
  br label %36

36:                                               ; preds = %708, %35
  %37 = load i32, ptr %8, align 4, !tbaa !12
  %38 = load i32, ptr %4, align 4, !tbaa !12
  %39 = sub nsw i32 %38, 2
  %40 = icmp slt i32 %37, %39
  br i1 %40, label %42, label %41

41:                                               ; preds = %36
  store i32 5, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #5
  br label %711

42:                                               ; preds = %36
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #5
  store i32 1, ptr %9, align 4, !tbaa !12
  br label %43

43:                                               ; preds = %704, %42
  %44 = load i32, ptr %9, align 4, !tbaa !12
  %45 = load i32, ptr %5, align 4, !tbaa !12
  %46 = sub nsw i32 %45, 2
  %47 = icmp slt i32 %44, %46
  br i1 %47, label %49, label %48

48:                                               ; preds = %43
  store i32 8, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #5
  br label %707

49:                                               ; preds = %43
  %50 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 8
  %51 = load double, ptr %50, align 8, !tbaa !14
  %52 = fneg double %51
  %53 = getelementptr inbounds %class.five_point_solver, ptr %19, i32 0, i32 5
  %54 = load double, ptr %53, align 8, !tbaa !15
  %55 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %56 = load ptr, ptr %55, align 8, !tbaa !17
  %57 = load i32, ptr %6, align 4, !tbaa !12
  %58 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %56, i32 noundef %57)
  %59 = load ptr, ptr %58, align 8, !tbaa !5
  %60 = load i32, ptr %8, align 4, !tbaa !12
  %61 = add nsw i32 %60, 1
  %62 = sext i32 %61 to i64
  %63 = getelementptr inbounds ptr, ptr %59, i64 %62
  %64 = load ptr, ptr %63, align 8, !tbaa !5
  %65 = load i32, ptr %9, align 4, !tbaa !12
  %66 = sext i32 %65 to i64
  %67 = getelementptr inbounds %struct.celle, ptr %64, i64 %66
  %68 = getelementptr inbounds %struct.celle, ptr %67, i32 0, i32 2
  %69 = load double, ptr %68, align 8, !tbaa !18
  %70 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %71 = load ptr, ptr %70, align 8, !tbaa !17
  %72 = load i32, ptr %6, align 4, !tbaa !12
  %73 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %71, i32 noundef %72)
  %74 = load ptr, ptr %73, align 8, !tbaa !5
  %75 = load i32, ptr %8, align 4, !tbaa !12
  %76 = sext i32 %75 to i64
  %77 = getelementptr inbounds ptr, ptr %74, i64 %76
  %78 = load ptr, ptr %77, align 8, !tbaa !5
  %79 = load i32, ptr %9, align 4, !tbaa !12
  %80 = sext i32 %79 to i64
  %81 = getelementptr inbounds %struct.celle, ptr %78, i64 %80
  %82 = getelementptr inbounds %struct.celle, ptr %81, i32 0, i32 2
  %83 = load double, ptr %82, align 8, !tbaa !18
  %84 = fsub double %69, %83
  %85 = getelementptr inbounds %class.five_point_solver, ptr %19, i32 0, i32 2
  %86 = load double, ptr %85, align 8, !tbaa !20
  %87 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %88 = load ptr, ptr %87, align 8, !tbaa !17
  %89 = load i32, ptr %6, align 4, !tbaa !12
  %90 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %88, i32 noundef %89)
  %91 = load ptr, ptr %90, align 8, !tbaa !5
  %92 = load i32, ptr %8, align 4, !tbaa !12
  %93 = add nsw i32 %92, 2
  %94 = sext i32 %93 to i64
  %95 = getelementptr inbounds ptr, ptr %91, i64 %94
  %96 = load ptr, ptr %95, align 8, !tbaa !5
  %97 = load i32, ptr %9, align 4, !tbaa !12
  %98 = sext i32 %97 to i64
  %99 = getelementptr inbounds %struct.celle, ptr %96, i64 %98
  %100 = getelementptr inbounds %struct.celle, ptr %99, i32 0, i32 2
  %101 = load double, ptr %100, align 8, !tbaa !18
  %102 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %103 = load ptr, ptr %102, align 8, !tbaa !17
  %104 = load i32, ptr %6, align 4, !tbaa !12
  %105 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %103, i32 noundef %104)
  %106 = load ptr, ptr %105, align 8, !tbaa !5
  %107 = load i32, ptr %8, align 4, !tbaa !12
  %108 = add nsw i32 %107, 1
  %109 = sext i32 %108 to i64
  %110 = getelementptr inbounds ptr, ptr %106, i64 %109
  %111 = load ptr, ptr %110, align 8, !tbaa !5
  %112 = load i32, ptr %9, align 4, !tbaa !12
  %113 = sext i32 %112 to i64
  %114 = getelementptr inbounds %struct.celle, ptr %111, i64 %113
  %115 = getelementptr inbounds %struct.celle, ptr %114, i32 0, i32 2
  %116 = load double, ptr %115, align 8, !tbaa !18
  %117 = fsub double %101, %116
  %118 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %119 = load ptr, ptr %118, align 8, !tbaa !17
  %120 = load i32, ptr %6, align 4, !tbaa !12
  %121 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %119, i32 noundef %120)
  %122 = load ptr, ptr %121, align 8, !tbaa !5
  %123 = load i32, ptr %8, align 4, !tbaa !12
  %124 = sext i32 %123 to i64
  %125 = getelementptr inbounds ptr, ptr %122, i64 %124
  %126 = load ptr, ptr %125, align 8, !tbaa !5
  %127 = load i32, ptr %9, align 4, !tbaa !12
  %128 = sext i32 %127 to i64
  %129 = getelementptr inbounds %struct.celle, ptr %126, i64 %128
  %130 = getelementptr inbounds %struct.celle, ptr %129, i32 0, i32 2
  %131 = load double, ptr %130, align 8, !tbaa !18
  %132 = fadd double %117, %131
  %133 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %134 = load ptr, ptr %133, align 8, !tbaa !17
  %135 = load i32, ptr %6, align 4, !tbaa !12
  %136 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %134, i32 noundef %135)
  %137 = load ptr, ptr %136, align 8, !tbaa !5
  %138 = load i32, ptr %8, align 4, !tbaa !12
  %139 = sub nsw i32 %138, 1
  %140 = sext i32 %139 to i64
  %141 = getelementptr inbounds ptr, ptr %137, i64 %140
  %142 = load ptr, ptr %141, align 8, !tbaa !5
  %143 = load i32, ptr %9, align 4, !tbaa !12
  %144 = sext i32 %143 to i64
  %145 = getelementptr inbounds %struct.celle, ptr %142, i64 %144
  %146 = getelementptr inbounds %struct.celle, ptr %145, i32 0, i32 2
  %147 = load double, ptr %146, align 8, !tbaa !18
  %148 = fsub double %132, %147
  %149 = fmul double %86, %148
  %150 = call double @llvm.fmuladd.f64(double %54, double %84, double %149)
  %151 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 9
  %152 = load double, ptr %151, align 8, !tbaa !21
  %153 = getelementptr inbounds %class.five_point_solver, ptr %19, i32 0, i32 6
  %154 = load double, ptr %153, align 8, !tbaa !22
  %155 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %156 = load ptr, ptr %155, align 8, !tbaa !17
  %157 = load i32, ptr %6, align 4, !tbaa !12
  %158 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %156, i32 noundef %157)
  %159 = load ptr, ptr %158, align 8, !tbaa !5
  %160 = load i32, ptr %8, align 4, !tbaa !12
  %161 = sext i32 %160 to i64
  %162 = getelementptr inbounds ptr, ptr %159, i64 %161
  %163 = load ptr, ptr %162, align 8, !tbaa !5
  %164 = load i32, ptr %9, align 4, !tbaa !12
  %165 = add nsw i32 %164, 1
  %166 = sext i32 %165 to i64
  %167 = getelementptr inbounds %struct.celle, ptr %163, i64 %166
  %168 = getelementptr inbounds %struct.celle, ptr %167, i32 0, i32 1
  %169 = load double, ptr %168, align 8, !tbaa !23
  %170 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %171 = load ptr, ptr %170, align 8, !tbaa !17
  %172 = load i32, ptr %6, align 4, !tbaa !12
  %173 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %171, i32 noundef %172)
  %174 = load ptr, ptr %173, align 8, !tbaa !5
  %175 = load i32, ptr %8, align 4, !tbaa !12
  %176 = sext i32 %175 to i64
  %177 = getelementptr inbounds ptr, ptr %174, i64 %176
  %178 = load ptr, ptr %177, align 8, !tbaa !5
  %179 = load i32, ptr %9, align 4, !tbaa !12
  %180 = sext i32 %179 to i64
  %181 = getelementptr inbounds %struct.celle, ptr %178, i64 %180
  %182 = getelementptr inbounds %struct.celle, ptr %181, i32 0, i32 1
  %183 = load double, ptr %182, align 8, !tbaa !23
  %184 = fsub double %169, %183
  %185 = getelementptr inbounds %class.five_point_solver, ptr %19, i32 0, i32 3
  %186 = load double, ptr %185, align 8, !tbaa !24
  %187 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %188 = load ptr, ptr %187, align 8, !tbaa !17
  %189 = load i32, ptr %6, align 4, !tbaa !12
  %190 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %188, i32 noundef %189)
  %191 = load ptr, ptr %190, align 8, !tbaa !5
  %192 = load i32, ptr %8, align 4, !tbaa !12
  %193 = sext i32 %192 to i64
  %194 = getelementptr inbounds ptr, ptr %191, i64 %193
  %195 = load ptr, ptr %194, align 8, !tbaa !5
  %196 = load i32, ptr %9, align 4, !tbaa !12
  %197 = add nsw i32 %196, 2
  %198 = sext i32 %197 to i64
  %199 = getelementptr inbounds %struct.celle, ptr %195, i64 %198
  %200 = getelementptr inbounds %struct.celle, ptr %199, i32 0, i32 1
  %201 = load double, ptr %200, align 8, !tbaa !23
  %202 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %203 = load ptr, ptr %202, align 8, !tbaa !17
  %204 = load i32, ptr %6, align 4, !tbaa !12
  %205 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %203, i32 noundef %204)
  %206 = load ptr, ptr %205, align 8, !tbaa !5
  %207 = load i32, ptr %8, align 4, !tbaa !12
  %208 = sext i32 %207 to i64
  %209 = getelementptr inbounds ptr, ptr %206, i64 %208
  %210 = load ptr, ptr %209, align 8, !tbaa !5
  %211 = load i32, ptr %9, align 4, !tbaa !12
  %212 = add nsw i32 %211, 1
  %213 = sext i32 %212 to i64
  %214 = getelementptr inbounds %struct.celle, ptr %210, i64 %213
  %215 = getelementptr inbounds %struct.celle, ptr %214, i32 0, i32 1
  %216 = load double, ptr %215, align 8, !tbaa !23
  %217 = fsub double %201, %216
  %218 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %219 = load ptr, ptr %218, align 8, !tbaa !17
  %220 = load i32, ptr %6, align 4, !tbaa !12
  %221 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %219, i32 noundef %220)
  %222 = load ptr, ptr %221, align 8, !tbaa !5
  %223 = load i32, ptr %8, align 4, !tbaa !12
  %224 = sext i32 %223 to i64
  %225 = getelementptr inbounds ptr, ptr %222, i64 %224
  %226 = load ptr, ptr %225, align 8, !tbaa !5
  %227 = load i32, ptr %9, align 4, !tbaa !12
  %228 = sext i32 %227 to i64
  %229 = getelementptr inbounds %struct.celle, ptr %226, i64 %228
  %230 = getelementptr inbounds %struct.celle, ptr %229, i32 0, i32 1
  %231 = load double, ptr %230, align 8, !tbaa !23
  %232 = fadd double %217, %231
  %233 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %234 = load ptr, ptr %233, align 8, !tbaa !17
  %235 = load i32, ptr %6, align 4, !tbaa !12
  %236 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %234, i32 noundef %235)
  %237 = load ptr, ptr %236, align 8, !tbaa !5
  %238 = load i32, ptr %8, align 4, !tbaa !12
  %239 = sext i32 %238 to i64
  %240 = getelementptr inbounds ptr, ptr %237, i64 %239
  %241 = load ptr, ptr %240, align 8, !tbaa !5
  %242 = load i32, ptr %9, align 4, !tbaa !12
  %243 = sub nsw i32 %242, 1
  %244 = sext i32 %243 to i64
  %245 = getelementptr inbounds %struct.celle, ptr %241, i64 %244
  %246 = getelementptr inbounds %struct.celle, ptr %245, i32 0, i32 1
  %247 = load double, ptr %246, align 8, !tbaa !23
  %248 = fsub double %232, %247
  %249 = fmul double %186, %248
  %250 = call double @llvm.fmuladd.f64(double %154, double %184, double %249)
  %251 = fmul double %152, %250
  %252 = call double @llvm.fmuladd.f64(double %52, double %150, double %251)
  %253 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 2
  %254 = load ptr, ptr %253, align 8, !tbaa !9
  %255 = load i32, ptr %6, align 4, !tbaa !12
  %256 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5cellbEixEi(ptr noundef nonnull align 8 dereferenceable(40) %254, i32 noundef %255)
  %257 = load ptr, ptr %256, align 8, !tbaa !5
  %258 = load i32, ptr %8, align 4, !tbaa !12
  %259 = sext i32 %258 to i64
  %260 = getelementptr inbounds ptr, ptr %257, i64 %259
  %261 = load ptr, ptr %260, align 8, !tbaa !5
  %262 = load i32, ptr %9, align 4, !tbaa !12
  %263 = sext i32 %262 to i64
  %264 = getelementptr inbounds %struct.cellb, ptr %261, i64 %263
  %265 = getelementptr inbounds %struct.cellb, ptr %264, i32 0, i32 0
  %266 = load double, ptr %265, align 8, !tbaa !25
  %267 = call double @llvm.fmuladd.f64(double 5.000000e-01, double %252, double %266)
  store double %267, ptr %265, align 8, !tbaa !25
  %268 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 7
  %269 = load double, ptr %268, align 8, !tbaa !27
  %270 = getelementptr inbounds %class.five_point_solver, ptr %19, i32 0, i32 4
  %271 = load double, ptr %270, align 8, !tbaa !28
  %272 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %273 = load ptr, ptr %272, align 8, !tbaa !17
  %274 = load i32, ptr %6, align 4, !tbaa !12
  %275 = add nsw i32 %274, 1
  %276 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %273, i32 noundef %275)
  %277 = load ptr, ptr %276, align 8, !tbaa !5
  %278 = load i32, ptr %8, align 4, !tbaa !12
  %279 = sext i32 %278 to i64
  %280 = getelementptr inbounds ptr, ptr %277, i64 %279
  %281 = load ptr, ptr %280, align 8, !tbaa !5
  %282 = load i32, ptr %9, align 4, !tbaa !12
  %283 = sext i32 %282 to i64
  %284 = getelementptr inbounds %struct.celle, ptr %281, i64 %283
  %285 = getelementptr inbounds %struct.celle, ptr %284, i32 0, i32 2
  %286 = load double, ptr %285, align 8, !tbaa !18
  %287 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %288 = load ptr, ptr %287, align 8, !tbaa !17
  %289 = load i32, ptr %6, align 4, !tbaa !12
  %290 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %288, i32 noundef %289)
  %291 = load ptr, ptr %290, align 8, !tbaa !5
  %292 = load i32, ptr %8, align 4, !tbaa !12
  %293 = sext i32 %292 to i64
  %294 = getelementptr inbounds ptr, ptr %291, i64 %293
  %295 = load ptr, ptr %294, align 8, !tbaa !5
  %296 = load i32, ptr %9, align 4, !tbaa !12
  %297 = sext i32 %296 to i64
  %298 = getelementptr inbounds %struct.celle, ptr %295, i64 %297
  %299 = getelementptr inbounds %struct.celle, ptr %298, i32 0, i32 2
  %300 = load double, ptr %299, align 8, !tbaa !18
  %301 = fsub double %286, %300
  %302 = getelementptr inbounds %class.five_point_solver, ptr %19, i32 0, i32 1
  %303 = load double, ptr %302, align 8, !tbaa !29
  %304 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %305 = load ptr, ptr %304, align 8, !tbaa !17
  %306 = load i32, ptr %6, align 4, !tbaa !12
  %307 = add nsw i32 %306, 2
  %308 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %305, i32 noundef %307)
  %309 = load ptr, ptr %308, align 8, !tbaa !5
  %310 = load i32, ptr %8, align 4, !tbaa !12
  %311 = sext i32 %310 to i64
  %312 = getelementptr inbounds ptr, ptr %309, i64 %311
  %313 = load ptr, ptr %312, align 8, !tbaa !5
  %314 = load i32, ptr %9, align 4, !tbaa !12
  %315 = sext i32 %314 to i64
  %316 = getelementptr inbounds %struct.celle, ptr %313, i64 %315
  %317 = getelementptr inbounds %struct.celle, ptr %316, i32 0, i32 2
  %318 = load double, ptr %317, align 8, !tbaa !18
  %319 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %320 = load ptr, ptr %319, align 8, !tbaa !17
  %321 = load i32, ptr %6, align 4, !tbaa !12
  %322 = add nsw i32 %321, 1
  %323 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %320, i32 noundef %322)
  %324 = load ptr, ptr %323, align 8, !tbaa !5
  %325 = load i32, ptr %8, align 4, !tbaa !12
  %326 = sext i32 %325 to i64
  %327 = getelementptr inbounds ptr, ptr %324, i64 %326
  %328 = load ptr, ptr %327, align 8, !tbaa !5
  %329 = load i32, ptr %9, align 4, !tbaa !12
  %330 = sext i32 %329 to i64
  %331 = getelementptr inbounds %struct.celle, ptr %328, i64 %330
  %332 = getelementptr inbounds %struct.celle, ptr %331, i32 0, i32 2
  %333 = load double, ptr %332, align 8, !tbaa !18
  %334 = fsub double %318, %333
  %335 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %336 = load ptr, ptr %335, align 8, !tbaa !17
  %337 = load i32, ptr %6, align 4, !tbaa !12
  %338 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %336, i32 noundef %337)
  %339 = load ptr, ptr %338, align 8, !tbaa !5
  %340 = load i32, ptr %8, align 4, !tbaa !12
  %341 = sext i32 %340 to i64
  %342 = getelementptr inbounds ptr, ptr %339, i64 %341
  %343 = load ptr, ptr %342, align 8, !tbaa !5
  %344 = load i32, ptr %9, align 4, !tbaa !12
  %345 = sext i32 %344 to i64
  %346 = getelementptr inbounds %struct.celle, ptr %343, i64 %345
  %347 = getelementptr inbounds %struct.celle, ptr %346, i32 0, i32 2
  %348 = load double, ptr %347, align 8, !tbaa !18
  %349 = fadd double %334, %348
  %350 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %351 = load ptr, ptr %350, align 8, !tbaa !17
  %352 = load i32, ptr %6, align 4, !tbaa !12
  %353 = sub nsw i32 %352, 1
  %354 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %351, i32 noundef %353)
  %355 = load ptr, ptr %354, align 8, !tbaa !5
  %356 = load i32, ptr %8, align 4, !tbaa !12
  %357 = sext i32 %356 to i64
  %358 = getelementptr inbounds ptr, ptr %355, i64 %357
  %359 = load ptr, ptr %358, align 8, !tbaa !5
  %360 = load i32, ptr %9, align 4, !tbaa !12
  %361 = sext i32 %360 to i64
  %362 = getelementptr inbounds %struct.celle, ptr %359, i64 %361
  %363 = getelementptr inbounds %struct.celle, ptr %362, i32 0, i32 2
  %364 = load double, ptr %363, align 8, !tbaa !18
  %365 = fsub double %349, %364
  %366 = fmul double %303, %365
  %367 = call double @llvm.fmuladd.f64(double %271, double %301, double %366)
  %368 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 9
  %369 = load double, ptr %368, align 8, !tbaa !21
  %370 = getelementptr inbounds %class.five_point_solver, ptr %19, i32 0, i32 6
  %371 = load double, ptr %370, align 8, !tbaa !22
  %372 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %373 = load ptr, ptr %372, align 8, !tbaa !17
  %374 = load i32, ptr %6, align 4, !tbaa !12
  %375 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %373, i32 noundef %374)
  %376 = load ptr, ptr %375, align 8, !tbaa !5
  %377 = load i32, ptr %8, align 4, !tbaa !12
  %378 = sext i32 %377 to i64
  %379 = getelementptr inbounds ptr, ptr %376, i64 %378
  %380 = load ptr, ptr %379, align 8, !tbaa !5
  %381 = load i32, ptr %9, align 4, !tbaa !12
  %382 = add nsw i32 %381, 1
  %383 = sext i32 %382 to i64
  %384 = getelementptr inbounds %struct.celle, ptr %380, i64 %383
  %385 = getelementptr inbounds %struct.celle, ptr %384, i32 0, i32 0
  %386 = load double, ptr %385, align 8, !tbaa !30
  %387 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %388 = load ptr, ptr %387, align 8, !tbaa !17
  %389 = load i32, ptr %6, align 4, !tbaa !12
  %390 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %388, i32 noundef %389)
  %391 = load ptr, ptr %390, align 8, !tbaa !5
  %392 = load i32, ptr %8, align 4, !tbaa !12
  %393 = sext i32 %392 to i64
  %394 = getelementptr inbounds ptr, ptr %391, i64 %393
  %395 = load ptr, ptr %394, align 8, !tbaa !5
  %396 = load i32, ptr %9, align 4, !tbaa !12
  %397 = sext i32 %396 to i64
  %398 = getelementptr inbounds %struct.celle, ptr %395, i64 %397
  %399 = getelementptr inbounds %struct.celle, ptr %398, i32 0, i32 0
  %400 = load double, ptr %399, align 8, !tbaa !30
  %401 = fsub double %386, %400
  %402 = getelementptr inbounds %class.five_point_solver, ptr %19, i32 0, i32 3
  %403 = load double, ptr %402, align 8, !tbaa !24
  %404 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %405 = load ptr, ptr %404, align 8, !tbaa !17
  %406 = load i32, ptr %6, align 4, !tbaa !12
  %407 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %405, i32 noundef %406)
  %408 = load ptr, ptr %407, align 8, !tbaa !5
  %409 = load i32, ptr %8, align 4, !tbaa !12
  %410 = sext i32 %409 to i64
  %411 = getelementptr inbounds ptr, ptr %408, i64 %410
  %412 = load ptr, ptr %411, align 8, !tbaa !5
  %413 = load i32, ptr %9, align 4, !tbaa !12
  %414 = add nsw i32 %413, 2
  %415 = sext i32 %414 to i64
  %416 = getelementptr inbounds %struct.celle, ptr %412, i64 %415
  %417 = getelementptr inbounds %struct.celle, ptr %416, i32 0, i32 0
  %418 = load double, ptr %417, align 8, !tbaa !30
  %419 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %420 = load ptr, ptr %419, align 8, !tbaa !17
  %421 = load i32, ptr %6, align 4, !tbaa !12
  %422 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %420, i32 noundef %421)
  %423 = load ptr, ptr %422, align 8, !tbaa !5
  %424 = load i32, ptr %8, align 4, !tbaa !12
  %425 = sext i32 %424 to i64
  %426 = getelementptr inbounds ptr, ptr %423, i64 %425
  %427 = load ptr, ptr %426, align 8, !tbaa !5
  %428 = load i32, ptr %9, align 4, !tbaa !12
  %429 = add nsw i32 %428, 1
  %430 = sext i32 %429 to i64
  %431 = getelementptr inbounds %struct.celle, ptr %427, i64 %430
  %432 = getelementptr inbounds %struct.celle, ptr %431, i32 0, i32 0
  %433 = load double, ptr %432, align 8, !tbaa !30
  %434 = fsub double %418, %433
  %435 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %436 = load ptr, ptr %435, align 8, !tbaa !17
  %437 = load i32, ptr %6, align 4, !tbaa !12
  %438 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %436, i32 noundef %437)
  %439 = load ptr, ptr %438, align 8, !tbaa !5
  %440 = load i32, ptr %8, align 4, !tbaa !12
  %441 = sext i32 %440 to i64
  %442 = getelementptr inbounds ptr, ptr %439, i64 %441
  %443 = load ptr, ptr %442, align 8, !tbaa !5
  %444 = load i32, ptr %9, align 4, !tbaa !12
  %445 = sext i32 %444 to i64
  %446 = getelementptr inbounds %struct.celle, ptr %443, i64 %445
  %447 = getelementptr inbounds %struct.celle, ptr %446, i32 0, i32 0
  %448 = load double, ptr %447, align 8, !tbaa !30
  %449 = fadd double %434, %448
  %450 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %451 = load ptr, ptr %450, align 8, !tbaa !17
  %452 = load i32, ptr %6, align 4, !tbaa !12
  %453 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %451, i32 noundef %452)
  %454 = load ptr, ptr %453, align 8, !tbaa !5
  %455 = load i32, ptr %8, align 4, !tbaa !12
  %456 = sext i32 %455 to i64
  %457 = getelementptr inbounds ptr, ptr %454, i64 %456
  %458 = load ptr, ptr %457, align 8, !tbaa !5
  %459 = load i32, ptr %9, align 4, !tbaa !12
  %460 = sub nsw i32 %459, 1
  %461 = sext i32 %460 to i64
  %462 = getelementptr inbounds %struct.celle, ptr %458, i64 %461
  %463 = getelementptr inbounds %struct.celle, ptr %462, i32 0, i32 0
  %464 = load double, ptr %463, align 8, !tbaa !30
  %465 = fsub double %449, %464
  %466 = fmul double %403, %465
  %467 = call double @llvm.fmuladd.f64(double %371, double %401, double %466)
  %468 = fmul double %369, %467
  %469 = fneg double %468
  %470 = call double @llvm.fmuladd.f64(double %269, double %367, double %469)
  %471 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 2
  %472 = load ptr, ptr %471, align 8, !tbaa !9
  %473 = load i32, ptr %6, align 4, !tbaa !12
  %474 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5cellbEixEi(ptr noundef nonnull align 8 dereferenceable(40) %472, i32 noundef %473)
  %475 = load ptr, ptr %474, align 8, !tbaa !5
  %476 = load i32, ptr %8, align 4, !tbaa !12
  %477 = sext i32 %476 to i64
  %478 = getelementptr inbounds ptr, ptr %475, i64 %477
  %479 = load ptr, ptr %478, align 8, !tbaa !5
  %480 = load i32, ptr %9, align 4, !tbaa !12
  %481 = sext i32 %480 to i64
  %482 = getelementptr inbounds %struct.cellb, ptr %479, i64 %481
  %483 = getelementptr inbounds %struct.cellb, ptr %482, i32 0, i32 1
  %484 = load double, ptr %483, align 8, !tbaa !31
  %485 = call double @llvm.fmuladd.f64(double 5.000000e-01, double %470, double %484)
  store double %485, ptr %483, align 8, !tbaa !31
  %486 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 8
  %487 = load double, ptr %486, align 8, !tbaa !14
  %488 = getelementptr inbounds %class.five_point_solver, ptr %19, i32 0, i32 5
  %489 = load double, ptr %488, align 8, !tbaa !15
  %490 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %491 = load ptr, ptr %490, align 8, !tbaa !17
  %492 = load i32, ptr %6, align 4, !tbaa !12
  %493 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %491, i32 noundef %492)
  %494 = load ptr, ptr %493, align 8, !tbaa !5
  %495 = load i32, ptr %8, align 4, !tbaa !12
  %496 = add nsw i32 %495, 1
  %497 = sext i32 %496 to i64
  %498 = getelementptr inbounds ptr, ptr %494, i64 %497
  %499 = load ptr, ptr %498, align 8, !tbaa !5
  %500 = load i32, ptr %9, align 4, !tbaa !12
  %501 = sext i32 %500 to i64
  %502 = getelementptr inbounds %struct.celle, ptr %499, i64 %501
  %503 = getelementptr inbounds %struct.celle, ptr %502, i32 0, i32 0
  %504 = load double, ptr %503, align 8, !tbaa !30
  %505 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %506 = load ptr, ptr %505, align 8, !tbaa !17
  %507 = load i32, ptr %6, align 4, !tbaa !12
  %508 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %506, i32 noundef %507)
  %509 = load ptr, ptr %508, align 8, !tbaa !5
  %510 = load i32, ptr %8, align 4, !tbaa !12
  %511 = sext i32 %510 to i64
  %512 = getelementptr inbounds ptr, ptr %509, i64 %511
  %513 = load ptr, ptr %512, align 8, !tbaa !5
  %514 = load i32, ptr %9, align 4, !tbaa !12
  %515 = sext i32 %514 to i64
  %516 = getelementptr inbounds %struct.celle, ptr %513, i64 %515
  %517 = getelementptr inbounds %struct.celle, ptr %516, i32 0, i32 0
  %518 = load double, ptr %517, align 8, !tbaa !30
  %519 = fsub double %504, %518
  %520 = getelementptr inbounds %class.five_point_solver, ptr %19, i32 0, i32 2
  %521 = load double, ptr %520, align 8, !tbaa !20
  %522 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %523 = load ptr, ptr %522, align 8, !tbaa !17
  %524 = load i32, ptr %6, align 4, !tbaa !12
  %525 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %523, i32 noundef %524)
  %526 = load ptr, ptr %525, align 8, !tbaa !5
  %527 = load i32, ptr %8, align 4, !tbaa !12
  %528 = add nsw i32 %527, 2
  %529 = sext i32 %528 to i64
  %530 = getelementptr inbounds ptr, ptr %526, i64 %529
  %531 = load ptr, ptr %530, align 8, !tbaa !5
  %532 = load i32, ptr %9, align 4, !tbaa !12
  %533 = sext i32 %532 to i64
  %534 = getelementptr inbounds %struct.celle, ptr %531, i64 %533
  %535 = getelementptr inbounds %struct.celle, ptr %534, i32 0, i32 0
  %536 = load double, ptr %535, align 8, !tbaa !30
  %537 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %538 = load ptr, ptr %537, align 8, !tbaa !17
  %539 = load i32, ptr %6, align 4, !tbaa !12
  %540 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %538, i32 noundef %539)
  %541 = load ptr, ptr %540, align 8, !tbaa !5
  %542 = load i32, ptr %8, align 4, !tbaa !12
  %543 = add nsw i32 %542, 1
  %544 = sext i32 %543 to i64
  %545 = getelementptr inbounds ptr, ptr %541, i64 %544
  %546 = load ptr, ptr %545, align 8, !tbaa !5
  %547 = load i32, ptr %9, align 4, !tbaa !12
  %548 = sext i32 %547 to i64
  %549 = getelementptr inbounds %struct.celle, ptr %546, i64 %548
  %550 = getelementptr inbounds %struct.celle, ptr %549, i32 0, i32 0
  %551 = load double, ptr %550, align 8, !tbaa !30
  %552 = fsub double %536, %551
  %553 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %554 = load ptr, ptr %553, align 8, !tbaa !17
  %555 = load i32, ptr %6, align 4, !tbaa !12
  %556 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %554, i32 noundef %555)
  %557 = load ptr, ptr %556, align 8, !tbaa !5
  %558 = load i32, ptr %8, align 4, !tbaa !12
  %559 = sext i32 %558 to i64
  %560 = getelementptr inbounds ptr, ptr %557, i64 %559
  %561 = load ptr, ptr %560, align 8, !tbaa !5
  %562 = load i32, ptr %9, align 4, !tbaa !12
  %563 = sext i32 %562 to i64
  %564 = getelementptr inbounds %struct.celle, ptr %561, i64 %563
  %565 = getelementptr inbounds %struct.celle, ptr %564, i32 0, i32 0
  %566 = load double, ptr %565, align 8, !tbaa !30
  %567 = fadd double %552, %566
  %568 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %569 = load ptr, ptr %568, align 8, !tbaa !17
  %570 = load i32, ptr %6, align 4, !tbaa !12
  %571 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %569, i32 noundef %570)
  %572 = load ptr, ptr %571, align 8, !tbaa !5
  %573 = load i32, ptr %8, align 4, !tbaa !12
  %574 = sub nsw i32 %573, 1
  %575 = sext i32 %574 to i64
  %576 = getelementptr inbounds ptr, ptr %572, i64 %575
  %577 = load ptr, ptr %576, align 8, !tbaa !5
  %578 = load i32, ptr %9, align 4, !tbaa !12
  %579 = sext i32 %578 to i64
  %580 = getelementptr inbounds %struct.celle, ptr %577, i64 %579
  %581 = getelementptr inbounds %struct.celle, ptr %580, i32 0, i32 0
  %582 = load double, ptr %581, align 8, !tbaa !30
  %583 = fsub double %567, %582
  %584 = fmul double %521, %583
  %585 = call double @llvm.fmuladd.f64(double %489, double %519, double %584)
  %586 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 7
  %587 = load double, ptr %586, align 8, !tbaa !27
  %588 = getelementptr inbounds %class.five_point_solver, ptr %19, i32 0, i32 4
  %589 = load double, ptr %588, align 8, !tbaa !28
  %590 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %591 = load ptr, ptr %590, align 8, !tbaa !17
  %592 = load i32, ptr %6, align 4, !tbaa !12
  %593 = add nsw i32 %592, 1
  %594 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %591, i32 noundef %593)
  %595 = load ptr, ptr %594, align 8, !tbaa !5
  %596 = load i32, ptr %8, align 4, !tbaa !12
  %597 = sext i32 %596 to i64
  %598 = getelementptr inbounds ptr, ptr %595, i64 %597
  %599 = load ptr, ptr %598, align 8, !tbaa !5
  %600 = load i32, ptr %9, align 4, !tbaa !12
  %601 = sext i32 %600 to i64
  %602 = getelementptr inbounds %struct.celle, ptr %599, i64 %601
  %603 = getelementptr inbounds %struct.celle, ptr %602, i32 0, i32 1
  %604 = load double, ptr %603, align 8, !tbaa !23
  %605 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %606 = load ptr, ptr %605, align 8, !tbaa !17
  %607 = load i32, ptr %6, align 4, !tbaa !12
  %608 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %606, i32 noundef %607)
  %609 = load ptr, ptr %608, align 8, !tbaa !5
  %610 = load i32, ptr %8, align 4, !tbaa !12
  %611 = sext i32 %610 to i64
  %612 = getelementptr inbounds ptr, ptr %609, i64 %611
  %613 = load ptr, ptr %612, align 8, !tbaa !5
  %614 = load i32, ptr %9, align 4, !tbaa !12
  %615 = sext i32 %614 to i64
  %616 = getelementptr inbounds %struct.celle, ptr %613, i64 %615
  %617 = getelementptr inbounds %struct.celle, ptr %616, i32 0, i32 1
  %618 = load double, ptr %617, align 8, !tbaa !23
  %619 = fsub double %604, %618
  %620 = getelementptr inbounds %class.five_point_solver, ptr %19, i32 0, i32 1
  %621 = load double, ptr %620, align 8, !tbaa !29
  %622 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %623 = load ptr, ptr %622, align 8, !tbaa !17
  %624 = load i32, ptr %6, align 4, !tbaa !12
  %625 = add nsw i32 %624, 2
  %626 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %623, i32 noundef %625)
  %627 = load ptr, ptr %626, align 8, !tbaa !5
  %628 = load i32, ptr %8, align 4, !tbaa !12
  %629 = sext i32 %628 to i64
  %630 = getelementptr inbounds ptr, ptr %627, i64 %629
  %631 = load ptr, ptr %630, align 8, !tbaa !5
  %632 = load i32, ptr %9, align 4, !tbaa !12
  %633 = sext i32 %632 to i64
  %634 = getelementptr inbounds %struct.celle, ptr %631, i64 %633
  %635 = getelementptr inbounds %struct.celle, ptr %634, i32 0, i32 1
  %636 = load double, ptr %635, align 8, !tbaa !23
  %637 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %638 = load ptr, ptr %637, align 8, !tbaa !17
  %639 = load i32, ptr %6, align 4, !tbaa !12
  %640 = add nsw i32 %639, 1
  %641 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %638, i32 noundef %640)
  %642 = load ptr, ptr %641, align 8, !tbaa !5
  %643 = load i32, ptr %8, align 4, !tbaa !12
  %644 = sext i32 %643 to i64
  %645 = getelementptr inbounds ptr, ptr %642, i64 %644
  %646 = load ptr, ptr %645, align 8, !tbaa !5
  %647 = load i32, ptr %9, align 4, !tbaa !12
  %648 = sext i32 %647 to i64
  %649 = getelementptr inbounds %struct.celle, ptr %646, i64 %648
  %650 = getelementptr inbounds %struct.celle, ptr %649, i32 0, i32 1
  %651 = load double, ptr %650, align 8, !tbaa !23
  %652 = fsub double %636, %651
  %653 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %654 = load ptr, ptr %653, align 8, !tbaa !17
  %655 = load i32, ptr %6, align 4, !tbaa !12
  %656 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %654, i32 noundef %655)
  %657 = load ptr, ptr %656, align 8, !tbaa !5
  %658 = load i32, ptr %8, align 4, !tbaa !12
  %659 = sext i32 %658 to i64
  %660 = getelementptr inbounds ptr, ptr %657, i64 %659
  %661 = load ptr, ptr %660, align 8, !tbaa !5
  %662 = load i32, ptr %9, align 4, !tbaa !12
  %663 = sext i32 %662 to i64
  %664 = getelementptr inbounds %struct.celle, ptr %661, i64 %663
  %665 = getelementptr inbounds %struct.celle, ptr %664, i32 0, i32 1
  %666 = load double, ptr %665, align 8, !tbaa !23
  %667 = fadd double %652, %666
  %668 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %669 = load ptr, ptr %668, align 8, !tbaa !17
  %670 = load i32, ptr %6, align 4, !tbaa !12
  %671 = sub nsw i32 %670, 1
  %672 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %669, i32 noundef %671)
  %673 = load ptr, ptr %672, align 8, !tbaa !5
  %674 = load i32, ptr %8, align 4, !tbaa !12
  %675 = sext i32 %674 to i64
  %676 = getelementptr inbounds ptr, ptr %673, i64 %675
  %677 = load ptr, ptr %676, align 8, !tbaa !5
  %678 = load i32, ptr %9, align 4, !tbaa !12
  %679 = sext i32 %678 to i64
  %680 = getelementptr inbounds %struct.celle, ptr %677, i64 %679
  %681 = getelementptr inbounds %struct.celle, ptr %680, i32 0, i32 1
  %682 = load double, ptr %681, align 8, !tbaa !23
  %683 = fsub double %667, %682
  %684 = fmul double %621, %683
  %685 = call double @llvm.fmuladd.f64(double %589, double %619, double %684)
  %686 = fmul double %587, %685
  %687 = fneg double %686
  %688 = call double @llvm.fmuladd.f64(double %487, double %585, double %687)
  %689 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 2
  %690 = load ptr, ptr %689, align 8, !tbaa !9
  %691 = load i32, ptr %6, align 4, !tbaa !12
  %692 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5cellbEixEi(ptr noundef nonnull align 8 dereferenceable(40) %690, i32 noundef %691)
  %693 = load ptr, ptr %692, align 8, !tbaa !5
  %694 = load i32, ptr %8, align 4, !tbaa !12
  %695 = sext i32 %694 to i64
  %696 = getelementptr inbounds ptr, ptr %693, i64 %695
  %697 = load ptr, ptr %696, align 8, !tbaa !5
  %698 = load i32, ptr %9, align 4, !tbaa !12
  %699 = sext i32 %698 to i64
  %700 = getelementptr inbounds %struct.cellb, ptr %697, i64 %699
  %701 = getelementptr inbounds %struct.cellb, ptr %700, i32 0, i32 2
  %702 = load double, ptr %701, align 8, !tbaa !32
  %703 = call double @llvm.fmuladd.f64(double 5.000000e-01, double %688, double %702)
  store double %703, ptr %701, align 8, !tbaa !32
  br label %704

704:                                              ; preds = %49
  %705 = load i32, ptr %9, align 4, !tbaa !12
  %706 = add nsw i32 %705, 1
  store i32 %706, ptr %9, align 4, !tbaa !12
  br label %43, !llvm.loop !33

707:                                              ; preds = %48
  br label %708

708:                                              ; preds = %707
  %709 = load i32, ptr %8, align 4, !tbaa !12
  %710 = add nsw i32 %709, 1
  store i32 %710, ptr %8, align 4, !tbaa !12
  br label %36, !llvm.loop !35

711:                                              ; preds = %41
  br label %712

712:                                              ; preds = %711
  %713 = load i32, ptr %6, align 4, !tbaa !12
  %714 = add nsw i32 %713, 1
  store i32 %714, ptr %6, align 4, !tbaa !12
  br label %29, !llvm.loop !36

715:                                              ; preds = %34
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #5
  %716 = load i32, ptr %3, align 4, !tbaa !12
  %717 = sub nsw i32 %716, 1
  store i32 %717, ptr %10, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #5
  store i32 1, ptr %11, align 4, !tbaa !12
  br label %718

718:                                              ; preds = %1296, %715
  %719 = load i32, ptr %11, align 4, !tbaa !12
  %720 = load i32, ptr %4, align 4, !tbaa !12
  %721 = sub nsw i32 %720, 2
  %722 = icmp slt i32 %719, %721
  br i1 %722, label %724, label %723

723:                                              ; preds = %718
  store i32 11, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #5
  br label %1299

724:                                              ; preds = %718
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #5
  store i32 1, ptr %12, align 4, !tbaa !12
  br label %725

725:                                              ; preds = %1292, %724
  %726 = load i32, ptr %12, align 4, !tbaa !12
  %727 = load i32, ptr %5, align 4, !tbaa !12
  %728 = sub nsw i32 %727, 2
  %729 = icmp slt i32 %726, %728
  br i1 %729, label %731, label %730

730:                                              ; preds = %725
  store i32 14, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #5
  br label %1295

731:                                              ; preds = %725
  %732 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 8
  %733 = load double, ptr %732, align 8, !tbaa !14
  %734 = fneg double %733
  %735 = getelementptr inbounds %class.five_point_solver, ptr %19, i32 0, i32 5
  %736 = load double, ptr %735, align 8, !tbaa !15
  %737 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %738 = load ptr, ptr %737, align 8, !tbaa !17
  %739 = load i32, ptr %10, align 4, !tbaa !12
  %740 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %738, i32 noundef %739)
  %741 = load ptr, ptr %740, align 8, !tbaa !5
  %742 = load i32, ptr %11, align 4, !tbaa !12
  %743 = add nsw i32 %742, 1
  %744 = sext i32 %743 to i64
  %745 = getelementptr inbounds ptr, ptr %741, i64 %744
  %746 = load ptr, ptr %745, align 8, !tbaa !5
  %747 = load i32, ptr %12, align 4, !tbaa !12
  %748 = sext i32 %747 to i64
  %749 = getelementptr inbounds %struct.celle, ptr %746, i64 %748
  %750 = getelementptr inbounds %struct.celle, ptr %749, i32 0, i32 2
  %751 = load double, ptr %750, align 8, !tbaa !18
  %752 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %753 = load ptr, ptr %752, align 8, !tbaa !17
  %754 = load i32, ptr %10, align 4, !tbaa !12
  %755 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %753, i32 noundef %754)
  %756 = load ptr, ptr %755, align 8, !tbaa !5
  %757 = load i32, ptr %11, align 4, !tbaa !12
  %758 = sext i32 %757 to i64
  %759 = getelementptr inbounds ptr, ptr %756, i64 %758
  %760 = load ptr, ptr %759, align 8, !tbaa !5
  %761 = load i32, ptr %12, align 4, !tbaa !12
  %762 = sext i32 %761 to i64
  %763 = getelementptr inbounds %struct.celle, ptr %760, i64 %762
  %764 = getelementptr inbounds %struct.celle, ptr %763, i32 0, i32 2
  %765 = load double, ptr %764, align 8, !tbaa !18
  %766 = fsub double %751, %765
  %767 = getelementptr inbounds %class.five_point_solver, ptr %19, i32 0, i32 2
  %768 = load double, ptr %767, align 8, !tbaa !20
  %769 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %770 = load ptr, ptr %769, align 8, !tbaa !17
  %771 = load i32, ptr %10, align 4, !tbaa !12
  %772 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %770, i32 noundef %771)
  %773 = load ptr, ptr %772, align 8, !tbaa !5
  %774 = load i32, ptr %11, align 4, !tbaa !12
  %775 = add nsw i32 %774, 2
  %776 = sext i32 %775 to i64
  %777 = getelementptr inbounds ptr, ptr %773, i64 %776
  %778 = load ptr, ptr %777, align 8, !tbaa !5
  %779 = load i32, ptr %12, align 4, !tbaa !12
  %780 = sext i32 %779 to i64
  %781 = getelementptr inbounds %struct.celle, ptr %778, i64 %780
  %782 = getelementptr inbounds %struct.celle, ptr %781, i32 0, i32 2
  %783 = load double, ptr %782, align 8, !tbaa !18
  %784 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %785 = load ptr, ptr %784, align 8, !tbaa !17
  %786 = load i32, ptr %10, align 4, !tbaa !12
  %787 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %785, i32 noundef %786)
  %788 = load ptr, ptr %787, align 8, !tbaa !5
  %789 = load i32, ptr %11, align 4, !tbaa !12
  %790 = add nsw i32 %789, 1
  %791 = sext i32 %790 to i64
  %792 = getelementptr inbounds ptr, ptr %788, i64 %791
  %793 = load ptr, ptr %792, align 8, !tbaa !5
  %794 = load i32, ptr %12, align 4, !tbaa !12
  %795 = sext i32 %794 to i64
  %796 = getelementptr inbounds %struct.celle, ptr %793, i64 %795
  %797 = getelementptr inbounds %struct.celle, ptr %796, i32 0, i32 2
  %798 = load double, ptr %797, align 8, !tbaa !18
  %799 = fsub double %783, %798
  %800 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %801 = load ptr, ptr %800, align 8, !tbaa !17
  %802 = load i32, ptr %10, align 4, !tbaa !12
  %803 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %801, i32 noundef %802)
  %804 = load ptr, ptr %803, align 8, !tbaa !5
  %805 = load i32, ptr %11, align 4, !tbaa !12
  %806 = sext i32 %805 to i64
  %807 = getelementptr inbounds ptr, ptr %804, i64 %806
  %808 = load ptr, ptr %807, align 8, !tbaa !5
  %809 = load i32, ptr %12, align 4, !tbaa !12
  %810 = sext i32 %809 to i64
  %811 = getelementptr inbounds %struct.celle, ptr %808, i64 %810
  %812 = getelementptr inbounds %struct.celle, ptr %811, i32 0, i32 2
  %813 = load double, ptr %812, align 8, !tbaa !18
  %814 = fadd double %799, %813
  %815 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %816 = load ptr, ptr %815, align 8, !tbaa !17
  %817 = load i32, ptr %10, align 4, !tbaa !12
  %818 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %816, i32 noundef %817)
  %819 = load ptr, ptr %818, align 8, !tbaa !5
  %820 = load i32, ptr %11, align 4, !tbaa !12
  %821 = sub nsw i32 %820, 1
  %822 = sext i32 %821 to i64
  %823 = getelementptr inbounds ptr, ptr %819, i64 %822
  %824 = load ptr, ptr %823, align 8, !tbaa !5
  %825 = load i32, ptr %12, align 4, !tbaa !12
  %826 = sext i32 %825 to i64
  %827 = getelementptr inbounds %struct.celle, ptr %824, i64 %826
  %828 = getelementptr inbounds %struct.celle, ptr %827, i32 0, i32 2
  %829 = load double, ptr %828, align 8, !tbaa !18
  %830 = fsub double %814, %829
  %831 = fmul double %768, %830
  %832 = call double @llvm.fmuladd.f64(double %736, double %766, double %831)
  %833 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 9
  %834 = load double, ptr %833, align 8, !tbaa !21
  %835 = getelementptr inbounds %class.five_point_solver, ptr %19, i32 0, i32 6
  %836 = load double, ptr %835, align 8, !tbaa !22
  %837 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %838 = load ptr, ptr %837, align 8, !tbaa !17
  %839 = load i32, ptr %10, align 4, !tbaa !12
  %840 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %838, i32 noundef %839)
  %841 = load ptr, ptr %840, align 8, !tbaa !5
  %842 = load i32, ptr %11, align 4, !tbaa !12
  %843 = sext i32 %842 to i64
  %844 = getelementptr inbounds ptr, ptr %841, i64 %843
  %845 = load ptr, ptr %844, align 8, !tbaa !5
  %846 = load i32, ptr %12, align 4, !tbaa !12
  %847 = add nsw i32 %846, 1
  %848 = sext i32 %847 to i64
  %849 = getelementptr inbounds %struct.celle, ptr %845, i64 %848
  %850 = getelementptr inbounds %struct.celle, ptr %849, i32 0, i32 1
  %851 = load double, ptr %850, align 8, !tbaa !23
  %852 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %853 = load ptr, ptr %852, align 8, !tbaa !17
  %854 = load i32, ptr %10, align 4, !tbaa !12
  %855 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %853, i32 noundef %854)
  %856 = load ptr, ptr %855, align 8, !tbaa !5
  %857 = load i32, ptr %11, align 4, !tbaa !12
  %858 = sext i32 %857 to i64
  %859 = getelementptr inbounds ptr, ptr %856, i64 %858
  %860 = load ptr, ptr %859, align 8, !tbaa !5
  %861 = load i32, ptr %12, align 4, !tbaa !12
  %862 = sext i32 %861 to i64
  %863 = getelementptr inbounds %struct.celle, ptr %860, i64 %862
  %864 = getelementptr inbounds %struct.celle, ptr %863, i32 0, i32 1
  %865 = load double, ptr %864, align 8, !tbaa !23
  %866 = fsub double %851, %865
  %867 = getelementptr inbounds %class.five_point_solver, ptr %19, i32 0, i32 3
  %868 = load double, ptr %867, align 8, !tbaa !24
  %869 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %870 = load ptr, ptr %869, align 8, !tbaa !17
  %871 = load i32, ptr %10, align 4, !tbaa !12
  %872 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %870, i32 noundef %871)
  %873 = load ptr, ptr %872, align 8, !tbaa !5
  %874 = load i32, ptr %11, align 4, !tbaa !12
  %875 = sext i32 %874 to i64
  %876 = getelementptr inbounds ptr, ptr %873, i64 %875
  %877 = load ptr, ptr %876, align 8, !tbaa !5
  %878 = load i32, ptr %12, align 4, !tbaa !12
  %879 = add nsw i32 %878, 2
  %880 = sext i32 %879 to i64
  %881 = getelementptr inbounds %struct.celle, ptr %877, i64 %880
  %882 = getelementptr inbounds %struct.celle, ptr %881, i32 0, i32 1
  %883 = load double, ptr %882, align 8, !tbaa !23
  %884 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %885 = load ptr, ptr %884, align 8, !tbaa !17
  %886 = load i32, ptr %10, align 4, !tbaa !12
  %887 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %885, i32 noundef %886)
  %888 = load ptr, ptr %887, align 8, !tbaa !5
  %889 = load i32, ptr %11, align 4, !tbaa !12
  %890 = sext i32 %889 to i64
  %891 = getelementptr inbounds ptr, ptr %888, i64 %890
  %892 = load ptr, ptr %891, align 8, !tbaa !5
  %893 = load i32, ptr %12, align 4, !tbaa !12
  %894 = add nsw i32 %893, 1
  %895 = sext i32 %894 to i64
  %896 = getelementptr inbounds %struct.celle, ptr %892, i64 %895
  %897 = getelementptr inbounds %struct.celle, ptr %896, i32 0, i32 1
  %898 = load double, ptr %897, align 8, !tbaa !23
  %899 = fsub double %883, %898
  %900 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %901 = load ptr, ptr %900, align 8, !tbaa !17
  %902 = load i32, ptr %10, align 4, !tbaa !12
  %903 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %901, i32 noundef %902)
  %904 = load ptr, ptr %903, align 8, !tbaa !5
  %905 = load i32, ptr %11, align 4, !tbaa !12
  %906 = sext i32 %905 to i64
  %907 = getelementptr inbounds ptr, ptr %904, i64 %906
  %908 = load ptr, ptr %907, align 8, !tbaa !5
  %909 = load i32, ptr %12, align 4, !tbaa !12
  %910 = sext i32 %909 to i64
  %911 = getelementptr inbounds %struct.celle, ptr %908, i64 %910
  %912 = getelementptr inbounds %struct.celle, ptr %911, i32 0, i32 1
  %913 = load double, ptr %912, align 8, !tbaa !23
  %914 = fadd double %899, %913
  %915 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %916 = load ptr, ptr %915, align 8, !tbaa !17
  %917 = load i32, ptr %10, align 4, !tbaa !12
  %918 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %916, i32 noundef %917)
  %919 = load ptr, ptr %918, align 8, !tbaa !5
  %920 = load i32, ptr %11, align 4, !tbaa !12
  %921 = sext i32 %920 to i64
  %922 = getelementptr inbounds ptr, ptr %919, i64 %921
  %923 = load ptr, ptr %922, align 8, !tbaa !5
  %924 = load i32, ptr %12, align 4, !tbaa !12
  %925 = sub nsw i32 %924, 1
  %926 = sext i32 %925 to i64
  %927 = getelementptr inbounds %struct.celle, ptr %923, i64 %926
  %928 = getelementptr inbounds %struct.celle, ptr %927, i32 0, i32 1
  %929 = load double, ptr %928, align 8, !tbaa !23
  %930 = fsub double %914, %929
  %931 = fmul double %868, %930
  %932 = call double @llvm.fmuladd.f64(double %836, double %866, double %931)
  %933 = fmul double %834, %932
  %934 = call double @llvm.fmuladd.f64(double %734, double %832, double %933)
  %935 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 2
  %936 = load ptr, ptr %935, align 8, !tbaa !9
  %937 = load i32, ptr %10, align 4, !tbaa !12
  %938 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5cellbEixEi(ptr noundef nonnull align 8 dereferenceable(40) %936, i32 noundef %937)
  %939 = load ptr, ptr %938, align 8, !tbaa !5
  %940 = load i32, ptr %11, align 4, !tbaa !12
  %941 = sext i32 %940 to i64
  %942 = getelementptr inbounds ptr, ptr %939, i64 %941
  %943 = load ptr, ptr %942, align 8, !tbaa !5
  %944 = load i32, ptr %12, align 4, !tbaa !12
  %945 = sext i32 %944 to i64
  %946 = getelementptr inbounds %struct.cellb, ptr %943, i64 %945
  %947 = getelementptr inbounds %struct.cellb, ptr %946, i32 0, i32 0
  %948 = load double, ptr %947, align 8, !tbaa !25
  %949 = call double @llvm.fmuladd.f64(double 5.000000e-01, double %934, double %948)
  store double %949, ptr %947, align 8, !tbaa !25
  %950 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 7
  %951 = load double, ptr %950, align 8, !tbaa !27
  %952 = getelementptr inbounds %class.five_point_solver, ptr %19, i32 0, i32 4
  %953 = load double, ptr %952, align 8, !tbaa !28
  %954 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %955 = load ptr, ptr %954, align 8, !tbaa !17
  %956 = load i32, ptr %10, align 4, !tbaa !12
  %957 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %955, i32 noundef %956)
  %958 = load ptr, ptr %957, align 8, !tbaa !5
  %959 = load i32, ptr %11, align 4, !tbaa !12
  %960 = sext i32 %959 to i64
  %961 = getelementptr inbounds ptr, ptr %958, i64 %960
  %962 = load ptr, ptr %961, align 8, !tbaa !5
  %963 = load i32, ptr %12, align 4, !tbaa !12
  %964 = sext i32 %963 to i64
  %965 = getelementptr inbounds %struct.celle, ptr %962, i64 %964
  %966 = getelementptr inbounds %struct.celle, ptr %965, i32 0, i32 2
  %967 = load double, ptr %966, align 8, !tbaa !18
  %968 = fneg double %967
  %969 = getelementptr inbounds %class.five_point_solver, ptr %19, i32 0, i32 1
  %970 = load double, ptr %969, align 8, !tbaa !29
  %971 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %972 = load ptr, ptr %971, align 8, !tbaa !17
  %973 = load i32, ptr %10, align 4, !tbaa !12
  %974 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %972, i32 noundef %973)
  %975 = load ptr, ptr %974, align 8, !tbaa !5
  %976 = load i32, ptr %11, align 4, !tbaa !12
  %977 = sext i32 %976 to i64
  %978 = getelementptr inbounds ptr, ptr %975, i64 %977
  %979 = load ptr, ptr %978, align 8, !tbaa !5
  %980 = load i32, ptr %12, align 4, !tbaa !12
  %981 = sext i32 %980 to i64
  %982 = getelementptr inbounds %struct.celle, ptr %979, i64 %981
  %983 = getelementptr inbounds %struct.celle, ptr %982, i32 0, i32 2
  %984 = load double, ptr %983, align 8, !tbaa !18
  %985 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %986 = load ptr, ptr %985, align 8, !tbaa !17
  %987 = load i32, ptr %10, align 4, !tbaa !12
  %988 = sub nsw i32 %987, 1
  %989 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %986, i32 noundef %988)
  %990 = load ptr, ptr %989, align 8, !tbaa !5
  %991 = load i32, ptr %11, align 4, !tbaa !12
  %992 = sext i32 %991 to i64
  %993 = getelementptr inbounds ptr, ptr %990, i64 %992
  %994 = load ptr, ptr %993, align 8, !tbaa !5
  %995 = load i32, ptr %12, align 4, !tbaa !12
  %996 = sext i32 %995 to i64
  %997 = getelementptr inbounds %struct.celle, ptr %994, i64 %996
  %998 = getelementptr inbounds %struct.celle, ptr %997, i32 0, i32 2
  %999 = load double, ptr %998, align 8, !tbaa !18
  %1000 = fsub double %984, %999
  %1001 = fmul double %970, %1000
  %1002 = call double @llvm.fmuladd.f64(double %953, double %968, double %1001)
  %1003 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 9
  %1004 = load double, ptr %1003, align 8, !tbaa !21
  %1005 = getelementptr inbounds %class.five_point_solver, ptr %19, i32 0, i32 6
  %1006 = load double, ptr %1005, align 8, !tbaa !22
  %1007 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %1008 = load ptr, ptr %1007, align 8, !tbaa !17
  %1009 = load i32, ptr %10, align 4, !tbaa !12
  %1010 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1008, i32 noundef %1009)
  %1011 = load ptr, ptr %1010, align 8, !tbaa !5
  %1012 = load i32, ptr %11, align 4, !tbaa !12
  %1013 = sext i32 %1012 to i64
  %1014 = getelementptr inbounds ptr, ptr %1011, i64 %1013
  %1015 = load ptr, ptr %1014, align 8, !tbaa !5
  %1016 = load i32, ptr %12, align 4, !tbaa !12
  %1017 = add nsw i32 %1016, 1
  %1018 = sext i32 %1017 to i64
  %1019 = getelementptr inbounds %struct.celle, ptr %1015, i64 %1018
  %1020 = getelementptr inbounds %struct.celle, ptr %1019, i32 0, i32 0
  %1021 = load double, ptr %1020, align 8, !tbaa !30
  %1022 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %1023 = load ptr, ptr %1022, align 8, !tbaa !17
  %1024 = load i32, ptr %10, align 4, !tbaa !12
  %1025 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1023, i32 noundef %1024)
  %1026 = load ptr, ptr %1025, align 8, !tbaa !5
  %1027 = load i32, ptr %11, align 4, !tbaa !12
  %1028 = sext i32 %1027 to i64
  %1029 = getelementptr inbounds ptr, ptr %1026, i64 %1028
  %1030 = load ptr, ptr %1029, align 8, !tbaa !5
  %1031 = load i32, ptr %12, align 4, !tbaa !12
  %1032 = sext i32 %1031 to i64
  %1033 = getelementptr inbounds %struct.celle, ptr %1030, i64 %1032
  %1034 = getelementptr inbounds %struct.celle, ptr %1033, i32 0, i32 0
  %1035 = load double, ptr %1034, align 8, !tbaa !30
  %1036 = fsub double %1021, %1035
  %1037 = getelementptr inbounds %class.five_point_solver, ptr %19, i32 0, i32 3
  %1038 = load double, ptr %1037, align 8, !tbaa !24
  %1039 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %1040 = load ptr, ptr %1039, align 8, !tbaa !17
  %1041 = load i32, ptr %10, align 4, !tbaa !12
  %1042 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1040, i32 noundef %1041)
  %1043 = load ptr, ptr %1042, align 8, !tbaa !5
  %1044 = load i32, ptr %11, align 4, !tbaa !12
  %1045 = sext i32 %1044 to i64
  %1046 = getelementptr inbounds ptr, ptr %1043, i64 %1045
  %1047 = load ptr, ptr %1046, align 8, !tbaa !5
  %1048 = load i32, ptr %12, align 4, !tbaa !12
  %1049 = add nsw i32 %1048, 2
  %1050 = sext i32 %1049 to i64
  %1051 = getelementptr inbounds %struct.celle, ptr %1047, i64 %1050
  %1052 = getelementptr inbounds %struct.celle, ptr %1051, i32 0, i32 0
  %1053 = load double, ptr %1052, align 8, !tbaa !30
  %1054 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %1055 = load ptr, ptr %1054, align 8, !tbaa !17
  %1056 = load i32, ptr %10, align 4, !tbaa !12
  %1057 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1055, i32 noundef %1056)
  %1058 = load ptr, ptr %1057, align 8, !tbaa !5
  %1059 = load i32, ptr %11, align 4, !tbaa !12
  %1060 = sext i32 %1059 to i64
  %1061 = getelementptr inbounds ptr, ptr %1058, i64 %1060
  %1062 = load ptr, ptr %1061, align 8, !tbaa !5
  %1063 = load i32, ptr %12, align 4, !tbaa !12
  %1064 = add nsw i32 %1063, 1
  %1065 = sext i32 %1064 to i64
  %1066 = getelementptr inbounds %struct.celle, ptr %1062, i64 %1065
  %1067 = getelementptr inbounds %struct.celle, ptr %1066, i32 0, i32 0
  %1068 = load double, ptr %1067, align 8, !tbaa !30
  %1069 = fsub double %1053, %1068
  %1070 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %1071 = load ptr, ptr %1070, align 8, !tbaa !17
  %1072 = load i32, ptr %10, align 4, !tbaa !12
  %1073 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1071, i32 noundef %1072)
  %1074 = load ptr, ptr %1073, align 8, !tbaa !5
  %1075 = load i32, ptr %11, align 4, !tbaa !12
  %1076 = sext i32 %1075 to i64
  %1077 = getelementptr inbounds ptr, ptr %1074, i64 %1076
  %1078 = load ptr, ptr %1077, align 8, !tbaa !5
  %1079 = load i32, ptr %12, align 4, !tbaa !12
  %1080 = sext i32 %1079 to i64
  %1081 = getelementptr inbounds %struct.celle, ptr %1078, i64 %1080
  %1082 = getelementptr inbounds %struct.celle, ptr %1081, i32 0, i32 0
  %1083 = load double, ptr %1082, align 8, !tbaa !30
  %1084 = fadd double %1069, %1083
  %1085 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %1086 = load ptr, ptr %1085, align 8, !tbaa !17
  %1087 = load i32, ptr %10, align 4, !tbaa !12
  %1088 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1086, i32 noundef %1087)
  %1089 = load ptr, ptr %1088, align 8, !tbaa !5
  %1090 = load i32, ptr %11, align 4, !tbaa !12
  %1091 = sext i32 %1090 to i64
  %1092 = getelementptr inbounds ptr, ptr %1089, i64 %1091
  %1093 = load ptr, ptr %1092, align 8, !tbaa !5
  %1094 = load i32, ptr %12, align 4, !tbaa !12
  %1095 = sub nsw i32 %1094, 1
  %1096 = sext i32 %1095 to i64
  %1097 = getelementptr inbounds %struct.celle, ptr %1093, i64 %1096
  %1098 = getelementptr inbounds %struct.celle, ptr %1097, i32 0, i32 0
  %1099 = load double, ptr %1098, align 8, !tbaa !30
  %1100 = fsub double %1084, %1099
  %1101 = fmul double %1038, %1100
  %1102 = call double @llvm.fmuladd.f64(double %1006, double %1036, double %1101)
  %1103 = fmul double %1004, %1102
  %1104 = fneg double %1103
  %1105 = call double @llvm.fmuladd.f64(double %951, double %1002, double %1104)
  %1106 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 2
  %1107 = load ptr, ptr %1106, align 8, !tbaa !9
  %1108 = load i32, ptr %10, align 4, !tbaa !12
  %1109 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5cellbEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1107, i32 noundef %1108)
  %1110 = load ptr, ptr %1109, align 8, !tbaa !5
  %1111 = load i32, ptr %11, align 4, !tbaa !12
  %1112 = sext i32 %1111 to i64
  %1113 = getelementptr inbounds ptr, ptr %1110, i64 %1112
  %1114 = load ptr, ptr %1113, align 8, !tbaa !5
  %1115 = load i32, ptr %12, align 4, !tbaa !12
  %1116 = sext i32 %1115 to i64
  %1117 = getelementptr inbounds %struct.cellb, ptr %1114, i64 %1116
  %1118 = getelementptr inbounds %struct.cellb, ptr %1117, i32 0, i32 1
  %1119 = load double, ptr %1118, align 8, !tbaa !31
  %1120 = call double @llvm.fmuladd.f64(double 5.000000e-01, double %1105, double %1119)
  store double %1120, ptr %1118, align 8, !tbaa !31
  %1121 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 8
  %1122 = load double, ptr %1121, align 8, !tbaa !14
  %1123 = getelementptr inbounds %class.five_point_solver, ptr %19, i32 0, i32 5
  %1124 = load double, ptr %1123, align 8, !tbaa !15
  %1125 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %1126 = load ptr, ptr %1125, align 8, !tbaa !17
  %1127 = load i32, ptr %10, align 4, !tbaa !12
  %1128 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1126, i32 noundef %1127)
  %1129 = load ptr, ptr %1128, align 8, !tbaa !5
  %1130 = load i32, ptr %11, align 4, !tbaa !12
  %1131 = add nsw i32 %1130, 1
  %1132 = sext i32 %1131 to i64
  %1133 = getelementptr inbounds ptr, ptr %1129, i64 %1132
  %1134 = load ptr, ptr %1133, align 8, !tbaa !5
  %1135 = load i32, ptr %12, align 4, !tbaa !12
  %1136 = sext i32 %1135 to i64
  %1137 = getelementptr inbounds %struct.celle, ptr %1134, i64 %1136
  %1138 = getelementptr inbounds %struct.celle, ptr %1137, i32 0, i32 0
  %1139 = load double, ptr %1138, align 8, !tbaa !30
  %1140 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %1141 = load ptr, ptr %1140, align 8, !tbaa !17
  %1142 = load i32, ptr %10, align 4, !tbaa !12
  %1143 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1141, i32 noundef %1142)
  %1144 = load ptr, ptr %1143, align 8, !tbaa !5
  %1145 = load i32, ptr %11, align 4, !tbaa !12
  %1146 = sext i32 %1145 to i64
  %1147 = getelementptr inbounds ptr, ptr %1144, i64 %1146
  %1148 = load ptr, ptr %1147, align 8, !tbaa !5
  %1149 = load i32, ptr %12, align 4, !tbaa !12
  %1150 = sext i32 %1149 to i64
  %1151 = getelementptr inbounds %struct.celle, ptr %1148, i64 %1150
  %1152 = getelementptr inbounds %struct.celle, ptr %1151, i32 0, i32 0
  %1153 = load double, ptr %1152, align 8, !tbaa !30
  %1154 = fsub double %1139, %1153
  %1155 = getelementptr inbounds %class.five_point_solver, ptr %19, i32 0, i32 2
  %1156 = load double, ptr %1155, align 8, !tbaa !20
  %1157 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %1158 = load ptr, ptr %1157, align 8, !tbaa !17
  %1159 = load i32, ptr %10, align 4, !tbaa !12
  %1160 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1158, i32 noundef %1159)
  %1161 = load ptr, ptr %1160, align 8, !tbaa !5
  %1162 = load i32, ptr %11, align 4, !tbaa !12
  %1163 = add nsw i32 %1162, 2
  %1164 = sext i32 %1163 to i64
  %1165 = getelementptr inbounds ptr, ptr %1161, i64 %1164
  %1166 = load ptr, ptr %1165, align 8, !tbaa !5
  %1167 = load i32, ptr %12, align 4, !tbaa !12
  %1168 = sext i32 %1167 to i64
  %1169 = getelementptr inbounds %struct.celle, ptr %1166, i64 %1168
  %1170 = getelementptr inbounds %struct.celle, ptr %1169, i32 0, i32 0
  %1171 = load double, ptr %1170, align 8, !tbaa !30
  %1172 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %1173 = load ptr, ptr %1172, align 8, !tbaa !17
  %1174 = load i32, ptr %10, align 4, !tbaa !12
  %1175 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1173, i32 noundef %1174)
  %1176 = load ptr, ptr %1175, align 8, !tbaa !5
  %1177 = load i32, ptr %11, align 4, !tbaa !12
  %1178 = add nsw i32 %1177, 1
  %1179 = sext i32 %1178 to i64
  %1180 = getelementptr inbounds ptr, ptr %1176, i64 %1179
  %1181 = load ptr, ptr %1180, align 8, !tbaa !5
  %1182 = load i32, ptr %12, align 4, !tbaa !12
  %1183 = sext i32 %1182 to i64
  %1184 = getelementptr inbounds %struct.celle, ptr %1181, i64 %1183
  %1185 = getelementptr inbounds %struct.celle, ptr %1184, i32 0, i32 0
  %1186 = load double, ptr %1185, align 8, !tbaa !30
  %1187 = fsub double %1171, %1186
  %1188 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %1189 = load ptr, ptr %1188, align 8, !tbaa !17
  %1190 = load i32, ptr %10, align 4, !tbaa !12
  %1191 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1189, i32 noundef %1190)
  %1192 = load ptr, ptr %1191, align 8, !tbaa !5
  %1193 = load i32, ptr %11, align 4, !tbaa !12
  %1194 = sext i32 %1193 to i64
  %1195 = getelementptr inbounds ptr, ptr %1192, i64 %1194
  %1196 = load ptr, ptr %1195, align 8, !tbaa !5
  %1197 = load i32, ptr %12, align 4, !tbaa !12
  %1198 = sext i32 %1197 to i64
  %1199 = getelementptr inbounds %struct.celle, ptr %1196, i64 %1198
  %1200 = getelementptr inbounds %struct.celle, ptr %1199, i32 0, i32 0
  %1201 = load double, ptr %1200, align 8, !tbaa !30
  %1202 = fadd double %1187, %1201
  %1203 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %1204 = load ptr, ptr %1203, align 8, !tbaa !17
  %1205 = load i32, ptr %10, align 4, !tbaa !12
  %1206 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1204, i32 noundef %1205)
  %1207 = load ptr, ptr %1206, align 8, !tbaa !5
  %1208 = load i32, ptr %11, align 4, !tbaa !12
  %1209 = sub nsw i32 %1208, 1
  %1210 = sext i32 %1209 to i64
  %1211 = getelementptr inbounds ptr, ptr %1207, i64 %1210
  %1212 = load ptr, ptr %1211, align 8, !tbaa !5
  %1213 = load i32, ptr %12, align 4, !tbaa !12
  %1214 = sext i32 %1213 to i64
  %1215 = getelementptr inbounds %struct.celle, ptr %1212, i64 %1214
  %1216 = getelementptr inbounds %struct.celle, ptr %1215, i32 0, i32 0
  %1217 = load double, ptr %1216, align 8, !tbaa !30
  %1218 = fsub double %1202, %1217
  %1219 = fmul double %1156, %1218
  %1220 = call double @llvm.fmuladd.f64(double %1124, double %1154, double %1219)
  %1221 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 7
  %1222 = load double, ptr %1221, align 8, !tbaa !27
  %1223 = getelementptr inbounds %class.five_point_solver, ptr %19, i32 0, i32 4
  %1224 = load double, ptr %1223, align 8, !tbaa !28
  %1225 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %1226 = load ptr, ptr %1225, align 8, !tbaa !17
  %1227 = load i32, ptr %10, align 4, !tbaa !12
  %1228 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1226, i32 noundef %1227)
  %1229 = load ptr, ptr %1228, align 8, !tbaa !5
  %1230 = load i32, ptr %11, align 4, !tbaa !12
  %1231 = sext i32 %1230 to i64
  %1232 = getelementptr inbounds ptr, ptr %1229, i64 %1231
  %1233 = load ptr, ptr %1232, align 8, !tbaa !5
  %1234 = load i32, ptr %12, align 4, !tbaa !12
  %1235 = sext i32 %1234 to i64
  %1236 = getelementptr inbounds %struct.celle, ptr %1233, i64 %1235
  %1237 = getelementptr inbounds %struct.celle, ptr %1236, i32 0, i32 1
  %1238 = load double, ptr %1237, align 8, !tbaa !23
  %1239 = fneg double %1238
  %1240 = getelementptr inbounds %class.five_point_solver, ptr %19, i32 0, i32 1
  %1241 = load double, ptr %1240, align 8, !tbaa !29
  %1242 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %1243 = load ptr, ptr %1242, align 8, !tbaa !17
  %1244 = load i32, ptr %10, align 4, !tbaa !12
  %1245 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1243, i32 noundef %1244)
  %1246 = load ptr, ptr %1245, align 8, !tbaa !5
  %1247 = load i32, ptr %11, align 4, !tbaa !12
  %1248 = sext i32 %1247 to i64
  %1249 = getelementptr inbounds ptr, ptr %1246, i64 %1248
  %1250 = load ptr, ptr %1249, align 8, !tbaa !5
  %1251 = load i32, ptr %12, align 4, !tbaa !12
  %1252 = sext i32 %1251 to i64
  %1253 = getelementptr inbounds %struct.celle, ptr %1250, i64 %1252
  %1254 = getelementptr inbounds %struct.celle, ptr %1253, i32 0, i32 1
  %1255 = load double, ptr %1254, align 8, !tbaa !23
  %1256 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %1257 = load ptr, ptr %1256, align 8, !tbaa !17
  %1258 = load i32, ptr %10, align 4, !tbaa !12
  %1259 = sub nsw i32 %1258, 1
  %1260 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1257, i32 noundef %1259)
  %1261 = load ptr, ptr %1260, align 8, !tbaa !5
  %1262 = load i32, ptr %11, align 4, !tbaa !12
  %1263 = sext i32 %1262 to i64
  %1264 = getelementptr inbounds ptr, ptr %1261, i64 %1263
  %1265 = load ptr, ptr %1264, align 8, !tbaa !5
  %1266 = load i32, ptr %12, align 4, !tbaa !12
  %1267 = sext i32 %1266 to i64
  %1268 = getelementptr inbounds %struct.celle, ptr %1265, i64 %1267
  %1269 = getelementptr inbounds %struct.celle, ptr %1268, i32 0, i32 1
  %1270 = load double, ptr %1269, align 8, !tbaa !23
  %1271 = fsub double %1255, %1270
  %1272 = fmul double %1241, %1271
  %1273 = call double @llvm.fmuladd.f64(double %1224, double %1239, double %1272)
  %1274 = fmul double %1222, %1273
  %1275 = fneg double %1274
  %1276 = call double @llvm.fmuladd.f64(double %1122, double %1220, double %1275)
  %1277 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 2
  %1278 = load ptr, ptr %1277, align 8, !tbaa !9
  %1279 = load i32, ptr %10, align 4, !tbaa !12
  %1280 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5cellbEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1278, i32 noundef %1279)
  %1281 = load ptr, ptr %1280, align 8, !tbaa !5
  %1282 = load i32, ptr %11, align 4, !tbaa !12
  %1283 = sext i32 %1282 to i64
  %1284 = getelementptr inbounds ptr, ptr %1281, i64 %1283
  %1285 = load ptr, ptr %1284, align 8, !tbaa !5
  %1286 = load i32, ptr %12, align 4, !tbaa !12
  %1287 = sext i32 %1286 to i64
  %1288 = getelementptr inbounds %struct.cellb, ptr %1285, i64 %1287
  %1289 = getelementptr inbounds %struct.cellb, ptr %1288, i32 0, i32 2
  %1290 = load double, ptr %1289, align 8, !tbaa !32
  %1291 = call double @llvm.fmuladd.f64(double 5.000000e-01, double %1276, double %1290)
  store double %1291, ptr %1289, align 8, !tbaa !32
  br label %1292

1292:                                             ; preds = %731
  %1293 = load i32, ptr %12, align 4, !tbaa !12
  %1294 = add nsw i32 %1293, 1
  store i32 %1294, ptr %12, align 4, !tbaa !12
  br label %725, !llvm.loop !37

1295:                                             ; preds = %730
  br label %1296

1296:                                             ; preds = %1295
  %1297 = load i32, ptr %11, align 4, !tbaa !12
  %1298 = add nsw i32 %1297, 1
  store i32 %1298, ptr %11, align 4, !tbaa !12
  br label %718, !llvm.loop !38

1299:                                             ; preds = %723
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #5
  store i32 1, ptr %13, align 4, !tbaa !12
  br label %1300

1300:                                             ; preds = %1880, %1299
  %1301 = load i32, ptr %13, align 4, !tbaa !12
  %1302 = load i32, ptr %3, align 4, !tbaa !12
  %1303 = sub nsw i32 %1302, 2
  %1304 = icmp slt i32 %1301, %1303
  br i1 %1304, label %1306, label %1305

1305:                                             ; preds = %1300
  store i32 17, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #5
  br label %1883

1306:                                             ; preds = %1300
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #5
  %1307 = load i32, ptr %4, align 4, !tbaa !12
  %1308 = sub nsw i32 %1307, 1
  store i32 %1308, ptr %14, align 4, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #5
  store i32 1, ptr %15, align 4, !tbaa !12
  br label %1309

1309:                                             ; preds = %1876, %1306
  %1310 = load i32, ptr %15, align 4, !tbaa !12
  %1311 = load i32, ptr %5, align 4, !tbaa !12
  %1312 = sub nsw i32 %1311, 2
  %1313 = icmp slt i32 %1310, %1312
  br i1 %1313, label %1315, label %1314

1314:                                             ; preds = %1309
  store i32 20, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #5
  br label %1879

1315:                                             ; preds = %1309
  %1316 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 8
  %1317 = load double, ptr %1316, align 8, !tbaa !14
  %1318 = fneg double %1317
  %1319 = getelementptr inbounds %class.five_point_solver, ptr %19, i32 0, i32 5
  %1320 = load double, ptr %1319, align 8, !tbaa !15
  %1321 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %1322 = load ptr, ptr %1321, align 8, !tbaa !17
  %1323 = load i32, ptr %13, align 4, !tbaa !12
  %1324 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1322, i32 noundef %1323)
  %1325 = load ptr, ptr %1324, align 8, !tbaa !5
  %1326 = load i32, ptr %14, align 4, !tbaa !12
  %1327 = sext i32 %1326 to i64
  %1328 = getelementptr inbounds ptr, ptr %1325, i64 %1327
  %1329 = load ptr, ptr %1328, align 8, !tbaa !5
  %1330 = load i32, ptr %15, align 4, !tbaa !12
  %1331 = sext i32 %1330 to i64
  %1332 = getelementptr inbounds %struct.celle, ptr %1329, i64 %1331
  %1333 = getelementptr inbounds %struct.celle, ptr %1332, i32 0, i32 2
  %1334 = load double, ptr %1333, align 8, !tbaa !18
  %1335 = fneg double %1334
  %1336 = getelementptr inbounds %class.five_point_solver, ptr %19, i32 0, i32 2
  %1337 = load double, ptr %1336, align 8, !tbaa !20
  %1338 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %1339 = load ptr, ptr %1338, align 8, !tbaa !17
  %1340 = load i32, ptr %13, align 4, !tbaa !12
  %1341 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1339, i32 noundef %1340)
  %1342 = load ptr, ptr %1341, align 8, !tbaa !5
  %1343 = load i32, ptr %14, align 4, !tbaa !12
  %1344 = sext i32 %1343 to i64
  %1345 = getelementptr inbounds ptr, ptr %1342, i64 %1344
  %1346 = load ptr, ptr %1345, align 8, !tbaa !5
  %1347 = load i32, ptr %15, align 4, !tbaa !12
  %1348 = sext i32 %1347 to i64
  %1349 = getelementptr inbounds %struct.celle, ptr %1346, i64 %1348
  %1350 = getelementptr inbounds %struct.celle, ptr %1349, i32 0, i32 2
  %1351 = load double, ptr %1350, align 8, !tbaa !18
  %1352 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %1353 = load ptr, ptr %1352, align 8, !tbaa !17
  %1354 = load i32, ptr %13, align 4, !tbaa !12
  %1355 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1353, i32 noundef %1354)
  %1356 = load ptr, ptr %1355, align 8, !tbaa !5
  %1357 = load i32, ptr %14, align 4, !tbaa !12
  %1358 = sub nsw i32 %1357, 1
  %1359 = sext i32 %1358 to i64
  %1360 = getelementptr inbounds ptr, ptr %1356, i64 %1359
  %1361 = load ptr, ptr %1360, align 8, !tbaa !5
  %1362 = load i32, ptr %15, align 4, !tbaa !12
  %1363 = sext i32 %1362 to i64
  %1364 = getelementptr inbounds %struct.celle, ptr %1361, i64 %1363
  %1365 = getelementptr inbounds %struct.celle, ptr %1364, i32 0, i32 2
  %1366 = load double, ptr %1365, align 8, !tbaa !18
  %1367 = fsub double %1351, %1366
  %1368 = fmul double %1337, %1367
  %1369 = call double @llvm.fmuladd.f64(double %1320, double %1335, double %1368)
  %1370 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 9
  %1371 = load double, ptr %1370, align 8, !tbaa !21
  %1372 = getelementptr inbounds %class.five_point_solver, ptr %19, i32 0, i32 6
  %1373 = load double, ptr %1372, align 8, !tbaa !22
  %1374 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %1375 = load ptr, ptr %1374, align 8, !tbaa !17
  %1376 = load i32, ptr %13, align 4, !tbaa !12
  %1377 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1375, i32 noundef %1376)
  %1378 = load ptr, ptr %1377, align 8, !tbaa !5
  %1379 = load i32, ptr %14, align 4, !tbaa !12
  %1380 = sext i32 %1379 to i64
  %1381 = getelementptr inbounds ptr, ptr %1378, i64 %1380
  %1382 = load ptr, ptr %1381, align 8, !tbaa !5
  %1383 = load i32, ptr %15, align 4, !tbaa !12
  %1384 = add nsw i32 %1383, 1
  %1385 = sext i32 %1384 to i64
  %1386 = getelementptr inbounds %struct.celle, ptr %1382, i64 %1385
  %1387 = getelementptr inbounds %struct.celle, ptr %1386, i32 0, i32 1
  %1388 = load double, ptr %1387, align 8, !tbaa !23
  %1389 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %1390 = load ptr, ptr %1389, align 8, !tbaa !17
  %1391 = load i32, ptr %13, align 4, !tbaa !12
  %1392 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1390, i32 noundef %1391)
  %1393 = load ptr, ptr %1392, align 8, !tbaa !5
  %1394 = load i32, ptr %14, align 4, !tbaa !12
  %1395 = sext i32 %1394 to i64
  %1396 = getelementptr inbounds ptr, ptr %1393, i64 %1395
  %1397 = load ptr, ptr %1396, align 8, !tbaa !5
  %1398 = load i32, ptr %15, align 4, !tbaa !12
  %1399 = sext i32 %1398 to i64
  %1400 = getelementptr inbounds %struct.celle, ptr %1397, i64 %1399
  %1401 = getelementptr inbounds %struct.celle, ptr %1400, i32 0, i32 1
  %1402 = load double, ptr %1401, align 8, !tbaa !23
  %1403 = fsub double %1388, %1402
  %1404 = getelementptr inbounds %class.five_point_solver, ptr %19, i32 0, i32 3
  %1405 = load double, ptr %1404, align 8, !tbaa !24
  %1406 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %1407 = load ptr, ptr %1406, align 8, !tbaa !17
  %1408 = load i32, ptr %13, align 4, !tbaa !12
  %1409 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1407, i32 noundef %1408)
  %1410 = load ptr, ptr %1409, align 8, !tbaa !5
  %1411 = load i32, ptr %14, align 4, !tbaa !12
  %1412 = sext i32 %1411 to i64
  %1413 = getelementptr inbounds ptr, ptr %1410, i64 %1412
  %1414 = load ptr, ptr %1413, align 8, !tbaa !5
  %1415 = load i32, ptr %15, align 4, !tbaa !12
  %1416 = add nsw i32 %1415, 2
  %1417 = sext i32 %1416 to i64
  %1418 = getelementptr inbounds %struct.celle, ptr %1414, i64 %1417
  %1419 = getelementptr inbounds %struct.celle, ptr %1418, i32 0, i32 1
  %1420 = load double, ptr %1419, align 8, !tbaa !23
  %1421 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %1422 = load ptr, ptr %1421, align 8, !tbaa !17
  %1423 = load i32, ptr %13, align 4, !tbaa !12
  %1424 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1422, i32 noundef %1423)
  %1425 = load ptr, ptr %1424, align 8, !tbaa !5
  %1426 = load i32, ptr %14, align 4, !tbaa !12
  %1427 = sext i32 %1426 to i64
  %1428 = getelementptr inbounds ptr, ptr %1425, i64 %1427
  %1429 = load ptr, ptr %1428, align 8, !tbaa !5
  %1430 = load i32, ptr %15, align 4, !tbaa !12
  %1431 = add nsw i32 %1430, 1
  %1432 = sext i32 %1431 to i64
  %1433 = getelementptr inbounds %struct.celle, ptr %1429, i64 %1432
  %1434 = getelementptr inbounds %struct.celle, ptr %1433, i32 0, i32 1
  %1435 = load double, ptr %1434, align 8, !tbaa !23
  %1436 = fsub double %1420, %1435
  %1437 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %1438 = load ptr, ptr %1437, align 8, !tbaa !17
  %1439 = load i32, ptr %13, align 4, !tbaa !12
  %1440 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1438, i32 noundef %1439)
  %1441 = load ptr, ptr %1440, align 8, !tbaa !5
  %1442 = load i32, ptr %14, align 4, !tbaa !12
  %1443 = sext i32 %1442 to i64
  %1444 = getelementptr inbounds ptr, ptr %1441, i64 %1443
  %1445 = load ptr, ptr %1444, align 8, !tbaa !5
  %1446 = load i32, ptr %15, align 4, !tbaa !12
  %1447 = sext i32 %1446 to i64
  %1448 = getelementptr inbounds %struct.celle, ptr %1445, i64 %1447
  %1449 = getelementptr inbounds %struct.celle, ptr %1448, i32 0, i32 1
  %1450 = load double, ptr %1449, align 8, !tbaa !23
  %1451 = fadd double %1436, %1450
  %1452 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %1453 = load ptr, ptr %1452, align 8, !tbaa !17
  %1454 = load i32, ptr %13, align 4, !tbaa !12
  %1455 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1453, i32 noundef %1454)
  %1456 = load ptr, ptr %1455, align 8, !tbaa !5
  %1457 = load i32, ptr %14, align 4, !tbaa !12
  %1458 = sext i32 %1457 to i64
  %1459 = getelementptr inbounds ptr, ptr %1456, i64 %1458
  %1460 = load ptr, ptr %1459, align 8, !tbaa !5
  %1461 = load i32, ptr %15, align 4, !tbaa !12
  %1462 = sub nsw i32 %1461, 1
  %1463 = sext i32 %1462 to i64
  %1464 = getelementptr inbounds %struct.celle, ptr %1460, i64 %1463
  %1465 = getelementptr inbounds %struct.celle, ptr %1464, i32 0, i32 1
  %1466 = load double, ptr %1465, align 8, !tbaa !23
  %1467 = fsub double %1451, %1466
  %1468 = fmul double %1405, %1467
  %1469 = call double @llvm.fmuladd.f64(double %1373, double %1403, double %1468)
  %1470 = fmul double %1371, %1469
  %1471 = call double @llvm.fmuladd.f64(double %1318, double %1369, double %1470)
  %1472 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 2
  %1473 = load ptr, ptr %1472, align 8, !tbaa !9
  %1474 = load i32, ptr %13, align 4, !tbaa !12
  %1475 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5cellbEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1473, i32 noundef %1474)
  %1476 = load ptr, ptr %1475, align 8, !tbaa !5
  %1477 = load i32, ptr %14, align 4, !tbaa !12
  %1478 = sext i32 %1477 to i64
  %1479 = getelementptr inbounds ptr, ptr %1476, i64 %1478
  %1480 = load ptr, ptr %1479, align 8, !tbaa !5
  %1481 = load i32, ptr %15, align 4, !tbaa !12
  %1482 = sext i32 %1481 to i64
  %1483 = getelementptr inbounds %struct.cellb, ptr %1480, i64 %1482
  %1484 = getelementptr inbounds %struct.cellb, ptr %1483, i32 0, i32 0
  %1485 = load double, ptr %1484, align 8, !tbaa !25
  %1486 = call double @llvm.fmuladd.f64(double 5.000000e-01, double %1471, double %1485)
  store double %1486, ptr %1484, align 8, !tbaa !25
  %1487 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 7
  %1488 = load double, ptr %1487, align 8, !tbaa !27
  %1489 = getelementptr inbounds %class.five_point_solver, ptr %19, i32 0, i32 4
  %1490 = load double, ptr %1489, align 8, !tbaa !28
  %1491 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %1492 = load ptr, ptr %1491, align 8, !tbaa !17
  %1493 = load i32, ptr %13, align 4, !tbaa !12
  %1494 = add nsw i32 %1493, 1
  %1495 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1492, i32 noundef %1494)
  %1496 = load ptr, ptr %1495, align 8, !tbaa !5
  %1497 = load i32, ptr %14, align 4, !tbaa !12
  %1498 = sext i32 %1497 to i64
  %1499 = getelementptr inbounds ptr, ptr %1496, i64 %1498
  %1500 = load ptr, ptr %1499, align 8, !tbaa !5
  %1501 = load i32, ptr %15, align 4, !tbaa !12
  %1502 = sext i32 %1501 to i64
  %1503 = getelementptr inbounds %struct.celle, ptr %1500, i64 %1502
  %1504 = getelementptr inbounds %struct.celle, ptr %1503, i32 0, i32 2
  %1505 = load double, ptr %1504, align 8, !tbaa !18
  %1506 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %1507 = load ptr, ptr %1506, align 8, !tbaa !17
  %1508 = load i32, ptr %13, align 4, !tbaa !12
  %1509 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1507, i32 noundef %1508)
  %1510 = load ptr, ptr %1509, align 8, !tbaa !5
  %1511 = load i32, ptr %14, align 4, !tbaa !12
  %1512 = sext i32 %1511 to i64
  %1513 = getelementptr inbounds ptr, ptr %1510, i64 %1512
  %1514 = load ptr, ptr %1513, align 8, !tbaa !5
  %1515 = load i32, ptr %15, align 4, !tbaa !12
  %1516 = sext i32 %1515 to i64
  %1517 = getelementptr inbounds %struct.celle, ptr %1514, i64 %1516
  %1518 = getelementptr inbounds %struct.celle, ptr %1517, i32 0, i32 2
  %1519 = load double, ptr %1518, align 8, !tbaa !18
  %1520 = fsub double %1505, %1519
  %1521 = getelementptr inbounds %class.five_point_solver, ptr %19, i32 0, i32 1
  %1522 = load double, ptr %1521, align 8, !tbaa !29
  %1523 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %1524 = load ptr, ptr %1523, align 8, !tbaa !17
  %1525 = load i32, ptr %13, align 4, !tbaa !12
  %1526 = add nsw i32 %1525, 2
  %1527 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1524, i32 noundef %1526)
  %1528 = load ptr, ptr %1527, align 8, !tbaa !5
  %1529 = load i32, ptr %14, align 4, !tbaa !12
  %1530 = sext i32 %1529 to i64
  %1531 = getelementptr inbounds ptr, ptr %1528, i64 %1530
  %1532 = load ptr, ptr %1531, align 8, !tbaa !5
  %1533 = load i32, ptr %15, align 4, !tbaa !12
  %1534 = sext i32 %1533 to i64
  %1535 = getelementptr inbounds %struct.celle, ptr %1532, i64 %1534
  %1536 = getelementptr inbounds %struct.celle, ptr %1535, i32 0, i32 2
  %1537 = load double, ptr %1536, align 8, !tbaa !18
  %1538 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %1539 = load ptr, ptr %1538, align 8, !tbaa !17
  %1540 = load i32, ptr %13, align 4, !tbaa !12
  %1541 = add nsw i32 %1540, 1
  %1542 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1539, i32 noundef %1541)
  %1543 = load ptr, ptr %1542, align 8, !tbaa !5
  %1544 = load i32, ptr %14, align 4, !tbaa !12
  %1545 = sext i32 %1544 to i64
  %1546 = getelementptr inbounds ptr, ptr %1543, i64 %1545
  %1547 = load ptr, ptr %1546, align 8, !tbaa !5
  %1548 = load i32, ptr %15, align 4, !tbaa !12
  %1549 = sext i32 %1548 to i64
  %1550 = getelementptr inbounds %struct.celle, ptr %1547, i64 %1549
  %1551 = getelementptr inbounds %struct.celle, ptr %1550, i32 0, i32 2
  %1552 = load double, ptr %1551, align 8, !tbaa !18
  %1553 = fsub double %1537, %1552
  %1554 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %1555 = load ptr, ptr %1554, align 8, !tbaa !17
  %1556 = load i32, ptr %13, align 4, !tbaa !12
  %1557 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1555, i32 noundef %1556)
  %1558 = load ptr, ptr %1557, align 8, !tbaa !5
  %1559 = load i32, ptr %14, align 4, !tbaa !12
  %1560 = sext i32 %1559 to i64
  %1561 = getelementptr inbounds ptr, ptr %1558, i64 %1560
  %1562 = load ptr, ptr %1561, align 8, !tbaa !5
  %1563 = load i32, ptr %15, align 4, !tbaa !12
  %1564 = sext i32 %1563 to i64
  %1565 = getelementptr inbounds %struct.celle, ptr %1562, i64 %1564
  %1566 = getelementptr inbounds %struct.celle, ptr %1565, i32 0, i32 2
  %1567 = load double, ptr %1566, align 8, !tbaa !18
  %1568 = fadd double %1553, %1567
  %1569 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %1570 = load ptr, ptr %1569, align 8, !tbaa !17
  %1571 = load i32, ptr %13, align 4, !tbaa !12
  %1572 = sub nsw i32 %1571, 1
  %1573 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1570, i32 noundef %1572)
  %1574 = load ptr, ptr %1573, align 8, !tbaa !5
  %1575 = load i32, ptr %14, align 4, !tbaa !12
  %1576 = sext i32 %1575 to i64
  %1577 = getelementptr inbounds ptr, ptr %1574, i64 %1576
  %1578 = load ptr, ptr %1577, align 8, !tbaa !5
  %1579 = load i32, ptr %15, align 4, !tbaa !12
  %1580 = sext i32 %1579 to i64
  %1581 = getelementptr inbounds %struct.celle, ptr %1578, i64 %1580
  %1582 = getelementptr inbounds %struct.celle, ptr %1581, i32 0, i32 2
  %1583 = load double, ptr %1582, align 8, !tbaa !18
  %1584 = fsub double %1568, %1583
  %1585 = fmul double %1522, %1584
  %1586 = call double @llvm.fmuladd.f64(double %1490, double %1520, double %1585)
  %1587 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 9
  %1588 = load double, ptr %1587, align 8, !tbaa !21
  %1589 = getelementptr inbounds %class.five_point_solver, ptr %19, i32 0, i32 6
  %1590 = load double, ptr %1589, align 8, !tbaa !22
  %1591 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %1592 = load ptr, ptr %1591, align 8, !tbaa !17
  %1593 = load i32, ptr %13, align 4, !tbaa !12
  %1594 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1592, i32 noundef %1593)
  %1595 = load ptr, ptr %1594, align 8, !tbaa !5
  %1596 = load i32, ptr %14, align 4, !tbaa !12
  %1597 = sext i32 %1596 to i64
  %1598 = getelementptr inbounds ptr, ptr %1595, i64 %1597
  %1599 = load ptr, ptr %1598, align 8, !tbaa !5
  %1600 = load i32, ptr %15, align 4, !tbaa !12
  %1601 = add nsw i32 %1600, 1
  %1602 = sext i32 %1601 to i64
  %1603 = getelementptr inbounds %struct.celle, ptr %1599, i64 %1602
  %1604 = getelementptr inbounds %struct.celle, ptr %1603, i32 0, i32 0
  %1605 = load double, ptr %1604, align 8, !tbaa !30
  %1606 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %1607 = load ptr, ptr %1606, align 8, !tbaa !17
  %1608 = load i32, ptr %13, align 4, !tbaa !12
  %1609 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1607, i32 noundef %1608)
  %1610 = load ptr, ptr %1609, align 8, !tbaa !5
  %1611 = load i32, ptr %14, align 4, !tbaa !12
  %1612 = sext i32 %1611 to i64
  %1613 = getelementptr inbounds ptr, ptr %1610, i64 %1612
  %1614 = load ptr, ptr %1613, align 8, !tbaa !5
  %1615 = load i32, ptr %15, align 4, !tbaa !12
  %1616 = sext i32 %1615 to i64
  %1617 = getelementptr inbounds %struct.celle, ptr %1614, i64 %1616
  %1618 = getelementptr inbounds %struct.celle, ptr %1617, i32 0, i32 0
  %1619 = load double, ptr %1618, align 8, !tbaa !30
  %1620 = fsub double %1605, %1619
  %1621 = getelementptr inbounds %class.five_point_solver, ptr %19, i32 0, i32 3
  %1622 = load double, ptr %1621, align 8, !tbaa !24
  %1623 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %1624 = load ptr, ptr %1623, align 8, !tbaa !17
  %1625 = load i32, ptr %13, align 4, !tbaa !12
  %1626 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1624, i32 noundef %1625)
  %1627 = load ptr, ptr %1626, align 8, !tbaa !5
  %1628 = load i32, ptr %14, align 4, !tbaa !12
  %1629 = sext i32 %1628 to i64
  %1630 = getelementptr inbounds ptr, ptr %1627, i64 %1629
  %1631 = load ptr, ptr %1630, align 8, !tbaa !5
  %1632 = load i32, ptr %15, align 4, !tbaa !12
  %1633 = add nsw i32 %1632, 2
  %1634 = sext i32 %1633 to i64
  %1635 = getelementptr inbounds %struct.celle, ptr %1631, i64 %1634
  %1636 = getelementptr inbounds %struct.celle, ptr %1635, i32 0, i32 0
  %1637 = load double, ptr %1636, align 8, !tbaa !30
  %1638 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %1639 = load ptr, ptr %1638, align 8, !tbaa !17
  %1640 = load i32, ptr %13, align 4, !tbaa !12
  %1641 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1639, i32 noundef %1640)
  %1642 = load ptr, ptr %1641, align 8, !tbaa !5
  %1643 = load i32, ptr %14, align 4, !tbaa !12
  %1644 = sext i32 %1643 to i64
  %1645 = getelementptr inbounds ptr, ptr %1642, i64 %1644
  %1646 = load ptr, ptr %1645, align 8, !tbaa !5
  %1647 = load i32, ptr %15, align 4, !tbaa !12
  %1648 = add nsw i32 %1647, 1
  %1649 = sext i32 %1648 to i64
  %1650 = getelementptr inbounds %struct.celle, ptr %1646, i64 %1649
  %1651 = getelementptr inbounds %struct.celle, ptr %1650, i32 0, i32 0
  %1652 = load double, ptr %1651, align 8, !tbaa !30
  %1653 = fsub double %1637, %1652
  %1654 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %1655 = load ptr, ptr %1654, align 8, !tbaa !17
  %1656 = load i32, ptr %13, align 4, !tbaa !12
  %1657 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1655, i32 noundef %1656)
  %1658 = load ptr, ptr %1657, align 8, !tbaa !5
  %1659 = load i32, ptr %14, align 4, !tbaa !12
  %1660 = sext i32 %1659 to i64
  %1661 = getelementptr inbounds ptr, ptr %1658, i64 %1660
  %1662 = load ptr, ptr %1661, align 8, !tbaa !5
  %1663 = load i32, ptr %15, align 4, !tbaa !12
  %1664 = sext i32 %1663 to i64
  %1665 = getelementptr inbounds %struct.celle, ptr %1662, i64 %1664
  %1666 = getelementptr inbounds %struct.celle, ptr %1665, i32 0, i32 0
  %1667 = load double, ptr %1666, align 8, !tbaa !30
  %1668 = fadd double %1653, %1667
  %1669 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %1670 = load ptr, ptr %1669, align 8, !tbaa !17
  %1671 = load i32, ptr %13, align 4, !tbaa !12
  %1672 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1670, i32 noundef %1671)
  %1673 = load ptr, ptr %1672, align 8, !tbaa !5
  %1674 = load i32, ptr %14, align 4, !tbaa !12
  %1675 = sext i32 %1674 to i64
  %1676 = getelementptr inbounds ptr, ptr %1673, i64 %1675
  %1677 = load ptr, ptr %1676, align 8, !tbaa !5
  %1678 = load i32, ptr %15, align 4, !tbaa !12
  %1679 = sub nsw i32 %1678, 1
  %1680 = sext i32 %1679 to i64
  %1681 = getelementptr inbounds %struct.celle, ptr %1677, i64 %1680
  %1682 = getelementptr inbounds %struct.celle, ptr %1681, i32 0, i32 0
  %1683 = load double, ptr %1682, align 8, !tbaa !30
  %1684 = fsub double %1668, %1683
  %1685 = fmul double %1622, %1684
  %1686 = call double @llvm.fmuladd.f64(double %1590, double %1620, double %1685)
  %1687 = fmul double %1588, %1686
  %1688 = fneg double %1687
  %1689 = call double @llvm.fmuladd.f64(double %1488, double %1586, double %1688)
  %1690 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 2
  %1691 = load ptr, ptr %1690, align 8, !tbaa !9
  %1692 = load i32, ptr %13, align 4, !tbaa !12
  %1693 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5cellbEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1691, i32 noundef %1692)
  %1694 = load ptr, ptr %1693, align 8, !tbaa !5
  %1695 = load i32, ptr %14, align 4, !tbaa !12
  %1696 = sext i32 %1695 to i64
  %1697 = getelementptr inbounds ptr, ptr %1694, i64 %1696
  %1698 = load ptr, ptr %1697, align 8, !tbaa !5
  %1699 = load i32, ptr %15, align 4, !tbaa !12
  %1700 = sext i32 %1699 to i64
  %1701 = getelementptr inbounds %struct.cellb, ptr %1698, i64 %1700
  %1702 = getelementptr inbounds %struct.cellb, ptr %1701, i32 0, i32 1
  %1703 = load double, ptr %1702, align 8, !tbaa !31
  %1704 = call double @llvm.fmuladd.f64(double 5.000000e-01, double %1689, double %1703)
  store double %1704, ptr %1702, align 8, !tbaa !31
  %1705 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 8
  %1706 = load double, ptr %1705, align 8, !tbaa !14
  %1707 = getelementptr inbounds %class.five_point_solver, ptr %19, i32 0, i32 5
  %1708 = load double, ptr %1707, align 8, !tbaa !15
  %1709 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %1710 = load ptr, ptr %1709, align 8, !tbaa !17
  %1711 = load i32, ptr %13, align 4, !tbaa !12
  %1712 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1710, i32 noundef %1711)
  %1713 = load ptr, ptr %1712, align 8, !tbaa !5
  %1714 = load i32, ptr %14, align 4, !tbaa !12
  %1715 = sext i32 %1714 to i64
  %1716 = getelementptr inbounds ptr, ptr %1713, i64 %1715
  %1717 = load ptr, ptr %1716, align 8, !tbaa !5
  %1718 = load i32, ptr %15, align 4, !tbaa !12
  %1719 = sext i32 %1718 to i64
  %1720 = getelementptr inbounds %struct.celle, ptr %1717, i64 %1719
  %1721 = getelementptr inbounds %struct.celle, ptr %1720, i32 0, i32 0
  %1722 = load double, ptr %1721, align 8, !tbaa !30
  %1723 = fneg double %1722
  %1724 = getelementptr inbounds %class.five_point_solver, ptr %19, i32 0, i32 2
  %1725 = load double, ptr %1724, align 8, !tbaa !20
  %1726 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %1727 = load ptr, ptr %1726, align 8, !tbaa !17
  %1728 = load i32, ptr %13, align 4, !tbaa !12
  %1729 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1727, i32 noundef %1728)
  %1730 = load ptr, ptr %1729, align 8, !tbaa !5
  %1731 = load i32, ptr %14, align 4, !tbaa !12
  %1732 = sext i32 %1731 to i64
  %1733 = getelementptr inbounds ptr, ptr %1730, i64 %1732
  %1734 = load ptr, ptr %1733, align 8, !tbaa !5
  %1735 = load i32, ptr %15, align 4, !tbaa !12
  %1736 = sext i32 %1735 to i64
  %1737 = getelementptr inbounds %struct.celle, ptr %1734, i64 %1736
  %1738 = getelementptr inbounds %struct.celle, ptr %1737, i32 0, i32 0
  %1739 = load double, ptr %1738, align 8, !tbaa !30
  %1740 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %1741 = load ptr, ptr %1740, align 8, !tbaa !17
  %1742 = load i32, ptr %13, align 4, !tbaa !12
  %1743 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1741, i32 noundef %1742)
  %1744 = load ptr, ptr %1743, align 8, !tbaa !5
  %1745 = load i32, ptr %14, align 4, !tbaa !12
  %1746 = sub nsw i32 %1745, 1
  %1747 = sext i32 %1746 to i64
  %1748 = getelementptr inbounds ptr, ptr %1744, i64 %1747
  %1749 = load ptr, ptr %1748, align 8, !tbaa !5
  %1750 = load i32, ptr %15, align 4, !tbaa !12
  %1751 = sext i32 %1750 to i64
  %1752 = getelementptr inbounds %struct.celle, ptr %1749, i64 %1751
  %1753 = getelementptr inbounds %struct.celle, ptr %1752, i32 0, i32 0
  %1754 = load double, ptr %1753, align 8, !tbaa !30
  %1755 = fsub double %1739, %1754
  %1756 = fmul double %1725, %1755
  %1757 = call double @llvm.fmuladd.f64(double %1708, double %1723, double %1756)
  %1758 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 7
  %1759 = load double, ptr %1758, align 8, !tbaa !27
  %1760 = getelementptr inbounds %class.five_point_solver, ptr %19, i32 0, i32 4
  %1761 = load double, ptr %1760, align 8, !tbaa !28
  %1762 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %1763 = load ptr, ptr %1762, align 8, !tbaa !17
  %1764 = load i32, ptr %13, align 4, !tbaa !12
  %1765 = add nsw i32 %1764, 1
  %1766 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1763, i32 noundef %1765)
  %1767 = load ptr, ptr %1766, align 8, !tbaa !5
  %1768 = load i32, ptr %14, align 4, !tbaa !12
  %1769 = sext i32 %1768 to i64
  %1770 = getelementptr inbounds ptr, ptr %1767, i64 %1769
  %1771 = load ptr, ptr %1770, align 8, !tbaa !5
  %1772 = load i32, ptr %15, align 4, !tbaa !12
  %1773 = sext i32 %1772 to i64
  %1774 = getelementptr inbounds %struct.celle, ptr %1771, i64 %1773
  %1775 = getelementptr inbounds %struct.celle, ptr %1774, i32 0, i32 1
  %1776 = load double, ptr %1775, align 8, !tbaa !23
  %1777 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %1778 = load ptr, ptr %1777, align 8, !tbaa !17
  %1779 = load i32, ptr %13, align 4, !tbaa !12
  %1780 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1778, i32 noundef %1779)
  %1781 = load ptr, ptr %1780, align 8, !tbaa !5
  %1782 = load i32, ptr %14, align 4, !tbaa !12
  %1783 = sext i32 %1782 to i64
  %1784 = getelementptr inbounds ptr, ptr %1781, i64 %1783
  %1785 = load ptr, ptr %1784, align 8, !tbaa !5
  %1786 = load i32, ptr %15, align 4, !tbaa !12
  %1787 = sext i32 %1786 to i64
  %1788 = getelementptr inbounds %struct.celle, ptr %1785, i64 %1787
  %1789 = getelementptr inbounds %struct.celle, ptr %1788, i32 0, i32 1
  %1790 = load double, ptr %1789, align 8, !tbaa !23
  %1791 = fsub double %1776, %1790
  %1792 = getelementptr inbounds %class.five_point_solver, ptr %19, i32 0, i32 1
  %1793 = load double, ptr %1792, align 8, !tbaa !29
  %1794 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %1795 = load ptr, ptr %1794, align 8, !tbaa !17
  %1796 = load i32, ptr %13, align 4, !tbaa !12
  %1797 = add nsw i32 %1796, 2
  %1798 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1795, i32 noundef %1797)
  %1799 = load ptr, ptr %1798, align 8, !tbaa !5
  %1800 = load i32, ptr %14, align 4, !tbaa !12
  %1801 = sext i32 %1800 to i64
  %1802 = getelementptr inbounds ptr, ptr %1799, i64 %1801
  %1803 = load ptr, ptr %1802, align 8, !tbaa !5
  %1804 = load i32, ptr %15, align 4, !tbaa !12
  %1805 = sext i32 %1804 to i64
  %1806 = getelementptr inbounds %struct.celle, ptr %1803, i64 %1805
  %1807 = getelementptr inbounds %struct.celle, ptr %1806, i32 0, i32 1
  %1808 = load double, ptr %1807, align 8, !tbaa !23
  %1809 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %1810 = load ptr, ptr %1809, align 8, !tbaa !17
  %1811 = load i32, ptr %13, align 4, !tbaa !12
  %1812 = add nsw i32 %1811, 1
  %1813 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1810, i32 noundef %1812)
  %1814 = load ptr, ptr %1813, align 8, !tbaa !5
  %1815 = load i32, ptr %14, align 4, !tbaa !12
  %1816 = sext i32 %1815 to i64
  %1817 = getelementptr inbounds ptr, ptr %1814, i64 %1816
  %1818 = load ptr, ptr %1817, align 8, !tbaa !5
  %1819 = load i32, ptr %15, align 4, !tbaa !12
  %1820 = sext i32 %1819 to i64
  %1821 = getelementptr inbounds %struct.celle, ptr %1818, i64 %1820
  %1822 = getelementptr inbounds %struct.celle, ptr %1821, i32 0, i32 1
  %1823 = load double, ptr %1822, align 8, !tbaa !23
  %1824 = fsub double %1808, %1823
  %1825 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %1826 = load ptr, ptr %1825, align 8, !tbaa !17
  %1827 = load i32, ptr %13, align 4, !tbaa !12
  %1828 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1826, i32 noundef %1827)
  %1829 = load ptr, ptr %1828, align 8, !tbaa !5
  %1830 = load i32, ptr %14, align 4, !tbaa !12
  %1831 = sext i32 %1830 to i64
  %1832 = getelementptr inbounds ptr, ptr %1829, i64 %1831
  %1833 = load ptr, ptr %1832, align 8, !tbaa !5
  %1834 = load i32, ptr %15, align 4, !tbaa !12
  %1835 = sext i32 %1834 to i64
  %1836 = getelementptr inbounds %struct.celle, ptr %1833, i64 %1835
  %1837 = getelementptr inbounds %struct.celle, ptr %1836, i32 0, i32 1
  %1838 = load double, ptr %1837, align 8, !tbaa !23
  %1839 = fadd double %1824, %1838
  %1840 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %1841 = load ptr, ptr %1840, align 8, !tbaa !17
  %1842 = load i32, ptr %13, align 4, !tbaa !12
  %1843 = sub nsw i32 %1842, 1
  %1844 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1841, i32 noundef %1843)
  %1845 = load ptr, ptr %1844, align 8, !tbaa !5
  %1846 = load i32, ptr %14, align 4, !tbaa !12
  %1847 = sext i32 %1846 to i64
  %1848 = getelementptr inbounds ptr, ptr %1845, i64 %1847
  %1849 = load ptr, ptr %1848, align 8, !tbaa !5
  %1850 = load i32, ptr %15, align 4, !tbaa !12
  %1851 = sext i32 %1850 to i64
  %1852 = getelementptr inbounds %struct.celle, ptr %1849, i64 %1851
  %1853 = getelementptr inbounds %struct.celle, ptr %1852, i32 0, i32 1
  %1854 = load double, ptr %1853, align 8, !tbaa !23
  %1855 = fsub double %1839, %1854
  %1856 = fmul double %1793, %1855
  %1857 = call double @llvm.fmuladd.f64(double %1761, double %1791, double %1856)
  %1858 = fmul double %1759, %1857
  %1859 = fneg double %1858
  %1860 = call double @llvm.fmuladd.f64(double %1706, double %1757, double %1859)
  %1861 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 2
  %1862 = load ptr, ptr %1861, align 8, !tbaa !9
  %1863 = load i32, ptr %13, align 4, !tbaa !12
  %1864 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5cellbEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1862, i32 noundef %1863)
  %1865 = load ptr, ptr %1864, align 8, !tbaa !5
  %1866 = load i32, ptr %14, align 4, !tbaa !12
  %1867 = sext i32 %1866 to i64
  %1868 = getelementptr inbounds ptr, ptr %1865, i64 %1867
  %1869 = load ptr, ptr %1868, align 8, !tbaa !5
  %1870 = load i32, ptr %15, align 4, !tbaa !12
  %1871 = sext i32 %1870 to i64
  %1872 = getelementptr inbounds %struct.cellb, ptr %1869, i64 %1871
  %1873 = getelementptr inbounds %struct.cellb, ptr %1872, i32 0, i32 2
  %1874 = load double, ptr %1873, align 8, !tbaa !32
  %1875 = call double @llvm.fmuladd.f64(double 5.000000e-01, double %1860, double %1874)
  store double %1875, ptr %1873, align 8, !tbaa !32
  br label %1876

1876:                                             ; preds = %1315
  %1877 = load i32, ptr %15, align 4, !tbaa !12
  %1878 = add nsw i32 %1877, 1
  store i32 %1878, ptr %15, align 4, !tbaa !12
  br label %1309, !llvm.loop !39

1879:                                             ; preds = %1314
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #5
  br label %1880

1880:                                             ; preds = %1879
  %1881 = load i32, ptr %13, align 4, !tbaa !12
  %1882 = add nsw i32 %1881, 1
  store i32 %1882, ptr %13, align 4, !tbaa !12
  br label %1300, !llvm.loop !40

1883:                                             ; preds = %1305
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #5
  store i32 1, ptr %16, align 4, !tbaa !12
  br label %1884

1884:                                             ; preds = %2464, %1883
  %1885 = load i32, ptr %16, align 4, !tbaa !12
  %1886 = load i32, ptr %3, align 4, !tbaa !12
  %1887 = sub nsw i32 %1886, 2
  %1888 = icmp slt i32 %1885, %1887
  br i1 %1888, label %1890, label %1889

1889:                                             ; preds = %1884
  store i32 23, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #5
  br label %2467

1890:                                             ; preds = %1884
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #5
  store i32 1, ptr %17, align 4, !tbaa !12
  br label %1891

1891:                                             ; preds = %2460, %1890
  %1892 = load i32, ptr %17, align 4, !tbaa !12
  %1893 = load i32, ptr %4, align 4, !tbaa !12
  %1894 = sub nsw i32 %1893, 2
  %1895 = icmp slt i32 %1892, %1894
  br i1 %1895, label %1897, label %1896

1896:                                             ; preds = %1891
  store i32 26, ptr %7, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #5
  br label %2463

1897:                                             ; preds = %1891
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #5
  %1898 = load i32, ptr %5, align 4, !tbaa !12
  %1899 = sub nsw i32 %1898, 1
  store i32 %1899, ptr %18, align 4, !tbaa !12
  %1900 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 8
  %1901 = load double, ptr %1900, align 8, !tbaa !14
  %1902 = fneg double %1901
  %1903 = getelementptr inbounds %class.five_point_solver, ptr %19, i32 0, i32 5
  %1904 = load double, ptr %1903, align 8, !tbaa !15
  %1905 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %1906 = load ptr, ptr %1905, align 8, !tbaa !17
  %1907 = load i32, ptr %16, align 4, !tbaa !12
  %1908 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1906, i32 noundef %1907)
  %1909 = load ptr, ptr %1908, align 8, !tbaa !5
  %1910 = load i32, ptr %17, align 4, !tbaa !12
  %1911 = add nsw i32 %1910, 1
  %1912 = sext i32 %1911 to i64
  %1913 = getelementptr inbounds ptr, ptr %1909, i64 %1912
  %1914 = load ptr, ptr %1913, align 8, !tbaa !5
  %1915 = load i32, ptr %18, align 4, !tbaa !12
  %1916 = sext i32 %1915 to i64
  %1917 = getelementptr inbounds %struct.celle, ptr %1914, i64 %1916
  %1918 = getelementptr inbounds %struct.celle, ptr %1917, i32 0, i32 2
  %1919 = load double, ptr %1918, align 8, !tbaa !18
  %1920 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %1921 = load ptr, ptr %1920, align 8, !tbaa !17
  %1922 = load i32, ptr %16, align 4, !tbaa !12
  %1923 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1921, i32 noundef %1922)
  %1924 = load ptr, ptr %1923, align 8, !tbaa !5
  %1925 = load i32, ptr %17, align 4, !tbaa !12
  %1926 = sext i32 %1925 to i64
  %1927 = getelementptr inbounds ptr, ptr %1924, i64 %1926
  %1928 = load ptr, ptr %1927, align 8, !tbaa !5
  %1929 = load i32, ptr %18, align 4, !tbaa !12
  %1930 = sext i32 %1929 to i64
  %1931 = getelementptr inbounds %struct.celle, ptr %1928, i64 %1930
  %1932 = getelementptr inbounds %struct.celle, ptr %1931, i32 0, i32 2
  %1933 = load double, ptr %1932, align 8, !tbaa !18
  %1934 = fsub double %1919, %1933
  %1935 = getelementptr inbounds %class.five_point_solver, ptr %19, i32 0, i32 2
  %1936 = load double, ptr %1935, align 8, !tbaa !20
  %1937 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %1938 = load ptr, ptr %1937, align 8, !tbaa !17
  %1939 = load i32, ptr %16, align 4, !tbaa !12
  %1940 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1938, i32 noundef %1939)
  %1941 = load ptr, ptr %1940, align 8, !tbaa !5
  %1942 = load i32, ptr %17, align 4, !tbaa !12
  %1943 = add nsw i32 %1942, 2
  %1944 = sext i32 %1943 to i64
  %1945 = getelementptr inbounds ptr, ptr %1941, i64 %1944
  %1946 = load ptr, ptr %1945, align 8, !tbaa !5
  %1947 = load i32, ptr %18, align 4, !tbaa !12
  %1948 = sext i32 %1947 to i64
  %1949 = getelementptr inbounds %struct.celle, ptr %1946, i64 %1948
  %1950 = getelementptr inbounds %struct.celle, ptr %1949, i32 0, i32 2
  %1951 = load double, ptr %1950, align 8, !tbaa !18
  %1952 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %1953 = load ptr, ptr %1952, align 8, !tbaa !17
  %1954 = load i32, ptr %16, align 4, !tbaa !12
  %1955 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1953, i32 noundef %1954)
  %1956 = load ptr, ptr %1955, align 8, !tbaa !5
  %1957 = load i32, ptr %17, align 4, !tbaa !12
  %1958 = add nsw i32 %1957, 1
  %1959 = sext i32 %1958 to i64
  %1960 = getelementptr inbounds ptr, ptr %1956, i64 %1959
  %1961 = load ptr, ptr %1960, align 8, !tbaa !5
  %1962 = load i32, ptr %18, align 4, !tbaa !12
  %1963 = sext i32 %1962 to i64
  %1964 = getelementptr inbounds %struct.celle, ptr %1961, i64 %1963
  %1965 = getelementptr inbounds %struct.celle, ptr %1964, i32 0, i32 2
  %1966 = load double, ptr %1965, align 8, !tbaa !18
  %1967 = fsub double %1951, %1966
  %1968 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %1969 = load ptr, ptr %1968, align 8, !tbaa !17
  %1970 = load i32, ptr %16, align 4, !tbaa !12
  %1971 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1969, i32 noundef %1970)
  %1972 = load ptr, ptr %1971, align 8, !tbaa !5
  %1973 = load i32, ptr %17, align 4, !tbaa !12
  %1974 = sext i32 %1973 to i64
  %1975 = getelementptr inbounds ptr, ptr %1972, i64 %1974
  %1976 = load ptr, ptr %1975, align 8, !tbaa !5
  %1977 = load i32, ptr %18, align 4, !tbaa !12
  %1978 = sext i32 %1977 to i64
  %1979 = getelementptr inbounds %struct.celle, ptr %1976, i64 %1978
  %1980 = getelementptr inbounds %struct.celle, ptr %1979, i32 0, i32 2
  %1981 = load double, ptr %1980, align 8, !tbaa !18
  %1982 = fadd double %1967, %1981
  %1983 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %1984 = load ptr, ptr %1983, align 8, !tbaa !17
  %1985 = load i32, ptr %16, align 4, !tbaa !12
  %1986 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1984, i32 noundef %1985)
  %1987 = load ptr, ptr %1986, align 8, !tbaa !5
  %1988 = load i32, ptr %17, align 4, !tbaa !12
  %1989 = sub nsw i32 %1988, 1
  %1990 = sext i32 %1989 to i64
  %1991 = getelementptr inbounds ptr, ptr %1987, i64 %1990
  %1992 = load ptr, ptr %1991, align 8, !tbaa !5
  %1993 = load i32, ptr %18, align 4, !tbaa !12
  %1994 = sext i32 %1993 to i64
  %1995 = getelementptr inbounds %struct.celle, ptr %1992, i64 %1994
  %1996 = getelementptr inbounds %struct.celle, ptr %1995, i32 0, i32 2
  %1997 = load double, ptr %1996, align 8, !tbaa !18
  %1998 = fsub double %1982, %1997
  %1999 = fmul double %1936, %1998
  %2000 = call double @llvm.fmuladd.f64(double %1904, double %1934, double %1999)
  %2001 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 9
  %2002 = load double, ptr %2001, align 8, !tbaa !21
  %2003 = getelementptr inbounds %class.five_point_solver, ptr %19, i32 0, i32 6
  %2004 = load double, ptr %2003, align 8, !tbaa !22
  %2005 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %2006 = load ptr, ptr %2005, align 8, !tbaa !17
  %2007 = load i32, ptr %16, align 4, !tbaa !12
  %2008 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %2006, i32 noundef %2007)
  %2009 = load ptr, ptr %2008, align 8, !tbaa !5
  %2010 = load i32, ptr %17, align 4, !tbaa !12
  %2011 = sext i32 %2010 to i64
  %2012 = getelementptr inbounds ptr, ptr %2009, i64 %2011
  %2013 = load ptr, ptr %2012, align 8, !tbaa !5
  %2014 = load i32, ptr %18, align 4, !tbaa !12
  %2015 = sext i32 %2014 to i64
  %2016 = getelementptr inbounds %struct.celle, ptr %2013, i64 %2015
  %2017 = getelementptr inbounds %struct.celle, ptr %2016, i32 0, i32 1
  %2018 = load double, ptr %2017, align 8, !tbaa !23
  %2019 = fneg double %2018
  %2020 = getelementptr inbounds %class.five_point_solver, ptr %19, i32 0, i32 3
  %2021 = load double, ptr %2020, align 8, !tbaa !24
  %2022 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %2023 = load ptr, ptr %2022, align 8, !tbaa !17
  %2024 = load i32, ptr %16, align 4, !tbaa !12
  %2025 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %2023, i32 noundef %2024)
  %2026 = load ptr, ptr %2025, align 8, !tbaa !5
  %2027 = load i32, ptr %17, align 4, !tbaa !12
  %2028 = sext i32 %2027 to i64
  %2029 = getelementptr inbounds ptr, ptr %2026, i64 %2028
  %2030 = load ptr, ptr %2029, align 8, !tbaa !5
  %2031 = load i32, ptr %18, align 4, !tbaa !12
  %2032 = sext i32 %2031 to i64
  %2033 = getelementptr inbounds %struct.celle, ptr %2030, i64 %2032
  %2034 = getelementptr inbounds %struct.celle, ptr %2033, i32 0, i32 1
  %2035 = load double, ptr %2034, align 8, !tbaa !23
  %2036 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %2037 = load ptr, ptr %2036, align 8, !tbaa !17
  %2038 = load i32, ptr %16, align 4, !tbaa !12
  %2039 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %2037, i32 noundef %2038)
  %2040 = load ptr, ptr %2039, align 8, !tbaa !5
  %2041 = load i32, ptr %17, align 4, !tbaa !12
  %2042 = sext i32 %2041 to i64
  %2043 = getelementptr inbounds ptr, ptr %2040, i64 %2042
  %2044 = load ptr, ptr %2043, align 8, !tbaa !5
  %2045 = load i32, ptr %18, align 4, !tbaa !12
  %2046 = sub nsw i32 %2045, 1
  %2047 = sext i32 %2046 to i64
  %2048 = getelementptr inbounds %struct.celle, ptr %2044, i64 %2047
  %2049 = getelementptr inbounds %struct.celle, ptr %2048, i32 0, i32 1
  %2050 = load double, ptr %2049, align 8, !tbaa !23
  %2051 = fsub double %2035, %2050
  %2052 = fmul double %2021, %2051
  %2053 = call double @llvm.fmuladd.f64(double %2004, double %2019, double %2052)
  %2054 = fmul double %2002, %2053
  %2055 = call double @llvm.fmuladd.f64(double %1902, double %2000, double %2054)
  %2056 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 2
  %2057 = load ptr, ptr %2056, align 8, !tbaa !9
  %2058 = load i32, ptr %16, align 4, !tbaa !12
  %2059 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5cellbEixEi(ptr noundef nonnull align 8 dereferenceable(40) %2057, i32 noundef %2058)
  %2060 = load ptr, ptr %2059, align 8, !tbaa !5
  %2061 = load i32, ptr %17, align 4, !tbaa !12
  %2062 = sext i32 %2061 to i64
  %2063 = getelementptr inbounds ptr, ptr %2060, i64 %2062
  %2064 = load ptr, ptr %2063, align 8, !tbaa !5
  %2065 = load i32, ptr %18, align 4, !tbaa !12
  %2066 = sext i32 %2065 to i64
  %2067 = getelementptr inbounds %struct.cellb, ptr %2064, i64 %2066
  %2068 = getelementptr inbounds %struct.cellb, ptr %2067, i32 0, i32 0
  %2069 = load double, ptr %2068, align 8, !tbaa !25
  %2070 = call double @llvm.fmuladd.f64(double 5.000000e-01, double %2055, double %2069)
  store double %2070, ptr %2068, align 8, !tbaa !25
  %2071 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 7
  %2072 = load double, ptr %2071, align 8, !tbaa !27
  %2073 = getelementptr inbounds %class.five_point_solver, ptr %19, i32 0, i32 4
  %2074 = load double, ptr %2073, align 8, !tbaa !28
  %2075 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %2076 = load ptr, ptr %2075, align 8, !tbaa !17
  %2077 = load i32, ptr %16, align 4, !tbaa !12
  %2078 = add nsw i32 %2077, 1
  %2079 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %2076, i32 noundef %2078)
  %2080 = load ptr, ptr %2079, align 8, !tbaa !5
  %2081 = load i32, ptr %17, align 4, !tbaa !12
  %2082 = sext i32 %2081 to i64
  %2083 = getelementptr inbounds ptr, ptr %2080, i64 %2082
  %2084 = load ptr, ptr %2083, align 8, !tbaa !5
  %2085 = load i32, ptr %18, align 4, !tbaa !12
  %2086 = sext i32 %2085 to i64
  %2087 = getelementptr inbounds %struct.celle, ptr %2084, i64 %2086
  %2088 = getelementptr inbounds %struct.celle, ptr %2087, i32 0, i32 2
  %2089 = load double, ptr %2088, align 8, !tbaa !18
  %2090 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %2091 = load ptr, ptr %2090, align 8, !tbaa !17
  %2092 = load i32, ptr %16, align 4, !tbaa !12
  %2093 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %2091, i32 noundef %2092)
  %2094 = load ptr, ptr %2093, align 8, !tbaa !5
  %2095 = load i32, ptr %17, align 4, !tbaa !12
  %2096 = sext i32 %2095 to i64
  %2097 = getelementptr inbounds ptr, ptr %2094, i64 %2096
  %2098 = load ptr, ptr %2097, align 8, !tbaa !5
  %2099 = load i32, ptr %18, align 4, !tbaa !12
  %2100 = sext i32 %2099 to i64
  %2101 = getelementptr inbounds %struct.celle, ptr %2098, i64 %2100
  %2102 = getelementptr inbounds %struct.celle, ptr %2101, i32 0, i32 2
  %2103 = load double, ptr %2102, align 8, !tbaa !18
  %2104 = fsub double %2089, %2103
  %2105 = getelementptr inbounds %class.five_point_solver, ptr %19, i32 0, i32 1
  %2106 = load double, ptr %2105, align 8, !tbaa !29
  %2107 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %2108 = load ptr, ptr %2107, align 8, !tbaa !17
  %2109 = load i32, ptr %16, align 4, !tbaa !12
  %2110 = add nsw i32 %2109, 2
  %2111 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %2108, i32 noundef %2110)
  %2112 = load ptr, ptr %2111, align 8, !tbaa !5
  %2113 = load i32, ptr %17, align 4, !tbaa !12
  %2114 = sext i32 %2113 to i64
  %2115 = getelementptr inbounds ptr, ptr %2112, i64 %2114
  %2116 = load ptr, ptr %2115, align 8, !tbaa !5
  %2117 = load i32, ptr %18, align 4, !tbaa !12
  %2118 = sext i32 %2117 to i64
  %2119 = getelementptr inbounds %struct.celle, ptr %2116, i64 %2118
  %2120 = getelementptr inbounds %struct.celle, ptr %2119, i32 0, i32 2
  %2121 = load double, ptr %2120, align 8, !tbaa !18
  %2122 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %2123 = load ptr, ptr %2122, align 8, !tbaa !17
  %2124 = load i32, ptr %16, align 4, !tbaa !12
  %2125 = add nsw i32 %2124, 1
  %2126 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %2123, i32 noundef %2125)
  %2127 = load ptr, ptr %2126, align 8, !tbaa !5
  %2128 = load i32, ptr %17, align 4, !tbaa !12
  %2129 = sext i32 %2128 to i64
  %2130 = getelementptr inbounds ptr, ptr %2127, i64 %2129
  %2131 = load ptr, ptr %2130, align 8, !tbaa !5
  %2132 = load i32, ptr %18, align 4, !tbaa !12
  %2133 = sext i32 %2132 to i64
  %2134 = getelementptr inbounds %struct.celle, ptr %2131, i64 %2133
  %2135 = getelementptr inbounds %struct.celle, ptr %2134, i32 0, i32 2
  %2136 = load double, ptr %2135, align 8, !tbaa !18
  %2137 = fsub double %2121, %2136
  %2138 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %2139 = load ptr, ptr %2138, align 8, !tbaa !17
  %2140 = load i32, ptr %16, align 4, !tbaa !12
  %2141 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %2139, i32 noundef %2140)
  %2142 = load ptr, ptr %2141, align 8, !tbaa !5
  %2143 = load i32, ptr %17, align 4, !tbaa !12
  %2144 = sext i32 %2143 to i64
  %2145 = getelementptr inbounds ptr, ptr %2142, i64 %2144
  %2146 = load ptr, ptr %2145, align 8, !tbaa !5
  %2147 = load i32, ptr %18, align 4, !tbaa !12
  %2148 = sext i32 %2147 to i64
  %2149 = getelementptr inbounds %struct.celle, ptr %2146, i64 %2148
  %2150 = getelementptr inbounds %struct.celle, ptr %2149, i32 0, i32 2
  %2151 = load double, ptr %2150, align 8, !tbaa !18
  %2152 = fadd double %2137, %2151
  %2153 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %2154 = load ptr, ptr %2153, align 8, !tbaa !17
  %2155 = load i32, ptr %16, align 4, !tbaa !12
  %2156 = sub nsw i32 %2155, 1
  %2157 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %2154, i32 noundef %2156)
  %2158 = load ptr, ptr %2157, align 8, !tbaa !5
  %2159 = load i32, ptr %17, align 4, !tbaa !12
  %2160 = sext i32 %2159 to i64
  %2161 = getelementptr inbounds ptr, ptr %2158, i64 %2160
  %2162 = load ptr, ptr %2161, align 8, !tbaa !5
  %2163 = load i32, ptr %18, align 4, !tbaa !12
  %2164 = sext i32 %2163 to i64
  %2165 = getelementptr inbounds %struct.celle, ptr %2162, i64 %2164
  %2166 = getelementptr inbounds %struct.celle, ptr %2165, i32 0, i32 2
  %2167 = load double, ptr %2166, align 8, !tbaa !18
  %2168 = fsub double %2152, %2167
  %2169 = fmul double %2106, %2168
  %2170 = call double @llvm.fmuladd.f64(double %2074, double %2104, double %2169)
  %2171 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 9
  %2172 = load double, ptr %2171, align 8, !tbaa !21
  %2173 = getelementptr inbounds %class.five_point_solver, ptr %19, i32 0, i32 6
  %2174 = load double, ptr %2173, align 8, !tbaa !22
  %2175 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %2176 = load ptr, ptr %2175, align 8, !tbaa !17
  %2177 = load i32, ptr %16, align 4, !tbaa !12
  %2178 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %2176, i32 noundef %2177)
  %2179 = load ptr, ptr %2178, align 8, !tbaa !5
  %2180 = load i32, ptr %17, align 4, !tbaa !12
  %2181 = sext i32 %2180 to i64
  %2182 = getelementptr inbounds ptr, ptr %2179, i64 %2181
  %2183 = load ptr, ptr %2182, align 8, !tbaa !5
  %2184 = load i32, ptr %18, align 4, !tbaa !12
  %2185 = sext i32 %2184 to i64
  %2186 = getelementptr inbounds %struct.celle, ptr %2183, i64 %2185
  %2187 = getelementptr inbounds %struct.celle, ptr %2186, i32 0, i32 0
  %2188 = load double, ptr %2187, align 8, !tbaa !30
  %2189 = fneg double %2188
  %2190 = getelementptr inbounds %class.five_point_solver, ptr %19, i32 0, i32 3
  %2191 = load double, ptr %2190, align 8, !tbaa !24
  %2192 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %2193 = load ptr, ptr %2192, align 8, !tbaa !17
  %2194 = load i32, ptr %16, align 4, !tbaa !12
  %2195 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %2193, i32 noundef %2194)
  %2196 = load ptr, ptr %2195, align 8, !tbaa !5
  %2197 = load i32, ptr %17, align 4, !tbaa !12
  %2198 = sext i32 %2197 to i64
  %2199 = getelementptr inbounds ptr, ptr %2196, i64 %2198
  %2200 = load ptr, ptr %2199, align 8, !tbaa !5
  %2201 = load i32, ptr %18, align 4, !tbaa !12
  %2202 = sext i32 %2201 to i64
  %2203 = getelementptr inbounds %struct.celle, ptr %2200, i64 %2202
  %2204 = getelementptr inbounds %struct.celle, ptr %2203, i32 0, i32 0
  %2205 = load double, ptr %2204, align 8, !tbaa !30
  %2206 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %2207 = load ptr, ptr %2206, align 8, !tbaa !17
  %2208 = load i32, ptr %16, align 4, !tbaa !12
  %2209 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %2207, i32 noundef %2208)
  %2210 = load ptr, ptr %2209, align 8, !tbaa !5
  %2211 = load i32, ptr %17, align 4, !tbaa !12
  %2212 = sext i32 %2211 to i64
  %2213 = getelementptr inbounds ptr, ptr %2210, i64 %2212
  %2214 = load ptr, ptr %2213, align 8, !tbaa !5
  %2215 = load i32, ptr %18, align 4, !tbaa !12
  %2216 = sub nsw i32 %2215, 1
  %2217 = sext i32 %2216 to i64
  %2218 = getelementptr inbounds %struct.celle, ptr %2214, i64 %2217
  %2219 = getelementptr inbounds %struct.celle, ptr %2218, i32 0, i32 0
  %2220 = load double, ptr %2219, align 8, !tbaa !30
  %2221 = fsub double %2205, %2220
  %2222 = fmul double %2191, %2221
  %2223 = call double @llvm.fmuladd.f64(double %2174, double %2189, double %2222)
  %2224 = fmul double %2172, %2223
  %2225 = fneg double %2224
  %2226 = call double @llvm.fmuladd.f64(double %2072, double %2170, double %2225)
  %2227 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 2
  %2228 = load ptr, ptr %2227, align 8, !tbaa !9
  %2229 = load i32, ptr %16, align 4, !tbaa !12
  %2230 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5cellbEixEi(ptr noundef nonnull align 8 dereferenceable(40) %2228, i32 noundef %2229)
  %2231 = load ptr, ptr %2230, align 8, !tbaa !5
  %2232 = load i32, ptr %17, align 4, !tbaa !12
  %2233 = sext i32 %2232 to i64
  %2234 = getelementptr inbounds ptr, ptr %2231, i64 %2233
  %2235 = load ptr, ptr %2234, align 8, !tbaa !5
  %2236 = load i32, ptr %18, align 4, !tbaa !12
  %2237 = sext i32 %2236 to i64
  %2238 = getelementptr inbounds %struct.cellb, ptr %2235, i64 %2237
  %2239 = getelementptr inbounds %struct.cellb, ptr %2238, i32 0, i32 1
  %2240 = load double, ptr %2239, align 8, !tbaa !31
  %2241 = call double @llvm.fmuladd.f64(double 5.000000e-01, double %2226, double %2240)
  store double %2241, ptr %2239, align 8, !tbaa !31
  %2242 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 8
  %2243 = load double, ptr %2242, align 8, !tbaa !14
  %2244 = getelementptr inbounds %class.five_point_solver, ptr %19, i32 0, i32 5
  %2245 = load double, ptr %2244, align 8, !tbaa !15
  %2246 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %2247 = load ptr, ptr %2246, align 8, !tbaa !17
  %2248 = load i32, ptr %16, align 4, !tbaa !12
  %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 %17, align 4, !tbaa !12
  %2252 = add nsw i32 %2251, 1
  %2253 = sext i32 %2252 to i64
  %2254 = getelementptr inbounds ptr, ptr %2250, i64 %2253
  %2255 = load ptr, ptr %2254, align 8, !tbaa !5
  %2256 = load i32, ptr %18, align 4, !tbaa !12
  %2257 = sext i32 %2256 to i64
  %2258 = getelementptr inbounds %struct.celle, ptr %2255, i64 %2257
  %2259 = getelementptr inbounds %struct.celle, ptr %2258, i32 0, i32 0
  %2260 = load double, ptr %2259, align 8, !tbaa !30
  %2261 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %2262 = load ptr, ptr %2261, align 8, !tbaa !17
  %2263 = load i32, ptr %16, align 4, !tbaa !12
  %2264 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %2262, i32 noundef %2263)
  %2265 = load ptr, ptr %2264, align 8, !tbaa !5
  %2266 = load i32, ptr %17, align 4, !tbaa !12
  %2267 = sext i32 %2266 to i64
  %2268 = getelementptr inbounds ptr, ptr %2265, i64 %2267
  %2269 = load ptr, ptr %2268, align 8, !tbaa !5
  %2270 = load i32, ptr %18, align 4, !tbaa !12
  %2271 = sext i32 %2270 to i64
  %2272 = getelementptr inbounds %struct.celle, ptr %2269, i64 %2271
  %2273 = getelementptr inbounds %struct.celle, ptr %2272, i32 0, i32 0
  %2274 = load double, ptr %2273, align 8, !tbaa !30
  %2275 = fsub double %2260, %2274
  %2276 = getelementptr inbounds %class.five_point_solver, ptr %19, i32 0, i32 2
  %2277 = load double, ptr %2276, align 8, !tbaa !20
  %2278 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %2279 = load ptr, ptr %2278, align 8, !tbaa !17
  %2280 = load i32, ptr %16, align 4, !tbaa !12
  %2281 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %2279, i32 noundef %2280)
  %2282 = load ptr, ptr %2281, align 8, !tbaa !5
  %2283 = load i32, ptr %17, align 4, !tbaa !12
  %2284 = add nsw i32 %2283, 2
  %2285 = sext i32 %2284 to i64
  %2286 = getelementptr inbounds ptr, ptr %2282, i64 %2285
  %2287 = load ptr, ptr %2286, align 8, !tbaa !5
  %2288 = load i32, ptr %18, align 4, !tbaa !12
  %2289 = sext i32 %2288 to i64
  %2290 = getelementptr inbounds %struct.celle, ptr %2287, i64 %2289
  %2291 = getelementptr inbounds %struct.celle, ptr %2290, i32 0, i32 0
  %2292 = load double, ptr %2291, align 8, !tbaa !30
  %2293 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %2294 = load ptr, ptr %2293, align 8, !tbaa !17
  %2295 = load i32, ptr %16, align 4, !tbaa !12
  %2296 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %2294, i32 noundef %2295)
  %2297 = load ptr, ptr %2296, align 8, !tbaa !5
  %2298 = load i32, ptr %17, align 4, !tbaa !12
  %2299 = add nsw i32 %2298, 1
  %2300 = sext i32 %2299 to i64
  %2301 = getelementptr inbounds ptr, ptr %2297, i64 %2300
  %2302 = load ptr, ptr %2301, align 8, !tbaa !5
  %2303 = load i32, ptr %18, align 4, !tbaa !12
  %2304 = sext i32 %2303 to i64
  %2305 = getelementptr inbounds %struct.celle, ptr %2302, i64 %2304
  %2306 = getelementptr inbounds %struct.celle, ptr %2305, i32 0, i32 0
  %2307 = load double, ptr %2306, align 8, !tbaa !30
  %2308 = fsub double %2292, %2307
  %2309 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %2310 = load ptr, ptr %2309, align 8, !tbaa !17
  %2311 = load i32, ptr %16, align 4, !tbaa !12
  %2312 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %2310, i32 noundef %2311)
  %2313 = load ptr, ptr %2312, align 8, !tbaa !5
  %2314 = load i32, ptr %17, align 4, !tbaa !12
  %2315 = sext i32 %2314 to i64
  %2316 = getelementptr inbounds ptr, ptr %2313, i64 %2315
  %2317 = load ptr, ptr %2316, align 8, !tbaa !5
  %2318 = load i32, ptr %18, align 4, !tbaa !12
  %2319 = sext i32 %2318 to i64
  %2320 = getelementptr inbounds %struct.celle, ptr %2317, i64 %2319
  %2321 = getelementptr inbounds %struct.celle, ptr %2320, i32 0, i32 0
  %2322 = load double, ptr %2321, align 8, !tbaa !30
  %2323 = fadd double %2308, %2322
  %2324 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %2325 = load ptr, ptr %2324, align 8, !tbaa !17
  %2326 = load i32, ptr %16, align 4, !tbaa !12
  %2327 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %2325, i32 noundef %2326)
  %2328 = load ptr, ptr %2327, align 8, !tbaa !5
  %2329 = load i32, ptr %17, align 4, !tbaa !12
  %2330 = sub nsw i32 %2329, 1
  %2331 = sext i32 %2330 to i64
  %2332 = getelementptr inbounds ptr, ptr %2328, i64 %2331
  %2333 = load ptr, ptr %2332, align 8, !tbaa !5
  %2334 = load i32, ptr %18, align 4, !tbaa !12
  %2335 = sext i32 %2334 to i64
  %2336 = getelementptr inbounds %struct.celle, ptr %2333, i64 %2335
  %2337 = getelementptr inbounds %struct.celle, ptr %2336, i32 0, i32 0
  %2338 = load double, ptr %2337, align 8, !tbaa !30
  %2339 = fsub double %2323, %2338
  %2340 = fmul double %2277, %2339
  %2341 = call double @llvm.fmuladd.f64(double %2245, double %2275, double %2340)
  %2342 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 7
  %2343 = load double, ptr %2342, align 8, !tbaa !27
  %2344 = getelementptr inbounds %class.five_point_solver, ptr %19, i32 0, i32 4
  %2345 = load double, ptr %2344, align 8, !tbaa !28
  %2346 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %2347 = load ptr, ptr %2346, align 8, !tbaa !17
  %2348 = load i32, ptr %16, align 4, !tbaa !12
  %2349 = add nsw i32 %2348, 1
  %2350 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %2347, i32 noundef %2349)
  %2351 = load ptr, ptr %2350, align 8, !tbaa !5
  %2352 = load i32, ptr %17, align 4, !tbaa !12
  %2353 = sext i32 %2352 to i64
  %2354 = getelementptr inbounds ptr, ptr %2351, i64 %2353
  %2355 = load ptr, ptr %2354, align 8, !tbaa !5
  %2356 = load i32, ptr %18, align 4, !tbaa !12
  %2357 = sext i32 %2356 to i64
  %2358 = getelementptr inbounds %struct.celle, ptr %2355, i64 %2357
  %2359 = getelementptr inbounds %struct.celle, ptr %2358, i32 0, i32 1
  %2360 = load double, ptr %2359, align 8, !tbaa !23
  %2361 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %2362 = load ptr, ptr %2361, align 8, !tbaa !17
  %2363 = load i32, ptr %16, align 4, !tbaa !12
  %2364 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %2362, i32 noundef %2363)
  %2365 = load ptr, ptr %2364, align 8, !tbaa !5
  %2366 = load i32, ptr %17, align 4, !tbaa !12
  %2367 = sext i32 %2366 to i64
  %2368 = getelementptr inbounds ptr, ptr %2365, i64 %2367
  %2369 = load ptr, ptr %2368, align 8, !tbaa !5
  %2370 = load i32, ptr %18, align 4, !tbaa !12
  %2371 = sext i32 %2370 to i64
  %2372 = getelementptr inbounds %struct.celle, ptr %2369, i64 %2371
  %2373 = getelementptr inbounds %struct.celle, ptr %2372, i32 0, i32 1
  %2374 = load double, ptr %2373, align 8, !tbaa !23
  %2375 = fsub double %2360, %2374
  %2376 = getelementptr inbounds %class.five_point_solver, ptr %19, i32 0, i32 1
  %2377 = load double, ptr %2376, align 8, !tbaa !29
  %2378 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %2379 = load ptr, ptr %2378, align 8, !tbaa !17
  %2380 = load i32, ptr %16, align 4, !tbaa !12
  %2381 = add nsw i32 %2380, 2
  %2382 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %2379, i32 noundef %2381)
  %2383 = load ptr, ptr %2382, align 8, !tbaa !5
  %2384 = load i32, ptr %17, align 4, !tbaa !12
  %2385 = sext i32 %2384 to i64
  %2386 = getelementptr inbounds ptr, ptr %2383, i64 %2385
  %2387 = load ptr, ptr %2386, align 8, !tbaa !5
  %2388 = load i32, ptr %18, align 4, !tbaa !12
  %2389 = sext i32 %2388 to i64
  %2390 = getelementptr inbounds %struct.celle, ptr %2387, i64 %2389
  %2391 = getelementptr inbounds %struct.celle, ptr %2390, i32 0, i32 1
  %2392 = load double, ptr %2391, align 8, !tbaa !23
  %2393 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %2394 = load ptr, ptr %2393, align 8, !tbaa !17
  %2395 = load i32, ptr %16, align 4, !tbaa !12
  %2396 = add nsw i32 %2395, 1
  %2397 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %2394, i32 noundef %2396)
  %2398 = load ptr, ptr %2397, align 8, !tbaa !5
  %2399 = load i32, ptr %17, align 4, !tbaa !12
  %2400 = sext i32 %2399 to i64
  %2401 = getelementptr inbounds ptr, ptr %2398, i64 %2400
  %2402 = load ptr, ptr %2401, align 8, !tbaa !5
  %2403 = load i32, ptr %18, align 4, !tbaa !12
  %2404 = sext i32 %2403 to i64
  %2405 = getelementptr inbounds %struct.celle, ptr %2402, i64 %2404
  %2406 = getelementptr inbounds %struct.celle, ptr %2405, i32 0, i32 1
  %2407 = load double, ptr %2406, align 8, !tbaa !23
  %2408 = fsub double %2392, %2407
  %2409 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %2410 = load ptr, ptr %2409, align 8, !tbaa !17
  %2411 = load i32, ptr %16, align 4, !tbaa !12
  %2412 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %2410, i32 noundef %2411)
  %2413 = load ptr, ptr %2412, align 8, !tbaa !5
  %2414 = load i32, ptr %17, align 4, !tbaa !12
  %2415 = sext i32 %2414 to i64
  %2416 = getelementptr inbounds ptr, ptr %2413, i64 %2415
  %2417 = load ptr, ptr %2416, align 8, !tbaa !5
  %2418 = load i32, ptr %18, align 4, !tbaa !12
  %2419 = sext i32 %2418 to i64
  %2420 = getelementptr inbounds %struct.celle, ptr %2417, i64 %2419
  %2421 = getelementptr inbounds %struct.celle, ptr %2420, i32 0, i32 1
  %2422 = load double, ptr %2421, align 8, !tbaa !23
  %2423 = fadd double %2408, %2422
  %2424 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 1
  %2425 = load ptr, ptr %2424, align 8, !tbaa !17
  %2426 = load i32, ptr %16, align 4, !tbaa !12
  %2427 = sub nsw i32 %2426, 1
  %2428 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %2425, i32 noundef %2427)
  %2429 = load ptr, ptr %2428, align 8, !tbaa !5
  %2430 = load i32, ptr %17, align 4, !tbaa !12
  %2431 = sext i32 %2430 to i64
  %2432 = getelementptr inbounds ptr, ptr %2429, i64 %2431
  %2433 = load ptr, ptr %2432, align 8, !tbaa !5
  %2434 = load i32, ptr %18, align 4, !tbaa !12
  %2435 = sext i32 %2434 to i64
  %2436 = getelementptr inbounds %struct.celle, ptr %2433, i64 %2435
  %2437 = getelementptr inbounds %struct.celle, ptr %2436, i32 0, i32 1
  %2438 = load double, ptr %2437, align 8, !tbaa !23
  %2439 = fsub double %2423, %2438
  %2440 = fmul double %2377, %2439
  %2441 = call double @llvm.fmuladd.f64(double %2345, double %2375, double %2440)
  %2442 = fmul double %2343, %2441
  %2443 = fneg double %2442
  %2444 = call double @llvm.fmuladd.f64(double %2243, double %2341, double %2443)
  %2445 = getelementptr inbounds %class.maxwell_solver, ptr %19, i32 0, i32 2
  %2446 = load ptr, ptr %2445, align 8, !tbaa !9
  %2447 = load i32, ptr %16, align 4, !tbaa !12
  %2448 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5cellbEixEi(ptr noundef nonnull align 8 dereferenceable(40) %2446, i32 noundef %2447)
  %2449 = load ptr, ptr %2448, align 8, !tbaa !5
  %2450 = load i32, ptr %17, align 4, !tbaa !12
  %2451 = sext i32 %2450 to i64
  %2452 = getelementptr inbounds ptr, ptr %2449, i64 %2451
  %2453 = load ptr, ptr %2452, align 8, !tbaa !5
  %2454 = load i32, ptr %18, align 4, !tbaa !12
  %2455 = sext i32 %2454 to i64
  %2456 = getelementptr inbounds %struct.cellb, ptr %2453, i64 %2455
  %2457 = getelementptr inbounds %struct.cellb, ptr %2456, i32 0, i32 2
  %2458 = load double, ptr %2457, align 8, !tbaa !32
  %2459 = call double @llvm.fmuladd.f64(double 5.000000e-01, double %2444, double %2458)
  store double %2459, ptr %2457, align 8, !tbaa !32
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #5
  br label %2460

2460:                                             ; preds = %1897
  %2461 = load i32, ptr %17, align 4, !tbaa !12
  %2462 = add nsw i32 %2461, 1
  store i32 %2462, ptr %17, align 4, !tbaa !12
  br label %1891, !llvm.loop !41

2463:                                             ; preds = %1896
  br label %2464

2464:                                             ; preds = %2463
  %2465 = load i32, ptr %16, align 4, !tbaa !12
  %2466 = add nsw i32 %2465, 1
  store i32 %2466, ptr %16, align 4, !tbaa !12
  br label %1884, !llvm.loop !42

2467:                                             ; preds = %1889
  call void @llvm.lifetime.end.p0(i64 4, ptr %5) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %4) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %3) #5
  ret void
}

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !6, i64 16}
!10 = !{!"_ZTS14maxwell_solver", !6, i64 8, !6, i64 16, !6, i64 24, !11, i64 32, !11, i64 40, !11, i64 48, !11, i64 56, !11, i64 64, !11, i64 72}
!11 = !{!"double", !7, i64 0}
!12 = !{!13, !13, i64 0}
!13 = !{!"int", !7, i64 0}
!14 = !{!10, !11, i64 64}
!15 = !{!16, !11, i64 112}
!16 = !{!"_ZTS17five_point_solver", !10, i64 0, !11, i64 80, !11, i64 88, !11, i64 96, !11, i64 104, !11, i64 112, !11, i64 120}
!17 = !{!10, !6, i64 8}
!18 = !{!19, !11, i64 16}
!19 = !{!"_ZTS5celle", !11, i64 0, !11, i64 8, !11, i64 16}
!20 = !{!16, !11, i64 88}
!21 = !{!10, !11, i64 72}
!22 = !{!16, !11, i64 120}
!23 = !{!19, !11, i64 8}
!24 = !{!16, !11, i64 96}
!25 = !{!26, !11, i64 0}
!26 = !{!"_ZTS5cellb", !11, i64 0, !11, i64 8, !11, i64 16}
!27 = !{!10, !11, i64 56}
!28 = !{!16, !11, i64 104}
!29 = !{!16, !11, i64 80}
!30 = !{!19, !11, i64 0}
!31 = !{!26, !11, i64 8}
!32 = !{!26, !11, i64 16}
!33 = distinct !{!33, !34}
!34 = !{!"llvm.loop.mustprogress"}
!35 = distinct !{!35, !34}
!36 = distinct !{!36, !34}
!37 = distinct !{!37, !34}
!38 = distinct !{!38, !34}
!39 = distinct !{!39, !34}
!40 = distinct !{!40, !34}
!41 = distinct !{!41, !34}
!42 = distinct !{!42, !34}


; 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 nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, double) #0

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN17five_point_solver9advance_bEv(ptr noundef nonnull readonly align 8 dereferenceable(128) %0) unnamed_addr #1 align 2 {
  %2 = getelementptr inbounds i8, ptr %0, i64 16
  %3 = load ptr, ptr %2, align 8, !tbaa !5
  %4 = tail call noundef i32 @_ZN7field3dI5cellbE6get_nxEv(ptr noundef nonnull align 8 dereferenceable(40) %3)
  %5 = load ptr, ptr %2, align 8, !tbaa !5
  %6 = tail call noundef i32 @_ZN7field3dI5cellbE6get_nyEv(ptr noundef nonnull align 8 dereferenceable(40) %5)
  %7 = load ptr, ptr %2, align 8, !tbaa !5
  %8 = tail call noundef i32 @_ZN7field3dI5cellbE6get_nzEv(ptr noundef nonnull align 8 dereferenceable(40) %7)
  %9 = add i32 %4, -2
  %10 = icmp sgt i32 %4, 3
  %11 = add i32 %6, -2
  br i1 %10, label %.preheader458.lr.ph, label %._crit_edge

.preheader458.lr.ph:                              ; preds = %1
  %12 = icmp sgt i32 %6, 3
  %13 = add i32 %8, -2
  %14 = getelementptr inbounds i8, ptr %0, i64 64
  %15 = getelementptr inbounds i8, ptr %0, i64 112
  %16 = getelementptr inbounds i8, ptr %0, i64 8
  %17 = getelementptr inbounds i8, ptr %0, i64 88
  %18 = getelementptr inbounds i8, ptr %0, i64 72
  %19 = getelementptr inbounds i8, ptr %0, i64 120
  %20 = getelementptr inbounds i8, ptr %0, i64 96
  %21 = getelementptr inbounds i8, ptr %0, i64 56
  %22 = getelementptr inbounds i8, ptr %0, i64 104
  %23 = getelementptr inbounds i8, ptr %0, i64 80
  br i1 %12, label %.preheader458.lr.ph.split.us, label %.lr.ph479

.preheader458.lr.ph.split.us:                     ; preds = %.preheader458.lr.ph
  %24 = icmp sgt i32 %8, 3
  br i1 %24, label %.preheader458.us.us.preheader, label %.preheader.us.preheader

.preheader458.us.us.preheader:                    ; preds = %.preheader458.lr.ph.split.us
  %wide.trip.count494 = zext i32 %11 to i64
  %wide.trip.count = zext i32 %13 to i64
  br label %.preheader458.us.us

.preheader458.us.us:                              ; preds = %.preheader458.us.us.preheader, %._crit_edge462.split.us.us.us
  %.0463.us.us = phi i32 [ %25, %._crit_edge462.split.us.us.us ], [ 1, %.preheader458.us.us.preheader ]
  %25 = add nuw nsw i32 %.0463.us.us, 1
  %26 = add nuw nsw i32 %.0463.us.us, 2
  %27 = add nsw i32 %.0463.us.us, -1
  br label %.preheader457.us.us.us

.preheader457.us.us.us:                           ; preds = %._crit_edge.us.us.us, %.preheader458.us.us
  %indvars.iv491 = phi i64 [ %indvars.iv.next492, %._crit_edge.us.us.us ], [ 1, %.preheader458.us.us ]
  %indvars.iv.next492 = add nuw nsw i64 %indvars.iv491, 1
  %28 = add nuw nsw i64 %indvars.iv491, 2
  %29 = add nsw i64 %indvars.iv491, -1
  br label %30

30:                                               ; preds = %30, %.preheader457.us.us.us
  %indvars.iv = phi i64 [ %indvars.iv.next, %30 ], [ 1, %.preheader457.us.us.us ]
  %31 = load double, ptr %14, align 8, !tbaa !11
  %32 = fneg double %31
  %33 = load double, ptr %15, align 8, !tbaa !12
  %34 = load ptr, ptr %16, align 8, !tbaa !14
  %35 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %34, i32 noundef %.0463.us.us)
  %36 = load ptr, ptr %35, align 8, !tbaa !15
  %37 = getelementptr inbounds ptr, ptr %36, i64 %indvars.iv.next492
  %38 = load ptr, ptr %37, align 8, !tbaa !15
  %39 = getelementptr inbounds %struct.celle, ptr %38, i64 %indvars.iv, i32 2
  %40 = load double, ptr %39, align 8, !tbaa !16
  %41 = load ptr, ptr %16, align 8, !tbaa !14
  %42 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %41, i32 noundef %.0463.us.us)
  %43 = load ptr, ptr %42, align 8, !tbaa !15
  %44 = getelementptr inbounds ptr, ptr %43, i64 %indvars.iv491
  %45 = load ptr, ptr %44, align 8, !tbaa !15
  %46 = getelementptr inbounds %struct.celle, ptr %45, i64 %indvars.iv, i32 2
  %47 = load double, ptr %46, align 8, !tbaa !16
  %48 = fsub double %40, %47
  %49 = load double, ptr %17, align 8, !tbaa !18
  %50 = load ptr, ptr %16, align 8, !tbaa !14
  %51 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %50, i32 noundef %.0463.us.us)
  %52 = load ptr, ptr %51, align 8, !tbaa !15
  %53 = getelementptr inbounds ptr, ptr %52, i64 %28
  %54 = load ptr, ptr %53, align 8, !tbaa !15
  %55 = getelementptr inbounds %struct.celle, ptr %54, i64 %indvars.iv, i32 2
  %56 = load double, ptr %55, align 8, !tbaa !16
  %57 = load ptr, ptr %16, align 8, !tbaa !14
  %58 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %57, i32 noundef %.0463.us.us)
  %59 = load ptr, ptr %58, align 8, !tbaa !15
  %60 = getelementptr inbounds ptr, ptr %59, i64 %indvars.iv.next492
  %61 = load ptr, ptr %60, align 8, !tbaa !15
  %62 = getelementptr inbounds %struct.celle, ptr %61, i64 %indvars.iv, i32 2
  %63 = load double, ptr %62, align 8, !tbaa !16
  %64 = fsub double %56, %63
  %65 = load ptr, ptr %16, align 8, !tbaa !14
  %66 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %65, i32 noundef %.0463.us.us)
  %67 = load ptr, ptr %66, align 8, !tbaa !15
  %68 = getelementptr inbounds ptr, ptr %67, i64 %indvars.iv491
  %69 = load ptr, ptr %68, align 8, !tbaa !15
  %70 = getelementptr inbounds %struct.celle, ptr %69, i64 %indvars.iv, i32 2
  %71 = load double, ptr %70, align 8, !tbaa !16
  %72 = fadd double %64, %71
  %73 = load ptr, ptr %16, align 8, !tbaa !14
  %74 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %73, i32 noundef %.0463.us.us)
  %75 = load ptr, ptr %74, align 8, !tbaa !15
  %76 = getelementptr inbounds ptr, ptr %75, i64 %29
  %77 = load ptr, ptr %76, align 8, !tbaa !15
  %78 = getelementptr inbounds %struct.celle, ptr %77, i64 %indvars.iv, i32 2
  %79 = load double, ptr %78, align 8, !tbaa !16
  %80 = fsub double %72, %79
  %81 = fmul double %49, %80
  %82 = tail call double @llvm.fmuladd.f64(double %33, double %48, double %81)
  %83 = load double, ptr %18, align 8, !tbaa !19
  %84 = load double, ptr %19, align 8, !tbaa !20
  %85 = load ptr, ptr %16, align 8, !tbaa !14
  %86 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %85, i32 noundef %.0463.us.us)
  %87 = load ptr, ptr %86, align 8, !tbaa !15
  %88 = getelementptr inbounds ptr, ptr %87, i64 %indvars.iv491
  %89 = load ptr, ptr %88, align 8, !tbaa !15
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %90 = getelementptr inbounds %struct.celle, ptr %89, i64 %indvars.iv.next, i32 1
  %91 = load double, ptr %90, align 8, !tbaa !21
  %92 = load ptr, ptr %16, align 8, !tbaa !14
  %93 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %92, i32 noundef %.0463.us.us)
  %94 = load ptr, ptr %93, align 8, !tbaa !15
  %95 = getelementptr inbounds ptr, ptr %94, i64 %indvars.iv491
  %96 = load ptr, ptr %95, align 8, !tbaa !15
  %97 = getelementptr inbounds %struct.celle, ptr %96, i64 %indvars.iv, i32 1
  %98 = load double, ptr %97, align 8, !tbaa !21
  %99 = fsub double %91, %98
  %100 = load double, ptr %20, align 8, !tbaa !22
  %101 = load ptr, ptr %16, align 8, !tbaa !14
  %102 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %101, i32 noundef %.0463.us.us)
  %103 = load ptr, ptr %102, align 8, !tbaa !15
  %104 = getelementptr inbounds ptr, ptr %103, i64 %indvars.iv491
  %105 = load ptr, ptr %104, align 8, !tbaa !15
  %106 = add nuw nsw i64 %indvars.iv, 2
  %107 = getelementptr inbounds %struct.celle, ptr %105, i64 %106, i32 1
  %108 = load double, ptr %107, align 8, !tbaa !21
  %109 = load ptr, ptr %16, align 8, !tbaa !14
  %110 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %109, i32 noundef %.0463.us.us)
  %111 = load ptr, ptr %110, align 8, !tbaa !15
  %112 = getelementptr inbounds ptr, ptr %111, i64 %indvars.iv491
  %113 = load ptr, ptr %112, align 8, !tbaa !15
  %114 = getelementptr inbounds %struct.celle, ptr %113, i64 %indvars.iv.next, i32 1
  %115 = load double, ptr %114, align 8, !tbaa !21
  %116 = fsub double %108, %115
  %117 = load ptr, ptr %16, align 8, !tbaa !14
  %118 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %117, i32 noundef %.0463.us.us)
  %119 = load ptr, ptr %118, align 8, !tbaa !15
  %120 = getelementptr inbounds ptr, ptr %119, i64 %indvars.iv491
  %121 = load ptr, ptr %120, align 8, !tbaa !15
  %122 = getelementptr inbounds %struct.celle, ptr %121, i64 %indvars.iv, i32 1
  %123 = load double, ptr %122, align 8, !tbaa !21
  %124 = fadd double %116, %123
  %125 = load ptr, ptr %16, align 8, !tbaa !14
  %126 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %125, i32 noundef %.0463.us.us)
  %127 = load ptr, ptr %126, align 8, !tbaa !15
  %128 = getelementptr inbounds ptr, ptr %127, i64 %indvars.iv491
  %129 = load ptr, ptr %128, align 8, !tbaa !15
  %130 = add nsw i64 %indvars.iv, -1
  %131 = getelementptr inbounds %struct.celle, ptr %129, i64 %130, i32 1
  %132 = load double, ptr %131, align 8, !tbaa !21
  %133 = fsub double %124, %132
  %134 = fmul double %100, %133
  %135 = tail call double @llvm.fmuladd.f64(double %84, double %99, double %134)
  %136 = fmul double %83, %135
  %137 = tail call double @llvm.fmuladd.f64(double %32, double %82, double %136)
  %138 = load ptr, ptr %2, align 8, !tbaa !5
  %139 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5cellbEixEi(ptr noundef nonnull align 8 dereferenceable(40) %138, i32 noundef %.0463.us.us)
  %140 = load ptr, ptr %139, align 8, !tbaa !15
  %141 = getelementptr inbounds ptr, ptr %140, i64 %indvars.iv491
  %142 = load ptr, ptr %141, align 8, !tbaa !15
  %143 = getelementptr inbounds %struct.cellb, ptr %142, i64 %indvars.iv
  %144 = load double, ptr %143, align 8, !tbaa !23
  %145 = tail call double @llvm.fmuladd.f64(double %137, double 5.000000e-01, double %144)
  store double %145, ptr %143, align 8, !tbaa !23
  %146 = load double, ptr %21, align 8, !tbaa !25
  %147 = load double, ptr %22, align 8, !tbaa !26
  %148 = load ptr, ptr %16, align 8, !tbaa !14
  %149 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %148, i32 noundef %25)
  %150 = load ptr, ptr %149, align 8, !tbaa !15
  %151 = getelementptr inbounds ptr, ptr %150, i64 %indvars.iv491
  %152 = load ptr, ptr %151, align 8, !tbaa !15
  %153 = getelementptr inbounds %struct.celle, ptr %152, i64 %indvars.iv, i32 2
  %154 = load double, ptr %153, align 8, !tbaa !16
  %155 = load ptr, ptr %16, align 8, !tbaa !14
  %156 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %155, i32 noundef %.0463.us.us)
  %157 = load ptr, ptr %156, align 8, !tbaa !15
  %158 = getelementptr inbounds ptr, ptr %157, i64 %indvars.iv491
  %159 = load ptr, ptr %158, align 8, !tbaa !15
  %160 = getelementptr inbounds %struct.celle, ptr %159, i64 %indvars.iv, i32 2
  %161 = load double, ptr %160, align 8, !tbaa !16
  %162 = fsub double %154, %161
  %163 = load double, ptr %23, align 8, !tbaa !27
  %164 = load ptr, ptr %16, align 8, !tbaa !14
  %165 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %164, i32 noundef %26)
  %166 = load ptr, ptr %165, align 8, !tbaa !15
  %167 = getelementptr inbounds ptr, ptr %166, i64 %indvars.iv491
  %168 = load ptr, ptr %167, align 8, !tbaa !15
  %169 = getelementptr inbounds %struct.celle, ptr %168, i64 %indvars.iv, i32 2
  %170 = load double, ptr %169, align 8, !tbaa !16
  %171 = load ptr, ptr %16, align 8, !tbaa !14
  %172 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %171, i32 noundef %25)
  %173 = load ptr, ptr %172, align 8, !tbaa !15
  %174 = getelementptr inbounds ptr, ptr %173, i64 %indvars.iv491
  %175 = load ptr, ptr %174, align 8, !tbaa !15
  %176 = getelementptr inbounds %struct.celle, ptr %175, i64 %indvars.iv, i32 2
  %177 = load double, ptr %176, align 8, !tbaa !16
  %178 = fsub double %170, %177
  %179 = load ptr, ptr %16, align 8, !tbaa !14
  %180 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %179, i32 noundef %.0463.us.us)
  %181 = load ptr, ptr %180, align 8, !tbaa !15
  %182 = getelementptr inbounds ptr, ptr %181, i64 %indvars.iv491
  %183 = load ptr, ptr %182, align 8, !tbaa !15
  %184 = getelementptr inbounds %struct.celle, ptr %183, i64 %indvars.iv, i32 2
  %185 = load double, ptr %184, align 8, !tbaa !16
  %186 = fadd double %178, %185
  %187 = load ptr, ptr %16, align 8, !tbaa !14
  %188 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %187, i32 noundef %27)
  %189 = load ptr, ptr %188, align 8, !tbaa !15
  %190 = getelementptr inbounds ptr, ptr %189, i64 %indvars.iv491
  %191 = load ptr, ptr %190, align 8, !tbaa !15
  %192 = getelementptr inbounds %struct.celle, ptr %191, i64 %indvars.iv, i32 2
  %193 = load double, ptr %192, align 8, !tbaa !16
  %194 = fsub double %186, %193
  %195 = fmul double %163, %194
  %196 = tail call double @llvm.fmuladd.f64(double %147, double %162, double %195)
  %197 = load double, ptr %18, align 8, !tbaa !19
  %198 = load double, ptr %19, align 8, !tbaa !20
  %199 = load ptr, ptr %16, align 8, !tbaa !14
  %200 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %199, i32 noundef %.0463.us.us)
  %201 = load ptr, ptr %200, align 8, !tbaa !15
  %202 = getelementptr inbounds ptr, ptr %201, i64 %indvars.iv491
  %203 = load ptr, ptr %202, align 8, !tbaa !15
  %204 = getelementptr inbounds %struct.celle, ptr %203, i64 %indvars.iv.next
  %205 = load double, ptr %204, align 8, !tbaa !28
  %206 = load ptr, ptr %16, align 8, !tbaa !14
  %207 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %206, i32 noundef %.0463.us.us)
  %208 = load ptr, ptr %207, align 8, !tbaa !15
  %209 = getelementptr inbounds ptr, ptr %208, i64 %indvars.iv491
  %210 = load ptr, ptr %209, align 8, !tbaa !15
  %211 = getelementptr inbounds %struct.celle, ptr %210, i64 %indvars.iv
  %212 = load double, ptr %211, align 8, !tbaa !28
  %213 = fsub double %205, %212
  %214 = load double, ptr %20, align 8, !tbaa !22
  %215 = load ptr, ptr %16, align 8, !tbaa !14
  %216 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %215, i32 noundef %.0463.us.us)
  %217 = load ptr, ptr %216, align 8, !tbaa !15
  %218 = getelementptr inbounds ptr, ptr %217, i64 %indvars.iv491
  %219 = load ptr, ptr %218, align 8, !tbaa !15
  %220 = getelementptr inbounds %struct.celle, ptr %219, i64 %106
  %221 = load double, ptr %220, align 8, !tbaa !28
  %222 = load ptr, ptr %16, align 8, !tbaa !14
  %223 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %222, i32 noundef %.0463.us.us)
  %224 = load ptr, ptr %223, align 8, !tbaa !15
  %225 = getelementptr inbounds ptr, ptr %224, i64 %indvars.iv491
  %226 = load ptr, ptr %225, align 8, !tbaa !15
  %227 = getelementptr inbounds %struct.celle, ptr %226, i64 %indvars.iv.next
  %228 = load double, ptr %227, align 8, !tbaa !28
  %229 = fsub double %221, %228
  %230 = load ptr, ptr %16, align 8, !tbaa !14
  %231 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %230, i32 noundef %.0463.us.us)
  %232 = load ptr, ptr %231, align 8, !tbaa !15
  %233 = getelementptr inbounds ptr, ptr %232, i64 %indvars.iv491
  %234 = load ptr, ptr %233, align 8, !tbaa !15
  %235 = getelementptr inbounds %struct.celle, ptr %234, i64 %indvars.iv
  %236 = load double, ptr %235, align 8, !tbaa !28
  %237 = fadd double %229, %236
  %238 = load ptr, ptr %16, align 8, !tbaa !14
  %239 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %238, i32 noundef %.0463.us.us)
  %240 = load ptr, ptr %239, align 8, !tbaa !15
  %241 = getelementptr inbounds ptr, ptr %240, i64 %indvars.iv491
  %242 = load ptr, ptr %241, align 8, !tbaa !15
  %243 = getelementptr inbounds %struct.celle, ptr %242, i64 %130
  %244 = load double, ptr %243, align 8, !tbaa !28
  %245 = fsub double %237, %244
  %246 = fmul double %214, %245
  %247 = tail call double @llvm.fmuladd.f64(double %198, double %213, double %246)
  %248 = fneg double %197
  %249 = fmul double %247, %248
  %250 = tail call double @llvm.fmuladd.f64(double %146, double %196, double %249)
  %251 = load ptr, ptr %2, align 8, !tbaa !5
  %252 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5cellbEixEi(ptr noundef nonnull align 8 dereferenceable(40) %251, i32 noundef %.0463.us.us)
  %253 = load ptr, ptr %252, align 8, !tbaa !15
  %254 = getelementptr inbounds ptr, ptr %253, i64 %indvars.iv491
  %255 = load ptr, ptr %254, align 8, !tbaa !15
  %256 = getelementptr inbounds %struct.cellb, ptr %255, i64 %indvars.iv, i32 1
  %257 = load double, ptr %256, align 8, !tbaa !29
  %258 = tail call double @llvm.fmuladd.f64(double %250, double 5.000000e-01, double %257)
  store double %258, ptr %256, align 8, !tbaa !29
  %259 = load double, ptr %14, align 8, !tbaa !11
  %260 = load double, ptr %15, align 8, !tbaa !12
  %261 = load ptr, ptr %16, align 8, !tbaa !14
  %262 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %261, i32 noundef %.0463.us.us)
  %263 = load ptr, ptr %262, align 8, !tbaa !15
  %264 = getelementptr inbounds ptr, ptr %263, i64 %indvars.iv.next492
  %265 = load ptr, ptr %264, align 8, !tbaa !15
  %266 = getelementptr inbounds %struct.celle, ptr %265, i64 %indvars.iv
  %267 = load double, ptr %266, align 8, !tbaa !28
  %268 = load ptr, ptr %16, align 8, !tbaa !14
  %269 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %268, i32 noundef %.0463.us.us)
  %270 = load ptr, ptr %269, align 8, !tbaa !15
  %271 = getelementptr inbounds ptr, ptr %270, i64 %indvars.iv491
  %272 = load ptr, ptr %271, align 8, !tbaa !15
  %273 = getelementptr inbounds %struct.celle, ptr %272, i64 %indvars.iv
  %274 = load double, ptr %273, align 8, !tbaa !28
  %275 = fsub double %267, %274
  %276 = load double, ptr %17, align 8, !tbaa !18
  %277 = load ptr, ptr %16, align 8, !tbaa !14
  %278 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %277, i32 noundef %.0463.us.us)
  %279 = load ptr, ptr %278, align 8, !tbaa !15
  %280 = getelementptr inbounds ptr, ptr %279, i64 %28
  %281 = load ptr, ptr %280, align 8, !tbaa !15
  %282 = getelementptr inbounds %struct.celle, ptr %281, i64 %indvars.iv
  %283 = load double, ptr %282, align 8, !tbaa !28
  %284 = load ptr, ptr %16, align 8, !tbaa !14
  %285 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %284, i32 noundef %.0463.us.us)
  %286 = load ptr, ptr %285, align 8, !tbaa !15
  %287 = getelementptr inbounds ptr, ptr %286, i64 %indvars.iv.next492
  %288 = load ptr, ptr %287, align 8, !tbaa !15
  %289 = getelementptr inbounds %struct.celle, ptr %288, i64 %indvars.iv
  %290 = load double, ptr %289, align 8, !tbaa !28
  %291 = fsub double %283, %290
  %292 = load ptr, ptr %16, align 8, !tbaa !14
  %293 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %292, i32 noundef %.0463.us.us)
  %294 = load ptr, ptr %293, align 8, !tbaa !15
  %295 = getelementptr inbounds ptr, ptr %294, i64 %indvars.iv491
  %296 = load ptr, ptr %295, align 8, !tbaa !15
  %297 = getelementptr inbounds %struct.celle, ptr %296, i64 %indvars.iv
  %298 = load double, ptr %297, align 8, !tbaa !28
  %299 = fadd double %291, %298
  %300 = load ptr, ptr %16, align 8, !tbaa !14
  %301 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %300, i32 noundef %.0463.us.us)
  %302 = load ptr, ptr %301, align 8, !tbaa !15
  %303 = getelementptr inbounds ptr, ptr %302, i64 %29
  %304 = load ptr, ptr %303, align 8, !tbaa !15
  %305 = getelementptr inbounds %struct.celle, ptr %304, i64 %indvars.iv
  %306 = load double, ptr %305, align 8, !tbaa !28
  %307 = fsub double %299, %306
  %308 = fmul double %276, %307
  %309 = tail call double @llvm.fmuladd.f64(double %260, double %275, double %308)
  %310 = load double, ptr %21, align 8, !tbaa !25
  %311 = load double, ptr %22, align 8, !tbaa !26
  %312 = load ptr, ptr %16, align 8, !tbaa !14
  %313 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %312, i32 noundef %25)
  %314 = load ptr, ptr %313, align 8, !tbaa !15
  %315 = getelementptr inbounds ptr, ptr %314, i64 %indvars.iv491
  %316 = load ptr, ptr %315, align 8, !tbaa !15
  %317 = getelementptr inbounds %struct.celle, ptr %316, i64 %indvars.iv, i32 1
  %318 = load double, ptr %317, align 8, !tbaa !21
  %319 = load ptr, ptr %16, align 8, !tbaa !14
  %320 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %319, i32 noundef %.0463.us.us)
  %321 = load ptr, ptr %320, align 8, !tbaa !15
  %322 = getelementptr inbounds ptr, ptr %321, i64 %indvars.iv491
  %323 = load ptr, ptr %322, align 8, !tbaa !15
  %324 = getelementptr inbounds %struct.celle, ptr %323, i64 %indvars.iv, i32 1
  %325 = load double, ptr %324, align 8, !tbaa !21
  %326 = fsub double %318, %325
  %327 = load double, ptr %23, align 8, !tbaa !27
  %328 = load ptr, ptr %16, align 8, !tbaa !14
  %329 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %328, i32 noundef %26)
  %330 = load ptr, ptr %329, align 8, !tbaa !15
  %331 = getelementptr inbounds ptr, ptr %330, i64 %indvars.iv491
  %332 = load ptr, ptr %331, align 8, !tbaa !15
  %333 = getelementptr inbounds %struct.celle, ptr %332, i64 %indvars.iv, i32 1
  %334 = load double, ptr %333, align 8, !tbaa !21
  %335 = load ptr, ptr %16, align 8, !tbaa !14
  %336 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %335, i32 noundef %25)
  %337 = load ptr, ptr %336, align 8, !tbaa !15
  %338 = getelementptr inbounds ptr, ptr %337, i64 %indvars.iv491
  %339 = load ptr, ptr %338, align 8, !tbaa !15
  %340 = getelementptr inbounds %struct.celle, ptr %339, i64 %indvars.iv, i32 1
  %341 = load double, ptr %340, align 8, !tbaa !21
  %342 = fsub double %334, %341
  %343 = load ptr, ptr %16, align 8, !tbaa !14
  %344 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %343, i32 noundef %.0463.us.us)
  %345 = load ptr, ptr %344, align 8, !tbaa !15
  %346 = getelementptr inbounds ptr, ptr %345, i64 %indvars.iv491
  %347 = load ptr, ptr %346, align 8, !tbaa !15
  %348 = getelementptr inbounds %struct.celle, ptr %347, i64 %indvars.iv, i32 1
  %349 = load double, ptr %348, align 8, !tbaa !21
  %350 = fadd double %342, %349
  %351 = load ptr, ptr %16, align 8, !tbaa !14
  %352 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %351, i32 noundef %27)
  %353 = load ptr, ptr %352, align 8, !tbaa !15
  %354 = getelementptr inbounds ptr, ptr %353, i64 %indvars.iv491
  %355 = load ptr, ptr %354, align 8, !tbaa !15
  %356 = getelementptr inbounds %struct.celle, ptr %355, i64 %indvars.iv, i32 1
  %357 = load double, ptr %356, align 8, !tbaa !21
  %358 = fsub double %350, %357
  %359 = fmul double %327, %358
  %360 = tail call double @llvm.fmuladd.f64(double %311, double %326, double %359)
  %361 = fneg double %310
  %362 = fmul double %360, %361
  %363 = tail call double @llvm.fmuladd.f64(double %259, double %309, double %362)
  %364 = load ptr, ptr %2, align 8, !tbaa !5
  %365 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5cellbEixEi(ptr noundef nonnull align 8 dereferenceable(40) %364, i32 noundef %.0463.us.us)
  %366 = load ptr, ptr %365, align 8, !tbaa !15
  %367 = getelementptr inbounds ptr, ptr %366, i64 %indvars.iv491
  %368 = load ptr, ptr %367, align 8, !tbaa !15
  %369 = getelementptr inbounds %struct.cellb, ptr %368, i64 %indvars.iv, i32 2
  %370 = load double, ptr %369, align 8, !tbaa !30
  %371 = tail call double @llvm.fmuladd.f64(double %363, double 5.000000e-01, double %370)
  store double %371, ptr %369, align 8, !tbaa !30
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %._crit_edge.us.us.us, label %30, !llvm.loop !31

._crit_edge.us.us.us:                             ; preds = %30
  %exitcond495.not = icmp eq i64 %indvars.iv.next492, %wide.trip.count494
  br i1 %exitcond495.not, label %._crit_edge462.split.us.us.us, label %.preheader457.us.us.us, !llvm.loop !33

._crit_edge462.split.us.us.us:                    ; preds = %._crit_edge.us.us.us
  %exitcond496.not = icmp eq i32 %25, %9
  br i1 %exitcond496.not, label %._crit_edge, label %.preheader458.us.us, !llvm.loop !34

._crit_edge:                                      ; preds = %._crit_edge462.split.us.us.us, %1
  %372 = add nsw i32 %4, -1
  %373 = icmp sgt i32 %6, 3
  br i1 %373, label %.preheader456.lr.ph, label %.preheader455

.preheader456.lr.ph:                              ; preds = %._crit_edge
  %374 = icmp sgt i32 %8, 3
  %375 = getelementptr inbounds i8, ptr %0, i64 64
  %376 = getelementptr inbounds i8, ptr %0, i64 112
  %377 = getelementptr inbounds i8, ptr %0, i64 8
  %378 = getelementptr inbounds i8, ptr %0, i64 88
  %379 = getelementptr inbounds i8, ptr %0, i64 72
  %380 = getelementptr inbounds i8, ptr %0, i64 120
  %381 = getelementptr inbounds i8, ptr %0, i64 96
  %382 = getelementptr inbounds i8, ptr %0, i64 56
  %383 = getelementptr inbounds i8, ptr %0, i64 104
  %384 = getelementptr inbounds i8, ptr %0, i64 80
  br i1 %374, label %.preheader456.us.preheader, label %.preheader455

.preheader456.us.preheader:                       ; preds = %.preheader456.lr.ph
  %385 = add nsw i32 %8, -2
  %wide.trip.count505 = zext i32 %11 to i64
  %wide.trip.count500 = zext i32 %385 to i64
  br label %.preheader456.us

.preheader456.us:                                 ; preds = %.preheader456.us.preheader, %._crit_edge471.us
  %indvars.iv502 = phi i64 [ 1, %.preheader456.us.preheader ], [ %indvars.iv.next503, %._crit_edge471.us ]
  %indvars.iv.next503 = add nuw nsw i64 %indvars.iv502, 1
  %386 = add nuw nsw i64 %indvars.iv502, 2
  %387 = add nsw i64 %indvars.iv502, -1
  br label %388

388:                                              ; preds = %.preheader456.us, %388
  %indvars.iv497 = phi i64 [ 1, %.preheader456.us ], [ %indvars.iv.next498, %388 ]
  %389 = load double, ptr %375, align 8, !tbaa !11
  %390 = fneg double %389
  %391 = load double, ptr %376, align 8, !tbaa !12
  %392 = load ptr, ptr %377, align 8, !tbaa !14
  %393 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %392, i32 noundef %372)
  %394 = load ptr, ptr %393, align 8, !tbaa !15
  %395 = getelementptr inbounds ptr, ptr %394, i64 %indvars.iv.next503
  %396 = load ptr, ptr %395, align 8, !tbaa !15
  %397 = getelementptr inbounds %struct.celle, ptr %396, i64 %indvars.iv497, i32 2
  %398 = load double, ptr %397, align 8, !tbaa !16
  %399 = load ptr, ptr %377, align 8, !tbaa !14
  %400 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %399, i32 noundef %372)
  %401 = load ptr, ptr %400, align 8, !tbaa !15
  %402 = getelementptr inbounds ptr, ptr %401, i64 %indvars.iv502
  %403 = load ptr, ptr %402, align 8, !tbaa !15
  %404 = getelementptr inbounds %struct.celle, ptr %403, i64 %indvars.iv497, i32 2
  %405 = load double, ptr %404, align 8, !tbaa !16
  %406 = fsub double %398, %405
  %407 = load double, ptr %378, align 8, !tbaa !18
  %408 = load ptr, ptr %377, align 8, !tbaa !14
  %409 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %408, i32 noundef %372)
  %410 = load ptr, ptr %409, align 8, !tbaa !15
  %411 = getelementptr inbounds ptr, ptr %410, i64 %386
  %412 = load ptr, ptr %411, align 8, !tbaa !15
  %413 = getelementptr inbounds %struct.celle, ptr %412, i64 %indvars.iv497, i32 2
  %414 = load double, ptr %413, align 8, !tbaa !16
  %415 = load ptr, ptr %377, align 8, !tbaa !14
  %416 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %415, i32 noundef %372)
  %417 = load ptr, ptr %416, align 8, !tbaa !15
  %418 = getelementptr inbounds ptr, ptr %417, i64 %indvars.iv.next503
  %419 = load ptr, ptr %418, align 8, !tbaa !15
  %420 = getelementptr inbounds %struct.celle, ptr %419, i64 %indvars.iv497, i32 2
  %421 = load double, ptr %420, align 8, !tbaa !16
  %422 = fsub double %414, %421
  %423 = load ptr, ptr %377, align 8, !tbaa !14
  %424 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %423, i32 noundef %372)
  %425 = load ptr, ptr %424, align 8, !tbaa !15
  %426 = getelementptr inbounds ptr, ptr %425, i64 %indvars.iv502
  %427 = load ptr, ptr %426, align 8, !tbaa !15
  %428 = getelementptr inbounds %struct.celle, ptr %427, i64 %indvars.iv497, i32 2
  %429 = load double, ptr %428, align 8, !tbaa !16
  %430 = fadd double %422, %429
  %431 = load ptr, ptr %377, align 8, !tbaa !14
  %432 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %431, i32 noundef %372)
  %433 = load ptr, ptr %432, align 8, !tbaa !15
  %434 = getelementptr inbounds ptr, ptr %433, i64 %387
  %435 = load ptr, ptr %434, align 8, !tbaa !15
  %436 = getelementptr inbounds %struct.celle, ptr %435, i64 %indvars.iv497, i32 2
  %437 = load double, ptr %436, align 8, !tbaa !16
  %438 = fsub double %430, %437
  %439 = fmul double %407, %438
  %440 = tail call double @llvm.fmuladd.f64(double %391, double %406, double %439)
  %441 = load double, ptr %379, align 8, !tbaa !19
  %442 = load double, ptr %380, align 8, !tbaa !20
  %443 = load ptr, ptr %377, align 8, !tbaa !14
  %444 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %443, i32 noundef %372)
  %445 = load ptr, ptr %444, align 8, !tbaa !15
  %446 = getelementptr inbounds ptr, ptr %445, i64 %indvars.iv502
  %447 = load ptr, ptr %446, align 8, !tbaa !15
  %indvars.iv.next498 = add nuw nsw i64 %indvars.iv497, 1
  %448 = getelementptr inbounds %struct.celle, ptr %447, i64 %indvars.iv.next498, i32 1
  %449 = load double, ptr %448, align 8, !tbaa !21
  %450 = load ptr, ptr %377, align 8, !tbaa !14
  %451 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %450, i32 noundef %372)
  %452 = load ptr, ptr %451, align 8, !tbaa !15
  %453 = getelementptr inbounds ptr, ptr %452, i64 %indvars.iv502
  %454 = load ptr, ptr %453, align 8, !tbaa !15
  %455 = getelementptr inbounds %struct.celle, ptr %454, i64 %indvars.iv497, i32 1
  %456 = load double, ptr %455, align 8, !tbaa !21
  %457 = fsub double %449, %456
  %458 = load double, ptr %381, align 8, !tbaa !22
  %459 = load ptr, ptr %377, align 8, !tbaa !14
  %460 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %459, i32 noundef %372)
  %461 = load ptr, ptr %460, align 8, !tbaa !15
  %462 = getelementptr inbounds ptr, ptr %461, i64 %indvars.iv502
  %463 = load ptr, ptr %462, align 8, !tbaa !15
  %464 = add nuw nsw i64 %indvars.iv497, 2
  %465 = getelementptr inbounds %struct.celle, ptr %463, i64 %464, i32 1
  %466 = load double, ptr %465, align 8, !tbaa !21
  %467 = load ptr, ptr %377, align 8, !tbaa !14
  %468 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %467, i32 noundef %372)
  %469 = load ptr, ptr %468, align 8, !tbaa !15
  %470 = getelementptr inbounds ptr, ptr %469, i64 %indvars.iv502
  %471 = load ptr, ptr %470, align 8, !tbaa !15
  %472 = getelementptr inbounds %struct.celle, ptr %471, i64 %indvars.iv.next498, i32 1
  %473 = load double, ptr %472, align 8, !tbaa !21
  %474 = fsub double %466, %473
  %475 = load ptr, ptr %377, align 8, !tbaa !14
  %476 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %475, i32 noundef %372)
  %477 = load ptr, ptr %476, align 8, !tbaa !15
  %478 = getelementptr inbounds ptr, ptr %477, i64 %indvars.iv502
  %479 = load ptr, ptr %478, align 8, !tbaa !15
  %480 = getelementptr inbounds %struct.celle, ptr %479, i64 %indvars.iv497, i32 1
  %481 = load double, ptr %480, align 8, !tbaa !21
  %482 = fadd double %474, %481
  %483 = load ptr, ptr %377, align 8, !tbaa !14
  %484 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %483, i32 noundef %372)
  %485 = load ptr, ptr %484, align 8, !tbaa !15
  %486 = getelementptr inbounds ptr, ptr %485, i64 %indvars.iv502
  %487 = load ptr, ptr %486, align 8, !tbaa !15
  %488 = add nsw i64 %indvars.iv497, -1
  %489 = getelementptr inbounds %struct.celle, ptr %487, i64 %488, i32 1
  %490 = load double, ptr %489, align 8, !tbaa !21
  %491 = fsub double %482, %490
  %492 = fmul double %458, %491
  %493 = tail call double @llvm.fmuladd.f64(double %442, double %457, double %492)
  %494 = fmul double %441, %493
  %495 = tail call double @llvm.fmuladd.f64(double %390, double %440, double %494)
  %496 = load ptr, ptr %2, align 8, !tbaa !5
  %497 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5cellbEixEi(ptr noundef nonnull align 8 dereferenceable(40) %496, i32 noundef %372)
  %498 = load ptr, ptr %497, align 8, !tbaa !15
  %499 = getelementptr inbounds ptr, ptr %498, i64 %indvars.iv502
  %500 = load ptr, ptr %499, align 8, !tbaa !15
  %501 = getelementptr inbounds %struct.cellb, ptr %500, i64 %indvars.iv497
  %502 = load double, ptr %501, align 8, !tbaa !23
  %503 = tail call double @llvm.fmuladd.f64(double %495, double 5.000000e-01, double %502)
  store double %503, ptr %501, align 8, !tbaa !23
  %504 = load double, ptr %382, align 8, !tbaa !25
  %505 = load double, ptr %383, align 8, !tbaa !26
  %506 = load ptr, ptr %377, align 8, !tbaa !14
  %507 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %506, i32 noundef %372)
  %508 = load ptr, ptr %507, align 8, !tbaa !15
  %509 = getelementptr inbounds ptr, ptr %508, i64 %indvars.iv502
  %510 = load ptr, ptr %509, align 8, !tbaa !15
  %511 = getelementptr inbounds %struct.celle, ptr %510, i64 %indvars.iv497, i32 2
  %512 = load double, ptr %511, align 8, !tbaa !16
  %513 = fneg double %512
  %514 = load double, ptr %384, align 8, !tbaa !27
  %515 = load ptr, ptr %377, align 8, !tbaa !14
  %516 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %515, i32 noundef %372)
  %517 = load ptr, ptr %516, align 8, !tbaa !15
  %518 = getelementptr inbounds ptr, ptr %517, i64 %indvars.iv502
  %519 = load ptr, ptr %518, align 8, !tbaa !15
  %520 = getelementptr inbounds %struct.celle, ptr %519, i64 %indvars.iv497, i32 2
  %521 = load double, ptr %520, align 8, !tbaa !16
  %522 = load ptr, ptr %377, align 8, !tbaa !14
  %523 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %522, i32 noundef %9)
  %524 = load ptr, ptr %523, align 8, !tbaa !15
  %525 = getelementptr inbounds ptr, ptr %524, i64 %indvars.iv502
  %526 = load ptr, ptr %525, align 8, !tbaa !15
  %527 = getelementptr inbounds %struct.celle, ptr %526, i64 %indvars.iv497, i32 2
  %528 = load double, ptr %527, align 8, !tbaa !16
  %529 = fsub double %521, %528
  %530 = fmul double %514, %529
  %531 = tail call double @llvm.fmuladd.f64(double %505, double %513, double %530)
  %532 = load double, ptr %379, align 8, !tbaa !19
  %533 = load double, ptr %380, align 8, !tbaa !20
  %534 = load ptr, ptr %377, align 8, !tbaa !14
  %535 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %534, i32 noundef %372)
  %536 = load ptr, ptr %535, align 8, !tbaa !15
  %537 = getelementptr inbounds ptr, ptr %536, i64 %indvars.iv502
  %538 = load ptr, ptr %537, align 8, !tbaa !15
  %539 = getelementptr inbounds %struct.celle, ptr %538, i64 %indvars.iv.next498
  %540 = load double, ptr %539, align 8, !tbaa !28
  %541 = load ptr, ptr %377, align 8, !tbaa !14
  %542 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %541, i32 noundef %372)
  %543 = load ptr, ptr %542, align 8, !tbaa !15
  %544 = getelementptr inbounds ptr, ptr %543, i64 %indvars.iv502
  %545 = load ptr, ptr %544, align 8, !tbaa !15
  %546 = getelementptr inbounds %struct.celle, ptr %545, i64 %indvars.iv497
  %547 = load double, ptr %546, align 8, !tbaa !28
  %548 = fsub double %540, %547
  %549 = load double, ptr %381, align 8, !tbaa !22
  %550 = load ptr, ptr %377, align 8, !tbaa !14
  %551 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %550, i32 noundef %372)
  %552 = load ptr, ptr %551, align 8, !tbaa !15
  %553 = getelementptr inbounds ptr, ptr %552, i64 %indvars.iv502
  %554 = load ptr, ptr %553, align 8, !tbaa !15
  %555 = getelementptr inbounds %struct.celle, ptr %554, i64 %464
  %556 = load double, ptr %555, align 8, !tbaa !28
  %557 = load ptr, ptr %377, align 8, !tbaa !14
  %558 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %557, i32 noundef %372)
  %559 = load ptr, ptr %558, align 8, !tbaa !15
  %560 = getelementptr inbounds ptr, ptr %559, i64 %indvars.iv502
  %561 = load ptr, ptr %560, align 8, !tbaa !15
  %562 = getelementptr inbounds %struct.celle, ptr %561, i64 %indvars.iv.next498
  %563 = load double, ptr %562, align 8, !tbaa !28
  %564 = fsub double %556, %563
  %565 = load ptr, ptr %377, align 8, !tbaa !14
  %566 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %565, i32 noundef %372)
  %567 = load ptr, ptr %566, align 8, !tbaa !15
  %568 = getelementptr inbounds ptr, ptr %567, i64 %indvars.iv502
  %569 = load ptr, ptr %568, align 8, !tbaa !15
  %570 = getelementptr inbounds %struct.celle, ptr %569, i64 %indvars.iv497
  %571 = load double, ptr %570, align 8, !tbaa !28
  %572 = fadd double %564, %571
  %573 = load ptr, ptr %377, align 8, !tbaa !14
  %574 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %573, i32 noundef %372)
  %575 = load ptr, ptr %574, align 8, !tbaa !15
  %576 = getelementptr inbounds ptr, ptr %575, i64 %indvars.iv502
  %577 = load ptr, ptr %576, align 8, !tbaa !15
  %578 = getelementptr inbounds %struct.celle, ptr %577, i64 %488
  %579 = load double, ptr %578, align 8, !tbaa !28
  %580 = fsub double %572, %579
  %581 = fmul double %549, %580
  %582 = tail call double @llvm.fmuladd.f64(double %533, double %548, double %581)
  %583 = fneg double %532
  %584 = fmul double %582, %583
  %585 = tail call double @llvm.fmuladd.f64(double %504, double %531, double %584)
  %586 = load ptr, ptr %2, align 8, !tbaa !5
  %587 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5cellbEixEi(ptr noundef nonnull align 8 dereferenceable(40) %586, i32 noundef %372)
  %588 = load ptr, ptr %587, align 8, !tbaa !15
  %589 = getelementptr inbounds ptr, ptr %588, i64 %indvars.iv502
  %590 = load ptr, ptr %589, align 8, !tbaa !15
  %591 = getelementptr inbounds %struct.cellb, ptr %590, i64 %indvars.iv497, i32 1
  %592 = load double, ptr %591, align 8, !tbaa !29
  %593 = tail call double @llvm.fmuladd.f64(double %585, double 5.000000e-01, double %592)
  store double %593, ptr %591, align 8, !tbaa !29
  %594 = load double, ptr %375, align 8, !tbaa !11
  %595 = load double, ptr %376, align 8, !tbaa !12
  %596 = load ptr, ptr %377, align 8, !tbaa !14
  %597 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %596, i32 noundef %372)
  %598 = load ptr, ptr %597, align 8, !tbaa !15
  %599 = getelementptr inbounds ptr, ptr %598, i64 %indvars.iv.next503
  %600 = load ptr, ptr %599, align 8, !tbaa !15
  %601 = getelementptr inbounds %struct.celle, ptr %600, i64 %indvars.iv497
  %602 = load double, ptr %601, align 8, !tbaa !28
  %603 = load ptr, ptr %377, align 8, !tbaa !14
  %604 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %603, i32 noundef %372)
  %605 = load ptr, ptr %604, align 8, !tbaa !15
  %606 = getelementptr inbounds ptr, ptr %605, i64 %indvars.iv502
  %607 = load ptr, ptr %606, align 8, !tbaa !15
  %608 = getelementptr inbounds %struct.celle, ptr %607, i64 %indvars.iv497
  %609 = load double, ptr %608, align 8, !tbaa !28
  %610 = fsub double %602, %609
  %611 = load double, ptr %378, align 8, !tbaa !18
  %612 = load ptr, ptr %377, align 8, !tbaa !14
  %613 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %612, i32 noundef %372)
  %614 = load ptr, ptr %613, align 8, !tbaa !15
  %615 = getelementptr inbounds ptr, ptr %614, i64 %386
  %616 = load ptr, ptr %615, align 8, !tbaa !15
  %617 = getelementptr inbounds %struct.celle, ptr %616, i64 %indvars.iv497
  %618 = load double, ptr %617, align 8, !tbaa !28
  %619 = load ptr, ptr %377, align 8, !tbaa !14
  %620 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %619, i32 noundef %372)
  %621 = load ptr, ptr %620, align 8, !tbaa !15
  %622 = getelementptr inbounds ptr, ptr %621, i64 %indvars.iv.next503
  %623 = load ptr, ptr %622, align 8, !tbaa !15
  %624 = getelementptr inbounds %struct.celle, ptr %623, i64 %indvars.iv497
  %625 = load double, ptr %624, align 8, !tbaa !28
  %626 = fsub double %618, %625
  %627 = load ptr, ptr %377, align 8, !tbaa !14
  %628 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %627, i32 noundef %372)
  %629 = load ptr, ptr %628, align 8, !tbaa !15
  %630 = getelementptr inbounds ptr, ptr %629, i64 %indvars.iv502
  %631 = load ptr, ptr %630, align 8, !tbaa !15
  %632 = getelementptr inbounds %struct.celle, ptr %631, i64 %indvars.iv497
  %633 = load double, ptr %632, align 8, !tbaa !28
  %634 = fadd double %626, %633
  %635 = load ptr, ptr %377, align 8, !tbaa !14
  %636 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %635, i32 noundef %372)
  %637 = load ptr, ptr %636, align 8, !tbaa !15
  %638 = getelementptr inbounds ptr, ptr %637, i64 %387
  %639 = load ptr, ptr %638, align 8, !tbaa !15
  %640 = getelementptr inbounds %struct.celle, ptr %639, i64 %indvars.iv497
  %641 = load double, ptr %640, align 8, !tbaa !28
  %642 = fsub double %634, %641
  %643 = fmul double %611, %642
  %644 = tail call double @llvm.fmuladd.f64(double %595, double %610, double %643)
  %645 = load double, ptr %382, align 8, !tbaa !25
  %646 = load double, ptr %383, align 8, !tbaa !26
  %647 = load ptr, ptr %377, align 8, !tbaa !14
  %648 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %647, i32 noundef %372)
  %649 = load ptr, ptr %648, align 8, !tbaa !15
  %650 = getelementptr inbounds ptr, ptr %649, i64 %indvars.iv502
  %651 = load ptr, ptr %650, align 8, !tbaa !15
  %652 = getelementptr inbounds %struct.celle, ptr %651, i64 %indvars.iv497, i32 1
  %653 = load double, ptr %652, align 8, !tbaa !21
  %654 = fneg double %653
  %655 = load double, ptr %384, align 8, !tbaa !27
  %656 = load ptr, ptr %377, align 8, !tbaa !14
  %657 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %656, i32 noundef %372)
  %658 = load ptr, ptr %657, align 8, !tbaa !15
  %659 = getelementptr inbounds ptr, ptr %658, i64 %indvars.iv502
  %660 = load ptr, ptr %659, align 8, !tbaa !15
  %661 = getelementptr inbounds %struct.celle, ptr %660, i64 %indvars.iv497, i32 1
  %662 = load double, ptr %661, align 8, !tbaa !21
  %663 = load ptr, ptr %377, align 8, !tbaa !14
  %664 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %663, i32 noundef %9)
  %665 = load ptr, ptr %664, align 8, !tbaa !15
  %666 = getelementptr inbounds ptr, ptr %665, i64 %indvars.iv502
  %667 = load ptr, ptr %666, align 8, !tbaa !15
  %668 = getelementptr inbounds %struct.celle, ptr %667, i64 %indvars.iv497, i32 1
  %669 = load double, ptr %668, align 8, !tbaa !21
  %670 = fsub double %662, %669
  %671 = fmul double %655, %670
  %672 = tail call double @llvm.fmuladd.f64(double %646, double %654, double %671)
  %673 = fneg double %645
  %674 = fmul double %672, %673
  %675 = tail call double @llvm.fmuladd.f64(double %594, double %644, double %674)
  %676 = load ptr, ptr %2, align 8, !tbaa !5
  %677 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5cellbEixEi(ptr noundef nonnull align 8 dereferenceable(40) %676, i32 noundef %372)
  %678 = load ptr, ptr %677, align 8, !tbaa !15
  %679 = getelementptr inbounds ptr, ptr %678, i64 %indvars.iv502
  %680 = load ptr, ptr %679, align 8, !tbaa !15
  %681 = getelementptr inbounds %struct.cellb, ptr %680, i64 %indvars.iv497, i32 2
  %682 = load double, ptr %681, align 8, !tbaa !30
  %683 = tail call double @llvm.fmuladd.f64(double %675, double 5.000000e-01, double %682)
  store double %683, ptr %681, align 8, !tbaa !30
  %exitcond501.not = icmp eq i64 %indvars.iv.next498, %wide.trip.count500
  br i1 %exitcond501.not, label %._crit_edge471.us, label %388, !llvm.loop !35

._crit_edge471.us:                                ; preds = %388
  %exitcond506.not = icmp eq i64 %indvars.iv.next503, %wide.trip.count505
  br i1 %exitcond506.not, label %.preheader455, label %.preheader456.us, !llvm.loop !36

.preheader455:                                    ; preds = %._crit_edge471.us, %.preheader456.lr.ph, %._crit_edge
  br i1 %10, label %.lr.ph479, label %._crit_edge483

.lr.ph479:                                        ; preds = %.preheader458.lr.ph, %.preheader455
  %684 = phi i1 [ %373, %.preheader455 ], [ false, %.preheader458.lr.ph ]
  %685 = add nsw i32 %6, -1
  %686 = icmp sgt i32 %8, 3
  %687 = getelementptr inbounds i8, ptr %0, i64 64
  %688 = getelementptr inbounds i8, ptr %0, i64 112
  %689 = getelementptr inbounds i8, ptr %0, i64 8
  %690 = sext i32 %685 to i64
  %691 = getelementptr inbounds i8, ptr %0, i64 88
  %692 = sext i32 %11 to i64
  %693 = getelementptr inbounds i8, ptr %0, i64 72
  %694 = getelementptr inbounds i8, ptr %0, i64 120
  %695 = getelementptr inbounds i8, ptr %0, i64 96
  %696 = getelementptr inbounds i8, ptr %0, i64 56
  %697 = getelementptr inbounds i8, ptr %0, i64 104
  %698 = getelementptr inbounds i8, ptr %0, i64 80
  br i1 %686, label %.lr.ph.us.preheader, label %.preheader454.thread

.preheader454.thread:                             ; preds = %.lr.ph479
  br i1 %684, label %.preheader.us.preheader, label %._crit_edge483

.lr.ph.us.preheader:                              ; preds = %.lr.ph479
  %699 = add nsw i32 %8, -2
  %wide.trip.count510 = zext i32 %699 to i64
  br label %.lr.ph.us

.lr.ph.us:                                        ; preds = %.lr.ph.us.preheader, %._crit_edge477.us
  %.0447478.us = phi i32 [ %700, %._crit_edge477.us ], [ 1, %.lr.ph.us.preheader ]
  %700 = add nuw nsw i32 %.0447478.us, 1
  %701 = add nuw nsw i32 %.0447478.us, 2
  %702 = add nsw i32 %.0447478.us, -1
  br label %703

703:                                              ; preds = %.lr.ph.us, %703
  %indvars.iv507 = phi i64 [ 1, %.lr.ph.us ], [ %indvars.iv.next508, %703 ]
  %704 = load double, ptr %687, align 8, !tbaa !11
  %705 = fneg double %704
  %706 = load double, ptr %688, align 8, !tbaa !12
  %707 = load ptr, ptr %689, align 8, !tbaa !14
  %708 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %707, i32 noundef %.0447478.us)
  %709 = load ptr, ptr %708, align 8, !tbaa !15
  %710 = getelementptr inbounds ptr, ptr %709, i64 %690
  %711 = load ptr, ptr %710, align 8, !tbaa !15
  %712 = getelementptr inbounds %struct.celle, ptr %711, i64 %indvars.iv507, i32 2
  %713 = load double, ptr %712, align 8, !tbaa !16
  %714 = fneg double %713
  %715 = load double, ptr %691, align 8, !tbaa !18
  %716 = load ptr, ptr %689, align 8, !tbaa !14
  %717 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %716, i32 noundef %.0447478.us)
  %718 = load ptr, ptr %717, align 8, !tbaa !15
  %719 = getelementptr inbounds ptr, ptr %718, i64 %690
  %720 = load ptr, ptr %719, align 8, !tbaa !15
  %721 = getelementptr inbounds %struct.celle, ptr %720, i64 %indvars.iv507, i32 2
  %722 = load double, ptr %721, align 8, !tbaa !16
  %723 = load ptr, ptr %689, align 8, !tbaa !14
  %724 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %723, i32 noundef %.0447478.us)
  %725 = load ptr, ptr %724, align 8, !tbaa !15
  %726 = getelementptr inbounds ptr, ptr %725, i64 %692
  %727 = load ptr, ptr %726, align 8, !tbaa !15
  %728 = getelementptr inbounds %struct.celle, ptr %727, i64 %indvars.iv507, i32 2
  %729 = load double, ptr %728, align 8, !tbaa !16
  %730 = fsub double %722, %729
  %731 = fmul double %715, %730
  %732 = tail call double @llvm.fmuladd.f64(double %706, double %714, double %731)
  %733 = load double, ptr %693, align 8, !tbaa !19
  %734 = load double, ptr %694, align 8, !tbaa !20
  %735 = load ptr, ptr %689, align 8, !tbaa !14
  %736 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %735, i32 noundef %.0447478.us)
  %737 = load ptr, ptr %736, align 8, !tbaa !15
  %738 = getelementptr inbounds ptr, ptr %737, i64 %690
  %739 = load ptr, ptr %738, align 8, !tbaa !15
  %indvars.iv.next508 = add nuw nsw i64 %indvars.iv507, 1
  %740 = getelementptr inbounds %struct.celle, ptr %739, i64 %indvars.iv.next508, i32 1
  %741 = load double, ptr %740, align 8, !tbaa !21
  %742 = load ptr, ptr %689, align 8, !tbaa !14
  %743 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %742, i32 noundef %.0447478.us)
  %744 = load ptr, ptr %743, align 8, !tbaa !15
  %745 = getelementptr inbounds ptr, ptr %744, i64 %690
  %746 = load ptr, ptr %745, align 8, !tbaa !15
  %747 = getelementptr inbounds %struct.celle, ptr %746, i64 %indvars.iv507, i32 1
  %748 = load double, ptr %747, align 8, !tbaa !21
  %749 = fsub double %741, %748
  %750 = load double, ptr %695, align 8, !tbaa !22
  %751 = load ptr, ptr %689, align 8, !tbaa !14
  %752 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %751, i32 noundef %.0447478.us)
  %753 = load ptr, ptr %752, align 8, !tbaa !15
  %754 = getelementptr inbounds ptr, ptr %753, i64 %690
  %755 = load ptr, ptr %754, align 8, !tbaa !15
  %756 = add nuw nsw i64 %indvars.iv507, 2
  %757 = getelementptr inbounds %struct.celle, ptr %755, i64 %756, i32 1
  %758 = load double, ptr %757, align 8, !tbaa !21
  %759 = load ptr, ptr %689, align 8, !tbaa !14
  %760 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %759, i32 noundef %.0447478.us)
  %761 = load ptr, ptr %760, align 8, !tbaa !15
  %762 = getelementptr inbounds ptr, ptr %761, i64 %690
  %763 = load ptr, ptr %762, align 8, !tbaa !15
  %764 = getelementptr inbounds %struct.celle, ptr %763, i64 %indvars.iv.next508, i32 1
  %765 = load double, ptr %764, align 8, !tbaa !21
  %766 = fsub double %758, %765
  %767 = load ptr, ptr %689, align 8, !tbaa !14
  %768 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %767, i32 noundef %.0447478.us)
  %769 = load ptr, ptr %768, align 8, !tbaa !15
  %770 = getelementptr inbounds ptr, ptr %769, i64 %690
  %771 = load ptr, ptr %770, align 8, !tbaa !15
  %772 = getelementptr inbounds %struct.celle, ptr %771, i64 %indvars.iv507, i32 1
  %773 = load double, ptr %772, align 8, !tbaa !21
  %774 = fadd double %766, %773
  %775 = load ptr, ptr %689, align 8, !tbaa !14
  %776 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %775, i32 noundef %.0447478.us)
  %777 = load ptr, ptr %776, align 8, !tbaa !15
  %778 = getelementptr inbounds ptr, ptr %777, i64 %690
  %779 = load ptr, ptr %778, align 8, !tbaa !15
  %780 = add nsw i64 %indvars.iv507, -1
  %781 = getelementptr inbounds %struct.celle, ptr %779, i64 %780, i32 1
  %782 = load double, ptr %781, align 8, !tbaa !21
  %783 = fsub double %774, %782
  %784 = fmul double %750, %783
  %785 = tail call double @llvm.fmuladd.f64(double %734, double %749, double %784)
  %786 = fmul double %733, %785
  %787 = tail call double @llvm.fmuladd.f64(double %705, double %732, double %786)
  %788 = load ptr, ptr %2, align 8, !tbaa !5
  %789 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5cellbEixEi(ptr noundef nonnull align 8 dereferenceable(40) %788, i32 noundef %.0447478.us)
  %790 = load ptr, ptr %789, align 8, !tbaa !15
  %791 = getelementptr inbounds ptr, ptr %790, i64 %690
  %792 = load ptr, ptr %791, align 8, !tbaa !15
  %793 = getelementptr inbounds %struct.cellb, ptr %792, i64 %indvars.iv507
  %794 = load double, ptr %793, align 8, !tbaa !23
  %795 = tail call double @llvm.fmuladd.f64(double %787, double 5.000000e-01, double %794)
  store double %795, ptr %793, align 8, !tbaa !23
  %796 = load double, ptr %696, align 8, !tbaa !25
  %797 = load double, ptr %697, align 8, !tbaa !26
  %798 = load ptr, ptr %689, align 8, !tbaa !14
  %799 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %798, i32 noundef %700)
  %800 = load ptr, ptr %799, align 8, !tbaa !15
  %801 = getelementptr inbounds ptr, ptr %800, i64 %690
  %802 = load ptr, ptr %801, align 8, !tbaa !15
  %803 = getelementptr inbounds %struct.celle, ptr %802, i64 %indvars.iv507, i32 2
  %804 = load double, ptr %803, align 8, !tbaa !16
  %805 = load ptr, ptr %689, align 8, !tbaa !14
  %806 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %805, i32 noundef %.0447478.us)
  %807 = load ptr, ptr %806, align 8, !tbaa !15
  %808 = getelementptr inbounds ptr, ptr %807, i64 %690
  %809 = load ptr, ptr %808, align 8, !tbaa !15
  %810 = getelementptr inbounds %struct.celle, ptr %809, i64 %indvars.iv507, i32 2
  %811 = load double, ptr %810, align 8, !tbaa !16
  %812 = fsub double %804, %811
  %813 = load double, ptr %698, align 8, !tbaa !27
  %814 = load ptr, ptr %689, align 8, !tbaa !14
  %815 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %814, i32 noundef %701)
  %816 = load ptr, ptr %815, align 8, !tbaa !15
  %817 = getelementptr inbounds ptr, ptr %816, i64 %690
  %818 = load ptr, ptr %817, align 8, !tbaa !15
  %819 = getelementptr inbounds %struct.celle, ptr %818, i64 %indvars.iv507, i32 2
  %820 = load double, ptr %819, align 8, !tbaa !16
  %821 = load ptr, ptr %689, align 8, !tbaa !14
  %822 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %821, i32 noundef %700)
  %823 = load ptr, ptr %822, align 8, !tbaa !15
  %824 = getelementptr inbounds ptr, ptr %823, i64 %690
  %825 = load ptr, ptr %824, align 8, !tbaa !15
  %826 = getelementptr inbounds %struct.celle, ptr %825, i64 %indvars.iv507, i32 2
  %827 = load double, ptr %826, align 8, !tbaa !16
  %828 = fsub double %820, %827
  %829 = load ptr, ptr %689, align 8, !tbaa !14
  %830 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %829, i32 noundef %.0447478.us)
  %831 = load ptr, ptr %830, align 8, !tbaa !15
  %832 = getelementptr inbounds ptr, ptr %831, i64 %690
  %833 = load ptr, ptr %832, align 8, !tbaa !15
  %834 = getelementptr inbounds %struct.celle, ptr %833, i64 %indvars.iv507, i32 2
  %835 = load double, ptr %834, align 8, !tbaa !16
  %836 = fadd double %828, %835
  %837 = load ptr, ptr %689, align 8, !tbaa !14
  %838 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %837, i32 noundef %702)
  %839 = load ptr, ptr %838, align 8, !tbaa !15
  %840 = getelementptr inbounds ptr, ptr %839, i64 %690
  %841 = load ptr, ptr %840, align 8, !tbaa !15
  %842 = getelementptr inbounds %struct.celle, ptr %841, i64 %indvars.iv507, i32 2
  %843 = load double, ptr %842, align 8, !tbaa !16
  %844 = fsub double %836, %843
  %845 = fmul double %813, %844
  %846 = tail call double @llvm.fmuladd.f64(double %797, double %812, double %845)
  %847 = load double, ptr %693, align 8, !tbaa !19
  %848 = load double, ptr %694, align 8, !tbaa !20
  %849 = load ptr, ptr %689, align 8, !tbaa !14
  %850 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %849, i32 noundef %.0447478.us)
  %851 = load ptr, ptr %850, align 8, !tbaa !15
  %852 = getelementptr inbounds ptr, ptr %851, i64 %690
  %853 = load ptr, ptr %852, align 8, !tbaa !15
  %854 = getelementptr inbounds %struct.celle, ptr %853, i64 %indvars.iv.next508
  %855 = load double, ptr %854, align 8, !tbaa !28
  %856 = load ptr, ptr %689, align 8, !tbaa !14
  %857 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %856, i32 noundef %.0447478.us)
  %858 = load ptr, ptr %857, align 8, !tbaa !15
  %859 = getelementptr inbounds ptr, ptr %858, i64 %690
  %860 = load ptr, ptr %859, align 8, !tbaa !15
  %861 = getelementptr inbounds %struct.celle, ptr %860, i64 %indvars.iv507
  %862 = load double, ptr %861, align 8, !tbaa !28
  %863 = fsub double %855, %862
  %864 = load double, ptr %695, align 8, !tbaa !22
  %865 = load ptr, ptr %689, align 8, !tbaa !14
  %866 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %865, i32 noundef %.0447478.us)
  %867 = load ptr, ptr %866, align 8, !tbaa !15
  %868 = getelementptr inbounds ptr, ptr %867, i64 %690
  %869 = load ptr, ptr %868, align 8, !tbaa !15
  %870 = getelementptr inbounds %struct.celle, ptr %869, i64 %756
  %871 = load double, ptr %870, align 8, !tbaa !28
  %872 = load ptr, ptr %689, align 8, !tbaa !14
  %873 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %872, i32 noundef %.0447478.us)
  %874 = load ptr, ptr %873, align 8, !tbaa !15
  %875 = getelementptr inbounds ptr, ptr %874, i64 %690
  %876 = load ptr, ptr %875, align 8, !tbaa !15
  %877 = getelementptr inbounds %struct.celle, ptr %876, i64 %indvars.iv.next508
  %878 = load double, ptr %877, align 8, !tbaa !28
  %879 = fsub double %871, %878
  %880 = load ptr, ptr %689, align 8, !tbaa !14
  %881 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %880, i32 noundef %.0447478.us)
  %882 = load ptr, ptr %881, align 8, !tbaa !15
  %883 = getelementptr inbounds ptr, ptr %882, i64 %690
  %884 = load ptr, ptr %883, align 8, !tbaa !15
  %885 = getelementptr inbounds %struct.celle, ptr %884, i64 %indvars.iv507
  %886 = load double, ptr %885, align 8, !tbaa !28
  %887 = fadd double %879, %886
  %888 = load ptr, ptr %689, align 8, !tbaa !14
  %889 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %888, i32 noundef %.0447478.us)
  %890 = load ptr, ptr %889, align 8, !tbaa !15
  %891 = getelementptr inbounds ptr, ptr %890, i64 %690
  %892 = load ptr, ptr %891, align 8, !tbaa !15
  %893 = getelementptr inbounds %struct.celle, ptr %892, i64 %780
  %894 = load double, ptr %893, align 8, !tbaa !28
  %895 = fsub double %887, %894
  %896 = fmul double %864, %895
  %897 = tail call double @llvm.fmuladd.f64(double %848, double %863, double %896)
  %898 = fneg double %847
  %899 = fmul double %897, %898
  %900 = tail call double @llvm.fmuladd.f64(double %796, double %846, double %899)
  %901 = load ptr, ptr %2, align 8, !tbaa !5
  %902 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5cellbEixEi(ptr noundef nonnull align 8 dereferenceable(40) %901, i32 noundef %.0447478.us)
  %903 = load ptr, ptr %902, align 8, !tbaa !15
  %904 = getelementptr inbounds ptr, ptr %903, i64 %690
  %905 = load ptr, ptr %904, align 8, !tbaa !15
  %906 = getelementptr inbounds %struct.cellb, ptr %905, i64 %indvars.iv507, i32 1
  %907 = load double, ptr %906, align 8, !tbaa !29
  %908 = tail call double @llvm.fmuladd.f64(double %900, double 5.000000e-01, double %907)
  store double %908, ptr %906, align 8, !tbaa !29
  %909 = load double, ptr %687, align 8, !tbaa !11
  %910 = load double, ptr %688, align 8, !tbaa !12
  %911 = load ptr, ptr %689, align 8, !tbaa !14
  %912 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %911, i32 noundef %.0447478.us)
  %913 = load ptr, ptr %912, align 8, !tbaa !15
  %914 = getelementptr inbounds ptr, ptr %913, i64 %690
  %915 = load ptr, ptr %914, align 8, !tbaa !15
  %916 = getelementptr inbounds %struct.celle, ptr %915, i64 %indvars.iv507
  %917 = load double, ptr %916, align 8, !tbaa !28
  %918 = fneg double %917
  %919 = load double, ptr %691, align 8, !tbaa !18
  %920 = load ptr, ptr %689, align 8, !tbaa !14
  %921 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %920, i32 noundef %.0447478.us)
  %922 = load ptr, ptr %921, align 8, !tbaa !15
  %923 = getelementptr inbounds ptr, ptr %922, i64 %690
  %924 = load ptr, ptr %923, align 8, !tbaa !15
  %925 = getelementptr inbounds %struct.celle, ptr %924, i64 %indvars.iv507
  %926 = load double, ptr %925, align 8, !tbaa !28
  %927 = load ptr, ptr %689, align 8, !tbaa !14
  %928 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %927, i32 noundef %.0447478.us)
  %929 = load ptr, ptr %928, align 8, !tbaa !15
  %930 = getelementptr inbounds ptr, ptr %929, i64 %692
  %931 = load ptr, ptr %930, align 8, !tbaa !15
  %932 = getelementptr inbounds %struct.celle, ptr %931, i64 %indvars.iv507
  %933 = load double, ptr %932, align 8, !tbaa !28
  %934 = fsub double %926, %933
  %935 = fmul double %919, %934
  %936 = tail call double @llvm.fmuladd.f64(double %910, double %918, double %935)
  %937 = load double, ptr %696, align 8, !tbaa !25
  %938 = load double, ptr %697, align 8, !tbaa !26
  %939 = load ptr, ptr %689, align 8, !tbaa !14
  %940 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %939, i32 noundef %700)
  %941 = load ptr, ptr %940, align 8, !tbaa !15
  %942 = getelementptr inbounds ptr, ptr %941, i64 %690
  %943 = load ptr, ptr %942, align 8, !tbaa !15
  %944 = getelementptr inbounds %struct.celle, ptr %943, i64 %indvars.iv507, i32 1
  %945 = load double, ptr %944, align 8, !tbaa !21
  %946 = load ptr, ptr %689, align 8, !tbaa !14
  %947 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %946, i32 noundef %.0447478.us)
  %948 = load ptr, ptr %947, align 8, !tbaa !15
  %949 = getelementptr inbounds ptr, ptr %948, i64 %690
  %950 = load ptr, ptr %949, align 8, !tbaa !15
  %951 = getelementptr inbounds %struct.celle, ptr %950, i64 %indvars.iv507, i32 1
  %952 = load double, ptr %951, align 8, !tbaa !21
  %953 = fsub double %945, %952
  %954 = load double, ptr %698, align 8, !tbaa !27
  %955 = load ptr, ptr %689, align 8, !tbaa !14
  %956 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %955, i32 noundef %701)
  %957 = load ptr, ptr %956, align 8, !tbaa !15
  %958 = getelementptr inbounds ptr, ptr %957, i64 %690
  %959 = load ptr, ptr %958, align 8, !tbaa !15
  %960 = getelementptr inbounds %struct.celle, ptr %959, i64 %indvars.iv507, i32 1
  %961 = load double, ptr %960, align 8, !tbaa !21
  %962 = load ptr, ptr %689, align 8, !tbaa !14
  %963 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %962, i32 noundef %700)
  %964 = load ptr, ptr %963, align 8, !tbaa !15
  %965 = getelementptr inbounds ptr, ptr %964, i64 %690
  %966 = load ptr, ptr %965, align 8, !tbaa !15
  %967 = getelementptr inbounds %struct.celle, ptr %966, i64 %indvars.iv507, i32 1
  %968 = load double, ptr %967, align 8, !tbaa !21
  %969 = fsub double %961, %968
  %970 = load ptr, ptr %689, align 8, !tbaa !14
  %971 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %970, i32 noundef %.0447478.us)
  %972 = load ptr, ptr %971, align 8, !tbaa !15
  %973 = getelementptr inbounds ptr, ptr %972, i64 %690
  %974 = load ptr, ptr %973, align 8, !tbaa !15
  %975 = getelementptr inbounds %struct.celle, ptr %974, i64 %indvars.iv507, i32 1
  %976 = load double, ptr %975, align 8, !tbaa !21
  %977 = fadd double %969, %976
  %978 = load ptr, ptr %689, align 8, !tbaa !14
  %979 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %978, i32 noundef %702)
  %980 = load ptr, ptr %979, align 8, !tbaa !15
  %981 = getelementptr inbounds ptr, ptr %980, i64 %690
  %982 = load ptr, ptr %981, align 8, !tbaa !15
  %983 = getelementptr inbounds %struct.celle, ptr %982, i64 %indvars.iv507, i32 1
  %984 = load double, ptr %983, align 8, !tbaa !21
  %985 = fsub double %977, %984
  %986 = fmul double %954, %985
  %987 = tail call double @llvm.fmuladd.f64(double %938, double %953, double %986)
  %988 = fneg double %937
  %989 = fmul double %987, %988
  %990 = tail call double @llvm.fmuladd.f64(double %909, double %936, double %989)
  %991 = load ptr, ptr %2, align 8, !tbaa !5
  %992 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5cellbEixEi(ptr noundef nonnull align 8 dereferenceable(40) %991, i32 noundef %.0447478.us)
  %993 = load ptr, ptr %992, align 8, !tbaa !15
  %994 = getelementptr inbounds ptr, ptr %993, i64 %690
  %995 = load ptr, ptr %994, align 8, !tbaa !15
  %996 = getelementptr inbounds %struct.cellb, ptr %995, i64 %indvars.iv507, i32 2
  %997 = load double, ptr %996, align 8, !tbaa !30
  %998 = tail call double @llvm.fmuladd.f64(double %990, double 5.000000e-01, double %997)
  store double %998, ptr %996, align 8, !tbaa !30
  %exitcond511.not = icmp eq i64 %indvars.iv.next508, %wide.trip.count510
  br i1 %exitcond511.not, label %._crit_edge477.us, label %703, !llvm.loop !37

._crit_edge477.us:                                ; preds = %703
  %exitcond512.not = icmp eq i32 %700, %9
  br i1 %exitcond512.not, label %.preheader454, label %.lr.ph.us, !llvm.loop !38

.preheader454:                                    ; preds = %._crit_edge477.us
  %brmerge.not = and i1 %10, %684
  br i1 %brmerge.not, label %.preheader.us.preheader, label %._crit_edge483

.preheader.us.preheader:                          ; preds = %.preheader454, %.preheader458.lr.ph.split.us, %.preheader454.thread
  %999 = getelementptr inbounds i8, ptr %0, i64 64
  %1000 = getelementptr inbounds i8, ptr %0, i64 112
  %1001 = getelementptr inbounds i8, ptr %0, i64 8
  %.in536 = add nsw i32 %8, -1
  %1002 = sext i32 %.in536 to i64
  %1003 = getelementptr inbounds i8, ptr %0, i64 88
  %1004 = getelementptr inbounds i8, ptr %0, i64 72
  %1005 = getelementptr inbounds i8, ptr %0, i64 120
  %1006 = getelementptr inbounds i8, ptr %0, i64 96
  %.in = add nsw i32 %8, -2
  %1007 = sext i32 %.in to i64
  %1008 = getelementptr inbounds i8, ptr %0, i64 56
  %1009 = getelementptr inbounds i8, ptr %0, i64 104
  %1010 = getelementptr inbounds i8, ptr %0, i64 80
  %wide.trip.count516 = zext i32 %11 to i64
  br label %.preheader.us

.preheader.us:                                    ; preds = %.preheader.us.preheader, %._crit_edge481.us
  %.0445482.us = phi i32 [ %1011, %._crit_edge481.us ], [ 1, %.preheader.us.preheader ]
  %1011 = add nuw nsw i32 %.0445482.us, 1
  %1012 = add nuw nsw i32 %.0445482.us, 2
  %1013 = add nsw i32 %.0445482.us, -1
  br label %1014

1014:                                             ; preds = %.preheader.us, %1014
  %indvars.iv513 = phi i64 [ 1, %.preheader.us ], [ %indvars.iv.next514, %1014 ]
  %1015 = load double, ptr %999, align 8, !tbaa !11
  %1016 = fneg double %1015
  %1017 = load double, ptr %1000, align 8, !tbaa !12
  %1018 = load ptr, ptr %1001, align 8, !tbaa !14
  %1019 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1018, i32 noundef %.0445482.us)
  %1020 = load ptr, ptr %1019, align 8, !tbaa !15
  %indvars.iv.next514 = add nuw nsw i64 %indvars.iv513, 1
  %1021 = getelementptr inbounds ptr, ptr %1020, i64 %indvars.iv.next514
  %1022 = load ptr, ptr %1021, align 8, !tbaa !15
  %1023 = getelementptr inbounds %struct.celle, ptr %1022, i64 %1002, i32 2
  %1024 = load double, ptr %1023, align 8, !tbaa !16
  %1025 = load ptr, ptr %1001, align 8, !tbaa !14
  %1026 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1025, i32 noundef %.0445482.us)
  %1027 = load ptr, ptr %1026, align 8, !tbaa !15
  %1028 = getelementptr inbounds ptr, ptr %1027, i64 %indvars.iv513
  %1029 = load ptr, ptr %1028, align 8, !tbaa !15
  %1030 = getelementptr inbounds %struct.celle, ptr %1029, i64 %1002, i32 2
  %1031 = load double, ptr %1030, align 8, !tbaa !16
  %1032 = fsub double %1024, %1031
  %1033 = load double, ptr %1003, align 8, !tbaa !18
  %1034 = load ptr, ptr %1001, align 8, !tbaa !14
  %1035 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1034, i32 noundef %.0445482.us)
  %1036 = load ptr, ptr %1035, align 8, !tbaa !15
  %1037 = add nuw nsw i64 %indvars.iv513, 2
  %1038 = getelementptr inbounds ptr, ptr %1036, i64 %1037
  %1039 = load ptr, ptr %1038, align 8, !tbaa !15
  %1040 = getelementptr inbounds %struct.celle, ptr %1039, i64 %1002, i32 2
  %1041 = load double, ptr %1040, align 8, !tbaa !16
  %1042 = load ptr, ptr %1001, align 8, !tbaa !14
  %1043 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1042, i32 noundef %.0445482.us)
  %1044 = load ptr, ptr %1043, align 8, !tbaa !15
  %1045 = getelementptr inbounds ptr, ptr %1044, i64 %indvars.iv.next514
  %1046 = load ptr, ptr %1045, align 8, !tbaa !15
  %1047 = getelementptr inbounds %struct.celle, ptr %1046, i64 %1002, i32 2
  %1048 = load double, ptr %1047, align 8, !tbaa !16
  %1049 = fsub double %1041, %1048
  %1050 = load ptr, ptr %1001, align 8, !tbaa !14
  %1051 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1050, i32 noundef %.0445482.us)
  %1052 = load ptr, ptr %1051, align 8, !tbaa !15
  %1053 = getelementptr inbounds ptr, ptr %1052, i64 %indvars.iv513
  %1054 = load ptr, ptr %1053, align 8, !tbaa !15
  %1055 = getelementptr inbounds %struct.celle, ptr %1054, i64 %1002, i32 2
  %1056 = load double, ptr %1055, align 8, !tbaa !16
  %1057 = fadd double %1049, %1056
  %1058 = load ptr, ptr %1001, align 8, !tbaa !14
  %1059 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1058, i32 noundef %.0445482.us)
  %1060 = load ptr, ptr %1059, align 8, !tbaa !15
  %1061 = add nsw i64 %indvars.iv513, -1
  %1062 = getelementptr inbounds ptr, ptr %1060, i64 %1061
  %1063 = load ptr, ptr %1062, align 8, !tbaa !15
  %1064 = getelementptr inbounds %struct.celle, ptr %1063, i64 %1002, i32 2
  %1065 = load double, ptr %1064, align 8, !tbaa !16
  %1066 = fsub double %1057, %1065
  %1067 = fmul double %1033, %1066
  %1068 = tail call double @llvm.fmuladd.f64(double %1017, double %1032, double %1067)
  %1069 = load double, ptr %1004, align 8, !tbaa !19
  %1070 = load double, ptr %1005, align 8, !tbaa !20
  %1071 = load ptr, ptr %1001, align 8, !tbaa !14
  %1072 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1071, i32 noundef %.0445482.us)
  %1073 = load ptr, ptr %1072, align 8, !tbaa !15
  %1074 = getelementptr inbounds ptr, ptr %1073, i64 %indvars.iv513
  %1075 = load ptr, ptr %1074, align 8, !tbaa !15
  %1076 = getelementptr inbounds %struct.celle, ptr %1075, i64 %1002, i32 1
  %1077 = load double, ptr %1076, align 8, !tbaa !21
  %1078 = fneg double %1077
  %1079 = load double, ptr %1006, align 8, !tbaa !22
  %1080 = load ptr, ptr %1001, align 8, !tbaa !14
  %1081 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1080, i32 noundef %.0445482.us)
  %1082 = load ptr, ptr %1081, align 8, !tbaa !15
  %1083 = getelementptr inbounds ptr, ptr %1082, i64 %indvars.iv513
  %1084 = load ptr, ptr %1083, align 8, !tbaa !15
  %1085 = getelementptr inbounds %struct.celle, ptr %1084, i64 %1002, i32 1
  %1086 = load double, ptr %1085, align 8, !tbaa !21
  %1087 = load ptr, ptr %1001, align 8, !tbaa !14
  %1088 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1087, i32 noundef %.0445482.us)
  %1089 = load ptr, ptr %1088, align 8, !tbaa !15
  %1090 = getelementptr inbounds ptr, ptr %1089, i64 %indvars.iv513
  %1091 = load ptr, ptr %1090, align 8, !tbaa !15
  %1092 = getelementptr inbounds %struct.celle, ptr %1091, i64 %1007, i32 1
  %1093 = load double, ptr %1092, align 8, !tbaa !21
  %1094 = fsub double %1086, %1093
  %1095 = fmul double %1079, %1094
  %1096 = tail call double @llvm.fmuladd.f64(double %1070, double %1078, double %1095)
  %1097 = fmul double %1069, %1096
  %1098 = tail call double @llvm.fmuladd.f64(double %1016, double %1068, double %1097)
  %1099 = load ptr, ptr %2, align 8, !tbaa !5
  %1100 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5cellbEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1099, i32 noundef %.0445482.us)
  %1101 = load ptr, ptr %1100, align 8, !tbaa !15
  %1102 = getelementptr inbounds ptr, ptr %1101, i64 %indvars.iv513
  %1103 = load ptr, ptr %1102, align 8, !tbaa !15
  %1104 = getelementptr inbounds %struct.cellb, ptr %1103, i64 %1002
  %1105 = load double, ptr %1104, align 8, !tbaa !23
  %1106 = tail call double @llvm.fmuladd.f64(double %1098, double 5.000000e-01, double %1105)
  store double %1106, ptr %1104, align 8, !tbaa !23
  %1107 = load double, ptr %1008, align 8, !tbaa !25
  %1108 = load double, ptr %1009, align 8, !tbaa !26
  %1109 = load ptr, ptr %1001, align 8, !tbaa !14
  %1110 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1109, i32 noundef %1011)
  %1111 = load ptr, ptr %1110, align 8, !tbaa !15
  %1112 = getelementptr inbounds ptr, ptr %1111, i64 %indvars.iv513
  %1113 = load ptr, ptr %1112, align 8, !tbaa !15
  %1114 = getelementptr inbounds %struct.celle, ptr %1113, i64 %1002, i32 2
  %1115 = load double, ptr %1114, align 8, !tbaa !16
  %1116 = load ptr, ptr %1001, align 8, !tbaa !14
  %1117 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1116, i32 noundef %.0445482.us)
  %1118 = load ptr, ptr %1117, align 8, !tbaa !15
  %1119 = getelementptr inbounds ptr, ptr %1118, i64 %indvars.iv513
  %1120 = load ptr, ptr %1119, align 8, !tbaa !15
  %1121 = getelementptr inbounds %struct.celle, ptr %1120, i64 %1002, i32 2
  %1122 = load double, ptr %1121, align 8, !tbaa !16
  %1123 = fsub double %1115, %1122
  %1124 = load double, ptr %1010, align 8, !tbaa !27
  %1125 = load ptr, ptr %1001, align 8, !tbaa !14
  %1126 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1125, i32 noundef %1012)
  %1127 = load ptr, ptr %1126, align 8, !tbaa !15
  %1128 = getelementptr inbounds ptr, ptr %1127, i64 %indvars.iv513
  %1129 = load ptr, ptr %1128, align 8, !tbaa !15
  %1130 = getelementptr inbounds %struct.celle, ptr %1129, i64 %1002, i32 2
  %1131 = load double, ptr %1130, align 8, !tbaa !16
  %1132 = load ptr, ptr %1001, align 8, !tbaa !14
  %1133 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1132, i32 noundef %1011)
  %1134 = load ptr, ptr %1133, align 8, !tbaa !15
  %1135 = getelementptr inbounds ptr, ptr %1134, i64 %indvars.iv513
  %1136 = load ptr, ptr %1135, align 8, !tbaa !15
  %1137 = getelementptr inbounds %struct.celle, ptr %1136, i64 %1002, i32 2
  %1138 = load double, ptr %1137, align 8, !tbaa !16
  %1139 = fsub double %1131, %1138
  %1140 = load ptr, ptr %1001, align 8, !tbaa !14
  %1141 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1140, i32 noundef %.0445482.us)
  %1142 = load ptr, ptr %1141, align 8, !tbaa !15
  %1143 = getelementptr inbounds ptr, ptr %1142, i64 %indvars.iv513
  %1144 = load ptr, ptr %1143, align 8, !tbaa !15
  %1145 = getelementptr inbounds %struct.celle, ptr %1144, i64 %1002, i32 2
  %1146 = load double, ptr %1145, align 8, !tbaa !16
  %1147 = fadd double %1139, %1146
  %1148 = load ptr, ptr %1001, align 8, !tbaa !14
  %1149 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1148, i32 noundef %1013)
  %1150 = load ptr, ptr %1149, align 8, !tbaa !15
  %1151 = getelementptr inbounds ptr, ptr %1150, i64 %indvars.iv513
  %1152 = load ptr, ptr %1151, align 8, !tbaa !15
  %1153 = getelementptr inbounds %struct.celle, ptr %1152, i64 %1002, i32 2
  %1154 = load double, ptr %1153, align 8, !tbaa !16
  %1155 = fsub double %1147, %1154
  %1156 = fmul double %1124, %1155
  %1157 = tail call double @llvm.fmuladd.f64(double %1108, double %1123, double %1156)
  %1158 = load double, ptr %1004, align 8, !tbaa !19
  %1159 = load double, ptr %1005, align 8, !tbaa !20
  %1160 = load ptr, ptr %1001, align 8, !tbaa !14
  %1161 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1160, i32 noundef %.0445482.us)
  %1162 = load ptr, ptr %1161, align 8, !tbaa !15
  %1163 = getelementptr inbounds ptr, ptr %1162, i64 %indvars.iv513
  %1164 = load ptr, ptr %1163, align 8, !tbaa !15
  %1165 = getelementptr inbounds %struct.celle, ptr %1164, i64 %1002
  %1166 = load double, ptr %1165, align 8, !tbaa !28
  %1167 = fneg double %1166
  %1168 = load double, ptr %1006, align 8, !tbaa !22
  %1169 = load ptr, ptr %1001, align 8, !tbaa !14
  %1170 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1169, i32 noundef %.0445482.us)
  %1171 = load ptr, ptr %1170, align 8, !tbaa !15
  %1172 = getelementptr inbounds ptr, ptr %1171, i64 %indvars.iv513
  %1173 = load ptr, ptr %1172, align 8, !tbaa !15
  %1174 = getelementptr inbounds %struct.celle, ptr %1173, i64 %1002
  %1175 = load double, ptr %1174, align 8, !tbaa !28
  %1176 = load ptr, ptr %1001, align 8, !tbaa !14
  %1177 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1176, i32 noundef %.0445482.us)
  %1178 = load ptr, ptr %1177, align 8, !tbaa !15
  %1179 = getelementptr inbounds ptr, ptr %1178, i64 %indvars.iv513
  %1180 = load ptr, ptr %1179, align 8, !tbaa !15
  %1181 = getelementptr inbounds %struct.celle, ptr %1180, i64 %1007
  %1182 = load double, ptr %1181, align 8, !tbaa !28
  %1183 = fsub double %1175, %1182
  %1184 = fmul double %1168, %1183
  %1185 = tail call double @llvm.fmuladd.f64(double %1159, double %1167, double %1184)
  %1186 = fneg double %1158
  %1187 = fmul double %1185, %1186
  %1188 = tail call double @llvm.fmuladd.f64(double %1107, double %1157, double %1187)
  %1189 = load ptr, ptr %2, align 8, !tbaa !5
  %1190 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5cellbEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1189, i32 noundef %.0445482.us)
  %1191 = load ptr, ptr %1190, align 8, !tbaa !15
  %1192 = getelementptr inbounds ptr, ptr %1191, i64 %indvars.iv513
  %1193 = load ptr, ptr %1192, align 8, !tbaa !15
  %1194 = getelementptr inbounds %struct.cellb, ptr %1193, i64 %1002, i32 1
  %1195 = load double, ptr %1194, align 8, !tbaa !29
  %1196 = tail call double @llvm.fmuladd.f64(double %1188, double 5.000000e-01, double %1195)
  store double %1196, ptr %1194, align 8, !tbaa !29
  %1197 = load double, ptr %999, align 8, !tbaa !11
  %1198 = load double, ptr %1000, align 8, !tbaa !12
  %1199 = load ptr, ptr %1001, align 8, !tbaa !14
  %1200 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1199, i32 noundef %.0445482.us)
  %1201 = load ptr, ptr %1200, align 8, !tbaa !15
  %1202 = getelementptr inbounds ptr, ptr %1201, i64 %indvars.iv.next514
  %1203 = load ptr, ptr %1202, align 8, !tbaa !15
  %1204 = getelementptr inbounds %struct.celle, ptr %1203, i64 %1002
  %1205 = load double, ptr %1204, align 8, !tbaa !28
  %1206 = load ptr, ptr %1001, align 8, !tbaa !14
  %1207 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1206, i32 noundef %.0445482.us)
  %1208 = load ptr, ptr %1207, align 8, !tbaa !15
  %1209 = getelementptr inbounds ptr, ptr %1208, i64 %indvars.iv513
  %1210 = load ptr, ptr %1209, align 8, !tbaa !15
  %1211 = getelementptr inbounds %struct.celle, ptr %1210, i64 %1002
  %1212 = load double, ptr %1211, align 8, !tbaa !28
  %1213 = fsub double %1205, %1212
  %1214 = load double, ptr %1003, align 8, !tbaa !18
  %1215 = load ptr, ptr %1001, align 8, !tbaa !14
  %1216 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1215, i32 noundef %.0445482.us)
  %1217 = load ptr, ptr %1216, align 8, !tbaa !15
  %1218 = getelementptr inbounds ptr, ptr %1217, i64 %1037
  %1219 = load ptr, ptr %1218, align 8, !tbaa !15
  %1220 = getelementptr inbounds %struct.celle, ptr %1219, i64 %1002
  %1221 = load double, ptr %1220, align 8, !tbaa !28
  %1222 = load ptr, ptr %1001, align 8, !tbaa !14
  %1223 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1222, i32 noundef %.0445482.us)
  %1224 = load ptr, ptr %1223, align 8, !tbaa !15
  %1225 = getelementptr inbounds ptr, ptr %1224, i64 %indvars.iv.next514
  %1226 = load ptr, ptr %1225, align 8, !tbaa !15
  %1227 = getelementptr inbounds %struct.celle, ptr %1226, i64 %1002
  %1228 = load double, ptr %1227, align 8, !tbaa !28
  %1229 = fsub double %1221, %1228
  %1230 = load ptr, ptr %1001, align 8, !tbaa !14
  %1231 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1230, i32 noundef %.0445482.us)
  %1232 = load ptr, ptr %1231, align 8, !tbaa !15
  %1233 = getelementptr inbounds ptr, ptr %1232, i64 %indvars.iv513
  %1234 = load ptr, ptr %1233, align 8, !tbaa !15
  %1235 = getelementptr inbounds %struct.celle, ptr %1234, i64 %1002
  %1236 = load double, ptr %1235, align 8, !tbaa !28
  %1237 = fadd double %1229, %1236
  %1238 = load ptr, ptr %1001, align 8, !tbaa !14
  %1239 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1238, i32 noundef %.0445482.us)
  %1240 = load ptr, ptr %1239, align 8, !tbaa !15
  %1241 = getelementptr inbounds ptr, ptr %1240, i64 %1061
  %1242 = load ptr, ptr %1241, align 8, !tbaa !15
  %1243 = getelementptr inbounds %struct.celle, ptr %1242, i64 %1002
  %1244 = load double, ptr %1243, align 8, !tbaa !28
  %1245 = fsub double %1237, %1244
  %1246 = fmul double %1214, %1245
  %1247 = tail call double @llvm.fmuladd.f64(double %1198, double %1213, double %1246)
  %1248 = load double, ptr %1008, align 8, !tbaa !25
  %1249 = load double, ptr %1009, align 8, !tbaa !26
  %1250 = load ptr, ptr %1001, align 8, !tbaa !14
  %1251 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1250, i32 noundef %1011)
  %1252 = load ptr, ptr %1251, align 8, !tbaa !15
  %1253 = getelementptr inbounds ptr, ptr %1252, i64 %indvars.iv513
  %1254 = load ptr, ptr %1253, align 8, !tbaa !15
  %1255 = getelementptr inbounds %struct.celle, ptr %1254, i64 %1002, i32 1
  %1256 = load double, ptr %1255, align 8, !tbaa !21
  %1257 = load ptr, ptr %1001, align 8, !tbaa !14
  %1258 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1257, i32 noundef %.0445482.us)
  %1259 = load ptr, ptr %1258, align 8, !tbaa !15
  %1260 = getelementptr inbounds ptr, ptr %1259, i64 %indvars.iv513
  %1261 = load ptr, ptr %1260, align 8, !tbaa !15
  %1262 = getelementptr inbounds %struct.celle, ptr %1261, i64 %1002, i32 1
  %1263 = load double, ptr %1262, align 8, !tbaa !21
  %1264 = fsub double %1256, %1263
  %1265 = load double, ptr %1010, align 8, !tbaa !27
  %1266 = load ptr, ptr %1001, align 8, !tbaa !14
  %1267 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1266, i32 noundef %1012)
  %1268 = load ptr, ptr %1267, align 8, !tbaa !15
  %1269 = getelementptr inbounds ptr, ptr %1268, i64 %indvars.iv513
  %1270 = load ptr, ptr %1269, align 8, !tbaa !15
  %1271 = getelementptr inbounds %struct.celle, ptr %1270, i64 %1002, i32 1
  %1272 = load double, ptr %1271, align 8, !tbaa !21
  %1273 = load ptr, ptr %1001, align 8, !tbaa !14
  %1274 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1273, i32 noundef %1011)
  %1275 = load ptr, ptr %1274, align 8, !tbaa !15
  %1276 = getelementptr inbounds ptr, ptr %1275, i64 %indvars.iv513
  %1277 = load ptr, ptr %1276, align 8, !tbaa !15
  %1278 = getelementptr inbounds %struct.celle, ptr %1277, i64 %1002, i32 1
  %1279 = load double, ptr %1278, align 8, !tbaa !21
  %1280 = fsub double %1272, %1279
  %1281 = load ptr, ptr %1001, align 8, !tbaa !14
  %1282 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1281, i32 noundef %.0445482.us)
  %1283 = load ptr, ptr %1282, align 8, !tbaa !15
  %1284 = getelementptr inbounds ptr, ptr %1283, i64 %indvars.iv513
  %1285 = load ptr, ptr %1284, align 8, !tbaa !15
  %1286 = getelementptr inbounds %struct.celle, ptr %1285, i64 %1002, i32 1
  %1287 = load double, ptr %1286, align 8, !tbaa !21
  %1288 = fadd double %1280, %1287
  %1289 = load ptr, ptr %1001, align 8, !tbaa !14
  %1290 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5celleEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1289, i32 noundef %1013)
  %1291 = load ptr, ptr %1290, align 8, !tbaa !15
  %1292 = getelementptr inbounds ptr, ptr %1291, i64 %indvars.iv513
  %1293 = load ptr, ptr %1292, align 8, !tbaa !15
  %1294 = getelementptr inbounds %struct.celle, ptr %1293, i64 %1002, i32 1
  %1295 = load double, ptr %1294, align 8, !tbaa !21
  %1296 = fsub double %1288, %1295
  %1297 = fmul double %1265, %1296
  %1298 = tail call double @llvm.fmuladd.f64(double %1249, double %1264, double %1297)
  %1299 = fneg double %1248
  %1300 = fmul double %1298, %1299
  %1301 = tail call double @llvm.fmuladd.f64(double %1197, double %1247, double %1300)
  %1302 = load ptr, ptr %2, align 8, !tbaa !5
  %1303 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK7field3dI5cellbEixEi(ptr noundef nonnull align 8 dereferenceable(40) %1302, i32 noundef %.0445482.us)
  %1304 = load ptr, ptr %1303, align 8, !tbaa !15
  %1305 = getelementptr inbounds ptr, ptr %1304, i64 %indvars.iv513
  %1306 = load ptr, ptr %1305, align 8, !tbaa !15
  %1307 = getelementptr inbounds %struct.cellb, ptr %1306, i64 %1002, i32 2
  %1308 = load double, ptr %1307, align 8, !tbaa !30
  %1309 = tail call double @llvm.fmuladd.f64(double %1301, double 5.000000e-01, double %1308)
  store double %1309, ptr %1307, align 8, !tbaa !30
  %exitcond517.not = icmp eq i64 %indvars.iv.next514, %wide.trip.count516
  br i1 %exitcond517.not, label %._crit_edge481.us, label %1014, !llvm.loop !39

._crit_edge481.us:                                ; preds = %1014
  %exitcond518.not = icmp eq i32 %1011, %9
  br i1 %exitcond518.not, label %._crit_edge483, label %.preheader.us, !llvm.loop !40

._crit_edge483:                                   ; preds = %._crit_edge481.us, %.preheader454, %.preheader455, %.preheader454.thread
  ret void
}

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !7, i64 16}
!6 = !{!"_ZTS14maxwell_solver", !7, i64 8, !7, i64 16, !7, i64 24, !10, i64 32, !10, i64 40, !10, i64 48, !10, i64 56, !10, i64 64, !10, i64 72}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"double", !8, i64 0}
!11 = !{!6, !10, i64 64}
!12 = !{!13, !10, i64 112}
!13 = !{!"_ZTS17five_point_solver", !6, i64 0, !10, i64 80, !10, i64 88, !10, i64 96, !10, i64 104, !10, i64 112, !10, i64 120}
!14 = !{!6, !7, i64 8}
!15 = !{!7, !7, i64 0}
!16 = !{!17, !10, i64 16}
!17 = !{!"_ZTS5celle", !10, i64 0, !10, i64 8, !10, i64 16}
!18 = !{!13, !10, i64 88}
!19 = !{!6, !10, i64 72}
!20 = !{!13, !10, i64 120}
!21 = !{!17, !10, i64 8}
!22 = !{!13, !10, i64 96}
!23 = !{!24, !10, i64 0}
!24 = !{!"_ZTS5cellb", !10, i64 0, !10, i64 8, !10, i64 16}
!25 = !{!6, !10, i64 56}
!26 = !{!13, !10, i64 104}
!27 = !{!13, !10, i64 80}
!28 = !{!17, !10, i64 0}
!29 = !{!24, !10, i64 8}
!30 = !{!24, !10, i64 16}
!31 = distinct !{!31, !32}
!32 = !{!"llvm.loop.mustprogress"}
!33 = distinct !{!33, !32}
!34 = distinct !{!34, !32}
!35 = distinct !{!35, !32}
!36 = distinct !{!36, !32}
!37 = distinct !{!37, !32}
!38 = distinct !{!38, !32}
!39 = distinct !{!39, !32}
!40 = distinct !{!40, !32}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LCSSAPass,LICMPass,LoopInstSimplifyPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass