; LLVM IR from aparis69/Desertscapes-Simulation :: Code/Source (desert)

; 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.std::vector.0" = type { %"struct.std::_Vector_base.1" }
%"struct.std::_Vector_base.1" = type { %"struct.std::_Vector_base<Vector3, std::allocator<Vector3>>::_Vector_impl" }
%"struct.std::_Vector_base<Vector3, std::allocator<Vector3>>::_Vector_impl" = type { %"struct.std::_Vector_base<Vector3, std::allocator<Vector3>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Vector3, std::allocator<Vector3>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.5" = type { %"struct.std::_Vector_base.6" }
%"struct.std::_Vector_base.6" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.Vector3 = type { float, float, float }
%struct.Vector2 = type { float, float }
%"class.std::basic_ofstream" = type { %"class.std::basic_ostream.base", %"class.std::basic_filebuf", %"class.std::basic_ios" }
%"class.std::basic_ostream.base" = type { ptr }
%"class.std::basic_filebuf" = type { %"class.std::basic_streambuf", %union.pthread_mutex_t, %"class.std::__basic_file", i32, %struct.__mbstate_t, %struct.__mbstate_t, %struct.__mbstate_t, ptr, i64, i8, i8, i8, i8, ptr, ptr, i8, ptr, ptr, i64, ptr, ptr }
%"class.std::basic_streambuf" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, %"class.std::locale" }
%"class.std::locale" = type { ptr }
%union.pthread_mutex_t = type { %struct.__pthread_mutex_s }
%struct.__pthread_mutex_s = type { i32, i32, i32, i32, i32, i16, i16, %struct.__pthread_internal_list }
%struct.__pthread_internal_list = type { ptr, ptr }
%"class.std::__basic_file" = type <{ ptr, i8, [7 x i8] }>
%struct.__mbstate_t = type { i32, %union.anon }
%union.anon = type { i32 }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%class.DuneSediment = type { float, float, float, float, i8, i8, %class.ScalarField2D, %class.ScalarField2D, %class.ScalarField2D, %class.Box2D, i32, i32, float, float, %struct.Vector2 }
%class.ScalarField2D = type { %class.Box2D, i32, i32, %"class.std::vector" }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl" }
%"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl" = type { %"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl_data" }
%"struct.std::_Vector_base<float, std::allocator<float>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.Box2D = type { %struct.Vector2, %struct.Vector2 }

@.str.7 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [3 x i8], align 1

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

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

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

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: mustprogress uwtable
declare dso_local <2 x float> @_ZNK7Vector2plERKS_(ptr noundef nonnull align 4 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(8)) #3 align 2

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZNK12DuneSediment9ExportObjERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(208) %0, ptr noundef nonnull align 8 dereferenceable(32) %1) #3 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca %"class.std::vector.0", align 8
  %6 = alloca %"class.std::vector.0", align 8
  %7 = alloca %"class.std::vector.5", align 8
  %8 = alloca %struct.Vector3, align 4
  %9 = alloca ptr, align 8
  %10 = alloca i32, align 4
  %11 = alloca %struct.Vector3, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca %struct.Vector3, align 4
  %17 = alloca %struct.Vector3, align 4
  %18 = alloca %struct.Vector3, align 4
  %19 = alloca %struct.Vector2, align 4
  %20 = alloca %struct.Vector2, align 4
  %21 = alloca %struct.Vector2, align 4
  %22 = alloca { <2 x float>, float }, align 8
  %23 = alloca { <2 x float>, float }, align 8
  %24 = alloca { <2 x float>, float }, align 8
  %25 = alloca %struct.Vector3, align 4
  %26 = alloca %struct.Vector2, align 4
  %27 = alloca %struct.Vector2, align 4
  %28 = alloca %struct.Vector2, align 4
  %29 = alloca %struct.Vector2, align 4
  %30 = alloca %struct.Vector2, align 4
  %31 = alloca %struct.Vector2, align 4
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca %"class.std::basic_ofstream", align 8
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca i32, align 4
  store ptr %0, ptr %3, align 8, !tbaa !5
  store ptr %1, ptr %4, align 8, !tbaa !5
  %42 = load ptr, ptr %3, align 8
  call void @llvm.lifetime.start.p0(i64 24, ptr %5) #10
  call void @_ZNSt6vectorI7Vector3SaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr %6) #10
  call void @_ZNSt6vectorI7Vector3SaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr %7) #10
  call void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #10
  %43 = getelementptr inbounds %class.DuneSediment, ptr %42, i32 0, i32 10
  %44 = load i32, ptr %43, align 8, !tbaa !9
  %45 = getelementptr inbounds %class.DuneSediment, ptr %42, i32 0, i32 11
  %46 = load i32, ptr %45, align 4, !tbaa !21
  %47 = mul nsw i32 %44, %46
  %48 = sext i32 %47 to i64
  call void @llvm.lifetime.start.p0(i64 12, ptr %8) #10
  invoke void @_ZN7Vector3C2Ef(ptr noundef nonnull align 4 dereferenceable(12) %8, float noundef 0.000000e+00)
          to label %49 unwind label %65

49:                                               ; preds = %2
  invoke void @_ZNSt6vectorI7Vector3SaIS0_EE6resizeEmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %6, i64 noundef %48, ptr noundef nonnull align 4 dereferenceable(12) %8)
          to label %50 unwind label %65

50:                                               ; preds = %49
  call void @llvm.lifetime.end.p0(i64 12, ptr %8) #10
  %51 = getelementptr inbounds %class.DuneSediment, ptr %42, i32 0, i32 10
  %52 = load i32, ptr %51, align 8, !tbaa !9
  %53 = getelementptr inbounds %class.DuneSediment, ptr %42, i32 0, i32 11
  %54 = load i32, ptr %53, align 4, !tbaa !21
  %55 = mul nsw i32 %52, %54
  %56 = sext i32 %55 to i64
  call void @llvm.lifetime.start.p0(i64 12, ptr %11) #10
  invoke void @_ZN7Vector3C2Ef(ptr noundef nonnull align 4 dereferenceable(12) %11, float noundef 0.000000e+00)
          to label %57 unwind label %69

57:                                               ; preds = %50
  invoke void @_ZNSt6vectorI7Vector3SaIS0_EE6resizeEmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %56, ptr noundef nonnull align 4 dereferenceable(12) %11)
          to label %58 unwind label %69

58:                                               ; preds = %57
  call void @llvm.lifetime.end.p0(i64 12, ptr %11) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #10
  store i32 0, ptr %12, align 4, !tbaa !22
  br label %59

59:                                               ; preds = %217, %58
  %60 = load i32, ptr %12, align 4, !tbaa !22
  %61 = getelementptr inbounds %class.DuneSediment, ptr %42, i32 0, i32 10
  %62 = load i32, ptr %61, align 8, !tbaa !9
  %63 = icmp slt i32 %60, %62
  br i1 %63, label %73, label %64

64:                                               ; preds = %59
  store i32 2, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #10
  br label %220

65:                                               ; preds = %49, %2
  %66 = landingpad { ptr, i32 }
          cleanup
  %67 = extractvalue { ptr, i32 } %66, 0
  store ptr %67, ptr %9, align 8
  %68 = extractvalue { ptr, i32 } %66, 1
  store i32 %68, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 12, ptr %8) #10
  br label %503

69:                                               ; preds = %57, %50
  %70 = landingpad { ptr, i32 }
          cleanup
  %71 = extractvalue { ptr, i32 } %70, 0
  store ptr %71, ptr %9, align 8
  %72 = extractvalue { ptr, i32 } %70, 1
  store i32 %72, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 12, ptr %11) #10
  br label %503

73:                                               ; preds = %59
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #10
  store i32 0, ptr %14, align 4, !tbaa !22
  br label %74

74:                                               ; preds = %170, %73
  %75 = load i32, ptr %14, align 4, !tbaa !22
  %76 = getelementptr inbounds %class.DuneSediment, ptr %42, i32 0, i32 11
  %77 = load i32, ptr %76, align 4, !tbaa !21
  %78 = icmp slt i32 %75, %77
  br i1 %78, label %80, label %79

79:                                               ; preds = %74
  store i32 5, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #10
  br label %216

80:                                               ; preds = %74
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #10
  %81 = load i32, ptr %12, align 4, !tbaa !22
  %82 = load i32, ptr %14, align 4, !tbaa !22
  %83 = invoke noundef i32 @_ZNK12DuneSediment9ToIndex1DEii(ptr noundef nonnull align 8 dereferenceable(208) %42, i32 noundef %81, i32 noundef %82)
          to label %84 unwind label %173

84:                                               ; preds = %80
  store i32 %83, ptr %15, align 4, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 12, ptr %16) #10
  call void @llvm.lifetime.start.p0(i64 12, ptr %17) #10
  call void @llvm.lifetime.start.p0(i64 12, ptr %18) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #10
  %85 = getelementptr inbounds %class.DuneSediment, ptr %42, i32 0, i32 6
  %86 = load i32, ptr %12, align 4, !tbaa !22
  %87 = load i32, ptr %14, align 4, !tbaa !22
  %88 = invoke <2 x float> @_ZNK13ScalarField2D8GradientEii(ptr noundef nonnull align 8 dereferenceable(48) %85, i32 noundef %86, i32 noundef %87)
          to label %89 unwind label %177

89:                                               ; preds = %84
  store <2 x float> %88, ptr %20, align 4
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #10
  %90 = getelementptr inbounds %class.DuneSediment, ptr %42, i32 0, i32 7
  %91 = load i32, ptr %12, align 4, !tbaa !22
  %92 = load i32, ptr %14, align 4, !tbaa !22
  %93 = invoke <2 x float> @_ZNK13ScalarField2D8GradientEii(ptr noundef nonnull align 8 dereferenceable(48) %90, i32 noundef %91, i32 noundef %92)
          to label %94 unwind label %181

94:                                               ; preds = %89
  store <2 x float> %93, ptr %21, align 4
  %95 = invoke <2 x float> @_ZNK7Vector2plERKS_(ptr noundef nonnull align 4 dereferenceable(8) %20, ptr noundef nonnull align 4 dereferenceable(8) %21)
          to label %96 unwind label %181

96:                                               ; preds = %94
  store <2 x float> %95, ptr %19, align 4
  %97 = invoke { <2 x float>, float } @_ZNK7Vector29ToVector3Ef(ptr noundef nonnull align 4 dereferenceable(8) %19, float noundef -2.000000e+00)
          to label %98 unwind label %181

