; LLVM IR from SciCompMod/GMGPolar :: src/InputFunctions/DomainGeometry (culhamGeometry)

; 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.CulhamGeometry = type { %class.DomainGeometry, double, double, double, double, %"struct.std::array", i64, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, %"struct.std::array", %"struct.std::array", double, double, i64, %"struct.std::array", %"struct.std::array", %"struct.std::array", %"struct.std::array", %"struct.std::array", %"struct.std::array", %"struct.std::array" }
%class.DomainGeometry = type { ptr }
%"struct.std::array" = type { [1001 x double] }

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZNK14CulhamGeometry5DeltaEd(ptr noundef nonnull align 8 dereferenceable(80408), double noundef) #1 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZNK14CulhamGeometry1EEd(ptr noundef nonnull align 8 dereferenceable(80408), double noundef) #1 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZNK14CulhamGeometry1TEd(ptr noundef nonnull align 8 dereferenceable(80408), double noundef) #1 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN14CulhamGeometry18initializeGeometryEv(ptr noundef nonnull align 8 dereferenceable(80408) %0) #2 align 2 {
  %2 = alloca ptr, align 8
  store ptr %0, ptr %2, align 8, !tbaa !5
  %3 = load ptr, ptr %2, align 8
  %4 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 2
  store double 0.000000e+00, ptr %4, align 8, !tbaa !9
  %5 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 3
  store double 1.000000e-03, ptr %5, align 8, !tbaa !15
  %6 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 3
  %7 = load double, ptr %6, align 8, !tbaa !15
  %8 = fmul double %7, 5.000000e-01
  %9 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 4
  store double %8, ptr %9, align 8, !tbaa !16
  %10 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 44
  %11 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %10, i64 noundef 0) #6
  store double 1.000000e+00, ptr %11, align 8, !tbaa !17
  %12 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 47
  %13 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %12, i64 noundef 0) #6
  store double 0.000000e+00, ptr %13, align 8, !tbaa !17
  %14 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 49
  %15 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %14, i64 noundef 0) #6
  store double 1.000000e+00, ptr %15, align 8, !tbaa !17
  %16 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 48
  %17 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %16, i64 noundef 0) #6
  store double 0.000000e+00, ptr %17, align 8, !tbaa !17
  %18 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 50
  %19 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %18, i64 noundef 0) #6
  store double 0.000000e+00, ptr %19, align 8, !tbaa !17
  %20 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 2
  %21 = load double, ptr %20, align 8, !tbaa !9
  %22 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 5
  %23 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %22, i64 noundef 0) #6
  store double %21, ptr %23, align 8, !tbaa !17
  %24 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 3
  %25 = load double, ptr %24, align 8, !tbaa !15
  %26 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 2
  %27 = load double, ptr %26, align 8, !tbaa !9
  %28 = fadd double %27, %25
  store double %28, ptr %26, align 8, !tbaa !9
  %29 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 2
  %30 = load double, ptr %29, align 8, !tbaa !9
  %31 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 5
  %32 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %31, i64 noundef 1) #6
  store double %30, ptr %32, align 8, !tbaa !17
  %33 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 44
  %34 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %33, i64 noundef 1) #6
  store double 1.000000e+00, ptr %34, align 8, !tbaa !17
  %35 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 2
  %36 = load double, ptr %35, align 8, !tbaa !9
  %37 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 47
  %38 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %37, i64 noundef 1) #6
  store double %36, ptr %38, align 8, !tbaa !17
  %39 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 49
  %40 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %39, i64 noundef 1) #6
  store double 1.000000e+00, ptr %40, align 8, !tbaa !17
  %41 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 2
  %42 = load double, ptr %41, align 8, !tbaa !9
  %43 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 2
  %44 = load double, ptr %43, align 8, !tbaa !9
  %45 = fmul double %42, %44
  %46 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 48
  %47 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %46, i64 noundef 1) #6
  store double %45, ptr %47, align 8, !tbaa !17
  %48 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 2
  %49 = load double, ptr %48, align 8, !tbaa !9
  %50 = fmul double 2.000000e+00, %49
  %51 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 50
  %52 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %51, i64 noundef 1) #6
  store double %50, ptr %52, align 8, !tbaa !17
  %53 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 6
  store i64 1, ptr %53, align 8, !tbaa !18
  br label %54

54:                                               ; preds = %526, %1
  %55 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 6
  %56 = load i64, ptr %55, align 8, !tbaa !18
  %57 = icmp slt i64 %56, 1000
  br i1 %57, label %58, label %530