98:                                               ; preds = %96
  store { <2 x float>, float } %97, ptr %22, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %18, ptr align 8 %22, i64 12, i1 false)
  %99 = invoke { <2 x float>, float } @_Z9NormalizeRK7Vector3(ptr noundef nonnull align 4 dereferenceable(12) %18)
          to label %100 unwind label %181

100:                                              ; preds = %98
  store { <2 x float>, float } %99, ptr %23, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %17, ptr align 8 %23, i64 12, i1 false)
  %101 = invoke { <2 x float>, float } @_ZngRK7Vector3(ptr noundef nonnull align 4 dereferenceable(12) %17)
          to label %102 unwind label %181

102:                                              ; preds = %100
  store { <2 x float>, float } %101, ptr %24, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %16, ptr align 8 %24, i64 12, i1 false)
  %103 = load i32, ptr %15, align 4, !tbaa !22
  %104 = sext i32 %103 to i64
  %105 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorI7Vector3SaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %6, i64 noundef %104) #10
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %105, ptr align 4 %16, i64 12, i1 false), !tbaa.struct !23
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #10
  call void @llvm.lifetime.end.p0(i64 12, ptr %18) #10
  call void @llvm.lifetime.end.p0(i64 12, ptr %17) #10
  call void @llvm.lifetime.end.p0(i64 12, ptr %16) #10
  call void @llvm.lifetime.start.p0(i64 12, ptr %25) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #10
  %106 = getelementptr inbounds %class.DuneSediment, ptr %42, i32 0, i32 9
  %107 = invoke <2 x float> @_ZNK5Box2DixEi(ptr noundef nonnull align 4 dereferenceable(16) %106, i32 noundef 0)
          to label %108 unwind label %186

108:                                              ; preds = %102
  store <2 x float> %107, ptr %26, align 4
  %109 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN7Vector2ixEi(ptr noundef nonnull align 4 dereferenceable(8) %26, i32 noundef 0)
          to label %110 unwind label %186

110:                                              ; preds = %108
  %111 = load float, ptr %109, align 4, !tbaa !24
  %112 = load i32, ptr %12, align 4, !tbaa !22
  %113 = sitofp i32 %112 to float
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #10
  %114 = getelementptr inbounds %class.DuneSediment, ptr %42, i32 0, i32 9
  %115 = invoke <2 x float> @_ZNK5Box2DixEi(ptr noundef nonnull align 4 dereferenceable(16) %114, i32 noundef 1)
          to label %116 unwind label %190

116:                                              ; preds = %110
  store <2 x float> %115, ptr %27, align 4
  %117 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN7Vector2ixEi(ptr noundef nonnull align 4 dereferenceable(8) %27, i32 noundef 0)
          to label %118 unwind label %190

118:                                              ; preds = %116
  %119 = load float, ptr %117, align 4, !tbaa !24
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #10
  %120 = getelementptr inbounds %class.DuneSediment, ptr %42, i32 0, i32 9
  %121 = invoke <2 x float> @_ZNK5Box2DixEi(ptr noundef nonnull align 4 dereferenceable(16) %120, i32 noundef 0)
          to label %122 unwind label %194

122:                                              ; preds = %118
  store <2 x float> %121, ptr %28, align 4
  %123 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN7Vector2ixEi(ptr noundef nonnull align 4 dereferenceable(8) %28, i32 noundef 0)
          to label %124 unwind label %194

124:                                              ; preds = %122
  %125 = load float, ptr %123, align 4, !tbaa !24
  %126 = fsub float %119, %125
  %127 = fmul float %113, %126
  %128 = getelementptr inbounds %class.DuneSediment, ptr %42, i32 0, i32 10
  %129 = load i32, ptr %128, align 8, !tbaa !9
  %130 = sub nsw i32 %129, 1
  %131 = sitofp i32 %130 to float
  %132 = fdiv float %127, %131
  %133 = fadd float %111, %132
  %134 = load i32, ptr %12, align 4, !tbaa !22
  %135 = load i32, ptr %14, align 4, !tbaa !22
  %136 = invoke noundef float @_ZNK12DuneSediment6HeightEii(ptr noundef nonnull align 8 dereferenceable(208) %42, i32 noundef %134, i32 noundef %135)
          to label %137 unwind label %194

137:                                              ; preds = %124
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #10
  %138 = getelementptr inbounds %class.DuneSediment, ptr %42, i32 0, i32 9
  %139 = invoke <2 x float> @_ZNK5Box2DixEi(ptr noundef nonnull align 4 dereferenceable(16) %138, i32 noundef 0)
          to label %140 unwind label %198

140:                                              ; preds = %137
  store <2 x float> %139, ptr %29, align 4
  %141 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN7Vector2ixEi(ptr noundef nonnull align 4 dereferenceable(8) %29, i32 noundef 1)
          to label %142 unwind label %198

142:                                              ; preds = %140
  %143 = load float, ptr %141, align 4, !tbaa !24
  %144 = load i32, ptr %14, align 4, !tbaa !22
  %145 = sitofp i32 %144 to float
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #10
  %146 = getelementptr inbounds %class.DuneSediment, ptr %42, i32 0, i32 9
  %147 = invoke <2 x float> @_ZNK5Box2DixEi(ptr noundef nonnull align 4 dereferenceable(16) %146, i32 noundef 1)
          to label %148 unwind label %202

148:                                              ; preds = %142
  store <2 x float> %147, ptr %30, align 4
  %149 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN7Vector2ixEi(ptr noundef nonnull align 4 dereferenceable(8) %30, i32 noundef 1)
          to label %150 unwind label %202

150:                                              ; preds = %148
  %151 = load float, ptr %149, align 4, !tbaa !24
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #10
  %152 = getelementptr inbounds %class.DuneSediment, ptr %42, i32 0, i32 9
  %153 = invoke <2 x float> @_ZNK5Box2DixEi(ptr noundef nonnull align 4 dereferenceable(16) %152, i32 noundef 0)
          to label %154 unwind label %206

154:                                              ; preds = %150
  store <2 x float> %153, ptr %31, align 4
  %155 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN7Vector2ixEi(ptr noundef nonnull align 4 dereferenceable(8) %31, i32 noundef 1)
          to label %156 unwind label %206

156:                                              ; preds = %154
  %157 = load float, ptr %155, align 4, !tbaa !24
  %158 = fsub float %151, %157
  %159 = fmul float %145, %158
  %160 = getelementptr inbounds %class.DuneSediment, ptr %42, i32 0, i32 11
  %161 = load i32, ptr %160, align 4, !tbaa !21
  %162 = sub nsw i32 %161, 1
  %163 = sitofp i32 %162 to float
  %164 = fdiv float %159, %163
  %165 = fadd float %143, %164
  invoke void @_ZN7Vector3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %25, float noundef %133, float noundef %136, float noundef %165)
          to label %166 unwind label %206

166:                                              ; preds = %156
  %167 = load i32, ptr %15, align 4, !tbaa !22
  %168 = sext i32 %167 to i64
  %169 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorI7Vector3SaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %168) #10
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %169, ptr align 4 %25, i64 12, i1 false), !tbaa.struct !23
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #10
  call void @llvm.lifetime.end.p0(i64 12, ptr %25) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #10
  br label %170

170:                                              ; preds = %166
  %171 = load i32, ptr %14, align 4, !tbaa !22
  %172 = add nsw i32 %171, 1
  store i32 %172, ptr %14, align 4, !tbaa !22
  br label %74, !llvm.loop !25

173:                                              ; preds = %80
  %174 = landingpad { ptr, i32 }
          cleanup
  %175 = extractvalue { ptr, i32 } %174, 0
  store ptr %175, ptr %9, align 8
  %176 = extractvalue { ptr, i32 } %174, 1
  store i32 %176, ptr %10, align 4
  br label %215

177:                                              ; preds = %84
  %178 = landingpad { ptr, i32 }
          cleanup
  %179 = extractvalue { ptr, i32 } %178, 0
  store ptr %179, ptr %9, align 8
  %180 = extractvalue { ptr, i32 } %178, 1
  store i32 %180, ptr %10, align 4
  br label %185

181:                                              ; preds = %100, %98, %96, %94, %89
  %182 = landingpad { ptr, i32 }
          cleanup
  %183 = extractvalue { ptr, i32 } %182, 0
  store ptr %183, ptr %9, align 8
  %184 = extractvalue { ptr, i32 } %182, 1
  store i32 %184, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #10
  br label %185

185:                                              ; preds = %181, %177
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #10
  call void @llvm.lifetime.end.p0(i64 12, ptr %18) #10
  call void @llvm.lifetime.end.p0(i64 12, ptr %17) #10
  call void @llvm.lifetime.end.p0(i64 12, ptr %16) #10
  br label %215

186:                                              ; preds = %108, %102
  %187 = landingpad { ptr, i32 }
          cleanup
  %188 = extractvalue { ptr, i32 } %187, 0
  store ptr %188, ptr %9, align 8
  %189 = extractvalue { ptr, i32 } %187, 1
  store i32 %189, ptr %10, align 4
  br label %214

190:                                              ; preds = %116, %110
  %191 = landingpad { ptr, i32 }
          cleanup
  %192 = extractvalue { ptr, i32 } %191, 0
  store ptr %192, ptr %9, align 8
  %193 = extractvalue { ptr, i32 } %191, 1
  store i32 %193, ptr %10, align 4
  br label %213

194:                                              ; preds = %124, %122, %118
  %195 = landingpad { ptr, i32 }
          cleanup
  %196 = extractvalue { ptr, i32 } %195, 0
  store ptr %196, ptr %9, align 8
  %197 = extractvalue { ptr, i32 } %195, 1
  store i32 %197, ptr %10, align 4
  br label %212

198:                                              ; preds = %140, %137
  %199 = landingpad { ptr, i32 }
          cleanup
  %200 = extractvalue { ptr, i32 } %199, 0
  store ptr %200, ptr %9, align 8
  %201 = extractvalue { ptr, i32 } %199, 1
  store i32 %201, ptr %10, align 4
  br label %211

202:                                              ; preds = %148, %142
  %203 = landingpad { ptr, i32 }
          cleanup
  %204 = extractvalue { ptr, i32 } %203, 0
  store ptr %204, ptr %9, align 8
  %205 = extractvalue { ptr, i32 } %203, 1
  store i32 %205, ptr %10, align 4
  br label %210

206:                                              ; preds = %156, %154, %150
  %207 = landingpad { ptr, i32 }
          cleanup
  %208 = extractvalue { ptr, i32 } %207, 0
  store ptr %208, ptr %9, align 8
  %209 = extractvalue { ptr, i32 } %207, 1
  store i32 %209, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #10
  br label %210