58:                                               ; preds = %54
  %59 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 2
  %60 = load double, ptr %59, align 8, !tbaa !9
  %61 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 44
  %62 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 6
  %63 = load i64, ptr %62, align 8, !tbaa !18
  %64 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %61, i64 noundef %63) #6
  %65 = load double, ptr %64, align 8, !tbaa !17
  %66 = call noundef double @_ZNK14CulhamGeometry2dgEdd(ptr noundef nonnull align 8 dereferenceable(80408) %3, double noundef %60, double noundef %65)
  %67 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 7
  store double %66, ptr %67, align 8, !tbaa !19
  %68 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 49
  %69 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 6
  %70 = load i64, ptr %69, align 8, !tbaa !18
  %71 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %68, i64 noundef %70) #6
  %72 = load double, ptr %71, align 8, !tbaa !17
  %73 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 8
  store double %72, ptr %73, align 8, !tbaa !20
  %74 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 50
  %75 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 6
  %76 = load i64, ptr %75, align 8, !tbaa !18
  %77 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %74, i64 noundef %76) #6
  %78 = load double, ptr %77, align 8, !tbaa !17
  %79 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 9
  store double %78, ptr %79, align 8, !tbaa !21
  %80 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 2
  %81 = load double, ptr %80, align 8, !tbaa !9
  %82 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 44
  %83 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 6
  %84 = load i64, ptr %83, align 8, !tbaa !18
  %85 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %82, i64 noundef %84) #6
  %86 = load double, ptr %85, align 8, !tbaa !17
  %87 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 7
  %88 = load double, ptr %87, align 8, !tbaa !19
  %89 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 47
  %90 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 6
  %91 = load i64, ptr %90, align 8, !tbaa !18
  %92 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %89, i64 noundef %91) #6
  %93 = load double, ptr %92, align 8, !tbaa !17
  %94 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 49
  %95 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 6
  %96 = load i64, ptr %95, align 8, !tbaa !18
  %97 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %94, i64 noundef %96) #6
  %98 = load double, ptr %97, align 8, !tbaa !17
  %99 = call noundef double @_ZNK14CulhamGeometry12double_derivEdddddd(ptr noundef nonnull align 8 dereferenceable(80408) %3, double noundef %81, double noundef 3.000000e+00, double noundef %86, double noundef %88, double noundef %93, double noundef %98)
  %100 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 10
  store double %99, ptr %100, align 8, !tbaa !22
  %101 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 2
  %102 = load double, ptr %101, align 8, !tbaa !9
  %103 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 44
  %104 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 6
  %105 = load i64, ptr %104, align 8, !tbaa !18
  %106 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %103, i64 noundef %105) #6
  %107 = load double, ptr %106, align 8, !tbaa !17
  %108 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 7
  %109 = load double, ptr %108, align 8, !tbaa !19
  %110 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 48
  %111 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 6
  %112 = load i64, ptr %111, align 8, !tbaa !18
  %113 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %110, i64 noundef %112) #6
  %114 = load double, ptr %113, align 8, !tbaa !17
  %115 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 50
  %116 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 6
  %117 = load i64, ptr %116, align 8, !tbaa !18
  %118 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %115, i64 noundef %117) #6
  %119 = load double, ptr %118, align 8, !tbaa !17
  %120 = call noundef double @_ZNK14CulhamGeometry12double_derivEdddddd(ptr noundef nonnull align 8 dereferenceable(80408) %3, double noundef %102, double noundef 8.000000e+00, double noundef %107, double noundef %109, double noundef %114, double noundef %119)
  %121 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 11
  store double %120, ptr %121, align 8, !tbaa !23
  %122 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 2
  %123 = load double, ptr %122, align 8, !tbaa !9
  %124 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 4
  %125 = load double, ptr %124, align 8, !tbaa !16
  %126 = fadd double %123, %125
  %127 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 12
  store double %126, ptr %127, align 8, !tbaa !24
  %128 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 44
  %129 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 6
  %130 = load i64, ptr %129, align 8, !tbaa !18
  %131 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %128, i64 noundef %130) #6
  %132 = load double, ptr %131, align 8, !tbaa !17
  %133 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 4
  %134 = load double, ptr %133, align 8, !tbaa !16
  %135 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 7
  %136 = load double, ptr %135, align 8, !tbaa !19
  %137 = call double @llvm.fmuladd.f64(double %134, double %136, double %132)
  %138 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 13
  store double %137, ptr %138, align 8, !tbaa !25
  %139 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 12
  %140 = load double, ptr %139, align 8, !tbaa !24
  %141 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 13
  %142 = load double, ptr %141, align 8, !tbaa !25
  %143 = call noundef double @_ZNK14CulhamGeometry2dgEdd(ptr noundef nonnull align 8 dereferenceable(80408) %3, double noundef %140, double noundef %142)
  %144 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 14
  store double %143, ptr %144, align 8, !tbaa !26
  %145 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 47
  %146 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 6
  %147 = load i64, ptr %146, align 8, !tbaa !18
  %148 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %145, i64 noundef %147) #6
  %149 = load double, ptr %148, align 8, !tbaa !17
  %150 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 8
  %151 = load double, ptr %150, align 8, !tbaa !20
  %152 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 4
  %153 = load double, ptr %152, align 8, !tbaa !16
  %154 = call double @llvm.fmuladd.f64(double %151, double %153, double %149)
  %155 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 15
  store double %154, ptr %155, align 8, !tbaa !27
  %156 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 48
  %157 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 6
  %158 = load i64, ptr %157, align 8, !tbaa !18
  %159 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %156, i64 noundef %158) #6
  %160 = load double, ptr %159, align 8, !tbaa !17
  %161 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 9
  %162 = load double, ptr %161, align 8, !tbaa !21
  %163 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 4
  %164 = load double, ptr %163, align 8, !tbaa !16
  %165 = call double @llvm.fmuladd.f64(double %162, double %164, double %160)
  %166 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 16
  store double %165, ptr %166, align 8, !tbaa !28
  %167 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 49
  %168 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 6
  %169 = load i64, ptr %168, align 8, !tbaa !18
  %170 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %167, i64 noundef %169) #6
  %171 = load double, ptr %170, align 8, !tbaa !17
  %172 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 10
  %173 = load double, ptr %172, align 8, !tbaa !22
  %174 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 4
  %175 = load double, ptr %174, align 8, !tbaa !16
  %176 = call double @llvm.fmuladd.f64(double %173, double %175, double %171)
  %177 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 17
  store double %176, ptr %177, align 8, !tbaa !29
  %178 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 50
  %179 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 6
  %180 = load i64, ptr %179, align 8, !tbaa !18
  %181 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %178, i64 noundef %180) #6
  %182 = load double, ptr %181, align 8, !tbaa !17
  %183 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 11
  %184 = load double, ptr %183, align 8, !tbaa !23
  %185 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 4
  %186 = load double, ptr %185, align 8, !tbaa !16
  %187 = call double @llvm.fmuladd.f64(double %184, double %186, double %182)
  %188 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 18
  store double %187, ptr %188, align 8, !tbaa !30
  %189 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 12
  %190 = load double, ptr %189, align 8, !tbaa !24
  %191 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 13
  %192 = load double, ptr %191, align 8, !tbaa !25
  %193 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 14
  %194 = load double, ptr %193, align 8, !tbaa !26
  %195 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 15
  %196 = load double, ptr %195, align 8, !tbaa !27
  %197 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 17
  %198 = load double, ptr %197, align 8, !tbaa !29
  %199 = call noundef double @_ZNK14CulhamGeometry12double_derivEdddddd(ptr noundef nonnull align 8 dereferenceable(80408) %3, double noundef %190, double noundef 3.000000e+00, double noundef %192, double noundef %194, double noundef %196, double noundef %198)
  %200 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 19
  store double %199, ptr %200, align 8, !tbaa !31
  %201 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 12
  %202 = load double, ptr %201, align 8, !tbaa !24
  %203 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 13
  %204 = load double, ptr %203, align 8, !tbaa !25
  %205 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 14
  %206 = load double, ptr %205, align 8, !tbaa !26
  %207 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 16
  %208 = load double, ptr %207, align 8, !tbaa !28
  %209 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 18
  %210 = load double, ptr %209, align 8, !tbaa !30
  %211 = call noundef double @_ZNK14CulhamGeometry12double_derivEdddddd(ptr noundef nonnull align 8 dereferenceable(80408) %3, double noundef %202, double noundef 8.000000e+00, double noundef %204, double noundef %206, double noundef %208, double noundef %210)
  %212 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 20
  store double %211, ptr %212, align 8, !tbaa !32
  %213 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 44
  %214 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 6
  %215 = load i64, ptr %214, align 8, !tbaa !18
  %216 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %213, i64 noundef %215) #6
  %217 = load double, ptr %216, align 8, !tbaa !17
  %218 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 4
  %219 = load double, ptr %218, align 8, !tbaa !16
  %220 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 14
  %221 = load double, ptr %220, align 8, !tbaa !26
  %222 = call double @llvm.fmuladd.f64(double %219, double %221, double %217)
  %223 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 21
  store double %222, ptr %223, align 8, !tbaa !33
  %224 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 12
  %225 = load double, ptr %224, align 8, !tbaa !24
  %226 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 21
  %227 = load double, ptr %226, align 8, !tbaa !33
  %228 = call noundef double @_ZNK14CulhamGeometry2dgEdd(ptr noundef nonnull align 8 dereferenceable(80408) %3, double noundef %225, double noundef %227)
  %229 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 22
  store double %228, ptr %229, align 8, !tbaa !34
  %230 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 47
  %231 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 6
  %232 = load i64, ptr %231, align 8, !tbaa !18
  %233 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %230, i64 noundef %232) #6
  %234 = load double, ptr %233, align 8, !tbaa !17
  %235 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 17
  %236 = load double, ptr %235, align 8, !tbaa !29
  %237 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 4
  %238 = load double, ptr %237, align 8, !tbaa !16
  %239 = call double @llvm.fmuladd.f64(double %236, double %238, double %234)
  %240 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 23
  store double %239, ptr %240, align 8, !tbaa !35
  %241 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 48
  %242 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 6
  %243 = load i64, ptr %242, align 8, !tbaa !18
  %244 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %241, i64 noundef %243) #6
  %245 = load double, ptr %244, align 8, !tbaa !17
  %246 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 18
  %247 = load double, ptr %246, align 8, !tbaa !30
  %248 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 4
  %249 = load double, ptr %248, align 8, !tbaa !16
  %250 = call double @llvm.fmuladd.f64(double %247, double %249, double %245)
  %251 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 24
  store double %250, ptr %251, align 8, !tbaa !36
  %252 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 49
  %253 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 6
  %254 = load i64, ptr %253, align 8, !tbaa !18
  %255 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %252, i64 noundef %254) #6
  %256 = load double, ptr %255, align 8, !tbaa !17
  %257 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 19
  %258 = load double, ptr %257, align 8, !tbaa !31
  %259 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 4
  %260 = load double, ptr %259, align 8, !tbaa !16
  %261 = call double @llvm.fmuladd.f64(double %258, double %260, double %256)
  %262 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 25
  store double %261, ptr %262, align 8, !tbaa !37
  %263 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 50
  %264 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 6
  %265 = load i64, ptr %264, align 8, !tbaa !18
  %266 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %263, i64 noundef %265) #6
  %267 = load double, ptr %266, align 8, !tbaa !17
  %268 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 20
  %269 = load double, ptr %268, align 8, !tbaa !32
  %270 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 4
  %271 = load double, ptr %270, align 8, !tbaa !16
  %272 = call double @llvm.fmuladd.f64(double %269, double %271, double %267)
  %273 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 26
  store double %272, ptr %273, align 8, !tbaa !38
  %274 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 12
  %275 = load double, ptr %274, align 8, !tbaa !24
  %276 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 21
  %277 = load double, ptr %276, align 8, !tbaa !33
  %278 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 22
  %279 = load double, ptr %278, align 8, !tbaa !34
  %280 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 23
  %281 = load double, ptr %280, align 8, !tbaa !35
  %282 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 25
  %283 = load double, ptr %282, align 8, !tbaa !37
  %284 = call noundef double @_ZNK14CulhamGeometry12double_derivEdddddd(ptr noundef nonnull align 8 dereferenceable(80408) %3, double noundef %275, double noundef 3.000000e+00, double noundef %277, double noundef %279, double noundef %281, double noundef %283)
  %285 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 27
  store double %284, ptr %285, align 8, !tbaa !39
  %286 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 12
  %287 = load double, ptr %286, align 8, !tbaa !24
  %288 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 21
  %289 = load double, ptr %288, align 8, !tbaa !33
  %290 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 22
  %291 = load double, ptr %290, align 8, !tbaa !34
  %292 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 24
  %293 = load double, ptr %292, align 8, !tbaa !36
  %294 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 26
  %295 = load double, ptr %294, align 8, !tbaa !38
  %296 = call noundef double @_ZNK14CulhamGeometry12double_derivEdddddd(ptr noundef nonnull align 8 dereferenceable(80408) %3, double noundef %287, double noundef 8.000000e+00, double noundef %289, double noundef %291, double noundef %293, double noundef %295)
  %297 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 28
  store double %296, ptr %297, align 8, !tbaa !40
  %298 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 2
  %299 = load double, ptr %298, align 8, !tbaa !9
  %300 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 3
  %301 = load double, ptr %300, align 8, !tbaa !15
  %302 = fadd double %299, %301
  %303 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 2
  store double %302, ptr %303, align 8, !tbaa !9
  %304 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 44
  %305 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 6
  %306 = load i64, ptr %305, align 8, !tbaa !18
  %307 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %304, i64 noundef %306) #6
  %308 = load double, ptr %307, align 8, !tbaa !17
  %309 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 3
  %310 = load double, ptr %309, align 8, !tbaa !15
  %311 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 22
  %312 = load double, ptr %311, align 8, !tbaa !34
  %313 = call double @llvm.fmuladd.f64(double %310, double %312, double %308)
  %314 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 29
  store double %313, ptr %314, align 8, !tbaa !41
  %315 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 2
  %316 = load double, ptr %315, align 8, !tbaa !9
  %317 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 29
  %318 = load double, ptr %317, align 8, !tbaa !41
  %319 = call noundef double @_ZNK14CulhamGeometry2dgEdd(ptr noundef nonnull align 8 dereferenceable(80408) %3, double noundef %316, double noundef %318)
  %320 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 30
  store double %319, ptr %320, align 8, !tbaa !42
  %321 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 47
  %322 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 6
  %323 = load i64, ptr %322, align 8, !tbaa !18
  %324 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %321, i64 noundef %323) #6
  %325 = load double, ptr %324, align 8, !tbaa !17
  %326 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 25
  %327 = load double, ptr %326, align 8, !tbaa !37
  %328 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 3
  %329 = load double, ptr %328, align 8, !tbaa !15
  %330 = call double @llvm.fmuladd.f64(double %327, double %329, double %325)
  %331 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 31
  store double %330, ptr %331, align 8, !tbaa !43
  %332 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 48
  %333 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 6
  %334 = load i64, ptr %333, align 8, !tbaa !18
  %335 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %332, i64 noundef %334) #6
  %336 = load double, ptr %335, align 8, !tbaa !17
  %337 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 26
  %338 = load double, ptr %337, align 8, !tbaa !38
  %339 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 3
  %340 = load double, ptr %339, align 8, !tbaa !15
  %341 = call double @llvm.fmuladd.f64(double %338, double %340, double %336)
  %342 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 32
  store double %341, ptr %342, align 8, !tbaa !44
  %343 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 49
  %344 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 6
  %345 = load i64, ptr %344, align 8, !tbaa !18
  %346 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %343, i64 noundef %345) #6
  %347 = load double, ptr %346, align 8, !tbaa !17
  %348 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 27
  %349 = load double, ptr %348, align 8, !tbaa !39
  %350 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 3
  %351 = load double, ptr %350, align 8, !tbaa !15
  %352 = call double @llvm.fmuladd.f64(double %349, double %351, double %347)
  %353 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 33
  store double %352, ptr %353, align 8, !tbaa !45
  %354 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 50
  %355 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 6
  %356 = load i64, ptr %355, align 8, !tbaa !18
  %357 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %354, i64 noundef %356) #6
  %358 = load double, ptr %357, align 8, !tbaa !17
  %359 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 28
  %360 = load double, ptr %359, align 8, !tbaa !40
  %361 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 3
  %362 = load double, ptr %361, align 8, !tbaa !15
  %363 = call double @llvm.fmuladd.f64(double %360, double %362, double %358)
  %364 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 34
  store double %363, ptr %364, align 8, !tbaa !46
  %365 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 2
  %366 = load double, ptr %365, align 8, !tbaa !9
  %367 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 29
  %368 = load double, ptr %367, align 8, !tbaa !41
  %369 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 30
  %370 = load double, ptr %369, align 8, !tbaa !42
  %371 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 31
  %372 = load double, ptr %371, align 8, !tbaa !43
  %373 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 33
  %374 = load double, ptr %373, align 8, !tbaa !45
  %375 = call noundef double @_ZNK14CulhamGeometry12double_derivEdddddd(ptr noundef nonnull align 8 dereferenceable(80408) %3, double noundef %366, double noundef 3.000000e+00, double noundef %368, double noundef %370, double noundef %372, double noundef %374)
  %376 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 35
  store double %375, ptr %376, align 8, !tbaa !47
  %377 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 2
  %378 = load double, ptr %377, align 8, !tbaa !9
  %379 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 29
  %380 = load double, ptr %379, align 8, !tbaa !41
  %381 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 30
  %382 = load double, ptr %381, align 8, !tbaa !42
  %383 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 32
  %384 = load double, ptr %383, align 8, !tbaa !44
  %385 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 34
  %386 = load double, ptr %385, align 8, !tbaa !46
  %387 = call noundef double @_ZNK14CulhamGeometry12double_derivEdddddd(ptr noundef nonnull align 8 dereferenceable(80408) %3, double noundef %378, double noundef 8.000000e+00, double noundef %380, double noundef %382, double noundef %384, double noundef %386)
  %388 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 36
  store double %387, ptr %388, align 8, !tbaa !48
  %389 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 44
  %390 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 6
  %391 = load i64, ptr %390, align 8, !tbaa !18
  %392 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %389, i64 noundef %391) #6
  %393 = load double, ptr %392, align 8, !tbaa !17
  %394 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 3
  %395 = load double, ptr %394, align 8, !tbaa !15
  %396 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 7
  %397 = load double, ptr %396, align 8, !tbaa !19
  %398 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 14
  %399 = load double, ptr %398, align 8, !tbaa !26
  %400 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %399, double %397)
  %401 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 22
  %402 = load double, ptr %401, align 8, !tbaa !34
  %403 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %402, double %400)
  %404 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 30
  %405 = load double, ptr %404, align 8, !tbaa !42
  %406 = fadd double %403, %405
  %407 = fmul double %395, %406
  %408 = fdiv double %407, 6.000000e+00
  %409 = fadd double %393, %408
  %410 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 44
  %411 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 6
  %412 = load i64, ptr %411, align 8, !tbaa !18
  %413 = add nsw i64 %412, 1
  %414 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %410, i64 noundef %413) #6
  store double %409, ptr %414, align 8, !tbaa !17
  %415 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 47
  %416 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 6
  %417 = load i64, ptr %416, align 8, !tbaa !18
  %418 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %415, i64 noundef %417) #6
  %419 = load double, ptr %418, align 8, !tbaa !17
  %420 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 3
  %421 = load double, ptr %420, align 8, !tbaa !15
  %422 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 8
  %423 = load double, ptr %422, align 8, !tbaa !20
  %424 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 17
  %425 = load double, ptr %424, align 8, !tbaa !29
  %426 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %425, double %423)
  %427 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 25
  %428 = load double, ptr %427, align 8, !tbaa !37
  %429 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %428, double %426)
  %430 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 33
  %431 = load double, ptr %430, align 8, !tbaa !45
  %432 = fadd double %429, %431
  %433 = fmul double %421, %432
  %434 = fdiv double %433, 6.000000e+00
  %435 = fadd double %419, %434
  %436 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 47
  %437 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 6
  %438 = load i64, ptr %437, align 8, !tbaa !18
  %439 = add nsw i64 %438, 1
  %440 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %436, i64 noundef %439) #6
  store double %435, ptr %440, align 8, !tbaa !17
  %441 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 48
  %442 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 6
  %443 = load i64, ptr %442, align 8, !tbaa !18
  %444 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %441, i64 noundef %443) #6
  %445 = load double, ptr %444, align 8, !tbaa !17
  %446 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 3
  %447 = load double, ptr %446, align 8, !tbaa !15
  %448 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 9
  %449 = load double, ptr %448, align 8, !tbaa !21
  %450 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 18
  %451 = load double, ptr %450, align 8, !tbaa !30
  %452 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %451, double %449)
  %453 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 26
  %454 = load double, ptr %453, align 8, !tbaa !38
  %455 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %454, double %452)
  %456 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 34
  %457 = load double, ptr %456, align 8, !tbaa !46
  %458 = fadd double %455, %457
  %459 = fmul double %447, %458
  %460 = fdiv double %459, 6.000000e+00
  %461 = fadd double %445, %460
  %462 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 48
  %463 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 6
  %464 = load i64, ptr %463, align 8, !tbaa !18
  %465 = add nsw i64 %464, 1
  %466 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %462, i64 noundef %465) #6
  store double %461, ptr %466, align 8, !tbaa !17
  %467 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 49
  %468 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 6
  %469 = load i64, ptr %468, align 8, !tbaa !18
  %470 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %467, i64 noundef %469) #6
  %471 = load double, ptr %470, align 8, !tbaa !17
  %472 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 3
  %473 = load double, ptr %472, align 8, !tbaa !15
  %474 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 10
  %475 = load double, ptr %474, align 8, !tbaa !22
  %476 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 19
  %477 = load double, ptr %476, align 8, !tbaa !31
  %478 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %477, double %475)
  %479 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 27
  %480 = load double, ptr %479, align 8, !tbaa !39
  %481 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %480, double %478)
  %482 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 35
  %483 = load double, ptr %482, align 8, !tbaa !47
  %484 = fadd double %481, %483
  %485 = fmul double %473, %484
  %486 = fdiv double %485, 6.000000e+00
  %487 = fadd double %471, %486
  %488 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 49
  %489 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 6
  %490 = load i64, ptr %489, align 8, !tbaa !18
  %491 = add nsw i64 %490, 1
  %492 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %488, i64 noundef %491) #6
  store double %487, ptr %492, align 8, !tbaa !17
  %493 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 50
  %494 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 6
  %495 = load i64, ptr %494, align 8, !tbaa !18
  %496 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %493, i64 noundef %495) #6
  %497 = load double, ptr %496, align 8, !tbaa !17
  %498 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 3
  %499 = load double, ptr %498, align 8, !tbaa !15
  %500 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 11
  %501 = load double, ptr %500, align 8, !tbaa !23
  %502 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 20
  %503 = load double, ptr %502, align 8, !tbaa !32
  %504 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %503, double %501)
  %505 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 28
  %506 = load double, ptr %505, align 8, !tbaa !40
  %507 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %506, double %504)
  %508 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 36
  %509 = load double, ptr %508, align 8, !tbaa !48
  %510 = fadd double %507, %509
  %511 = fmul double %499, %510
  %512 = fdiv double %511, 6.000000e+00
  %513 = fadd double %497, %512
  %514 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 50
  %515 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 6
  %516 = load i64, ptr %515, align 8, !tbaa !18
  %517 = add nsw i64 %516, 1
  %518 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %514, i64 noundef %517) #6
  store double %513, ptr %518, align 8, !tbaa !17
  %519 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 2
  %520 = load double, ptr %519, align 8, !tbaa !9
  %521 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 5
  %522 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 6
  %523 = load i64, ptr %522, align 8, !tbaa !18
  %524 = add nsw i64 %523, 1
  %525 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %521, i64 noundef %524) #6
  store double %520, ptr %525, align 8, !tbaa !17
  br label %526