210:                                              ; preds = %206, %202
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #10
  br label %211

211:                                              ; preds = %210, %198
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #10
  br label %212

212:                                              ; preds = %211, %194
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #10
  br label %213

213:                                              ; preds = %212, %190
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #10
  br label %214

214:                                              ; preds = %213, %186
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #10
  call void @llvm.lifetime.end.p0(i64 12, ptr %25) #10
  br label %215

215:                                              ; preds = %214, %185, %173
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #10
  br label %503

216:                                              ; preds = %79
  br label %217

217:                                              ; preds = %216
  %218 = load i32, ptr %12, align 4, !tbaa !22
  %219 = add nsw i32 %218, 1
  store i32 %219, ptr %12, align 4, !tbaa !22
  br label %59, !llvm.loop !27

220:                                              ; preds = %64
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #10
  store i32 0, ptr %32, align 4, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #10
  %221 = getelementptr inbounds %class.DuneSediment, ptr %42, i32 0, i32 11
  %222 = load i32, ptr %221, align 4, !tbaa !21
  %223 = getelementptr inbounds %class.DuneSediment, ptr %42, i32 0, i32 10
  %224 = load i32, ptr %223, align 8, !tbaa !9
  %225 = mul nsw i32 %222, %224
  store i32 %225, ptr %33, align 4, !tbaa !22
  br label %226

226:                                              ; preds = %294, %220
  %227 = load i32, ptr %32, align 4, !tbaa !22
  %228 = load i32, ptr %33, align 4, !tbaa !22
  %229 = getelementptr inbounds %class.DuneSediment, ptr %42, i32 0, i32 10
  %230 = load i32, ptr %229, align 8, !tbaa !9
  %231 = sub nsw i32 %228, %230
  %232 = sub nsw i32 %231, 1
  %233 = icmp slt i32 %227, %232
  br i1 %233, label %234, label %297

234:                                              ; preds = %226
  %235 = load i32, ptr %32, align 4, !tbaa !22
  %236 = icmp eq i32 %235, 0
  br i1 %236, label %251, label %237

237:                                              ; preds = %234
  %238 = load i32, ptr %32, align 4, !tbaa !22
  %239 = add nsw i32 %238, 1
  %240 = getelementptr inbounds %class.DuneSediment, ptr %42, i32 0, i32 10
  %241 = load i32, ptr %240, align 8, !tbaa !9
  %242 = srem i32 %239, %241
  %243 = icmp ne i32 %242, 0
  br i1 %243, label %244, label %294

244:                                              ; preds = %237
  %245 = load i32, ptr %32, align 4, !tbaa !22
  %246 = load i32, ptr %33, align 4, !tbaa !22
  %247 = getelementptr inbounds %class.DuneSediment, ptr %42, i32 0, i32 10
  %248 = load i32, ptr %247, align 8, !tbaa !9
  %249 = sub nsw i32 %246, %248
  %250 = icmp sle i32 %245, %249
  br i1 %250, label %251, label %294

251:                                              ; preds = %244, %234
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #10
  %252 = load i32, ptr %32, align 4, !tbaa !22
  %253 = getelementptr inbounds %class.DuneSediment, ptr %42, i32 0, i32 10
  %254 = load i32, ptr %253, align 8, !tbaa !9
  %255 = add nsw i32 %252, %254
  %256 = add nsw i32 %255, 1
  store i32 %256, ptr %34, align 4, !tbaa !22
  invoke void @_ZNSt6vectorIiSaIiEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24) %7, ptr noundef nonnull align 4 dereferenceable(4) %34)
          to label %257 unwind label %274

257:                                              ; preds = %251
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #10
  %258 = load i32, ptr %32, align 4, !tbaa !22
  %259 = getelementptr inbounds %class.DuneSediment, ptr %42, i32 0, i32 10
  %260 = load i32, ptr %259, align 8, !tbaa !9
  %261 = add nsw i32 %258, %260
  store i32 %261, ptr %35, align 4, !tbaa !22
  invoke void @_ZNSt6vectorIiSaIiEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24) %7, ptr noundef nonnull align 4 dereferenceable(4) %35)
          to label %262 unwind label %278

262:                                              ; preds = %257
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #10
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %7, ptr noundef nonnull align 4 dereferenceable(4) %32)
          to label %263 unwind label %282

263:                                              ; preds = %262
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %7, ptr noundef nonnull align 4 dereferenceable(4) %32)
          to label %264 unwind label %282

264:                                              ; preds = %263
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #10
  %265 = load i32, ptr %32, align 4, !tbaa !22
  %266 = add nsw i32 %265, 1
  store i32 %266, ptr %36, align 4, !tbaa !22
  invoke void @_ZNSt6vectorIiSaIiEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24) %7, ptr noundef nonnull align 4 dereferenceable(4) %36)
          to label %267 unwind label %286

267:                                              ; preds = %264
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #10
  %268 = load i32, ptr %32, align 4, !tbaa !22
  %269 = getelementptr inbounds %class.DuneSediment, ptr %42, i32 0, i32 10
  %270 = load i32, ptr %269, align 8, !tbaa !9
  %271 = add nsw i32 %268, %270
  %272 = add nsw i32 %271, 1
  store i32 %272, ptr %37, align 4, !tbaa !22
  invoke void @_ZNSt6vectorIiSaIiEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24) %7, ptr noundef nonnull align 4 dereferenceable(4) %37)
          to label %273 unwind label %290

273:                                              ; preds = %267
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #10
  br label %294

274:                                              ; preds = %251
  %275 = landingpad { ptr, i32 }
          cleanup
  %276 = extractvalue { ptr, i32 } %275, 0
  store ptr %276, ptr %9, align 8
  %277 = extractvalue { ptr, i32 } %275, 1
  store i32 %277, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #10
  br label %502

278:                                              ; preds = %257
  %279 = landingpad { ptr, i32 }
          cleanup
  %280 = extractvalue { ptr, i32 } %279, 0
  store ptr %280, ptr %9, align 8
  %281 = extractvalue { ptr, i32 } %279, 1
  store i32 %281, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #10
  br label %502

282:                                              ; preds = %263, %262
  %283 = landingpad { ptr, i32 }
          cleanup
  %284 = extractvalue { ptr, i32 } %283, 0
  store ptr %284, ptr %9, align 8
  %285 = extractvalue { ptr, i32 } %283, 1
  store i32 %285, ptr %10, align 4
  br label %502

286:                                              ; preds = %264
  %287 = landingpad { ptr, i32 }
          cleanup
  %288 = extractvalue { ptr, i32 } %287, 0
  store ptr %288, ptr %9, align 8
  %289 = extractvalue { ptr, i32 } %287, 1
  store i32 %289, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #10
  br label %502

290:                                              ; preds = %267
  %291 = landingpad { ptr, i32 }
          cleanup
  %292 = extractvalue { ptr, i32 } %291, 0
  store ptr %292, ptr %9, align 8
  %293 = extractvalue { ptr, i32 } %291, 1
  store i32 %293, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #10
  br label %502

294:                                              ; preds = %273, %244, %237
  %295 = load i32, ptr %32, align 4, !tbaa !22
  %296 = add nsw i32 %295, 1
  store i32 %296, ptr %32, align 4, !tbaa !22
  br label %226, !llvm.loop !28

297:                                              ; preds = %226
  call void @llvm.lifetime.start.p0(i64 512, ptr %38) #10
  invoke void @_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(248) %38)
          to label %298 unwind label %306

298:                                              ; preds = %297
  %299 = load ptr, ptr %4, align 8, !tbaa !5
  invoke void @_ZNSt14basic_ofstreamIcSt11char_traitsIcEE4openERKNSt7__cxx1112basic_stringIcS1_SaIcEEESt13_Ios_Openmode(ptr noundef nonnull align 8 dereferenceable(248) %38, ptr noundef nonnull align 8 dereferenceable(32) %299, i32 noundef 16)
          to label %300 unwind label %310

300:                                              ; preds = %298
  %301 = invoke noundef zeroext i1 @_ZNSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv(ptr noundef nonnull align 8 dereferenceable(248) %38)
          to label %302 unwind label %310

302:                                              ; preds = %300
  %303 = zext i1 %301 to i32
  %304 = icmp eq i32 %303, 0
  br i1 %304, label %305, label %314

305:                                              ; preds = %302
  store i32 1, ptr %13, align 4
  br label %497

306:                                              ; preds = %297
  %307 = landingpad { ptr, i32 }
          cleanup
  %308 = extractvalue { ptr, i32 } %307, 0
  store ptr %308, ptr %9, align 8
  %309 = extractvalue { ptr, i32 } %307, 1
  store i32 %309, ptr %10, align 4
  br label %501

310:                                              ; preds = %495, %318, %316, %314, %300, %298
  %311 = landingpad { ptr, i32 }
          cleanup
  %312 = extractvalue { ptr, i32 } %311, 0
  store ptr %312, ptr %9, align 8
  %313 = extractvalue { ptr, i32 } %311, 1
  store i32 %313, ptr %10, align 4
  br label %500

314:                                              ; preds = %302
  %315 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %38, ptr noundef @.str.7)
          to label %316 unwind label %310

316:                                              ; preds = %314
  %317 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %315, ptr noundef @.str.8)
          to label %318 unwind label %310

318:                                              ; preds = %316
  %319 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %317, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %320 unwind label %310

320:                                              ; preds = %318
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #10
  store i32 0, ptr %39, align 4, !tbaa !22
  br label %321

321:                                              ; preds = %360, %320
  %322 = load i32, ptr %39, align 4, !tbaa !22
  %323 = sext i32 %322 to i64
  %324 = call noundef i64 @_ZNKSt6vectorI7Vector3SaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %5) #10
  %325 = icmp ult i64 %323, %324
  br i1 %325, label %327, label %326

326:                                              ; preds = %321
  store i32 10, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #10
  br label %367

327:                                              ; preds = %321
  %328 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %38, ptr noundef @.str.9)
          to label %329 unwind label %363

329:                                              ; preds = %327
  %330 = load i32, ptr %39, align 4, !tbaa !22
  %331 = sext i32 %330 to i64
  %332 = invoke noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorI7Vector3SaIS0_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %331)
          to label %333 unwind label %363

333:                                              ; preds = %329
  %334 = getelementptr inbounds %struct.Vector3, ptr %332, i32 0, i32 0
  %335 = load float, ptr %334, align 4, !tbaa !29
  %336 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEf(ptr noundef nonnull align 8 dereferenceable(8) %328, float noundef %335)
          to label %337 unwind label %363