526:                                              ; preds = %58
  %527 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 6
  %528 = load i64, ptr %527, align 8, !tbaa !18
  %529 = add nsw i64 %528, 1
  store i64 %529, ptr %527, align 8, !tbaa !18
  br label %54, !llvm.loop !49

530:                                              ; preds = %54
  %531 = call noundef double @_ZNK14CulhamGeometry1EEd(ptr noundef nonnull align 8 dereferenceable(80408) %3, double noundef 1.000000e+00)
  %532 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 37
  store double %531, ptr %532, align 8, !tbaa !51
  %533 = call noundef double @_ZNK14CulhamGeometry1TEd(ptr noundef nonnull align 8 dereferenceable(80408) %3, double noundef 1.000000e+00)
  %534 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 38
  store double %533, ptr %534, align 8, !tbaa !52
  %535 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 43
  store i64 0, ptr %535, align 8, !tbaa !53
  br label %536

536:                                              ; preds = %556, %530
  %537 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 43
  %538 = load i64, ptr %537, align 8, !tbaa !53
  %539 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 47
  %540 = call noundef i64 @_ZNKSt5arrayIdLm1001EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8008) %539) #7
  %541 = icmp ult i64 %538, %540
  br i1 %541, label %542, label %560

542:                                              ; preds = %536
  %543 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 47
  %544 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 43
  %545 = load i64, ptr %544, align 8, !tbaa !53
  %546 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %543, i64 noundef %545) #6
  %547 = load double, ptr %546, align 8, !tbaa !17
  %548 = fmul double 2.500000e-01, %547
  %549 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 37
  %550 = load double, ptr %549, align 8, !tbaa !51
  %551 = fdiv double %548, %550
  %552 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 47
  %553 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 43
  %554 = load i64, ptr %553, align 8, !tbaa !53
  %555 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %552, i64 noundef %554) #6
  store double %551, ptr %555, align 8, !tbaa !17
  br label %556

556:                                              ; preds = %542
  %557 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 43
  %558 = load i64, ptr %557, align 8, !tbaa !53
  %559 = add i64 %558, 1
  store i64 %559, ptr %557, align 8, !tbaa !53
  br label %536, !llvm.loop !54

560:                                              ; preds = %536
  %561 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 43
  store i64 0, ptr %561, align 8, !tbaa !53
  br label %562

562:                                              ; preds = %582, %560
  %563 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 43
  %564 = load i64, ptr %563, align 8, !tbaa !53
  %565 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 48
  %566 = call noundef i64 @_ZNKSt5arrayIdLm1001EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8008) %565) #7
  %567 = icmp ult i64 %564, %566
  br i1 %567, label %568, label %586

568:                                              ; preds = %562
  %569 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 48
  %570 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 43
  %571 = load i64, ptr %570, align 8, !tbaa !53
  %572 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %569, i64 noundef %571) #6
  %573 = load double, ptr %572, align 8, !tbaa !17
  %574 = fmul double 1.000000e-01, %573
  %575 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 38
  %576 = load double, ptr %575, align 8, !tbaa !52
  %577 = fdiv double %574, %576
  %578 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 48
  %579 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 43
  %580 = load i64, ptr %579, align 8, !tbaa !53
  %581 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %578, i64 noundef %580) #6
  store double %577, ptr %581, align 8, !tbaa !17
  br label %582

582:                                              ; preds = %568
  %583 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 43
  %584 = load i64, ptr %583, align 8, !tbaa !53
  %585 = add i64 %584, 1
  store i64 %585, ptr %583, align 8, !tbaa !53
  br label %562, !llvm.loop !55

586:                                              ; preds = %562
  %587 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 43
  store i64 0, ptr %587, align 8, !tbaa !53
  br label %588

588:                                              ; preds = %608, %586
  %589 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 43
  %590 = load i64, ptr %589, align 8, !tbaa !53
  %591 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 49
  %592 = call noundef i64 @_ZNKSt5arrayIdLm1001EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8008) %591) #7
  %593 = icmp ult i64 %590, %592
  br i1 %593, label %594, label %612

594:                                              ; preds = %588
  %595 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 49
  %596 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 43
  %597 = load i64, ptr %596, align 8, !tbaa !53
  %598 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %595, i64 noundef %597) #6
  %599 = load double, ptr %598, align 8, !tbaa !17
  %600 = fmul double 2.500000e-01, %599
  %601 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 37
  %602 = load double, ptr %601, align 8, !tbaa !51
  %603 = fdiv double %600, %602
  %604 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 49
  %605 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 43
  %606 = load i64, ptr %605, align 8, !tbaa !53
  %607 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %604, i64 noundef %606) #6
  store double %603, ptr %607, align 8, !tbaa !17
  br label %608

608:                                              ; preds = %594
  %609 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 43
  %610 = load i64, ptr %609, align 8, !tbaa !53
  %611 = add i64 %610, 1
  store i64 %611, ptr %609, align 8, !tbaa !53
  br label %588, !llvm.loop !56

612:                                              ; preds = %588
  %613 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 43
  store i64 0, ptr %613, align 8, !tbaa !53
  br label %614

614:                                              ; preds = %634, %612
  %615 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 43
  %616 = load i64, ptr %615, align 8, !tbaa !53
  %617 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 50
  %618 = call noundef i64 @_ZNKSt5arrayIdLm1001EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8008) %617) #7
  %619 = icmp ult i64 %616, %618
  br i1 %619, label %620, label %638

620:                                              ; preds = %614
  %621 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 50
  %622 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 43
  %623 = load i64, ptr %622, align 8, !tbaa !53
  %624 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %621, i64 noundef %623) #6
  %625 = load double, ptr %624, align 8, !tbaa !17
  %626 = fmul double 1.000000e-01, %625
  %627 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 38
  %628 = load double, ptr %627, align 8, !tbaa !52
  %629 = fdiv double %626, %628
  %630 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 50
  %631 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 43
  %632 = load i64, ptr %631, align 8, !tbaa !53
  %633 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %630, i64 noundef %632) #6
  store double %629, ptr %633, align 8, !tbaa !17
  br label %634

634:                                              ; preds = %620
  %635 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 43
  %636 = load i64, ptr %635, align 8, !tbaa !53
  %637 = add i64 %636, 1
  store i64 %637, ptr %635, align 8, !tbaa !53
  br label %614, !llvm.loop !57

638:                                              ; preds = %614
  %639 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 43
  store i64 0, ptr %639, align 8, !tbaa !53
  br label %640

640:                                              ; preds = %670, %638
  %641 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 43
  %642 = load i64, ptr %641, align 8, !tbaa !53
  %643 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 39
  %644 = call noundef i64 @_ZNKSt5arrayIdLm1001EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8008) %643) #7
  %645 = icmp ult i64 %642, %644
  br i1 %645, label %646, label %674