337:                                              ; preds = %333
  %338 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %336, ptr noundef @.str.10)
          to label %339 unwind label %363

339:                                              ; preds = %337
  %340 = load i32, ptr %39, align 4, !tbaa !22
  %341 = sext i32 %340 to i64
  %342 = invoke noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorI7Vector3SaIS0_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %341)
          to label %343 unwind label %363

343:                                              ; preds = %339
  %344 = getelementptr inbounds %struct.Vector3, ptr %342, i32 0, i32 1
  %345 = load float, ptr %344, align 4, !tbaa !31
  %346 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEf(ptr noundef nonnull align 8 dereferenceable(8) %338, float noundef %345)
          to label %347 unwind label %363

347:                                              ; preds = %343
  %348 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %346, ptr noundef @.str.10)
          to label %349 unwind label %363

349:                                              ; preds = %347
  %350 = load i32, ptr %39, align 4, !tbaa !22
  %351 = sext i32 %350 to i64
  %352 = invoke noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorI7Vector3SaIS0_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %351)
          to label %353 unwind label %363

353:                                              ; preds = %349
  %354 = getelementptr inbounds %struct.Vector3, ptr %352, i32 0, i32 2
  %355 = load float, ptr %354, align 4, !tbaa !32
  %356 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEf(ptr noundef nonnull align 8 dereferenceable(8) %348, float noundef %355)
          to label %357 unwind label %363

357:                                              ; preds = %353
  %358 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %356, i8 noundef signext 10)
          to label %359 unwind label %363

359:                                              ; preds = %357
  br label %360

360:                                              ; preds = %359
  %361 = load i32, ptr %39, align 4, !tbaa !22
  %362 = add nsw i32 %361, 1
  store i32 %362, ptr %39, align 4, !tbaa !22
  br label %321, !llvm.loop !33

363:                                              ; preds = %357, %353, %349, %347, %343, %339, %337, %333, %329, %327
  %364 = landingpad { ptr, i32 }
          cleanup
  %365 = extractvalue { ptr, i32 } %364, 0
  store ptr %365, ptr %9, align 8
  %366 = extractvalue { ptr, i32 } %364, 1
  store i32 %366, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #10
  br label %500

367:                                              ; preds = %326
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #10
  store i32 0, ptr %40, align 4, !tbaa !22
  br label %368

368:                                              ; preds = %407, %367
  %369 = load i32, ptr %40, align 4, !tbaa !22
  %370 = sext i32 %369 to i64
  %371 = call noundef i64 @_ZNKSt6vectorI7Vector3SaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %6) #10
  %372 = icmp ult i64 %370, %371
  br i1 %372, label %374, label %373

373:                                              ; preds = %368
  store i32 13, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #10
  br label %414

374:                                              ; preds = %368
  %375 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %38, ptr noundef @.str.11)
          to label %376 unwind label %410

376:                                              ; preds = %374
  %377 = load i32, ptr %40, align 4, !tbaa !22
  %378 = sext i32 %377 to i64
  %379 = invoke noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorI7Vector3SaIS0_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %6, i64 noundef %378)
          to label %380 unwind label %410

380:                                              ; preds = %376
  %381 = getelementptr inbounds %struct.Vector3, ptr %379, i32 0, i32 0
  %382 = load float, ptr %381, align 4, !tbaa !29
  %383 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEf(ptr noundef nonnull align 8 dereferenceable(8) %375, float noundef %382)
          to label %384 unwind label %410

384:                                              ; preds = %380
  %385 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %383, ptr noundef @.str.10)
          to label %386 unwind label %410

386:                                              ; preds = %384
  %387 = load i32, ptr %40, align 4, !tbaa !22
  %388 = sext i32 %387 to i64
  %389 = invoke noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorI7Vector3SaIS0_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %6, i64 noundef %388)
          to label %390 unwind label %410

390:                                              ; preds = %386
  %391 = getelementptr inbounds %struct.Vector3, ptr %389, i32 0, i32 2
  %392 = load float, ptr %391, align 4, !tbaa !32
  %393 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEf(ptr noundef nonnull align 8 dereferenceable(8) %385, float noundef %392)
          to label %394 unwind label %410

394:                                              ; preds = %390
  %395 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %393, ptr noundef @.str.10)
          to label %396 unwind label %410

396:                                              ; preds = %394
  %397 = load i32, ptr %40, align 4, !tbaa !22
  %398 = sext i32 %397 to i64
  %399 = invoke noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorI7Vector3SaIS0_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %6, i64 noundef %398)
          to label %400 unwind label %410

400:                                              ; preds = %396
  %401 = getelementptr inbounds %struct.Vector3, ptr %399, i32 0, i32 1
  %402 = load float, ptr %401, align 4, !tbaa !31
  %403 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEf(ptr noundef nonnull align 8 dereferenceable(8) %395, float noundef %402)
          to label %404 unwind label %410

404:                                              ; preds = %400
  %405 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %403, i8 noundef signext 10)
          to label %406 unwind label %410

406:                                              ; preds = %404
  br label %407

407:                                              ; preds = %406
  %408 = load i32, ptr %40, align 4, !tbaa !22
  %409 = add nsw i32 %408, 1
  store i32 %409, ptr %40, align 4, !tbaa !22
  br label %368, !llvm.loop !34

410:                                              ; preds = %404, %400, %396, %394, %390, %386, %384, %380, %376, %374
  %411 = landingpad { ptr, i32 }
          cleanup
  %412 = extractvalue { ptr, i32 } %411, 0
  store ptr %412, ptr %9, align 8
  %413 = extractvalue { ptr, i32 } %411, 1
  store i32 %413, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #10
  br label %500

414:                                              ; preds = %373
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #10
  store i32 0, ptr %41, align 4, !tbaa !22
  br label %415

415:                                              ; preds = %488, %414
  %416 = load i32, ptr %41, align 4, !tbaa !22
  %417 = sext i32 %416 to i64
  %418 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %7) #10
  %419 = icmp ult i64 %417, %418
  br i1 %419, label %421, label %420

420:                                              ; preds = %415
  store i32 16, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #10
  br label %495

421:                                              ; preds = %415
  %422 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %38, ptr noundef @.str.12)
          to label %423 unwind label %491

423:                                              ; preds = %421
  %424 = load i32, ptr %41, align 4, !tbaa !22
  %425 = sext i32 %424 to i64
  %426 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef %425)
          to label %427 unwind label %491

427:                                              ; preds = %423
  %428 = load i32, ptr %426, align 4, !tbaa !22
  %429 = add nsw i32 %428, 1
  %430 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %422, i32 noundef %429)
          to label %431 unwind label %491

431:                                              ; preds = %427
  %432 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %430, ptr noundef @.str.13)
          to label %433 unwind label %491

433:                                              ; preds = %431
  %434 = load i32, ptr %41, align 4, !tbaa !22
  %435 = sext i32 %434 to i64
  %436 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef %435)
          to label %437 unwind label %491

437:                                              ; preds = %433
  %438 = load i32, ptr %436, align 4, !tbaa !22
  %439 = add nsw i32 %438, 1
  %440 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %432, i32 noundef %439)
          to label %441 unwind label %491

441:                                              ; preds = %437
  %442 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %440, ptr noundef @.str.10)
          to label %443 unwind label %491

443:                                              ; preds = %441
  %444 = load i32, ptr %41, align 4, !tbaa !22
  %445 = add nsw i32 %444, 1
  %446 = sext i32 %445 to i64
  %447 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef %446)
          to label %448 unwind label %491

448:                                              ; preds = %443
  %449 = load i32, ptr %447, align 4, !tbaa !22
  %450 = add nsw i32 %449, 1
  %451 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %442, i32 noundef %450)
          to label %452 unwind label %491

452:                                              ; preds = %448
  %453 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %451, ptr noundef @.str.13)
          to label %454 unwind label %491

454:                                              ; preds = %452
  %455 = load i32, ptr %41, align 4, !tbaa !22
  %456 = add nsw i32 %455, 1
  %457 = sext i32 %456 to i64
  %458 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef %457)
          to label %459 unwind label %491

459:                                              ; preds = %454
  %460 = load i32, ptr %458, align 4, !tbaa !22
  %461 = add nsw i32 %460, 1
  %462 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %453, i32 noundef %461)
          to label %463 unwind label %491

463:                                              ; preds = %459
  %464 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %462, ptr noundef @.str.10)
          to label %465 unwind label %491

465:                                              ; preds = %463
  %466 = load i32, ptr %41, align 4, !tbaa !22
  %467 = add nsw i32 %466, 2
  %468 = sext i32 %467 to i64
  %469 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef %468)
          to label %470 unwind label %491

470:                                              ; preds = %465
  %471 = load i32, ptr %469, align 4, !tbaa !22
  %472 = add nsw i32 %471, 1
  %473 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %464, i32 noundef %472)
          to label %474 unwind label %491

474:                                              ; preds = %470
  %475 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %473, ptr noundef @.str.13)
          to label %476 unwind label %491

476:                                              ; preds = %474
  %477 = load i32, ptr %41, align 4, !tbaa !22
  %478 = add nsw i32 %477, 2
  %479 = sext i32 %478 to i64
  %480 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %7, i64 noundef %479)
          to label %481 unwind label %491

481:                                              ; preds = %476
  %482 = load i32, ptr %480, align 4, !tbaa !22
  %483 = add nsw i32 %482, 1
  %484 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %475, i32 noundef %483)
          to label %485 unwind label %491

485:                                              ; preds = %481
  %486 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %484, i8 noundef signext 10)
          to label %487 unwind label %491

487:                                              ; preds = %485
  br label %488

488:                                              ; preds = %487
  %489 = load i32, ptr %41, align 4, !tbaa !22
  %490 = add nsw i32 %489, 3
  store i32 %490, ptr %41, align 4, !tbaa !22
  br label %415, !llvm.loop !35

491:                                              ; preds = %485, %481, %476, %474, %470, %465, %463, %459, %454, %452, %448, %443, %441, %437, %433, %431, %427, %423, %421
  %492 = landingpad { ptr, i32 }
          cleanup
  %493 = extractvalue { ptr, i32 } %492, 0
  store ptr %493, ptr %9, align 8
  %494 = extractvalue { ptr, i32 } %492, 1
  store i32 %494, ptr %10, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #10
  br label %500

495:                                              ; preds = %420
  invoke void @_ZNSt14basic_ofstreamIcSt11char_traitsIcEE5closeEv(ptr noundef nonnull align 8 dereferenceable(248) %38)
          to label %496 unwind label %310

496:                                              ; preds = %495
  store i32 0, ptr %13, align 4
  br label %497

497:                                              ; preds = %496, %305
  call void @_ZNSt14basic_ofstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(248) %38) #10
  call void @llvm.lifetime.end.p0(i64 512, ptr %38) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #10
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %7) #10
  call void @_ZNSt6vectorI7Vector3SaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %6) #10
  call void @_ZNSt6vectorI7Vector3SaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %5) #10
  %498 = load i32, ptr %13, align 4
  switch i32 %498, label %509 [
    i32 0, label %499
    i32 1, label %499
  ]

499:                                              ; preds = %497, %497
  ret void

500:                                              ; preds = %491, %410, %363, %310
  call void @_ZNSt14basic_ofstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(248) %38) #10
  br label %501

501:                                              ; preds = %500, %306
  call void @llvm.lifetime.end.p0(i64 512, ptr %38) #10
  br label %502

502:                                              ; preds = %501, %290, %286, %282, %278, %274
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #10
  br label %503

503:                                              ; preds = %502, %215, %69, %65
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %7) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %7) #10
  call void @_ZNSt6vectorI7Vector3SaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %6) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %6) #10
  call void @_ZNSt6vectorI7Vector3SaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %5) #10
  br label %504

504:                                              ; preds = %503
  %505 = load ptr, ptr %9, align 8
  %506 = load i32, ptr %10, align 4
  %507 = insertvalue { ptr, i32 } poison, ptr %505, 0
  %508 = insertvalue { ptr, i32 } %507, i32 %506, 1
  resume { ptr, i32 } %508

509:                                              ; preds = %497
  unreachable
}

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK12DuneSediment9ToIndex1DEii(ptr noundef nonnull align 8 dereferenceable(208), i32 noundef, i32 noundef) #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { <2 x float>, float } @_ZngRK7Vector3(ptr noundef nonnull align 4 dereferenceable(12)) #6

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { <2 x float>, float } @_Z9NormalizeRK7Vector3(ptr noundef nonnull align 4 dereferenceable(12)) #7

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local <2 x float> @_ZNK13ScalarField2D8GradientEii(ptr noundef nonnull align 8 dereferenceable(48), i32 noundef, i32 noundef) #7 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { <2 x float>, float } @_ZNK7Vector29ToVector3Ef(ptr noundef nonnull align 4 dereferenceable(8), float noundef) #6 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorI7Vector3SaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #2 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local <2 x float> @_ZNK5Box2DixEi(ptr noundef nonnull align 4 dereferenceable(16), i32 noundef) #8 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef float @_ZNK12DuneSediment6HeightEii(ptr noundef nonnull align 8 dereferenceable(208), i32 noundef, i32 noundef) #5 align 2

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

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

; Function Attrs: mustprogress uwtable
declare void @_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(248)) unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare void @_ZNSt14basic_ofstreamIcSt11char_traitsIcEE4openERKNSt7__cxx1112basic_stringIcS1_SaIcEEESt13_Ios_Openmode(ptr noundef nonnull align 8 dereferenceable(248), ptr noundef nonnull align 8 dereferenceable(32), i32 noundef) #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare noundef zeroext i1 @_ZNSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv(ptr noundef nonnull align 8 dereferenceable(248)) #2 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #6

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #4 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_(ptr noundef nonnull align 8 dereferenceable(8)) #6

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorI7Vector3SaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) #2 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8), i8 noundef signext) #6

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEf(ptr noundef nonnull align 8 dereferenceable(8), float noundef) #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorI7Vector3SaIS0_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) #2 align 2

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef) #9

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEE2atEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #4 align 2

; Function Attrs: mustprogress uwtable
declare void @_ZNSt14basic_ofstreamIcSt11char_traitsIcEE5closeEv(ptr noundef nonnull align 8 dereferenceable(248)) #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt14basic_ofstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(248)) unnamed_addr #2 align 2

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !16, i64 184}
!10 = !{!"_ZTS12DuneSediment", !11, i64 0, !11, i64 4, !11, i64 8, !11, i64 12, !12, i64 16, !12, i64 17, !13, i64 24, !13, i64 72, !13, i64 120, !14, i64 168, !16, i64 184, !16, i64 188, !11, i64 192, !11, i64 196, !15, i64 200}
!11 = !{!"float", !7, i64 0}
!12 = !{!"bool", !7, i64 0}
!13 = !{!"_ZTS13ScalarField2D", !14, i64 0, !16, i64 16, !16, i64 20, !17, i64 24}
!14 = !{!"_ZTS5Box2D", !15, i64 0, !15, i64 8}
!15 = !{!"_ZTS7Vector2", !11, i64 0, !11, i64 4}
!16 = !{!"int", !7, i64 0}
!17 = !{!"_ZTSSt6vectorIfSaIfEE", !18, i64 0}
!18 = !{!"_ZTSSt12_Vector_baseIfSaIfEE", !19, i64 0}
!19 = !{!"_ZTSNSt12_Vector_baseIfSaIfEE12_Vector_implE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseIfSaIfEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!21 = !{!10, !16, i64 188}
!22 = !{!16, !16, i64 0}
!23 = !{i64 0, i64 4, !24, i64 4, i64 4, !24, i64 8, i64 4, !24}
!24 = !{!11, !11, i64 0}
!25 = distinct !{!25, !26}
!26 = !{!"llvm.loop.mustprogress"}
!27 = distinct !{!27, !26}
!28 = distinct !{!28, !26}
!29 = !{!30, !11, i64 0}
!30 = !{!"_ZTS7Vector3", !11, i64 0, !11, i64 4, !11, i64 8}
!31 = !{!30, !11, i64 4}
!32 = !{!30, !11, i64 8}
!33 = distinct !{!33, !26}
!34 = distinct !{!34, !26}
!35 = distinct !{!35, !26}


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

%"class.std::vector.0" = type { %"struct.std::_Vector_base.1" }
%"struct.std::_Vector_base.1" = type { %"struct.std::_Vector_base<Vector3, std::allocator<Vector3>>::_Vector_impl" }
%"struct.std::_Vector_base<Vector3, std::allocator<Vector3>>::_Vector_impl" = type { %"struct.std::_Vector_base<Vector3, std::allocator<Vector3>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Vector3, std::allocator<Vector3>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.5" = type { %"struct.std::_Vector_base.6" }
%"struct.std::_Vector_base.6" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.Vector3 = type { float, float, float }
%struct.Vector2 = type { float, float }
%"class.std::basic_ofstream" = type { %"class.std::basic_ostream.base", %"class.std::basic_filebuf", %"class.std::basic_ios" }
%"class.std::basic_ostream.base" = type { ptr }
%"class.std::basic_filebuf" = type { %"class.std::basic_streambuf", %union.pthread_mutex_t, %"class.std::__basic_file", i32, %struct.__mbstate_t, %struct.__mbstate_t, %struct.__mbstate_t, ptr, i64, i8, i8, i8, i8, ptr, ptr, i8, ptr, ptr, i64, ptr, ptr }
%"class.std::basic_streambuf" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, %"class.std::locale" }
%"class.std::locale" = type { ptr }
%union.pthread_mutex_t = type { %struct.__pthread_mutex_s }
%struct.__pthread_mutex_s = type { i32, i32, i32, i32, i32, i16, i16, %struct.__pthread_internal_list }
%struct.__pthread_internal_list = type { ptr, ptr }
%"class.std::__basic_file" = type <{ ptr, i8, [7 x i8] }>
%struct.__mbstate_t = type { i32, %union.anon }
%union.anon = type { i32 }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }

@.str.7 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [3 x i8], align 1

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

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

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

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: mustprogress uwtable
declare dso_local <2 x float> @_ZNK7Vector2plERKS_(ptr noundef nonnull align 4 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(8)) local_unnamed_addr #3 align 2

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZNK12DuneSediment9ExportObjERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(208) %0, ptr noundef nonnull align 8 dereferenceable(32) %1) local_unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca %"class.std::vector.0", align 8
  %4 = alloca %"class.std::vector.0", align 8
  %5 = alloca %"class.std::vector.5", align 8
  %6 = alloca %struct.Vector3, align 4
  %7 = alloca %struct.Vector3, align 4
  %8 = alloca %struct.Vector3, align 8
  %9 = alloca %struct.Vector3, align 8
  %10 = alloca %struct.Vector2, align 8
  %11 = alloca %struct.Vector2, align 8
  %12 = alloca %struct.Vector2, align 8
  %13 = alloca %struct.Vector3, align 4
  %14 = alloca %struct.Vector2, align 8
  %15 = alloca %struct.Vector2, align 8
  %16 = alloca %struct.Vector2, align 8
  %17 = alloca %struct.Vector2, align 8
  %18 = alloca %struct.Vector2, align 8
  %19 = alloca %struct.Vector2, align 8
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca %"class.std::basic_ofstream", align 8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %3) #10
  call void @_ZNSt6vectorI7Vector3SaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %4) #10
  call void @_ZNSt6vectorI7Vector3SaIS0_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %4) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %5) #10
  call void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #10
  %26 = getelementptr inbounds i8, ptr %0, i64 184
  %27 = load i32, ptr %26, align 8, !tbaa !5
  %28 = getelementptr inbounds i8, ptr %0, i64 188
  %29 = load i32, ptr %28, align 4, !tbaa !20
  %30 = mul nsw i32 %29, %27
  %31 = sext i32 %30 to i64
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %6) #10
  call void @_ZN7Vector3C2Ef(ptr noundef nonnull align 4 dereferenceable(12) %6, float noundef 0.000000e+00)
  invoke void @_ZNSt6vectorI7Vector3SaIS0_EE6resizeEmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %4, i64 noundef %31, ptr noundef nonnull align 4 dereferenceable(12) %6)
          to label %32 unwind label %53

32:                                               ; preds = %2
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %6) #10
  %33 = load i32, ptr %26, align 8, !tbaa !5
  %34 = load i32, ptr %28, align 4, !tbaa !20
  %35 = mul nsw i32 %34, %33
  %36 = sext i32 %35 to i64
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %7) #10
  call void @_ZN7Vector3C2Ef(ptr noundef nonnull align 4 dereferenceable(12) %7, float noundef 0.000000e+00)
  invoke void @_ZNSt6vectorI7Vector3SaIS0_EE6resizeEmRKS0_(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %36, ptr noundef nonnull align 4 dereferenceable(12) %7)
          to label %37 unwind label %55

37:                                               ; preds = %32
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %7) #10
  %38 = load i32, ptr %26, align 8, !tbaa !5
  %39 = icmp sgt i32 %38, 0
  %.pre100 = load i32, ptr %28, align 4, !tbaa !20
  br i1 %39, label %.preheader72.lr.ph, label %._crit_edge77