646:                                              ; preds = %640
  %647 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 5
  %648 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 43
  %649 = load i64, ptr %648, align 8, !tbaa !53
  %650 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %647, i64 noundef %649) #6
  %651 = load double, ptr %650, align 8, !tbaa !17
  %652 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 44
  %653 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 43
  %654 = load i64, ptr %653, align 8, !tbaa !53
  %655 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %652, i64 noundef %654) #6
  %656 = load double, ptr %655, align 8, !tbaa !17
  %657 = fmul double %651, %656
  %658 = fdiv double %657, 5.000000e+00
  %659 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 5
  %660 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 43
  %661 = load i64, ptr %660, align 8, !tbaa !53
  %662 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %659, i64 noundef %661) #6
  %663 = load double, ptr %662, align 8, !tbaa !17
  %664 = call noundef double @_ZNK14CulhamGeometry1qEd(ptr noundef nonnull align 8 dereferenceable(80408) %3, double noundef %663)
  %665 = fdiv double %658, %664
  %666 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 39
  %667 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 43
  %668 = load i64, ptr %667, align 8, !tbaa !53
  %669 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %666, i64 noundef %668) #6
  store double %665, ptr %669, align 8, !tbaa !17
  br label %670

670:                                              ; preds = %646
  %671 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 43
  %672 = load i64, ptr %671, align 8, !tbaa !53
  %673 = add i64 %672, 1
  store i64 %673, ptr %671, align 8, !tbaa !53
  br label %640, !llvm.loop !58

674:                                              ; preds = %640
  %675 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 43
  store i64 0, ptr %675, align 8, !tbaa !53
  br label %676

676:                                              ; preds = %726, %674
  %677 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 43
  %678 = load i64, ptr %677, align 8, !tbaa !53
  %679 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 40
  %680 = call noundef i64 @_ZNKSt5arrayIdLm1001EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8008) %679) #7
  %681 = icmp ult i64 %678, %680
  br i1 %681, label %682, label %730

682:                                              ; preds = %676
  %683 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 5
  %684 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 43
  %685 = load i64, ptr %684, align 8, !tbaa !53
  %686 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %683, i64 noundef %685) #6
  %687 = load double, ptr %686, align 8, !tbaa !17
  %688 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 39
  %689 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 43
  %690 = load i64, ptr %689, align 8, !tbaa !53
  %691 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %688, i64 noundef %690) #6
  %692 = load double, ptr %691, align 8, !tbaa !17
  %693 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 39
  %694 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 43
  %695 = load i64, ptr %694, align 8, !tbaa !53
  %696 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %693, i64 noundef %695) #6
  %697 = load double, ptr %696, align 8, !tbaa !17
  %698 = fmul double %692, %697
  %699 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 5
  %700 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 43
  %701 = load i64, ptr %700, align 8, !tbaa !53
  %702 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %699, i64 noundef %701) #6
  %703 = load double, ptr %702, align 8, !tbaa !17
  %704 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 5
  %705 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 43
  %706 = load i64, ptr %705, align 8, !tbaa !53
  %707 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %704, i64 noundef %706) #6
  %708 = load double, ptr %707, align 8, !tbaa !17
  %709 = fmul double %703, %708
  %710 = fmul double 2.000000e+00, %709
  %711 = fmul double %710, 0x3EB515370FCB41E4
  %712 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 5
  %713 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 43
  %714 = load i64, ptr %713, align 8, !tbaa !53
  %715 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %712, i64 noundef %714) #6
  %716 = load double, ptr %715, align 8, !tbaa !17
  %717 = call noundef double @_ZNK14CulhamGeometry2dpEd(ptr noundef nonnull align 8 dereferenceable(80408) %3, double noundef %716)
  %718 = fmul double %711, %717
  %719 = fdiv double %718, 1.000000e+00
  %720 = fneg double %719
  %721 = call double @llvm.fmuladd.f64(double %687, double %698, double %720)
  %722 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 40
  %723 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 43
  %724 = load i64, ptr %723, align 8, !tbaa !53
  %725 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %722, i64 noundef %724) #6
  store double %721, ptr %725, align 8, !tbaa !17
  br label %726

726:                                              ; preds = %682
  %727 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 43
  %728 = load i64, ptr %727, align 8, !tbaa !53
  %729 = add i64 %728, 1
  store i64 %729, ptr %727, align 8, !tbaa !53
  br label %676, !llvm.loop !59

730:                                              ; preds = %676
  %731 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 46
  %732 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %731, i64 noundef 0) #6
  store double 0.000000e+00, ptr %732, align 8, !tbaa !17
  %733 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 45
  %734 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %733, i64 noundef 0) #6
  store double 0.000000e+00, ptr %734, align 8, !tbaa !17
  %735 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 41
  store double 0.000000e+00, ptr %735, align 8, !tbaa !60
  %736 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 6
  store i64 1, ptr %736, align 8, !tbaa !18
  br label %737

737:                                              ; preds = %807, %730
  %738 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 6
  %739 = load i64, ptr %738, align 8, !tbaa !18
  %740 = icmp slt i64 %739, 1001
  br i1 %740, label %741, label %811

741:                                              ; preds = %737
  %742 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 3
  %743 = load double, ptr %742, align 8, !tbaa !15
  %744 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 40
  %745 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 6
  %746 = load i64, ptr %745, align 8, !tbaa !18
  %747 = sub nsw i64 %746, 1
  %748 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %744, i64 noundef %747) #6
  %749 = load double, ptr %748, align 8, !tbaa !17
  %750 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 40
  %751 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 6
  %752 = load i64, ptr %751, align 8, !tbaa !18
  %753 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %750, i64 noundef %752) #6
  %754 = load double, ptr %753, align 8, !tbaa !17
  %755 = fadd double %749, %754
  %756 = fmul double %743, %755
  %757 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 41
  %758 = load double, ptr %757, align 8, !tbaa !60
  %759 = call double @llvm.fmuladd.f64(double %756, double 5.000000e-01, double %758)
  store double %759, ptr %757, align 8, !tbaa !60
  %760 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 41
  %761 = load double, ptr %760, align 8, !tbaa !60
  %762 = fneg double %761
  %763 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 5
  %764 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 6
  %765 = load i64, ptr %764, align 8, !tbaa !18
  %766 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %763, i64 noundef %765) #6
  %767 = load double, ptr %766, align 8, !tbaa !17
  %768 = fmul double 5.000000e+00, %767
  %769 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 39
  %770 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 6
  %771 = load i64, ptr %770, align 8, !tbaa !18
  %772 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %769, i64 noundef %771) #6
  %773 = load double, ptr %772, align 8, !tbaa !17
  %774 = call double @pow(double noundef %773, double noundef 2.000000e+00) #6
  %775 = fmul double %768, %774
  %776 = fdiv double %762, %775
  %777 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 46
  %778 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 6
  %779 = load i64, ptr %778, align 8, !tbaa !18
  %780 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %777, i64 noundef %779) #6
  store double %776, ptr %780, align 8, !tbaa !17
  %781 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 45
  %782 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 6
  %783 = load i64, ptr %782, align 8, !tbaa !18
  %784 = sub nsw i64 %783, 1
  %785 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %781, i64 noundef %784) #6
  %786 = load double, ptr %785, align 8, !tbaa !17
  %787 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 3
  %788 = load double, ptr %787, align 8, !tbaa !15
  %789 = fmul double %788, 5.000000e-01
  %790 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 46
  %791 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 6
  %792 = load i64, ptr %791, align 8, !tbaa !18
  %793 = sub nsw i64 %792, 1
  %794 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %790, i64 noundef %793) #6
  %795 = load double, ptr %794, align 8, !tbaa !17
  %796 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 46
  %797 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 6
  %798 = load i64, ptr %797, align 8, !tbaa !18
  %799 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %796, i64 noundef %798) #6
  %800 = load double, ptr %799, align 8, !tbaa !17
  %801 = fadd double %795, %800
  %802 = call double @llvm.fmuladd.f64(double %789, double %801, double %786)
  %803 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 45
  %804 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 6
  %805 = load i64, ptr %804, align 8, !tbaa !18
  %806 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %803, i64 noundef %805) #6
  store double %802, ptr %806, align 8, !tbaa !17
  br label %807

807:                                              ; preds = %741
  %808 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 6
  %809 = load i64, ptr %808, align 8, !tbaa !18
  %810 = add nsw i64 %809, 1
  store i64 %810, ptr %808, align 8, !tbaa !18
  br label %737, !llvm.loop !61

811:                                              ; preds = %737
  %812 = call noundef double @_ZNK14CulhamGeometry5DeltaEd(ptr noundef nonnull align 8 dereferenceable(80408) %3, double noundef 1.000000e+00)
  %813 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 42
  store double %812, ptr %813, align 8, !tbaa !62
  %814 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 43
  store i64 0, ptr %814, align 8, !tbaa !53
  br label %815

815:                                              ; preds = %830, %811
  %816 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 43
  %817 = load i64, ptr %816, align 8, !tbaa !53
  %818 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 45
  %819 = call noundef i64 @_ZNKSt5arrayIdLm1001EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8008) %818) #7
  %820 = icmp ult i64 %817, %819
  br i1 %820, label %821, label %834

821:                                              ; preds = %815
  %822 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 42
  %823 = load double, ptr %822, align 8, !tbaa !62
  %824 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 45
  %825 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 43
  %826 = load i64, ptr %825, align 8, !tbaa !53
  %827 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %824, i64 noundef %826) #6
  %828 = load double, ptr %827, align 8, !tbaa !17
  %829 = fsub double %828, %823
  store double %829, ptr %827, align 8, !tbaa !17
  br label %830

830:                                              ; preds = %821
  %831 = getelementptr inbounds %class.CulhamGeometry, ptr %3, i32 0, i32 43
  %832 = load i64, ptr %831, align 8, !tbaa !53
  %833 = add i64 %832, 1
  store i64 %833, ptr %831, align 8, !tbaa !53
  br label %815, !llvm.loop !63

834:                                              ; preds = %815
  ret void
}

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008), i64 noundef) #3 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZNK14CulhamGeometry2dgEdd(ptr noundef nonnull align 8 dereferenceable(80408), double noundef, double noundef) #1 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZNK14CulhamGeometry12double_derivEdddddd(ptr noundef nonnull align 8 dereferenceable(80408), double noundef, double noundef, double noundef, double noundef, double noundef, double noundef) #1 align 2

; Function Attrs: mustprogress nounwind willreturn memory(none) uwtable
declare dso_local noundef i64 @_ZNKSt5arrayIdLm1001EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8008)) #4 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZNK14CulhamGeometry1qEd(ptr noundef nonnull align 8 dereferenceable(80408), double noundef) #1 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZNK14CulhamGeometry2dpEd(ptr noundef nonnull align 8 dereferenceable(80408), double noundef) #1 align 2