.preheader72.lr.ph:                               ; preds = %37
  %40 = getelementptr inbounds i8, ptr %0, i64 24
  %41 = getelementptr inbounds i8, ptr %0, i64 72
  %.sroa.227.0..sroa_idx = getelementptr inbounds i8, ptr %9, i64 8
  %.sroa.223.0..sroa_idx = getelementptr inbounds i8, ptr %8, i64 8
  %42 = getelementptr inbounds i8, ptr %0, i64 168
  %43 = icmp sgt i32 %.pre100, 0
  br i1 %43, label %.preheader72, label %._crit_edge77

.preheader72:                                     ; preds = %.preheader72.lr.ph, %._crit_edge
  %44 = phi i32 [ %57, %._crit_edge ], [ %38, %.preheader72.lr.ph ]
  %45 = phi i32 [ %58, %._crit_edge ], [ %.pre100, %.preheader72.lr.ph ]
  %.05676 = phi i32 [ %59, %._crit_edge ], [ 0, %.preheader72.lr.ph ]
  %46 = icmp sgt i32 %45, 0
  br i1 %46, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %.preheader72
  %47 = uitofp nneg i32 %.05676 to float
  br label %61

._crit_edge77:                                    ; preds = %._crit_edge, %.preheader72.lr.ph, %37
  %48 = phi i32 [ %.pre100, %37 ], [ %.pre100, %.preheader72.lr.ph ], [ %58, %._crit_edge ]
  %49 = phi i32 [ %38, %37 ], [ %38, %.preheader72.lr.ph ], [ %57, %._crit_edge ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %20) #10
  store i32 0, ptr %20, align 4, !tbaa !21
  %50 = mul nsw i32 %48, %49
  %51 = sub i32 %49, %50
  %52 = icmp slt i32 %51, -1
  br i1 %52, label %.lr.ph79, label %._crit_edge80

53:                                               ; preds = %2
  %54 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %6) #10
  br label %291

55:                                               ; preds = %32
  %56 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %7) #10
  br label %291

._crit_edge.loopexit:                             ; preds = %74
  %.pre = load i32, ptr %26, align 8, !tbaa !5
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %.preheader72
  %57 = phi i32 [ %.pre, %._crit_edge.loopexit ], [ %44, %.preheader72 ]
  %58 = phi i32 [ %113, %._crit_edge.loopexit ], [ %45, %.preheader72 ]
  %59 = add nuw nsw i32 %.05676, 1
  %60 = icmp slt i32 %59, %57
  br i1 %60, label %.preheader72, label %._crit_edge77, !llvm.loop !22

61:                                               ; preds = %.lr.ph, %74
  %.05775 = phi i32 [ 0, %.lr.ph ], [ %112, %74 ]
  %62 = call noundef i32 @_ZNK12DuneSediment9ToIndex1DEii(ptr noundef nonnull align 8 dereferenceable(208) %0, i32 noundef %.05676, i32 noundef %.05775)
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %8) #10
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %9) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #10
  %63 = invoke <2 x float> @_ZNK13ScalarField2D8GradientEii(ptr noundef nonnull align 8 dereferenceable(48) %40, i32 noundef %.05676, i32 noundef %.05775)
          to label %64 unwind label %115

64:                                               ; preds = %61
  store <2 x float> %63, ptr %11, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #10
  %65 = invoke <2 x float> @_ZNK13ScalarField2D8GradientEii(ptr noundef nonnull align 8 dereferenceable(48) %41, i32 noundef %.05676, i32 noundef %.05775)
          to label %66 unwind label %117

66:                                               ; preds = %64
  store <2 x float> %65, ptr %12, align 8
  %67 = invoke <2 x float> @_ZNK7Vector2plERKS_(ptr noundef nonnull align 4 dereferenceable(8) %11, ptr noundef nonnull align 4 dereferenceable(8) %12)
          to label %68 unwind label %117

68:                                               ; preds = %66
  store <2 x float> %67, ptr %10, align 8
  %69 = invoke { <2 x float>, float } @_ZNK7Vector29ToVector3Ef(ptr noundef nonnull align 4 dereferenceable(8) %10, float noundef -2.000000e+00)
          to label %70 unwind label %117

70:                                               ; preds = %68
  %.fca.0.extract24 = extractvalue { <2 x float>, float } %69, 0
  %.fca.1.extract25 = extractvalue { <2 x float>, float } %69, 1
  store <2 x float> %.fca.0.extract24, ptr %9, align 8
  store float %.fca.1.extract25, ptr %.sroa.227.0..sroa_idx, align 8
  %71 = invoke { <2 x float>, float } @_Z9NormalizeRK7Vector3(ptr noundef nonnull align 4 dereferenceable(12) %9)
          to label %72 unwind label %117

72:                                               ; preds = %70
  %.fca.0.extract20 = extractvalue { <2 x float>, float } %71, 0
  %.fca.1.extract21 = extractvalue { <2 x float>, float } %71, 1
  store <2 x float> %.fca.0.extract20, ptr %8, align 8
  store float %.fca.1.extract21, ptr %.sroa.223.0..sroa_idx, align 8
  %73 = invoke { <2 x float>, float } @_ZngRK7Vector3(ptr noundef nonnull align 4 dereferenceable(12) %8)
          to label %74 unwind label %117

74:                                               ; preds = %72
  %.fca.0.extract = extractvalue { <2 x float>, float } %73, 0
  %.fca.1.extract = extractvalue { <2 x float>, float } %73, 1
  %75 = sext i32 %62 to i64
  %76 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorI7Vector3SaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %4, i64 noundef %75) #10
  store <2 x float> %.fca.0.extract, ptr %76, align 4
  %.sroa.5.0..sroa_idx = getelementptr inbounds i8, ptr %76, i64 8
  store float %.fca.1.extract, ptr %.sroa.5.0..sroa_idx, align 4, !tbaa !25
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #10
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %9) #10
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %8) #10
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %13) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #10
  %77 = call <2 x float> @_ZNK5Box2DixEi(ptr noundef nonnull align 4 dereferenceable(16) %42, i32 noundef 0)
  store <2 x float> %77, ptr %14, align 8
  %78 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN7Vector2ixEi(ptr noundef nonnull align 4 dereferenceable(8) %14, i32 noundef 0)
  %79 = load float, ptr %78, align 4, !tbaa !25
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #10
  %80 = call <2 x float> @_ZNK5Box2DixEi(ptr noundef nonnull align 4 dereferenceable(16) %42, i32 noundef 1)
  store <2 x float> %80, ptr %15, align 8
  %81 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN7Vector2ixEi(ptr noundef nonnull align 4 dereferenceable(8) %15, i32 noundef 0)
  %82 = load float, ptr %81, align 4, !tbaa !25
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #10
  %83 = call <2 x float> @_ZNK5Box2DixEi(ptr noundef nonnull align 4 dereferenceable(16) %42, i32 noundef 0)
  store <2 x float> %83, ptr %16, align 8
  %84 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN7Vector2ixEi(ptr noundef nonnull align 4 dereferenceable(8) %16, i32 noundef 0)
  %85 = load float, ptr %84, align 4, !tbaa !25
  %86 = fsub float %82, %85
  %87 = fmul float %86, %47
  %88 = load i32, ptr %26, align 8, !tbaa !5
  %89 = add nsw i32 %88, -1
  %90 = sitofp i32 %89 to float
  %91 = fdiv float %87, %90
  %92 = fadd float %79, %91
  %93 = call noundef float @_ZNK12DuneSediment6HeightEii(ptr noundef nonnull align 8 dereferenceable(208) %0, i32 noundef %.05676, i32 noundef %.05775)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #10
  %94 = call <2 x float> @_ZNK5Box2DixEi(ptr noundef nonnull align 4 dereferenceable(16) %42, i32 noundef 0)
  store <2 x float> %94, ptr %17, align 8
  %95 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN7Vector2ixEi(ptr noundef nonnull align 4 dereferenceable(8) %17, i32 noundef 1)
  %96 = load float, ptr %95, align 4, !tbaa !25
  %97 = uitofp nneg i32 %.05775 to float
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #10
  %98 = call <2 x float> @_ZNK5Box2DixEi(ptr noundef nonnull align 4 dereferenceable(16) %42, i32 noundef 1)
  store <2 x float> %98, ptr %18, align 8
  %99 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN7Vector2ixEi(ptr noundef nonnull align 4 dereferenceable(8) %18, i32 noundef 1)
  %100 = load float, ptr %99, align 4, !tbaa !25
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #10
  %101 = call <2 x float> @_ZNK5Box2DixEi(ptr noundef nonnull align 4 dereferenceable(16) %42, i32 noundef 0)
  store <2 x float> %101, ptr %19, align 8
  %102 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN7Vector2ixEi(ptr noundef nonnull align 4 dereferenceable(8) %19, i32 noundef 1)
  %103 = load float, ptr %102, align 4, !tbaa !25
  %104 = fsub float %100, %103
  %105 = fmul float %104, %97
  %106 = load i32, ptr %28, align 4, !tbaa !20
  %107 = add nsw i32 %106, -1
  %108 = sitofp i32 %107 to float
  %109 = fdiv float %105, %108
  %110 = fadd float %96, %109
  call void @_ZN7Vector3C2Efff(ptr noundef nonnull align 4 dereferenceable(12) %13, float noundef %92, float noundef %93, float noundef %110)
  %111 = call noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorI7Vector3SaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %75) #10
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(12) %111, ptr noundef nonnull align 4 dereferenceable(12) %13, i64 12, i1 false), !tbaa.struct !26
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #10
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %13) #10
  %112 = add nuw nsw i32 %.05775, 1
  %113 = load i32, ptr %28, align 4, !tbaa !20
  %114 = icmp slt i32 %112, %113
  br i1 %114, label %61, label %._crit_edge.loopexit, !llvm.loop !27

115:                                              ; preds = %61
  %116 = landingpad { ptr, i32 }
          cleanup
  br label %119

117:                                              ; preds = %72, %70, %68, %66, %64
  %118 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #10
  br label %119

119:                                              ; preds = %117, %115
  %.pn67 = phi { ptr, i32 } [ %118, %117 ], [ %116, %115 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #10
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %9) #10
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %8) #10
  br label %291

.lr.ph79:                                         ; preds = %._crit_edge77, %152
  %120 = phi i32 [ %153, %152 ], [ %49, %._crit_edge77 ]
  %121 = phi i32 [ %.pre-phi, %152 ], [ 0, %._crit_edge77 ]
  %122 = icmp eq i32 %121, 0
  br i1 %122, label %.lr.ph79._crit_edge, label %123