; Function Attrs: nounwind
declare double @pow(double noundef, double noundef) #5

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !12, i64 16}
!10 = !{!"_ZTS14CulhamGeometry", !11, i64 0, !12, i64 8, !12, i64 16, !12, i64 24, !12, i64 32, !13, i64 40, !14, i64 8048, !12, i64 8056, !12, i64 8064, !12, i64 8072, !12, i64 8080, !12, i64 8088, !12, i64 8096, !12, i64 8104, !12, i64 8112, !12, i64 8120, !12, i64 8128, !12, i64 8136, !12, i64 8144, !12, i64 8152, !12, i64 8160, !12, i64 8168, !12, i64 8176, !12, i64 8184, !12, i64 8192, !12, i64 8200, !12, i64 8208, !12, i64 8216, !12, i64 8224, !12, i64 8232, !12, i64 8240, !12, i64 8248, !12, i64 8256, !12, i64 8264, !12, i64 8272, !12, i64 8280, !12, i64 8288, !12, i64 8296, !12, i64 8304, !13, i64 8312, !13, i64 16320, !12, i64 24328, !12, i64 24336, !14, i64 24344, !13, i64 24352, !13, i64 32360, !13, i64 40368, !13, i64 48376, !13, i64 56384, !13, i64 64392, !13, i64 72400}
!11 = !{!"_ZTS14DomainGeometry"}
!12 = !{!"double", !7, i64 0}
!13 = !{!"_ZTSSt5arrayIdLm1001EE", !7, i64 0}
!14 = !{!"long", !7, i64 0}
!15 = !{!10, !12, i64 24}
!16 = !{!10, !12, i64 32}
!17 = !{!12, !12, i64 0}
!18 = !{!10, !14, i64 8048}
!19 = !{!10, !12, i64 8056}
!20 = !{!10, !12, i64 8064}
!21 = !{!10, !12, i64 8072}
!22 = !{!10, !12, i64 8080}
!23 = !{!10, !12, i64 8088}
!24 = !{!10, !12, i64 8096}
!25 = !{!10, !12, i64 8104}
!26 = !{!10, !12, i64 8112}
!27 = !{!10, !12, i64 8120}
!28 = !{!10, !12, i64 8128}
!29 = !{!10, !12, i64 8136}
!30 = !{!10, !12, i64 8144}
!31 = !{!10, !12, i64 8152}
!32 = !{!10, !12, i64 8160}
!33 = !{!10, !12, i64 8168}
!34 = !{!10, !12, i64 8176}
!35 = !{!10, !12, i64 8184}
!36 = !{!10, !12, i64 8192}
!37 = !{!10, !12, i64 8200}
!38 = !{!10, !12, i64 8208}
!39 = !{!10, !12, i64 8216}
!40 = !{!10, !12, i64 8224}
!41 = !{!10, !12, i64 8232}
!42 = !{!10, !12, i64 8240}
!43 = !{!10, !12, i64 8248}
!44 = !{!10, !12, i64 8256}
!45 = !{!10, !12, i64 8264}
!46 = !{!10, !12, i64 8272}
!47 = !{!10, !12, i64 8280}
!48 = !{!10, !12, i64 8288}
!49 = distinct !{!49, !50}
!50 = !{!"llvm.loop.mustprogress"}
!51 = !{!10, !12, i64 8296}
!52 = !{!10, !12, i64 8304}
!53 = !{!10, !14, i64 24344}
!54 = distinct !{!54, !50}
!55 = distinct !{!55, !50}
!56 = distinct !{!56, !50}
!57 = distinct !{!57, !50}
!58 = distinct !{!58, !50}
!59 = distinct !{!59, !50}
!60 = !{!10, !12, i64 24328}
!61 = distinct !{!61, !50}
!62 = !{!10, !12, i64 24336}
!63 = distinct !{!63, !50}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
define dso_local void @_ZN14CulhamGeometry18initializeGeometryEv(ptr noundef nonnull align 8 dereferenceable(80408) %0) local_unnamed_addr #2 align 2 {
  %2 = getelementptr inbounds i8, ptr %0, i64 16
  %3 = getelementptr inbounds i8, ptr %0, i64 24
  store <2 x double> <double 0.000000e+00, double 1.000000e-03>, ptr %2, align 8, !tbaa !5
  %4 = getelementptr inbounds i8, ptr %0, i64 32
  store double 5.000000e-04, ptr %4, align 8, !tbaa !9
  %5 = getelementptr inbounds i8, ptr %0, i64 24352
  %6 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %5, i64 noundef 0) #4
  store double 1.000000e+00, ptr %6, align 8, !tbaa !5
  %7 = getelementptr inbounds i8, ptr %0, i64 48376
  %8 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %7, i64 noundef 0) #4
  store double 0.000000e+00, ptr %8, align 8, !tbaa !5
  %9 = getelementptr inbounds i8, ptr %0, i64 64392
  %10 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %9, i64 noundef 0) #4
  store double 1.000000e+00, ptr %10, align 8, !tbaa !5
  %11 = getelementptr inbounds i8, ptr %0, i64 56384
  %12 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %11, i64 noundef 0) #4
  store double 0.000000e+00, ptr %12, align 8, !tbaa !5
  %13 = getelementptr inbounds i8, ptr %0, i64 72400
  %14 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %13, i64 noundef 0) #4
  store double 0.000000e+00, ptr %14, align 8, !tbaa !5
  %15 = load double, ptr %2, align 8, !tbaa !14
  %16 = getelementptr inbounds i8, ptr %0, i64 40
  %17 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %16, i64 noundef 0) #4
  store double %15, ptr %17, align 8, !tbaa !5
  %18 = load double, ptr %3, align 8, !tbaa !15
  %19 = load double, ptr %2, align 8, !tbaa !14
  %20 = fadd double %18, %19
  store double %20, ptr %2, align 8, !tbaa !14
  %21 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %16, i64 noundef 1) #4
  store double %20, ptr %21, align 8, !tbaa !5
  %22 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %5, i64 noundef 1) #4
  store double 1.000000e+00, ptr %22, align 8, !tbaa !5
  %23 = load double, ptr %2, align 8, !tbaa !14
  %24 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %7, i64 noundef 1) #4
  store double %23, ptr %24, align 8, !tbaa !5
  %25 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %9, i64 noundef 1) #4
  store double 1.000000e+00, ptr %25, align 8, !tbaa !5
  %26 = load double, ptr %2, align 8, !tbaa !14
  %27 = fmul double %26, %26
  %28 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %11, i64 noundef 1) #4
  store double %27, ptr %28, align 8, !tbaa !5
  %29 = load double, ptr %2, align 8, !tbaa !14
  %30 = fmul double %29, 2.000000e+00
  %31 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %13, i64 noundef 1) #4
  store double %30, ptr %31, align 8, !tbaa !5
  %32 = getelementptr inbounds i8, ptr %0, i64 8048
  store i64 1, ptr %32, align 8, !tbaa !16
  %33 = getelementptr inbounds i8, ptr %0, i64 8056
  %34 = getelementptr inbounds i8, ptr %0, i64 8064
  %35 = getelementptr inbounds i8, ptr %0, i64 8072
  %36 = getelementptr inbounds i8, ptr %0, i64 8080
  %37 = getelementptr inbounds i8, ptr %0, i64 8088
  %38 = getelementptr inbounds i8, ptr %0, i64 8096
  %39 = getelementptr inbounds i8, ptr %0, i64 8104
  %40 = getelementptr inbounds i8, ptr %0, i64 8112
  %41 = getelementptr inbounds i8, ptr %0, i64 8120
  %42 = getelementptr inbounds i8, ptr %0, i64 8128
  %43 = getelementptr inbounds i8, ptr %0, i64 8136
  %44 = getelementptr inbounds i8, ptr %0, i64 8144
  %45 = getelementptr inbounds i8, ptr %0, i64 8152
  %46 = getelementptr inbounds i8, ptr %0, i64 8160
  %47 = getelementptr inbounds i8, ptr %0, i64 8168
  %48 = getelementptr inbounds i8, ptr %0, i64 8176
  %49 = getelementptr inbounds i8, ptr %0, i64 8184
  %50 = getelementptr inbounds i8, ptr %0, i64 8192
  %51 = getelementptr inbounds i8, ptr %0, i64 8200
  %52 = getelementptr inbounds i8, ptr %0, i64 8208
  %53 = getelementptr inbounds i8, ptr %0, i64 8216
  %54 = getelementptr inbounds i8, ptr %0, i64 8224
  %55 = getelementptr inbounds i8, ptr %0, i64 8232
  %56 = getelementptr inbounds i8, ptr %0, i64 8240
  %57 = getelementptr inbounds i8, ptr %0, i64 8248
  %58 = getelementptr inbounds i8, ptr %0, i64 8256
  %59 = getelementptr inbounds i8, ptr %0, i64 8264
  %60 = getelementptr inbounds i8, ptr %0, i64 8272
  %61 = getelementptr inbounds i8, ptr %0, i64 8280
  %62 = getelementptr inbounds i8, ptr %0, i64 8288
  br label %63