123:                                              ; preds = %.lr.ph79
  %124 = add nsw i32 %121, 1
  %125 = srem i32 %124, %120
  %.not = icmp eq i32 %125, 0
  br i1 %.not, label %152, label %.lr.ph79._crit_edge

.lr.ph79._crit_edge:                              ; preds = %.lr.ph79, %123
  %.pre-phi105 = phi i32 [ %124, %123 ], [ 1, %.lr.ph79 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %21) #10
  %126 = add i32 %.pre-phi105, %120
  store i32 %126, ptr %21, align 4, !tbaa !21
  invoke void @_ZNSt6vectorIiSaIiEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull align 4 dereferenceable(4) %21)
          to label %127 unwind label %142

127:                                              ; preds = %.lr.ph79._crit_edge
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %22) #10
  %128 = load i32, ptr %20, align 4, !tbaa !21
  %129 = load i32, ptr %26, align 8, !tbaa !5
  %130 = add nsw i32 %129, %128
  store i32 %130, ptr %22, align 4, !tbaa !21
  invoke void @_ZNSt6vectorIiSaIiEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull align 4 dereferenceable(4) %22)
          to label %131 unwind label %144

131:                                              ; preds = %127
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #10
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull align 4 dereferenceable(4) %20)
          to label %132 unwind label %146

132:                                              ; preds = %131
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull align 4 dereferenceable(4) %20)
          to label %133 unwind label %146

133:                                              ; preds = %132
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #10
  %134 = load i32, ptr %20, align 4, !tbaa !21
  %135 = add nsw i32 %134, 1
  store i32 %135, ptr %23, align 4, !tbaa !21
  invoke void @_ZNSt6vectorIiSaIiEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull align 4 dereferenceable(4) %23)
          to label %136 unwind label %148

136:                                              ; preds = %133
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %24) #10
  %137 = load i32, ptr %20, align 4, !tbaa !21
  %138 = load i32, ptr %26, align 8, !tbaa !5
  %139 = add i32 %137, 1
  %140 = add i32 %139, %138
  store i32 %140, ptr %24, align 4, !tbaa !21
  invoke void @_ZNSt6vectorIiSaIiEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull align 4 dereferenceable(4) %24)
          to label %141 unwind label %150

141:                                              ; preds = %136
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #10
  %.pre101 = load i32, ptr %20, align 4, !tbaa !21
  %.pre102 = load i32, ptr %26, align 8, !tbaa !5
  %.pre103 = add nsw i32 %.pre101, 1
  br label %152

142:                                              ; preds = %.lr.ph79._crit_edge
  %143 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #10
  br label %290

144:                                              ; preds = %127
  %145 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #10
  br label %290

146:                                              ; preds = %132, %131
  %147 = landingpad { ptr, i32 }
          cleanup
  br label %290

148:                                              ; preds = %133
  %149 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #10
  br label %290

150:                                              ; preds = %136
  %151 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #10
  br label %290

152:                                              ; preds = %141, %123
  %.pre-phi = phi i32 [ %.pre103, %141 ], [ %124, %123 ]
  %153 = phi i32 [ %.pre102, %141 ], [ %120, %123 ]
  store i32 %.pre-phi, ptr %20, align 4, !tbaa !21
  %154 = xor i32 %153, -1
  %155 = add i32 %50, %154
  %156 = icmp slt i32 %.pre-phi, %155
  br i1 %156, label %.lr.ph79, label %._crit_edge80, !llvm.loop !28

._crit_edge80:                                    ; preds = %152, %._crit_edge77
  call void @llvm.lifetime.start.p0(i64 512, ptr nonnull %25) #10
  invoke void @_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(248) %25)
          to label %157 unwind label %160

157:                                              ; preds = %._crit_edge80
  invoke void @_ZNSt14basic_ofstreamIcSt11char_traitsIcEE4openERKNSt7__cxx1112basic_stringIcS1_SaIcEEESt13_Ios_Openmode(ptr noundef nonnull align 8 dereferenceable(248) %25, ptr noundef nonnull align 8 dereferenceable(32) %1, i32 noundef 16)
          to label %158 unwind label %162

158:                                              ; preds = %157
  %159 = call noundef zeroext i1 @_ZNSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv(ptr noundef nonnull align 8 dereferenceable(248) %25)
  br i1 %159, label %164, label %287

160:                                              ; preds = %._crit_edge80
  %161 = landingpad { ptr, i32 }
          cleanup
  br label %289

162:                                              ; preds = %._crit_edge87, %168, %166, %164, %157
  %163 = landingpad { ptr, i32 }
          cleanup
  br label %288

164:                                              ; preds = %158
  %165 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull @.str.7)
          to label %166 unwind label %162

166:                                              ; preds = %164
  %167 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %165, ptr noundef nonnull @.str.8)
          to label %168 unwind label %162

168:                                              ; preds = %166
  %169 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %167, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %.preheader71 unwind label %162

.preheader71:                                     ; preds = %168
  %170 = call noundef i64 @_ZNKSt6vectorI7Vector3SaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %3) #10
  %.not88 = icmp eq i64 %170, 0
  br i1 %.not88, label %.preheader70, label %.lr.ph82

.preheader70:                                     ; preds = %196, %.preheader71
  %171 = call noundef i64 @_ZNKSt6vectorI7Vector3SaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %4) #10
  %.not89 = icmp eq i64 %171, 0
  br i1 %.not89, label %.preheader, label %.lr.ph84

.lr.ph82:                                         ; preds = %.preheader71, %196
  %indvars.iv = phi i64 [ %indvars.iv.next, %196 ], [ 0, %.preheader71 ]
  %172 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull @.str.9)
          to label %173 unwind label %199

173:                                              ; preds = %.lr.ph82
  %174 = invoke noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorI7Vector3SaIS0_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %indvars.iv)
          to label %175 unwind label %199

175:                                              ; preds = %173
  %176 = load float, ptr %174, align 4, !tbaa !29
  %177 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEf(ptr noundef nonnull align 8 dereferenceable(8) %172, float noundef %176)
          to label %178 unwind label %199

178:                                              ; preds = %175
  %179 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %177, ptr noundef nonnull @.str.10)
          to label %180 unwind label %199

180:                                              ; preds = %178
  %181 = invoke noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorI7Vector3SaIS0_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %indvars.iv)
          to label %182 unwind label %199

182:                                              ; preds = %180
  %183 = getelementptr inbounds i8, ptr %181, i64 4
  %184 = load float, ptr %183, align 4, !tbaa !31
  %185 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEf(ptr noundef nonnull align 8 dereferenceable(8) %179, float noundef %184)
          to label %186 unwind label %199

186:                                              ; preds = %182
  %187 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %185, ptr noundef nonnull @.str.10)
          to label %188 unwind label %199

188:                                              ; preds = %186
  %189 = invoke noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorI7Vector3SaIS0_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %3, i64 noundef %indvars.iv)
          to label %190 unwind label %199

190:                                              ; preds = %188
  %191 = getelementptr inbounds i8, ptr %189, i64 8
  %192 = load float, ptr %191, align 4, !tbaa !32
  %193 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEf(ptr noundef nonnull align 8 dereferenceable(8) %187, float noundef %192)
          to label %194 unwind label %199

194:                                              ; preds = %190
  %195 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %193, i8 noundef signext 10)
          to label %196 unwind label %199

196:                                              ; preds = %194
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %197 = call noundef i64 @_ZNKSt6vectorI7Vector3SaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %3) #10
  %198 = icmp ugt i64 %197, %indvars.iv.next
  br i1 %198, label %.lr.ph82, label %.preheader70, !llvm.loop !33

199:                                              ; preds = %194, %190, %188, %186, %182, %180, %178, %175, %173, %.lr.ph82
  %200 = landingpad { ptr, i32 }
          cleanup
  br label %288

.preheader:                                       ; preds = %226, %.preheader70
  %201 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %5) #10
  %.not90 = icmp eq i64 %201, 0
  br i1 %.not90, label %._crit_edge87, label %.lr.ph86

.lr.ph84:                                         ; preds = %.preheader70, %226
  %indvars.iv94 = phi i64 [ %indvars.iv.next95, %226 ], [ 0, %.preheader70 ]
  %202 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull @.str.11)
          to label %203 unwind label %229

203:                                              ; preds = %.lr.ph84
  %204 = invoke noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorI7Vector3SaIS0_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %4, i64 noundef %indvars.iv94)
          to label %205 unwind label %229

205:                                              ; preds = %203
  %206 = load float, ptr %204, align 4, !tbaa !29
  %207 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEf(ptr noundef nonnull align 8 dereferenceable(8) %202, float noundef %206)
          to label %208 unwind label %229

208:                                              ; preds = %205
  %209 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %207, ptr noundef nonnull @.str.10)
          to label %210 unwind label %229

210:                                              ; preds = %208
  %211 = invoke noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorI7Vector3SaIS0_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %4, i64 noundef %indvars.iv94)
          to label %212 unwind label %229

212:                                              ; preds = %210
  %213 = getelementptr inbounds i8, ptr %211, i64 8
  %214 = load float, ptr %213, align 4, !tbaa !32
  %215 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEf(ptr noundef nonnull align 8 dereferenceable(8) %209, float noundef %214)
          to label %216 unwind label %229

216:                                              ; preds = %212
  %217 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %215, ptr noundef nonnull @.str.10)
          to label %218 unwind label %229

218:                                              ; preds = %216
  %219 = invoke noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorI7Vector3SaIS0_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %4, i64 noundef %indvars.iv94)
          to label %220 unwind label %229

220:                                              ; preds = %218
  %221 = getelementptr inbounds i8, ptr %219, i64 4
  %222 = load float, ptr %221, align 4, !tbaa !31
  %223 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEf(ptr noundef nonnull align 8 dereferenceable(8) %217, float noundef %222)
          to label %224 unwind label %229

224:                                              ; preds = %220
  %225 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %223, i8 noundef signext 10)
          to label %226 unwind label %229

226:                                              ; preds = %224
  %indvars.iv.next95 = add nuw nsw i64 %indvars.iv94, 1
  %227 = call noundef i64 @_ZNKSt6vectorI7Vector3SaIS0_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %4) #10
  %228 = icmp ugt i64 %227, %indvars.iv.next95
  br i1 %228, label %.lr.ph84, label %.preheader, !llvm.loop !34

229:                                              ; preds = %224, %220, %218, %216, %212, %210, %208, %205, %203, %.lr.ph84
  %230 = landingpad { ptr, i32 }
          cleanup
  br label %288

._crit_edge87:                                    ; preds = %282, %.preheader
  invoke void @_ZNSt14basic_ofstreamIcSt11char_traitsIcEE5closeEv(ptr noundef nonnull align 8 dereferenceable(248) %25)
          to label %287 unwind label %162

.lr.ph86:                                         ; preds = %.preheader, %282
  %indvars.iv97 = phi i64 [ %indvars.iv.next98, %282 ], [ 0, %.preheader ]
  %231 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull @.str.12)
          to label %232 unwind label %285

232:                                              ; preds = %.lr.ph86
  %233 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %indvars.iv97)
          to label %234 unwind label %285

234:                                              ; preds = %232
  %235 = load i32, ptr %233, align 4, !tbaa !21
  %236 = add nsw i32 %235, 1
  %237 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %231, i32 noundef %236)
          to label %238 unwind label %285

238:                                              ; preds = %234
  %239 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %237, ptr noundef nonnull @.str.13)
          to label %240 unwind label %285

240:                                              ; preds = %238
  %241 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %indvars.iv97)
          to label %242 unwind label %285

242:                                              ; preds = %240
  %243 = load i32, ptr %241, align 4, !tbaa !21
  %244 = add nsw i32 %243, 1
  %245 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %239, i32 noundef %244)
          to label %246 unwind label %285

246:                                              ; preds = %242
  %247 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %245, ptr noundef nonnull @.str.10)
          to label %248 unwind label %285

248:                                              ; preds = %246
  %249 = add nuw nsw i64 %indvars.iv97, 1
  %250 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %249)
          to label %251 unwind label %285

251:                                              ; preds = %248
  %252 = load i32, ptr %250, align 4, !tbaa !21
  %253 = add nsw i32 %252, 1
  %254 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %247, i32 noundef %253)
          to label %255 unwind label %285

255:                                              ; preds = %251
  %256 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %254, ptr noundef nonnull @.str.13)
          to label %257 unwind label %285

257:                                              ; preds = %255
  %258 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %249)
          to label %259 unwind label %285

259:                                              ; preds = %257
  %260 = load i32, ptr %258, align 4, !tbaa !21
  %261 = add nsw i32 %260, 1
  %262 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %256, i32 noundef %261)
          to label %263 unwind label %285

263:                                              ; preds = %259
  %264 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %262, ptr noundef nonnull @.str.10)
          to label %265 unwind label %285

265:                                              ; preds = %263
  %266 = add nuw nsw i64 %indvars.iv97, 2
  %267 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %266)
          to label %268 unwind label %285

268:                                              ; preds = %265
  %269 = load i32, ptr %267, align 4, !tbaa !21
  %270 = add nsw i32 %269, 1
  %271 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %264, i32 noundef %270)
          to label %272 unwind label %285

272:                                              ; preds = %268
  %273 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %271, ptr noundef nonnull @.str.13)
          to label %274 unwind label %285

274:                                              ; preds = %272
  %275 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %266)
          to label %276 unwind label %285

276:                                              ; preds = %274
  %277 = load i32, ptr %275, align 4, !tbaa !21
  %278 = add nsw i32 %277, 1
  %279 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %273, i32 noundef %278)
          to label %280 unwind label %285

280:                                              ; preds = %276
  %281 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8) %279, i8 noundef signext 10)
          to label %282 unwind label %285

282:                                              ; preds = %280
  %indvars.iv.next98 = add nuw nsw i64 %indvars.iv97, 3
  %283 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %5) #10
  %284 = icmp ugt i64 %283, %indvars.iv.next98
  br i1 %284, label %.lr.ph86, label %._crit_edge87, !llvm.loop !35

285:                                              ; preds = %280, %276, %274, %272, %268, %265, %263, %259, %257, %255, %251, %248, %246, %242, %240, %238, %234, %232, %.lr.ph86
  %286 = landingpad { ptr, i32 }
          cleanup
  br label %288

287:                                              ; preds = %._crit_edge87, %158
  call void @_ZNSt14basic_ofstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(248) %25) #10
  call void @llvm.lifetime.end.p0(i64 512, ptr nonnull %25) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #10
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) #10
  call void @_ZNSt6vectorI7Vector3SaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %4) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) #10
  call void @_ZNSt6vectorI7Vector3SaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) #10
  ret void

288:                                              ; preds = %285, %229, %199, %162
  %.pn = phi { ptr, i32 } [ %200, %199 ], [ %230, %229 ], [ %286, %285 ], [ %163, %162 ]
  call void @_ZNSt14basic_ofstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(248) %25) #10
  br label %289

289:                                              ; preds = %288, %160
  %.pn.pn = phi { ptr, i32 } [ %.pn, %288 ], [ %161, %160 ]
  call void @llvm.lifetime.end.p0(i64 512, ptr nonnull %25) #10
  br label %290

290:                                              ; preds = %289, %150, %148, %146, %144, %142
  %.pn65 = phi { ptr, i32 } [ %151, %150 ], [ %149, %148 ], [ %147, %146 ], [ %145, %144 ], [ %143, %142 ], [ %.pn.pn, %289 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #10
  br label %291

291:                                              ; preds = %290, %119, %55, %53
  %.pn67.pn = phi { ptr, i32 } [ %.pn67, %119 ], [ %.pn65, %290 ], [ %56, %55 ], [ %54, %53 ]
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) #10
  call void @_ZNSt6vectorI7Vector3SaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %4) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %4) #10
  call void @_ZNSt6vectorI7Vector3SaIS0_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %3) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %3) #10
  resume { ptr, i32 } %.pn67.pn
}

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK12DuneSediment9ToIndex1DEii(ptr noundef nonnull align 8 dereferenceable(208), i32 noundef, i32 noundef) local_unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { <2 x float>, float } @_ZngRK7Vector3(ptr noundef nonnull align 4 dereferenceable(12)) local_unnamed_addr #6

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { <2 x float>, float } @_Z9NormalizeRK7Vector3(ptr noundef nonnull align 4 dereferenceable(12)) local_unnamed_addr #7

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local <2 x float> @_ZNK13ScalarField2D8GradientEii(ptr noundef nonnull align 8 dereferenceable(48), i32 noundef, i32 noundef) local_unnamed_addr #7 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local { <2 x float>, float } @_ZNK7Vector29ToVector3Ef(ptr noundef nonnull align 4 dereferenceable(8), float noundef) local_unnamed_addr #6 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorI7Vector3SaIS0_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #2 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local <2 x float> @_ZNK5Box2DixEi(ptr noundef nonnull align 4 dereferenceable(16), i32 noundef) local_unnamed_addr #8 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef float @_ZNK12DuneSediment6HeightEii(ptr noundef nonnull align 8 dereferenceable(208), i32 noundef, i32 noundef) local_unnamed_addr #5 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIiSaIiEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare void @_ZNSt14basic_ofstreamIcSt11char_traitsIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(248)) unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare void @_ZNSt14basic_ofstreamIcSt11char_traitsIcEE4openERKNSt7__cxx1112basic_stringIcS1_SaIcEEESt13_Ios_Openmode(ptr noundef nonnull align 8 dereferenceable(248), ptr noundef nonnull align 8 dereferenceable(32), i32 noundef) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare noundef zeroext i1 @_ZNSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv(ptr noundef nonnull align 8 dereferenceable(248)) local_unnamed_addr #2 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) local_unnamed_addr #6

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) local_unnamed_addr #4 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_(ptr noundef nonnull align 8 dereferenceable(8)) #6

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

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_c(ptr noundef nonnull align 8 dereferenceable(8), i8 noundef signext) local_unnamed_addr #6

; Function Attrs: mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEf(ptr noundef nonnull align 8 dereferenceable(8), float noundef) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 4 dereferenceable(12) ptr @_ZNSt6vectorI7Vector3SaIS0_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #4 align 2

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef) local_unnamed_addr #9

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEE2atEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare void @_ZNSt14basic_ofstreamIcSt11char_traitsIcEE5closeEv(ptr noundef nonnull align 8 dereferenceable(248)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt14basic_ofstreamIcSt11char_traitsIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(248)) unnamed_addr #2 align 2

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !14, i64 184}
!6 = !{!"_ZTS12DuneSediment", !7, i64 0, !7, i64 4, !7, i64 8, !7, i64 12, !10, i64 16, !10, i64 17, !11, i64 24, !11, i64 72, !11, i64 120, !12, i64 168, !14, i64 184, !14, i64 188, !7, i64 192, !7, i64 196, !13, i64 200}
!7 = !{!"float", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"bool", !8, i64 0}
!11 = !{!"_ZTS13ScalarField2D", !12, i64 0, !14, i64 16, !14, i64 20, !15, i64 24}
!12 = !{!"_ZTS5Box2D", !13, i64 0, !13, i64 8}
!13 = !{!"_ZTS7Vector2", !7, i64 0, !7, i64 4}
!14 = !{!"int", !8, i64 0}
!15 = !{!"_ZTSSt6vectorIfSaIfEE", !16, i64 0}
!16 = !{!"_ZTSSt12_Vector_baseIfSaIfEE", !17, i64 0}
!17 = !{!"_ZTSNSt12_Vector_baseIfSaIfEE12_Vector_implE", !18, i64 0}
!18 = !{!"_ZTSNSt12_Vector_baseIfSaIfEE17_Vector_impl_dataE", !19, i64 0, !19, i64 8, !19, i64 16}
!19 = !{!"any pointer", !8, i64 0}
!20 = !{!6, !14, i64 188}
!21 = !{!14, !14, i64 0}
!22 = distinct !{!22, !23, !24}
!23 = !{!"llvm.loop.mustprogress"}
!24 = !{!"llvm.loop.unswitch.partial.disable"}
!25 = !{!7, !7, i64 0}
!26 = !{i64 0, i64 4, !25, i64 4, i64 4, !25, i64 8, i64 4, !25}
!27 = distinct !{!27, !23}
!28 = distinct !{!28, !23}
!29 = !{!30, !7, i64 0}
!30 = !{!"_ZTS7Vector3", !7, i64 0, !7, i64 4, !7, i64 8}
!31 = !{!30, !7, i64 4}
!32 = !{!30, !7, i64 8}
!33 = distinct !{!33, !23}
!34 = distinct !{!34, !23}
!35 = distinct !{!35, !23}


; Effective O3 passes: BDCEPass,ConstraintEliminationPass,CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopInstSimplifyPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,ReassociatePass,SROAPass,SimpleLoopUnswitchPass,SimplifyCFGPass