63:                                               ; preds = %1, %63
  %storemerge22 = phi i64 [ 1, %1 ], [ %326, %63 ]
  %64 = load double, ptr %2, align 8, !tbaa !14
  %65 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %5, i64 noundef %storemerge22) #4
  %66 = load double, ptr %65, align 8, !tbaa !5
  %67 = tail call noundef double @_ZNK14CulhamGeometry2dgEdd(ptr noundef nonnull align 8 dereferenceable(80408) %0, double noundef %64, double noundef %66)
  store double %67, ptr %33, align 8, !tbaa !17
  %68 = load i64, ptr %32, align 8, !tbaa !16
  %69 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %9, i64 noundef %68) #4
  %70 = load double, ptr %69, align 8, !tbaa !5
  store double %70, ptr %34, align 8, !tbaa !18
  %71 = load i64, ptr %32, align 8, !tbaa !16
  %72 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %13, i64 noundef %71) #4
  %73 = load double, ptr %72, align 8, !tbaa !5
  store double %73, ptr %35, align 8, !tbaa !19
  %74 = load double, ptr %2, align 8, !tbaa !14
  %75 = load i64, ptr %32, align 8, !tbaa !16
  %76 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %5, i64 noundef %75) #4
  %77 = load double, ptr %76, align 8, !tbaa !5
  %78 = load double, ptr %33, align 8, !tbaa !17
  %79 = load i64, ptr %32, align 8, !tbaa !16
  %80 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %7, i64 noundef %79) #4
  %81 = load double, ptr %80, align 8, !tbaa !5
  %82 = load i64, ptr %32, align 8, !tbaa !16
  %83 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %9, i64 noundef %82) #4
  %84 = load double, ptr %83, align 8, !tbaa !5
  %85 = tail call noundef double @_ZNK14CulhamGeometry12double_derivEdddddd(ptr noundef nonnull align 8 dereferenceable(80408) %0, double noundef %74, double noundef 3.000000e+00, double noundef %77, double noundef %78, double noundef %81, double noundef %84)
  store double %85, ptr %36, align 8, !tbaa !20
  %86 = load double, ptr %2, align 8, !tbaa !14
  %87 = load i64, ptr %32, align 8, !tbaa !16
  %88 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %5, i64 noundef %87) #4
  %89 = load double, ptr %88, align 8, !tbaa !5
  %90 = load double, ptr %33, align 8, !tbaa !17
  %91 = load i64, ptr %32, align 8, !tbaa !16
  %92 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %11, i64 noundef %91) #4
  %93 = load double, ptr %92, align 8, !tbaa !5
  %94 = load i64, ptr %32, align 8, !tbaa !16
  %95 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %13, i64 noundef %94) #4
  %96 = load double, ptr %95, align 8, !tbaa !5
  %97 = tail call noundef double @_ZNK14CulhamGeometry12double_derivEdddddd(ptr noundef nonnull align 8 dereferenceable(80408) %0, double noundef %86, double noundef 8.000000e+00, double noundef %89, double noundef %90, double noundef %93, double noundef %96)
  store double %97, ptr %37, align 8, !tbaa !21
  %98 = load double, ptr %2, align 8, !tbaa !14
  %99 = load double, ptr %4, align 8, !tbaa !9
  %100 = fadd double %98, %99
  store double %100, ptr %38, align 8, !tbaa !22
  %101 = load i64, ptr %32, align 8, !tbaa !16
  %102 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %5, i64 noundef %101) #4
  %103 = load double, ptr %102, align 8, !tbaa !5
  %104 = load double, ptr %4, align 8, !tbaa !9
  %105 = load double, ptr %33, align 8, !tbaa !17
  %106 = tail call double @llvm.fmuladd.f64(double %104, double %105, double %103)
  store double %106, ptr %39, align 8, !tbaa !23
  %107 = load double, ptr %38, align 8, !tbaa !22
  %108 = tail call noundef double @_ZNK14CulhamGeometry2dgEdd(ptr noundef nonnull align 8 dereferenceable(80408) %0, double noundef %107, double noundef %106)
  store double %108, ptr %40, align 8, !tbaa !24
  %109 = load i64, ptr %32, align 8, !tbaa !16
  %110 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %7, i64 noundef %109) #4
  %111 = load double, ptr %110, align 8, !tbaa !5
  %112 = load double, ptr %34, align 8, !tbaa !18
  %113 = load double, ptr %4, align 8, !tbaa !9
  %114 = tail call double @llvm.fmuladd.f64(double %112, double %113, double %111)
  store double %114, ptr %41, align 8, !tbaa !25
  %115 = load i64, ptr %32, align 8, !tbaa !16
  %116 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %11, i64 noundef %115) #4
  %117 = load double, ptr %116, align 8, !tbaa !5
  %118 = load double, ptr %35, align 8, !tbaa !19
  %119 = load double, ptr %4, align 8, !tbaa !9
  %120 = tail call double @llvm.fmuladd.f64(double %118, double %119, double %117)
  store double %120, ptr %42, align 8, !tbaa !26
  %121 = load i64, ptr %32, align 8, !tbaa !16
  %122 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %9, i64 noundef %121) #4
  %123 = load double, ptr %122, align 8, !tbaa !5
  %124 = load double, ptr %36, align 8, !tbaa !20
  %125 = load double, ptr %4, align 8, !tbaa !9
  %126 = tail call double @llvm.fmuladd.f64(double %124, double %125, double %123)
  store double %126, ptr %43, align 8, !tbaa !27
  %127 = load i64, ptr %32, align 8, !tbaa !16
  %128 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %13, i64 noundef %127) #4
  %129 = load double, ptr %128, align 8, !tbaa !5
  %130 = load double, ptr %37, align 8, !tbaa !21
  %131 = load double, ptr %4, align 8, !tbaa !9
  %132 = tail call double @llvm.fmuladd.f64(double %130, double %131, double %129)
  store double %132, ptr %44, align 8, !tbaa !28
  %133 = load double, ptr %38, align 8, !tbaa !22
  %134 = load double, ptr %39, align 8, !tbaa !23
  %135 = load double, ptr %40, align 8, !tbaa !24
  %136 = load double, ptr %41, align 8, !tbaa !25
  %137 = load double, ptr %43, align 8, !tbaa !27
  %138 = tail call noundef double @_ZNK14CulhamGeometry12double_derivEdddddd(ptr noundef nonnull align 8 dereferenceable(80408) %0, double noundef %133, double noundef 3.000000e+00, double noundef %134, double noundef %135, double noundef %136, double noundef %137)
  store double %138, ptr %45, align 8, !tbaa !29
  %139 = load double, ptr %38, align 8, !tbaa !22
  %140 = load double, ptr %39, align 8, !tbaa !23
  %141 = load double, ptr %40, align 8, !tbaa !24
  %142 = load double, ptr %42, align 8, !tbaa !26
  %143 = load double, ptr %44, align 8, !tbaa !28
  %144 = tail call noundef double @_ZNK14CulhamGeometry12double_derivEdddddd(ptr noundef nonnull align 8 dereferenceable(80408) %0, double noundef %139, double noundef 8.000000e+00, double noundef %140, double noundef %141, double noundef %142, double noundef %143)
  store double %144, ptr %46, align 8, !tbaa !30
  %145 = load i64, ptr %32, align 8, !tbaa !16
  %146 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %5, i64 noundef %145) #4
  %147 = load double, ptr %146, align 8, !tbaa !5
  %148 = load double, ptr %4, align 8, !tbaa !9
  %149 = load double, ptr %40, align 8, !tbaa !24
  %150 = tail call double @llvm.fmuladd.f64(double %148, double %149, double %147)
  store double %150, ptr %47, align 8, !tbaa !31
  %151 = load double, ptr %38, align 8, !tbaa !22
  %152 = tail call noundef double @_ZNK14CulhamGeometry2dgEdd(ptr noundef nonnull align 8 dereferenceable(80408) %0, double noundef %151, double noundef %150)
  store double %152, ptr %48, align 8, !tbaa !32
  %153 = load i64, ptr %32, align 8, !tbaa !16
  %154 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %7, i64 noundef %153) #4
  %155 = load double, ptr %154, align 8, !tbaa !5
  %156 = load double, ptr %43, align 8, !tbaa !27
  %157 = load double, ptr %4, align 8, !tbaa !9
  %158 = tail call double @llvm.fmuladd.f64(double %156, double %157, double %155)
  store double %158, ptr %49, align 8, !tbaa !33
  %159 = load i64, ptr %32, align 8, !tbaa !16
  %160 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %11, i64 noundef %159) #4
  %161 = load double, ptr %160, align 8, !tbaa !5
  %162 = load double, ptr %44, align 8, !tbaa !28
  %163 = load double, ptr %4, align 8, !tbaa !9
  %164 = tail call double @llvm.fmuladd.f64(double %162, double %163, double %161)
  store double %164, ptr %50, align 8, !tbaa !34
  %165 = load i64, ptr %32, align 8, !tbaa !16
  %166 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %9, i64 noundef %165) #4
  %167 = load double, ptr %166, align 8, !tbaa !5
  %168 = load double, ptr %45, align 8, !tbaa !29
  %169 = load double, ptr %4, align 8, !tbaa !9
  %170 = tail call double @llvm.fmuladd.f64(double %168, double %169, double %167)
  store double %170, ptr %51, align 8, !tbaa !35
  %171 = load i64, ptr %32, align 8, !tbaa !16
  %172 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %13, i64 noundef %171) #4
  %173 = load double, ptr %172, align 8, !tbaa !5
  %174 = load double, ptr %46, align 8, !tbaa !30
  %175 = load double, ptr %4, align 8, !tbaa !9
  %176 = tail call double @llvm.fmuladd.f64(double %174, double %175, double %173)
  store double %176, ptr %52, align 8, !tbaa !36
  %177 = load double, ptr %38, align 8, !tbaa !22
  %178 = load double, ptr %47, align 8, !tbaa !31
  %179 = load double, ptr %48, align 8, !tbaa !32
  %180 = load double, ptr %49, align 8, !tbaa !33
  %181 = load double, ptr %51, align 8, !tbaa !35
  %182 = tail call noundef double @_ZNK14CulhamGeometry12double_derivEdddddd(ptr noundef nonnull align 8 dereferenceable(80408) %0, double noundef %177, double noundef 3.000000e+00, double noundef %178, double noundef %179, double noundef %180, double noundef %181)
  store double %182, ptr %53, align 8, !tbaa !37
  %183 = load double, ptr %38, align 8, !tbaa !22
  %184 = load double, ptr %47, align 8, !tbaa !31
  %185 = load double, ptr %48, align 8, !tbaa !32
  %186 = load double, ptr %50, align 8, !tbaa !34
  %187 = load double, ptr %52, align 8, !tbaa !36
  %188 = tail call noundef double @_ZNK14CulhamGeometry12double_derivEdddddd(ptr noundef nonnull align 8 dereferenceable(80408) %0, double noundef %183, double noundef 8.000000e+00, double noundef %184, double noundef %185, double noundef %186, double noundef %187)
  store double %188, ptr %54, align 8, !tbaa !38
  %189 = load double, ptr %2, align 8, !tbaa !14
  %190 = load double, ptr %3, align 8, !tbaa !15
  %191 = fadd double %189, %190
  store double %191, ptr %2, align 8, !tbaa !14
  %192 = load i64, ptr %32, align 8, !tbaa !16
  %193 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %5, i64 noundef %192) #4
  %194 = load double, ptr %193, align 8, !tbaa !5
  %195 = load double, ptr %3, align 8, !tbaa !15
  %196 = load double, ptr %48, align 8, !tbaa !32
  %197 = tail call double @llvm.fmuladd.f64(double %195, double %196, double %194)
  store double %197, ptr %55, align 8, !tbaa !39
  %198 = load double, ptr %2, align 8, !tbaa !14
  %199 = tail call noundef double @_ZNK14CulhamGeometry2dgEdd(ptr noundef nonnull align 8 dereferenceable(80408) %0, double noundef %198, double noundef %197)
  store double %199, ptr %56, align 8, !tbaa !40
  %200 = load i64, ptr %32, align 8, !tbaa !16
  %201 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %7, i64 noundef %200) #4
  %202 = load double, ptr %201, align 8, !tbaa !5
  %203 = load double, ptr %51, align 8, !tbaa !35
  %204 = load double, ptr %3, align 8, !tbaa !15
  %205 = tail call double @llvm.fmuladd.f64(double %203, double %204, double %202)
  store double %205, ptr %57, align 8, !tbaa !41
  %206 = load i64, ptr %32, align 8, !tbaa !16
  %207 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %11, i64 noundef %206) #4
  %208 = load double, ptr %207, align 8, !tbaa !5
  %209 = load double, ptr %52, align 8, !tbaa !36
  %210 = load double, ptr %3, align 8, !tbaa !15
  %211 = tail call double @llvm.fmuladd.f64(double %209, double %210, double %208)
  store double %211, ptr %58, align 8, !tbaa !42
  %212 = load i64, ptr %32, align 8, !tbaa !16
  %213 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %9, i64 noundef %212) #4
  %214 = load double, ptr %213, align 8, !tbaa !5
  %215 = load double, ptr %53, align 8, !tbaa !37
  %216 = load double, ptr %3, align 8, !tbaa !15
  %217 = tail call double @llvm.fmuladd.f64(double %215, double %216, double %214)
  store double %217, ptr %59, align 8, !tbaa !43
  %218 = load i64, ptr %32, align 8, !tbaa !16
  %219 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %13, i64 noundef %218) #4
  %220 = load double, ptr %219, align 8, !tbaa !5
  %221 = load double, ptr %54, align 8, !tbaa !38
  %222 = load double, ptr %3, align 8, !tbaa !15
  %223 = tail call double @llvm.fmuladd.f64(double %221, double %222, double %220)
  store double %223, ptr %60, align 8, !tbaa !44
  %224 = load double, ptr %2, align 8, !tbaa !14
  %225 = load double, ptr %55, align 8, !tbaa !39
  %226 = load double, ptr %56, align 8, !tbaa !40
  %227 = load double, ptr %57, align 8, !tbaa !41
  %228 = load double, ptr %59, align 8, !tbaa !43
  %229 = tail call noundef double @_ZNK14CulhamGeometry12double_derivEdddddd(ptr noundef nonnull align 8 dereferenceable(80408) %0, double noundef %224, double noundef 3.000000e+00, double noundef %225, double noundef %226, double noundef %227, double noundef %228)
  store double %229, ptr %61, align 8, !tbaa !45
  %230 = load double, ptr %2, align 8, !tbaa !14
  %231 = load double, ptr %55, align 8, !tbaa !39
  %232 = load double, ptr %56, align 8, !tbaa !40
  %233 = load double, ptr %58, align 8, !tbaa !42
  %234 = load double, ptr %60, align 8, !tbaa !44
  %235 = tail call noundef double @_ZNK14CulhamGeometry12double_derivEdddddd(ptr noundef nonnull align 8 dereferenceable(80408) %0, double noundef %230, double noundef 8.000000e+00, double noundef %231, double noundef %232, double noundef %233, double noundef %234)
  store double %235, ptr %62, align 8, !tbaa !46
  %236 = load i64, ptr %32, align 8, !tbaa !16
  %237 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %5, i64 noundef %236) #4
  %238 = load double, ptr %237, align 8, !tbaa !5
  %239 = load double, ptr %3, align 8, !tbaa !15
  %240 = load double, ptr %33, align 8, !tbaa !17
  %241 = load double, ptr %40, align 8, !tbaa !24
  %242 = tail call double @llvm.fmuladd.f64(double %241, double 2.000000e+00, double %240)
  %243 = load double, ptr %48, align 8, !tbaa !32
  %244 = tail call double @llvm.fmuladd.f64(double %243, double 2.000000e+00, double %242)
  %245 = load double, ptr %56, align 8, !tbaa !40
  %246 = fadd double %244, %245
  %247 = fmul double %239, %246
  %248 = fdiv double %247, 6.000000e+00
  %249 = fadd double %238, %248
  %250 = load i64, ptr %32, align 8, !tbaa !16
  %251 = add nsw i64 %250, 1
  %252 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %5, i64 noundef %251) #4
  store double %249, ptr %252, align 8, !tbaa !5
  %253 = load i64, ptr %32, align 8, !tbaa !16
  %254 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %7, i64 noundef %253) #4
  %255 = load double, ptr %254, align 8, !tbaa !5
  %256 = load double, ptr %3, align 8, !tbaa !15
  %257 = load double, ptr %34, align 8, !tbaa !18
  %258 = load double, ptr %43, align 8, !tbaa !27
  %259 = tail call double @llvm.fmuladd.f64(double %258, double 2.000000e+00, double %257)
  %260 = load double, ptr %51, align 8, !tbaa !35
  %261 = tail call double @llvm.fmuladd.f64(double %260, double 2.000000e+00, double %259)
  %262 = load double, ptr %59, align 8, !tbaa !43
  %263 = fadd double %261, %262
  %264 = fmul double %256, %263
  %265 = fdiv double %264, 6.000000e+00
  %266 = fadd double %255, %265
  %267 = load i64, ptr %32, align 8, !tbaa !16
  %268 = add nsw i64 %267, 1
  %269 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %7, i64 noundef %268) #4
  store double %266, ptr %269, align 8, !tbaa !5
  %270 = load i64, ptr %32, align 8, !tbaa !16
  %271 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %11, i64 noundef %270) #4
  %272 = load double, ptr %271, align 8, !tbaa !5
  %273 = load double, ptr %3, align 8, !tbaa !15
  %274 = load double, ptr %35, align 8, !tbaa !19
  %275 = load double, ptr %44, align 8, !tbaa !28
  %276 = tail call double @llvm.fmuladd.f64(double %275, double 2.000000e+00, double %274)
  %277 = load double, ptr %52, align 8, !tbaa !36
  %278 = tail call double @llvm.fmuladd.f64(double %277, double 2.000000e+00, double %276)
  %279 = load double, ptr %60, align 8, !tbaa !44
  %280 = fadd double %278, %279
  %281 = fmul double %273, %280
  %282 = fdiv double %281, 6.000000e+00
  %283 = fadd double %272, %282
  %284 = load i64, ptr %32, align 8, !tbaa !16
  %285 = add nsw i64 %284, 1
  %286 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %11, i64 noundef %285) #4
  store double %283, ptr %286, align 8, !tbaa !5
  %287 = load i64, ptr %32, align 8, !tbaa !16
  %288 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %9, i64 noundef %287) #4
  %289 = load double, ptr %288, align 8, !tbaa !5
  %290 = load double, ptr %3, align 8, !tbaa !15
  %291 = load double, ptr %36, align 8, !tbaa !20
  %292 = load double, ptr %45, align 8, !tbaa !29
  %293 = tail call double @llvm.fmuladd.f64(double %292, double 2.000000e+00, double %291)
  %294 = load double, ptr %53, align 8, !tbaa !37
  %295 = tail call double @llvm.fmuladd.f64(double %294, double 2.000000e+00, double %293)
  %296 = load double, ptr %61, align 8, !tbaa !45
  %297 = fadd double %295, %296
  %298 = fmul double %290, %297
  %299 = fdiv double %298, 6.000000e+00
  %300 = fadd double %289, %299
  %301 = load i64, ptr %32, align 8, !tbaa !16
  %302 = add nsw i64 %301, 1
  %303 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %9, i64 noundef %302) #4
  store double %300, ptr %303, align 8, !tbaa !5
  %304 = load i64, ptr %32, align 8, !tbaa !16
  %305 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %13, i64 noundef %304) #4
  %306 = load double, ptr %305, align 8, !tbaa !5
  %307 = load double, ptr %3, align 8, !tbaa !15
  %308 = load double, ptr %37, align 8, !tbaa !21
  %309 = load double, ptr %46, align 8, !tbaa !30
  %310 = tail call double @llvm.fmuladd.f64(double %309, double 2.000000e+00, double %308)
  %311 = load double, ptr %54, align 8, !tbaa !38
  %312 = tail call double @llvm.fmuladd.f64(double %311, double 2.000000e+00, double %310)
  %313 = load double, ptr %62, align 8, !tbaa !46
  %314 = fadd double %312, %313
  %315 = fmul double %307, %314
  %316 = fdiv double %315, 6.000000e+00
  %317 = fadd double %306, %316
  %318 = load i64, ptr %32, align 8, !tbaa !16
  %319 = add nsw i64 %318, 1
  %320 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %13, i64 noundef %319) #4
  store double %317, ptr %320, align 8, !tbaa !5
  %321 = load double, ptr %2, align 8, !tbaa !14
  %322 = load i64, ptr %32, align 8, !tbaa !16
  %323 = add nsw i64 %322, 1
  %324 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %16, i64 noundef %323) #4
  store double %321, ptr %324, align 8, !tbaa !5
  %325 = load i64, ptr %32, align 8, !tbaa !16
  %326 = add nsw i64 %325, 1
  store i64 %326, ptr %32, align 8, !tbaa !16
  %327 = icmp slt i64 %325, 999
  br i1 %327, label %63, label %328, !llvm.loop !47

328:                                              ; preds = %63
  %329 = tail call noundef double @_ZNK14CulhamGeometry1EEd(ptr noundef nonnull align 8 dereferenceable(80408) %0, double noundef 1.000000e+00)
  %330 = getelementptr inbounds i8, ptr %0, i64 8296
  store double %329, ptr %330, align 8, !tbaa !49
  %331 = tail call noundef double @_ZNK14CulhamGeometry1TEd(ptr noundef nonnull align 8 dereferenceable(80408) %0, double noundef 1.000000e+00)
  %332 = getelementptr inbounds i8, ptr %0, i64 8304
  store double %331, ptr %332, align 8, !tbaa !50
  %333 = getelementptr inbounds i8, ptr %0, i64 24344
  %334 = tail call noundef i64 @_ZNKSt5arrayIdLm1001EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8008) %7) #5
  store i64 0, ptr %333, align 8, !tbaa !51
  %.not = icmp eq i64 %334, 0
  br i1 %.not, label %.preheader20, label %.lr.ph

.preheader20:                                     ; preds = %.lr.ph, %328
  %335 = tail call noundef i64 @_ZNKSt5arrayIdLm1001EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8008) %11) #5
  store i64 0, ptr %333, align 8, !tbaa !51
  %.not40 = icmp eq i64 %335, 0
  br i1 %.not40, label %.preheader19, label %.lr.ph25

.lr.ph:                                           ; preds = %328, %.lr.ph
  %storemerge923 = phi i64 [ %344, %.lr.ph ], [ 0, %328 ]
  %336 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %7, i64 noundef %storemerge923) #4
  %337 = load double, ptr %336, align 8, !tbaa !5
  %338 = fmul double %337, 2.500000e-01
  %339 = load double, ptr %330, align 8, !tbaa !49
  %340 = fdiv double %338, %339
  %341 = load i64, ptr %333, align 8, !tbaa !51
  %342 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %7, i64 noundef %341) #4
  store double %340, ptr %342, align 8, !tbaa !5
  %343 = load i64, ptr %333, align 8, !tbaa !51
  %344 = add i64 %343, 1
  store i64 %344, ptr %333, align 8, !tbaa !51
  %345 = icmp ult i64 %344, %334
  br i1 %345, label %.lr.ph, label %.preheader20, !llvm.loop !52

.preheader19:                                     ; preds = %.lr.ph25, %.preheader20
  %346 = tail call noundef i64 @_ZNKSt5arrayIdLm1001EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8008) %9) #5
  store i64 0, ptr %333, align 8, !tbaa !51
  %.not41 = icmp eq i64 %346, 0
  br i1 %.not41, label %.preheader18, label %.lr.ph27

.lr.ph25:                                         ; preds = %.preheader20, %.lr.ph25
  %storemerge1024 = phi i64 [ %355, %.lr.ph25 ], [ 0, %.preheader20 ]
  %347 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %11, i64 noundef %storemerge1024) #4
  %348 = load double, ptr %347, align 8, !tbaa !5
  %349 = fmul double %348, 1.000000e-01
  %350 = load double, ptr %332, align 8, !tbaa !50
  %351 = fdiv double %349, %350
  %352 = load i64, ptr %333, align 8, !tbaa !51
  %353 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %11, i64 noundef %352) #4
  store double %351, ptr %353, align 8, !tbaa !5
  %354 = load i64, ptr %333, align 8, !tbaa !51
  %355 = add i64 %354, 1
  store i64 %355, ptr %333, align 8, !tbaa !51
  %356 = icmp ult i64 %355, %335
  br i1 %356, label %.lr.ph25, label %.preheader19, !llvm.loop !53

.preheader18:                                     ; preds = %.lr.ph27, %.preheader19
  %357 = tail call noundef i64 @_ZNKSt5arrayIdLm1001EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8008) %13) #5
  store i64 0, ptr %333, align 8, !tbaa !51
  %.not42 = icmp eq i64 %357, 0
  br i1 %.not42, label %.preheader17, label %.lr.ph29

.lr.ph27:                                         ; preds = %.preheader19, %.lr.ph27
  %storemerge1126 = phi i64 [ %366, %.lr.ph27 ], [ 0, %.preheader19 ]
  %358 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %9, i64 noundef %storemerge1126) #4
  %359 = load double, ptr %358, align 8, !tbaa !5
  %360 = fmul double %359, 2.500000e-01
  %361 = load double, ptr %330, align 8, !tbaa !49
  %362 = fdiv double %360, %361
  %363 = load i64, ptr %333, align 8, !tbaa !51
  %364 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %9, i64 noundef %363) #4
  store double %362, ptr %364, align 8, !tbaa !5
  %365 = load i64, ptr %333, align 8, !tbaa !51
  %366 = add i64 %365, 1
  store i64 %366, ptr %333, align 8, !tbaa !51
  %367 = icmp ult i64 %366, %346
  br i1 %367, label %.lr.ph27, label %.preheader18, !llvm.loop !54

.preheader17:                                     ; preds = %.lr.ph29, %.preheader18
  %368 = getelementptr inbounds i8, ptr %0, i64 8312
  %369 = tail call noundef i64 @_ZNKSt5arrayIdLm1001EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8008) %368) #5
  store i64 0, ptr %333, align 8, !tbaa !51
  %.not43 = icmp eq i64 %369, 0
  br i1 %.not43, label %.preheader, label %.lr.ph31

.lr.ph29:                                         ; preds = %.preheader18, %.lr.ph29
  %storemerge1228 = phi i64 [ %378, %.lr.ph29 ], [ 0, %.preheader18 ]
  %370 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %13, i64 noundef %storemerge1228) #4
  %371 = load double, ptr %370, align 8, !tbaa !5
  %372 = fmul double %371, 1.000000e-01
  %373 = load double, ptr %332, align 8, !tbaa !50
  %374 = fdiv double %372, %373
  %375 = load i64, ptr %333, align 8, !tbaa !51
  %376 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %13, i64 noundef %375) #4
  store double %374, ptr %376, align 8, !tbaa !5
  %377 = load i64, ptr %333, align 8, !tbaa !51
  %378 = add i64 %377, 1
  store i64 %378, ptr %333, align 8, !tbaa !51
  %379 = icmp ult i64 %378, %357
  br i1 %379, label %.lr.ph29, label %.preheader17, !llvm.loop !55

.preheader:                                       ; preds = %.lr.ph31, %.preheader17
  %380 = getelementptr inbounds i8, ptr %0, i64 16320
  %381 = tail call noundef i64 @_ZNKSt5arrayIdLm1001EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8008) %380) #5
  store i64 0, ptr %333, align 8, !tbaa !51
  %.not44 = icmp eq i64 %381, 0
  br i1 %.not44, label %._crit_edge, label %.lr.ph33

.lr.ph31:                                         ; preds = %.preheader17, %.lr.ph31
  %storemerge1330 = phi i64 [ %397, %.lr.ph31 ], [ 0, %.preheader17 ]
  %382 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %16, i64 noundef %storemerge1330) #4
  %383 = load double, ptr %382, align 8, !tbaa !5
  %384 = load i64, ptr %333, align 8, !tbaa !51
  %385 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %5, i64 noundef %384) #4
  %386 = load double, ptr %385, align 8, !tbaa !5
  %387 = fmul double %383, %386
  %388 = fdiv double %387, 5.000000e+00
  %389 = load i64, ptr %333, align 8, !tbaa !51
  %390 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %16, i64 noundef %389) #4
  %391 = load double, ptr %390, align 8, !tbaa !5
  %392 = tail call noundef double @_ZNK14CulhamGeometry1qEd(ptr noundef nonnull align 8 dereferenceable(80408) %0, double noundef %391)
  %393 = fdiv double %388, %392
  %394 = load i64, ptr %333, align 8, !tbaa !51
  %395 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %368, i64 noundef %394) #4
  store double %393, ptr %395, align 8, !tbaa !5
  %396 = load i64, ptr %333, align 8, !tbaa !51
  %397 = add i64 %396, 1
  store i64 %397, ptr %333, align 8, !tbaa !51
  %398 = icmp ult i64 %397, %369
  br i1 %398, label %.lr.ph31, label %.preheader, !llvm.loop !56

.lr.ph33:                                         ; preds = %.preheader, %.lr.ph33
  %storemerge1432 = phi i64 [ %426, %.lr.ph33 ], [ 0, %.preheader ]
  %399 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %16, i64 noundef %storemerge1432) #4
  %400 = load double, ptr %399, align 8, !tbaa !5
  %401 = load i64, ptr %333, align 8, !tbaa !51
  %402 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %368, i64 noundef %401) #4
  %403 = load double, ptr %402, align 8, !tbaa !5
  %404 = load i64, ptr %333, align 8, !tbaa !51
  %405 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %368, i64 noundef %404) #4
  %406 = load double, ptr %405, align 8, !tbaa !5
  %407 = fmul double %403, %406
  %408 = load i64, ptr %333, align 8, !tbaa !51
  %409 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %16, i64 noundef %408) #4
  %410 = load double, ptr %409, align 8, !tbaa !5
  %411 = load i64, ptr %333, align 8, !tbaa !51
  %412 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %16, i64 noundef %411) #4
  %413 = load double, ptr %412, align 8, !tbaa !5
  %414 = fmul double %410, %413
  %415 = fmul double %414, 2.000000e+00
  %416 = load i64, ptr %333, align 8, !tbaa !51
  %417 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %16, i64 noundef %416) #4
  %418 = load double, ptr %417, align 8, !tbaa !5
  %419 = tail call noundef double @_ZNK14CulhamGeometry2dpEd(ptr noundef nonnull align 8 dereferenceable(80408) %0, double noundef %418)
  %420 = fmul double %415, 0xBEB515370FCB41E4
  %421 = fmul double %420, %419
  %422 = tail call double @llvm.fmuladd.f64(double %400, double %407, double %421)
  %423 = load i64, ptr %333, align 8, !tbaa !51
  %424 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %380, i64 noundef %423) #4
  store double %422, ptr %424, align 8, !tbaa !5
  %425 = load i64, ptr %333, align 8, !tbaa !51
  %426 = add i64 %425, 1
  store i64 %426, ptr %333, align 8, !tbaa !51
  %427 = icmp ult i64 %426, %381
  br i1 %427, label %.lr.ph33, label %._crit_edge, !llvm.loop !57

._crit_edge:                                      ; preds = %.lr.ph33, %.preheader
  %428 = getelementptr inbounds i8, ptr %0, i64 40368
  %429 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %428, i64 noundef 0) #4
  store double 0.000000e+00, ptr %429, align 8, !tbaa !5
  %430 = getelementptr inbounds i8, ptr %0, i64 32360
  %431 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %430, i64 noundef 0) #4
  store double 0.000000e+00, ptr %431, align 8, !tbaa !5
  %432 = getelementptr inbounds i8, ptr %0, i64 24328
  store double 0.000000e+00, ptr %432, align 8, !tbaa !58
  store i64 1, ptr %32, align 8, !tbaa !16
  br label %433

433:                                              ; preds = %._crit_edge, %433
  %storemerge1535 = phi i64 [ 0, %._crit_edge ], [ %473, %433 ]
  %434 = load double, ptr %3, align 8, !tbaa !15
  %435 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %380, i64 noundef %storemerge1535) #4
  %436 = load double, ptr %435, align 8, !tbaa !5
  %437 = load i64, ptr %32, align 8, !tbaa !16
  %438 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %380, i64 noundef %437) #4
  %439 = load double, ptr %438, align 8, !tbaa !5
  %440 = fadd double %436, %439
  %441 = fmul double %434, %440
  %442 = load double, ptr %432, align 8, !tbaa !58
  %443 = tail call double @llvm.fmuladd.f64(double %441, double 5.000000e-01, double %442)
  store double %443, ptr %432, align 8, !tbaa !58
  %444 = fneg double %443
  %445 = load i64, ptr %32, align 8, !tbaa !16
  %446 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %16, i64 noundef %445) #4
  %447 = load double, ptr %446, align 8, !tbaa !5
  %448 = fmul double %447, 5.000000e+00
  %449 = load i64, ptr %32, align 8, !tbaa !16
  %450 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %368, i64 noundef %449) #4
  %451 = load double, ptr %450, align 8, !tbaa !5
  %square = fmul double %451, %451
  %452 = fmul double %448, %square
  %453 = fdiv double %444, %452
  %454 = load i64, ptr %32, align 8, !tbaa !16
  %455 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %428, i64 noundef %454) #4
  store double %453, ptr %455, align 8, !tbaa !5
  %456 = load i64, ptr %32, align 8, !tbaa !16
  %457 = add nsw i64 %456, -1
  %458 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %430, i64 noundef %457) #4
  %459 = load double, ptr %458, align 8, !tbaa !5
  %460 = load double, ptr %3, align 8, !tbaa !15
  %461 = fmul double %460, 5.000000e-01
  %462 = load i64, ptr %32, align 8, !tbaa !16
  %463 = add nsw i64 %462, -1
  %464 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %428, i64 noundef %463) #4
  %465 = load double, ptr %464, align 8, !tbaa !5
  %466 = load i64, ptr %32, align 8, !tbaa !16
  %467 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %428, i64 noundef %466) #4
  %468 = load double, ptr %467, align 8, !tbaa !5
  %469 = fadd double %465, %468
  %470 = tail call double @llvm.fmuladd.f64(double %461, double %469, double %459)
  %471 = load i64, ptr %32, align 8, !tbaa !16
  %472 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %430, i64 noundef %471) #4
  store double %470, ptr %472, align 8, !tbaa !5
  %473 = load i64, ptr %32, align 8, !tbaa !16
  %474 = add nsw i64 %473, 1
  store i64 %474, ptr %32, align 8, !tbaa !16
  %475 = icmp slt i64 %473, 1000
  br i1 %475, label %433, label %476, !llvm.loop !59

476:                                              ; preds = %433
  %477 = tail call noundef double @_ZNK14CulhamGeometry5DeltaEd(ptr noundef nonnull align 8 dereferenceable(80408) %0, double noundef 1.000000e+00)
  %478 = getelementptr inbounds i8, ptr %0, i64 24336
  store double %477, ptr %478, align 8, !tbaa !60
  %479 = tail call noundef i64 @_ZNKSt5arrayIdLm1001EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8008) %430) #5
  store i64 0, ptr %333, align 8, !tbaa !51
  %.not45 = icmp eq i64 %479, 0
  br i1 %.not45, label %._crit_edge39, label %.lr.ph38

.lr.ph38:                                         ; preds = %476, %.lr.ph38
  %storemerge1636 = phi i64 [ %485, %.lr.ph38 ], [ 0, %476 ]
  %480 = load double, ptr %478, align 8, !tbaa !60
  %481 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008) %430, i64 noundef %storemerge1636) #4
  %482 = load double, ptr %481, align 8, !tbaa !5
  %483 = fsub double %482, %480
  store double %483, ptr %481, align 8, !tbaa !5
  %484 = load i64, ptr %333, align 8, !tbaa !51
  %485 = add i64 %484, 1
  store i64 %485, ptr %333, align 8, !tbaa !51
  %486 = icmp ult i64 %485, %479
  br i1 %486, label %.lr.ph38, label %._crit_edge39, !llvm.loop !61

._crit_edge39:                                    ; preds = %.lr.ph38, %476
  ret void
}

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt5arrayIdLm1001EEixEm(ptr noundef nonnull align 8 dereferenceable(8008), i64 noundef) local_unnamed_addr #2 align 2

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

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

; Function Attrs: mustprogress nofree nosync nounwind willreturn memory(none) uwtable
declare dso_local noundef i64 @_ZNKSt5arrayIdLm1001EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8008)) local_unnamed_addr #3 align 2

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"double", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !6, i64 32}
!10 = !{!"_ZTS14CulhamGeometry", !11, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !12, i64 40, !13, i64 8048, !6, i64 8056, !6, i64 8064, !6, i64 8072, !6, i64 8080, !6, i64 8088, !6, i64 8096, !6, i64 8104, !6, i64 8112, !6, i64 8120, !6, i64 8128, !6, i64 8136, !6, i64 8144, !6, i64 8152, !6, i64 8160, !6, i64 8168, !6, i64 8176, !6, i64 8184, !6, i64 8192, !6, i64 8200, !6, i64 8208, !6, i64 8216, !6, i64 8224, !6, i64 8232, !6, i64 8240, !6, i64 8248, !6, i64 8256, !6, i64 8264, !6, i64 8272, !6, i64 8280, !6, i64 8288, !6, i64 8296, !6, i64 8304, !12, i64 8312, !12, i64 16320, !6, i64 24328, !6, i64 24336, !13, i64 24344, !12, i64 24352, !12, i64 32360, !12, i64 40368, !12, i64 48376, !12, i64 56384, !12, i64 64392, !12, i64 72400}
!11 = !{!"_ZTS14DomainGeometry"}
!12 = !{!"_ZTSSt5arrayIdLm1001EE", !7, i64 0}
!13 = !{!"long", !7, i64 0}
!14 = !{!10, !6, i64 16}
!15 = !{!10, !6, i64 24}
!16 = !{!10, !13, i64 8048}
!17 = !{!10, !6, i64 8056}
!18 = !{!10, !6, i64 8064}
!19 = !{!10, !6, i64 8072}
!20 = !{!10, !6, i64 8080}
!21 = !{!10, !6, i64 8088}
!22 = !{!10, !6, i64 8096}
!23 = !{!10, !6, i64 8104}
!24 = !{!10, !6, i64 8112}
!25 = !{!10, !6, i64 8120}
!26 = !{!10, !6, i64 8128}
!27 = !{!10, !6, i64 8136}
!28 = !{!10, !6, i64 8144}
!29 = !{!10, !6, i64 8152}
!30 = !{!10, !6, i64 8160}
!31 = !{!10, !6, i64 8168}
!32 = !{!10, !6, i64 8176}
!33 = !{!10, !6, i64 8184}
!34 = !{!10, !6, i64 8192}
!35 = !{!10, !6, i64 8200}
!36 = !{!10, !6, i64 8208}
!37 = !{!10, !6, i64 8216}
!38 = !{!10, !6, i64 8224}
!39 = !{!10, !6, i64 8232}
!40 = !{!10, !6, i64 8240}
!41 = !{!10, !6, i64 8248}
!42 = !{!10, !6, i64 8256}
!43 = !{!10, !6, i64 8264}
!44 = !{!10, !6, i64 8272}
!45 = !{!10, !6, i64 8280}
!46 = !{!10, !6, i64 8288}
!47 = distinct !{!47, !48}
!48 = !{!"llvm.loop.mustprogress"}
!49 = !{!10, !6, i64 8296}
!50 = !{!10, !6, i64 8304}
!51 = !{!10, !13, i64 24344}
!52 = distinct !{!52, !48}
!53 = distinct !{!53, !48}
!54 = distinct !{!54, !48}
!55 = distinct !{!55, !48}
!56 = distinct !{!56, !48}
!57 = distinct !{!57, !48}
!58 = !{!10, !6, i64 24328}
!59 = distinct !{!59, !48}
!60 = !{!10, !6, i64 24336}
!61 = distinct !{!61, !48}


; Effective O3 passes: EarlyCSEPass,GlobalOptPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LCSSAPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,ReassociatePass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass